Lines Matching +full:cpu +full:- +full:release +full:- +full:addr

1 // SPDX-License-Identifier: GPL-2.0-only
43 static int smp_spin_table_cpu_init(unsigned int cpu) in smp_spin_table_cpu_init() argument
48 dn = of_get_cpu_node(cpu, NULL); in smp_spin_table_cpu_init()
50 return -ENODEV; in smp_spin_table_cpu_init()
53 * Determine the address from which the CPU is polling. in smp_spin_table_cpu_init()
55 ret = of_property_read_u64(dn, "cpu-release-addr", in smp_spin_table_cpu_init()
56 &cpu_release_addr[cpu]); in smp_spin_table_cpu_init()
58 pr_err("CPU %d: missing or invalid cpu-release-addr property\n", in smp_spin_table_cpu_init()
59 cpu); in smp_spin_table_cpu_init()
66 static int smp_spin_table_cpu_prepare(unsigned int cpu) in smp_spin_table_cpu_prepare() argument
70 if (!cpu_release_addr[cpu]) in smp_spin_table_cpu_prepare()
71 return -ENODEV; in smp_spin_table_cpu_prepare()
74 * The cpu-release-addr may or may not be inside the linear mapping. in smp_spin_table_cpu_prepare()
79 release_addr = ioremap_cache(cpu_release_addr[cpu], in smp_spin_table_cpu_prepare()
82 return -ENOMEM; in smp_spin_table_cpu_prepare()
85 * We write the release address as LE regardless of the native in smp_spin_table_cpu_prepare()
86 * endianness of the kernel. Therefore, any boot-loaders that in smp_spin_table_cpu_prepare()
88 * boot-loader's endianness before jumping. This is mandated by in smp_spin_table_cpu_prepare()
96 * Send an event to wake up the secondary CPU. in smp_spin_table_cpu_prepare()
105 static int smp_spin_table_cpu_boot(unsigned int cpu) in smp_spin_table_cpu_boot() argument
108 * Update the pen release flag. in smp_spin_table_cpu_boot()
110 write_pen_release(cpu_logical_map(cpu)); in smp_spin_table_cpu_boot()
121 .name = "spin-table",