RE: Pistachio: Code for parsing the ACPI tables doesn't map everyphysical pointer
Volkmar Uhlig <[email protected]>
| Newsgroups | gmane.comp.micro-kernel.l4.l4ka.general |
|---|---|
| Message-ID | <[email protected]> |
Frank, There is a (not-yet-checked-in) patch that solves the problem by remapping the ACPI tables. Maybe Jan could add that to the tree... - Volkmar > -----Original Message----- > From: Frank Mehnert > Sent: Monday, April 10, 2006 11:58 AM > > 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 ## >