From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id ECAAA3B5 for ; Tue, 21 Mar 2017 12:34:11 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=intel.com; i=@intel.com; q=dns/txt; s=intel; t=1490096052; x=1521632052; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=KhS3G6bI20q6z67pYxa9elFjdED4bAbtLtwayksyupg=; b=h8+kpVhhI4GU+B9Ak8uUsUsHgzsJTD3fQcKK5rjrfYBiBMQ3r14ly5HC r/S5RfUHmxxt9YzzFw9ScCxxXBRCxg==; Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 21 Mar 2017 04:34:10 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.36,198,1486454400"; d="scan'208";a="69351074" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by orsmga004.jf.intel.com with ESMTP; 21 Mar 2017 04:34:10 -0700 Received: from fmsmsx153.amr.corp.intel.com (10.18.125.6) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 21 Mar 2017 04:34:10 -0700 Received: from shsmsx152.ccr.corp.intel.com (10.239.6.52) by FMSMSX153.amr.corp.intel.com (10.18.125.6) with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 21 Mar 2017 04:34:10 -0700 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.20]) by SHSMSX152.ccr.corp.intel.com ([169.254.6.132]) with mapi id 14.03.0248.002; Tue, 21 Mar 2017 19:34:08 +0800 From: "Zhang, Qi Z" To: Thomas Monjalon CC: "dev@dpdk.org" , "Yigit, Ferruh" Thread-Topic: [PATCH v2] net/i40e: fix wrong handle when enable interrupt Thread-Index: AQHSojT/80agAYnloUSjIHqpqojlE6GfJvww Date: Tue, 21 Mar 2017 11:34:08 +0000 Message-ID: <039ED4275CED7440929022BC67E706115306A09F@SHSMSX103.ccr.corp.intel.com> References: <1486670573-5447-1-git-send-email-qi.z.zhang@intel.com> <20170321120953.73051-1-qi.z.zhang@intel.com> In-Reply-To: <20170321120953.73051-1-qi.z.zhang@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v2] net/i40e: fix wrong handle when enable interrupt 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: Tue, 21 Mar 2017 11:34:12 -0000 Hi Thomas: =09 > -----Original Message----- > From: Zhang, Qi Z > Sent: Tuesday, March 21, 2017 8:10 PM > To: Wu, Jingjing ; Zhang, Helin > > Cc: dev@dpdk.org; Zhang, Qi Z ; stable@dpdk.org > Subject: [PATCH v2] net/i40e: fix wrong handle when enable interrupt >=20 > In i40e_dev_interrupt_handler, when call rte_intr_enable, the intr_handle= is > the copy when we registered. > According to interrupt handle framework, if the requirement of intr_handl= e > is changed, we need to unregister then register a new copy. This happens = on > i40e driver when bind to vfio-pci, the rte_intr_efd_enable function will > modify the max_intr according the queue number, so a new copy of > intr_handle need to be registered. > Without this fix, we saw lw3fwd-power does not work due to wrong > interrupt count in vfio_irq_set when set vfio interrupt. >=20 > Fixes: 2ce7a1ed09fc ("net/i40e: localize mapping of ethdev to PCI device"= ) >=20 > Cc: stable@dpdk.org >=20 > Signed-off-by: Qi Zhang > --- > v2: > - follow current design, when intr_handle is modified, unregister > the old one and register the new one. > - there should be a patch set to fix on other devices. >=20 > drivers/net/i40e/i40e_ethdev.c | 8 ++++++++ > 1 file changed, 8 insertions(+) >=20 > diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethde= v.c > index 9c76baa..e7bbea5 100644 > --- a/drivers/net/i40e/i40e_ethdev.c > +++ b/drivers/net/i40e/i40e_ethdev.c > @@ -1886,6 +1886,14 @@ i40e_dev_start(struct rte_eth_dev *dev) > ret =3D rte_intr_efd_enable(intr_handle, intr_vector); > if (ret) > return ret; > + /** > + * intr_handle may be modified in rte_intr_efd_enable > + * so unregster the old one and register the new one. > + */ > + rte_intr_callback_unregister(intr_handle, > + i40e_dev_interrupt_handler, dev); > + rte_intr_callback_register(intr_handle, > + i40e_dev_interrupt_handler, dev); To me, this fix looks a little bit weird. May I know why we need to register an copy of intr_handle ? What do you think about my previous clean up patch. http://dpdk.org/dev/patchwork/patch/21529/ Thanks Qi. > } >=20 > if (rte_intr_dp_is_en(intr_handle) && !intr_handle->intr_vec) { > -- > 2.9.3