Patchwork [1/1,v2] kbd: Limit the kbdrate application to x86, mips and sparc

login
register
mail settings
Submitter jackie huang
Date July 12, 2013, 5:42 a.m.
Message ID <3393c80c31d82ac23afcddd39b1b24a9b5c1e696.1373607104.git.jackie.huang@windriver.com>
Download mbox | patch
Permalink /patch/53547/
State New
Headers show

Comments

jackie huang - July 12, 2013, 5:42 a.m.
From: Jackie Huang <jackie.huang@windriver.com>

The code relies on hardware specific memory locations to access
and modify the keyboard repeat rate.  It also requires read/write
access to /dev/port which doesn't exist on every architecture's
root fs. The defect was raised for Qemu PowerPC but it also fails on
ARM.  The keyboard emulation in qemuppc is for an ADB (Apple Desktop
Bus) device and not compatible with an Intel driver.  There's also no
indication in the documentation that the code should work on anything
other than Intel architecture but it also works on MIPS.

Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
---
 meta/recipes-core/kbd/kbd_1.15.2.bb |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)
Phil Blundell - July 12, 2013, 8:34 a.m.
On Fri, 2013-07-12 at 13:42 +0800, jackie.huang@windriver.com wrote:
> The code relies on hardware specific memory locations to access
> and modify the keyboard repeat rate.  It also requires read/write
> access to /dev/port which doesn't exist on every architecture's
> root fs. The defect was raised for Qemu PowerPC but it also fails on
> ARM.  The keyboard emulation in qemuppc is for an ADB (Apple Desktop
> Bus) device and not compatible with an Intel driver.  There's also no
> indication in the documentation that the code should work on anything
> other than Intel architecture but it also works on MIPS.

This reasoning seems slightly spurious.  There do exist ARM and PPC
machines where kbdrate works, it's just that the hardware emulated by
qemuarm and qemuppc doesn't happen to fall into that category.  Equally,
there are certainly mips machines (and might conceivably be some
x86/sparc ones) where it doesn't work.  So I don't think you can make
any sensible determination about the supportedness or not of kbdrate
based on TARGET_ARCH alone.  

Of course, the right answer really is for rate setting to go through the
kernel driver (which knows what sort of hardware it is using) rather
than for kbdrate to go poking at random I/O ports.

p.
jackie huang - July 15, 2013, 3:02 a.m.
On 7/12/2013 4:34 PM, Phil Blundell wrote:
> On Fri, 2013-07-12 at 13:42 +0800, jackie.huang@windriver.com wrote:
>> The code relies on hardware specific memory locations to access
>> and modify the keyboard repeat rate.  It also requires read/write
>> access to /dev/port which doesn't exist on every architecture's
>> root fs. The defect was raised for Qemu PowerPC but it also fails on
>> ARM.  The keyboard emulation in qemuppc is for an ADB (Apple Desktop
>> Bus) device and not compatible with an Intel driver.  There's also no
>> indication in the documentation that the code should work on anything
>> other than Intel architecture but it also works on MIPS.
>
> This reasoning seems slightly spurious.  There do exist ARM and PPC
> machines where kbdrate works, it's just that the hardware emulated by
> qemuarm and qemuppc doesn't happen to fall into that category.  Equally,
> there are certainly mips machines (and might conceivably be some
> x86/sparc ones) where it doesn't work.  So I don't think you can make
> any sensible determination about the supportedness or not of kbdrate
> based on TARGET_ARCH alone.
>
> Of course, the right answer really is for rate setting to go through the
> kernel driver (which knows what sort of hardware it is using) rather
> than for kbdrate to go poking at random I/O ports.

Thanks Phil, I will re-work and do more anaysis on it.

Thanks,
Jackie

>
> p.
>
>
>
>

Patch

diff --git a/meta/recipes-core/kbd/kbd_1.15.2.bb b/meta/recipes-core/kbd/kbd_1.15.2.bb
index 79ea468..25ca8be 100644
--- a/meta/recipes-core/kbd/kbd_1.15.2.bb
+++ b/meta/recipes-core/kbd/kbd_1.15.2.bb
@@ -28,3 +28,11 @@  inherit update-alternatives
 
 ALTERNATIVE_${PN} = "chvt deallocvt fgconsole openvt"
 ALTERNATIVE_PRIORITY = "100"
+
+do_install_append() {
+        # Limit the kbdrate application to x86, mips and sparc.
+        if [ ${TARGET_ARCH} != "i586" -a ${TARGET_ARCH} != "x86_64" -a ${TARGET_ARCH} != "mips" \
+             -a ${TARGET_ARCH} != "mips64" -a ${TARGET_ARCH} != "sparc" ]; then
+                rm ${D}/${bindir}/kbdrate
+        fi
+}