WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] [PATCH] bypass passthrough MMIO mfns in vram dirty logic

To: "Keir Fraser" <keir.fraser@xxxxxxxxxxxxx>
Subject: [Xen-devel] [PATCH] bypass passthrough MMIO mfns in vram dirty logic
From: "He, Qing" <qing.he@xxxxxxxxx>
Date: Mon, 12 May 2008 16:31:22 +0800
Cc: Kamala Narasimhan <Kamala.Narasimhan@xxxxxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxx, Samuel Thibault <samuel.thibault@xxxxxxxxxxxxx>
Delivery-date: Mon, 12 May 2008 01:31:55 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Thread-index: Aci0Co8mqRldkgOIQi6Z3RFEDn/QdQ==
Thread-topic: [PATCH] bypass passthrough MMIO mfns in vram dirty logic
This patch fixes the fatal page fault when vram dirty logic handles MMIO
of passthrough devices.

Signed-off-by: Qing He <qing.he@xxxxxxxxx>
---


diff -r 810d8c3ac992 xen/arch/x86/mm/shadow/multi.c
--- a/xen/arch/x86/mm/shadow/multi.c    Thu May 08 16:58:33 2008 +0100
+++ b/xen/arch/x86/mm/shadow/multi.c    Tue May 13 00:19:08 2008 +0800
@@ -1268,6 +1268,9 @@ static inline void shadow_vram_get_l1e(s
     if ( !d->dirty_vram ) return;
 
     mfn = shadow_l1e_get_mfn(new_sl1e);
+
+    if ( !mfn_valid(mfn) ) return; /* m2p for mmio_direct may not exist
*/
+
     gfn = mfn_to_gfn(d, mfn);
 
     if ( (gfn >= d->dirty_vram->begin_pfn) && (gfn <
d->dirty_vram->end_pfn) ) {
@@ -1293,6 +1296,9 @@ static inline void shadow_vram_put_l1e(s
     if ( !d->dirty_vram ) return;
 
     mfn = shadow_l1e_get_mfn(old_sl1e);
+
+    if ( !mfn_valid(mfn) ) return;
+
     gfn = mfn_to_gfn(d, mfn);
 
     if ( (gfn >= d->dirty_vram->begin_pfn) && (gfn <
d->dirty_vram->end_pfn) ) {

Attachment: vram-dirty-bypass-mmio-direct.patch
Description: vram-dirty-bypass-mmio-direct.patch

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
<Prev in Thread] Current Thread [Next in Thread>