On Tue, May 22, 2012 at 10:31:25AM -0500, Tom Zanussi wrote: On Mon, 2012-05-21 at 21:56 -0500, Christopher Hallinan wrote:
On Mon, May 21, 2012 at 2:30 PM, Tom Zanussi <tom.zanussi@...> wrote:
On Fri, 2012-05-18 at 23:02 -0400, Chris Hallinan wrote:
On Fri, May 18, 2012 at 6:25 PM, Tom Zanussi <tom.zanussi@...> wrote:
On Fri, 2012-05-18 at 17:38 -0400, Chris Hallinan wrote:
Note: this patch has already been submitted against other BSPs, originally submitted to oe-core by Gary Thomas. I ran into this same issue building MACHINE=emenlow on my own Z530 platform. There are likely others as well where this needs to be applied.
Upstream is here: https://bugs.freedesktop.org/show_bug.cgi?id=18451
PR has been bumped.
Hi, thanks for the patch - I see the problem and will pull this in as soon as I can build and test it, but am getting a patch failure in the build after pulling it in for testing. I'll fix it up, but just mentioning it in case you had any ideas why it might work for you but fail here...
Sorry, Tom. Odd, I generated the patch using git diff, but didn't actually try to apply it to an unpatched tree. Looking at it, it isn't obvious why it fails. Someone with more git/patch foo than me could probably explain it ;)
This one works (for me) against current top of tree:
It must be a whitespace problem - I still couldn't apply it, so manually fixed it up here, patch below.
I also added an Upstream-status: section to the patch.
Also, before pulling it in, I'll need to have you send me your Signed-off-by: line.
Unfortunately, the problem now is that although I am getting a sato desktop, it has no icons or mouse/keyboard and I see this in the Xorg.0.log:
Backtrace: 0: /usr/bin/Xorg (xorg_backtrace+0x37) [0x80e2e37] 1: /usr/bin/Xorg (0x8047000+0x5bda6) [0x80a2da6] 2: linux-gate.so.1 (__kernel_rt_sigreturn+0x0) [0xffffe40c] 3: /usr/lib/xorg/modules/drivers/psb_drv.so (0xb769b000+0x690c) [0xb76a190c] 4: /usr/lib/xorg/modules/libexa.so (0xb71ab000+0xcd0a) [0xb71b7d0a] 5: /usr/lib/xorg/modules/libexa.so (0xb71ab000+0xd300) [0xb71b8300] 6: /usr/lib/xorg/modules/libexa.so (0xb71ab000+0xb5fd) [0xb71b65fd] 7: /usr/bin/Xorg (0x8047000+0xc60c0) [0x810d0c0] 8: /usr/bin/Xorg (CompositeGlyphs+0xb1) [0x819f131] 9: /usr/bin/Xorg (0x8047000+0xc2e1e) [0x8109e1e] 10: /usr/bin/Xorg (0x8047000+0xbdb2e) [0x8104b2e] 11: /usr/bin/Xorg (0x8047000+0x286cf) [0x806f6cf] 12: /usr/bin/Xorg (0x8047000+0x1bbca) [0x8062bca] 13: /lib/libc.so.6 (__libc_start_main+0xf5) [0x42892ba5] 14: /usr/bin/Xorg (0x8047000+0x1bea1) [0x8062ea1] Segmentation fault at address 0xc
Fatal server error: Caught signal 11 (Segmentation fault). Server aborting
Can you tell me which poky commit you're using? I haven't sync'd lately. I'm using poky: f39ba520d6f2477c99839a92049b1bb279f092cf meta-intel: bde31fd7e66faea865d24ff0858a9006b89e4e54
Third time should be a charm. With kergoth's help, I think I got this patch format correct!
Signed-off-by: Christopher Hallinan <challinan@...> Yep, third time was the charm - applied cleanly and booted into sato without problem...
Pulled into meta-intel/master. Why not use patch with proper headers like Upstream-Status? (just copy it oe-core patch properly). Or does meta-intel have different commit guidelines? Cheers, Thanks!
Tom
--- .../files/fix-bogus-stack-variables.patch | 204 ++++++++++++++++++++ .../xorg-xserver/xserver-psb-1.7.99.2.inc | 5 +- 2 files changed, 207 insertions(+), 2 deletions(-) create mode 100644 meta-emenlow/recipes-graphics/xorg-xserver/files/fix-bogus-stack-variables.patch
diff --git a/meta-emenlow/recipes-graphics/xorg-xserver/files/fix-bogus-stack-variables.patch b/meta-emenlow/recipes-graphics/xorg-xserver/files/fix-bogus-stack-variables.patch new file mode 100644 index 0000000..5c9581a --- /dev/null +++ b/meta-emenlow/recipes-graphics/xorg-xserver/files/fix-bogus-stack-variables.patch @@ -0,0 +1,204 @@ +diff --git a/Xext/xace.c b/Xext/xace.c +index e10d837..c757cad 100644 +--- a/Xext/xace.c ++++ b/Xext/xace.c +@@ -87,7 +87,18 @@ void XaceHookAuditEnd(ClientPtr ptr, int result) + */ + int XaceHook(int hook, ...) + { +- pointer calldata; /* data passed to callback */ ++ union { ++ XaceResourceAccessRec res; ++ XaceDeviceAccessRec dev; ++ XaceSendAccessRec send; ++ XaceReceiveAccessRec recv; ++ XaceClientAccessRec client; ++ XaceExtAccessRec ext; ++ XaceServerAccessRec server; ++ XaceScreenAccessRec screen; ++ XaceAuthAvailRec auth; ++ XaceKeyAvailRec key; ++ } u; + int *prv = NULL; /* points to return value from callback */ + va_list ap; /* argument list */ + va_start(ap, hook); +@@ -99,117 +110,86 @@ int XaceHook(int hook, ...) + */ + switch (hook) + { +- case XACE_RESOURCE_ACCESS: { +- XaceResourceAccessRec rec; +- rec.client = va_arg(ap, ClientPtr); +- rec.id = va_arg(ap, XID); +- rec.rtype = va_arg(ap, RESTYPE); +- rec.res = va_arg(ap, pointer); +- rec.ptype = va_arg(ap, RESTYPE); +- rec.parent = va_arg(ap, pointer); +- rec.access_mode = va_arg(ap, Mask); +- rec.status = Success; /* default allow */ +- calldata = &rec; +- prv = &rec.status; ++ case XACE_RESOURCE_ACCESS: ++ u.res.client = va_arg(ap, ClientPtr); ++ u.res.id = va_arg(ap, XID); ++ u.res.rtype = va_arg(ap, RESTYPE); ++ u.res.res = va_arg(ap, pointer); ++ u.res.ptype = va_arg(ap, RESTYPE); ++ u.res.parent = va_arg(ap, pointer); ++ u.res.access_mode = va_arg(ap, Mask); ++ u.res.status = Success; /* default allow */ ++ prv = &u.res.status; + break; +- } +- case XACE_DEVICE_ACCESS: { +- XaceDeviceAccessRec rec; +- rec.client = va_arg(ap, ClientPtr); +- rec.dev = va_arg(ap, DeviceIntPtr); +- rec.access_mode = va_arg(ap, Mask); +- rec.status = Success; /* default allow */ +- calldata = &rec; +- prv = &rec.status; ++ case XACE_DEVICE_ACCESS: ++ u.dev.client = va_arg(ap, ClientPtr); ++ u.dev.dev = va_arg(ap, DeviceIntPtr); ++ u.dev.access_mode = va_arg(ap, Mask); ++ u.dev.status = Success; /* default allow */ ++ prv = &u.dev.status; + break; +- } +- case XACE_SEND_ACCESS: { +- XaceSendAccessRec rec; +- rec.client = va_arg(ap, ClientPtr); +- rec.dev = va_arg(ap, DeviceIntPtr); +- rec.pWin = va_arg(ap, WindowPtr); +- rec.events = va_arg(ap, xEventPtr); +- rec.count = va_arg(ap, int); +- rec.status = Success; /* default allow */ +- calldata = &rec; +- prv = &rec.status; ++ case XACE_SEND_ACCESS: ++ u.send.client = va_arg(ap, ClientPtr); ++ u.send.dev = va_arg(ap, DeviceIntPtr); ++ u.send.pWin = va_arg(ap, WindowPtr); ++ u.send.events = va_arg(ap, xEventPtr); ++ u.send.count = va_arg(ap, int); ++ u.send.status = Success; /* default allow */ ++ prv = &u.send.status; + break; +- } +- case XACE_RECEIVE_ACCESS: { +- XaceReceiveAccessRec rec; +- rec.client = va_arg(ap, ClientPtr); +- rec.pWin = va_arg(ap, WindowPtr); +- rec.events = va_arg(ap, xEventPtr); +- rec.count = va_arg(ap, int); +- rec.status = Success; /* default allow */ +- calldata = &rec; +- prv = &rec.status; ++ case XACE_RECEIVE_ACCESS: ++ u.recv.client = va_arg(ap, ClientPtr); ++ u.recv.pWin = va_arg(ap, WindowPtr); ++ u.recv.events = va_arg(ap, xEventPtr); ++ u.recv.count = va_arg(ap, int); ++ u.recv.status = Success; /* default allow */ ++ prv = &u.recv.status; + break; +- } +- case XACE_CLIENT_ACCESS: { +- XaceClientAccessRec rec; +- rec.client = va_arg(ap, ClientPtr); +- rec.target = va_arg(ap, ClientPtr); +- rec.access_mode = va_arg(ap, Mask); +- rec.status = Success; /* default allow */ +- calldata = &rec; +- prv = &rec.status; ++ case XACE_CLIENT_ACCESS: ++ u.client.client = va_arg(ap, ClientPtr); ++ u.client.target = va_arg(ap, ClientPtr); ++ u.client.access_mode = va_arg(ap, Mask); ++ u.client.status = Success; /* default allow */ ++ prv = &u.client.status; + break; +- } +- case XACE_EXT_ACCESS: { +- XaceExtAccessRec rec; +- rec.client = va_arg(ap, ClientPtr); +- rec.ext = va_arg(ap, ExtensionEntry*); +- rec.access_mode = DixGetAttrAccess; +- rec.status = Success; /* default allow */ +- calldata = &rec; +- prv = &rec.status; ++ case XACE_EXT_ACCESS: ++ u.ext.client = va_arg(ap, ClientPtr); ++ u.ext.ext = va_arg(ap, ExtensionEntry*); ++ u.ext.access_mode = DixGetAttrAccess; ++ u.ext.status = Success; /* default allow */ ++ prv = &u.ext.status; + break; +- } +- case XACE_SERVER_ACCESS: { +- XaceServerAccessRec rec; +- rec.client = va_arg(ap, ClientPtr); +- rec.access_mode = va_arg(ap, Mask); +- rec.status = Success; /* default allow */ +- calldata = &rec; +- prv = &rec.status; ++ case XACE_SERVER_ACCESS: ++ u.server.client = va_arg(ap, ClientPtr); ++ u.server.access_mode = va_arg(ap, Mask); ++ u.server.status = Success; /* default allow */ ++ prv = &u.server.status; + break; +- } + case XACE_SCREEN_ACCESS: +- case XACE_SCREENSAVER_ACCESS: { +- XaceScreenAccessRec rec; +- rec.client = va_arg(ap, ClientPtr); +- rec.screen = va_arg(ap, ScreenPtr); +- rec.access_mode = va_arg(ap, Mask); +- rec.status = Success; /* default allow */ +- calldata = &rec; +- prv = &rec.status; ++ case XACE_SCREENSAVER_ACCESS: ++ u.screen.client = va_arg(ap, ClientPtr); ++ u.screen.screen = va_arg(ap, ScreenPtr); ++ u.screen.access_mode = va_arg(ap, Mask); ++ u.screen.status = Success; /* default allow */ ++ prv = &u.screen.status; + break; +- } +- case XACE_AUTH_AVAIL: { +- XaceAuthAvailRec rec; +- rec.client = va_arg(ap, ClientPtr); +- rec.authId = va_arg(ap, XID); +- calldata = &rec; ++ case XACE_AUTH_AVAIL: ++ u.auth.client = va_arg(ap, ClientPtr); ++ u.auth.authId = va_arg(ap, XID); + break; +- } +- case XACE_KEY_AVAIL: { +- XaceKeyAvailRec rec; +- rec.event = va_arg(ap, xEventPtr); +- rec.keybd = va_arg(ap, DeviceIntPtr); +- rec.count = va_arg(ap, int); +- calldata = &rec; ++ case XACE_KEY_AVAIL: ++ u.key.event = va_arg(ap, xEventPtr); ++ u.key.keybd = va_arg(ap, DeviceIntPtr); ++ u.key.count = va_arg(ap, int); + break; +- } +- default: { ++ default: + va_end(ap); + return 0; /* unimplemented hook number */ +- } + } + va_end(ap); + + /* call callbacks and return result, if any. */ +- CallCallbacks(&XaceHooks[hook], calldata); ++ CallCallbacks(&XaceHooks[hook], &u); + return prv ? *prv : Success; + } diff --git a/meta-emenlow/recipes-graphics/xorg-xserver/xserver-psb-1.7.99.2.inc b/meta-emenlow/recipes-graphics/xorg-xserver/xserver-psb-1.7.99.2.inc index 9ee9c97..1fe962b 100644 --- a/meta-emenlow/recipes-graphics/xorg-xserver/xserver-psb-1.7.99.2.inc +++ b/meta-emenlow/recipes-graphics/xorg-xserver/xserver-psb-1.7.99.2.inc @@ -1,4 +1,4 @@ -PR = "r5" +PR = "r6" PROTO_DEPS += "xf86driproto dri2proto" @@ -8,7 +8,8 @@ SRC_URI += "file://nodolt.patch \ file://crosscompile.patch \ file://libdrm-poulsbo.patch \ file://werror-address-fix.patch \ - file://ptr-to-int-cast-fix.patch" + file://ptr-to-int-cast-fix.patch \ + file://fix-bogus-stack-variables.patch" # Misc build failure for master HEAD SRC_URI += "file://fix_open_max_preprocessor_error.patch" _______________________________________________ yocto mailing list yocto@... https://lists.yoctoproject.org/listinfo/yocto
-- Martin 'JaMa' Jansa jabber: Martin.Jansa@...
|