pcie_portRegular
4.4: Absent ⚠️
4.8: ✅struct pcie_port {
struct device *dev;
u8 root_bus_nr;
void *dbi_base;
u64 cfg0_base;
void *va_cfg0_base;
u32 cfg0_size;
u64 cfg1_base;
void *va_cfg1_base;
u32 cfg1_size;
resource_size_t io_base;
phys_addr_t io_bus_addr;
u32 io_size;
u64 mem_base;
phys_addr_t mem_bus_addr;
u32 mem_size;
struct resource *cfg;
struct resource *io;
struct resource *mem;
struct resource *busn;
int irq;
u32 lanes;
struct pcie_host_ops *ops;
int msi_irq;
struct irq_domain *irq_domain;
long unsigned int msi_data;
long unsigned int msi_irq_in_use[1];
};
4.10: ✅struct pcie_port {
struct device *dev;
u8 root_bus_nr;
void *dbi_base;
u64 cfg0_base;
void *va_cfg0_base;
u32 cfg0_size;
u64 cfg1_base;
void *va_cfg1_base;
u32 cfg1_size;
resource_size_t io_base;
phys_addr_t io_bus_addr;
u32 io_size;
u64 mem_base;
phys_addr_t mem_bus_addr;
u32 mem_size;
struct resource *cfg;
struct resource *io;
struct resource *mem;
struct resource *busn;
int irq;
u32 lanes;
u32 num_viewport;
struct pcie_host_ops *ops;
int msi_irq;
struct irq_domain *irq_domain;
long unsigned int msi_data;
u8 iatu_unroll_enabled;
long unsigned int msi_irq_in_use[1];
};
4.13: ✅struct pcie_port {
u8 root_bus_nr;
u64 cfg0_base;
void *va_cfg0_base;
u32 cfg0_size;
u64 cfg1_base;
void *va_cfg1_base;
u32 cfg1_size;
resource_size_t io_base;
phys_addr_t io_bus_addr;
u32 io_size;
u64 mem_base;
phys_addr_t mem_bus_addr;
u32 mem_size;
struct resource *cfg;
struct resource *io;
struct resource *mem;
struct resource *busn;
int irq;
const struct dw_pcie_host_ops *ops;
int msi_irq;
struct irq_domain *irq_domain;
long unsigned int msi_data;
long unsigned int msi_irq_in_use[1];
};
4.15: ✅struct pcie_port {
u8 root_bus_nr;
u64 cfg0_base;
void *va_cfg0_base;
u32 cfg0_size;
u64 cfg1_base;
void *va_cfg1_base;
u32 cfg1_size;
resource_size_t io_base;
phys_addr_t io_bus_addr;
u32 io_size;
u64 mem_base;
phys_addr_t mem_bus_addr;
u32 mem_size;
struct resource *cfg;
struct resource *io;
struct resource *mem;
struct resource *busn;
int irq;
const struct dw_pcie_host_ops *ops;
int msi_irq;
struct irq_domain *irq_domain;
long unsigned int msi_data;
long unsigned int msi_irq_in_use[1];
};
4.18: ✅struct pcie_port {
u8 root_bus_nr;
u64 cfg0_base;
void *va_cfg0_base;
u32 cfg0_size;
u64 cfg1_base;
void *va_cfg1_base;
u32 cfg1_size;
resource_size_t io_base;
phys_addr_t io_bus_addr;
u32 io_size;
u64 mem_base;
phys_addr_t mem_bus_addr;
u32 mem_size;
struct resource *cfg;
struct resource *io;
struct resource *mem;
struct resource *busn;
int irq;
const struct dw_pcie_host_ops *ops;
int msi_irq;
struct irq_domain *irq_domain;
struct irq_domain *msi_domain;
dma_addr_t msi_data;
u32 num_vectors;
u32 irq_status[8];
raw_spinlock_t lock;
long unsigned int msi_irq_in_use[4];
};
5.0: ✅struct pcie_port {
u8 root_bus_nr;
u64 cfg0_base;
void *va_cfg0_base;
u32 cfg0_size;
u64 cfg1_base;
void *va_cfg1_base;
u32 cfg1_size;
resource_size_t io_base;
phys_addr_t io_bus_addr;
u32 io_size;
u64 mem_base;
phys_addr_t mem_bus_addr;
u32 mem_size;
struct resource *cfg;
struct resource *io;
struct resource *mem;
struct resource *busn;
int irq;
const struct dw_pcie_host_ops *ops;
int msi_irq;
struct irq_domain *irq_domain;
struct irq_domain *msi_domain;
dma_addr_t msi_data;
u32 num_vectors;
u32 irq_status[8];
raw_spinlock_t lock;
long unsigned int msi_irq_in_use[4];
};
5.3: ✅struct pcie_port {
u8 root_bus_nr;
u64 cfg0_base;
void *va_cfg0_base;
u32 cfg0_size;
u64 cfg1_base;
void *va_cfg1_base;
u32 cfg1_size;
resource_size_t io_base;
phys_addr_t io_bus_addr;
u32 io_size;
u64 mem_base;
phys_addr_t mem_bus_addr;
u32 mem_size;
struct resource *cfg;
struct resource *io;
struct resource *mem;
struct resource *busn;
int irq;
const struct dw_pcie_host_ops *ops;
int msi_irq;
struct irq_domain *irq_domain;
struct irq_domain *msi_domain;
dma_addr_t msi_data;
struct page *msi_page;
struct irq_chip *msi_irq_chip;
u32 num_vectors;
u32 irq_mask[8];
struct pci_bus *root_bus;
raw_spinlock_t lock;
long unsigned int msi_irq_in_use[4];
};
5.4: ✅struct pcie_port {
u8 root_bus_nr;
u64 cfg0_base;
void *va_cfg0_base;
u32 cfg0_size;
u64 cfg1_base;
void *va_cfg1_base;
u32 cfg1_size;
resource_size_t io_base;
phys_addr_t io_bus_addr;
u32 io_size;
u64 mem_base;
phys_addr_t mem_bus_addr;
u32 mem_size;
struct resource *cfg;
struct resource *io;
struct resource *mem;
struct resource *busn;
int irq;
const struct dw_pcie_host_ops *ops;
int msi_irq;
struct irq_domain *irq_domain;
struct irq_domain *msi_domain;
dma_addr_t msi_data;
struct page *msi_page;
struct irq_chip *msi_irq_chip;
u32 num_vectors;
u32 irq_mask[8];
struct pci_bus *root_bus;
raw_spinlock_t lock;
long unsigned int msi_irq_in_use[4];
};
5.8: ✅struct pcie_port {
u8 root_bus_nr;
u64 cfg0_base;
void *va_cfg0_base;
u32 cfg0_size;
u64 cfg1_base;
void *va_cfg1_base;
u32 cfg1_size;
resource_size_t io_base;
phys_addr_t io_bus_addr;
u32 io_size;
u64 mem_base;
phys_addr_t mem_bus_addr;
u32 mem_size;
struct resource *cfg;
struct resource *io;
struct resource *mem;
struct resource *busn;
int irq;
const struct dw_pcie_host_ops *ops;
int msi_irq;
struct irq_domain *irq_domain;
struct irq_domain *msi_domain;
dma_addr_t msi_data;
struct page *msi_page;
struct irq_chip *msi_irq_chip;
u32 num_vectors;
u32 irq_mask[8];
struct pci_bus *root_bus;
raw_spinlock_t lock;
long unsigned int msi_irq_in_use[4];
};
5.11: ✅struct pcie_port {
bool has_msi_ctrl;
u64 cfg0_base;
void *va_cfg0_base;
u32 cfg0_size;
resource_size_t io_base;
phys_addr_t io_bus_addr;
u32 io_size;
int irq;
const struct dw_pcie_host_ops *ops;
int msi_irq;
struct irq_domain *irq_domain;
struct irq_domain *msi_domain;
u16 msi_msg;
dma_addr_t msi_data;
struct irq_chip *msi_irq_chip;
u32 num_vectors;
u32 irq_mask[8];
struct pci_host_bridge *bridge;
raw_spinlock_t lock;
long unsigned int msi_irq_in_use[4];
};
5.13: ✅struct pcie_port {
bool has_msi_ctrl;
u64 cfg0_base;
void *va_cfg0_base;
u32 cfg0_size;
resource_size_t io_base;
phys_addr_t io_bus_addr;
u32 io_size;
int irq;
const struct dw_pcie_host_ops *ops;
int msi_irq;
struct irq_domain *irq_domain;
struct irq_domain *msi_domain;
u16 msi_msg;
dma_addr_t msi_data;
struct irq_chip *msi_irq_chip;
u32 num_vectors;
u32 irq_mask[8];
struct pci_host_bridge *bridge;
raw_spinlock_t lock;
long unsigned int msi_irq_in_use[4];
};
5.15: ✅struct pcie_port {
bool has_msi_ctrl;
u64 cfg0_base;
void *va_cfg0_base;
u32 cfg0_size;
resource_size_t io_base;
phys_addr_t io_bus_addr;
u32 io_size;
int irq;
const struct dw_pcie_host_ops *ops;
int msi_irq;
struct irq_domain *irq_domain;
struct irq_domain *msi_domain;
u16 msi_msg;
dma_addr_t msi_data;
struct irq_chip *msi_irq_chip;
u32 num_vectors;
u32 irq_mask[8];
struct pci_host_bridge *bridge;
raw_spinlock_t lock;
long unsigned int msi_irq_in_use[4];
};
5.19: ✅struct pcie_port {
bool has_msi_ctrl;
u64 cfg0_base;
void *va_cfg0_base;
u32 cfg0_size;
resource_size_t io_base;
phys_addr_t io_bus_addr;
u32 io_size;
int irq;
const struct dw_pcie_host_ops *ops;
int msi_irq;
struct irq_domain *irq_domain;
struct irq_domain *msi_domain;
u16 msi_msg;
dma_addr_t msi_data;
struct irq_chip *msi_irq_chip;
u32 num_vectors;
u32 irq_mask[8];
struct pci_host_bridge *bridge;
raw_spinlock_t lock;
long unsigned int msi_irq_in_use[4];
};
6.2: Absent ⚠️
6.5: Absent ⚠️
6.8: Absent ⚠️
arm64: ✅struct pcie_port {
u8 root_bus_nr;
u64 cfg0_base;
void *va_cfg0_base;
u32 cfg0_size;
u64 cfg1_base;
void *va_cfg1_base;
u32 cfg1_size;
resource_size_t io_base;
phys_addr_t io_bus_addr;
u32 io_size;
u64 mem_base;
phys_addr_t mem_bus_addr;
u32 mem_size;
struct resource *cfg;
struct resource *io;
struct resource *mem;
struct resource *busn;
int irq;
const struct dw_pcie_host_ops *ops;
int msi_irq;
struct irq_domain *irq_domain;
struct irq_domain *msi_domain;
dma_addr_t msi_data;
struct page *msi_page;
struct irq_chip *msi_irq_chip;
u32 num_vectors;
u32 irq_mask[8];
struct pci_bus *root_bus;
raw_spinlock_t lock;
long unsigned int msi_irq_in_use[4];
};
armhf: ✅struct pcie_port {
u8 root_bus_nr;
u64 cfg0_base;
void *va_cfg0_base;
u32 cfg0_size;
u64 cfg1_base;
void *va_cfg1_base;
u32 cfg1_size;
resource_size_t io_base;
phys_addr_t io_bus_addr;
u32 io_size;
u64 mem_base;
phys_addr_t mem_bus_addr;
u32 mem_size;
struct resource *cfg;
struct resource *io;
struct resource *mem;
struct resource *busn;
int irq;
const struct dw_pcie_host_ops *ops;
int msi_irq;
struct irq_domain *irq_domain;
struct irq_domain *msi_domain;
dma_addr_t msi_data;
struct page *msi_page;
struct irq_chip *msi_irq_chip;
u32 num_vectors;
u32 irq_mask[8];
struct pci_bus *root_bus;
raw_spinlock_t lock;
long unsigned int msi_irq_in_use[8];
};
ppc64el: Absent ⚠️
riscv64: ✅struct pcie_port {
u8 root_bus_nr;
u64 cfg0_base;
void *va_cfg0_base;
u32 cfg0_size;
u64 cfg1_base;
void *va_cfg1_base;
u32 cfg1_size;
resource_size_t io_base;
phys_addr_t io_bus_addr;
u32 io_size;
u64 mem_base;
phys_addr_t mem_bus_addr;
u32 mem_size;
struct resource *cfg;
struct resource *io;
struct resource *mem;
struct resource *busn;
int irq;
const struct dw_pcie_host_ops *ops;
int msi_irq;
struct irq_domain *irq_domain;
struct irq_domain *msi_domain;
dma_addr_t msi_data;
struct page *msi_page;
struct irq_chip *msi_irq_chip;
u32 num_vectors;
u32 irq_mask[8];
struct pci_bus *root_bus;
raw_spinlock_t lock;
long unsigned int msi_irq_in_use[4];
};
aws: ✅struct pcie_port {
u8 root_bus_nr;
u64 cfg0_base;
void *va_cfg0_base;
u32 cfg0_size;
u64 cfg1_base;
void *va_cfg1_base;
u32 cfg1_size;
resource_size_t io_base;
phys_addr_t io_bus_addr;
u32 io_size;
u64 mem_base;
phys_addr_t mem_bus_addr;
u32 mem_size;
struct resource *cfg;
struct resource *io;
struct resource *mem;
struct resource *busn;
int irq;
const struct dw_pcie_host_ops *ops;
int msi_irq;
struct irq_domain *irq_domain;
struct irq_domain *msi_domain;
dma_addr_t msi_data;
struct page *msi_page;
struct irq_chip *msi_irq_chip;
u32 num_vectors;
u32 irq_mask[8];
struct pci_bus *root_bus;
raw_spinlock_t lock;
long unsigned int msi_irq_in_use[4];
};
azure: ✅struct pcie_port {
u8 root_bus_nr;
u64 cfg0_base;
void *va_cfg0_base;
u32 cfg0_size;
u64 cfg1_base;
void *va_cfg1_base;
u32 cfg1_size;
resource_size_t io_base;
phys_addr_t io_bus_addr;
u32 io_size;
u64 mem_base;
phys_addr_t mem_bus_addr;
u32 mem_size;
struct resource *cfg;
struct resource *io;
struct resource *mem;
struct resource *busn;
int irq;
const struct dw_pcie_host_ops *ops;
int msi_irq;
struct irq_domain *irq_domain;
struct irq_domain *msi_domain;
dma_addr_t msi_data;
struct page *msi_page;
struct irq_chip *msi_irq_chip;
u32 num_vectors;
u32 irq_mask[8];
struct pci_bus *root_bus;
raw_spinlock_t lock;
long unsigned int msi_irq_in_use[4];
};
gcp: ✅struct pcie_port {
u8 root_bus_nr;
u64 cfg0_base;
void *va_cfg0_base;
u32 cfg0_size;
u64 cfg1_base;
void *va_cfg1_base;
u32 cfg1_size;
resource_size_t io_base;
phys_addr_t io_bus_addr;
u32 io_size;
u64 mem_base;
phys_addr_t mem_bus_addr;
u32 mem_size;
struct resource *cfg;
struct resource *io;
struct resource *mem;
struct resource *busn;
int irq;
const struct dw_pcie_host_ops *ops;
int msi_irq;
struct irq_domain *irq_domain;
struct irq_domain *msi_domain;
dma_addr_t msi_data;
struct page *msi_page;
struct irq_chip *msi_irq_chip;
u32 num_vectors;
u32 irq_mask[8];
struct pci_bus *root_bus;
raw_spinlock_t lock;
long unsigned int msi_irq_in_use[4];
};
lowlatency: ✅struct pcie_port {
u8 root_bus_nr;
u64 cfg0_base;
void *va_cfg0_base;
u32 cfg0_size;
u64 cfg1_base;
void *va_cfg1_base;
u32 cfg1_size;
resource_size_t io_base;
phys_addr_t io_bus_addr;
u32 io_size;
u64 mem_base;
phys_addr_t mem_bus_addr;
u32 mem_size;
struct resource *cfg;
struct resource *io;
struct resource *mem;
struct resource *busn;
int irq;
const struct dw_pcie_host_ops *ops;
int msi_irq;
struct irq_domain *irq_domain;
struct irq_domain *msi_domain;
dma_addr_t msi_data;
struct page *msi_page;
struct irq_chip *msi_irq_chip;
u32 num_vectors;
u32 irq_mask[8];
struct pci_bus *root_bus;
raw_spinlock_t lock;
long unsigned int msi_irq_in_use[4];
};
Regular
4.8 and 4.10 ⚠️u32 num_viewport
u8 iatu_unroll_enabled
4.10 and 4.13 ⚠️struct device *dev
void *dbi_base
u32 lanes
u32 num_viewport
u8 iatu_unroll_enabled
struct pcie_host_ops *ops ➡️ const struct dw_pcie_host_ops *ops
4.13 and 4.15 ✅
4.15 and 4.18 ⚠️struct irq_domain *msi_domain
u32 num_vectors
u32 irq_status[8]
raw_spinlock_t lock
long unsigned int msi_data ➡️ dma_addr_t msi_data
long unsigned int msi_irq_in_use[1] ➡️ long unsigned int msi_irq_in_use[4]
4.18 and 5.0 ✅
5.0 and 5.3 ⚠️struct page *msi_page
struct irq_chip *msi_irq_chip
u32 irq_mask[8]
struct pci_bus *root_bus
u32 irq_status[8]
5.3 and 5.4 ✅
5.4 and 5.8 ✅
5.8 and 5.11 ⚠️bool has_msi_ctrl
u16 msi_msg
struct pci_host_bridge *bridge
u8 root_bus_nr
u64 cfg1_base
void *va_cfg1_base
u32 cfg1_size
u64 mem_base
phys_addr_t mem_bus_addr
u32 mem_size
struct resource *cfg
struct resource *io
struct resource *mem
struct resource *busn
struct page *msi_page
struct pci_bus *root_bus
5.11 and 5.13 ✅
5.13 and 5.15 ✅
5.15 and 5.19 ✅
amd64 and arm64 ✅
amd64 and armhf ⚠️long unsigned int msi_irq_in_use[4] ➡️ long unsigned int msi_irq_in_use[8]
amd64 and riscv64 ✅
generic and aws ✅
generic and azure ✅
generic and gcp ✅
generic and lowlatency ✅