From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id 78F39255 for ; Wed, 28 Jan 2015 04:03:43 +0100 (CET) Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga101.fm.intel.com with ESMTP; 27 Jan 2015 19:03:41 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.09,478,1418112000"; d="scan'208";a="643620869" Received: from pgsmsx107.gar.corp.intel.com ([10.221.44.105]) by orsmga001.jf.intel.com with ESMTP; 27 Jan 2015 19:03:41 -0800 Received: from shsmsx152.ccr.corp.intel.com (10.239.6.52) by PGSMSX107.gar.corp.intel.com (10.221.44.105) with Microsoft SMTP Server (TLS) id 14.3.195.1; Wed, 28 Jan 2015 11:03:34 +0800 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.238]) by SHSMSX152.ccr.corp.intel.com ([169.254.6.129]) with mapi id 14.03.0195.001; Wed, 28 Jan 2015 11:03:33 +0800 From: "Ouyang, Changchun" To: Stephen Hemminger , "Xie, Huawei" Thread-Topic: [dpdk-dev] [PATCH v2 04/24] virtio: Add support for Link State interrupt Thread-Index: AQHQOhgPe35sCbB+e0C4UHB/qS16hZzU1W7Q Date: Wed, 28 Jan 2015 03:03:32 +0000 Message-ID: References: <1421298930-15210-1-git-send-email-changchun.ouyang@intel.com> <1422326164-13697-1-git-send-email-changchun.ouyang@intel.com> <1422326164-13697-5-git-send-email-changchun.ouyang@intel.com> <20150127100006.007fbf8c@uryu.home.lan> In-Reply-To: <20150127100006.007fbf8c@uryu.home.lan> Accept-Language: zh-CN, 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 Cc: "dev@dpdk.org" Subject: Re: [dpdk-dev] [PATCH v2 04/24] virtio: Add support for Link State interrupt X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 28 Jan 2015 03:03:43 -0000 Hi Stephen, > -----Original Message----- > From: Stephen Hemminger [mailto:stephen@networkplumber.org] > Sent: Tuesday, January 27, 2015 6:00 PM > To: Xie, Huawei > Cc: Ouyang, Changchun; dev@dpdk.org > Subject: Re: [dpdk-dev] [PATCH v2 04/24] virtio: Add support for Link Sta= te > interrupt >=20 > On Tue, 27 Jan 2015 09:04:07 +0000 > "Xie, Huawei" wrote: >=20 > > > -----Original Message----- > > > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Ouyang > > > Changchun > > > Sent: Tuesday, January 27, 2015 10:36 AM > > > To: dev@dpdk.org > > > Subject: [dpdk-dev] [PATCH v2 04/24] virtio: Add support for Link > > > State interrupt > > > > > > Virtio has link state interrupt which can be used. > > > > > > Signed-off-by: Stephen Hemminger > > > Signed-off-by: Changchun Ouyang > > > --- > > > lib/librte_pmd_virtio/virtio_ethdev.c | 78 > > > +++++++++++++++++++++++++++------ > > > -- > > > lib/librte_pmd_virtio/virtio_pci.c | 22 ++++++++++ > > > lib/librte_pmd_virtio/virtio_pci.h | 4 ++ > > > 3 files changed, 86 insertions(+), 18 deletions(-) > > > > > > diff --git a/lib/librte_pmd_virtio/virtio_ethdev.c > > > b/lib/librte_pmd_virtio/virtio_ethdev.c > > > index 5df3b54..ef87ff8 100644 > > > --- a/lib/librte_pmd_virtio/virtio_ethdev.c > > > +++ b/lib/librte_pmd_virtio/virtio_ethdev.c > > > @@ -845,6 +845,34 @@ static int virtio_resource_init(struct > > > rte_pci_device *pci_dev __rte_unused) #endif > > > > > > /* > > > + * Process Virtio Config changed interrupt and call the callback > > > + * if link state changed. > > > + */ > > > +static void > > > +virtio_interrupt_handler(__rte_unused struct rte_intr_handle *handle= , > > > + void *param) > > > +{ > > > + struct rte_eth_dev *dev =3D param; > > > + struct virtio_hw *hw =3D > > > + VIRTIO_DEV_PRIVATE_TO_HW(dev->data->dev_private); > > > + uint8_t isr; > > > + > > > + /* Read interrupt status which clears interrupt */ > > > + isr =3D vtpci_isr(hw); > > > + PMD_DRV_LOG(INFO, "interrupt status =3D %#x", isr); > > > + > > > + if (rte_intr_enable(&dev->pci_dev->intr_handle) < 0) > > > + PMD_DRV_LOG(ERR, "interrupt enable failed"); > > > + > > > > Is it better to put rte_intr_enable after we have handled the interrupt= . > > Is there the possibility of interrupt reentrant in uio intr framework? >=20 > The UIO framework handles IRQ's via posix thread that is reading fd, then > calling this code. Therefore it is always single threaded. Even if it is under UIO framework, and always single threaded,=20 How about move rte_intr_enable after the virtio_dev_link_update() and _rte_= eth_dev_callback_process is called. This make it more like interrupt handler in linux kernel. What do you think of it? Thanks Changchun