From: Jincheng Miao <jmiao-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: Thomas Monjalon
<thomas.monjalon-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
Cc: dev-VfR2kkLFssw@public.gmane.org
Subject: Re: [PATCH v2 1/2] igb_uio: compatible with upstream longterm kernel and RHEL6
Date: Fri, 28 Nov 2014 16:13:41 +0800 [thread overview]
Message-ID: <54782EB5.7060409@redhat.com> (raw)
In-Reply-To: <7579030.6nSHmmQ36o@xps13>
On 11/28/2014 01:01 AM, Thomas Monjalon wrote:
> 2014-10-31 15:37, Jincheng Miao:
>> 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 RHEL6's kernel, although it is based on linux-2.6.32, it has
>> pci_num_vf() implementation. As the same with commit 11ba0426,
>> pci_num_vf() is defined from RHEL6. So we should check the macro
>> RHEL_RELEASE_CODE to consider this situation.
> Please, could you explain in which case CONFIG_PCI_IOV is defined?
> The logic is a bit difficult to understand.
Yep, there is a little confusion for pci_num_vf():
1. it is available when CONFIG_PCI_IOV is defined.
2. it is introduced from upstream kernel v2.6.34 (fb8a0d9)
3. it is implemented from RHEL6.0, although the kernel version is 2.6.32.
The logic of this patch is:
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 34) && \
(!(defined(RHEL_RELEASE_CODE) && RHEL_RELEASE_CODE >=
RHEL_RELEASE_VERSION(6, 0) && defined(CONFIG_PCI_IOV)))
Firstly it detects kernel version, if it is less than 2.6.34, and it is
not RHEL-specified, then define pci_num_vf().
Secondly, it deals with RHEL-specified. If it is RHEL6.0 or later, and
CONFIG_PCI_IOV is defined. we should not define pci_num_vf(). If any of
these conditions is not reached, pci_num_vf() should be defined.
Some days ago, I setup dpdk for longterm kernel 2.6.32.63, and got error:
```
CC [M]
/root/dpdk-source/build/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.o
/root/dpdk-source/build/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.c:
In function ‘show_max_vfs’:
/root/dpdk-source/build/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.c:75:
error: implicit declaration of function ‘pci_num_vf’
```
This problem is introduced by commit 11ba04265
commit 11ba04265cfd2a53c12c030fcaa5dfe7eed39a42
Author: Guillaume Gaudonville <guillaume.gaudonville-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
Date: Wed Sep 3 10:18:23 2014 +0200
igb_uio: fix build on RHEL 6.3
- pci_num_vf() is already defined in RHEL 6
- pci_intx_mask_supported is already defined in RHEL 6.3
- pci_check_and_mask_intx is already defined in RHEL 6.3
Signed-off-by: Guillaume Gaudonville <guillaume.gaudonville-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
Signed-off-by: David Marchand <david.marchand-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
Signed-off-by: Thomas Monjalon <thomas.monjalon-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 34) && \
+ !defined(CONFIG_PCI_IOV)
That is because longterm kernel 2.6.32.63 defined CONFIG_PCI_IOV, but it
lacks pci_num_vf(),
after above processing, pci_num_vf() is still not existed, then build fail.
My patch could work around it, and can deal with RHEL-specified kernel.
>> #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 34) && \
>> - !defined(CONFIG_PCI_IOV)
>> + (!(defined(RHEL_RELEASE_CODE) && \
>> + RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(6, 0) && \
>> + defined(CONFIG_PCI_IOV)))
>>
>> static int pci_num_vf(struct pci_dev *dev)
>> {
next prev parent reply other threads:[~2014-11-28 8:13 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-31 7:37 [PATCH v2 0/2] compatibility fallback and replacement of kernel function invoking Jincheng Miao
[not found] ` <1414741039-3531-1-git-send-email-jmiao-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-10-31 7:37 ` [PATCH v2 1/2] igb_uio: compatible with upstream longterm kernel and RHEL6 Jincheng Miao
[not found] ` <1414741039-3531-2-git-send-email-jmiao-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-11-27 17:01 ` Thomas Monjalon
2014-11-28 8:13 ` Jincheng Miao [this message]
[not found] ` <54782EB5.7060409-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-11-28 16:42 ` Thomas Monjalon
2014-12-02 4:01 ` Jincheng Miao
2014-10-31 7:37 ` [PATCH v2 2/2] eal: replace strict_strtoul with kstrtoul Jincheng Miao
[not found] ` <1414741039-3531-3-git-send-email-jmiao-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-11-28 16:45 ` Thomas Monjalon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=54782EB5.7060409@redhat.com \
--to=jmiao-h+wxahxf7alqt0dzr+alfa@public.gmane.org \
--cc=dev-VfR2kkLFssw@public.gmane.org \
--cc=thomas.monjalon-pdR9zngts4EAvxtiuMwx3w@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.