One of the patches for novell_shim support breaks the marshalling of
arguments between python and C code in one portion of the xen api.
The effect of this bug is that the extid and vcpu parameters are swapped
when constructing the environment for the hvmloader. The corrected hunk
for the hv_tools.patch from the xen-3.4.1-testing SRPM is below. The
correction is to swap the "&vcpus" and "&extid" arguments to
PyArg_Parse_tupleAndKeywords() so the order matches the strings in the
kwd_list.
Without this change I could not boot a FreeBSD DomU as a vcpu of 0 (taken
from extid being 0) prevents the hvmloader from creating local APIC entries
in the MADT. Mucking with extid in an effort to cause vcpus to be set for
the hvmloader, causes the Novell shim to be activated, which prevents
FreeBSD from attaching to Xen for PV driver support (FreeBSD doesn't scan
high enough yet in the cpuid space to see that XenVMM support has been
shifted to a higher region).
--
Justin
Index: xen-3.4.1-testing/tools/python/xen/lowlevel/xc/xc.c
===================================================================
--- xen-3.4.1-testing.orig/tools/python/xen/lowlevel/xc/xc.c
+++ xen-3.4.1-testing/tools/python/xen/lowlevel/xc/xc.c
@@ -890,14 +890,14 @@ static PyObject *pyxc_hvm_build(XcObject
int i;
#endif
char *image;
- int memsize, target=-1, vcpus = 1, acpi = 0, apic = 1;
+ int memsize, target=-1, vcpus = 1, acpi = 0, apic = 1, extid=0;
static char *kwd_list[] = { "domid",
- "memsize", "image", "target", "vcpus",
"acpi",
- "apic", NULL };
- if ( !PyArg_ParseTupleAndKeywords(args, kwds, "iis|iiii", kwd_list,
- &dom, &memsize, &image, &target, &vcpus,
- &acpi, &apic) )
+ "memsize", "image", "target", "vcpus",
"extid",
+ "acpi", "apic", NULL };
+ if ( !PyArg_ParseTupleAndKeywords(args, kwds, "iis|iiiii", kwd_list,
+ &dom, &memsize, &image, &target, &vcpus,
+ &extid, &acpi, &apic) )
return NULL;
if ( target == -1 )
@@ -923,6 +923,7 @@ static PyObject *pyxc_hvm_build(XcObject
va_hvm->checksum -= sum;
munmap(va_map, XC_PAGE_SIZE);
#endif
+ xc_set_hvm_param(self->xc_handle, dom, HVM_PARAM_EXTEND_HYPERVISOR,
extid);
return Py_BuildValue("{}");
}
--
To unsubscribe, e-mail: opensuse-virtual+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-virtual+help(a)opensuse.org