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-changelog

[Xen-changelog] [xen-unstable] vtd: move some x86-dependent functions in

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] vtd: move some x86-dependent functions into x86-specific directory.
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Mon, 13 Oct 2008 06:10:13 -0700
Delivery-date: Mon, 13 Oct 2008 06:10:13 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1223888949 -3600
# Node ID e4bddd01cb3ebe0c4a72603c722889b22d3943fd
# Parent  98d5370fec1a1f8438a62b51117207f1d40b8256
vtd: move some x86-dependent functions into x86-specific directory.

Signed-off-by: Anthony Xu <anthony.xu@xxxxxxxxx>
Signed-off-by: Dexuan Cui <dexuan.cui@xxxxxxxxx>
---
 xen/drivers/passthrough/vtd/iommu.c   |    9 ++++-----
 xen/drivers/passthrough/vtd/vtd.h     |    5 ++++-
 xen/drivers/passthrough/vtd/x86/vtd.c |   18 +++++++++++++++++-
 3 files changed, 25 insertions(+), 7 deletions(-)

diff -r 98d5370fec1a -r e4bddd01cb3e xen/drivers/passthrough/vtd/iommu.c
--- a/xen/drivers/passthrough/vtd/iommu.c       Mon Oct 13 10:08:36 2008 +0100
+++ b/xen/drivers/passthrough/vtd/iommu.c       Mon Oct 13 10:09:09 2008 +0100
@@ -123,7 +123,7 @@ static void __iommu_flush_cache(void *ad
         return;
 
     for ( i = 0; i < size; i += clflush_size )
-        clflush((char *)addr + i);
+        cacheline_flush((char *)addr + i);
 }
 
 void iommu_flush_cache_entry(void *addr)
@@ -525,7 +525,7 @@ void iommu_flush_all(void)
     struct acpi_drhd_unit *drhd;
     struct iommu *iommu;
 
-    wbinvd();
+    flush_all_cache();
     for_each_drhd_unit ( drhd )
     {
         iommu = drhd->iommu;
@@ -962,8 +962,7 @@ static int iommu_alloc(struct acpi_drhd_
         return -ENOMEM;
     }
 
-    set_fixmap_nocache(FIX_IOMMU_REGS_BASE_0 + nr_iommus, drhd->address);
-    iommu->reg = (void *)fix_to_virt(FIX_IOMMU_REGS_BASE_0 + nr_iommus);
+    iommu->reg = map_to_nocache_virt(nr_iommus, drhd->address);
     iommu->index = nr_iommus++;
 
     iommu->cap = dmar_readq(iommu->reg, DMAR_CAP_REG);
@@ -1768,7 +1767,7 @@ int intel_vtd_setup(void)
         return -ENODEV;
 
     spin_lock_init(&domid_bitmap_lock);
-    clflush_size = get_clflush_size();
+    clflush_size = get_cache_line_size();
 
     for_each_drhd_unit ( drhd )
         if ( iommu_alloc(drhd) != 0 )
diff -r 98d5370fec1a -r e4bddd01cb3e xen/drivers/passthrough/vtd/vtd.h
--- a/xen/drivers/passthrough/vtd/vtd.h Mon Oct 13 10:08:36 2008 +0100
+++ b/xen/drivers/passthrough/vtd/vtd.h Mon Oct 13 10:09:09 2008 +0100
@@ -97,7 +97,10 @@ struct msi_msg_remap_entry {
     u32        data;           /* msi message data */
 };
 
-unsigned int get_clflush_size(void);
+unsigned int get_cache_line_size(void);
+void cacheline_flush(char *);
+void flush_all_cache(void);
+void *map_to_nocache_virt(int nr_iommus, u64 maddr);
 u64 alloc_pgtable_maddr(void);
 void free_pgtable_maddr(u64 maddr);
 void *map_vtd_domain_page(u64 maddr);
diff -r 98d5370fec1a -r e4bddd01cb3e xen/drivers/passthrough/vtd/x86/vtd.c
--- a/xen/drivers/passthrough/vtd/x86/vtd.c     Mon Oct 13 10:08:36 2008 +0100
+++ b/xen/drivers/passthrough/vtd/x86/vtd.c     Mon Oct 13 10:09:09 2008 +0100
@@ -60,9 +60,25 @@ void free_pgtable_maddr(u64 maddr)
         free_domheap_page(maddr_to_page(maddr));
 }
 
-unsigned int get_clflush_size(void)
+unsigned int get_cache_line_size(void)
 {
     return ((cpuid_ebx(1) >> 8) & 0xff) * 8;
+}
+
+void cacheline_flush(char * addr)
+{
+    clflush(addr);
+}
+
+void flush_all_cache()
+{
+    wbinvd();
+}
+
+void *map_to_nocache_virt(int nr_iommus, u64 maddr)
+{
+    set_fixmap_nocache(FIX_IOMMU_REGS_BASE_0 + nr_iommus, maddr);
+    return (void *)fix_to_virt(FIX_IOMMU_REGS_BASE_0 + nr_iommus);
 }
 
 struct hvm_irq_dpci *domain_get_irq_dpci(struct domain *domain)

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] vtd: move some x86-dependent functions into x86-specific directory., Xen patchbot-unstable <=