mirror of https://github.com/xemu-project/xemu.git
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 "hw/pci/pcie_host.h"
|
||||||
#include "exec/address-spaces.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 */
|
/* a helper function to get a PCIDevice for a given mmconfig address */
|
||||||
static inline PCIDevice *pcie_dev_find_by_mmcfg_addr(PCIBus *s,
|
static inline PCIDevice *pcie_dev_find_by_mmcfg_addr(PCIBus *s,
|
||||||
uint32_t mmcfg_addr)
|
uint32_t mmcfg_addr)
|
||||||
|
|
|
@ -54,4 +54,25 @@ void pcie_host_mmcfg_update(PCIExpressHost *e,
|
||||||
hwaddr addr,
|
hwaddr addr,
|
||||||
uint32_t size);
|
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 */
|
#endif /* PCIE_HOST_H */
|
||||||
|
|
Loading…
Reference in New Issue