[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PULL 08/15] target/i386: Added consistency checks for CR4
From: |
Daniel P . Berrangé |
Subject: |
Re: [PULL 08/15] target/i386: Added consistency checks for CR4 |
Date: |
Tue, 31 Aug 2021 18:35:05 +0100 |
User-agent: |
Mutt/2.0.7 (2021-05-04) |
On Tue, Aug 31, 2021 at 06:03:04PM +0100, Richard W.M. Jones wrote:
> On Thu, Jul 22, 2021 at 05:36:05PM +0200, Paolo Bonzini wrote:
> > From: Lara Lazier <laramglazier@gmail.com>
> >
> > All MBZ bits in CR4 must be zero. (APM2 15.5)
> > Added reserved bitmask and added checks in both
> > helper_vmrun and helper_write_crN.
> >
> > Signed-off-by: Lara Lazier <laramglazier@gmail.com>
> > Message-Id: <20210721152651.14683-2-laramglazier@gmail.com>
> > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>
> FYI this commit causes a regression with -cpu max (regression analyzed
> by Daniel Berrange). See:
>
> https://bugzilla.redhat.com/show_bug.cgi?id=1999700
>
> Rich.
>
> > target/i386/cpu.h | 39 ++++++++++++++++++++++++++++
> > target/i386/tcg/sysemu/misc_helper.c | 3 +++
> > target/i386/tcg/sysemu/svm_helper.c | 9 ++++---
> > 3 files changed, 48 insertions(+), 3 deletions(-)
> >
> > diff --git a/target/i386/cpu.h b/target/i386/cpu.h
> > index 5d98a4e7c0..1f7e8d7f0a 100644
> > --- a/target/i386/cpu.h
> > +++ b/target/i386/cpu.h
> > @@ -240,6 +240,7 @@ typedef enum X86Seg {
> > #define CR4_OSFXSR_SHIFT 9
> > #define CR4_OSFXSR_MASK (1U << CR4_OSFXSR_SHIFT)
> > #define CR4_OSXMMEXCPT_MASK (1U << 10)
> > +#define CR4_UMIP_MASK (1U << 11)
> > #define CR4_LA57_MASK (1U << 12)
> > #define CR4_VMXE_MASK (1U << 13)
> > #define CR4_SMXE_MASK (1U << 14)
> > @@ -251,6 +252,14 @@ typedef enum X86Seg {
> > #define CR4_PKE_MASK (1U << 22)
> > #define CR4_PKS_MASK (1U << 24)
> >
> > +#define CR4_RESERVED_MASK \
> > +(~(target_ulong)(CR4_VME_MASK | CR4_PVI_MASK | CR4_TSD_MASK \
> > + | CR4_DE_MASK | CR4_PSE_MASK | CR4_PAE_MASK \
> > + | CR4_MCE_MASK | CR4_PGE_MASK | CR4_PCE_MASK \
> > + | CR4_OSFXSR_MASK | CR4_OSXMMEXCPT_MASK |CR4_UMIP_MASK \
> > + | CR4_FSGSBASE_MASK | CR4_PCIDE_MASK | CR4_OSXSAVE_MASK \
> > + | CR4_SMEP_MASK | CR4_SMAP_MASK | CR4_PKE_MASK |
> > CR4_PKS_MASK))
> > +
This is missing CR4_LA57_MASK, and adding that makes Fedora kernels
boot again.
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|