arch/x86/include/asm/x86_init.h
Source file repositories/reference/linux-study-clean/arch/x86/include/asm/x86_init.h
File Facts
- System
- Linux kernel
- Corpus path
arch/x86/include/asm/x86_init.h- Extension
.h- Size
- 12606 bytes
- Lines
- 359
- Domain
- Architecture Layer
- Bucket
- arch/x86
- 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
- No C-style include directives detected by the generator.
Detected Declarations
struct ghcbstruct mpc_busstruct mpc_cpustruct pt_regsstruct mpc_tablestruct cpuinfo_x86struct irq_domainstruct x86_init_mpparsestruct x86_init_resourcesstruct x86_init_irqsstruct x86_init_oemstruct x86_init_pagingstruct x86_init_timersstruct x86_init_iommustruct x86_init_pcistruct x86_hyper_initstruct x86_init_acpistruct x86_gueststruct x86_init_opsstruct x86_cpuinit_opsstruct timespec64struct x86_legacy_devicesstruct x86_legacy_featuresstruct x86_hyper_runtimestruct x86_platform_opsstruct x86_apic_opsenum x86_legacy_i8042_state
Annotated Snippet
struct x86_init_mpparse {
void (*setup_ioapic_ids)(void);
void (*find_mptable)(void);
void (*early_parse_smp_cfg)(void);
void (*parse_smp_cfg)(void);
};
/**
* struct x86_init_resources - platform specific resource related ops
* @probe_roms: probe BIOS roms
* @reserve_resources: reserve the standard resources for the
* platform
* @memory_setup: platform specific memory setup
* @dmi_setup: platform specific DMI setup
* @realmode_limit: platform specific address limit for the real mode trampoline
* (default 1M)
*/
struct x86_init_resources {
void (*probe_roms)(void);
void (*reserve_resources)(void);
char *(*memory_setup)(void);
void (*dmi_setup)(void);
unsigned long realmode_limit;
};
/**
* struct x86_init_irqs - platform specific interrupt setup
* @pre_vector_init: init code to run before interrupt vectors
* are set up.
* @intr_init: interrupt init code
* @intr_mode_select: interrupt delivery mode selection
* @intr_mode_init: interrupt delivery mode setup
* @create_pci_msi_domain: Create the PCI/MSI interrupt domain
*/
struct x86_init_irqs {
void (*pre_vector_init)(void);
void (*intr_init)(void);
void (*intr_mode_select)(void);
void (*intr_mode_init)(void);
struct irq_domain *(*create_pci_msi_domain)(void);
};
/**
* struct x86_init_oem - oem platform specific customizing functions
* @arch_setup: platform specific architecture setup
* @banner: print a platform specific banner
*/
struct x86_init_oem {
void (*arch_setup)(void);
void (*banner)(void);
};
/**
* struct x86_init_paging - platform specific paging functions
* @pagetable_init: platform specific paging initialization call to setup
* the kernel pagetables and prepare accessors functions.
* Callback must call paging_init(). Called once after the
* direct mapping for phys memory is available.
*/
struct x86_init_paging {
void (*pagetable_init)(void);
};
/**
* struct x86_init_timers - platform specific timer setup
* @setup_percpu_clockev: set up the per cpu clock event device for the
* boot cpu
* @timer_init: initialize the platform timer (default PIT/HPET)
* @wallclock_init: init the wallclock device
*/
struct x86_init_timers {
void (*setup_percpu_clockev)(void);
void (*timer_init)(void);
void (*wallclock_init)(void);
};
/**
* struct x86_init_iommu - platform specific iommu setup
* @iommu_init: platform specific iommu setup
*/
struct x86_init_iommu {
int (*iommu_init)(void);
};
/**
* struct x86_init_pci - platform specific pci init functions
* @arch_init: platform specific pci arch init call
* @init: platform specific pci subsystem init
* @init_irq: platform specific pci irq init
* @fixup_irqs: platform specific pci irq fixup
Annotation
- Detected declarations: `struct ghcb`, `struct mpc_bus`, `struct mpc_cpu`, `struct pt_regs`, `struct mpc_table`, `struct cpuinfo_x86`, `struct irq_domain`, `struct x86_init_mpparse`, `struct x86_init_resources`, `struct x86_init_irqs`.
- Atlas domain: Architecture Layer / arch/x86.
- 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.