RE: Pistachio: Code for parsing the ACPI tables doesn't map everyphysical pointer
"Jan Stoess" <[email protected]>
| Newsgroups | gmane.comp.micro-kernel.l4.l4ka.general |
|---|---|
| Message-ID | <[email protected]> |
Hi Frank, I am aware of that problem. We've got a pending change to improve ACPI parsing, but were not able to test it thoroughly enough yet. -Jan > -----Original Message----- > From: [email protected] [mailto:[email protected] > karlsruhe.de] On Behalf Of Frank Mehnert > Sent: Monday, April 10, 2006 5:58 PM > To: [email protected] > Subject: Pistachio: Code for parsing the ACPI tables doesn't map > everyphysical pointer > > 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 ##