[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] The dom0_ops implementation wasn't matching the interface definition,
# HG changeset patch # User kaf24@xxxxxxxxxxxxxxxxxxxx # Node ID 9efe7eb108e104d2f78daed2516ead08a33e7e81 # Parent ecc20905cde3e0376f0308ec475297fff9255852 The dom0_ops implementation wasn't matching the interface definition, leading to ill messages when X starts up (and potentially to other problems). The attached patch fixes that. However, it also points out that there is a potential disagreement between the dom0_ops interface and the internal MTRR interface - the former expects an unsigned register number from the domain, the latter wants a signed one and does a lookup when it's negative. I would think that the lookup code should just be ripped out of xen/arch/x86/mtrr/main.c. Signed-off-by: Jan Beulich <JBeulich@xxxxxxxxxx> diff -r ecc20905cde3 -r 9efe7eb108e1 xen/arch/x86/dom0_ops.c --- a/xen/arch/x86/dom0_ops.c Wed Jan 4 17:47:11 2006 +++ b/xen/arch/x86/dom0_ops.c Wed Jan 4 17:51:38 2006 @@ -103,12 +103,27 @@ op->u.add_memtype.nr_pfns, op->u.add_memtype.type, 1); + if (ret > 0) + { + (void)__put_user(0, &u_dom0_op->u.add_memtype.handle); + (void)__put_user(ret, &u_dom0_op->u.add_memtype.reg); + ret = 0; + } } break; case DOM0_DEL_MEMTYPE: { - ret = mtrr_del_page(op->u.del_memtype.reg, 0, 0); + if (op->u.del_memtype.handle == 0 + /* mtrr/main.c otherwise does a lookup */ + && (int)op->u.del_memtype.reg >= 0) + { + ret = mtrr_del_page(op->u.del_memtype.reg, 0, 0); + if (ret > 0) + ret = 0; + } + else + ret = -EINVAL; } break; @@ -179,7 +194,7 @@ memcpy(pi->hw_cap, boot_cpu_data.x86_capability, NCAPINTS*4); ret = 0; if ( copy_to_user(u_dom0_op, op, sizeof(*op)) ) - ret = -EFAULT; + ret = -EFAULT; } break; _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |