[Letux-kernel] [Bug] v5.3-rc3: arm: omap5: omapdss: omap_fbdev_init fails with lpae config and reports dma_mask error

H. Nikolaus Schaller hns at goldelico.com
Wed Aug 7 21:48:25 CEST 2019


> Am 07.08.2019 um 16:22 schrieb H. Nikolaus Schaller <hns at goldelico.com>:
> 
> Hi,
> with v5.3-rc3 I observed this for the first time
> 
> [    8.752861] omapdrm omapdrm.0: DMA map on device without dma_mask
> [    8.762680] ------------[ cut here ]------------
> [    8.773339] WARNING: CPU: 1 PID: 1144 at kernel/dma/direct.c:35 report_addr+0xc8/0xe4
> [    8.784854] Modules linked in: snd_soc_dmic cfg80211(+) panel_boe_w677l libarc4 dwc3 snd_soc_omap_abe_twl6040 snd_soc_simple_card snd_soc_twl6040 snd_soc_simple_card_utils leds_gpio omapdss cec connector_hdmi encoder_tpd12s015 pwm_omap_dmtimer pwm_bl ehci_omap wlcore_sdio dwc3_omap omapdrm omapdss_base drm_kms_helper snd_soc_ts3a227e syscopyarea hci_uart sysfillrect tsc2007 sysimgblt leds_is31fl319x bq2429x_charger btbcm fb_sys_fops ina2xx bq27xxx_battery_i2c tca8418_keypad bq27xxx_battery drm twl6040_vibra gpio_twl6040 bmp280_spi drm_panel_orientation_quirks palmas_gpadc palmas_pwrbutton bluetooth ecdh_generic ecc usb3503 bmc150_magn_i2c bmg160_i2c bmc150_accel_i2c bmp280_i2c bmc150_accel_core bmc150_magn bmg160_core bmp280 industrialio_triggered_buffer kfifo_buf industrialio snd_soc_omap_mcpdm snd_soc_omap_mcbsp snd_soc_ti_sdma ip_tables x_tables ipv6 nf_defrag_ipv6 autofs4
> [  OK  ] Started Load/Save Screen Backlig[    8.871770] CPU: 1 PID: 1144 Comm: kworker/1:2 Not tainted 5.3.0-rc2-letux-lpae+ #578
> [    8.883207] Hardware name: Generic OMAP5 (Flattened Device Tree)
> ht Brightness of backlight:backlight.
> [    8.889523] Workqueue: events deferred_probe_work_func
> [    8.898309] [<c0210790>] (unwind_backtrace) from [<c020bc08>] (show_stack+0x10/0x14)
> [    8.906430] [<c020bc08>] (show_stack) from [<c0927398>] (dump_stack+0x7c/0x9c)
> [    8.914012] [<c0927398>] (dump_stack) from [<c022dd80>] (__warn+0xd8/0x108)
> [    8.914025] [<c022dd80>] (__warn) from [<c022dec0>] (warn_slowpath_null+0x38/0x44)
> [    8.929228] [<c022dec0>] (warn_slowpath_null) from [<c028fdbc>] (report_addr+0xc8/0xe4)
> [    8.937624] [<c028fdbc>] (report_addr) from [<c028ff50>] (dma_direct_map_page+0x178/0x1a0)
> [    8.946319] [<c028ff50>] (dma_direct_map_page) from [<bf2449c4>] (omap_gem_attach_pages+0xa8/0x1c8 [omapdrm])
> [    8.956835] [<bf2449c4>] (omap_gem_attach_pages [omapdrm]) from [<bf2454d0>] (omap_gem_pin+0xa4/0x198 [omapdrm])
> [    8.969001] [<bf2454d0>] (omap_gem_pin [omapdrm]) from [<bf248d60>] (omap_fbdev_create+0x16c/0x2f0 [omapdrm])
> [    8.979605] [<bf248d60>] (omap_fbdev_create [omapdrm]) from [<bf1e9794>] (__drm_fb_helper_initial_config_and_unlock+0x314/0x42c [drm_kms_helper])
> [    8.997509] [<bf1e9794>] (__drm_fb_helper_initial_config_and_unlock [drm_kms_helper]) from [<bf249024>] (omap_fbdev_init+0x84/0xc0 [omapdrm])
> [    9.012912] [<bf249024>] (omap_fbdev_init [omapdrm]) from [<bf2419a0>] (pdev_probe+0x5f0/0x6c4 [omapdrm])
> [    9.022966] [<bf2419a0>] (pdev_probe [omapdrm]) from [<c0679e40>] (platform_drv_probe+0x48/0x98)
> [    9.032350] [<c0679e40>] (platform_drv_probe) from [<c0678020>] (really_probe+0x160/0x2cc)
> [    9.041010] [<c0678020>] (really_probe) from [<c06783e4>] (driver_probe_device+0x110/0x158)
> [    9.049769] [<c06783e4>] (driver_probe_device) from [<c0676680>] (bus_for_each_drv+0x90/0xb8)
> [    9.058705] [<c0676680>] (bus_for_each_drv) from [<c0678220>] (__device_attach+0x94/0x124)
> [    9.067377] [<c0678220>] (__device_attach) from [<c06772c8>] (bus_probe_device+0x28/0x80)
> [    9.075955] [<c06772c8>] (bus_probe_device) from [<c0675028>] (device_add+0x2f4/0x57c)
> [    9.084273] [<c0675028>] (device_add) from [<c0679cf4>] (platform_device_add+0x130/0x1bc)
> [    9.092844] [<c0679cf4>] (platform_device_add) from [<c067a5c8>] (platform_device_register_full+0xec/0x13c)
> [    9.103108] [<c067a5c8>] (platform_device_register_full) from [<bf28d648>] (dss_bind+0x58/0xa4 [omapdss])
> [    9.113193] [<bf28d648>] (dss_bind [omapdss]) from [<c0672810>] (try_to_bring_up_master+0x128/0x178)
> [    9.122776] [<c0672810>] (try_to_bring_up_master) from [<c06728dc>] (__component_add+0x7c/0xec)
> [    9.131947] [<c06728dc>] (__component_add) from [<bf29bcfc>] (dsi_probe+0x438/0x4e0 [omapdss])
> [    9.141029] [<bf29bcfc>] (dsi_probe [omapdss]) from [<c0679e40>] (platform_drv_probe+0x48/0x98)
> [    9.150158] [<c0679e40>] (platform_drv_probe) from [<c0678020>] (really_probe+0x160/0x2cc)
> [    9.158825] [<c0678020>] (really_probe) from [<c06783e4>] (driver_probe_device+0x110/0x158)
> [    9.167582] [<c06783e4>] (driver_probe_device) from [<c0676680>] (bus_for_each_drv+0x90/0xb8)
> [    9.176518] [<c0676680>] (bus_for_each_drv) from [<c0678220>] (__device_attach+0x94/0x124)
> [    9.185188] [<c0678220>] (__device_attach) from [<c06772c8>] (bus_probe_device+0x28/0x80)
> [    9.193763] [<c06772c8>] (bus_probe_device) from [<c0677748>] (deferred_probe_work_func+0x5c/0x80)
> [    9.203164] [<c0677748>] (deferred_probe_work_func) from [<c0247a04>] (process_one_work+0x258/0x47c)
> [    9.212738] [<c0247a04>] (process_one_work) from [<c02481e4>] (worker_thread+0x2b8/0x3d8)
> [    9.221313] [<c02481e4>] (worker_thread) from [<c024bef0>] (kthread+0x134/0x14c)
> [    9.229083] [<c024bef0>] (kthread) from [<c02010d8>] (ret_from_fork+0x14/0x3c)
> [    9.236651] Exception stack(0xe8f51fb0 to 0xe8f51ff8)
> [    9.241945] 1fa0:                                     00000000 00000000 00000000 00000000
> [    9.250529] 1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
> [    9.259094] 1fe0: 00000000 00000000 00000000 00000000 00000013 00000000
> [    9.270457] ---[ end trace 1045ffa6055069e6 ]---
> [    9.275808] omapdrm omapdrm.0: omap_gem_attach_pages: failed to map page
> [    9.284171] omapdrm omapdrm.0: could not pin framebuffer
> [    9.290502] omapdrm omapdrm.0: omap_fbdev_init failed
> 
> The result is that the omapdrm system is not working.
> 
> It works fine with a non-lpae build.
> 
> The kernel tree is v5.3-rc3 plus a minimal set of patches to boot on the Pyra hardware:
> 
> 	http://git.goldelico.com/?p=letux-kernel.git;a=shortlog;h=refs/heads/letux/pyra-minimal
> 
> A git bisect between v5.3-rc2 and v5.3-rc3 (each time plus the pyra-minimal patch set) thinks
> this patch is the reason:
> 
> # first bad commit: [a507f25d1c2048c136f6834f10966510b62af987] Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux
> 
> but I could not find out how this relates to building for 32 bit ARM with LPAE.
> 
> Is this already known? Is there a known solution?

I did remember that if git bisect reports a merge as the first bad commit, the starting point is
not far enough back in history, so that the bisect does not completely search both merged branches.

Therefore, I have repeated the bisect, now between v5.3-rc1 and v5.3-rc3 and got a better and
understandable result:

# first bad commit: [ad3c7b18c5b362be5dbd0f2c0bcf1fd5fd659315] arm: use swiotlb for bounce buffering on LPAE configs

As a quick workaround I did revert it and omapdrm is working again.

But what does this mean? Why does it occur on an OMAP5 with LPAE but just 2GB RAM installed?
How can the omap_fbdev_init problem be solved?

BR and thanks,
Nikolaus


More information about the Letux-kernel mailing list