[Letux-kernel] QtMoko on Pyra... + OMAP5 TILER

H. Nikolaus Schaller hns at goldelico.com
Tue Mar 6 15:12:37 CET 2018


> Am 06.03.2018 um 13:48 schrieb H. Nikolaus Schaller <hns at goldelico.com>:
> 
> 
>> Am 06.03.2018 um 12:07 schrieb H. Nikolaus Schaller <hns at goldelico.com>:
>> 
>> Hi,
>> I tried to run the latest QtMoko on the Pyra, but all I get are strange kernel exceptions
>> during boot and before I can login:
>> 
>> The interesting thing is that it is the "qpe" process (i.e. QtMoko) which should not
>> really be possible that a user-space process can make such trouble.
>> 
>> I have even tried with creating a new SD card with a minimal wheezy first
>> (http://download.goldelico.com/letux-debian-rootfs/20180221-wheezy-7.11-armhf-minimal.tbz)
>> and then apt-get installing letux-qtmoko, but it fails at the moment where the installation
>> process is configuring (and starting) the qpe process...
>> 
>> So this means that there is something in the qpe binary which fails on an otherwise
>> well working OMAP5/Pyra kernel and user-space.
>> 
>> The same rootfs image works on OMAP3 (GTA04 and OpenPandora).
>> 
>> An excerpt of the log is attached.
>> 
>> Any ideas/hints what drivers/bus/omap_l3_noc.c is doing and what an l3_interrupt_handler
>> is doing and why it can fail?
>> 
>> Another observation is that the cursor on the MIPI panel is blinking, but irregularily
>> and somehow synced to the console log activities.
>> 
>> Next I will try to stop qpe from being launched at boot time and run it through strace
>> or gdb.
> 
> Ok, gdb reveals this:
> 
> (gdb) r
> Starting program: /opt/qtmoko/bin/qpe 
> [Thread debugging using libthread_db enabled]
> Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1".
> [ 1399.638828] Unhandled fault: external abort on non-linefetch (0x1008) at 0xb48081e8
> [ 1399.638842] ------------[ cut here ]------------
> [ 1399.646903] pgd = 0631f8bb
> [ 1399.651778] WARNING: CPU: 0 PID: 0 at drivers/bus/omap_l3_noc.c:147 l3_interrupt_handler+0x220/0x324
> [ 1399.654615] [b48081e8] *pgd=fd47e835
> [ 1399.664212] 44000000.ocp:L3 Custom Error: MASTER MPU TARGET DMM1 (Read): Data Access in User mode during Functional access
> [ 1399.667969] Modules linked in: bnep rfcomm bluetooth ecdh_generic usb_f_ecm g_ether usb_f_rndis u_ether libcomposite configfs ipv6 arc4 wl18xx omapdrm wlcore drm_kms_helper mac80211 cfbfillrect syscopyarea cfbimgblt sysfillrect sysimgblt fb_sys_fops cfbcopyarea drm cfg80211 drm_panel_orientation_quirks dwc3 snd_soc_omap_hdmi_audio panel_boe_w677l snd_soc_dmic snd_soc_omap_abe_twl6040 snd_soc_twl6040 leds_gpio wwan_on_off encoder_tpd12s015 connector_hdmi pwm_omap_dmtimer omapdss omapdss_base cec generic_adc_battery pwm_bl ehci_omap wlcore_sdio leds_is31fl319x snd_soc_ts3a227e bq27xxx_battery_i2c dwc3_omap bq2429x_charger bq27xxx_battery as5013 ina2xx tca8418_keypad tsc2007 bmc150_magn_i2c bmc150_magn bmg160_i2c bmc150_accel_i2c bmg160_core w2cbw003_bluetooth bmc150_accel_core bmp280_i2c twl6040_vibra
> [ 1399.754687]  palmas_gpadc at24 bno055 industrialio_triggered_buffer usb3503 palmas_pwrbutton bmp280 kfifo_buf gpio_twl6040 industrialio snd_soc_omap_mcpdm snd_soc_omap_mcbsp snd_soc_omap snd_pcm_dmaengine
> [ 1399.773939] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.16.0-rc4-letux+ #2093
> [ 1399.781464] Hardware name: Generic OMAP5 (Flattened Device Tree)
> [ 1399.787820] [<c010f5a4>] (unwind_backtrace) from [<c010b968>] (show_stack+0x10/0x14)
> [ 1399.795986] [<c010b968>] (show_stack) from [<c06ed3d0>] (dump_stack+0x7c/0x9c)
> [ 1399.803613] [<c06ed3d0>] (dump_stack) from [<c012d9e0>] (__warn+0xd8/0x108)
> [ 1399.810986] [<c012d9e0>] (__warn) from [<c012da44>] (warn_slowpath_fmt+0x34/0x44)
> [ 1399.818908] [<c012da44>] (warn_slowpath_fmt) from [<c041fc64>] (l3_interrupt_handler+0x220/0x324)
> [ 1399.828278] [<c041fc64>] (l3_interrupt_handler) from [<c01739b4>] (__handle_irq_event_percpu+0xa8/0x264)
> [ 1399.838299] [<c01739b4>] (__handle_irq_event_percpu) from [<c0173b88>] (handle_irq_event_percpu+0x18/0x54)
> [ 1399.848490] [<c0173b88>] (handle_irq_event_percpu) from [<c0173bfc>] (handle_irq_event+0x38/0x5c)
> [ 1399.857864] [<c0173bfc>] (handle_irq_event) from [<c0177434>] (handle_fasteoi_irq+0xa8/0x124)
> [ 1399.866859] [<c0177434>] (handle_fasteoi_irq) from [<c0172e08>] (generic_handle_irq+0x18/0x28)
> [ 1399.875953] [<c0172e08>] (generic_handle_irq) from [<c0173340>] (__handle_domain_irq+0x8c/0xb4)
> [ 1399.885133] [<c0173340>] (__handle_domain_irq) from [<c041d2f0>] (gic_handle_irq+0x50/0x98)
> [ 1399.893937] [<c041d2f0>] (gic_handle_irq) from [<c0101a0c>] (__irq_svc+0x6c/0xa8)
> [ 1399.901825] Exception stack(0xc0a01f08 to 0xc0a01f50)
> [ 1399.907159] 1f00:                   00000000 c0a09d4c 00000001 00000050 eefce448 00000001
> [ 1399.915790] 1f20: 00000001 c0a09cfc 00000001 c0a93848 00000000 00000000 00000000 c0a01f58
> [ 1399.924426] 1f40: c05b02ec c05b02f8 60000113 ffffffff
> [ 1399.929769] [<c0101a0c>] (__irq_svc) from [<c05b02f8>] (cpuidle_enter_state+0x250/0x3b0)
> [ 1399.938312] [<c05b02f8>] (cpuidle_enter_state) from [<c0167388>] (do_idle+0x15c/0x1d4)
> [ 1399.946668] [<c0167388>] (do_idle) from [<c016766c>] (cpu_startup_entry+0x18/0x1c)
> [ 1399.954668] [<c016766c>] (cpu_startup_entry) from [<c0900bfc>] (start_kernel+0x340/0x3ac)
> [ 1399.963294] ---[ end trace c6da8fff02b4c5e3 ]---
> 
> Program received signal SIGBUS, Bus error.
> 0xb5fb2174 in QLinuxFbScreen::initDevice() ()
>   from /opt/qtmoko/lib/libQtGui.so.4
> (gdb) bt
> #0  0xb5fb2174 in QLinuxFbScreen::initDevice() ()
>   from /opt/qtmoko/lib/libQtGui.so.4
> #1  0xb5f8ceac in QProxyScreen::initDevice() ()
>   from /opt/qtmoko/lib/libQtGui.so.4
> #2  0xb60200dc in QWSDisplay::Data::init() ()
>   from /opt/qtmoko/lib/libQtGui.so.4
> #3  0xb60202a0 in QWSDisplay::Data::Data(QObject*, bool) ()
>   from /opt/qtmoko/lib/libQtGui.so.4
> #4  0xb6020330 in QWSDisplay::QWSDisplay() ()
>   from /opt/qtmoko/lib/libQtGui.so.4
> #5  0xb6020360 in ?? () from /opt/qtmoko/lib/libQtGui.so.4
> Cannot access memory at address 0xfa

now after copying a non-stripped version of the library:


Program received signal SIGBUS, Bus error.
0xb5fb2174 in QLinuxFbScreen::initDevice (this=0x2d58f8)
    at /qtmoko/qtopiacore/qt/src/gui/embedded/qscreenlinuxfb_qws.cpp:768
768     /qtmoko/qtopiacore/qt/src/gui/embedded/qscreenlinuxfb_qws.cpp: No such file or directory.
(gdb) bt
#0  0xb5fb2174 in QLinuxFbScreen::initDevice (this=0x2d58f8)
    at /qtmoko/qtopiacore/qt/src/gui/embedded/qscreenlinuxfb_qws.cpp:768
#1  0xb5f8ceac in QProxyScreen::initDevice (this=<optimized out>)
    at /qtmoko/qtopiacore/qt/src/gui/embedded/qscreenproxy_qws.cpp:421
#2  0xb60200dc in QWSDisplay::Data::init (this=0x2d34f8)
    at /qtmoko/qtopiacore/qt/src/gui/kernel/qapplication_qws.cpp:919
#3  0xb60202a0 in QWSDisplay::Data::Data (this=0x2d34f8, parent=0x0, 
    singleProcess=<optimized out>)
    at /qtmoko/qtopiacore/qt/src/gui/kernel/qapplication_qws.cpp:514
#4  0xb6020330 in QWSDisplay::QWSDisplay (this=0x2d7708)
    at /qtmoko/qtopiacore/qt/src/gui/kernel/qapplication_qws.cpp:1297
#5  0xb6020360 in init_display ()
    at /qtmoko/qtopiacore/qt/src/gui/kernel/qapplication_qws.cpp:2128
#6  0xb5f90bc0 in QWSServerPrivate::openDisplay (this=0x2d1730)
    at /qtmoko/qtopiacore/qt/src/gui/embedded/qwindowsystem_qws.cpp:3968
#7  0xb5f955c4 in QWSServerPrivate::initServer (this=0x2d1730, flags=0)
    at /qtmoko/qtopiacore/qt/src/gui/embedded/qwindowsystem_qws.cpp:1427
#8  0xb5f95bac in QWSServer::QWSServer (this=0x2cbb38, flags=0, parent=0x0)
    at /qtmoko/qtopiacore/qt/src/gui/embedded/qwindowsystem_qws.cpp:1304
#9  0xb5f95c80 in QWSServer::startup (flags=0)
    at /qtmoko/qtopiacore/qt/src/gui/embedded/qwindowsystem_qws.cpp:4068
#10 0xb602094c in qt_init (priv=0x2cbb50, type=-1241380532)
    at /qtmoko/qtopiacore/qt/src/gui/kernel/qapplication_qws.cpp:2302
#11 0xb5fc929c in QApplicationPrivate::construct (this=0x2cbb50)
    at /qtmoko/qtopiacore/qt/src/gui/kernel/qapplication.cpp:839
#12 0xb5fc94cc in QApplication::QApplication (this=0x2ca398, 
    argc=@0xbefff784: 1, argv=0xbefffbd4, type=QApplication::GuiServer, 
    _internal=17041411)
    at /qtmoko/qtopiacore/qt/src/gui/kernel/qapplication.cpp:795
#13 0xb69b7624 in QtopiaApplication::QtopiaApplication (this=0x2ca398, 
    argc=@0xbefff784: 1, argv=0xbefffbd4, t=QApplication::GuiServer)
    at /qtmoko/src/libraries/qtopia/qtopiaapplication.cpp:1807
#14 0x000e8ee0 in QtopiaServerApplication::QtopiaServerApplication(int&, char**) ()
#15 0x000e91f8 in ?? ()
Cannot access memory at address 0x0
#16 0x000e91f8 in ?? ()
Cannot access memory at address 0x0
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb) 

Source code of QLinuxFbScreen::initDevice is here:

http://git.goldelico.com/?p=qtmoko2-qte.git;a=blob;f=src/gui/embedded/qscreenlinuxfb_qws.cpp;h=a86687d8e4c9550edd47313f360a7133cb389ec9;hb=refs/heads/newmaster#l666

Ok, it "enables write combining on the framebuffer" (although in code only for i386)...
So this is indeed an issue related to OMAP5 TILER because we have applied changes there.

Let's hope that someone finally takes care of maintaining the OMAP5 TILER code!

BR,
Nikolaus



> (gdb) 
> 
> and
> 
> stat64("/opt/qtmoko/qt_plugins/gfxdrivers/.", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
> open("/opt/qtmoko/qt_plugins/gfxdrivers", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 7
> statfs("/opt/qtmoko/qt_plugins/gfxdrivers/", {f_type="EXT2_SUPER_MAGIC", f_bsize=4096, f_blocks=1786505, f_bfree=1347819, f_bavail=1255404, f_files=462384, f_ffree=400125, f_fsid={1753505687, -135891197}, f_namelen=255, f_frsize=4096}) = 0
> getdents(7, /* 2 entries */, 32768)     = 32
> getdents(7, /* 0 entries */, 32768)     = 0
> close(7)                                = 0
> stat64("/opt/qtmoko/bin/gfxdrivers/.", 0xbe895fe8) = -1 ENOENT (No such file or directory)
> access("/dev/fb0", R_OK|W_OK)           = 0
> open("/dev/fb0", O_RDWR|O_LARGEFILE|O_CLOEXEC) = 7
> fcntl64(7, F_SETFD, FD_CLOEXEC)         = 0
> ioctl(7, FBIOGET_FSCREENINFO, 0xbe896248) = 0
> ioctl(7, FBIOGET_VSCREENINFO, 0xbe896108) = 0
> mmap2(NULL, 41943040, PROT_READ|PROT_WRITE, MAP_SHARED, 7, 0) = 0xb2926000
> shmget(IPC_PRIVATE, 1024, IPC_CREAT|0600) = 98305
> shmat(98305, 0xffffffff, 0)             = ?
> shmctl(98305, IPC_64|IPC_RMID, 0xffffffff) = 0
> open("/dev/tty0", O_RDWR|O_LARGEFILE|O_CLOEXEC) = 8
> fcntl64(8, F_SETFD, FD_CLOEXEC)         = 0
> write(8, "\33[9;0]\33[?33l\33[?25l\33[?1c\0", 24) = 24
> ioctl(7, FBIOGET_VSCREENINFO, 0xbe8962d0) = 0
> ioctl(7, FBIOGET_FSCREENINFO, 0xbe896388) = 0
> --- SIGBUS (Bus error) @ 0 (0) ---
> rt_sigaction(SIGBUS, {SIG_DFL, [BUS], SA_RESTART|0x4000000}, {0xb5ec0f28, [BUS], SA_RESTART|0x4000000}, 8) = 0
> semctl(65536, 0, IPC_64|IPC_RMID, 0)    = 0
> write(8, "\33[9;15]\33[?33h\33[?25h\33[?0c\0", 25) = 25
> close(8)                                = 0
> tgkill(6355, 6355, SIGBUS)              = 0
> sigreturn()                             = ? (mask now [PIPE ALRM CHLD CONT STOP TSTP TTIN TTOU URG XFSZ PROF IO PWR RTMIN])
> --- SIGBUS (Bus error) @ 0 (0) ---
> +++ killed by SIGBUS +++
> root at letux:/root# 
> 
> So the SIGBUS happens right after the second ioctl(7, FBIOGET_FSCREENINFO, 0xbe896388).
> This might be a side-effect of the Tiler patches.
> 
> BTW: the text cursor is blinking and if I type on the keyboard, this
> is shown. It turns out that this is /dev/tty0 and there is no getty for login.
> 
> cat /dev/urandom >/dev/fb0 also fills the screen without such bus errors.
> 
> So I suspect that the Qt GUI backend is getting something wrong with
> the frame buffer access and maybe the mmap2 plays a role.
> 
> BR,
> Nikolaus
> 
> 
>> 
>> BR and thanks,
>> Nikolaus
>> 
>> 
>> [   47.252602] ------------[ cut here ]------------
>> [   47.257511] WARNING: CPU: 0 PID: 3555 at drivers/bus/omap_l3_noc.c:147 l3_interrupt_handler+0x220/0x324
>> [   47.267446] 44000000.ocp:L3 Custom Error: MASTER MPU TARGET DMM1 (Read): Data Access in User mode during Functional access
>> [   47.279096] Modules linked in: bnep rfcomm bluetooth ecdh_generic usb_f_ecm g_ether usb_f_rndis u_ether libcomposite configfs ipv6 arc4 wl18xx wlcore mac80211 omapdrm drm_kms_helper cfbfillrect syscopyarea cfbimgblt sysfillrect sysimgblt cfg80211 fb_sys_fops cfbcopyarea drm drm_panel_orientation_quirks dwc3 panel_boe_w677l snd_soc_omap_hdmi_audio snd_soc_dmic omapdss snd_soc_omap_abe_twl6040 cec encoder_tpd12s015 connector_hdmi leds_gpio snd_soc_twl6040 omapdss_base wwan_on_off pwm_bl pwm_omap_dmtimer generic_adc_battery ehci_omap wlcore_sdio dwc3_omap ina2xx snd_soc_ts3a227e bq27xxx_battery_i2c bq27xxx_battery bq2429x_charger leds_is31fl319x tsc2007 at24 twl6040_vibra tca8418_keypad as5013 bmg160_i2c bmc150_magn_i2c palmas_gpadc bmc150_accel_i2c bmg160_core palmas_pwrbutton bmc150_magn bmc150_accel_core
>> [   47.354545]  gpio_twl6040 bno055 industrialio_triggered_buffer usb3503 bmp280_i2c kfifo_buf w2cbw003_bluetooth bmp280 industrialio snd_soc_omap_mcpdm snd_soc_omap_mcbsp snd_soc_omap snd_pcm_dmaengine
>> [   47.373319] CPU: 0 PID: 3555 Comm: qpe Not tainted 4.16.0-rc4-letux+ #2093
>> [   47.380588] Hardware name: Generic OMAP5 (Flattened Device Tree)
>> [   47.386964] [<c010f5a4>] (unwind_backtrace) from [<c010b968>] (show_stack+0x10/0x14)
>> [   47.395128] [<c010b968>] (show_stack) from [<c06ed3d0>] (dump_stack+0x7c/0x9c)
>> [   47.402745] [<c06ed3d0>] (dump_stack) from [<c012d9e0>] (__warn+0xd8/0x108)
>> [   47.410093] [<c012d9e0>] (__warn) from [<c012da44>] (warn_slowpath_fmt+0x34/0x44)
>> [   47.417988] [<c012da44>] (warn_slowpath_fmt) from [<c041fc64>] (l3_interrupt_handler+0x220/0x324)
>> [   47.427348] [<c041fc64>] (l3_interrupt_handler) from [<c01739b4>] (__handle_irq_event_percpu+0xa8/0x264)
>> [   47.437352] [<c01739b4>] (__handle_irq_event_percpu) from [<c0173b88>] (handle_irq_event_percpu+0x18/0x54)
>> [   47.447531] [<c0173b88>] (handle_irq_event_percpu) from [<c0173bfc>] (handle_irq_event+0x38/0x5c)
>> [   47.456885] [<c0173bfc>] (handle_irq_event) from [<c0177434>] (handle_fasteoi_irq+0xa8/0x124)
>> [   47.465879] [<c0177434>] (handle_fasteoi_irq) from [<c0172e08>] (generic_handle_irq+0x18/0x28)
>> [   47.474963] [<c0172e08>] (generic_handle_irq) from [<c0173340>] (__handle_domain_irq+0x8c/0xb4)
>> [   47.484134] [<c0173340>] (__handle_domain_irq) from [<c041d2f0>] (gic_handle_irq+0x50/0x98)
>> [   47.492949] [<c041d2f0>] (gic_handle_irq) from [<c0101df0>] (__irq_usr+0x50/0x80)
>> [   47.500836] Exception stack(0xed885fb0 to 0xed885ff8)
>> [   47.506182] 5fa0:                                     002e7900 b470a1e8 02800000 02800000
>> [   47.514831] 5fc0: 002e7900 002b10f0 000003d0 00000006 befaf460 002b1108 002b2502 002b113c
>> [   47.523477] 5fe0: b470a1ec befaf320 b5eb25fc b5eb4174 20000010 ffffffff
>> [   47.530474] ---[ end trace f9ac44d41cce051c ]---
>> [   47.535568] ------------[ cut here ]------------
>> 
>> 
>> _______________________________________________
>> http://projects.goldelico.com/p/gta04-kernel/
>> Letux-kernel mailing list
>> Letux-kernel at openphoenux.org
>> http://lists.goldelico.com/mailman/listinfo.cgi/letux-kernel
> 



More information about the Letux-kernel mailing list