* [PATCH v4 0/4] compatibility fallback and replacement of kernel function invoking
@ 2014-12-10 11:03 Jincheng Miao
[not found] ` <1418209443-1744-1-git-send-email-jmiao-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
0 siblings, 1 reply; 10+ messages in thread
From: Jincheng Miao @ 2014-12-10 11:03 UTC (permalink / raw)
To: dev-VfR2kkLFssw
The related kernel function is:
- pci_num_vf, it is introduced from upstream linux-2.6.34. For RHEL-based
kernel, it is defined from RHEL5.9.
- kstrtoul, this function is united kernel API to replace strict_strtoul in
the furture. It is introduced from linux-2.6.39. For RHEL6, it is defined
from RHEL6.4.
This patchset do some compatiblity work for these two functions, and
replace strict_strtoul which is depleted from linux-3.18.
Some test results for dpdk-1.8.0-rc3 with this patchset:
1. In RHEL7 GA: Build success after specify -mssse3 to CFLAGS,
```
CC ixgbe_rxtx_vec.o
In file included from /root/dpdk-source/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:41:0:
/usr/lib/gcc/x86_64-redhat-linux/4.8.2/include/tmmintrin.h:31:3: error: #error "SSSE3 instruction set not enabled"
# error "SSSE3 instruction set not enabled"
```
- for igb_uio, pass
- for kni, pass
- for xen_dom0, pass
2. In RHEL6.5 : Build fails for kni, and xen_dom0:
- for igb_uio: pass
- for kni: fail, the log is:
```
CC [M] /root/dpdk-source/build/build/lib/librte_eal/linuxapp/kni/kni_vhost.o
/root/dpdk-source/build/build/lib/librte_eal/linuxapp/kni/kni_vhost.c: In function ‘kni_sock_poll’:
/root/dpdk-source/build/build/lib/librte_eal/linuxapp/kni/kni_vhost.c:222: error: ‘struct socket’ has no member named ‘wq’
/root/dpdk-source/build/build/lib/librte_eal/linuxapp/kni/kni_vhost.c: In function ‘kni_chk_vhost_rx’:
/root/dpdk-source/build/build/lib/librte_eal/linuxapp/kni/kni_vhost.c:313: error: implicit declaration of function ‘sk_sleep’
cc1: warnings being treated as errors
/root/dpdk-source/build/build/lib/librte_eal/linuxapp/kni/kni_vhost.c:313: error: passing argument 1 of ‘__wake_up’ makes pointer from integer without a cast
include/linux/wait.h:146: note: expected ‘struct wait_queue_head_t *’ but argument is of type ‘int’
/root/dpdk-source/build/build/lib/librte_eal/linuxapp/kni/kni_vhost.c: In function ‘kni_sk_write_space’:
/root/dpdk-source/build/build/lib/librte_eal/linuxapp/kni/kni_vhost.c:580: error: assignment makes pointer from integer without a cast
make[8]: *** [/root/dpdk-source/build/build/lib/librte_eal/linuxapp/kni/kni_vhost.o] Error 1
```
- for xen_dom0: fail, seems xen is not offical supported in RHEL6.
v4:
Indent for patches.
Include compat.h for kni_vhost.c
v3:
Adjust pci_num_vf() introduced RHEL version number.
Seperate "replace strict_strtoul with kstrtoul" into 3 patches for igb_uio,
kni, and xen_dom0. Add compat.h in kni and xen_dom0 for compatible with
older kernels.
v2:
Merge these two patch in one patchset.
Compatible with old kernel for kstrtoul.
Compatible with RHEL6 for pci_num_vf.
Jincheng Miao (4):
igb_uio: compatible with upstream longterm kernel and RHEL
igb_uio: replace strict_strtoul with kstrtoul
kni: replace strict_strtoul with kstrtoul
xen_dom0: replace strict_strtoul with kstrtoul
lib/librte_eal/linuxapp/igb_uio/compat.h | 11 ++++++++++-
lib/librte_eal/linuxapp/igb_uio/igb_uio.c | 4 ++--
lib/librte_eal/linuxapp/kni/compat.h | 16 ++++++++++++++++
lib/librte_eal/linuxapp/kni/kni_vhost.c | 3 ++-
lib/librte_eal/linuxapp/xen_dom0/compat.h | 16 ++++++++++++++++
lib/librte_eal/linuxapp/xen_dom0/dom0_mm_misc.c | 2 +-
6 files changed, 47 insertions(+), 5 deletions(-)
create mode 100644 lib/librte_eal/linuxapp/kni/compat.h
create mode 100644 lib/librte_eal/linuxapp/xen_dom0/compat.h
--
1.8.3.1
^ permalink raw reply [flat|nested] 10+ messages in thread[parent not found: <1418209443-1744-1-git-send-email-jmiao-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>]
* [PATCH v4 1/4] igb_uio: compatible with upstream longterm kernel and RHEL [not found] ` <1418209443-1744-1-git-send-email-jmiao-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> @ 2014-12-10 11:04 ` Jincheng Miao 2014-12-10 11:04 ` [PATCH v4 2/4] igb_uio: replace strict_strtoul with kstrtoul Jincheng Miao ` (3 subsequent siblings) 4 siblings, 0 replies; 10+ messages in thread From: Jincheng Miao @ 2014-12-10 11:04 UTC (permalink / raw) To: dev-VfR2kkLFssw Function pci_num_vf() is introduced from upstream linux-2.6.34. So this patch make compatible with longterm kernel linux-2.6.32.63. For RHEL, function pci_num_vf() begins from RHEL5 update9. And it is stub-defined when CONFIG_PCI_IOV is not enabled. So dropped the CONFIG_PCI_IOV checking of commit 11ba0426. For other distro like RHEL behaved to pci_num_vf(), we could simply append following condition macro: (!(defined(OTHER_RELEASE_CODE) && \ OTHER_RELEASE_CODE >= OTHER_RELEASE_VERSION(X, Y))) Signed-off-by: Jincheng Miao <jmiao-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> --- lib/librte_eal/linuxapp/igb_uio/compat.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/librte_eal/linuxapp/igb_uio/compat.h b/lib/librte_eal/linuxapp/igb_uio/compat.h index 676fa1b..a36f034 100644 --- a/lib/librte_eal/linuxapp/igb_uio/compat.h +++ b/lib/librte_eal/linuxapp/igb_uio/compat.h @@ -21,7 +21,8 @@ #endif #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 34) && \ - !defined(CONFIG_PCI_IOV) + (!(defined(RHEL_RELEASE_CODE) && \ + RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(5, 9))) static int pci_num_vf(struct pci_dev *dev) { -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v4 2/4] igb_uio: replace strict_strtoul with kstrtoul [not found] ` <1418209443-1744-1-git-send-email-jmiao-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 2014-12-10 11:04 ` [PATCH v4 1/4] igb_uio: compatible with upstream longterm kernel and RHEL Jincheng Miao @ 2014-12-10 11:04 ` Jincheng Miao 2014-12-10 11:04 ` [PATCH v4 3/4] kni: " Jincheng Miao ` (2 subsequent siblings) 4 siblings, 0 replies; 10+ messages in thread From: Jincheng Miao @ 2014-12-10 11:04 UTC (permalink / raw) To: dev-VfR2kkLFssw >From upstream kernel commit 3db2e9cd, strict_strto* serial functions are removed. So that we should directly used kstrtoul instead. Kstrtoul exists from RHEL6.4, so for compatible with old kernel and RHEL, add some logic to igb_uio/compat.h, same as what we do for pci_num_vf(). Signed-off-by: Jincheng Miao <jmiao-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> --- lib/librte_eal/linuxapp/igb_uio/compat.h | 8 ++++++++ lib/librte_eal/linuxapp/igb_uio/igb_uio.c | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/librte_eal/linuxapp/igb_uio/compat.h b/lib/librte_eal/linuxapp/igb_uio/compat.h index a36f034..455e8b4 100644 --- a/lib/librte_eal/linuxapp/igb_uio/compat.h +++ b/lib/librte_eal/linuxapp/igb_uio/compat.h @@ -44,6 +44,14 @@ static int pci_num_vf(struct pci_dev *dev) #endif /* < 2.6.34 */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 39) && \ + (!(defined(RHEL_RELEASE_CODE) && \ + RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(6, 4))) + +#define kstrtoul strict_strtoul + +#endif /* < 2.6.39 */ + #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 3, 0) && \ (!(defined(RHEL_RELEASE_CODE) && \ RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(6, 3))) diff --git a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c index d1ca26e..47ff2f3 100644 --- a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c +++ b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c @@ -83,7 +83,7 @@ store_max_vfs(struct device *dev, struct device_attribute *attr, unsigned long max_vfs; struct pci_dev *pdev = container_of(dev, struct pci_dev, dev); - if (0 != strict_strtoul(buf, 0, &max_vfs)) + if (0 != kstrtoul(buf, 0, &max_vfs)) return -EINVAL; if (0 == max_vfs) @@ -174,7 +174,7 @@ store_max_read_request_size(struct device *dev, unsigned long size = 0; int ret; - if (strict_strtoul(buf, 0, &size) != 0) + if (0 != kstrtoul(buf, 0, &size)) return -EINVAL; ret = pcie_set_readrq(pci_dev, (int)size); -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v4 3/4] kni: replace strict_strtoul with kstrtoul [not found] ` <1418209443-1744-1-git-send-email-jmiao-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 2014-12-10 11:04 ` [PATCH v4 1/4] igb_uio: compatible with upstream longterm kernel and RHEL Jincheng Miao 2014-12-10 11:04 ` [PATCH v4 2/4] igb_uio: replace strict_strtoul with kstrtoul Jincheng Miao @ 2014-12-10 11:04 ` Jincheng Miao 2014-12-10 11:04 ` [PATCH v4 4/4] xen_dom0: " Jincheng Miao 2014-12-11 1:00 ` [PATCH v4 0/4] compatibility fallback and replacement of kernel function invoking Thomas Monjalon 4 siblings, 0 replies; 10+ messages in thread From: Jincheng Miao @ 2014-12-10 11:04 UTC (permalink / raw) To: dev-VfR2kkLFssw Add kni/compat.h for be compatible with older kernel. Signed-off-by: Jincheng Miao <jmiao-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> --- lib/librte_eal/linuxapp/kni/compat.h | 16 ++++++++++++++++ lib/librte_eal/linuxapp/kni/kni_vhost.c | 3 ++- 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 lib/librte_eal/linuxapp/kni/compat.h diff --git a/lib/librte_eal/linuxapp/kni/compat.h b/lib/librte_eal/linuxapp/kni/compat.h new file mode 100644 index 0000000..39e07ef --- /dev/null +++ b/lib/librte_eal/linuxapp/kni/compat.h @@ -0,0 +1,16 @@ +/* + * Minimal wrappers to allow compiling kni on older kernels. + */ + +#ifndef RHEL_RELEASE_VERSION +#define RHEL_RELEASE_VERSION(a, b) (((a) << 8) + (b)) +#endif + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 39) && \ + (!(defined(RHEL_RELEASE_CODE) && \ + RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(6, 4))) + +#define kstrtoul strict_strtoul + +#endif /* < 2.6.39 */ + diff --git a/lib/librte_eal/linuxapp/kni/kni_vhost.c b/lib/librte_eal/linuxapp/kni/kni_vhost.c index 7bcc985..35263f2 100644 --- a/lib/librte_eal/linuxapp/kni/kni_vhost.c +++ b/lib/librte_eal/linuxapp/kni/kni_vhost.c @@ -35,6 +35,7 @@ #include "kni_dev.h" #include "kni_fifo.h" +#include "compat.h" #define RX_BURST_SZ 4 @@ -740,7 +741,7 @@ set_sock_en(struct device *dev, struct device_attribute *attr, unsigned long en; int err = 0; - if (0 != strict_strtoul(buf, 0, &en)) + if (0 != kstrtoul(buf, 0, &en)) return -EINVAL; if (en) -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v4 4/4] xen_dom0: replace strict_strtoul with kstrtoul [not found] ` <1418209443-1744-1-git-send-email-jmiao-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> ` (2 preceding siblings ...) 2014-12-10 11:04 ` [PATCH v4 3/4] kni: " Jincheng Miao @ 2014-12-10 11:04 ` Jincheng Miao [not found] ` <1418209443-1744-5-git-send-email-jmiao-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 2014-12-11 1:00 ` [PATCH v4 0/4] compatibility fallback and replacement of kernel function invoking Thomas Monjalon 4 siblings, 1 reply; 10+ messages in thread From: Jincheng Miao @ 2014-12-10 11:04 UTC (permalink / raw) To: dev-VfR2kkLFssw And add xen_dom0/compat.h for be compatible with older kernel. Signed-off-by: Jincheng Miao <jmiao-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> --- lib/librte_eal/linuxapp/xen_dom0/compat.h | 16 ++++++++++++++++ lib/librte_eal/linuxapp/xen_dom0/dom0_mm_misc.c | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 lib/librte_eal/linuxapp/xen_dom0/compat.h diff --git a/lib/librte_eal/linuxapp/xen_dom0/compat.h b/lib/librte_eal/linuxapp/xen_dom0/compat.h new file mode 100644 index 0000000..89dab27 --- /dev/null +++ b/lib/librte_eal/linuxapp/xen_dom0/compat.h @@ -0,0 +1,16 @@ +/* + * Minimal wrappers to allow compiling xen_dom0 on older kernels. + */ + +#ifndef RHEL_RELEASE_VERSION +#define RHEL_RELEASE_VERSION(a, b) (((a) << 8) + (b)) +#endif + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 39) && \ + (!(defined(RHEL_RELEASE_CODE) && \ + RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(6, 4))) + +#define kstrtoul strict_strtoul + +#endif /* < 2.6.39 */ + diff --git a/lib/librte_eal/linuxapp/xen_dom0/dom0_mm_misc.c b/lib/librte_eal/linuxapp/xen_dom0/dom0_mm_misc.c index dfb271d..8a3727d 100644 --- a/lib/librte_eal/linuxapp/xen_dom0/dom0_mm_misc.c +++ b/lib/librte_eal/linuxapp/xen_dom0/dom0_mm_misc.c @@ -123,7 +123,7 @@ store_memsize(struct device *dev, struct device_attribute *attr, int err = 0; unsigned long mem_size; - if (0 != strict_strtoul(buf, 0, &mem_size)) + if (0 != kstrtoul(buf, 0, &mem_size)) return -EINVAL; mutex_lock(&dom0_dev.data_lock); -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
[parent not found: <1418209443-1744-5-git-send-email-jmiao-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>]
* Re: [PATCH v4 4/4] xen_dom0: replace strict_strtoul with kstrtoul [not found] ` <1418209443-1744-5-git-send-email-jmiao-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> @ 2014-12-10 12:27 ` Thomas Monjalon 2014-12-10 13:03 ` Jincheng Miao 0 siblings, 1 reply; 10+ messages in thread From: Thomas Monjalon @ 2014-12-10 12:27 UTC (permalink / raw) To: Jincheng Miao; +Cc: dev-VfR2kkLFssw 2014-12-10 19:04, Jincheng Miao: > And add xen_dom0/compat.h for be compatible with older kernel. > > Signed-off-by: Jincheng Miao <jmiao-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> [...] > new file mode 100644 > index 0000000..89dab27 > --- /dev/null > +++ b/lib/librte_eal/linuxapp/xen_dom0/compat.h [...] > --- a/lib/librte_eal/linuxapp/xen_dom0/dom0_mm_misc.c > +++ b/lib/librte_eal/linuxapp/xen_dom0/dom0_mm_misc.c > @@ -123,7 +123,7 @@ store_memsize(struct device *dev, struct device_attribute *attr, > int err = 0; > unsigned long mem_size; > > - if (0 != strict_strtoul(buf, 0, &mem_size)) > + if (0 != kstrtoul(buf, 0, &mem_size)) > return -EINVAL; > > mutex_lock(&dom0_dev.data_lock); > Still no include of compat.h -- Thomas ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v4 4/4] xen_dom0: replace strict_strtoul with kstrtoul 2014-12-10 12:27 ` Thomas Monjalon @ 2014-12-10 13:03 ` Jincheng Miao 0 siblings, 0 replies; 10+ messages in thread From: Jincheng Miao @ 2014-12-10 13:03 UTC (permalink / raw) To: Thomas Monjalon; +Cc: dev-VfR2kkLFssw ----- Original Message ----- > 2014-12-10 19:04, Jincheng Miao: > > And add xen_dom0/compat.h for be compatible with older kernel. > > > > Signed-off-by: Jincheng Miao <jmiao-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> > [...] > > new file mode 100644 > > index 0000000..89dab27 > > --- /dev/null > > +++ b/lib/librte_eal/linuxapp/xen_dom0/compat.h > [...] > > --- a/lib/librte_eal/linuxapp/xen_dom0/dom0_mm_misc.c > > +++ b/lib/librte_eal/linuxapp/xen_dom0/dom0_mm_misc.c > > @@ -123,7 +123,7 @@ store_memsize(struct device *dev, struct > > device_attribute *attr, > > int err = 0; > > unsigned long mem_size; > > > > - if (0 != strict_strtoul(buf, 0, &mem_size)) > > + if (0 != kstrtoul(buf, 0, &mem_size)) > > return -EINVAL; > > > > mutex_lock(&dom0_dev.data_lock); > > > > Still no include of compat.h Sorry for that, resend PATCH v4 4/4 again. > > -- > Thomas > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v4 0/4] compatibility fallback and replacement of kernel function invoking [not found] ` <1418209443-1744-1-git-send-email-jmiao-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> ` (3 preceding siblings ...) 2014-12-10 11:04 ` [PATCH v4 4/4] xen_dom0: " Jincheng Miao @ 2014-12-11 1:00 ` Thomas Monjalon 2014-12-11 3:16 ` Jincheng Miao 4 siblings, 1 reply; 10+ messages in thread From: Thomas Monjalon @ 2014-12-11 1:00 UTC (permalink / raw) To: Jincheng Miao; +Cc: dev-VfR2kkLFssw > The related kernel function is: > - pci_num_vf, it is introduced from upstream linux-2.6.34. For RHEL-based > kernel, it is defined from RHEL5.9. > > - kstrtoul, this function is united kernel API to replace strict_strtoul in > the furture. It is introduced from linux-2.6.39. For RHEL6, it is defined > from RHEL6.4. > > This patchset do some compatiblity work for these two functions, and > replace strict_strtoul which is depleted from linux-3.18. > > Some test results for dpdk-1.8.0-rc3 with this patchset: > 1. In RHEL7 GA: Build success after specify -mssse3 to CFLAGS, > ``` > CC ixgbe_rxtx_vec.o > In file included from /root/dpdk-source/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:41:0: > /usr/lib/gcc/x86_64-redhat-linux/4.8.2/include/tmmintrin.h:31:3: error: #error "SSSE3 instruction set not enabled" > # error "SSSE3 instruction set not enabled" > ``` > - for igb_uio, pass > - for kni, pass > - for xen_dom0, pass > > > 2. In RHEL6.5 : Build fails for kni, and xen_dom0: > - for igb_uio: pass > - for kni: fail, the log is: > ``` > CC [M] /root/dpdk-source/build/build/lib/librte_eal/linuxapp/kni/kni_vhost.o > /root/dpdk-source/build/build/lib/librte_eal/linuxapp/kni/kni_vhost.c: In function ‘kni_sock_poll’: > /root/dpdk-source/build/build/lib/librte_eal/linuxapp/kni/kni_vhost.c:222: error: ‘struct socket’ has no member named ‘wq’ > /root/dpdk-source/build/build/lib/librte_eal/linuxapp/kni/kni_vhost.c: In function ‘kni_chk_vhost_rx’: > /root/dpdk-source/build/build/lib/librte_eal/linuxapp/kni/kni_vhost.c:313: error: implicit declaration of function ‘sk_sleep’ > cc1: warnings being treated as errors > /root/dpdk-source/build/build/lib/librte_eal/linuxapp/kni/kni_vhost.c:313: error: passing argument 1 of ‘__wake_up’ makes pointer from integer without a cast > include/linux/wait.h:146: note: expected ‘struct wait_queue_head_t *’ but argument is of type ‘int’ > /root/dpdk-source/build/build/lib/librte_eal/linuxapp/kni/kni_vhost.c: In function ‘kni_sk_write_space’: > /root/dpdk-source/build/build/lib/librte_eal/linuxapp/kni/kni_vhost.c:580: error: assignment makes pointer from integer without a cast > make[8]: *** [/root/dpdk-source/build/build/lib/librte_eal/linuxapp/kni/kni_vhost.o] Error 1 > ``` Do you plan to work on a fix for KNI on RHEL 6.5? > - for xen_dom0: fail, seems xen is not offical supported in RHEL6. > > v4: > Indent for patches. > Include compat.h for kni_vhost.c > > v3: > Adjust pci_num_vf() introduced RHEL version number. > Seperate "replace strict_strtoul with kstrtoul" into 3 patches for igb_uio, > kni, and xen_dom0. Add compat.h in kni and xen_dom0 for compatible with > older kernels. > > v2: > Merge these two patch in one patchset. > Compatible with old kernel for kstrtoul. > Compatible with RHEL6 for pci_num_vf. > > Jincheng Miao (4): > igb_uio: compatible with upstream longterm kernel and RHEL > igb_uio: replace strict_strtoul with kstrtoul > kni: replace strict_strtoul with kstrtoul > xen_dom0: replace strict_strtoul with kstrtoul Acked-by: Thomas Monjalon <thomas.monjalon-pdR9zngts4EAvxtiuMwx3w@public.gmane.org> Applied Thanks -- Thomas ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v4 0/4] compatibility fallback and replacement of kernel function invoking 2014-12-11 1:00 ` [PATCH v4 0/4] compatibility fallback and replacement of kernel function invoking Thomas Monjalon @ 2014-12-11 3:16 ` Jincheng Miao 0 siblings, 0 replies; 10+ messages in thread From: Jincheng Miao @ 2014-12-11 3:16 UTC (permalink / raw) To: Thomas Monjalon; +Cc: dev-VfR2kkLFssw On 12/11/2014 09:00 AM, Thomas Monjalon wrote: >> The related kernel function is: >> - pci_num_vf, it is introduced from upstream linux-2.6.34. For RHEL-based >> kernel, it is defined from RHEL5.9. >> >> - kstrtoul, this function is united kernel API to replace strict_strtoul in >> the furture. It is introduced from linux-2.6.39. For RHEL6, it is defined >> from RHEL6.4. >> >> This patchset do some compatiblity work for these two functions, and >> replace strict_strtoul which is depleted from linux-3.18. >> >> Some test results for dpdk-1.8.0-rc3 with this patchset: >> 1. In RHEL7 GA: Build success after specify -mssse3 to CFLAGS, >> ``` >> CC ixgbe_rxtx_vec.o >> In file included from /root/dpdk-source/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:41:0: >> /usr/lib/gcc/x86_64-redhat-linux/4.8.2/include/tmmintrin.h:31:3: error: #error "SSSE3 instruction set not enabled" >> # error "SSSE3 instruction set not enabled" >> ``` >> - for igb_uio, pass >> - for kni, pass >> - for xen_dom0, pass >> >> >> 2. In RHEL6.5 : Build fails for kni, and xen_dom0: >> - for igb_uio: pass >> - for kni: fail, the log is: >> ``` >> CC [M] /root/dpdk-source/build/build/lib/librte_eal/linuxapp/kni/kni_vhost.o >> /root/dpdk-source/build/build/lib/librte_eal/linuxapp/kni/kni_vhost.c: In function ‘kni_sock_poll’: >> /root/dpdk-source/build/build/lib/librte_eal/linuxapp/kni/kni_vhost.c:222: error: ‘struct socket’ has no member named ‘wq’ >> /root/dpdk-source/build/build/lib/librte_eal/linuxapp/kni/kni_vhost.c: In function ‘kni_chk_vhost_rx’: >> /root/dpdk-source/build/build/lib/librte_eal/linuxapp/kni/kni_vhost.c:313: error: implicit declaration of function ‘sk_sleep’ >> cc1: warnings being treated as errors >> /root/dpdk-source/build/build/lib/librte_eal/linuxapp/kni/kni_vhost.c:313: error: passing argument 1 of ‘__wake_up’ makes pointer from integer without a cast >> include/linux/wait.h:146: note: expected ‘struct wait_queue_head_t *’ but argument is of type ‘int’ >> /root/dpdk-source/build/build/lib/librte_eal/linuxapp/kni/kni_vhost.c: In function ‘kni_sk_write_space’: >> /root/dpdk-source/build/build/lib/librte_eal/linuxapp/kni/kni_vhost.c:580: error: assignment makes pointer from integer without a cast >> make[8]: *** [/root/dpdk-source/build/build/lib/librte_eal/linuxapp/kni/kni_vhost.o] Error 1 >> ``` > Do you plan to work on a fix for KNI on RHEL 6.5? Yep, I am working on this :) > >> - for xen_dom0: fail, seems xen is not offical supported in RHEL6. >> >> v4: >> Indent for patches. >> Include compat.h for kni_vhost.c >> >> v3: >> Adjust pci_num_vf() introduced RHEL version number. >> Seperate "replace strict_strtoul with kstrtoul" into 3 patches for igb_uio, >> kni, and xen_dom0. Add compat.h in kni and xen_dom0 for compatible with >> older kernels. >> >> v2: >> Merge these two patch in one patchset. >> Compatible with old kernel for kstrtoul. >> Compatible with RHEL6 for pci_num_vf. >> >> Jincheng Miao (4): >> igb_uio: compatible with upstream longterm kernel and RHEL >> igb_uio: replace strict_strtoul with kstrtoul >> kni: replace strict_strtoul with kstrtoul >> xen_dom0: replace strict_strtoul with kstrtoul > Acked-by: Thomas Monjalon <thomas.monjalon-pdR9zngts4EAvxtiuMwx3w@public.gmane.org> > > Applied > > Thanks ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v4 4/4] xen_dom0: replace strict_strtoul with kstrtoul @ 2014-12-10 13:04 Jincheng Miao 0 siblings, 0 replies; 10+ messages in thread From: Jincheng Miao @ 2014-12-10 13:04 UTC (permalink / raw) To: dev-VfR2kkLFssw And add xen_dom0/compat.h for be compatible with older kernel. Signed-off-by: Jincheng Miao <jmiao-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> --- lib/librte_eal/linuxapp/xen_dom0/compat.h | 16 ++++++++++++++++ lib/librte_eal/linuxapp/xen_dom0/dom0_mm_misc.c | 3 ++- 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 lib/librte_eal/linuxapp/xen_dom0/compat.h diff --git a/lib/librte_eal/linuxapp/xen_dom0/compat.h b/lib/librte_eal/linuxapp/xen_dom0/compat.h new file mode 100644 index 0000000..89dab27 --- /dev/null +++ b/lib/librte_eal/linuxapp/xen_dom0/compat.h @@ -0,0 +1,16 @@ +/* + * Minimal wrappers to allow compiling xen_dom0 on older kernels. + */ + +#ifndef RHEL_RELEASE_VERSION +#define RHEL_RELEASE_VERSION(a, b) (((a) << 8) + (b)) +#endif + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 39) && \ + (!(defined(RHEL_RELEASE_CODE) && \ + RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(6, 4))) + +#define kstrtoul strict_strtoul + +#endif /* < 2.6.39 */ + diff --git a/lib/librte_eal/linuxapp/xen_dom0/dom0_mm_misc.c b/lib/librte_eal/linuxapp/xen_dom0/dom0_mm_misc.c index dfb271d..543bf57 100644 --- a/lib/librte_eal/linuxapp/xen_dom0/dom0_mm_misc.c +++ b/lib/librte_eal/linuxapp/xen_dom0/dom0_mm_misc.c @@ -74,6 +74,7 @@ #include <rte_config.h> #include <exec-env/rte_dom0_common.h> +#include "compat.h" #include "dom0_mm_dev.h" MODULE_LICENSE("Dual BSD/GPL"); @@ -123,7 +124,7 @@ store_memsize(struct device *dev, struct device_attribute *attr, int err = 0; unsigned long mem_size; - if (0 != strict_strtoul(buf, 0, &mem_size)) + if (0 != kstrtoul(buf, 0, &mem_size)) return -EINVAL; mutex_lock(&dom0_dev.data_lock); -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
end of thread, other threads:[~2014-12-11 3:16 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-12-10 11:03 [PATCH v4 0/4] compatibility fallback and replacement of kernel function invoking Jincheng Miao
[not found] ` <1418209443-1744-1-git-send-email-jmiao-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-12-10 11:04 ` [PATCH v4 1/4] igb_uio: compatible with upstream longterm kernel and RHEL Jincheng Miao
2014-12-10 11:04 ` [PATCH v4 2/4] igb_uio: replace strict_strtoul with kstrtoul Jincheng Miao
2014-12-10 11:04 ` [PATCH v4 3/4] kni: " Jincheng Miao
2014-12-10 11:04 ` [PATCH v4 4/4] xen_dom0: " Jincheng Miao
[not found] ` <1418209443-1744-5-git-send-email-jmiao-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-12-10 12:27 ` Thomas Monjalon
2014-12-10 13:03 ` Jincheng Miao
2014-12-11 1:00 ` [PATCH v4 0/4] compatibility fallback and replacement of kernel function invoking Thomas Monjalon
2014-12-11 3:16 ` Jincheng Miao
-- strict thread matches above, loose matches on Subject: below --
2014-12-10 13:04 [PATCH v4 4/4] xen_dom0: replace strict_strtoul with kstrtoul Jincheng Miao
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.