|
|
|
|
|
|
|
|
|
|
xen-devel
[Xen-devel] Please pull xen-ia64-unstable.hg
Hi Keir,
We've got one patch in the tree that we'd like to try to get into
3.0.5. Please pull:
http://xenbits.xensource.com/ext/xen-ia64-unstable.hg
and if you don't plan another sweep of xen-unstable, please import the
patch below into http://xenbits.xensource.com/xen-3.0.5-testing.hg
Thanks,
Alex
# HG changeset patch
# User Alex Williamson <alex.williamson@xxxxxx>
# Date 1177427244 21600
# Node ID ef5da9ca01711045a9206fcbc884bf11508dde45
# Parent 039daabebad5d3c69fb9497693e8e3fd4fee00c9
[IA64] Fix ptc.g race
If one vcpu is executing ptc.g, while the other vcpu is executing itc,
the VHPT(VTLB) entry which should be purged may unexpectedly survive.
Then issue happens.
Signed-off-by: Anthony Xu <anthony.xu@xxxxxxxxx>
diff -r 039daabebad5 -r ef5da9ca0171 xen/arch/ia64/vmx/vtlb.c
--- a/xen/arch/ia64/vmx/vtlb.c Fri Apr 13 16:07:48 2007 +0100
+++ b/xen/arch/ia64/vmx/vtlb.c Tue Apr 24 09:07:24 2007 -0600
@@ -168,6 +168,7 @@ static void vmx_vhpt_insert(thash_cb_t *
else{
cch = __alloc_chain(hcb);
}
+ local_irq_disable();
*cch = *head;
head->page_flags=pte;
head->itir = rr.ps << 2;
@@ -175,6 +176,7 @@ static void vmx_vhpt_insert(thash_cb_t *
head->next = cch;
head->len = cch->len+1;
cch->len = 0;
+ local_irq_enable();
return;
}
@@ -424,14 +426,14 @@ void vtlb_insert(VCPU *v, u64 pte, u64 i
else {
cch = __alloc_chain(hcb);
}
- *cch = *hash_table;
- hash_table->page_flags = pte;
- hash_table->itir=itir;
- hash_table->etag=tag;
+ cch->page_flags = pte;
+ cch->itir = itir;
+ cch->etag = tag;
+ cch->next = hash_table->next;
+ wmb();
hash_table->next = cch;
- hash_table->len = cch->len + 1;
- cch->len = 0;
- return ;
+ hash_table->len += 1;
+ return;
}
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
|
|
|
|