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

Re: [Xen-devel] [RFC PATCH V3 07/12] xen: Remove mem_event



>>> On 29.01.15 at 22:46, <tamas.lengyel@xxxxxxxxxxxx> wrote:
> --- a/xen/include/public/domctl.h
> +++ b/xen/include/public/domctl.h
> @@ -750,15 +750,15 @@ struct xen_domctl_gdbsx_domstatus {
>  };
>  
>  /*
> - * Memory event operations
> + * VM event operations
>   */
>  
> -/* XEN_DOMCTL_mem_event_op */
> +/* XEN_DOMCTL_vm_event_op */
>  
>  /*
>   * Domain memory paging
>   * Page memory in and out.
> - * Domctl interface to set up and tear down the 
> + * Domctl interface to set up and tear down the
>   * pager<->hypervisor interface. Use XENMEM_paging_op*
>   * to perform per-page operations.
>   *
> @@ -769,10 +769,10 @@ struct xen_domctl_gdbsx_domstatus {
>   * EXDEV  - guest has PoD enabled
>   * EBUSY  - guest has or had paging enabled, ring buffer still active
>   */
> -#define XEN_DOMCTL_MEM_EVENT_OP_PAGING            1
> +#define XEN_DOMCTL_VM_EVENT_OP_PAGING            1
>  
> -#define XEN_DOMCTL_MEM_EVENT_OP_PAGING_ENABLE     0
> -#define XEN_DOMCTL_MEM_EVENT_OP_PAGING_DISABLE    1
> +#define XEN_DOMCTL_VM_EVENT_OP_PAGING_ENABLE     0
> +#define XEN_DOMCTL_VM_EVENT_OP_PAGING_DISABLE    1
>  
>  /*
>   * Monitor helper.
> @@ -799,84 +799,6 @@ struct xen_domctl_gdbsx_domstatus {
>   * EBUSY  - guest has or had access enabled, ring buffer still active
>   *
>   */
> -#define XEN_DOMCTL_MEM_EVENT_OP_MONITOR                        2
> -
> -#define XEN_DOMCTL_MEM_EVENT_OP_MONITOR_ENABLE                 0
> -#define XEN_DOMCTL_MEM_EVENT_OP_MONITOR_DISABLE                1
> -#define XEN_DOMCTL_MEM_EVENT_OP_MONITOR_ENABLE_INTROSPECTION   2
> -
> -/*
> - * Sharing ENOMEM helper.
> - *
> - * As with paging, use the domctl for teardown/setup of the
> - * helper<->hypervisor interface.
> - *
> - * If setup, this ring is used to communicate failed allocations
> - * in the unshare path. XENMEM_sharing_op_resume is used to wake up
> - * vcpus that could not unshare.
> - *
> - * Note that shring can be turned on (as per the domctl below)
> - * *without* this ring being setup.
> - */
> -#define XEN_DOMCTL_MEM_EVENT_OP_SHARING           3
> -
> -#define XEN_DOMCTL_MEM_EVENT_OP_SHARING_ENABLE    0
> -#define XEN_DOMCTL_MEM_EVENT_OP_SHARING_DISABLE   1
> -
> -/* Use for teardown/setup of helper<->hypervisor interface for paging, 
> - * access and sharing.*/
> -struct xen_domctl_mem_event_op {
> -    uint32_t       op;           /* XEN_DOMCTL_MEM_EVENT_OP_*_* */
> -    uint32_t       mode;         /* XEN_DOMCTL_MEM_EVENT_OP_* */
> -
> -    uint32_t port;              /* OUT: event channel for ring */
> -};
> -typedef struct xen_domctl_mem_event_op xen_domctl_mem_event_op_t;
> -DEFINE_XEN_GUEST_HANDLE(xen_domctl_mem_event_op_t);
> -
> -/*
> - * VM event operations
> - */
> -
> -/* XEN_DOMCTL_vm_event_op */
> -
> -/*
> - * Domain memory paging
> - * Page memory in and out.
> - * Domctl interface to set up and tear down the
> - * pager<->hypervisor interface. Use XENMEM_paging_op*
> - * to perform per-page operations.
> - *
> - * The XEN_DOMCTL_MEM_EVENT_OP_PAGING_ENABLE domctl returns several
> - * non-standard error codes to indicate why paging could not be enabled:
> - * ENODEV - host lacks HAP support (EPT/NPT) or HAP is disabled in guest
> - * EMLINK - guest has iommu passthrough enabled
> - * EXDEV  - guest has PoD enabled
> - * EBUSY  - guest has or had paging enabled, ring buffer still active
> - */
> -#define XEN_DOMCTL_VM_EVENT_OP_PAGING            1
> -
> -#define XEN_DOMCTL_VM_EVENT_OP_PAGING_ENABLE     0
> -#define XEN_DOMCTL_VM_EVENT_OP_PAGING_DISABLE    1
> -
> -/*
> - * Monitor permissions.
> - *
> - * As with paging, use the domctl for teardown/setup of the
> - * helper<->hypervisor interface.
> - *
> - * There are HVM hypercalls to set the per-page access permissions of every
> - * page in a domain.  When one of these permissions--independent, read,
> - * write, and execute--is violated, the VCPU is paused and a memory event
> - * is sent with what happened.  (See public/vm_event.h) .
> - *
> - * The memory event handler can then resume the VCPU and redo the access
> - * with a XENMEM_access_op_resume hypercall.
> - *
> - * The XEN_DOMCTL_VM_EVENT_OP_MONITOR_ENABLE domctl returns several
> - * non-standard error codes to indicate why access could not be enabled:
> - * EBUSY  - guest has or had access enabled, ring buffer still active
> - */
>  #define XEN_DOMCTL_VM_EVENT_OP_MONITOR                        2
>  
>  #define XEN_DOMCTL_VM_EVENT_OP_MONITOR_ENABLE                 0

Did you look at the resulting patch to see what happened? It didn't
remove the mem_event stuff, but adjusted it enough to become the
vm_event one while removing the previously added vm_event part
again. Another argument against this approach imo.

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