kbd: Limit the kbdrate application to x86, mips and sparc
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
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
@@ -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
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/portwhich 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.
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/portwhich 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_ARCHalone.
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