Messages in this thread | | | Date | Tue, 05 May 2015 15:18:48 +0200 | From | Paolo Bonzini <> | Subject | Re: [PATCH 09/13] KVM: x86: save/load state on SMM switch |
| |
On 05/05/2015 14:48, Radim Krčmář wrote: >>>> > > > +{ >>>> > > > + desc->g = (flags >> 15) & 1; >>>> > > > + desc->d = (flags >> 14) & 1; >>>> > > > + desc->l = (flags >> 13) & 1; >>>> > > > + desc->avl = (flags >> 12) & 1; >>>> > > > + desc->p = (flags >> 7) & 1; >>>> > > > + desc->dpl = (flags >> 5) & 3; >>>> > > > + desc->s = (flags >> 4) & 1; >>>> > > > + desc->type = flags & 15; >>> > > >>> > > I can't find a description of this ... can you point me to a place where >>> > > the gap between 'p' and 'avl' is documented? >>> > > (Not that it matters unless the guest reads it, but it's a bit weird.) >> > >> > It turns out that access rights are stored in the same format as the VMX >> > access rights. > Thanks, so it really has a "reserved" space in the middle, to save some > processing because the format is horrible (backward compatible). > >> > access rights. However, they are shifted by 8, which my code above >> > doesn't do (bug). > I think you are shifting it right, though ... they wouldn't fit into a > word if shifted left.
Right, they have to be shifted right in the 64-bit case but not the 32-bit case.
Paolo
| |