[dpdk-dev] [PATCH] enic: corrected the usage of VFIO_PRESENT

Burakov, Anatoly anatoly.burakov at intel.com
Tue Dec 16 11:36:33 CET 2014


> -----Original Message-----
> From: Sujith Sankar (ssujith) [mailto:ssujith at cisco.com]
> Sent: Tuesday, December 16, 2014 10:34 AM
> To: Burakov, Anatoly; Thomas Monjalon
> Cc: dev at dpdk.org
> Subject: Re: [dpdk-dev] [PATCH] enic: corrected the usage of VFIO_PRESENT
> 
> 
> 
> On 16/12/14 3:52 pm, "Burakov, Anatoly" <anatoly.burakov at intel.com>
> wrote:
> 
> >> On 16/12/14 4:54 am, "Thomas Monjalon"
> <thomas.monjalon at 6wind.com>
> >> wrote:
> >>
> >> >2014-12-12 13:48, Sujith Sankar:
> >> >> This patch corrects the usage of the flag VFIO_PRESENT in enic
> >>driver.
> >> >
> >> >Please, could you explain why the flag VFIO_PRESENT was not well
> used?
> >>
> >> Without including eal_vfio.h, VFIO_PRESENT is not available in enic.
> >> Hence VFIO specific code in enic was not getting compiled and some
> >>errors  were generated during run-time.
> >>
> >> >
> >> >> This has uncovered a few warnings, and this patch corrects those too.
> >> >[...]
> >> >> --- a/lib/librte_pmd_enic/enic_main.c
> >> >> +++ b/lib/librte_pmd_enic/enic_main.c
> >> >> @@ -39,6 +39,7 @@
> >> >>  #include <sys/mman.h>
> >> >>  #include <fcntl.h>
> >> >>  #include <libgen.h>
> >> >> +#include <sys/ioctl.h>
> >> >>
> >> >>  #include <rte_pci.h>
> >> >>  #include <rte_memzone.h>
> >> >> @@ -46,6 +47,7 @@
> >> >>  #include <rte_mbuf.h>
> >> >>  #include <rte_string_fns.h>
> >> >>  #include <rte_ethdev.h>
> >> >> +#include <eal_vfio.h>
> >> >
> >> >This header was not designed to be included by PMDs.
> >> >It will break compilation on BSD.
> >>
> >> Is there an alternative to make VFIO_PRESENT available in enic?
> >> Please advise.
> >>
> >> Thanks,
> >> -Sujith
> >>
> >> >
> >> >>  #include "enic_compat.h"
> >> >>  #include "enic.h"
> >> >> @@ -561,6 +563,7 @@ enic_free_consistent(__rte_unused struct
> >> >>rte_pci_device *hwdev,
> >> >>  	/* Nothing to be done */
> >> >>  }
> >> >>
> >> >> +#ifndef VFIO_PRESENT
> >> >>  static void
> >> >>  enic_intr_handler(__rte_unused struct rte_intr_handle *handle,
> >> >>  	void *arg)
> >> >> @@ -572,6 +575,7 @@ enic_intr_handler(__rte_unused struct
> >> >>rte_intr_handle *handle,
> >> >>
> >> >>  	enic_log_q_error(enic);
> >> >>  }
> >> >> +#endif
> >> >
> >> >--
> >> >Thomas
> >
> >Hi Sujith
> >
> >Thomas is correct, VFIO code is designed to be EAL-only (mainly because
> >it's Linuxapp-specific, and PMD's are intended to be cross-platform at
> >least when it comes to compilation). Whatever it is that you're working
> >around is better fixed in the EAL itself rather than in the PMD.
> 
> I agree with you and Thomas.  Let me find the root cause for the false trigger.
> 
> Thanks,
> -Sujith
> 

You may find it in EAL VFIO interrupts code. When VFIO enables some interrupt types, it manually sends a trigger. Normally, this "trigger" just enables interrupts, but maybe for ENIC it's different. I therefore suggest you to look there first.

Thanks,
Anatoly


More information about the dev mailing list