From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andres Lagar-Cavilla Subject: [PATCH] Flag events caused by foreign domains Date: Thu, 01 Dec 2011 15:56:13 -0500 Message-ID: <2a4ec2e2ae36593aa74e.1322772973@xdev.gridcentric.ca> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com Cc: andres@gridcentric.ca, keir.xen@gmail.com, tim@xen.org, olaf@aepfle.de, adin@gridcentric.ca List-Id: xen-devel@lists.xenproject.org xen/arch/x86/mm/mem_event.c | 6 ++++++ xen/include/public/mem_event.h | 1 + 2 files changed, 7 insertions(+), 0 deletions(-) Add a new flag for mem events, as consumers might need to discriminate foreign domain-caused from guest-caused events. The vcpu field of an event is bogus from a consumer p.o.v. for foreign domain-caused events. Also assert that we shouldn't be pausing foreign vcpus. Signed-off-by: Andres Lagar-Cavilla diff -r 8ad7af68e017 -r 2a4ec2e2ae36 xen/arch/x86/mm/mem_event.c --- a/xen/arch/x86/mm/mem_event.c +++ b/xen/arch/x86/mm/mem_event.c @@ -143,6 +143,12 @@ void mem_event_put_request(struct domain front_ring = &med->front_ring; req_prod = front_ring->req_prod_pvt; + if ( current->domain != d ) + { + req->flags |= MEM_EVENT_FLAG_FOREIGN; + ASSERT( !(req->flags & MEM_EVENT_FLAG_VCPU_PAUSED) ); + } + /* Copy request */ memcpy(RING_GET_REQUEST(front_ring, req_prod), req, sizeof(*req)); req_prod++; diff -r 8ad7af68e017 -r 2a4ec2e2ae36 xen/include/public/mem_event.h --- a/xen/include/public/mem_event.h +++ b/xen/include/public/mem_event.h @@ -39,6 +39,7 @@ #define MEM_EVENT_FLAG_VCPU_PAUSED (1 << 0) #define MEM_EVENT_FLAG_DROP_PAGE (1 << 1) #define MEM_EVENT_FLAG_EVICT_FAIL (1 << 2) +#define MEM_EVENT_FLAG_FOREIGN (1 << 3) /* Reasons for the memory event request */ #define MEM_EVENT_REASON_UNKNOWN 0 /* typical reason */