From: Neil Horman <nhorman@tuxdriver.com>
To: "Qiu, Michael" <michael.qiu@intel.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH] enicpmd: compilation error during inclusion of vfio.h
Date: Fri, 28 Nov 2014 09:56:06 -0500 [thread overview]
Message-ID: <20141128145606.GA7736@localhost.localdomain> (raw)
In-Reply-To: <533710CFB86FA344BFBF2D6802E60286C9B11F@SHSMSX101.ccr.corp.intel.com>
On Fri, Nov 28, 2014 at 02:09:40AM +0000, Qiu, Michael wrote:
> Hi all,
>
> I have no comments on this issue, but I indeed see many places do have
> this kernel issue(before/now/future), so can solve this issue globally?
>
> Thus, we do not need to fix this case by case.
>
> One solution(not sure if it works or not):
>
> 1. features and kernel version required list.
> 2. When config DPDK before build, automatically check this list and if
> not mach, just disable this feature in config file even though user set
> it manually.
>
Instead of enumerating a kernel version, this should be designed as an
enumeration of feature sets. That way you can enable DPDK features based on
kernel feature availability (i.e. kernel version doesn't necessecarily imply
feature set, like when a distribution backports a given feature to an older
kernel.
What would really make the most sense I think is to convert the configuration
system to autoconf/automake, so that these tests can be preformed at config
time.
Neil
> Thus main code may not need to change.
>
> Does this works?
>
> Thanks,
> Michael
>
> On 11/28/2014 1:16 AM, Sujith Sankar wrote:
> > Inclusion of vfio.h was giving compilation errors if kernel version is less
> > than 3.6.0 and if RTE_EAL_VFIO was on in config.
> >
> > Replaced inclusion of vfio.h with eal_vfio.h and replaced RTE_EAL_VFIO with
> > VFIO_PRESENT in enicpmd code.
> >
> > Signed-off-by: Sujith Sankar <ssujith@cisco.com>
> > ---
> > lib/librte_pmd_enic/Makefile | 1 +
> > lib/librte_pmd_enic/enic_main.c | 13 +++++--------
> > 2 files changed, 6 insertions(+), 8 deletions(-)
> >
> > diff --git a/lib/librte_pmd_enic/Makefile b/lib/librte_pmd_enic/Makefile
> > index d4c2f66..befc552 100644
> > --- a/lib/librte_pmd_enic/Makefile
> > +++ b/lib/librte_pmd_enic/Makefile
> > @@ -39,6 +39,7 @@ LIB = librte_pmd_enic.a
> >
> > CFLAGS += -I$(RTE_SDK)/lib/librte_hash/ -I$(RTE_SDK)/lib/librte_pmd_enic/vnic/
> > CFLAGS += -I$(RTE_SDK)/lib/librte_pmd_enic/
> > +CFLAGS += -I$(RTE_SDK)/lib/librte_eal/linuxapp/eal/
> > CFLAGS += -O3 -Wno-deprecated
> >
> > VPATH += $(RTE_SDK)/lib/librte_pmd_enic/src
> > diff --git a/lib/librte_pmd_enic/enic_main.c b/lib/librte_pmd_enic/enic_main.c
> > index 4b857bb..f6f00d3 100644
> > --- a/lib/librte_pmd_enic/enic_main.c
> > +++ b/lib/librte_pmd_enic/enic_main.c
> > @@ -39,9 +39,6 @@
> > #include <sys/mman.h>
> > #include <fcntl.h>
> > #include <libgen.h>
> > -#ifdef RTE_EAL_VFIO
> > -#include <linux/vfio.h>
> > -#endif
> >
> > #include <rte_pci.h>
> > #include <rte_memzone.h>
> > @@ -631,7 +628,7 @@ int enic_enable(struct enic *enic)
> >
> > vnic_dev_enable_wait(enic->vdev);
> >
> > -#ifndef RTE_EAL_VFIO
> > +#ifndef VFIO_PRESENT
> > /* Register and enable error interrupt */
> > rte_intr_callback_register(&(enic->pdev->intr_handle),
> > enic_intr_handler, (void *)enic->rte_dev);
> > @@ -995,7 +992,7 @@ int enic_setup_finish(struct enic *enic)
> > return 0;
> > }
> >
> > -#ifdef RTE_EAL_VFIO
> > +#ifdef VFIO_PRESENT
> > static void enic_eventfd_init(struct enic *enic)
> > {
> > enic->eventfd = enic->pdev->intr_handle.fd;
> > @@ -1033,7 +1030,7 @@ int enic_get_link_status(struct enic *enic)
> > }
> >
> >
> > -#ifdef RTE_EAL_VFIO
> > +#ifdef VFIO_PRESENT
> > static int enic_create_err_intr_thread(struct enic *enic)
> > {
> > pthread_attr_t intr_attr;
> > @@ -1111,7 +1108,7 @@ static void enic_dev_deinit(struct enic *enic)
> > if (eth_dev->data->mac_addrs)
> > rte_free(eth_dev->data->mac_addrs);
> >
> > -#ifdef RTE_EAL_VFIO
> > +#ifdef VFIO_PRESENT
> > enic_clear_intr_mode(enic);
> > #endif
> > }
> > @@ -1167,7 +1164,7 @@ static int enic_dev_init(struct enic *enic)
> > */
> > enic_get_res_counts(enic);
> >
> > -#ifdef RTE_EAL_VFIO
> > +#ifdef VFIO_PRESENT
> > /* Set interrupt mode based on resource counts and system
> > * capabilities
> > */
>
>
next prev parent reply other threads:[~2014-11-28 14:56 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-27 17:14 Sujith Sankar
2014-11-27 17:22 ` Sujith Sankar (ssujith)
2014-11-27 18:01 ` Thomas Monjalon
2014-11-27 20:24 ` Thomas Monjalon
2014-11-28 2:31 ` Sujith Sankar (ssujith)
2014-11-28 2:09 ` Qiu, Michael
2014-11-28 14:16 ` Thomas Monjalon
2014-12-02 7:10 ` Qiu, Michael
2014-11-28 14:56 ` Neil Horman [this message]
2014-12-02 7:24 ` Qiu, Michael
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=20141128145606.GA7736@localhost.localdomain \
--to=nhorman@tuxdriver.com \
--cc=dev@dpdk.org \
--cc=michael.qiu@intel.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).