pcie_host: expose address format
Callers pass in the address so it's helpful for them to be able to decode it. Reviewed-by: Gerd Hoffmann <kraxel@redhat.com> Tested-by: Gerd Hoffmann <kraxel@redhat.com> Reviewed-by: Igor Mammedov <imammedo@redhat.com> Tested-by: Igor Mammedov <imammedo@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
079e3e7012
commit
6f6d282330
@ -24,27 +24,6 @@
|
||||
#include "hw/pci/pcie_host.h"
|
||||
#include "exec/address-spaces.h"
|
||||
|
||||
/*
|
||||
* PCI express mmcfig address
|
||||
* bit 20 - 28: bus number
|
||||
* bit 15 - 19: device number
|
||||
* bit 12 - 14: function number
|
||||
* bit 0 - 11: offset in configuration space of a given device
|
||||
*/
|
||||
#define PCIE_MMCFG_SIZE_MAX (1ULL << 28)
|
||||
#define PCIE_MMCFG_SIZE_MIN (1ULL << 20)
|
||||
#define PCIE_MMCFG_BUS_BIT 20
|
||||
#define PCIE_MMCFG_BUS_MASK 0x1ff
|
||||
#define PCIE_MMCFG_DEVFN_BIT 12
|
||||
#define PCIE_MMCFG_DEVFN_MASK 0xff
|
||||
#define PCIE_MMCFG_CONFOFFSET_MASK 0xfff
|
||||
#define PCIE_MMCFG_BUS(addr) (((addr) >> PCIE_MMCFG_BUS_BIT) & \
|
||||
PCIE_MMCFG_BUS_MASK)
|
||||
#define PCIE_MMCFG_DEVFN(addr) (((addr) >> PCIE_MMCFG_DEVFN_BIT) & \
|
||||
PCIE_MMCFG_DEVFN_MASK)
|
||||
#define PCIE_MMCFG_CONFOFFSET(addr) ((addr) & PCIE_MMCFG_CONFOFFSET_MASK)
|
||||
|
||||
|
||||
/* a helper function to get a PCIDevice for a given mmconfig address */
|
||||
static inline PCIDevice *pcie_dev_find_by_mmcfg_addr(PCIBus *s,
|
||||
uint32_t mmcfg_addr)
|
||||
|
@ -54,4 +54,25 @@ void pcie_host_mmcfg_update(PCIExpressHost *e,
|
||||
hwaddr addr,
|
||||
uint32_t size);
|
||||
|
||||
/*
|
||||
* PCI express ECAM (Enhanced Configuration Address Mapping) format.
|
||||
* AKA mmcfg address
|
||||
* bit 20 - 28: bus number
|
||||
* bit 15 - 19: device number
|
||||
* bit 12 - 14: function number
|
||||
* bit 0 - 11: offset in configuration space of a given device
|
||||
*/
|
||||
#define PCIE_MMCFG_SIZE_MAX (1ULL << 28)
|
||||
#define PCIE_MMCFG_SIZE_MIN (1ULL << 20)
|
||||
#define PCIE_MMCFG_BUS_BIT 20
|
||||
#define PCIE_MMCFG_BUS_MASK 0x1ff
|
||||
#define PCIE_MMCFG_DEVFN_BIT 12
|
||||
#define PCIE_MMCFG_DEVFN_MASK 0xff
|
||||
#define PCIE_MMCFG_CONFOFFSET_MASK 0xfff
|
||||
#define PCIE_MMCFG_BUS(addr) (((addr) >> PCIE_MMCFG_BUS_BIT) & \
|
||||
PCIE_MMCFG_BUS_MASK)
|
||||
#define PCIE_MMCFG_DEVFN(addr) (((addr) >> PCIE_MMCFG_DEVFN_BIT) & \
|
||||
PCIE_MMCFG_DEVFN_MASK)
|
||||
#define PCIE_MMCFG_CONFOFFSET(addr) ((addr) & PCIE_MMCFG_CONFOFFSET_MASK)
|
||||
|
||||
#endif /* PCIE_HOST_H */
|
||||
|
Loading…
Reference in New Issue
Block a user