[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] xend: Fix bug of cpu affinity/ vcpu pin under ia32pae
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1269970299 -3600 # Node ID ebd84be3420a4453b3024d3378d8d84b81f44118 # Parent 1ee6dd3152aab8c047755598e83e094cebf0effc xend: Fix bug of cpu affinity/ vcpu pin under ia32pae c/s 21040 and 21044 used to break cpu number limit (<=64). However, they result in bug under ia32pae model: 1. things will go wrong for affinity, making all vcpus pin to a same cpu with same time; 2. when 'xm vcpu-pin' vpu to cpu, xend will exit abnormally. This patch is to fix the bugs described above. Signed-off-by: Xu, Jiajun <jiajun.xu@xxxxxxxxx> Signed-off-by: Zhang, Jianwu <jianwu.zhang@xxxxxxxx> Signed-off-by: Liu, Jinsong <jinsong.liu@xxxxxxxxx> --- tools/python/xen/lowlevel/xc/xc.c | 12 ++++-------- 1 files changed, 4 insertions(+), 8 deletions(-) diff -r 1ee6dd3152aa -r ebd84be3420a tools/python/xen/lowlevel/xc/xc.c --- a/tools/python/xen/lowlevel/xc/xc.c Tue Mar 30 18:30:30 2010 +0100 +++ b/tools/python/xen/lowlevel/xc/xc.c Tue Mar 30 18:31:39 2010 +0100 @@ -218,8 +218,7 @@ static PyObject *pyxc_vcpu_setaffinity(X uint64_t *cpumap; PyObject *cpulist = NULL; int nr_cpus, size; - xc_physinfo_t info; - xc_cpu_to_node_t map[1]; + xc_physinfo_t info = {0}; uint64_t cpumap_size = sizeof(*cpumap); static char *kwd_list[] = { "domid", "vcpu", "cpumap", NULL }; @@ -228,8 +227,6 @@ static PyObject *pyxc_vcpu_setaffinity(X &dom, &vcpu, &cpulist) ) return NULL; - set_xen_guest_handle(info.cpu_to_node, map); - info.max_cpu_id = 1; if ( xc_physinfo(self->xc_handle, &info) != 0 ) return pyxc_error_to_exception(); @@ -381,7 +378,6 @@ static PyObject *pyxc_vcpu_getinfo(XcObj uint64_t *cpumap; int nr_cpus, size; xc_physinfo_t pinfo = { 0 }; - xc_cpu_to_node_t map[1]; uint64_t cpumap_size = sizeof(*cpumap); static char *kwd_list[] = { "domid", "vcpu", NULL }; @@ -390,18 +386,18 @@ static PyObject *pyxc_vcpu_getinfo(XcObj &dom, &vcpu) ) return NULL; - set_xen_guest_handle(pinfo.cpu_to_node, map); - pinfo.max_cpu_id = 1; if ( xc_physinfo(self->xc_handle, &pinfo) != 0 ) return pyxc_error_to_exception(); nr_cpus = pinfo.nr_cpus; + rc = xc_vcpu_getinfo(self->xc_handle, dom, vcpu, &info); if ( rc < 0 ) return pyxc_error_to_exception(); + size = (nr_cpus + cpumap_size * 8 - 1)/ (cpumap_size * 8); - if((cpumap = malloc(cpumap_size * size)) == NULL) return pyxc_error_to_exception(); + memset(cpumap, 0, cpumap_size * size); rc = xc_vcpu_getaffinity(self->xc_handle, dom, vcpu, cpumap, cpumap_size * size); if ( rc < 0 ) _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |