diff options
author | Helge Deller <deller@gmx.de> | 2018-01-12 22:51:22 +0100 |
---|---|---|
committer | Helge Deller <deller@gmx.de> | 2018-03-02 10:04:46 +0100 |
commit | 0ed1fe4ad394e54783bbffa84102faf435661a2e (patch) | |
tree | 97a87552f61c8f9575e10dc9f46fbed93d0ce893 /arch/parisc/kernel/smp.c | |
parent | parisc: Hide virtual kernel memory layout (diff) | |
download | linux-0ed1fe4ad394e54783bbffa84102faf435661a2e.tar.xz linux-0ed1fe4ad394e54783bbffa84102faf435661a2e.zip |
parisc: Check if secondary CPUs want own PDC calls
The architecture specification says (for 64-bit systems): PDC is a per
processor resource, and operating system software must be prepared to
manage separate pointers to PDCE_PROC for each processor. The address
of PDCE_PROC for the monarch processor is stored in the Page Zero
location MEM_PDC. The address of PDCE_PROC for each non-monarch
processor is passed in gr26 when PDCE_RESET invokes OS_RENDEZ.
Currently we still use one PDC for all CPUs, but in case we face a
machine which is following the specification let's warn about it.
Signed-off-by: Helge Deller <deller@gmx.de>
Diffstat (limited to '')
-rw-r--r-- | arch/parisc/kernel/smp.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/parisc/kernel/smp.c b/arch/parisc/kernel/smp.c index 30c28ab14540..4065b5e48c9d 100644 --- a/arch/parisc/kernel/smp.c +++ b/arch/parisc/kernel/smp.c @@ -292,10 +292,15 @@ smp_cpu_init(int cpunum) * Slaves start using C here. Indirectly called from smp_slave_stext. * Do what start_kernel() and main() do for boot strap processor (aka monarch) */ -void __init smp_callin(void) +void __init smp_callin(unsigned long pdce_proc) { int slave_id = cpu_now_booting; +#ifdef CONFIG_64BIT + WARN_ON(((unsigned long)(PAGE0->mem_pdc_hi) << 32 + | PAGE0->mem_pdc) != pdce_proc); +#endif + smp_cpu_init(slave_id); preempt_disable(); |