[meta-freescale] xf86-video-imxfb-vivante crashing with Xorg 1.19
Gary Thomas
gary at mlbassoc.com
Wed Feb 8 04:06:48 PST 2017
On 2017-01-31 21:14, Tom Hochstein wrote:
>
>
>> -----Original Message-----
>> From: Gary Thomas [mailto:gary at mlbassoc.com]
>> Sent: Tuesday, January 24, 2017 9:37 AM
>> To: Tom Hochstein <tom.hochstein at nxp.com>; meta-freescale at yoctoproject.org
>> Cc: Lauren Post <lauren.post at nxp.com>
>> Subject: Re: [meta-freescale] xf86-video-imxfb-vivante crashing with Xorg 1.19
>>
>> On 2017-01-24 16:32, Tom Hochstein wrote:
>>> Hi Gary,
>>>
>>> I am seeing a failure too. We're looking into it.
>>
>> Thanks for the feedback. Looking forward to a resolution. Let me know if
>> I can provide any more data to help diagnose the issue.
>
> I posted a patch from Prabhu to OE-core.
I tested this and it does seem to work again, thanks (I'm not sure what change
made it work, but I'm happy one was found).
Sorry for the delayed follow-up - I was away on holiday.
>
>>
>>> -----Original Message-----
>>> From: Gary Thomas [mailto:gary at mlbassoc.com]
>>> Sent: Tuesday, January 24, 2017 8:41 AM
>>> To: meta-freescale at yoctoproject.org
>>> Cc: Tom Hochstein <tom.hochstein at nxp.com>; Lauren Post <lauren.post at nxp.com>
>>> Subject: Re: [meta-freescale] xf86-video-imxfb-vivante crashing with Xorg 1.19
>>>
>>> On 2017-01-17 06:32, Gary Thomas wrote:
>>>> When I build for my i.MX6Q target, X crashes immediately. This is a
>>>> direct result of OE-core updating the X server from 1.18.4 to 1.19
>>>> What I've been able to discover is that the video driver (xf86-video-imxfb-vivante)
>>>> is being called early on from 'AddScreen' in the main X server. The
>>>> driver sets up a shared data structure DRIInfoRec like this:
>>>>
>>>> VivDRIScreenInit: pDRIInfo: 0xb76e80, busIdString = 0xb76f38 ('platform:Vivante GCCore:00')
>>>> 00B76E80: 0000 0000 0000 0000 0000 0000 0000 0000 |................|
>>>> 00B76E90: 0000 0000 0000 0000 0000 0000 0000 0000 |................|
>>>> 00B76EA0: 0000 0000 0000 0000 9401 1500 3C03 1500 |............<...|
>>>> 00B76EB0: 9CCF 1400 B0D1 1400 1404 1500 38D3 1400 |............8...|
>>>> 00B76EC0: B0D6 59B6 B8D6 59B6 386F B700 0000 0000 |..Y...Y.8o......|
>>>> 00B76ED0: 0000 0000 0000 0000 0000 0000 0000 0000 |................|
>>>> 00B76EE0: 0000 0000 0000 0000 0000 0000 0000 0000 |................|
>>>> 00B76EF0: 0000 0000 0000 0000 0000 0000 0000 0000 |................|
>>>> 00B76F00: 0000 0000 0000 0000 0000 0000 0000 0000 |................|
>>>> 00B76F10: 0000 0000 0000 0000 0000 0000 0000 0000 |................|
>>>> 00B76F20: 0000 0000 0000 0000 0000 0000 0000 0000 |................|
>>>>
>>>> but by the time the server gets to ProcXF86DRIOpenConnection, this structure
>>>> has been trashed:
>>>>
>>>> DRIOpenConnection: pDRIPriv: 0xb76fc0, pDriverInfo: 0xb76e80, busIdString: 0x454d
>>>> 00B76E80: E889 B700 C06E B700 0000 0000 0400 0000 |.....n..........|
>>>> 00B76E90: FFFF FF7F FFFF FFFF 0000 0080 0000 0000 |................|
>>>> 00B76EA0: 0200 0000 9018 0D00 DC18 0D00 0000 0000 |................|
>>>> 00B76EB0: 2075 1D00 B88B B700 0000 0000 1100 0000 | u..............|
>>>> 00B76EC0: 5345 5256 4552 5449 4D45 0000 2900 0000 |SERVERTIME..)...|
>>>> 00B76ED0: 0000 0000 0000 0000 4C00 0000 00EC B000 |........L.......|
>>>> 00B76EE0: 0000 0000 0000 0000 A95D 1A00 888B B700 |.........]......|
>>>> 00B76EF0: 0100 0000 1900 0000 0000 0000 4C00 0000 |............L...|
>>>> 00B76F00: 1600 0000 D06E B700 1800 0000 3900 0000 |.....n......9...|
>>>> 00B76F10: 0100 0000 0000 0000 486F B700 8100 0000 |........Ho......|
>>>> 00B76F20: 4000 0000 4100 0000 0000 0000 0000 0000 |@...A...........|
>>>> ProcXF86DRIOpenConnection: busIdString = 0x454d
>>>>
>>>> I'm pretty sure that what's happening is near the end of AddScreen,
>>>> there is a call to dixRegisterScreenPrivateKey() which in turn
>>>> calls dixReallocPrivates() which seems to be relocating the DRIInfoRec
>>>> but the pointers used by DRIOpenConnection() are not updated. The old
>>>> (non-relocated) structure gets reused and trashed and when DRIOpenConnection()
>>>> it picks up garbage.
>>>>
>>>> I'm not sure what needs to change to fix this though. Looking at the X server
>>>> code, I didn't find a lot of differences in/around this code path. What I do
>>>> know is that reverting to xserver-xorg 1.18.4 absolutely works.
>>>>
>>>> I'm using Poky/Yocto + meta-freescale layers (both on master)
>>>> poky: 840e221ea7c35177fda37af618c4727fa7754789
>>>> meta-freescale: a99b95c899e6c20b9f46fa04766c155e3a32949a
>>>>
>>>> Has anyone else built X (not Wayland) recently using this codebase? Anyone
>>>> else having the same issues?
>>>
>>> Is no-one else but me seeing this issue? If not, what could I be doing wrong?
>>> I'm building the same images (same config, etc) that I've been using for [literally]
>>> years and now it breaks with this version of the X server.
>>>
>>> At least an 'ack - I've read this and it's your problem' would be better
>>> than total silence...
--
------------------------------------------------------------
Gary Thomas | Consulting for the
MLB Associates | Embedded world
------------------------------------------------------------
More information about the meta-freescale
mailing list