]> xenbits.xensource.com Git - xen.git/commitdiff
vm_event: remove xc_mem_access_enable_emulate() and friends
authorRazvan Cojocaru <rcojocaru@bitdefender.com>
Mon, 15 Feb 2016 13:13:31 +0000 (14:13 +0100)
committerJan Beulich <jbeulich@suse.com>
Mon, 15 Feb 2016 13:13:31 +0000 (14:13 +0100)
xc_mem_access_enable_emulate() and xc_mem_access_disable_emulate()
are currently no-ops, that is all they do is set a flag that
nobody else checks. The user can already set the EMULATE flags in
the vm_event response if emulation is desired, and having an extra
check above that is not inherently safer, but it does complicate
(currenly unnecessarily) the API. This patch removes these
functions and the corresponding hypervisor code.

Signed-off-by: Razvan Cojocaru <rcojocaru@bitdefender.com>
Acked-by: Tamas K Lengyel <tamas@tklengyel.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Acked-by: Wei Liu <wei.liu2@citrix.com>
tools/libxc/include/xenctrl.h
tools/libxc/xc_mem_access.c
xen/common/mem_access.c
xen/include/asm-arm/p2m.h
xen/include/asm-x86/domain.h
xen/include/asm-x86/p2m.h
xen/include/public/memory.h

index 1a5f4ec94033a6d1ef84566d2ecdffa3a417d4ae..42eafa4a44b669460e81724e8e0abbcd48f22f56 100644 (file)
@@ -2101,17 +2101,6 @@ int xc_set_mem_access(xc_interface *xch, domid_t domain_id,
 int xc_get_mem_access(xc_interface *xch, domid_t domain_id,
                       uint64_t pfn, xenmem_access_t *access);
 
-/*
- * Instructions causing a mem_access violation can be emulated by Xen
- * to progress the execution without having to relax the mem_access
- * permissions.
- * This feature has to be first enabled, then in the vm_event
- * response to a mem_access event it can be indicated if the instruction
- * should be emulated.
- */
-int xc_mem_access_enable_emulate(xc_interface *xch, domid_t domain_id);
-int xc_mem_access_disable_emulate(xc_interface *xch, domid_t domain_id);
-
 /***
  * Monitor control operations.
  *
index 3634c398b764859e0a8d9e1772171ff3462f2808..eee088cc67e4666a1d8cfdd5e79cfd2b5687c5a7 100644 (file)
@@ -62,30 +62,6 @@ int xc_get_mem_access(xc_interface *xch,
     return rc;
 }
 
-int xc_mem_access_enable_emulate(xc_interface *xch,
-                                 domid_t domain_id)
-{
-    xen_mem_access_op_t mao =
-    {
-        .op     = XENMEM_access_op_enable_emulate,
-        .domid  = domain_id,
-    };
-
-    return do_memory_op(xch, XENMEM_access_op, &mao, sizeof(mao));
-}
-
-int xc_mem_access_disable_emulate(xc_interface *xch,
-                                  domid_t domain_id)
-{
-    xen_mem_access_op_t mao =
-    {
-        .op     = XENMEM_access_op_disable_emulate,
-        .domid  = domain_id,
-    };
-
-    return do_memory_op(xch, XENMEM_access_op, &mao, sizeof(mao));
-}
-
 /*
  * Local variables:
  * mode: C
index 92ebeada4bc25caf39a9e6e4226572b6bd2dc277..b4033f017e7734ccee5dbf7a48f52ddb80a5aa00 100644 (file)
@@ -98,14 +98,6 @@ int mem_access_memop(unsigned long cmd,
         break;
     }
 
-    case XENMEM_access_op_enable_emulate:
-        rc = p2m_mem_access_enable_emulate(d);
-        break;
-
-    case XENMEM_access_op_disable_emulate:
-        rc = p2m_mem_access_disable_emulate(d);
-        break;
-
     default:
         rc = -ENOSYS;
         break;
index 4c62725f3df2ad4dbc861f07f9dac17f8f896785..433952ab04972b756509b104e5c14860f7c841d9 100644 (file)
@@ -88,20 +88,6 @@ typedef enum {
     p2m_max_real_type,  /* Types after this won't be store in the p2m */
 } p2m_type_t;
 
-static inline
-int p2m_mem_access_enable_emulate(struct domain *d)
-{
-    /* Not supported on ARM */
-    return -ENOSYS;
-}
-
-static inline
-int p2m_mem_access_disable_emulate(struct domain *d)
-{
-    /* Not supported on ARM */
-    return -ENOSYS;
-}
-
 static inline
 void p2m_mem_access_emulate_check(struct vcpu *v,
                                   const vm_event_response_t *rsp)
index 4072e273ae2d56142d1bf2759434f3506f93c109..4fad6380c254be38de2c479e92981880e540399b 100644 (file)
@@ -390,7 +390,6 @@ struct arch_domain
     } monitor;
 
     /* Mem_access emulation control */
-    bool_t mem_access_emulate_enabled;
     bool_t mem_access_emulate_each_rep;
 
     /* Emulated devices enabled bitmap. */
index ca0480e699df2d64fa2da0c77b38d5174b3c06e5..5392eb05a264ae265a0850e843dda7401845b974 100644 (file)
@@ -648,30 +648,6 @@ bool_t p2m_mem_access_check(paddr_t gpa, unsigned long gla,
                             struct npfec npfec,
                             vm_event_request_t **req_ptr);
 
-/*
- * Emulating a memory access requires custom handling. These non-atomic
- * functions should be called under domctl lock.
- */
-static inline
-int p2m_mem_access_enable_emulate(struct domain *d)
-{
-    if ( d->arch.mem_access_emulate_enabled )
-        return -EEXIST;
-
-    d->arch.mem_access_emulate_enabled = 1;
-    return 0;
-}
-
-static inline
-int p2m_mem_access_disable_emulate(struct domain *d)
-{
-    if ( !d->arch.mem_access_emulate_enabled )
-        return -EEXIST;
-
-    d->arch.mem_access_emulate_enabled = 0;
-    return 0;
-}
-
 /* Check for emulation and mark vcpu for skipping one instruction
  * upon rescheduling if required. */
 void p2m_mem_access_emulate_check(struct vcpu *v,
index 4df38d6b241c6355015a414b142b64ba594a32f5..f69e92f906ed800e34b6de935c63fea2dc202f2d 100644 (file)
@@ -390,8 +390,13 @@ DEFINE_XEN_GUEST_HANDLE(xen_mem_paging_op_t);
 #define XENMEM_access_op                    21
 #define XENMEM_access_op_set_access         0
 #define XENMEM_access_op_get_access         1
-#define XENMEM_access_op_enable_emulate     2
-#define XENMEM_access_op_disable_emulate    3
+/*
+ * XENMEM_access_op_enable_emulate and XENMEM_access_op_disable_emulate are
+ * currently unused, but since they have been in use please do not reuse them.
+ *
+ * #define XENMEM_access_op_enable_emulate     2
+ * #define XENMEM_access_op_disable_emulate    3
+ */
 
 typedef enum {
     XENMEM_access_n,