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] Memory paging domctl support, which is a

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] Memory paging domctl support, which is a sub-operation of the generic memory
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Wed, 16 Dec 2009 22:40:36 -0800
Delivery-date: Wed, 16 Dec 2009 22:42:17 -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 9e67c0a752006cd169a67f9c7f5fdc3eac5194f4
# Parent  33d97bf8a376046feb5941698be997a958b64f79
Memory paging domctl support, which is a sub-operation of the generic memory
event domctl support.

Signed-off-by: Patrick Colp <Patrick.Colp@xxxxxxxxxx>
---
 xen/arch/x86/mm/Makefile         |    1 
 xen/arch/x86/mm/mem_event.c      |    6 ++
 xen/arch/x86/mm/mem_paging.c     |   79 +++++++++++++++++++++++++++++++++++++++
 xen/include/asm-x86/mem_paging.h |   35 +++++++++++++++++
 xen/include/public/domctl.h      |   12 +++++
 5 files changed, 133 insertions(+)

diff -r 33d97bf8a376 -r 9e67c0a75200 xen/arch/x86/mm/Makefile
--- a/xen/arch/x86/mm/Makefile  Thu Dec 17 06:27:55 2009 +0000
+++ b/xen/arch/x86/mm/Makefile  Thu Dec 17 06:27:55 2009 +0000
@@ -7,6 +7,7 @@ obj-y += guest_walk_3.o
 obj-y += guest_walk_3.o
 obj-$(x86_64) += guest_walk_4.o
 obj-y += mem_event.o
+obj-y += mem_paging.o
 
 guest_walk_%.o: guest_walk.c Makefile
        $(CC) $(CFLAGS) -DGUEST_PAGING_LEVELS=$* -c $< -o $@
diff -r 33d97bf8a376 -r 9e67c0a75200 xen/arch/x86/mm/mem_event.c
--- a/xen/arch/x86/mm/mem_event.c       Thu Dec 17 06:27:55 2009 +0000
+++ b/xen/arch/x86/mm/mem_event.c       Thu Dec 17 06:27:55 2009 +0000
@@ -24,6 +24,7 @@
 #include <xen/event.h>
 #include <asm/p2m.h>
 #include <asm/mem_event.h>
+#include <asm/mem_paging.h>
 
 
 #define xen_mb()   mb()
@@ -274,7 +275,12 @@ int mem_event_domctl(struct domain *d, x
         }
     }
     else
+    {
         rc = -ENOSYS;
+
+        if ( mec->mode & XEN_DOMCTL_MEM_EVENT_OP_PAGING )
+            rc = mem_paging_domctl(d, mec, u_domctl);
+    }
 
     return rc;
 }
diff -r 33d97bf8a376 -r 9e67c0a75200 xen/arch/x86/mm/mem_paging.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/arch/x86/mm/mem_paging.c      Thu Dec 17 06:27:55 2009 +0000
@@ -0,0 +1,79 @@
+/******************************************************************************
+ * arch/x86/mm/mem_paging.c
+ *
+ * Memory paging support.
+ *
+ * Copyright (c) 2009 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
+ */
+
+
+#include <asm/p2m.h>
+#include <asm/mem_event.h>
+
+
+int mem_paging_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
+                      XEN_GUEST_HANDLE(void) u_domctl)
+{
+    int rc;
+
+    switch( mec->op )
+    {
+    case XEN_DOMCTL_MEM_EVENT_OP_PAGING_NOMINATE:
+    {
+        unsigned long gfn = mec->gfn;
+        rc = p2m_mem_paging_nominate(d, gfn);
+    }
+    break;
+
+    case XEN_DOMCTL_MEM_EVENT_OP_PAGING_EVICT:
+    {
+        unsigned long gfn = mec->gfn;
+        rc = p2m_mem_paging_evict(d, gfn);
+    }
+    break;
+
+    case XEN_DOMCTL_MEM_EVENT_OP_PAGING_PREP:
+    {
+        unsigned long gfn = mec->gfn;
+        rc = p2m_mem_paging_prep(d, gfn);
+    }
+    break;
+
+    case XEN_DOMCTL_MEM_EVENT_OP_PAGING_RESUME:
+    {
+        p2m_mem_paging_resume(d);
+        rc = 0;
+    }
+    break;
+
+    default:
+        rc = -ENOSYS;
+        break;
+    }
+
+    return rc;
+}
+
+
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r 33d97bf8a376 -r 9e67c0a75200 xen/include/asm-x86/mem_paging.h
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-x86/mem_paging.h  Thu Dec 17 06:27:55 2009 +0000
@@ -0,0 +1,35 @@
+/******************************************************************************
+ * include/asm-x86/mem_paging.h
+ *
+ * Memory paging support.
+ *
+ * Copyright (c) 2009 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
+ */
+
+
+int mem_paging_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec,
+                      XEN_GUEST_HANDLE(void) u_domctl);
+
+
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r 33d97bf8a376 -r 9e67c0a75200 xen/include/public/domctl.h
--- a/xen/include/public/domctl.h       Thu Dec 17 06:27:55 2009 +0000
+++ b/xen/include/public/domctl.h       Thu Dec 17 06:27:55 2009 +0000
@@ -140,6 +140,7 @@ DEFINE_XEN_GUEST_HANDLE(xen_domctl_getme
 #define XEN_DOMCTL_PFINFO_LTABTYPE_MASK (0x7U<<28)
 #define XEN_DOMCTL_PFINFO_LPINTAB (0x1U<<31)
 #define XEN_DOMCTL_PFINFO_XTAB    (0xfU<<28) /* invalid page */
+#define XEN_DOMCTL_PFINFO_PAGEDTAB (0x8U<<28)
 #define XEN_DOMCTL_PFINFO_LTAB_MASK (0xfU<<28)
 
 struct xen_domctl_getpageframeinfo {
@@ -700,6 +701,17 @@ struct xen_domctl_gdbsx_domstatus {
 /* Add and remove memory handlers */
 #define XEN_DOMCTL_MEM_EVENT_OP_ENABLE     0
 #define XEN_DOMCTL_MEM_EVENT_OP_DISABLE    1
+
+/*
+ * Page memory in and out. 
+ */
+#define XEN_DOMCTL_MEM_EVENT_OP_PAGING (1 << 0)
+
+/* Domain memory paging */
+#define XEN_DOMCTL_MEM_EVENT_OP_PAGING_NOMINATE   0
+#define XEN_DOMCTL_MEM_EVENT_OP_PAGING_EVICT      1
+#define XEN_DOMCTL_MEM_EVENT_OP_PAGING_PREP       2
+#define XEN_DOMCTL_MEM_EVENT_OP_PAGING_RESUME     3
 
 struct xen_domctl_mem_event_op {
     uint32_t       op;           /* XEN_DOMCTL_MEM_EVENT_OP_* */

_______________________________________________
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] Memory paging domctl support, which is a sub-operation of the generic memory, Xen patchbot-unstable <=