aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorKeshavamurthy, Anil S <anil.s.keshavamurthy@intel.com>2007-10-21 19:41:55 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-10-22 11:13:19 -0400
commite820482cd2621dba60e403af1c54502daa54b220 (patch)
tree3498401c7154e14008ab80b2f0cbca539ce7ffbc /arch
parent3460a6d9cef9ac2aa997da7eff7ff1c8291b361c (diff)
Intel IOMMU: Iommu Gfx workaround
When we fix all the opensource gfx drivers to use the DMA api's, at that time we can yank this config options out. [jengelh@computergmbh.de: Kconfig fixes] Signed-off-by: Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com> Cc: Andi Kleen <ak@suse.de> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Muli Ben-Yehuda <muli@il.ibm.com> Cc: "Siddha, Suresh B" <suresh.b.siddha@intel.com> Cc: Arjan van de Ven <arjan@infradead.org> Cc: Ashok Raj <ashok.raj@intel.com> Cc: "David S. Miller" <davem@davemloft.net> Cc: Christoph Lameter <clameter@sgi.com> Cc: Greg KH <greg@kroah.com> Signed-off-by: Jan Engelhardt <jengelh@gmx.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/x86/kernel/e820_64.c19
-rw-r--r--arch/x86_64/Kconfig19
2 files changed, 34 insertions, 4 deletions
diff --git a/arch/x86/kernel/e820_64.c b/arch/x86/kernel/e820_64.c
index 57616865d8a0..1ca228b06a20 100644
--- a/arch/x86/kernel/e820_64.c
+++ b/arch/x86/kernel/e820_64.c
@@ -729,3 +729,22 @@ __init void e820_setup_gap(void)
729 printk(KERN_INFO "Allocating PCI resources starting at %lx (gap: %lx:%lx)\n", 729 printk(KERN_INFO "Allocating PCI resources starting at %lx (gap: %lx:%lx)\n",
730 pci_mem_start, gapstart, gapsize); 730 pci_mem_start, gapstart, gapsize);
731} 731}
732
733int __init arch_get_ram_range(int slot, u64 *addr, u64 *size)
734{
735 int i;
736
737 if (slot < 0 || slot >= e820.nr_map)
738 return -1;
739 for (i = slot; i < e820.nr_map; i++) {
740 if (e820.map[i].type != E820_RAM)
741 continue;
742 break;
743 }
744 if (i == e820.nr_map || e820.map[i].addr > (max_pfn << PAGE_SHIFT))
745 return -1;
746 *addr = e820.map[i].addr;
747 *size = min_t(u64, e820.map[i].size + e820.map[i].addr,
748 max_pfn << PAGE_SHIFT) - *addr;
749 return i + 1;
750}
diff --git a/arch/x86_64/Kconfig b/arch/x86_64/Kconfig
index 5c9aaed589a5..5cf941774347 100644
--- a/arch/x86_64/Kconfig
+++ b/arch/x86_64/Kconfig
@@ -755,11 +755,22 @@ config DMAR
755 depends on PCI_MSI && ACPI && EXPERIMENTAL 755 depends on PCI_MSI && ACPI && EXPERIMENTAL
756 default y 756 default y
757 help 757 help
758 DMA remapping(DMAR) devices support enables independent address 758 DMA remapping (DMAR) devices support enables independent address
759 translations for Direct Memory Access(DMA) from Devices. 759 translations for Direct Memory Access (DMA) from devices.
760 These DMA remapping devices are reported via ACPI tables 760 These DMA remapping devices are reported via ACPI tables
761 and includes pci device scope covered by these DMA 761 and include PCI device scope covered by these DMA
762 remapping device. 762 remapping devices.
763
764config DMAR_GFX_WA
765 bool "Support for Graphics workaround"
766 depends on DMAR
767 default y
768 help
769 Current Graphics drivers tend to use physical address
770 for DMA and avoid using DMA APIs. Setting this config
771 option permits the IOMMU driver to set a unity map for
772 all the OS-visible memory. Hence the driver can continue
773 to use physical addresses for DMA.
763 774
764source "drivers/pci/pcie/Kconfig" 775source "drivers/pci/pcie/Kconfig"
765 776