On Thu, 2015-10-01 at 20:23 +0000, Alejandro Hernandez wrote: > The 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. > > 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.bb > > diff --git a/meta-yocto-bsp/conf/machine/genericx86.conf > b/meta-yocto-bsp/conf/machine/genericx86.conf > index 2642cab..798b62ec 100644 > --- a/meta-yocto-bsp/conf/machine/genericx86.conf > +++ b/meta-yocto-bsp/conf/machine/genericx86.conf > @@ -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" > diff --git > a/meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.conf > > b/meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.conf > new file mode 100644 > index 0000000..69f109e > --- /dev/null > +++ > b/meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.conf > @@ -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; } > diff --git > a/meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.sh > > b/meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.sh > new file mode 100644 > index 0000000..0c7b3aa > --- /dev/null > +++ > b/meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.sh > @@ -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 > diff --git > a/meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check_1.0.bb > b/meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check_1.0.bb > new file mode 100644 > index 0000000..c68dd7b > --- /dev/null > +++ b/meta-yocto-bsp/recipes-bsp/gma500-gfx-check/gma500-gfx-check_1.0.bb > @@ -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"
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 -- _______________________________________________ Openembedded-core mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-core
