diff options
author | andrew-elder <aelder@audioscience.com> | 2016-01-19 12:16:26 -0500 |
---|---|---|
committer | andrew-elder <aelder@audioscience.com> | 2016-01-19 12:16:26 -0500 |
commit | 7efc6159f1991b74357d1f567fbbd0a4ca7f4609 (patch) | |
tree | 34591755eb5f1d607cf1f00588013891c396c723 | |
parent | 390d5db43a44f6ec20c4ca3ced32ce745a0c8c98 (diff) | |
parent | a88af3f54f0fc48f3b46940a3ec2ff654f25a8d5 (diff) | |
download | Open-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.c | 17 | ||||
-rw-r--r-- | kmod/igb/kcompat.h | 6 |
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 */ |