[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] xen/x86: Clean up vm_event-related code in asm-x86/domain.h



>>> On 14.08.15 at 11:54, <rcojocaru@xxxxxxxxxxxxxxx> wrote:
> @@ -571,7 +571,7 @@ void hvm_do_resume(struct vcpu *v)
>      }
>  
>      /* Inject pending hw/sw trap */
> -    if ( v->arch.hvm_vcpu.inject_trap.vector != -1 ) 
> +    if ( v->arch.hvm_vcpu.inject_trap.vector != -1 )

Stray whitespace change to unrelated code.

> @@ -3371,13 +3371,13 @@ int hvm_set_cr0(unsigned long value, bool_t 
> may_defer)
>                                 monitor_ctrlreg_bitmask(VM_EVENT_X86_CR0)) &&
>           value != old_value )
>      {
> -        ASSERT(currad->event_write_data != NULL);
> +        ASSERT(v->arch.vm_event != NULL);

May I recommend dropping the redundant != NULL namely in ASSERT()
expressions (the only effect they have is produce larger string literals
in debug builds).

>          if ( hvm_event_crX(CR0, value, old_value) )
>          {
>              /* The actual write will occur in hvm_do_resume(), if permitted. 
> */
> -            currad->event_write_data[v->vcpu_id].do_write.cr0 = 1;
> -            currad->event_write_data[v->vcpu_id].cr0 = value;
> +            v->arch.vm_event->write_data.do_write.cr0 = 1;
> +            v->arch.vm_event->write_data.cr0 = value;

Looks like this leaves just a single use of currad in the function, in
which case I'd like to see the variable go away.

> --- a/xen/include/asm-x86/domain.h
> +++ b/xen/include/asm-x86/domain.h
> @@ -8,6 +8,7 @@
>  #include <asm/hvm/domain.h>
>  #include <asm/e820.h>
>  #include <asm/mce.h>
> +#include <public/vm_event.h>

It looks like both this and ...

> @@ -460,6 +459,18 @@ typedef enum __packed {
>      SMAP_CHECK_DISABLED,        /* disable the check */
>  } smap_check_policy_t;
>  
> +/*
> + * Should we emulate the next matching instruction on VCPU resume
> + * after a vm_event?
> + */
> +struct vm_event {
> +    uint32_t emulate_flags;
> +    unsigned long gpa;
> +    unsigned long eip;
> +    struct vm_event_emul_read_data emul_read_data;
> +    struct monitor_write_data write_data;
> +};

... this would better go into asm-x86/vm_event.h (despite it meaning
that the file will then be included by basically everything).

Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.