arch/x86/events/intel/uncore.h
Source file repositories/reference/linux-study-clean/arch/x86/events/intel/uncore.h
File Facts
- System
- Linux kernel
- Corpus path
arch/x86/events/intel/uncore.h- Extension
.h- Size
- 20286 bytes
- Lines
- 678
- Domain
- Architecture Layer
- Bucket
- arch/x86
- Inferred role
- Architecture Layer: operation-table or driver-model contract
- Status
- pattern 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.
- Defines an operation table; this is where Linux turns generic core objects into subsystem-specific behavior.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/slab.hlinux/pci.hasm/apicdef.hasm/intel-family.hlinux/io-64-nonatomic-lo-hi.hlinux/perf_event.h../perf_event.h
Detected Declarations
struct pci_extra_devstruct intel_uncore_opsstruct intel_uncore_pmustruct intel_uncore_boxstruct uncore_event_descstruct freerunning_countersstruct intel_uncore_topologystruct uncore_discovery_domainstruct uncore_plat_initstruct intel_uncore_typestruct intel_uncore_opsstruct intel_uncore_pmustruct intel_uncore_extra_regstruct intel_uncore_boxstruct uncore_event_descstruct freerunning_countersstruct uncore_iio_topologystruct uncore_upi_topologystruct intel_uncore_topologystruct pci2phy_mapfunction uncore_pmc_fixedfunction uncore_pmc_freerunningfunction uncore_mmio_is_valid_offsetfunction uncore_mmio_box_ctlfunction uncore_pci_box_ctlfunction uncore_pci_fixed_ctlfunction uncore_pci_fixed_ctrfunction uncore_pci_event_ctlfunction uncore_pci_perf_ctrfunction uncore_msr_box_offsetfunction uncore_msr_box_ctlfunction uncore_msr_fixed_ctlfunction uncore_msr_fixed_ctrfunction uncore_freerunning_idxfunction uncore_freerunning_typefunction uncore_freerunning_counterfunction uncore_msr_event_ctlfunction uncore_msr_perf_ctrfunction uncore_fixed_ctlfunction uncore_fixed_ctrfunction uncore_event_ctlfunction uncore_perf_ctrfunction uncore_perf_ctr_bitsfunction uncore_fixed_ctr_bitsfunction uncore_freerunning_bitsfunction uncore_num_freerunningfunction uncore_num_freerunning_typesfunction check_valid_freerunning_event
Annotated Snippet
extern struct pci_driver *uncore_pci_driver;
extern struct pci_driver *uncore_pci_sub_driver;
extern raw_spinlock_t pci2phy_map_lock;
extern struct list_head pci2phy_map_head;
extern struct pci_extra_dev *uncore_extra_pci_dev;
extern struct event_constraint uncore_constraint_empty;
extern int spr_uncore_units_ignore[];
extern int gnr_uncore_units_ignore[];
extern int dmr_uncore_imh_units_ignore[];
extern int dmr_uncore_cbb_units_ignore[];
/* uncore_snb.c */
int snb_uncore_pci_init(void);
int ivb_uncore_pci_init(void);
int hsw_uncore_pci_init(void);
int bdw_uncore_pci_init(void);
int skl_uncore_pci_init(void);
void snb_uncore_cpu_init(void);
void nhm_uncore_cpu_init(void);
void skl_uncore_cpu_init(void);
void icl_uncore_cpu_init(void);
void tgl_uncore_cpu_init(void);
void adl_uncore_cpu_init(void);
void lnl_uncore_cpu_init(void);
void mtl_uncore_cpu_init(void);
void ptl_uncore_cpu_init(void);
void nvl_uncore_cpu_init(void);
void tgl_uncore_mmio_init(void);
void tgl_l_uncore_mmio_init(void);
void adl_uncore_mmio_init(void);
void lnl_uncore_mmio_init(void);
void ptl_uncore_mmio_init(void);
int snb_pci2phy_map_init(int devid);
/* uncore_snbep.c */
int snbep_uncore_pci_init(void);
void snbep_uncore_cpu_init(void);
int ivbep_uncore_pci_init(void);
void ivbep_uncore_cpu_init(void);
int hswep_uncore_pci_init(void);
void hswep_uncore_cpu_init(void);
int bdx_uncore_pci_init(void);
void bdx_uncore_cpu_init(void);
int knl_uncore_pci_init(void);
void knl_uncore_cpu_init(void);
int skx_uncore_pci_init(void);
void skx_uncore_cpu_init(void);
int snr_uncore_pci_init(void);
void snr_uncore_cpu_init(void);
void snr_uncore_mmio_init(void);
int icx_uncore_pci_init(void);
void icx_uncore_cpu_init(void);
void icx_uncore_mmio_init(void);
int spr_uncore_pci_init(void);
void spr_uncore_cpu_init(void);
void spr_uncore_mmio_init(void);
int gnr_uncore_pci_init(void);
void gnr_uncore_cpu_init(void);
void gnr_uncore_mmio_init(void);
int dmr_uncore_pci_init(void);
void dmr_uncore_mmio_init(void);
/* uncore_nhmex.c */
void nhmex_uncore_cpu_init(void);
Annotation
- Immediate include surface: `linux/slab.h`, `linux/pci.h`, `asm/apicdef.h`, `asm/intel-family.h`, `linux/io-64-nonatomic-lo-hi.h`, `linux/perf_event.h`, `../perf_event.h`.
- Detected declarations: `struct pci_extra_dev`, `struct intel_uncore_ops`, `struct intel_uncore_pmu`, `struct intel_uncore_box`, `struct uncore_event_desc`, `struct freerunning_counters`, `struct intel_uncore_topology`, `struct uncore_discovery_domain`, `struct uncore_plat_init`, `struct intel_uncore_type`.
- Atlas domain: Architecture Layer / arch/x86.
- Implementation status: pattern implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
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.