* [PATCH 0/1] v2 fix qemu segfault with nVidia proprietary driver
@ 2011-03-17 12:22 Zhai Edwin
2011-03-17 12:22 ` [PATCH 1/1] qemu: Use mesa's libGL rather than nVidia's to avoid segfault of qemu Zhai Edwin
0 siblings, 1 reply; 8+ messages in thread
From: Zhai Edwin @ 2011-03-17 12:22 UTC (permalink / raw)
To: poky
From: Zhai Edwin <edwin.zhai@intel.com>
Saul,
This is v2 version according to comments from Mark.
thanks,
edwin
Pull URL: git://git.pokylinux.org/poky-contrib.git
Branch: gzhai/fix2
Browse: http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=gzhai/fix2
Thanks,
Zhai Edwin <edwin.zhai@intel.com>
---
Zhai Edwin (1):
qemu: Use mesa's libGL rather than nVidia's to avoid segfault of qemu
scripts/poky-qemu-internal | 16 +++++++++++++++-
1 files changed, 15 insertions(+), 1 deletions(-)
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/1] qemu: Use mesa's libGL rather than nVidia's to avoid segfault of qemu
2011-03-17 12:22 [PATCH 0/1] v2 fix qemu segfault with nVidia proprietary driver Zhai Edwin
@ 2011-03-17 12:22 ` Zhai Edwin
2011-03-17 15:03 ` Mark Hatle
2011-03-17 15:17 ` Darren Hart
0 siblings, 2 replies; 8+ messages in thread
From: Zhai Edwin @ 2011-03-17 12:22 UTC (permalink / raw)
To: poky
From: Zhai Edwin <edwin.zhai@intel.com>
Proprietary nVidia driver introduce its own libGL that precede mesa's.
qemu has segfault if linked with it. This fix try to use mesa's libGL
if ldd find qemu linked with nVidia libGL.
[YOCTO #649]
[YOCTO #698]
Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
---
scripts/poky-qemu-internal | 16 +++++++++++++++-
1 files changed, 15 insertions(+), 1 deletions(-)
diff --git a/scripts/poky-qemu-internal b/scripts/poky-qemu-internal
index 3638a65..1f09fe7 100755
--- a/scripts/poky-qemu-internal
+++ b/scripts/poky-qemu-internal
@@ -436,10 +436,24 @@ else
echo "Warning: distccd not present, no distcc support loaded."
fi
+# qemu got segfault if linked with nVidia's libgl
+GL_LD_PRELOAD=$LD_PRELOAD
+
+if ldd $QEMUBIN | grep -i nvidia &> /dev/null
+then
+ echo "************** !!!Warning!!! **************
+ You installed nVidia's libGL.so that probably lead qemu segfault!
+ Pls. uninstall proprietary nVidia driver or make mesa libgl precede nvidia's."
+
+ # To avoid segfault of qemu, skip nVidia's libGL and use mesa's instead
+ echo "Skip nVidia's libGL!"
+ GL_LD_PRELOAD="/usr/lib/libGL.so $LD_PRELOAD"
+fi
+
echo "Running $QEMU..."
# -no-reboot is a mandatory option - see bug #100
echo $QEMUBIN -kernel $KERNEL $QEMUOPTIONS $SERIALOPTS -no-reboot $SCRIPT_QEMU_OPT $SCRIPT_QEMU_EXTRA_OPT --append '"'$KERNCMDLINE $SCRIPT_KERNEL_OPT'"'
-$QEMUBIN -kernel $KERNEL $QEMUOPTIONS $SERIALOPTS -no-reboot $SCRIPT_QEMU_OPT $SCRIPT_QEMU_EXTRA_OPT --append "$KERNCMDLINE $SCRIPT_KERNEL_OPT" || /bin/true
+LD_PRELOAD="$GL_LD_PRELOAD" $QEMUBIN -kernel $KERNEL $QEMUOPTIONS $SERIALOPTS -no-reboot $SCRIPT_QEMU_OPT $SCRIPT_QEMU_EXTRA_OPT --append "$KERNCMDLINE $SCRIPT_KERNEL_OPT" || /bin/true
cleanup
--
1.7.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 1/1] qemu: Use mesa's libGL rather than nVidia's to avoid segfault of qemu
2011-03-17 12:22 ` [PATCH 1/1] qemu: Use mesa's libGL rather than nVidia's to avoid segfault of qemu Zhai Edwin
@ 2011-03-17 15:03 ` Mark Hatle
2011-03-18 0:41 ` Tian, Kevin
2011-03-17 15:17 ` Darren Hart
1 sibling, 1 reply; 8+ messages in thread
From: Mark Hatle @ 2011-03-17 15:03 UTC (permalink / raw)
To: Zhai Edwin; +Cc: poky
I reworked the patch slightly.. It's available on poky-contrib
mhatle/qemu-workaround.
Specifically I changed:
- the warning message to make clarify it a bit.
- Changed the preload to be "libGL.so", so the rt-linker will now search for it
(/usr/lib/libGL.so may be wrong on some systems where /usr/lib64 is the default
library path)
- Added a second check to see if the workaround worked or not, if it didn't add
a second warning message
- To the QEMU run line, add "stty sane" in the case of a failure. Otherwise
QEMU leaves the terminal/console in a confused state.
Can you please verify that this still works on the Ubuntu systems and that I
didn't miss anything/break anything else? If so I think this is the version we
should go with.
--Mark
On 3/17/11 7:22 AM, Zhai Edwin wrote:
> From: Zhai Edwin <edwin.zhai@intel.com>
>
> Proprietary nVidia driver introduce its own libGL that precede mesa's.
> qemu has segfault if linked with it. This fix try to use mesa's libGL
> if ldd find qemu linked with nVidia libGL.
>
> [YOCTO #649]
> [YOCTO #698]
>
>
> Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
> ---
> scripts/poky-qemu-internal | 16 +++++++++++++++-
> 1 files changed, 15 insertions(+), 1 deletions(-)
>
> diff --git a/scripts/poky-qemu-internal b/scripts/poky-qemu-internal
> index 3638a65..1f09fe7 100755
> --- a/scripts/poky-qemu-internal
> +++ b/scripts/poky-qemu-internal
> @@ -436,10 +436,24 @@ else
> echo "Warning: distccd not present, no distcc support loaded."
> fi
>
> +# qemu got segfault if linked with nVidia's libgl
> +GL_LD_PRELOAD=$LD_PRELOAD
> +
> +if ldd $QEMUBIN | grep -i nvidia &> /dev/null
> +then
> + echo "************** !!!Warning!!! **************
> + You installed nVidia's libGL.so that probably lead qemu segfault!
> + Pls. uninstall proprietary nVidia driver or make mesa libgl precede nvidia's."
> +
> + # To avoid segfault of qemu, skip nVidia's libGL and use mesa's instead
> + echo "Skip nVidia's libGL!"
> + GL_LD_PRELOAD="/usr/lib/libGL.so $LD_PRELOAD"
> +fi
> +
> echo "Running $QEMU..."
> # -no-reboot is a mandatory option - see bug #100
> echo $QEMUBIN -kernel $KERNEL $QEMUOPTIONS $SERIALOPTS -no-reboot $SCRIPT_QEMU_OPT $SCRIPT_QEMU_EXTRA_OPT --append '"'$KERNCMDLINE $SCRIPT_KERNEL_OPT'"'
> -$QEMUBIN -kernel $KERNEL $QEMUOPTIONS $SERIALOPTS -no-reboot $SCRIPT_QEMU_OPT $SCRIPT_QEMU_EXTRA_OPT --append "$KERNCMDLINE $SCRIPT_KERNEL_OPT" || /bin/true
> +LD_PRELOAD="$GL_LD_PRELOAD" $QEMUBIN -kernel $KERNEL $QEMUOPTIONS $SERIALOPTS -no-reboot $SCRIPT_QEMU_OPT $SCRIPT_QEMU_EXTRA_OPT --append "$KERNCMDLINE $SCRIPT_KERNEL_OPT" || /bin/true
>
> cleanup
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/1] qemu: Use mesa's libGL rather than nVidia's to avoid segfault of qemu
2011-03-17 12:22 ` [PATCH 1/1] qemu: Use mesa's libGL rather than nVidia's to avoid segfault of qemu Zhai Edwin
2011-03-17 15:03 ` Mark Hatle
@ 2011-03-17 15:17 ` Darren Hart
1 sibling, 0 replies; 8+ messages in thread
From: Darren Hart @ 2011-03-17 15:17 UTC (permalink / raw)
To: Zhai Edwin; +Cc: poky
On 03/17/2011 05:22 AM, Zhai Edwin wrote:
> From: Zhai Edwin<edwin.zhai@intel.com>
>
> Proprietary nVidia driver introduce its own libGL that precede mesa's.
> qemu has segfault if linked with it. This fix try to use mesa's libGL
> if ldd find qemu linked with nVidia libGL.
>
> [YOCTO #649]
> [YOCTO #698]
>
Looks like the right approach, my only concern is the wording of the
error messages. They are ambiguous with respect to what the script WILL
DO and what it is telling the user THEY SHOULD DO. Also, avoiding the
"you did this, bad user" sort of language wold be good.
Consider the following:
>
> Signed-off-by: Zhai Edwin<edwin.zhai@intel.com>
> ---
> scripts/poky-qemu-internal | 16 +++++++++++++++-
> 1 files changed, 15 insertions(+), 1 deletions(-)
>
> diff --git a/scripts/poky-qemu-internal b/scripts/poky-qemu-internal
> index 3638a65..1f09fe7 100755
> --- a/scripts/poky-qemu-internal
> +++ b/scripts/poky-qemu-internal
> @@ -436,10 +436,24 @@ else
> echo "Warning: distccd not present, no distcc support loaded."
> fi
>
> +# qemu got segfault if linked with nVidia's libgl
> +GL_LD_PRELOAD=$LD_PRELOAD
> +
> +if ldd $QEMUBIN | grep -i nvidia&> /dev/null
> +then
> + echo "************** !!!Warning!!! **************
> + You installed nVidia's libGL.so that probably lead qemu segfault!
> + Pls. uninstall proprietary nVidia driver or make mesa libgl precede nvidia's."
> +
> + # To avoid segfault of qemu, skip nVidia's libGL and use mesa's instead
> + echo "Skip nVidia's libGL!"
No need for two separate messages here, consider:
cat <<EOM
************** !!! Warning !!! **************
nVidia's proprietary OpenGL libraries are known to have compatibility
issues with qemu, resulting in a segfault. Please uninstall these
drivers or ensure the mesa libGL libraries precede nvidia's.
Attempting to use mesa's libGL.so via GL_LD_PRELOAD."
EOM
--
Darren
> + GL_LD_PRELOAD="/usr/lib/libGL.so $LD_PRELOAD"
> +fi
> +
> echo "Running $QEMU..."
> # -no-reboot is a mandatory option - see bug #100
> echo $QEMUBIN -kernel $KERNEL $QEMUOPTIONS $SERIALOPTS -no-reboot $SCRIPT_QEMU_OPT $SCRIPT_QEMU_EXTRA_OPT --append '"'$KERNCMDLINE $SCRIPT_KERNEL_OPT'"'
> -$QEMUBIN -kernel $KERNEL $QEMUOPTIONS $SERIALOPTS -no-reboot $SCRIPT_QEMU_OPT $SCRIPT_QEMU_EXTRA_OPT --append "$KERNCMDLINE $SCRIPT_KERNEL_OPT" || /bin/true
> +LD_PRELOAD="$GL_LD_PRELOAD" $QEMUBIN -kernel $KERNEL $QEMUOPTIONS $SERIALOPTS -no-reboot $SCRIPT_QEMU_OPT $SCRIPT_QEMU_EXTRA_OPT --append "$KERNCMDLINE $SCRIPT_KERNEL_OPT" || /bin/true
>
> cleanup
>
--
Darren Hart
Intel Open Source Technology Center
Yocto Project - Linux Kernel
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/1] qemu: Use mesa's libGL rather than nVidia's to avoid segfault of qemu
2011-03-17 15:03 ` Mark Hatle
@ 2011-03-18 0:41 ` Tian, Kevin
2011-03-18 2:42 ` Mark Hatle
0 siblings, 1 reply; 8+ messages in thread
From: Tian, Kevin @ 2011-03-18 0:41 UTC (permalink / raw)
To: Mark Hatle, Zhai, Edwin; +Cc: poky@yoctoproject.org
> From: Mark Hatle
> Sent: Thursday, March 17, 2011 11:03 PM
>
> I reworked the patch slightly.. It's available on poky-contrib
> mhatle/qemu-workaround.
>
> Specifically I changed:
> - the warning message to make clarify it a bit.
> - Changed the preload to be "libGL.so", so the rt-linker will now search for it
> (/usr/lib/libGL.so may be wrong on some systems where /usr/lib64 is the
> default
> library path)
Just double confirm here. You are sure that just "libGL.so" will hit /usr/lib/libGL.so
instead of the nvidia proprietary one, right? I'm interesting how nvidia
proprietary driver is linked to qemu binary then? I can understand why Edwin
originally use full path to make sure default one being used, but of course it may
be wrong as you said on some system.
> - Added a second check to see if the workaround worked or not, if it didn't add
> a second warning message
> - To the QEMU run line, add "stty sane" in the case of a failure. Otherwise
> QEMU leaves the terminal/console in a confused state.
>
> Can you please verify that this still works on the Ubuntu systems and that I
> didn't miss anything/break anything else? If so I think this is the version we
> should go with.
Edwin is out of office in the morning, and he will confirm them once he's back.
Thanks
Kevin
>
> --Mark
>
> On 3/17/11 7:22 AM, Zhai Edwin wrote:
> > From: Zhai Edwin <edwin.zhai@intel.com>
> >
> > Proprietary nVidia driver introduce its own libGL that precede mesa's.
> > qemu has segfault if linked with it. This fix try to use mesa's libGL
> > if ldd find qemu linked with nVidia libGL.
> >
> > [YOCTO #649]
> > [YOCTO #698]
> >
> >
> > Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
> > ---
> > scripts/poky-qemu-internal | 16 +++++++++++++++-
> > 1 files changed, 15 insertions(+), 1 deletions(-)
> >
> > diff --git a/scripts/poky-qemu-internal b/scripts/poky-qemu-internal
> > index 3638a65..1f09fe7 100755
> > --- a/scripts/poky-qemu-internal
> > +++ b/scripts/poky-qemu-internal
> > @@ -436,10 +436,24 @@ else
> > echo "Warning: distccd not present, no distcc support loaded."
> > fi
> >
> > +# qemu got segfault if linked with nVidia's libgl
> > +GL_LD_PRELOAD=$LD_PRELOAD
> > +
> > +if ldd $QEMUBIN | grep -i nvidia &> /dev/null
> > +then
> > + echo "************** !!!Warning!!! **************
> > + You installed nVidia's libGL.so that probably lead qemu segfault!
> > + Pls. uninstall proprietary nVidia driver or make mesa libgl precede
> nvidia's."
> > +
> > + # To avoid segfault of qemu, skip nVidia's libGL and use mesa's instead
> > + echo "Skip nVidia's libGL!"
> > + GL_LD_PRELOAD="/usr/lib/libGL.so $LD_PRELOAD"
> > +fi
> > +
> > echo "Running $QEMU..."
> > # -no-reboot is a mandatory option - see bug #100
> > echo $QEMUBIN -kernel $KERNEL $QEMUOPTIONS $SERIALOPTS
> -no-reboot $SCRIPT_QEMU_OPT $SCRIPT_QEMU_EXTRA_OPT --append
> '"'$KERNCMDLINE $SCRIPT_KERNEL_OPT'"'
> > -$QEMUBIN -kernel $KERNEL $QEMUOPTIONS $SERIALOPTS -no-reboot
> $SCRIPT_QEMU_OPT $SCRIPT_QEMU_EXTRA_OPT --append "$KERNCMDLINE
> $SCRIPT_KERNEL_OPT" || /bin/true
> > +LD_PRELOAD="$GL_LD_PRELOAD" $QEMUBIN -kernel $KERNEL
> $QEMUOPTIONS $SERIALOPTS -no-reboot $SCRIPT_QEMU_OPT
> $SCRIPT_QEMU_EXTRA_OPT --append "$KERNCMDLINE
> $SCRIPT_KERNEL_OPT" || /bin/true
> >
> > cleanup
> >
>
> _______________________________________________
> poky mailing list
> poky@yoctoproject.org
> https://lists.yoctoproject.org/listinfo/poky
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/1] qemu: Use mesa's libGL rather than nVidia's to avoid segfault of qemu
2011-03-18 0:41 ` Tian, Kevin
@ 2011-03-18 2:42 ` Mark Hatle
2011-03-18 2:46 ` Tian, Kevin
2011-03-18 2:54 ` Zhai, Edwin
0 siblings, 2 replies; 8+ messages in thread
From: Mark Hatle @ 2011-03-18 2:42 UTC (permalink / raw)
To: Tian, Kevin; +Cc: poky@yoctoproject.org
On 3/17/11 7:41 PM, Tian, Kevin wrote:
>> From: Mark Hatle
>> Sent: Thursday, March 17, 2011 11:03 PM
>>
>> I reworked the patch slightly.. It's available on poky-contrib
>> mhatle/qemu-workaround.
>>
>> Specifically I changed:
>> - the warning message to make clarify it a bit.
>> - Changed the preload to be "libGL.so", so the rt-linker will now search for it
>> (/usr/lib/libGL.so may be wrong on some systems where /usr/lib64 is the
>> default
>> library path)
>
> Just double confirm here. You are sure that just "libGL.so" will hit /usr/lib/libGL.so
> instead of the nvidia proprietary one, right? I'm interesting how nvidia
> proprietary driver is linked to qemu binary then? I can understand why Edwin
> originally use full path to make sure default one being used, but of course it may
> be wrong as you said on some system.
By specifying "libGL.so", it will cause the ld.so to resolve the path using the
normal resolution. Usually the nVidia stuff is linked in via libGL.so.1 or
similar. libGL.so is usually only used for development linking.
>> - Added a second check to see if the workaround worked or not, if it didn't add
>> a second warning message
>> - To the QEMU run line, add "stty sane" in the case of a failure. Otherwise
>> QEMU leaves the terminal/console in a confused state.
>>
>> Can you please verify that this still works on the Ubuntu systems and that I
>> didn't miss anything/break anything else? If so I think this is the version we
>> should go with.
>
> Edwin is out of office in the morning, and he will confirm them once he's back.
ok.
--Mark
> Thanks
> Kevin
>
>>
>> --Mark
>>
>> On 3/17/11 7:22 AM, Zhai Edwin wrote:
>>> From: Zhai Edwin <edwin.zhai@intel.com>
>>>
>>> Proprietary nVidia driver introduce its own libGL that precede mesa's.
>>> qemu has segfault if linked with it. This fix try to use mesa's libGL
>>> if ldd find qemu linked with nVidia libGL.
>>>
>>> [YOCTO #649]
>>> [YOCTO #698]
>>>
>>>
>>> Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
>>> ---
>>> scripts/poky-qemu-internal | 16 +++++++++++++++-
>>> 1 files changed, 15 insertions(+), 1 deletions(-)
>>>
>>> diff --git a/scripts/poky-qemu-internal b/scripts/poky-qemu-internal
>>> index 3638a65..1f09fe7 100755
>>> --- a/scripts/poky-qemu-internal
>>> +++ b/scripts/poky-qemu-internal
>>> @@ -436,10 +436,24 @@ else
>>> echo "Warning: distccd not present, no distcc support loaded."
>>> fi
>>>
>>> +# qemu got segfault if linked with nVidia's libgl
>>> +GL_LD_PRELOAD=$LD_PRELOAD
>>> +
>>> +if ldd $QEMUBIN | grep -i nvidia &> /dev/null
>>> +then
>>> + echo "************** !!!Warning!!! **************
>>> + You installed nVidia's libGL.so that probably lead qemu segfault!
>>> + Pls. uninstall proprietary nVidia driver or make mesa libgl precede
>> nvidia's."
>>> +
>>> + # To avoid segfault of qemu, skip nVidia's libGL and use mesa's instead
>>> + echo "Skip nVidia's libGL!"
>>> + GL_LD_PRELOAD="/usr/lib/libGL.so $LD_PRELOAD"
>>> +fi
>>> +
>>> echo "Running $QEMU..."
>>> # -no-reboot is a mandatory option - see bug #100
>>> echo $QEMUBIN -kernel $KERNEL $QEMUOPTIONS $SERIALOPTS
>> -no-reboot $SCRIPT_QEMU_OPT $SCRIPT_QEMU_EXTRA_OPT --append
>> '"'$KERNCMDLINE $SCRIPT_KERNEL_OPT'"'
>>> -$QEMUBIN -kernel $KERNEL $QEMUOPTIONS $SERIALOPTS -no-reboot
>> $SCRIPT_QEMU_OPT $SCRIPT_QEMU_EXTRA_OPT --append "$KERNCMDLINE
>> $SCRIPT_KERNEL_OPT" || /bin/true
>>> +LD_PRELOAD="$GL_LD_PRELOAD" $QEMUBIN -kernel $KERNEL
>> $QEMUOPTIONS $SERIALOPTS -no-reboot $SCRIPT_QEMU_OPT
>> $SCRIPT_QEMU_EXTRA_OPT --append "$KERNCMDLINE
>> $SCRIPT_KERNEL_OPT" || /bin/true
>>>
>>> cleanup
>>>
>>
>> _______________________________________________
>> poky mailing list
>> poky@yoctoproject.org
>> https://lists.yoctoproject.org/listinfo/poky
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/1] qemu: Use mesa's libGL rather than nVidia's to avoid segfault of qemu
2011-03-18 2:42 ` Mark Hatle
@ 2011-03-18 2:46 ` Tian, Kevin
2011-03-18 2:54 ` Zhai, Edwin
1 sibling, 0 replies; 8+ messages in thread
From: Tian, Kevin @ 2011-03-18 2:46 UTC (permalink / raw)
To: Mark Hatle; +Cc: poky@yoctoproject.org
> From: Mark Hatle [mailto:mark.hatle@windriver.com]
> Sent: Friday, March 18, 2011 10:43 AM
>
> On 3/17/11 7:41 PM, Tian, Kevin wrote:
> >> From: Mark Hatle
> >> Sent: Thursday, March 17, 2011 11:03 PM
> >>
> >> I reworked the patch slightly.. It's available on poky-contrib
> >> mhatle/qemu-workaround.
> >>
> >> Specifically I changed:
> >> - the warning message to make clarify it a bit.
> >> - Changed the preload to be "libGL.so", so the rt-linker will now search for it
> >> (/usr/lib/libGL.so may be wrong on some systems where /usr/lib64 is the
> >> default
> >> library path)
> >
> > Just double confirm here. You are sure that just "libGL.so" will hit
> /usr/lib/libGL.so
> > instead of the nvidia proprietary one, right? I'm interesting how nvidia
> > proprietary driver is linked to qemu binary then? I can understand why Edwin
> > originally use full path to make sure default one being used, but of course it
> may
> > be wrong as you said on some system.
>
> By specifying "libGL.so", it will cause the ld.so to resolve the path using the
> normal resolution. Usually the nVidia stuff is linked in via libGL.so.1 or
> similar. libGL.so is usually only used for development linking.
nice to know that and thanks for explanation. Edwin is verifying it now, and we'll
see how it works. :-)
Thanks
Kevin
>
> >> - Added a second check to see if the workaround worked or not, if it didn't
> add
> >> a second warning message
> >> - To the QEMU run line, add "stty sane" in the case of a failure. Otherwise
> >> QEMU leaves the terminal/console in a confused state.
> >>
> >> Can you please verify that this still works on the Ubuntu systems and that I
> >> didn't miss anything/break anything else? If so I think this is the version
> we
> >> should go with.
> >
> > Edwin is out of office in the morning, and he will confirm them once he's back.
>
> ok.
>
> --Mark
>
> > Thanks
> > Kevin
> >
> >>
> >> --Mark
> >>
> >> On 3/17/11 7:22 AM, Zhai Edwin wrote:
> >>> From: Zhai Edwin <edwin.zhai@intel.com>
> >>>
> >>> Proprietary nVidia driver introduce its own libGL that precede mesa's.
> >>> qemu has segfault if linked with it. This fix try to use mesa's libGL
> >>> if ldd find qemu linked with nVidia libGL.
> >>>
> >>> [YOCTO #649]
> >>> [YOCTO #698]
> >>>
> >>>
> >>> Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
> >>> ---
> >>> scripts/poky-qemu-internal | 16 +++++++++++++++-
> >>> 1 files changed, 15 insertions(+), 1 deletions(-)
> >>>
> >>> diff --git a/scripts/poky-qemu-internal b/scripts/poky-qemu-internal
> >>> index 3638a65..1f09fe7 100755
> >>> --- a/scripts/poky-qemu-internal
> >>> +++ b/scripts/poky-qemu-internal
> >>> @@ -436,10 +436,24 @@ else
> >>> echo "Warning: distccd not present, no distcc support loaded."
> >>> fi
> >>>
> >>> +# qemu got segfault if linked with nVidia's libgl
> >>> +GL_LD_PRELOAD=$LD_PRELOAD
> >>> +
> >>> +if ldd $QEMUBIN | grep -i nvidia &> /dev/null
> >>> +then
> >>> + echo "************** !!!Warning!!! **************
> >>> + You installed nVidia's libGL.so that probably lead qemu segfault!
> >>> + Pls. uninstall proprietary nVidia driver or make mesa libgl precede
> >> nvidia's."
> >>> +
> >>> + # To avoid segfault of qemu, skip nVidia's libGL and use mesa's
> instead
> >>> + echo "Skip nVidia's libGL!"
> >>> + GL_LD_PRELOAD="/usr/lib/libGL.so $LD_PRELOAD"
> >>> +fi
> >>> +
> >>> echo "Running $QEMU..."
> >>> # -no-reboot is a mandatory option - see bug #100
> >>> echo $QEMUBIN -kernel $KERNEL $QEMUOPTIONS $SERIALOPTS
> >> -no-reboot $SCRIPT_QEMU_OPT $SCRIPT_QEMU_EXTRA_OPT --append
> >> '"'$KERNCMDLINE $SCRIPT_KERNEL_OPT'"'
> >>> -$QEMUBIN -kernel $KERNEL $QEMUOPTIONS $SERIALOPTS -no-reboot
> >> $SCRIPT_QEMU_OPT $SCRIPT_QEMU_EXTRA_OPT --append
> "$KERNCMDLINE
> >> $SCRIPT_KERNEL_OPT" || /bin/true
> >>> +LD_PRELOAD="$GL_LD_PRELOAD" $QEMUBIN -kernel $KERNEL
> >> $QEMUOPTIONS $SERIALOPTS -no-reboot $SCRIPT_QEMU_OPT
> >> $SCRIPT_QEMU_EXTRA_OPT --append "$KERNCMDLINE
> >> $SCRIPT_KERNEL_OPT" || /bin/true
> >>>
> >>> cleanup
> >>>
> >>
> >> _______________________________________________
> >> poky mailing list
> >> poky@yoctoproject.org
> >> https://lists.yoctoproject.org/listinfo/poky
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/1] qemu: Use mesa's libGL rather than nVidia's to avoid segfault of qemu
2011-03-18 2:42 ` Mark Hatle
2011-03-18 2:46 ` Tian, Kevin
@ 2011-03-18 2:54 ` Zhai, Edwin
1 sibling, 0 replies; 8+ messages in thread
From: Zhai, Edwin @ 2011-03-18 2:54 UTC (permalink / raw)
To: Mark Hatle; +Cc: poky
Mark,
It doesn't work on my ubuntu 10 system:(
gzhai@yocto-build3:/distro/edwin-working/poky/build-arm-bernard$ ldd
/distro/edwin-working/poky/build-arm-bernard/tmp/sysroots/x86_64-linux/usr/bin/qemu-system-arm|grep
-i nvidia
18: libGL.so.1 => /usr/lib/nvidia-current/libGL.so.1
(0x00007f1c5f4ac000)
26: libnvidia-tls.so.260.19.06 =>
/usr/lib/nvidia-current/tls/libnvidia-tls.so.260.19.06 (0x00007f1c5e462000)
27: libnvidia-glcore.so.260.19.06 =>
/usr/lib/nvidia-current/libnvidia-glcore.so.260.19.06 (0x00007f1c5c889000)
gzhai@yocto-build3:/distro/edwin-working/poky/build-arm-bernard$ ll
/usr/lib/libGL* lrwxrwxrwx 1 root root 13 2011-02-28 20:26
/usr/lib/libGL.so -> mesa/libGL.so
-rw-r--r-- 1 root root 931734 2010-10-01 01:21 /usr/lib/libGLU.a
lrwxrwxrwx 1 root root 11 2011-02-28 20:26 /usr/lib/libGLU.so ->
libGLU.so.1
lrwxrwxrwx 1 root root 20 2011-02-28 13:45 /usr/lib/libGLU.so.1 ->
libGLU.so.1.3.070900
-rw-r--r-- 1 root root 465520 2010-10-01 01:21 /usr/lib/libGLU.so.1.3.070900
Mark Hatle wrote:
>
> On 3/17/11 7:41 PM, Tian, Kevin wrote:
> >> From: Mark Hatle
> >> Sent: Thursday, March 17, 2011 11:03 PM
> >>
> >> I reworked the patch slightly.. It's available on poky-contrib
> >> mhatle/qemu-workaround.
> >>
> >> Specifically I changed:
> >> - the warning message to make clarify it a bit.
> >> - Changed the preload to be "libGL.so", so the rt-linker will now
> search for it
> >> (/usr/lib/libGL.so may be wrong on some systems where /usr/lib64 is
> the
> >> default
> >> library path)
> >
> > Just double confirm here. You are sure that just "libGL.so" will hit
> /usr/lib/libGL.so
> > instead of the nvidia proprietary one, right? I'm interesting how
> nvidia
> > proprietary driver is linked to qemu binary then? I can understand
> why Edwin
> > originally use full path to make sure default one being used, but of
> course it may
> > be wrong as you said on some system.
>
> By specifying "libGL.so", it will cause the ld.so to resolve the path
> using the
> normal resolution. Usually the nVidia stuff is linked in via
> libGL.so.1 or
> similar. libGL.so is usually only used for development linking.
>
> >> - Added a second check to see if the workaround worked or not, if
> it didn't add
> >> a second warning message
> >> - To the QEMU run line, add "stty sane" in the case of a failure.
> Otherwise
> >> QEMU leaves the terminal/console in a confused state.
> >>
> >> Can you please verify that this still works on the Ubuntu systems
> and that I
> >> didn't miss anything/break anything else? If so I think this is
> the version we
> >> should go with.
> >
> > Edwin is out of office in the morning, and he will confirm them once
> he's back.
>
> ok.
>
> --Mark
>
> > Thanks
> > Kevin
> >
> >>
> >> --Mark
> >>
> >> On 3/17/11 7:22 AM, Zhai Edwin wrote:
> >>> From: Zhai Edwin <edwin.zhai@intel.com>
> >>>
> >>> Proprietary nVidia driver introduce its own libGL that precede
> mesa's.
> >>> qemu has segfault if linked with it. This fix try to use mesa's libGL
> >>> if ldd find qemu linked with nVidia libGL.
> >>>
> >>> [YOCTO #649]
> >>> [YOCTO #698]
> >>>
> >>>
> >>> Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
> >>> ---
> >>> scripts/poky-qemu-internal | 16 +++++++++++++++-
> >>> 1 files changed, 15 insertions(+), 1 deletions(-)
> >>>
> >>> diff --git a/scripts/poky-qemu-internal b/scripts/poky-qemu-internal
> >>> index 3638a65..1f09fe7 100755
> >>> --- a/scripts/poky-qemu-internal
> >>> +++ b/scripts/poky-qemu-internal
> >>> @@ -436,10 +436,24 @@ else
> >>> echo "Warning: distccd not present, no distcc support loaded."
> >>> fi
> >>>
> >>> +# qemu got segfault if linked with nVidia's libgl
> >>> +GL_LD_PRELOAD=$LD_PRELOAD
> >>> +
> >>> +if ldd $QEMUBIN | grep -i nvidia &> /dev/null
> >>> +then
> >>> + echo "************** !!!Warning!!! **************
> >>> + You installed nVidia's libGL.so that probably lead qemu
> segfault!
> >>> + Pls. uninstall proprietary nVidia driver or make mesa libgl
> precede
> >> nvidia's."
> >>> +
> >>> + # To avoid segfault of qemu, skip nVidia's libGL and use
> mesa's instead
> >>> + echo "Skip nVidia's libGL!"
> >>> + GL_LD_PRELOAD="/usr/lib/libGL.so $LD_PRELOAD"
> >>> +fi
> >>> +
> >>> echo "Running $QEMU..."
> >>> # -no-reboot is a mandatory option - see bug #100
> >>> echo $QEMUBIN -kernel $KERNEL $QEMUOPTIONS $SERIALOPTS
> >> -no-reboot $SCRIPT_QEMU_OPT $SCRIPT_QEMU_EXTRA_OPT --append
> >> '"'$KERNCMDLINE $SCRIPT_KERNEL_OPT'"'
> >>> -$QEMUBIN -kernel $KERNEL $QEMUOPTIONS $SERIALOPTS -no-reboot
> >> $SCRIPT_QEMU_OPT $SCRIPT_QEMU_EXTRA_OPT --append "$KERNCMDLINE
> >> $SCRIPT_KERNEL_OPT" || /bin/true
> >>> +LD_PRELOAD="$GL_LD_PRELOAD" $QEMUBIN -kernel $KERNEL
> >> $QEMUOPTIONS $SERIALOPTS -no-reboot $SCRIPT_QEMU_OPT
> >> $SCRIPT_QEMU_EXTRA_OPT --append "$KERNCMDLINE
> >> $SCRIPT_KERNEL_OPT" || /bin/true
> >>>
> >>> cleanup
> >>>
> >>
> >> _______________________________________________
> >> poky mailing list
> >> poky@yoctoproject.org
> >> https://lists.yoctoproject.org/listinfo/poky
>
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2011-03-18 2:54 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-03-17 12:22 [PATCH 0/1] v2 fix qemu segfault with nVidia proprietary driver Zhai Edwin
2011-03-17 12:22 ` [PATCH 1/1] qemu: Use mesa's libGL rather than nVidia's to avoid segfault of qemu Zhai Edwin
2011-03-17 15:03 ` Mark Hatle
2011-03-18 0:41 ` Tian, Kevin
2011-03-18 2:42 ` Mark Hatle
2011-03-18 2:46 ` Tian, Kevin
2011-03-18 2:54 ` Zhai, Edwin
2011-03-17 15:17 ` Darren Hart
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.