[poky] [PATCH 1/1] qemu: Use mesa's libGL rather than nVidia's to avoid segfault of qemu

Darren Hart dvhart at linux.intel.com
Thu Mar 17 08:17:38 PDT 2011


On 03/17/2011 05:22 AM, Zhai Edwin wrote:
> From: Zhai Edwin<edwin.zhai at 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 at 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



More information about the poky mailing list