# HG changeset patch
# User kaf24@xxxxxxxxxxxxxxxxxxxx
# Node ID 6604238412bec090ceaf08bf139ca95403a62504
# Parent 869937819ed95ead0468a6c64b4aa753a4b8ab76
Add XENVER_pagesize hypercall.
Make xen pagesize available through xm info and sysfs.
Signed-off-by: Tristan Gingold <tristan.gingold@xxxxxxxx>
---
linux-2.6-xen-sparse/drivers/xen/core/xen_sysfs.c | 13 +++++++++++++
tools/python/xen/lowlevel/xc/xc.c | 8 +++++++-
tools/python/xen/xend/XendNode.py | 1 +
tools/xm-test/tests/info/02_info_compiledata_pos.py | 3 ++-
xen/common/kernel.c | 5 +++++
xen/include/public/version.h | 5 ++++-
6 files changed, 32 insertions(+), 3 deletions(-)
diff -r 869937819ed9 -r 6604238412be
linux-2.6-xen-sparse/drivers/xen/core/xen_sysfs.c
--- a/linux-2.6-xen-sparse/drivers/xen/core/xen_sysfs.c Tue Jun 27 10:36:51
2006 +0100
+++ b/linux-2.6-xen-sparse/drivers/xen/core/xen_sysfs.c Tue Jun 27 10:44:33
2006 +0100
@@ -225,6 +225,18 @@ static ssize_t virtual_start_show(struct
HYPERVISOR_ATTR_RO(virtual_start);
+static ssize_t pagesize_show(struct hyp_sysfs_attr *attr, char *buffer)
+{
+ int ret;
+
+ ret = HYPERVISOR_xen_version(XENVER_pagesize, NULL);
+ if (ret > 0)
+ ret = sprintf(buffer, "%lx\n", ret);
+ return ret;
+}
+
+HYPERVISOR_ATTR_RO(pagesize);
+
/* eventually there will be several more features to export */
static ssize_t xen_feature_show(int index, char *buffer)
{
@@ -254,6 +266,7 @@ static struct attribute *xen_properties_
&capabilities_attr.attr,
&changeset_attr.attr,
&virtual_start_attr.attr,
+ &pagesize_attr.attr,
&writable_pt_attr.attr,
NULL
};
diff -r 869937819ed9 -r 6604238412be tools/python/xen/lowlevel/xc/xc.c
--- a/tools/python/xen/lowlevel/xc/xc.c Tue Jun 27 10:36:51 2006 +0100
+++ b/tools/python/xen/lowlevel/xc/xc.c Tue Jun 27 10:44:33 2006 +0100
@@ -637,6 +637,7 @@ static PyObject *pyxc_xeninfo(XcObject *
xen_capabilities_info_t xen_caps;
xen_platform_parameters_t p_parms;
long xen_version;
+ long xen_pagesize;
char str[128];
xen_version = xc_version(self->xc_handle, XENVER_version, NULL);
@@ -658,11 +659,16 @@ static PyObject *pyxc_xeninfo(XcObject *
sprintf(str, "virt_start=0x%lx", p_parms.virt_start);
- return Py_BuildValue("{s:i,s:i,s:s,s:s,s:s,s:s,s:s,s:s,s:s,s:s}",
+ xen_pagesize = xc_version(self->xc_handle, XENVER_pagesize, NULL);
+ if (xen_pagesize < 0 )
+ return PyErr_SetFromErrno(xc_error);
+
+ return Py_BuildValue("{s:i,s:i,s:s,s:s,s:i,s:s,s:s,s:s,s:s,s:s,s:s}",
"xen_major", xen_version >> 16,
"xen_minor", (xen_version & 0xffff),
"xen_extra", xen_extra,
"xen_caps", xen_caps,
+ "xen_pagesize", xen_pagesize,
"platform_params", str,
"xen_changeset", xen_chgset,
"cc_compiler", xen_cc.compiler,
diff -r 869937819ed9 -r 6604238412be tools/python/xen/xend/XendNode.py
--- a/tools/python/xen/xend/XendNode.py Tue Jun 27 10:36:51 2006 +0100
+++ b/tools/python/xen/xend/XendNode.py Tue Jun 27 10:44:33 2006 +0100
@@ -86,6 +86,7 @@ class XendNode:
'xen_minor',
'xen_extra',
'xen_caps',
+ 'xen_pagesize',
'platform_params',
'xen_changeset',
'cc_compiler',
diff -r 869937819ed9 -r 6604238412be
tools/xm-test/tests/info/02_info_compiledata_pos.py
--- a/tools/xm-test/tests/info/02_info_compiledata_pos.py Tue Jun 27
10:36:51 2006 +0100
+++ b/tools/xm-test/tests/info/02_info_compiledata_pos.py Tue Jun 27
10:44:33 2006 +0100
@@ -24,7 +24,8 @@ for line in lines:
map[pieces[0]] = pieces[1]
for field in ["cores_per_socket", "threads_per_core", "cpu_mhz",
- "total_memory", "free_memory", "xen_major", "xen_minor"]:
+ "total_memory", "free_memory", "xen_major", "xen_minor",
+ "xen_pagesize"]:
val = map[field]
if not val.isdigit():
FAIL("Numeric field %s not all-numbers: %s" % (field, val))
diff -r 869937819ed9 -r 6604238412be xen/common/kernel.c
--- a/xen/common/kernel.c Tue Jun 27 10:36:51 2006 +0100
+++ b/xen/common/kernel.c Tue Jun 27 10:44:33 2006 +0100
@@ -212,6 +212,11 @@ long do_xen_version(int cmd, XEN_GUEST_H
return 0;
}
+ case XENVER_pagesize:
+ {
+ return (guest_handle_is_null(arg) ? -EINVAL : PAGE_SIZE);
+ }
+
}
return -ENOSYS;
diff -r 869937819ed9 -r 6604238412be xen/include/public/version.h
--- a/xen/include/public/version.h Tue Jun 27 10:36:51 2006 +0100
+++ b/xen/include/public/version.h Tue Jun 27 10:44:33 2006 +0100
@@ -10,7 +10,7 @@
#ifndef __XEN_PUBLIC_VERSION_H__
#define __XEN_PUBLIC_VERSION_H__
-/* NB. All ops return zero on success, except XENVER_version. */
+/* NB. All ops return zero on success, except XENVER_{version,pagesize} */
/* arg == NULL; returns major:minor (16:16). */
#define XENVER_version 0
@@ -54,6 +54,9 @@ typedef struct xen_feature_info xen_feat
/* Declares the features reported by XENVER_get_features. */
#include "features.h"
+/* arg == NULL; returns host memory page size. */
+#define XENVER_pagesize 7
+
#endif /* __XEN_PUBLIC_VERSION_H__ */
/*
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|