At 09/14/2011 09:48 AM, Wen Congyang Write:
> At 09/05/2011 02:13 AM, Michael S. Tsirkin Write:
>> Support bridge filtering on top of the memory
>> API as suggested by Avi Kivity:
>>
>> Create a memory region for the bridge's address space. This region is
>> not directly added to system_memory or its descendants. Devices under
>> the bridge see this region as its pci_address_space(). The region is
>> as large as the entire address space - it does not take into account
>> any windows.
>>
>> For each of the three windows (pref, non-pref, vga), create an alias
>> with the appropriate start and size. Map the alias into the bridge's
>> parent's pci_address_space(), as subregions.
>>
>> Signed-off-by: Michael S. Tsirkin<address@hidden>
>> ---
>>
>> The below seems to work fine for me so I applied this.
>> Still need to test bridge filtering, any help with this
>> appreciated.
>>
>
>
> I test bridge filtering, and the BAR still can be visible on guest even if
> I change the memory region.
Hi Michael S. Tsirkin:
I test pci bridge filtering on real hardware, and I find that I can mmap
the resource after I change the memory base and memory limit(The BAR should
be not visible on OS after changing the memory region).
So I try to write and read to the BAR. Here is my test result:
1. Before changing the pci bridge's memory region, I can read and write to the
memory, and
I can get the same value that I write.
2. After changing the pci bridge's memory region, I can still read and write to
the memory,
but it is very slow, and I can not get the same value that I write(The
value is always 0).
Does this result means that pci bridge filtering works fine?