Pistachio: Code for parsing the ACPI tables doesn't map every physical pointer
Frank Mehnert <[email protected]>
| Newsgroups | gmane.comp.micro-kernel.l4.l4ka.general |
|---|---|
| Organization | InnoTek Systemberatung GmbH |
| Message-ID | <[email protected]> |
Hi, when searching the ACPI tables for, pointers to physical pointers are not mapped in every case. Look at acpi__std_t::find(): This code assumes that ptrs[] contains pointers to physical pages which are already mapped. This is not necessary guaranteed. My test box fails to boot when APIC support is enabled: kmem_init (f0132000, f0152000) [128K] remap area f0000000->00000000 len=400000, w=1, k=1, size=1 remap area 00000000->00000000 len=400000, w=1, k=1, size=1 remap area 00000000->00000000 len=400000, w=1, k=1, size=1 activate_gdt remap area fe000000->0e000000 len=1000000, w=1, k=1, size=1 RSDP is at 000feb00 RSDT is at 000fd211 XSDT is at 000fd265 headers.len = 0x5C => 7 ptrs ptrs[0] = 000fd35d ptrs[1] = fffcaf60 ptrs[2] = 000fd451 ptrs[3] = 000fd4c3 ptrs[4] = 000fd4eb ptrs[5] = 000fd552 ptrs[6] = 000fd590 ptrs[7] = 00000000 The value of ptrs[2] points to a physical memory page which is still not mapped. This examples shows furthermore that it is dangerous to map the ACPI tables one-by-one (conflicts with kernel region). Frank -- ## InnoTek Systemberatung GmbH, http://www.innotek.de ##
signature.asc
(application/pgp-signature, 189 B)
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.3 (GNU/Linux) iD8DBQBEOoB16z8pigLf3EcRAtAqAJ0VxlYebGi4+yYl8j2GafTXNOSEFQCgkzbW NkS4kGoCcUiroLl8jelkBik= =i7U4 -----END PGP SIGNATURE-----