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