All of lore.kernel.org
 help / color / mirror / Atom feed
* [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

* [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

* 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

* [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

* 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

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.