Re: [PATCH] powerpc/sysdev: Fix a mpic section mismatch for MPC85xx
From: Christian Engelmayer <hidden>
Date: 2013-12-19 23:00:48
On Mon, 16 Dec 2013 11:10:53 +1100 Benjamin Herrenschmidt [off-list ref] wrote:
On Sun, 2013-12-15 at 19:38 +0100, Christian Engelmayer wrote:quoted
Moved arch/powerpc/sysdev/mpic.c : smp_mpic_probe() out of the __init section. It is referenced by arch/powerpc/platforms/85xx/smp.c : smp_85xx_setup_cpu().I don't like this. The reference is not actually going to call into the code at all and as such is not an error, it's just a pointer comparison.
That's correct. I proposed it that way because on first sight I was concerned that there is an address of an __init function assigned to a function pointer within a non __initdata struct at all that can be compared against. However, further usage of smp_ops->probe is currently safe of course and *_ops symbols within .data are whitelisted to refer to init sections.
If there is no way to silence the warning, then I'd suggest to use a global flag, something like mpc85xx_pic_type and test that instead of comparing the pointers.
I've seen that there is currently a patch proposed against commit dc2c9c52b604f51b1416ed87ff54a1c77a1a8b5b powerpc/85xx: Set up doorbells even with no mpic that introduced the section causing the warning: http://patchwork.ozlabs.org/patch/289214/ powerpc/85xx: don't init the mpic ipi for the SoC which has doorbell support This patch also removes the affected pointer comparison and if accepted would thus also silence this warning.
quoted
Signed-off-by: Christian Engelmayer <redacted> --- arch/powerpc/sysdev/mpic.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c index 0e166ed..72c1e65 100644 --- a/arch/powerpc/sysdev/mpic.c +++ b/arch/powerpc/sysdev/mpic.c@@ -1924,7 +1924,7 @@ void smp_mpic_message_pass(int cpu, int msg) msg * MPIC_INFO(CPU_IPI_DISPATCH_STRIDE), physmask); } -int __init smp_mpic_probe(void) +int smp_mpic_probe(void) { int nr_cpus;