On 02/12/2024 9:49 am, Teddy Astie wrote:
> diff --git a/xen/arch/x86/include/asm/hvm/hvm.h
> b/xen/arch/x86/include/asm/hvm/hvm.h
> index 02de18c7d4..dbc37e8b75 100644
> --- a/xen/arch/x86/include/asm/hvm/hvm.h
> +++ b/xen/arch/x86/include/asm/hvm/hvm.h
> @@ -26,6 +26,12 @@ extern bool opt_hvm_fep;
> #define opt_hvm_fep 0
> #endif
>
> +#define X86_MODE_REAL 0
> +#define X86_MODE_VM86 1
> +#define X86_MODE_16BIT 2
> +#define X86_MODE_32BIT 4
> +#define X86_MODE_64BIT 8
> +
> /* Interrupt acknowledgement sources. */
> enum hvm_intsrc {
> hvm_intsrc_none,
We discussed this in the x86 meeting. These want to live next to
hvm_guest_x86_mode() with a comment stating that they're not
architectural modes.
During your work, you seem to have only looked at the the VMX side of
things.
There are several callers of hvm_guest_x86_mode() and
svm_guest_x86_mode() missed. Also an unnecessary include, and a couple
of overly long lines.
https://xenbits.xen.org/gitweb/?p=people/andrewcoop/xen.git;a=commitdiff;h=4f8f63d49776d69ed9a978b6601c13c54c579a98
is the incremental fix on top of this patch.
Does this look reasonable?
I've just realised that the check in nvmx_handle_vmx_insn() is an
incredibly complicated way of expressing guest_cr[0].PE, and we've got
the same opencoded elsewhere, so I'll also prepare a patch prerequisite
patch to sort that out, then rebase this over it.
~Andrew