summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandrew-elder <aelder@audioscience.com>2016-01-19 12:16:26 -0500
committerandrew-elder <aelder@audioscience.com>2016-01-19 12:16:26 -0500
commit7efc6159f1991b74357d1f567fbbd0a4ca7f4609 (patch)
tree34591755eb5f1d607cf1f00588013891c396c723
parent390d5db43a44f6ec20c4ca3ced32ce745a0c8c98 (diff)
parenta88af3f54f0fc48f3b46940a3ec2ff654f25a8d5 (diff)
downloadOpen-AVB-7efc6159f1991b74357d1f567fbbd0a4ca7f4609.tar.gz
Merge pull request #341 from JaehyungAhn/support_32bit_app
igb_avb: Support 32bit app on 64bit kernel.
-rw-r--r--kmod/igb/igb_main.c17
-rw-r--r--kmod/igb/kcompat.h6
2 files changed, 22 insertions, 1 deletions
diff --git a/kmod/igb/igb_main.c b/kmod/igb/igb_main.c
index 085cfc9e..25c2064e 100644
--- a/kmod/igb/igb_main.c
+++ b/kmod/igb/igb_main.c
@@ -287,6 +287,9 @@ static struct file_operations igb_fops = {
.release = igb_close_file,
.mmap = igb_mmap,
.unlocked_ioctl = igb_ioctl_file,
+#if defined(CONFIG_IGB_SUPPORT_32BIT_IOCTL)
+ .compat_ioctl = igb_ioctl_file,
+#endif
};
static struct miscdevice igb_miscdev = {
@@ -2594,6 +2597,7 @@ static int igb_probe(struct pci_dev *pdev,
return err;
pci_using_dac = 0;
+#if !defined(CONFIG_IGB_SUPPORT_32BIT_IOCTL)
err = dma_set_mask(pci_dev_to_dev(pdev), DMA_BIT_MASK(64));
if (!err) {
err = dma_set_coherent_mask(pci_dev_to_dev(pdev),
@@ -2601,8 +2605,9 @@ static int igb_probe(struct pci_dev *pdev,
if (!err)
pci_using_dac = 1;
} else {
+#endif
err = dma_set_mask(pci_dev_to_dev(pdev), DMA_BIT_MASK(32));
- if (err) {
+ if (!err) {
err = dma_set_coherent_mask(pci_dev_to_dev(pdev),
DMA_BIT_MASK(32));
if (err) {
@@ -2611,7 +2616,9 @@ static int igb_probe(struct pci_dev *pdev,
goto err_dma;
}
}
+#if !defined(CONFIG_IGB_SUPPORT_32BIT_IOCTL)
}
+#endif
#ifndef HAVE_ASPM_QUIRKS
/* 82575 requires that the pci-e link partner disable the L0s state */
@@ -10175,7 +10182,15 @@ static long igb_mapbuf(struct file *file, void __user *arg, int ring)
adapter->userpages = userpage;
}
+#if defined(CONFIG_IGB_SUPPORT_32BIT_IOCTL)
+#if defined(CONFIG_ZONE_DMA32)
+ page = alloc_page(GFP_ATOMIC | __GFP_COLD | GFP_DMA32);
+#else /* defined(CONFIG_ZONE_DMA32) */
+ page = alloc_page(GFP_ATOMIC | __GFP_COLD | GFP_DMA);
+#endif /* defined(CONFIG_ZONE_DMA32) */
+#else /* defined(CONFIG_IGB_SUPPORT_32BIT_IOCTL) */
page = alloc_page(GFP_ATOMIC | __GFP_COLD);
+#endif /* defined(CONFIG_IGB_SUPPORT_32BIT_IOCTL) */
if (unlikely(!page)) {
err = -ENOMEM;
goto failed;
diff --git a/kmod/igb/kcompat.h b/kmod/igb/kcompat.h
index ab9d8600..34872169 100644
--- a/kmod/igb/kcompat.h
+++ b/kmod/igb/kcompat.h
@@ -76,6 +76,12 @@
#else
#endif /* NAPI */
+#ifdef SUPPORT_32BIT_IOCTL
+#ifndef CONFIG_IGB_SUPPORT_32BIT_IOCTL
+#define CONFIG_IGB_SUPPORT_32BIT_IOCTL
+#endif
+#endif /* SUPPORT_32BIT_IOCTL */
+
/* Dynamic LTR and deeper C-State support disable/enable */
/* packet split disable/enable */