From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stephen Hemminger Subject: Re: [PATCH v2 04/24] virtio: Add support for Link State interrupt Date: Tue, 27 Jan 2015 10:00:06 +0000 Message-ID: <20150127100006.007fbf8c@uryu.home.lan> 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> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Cc: "dev-VfR2kkLFssw@public.gmane.org" To: "Xie, Huawei" Return-path: In-Reply-To: List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces-VfR2kkLFssw@public.gmane.org Sender: "dev" On Tue, 27 Jan 2015 09:04:07 +0000 "Xie, Huawei" wrote: > > -----Original Message----- > > From: dev [mailto:dev-bounces-VfR2kkLFssw@public.gmane.org] On Behalf Of Ouyang Changchun > > Sent: Tuesday, January 27, 2015 10:36 AM > > To: dev-VfR2kkLFssw@public.gmane.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 = param; > > + struct virtio_hw *hw = > > + VIRTIO_DEV_PRIVATE_TO_HW(dev->data->dev_private); > > + uint8_t isr; > > + > > + /* Read interrupt status which clears interrupt */ > > + isr = vtpci_isr(hw); > > + PMD_DRV_LOG(INFO, "interrupt status = %#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? The UIO framework handles IRQ's via posix thread that is reading fd, then calling this code. Therefore it is always single threaded.