lkml.org 
[lkml]   [2019]   [Sep]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.2 32/70] powerpc/xmon: Check for HV mode when dumping XIVE info from OPAL
    Date
    From: Cédric Le Goater <clg@kaod.org>

    [ Upstream commit c3e0dbd7f780a58c4695f1cd8fc8afde80376737 ]

    Currently, the xmon 'dx' command calls OPAL to dump the XIVE state in
    the OPAL logs and also outputs some of the fields of the internal XIVE
    structures in Linux. The OPAL calls can only be done on baremetal
    (PowerNV) and they crash a pseries machine. Fix by checking the
    hypervisor feature of the CPU.

    Signed-off-by: Cédric Le Goater <clg@kaod.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20190814154754.23682-2-clg@kaod.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    arch/powerpc/xmon/xmon.c | 17 ++++++++++-------
    1 file changed, 10 insertions(+), 7 deletions(-)

    diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c
    index 4a721fd624069..e15ccf19c1533 100644
    --- a/arch/powerpc/xmon/xmon.c
    +++ b/arch/powerpc/xmon/xmon.c
    @@ -2532,13 +2532,16 @@ static void dump_pacas(void)
    static void dump_one_xive(int cpu)
    {
    unsigned int hwid = get_hard_smp_processor_id(cpu);
    -
    - opal_xive_dump(XIVE_DUMP_TM_HYP, hwid);
    - opal_xive_dump(XIVE_DUMP_TM_POOL, hwid);
    - opal_xive_dump(XIVE_DUMP_TM_OS, hwid);
    - opal_xive_dump(XIVE_DUMP_TM_USER, hwid);
    - opal_xive_dump(XIVE_DUMP_VP, hwid);
    - opal_xive_dump(XIVE_DUMP_EMU_STATE, hwid);
    + bool hv = cpu_has_feature(CPU_FTR_HVMODE);
    +
    + if (hv) {
    + opal_xive_dump(XIVE_DUMP_TM_HYP, hwid);
    + opal_xive_dump(XIVE_DUMP_TM_POOL, hwid);
    + opal_xive_dump(XIVE_DUMP_TM_OS, hwid);
    + opal_xive_dump(XIVE_DUMP_TM_USER, hwid);
    + opal_xive_dump(XIVE_DUMP_VP, hwid);
    + opal_xive_dump(XIVE_DUMP_EMU_STATE, hwid);
    + }

    if (setjmp(bus_error_jmp) != 0) {
    catch_memory_errors = 0;
    --
    2.20.1
    \
     
     \ /
      Last update: 2019-09-24 18:59    [W:5.771 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site