This patch got 2 acks, applied:
https://github.com/crash-utility/crash/commit/79e756606c9fca3407f70403f65...
Thanks,
Kazu
-----Original Message-----
在 2020年10月07日 00:00, crash-utility-request(a)redhat.com 写道:
> Date: Tue, 6 Oct 2020 21:05:39 +0900
> From: HATAYAMA Daisuke <d.hatayama(a)fujitsu.com>
> To: crash-utility(a)redhat.com
> Cc: HATAYAMA Daisuke <d.hatayama(a)fujitsu.com>
> Subject: [Crash-utility] [PATCH] sadump: fix help -D lists
> uninteresting register entries
> Message-ID: <1601985939-1431-1-git-send-email-d.hatayama(a)fujitsu.com>
> Content-Type: text/plain; charset="US-ASCII"
>
> Reserved fields in SMRAM CPU states could be non-zero even if the
> corresponding APICs are NOT used. This breaks the assumption that
> SMRAM CPU state is zero cleared if and only if the APIC corresponding
> to the entry is NOT used. As the result, help -D lists uninteresting
> entries as below:
>
> APIC ID: 14
> RIP: 0000000000000000 RSP: 0000000000000000 RBP: 0000000000000000
> RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000000
> RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
> R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000
> R11: 0000000000000000 R12: 0000000000000000 R13: 0000000000000000
> R14: 0000000000000000 R15: 0000000000000000
> SMM REV: 00000000 SMM BASE 00000000
> CS : 00000000 DS: 00000000 SS: 00000000 ES: 00000000 FS: 00000000
> GS : 00000000
> CR0: 0000000000000000 CR3: 0000000000000000 CR4: 00000000
> GDT: 0000000000000000 LDT: 0000000000000000 IDT: 0000000000000000
> GDTlim: 00000000 LDTlim: 00000000 IDTlim: 00000000
> LDTR: 00000000 TR: 00000000 RFLAGS: 0000000000000000
> EPTP: 0000000000000000 EPTP_SETTING: 00000000
> DR6: 0000000000000000 DR7: 0000000000000000
> Ia32Efer: 0000000000000000
> IoMemAddr: 0000000000000000 IoEip: 0000000000000000
> IoMisc: 00000000 LdtInfo: 00000000
> IoInstructionRestart: 0000 AutoHaltRestart: 0000
>
> To fix this issue, mask reserved fields before comparison.
>
Thanks for the fix, HATAYAMA.
Acked-by: Lianbo Jiang <lijiang(a)redhat.com>
> Signed-off-by: HATAYAMA Daisuke <d.hatayama(a)fujitsu.com>
> ---
> sadump.c | 22 ++++++++++++++++++++++
> 1 file changed, 22 insertions(+)
>
> diff --git a/sadump.c b/sadump.c
> index 009e17a..f313528 100644
> --- a/sadump.c
> +++ b/sadump.c
> @@ -51,6 +51,7 @@ static int cpu_to_apicid(int cpu, int *apicid);
> static int get_sadump_smram_cpu_state(int cpu, struct sadump_smram_cpu_state
*smram);
> static int block_table_init(void);
> static uint64_t pfn_to_block(uint64_t pfn);
> +static void mask_reserved_fields(struct sadump_smram_cpu_state *smram);
>
> struct sadump_data *
> sadump_get_sadump_data(void)
> @@ -1040,6 +1041,15 @@ int sadump_memory_dump(FILE *fp)
> "cpu_state\n");
> return FALSE;
> }
> + /*
> + * Reserved fields in SMRAM CPU states could
> + * be non-zero even if the corresponding APICs
> + * are NOT used. This breaks the assumption
> + * that SMRAM CPU state is zero cleared if and
> + * only if the APIC corresponding to the entry
> + * is NOT used.
> + */
> + mask_reserved_fields(&scs);
> if (memcmp(&scs, &zero, sizeof(scs)) != 0) {
> fprintf(fp, "\n");
> display_smram_cpu_state(aid, &scs);
> @@ -1707,3 +1717,15 @@ sadump_get_cr3_idtr(ulong *cr3, ulong *idtr)
> return TRUE;
> }
> #endif /* X86_64 */
> +
> +static void
> +mask_reserved_fields(struct sadump_smram_cpu_state *smram)
> +{
> + memset(smram->Reserved1, 0, sizeof(smram->Reserved1));
> + memset(smram->Reserved2, 0, sizeof(smram->Reserved2));
> + memset(smram->Reserved3, 0, sizeof(smram->Reserved3));
> + memset(smram->Reserved4, 0, sizeof(smram->Reserved4));
> + memset(smram->Reserved5, 0, sizeof(smram->Reserved5));
> + memset(smram->Reserved6, 0, sizeof(smram->Reserved6));
> + memset(smram->Reserved7, 0, sizeof(smram->Reserved7));
> +}
> -- 1.8.3.1