[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] [IA64] allow __assign_domain_page() to assign real MMIO page over _PAGE_IO.
# HG changeset patch # User Isaku Yamahata <yamahata@xxxxxxxxxxxxx> # Date 1224815889 -32400 # Node ID 7ad8c47f5c4b5ef43ec71cb946c39b08eeac3d18 # Parent 02c8733e2d91557a98b6964bfb7e136f0e3924d4 [IA64] allow __assign_domain_page() to assign real MMIO page over _PAGE_IO. When VTD is enabled on HVM domain, P2M entry may change from _PAGE_IO to real MMIO page. Signed-off-by: Anthony Xu <anthony.xu@xxxxxxxxx> --- xen/arch/ia64/xen/mm.c | 8 ++++++++ 1 files changed, 8 insertions(+) diff -r 02c8733e2d91 -r 7ad8c47f5c4b xen/arch/ia64/xen/mm.c --- a/xen/arch/ia64/xen/mm.c Wed Oct 22 17:20:15 2008 +0900 +++ b/xen/arch/ia64/xen/mm.c Fri Oct 24 11:38:09 2008 +0900 @@ -917,10 +917,18 @@ __assign_domain_page(struct domain *d, old_pte = __pte(0); new_pte = pfn_pte(physaddr >> PAGE_SHIFT, __pgprot(prot)); + again_hvm_page_io: ret_pte = ptep_cmpxchg_rel(&d->arch.mm, mpaddr, pte, old_pte, new_pte); if (pte_val(ret_pte) == pte_val(old_pte)) { smp_mb(); return 0; + } + /* in HVM guest, when VTD is enabled, + * P2M entry may change from _PAGE_IO type to real MMIO page + */ + if(VMX_DOMAIN(d->vcpu[0]) && (pte_val(ret_pte) & _PAGE_IO)) { + old_pte = ret_pte; + goto again_hvm_page_io; } // dom0 tries to map real machine's I/O region, but failed. _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |