mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-16 00:34:20 +08:00
[PATCH] x86_64: Fix off by one in IOMMU check
Fix off by one when checking if the machine has enougn memory to need IOMMU This caused the IOMMUs to be needlessly enabled for mem=4G Based on a patch from Jon Mason Signed-off-by: jdmason@us.ibm.com Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
d25bf7e5fe
commit
ca8642f606
@ -23,6 +23,7 @@
|
||||
#include <asm/io.h>
|
||||
#include <asm/proto.h>
|
||||
#include <asm/pci-direct.h>
|
||||
#include <asm/dma.h>
|
||||
|
||||
int iommu_aperture;
|
||||
int iommu_aperture_disabled __initdata = 0;
|
||||
@ -247,7 +248,7 @@ void __init iommu_hole_init(void)
|
||||
/* Got the aperture from the AGP bridge */
|
||||
} else if (swiotlb && !valid_agp) {
|
||||
/* Do nothing */
|
||||
} else if ((!no_iommu && end_pfn >= 0xffffffff>>PAGE_SHIFT) ||
|
||||
} else if ((!no_iommu && end_pfn >= MAX_DMA32_PFN) ||
|
||||
force_iommu ||
|
||||
valid_agp ||
|
||||
fallback_aper_force) {
|
||||
|
@ -37,6 +37,7 @@
|
||||
#include <asm/proto.h>
|
||||
#include <asm/mach_apic.h>
|
||||
#include <asm/acpi.h>
|
||||
#include <asm/dma.h>
|
||||
|
||||
#define __apicdebuginit __init
|
||||
|
||||
@ -281,7 +282,7 @@ void __init check_ioapic(void)
|
||||
switch (vendor) {
|
||||
case PCI_VENDOR_ID_VIA:
|
||||
#ifdef CONFIG_GART_IOMMU
|
||||
if ((end_pfn >= (0xffffffff>>PAGE_SHIFT) ||
|
||||
if ((end_pfn > MAX_DMA32_PFN ||
|
||||
force_iommu) &&
|
||||
!iommu_aperture_allowed) {
|
||||
printk(KERN_INFO
|
||||
|
@ -804,7 +804,7 @@ static int __init pci_iommu_init(void)
|
||||
}
|
||||
|
||||
if (no_iommu ||
|
||||
(!force_iommu && end_pfn < 0xffffffff>>PAGE_SHIFT) ||
|
||||
(!force_iommu && (end_pfn-1) < 0xffffffff>>PAGE_SHIFT) ||
|
||||
!iommu_aperture ||
|
||||
(no_agp && init_k8_gatt(&info) < 0)) {
|
||||
printk(KERN_INFO "PCI-DMA: Disabling IOMMU.\n");
|
||||
|
@ -424,7 +424,7 @@ void __init mem_init(void)
|
||||
|
||||
#ifdef CONFIG_SWIOTLB
|
||||
if (!iommu_aperture &&
|
||||
(end_pfn >= 0xffffffff>>PAGE_SHIFT || force_iommu))
|
||||
((end_pfn-1) >= 0xffffffff>>PAGE_SHIFT || force_iommu))
|
||||
swiotlb = 1;
|
||||
if (swiotlb)
|
||||
swiotlb_init();
|
||||
|
Loading…
Reference in New Issue
Block a user