Message ID | 1384500964.2491.11.camel@ThinkPad-T5421 (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
On Fri, Nov 15, 2013 at 03:36:04PM +0800, Li Zhong wrote: > This is seen when CONFIG_SMP is not enabled: > > arch/powerpc/platforms/powernv/rng.c: In function 'rng_init_per_cpu': > arch/powerpc/platforms/powernv/rng.c:74: error: implicit declaration of function 'cpu_to_chip_id' Hi Li, We try whenever possible to avoid adding #ifdefs in C code. Also on a multi chip system where there are multiple RNGs, your code for UP will not necessarily choose the RNG on the same core as the cpu. I have a different fix that I will send. cheers
On Tue, 2013-11-19 at 15:04 +1100, Michael Ellerman wrote: > On Fri, Nov 15, 2013 at 03:36:04PM +0800, Li Zhong wrote: > > This is seen when CONFIG_SMP is not enabled: > > > > arch/powerpc/platforms/powernv/rng.c: In function 'rng_init_per_cpu': > > arch/powerpc/platforms/powernv/rng.c:74: error: implicit declaration of function 'cpu_to_chip_id' > > Hi Li, > > We try whenever possible to avoid adding #ifdefs in C code. > > Also on a multi chip system where there are multiple RNGs, your code for > UP will not necessarily choose the RNG on the same core as the cpu. OK, thank you for the review, Michael. Just try to make sure I understand it: So even in UP, we could have multiple rng sources, and we should try to use the source which has the same chip_id as the logical cpu? Thanks, Zhong > I have a different fix that I will send. > > cheers >
diff --git a/arch/powerpc/platforms/powernv/rng.c b/arch/powerpc/platforms/powernv/rng.c index 8844628..04430a7 100644 --- a/arch/powerpc/platforms/powernv/rng.c +++ b/arch/powerpc/platforms/powernv/rng.c @@ -59,6 +59,7 @@ int powernv_get_random_long(unsigned long *v) } EXPORT_SYMBOL_GPL(powernv_get_random_long); +#ifdef CONFIG_SMP static __init void rng_init_per_cpu(struct powernv_rng *rng, struct device_node *dn) { @@ -75,6 +76,13 @@ static __init void rng_init_per_cpu(struct powernv_rng *rng, } } } +#else +static __init void rng_init_per_cpu(struct powernv_rng *rng, + struct device_node *dn) +{ + per_cpu(powernv_rng, 0) = rng; +} +#endif static __init int rng_create(struct device_node *dn) {
This is seen when CONFIG_SMP is not enabled: arch/powerpc/platforms/powernv/rng.c: In function 'rng_init_per_cpu': arch/powerpc/platforms/powernv/rng.c:74: error: implicit declaration of function 'cpu_to_chip_id' Signed-off-by: Li Zhong <zhong@linux.vnet.ibm.com> --- arch/powerpc/platforms/powernv/rng.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-)