Hi,

I'm working on a 64bit machine, but only using 32bit binaries
(hypervisor and genode).

I instrumented the methods with some PDGB and found out that the first
attempt to map the table already fails:

[init -> acpi] Genode::uint8_t* Acpi_table::_map_io(Genode::addr_t,
Genode::size_t, Genode::Io_mem_session_capability&): _map_io: [e0000,
100000)
[init -> acpi] Acpi_table::Acpi_table(): RSDP 2a020
[init -> acpi] Table_wrapper::Table_wrapper(Genode::addr_t): Table
wrapper with base bf7fe0ac
I/O memory [bf7fe000,bf800000) not available
Local MMIO mapping failed!
[init -> acpi] C++ runtime: Genode::Parent::Service_denied
[init -> acpi] void* abort(): abort called

The call that fails is

_io_mem = new (env()->heap()) Io_mem_connection(_base, size + _offset());

With the offset 0x0ac of the base address and the size 0x1000, I think
it tries to map two pages of I/O memory from 0xbf7fe000 - 0xbf800000,
but the memory map doesn't allow that, because of the overlap between
available and not available memory.

On 23 July 2012 15:43, Sebastian Sumpf <[email protected]> wrote:
> Hi Markus,
>
> On 07/23/2012 12:59 PM, Christian Helmuth wrote:
>> Hello Markus,
>>
>> On Mon, Jul 23, 2012 at 12:47:37PM +0200, Markus Partheymueller wrote:
>>> the only thing verbose logging added was this line:
>>>
>>> [init -> acpi] Acpi_table::Acpi_table():RSDP 2a020
>>>
>>> Does this help?
>> Hm, not much info. I'd recommend to instrument the Acpi_table methods
>> with some PDBG()'s to find out what's going on with your machine:
>>
>>       ...
>>       uint8_t *_map_io(addr_t base, size_t size, Io_mem_session_capability 
>> &cap)
>>       {
>>               PDBG("_map_io: [%p, %p)", (void*)base, (void*)(base + size));
>>               Io_mem_connection io_mem(base, size);
>>       ...
>>
>> I'm not the original author of the ACPI driver and, therefore, does
>> not know it that well. Maybe, Sebastian could shed some light on this?
>>
>
> It seems like you are only getting the 'root descriptor pointer'
> (RSDP).  After that the driver tries to map the ACPI tables found in the
> 'root descriptor table' (RSDT). If you should be on a 64-Bit machine (I
> am guessing that since last time the driver worked for you), this is the
> wrong way to go from here. On 64Bit one has to use the XSDT table to
> retrieve the other ACPI table pointers. In that case it should be not
> too hard to extent the driver (use offset 24 instead of 16 to retrieve
> the XDST pointer from RSDP).
> If you are on a 32-Bit machine something is indeed very strange. I am
> not sure if region 11 is really not available. Usually the driver tries
> to map the table using one page (of I/O memory), which seems to work. If
> the table header suggests that the table is larger than 4K, it remaps
> the table using the corresponding size -- that fails (see Table_wrapper
> constructor). There is one thing you could try. We are only looking for
> 'DSTDT', 'SSDT', 'FACP', and 'MADT' tables. You could enclose line 930
> and 951 in acpi.cc (Table_wrapper) with a try catch block and simply
> continue if mapping fails. If you are lucky only the first table pointer
> is messed up and the others work.
>
> Please share your insights,
>
> Sebastian
>
>
>
>
> ------------------------------------------------------------------------------
> Live Security Virtual Conference
> Exclusive live event will cover all the ways today's security and
> threat landscape has changed and how IT managers can respond. Discussions
> will include endpoint security, mobile security and the latest in malware
> threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
> _______________________________________________
> Genode-main mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/genode-main

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Genode-main mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/genode-main

Reply via email to