lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Sat, 21 Nov 2009 19:17:37 -0800
From:	Yinghai Lu <yhlu.kernel@...il.com>
To:	Ingo Molnar <mingo@...e.hu>,
	FUJITA Tomonori <fujita.tomonori@....ntt.co.jp>
Cc:	linux-kernel@...r.kernel.org, chrisw@...s-sol.org,
	wmw2@...radead.org, joerg.roedel@....com, muli@...ibm.com
Subject: Re: [PATCH v2 0/9] x86: handle HW IOMMU initialization failure 
	gracefully

On Tue, Nov 10, 2009 at 3:19 AM, Ingo Molnar <mingo@...e.hu> wrote:
>
> * FUJITA Tomonori <fujita.tomonori@....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@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ