arch/arm/kernel/psci_smp.c
Source file repositories/reference/linux-study-clean/arch/arm/kernel/psci_smp.c
File Facts
- System
- Linux kernel
- Corpus path
arch/arm/kernel/psci_smp.c- Extension
.c- Size
- 3102 bytes
- Lines
- 131
- Domain
- Architecture Layer
- Bucket
- arch/arm
- 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/init.hlinux/smp.hlinux/of.hlinux/delay.hlinux/psci.huapi/linux/psci.hasm/psci.hasm/smp_plat.h
Detected Declarations
function psci_boot_secondaryfunction psci_cpu_disablefunction psci_cpu_diefunction psci_cpu_killfunction psci_smp_available
Annotated Snippet
if (err == PSCI_0_2_AFFINITY_LEVEL_OFF) {
pr_info("CPU%d killed.\n", cpu);
return 1;
}
msleep(10);
pr_info("Retrying again to check for CPU kill\n");
}
pr_warn("CPU%d may not have shut down cleanly (AFFINITY_INFO reports %d)\n",
cpu, err);
/* Make platform_cpu_kill() fail. */
return 0;
}
#endif
bool __init psci_smp_available(void)
{
/* is cpu_on available at least? */
return (psci_ops.cpu_on != NULL);
}
const struct smp_operations psci_smp_ops __initconst = {
.smp_boot_secondary = psci_boot_secondary,
#ifdef CONFIG_HOTPLUG_CPU
.cpu_disable = psci_cpu_disable,
.cpu_die = psci_cpu_die,
.cpu_kill = psci_cpu_kill,
#endif
};
Annotation
- Immediate include surface: `linux/init.h`, `linux/smp.h`, `linux/of.h`, `linux/delay.h`, `linux/psci.h`, `uapi/linux/psci.h`, `asm/psci.h`, `asm/smp_plat.h`.
- Detected declarations: `function psci_boot_secondary`, `function psci_cpu_disable`, `function psci_cpu_die`, `function psci_cpu_kill`, `function psci_smp_available`.
- Atlas domain: Architecture Layer / arch/arm.
- 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.