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 ##
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.