From: Richard Purdie <rpurdie@rpsys.net>
To: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
Cc: openembedded-core@lists.openembedded.org
Subject: Re: [PATCH 1/1] gma500_gfx: Avoid inserting gma500_gfx module for certain devices
Date: Mon, 05 Oct 2015 09:26:29 +0100 [thread overview]
Message-ID: <1444033589.5118.11.camel@rpsys.net> (raw)
In-Reply-To: <1c6dbb3997ae1ff49ebe227475b73e3eb072f12b.1443730882.git.alejandro.hernandez@linux.intel.com>
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 <alejandro.hernandez@linux.intel.com>
> ---
> 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
next prev parent reply other threads:[~2015-10-05 10:16 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <cover.1443730882.git.alejandro.hernandez@linux.intel.com>
2015-10-01 20:23 ` [PATCH 1/1] gma500_gfx: Avoid inserting gma500_gfx module for certain devices Alejandro Hernandez
2015-10-05 8:26 ` Richard Purdie [this message]
2015-10-05 15:00 ` Alejandro Hernandez
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1444033589.5118.11.camel@rpsys.net \
--to=rpurdie@rpsys.net \
--cc=alejandro.hernandez@linux.intel.com \
--cc=openembedded-core@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox