Skip to contentSkip to conversation

kbd: Limit the kbdrate application to x86, mips and sparc

PATCH In review [email protected] 2 participants 4 messages Jul 12, 2013 – Jul 15, 2013

lore
Share & tools
lore
#0 lore raw

v2 cover kbd: Limit the kbdrate application to x86, mips and sparc

From: Jackie Huang <[email protected]>

v2 comments:
Drop the patch that detects the arch in runtime and print an error, and just detect the target platform in the build system and skip installing the kbdrate for architectures it won't work.

tested for qemux86, qemux86-64, qemuppc, qemuarm, qemumips, qemumips64

--
The following changes since commit 4f5009dcbbeb27bdf5dcaebb3b457fecef410ebe:

security_flags: Add addition recipes to the non pie list (2013-07-10 09:40:42 +0100)

are available in the git repository at:
git://git.pokylinux.org/poky-contrib jhuang0/r_bbappend_kbd-rework_0712_2
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=jhuang0/r_bbappend_kbd-rework_0712_2

Jackie Huang (1):
kbd: Limit the kbdrate application to x86, mips and sparc

 meta/recipes-core/kbd/kbd_1.15.2.bb |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)
Signature · 1 line
1.7.4.1
#1 lore raw

PATCH v2 1/1 kbd: Limit the kbdrate application to x86, mips and sparc

From: Jackie Huang <[email protected]>

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.

---
 meta/recipes-core/kbd/kbd_1.15.2.bb |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)
meta/recipes-core/kbd/kbd_1.15.2.bb +8 -0
index 79ea468..25ca8be 100644
@@ -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
+}
Signature · 1 line
1.7.4.1
#2 lore raw
Quoted 8 lines · On Fri, 2013-07-12 at 13:42 +0800, [email protected] 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.

author
#3 lore raw
Quoted 18 lines · Phil Blundell
Quoted 8 lines · On Fri, 2013-07-12 at 13:42 +0800, [email protected] 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.

Quoted 3 lines

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

Quoted 6 lines

p.

Signature · 5 lines
Jackie Huang
WIND RIVER | China Development Center
MSN:[email protected]
Tel: +86 8477 8594
Mobile: +86 138 1027 4745