powerpc: Make cpu_to_chip_id() available when SMP=n
Up until now we have only used cpu_to_chip_id() in the topology code,
which is only used on SMP builds. However my recent commit a4da0d5
"Implement arch_get_random_long/int() for powernv" added a usage when
SMP=n, breaking the build.
Move cpu_to_chip_id() into prom.c so it is available for SMP=n builds.
We would move the extern to prom.h, but that breaks the include in
topology.h. Instead we leave it in smp.h, but move it out of the
CONFIG_SMP #ifdef. We also need to include asm/smp.h in rng.c, because
the linux version skips asm/smp.h on UP. What a mess.
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
parent
c610260928
commit
3eb906c6b6
|
@ -33,6 +33,7 @@ extern int boot_cpuid;
|
||||||
extern int spinning_secondaries;
|
extern int spinning_secondaries;
|
||||||
|
|
||||||
extern void cpu_die(void);
|
extern void cpu_die(void);
|
||||||
|
extern int cpu_to_chip_id(int cpu);
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
|
|
||||||
|
@ -112,7 +113,6 @@ static inline struct cpumask *cpu_core_mask(int cpu)
|
||||||
}
|
}
|
||||||
|
|
||||||
extern int cpu_to_core_id(int cpu);
|
extern int cpu_to_core_id(int cpu);
|
||||||
extern int cpu_to_chip_id(int cpu);
|
|
||||||
|
|
||||||
/* Since OpenPIC has only 4 IPIs, we use slightly different message numbers.
|
/* Since OpenPIC has only 4 IPIs, we use slightly different message numbers.
|
||||||
*
|
*
|
||||||
|
|
|
@ -777,6 +777,26 @@ int of_get_ibm_chip_id(struct device_node *np)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* cpu_to_chip_id - Return the cpus chip-id
|
||||||
|
* @cpu: The logical cpu number.
|
||||||
|
*
|
||||||
|
* Return the value of the ibm,chip-id property corresponding to the given
|
||||||
|
* logical cpu number. If the chip-id can not be found, returns -1.
|
||||||
|
*/
|
||||||
|
int cpu_to_chip_id(int cpu)
|
||||||
|
{
|
||||||
|
struct device_node *np;
|
||||||
|
|
||||||
|
np = of_get_cpu_node(cpu, NULL);
|
||||||
|
if (!np)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
of_node_put(np);
|
||||||
|
return of_get_ibm_chip_id(np);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(cpu_to_chip_id);
|
||||||
|
|
||||||
#ifdef CONFIG_PPC_PSERIES
|
#ifdef CONFIG_PPC_PSERIES
|
||||||
/*
|
/*
|
||||||
* Fix up the uninitialized fields in a new device node:
|
* Fix up the uninitialized fields in a new device node:
|
||||||
|
|
|
@ -597,22 +597,6 @@ out:
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return the value of the chip-id property corresponding
|
|
||||||
* to the given logical cpu.
|
|
||||||
*/
|
|
||||||
int cpu_to_chip_id(int cpu)
|
|
||||||
{
|
|
||||||
struct device_node *np;
|
|
||||||
|
|
||||||
np = of_get_cpu_node(cpu, NULL);
|
|
||||||
if (!np)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
of_node_put(np);
|
|
||||||
return of_get_ibm_chip_id(np);
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(cpu_to_chip_id);
|
|
||||||
|
|
||||||
/* Helper routines for cpu to core mapping */
|
/* Helper routines for cpu to core mapping */
|
||||||
int cpu_core_index_of_thread(int cpu)
|
int cpu_core_index_of_thread(int cpu)
|
||||||
{
|
{
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
#include <asm/prom.h>
|
#include <asm/prom.h>
|
||||||
#include <asm/machdep.h>
|
#include <asm/machdep.h>
|
||||||
|
#include <asm/smp.h>
|
||||||
|
|
||||||
|
|
||||||
struct powernv_rng {
|
struct powernv_rng {
|
||||||
|
|
Loading…
Reference in New Issue