>>> On 30.06.17 at 17:04, <andrew.coop...@citrix.com> wrote: > This structure is shared with hardware in the AMD VMCB.
Indeed, but do we really depend on that in the emulator code? > --- a/xen/arch/x86/x86_emulate/x86_emulate.c > +++ b/xen/arch/x86/x86_emulate/x86_emulate.c > @@ -7899,6 +7899,12 @@ static void __init __maybe_unused > build_assertions(void) > BUILD_BUG_ON(X86_EVENTTYPE_SW_INTERRUPT != 4); > BUILD_BUG_ON(X86_EVENTTYPE_PRI_SW_EXCEPTION != 5); > BUILD_BUG_ON(X86_EVENTTYPE_SW_EXCEPTION != 6); > + > + /* Check struct segment_register against the VMCB segment layout. */ > + BUILD_BUG_ON(sizeof(struct segment_register) != 16); > + BUILD_BUG_ON(offsetof(struct segment_register, attr) != 2); I.e. for these two I don't think I can see any dependency, and ... > + BUILD_BUG_ON(offsetof(struct segment_register, limit) != 4); > + BUILD_BUG_ON(offsetof(struct segment_register, base) != 8); ... for these two I think all we require is >=. Otoh, if these were put in SVM code, then I could see the point of them being the way they are. I'd then even raise the question whether we wouldn't also want offsetof() checks. Jan _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org https://lists.xen.org/xen-devel