On 05/10/15 03:26, Richard Purdie wrote:
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
My mistake, I will fix this and send a v2
--
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core