Commit Graph

21 Commits

Author SHA1 Message Date
jmcneill 81be3b13bd Arm: Add support for SMC Calling Convention
Arm DEN0028 defines a calling mechanism used with Secure Monitor Call (SMC)
and Hypervisor Call (HVC) instructions. To discover SMCCC, we must:

 1) Find the PSCI conduit (either via ACPI FADT, or Device Tree)
 2) Use PSCI_VERSION to determine whether PSCI_FEATURES is supported
 3) Call PSCI_FEATURES with SMCCC_VERSION to determine the implementation
    version.
2021-08-06 19:38:53 +00:00
thorpej 6e54367a22 Rename of_match_compat_data() to of_compatible_match(). Similarly,
rename of_search_compatible() to of_compatible_lookup().

Standardize on of_compatible_match() for driver matching, and adapt
all call sites.
2021-01-27 03:10:18 +00:00
skrll a063a49adc KNF 2018-10-17 05:30:24 +00:00
ryo 66d31a2d9b cleanup aarch64 mpstart and fdt bootstrap
* arm_cpu_hatch_arg is a bad idea. avoid serializing CPU startup, and eliminate arm_cpu_hatch_arg.
   in mpstart, resolve own cpu index using array of cpu_mpidr[] (aarch64)
 * add support fdt enable-method "spin-table"
 * add support fdt enable-method "brcm,bcm2836-smp" (for 32bit RaspberryPi)
 * use arm_fdt_cpu_bootstrap() instead of psci_fdt_bootstrap()
 * rename "arm/fdt/psci_fdt.h" to "arm/fdt/psci_fdtvar.h" because of conflict of include file for needs-flag
 * add devmap for cpu spin-table of raspberrypi3/aarch64
 * no need to force hatch APs for raspberrypi3/arm32 ifndef MULTIPROCESSOR.
 * fix to work pmap_extract(kerneltext/data/bss) even if before calling pmap_bootstrap

idea to use cpu_mpidr[] by jmcneill@. reviewd by skrll@. thanks.
2018-09-10 11:05:12 +00:00
jmcneill 7d8191aff7 Boot APs with status "disabled" if they have an enable-method property 2018-09-09 21:16:05 +00:00
jmcneill 6c7b9edf45 Fix previous; PSCI_CPU_ON requires an MPIDR! 2018-09-09 13:32:26 +00:00
ryo ff55a830ba add support multiple cpu clusters.
* pass cpu index as an argument to secondary processors when hatching.
* keep cpu cache confituration per cpu clusters.

Hello big.LITTLE!
2018-08-26 18:15:49 +00:00
ryo decc510df4 /cpus node may have any nodes except cpu. count only nodes of device_type "cpu" 2018-08-24 21:56:13 +00:00
skrll e5beaef7c8 Need to use fdtbus_get_reg64 for mpidr 2018-08-13 12:28:02 +00:00
skrll 1bfb364cf8 Provide and use cpu_mpidr_aff_read in psci_fdt_bootstrap 2018-08-12 17:21:35 +00:00
jmcneill b3ad13f2c2 Pass full mpidr (instead of just aff0) to psci_cpu_on 2018-08-10 22:34:36 +00:00
christos 2c613b2483 Add missing pointer <-> integer casts
Use PRI?64 to print uint64_t instead 'll?'
2018-07-16 23:11:47 +00:00
jmcneill 02ce4d79ea Fix non-MULTIPROCESSOR build 2018-07-14 15:06:05 +00:00
jmcneill b71f979517 Fix arm32 build 2018-07-09 09:13:20 +00:00
jmcneill 919ae47a4e Add aarch64 support. 2018-07-09 09:10:28 +00:00
jmcneill b6b3ceffae Switch to PSCI 0.1 mode only if the first compatible string listed on /psci is "arm,psci" 2018-07-07 15:11:07 +00:00
jakllsch c68d846faf Fix PSCI 0.1 detection. 2018-06-15 16:03:59 +00:00
jmcneill f0c65f7a3b Export a psci_fdt_reset function, usable from FDT platform code. 2018-05-26 22:49:03 +00:00
jmcneill b0802b6aac Use PSCI for reset and poweroff when available. 2017-09-11 09:21:56 +00:00
jmcneill aec8c8c947 Wrap MP-specific code in ifdef MULTIPROCESSOR 2017-08-05 11:58:19 +00:00
jmcneill 16ab290372 Add support for ARM Power State Coordination Interface (PSCI). 2017-06-28 23:48:22 +00:00