On Wed, May 06, 2015 at 12:38:29PM +0200, Paolo Bonzini wrote: > Bits 16-31 of the SMM revision ID are feature bits. We only need to > check that SMBASE relocation is supported, but do not care about other > features. In particular, this allows the SMM I/O instruction restart > feature to be present. > > Signed-off-by: Paolo Bonzini <[email protected]> > --- > src/fw/smm.c | 15 +++++++++++---- > 1 file changed, 11 insertions(+), 4 deletions(-) > > diff --git a/src/fw/smm.c b/src/fw/smm.c > index dabc677..6cb484e 100644 > --- a/src/fw/smm.c > +++ b/src/fw/smm.c > @@ -18,8 +18,14 @@ > #include "util.h" // smm_setup > #include "x86.h" // wbinvd > > -#define SMM_REV_I32 0x00020000 > -#define SMM_REV_I64 0x00020064 > +/* > + * Check SMM state save area format (bits 0-15) and require support > + * for SMBASE relocation. > + */ > +#define SMM_REV_MASK 0x0002ffff > + > +#define SMM_REV_I32 0x00020000 > +#define SMM_REV_I64 0x00020064 > > struct smm_state { > union { > @@ -62,9 +68,10 @@ handle_smi(u16 cs) > > if (smm == (void*)BUILD_SMM_INIT_ADDR) { > // relocate SMBASE to 0xa0000 > - if (smm->cpu.i32.smm_rev == SMM_REV_I32) { > + u32 rev = smm->cpu.i32.smm_rev & SMM_REV_MASK; > + if (rev == SMM_REV_I32) {
I noticed that this patch from May changes the revision check to use a mask in the SMM init code, but doesn't change the check in the runtime part of the handler. Was this intentional? -Kevin _______________________________________________ SeaBIOS mailing list [email protected] http://www.seabios.org/mailman/listinfo/seabios
