On Friday 17 February 2006 00:54, Edgar Hucek wrote: > The machine is an Apple Intel iMac 17" Dual Core booted with > elilo.
Nice work. I think I could help debug this much better with my own Intel iMac :-) Your wiki (http://xbox-linux.org/mactel/index.php/Main_Page) mentions changes to elilo. Can you detail those? The elilo maintainer works across the aisle and would like to make this work out of the box. Or maybe you just had to remove the ExitBootServices call, so the kernel can keep using the firmware console or something? If you have a way to capture the EFI memmap, could you post that on your wiki page as well? I guess you could collect basically the same information by turning on EFI_DEBUG in arch/i386/kernel/efi.c. The memmap I've seen (from another iMac) has a few strange things: > Type Start End # Pages Attributes > reserved 000000000009F000-000000000009FFFF 0000000000000001 > 000000000000000F > available 0000000000100000-000000007BD1DFFF 000000000007BC1E > 000000000000000F No MemMapIO region for VGA frame buffer. Intel ia64 boxes have the same bug. > MemMapIO 00000000E00F8000-00000000E00F8FFF 0000000000000001 > 8000000000000000 > MemMapIO 00000000FED1C000-00000000FED1FFFF 0000000000000004 > 8000000000000000 > MemMapIO 00000000FFFB0000-00000000FFFDFFFF 0000000000000030 > 8000000000000000 Marked "runtime", but no access types supported. I'd expect at least UC to be set. And the PCI windows aren't mentioned. I'd expect 0x80000000-0x88000000 and some other regions to be MemMapIO. I guess you can learn this from the ACPI root bridge descriptions, so maybe it's not strictly required. But as for your specific issue, I'd expect your memmap to show that the ACPI tables are in memory that supports WB, so acpi_os_map_memory() will just use phys_to_virt() instead of ioremap(), which is what your dmesg showed: >ACPI: XSDT (v001 APPLE Apple00 0x00000039 0x01000013) @ 0x1fefd120 >... > iounmap: bad address dfefd000 > [<c0253684>] acpi_tb_get_table_header+0x67/0x92 > [<c02536c2>] acpi_tb_get_table+0x13/0x55 > [<c02538b2>] acpi_tb_get_table_rsdt+0x1f/0x99 > [<c0253971>] acpi_load_tables+0x45/0xa9 > [<c0443d56>] acpi_early_init+0x46/0xf6 (0xdfefd000 = 0x1fefd000 + 0xc0000000) In that case, the iounmap() will certainly fail, as Shaohua points out. His test patch forces acpi_os_map_memory() to always use ioremap(), but that didn't help your situation. My guess is you hit the "if(!PageReserved(page))" case in __ioremap(), and we're missing a SetPageReserved() somewhere in the EFI memory initialization, but I'm not enough of an x86/VM expert propose anything. Sorry for rambling on so long without contributing anything... Maybe Matt will have some ideas. - To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
