Messages in this thread | | | Date | Sat, 21 Nov 2009 19:17:37 -0800 | Subject | Re: [PATCH v2 0/9] x86: handle HW IOMMU initialization failure gracefully | From | Yinghai Lu <> |
| |
On Tue, Nov 10, 2009 at 3:19 AM, Ingo Molnar <mingo@elte.hu> wrote: > > * FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> wrote: > >> This patchset is against tip/master. >> >> The first version is: >> >> http://marc.info/?l=linux-kernel&m=125671300920411&w=2 >> >> The changes since v1 are: >> >> - replaced Chris' bootmem patches with the 6/9 patch to implement >> free_bootmem_late in a simple way (thanks to Pekka). >> >> - fixed the bug to break 'iommu=soft' boot opiton (found by Joerg). >> >> - moved iommu_init_noop() to x86_init.c >> >> - added Muli's Acked-by to Calgary patch. >> >> >> == >> arch/ia64/kernel/pci-swiotlb.c | 4 +- >> arch/powerpc/kernel/setup_32.c | 2 +- >> arch/powerpc/kernel/setup_64.c | 2 +- >> arch/x86/include/asm/amd_iommu.h | 2 - >> arch/x86/include/asm/calgary.h | 2 - >> arch/x86/include/asm/gart.h | 5 +--- >> arch/x86/include/asm/iommu.h | 1 - >> arch/x86/include/asm/x86_init.h | 9 +++++++ >> arch/x86/kernel/amd_iommu.c | 2 +- >> arch/x86/kernel/amd_iommu_init.c | 19 +++----------- >> arch/x86/kernel/aperture_64.c | 4 ++- >> arch/x86/kernel/pci-calgary_64.c | 19 ++++----------- >> arch/x86/kernel/pci-dma.c | 27 ++++++++++----------- >> arch/x86/kernel/pci-gart_64.c | 16 ++++------- >> arch/x86/kernel/pci-nommu.c | 9 ------- >> arch/x86/kernel/pci-swiotlb.c | 10 +++---- >> arch/x86/kernel/x86_init.c | 5 ++++ >> drivers/pci/dmar.c | 7 ++++- >> drivers/pci/intel-iommu.c | 4 +- >> include/linux/bootmem.h | 1 + >> include/linux/dmar.h | 10 ------- >> include/linux/swiotlb.h | 5 ++- >> lib/swiotlb.c | 49 +++++++++++++++++++++++++++++++------ >> mm/bootmem.c | 24 ++++++++++++++++++ >> 24 files changed, 131 insertions(+), 107 deletions(-) > > Nice changes! I've applied them to tip:core/iommu (with the small build > fix i mentioned in the previous mail) and will push them out later > today. >
this patch set will break some AMD system
amd 64 systems that 1. do not have AGP 2. do not have IOMMU 3. mem > 4g 4. BIOS do not allocate correct gart in NB.
will leave them to use SWIOTLB forcely.
following code that allocate some RAM as aperture will be called anymore for them } else if (!valid_agp) { /* Do nothing */ } else if ((!no_iommu && max_pfn > MAX_DMA32_PFN) || force_iommu || valid_agp || fallback_aper_force) { printk(KERN_INFO "Your BIOS doesn't leave a aperture memory hole\n"); printk(KERN_INFO "Please enable the IOMMU option in the BIOS setup\n"); printk(KERN_INFO "This costs you %d MB of RAM\n", 32 << fallback_aper_order);
aper_order = fallback_aper_order; aper_alloc = allocate_aperture(); if (!aper_alloc) { /* * Could disable AGP and IOMMU here, but it's * probably not worth it. But the later users * cannot deal with bad apertures and turning * on the aperture over memory causes very * strange problems, so it's better to panic * early. */ panic("Not enough memory for aperture"); }
also in
void __init pci_iommu_alloc(void) { #ifdef CONFIG_X86_64 /* free the range so iommu could get some range less than 4G */ dma32_free_bootmem(); #endif if (pci_swiotlb_init()) return;
gart_iommu_hole_init();
detect_calgary();
detect_intel_iommu();
/* needs to be called after gart_iommu_hole_init */ amd_iommu_detect(); }
pci_swiotlb_init is stealing the preallocate range that is gart_iommu_hole workaround.
so please move back swiotlb_init to the end.
there is no point to allocate swiotlb at first and then free it if some iommu is there.
YH -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |