[LinuxBIOS] PCI IRQ routing issues with qemu

Ed Swierk eswierk at arastra.com
Wed Sep 13 01:55:55 CEST 2006


On 9/12/06, Richard Smith <smithbone at 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




More information about the coreboot mailing list