On 08/18/2011 10:12 PM, Wen Congyang wrote:
>>
>> The following patch can fix this problem, but I'm not sure whether it
>> is right.
>
> It's correct but insufficient, the filtering code (pci_bridge_filter)
> needs to be updated to use the memory API.
I read the function pci_bridge_filter(), and the function only read
PCI bridge's config space(command, base and limit). If base> limit,
it will set addr to PCI_BAR_UNMAPPED.
I do not find anything that needs to updated to use the memory API.
Currently it doesn't do any filtering at all. Bridges need to create a
new address space, then attach aliases of this region (corresponding to
the filtered area and to the legacy vga space) to the parent bus'
address space.
I add a scsi controller on pci bus1, and a scsi disk on this controller.
I can read and write this disk, and I do not meet any problem.
However, filtering doesn't work. You could put a BAR outside the
filtered area and it would be visible to the guest.
--
I have a truly marvellous patch that fixes the bug which this
signature is too narrow to contain.