gma500_gfx: Avoid inserting gma500_gfx module for certain devices
PATCH 1/1 gma500_gfx: Avoid inserting gma500_gfx module for certain devices
In reply to a message not in the archiveThe gma500_gfx driver will match certain devices on which it causes incorrect functionality, we want to avoid inserting this module, basicallly blacklist it for specific hardware,
but still allow it to work on other hardware by default; usually when we have an already working system, using udev rules would do the job, but since we are building it, it is impossible to blacklist a driver when a certain udev rule matches, since rootfs isn't writeable at this point during boot time, the solution is to use modprobe install, which runs a certain command instead of inserting a matching module, this command needs to insert the module manually afterwards and have a flag --ignore-install so it doesnt create an infinite loop executing itself everytime it wants to insert the module, busybox's modprobe doesn't provide this functionality, so a small hack had to be used to avoid the infite loop instead.
--- meta-yocto-bsp/conf/machine/genericx86.conf | 2 ++ .../gma500-gfx-check/gma500-gfx-check.conf | 2 ++ .../gma500-gfx-check/gma500-gfx-check.sh | 11 +++++++++++ .../gma500-gfx-check/gma500-gfx-check_1.0.bb | 18 ++++++++++++++++++ 4 files changed, 33 insertions(+) create mode 100644 meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.conf create mode 100644 meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.sh create mode 100644 meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check_1.0.bb
meta-yocto-bsp/conf/machine/genericx86.conf +2 -0
@@ -6,3 +6,5 @@ DEFAULTTUNE ?= "core2-32" require conf/machine/include/tune-core2.inc require conf/machine/include/genericx86-common.inc + +MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += "gma500-gfx-check"
meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.conf new file +2 -0
@@ -0,0 +1,2 @@ +# Mimic modprobe's install funcitonality with busybox's modprobe +install gma500_gfx lsmod | grep gma || { gma500_gfx_check.sh || modprobe gma500_gfx; }
meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.sh new file +11 -0
@@ -0,0 +1,11 @@ +#!/bin/sh + +# Check for devices we wish to avoid gma500_gfx for +DEVICES="0x8119 0x4108" +for DEVICE in $DEVICES; do + if udevadm trigger --subsystem-match=pci --verbose --attr-match=device=$DEVICE | grep "pci" >> /dev/null ; then + echo "Found $DEVICE, avoiding gma500_gfx module" >> /dev/kmsg; + exit 0 + fi +done +exit 1
meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check_1.0.bb new file +18 -0
@@ -0,0 +1,18 @@ +SUMMARY = "Intel gma500_gfx fix for certain hardware" +DESCRIPTION = "Avoid inserting gma500_gfx module for certain hardware devices." +LICENSE="GPLv2" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6" + +SRC_URI = "file://gma500-gfx-check.conf \ + file://gma500-gfx-check.sh " + +do_install(){ + install -d ${D}${sysconfdir}/modprobe.d/ + install -m 755 ${WORKDIR}/gma500-gfx-check.sh ${D}${sysconfdir}/modprobe.d/gma500-gfx-check.sh + install -m 644 ${WORKDIR}/gma500-gfx-check.conf ${D}${sysconfdir}/modprobe.d/gma500-gfx-check.conf +} + +FILES_${PN}="${sysconfdir}/modprobe.d/gma500-gfx-check.conf \ + ${sysconfdir}/modprobe.d/gma500-gfx-check.sh" + +COMPATIBLE_MACHINE_genericx86 = "genericx86"
Signature · 1 line
1.8.4.5
Quoted 71 lines · Alejandro Hernandez
The
gma500_gfxdriver will match certain devices on which it causes incorrect functionality, we want to avoid inserting this module, basicallly blacklist it for specific hardware,
but still allow it to work on other hardware by default; usually when we have an already working system, using udev rules would do the job, but since we are building it, it is impossible to blacklist a driver when a certain udev rule matches, since rootfs isn't writeable at this point during boot time, the solution is to use modprobe install, which runs a certain command instead of inserting a matching module, this command needs to insert the module manually afterwards and have a flag --ignore-install so it doesnt create an infinite loop executing itself everytime it wants to insert the module, busybox's modprobe doesn't provide this functionality, so a small hack had to be used to avoid the infite loop instead.Signed-off-by Alejandro Hernandez <[email protected]>--- meta-yocto-bsp/conf/machine/genericx86.conf | 2 ++ .../gma500-gfx-check/gma500-gfx-check.conf | 2 ++ .../gma500-gfx-check/gma500-gfx-check.sh | 11 +++++++++++ .../gma500-gfx-check/gma500-gfx-check_1.0.bb | 18 ++++++++++++++++++ 4 files changed, 33 insertions(+) create mode 100644 meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.conf create mode 100644 meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.sh create mode 100644 meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check_1.0.bbmeta-yocto-bsp/conf/machine/genericx86.conf +2
-0@@ -6,3 +6,5 @@ DEFAULTTUNE ?= "core2-32" require conf/machine/include/tune-core2.inc require conf/machine/include/genericx86-common.inc + +MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += "gma500-gfx-check"meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.conf new file +2
-0@@ -0,0 +1,2 @@ +# Mimic modprobe's install funcitonality with busybox's modprobe +install gma500_gfx lsmod | grep gma || { gma500_gfx_check.sh || modprobe gma500_gfx; }meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.sh new file +11
-0@@ -0,0 +1,11 @@ +#!/bin/sh + +# Check for devices we wish to avoid gma500_gfx for +DEVICES="0x8119 0x4108" +for DEVICE in $DEVICES; do + if udevadm trigger --subsystem-match=pci --verbose --attr-match=device=$DEVICE | grep "pci" >> /dev/null ; then + echo "Found $DEVICE, avoiding gma500_gfx module" >> /dev/kmsg; + exit 0 + fi +done +exit 1meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check_1.0.bb new file +8
-0@@ -0,0 +1,18 @@ +SUMMARY = "Intel gma500_gfx fix for certain hardware" +DESCRIPTION = "Avoid inserting gma500_gfx module for certain hardware devices." +LICENSE="GPLv2" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6" + +SRC_URI = "file://gma500-gfx-check.conf \ + file://gma500-gfx-check.sh " +
meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check_1.0.bb line 18
Quoted 10 lines
meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check_1.0.bb new file +10
-0+do_install(){ + install -d ${D}${sysconfdir}/modprobe.d/ + install -m 755 ${WORKDIR}/gma500-gfx-check.sh ${D}${sysconfdir}/modprobe.d/gma500-gfx-check.sh + install -m 644 ${WORKDIR}/gma500-gfx-check.conf ${D}${sysconfdir}/modprobe.d/gma500-gfx-check.conf +} + +FILES_${PN}="${sysconfdir}/modprobe.d/gma500-gfx-check.conf \ + ${sysconfdir}/modprobe.d/gma500-gfx-check.sh" + +COMPATIBLE_MACHINE_genericx86 = "genericx86"
This patch needs to go to the poky mailing list as its against meta-yocto. I think this should also be:
COMPATIBLE_MACHINE = "genericx86"
the other syntax is used to avoid certain issues in recipes like linux-yocto but there is no default COMPATIBLE_MACHINE here so using that override syntax isn't correct.
Cheers,
Richard
Quoted 87 lines · Richard Purdie
Quoted 71 lines · Alejandro Hernandez
The
gma500_gfxdriver will match certain devices on which it causes incorrect functionality, we want to avoid inserting this module, basicallly blacklist it for specific hardware,
but still allow it to work on other hardware by default; usually when we have an already working system, using udev rules would do the job, but since we are building it, it is impossible to blacklist a driver when a certain udev rule matches, since rootfs isn't writeable at this point during boot time, the solution is to use modprobe install, which runs a certain command instead of inserting a matching module, this command needs to insert the module manually afterwards and have a flag --ignore-install so it doesnt create an infinite loop executing itself everytime it wants to insert the module, busybox's modprobe doesn't provide this functionality, so a small hack had to be used to avoid the infite loop instead.Signed-off-by Alejandro Hernandez <[email protected]>--- meta-yocto-bsp/conf/machine/genericx86.conf | 2 ++ .../gma500-gfx-check/gma500-gfx-check.conf | 2 ++ .../gma500-gfx-check/gma500-gfx-check.sh | 11 +++++++++++ .../gma500-gfx-check/gma500-gfx-check_1.0.bb | 18 ++++++++++++++++++ 4 files changed, 33 insertions(+)create mode 100644
meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.confcreate mode 100644meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.shcreate mode 100644 meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check_1.0.bbmeta-yocto-bsp/conf/machine/genericx86.conf +2
-0@@ -6,3 +6,5 @@ DEFAULTTUNE ?= "core2-32" require conf/machine/include/tune-core2.inc require conf/machine/include/genericx86-common.inc + +MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += "gma500-gfx-check"meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.conf new file +2
-0@@ -0,0 +1,2 @@ +# Mimic modprobe's install funcitonality with busybox's modprobe +install gma500_gfx lsmod | grep gma || { gma500_gfx_check.sh || modprobe gma500_gfx; }meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.sh new file +11
-0@@ -0,0 +1,11 @@ +#!/bin/sh + +# Check for devices we wish to avoid gma500_gfx for +DEVICES="0x8119 0x4108" +for DEVICE in $DEVICES; do + if udevadm trigger --subsystem-match=pci --verbose --attr-match=device=$DEVICE | grep "pci" >> /dev/null ; then + echo "Found $DEVICE, avoiding gma500_gfx module" >> /dev/kmsg; + exit 0 + fi +done +exit 1meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check_1.0.bb new file +8
-0@@ -0,0 +1,18 @@ +SUMMARY = "Intel gma500_gfx fix for certain hardware" +DESCRIPTION = "Avoid inserting gma500_gfx module for certain hardware devices." +LICENSE="GPLv2" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6" + +SRC_URI = "file://gma500-gfx-check.conf \ + file://gma500-gfx-check.sh " +meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check_1.0.bb line 18
Quoted 10 lines
meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check_1.0.bb new file +10
-0+do_install(){ + install -d ${D}${sysconfdir}/modprobe.d/ + install -m 755 ${WORKDIR}/gma500-gfx-check.sh ${D}${sysconfdir}/modprobe.d/gma500-gfx-check.sh + install -m 644 ${WORKDIR}/gma500-gfx-check.conf ${D}${sysconfdir}/modprobe.d/gma500-gfx-check.conf +} + +FILES_${PN}="${sysconfdir}/modprobe.d/gma500-gfx-check.conf \ + ${sysconfdir}/modprobe.d/gma500-gfx-check.sh" + +COMPATIBLE_MACHINE_genericx86 = "genericx86"This patch needs to go to the poky mailing list as its against meta-yocto. I think this should also be:
COMPATIBLE_MACHINE= "genericx86"
Quoted 7 lines
the other syntax is used to avoid certain issues in recipes like linux-yocto but there is no default
COMPATIBLE_MACHINEhere so using that override syntax isn't correct.Cheers,
Richard
My mistake, I will fix this and send a v2