From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Monjalon Subject: Re: [PATCH] igb_uio: stop device when closing /dev/uioX Date: Thu, 30 Mar 2017 22:22:53 +0200 Message-ID: <1729096.OcIPJKQlaJ@xps13> References: <1480696111-116651-1-git-send-email-jianfeng.tan@intel.com> <1480697146-118038-1-git-send-email-jianfeng.tan@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7Bit Cc: dev@dpdk.org, stephen@networkplumber.org, jing.d.chen@intel.com To: Jianfeng Tan , ferruh.yigit@intel.com Return-path: Received: from mail-wr0-f181.google.com (mail-wr0-f181.google.com [209.85.128.181]) by dpdk.org (Postfix) with ESMTP id E2C5237AF for ; Thu, 30 Mar 2017 22:22:54 +0200 (CEST) Received: by mail-wr0-f181.google.com with SMTP id l43so78272994wre.1 for ; Thu, 30 Mar 2017 13:22:54 -0700 (PDT) In-Reply-To: <1480697146-118038-1-git-send-email-jianfeng.tan@intel.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 2016-12-02 16:45, Jianfeng Tan: > Depends-on: http://dpdk.org/dev/patchwork/patch/17493/ The above patch is marked as rejected. Do we want to reject also this patch? > When a DPDK application grab a PCI device, device and driver work > together to Rx/Tx packets. If the DPDK app crashes or gets killed, > there's no chance for DPDK driver to stop the device, which means > rte_eth_dev_stop() will not be called. > > This could result in problems. In virtio's case, the device (the > vhost backend), will keep working. If packets come, the vhost will > copy them into the vring, which is negotiated with the previous DPDK > app. But the resources, especially hugepages, are recycled by VM > kernel. What's worse, the memory could be allocated for other usage, > and re-written. This leads to an uncertain situation. Like this post > has reported, https://bugs.launchpad.net/qemu/+bug/1558175, QEMU's > vhost finds out wrong value, and exits the whole QEMU process. > > To make it right, we need to restart (or reset) the device and make > the device go into the initial state, when uio-generic or igb_uio > recycles the PCI device. There's a chance in uio framework to disable > devices when /dev/uioX gets closed. Here we enable the pci device > in open() hook and disable it in release() hook. > > However, if device is not enabled in probe() phase any more, we can > not register irq in probe() through uio_register_device(). To address > that, we invoke request_irq() to register callback directly. > > Similar change needs to be done in uio-generic driver. And vfio-pci > seems to have done that already. > > Signed-off-by: Jianfeng Tan