aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm64/kernel/setup.c
diff options
context:
space:
mode:
authorHanjun Guo <hanjun.guo@linaro.org>2015-03-24 10:02:45 -0400
committerWill Deacon <will.deacon@arm.com>2015-03-25 07:52:42 -0400
commitfccb9a81fd08b61bed91ddef88341694f8ecbfd1 (patch)
tree23bc0d3408923674d343960a8a80153a34da08eb /arch/arm64/kernel/setup.c
parent4c1c8d7a7ebc8b909493a14b21b233e5377b69aa (diff)
ARM64 / ACPI: Parse MADT for SMP initialization
MADT contains the information for MPIDR which is essential for SMP initialization, parse the GIC cpu interface structures to get the MPIDR value and map it to cpu_logical_map(), and add enabled cpu with valid MPIDR into cpu_possible_map. ACPI 5.1 only has two explicit methods to boot up SMP, PSCI and Parking protocol, but the Parking protocol is only specified for ARMv7 now, so make PSCI as the only way for the SMP boot protocol before some updates for the ACPI spec or the Parking protocol spec. Parking protocol patches for SMP boot will be sent to upstream when the new version of Parking protocol is ready. CC: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> CC: Catalin Marinas <catalin.marinas@arm.com> CC: Will Deacon <will.deacon@arm.com> CC: Mark Rutland <mark.rutland@arm.com> Tested-by: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com> Tested-by: Yijing Wang <wangyijing@huawei.com> Tested-by: Mark Langsdorf <mlangsdo@redhat.com> Tested-by: Jon Masters <jcm@redhat.com> Tested-by: Timur Tabi <timur@codeaurora.org> Tested-by: Robert Richter <rrichter@cavium.com> Acked-by: Robert Richter <rrichter@cavium.com> Acked-by: Olof Johansson <olof@lixom.net> Reviewed-by: Grant Likely <grant.likely@linaro.org> Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org> Signed-off-by: Tomasz Nowicki <tomasz.nowicki@linaro.org> Signed-off-by: Will Deacon <will.deacon@arm.com>
Diffstat (limited to 'arch/arm64/kernel/setup.c')
-rw-r--r--arch/arm64/kernel/setup.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c
index 97fa7f31981d..b2783111fd52 100644
--- a/arch/arm64/kernel/setup.c
+++ b/arch/arm64/kernel/setup.c
@@ -393,13 +393,16 @@ void __init setup_arch(char **cmdline_p)
393 if (acpi_disabled) { 393 if (acpi_disabled) {
394 unflatten_device_tree(); 394 unflatten_device_tree();
395 psci_dt_init(); 395 psci_dt_init();
396 cpu_read_bootcpu_ops();
397#ifdef CONFIG_SMP
398 of_smp_init_cpus();
399#endif
396 } else { 400 } else {
397 psci_acpi_init(); 401 psci_acpi_init();
402 acpi_init_cpus();
398 } 403 }
399 404
400 cpu_read_bootcpu_ops();
401#ifdef CONFIG_SMP 405#ifdef CONFIG_SMP
402 smp_init_cpus();
403 smp_build_mpidr_hash(); 406 smp_build_mpidr_hash();
404#endif 407#endif
405 408