WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] Base domain structure and public interfac

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] Base domain structure and public interface to support memory events.
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Wed, 16 Dec 2009 22:40:19 -0800
Delivery-date: Wed, 16 Dec 2009 22:40:42 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1261031275 0
# Node ID 49ad2a499edba92874590ecf72a7c7d216576099
# Parent  ba42d74c9adc0bb73f06236d15e241e55777fe96
Base domain structure and public interface to support memory events.

Signed-off-by: Patrick Colp <Patrick.Colp@xxxxxxxxxx>
---
 xen/include/public/mem_event.h |   67 +++++++++++++++++++++++++++++++++++++++++
 xen/include/public/xen.h       |    1 
 xen/include/xen/sched.h        |   30 ++++++++++++++++++
 3 files changed, 98 insertions(+)

diff -r ba42d74c9adc -r 49ad2a499edb xen/include/public/mem_event.h
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/public/mem_event.h    Thu Dec 17 06:27:55 2009 +0000
@@ -0,0 +1,67 @@
+/******************************************************************************
+ * mem_event.h
+ *
+ * Memory event common structures.
+ *
+ * Copyright (c) 2009 by Citrix (R&D) Ltd. (Patrick Colp)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef _XEN_PUBLIC_MEM_EVENT_H
+#define _XEN_PUBLIC_MEM_EVENT_H
+
+
+#include "xen.h"
+#include "io/ring.h"
+
+
+/* Memory event notification modes */
+#define MEM_EVENT_MODE_ASYNC    0
+#define MEM_EVENT_MODE_SYNC     (1 << 0)
+#define MEM_EVENT_MODE_SYNC_ALL (1 << 1)
+
+/* Memory event flags */
+#define MEM_EVENT_FLAG_PAUSED   (1 << 0)
+
+
+typedef struct mem_event_shared_page {
+    int port;
+} mem_event_shared_page_t;
+
+typedef struct mem_event_st {
+    unsigned long gfn;
+    unsigned long offset;
+    unsigned long p2mt;
+    int vcpu_id;
+    uint64_t flags;
+} mem_event_request_t, mem_event_response_t;
+
+
+DEFINE_RING_TYPES(mem_event, mem_event_request_t, mem_event_response_t);
+
+
+#endif
+
+
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r ba42d74c9adc -r 49ad2a499edb xen/include/public/xen.h
--- a/xen/include/public/xen.h  Thu Dec 17 06:27:55 2009 +0000
+++ b/xen/include/public/xen.h  Thu Dec 17 06:27:55 2009 +0000
@@ -146,6 +146,7 @@ DEFINE_XEN_GUEST_HANDLE(xen_pfn_t);
 #define VIRQ_XENOPROF   7  /* V. XenOprofile interrupt: new sample available */
 #define VIRQ_CON_RING   8  /* G. (DOM0) Bytes received on console            */
 #define VIRQ_PCPU_STATE 9  /* G. (DOM0) PCPU state changed                   */
+#define VIRQ_MEM_EVENT  10 /* G. (DOM0) A memory event has occured           */
 
 /* Architecture-specific VIRQ definitions. */
 #define VIRQ_ARCH_0    16
diff -r ba42d74c9adc -r 49ad2a499edb xen/include/xen/sched.h
--- a/xen/include/xen/sched.h   Thu Dec 17 06:27:55 2009 +0000
+++ b/xen/include/xen/sched.h   Thu Dec 17 06:27:55 2009 +0000
@@ -20,6 +20,7 @@
 #include <xen/rcupdate.h>
 #include <xen/irq.h>
 #include <xen/mm.h>
+#include <public/mem_event.h>
 
 #ifdef CONFIG_COMPAT
 #include <compat/vcpu.h>
@@ -161,6 +162,32 @@ struct vcpu
 #define domain_unlock(d) spin_unlock_recursive(&(d)->domain_lock)
 #define domain_is_locked(d) spin_is_locked(&(d)->domain_lock)
 
+/* Memory event */
+struct mem_event_domain
+{
+    /* ring lock */
+    spinlock_t ring_lock;
+    /* shared page */
+    mem_event_shared_page_t *shared_page;
+    /* shared ring page */
+    void *ring_page;
+    /* front-end ring */
+    mem_event_front_ring_t front_ring;
+    /* if domain has been paused due to ring contention */
+    bool_t paused;
+    int paused_vcpus[MAX_VIRT_CPUS];
+    /* the memory event mode */
+    unsigned long mode;
+    /* domain to receive memory events */
+    struct domain *domain;
+    /* enabled? */
+    bool_t enabled;
+    /* event channel port (vcpu0 only) */
+    int xen_port;
+    /* tasklet */
+    struct tasklet tasklet;
+};
+ 
 struct domain
 {
     domid_t          domain_id;
@@ -277,6 +304,9 @@ struct domain
 
     /* Non-migratable and non-restoreable? */
     bool_t disable_migrate;
+
+    /* Memory paging support */
+    struct mem_event_domain mem_event;
 };
 
 struct domain_setup_info

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] Base domain structure and public interface to support memory events., Xen patchbot-unstable <=