On 09/18/2011 05:27 PM, Avi Kivity wrote:
On 09/18/2011 05:16 PM, Richard Henderson wrote:
On 09/18/2011 06:45 AM, Avi Kivity wrote:
>> + /* The PCI-ISA bridge should have been configured properly
such that
>> + this works for PCI devices as well. This only supports
one bridge,
>> + but "secondary" VGA cards are generally accessed by MMIO
only anyway. */
>> + isa_register_portio_list(NULL, 0x3b0, vga_portio_list, s,
"vga");
>>
>> memory_region_init_io(vga_mem,&vga_mem_ops, s,
>
> This is called even for pci machines which have no ISA bus (and even
> if they did, the code should work wit the pci bus, not ISA). The code
> should return the portio list of the caller to register, or perhaps
> accept a callback to do the registration.
You're over-thinking this. It's all legacy ISA crap full stop.
If the machine doesn't have a PCI-ISA bridge, then the machine will
also be prepared to access the VGA registers via its BARs.
In such a case we just should skip this entire section. Probably
isa_register_portio_list should simply notice no ISA bus has been
registered and do nothing.
Depends, if it doesn't need those ports, then vga_init_io() can be
passed a parameter not to register them, or perhaps it can be split
into two.
It's also wrong for cirrus. Even though it is a legacy address, it's
not an ISA address, it's on the PCI bus (though not mapped by a BAR).
--
error compiling committee.c: too many arguments to function