On 9/12/06, Richard Smith smithbone@gmail.com wrote:
What does Qemu do when the BIOS attempts to write to that area? Normally this range of memory is write protected.
Good question--I was scratching my head over this chunk of code in qemu yesterday:
/* map the last 128KB of the BIOS in ISA space */ isa_bios_size = bios_size; if (isa_bios_size > (128 * 1024)) isa_bios_size = 128 * 1024; cpu_register_physical_memory(0xd0000, (192 * 1024) - isa_bios_size, IO_MEM_UNASSIGNED); cpu_register_physical_memory(0x100000 - isa_bios_size, isa_bios_size, (bios_offset + bios_size - isa_bios_size) | IO_MEM_ROM);
Turns out that commenting out this code not only doesn't cause any harm, it lets LinuxBIOS write the IRQ table.
The next problem I ran into was LinuxBIOS complaining about the size and checksum of the table not matching. I solved this by adding "option IRQ_SLOT_COUNT=6" to my Config.lb.
Now Linux happily finds IRQs and can talk to the Ethernet and USB devices just fine.
Thanks for your help!
--Ed