help -m/-M will display current task address/crash nmi rsp/exception stack/irq stack on x86_64, and these data of offline cpu can be hide with this patch. The original display is like below: <cut> crash> help -m ... current[4]: ffffffff818d5440 ffff88003dad4fa0 ffff88003dad5b00 ffff88003dad6660 crash_nmi_rsp[4]: 0000000000000000 0000000000000000 0000000000000000 0000000000000000 ... ebase[cpus][7]: [0]: ffff88003fc04000 ffff88003fc05000 ffff88003fc06000 ffff88003fc07000 ffff88003fc09000 0000000000000000 0000000000000000 [1]: ffff88003fc84000 ffff88003fc85000 ffff88003fc86000 ffff88003fc87000 ffff88003fc89000 0000000000000000 0000000000000000 [2]: ffff88003fd04000 ffff88003fd05000 ffff88003fd06000 ffff88003fd07000 ffff88003fd09000 0000000000000000 0000000000000000 [3]: ffff88003fd84000 ffff88003fd85000 ffff88003fd86000 ffff88003fd87000 ffff88003fd89000 0000000000000000 0000000000000000 ibase[cpus]: ffff88003fc00000 ffff88003fc80000 ffff88003fd00000 ffff88003fd80000 <cut> And with data of offline cpu hiden, the display will be like below: <cut> crash> help -m ... current[4]: ffffffff818d5440 ffff88003dad4fa0 <OFFLINE> ffff88003dad6660 crash_nmi_rsp[4]: 0000000000000000 0000000000000000 <OFFLINE> 0000000000000000 ... ebase[cpus][7]: [0]: ffff88003fc04000 ffff88003fc05000 ffff88003fc06000 ffff88003fc07000 ffff88003fc09000 0000000000000000 0000000000000000 [1]: ffff88003fc84000 ffff88003fc85000 ffff88003fc86000 ffff88003fc87000 ffff88003fc89000 0000000000000000 0000000000000000 [2]: <OFFLINE> [3]: ffff88003fd84000 ffff88003fd85000 ffff88003fd86000 ffff88003fd87000 ffff88003fd89000 0000000000000000 0000000000000000 ibase[cpus]: ffff88003fc00000 ffff88003fc80000 <OFFLINE> ffff88003fd80000 <cut> Signed-off-by: Qiao Nuohan <qiaonuohan@xxxxxxxxxxxxxx> --- x86_64.c | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/x86_64.c b/x86_64.c index a2e4636..9aa6432 100755 --- a/x86_64.c +++ b/x86_64.c @@ -764,10 +764,16 @@ x86_64_dump_machdep_table(ulong arg) fprintf(fp, "%s current[%d]:%s", space(CPU_SPACES(kt->cpus)), kt->cpus, ms->current ? "\n " : " (unused)\n"); + for (c = 0; ms->current && (c < kt->cpus); c++) { if (c && !(c%4)) fprintf(fp, "\n "); - fprintf(fp, "%016lx ", ms->current[c]); + + if (hide_offline_cpu(c)) + fprintf(fp, " <OFFLINE> "); + else + fprintf(fp, "%016lx ", ms->current[c]); + } if (ms->current) fprintf(fp, "\n"); @@ -775,10 +781,15 @@ x86_64_dump_machdep_table(ulong arg) fprintf(fp, "%s crash_nmi_rsp[%d]:%s", space(CPU_SPACES(kt->cpus)), kt->cpus, ms->crash_nmi_rsp ? "\n " : " (unused)\n"); + for (c = 0; ms->crash_nmi_rsp && (c < kt->cpus); c++) { if (c && !(c%4)) fprintf(fp, "\n "); - fprintf(fp, "%016lx ", ms->crash_nmi_rsp[c]); + + if (hide_offline_cpu(c)) + fprintf(fp, " <OFFLINE> "); + else + fprintf(fp, "%016lx ", ms->crash_nmi_rsp[c]); } if (ms->crash_nmi_rsp) fprintf(fp, "\n"); @@ -803,6 +814,12 @@ x86_64_dump_machdep_table(ulong arg) cpus = arg ? NR_CPUS : kt->cpus; for (c = 0; c < cpus; c++) { fprintf(fp, "\n %s[%d]: ", c < 10 ? " " : "", c); + + if (!arg && hide_offline_cpu(c)) { + fprintf(fp, "<OFFLINE>"); + continue; + } + for (i = 0; i < MAX_EXCEPTION_STACKS; i++) { fprintf(fp, "%016lx ", ms->stkinfo.ebase[c][i]); if (i == 3) @@ -811,10 +828,16 @@ x86_64_dump_machdep_table(ulong arg) } fprintf(fp, "\n ibase[%s]:\n ", arg ? "NR_CPUS" : "cpus"); + for (c = 0; c < cpus; c++) { if (c && !(c%4)) fprintf(fp, "\n "); - fprintf(fp, "%016lx ", ms->stkinfo.ibase[c]); + + if (!arg && hide_offline_cpu(c)) + fprintf(fp, " <OFFLINE> "); + else + fprintf(fp, "%016lx ", ms->stkinfo.ibase[c]); + } fprintf(fp, "\n"); } -- 1.8.5.3 -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility