On Tue, Sep 20, 2011 at 04:09:23PM +0800, Wen Congyang wrote: > 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 <m...@redhat.com> > >> --- > >> > >> 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? > > Thanks > Wen Congyang
Sounds more or less right except I expect to get ffffffff and not 0. Avi, any idea? -- MST