arch/x86/kernel/x86_init.c
Source file repositories/reference/linux-study-clean/arch/x86/kernel/x86_init.c
File Facts
- System
- Linux kernel
- Corpus path
arch/x86/kernel/x86_init.c- Extension
.c- Size
- 5315 bytes
- Lines
- 181
- Domain
- Architecture Layer
- Bucket
- arch/x86
- Inferred role
- Architecture Layer: exported/initcall integration point
- Status
- integration 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.
- Exports symbols or registers init work; inspect boot/module ordering and who consumes the exported contract.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/dmi.hlinux/init.hlinux/ioport.hlinux/export.hlinux/pci.hlinux/acpi.hlinux/sizes.hasm/acpi.hasm/bios_ebda.hasm/paravirt.hasm/pci_x86.hasm/mpspec.hasm/setup.hasm/apic.hasm/e820/api.hasm/time.hasm/irq.hasm/io_apic.hasm/hpet.hasm/memtype.hasm/tsc.hasm/iommu.hasm/mach_traps.hasm/irqdomain.hasm/realmode.h
Detected Declarations
function Copyrightfunction iommu_shutdown_noopfunction x86_op_int_noopfunction get_rtc_noopfunction x86_wallclock_initfunction default_nmi_initfunction enc_status_change_prepare_noopfunction enc_status_change_finish_noopfunction enc_tlb_flush_required_noopfunction enc_cache_flush_required_noopfunction enc_kexec_begin_noopexport x86_platform
Annotated Snippet
void x86_init_noop(void) { }
void __init x86_init_uint_noop(unsigned int unused) { }
static int __init iommu_init_noop(void) { return 0; }
static void iommu_shutdown_noop(void) { }
bool __init bool_x86_init_noop(void) { return false; }
void x86_op_int_noop(int cpu) { }
int set_rtc_noop(const struct timespec64 *now) { return -EINVAL; }
void get_rtc_noop(struct timespec64 *now) { }
static __initconst const struct of_device_id of_cmos_match[] = {
{ .compatible = "motorola,mc146818" },
{}
};
/*
* Allow devicetree configured systems to disable the RTC by setting the
* corresponding DT node's status property to disabled. Code is optimized
* out for CONFIG_OF=n builds.
*/
static __init void x86_wallclock_init(void)
{
struct device_node *node = of_find_matching_node(NULL, of_cmos_match);
if (node && !of_device_is_available(node)) {
x86_platform.get_wallclock = get_rtc_noop;
x86_platform.set_wallclock = set_rtc_noop;
}
}
/*
* The platform setup functions are preset with the default functions
* for standard PC hardware.
*/
struct x86_init_ops x86_init __initdata = {
.resources = {
.probe_roms = probe_roms,
.reserve_resources = reserve_standard_io_resources,
.memory_setup = e820__memory_setup_default,
.dmi_setup = dmi_setup,
/* Has to be under 1M so we can execute real-mode AP code. */
.realmode_limit = SZ_1M,
},
.mpparse = {
.setup_ioapic_ids = x86_init_noop,
.find_mptable = mpparse_find_mptable,
.early_parse_smp_cfg = mpparse_parse_early_smp_config,
.parse_smp_cfg = mpparse_parse_smp_config,
},
.irqs = {
.pre_vector_init = init_ISA_irqs,
.intr_init = native_init_IRQ,
.intr_mode_select = apic_intr_mode_select,
.intr_mode_init = apic_intr_mode_init,
.create_pci_msi_domain = native_create_pci_msi_domain,
},
.oem = {
.arch_setup = x86_init_noop,
.banner = default_banner,
},
.paging = {
.pagetable_init = native_pagetable_init,
},
.timers = {
.setup_percpu_clockev = setup_boot_APIC_clock,
.timer_init = hpet_time_init,
.wallclock_init = x86_wallclock_init,
},
.iommu = {
.iommu_init = iommu_init_noop,
},
.pci = {
.init = x86_default_pci_init,
.init_irq = x86_default_pci_init_irq,
.fixup_irqs = x86_default_pci_fixup_irqs,
},
.hyper = {
.init_platform = x86_init_noop,
.guest_late_init = x86_init_noop,
.x2apic_available = bool_x86_init_noop,
.msi_ext_dest_id = bool_x86_init_noop,
.init_mem_mapping = x86_init_noop,
Annotation
- Immediate include surface: `linux/dmi.h`, `linux/init.h`, `linux/ioport.h`, `linux/export.h`, `linux/pci.h`, `linux/acpi.h`, `linux/sizes.h`, `asm/acpi.h`.
- Detected declarations: `function Copyright`, `function iommu_shutdown_noop`, `function x86_op_int_noop`, `function get_rtc_noop`, `function x86_wallclock_init`, `function default_nmi_init`, `function enc_status_change_prepare_noop`, `function enc_status_change_finish_noop`, `function enc_tlb_flush_required_noop`, `function enc_cache_flush_required_noop`.
- Atlas domain: Architecture Layer / arch/x86.
- Implementation status: integration implementation candidate.
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.