arch/arm64/include/asm/acpi.h
Source file repositories/reference/linux-study-clean/arch/arm64/include/asm/acpi.h
File Facts
- System
- Linux kernel
- Corpus path
arch/arm64/include/asm/acpi.h- Extension
.h- Size
- 5342 bytes
- Lines
- 177
- Domain
- Architecture Layer
- Bucket
- arch/arm64
- 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.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/cpuidle.hlinux/efi.hlinux/memblock.hlinux/psci.hlinux/stddef.hasm/cputype.hasm/io.hasm/ptrace.hasm/smp_plat.hasm/tlbflush.h
Detected Declarations
function Copyrightfunction disable_acpifunction enable_acpifunction mappedfunction arch_fix_phys_package_idfunction acpi_init_cpusfunction acpi_parking_protocol_validfunction acpi_set_mailbox_entryfunction arch_apei_get_mem_attributefunction arm64_acpi_numa_initfunction acpi_numa_get_nidfunction acpi_map_cpus_to_nodes
Annotated Snippet
static inline void arch_fix_phys_package_id(int num, u32 slot) { }
void __init acpi_init_cpus(void);
int apei_claim_sea(struct pt_regs *regs);
#else
static inline void acpi_init_cpus(void) { }
static inline int apei_claim_sea(struct pt_regs *regs) { return -ENOENT; }
#endif /* CONFIG_ACPI */
#ifdef CONFIG_ARM64_ACPI_PARKING_PROTOCOL
bool acpi_parking_protocol_valid(int cpu);
void __init
acpi_set_mailbox_entry(int cpu, struct acpi_madt_generic_interrupt *processor);
#else
static inline bool acpi_parking_protocol_valid(int cpu) { return false; }
static inline void
acpi_set_mailbox_entry(int cpu, struct acpi_madt_generic_interrupt *processor)
{}
#endif
static __always_inline const char *acpi_get_enable_method(int cpu)
{
if (acpi_psci_present())
return "psci";
if (acpi_parking_protocol_valid(cpu))
return "parking-protocol";
return NULL;
}
#ifdef CONFIG_ACPI_APEI
/*
* acpi_disable_cmcff is used in drivers/acpi/apei/hest.c for disabling
* IA-32 Architecture Corrected Machine Check (CMC) Firmware-First mode
* with a kernel command line parameter "acpi=nocmcoff". But we don't
* have this IA-32 specific feature on ARM64, this definition is only
* for compatibility.
*/
#define acpi_disable_cmcff 1
static inline pgprot_t arch_apei_get_mem_attribute(phys_addr_t addr)
{
return __acpi_get_mem_attribute(addr);
}
#endif /* CONFIG_ACPI_APEI */
#ifdef CONFIG_ACPI_NUMA
int arm64_acpi_numa_init(void);
int acpi_numa_get_nid(unsigned int cpu);
void acpi_map_cpus_to_nodes(void);
#else
static inline int arm64_acpi_numa_init(void) { return -ENOSYS; }
static inline int acpi_numa_get_nid(unsigned int cpu) { return NUMA_NO_NODE; }
static inline void acpi_map_cpus_to_nodes(void) { }
#endif /* CONFIG_ACPI_NUMA */
#define ACPI_TABLE_UPGRADE_MAX_PHYS MEMBLOCK_ALLOC_ACCESSIBLE
#endif /*_ASM_ACPI_H*/
Annotation
- Immediate include surface: `linux/cpuidle.h`, `linux/efi.h`, `linux/memblock.h`, `linux/psci.h`, `linux/stddef.h`, `asm/cputype.h`, `asm/io.h`, `asm/ptrace.h`.
- Detected declarations: `function Copyright`, `function disable_acpi`, `function enable_acpi`, `function mapped`, `function arch_fix_phys_package_id`, `function acpi_init_cpus`, `function acpi_parking_protocol_valid`, `function acpi_set_mailbox_entry`, `function arch_apei_get_mem_attribute`, `function arm64_acpi_numa_init`.
- Atlas domain: Architecture Layer / arch/arm64.
- Implementation status: source 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.