A PCI(e) bus typically forwards all transactions to an upstream bridge.
PCI(e) bridges either forward a transaction to its primary
side bus or initiate a downstream operation
on the secondary bus using the pci_downstream
interface.
It should be noted that a PCI bridge using this interface will see peer-to-peer traffic from its secondary interface; this is a difference compared to real hardware where such transactions never involve the bridge. To behave like real hardware, PCI bridges should send all peer-to-peer traffic downstream.
SIM_INTERFACE(pci_upstream) { exception_type_t (*operation)(conf_object_t *obj, generic_transaction_t *mem_op, addr_space_t space); }; #define PCI_UPSTREAM_INTERFACE "pci_upstream"