The bit bugs are in ocaml vcpu affinity calls, and the off-by-one
error is in the ocaml console ring code
Signed-off-by: Zheng Li <zheng.li@xxxxxxxxxxxxx>
Acked-by: Jon Ludlam <jonathan.ludlam@xxxxxxxxxxxxx>
diff -r 48d4f312d069 -r 05ac32c3956c tools/ocaml/libs/xc/xc_stubs.c
--- a/tools/ocaml/libs/xc/xc_stubs.c
+++ b/tools/ocaml/libs/xc/xc_stubs.c
@@ -430,7 +430,7 @@
for (i=0; i<len; i++) {
if (Bool_val(Field(cpumap, i)))
- c_cpumap[i/8] |= i << (i&7);
+ c_cpumap[i/8] |= 1 << (i&7);
}
retval = xc_vcpu_setaffinity(_H(xch), _D(domid),
Int_val(vcpu), c_cpumap);
@@ -466,7 +466,7 @@
ret = caml_alloc(len, 0);
for (i=0; i<len; i++) {
- if (c_cpumap[i%8] & 1 << (i&7))
+ if (c_cpumap[i/8] & 1 << (i&7))
Store_field(ret, i, Val_true);
else
Store_field(ret, i, Val_false);
@@ -523,7 +523,7 @@
CAMLprim value stub_xc_readconsolering(value xch)
{
- unsigned int size = RING_SIZE;
+ unsigned int size = RING_SIZE - 1;
char *ring_ptr = ring;
CAMLparam1(xch);
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|