OSDN Git Service

powerpc/64s: Fix section mismatch warnings from setup_rfi_flush()
authorMichael Ellerman <mpe@ellerman.id.au>
Thu, 5 Apr 2018 12:49:13 +0000 (22:49 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Tue, 10 Apr 2018 01:23:10 +0000 (11:23 +1000)
commit501a78cbc17c329fabf8e9750a1e9ab810c88a0e
treeb8347936caefd6a5a189cf6e4ba2da2c5044e52c
parent73aca179d78eaa11604ba0783a6d8b2125fbc332
powerpc/64s: Fix section mismatch warnings from setup_rfi_flush()

The recent LPM changes to setup_rfi_flush() are causing some section
mismatch warnings because we removed the __init annotation on
setup_rfi_flush():

  The function setup_rfi_flush() references
  the function __init ppc64_bolted_size().
  the function __init memblock_alloc_base().

The references are actually in init_fallback_flush(), but that is
inlined into setup_rfi_flush().

These references are safe because:
 - only pseries calls setup_rfi_flush() at runtime
 - pseries always passes L1D_FLUSH_FALLBACK at boot
 - so the fallback flush area will always be allocated
 - so the check in init_fallback_flush() will always return early:
   /* Only allocate the fallback flush area once (at boot time). */
   if (l1d_flush_fallback_area)
    return;

 - and therefore we won't actually call the freed init routines.

We should rework the code to make it safer by default rather than
relying on the above, but for now as a quick-fix just add a __ref
annotation to squash the warning.

Fixes: abf110f3e1ce ("powerpc/rfi-flush: Make it possible to call setup_rfi_flush() again")
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/kernel/setup_64.c