diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/kernel/e820_64.c | 19 | ||||
-rw-r--r-- | arch/x86_64/Kconfig | 19 |
2 files changed, 34 insertions, 4 deletions
diff --git a/arch/x86/kernel/e820_64.c b/arch/x86/kernel/e820_64.c index 57616865d8a..1ca228b06a2 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) printk(KERN_INFO "Allocating PCI resources starting at %lx (gap: %lx:%lx)\n", pci_mem_start, gapstart, gapsize); } + +int __init arch_get_ram_range(int slot, u64 *addr, u64 *size) +{ + int i; + + if (slot < 0 || slot >= e820.nr_map) + return -1; + for (i = slot; i < e820.nr_map; i++) { + if (e820.map[i].type != E820_RAM) + continue; + break; + } + if (i == e820.nr_map || e820.map[i].addr > (max_pfn << PAGE_SHIFT)) + return -1; + *addr = e820.map[i].addr; + *size = min_t(u64, e820.map[i].size + e820.map[i].addr, + max_pfn << PAGE_SHIFT) - *addr; + return i + 1; +} diff --git a/arch/x86_64/Kconfig b/arch/x86_64/Kconfig index 5c9aaed589a..5cf94177434 100644 --- a/arch/x86_64/Kconfig +++ b/arch/x86_64/Kconfig @@ -755,11 +755,22 @@ config DMAR depends on PCI_MSI && ACPI && EXPERIMENTAL default y help - DMA remapping(DMAR) devices support enables independent address - translations for Direct Memory Access(DMA) from Devices. + DMA remapping (DMAR) devices support enables independent address + translations for Direct Memory Access (DMA) from devices. These DMA remapping devices are reported via ACPI tables - and includes pci device scope covered by these DMA - remapping device. + and include PCI device scope covered by these DMA + remapping devices. + +config DMAR_GFX_WA + bool "Support for Graphics workaround" + depends on DMAR + default y + help + Current Graphics drivers tend to use physical address + for DMA and avoid using DMA APIs. Setting this config + option permits the IOMMU driver to set a unity map for + all the OS-visible memory. Hence the driver can continue + to use physical addresses for DMA. source "drivers/pci/pcie/Kconfig" |