On Tue, Dec 23, 2008 at 11:20:34AM +0800, Cui, Dexuan wrote: > 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. > > 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....@intel.com> > > diff -r 008b68ff6095 xen/arch/ia64/xen/domain.c > --- a/xen/arch/ia64/xen/domain.c Tue Nov 18 10:33:55 2008 +0900 > +++ b/xen/arch/ia64/xen/domain.c Mon Dec 15 18:41:52 2008 +0800 > @@ -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
Please don't drop is_hvm_domain(d) check. At this moment ia64 doesn't support iommu for PV domain because it would introduce race with the ia64 lockless p2m table. If you want VT-d support for pv domain, the race must be resolved somehow. > diff -r 008b68ff6095 xen/arch/ia64/xen/hypercall.c > --- a/xen/arch/ia64/xen/hypercall.c Tue Nov 18 10:33:55 2008 +0900 > +++ b/xen/arch/ia64/xen/hypercall.c Mon Dec 15 18:41:52 2008 +0800 > @@ -316,16 +316,17 @@ 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. > */ > 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; > } Please add comments about why 0 instead of -ENOSYS. The same sentence in the commit log is okay. thanks, -- yamahata _______________________________________________ Xen-ia64-devel mailing list Xen-ia64-devel@lists.xensource.com http://lists.xensource.com/xen-ia64-devel