[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] [IA64] Fix some IPF Xen VT-d bugs.



# HG changeset patch
# User Isaku Yamahata <yamahata@xxxxxxxxxxxxx>
# Date 1231232732 -32400
# Node ID 8df294a89a362305b3349937aaed65d76b3b81da
# Parent  29a0ecb8a711b28afab72839b57c35571391db14
[IA64] Fix some IPF Xen VT-d bugs.

In arch_domain_create(): when xen creates Dom0, need_iommu(d) is false,
so iommu_domain_init() is not invoked, as a result, eventually iommu is
not enabled properly.
Note: d->need_iommu is set to 1 only by assign_device() which is never
called for dom0. And it is called via XEN_DOMCTL_assign_device hypercall.

In IA64 Xen, physdev_map_pirq()/physdev_unmap_pirq() are kept dummy since
we don't support MSI in IA64 Xen now, but here they shouldn't return
-ENOSYS because xend invokes them (the x86 version of them is necessary
for x86 Xen); in IPF Xen if they return -ENOSYS, xend would disallow us
to create IPF HVM guest with devices assigned. Here They can return 0 instead.

Signed-off-by: Dexuan Cui <dexuan.cui@xxxxxxxxx>
---
 xen/arch/ia64/xen/domain.c    |    6 ++----
 xen/arch/ia64/xen/hypercall.c |   10 +++++++---
 2 files changed, 9 insertions(+), 7 deletions(-)

diff -r 29a0ecb8a711 -r 8df294a89a36 xen/arch/ia64/xen/domain.c
--- a/xen/arch/ia64/xen/domain.c        Mon Jan 05 14:13:38 2009 +0900
+++ b/xen/arch/ia64/xen/domain.c        Tue Jan 06 18:05:32 2009 +0900
@@ -602,10 +602,8 @@ int arch_domain_create(struct domain *d,
        if ((d->arch.mm.pgd = pgd_alloc(&d->arch.mm)) == NULL)
            goto fail_nomem;
 
-       if ( iommu_enabled && (is_hvm_domain(d) || need_iommu(d)) ){
-               if(iommu_domain_init(d) != 0)
-                       goto fail_iommu;
-       }
+       if(iommu_domain_init(d) != 0)
+               goto fail_iommu;
 
        /*
         * grant_table_create() can't fully initialize grant table for domain
diff -r 29a0ecb8a711 -r 8df294a89a36 xen/arch/ia64/xen/hypercall.c
--- a/xen/arch/ia64/xen/hypercall.c     Mon Jan 05 14:13:38 2009 +0900
+++ b/xen/arch/ia64/xen/hypercall.c     Tue Jan 06 18:05:32 2009 +0900
@@ -466,16 +466,20 @@ iosapic_guest_write(
 
 
 /*
- * XXX We don't support MSI for PCI passthrough, so just return ENOSYS
+ * XXX: We don't support MSI for PCI passthrough at present, so make the
+ * following 2 functions dummy for now. They shouldn't return -ENOSYS
+ * because xend invokes them (the x86 version of them is necessary for
+ * x86 Xen); if they return -ENOSYS, xend would disallow us to create
+ * IPF HVM guest with devices assigned so here they can return 0.
  */
 static int physdev_map_pirq(struct physdev_map_pirq *map)
 {
-       return -ENOSYS;
+       return 0;
 }
 
 static int physdev_unmap_pirq(struct physdev_unmap_pirq *unmap)
 {
-       return -ENOSYS;
+       return 0;
 }
 
 

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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.