summaryrefslogtreecommitdiffstats
path: root/sys/dev/atkbdc
diff options
context:
space:
mode:
authordelphij <delphij@FreeBSD.org>2011-06-11 01:19:19 +0000
committerdelphij <delphij@FreeBSD.org>2011-06-11 01:19:19 +0000
commit94028a97090df3960a54d737fdf17e56e68c91fa (patch)
treebb7d31c4ad54c07cdbb48bef56bb6f530e2c8d31 /sys/dev/atkbdc
parent6ba8b7f04c93a101c89962061bbd3307c0c54379 (diff)
downloadFreeBSD-src-94028a97090df3960a54d737fdf17e56e68c91fa.zip
FreeBSD-src-94028a97090df3960a54d737fdf17e56e68c91fa.tar.gz
Add comments about the validation.
Diffstat (limited to 'sys/dev/atkbdc')
-rw-r--r--sys/dev/atkbdc/atkbd.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/sys/dev/atkbdc/atkbd.c b/sys/dev/atkbdc/atkbd.c
index b7156cf..c48118c 100644
--- a/sys/dev/atkbdc/atkbd.c
+++ b/sys/dev/atkbdc/atkbd.c
@@ -1097,6 +1097,15 @@ get_typematic(keyboard_t *kbd)
x86regs_t regs;
uint8_t *p;
+ /*
+ * Traditional entry points of int 0x15 and 0x16 are fixed
+ * and later BIOSes follow them. (U)EFI CSM specification
+ * also mandate these fixed entry points.
+ *
+ * Validate the entry points here before we proceed further.
+ * It's known that some recent laptops does not have the
+ * same entry point and hang on boot if we call it.
+ */
if (x86bios_get_intr(0x15) != 0xf000f859 ||
x86bios_get_intr(0x16) != 0xf000e82e)
return (ENODEV);
OpenPOWER on IntegriCloud