From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm1-f66.google.com (mail-wm1-f66.google.com [209.85.128.66]) by dpdk.org (Postfix) with ESMTP id A8ED04CA2 for ; Fri, 9 Nov 2018 15:26:23 +0100 (CET) Received: by mail-wm1-f66.google.com with SMTP id r11-v6so2190497wmb.2 for ; Fri, 09 Nov 2018 06:26:23 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=pRP4XcPh42TUB82VA0SnUiU3CTg72Y4d92nzEpOZF0U=; b=ShAP3TEe0FQmZDIK2jfcU5917k/SiG2BxBlq0GJug6DV/ICV6y1x+xCXiisIdinxqt H0WcvqIoUqiVfA0JLB0/lT7F5ACF/o1Tn3bcHjVPp7U2M/oHySLOTEA2/h2kmAKnpYk4 sXlyZeSZMsu4UQvcpoLWewLx3kYBxegpTbTvg3yvCqcXGzGqcYWi9LbTM8KSLC3UB/wK RbmcL30LkFCBSJbTlcetWv1+iD9LStbb8FrNIgYe9P1BQYVlaVVs0G+1wrojrAgxfWhA O91dNHJR0hOx3dcrb9irjSt5/yVzaMUO+BKYCcp8IO9+bSoMFVzxmLl2uaIfebOgcHFr Mp5g== X-Gm-Message-State: AGRZ1gLjaAmN4QNZWsuARxGM/+qYDdAAtQY8wA72LMCk+C86NFtFl+HW euxJLdx1WoKxm+ggQmumBH/BP1NMGTw= X-Google-Smtp-Source: AJdET5dtDe6AwBB8OjrFiWT6eT41FWGyNVzO8t8nH44gO8qyEV2jaCmj60A6Ts+s3L0dwgtSL1IQjA== X-Received: by 2002:a1c:3288:: with SMTP id y130-v6mr4866422wmy.11.1541773583219; Fri, 09 Nov 2018 06:26:23 -0800 (PST) Received: from localhost ([2a01:4b00:f419:6f00:8361:8946:ba2b:d556]) by smtp.gmail.com with ESMTPSA id 137-v6sm2070718wmo.43.2018.11.09.06.26.22 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 09 Nov 2018 06:26:22 -0800 (PST) From: Luca Boccassi To: Ferruh Yigit Cc: dpdk stable Date: Fri, 9 Nov 2018 14:26:11 +0000 Message-Id: <20181109142611.20254-2-bluca@debian.org> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20181109142611.20254-1-bluca@debian.org> References: <1541700985.31208.25.camel@debian.org> <20181109142611.20254-1-bluca@debian.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-stable] patch 'igb_uio: remove device reset in release' has been queued to LTS release 16.11.9 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Nov 2018 14:26:23 -0000 Hi, FYI, your patch has been queued to LTS release 16.11.9 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 11/11/18. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. If the code is different (ie: not only metadata diffs), due for example to a change in context or macro names, please double check it. Thanks. Luca Boccassi --- >>From ff54889c4394f7ca772dc637ba3b516af8de1356 Mon Sep 17 00:00:00 2001 From: Ferruh Yigit Date: Tue, 7 Nov 2017 22:29:13 +0000 Subject: [PATCH] igb_uio: remove device reset in release [ upstream commit 369db3ae8e91cf637ec1abddbf667be5e35753fe ] More error reported for device reset in release() [1], when device pass-through to the guest, host kernel crash on guest exit. Removing the reset completely. This is close to reverting commit b58eedfc7dd5 [2], taking into account previous fix to remove reset in open as well [3], but not exactly same. With latest code, interrupts are enabled in uio open() callback and disabled in uio release() callback, so when a DPDK application exit device interrupts are disabled. Previously interrupts were only enabled once in igb_uio module insert and disabled in module removal. Also with latest code device set as bus master in open() and master cleared in release(), clearing bus master should prevent further DMA which was one of the target of the initial patch. The initial intention was also to reset the device to be sure it has been left in proper state, but currently that part is missing because of reported problem(s). Still igb_uio should be safer comparing to the pre b58eedfc7dd5 state. [1] http://dpdk.org/ml/archives/dev/2017-November/081459.html [2] b58eedfc7dd5 ("igb_uio: issue FLR during open and release of device file") [3] f73b38e9245d ("igb_uio: remove device reset in open") Fixes: e3a64deae2d5 ("igb_uio: prevent reset for bnx2x devices") Fixes: b58eedfc7dd5 ("igb_uio: issue FLR during open and release of device file") Signed-off-by: Ferruh Yigit --- lib/librte_eal/linuxapp/igb_uio/igb_uio.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c index bedfa6eae..b12351791 100644 --- a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c +++ b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c @@ -194,8 +194,6 @@ igbuio_pci_release(struct uio_info *info, struct inode *inode) /* stop the device from further DMA */ pci_clear_master(dev); - pci_reset_function(dev); - return 0; } -- 2.19.1 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2018-11-09 14:24:58.331809139 +0000 +++ 0003-igb_uio-remove-device-reset-in-release.patch 2018-11-09 14:24:58.273726112 +0000 @@ -1,8 +1,10 @@ -From 369db3ae8e91cf637ec1abddbf667be5e35753fe Mon Sep 17 00:00:00 2001 +From ff54889c4394f7ca772dc637ba3b516af8de1356 Mon Sep 17 00:00:00 2001 From: Ferruh Yigit Date: Tue, 7 Nov 2017 22:29:13 +0000 Subject: [PATCH] igb_uio: remove device reset in release +[ upstream commit 369db3ae8e91cf637ec1abddbf667be5e35753fe ] + More error reported for device reset in release() [1], when device pass-through to the guest, host kernel crash on guest exit. @@ -37,63 +39,21 @@ Fixes: e3a64deae2d5 ("igb_uio: prevent reset for bnx2x devices") Fixes: b58eedfc7dd5 ("igb_uio: issue FLR during open and release of device file") -Cc: stable@dpdk.org Signed-off-by: Ferruh Yigit --- - lib/librte_eal/linuxapp/igb_uio/compat.h | 19 ------------------- - lib/librte_eal/linuxapp/igb_uio/igb_uio.c | 8 -------- - 2 files changed, 27 deletions(-) - -diff --git a/lib/librte_eal/linuxapp/igb_uio/compat.h b/lib/librte_eal/linuxapp/igb_uio/compat.h -index c8b2c9de3..ce456d4bb 100644 ---- a/lib/librte_eal/linuxapp/igb_uio/compat.h -+++ b/lib/librte_eal/linuxapp/igb_uio/compat.h -@@ -132,22 +132,3 @@ static bool pci_check_and_mask_intx(struct pci_dev *pdev) - #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 0) - #define HAVE_PCI_MSI_MASK_IRQ 1 - #endif -- --#define BROADCOM_PCI_VENDOR_ID 0x14E4 --static const struct pci_device_id no_reset_pci_tbl[] = { -- { PCI_DEVICE(BROADCOM_PCI_VENDOR_ID, 0x164f) }, /* 57711 */ -- { PCI_DEVICE(BROADCOM_PCI_VENDOR_ID, 0x168a) }, /* 57800 */ -- { PCI_DEVICE(BROADCOM_PCI_VENDOR_ID, 0x168e) }, /* 57810 */ -- { PCI_DEVICE(BROADCOM_PCI_VENDOR_ID, 0x163d) }, /* 57811 */ -- { PCI_DEVICE(BROADCOM_PCI_VENDOR_ID, 0x168d) }, /* 57840_OBS */ -- { PCI_DEVICE(BROADCOM_PCI_VENDOR_ID, 0x16a1) }, /* 57840_4_10 */ -- { PCI_DEVICE(BROADCOM_PCI_VENDOR_ID, 0x16a2) }, /* 57840_2_20 */ -- { PCI_DEVICE(BROADCOM_PCI_VENDOR_ID, 0x16ae) }, /* 57810_MF */ -- { PCI_DEVICE(BROADCOM_PCI_VENDOR_ID, 0x163e) }, /* 57811_MF */ -- { PCI_DEVICE(BROADCOM_PCI_VENDOR_ID, 0x16a4) }, /* 57840_MF */ -- { PCI_DEVICE(BROADCOM_PCI_VENDOR_ID, 0x16a9) }, /* 57800_VF */ -- { PCI_DEVICE(BROADCOM_PCI_VENDOR_ID, 0x16af) }, /* 57810_VF */ -- { PCI_DEVICE(BROADCOM_PCI_VENDOR_ID, 0x163f) }, /* 57811_VF */ -- { PCI_DEVICE(BROADCOM_PCI_VENDOR_ID, 0x16ad) }, /* 57840_VF */ -- { 0 }, --}; + lib/librte_eal/linuxapp/igb_uio/igb_uio.c | 2 -- + 1 file changed, 2 deletions(-) + diff --git a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c -index 037e02267..a3a98c173 100644 +index bedfa6eae..b12351791 100644 --- a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c +++ b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c -@@ -348,11 +348,6 @@ igbuio_pci_open(struct uio_info *info, struct inode *inode) - return 0; - } - --static bool is_device_excluded_from_reset(struct pci_dev *pdev) --{ -- return !!pci_match_id(no_reset_pci_tbl, pdev); --} -- - static int - igbuio_pci_release(struct uio_info *info, struct inode *inode) - { -@@ -365,9 +360,6 @@ igbuio_pci_release(struct uio_info *info, struct inode *inode) +@@ -194,8 +194,6 @@ igbuio_pci_release(struct uio_info *info, struct inode *inode) /* stop the device from further DMA */ pci_clear_master(dev); -- if (!is_device_excluded_from_reset(dev)) -- pci_reset_function(dev); +- pci_reset_function(dev); - return 0; }