diff options
Diffstat (limited to 'skge-quirk-to-4gb-dma.patch')
-rw-r--r-- | skge-quirk-to-4gb-dma.patch | 70 |
1 files changed, 0 insertions, 70 deletions
diff --git a/skge-quirk-to-4gb-dma.patch b/skge-quirk-to-4gb-dma.patch deleted file mode 100644 index ebd146d..0000000 --- a/skge-quirk-to-4gb-dma.patch +++ /dev/null @@ -1,70 +0,0 @@ -Skge devices installed on some Gigabyte motherboards are not able to -perform 64 dma correctly due to board PCI implementation, so limit -DMA to 32bit if such boards are detected. - -Bug was reported here: -https://bugzilla.redhat.com/show_bug.cgi?id=447489 - -Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com> -Tested-by: Luya Tshimbalanga <luya@fedoraproject.org> ---- - drivers/net/skge.c | 22 +++++++++++++++++++++- - 1 files changed, 21 insertions(+), 1 deletions(-) - -diff --git a/drivers/net/skge.c b/drivers/net/skge.c -index a8a6358..571d4c3 100644 ---- a/drivers/net/skge.c -+++ b/drivers/net/skge.c -@@ -43,5 +43,6 @@ - #include <linux/seq_file.h> - #include <linux/mii.h> -+#include <linux/dmi.h> - #include <asm/irq.h> - - #include "skge.h" -@@ -3869,6 +3870,8 @@ static void __devinit skge_show_addr(struct net_device *dev) - netif_info(skge, probe, skge->netdev, "addr %pM\n", dev->dev_addr); - } - -+static int only_32bit_dma; -+ - static int __devinit skge_probe(struct pci_dev *pdev, - const struct pci_device_id *ent) - { -@@ -3890,7 +3893,7 @@ static int __devinit skge_probe(struct pci_dev *pdev, - - pci_set_master(pdev); - -- if (!pci_set_dma_mask(pdev, DMA_BIT_MASK(64))) { -+ if (!only_32bit_dma && !pci_set_dma_mask(pdev, DMA_BIT_MASK(64))) { - using_dac = 1; - err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64)); - } else if (!(err = pci_set_dma_mask(pdev, DMA_BIT_MASK(32)))) { -@@ -4148,8 +4151,25 @@ static struct pci_driver skge_driver = { - .shutdown = skge_shutdown, - }; - -+#ifndef CONFIG_DMI -+#warning "DMA quirk for Gigabyte nForce boards will not be applied" -+#endif -+ -+static struct dmi_system_id skge_32bit_dma_boards[] = { -+ { -+ .ident = "Gigabyte nForce boards", -+ .matches = { -+ DMI_MATCH(DMI_BOARD_VENDOR, "Gigabyte Technology Co"), -+ DMI_MATCH(DMI_BOARD_NAME, "nForce"), -+ }, -+ }, -+ {} -+}; -+ - static int __init skge_init_module(void) - { -+ if (dmi_check_system(skge_32bit_dma_boards)) -+ only_32bit_dma = 1; - skge_debug_init(); - return pci_register_driver(&skge_driver); - } --- -1.5.5.6 |