From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id CC4AC2C2E for ; Fri, 12 Jan 2018 09:40:05 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 12 Jan 2018 00:40:03 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.46,348,1511856000"; d="scan'208";a="19522697" Received: from pgsmsx108.gar.corp.intel.com ([10.221.44.103]) by orsmga003.jf.intel.com with ESMTP; 12 Jan 2018 00:40:02 -0800 Received: from pgsmsx112.gar.corp.intel.com ([169.254.3.86]) by PGSMSX108.gar.corp.intel.com ([169.254.8.194]) with mapi id 14.03.0319.002; Fri, 12 Jan 2018 16:39:58 +0800 From: "Dai, Wei" To: "xiangxia.m.yue@gmail.com" , "Xing, Beilei" , "dev@dpdk.org" Thread-Topic: [dpdk-dev] [PATCH v2 1/4] net/ixgbevf: unregister irq handler when other interrupts not allowed. Thread-Index: AQHTivrgowtk86iaWk68S6UtBpsLK6Nv6R5g Date: Fri, 12 Jan 2018 08:39:57 +0000 Message-ID: <49759EB36A64CF4892C1AFEC9231E8D66CF21B7C@PGSMSX112.gar.corp.intel.com> References: <1515688791-2794-1-git-send-email-xiangxia.m.yue@gmail.com> In-Reply-To: <1515688791-2794-1-git-send-email-xiangxia.m.yue@gmail.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNGJjMWQxZWQtZTdhNC00OGEzLWE2YWItYjM5ODU3NTM1OTFhIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE2LjUuOS4zIiwiVHJ1c3RlZExhYmVsSGFzaCI6ImJjcUc1aUloNUZTanZhdVBVYlRrazBaV3grVEE3QUplT0YyRWNyZTFcL0FjPSJ9 x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.0.116 dlp-reaction: no-action x-originating-ip: [172.30.20.205] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v2 1/4] net/ixgbevf: unregister irq handler when other interrupts not allowed. X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Jan 2018 08:40:06 -0000 Hi, Tonghao & Beilei The issue reported by Tonghao is caused by shortage of igb_uio. If you want to use Rx queue interrupt in your DPDK application,=20 I suggest use VFIO-PCI to bind NIC port instead of igb_uio. Currently igb_uio only support single event fd. This fd is triggered by both miscellaneous and RX queue interrupt in ixgbe VF. But same event fd is added to epoll fd of eal-intr-thread=20 and also epoll fd of normal thread for Rx task, this cause the issue. If VFIO-PCI is used, different event fd for misc and Rx queue are created. By the way, your patch also lead to missing of PF to VF reset interrupt. So, I am sorry that I can't agree it now. > -----Original Message----- > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of > xiangxia.m.yue@gmail.com > Sent: Friday, January 12, 2018 12:40 AM > To: Xing, Beilei ; dev@dpdk.org > Cc: Tonghao Zhang > Subject: [dpdk-dev] [PATCH v2 1/4] net/ixgbevf: unregister irq handler wh= en > other interrupts not allowed. >=20 > From: Tonghao Zhang >=20 > When bind the ixgbe VF (e.g 82599 card) to igb_uio and enable the > rx-interrupt, there will be more than one epoll_wait on intr_handle.fd. > One is in "eal-intr-thread" thread, and the others are in the thread whic= h call > the "rte_epoll_wait". The problem is that sometimes "eal-intr-thread" thr= ead > will process the rx interrupt, and then rte_epoll_wait can't get the even= t > anymore, and the packets may be lost. >=20 > The patch unregister the status interrupt handler in "eal-intr-thread" > thread and the ixgbe pf is in the same case. >=20 > Signed-off-by: Tonghao Zhang > Acked-by: Beilei Xing > --- > drivers/net/ixgbe/ixgbe_ethdev.c | 15 +++++++++++++++ > 1 file changed, 15 insertions(+) >=20 > diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c > b/drivers/net/ixgbe/ixgbe_ethdev.c > index ff19a56..0e056a2 100644 > --- a/drivers/net/ixgbe/ixgbe_ethdev.c > +++ b/drivers/net/ixgbe/ixgbe_ethdev.c > @@ -5078,6 +5078,15 @@ static int > ixgbevf_dev_xstats_get_names(__rte_unused struct rte_eth_dev *dev, > } > ixgbevf_configure_msix(dev); >=20 > + if (!rte_intr_allow_others(intr_handle)) { > + rte_intr_callback_unregister(intr_handle, > + ixgbevf_dev_interrupt_handler, > + dev); > + if (dev->data->dev_conf.intr_conf.lsc !=3D 0) > + PMD_INIT_LOG(INFO, "lsc won't enable because of" > + " no intr multiplex"); > + } > + > /* When a VF port is bound to VFIO-PCI, only miscellaneous interrupt > * is mapped to VFIO vector 0 in eth_ixgbevf_dev_init( ). > * If previous VFIO interrupt mapping setting in eth_ixgbevf_dev_init( = ) > @@ -5120,6 +5129,12 @@ static int > ixgbevf_dev_xstats_get_names(__rte_unused struct rte_eth_dev *dev, >=20 > ixgbe_dev_clear_queues(dev); >=20 > + if (!rte_intr_allow_others(intr_handle)) > + /* resume to the default handler */ > + rte_intr_callback_register(intr_handle, > + ixgbevf_dev_interrupt_handler, > + (void *)dev); > + > /* Clean datapath event and queue/vec mapping */ > rte_intr_efd_disable(intr_handle); > if (intr_handle->intr_vec !=3D NULL) { > -- > 1.8.3.1