pci: remove some types from typedefs.h

For types that are embedded in structs defined by pci.h, the definition
is pretty much required to be available.  Remove them from typedefs.h.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Paolo Bonzini 2024-05-02 17:17:04 +02:00
parent 15d62536a9
commit fe5943fecc
4 changed files with 26 additions and 28 deletions

View File

@ -27,6 +27,9 @@
#include "hw/pci/pcie_sriov.h" #include "hw/pci/pcie_sriov.h"
#include "hw/hotplug.h" #include "hw/hotplug.h"
typedef struct PCIEPort PCIEPort;
typedef struct PCIESlot PCIESlot;
typedef enum { typedef enum {
/* these bits must match the bits in Slot Control/Status registers. /* these bits must match the bits in Slot Control/Status registers.
* PCI_EXP_HP_EV_xxx = PCI_EXP_SLTCTL_xxxE = PCI_EXP_SLTSTA_xxx * PCI_EXP_HP_EV_xxx = PCI_EXP_SLTCTL_xxxE = PCI_EXP_SLTSTA_xxx

View File

@ -25,8 +25,23 @@
/* definitions which PCIExpressDevice uses */ /* definitions which PCIExpressDevice uses */
/* error */
typedef struct PCIEAERErr {
uint32_t status; /* error status bits */
uint16_t source_id; /* bdf */
#define PCIE_AER_ERR_IS_CORRECTABLE 0x1 /* correctable/uncorrectable */
#define PCIE_AER_ERR_MAYBE_ADVISORY 0x2 /* maybe advisory non-fatal */
#define PCIE_AER_ERR_HEADER_VALID 0x4 /* TLP header is logged */
#define PCIE_AER_ERR_TLP_PREFIX_PRESENT 0x8 /* TLP Prefix is logged */
uint16_t flags;
uint32_t header[4]; /* TLP header */
uint32_t prefix[4]; /* TLP header prefix */
} PCIEAERErr;
/* AER log */ /* AER log */
struct PCIEAERLog { typedef struct PCIEAERLog {
/* This structure is saved/loaded. /* This structure is saved/loaded.
So explicitly size them instead of unsigned int */ So explicitly size them instead of unsigned int */
@ -48,11 +63,11 @@ struct PCIEAERLog {
/* Error log. log_max-sized array */ /* Error log. log_max-sized array */
PCIEAERErr *log; PCIEAERErr *log;
}; } PCIEAERLog;
/* aer error message: error signaling message has only error severity and /* aer error message: error signaling message has only error severity and
source id. See 2.2.8.3 error signaling messages */ source id. See 2.2.8.3 error signaling messages */
struct PCIEAERMsg { typedef struct PCIEAERMsg {
/* /*
* PCI_ERR_ROOT_CMD_{COR, NONFATAL, FATAL}_EN * PCI_ERR_ROOT_CMD_{COR, NONFATAL, FATAL}_EN
* = PCI_EXP_DEVCTL_{CERE, NFERE, FERE} * = PCI_EXP_DEVCTL_{CERE, NFERE, FERE}
@ -60,7 +75,7 @@ struct PCIEAERMsg {
uint32_t severity; uint32_t severity;
uint16_t source_id; /* bdf */ uint16_t source_id; /* bdf */
}; } PCIEAERMsg;
static inline bool static inline bool
pcie_aer_msg_is_uncor(const PCIEAERMsg *msg) pcie_aer_msg_is_uncor(const PCIEAERMsg *msg)
@ -69,21 +84,6 @@ pcie_aer_msg_is_uncor(const PCIEAERMsg *msg)
msg->severity == PCI_ERR_ROOT_CMD_FATAL_EN; msg->severity == PCI_ERR_ROOT_CMD_FATAL_EN;
} }
/* error */
struct PCIEAERErr {
uint32_t status; /* error status bits */
uint16_t source_id; /* bdf */
#define PCIE_AER_ERR_IS_CORRECTABLE 0x1 /* correctable/uncorrectable */
#define PCIE_AER_ERR_MAYBE_ADVISORY 0x2 /* maybe advisory non-fatal */
#define PCIE_AER_ERR_HEADER_VALID 0x4 /* TLP header is logged */
#define PCIE_AER_ERR_TLP_PREFIX_PRESENT 0x8 /* TLP Prefix is logged */
uint16_t flags;
uint32_t header[4]; /* TLP header */
uint32_t prefix[4]; /* TLP header prefix */
};
extern const VMStateDescription vmstate_pcie_aer_log; extern const VMStateDescription vmstate_pcie_aer_log;
int pcie_aer_init(PCIDevice *dev, uint8_t cap_ver, uint16_t offset, int pcie_aer_init(PCIDevice *dev, uint8_t cap_ver, uint16_t offset,

View File

@ -15,17 +15,17 @@
#include "hw/pci/pci.h" #include "hw/pci/pci.h"
struct PCIESriovPF { typedef struct PCIESriovPF {
uint16_t num_vfs; /* Number of virtual functions created */ uint16_t num_vfs; /* Number of virtual functions created */
uint8_t vf_bar_type[PCI_NUM_REGIONS]; /* Store type for each VF bar */ uint8_t vf_bar_type[PCI_NUM_REGIONS]; /* Store type for each VF bar */
const char *vfname; /* Reference to the device type used for the VFs */ const char *vfname; /* Reference to the device type used for the VFs */
PCIDevice **vf; /* Pointer to an array of num_vfs VF devices */ PCIDevice **vf; /* Pointer to an array of num_vfs VF devices */
}; } PCIESriovPF;
struct PCIESriovVF { typedef struct PCIESriovVF {
PCIDevice *pf; /* Pointer back to owner physical function */ PCIDevice *pf; /* Pointer back to owner physical function */
uint16_t vf_number; /* Logical VF number of this function */ uint16_t vf_number; /* Logical VF number of this function */
}; } PCIESriovVF;
void pcie_sriov_pf_init(PCIDevice *dev, uint16_t offset, void pcie_sriov_pf_init(PCIDevice *dev, uint16_t offset,
const char *vfname, uint16_t vf_dev_id, const char *vfname, uint16_t vf_dev_id,

View File

@ -78,13 +78,8 @@ typedef struct ObjectClass ObjectClass;
typedef struct PCIBridge PCIBridge; typedef struct PCIBridge PCIBridge;
typedef struct PCIBus PCIBus; typedef struct PCIBus PCIBus;
typedef struct PCIDevice PCIDevice; typedef struct PCIDevice PCIDevice;
typedef struct PCIEAERErr PCIEAERErr;
typedef struct PCIEAERLog PCIEAERLog;
typedef struct PCIEAERMsg PCIEAERMsg;
typedef struct PCIEPort PCIEPort; typedef struct PCIEPort PCIEPort;
typedef struct PCIESlot PCIESlot; typedef struct PCIESlot PCIESlot;
typedef struct PCIESriovPF PCIESriovPF;
typedef struct PCIESriovVF PCIESriovVF;
typedef struct PCIExpressDevice PCIExpressDevice; typedef struct PCIExpressDevice PCIExpressDevice;
typedef struct PCIExpressHost PCIExpressHost; typedef struct PCIExpressHost PCIExpressHost;
typedef struct PCIHostDeviceAddress PCIHostDeviceAddress; typedef struct PCIHostDeviceAddress PCIHostDeviceAddress;