lkml.org 
[lkml]   [2009]   [Nov]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
SubjectRe: [PATCH v2 0/9] x86: handle HW IOMMU initialization failure gracefully
From
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/

\
 
 \ /
  Last update: 2009-11-22 04:21    [W:0.292 / U:0.364 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site