|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 5/6] x86/hvm: Forced Emulation Prefix for debug builds of Xen
>>> On 23.09.14 at 17:03, <andrew.cooper3@xxxxxxxxxx> wrote:
[re-ordering patch contents for a better response context]
> --- a/xen/include/asm-x86/hvm/hvm.h
> +++ b/xen/include/asm-x86/hvm/hvm.h
> @@ -514,6 +514,11 @@ bool_t nhvm_vmcx_hap_enabled(struct vcpu *v);
> /* interrupt */
> enum hvm_intblk nhvm_interrupt_blocked(struct vcpu *v);
>
> +#ifndef NDEBUG
> +/* Permit use of the Forced Emulation Prefix in HVM guests */
> +extern bool_t opt_hvm_fep;
#else
#define opt_hvm_fep 0
> +#endif
allowing this to be the single place of dependency on NDEBUG (in
case someone wants to change the condition to some thing else)
by ...
> --- a/xen/arch/x86/hvm/hvm.c
> +++ b/xen/arch/x86/hvm/hvm.c
> @@ -86,6 +86,11 @@ unsigned long __attribute__ ((__section__
> (".bss.page_aligned")))
> static bool_t __initdata opt_hap_enabled = 1;
> boolean_param("hap", opt_hap_enabled);
>
> +#ifndef NDEBUG
> +bool_t opt_hvm_fep;
> +boolean_param("hvm_fep", opt_hvm_fep);
> +#endif
... making this
#ifndef opt_hvm_fep
and ...
> +#ifndef NDEBUG
> + if ( opt_hvm_fep )
> + {
> + XEN_GUEST_HANDLE(char) guest_rip = { (char*)regs->eip };
> + char sig[5]; /* ud2; .ascii "xen" */
> +
> + if ( (copy_from_guest(sig, guest_rip, sizeof(sig)) == 0) &&
> + (memcmp(sig, "\xf\xbxen", sizeof(sig)) == 0) )
> + {
> + regs->eip += sizeof(sig);
> + regs->eflags &= ~X86_EFLAGS_RF;
> + }
> + }
> +#endif
... dropping the preprocessor conditionals both here and in the
similar VMX code chunk.
Apart from that I'd really like you to consider using
copy_from_user_hvm() or hvm_fetch_from_guest_virt_nofault()
- there's no visible benefit from using the PV-aware
copy_from_guest() here.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |