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

[Xen-changelog] [xen-unstable] mem_event: remove type member



# HG changeset patch
# User Olaf Hering <olaf@xxxxxxxxx>
# Date 1329772180 -3600
# Node ID 626fa29dc04d7ed77ae16cfee8a767ff6bb819ad
# Parent  adcd6ab160fae996d53c6843da0c5728ca8a8bd3
mem_event: remove type member

When mem_event was added the type flag should indicate who the consumer
is. But the concept of a single ring buffer for multiple event types can
not work for two reasons. One is that no multiplexer exists which
provides individual event types to the final consumer, and second is
that even if such multiplexer can not work reliable because a request
needs to be answered with a response. The response should be sent
roughly in the order of received events. But with multiple consumers one
of them can so stall all the others.

For that reason the single mem_event buffer for all types of events was
split into individual ring buffers with commit 23842:483c5f8319ad. This
commit made the type member already obsolete because the meaning of each
buffer is now obvious.

This change removes the type member and increases the flags field.

Even though this is an ABI incompatible change, it will have no practical
impact on existing binaries because the changeset referenced above already
bumped the SONAME. So these binaries have to be recompiled anyway for the
upcoming major release.

Signed-off-by: Olaf Hering <olaf@xxxxxxxxx>
Acked-by: Tim Deegan <tim@xxxxxxx>
Committed-by: Tim Deegan <tim@xxxxxxx>
---


diff -r adcd6ab160fa -r 626fa29dc04d xen/arch/x86/hvm/hvm.c
--- a/xen/arch/x86/hvm/hvm.c    Thu Feb 23 10:29:27 2012 +0000
+++ b/xen/arch/x86/hvm/hvm.c    Mon Feb 20 22:09:40 2012 +0100
@@ -4322,7 +4322,6 @@
         return rc;
 
     memset(&req, 0, sizeof(req));
-    req.type = MEM_EVENT_TYPE_ACCESS;
     req.reason = reason;
 
     if ( (p & HVMPME_MODE_MASK) == HVMPME_mode_sync ) 
diff -r adcd6ab160fa -r 626fa29dc04d xen/arch/x86/mm/mem_sharing.c
--- a/xen/arch/x86/mm/mem_sharing.c     Thu Feb 23 10:29:27 2012 +0000
+++ b/xen/arch/x86/mm/mem_sharing.c     Mon Feb 20 22:09:40 2012 +0100
@@ -347,7 +347,7 @@
 static void mem_sharing_notify_helper(struct domain *d, unsigned long gfn)
 {
     struct vcpu *v = current;
-    mem_event_request_t req = { .type = MEM_EVENT_TYPE_SHARED };
+    mem_event_request_t req = { .gfn = gfn };
 
     if ( v->domain != d )
     {
@@ -369,7 +369,6 @@
     req.flags = MEM_EVENT_FLAG_VCPU_PAUSED;
     vcpu_pause_nosync(v);
 
-    req.gfn = gfn;
     req.p2mt = p2m_ram_shared;
     req.vcpu_id = v->vcpu_id;
     mem_event_put_request(d, &d->mem_event->share, &req);
diff -r adcd6ab160fa -r 626fa29dc04d xen/arch/x86/mm/p2m.c
--- a/xen/arch/x86/mm/p2m.c     Thu Feb 23 10:29:27 2012 +0000
+++ b/xen/arch/x86/mm/p2m.c     Mon Feb 20 22:09:40 2012 +0100
@@ -925,7 +925,6 @@
 
     /* Send release notification to pager */
     memset(&req, 0, sizeof(req));
-    req.type = MEM_EVENT_TYPE_PAGING;
     req.gfn = gfn;
     req.flags = MEM_EVENT_FLAG_DROP_PAGE;
 
@@ -982,7 +981,6 @@
         return;
 
     memset(&req, 0, sizeof(req));
-    req.type = MEM_EVENT_TYPE_PAGING;
 
     /* Fix p2m mapping */
     gfn_lock(p2m, gfn, 0);
@@ -1221,7 +1219,6 @@
     {
         *req_ptr = req;
         memset(req, 0, sizeof(req));
-        req->type = MEM_EVENT_TYPE_ACCESS;
         req->reason = MEM_EVENT_REASON_VIOLATION;
 
         /* Pause the current VCPU */
diff -r adcd6ab160fa -r 626fa29dc04d xen/include/public/mem_event.h
--- a/xen/include/public/mem_event.h    Thu Feb 23 10:29:27 2012 +0000
+++ b/xen/include/public/mem_event.h    Mon Feb 20 22:09:40 2012 +0100
@@ -30,11 +30,6 @@
 #include "xen.h"
 #include "io/ring.h"
 
-/* Memory event type */
-#define MEM_EVENT_TYPE_SHARED   0
-#define MEM_EVENT_TYPE_PAGING   1
-#define MEM_EVENT_TYPE_ACCESS   2
-
 /* Memory event flags */
 #define MEM_EVENT_FLAG_VCPU_PAUSED  (1 << 0)
 #define MEM_EVENT_FLAG_DROP_PAGE    (1 << 1)
@@ -56,8 +51,7 @@
 } mem_event_shared_page_t;
 
 typedef struct mem_event_st {
-    uint16_t type;
-    uint16_t flags;
+    uint32_t flags;
     uint32_t vcpu_id;
 
     uint64_t gfn;

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

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