arch/s390/include/asm/pci.h
Source file repositories/reference/linux-study-clean/arch/s390/include/asm/pci.h
File Facts
- System
- Linux kernel
- Corpus path
arch/s390/include/asm/pci.h- Extension
.h- Size
- 9579 bytes
- Lines
- 355
- Domain
- Architecture Layer
- Bucket
- arch/s390
- Inferred role
- Architecture Layer: implementation source
- Status
- source implementation candidate
Why This File Exists
CPU and platform-specific kernel glue: boot entry, traps, syscall entry, interrupts, page tables, context switch, and low-level barriers.
- CPU and platform-specific kernel glue: boot entry, traps, syscall entry, interrupts, page tables, context switch, and low-level barriers.
- Touches IRQ or DMA behavior; this matters for the representative real-device path.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/pci.hlinux/mutex.hlinux/iommu.hlinux/irqdomain.hlinux/pci_hotplug.hasm/pci_clp.hasm/pci_debug.hasm/pci_insn.hasm/sclp.h
Detected Declarations
struct zpci_fmb_fmt0struct zpci_fmb_fmt1struct zpci_fmb_fmt2struct zpci_fmb_fmt3struct zpci_fmbstruct zpci_bar_structstruct kvm_zdevstruct zpci_busstruct zpci_devenum zpci_statefunction zdev_enabledfunction zpci_fw_sysfs_initfunction zpci_use_miofunction zpci_event_errorfunction zpci_init_slotfunction zpci_exit_slotfunction __pcibus_to_nodefunction cpumask_of_pcibus
Annotated Snippet
struct zpci_fmb_fmt0 {
u64 dma_rbytes;
u64 dma_wbytes;
};
struct zpci_fmb_fmt1 {
u64 rx_bytes;
u64 rx_packets;
u64 tx_bytes;
u64 tx_packets;
};
struct zpci_fmb_fmt2 {
u64 consumed_work_units;
u64 max_work_units;
};
struct zpci_fmb_fmt3 {
u64 tx_bytes;
};
struct zpci_fmb {
u32 format : 8;
u32 fmt_ind : 24;
u32 samples;
u64 last_update;
/* common counters */
u64 ld_ops;
u64 st_ops;
u64 stb_ops;
u64 rpcit_ops;
/* format specific counters */
union {
struct zpci_fmb_fmt0 fmt0;
struct zpci_fmb_fmt1 fmt1;
struct zpci_fmb_fmt2 fmt2;
struct zpci_fmb_fmt3 fmt3;
};
} __packed __aligned(128);
enum zpci_state {
ZPCI_FN_STATE_STANDBY = 0,
ZPCI_FN_STATE_CONFIGURED = 1,
ZPCI_FN_STATE_RESERVED = 2,
};
struct zpci_bar_struct {
struct resource *res; /* bus resource */
void __iomem *mio_wb;
void __iomem *mio_wt;
u32 val; /* bar start & 3 flag bits */
u16 map_idx; /* index into bar mapping array */
u8 size; /* order 2 exponent */
};
struct kvm_zdev;
#define ZPCI_FUNCTIONS_PER_BUS 256
struct zpci_bus {
struct kref kref;
struct pci_bus *bus;
struct zpci_dev *function[ZPCI_FUNCTIONS_PER_BUS];
struct list_head resources;
struct list_head bus_next;
struct resource bus_resource;
struct irq_domain *msi_parent_domain;
int topo; /* TID if topo_is_tid, PCHID otherwise */
int domain_nr;
u8 multifunction : 1;
u8 topo_is_tid : 1;
enum pci_bus_speed max_bus_speed;
};
/* Private data per function */
struct zpci_dev {
struct zpci_bus *zbus;
struct list_head entry; /* list of all zpci_devices, needed for hotplug, etc. */
struct list_head iommu_list;
struct kref kref;
struct rcu_head rcu;
struct hotplug_slot hotplug_slot;
struct mutex state_lock; /* protect state changes */
enum zpci_state state;
u32 fid; /* function ID, used by sclp */
u32 fh; /* function handle, used by insn's */
u32 gisa; /* GISA designation for passthrough */
u16 vfn; /* virtual function number */
u16 pchid; /* physical channel ID */
u16 maxstbl; /* Maximum store block size */
Annotation
- Immediate include surface: `linux/pci.h`, `linux/mutex.h`, `linux/iommu.h`, `linux/irqdomain.h`, `linux/pci_hotplug.h`, `asm/pci_clp.h`, `asm/pci_debug.h`, `asm/pci_insn.h`.
- Detected declarations: `struct zpci_fmb_fmt0`, `struct zpci_fmb_fmt1`, `struct zpci_fmb_fmt2`, `struct zpci_fmb_fmt3`, `struct zpci_fmb`, `struct zpci_bar_struct`, `struct kvm_zdev`, `struct zpci_bus`, `struct zpci_dev`, `enum zpci_state`.
- Atlas domain: Architecture Layer / arch/s390.
- Implementation status: source implementation candidate.
- IRQ or DMA behavior appears here, which is relevant to the selected PCIe/NVMe device path.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.