[Crash-utility] [PATCH] sadump: fix help -D lists, uninteresting register entries

HAGIO KAZUHITO(萩尾 一仁) k-hagio-ab at nec.com
Mon Oct 12 03:05:03 UTC 2020


This patch got 2 acks, applied:
https://github.com/crash-utility/crash/commit/79e756606c9fca3407f70403f6566b5f6be2b292

Thanks,
Kazu

-----Original Message-----
> 在 2020年10月07日 00:00, crash-utility-request at redhat.com 写道:
> > Date: Tue,  6 Oct 2020 21:05:39 +0900
> > From: HATAYAMA Daisuke <d.hatayama at fujitsu.com>
> > To: crash-utility at redhat.com
> > Cc: HATAYAMA Daisuke <d.hatayama at fujitsu.com>
> > Subject: [Crash-utility] [PATCH] sadump: fix help -D lists
> > 	uninteresting	register entries
> > Message-ID: <1601985939-1431-1-git-send-email-d.hatayama at 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 at redhat.com>
> 
> 
> > Signed-off-by: HATAYAMA Daisuke <d.hatayama at 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





More information about the Crash-utility mailing list