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

xen-devel

[Top] [All Lists]

[Xen-devel] [PATCH] xen: allow guests to set caching attributes for MMIO

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] [PATCH] xen: allow guests to set caching attributes for MMIOs
From: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
Date: Wed, 7 Apr 2010 17:38:28 +0100
Delivery-date: 2010年4月07日 09:38:54 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
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/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Alpine 2.00 (DEB 1167 2008年08月23日)
Hi all,
this patch allows guests that have directly mapped MMIO regions to set
the caching attributes for them, and only for them.
Currently we have just an on\off check for a directly assigned device
instead of looking for directly mapped MMIO regions.
Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
---
diff -r 28e5409e3fb3 xen/arch/x86/hvm/hvm.c
--- a/xen/arch/x86/hvm/hvm.c Wed Apr 07 16:22:05 2010 +0100
+++ b/xen/arch/x86/hvm/hvm.c Wed Apr 07 17:33:15 2010 +0100
@@ -1126,7 +1126,7 @@
 }
 }
 
- if ( has_arch_pdevs(v->domain) )
+ if ( has_arch_mmios(v->domain) )
 {
 if ( (value & X86_CR0_CD) && !(value & X86_CR0_NW) )
 {
diff -r 28e5409e3fb3 xen/arch/x86/hvm/svm/svm.c
--- a/xen/arch/x86/hvm/svm/svm.c Wed Apr 07 16:22:05 2010 +0100
+++ b/xen/arch/x86/hvm/svm/svm.c Wed Apr 07 17:33:15 2010 +0100
@@ -1228,7 +1228,7 @@
 
 static void svm_wbinvd_intercept(void)
 {
- if ( has_arch_pdevs(current->domain) )
+ if ( has_arch_mmios(current->domain) )
 on_each_cpu(wbinvd_ipi, NULL, 1);
 }
 
diff -r 28e5409e3fb3 xen/arch/x86/hvm/vmx/vmx.c
--- a/xen/arch/x86/hvm/vmx/vmx.c Wed Apr 07 16:22:05 2010 +0100
+++ b/xen/arch/x86/hvm/vmx/vmx.c Wed Apr 07 17:33:15 2010 +0100
@@ -2109,7 +2109,7 @@
 
 static void vmx_wbinvd_intercept(void)
 {
- if ( !has_arch_pdevs(current->domain) )
+ if ( !has_arch_mmios(current->domain) )
 return;
 
 if ( cpu_has_wbinvd_exiting )
diff -r 28e5409e3fb3 xen/arch/x86/mm/shadow/multi.c
--- a/xen/arch/x86/mm/shadow/multi.c Wed Apr 07 16:22:05 2010 +0100
+++ b/xen/arch/x86/mm/shadow/multi.c Wed Apr 07 17:33:15 2010 +0100
@@ -28,6 +28,7 @@
 #include <xen/sched.h>
 #include <xen/perfc.h>
 #include <xen/domain_page.h>
+#include <xen/iocap.h>
 #include <asm/page.h>
 #include <asm/current.h>
 #include <asm/shadow.h>
@@ -546,7 +547,8 @@
 * For HVM domains with direct access to MMIO areas, set the correct
 * caching attributes in the shadows to match what was asked for.
 */
- if ( (level == 1) && is_hvm_domain(d) && has_arch_pdevs(d) &&
+ if ( (level == 1) && is_hvm_domain(d) &&
+ iomem_access_permitted(d, mfn_x(target_mfn), mfn_x(target_mfn) + 1) &&
 !is_xen_heap_mfn(mfn_x(target_mfn)) )
 {
 unsigned int type;
diff -r 28e5409e3fb3 xen/include/asm-ia64/domain.h
--- a/xen/include/asm-ia64/domain.h Wed Apr 07 16:22:05 2010 +0100
+++ b/xen/include/asm-ia64/domain.h Wed Apr 07 17:33:15 2010 +0100
@@ -45,6 +45,7 @@
 __attribute__ ((noreturn, format (printf, 2, 3)));
 
 #define has_arch_pdevs(d) (!list_empty(&(d)->arch.pdev_list))
+#define has_arch_mmios(d) (!rangeset_is_empty((d)->iomem_caps))
 
 struct mm_struct {
 volatile pgd_t * pgd;
diff -r 28e5409e3fb3 xen/include/asm-x86/domain.h
--- a/xen/include/asm-x86/domain.h Wed Apr 07 16:22:05 2010 +0100
+++ b/xen/include/asm-x86/domain.h Wed Apr 07 17:33:15 2010 +0100
@@ -329,6 +329,7 @@
 } __cacheline_aligned;
 
 #define has_arch_pdevs(d) (!list_empty(&(d)->arch.pdev_list))
+#define has_arch_mmios(d) (!rangeset_is_empty((d)->iomem_caps))
 
 #ifdef CONFIG_X86_64
 #define perdomain_pt_pgidx(v) \
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-devel] [PATCH] xen: allow guests to set caching attributes for MMIOs, Stefano Stabellini <=
Previous by Date: Re: [Xen-devel] pv-grub boot hangs when iommu=soft. Booting kernel directly with the flags works , Samuel Thibault
Next by Date: Re: [Xen-devel] pv-grub boot hangs when iommu=soft. Booting kernel directly with the flags works , listmail
Previous by Thread: [Xen-devel] [ANNOUNCE] Xen 4.0.0 released , Keir Fraser
Next by Thread: Re: [Xen-devel] ZFS version for pygrub , eXeC001er
Indexes: [Date] [Thread] [Top] [All Lists]

Copyright ©, Citrix Systems Inc. All rights reserved. Legal and Privacy
Citrix This site is hosted by Citrix

AltStyle によって変換されたページ (->オリジナル) /