[dpdk-dev] igb_uio: kernel version check for using kstrtoul or strict_strtoul

Message ID 1418179099-4822-1-git-send-email-helin.zhang@intel.com (mailing list archive)
State Superseded, archived
Headers

Commit Message

Zhang, Helin Dec. 10, 2014, 2:38 a.m. UTC
  strict_strtoul() was just a redefinition of kstrtoul() for a long
time. From kernel version of 3.18, strict_strtoul() will not be
defined at all. A compile time kernel version check is needed to
decide which function or macro can be used for a specific version
of kernel.

Signed-off-by: Helin Zhang <helin.zhang@intel.com>
---
 lib/librte_eal/linuxapp/igb_uio/igb_uio.c | 4 ++++
 1 file changed, 4 insertions(+)
  

Comments

Jincheng Miao Dec. 10, 2014, 2:54 a.m. UTC | #1
Here is my patch for it, and it also resolves issue of pci_num_vf() 
definition.

And I will send V3 for a while.


On 12/10/2014 10:38 AM, Helin Zhang wrote:
> strict_strtoul() was just a redefinition of kstrtoul() for a long
> time. From kernel version of 3.18, strict_strtoul() will not be
> defined at all. A compile time kernel version check is needed to
> decide which function or macro can be used for a specific version
> of kernel.
>
> Signed-off-by: Helin Zhang <helin.zhang@intel.com>
> ---
>   lib/librte_eal/linuxapp/igb_uio/igb_uio.c | 4 ++++
>   1 file changed, 4 insertions(+)
>
> diff --git a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
> index d1ca26e..2fcc5f4 100644
> --- a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
> +++ b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
> @@ -83,7 +83,11 @@ 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 LINUX_VERSION_CODE < KERNEL_VERSION(3, 2, 0)
>   	if (0 != strict_strtoul(buf, 0, &max_vfs))
> +#else
> +	if (0 != kstrtoul(buf, 0, &max_vfs))
> +#endif
>   		return -EINVAL;
>   
>   	if (0 == max_vfs)
  
Zhang, Helin Dec. 10, 2014, 3:01 a.m. UTC | #2
Hi Jincheng

Did you attach anything? I can see the text only.
Could you forward your patch mail to me directly? Thanks a lot!

Regards,
Helin

> -----Original Message-----
> From: Jincheng Miao [mailto:jmiao@redhat.com]
> Sent: Wednesday, December 10, 2014 10:55 AM
> To: Zhang, Helin; dev@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH] igb_uio: kernel version check for using kstrtoul
> or strict_strtoul
> 
> Here is my patch for it, and it also resolves issue of pci_num_vf() definition.
> 
> And I will send V3 for a while.
> 
> 
> On 12/10/2014 10:38 AM, Helin Zhang wrote:
> > strict_strtoul() was just a redefinition of kstrtoul() for a long
> > time. From kernel version of 3.18, strict_strtoul() will not be
> > defined at all. A compile time kernel version check is needed to
> > decide which function or macro can be used for a specific version of
> > kernel.
> >
> > Signed-off-by: Helin Zhang <helin.zhang@intel.com>
> > ---
> >   lib/librte_eal/linuxapp/igb_uio/igb_uio.c | 4 ++++
> >   1 file changed, 4 insertions(+)
> >
> > diff --git a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
> > b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
> > index d1ca26e..2fcc5f4 100644
> > --- a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
> > +++ b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
> > @@ -83,7 +83,11 @@ 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 LINUX_VERSION_CODE < KERNEL_VERSION(3, 2, 0)
> >   	if (0 != strict_strtoul(buf, 0, &max_vfs))
> > +#else
> > +	if (0 != kstrtoul(buf, 0, &max_vfs)) #endif
> >   		return -EINVAL;
> >
> >   	if (0 == max_vfs)
  
Michael Qiu Dec. 10, 2014, 3:37 a.m. UTC | #3
On 12/10/2014 11:02 AM, Zhang, Helin wrote:
> Hi Jincheng
>
> Did you attach anything? I can see the text only.
> Could you forward your patch mail to me directly? Thanks a lot!

Hi Helin,

I indeed ever saw one patch that was similar this one :) but not sure if
it is post by Jincheng.

You can go through patchwork to have a look.

Thanks,
Michael
> Regards,
> Helin
>
>> -----Original Message-----
>> From: Jincheng Miao [mailto:jmiao@redhat.com]
>> Sent: Wednesday, December 10, 2014 10:55 AM
>> To: Zhang, Helin; dev@dpdk.org
>> Subject: Re: [dpdk-dev] [PATCH] igb_uio: kernel version check for using kstrtoul
>> or strict_strtoul
>>
>> Here is my patch for it, and it also resolves issue of pci_num_vf() definition.
>>
>> And I will send V3 for a while.
>>
>>
>> On 12/10/2014 10:38 AM, Helin Zhang wrote:
>>> strict_strtoul() was just a redefinition of kstrtoul() for a long
>>> time. From kernel version of 3.18, strict_strtoul() will not be
>>> defined at all. A compile time kernel version check is needed to
>>> decide which function or macro can be used for a specific version of
>>> kernel.
>>>
>>> Signed-off-by: Helin Zhang <helin.zhang@intel.com>
>>> ---
>>>   lib/librte_eal/linuxapp/igb_uio/igb_uio.c | 4 ++++
>>>   1 file changed, 4 insertions(+)
>>>
>>> diff --git a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
>>> b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
>>> index d1ca26e..2fcc5f4 100644
>>> --- a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
>>> +++ b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
>>> @@ -83,7 +83,11 @@ 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 LINUX_VERSION_CODE < KERNEL_VERSION(3, 2, 0)
>>>   	if (0 != strict_strtoul(buf, 0, &max_vfs))
>>> +#else
>>> +	if (0 != kstrtoul(buf, 0, &max_vfs)) #endif
>>>   		return -EINVAL;
>>>
>>>   	if (0 == max_vfs)
>
  
Zhang, Helin Dec. 10, 2014, 4 a.m. UTC | #4
Hi Jincheng

I have seen your v3 patch, and ack-ed it. I just dropped my patch for the same issue. Thank you so much!

Regards,
Helin

> -----Original Message-----
> From: Jincheng Miao [mailto:jmiao@redhat.com]
> Sent: Wednesday, December 10, 2014 10:55 AM
> To: Zhang, Helin; dev@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH] igb_uio: kernel version check for using kstrtoul
> or strict_strtoul
> 
> Here is my patch for it, and it also resolves issue of pci_num_vf() definition.
> 
> And I will send V3 for a while.
> 
> 
> On 12/10/2014 10:38 AM, Helin Zhang wrote:
> > strict_strtoul() was just a redefinition of kstrtoul() for a long
> > time. From kernel version of 3.18, strict_strtoul() will not be
> > defined at all. A compile time kernel version check is needed to
> > decide which function or macro can be used for a specific version of
> > kernel.
> >
> > Signed-off-by: Helin Zhang <helin.zhang@intel.com>
> > ---
> >   lib/librte_eal/linuxapp/igb_uio/igb_uio.c | 4 ++++
> >   1 file changed, 4 insertions(+)
> >
> > diff --git a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
> > b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
> > index d1ca26e..2fcc5f4 100644
> > --- a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
> > +++ b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
> > @@ -83,7 +83,11 @@ 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 LINUX_VERSION_CODE < KERNEL_VERSION(3, 2, 0)
> >   	if (0 != strict_strtoul(buf, 0, &max_vfs))
> > +#else
> > +	if (0 != kstrtoul(buf, 0, &max_vfs)) #endif
> >   		return -EINVAL;
> >
> >   	if (0 == max_vfs)
  

Patch

diff --git a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
index d1ca26e..2fcc5f4 100644
--- a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
+++ b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c
@@ -83,7 +83,11 @@  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 LINUX_VERSION_CODE < KERNEL_VERSION(3, 2, 0)
 	if (0 != strict_strtoul(buf, 0, &max_vfs))
+#else
+	if (0 != kstrtoul(buf, 0, &max_vfs))
+#endif
 		return -EINVAL;
 
 	if (0 == max_vfs)