>>> 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

Reply via email to