I/O Memory Mapping failed
Sebastian Sumpf
Sebastian.Sumpf at ...1...
Mon Jul 23 16:49:27 CEST 2012
Hi,
On 07/23/2012 04:26 PM, Markus Partheymueller wrote:
> 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.
Please try to subtract the offset from the initial '_map' call:
diff --git a/os/src/drivers/acpi/acpi.cc b/os/src/drivers/acpi/acpi.cc
index 6f4970e..a8322b2 100644
--- a/os/src/drivers/acpi/acpi.cc
+++ b/os/src/drivers/acpi/acpi.cc
@@ -206,7 +206,7 @@ class Table_wrapper
Table_wrapper(addr_t base)
: _base(base), _io_mem(0), _table(0)
{
- _map(0x1000);
+ _map(0x1000 - _offset());
/* remap if table size is larger than current size */
if (_offset() + _table->size > 0x1000) {
If this should work, we have to make sure that 0x1000 - offset is at
least 8 Bytes wide.
Sebastian
-------------- next part --------------
A non-text attachment was scrubbed...
Name: acpi.patch
Type: text/x-patch
Size: 437 bytes
Desc: not available
URL: <http://lists.genode.org/pipermail/users/attachments/20120723/dcc7d19f/attachment.bin>
More information about the users
mailing list