vt-d: for 32-bit Xen, we disable VT-d table output on DMA page faults. This changeset is back-ported from xen-unstable. The original description of the changeset is: vt-d: Disable VT-d table output on DMA page faults Printing VT-d tables requires map_domain_page() which can not be called from interrupt context (on x86_32). Signed-off-by: Espen Skoglund xen-unstable changeset: 18066:cec304746b360d0fccb2ab3944787bfb912902cb xen-unstable date: Wed Jul 16 11:15:14 2008 +0100 Considering Xen 3.2, for 32-bit Xen, maddr_to_virt() can not be used in print_vtd_entries() since the pages (except the pgd) are allocated from domheap. Signed-off-by: Dexuan Cui diff -r 9ed6fe0070ce -r 6d920337b363 xen/arch/x86/hvm/vmx/vtd/intel-iommu.c --- a/xen/arch/x86/hvm/vmx/vtd/intel-iommu.c Fri Jul 18 11:30:29 2008 +0100 +++ b/xen/arch/x86/hvm/vmx/vtd/intel-iommu.c Fri Jul 25 19:12:36 2008 +0800 @@ -758,8 +758,13 @@ static int iommu_page_fault_do_one(struc (source_id >> 8), PCI_SLOT(source_id & 0xFF), PCI_FUNC(source_id & 0xFF), addr, fault_reason); + /* For 32-bit Xen, maddr_to_virt() can not be used in print_vtd_entries() + * since the pages (except the pgd) are allocated from domheap. + */ +#ifndef __i386__ print_vtd_entries(current->domain, (source_id >> 8),(source_id & 0xff), (addr >> PAGE_SHIFT)); +#endif return 0; }