mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 00:03:54 -06:00
pci: implement bridge filtering
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 <mst@redhat.com>
This commit is contained in:
parent
778d179939
commit
7df32ca08a
4 changed files with 91 additions and 76 deletions
2
hw/pci.h
2
hw/pci.h
|
@ -90,7 +90,6 @@ typedef struct PCIIORegion {
|
|||
pcibus_t addr; /* current PCI mapping address. -1 means not mapped */
|
||||
#define PCI_BAR_UNMAPPED (~(pcibus_t)0)
|
||||
pcibus_t size;
|
||||
pcibus_t filtered_size;
|
||||
uint8_t type;
|
||||
MemoryRegion *memory;
|
||||
MemoryRegion *address_space;
|
||||
|
@ -273,7 +272,6 @@ int pci_read_devaddr(Monitor *mon, const char *addr, int *domp, int *busp,
|
|||
|
||||
void do_pci_info_print(Monitor *mon, const QObject *data);
|
||||
void do_pci_info(Monitor *mon, QObject **ret_data);
|
||||
void pci_bridge_update_mappings(PCIBus *b);
|
||||
|
||||
void pci_device_deassert_intx(PCIDevice *dev);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue