This config option (DMAR_FLPY_WA) sets up 1:1 mapping for the
floppy device so that the floppy device which does not use
DMA api's will continue to work.
Signed-off-by: Anil S Keshavamurthy <[email protected]>
---
arch/x86_64/Kconfig | 10 ++++++++++
drivers/pci/intel-iommu.c | 23 +++++++++++++++++++++++
2 files changed, 33 insertions(+)
Index: linux-2.6.22-rc3/arch/x86_64/Kconfig
===================================================================
--- linux-2.6.22-rc3.orig/arch/x86_64/Kconfig 2007-06-04 12:41:11.000000000 -0700
+++ linux-2.6.22-rc3/arch/x86_64/Kconfig 2007-06-04 12:41:23.000000000 -0700
@@ -738,6 +738,16 @@
all the OS visible memory. Hence the driver can continue
to use physical addresses for DMA.
+config DMAR_FLPY_WA
+ bool "Support for Floppy disk workaround"
+ depends on DMAR
+ default y
+ help
+ Floppy disk drivers are know to by pass dma api calls
+ their by failing to work when IOMMU is enabled. This
+ work around will setup a 1 to 1 mappings for the first
+ 16M to make floppy(isa device) work.
+
source "drivers/pci/pcie/Kconfig"
source "drivers/pci/Kconfig"
Index: linux-2.6.22-rc3/drivers/pci/intel-iommu.c
===================================================================
--- linux-2.6.22-rc3.orig/drivers/pci/intel-iommu.c 2007-06-04 12:41:11.000000000 -0700
+++ linux-2.6.22-rc3/drivers/pci/intel-iommu.c 2007-06-04 12:41:23.000000000 -0700
@@ -1584,6 +1584,25 @@
}
#endif
+#ifdef CONFIG_DMAR_FLPY_WA
+static void iommu_prepare_isa(void)
+{
+ struct pci_dev *pdev = NULL;
+ int ret;
+
+ pdev = pci_get_class (PCI_CLASS_BRIDGE_ISA << 8, NULL);
+ if (!pdev)
+ return;
+
+ printk (KERN_INFO "IOMMU: Prepare 0-16M unity mapping for LPC\n");
+ ret = iommu_prepare_identity_map(pdev, 0, 16*1024*1024);
+
+ if (ret)
+ printk ("IOMMU: Failed to create 0-64M identity map, Floppy might not work\n");
+
+}
+#endif
+
int __init init_dmars(void)
{
struct dmar_drhd_unit *drhd;
@@ -1643,6 +1662,10 @@
iommu_prepare_gfx_mapping();
#endif
+#ifdef CONFIG_DMAR_FLPY_WA
+ iommu_prepare_isa();
+#endif
+
/*
* for each drhd
* enable fault log
--
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]