I like the fact that this makes x86_64 and x86_32 handle the legacy VGA
framebuffer the same way.
What about arch/x86/kernel/probe_roms_32.c? That deals with expansion
ROMs in the 0xc0000-0xfffff range, including the VGA ROM. We only build
it for x86_32; is that correct, or should it be unified, too?
Let me see if I understand this. On Andy's machine, the e820 map
doesn't mention the 0xa0000-0xf0000 range at all:
BIOS-e820: 0000000000000000 - 000000000009ec00 (usable)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
e820_reserve_resources() inserts resources for some e820 entries (those
that start before 0x100000 or are not E820_RESERVED). Andy's machine
didn't supply any e820 entries that cover 0xa0000-0xf0000, so we didn't
insert any resources there, and PCI assumed that range was available.
This patch adds the [0xa0000-0x100000] range as E820_RESERVED. Since
that starts below 0x100000, e820_reserve_resources() will insert a
corresponding resource marked as BUSY.
Then the second patch prevents PCI from using that BUSY region to
allocate resources to devices.
Is my understanding correct?
I don't feel like I know enough about x86 architecture to ack this
patch, but I don't object to it.
Bjorn
--