lkml.org 
[lkml]   [2007]   [Jun]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[Intel-IOMMU 10/10] Iommu floppy workaround
	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 <anil.s.keshavamurthy@intel.com>
---
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-05 12:58:08.000000000 -0700
+++ linux-2.6.22-rc3/arch/x86_64/Kconfig 2007-06-05 12:58:08.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-05 12:58:08.000000000 -0700
+++ linux-2.6.22-rc3/drivers/pci/intel-iommu.c 2007-06-05 12:58:08.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 majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2007-06-06 21:21    [W:0.350 / U:0.020 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site