|
Markus Armbruster |
0f978b1 |
# HG changeset patch
|
|
Markus Armbruster |
0f978b1 |
# User Ian Campbell <ian.campbell@xensource.com>
|
|
Markus Armbruster |
0f978b1 |
# Date 1179248088 -3600
|
|
Markus Armbruster |
0f978b1 |
# Node ID 5c7a1e3abd5433c7b2eff6950bd566ec9d500eba
|
|
Markus Armbruster |
0f978b1 |
# Parent e1f43038f1d803aabbb9b25f1713cfea0123c053
|
|
Markus Armbruster |
0f978b1 |
[BUILDER] Propagate the native protocol ABI for a guest out of the
|
|
Markus Armbruster |
0f978b1 |
domain builder and in to python code.
|
|
Markus Armbruster |
0f978b1 |
|
|
Markus Armbruster |
0f978b1 |
This knowledge will be useful to allow us to pre-seed the protocol
|
|
Markus Armbruster |
0f978b1 |
field in a VBD entry in xenstore which will allow us to run older
|
|
Markus Armbruster |
0f978b1 |
kernels in a 32on64 mixed environment.
|
|
Markus Armbruster |
0f978b1 |
|
|
Markus Armbruster |
0f978b1 |
Signed-off-by: Ian Campbell <ian.campbell@xensource.com>
|
|
Markus Armbruster |
0f978b1 |
|
|
Markus Armbruster |
0f978b1 |
diff -r e1f43038f1d8 -r 5c7a1e3abd54 tools/libxc/xc_dom.h
|
|
Markus Armbruster |
0f978b1 |
--- a/tools/libxc/xc_dom.h Tue May 15 17:01:57 2007 +0100
|
|
Markus Armbruster |
0f978b1 |
+++ b/tools/libxc/xc_dom.h Tue May 15 17:54:48 2007 +0100
|
|
Markus Armbruster |
0f978b1 |
@@ -136,6 +136,7 @@ struct xc_dom_arch {
|
|
Markus Armbruster |
0f978b1 |
int (*vcpu) (struct xc_dom_image * dom, void *vcpu_ctxt);
|
|
Markus Armbruster |
0f978b1 |
|
|
Markus Armbruster |
0f978b1 |
char *guest_type;
|
|
Markus Armbruster |
0f978b1 |
+ char *native_protocol;
|
|
Markus Armbruster |
0f978b1 |
int page_shift;
|
|
Markus Armbruster |
0f978b1 |
int sizeof_pfn;
|
|
Markus Armbruster |
0f978b1 |
|
|
Markus Armbruster |
0f978b1 |
diff -r e1f43038f1d8 -r 5c7a1e3abd54 tools/libxc/xc_dom_x86.c
|
|
Markus Armbruster |
0f978b1 |
--- a/tools/libxc/xc_dom_x86.c Tue May 15 17:01:57 2007 +0100
|
|
Markus Armbruster |
0f978b1 |
+++ b/tools/libxc/xc_dom_x86.c Tue May 15 17:54:48 2007 +0100
|
|
Markus Armbruster |
0f978b1 |
@@ -19,6 +19,7 @@
|
|
Markus Armbruster |
0f978b1 |
#include <xen/foreign/x86_64.h>
|
|
Markus Armbruster |
0f978b1 |
#include <xen/hvm/hvm_info_table.h>
|
|
Markus Armbruster |
0f978b1 |
#include <xen/hvm/e820.h>
|
|
Markus Armbruster |
0f978b1 |
+#include <xen/io/protocols.h>
|
|
Markus Armbruster |
0f978b1 |
|
|
Markus Armbruster |
0f978b1 |
#include "xg_private.h"
|
|
Markus Armbruster |
0f978b1 |
#include "xc_dom.h"
|
|
Markus Armbruster |
0f978b1 |
@@ -589,6 +590,7 @@ static int vcpu_x86_64(struct xc_dom_ima
|
|
Markus Armbruster |
0f978b1 |
|
|
Markus Armbruster |
0f978b1 |
static struct xc_dom_arch xc_dom_32 = {
|
|
Markus Armbruster |
0f978b1 |
.guest_type = "xen-3.0-x86_32",
|
|
Markus Armbruster |
0f978b1 |
+ .native_protocol = XEN_IO_PROTO_ABI_X86_32,
|
|
Markus Armbruster |
0f978b1 |
.page_shift = PAGE_SHIFT_X86,
|
|
Markus Armbruster |
0f978b1 |
.sizeof_pfn = 4,
|
|
Markus Armbruster |
0f978b1 |
.alloc_magic_pages = alloc_magic_pages,
|
|
Markus Armbruster |
0f978b1 |
@@ -600,6 +602,7 @@ static struct xc_dom_arch xc_dom_32 = {
|
|
Markus Armbruster |
0f978b1 |
};
|
|
Markus Armbruster |
0f978b1 |
static struct xc_dom_arch xc_dom_32_pae = {
|
|
Markus Armbruster |
0f978b1 |
.guest_type = "xen-3.0-x86_32p",
|
|
Markus Armbruster |
0f978b1 |
+ .native_protocol = XEN_IO_PROTO_ABI_X86_32,
|
|
Markus Armbruster |
0f978b1 |
.page_shift = PAGE_SHIFT_X86,
|
|
Markus Armbruster |
0f978b1 |
.sizeof_pfn = 4,
|
|
Markus Armbruster |
0f978b1 |
.alloc_magic_pages = alloc_magic_pages,
|
|
Markus Armbruster |
0f978b1 |
@@ -612,6 +615,7 @@ static struct xc_dom_arch xc_dom_32_pae
|
|
Markus Armbruster |
0f978b1 |
|
|
Markus Armbruster |
0f978b1 |
static struct xc_dom_arch xc_dom_64 = {
|
|
Markus Armbruster |
0f978b1 |
.guest_type = "xen-3.0-x86_64",
|
|
Markus Armbruster |
0f978b1 |
+ .native_protocol = XEN_IO_PROTO_ABI_X86_64,
|
|
Markus Armbruster |
0f978b1 |
.page_shift = PAGE_SHIFT_X86,
|
|
Markus Armbruster |
0f978b1 |
.sizeof_pfn = 8,
|
|
Markus Armbruster |
0f978b1 |
.alloc_magic_pages = alloc_magic_pages,
|
|
Markus Armbruster |
0f978b1 |
diff -r e1f43038f1d8 -r 5c7a1e3abd54 tools/python/xen/lowlevel/xc/xc.c
|
|
Markus Armbruster |
0f978b1 |
--- a/tools/python/xen/lowlevel/xc/xc.c Tue May 15 17:01:57 2007 +0100
|
|
Markus Armbruster |
0f978b1 |
+++ b/tools/python/xen/lowlevel/xc/xc.c Tue May 15 17:54:48 2007 +0100
|
|
Markus Armbruster |
0f978b1 |
@@ -407,6 +407,7 @@ static PyObject *pyxc_linux_build(XcObje
|
|
Markus Armbruster |
0f978b1 |
unsigned long console_mfn = 0;
|
|
Markus Armbruster |
0f978b1 |
PyObject* elfnote_dict;
|
|
Markus Armbruster |
0f978b1 |
PyObject* elfnote = NULL;
|
|
Markus Armbruster |
0f978b1 |
+ PyObject* ret;
|
|
Markus Armbruster |
0f978b1 |
int i;
|
|
Markus Armbruster |
0f978b1 |
|
|
Markus Armbruster |
0f978b1 |
static char *kwd_list[] = { "domid", "store_evtchn", "memsize",
|
|
Markus Armbruster |
0f978b1 |
@@ -455,12 +456,22 @@ static PyObject *pyxc_linux_build(XcObje
|
|
Markus Armbruster |
0f978b1 |
Py_DECREF(elfnote);
|
|
Markus Armbruster |
0f978b1 |
}
|
|
Markus Armbruster |
0f978b1 |
|
|
Markus Armbruster |
0f978b1 |
+ ret = Py_BuildValue("{s:i,s:i,s:N}",
|
|
Markus Armbruster |
0f978b1 |
+ "store_mfn", store_mfn,
|
|
Markus Armbruster |
0f978b1 |
+ "console_mfn", console_mfn,
|
|
Markus Armbruster |
0f978b1 |
+ "notes", elfnote_dict);
|
|
Markus Armbruster |
0f978b1 |
+
|
|
Markus Armbruster |
0f978b1 |
+ if ( dom->arch_hooks->native_protocol )
|
|
Markus Armbruster |
0f978b1 |
+ {
|
|
Markus Armbruster |
0f978b1 |
+ PyObject *native_protocol =
|
|
Markus Armbruster |
0f978b1 |
+ Py_BuildValue("s", dom->arch_hooks->native_protocol);
|
|
Markus Armbruster |
0f978b1 |
+ PyDict_SetItemString(ret, "native_protocol", native_protocol);
|
|
Markus Armbruster |
0f978b1 |
+ Py_DECREF(native_protocol);
|
|
Markus Armbruster |
0f978b1 |
+ }
|
|
Markus Armbruster |
0f978b1 |
+
|
|
Markus Armbruster |
0f978b1 |
xc_dom_release(dom);
|
|
Markus Armbruster |
0f978b1 |
|
|
Markus Armbruster |
0f978b1 |
- return Py_BuildValue("{s:i,s:i,s:N}",
|
|
Markus Armbruster |
0f978b1 |
- "store_mfn", store_mfn,
|
|
Markus Armbruster |
0f978b1 |
- "console_mfn", console_mfn,
|
|
Markus Armbruster |
0f978b1 |
- "notes", elfnote_dict);
|
|
Markus Armbruster |
0f978b1 |
+ return ret;
|
|
Markus Armbruster |
0f978b1 |
|
|
Markus Armbruster |
0f978b1 |
out:
|
|
Markus Armbruster |
0f978b1 |
xc_dom_release(dom);
|