From f32a69e5884d13d165fa381d43fe60790dfb4b7b Mon Sep 17 00:00:00 2001 From: Ian Campbell Date: Tue, 15 May 2007 17:54:48 +0100 Subject: [BUILDER] Propagate the native protocol ABI for a guest out of the domain builder and in to python code. This knowledge will be useful to allow us to pre-seed the protocol field in a VBD entry in xenstore which will allow us to run older kernels in a 32on64 mixed environment. Signed-off-by: Ian Campbell --- tools/libxc/xc_dom.h | 1 + tools/libxc/xc_dom_x86.c | 4 ++++ tools/python/xen/lowlevel/xc/xc.c | 19 +++++++++++++++---- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/tools/libxc/xc_dom.h b/tools/libxc/xc_dom.h index 7c00c45cc5..2a42b874fe 100644 --- a/tools/libxc/xc_dom.h +++ b/tools/libxc/xc_dom.h @@ -136,6 +136,7 @@ struct xc_dom_arch { int (*vcpu) (struct xc_dom_image * dom, void *vcpu_ctxt); char *guest_type; + char *native_protocol; int page_shift; int sizeof_pfn; diff --git a/tools/libxc/xc_dom_x86.c b/tools/libxc/xc_dom_x86.c index 97fd298d6b..c94dfe0ea8 100644 --- a/tools/libxc/xc_dom_x86.c +++ b/tools/libxc/xc_dom_x86.c @@ -19,6 +19,7 @@ #include #include #include +#include #include "xg_private.h" #include "xc_dom.h" @@ -589,6 +590,7 @@ static int vcpu_x86_64(struct xc_dom_image *dom, void *ptr) static struct xc_dom_arch xc_dom_32 = { .guest_type = "xen-3.0-x86_32", + .native_protocol = XEN_IO_PROTO_ABI_X86_32, .page_shift = PAGE_SHIFT_X86, .sizeof_pfn = 4, .alloc_magic_pages = alloc_magic_pages, @@ -600,6 +602,7 @@ static struct xc_dom_arch xc_dom_32 = { }; static struct xc_dom_arch xc_dom_32_pae = { .guest_type = "xen-3.0-x86_32p", + .native_protocol = XEN_IO_PROTO_ABI_X86_32, .page_shift = PAGE_SHIFT_X86, .sizeof_pfn = 4, .alloc_magic_pages = alloc_magic_pages, @@ -612,6 +615,7 @@ static struct xc_dom_arch xc_dom_32_pae = { static struct xc_dom_arch xc_dom_64 = { .guest_type = "xen-3.0-x86_64", + .native_protocol = XEN_IO_PROTO_ABI_X86_64, .page_shift = PAGE_SHIFT_X86, .sizeof_pfn = 8, .alloc_magic_pages = alloc_magic_pages, diff --git a/tools/python/xen/lowlevel/xc/xc.c b/tools/python/xen/lowlevel/xc/xc.c index c40a900cb3..cf555f4469 100644 --- a/tools/python/xen/lowlevel/xc/xc.c +++ b/tools/python/xen/lowlevel/xc/xc.c @@ -407,6 +407,7 @@ static PyObject *pyxc_linux_build(XcObject *self, unsigned long console_mfn = 0; PyObject* elfnote_dict; PyObject* elfnote = NULL; + PyObject* ret; int i; static char *kwd_list[] = { "domid", "store_evtchn", "memsize", @@ -455,12 +456,22 @@ static PyObject *pyxc_linux_build(XcObject *self, Py_DECREF(elfnote); } + ret = Py_BuildValue("{s:i,s:i,s:N}", + "store_mfn", store_mfn, + "console_mfn", console_mfn, + "notes", elfnote_dict); + + if ( dom->arch_hooks->native_protocol ) + { + PyObject *native_protocol = + Py_BuildValue("s", dom->arch_hooks->native_protocol); + PyDict_SetItemString(ret, "native_protocol", native_protocol); + Py_DECREF(native_protocol); + } + xc_dom_release(dom); - return Py_BuildValue("{s:i,s:i,s:N}", - "store_mfn", store_mfn, - "console_mfn", console_mfn, - "notes", elfnote_dict); + return ret; out: xc_dom_release(dom); -- cgit v1.2.3