[PATCH v2 0/4] Setup RFI flush after PowerVM LPM migration

Mauricio Faria de Oliveira mauricfo at linux.vnet.ibm.com
Tue Mar 13 10:02:54 AEDT 2018


This patchset allows for setup_rfi_flush() to be called again
after PowerVM LPM (live partition mobility) aka LPAR migration,
in order to possibly switch to a different flush method.

The patches are mostly from Michael Ellerman, I have rebased to
powerpc/linux.git merge branch as of commit 249d7ba (March 12th),
and added one extra commit to force init of fallback flush area
on pseries.

Testing:
-------

I've disabled most code in the LPM functions migration_store()
and post_mobility_fixup() to just reach pseries_setup_rfi_flush(),
and modified pseries_setup_rfi_flush() a few times to fake the
first and non-first calls to either enable instructions or the
fallback flush method, to cover all 4 possible scenarios.

Case 1) fallback -> fallback

    # dmesg | grep rfi-flush
    [    0.000000] rfi-flush: Using fallback displacement flush
    [    0.000000] rfi-flush: patched 8 locations

    # echo > /sys/kernel/mobility/migration 

    # dmesg | grep rfi-flush
    [    0.000000] rfi-flush: Using fallback displacement flush
    [    0.000000] rfi-flush: patched 8 locations
    [   20.583029] rfi-flush: Using fallback displacement flush
    [   20.583038] rfi-flush: patched 8 locations

Case 2) instructions -> fallback

    # dmesg | grep rfi-flush
    [    0.000000] rfi-flush: Using ori type flush
    [    0.000000] rfi-flush: Using mttrig type flush
    [    0.000000] rfi-flush: patched 8 locations

    # echo > /sys/kernel/mobility/migration 

    # dmesg | grep rfi-flush
    [    0.000000] rfi-flush: Using ori type flush
    [    0.000000] rfi-flush: Using mttrig type flush
    [    0.000000] rfi-flush: patched 8 locations
    [   36.023759] rfi-flush: Using fallback displacement flush
    [   36.023764] rfi-flush: patched 8 locations

Case 3) fallback -> instructions

    # dmesg | grep rfi-flush
    [    0.000000] rfi-flush: Using fallback displacement flush
    [    0.000000] rfi-flush: patched 8 locations

    # echo > /sys/kernel/mobility/migration 

    # dmesg | grep rfi-flush
    [    0.000000] rfi-flush: Using fallback displacement flush
    [    0.000000] rfi-flush: patched 8 locations
    [   23.373037] rfi-flush: Using ori type flush
    [   23.373039] rfi-flush: Using mttrig type flush
    [   23.373044] rfi-flush: patched 8 locations

Case 4) instructions -> instructions

    # dmesg | grep rfi-flush
    [    0.000000] rfi-flush: Using ori type flush
    [    0.000000] rfi-flush: Using mttrig type flush
    [    0.000000] rfi-flush: patched 8 locations

    # echo > /sys/kernel/mobility/migration 

    # dmesg | grep rfi-flush
    [    0.000000] rfi-flush: Using ori type flush
    [    0.000000] rfi-flush: Using mttrig type flush
    [    0.000000] rfi-flush: patched 8 locations
    [   23.243564] rfi-flush: Using ori type flush
    [   23.243566] rfi-flush: Using mttrig type flush
    [   23.243570] rfi-flush: patched 8 locations


Mauricio Faria de Oliveira (1):
  rfi-flush: Allow pseries to force init of fallback flush area

Michael Ellerman (3):
  rfi-flush: Move the logic to avoid a redo into the debugfs code
  rfi-flush: Make it possible to call setup_rfi_flush() again
  rfi-flush: Call setup_rfi_flush() after LPM migration

 arch/powerpc/include/asm/setup.h          |  2 +-
 arch/powerpc/kernel/setup_64.c            | 22 +++++++++++++++-------
 arch/powerpc/platforms/powernv/setup.c    |  3 ++-
 arch/powerpc/platforms/pseries/mobility.c |  3 +++
 arch/powerpc/platforms/pseries/pseries.h  |  2 ++
 arch/powerpc/platforms/pseries/setup.c    |  6 +++---
 6 files changed, 26 insertions(+), 12 deletions(-)

-- 
2.7.4



More information about the Linuxppc-dev mailing list