From patchwork Thu Mar 17 15:35:02 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: patricia.domingues@canonical.com X-Patchwork-Id: 1606630 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=WrfBOcXo; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KKB7c3LsMz9s75 for ; Fri, 18 Mar 2022 02:36:12 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1nUsAW-0007L0-T3; Thu, 17 Mar 2022 15:36:04 +0000 Received: from smtp-relay-canonical-0.internal ([10.131.114.83] helo=smtp-relay-canonical-0.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1nUsAS-0007ET-KU for kernel-team@lists.ubuntu.com; Thu, 17 Mar 2022 15:36:00 +0000 Received: from localhost.localdomain (1.general.patriciasd.us.vpn [10.172.64.192]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-canonical-0.canonical.com (Postfix) with ESMTPSA id 1D81941CBE for ; Thu, 17 Mar 2022 15:35:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1647531360; bh=bGlGiaBJ4Ms6+MuYvCar5eZKMJZ0c2sE7hrEOqt5YEA=; h=From:To:Subject:Date:Message-Id:In-Reply-To:References; b=WrfBOcXo0YWxVAHVK+my90cqof2/rrx+Kk6V9GEeZK910MQS9cGUNmjbh/3PCAj4+ IcNiGI81YnXO3161tAH64Y6tAWrS3ia0vBVSPwGyYwIWt9lq/Z4PND6nqz26x2BJqe JWElih3K8FfAWj9pFkCsDlnXeVHhSlI8lKe4I0f8+O+xHknklMjPMUC5aBobWEHYKI 80ifqfJUZzFBo1sTcXXoU/QkA3x4p7G7vm+G84H3Ei8N7jOpPI5TlENoycpJY4Yhfw VRqKUzO6Uoms4xzA8oVg+V4Gk7DCVYWrw5Dd9XYSNxrqqUOM697DxUALffCJ1jMnGm SS+8KhIWNJvpA== From: patricia.domingues@canonical.com To: kernel-team@lists.ubuntu.com Subject: [J][PATCH 5/6] PCI: Export pci_dev_lock() Date: Thu, 17 Mar 2022 12:35:02 -0300 Message-Id: <20220317153503.12817-6-patricia.domingues@canonical.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20220317153503.12817-1-patricia.domingues@canonical.com> References: <20220317153503.12817-1-patricia.domingues@canonical.com> X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Niklas Schnelle BugLink: https://bugs.launchpad.net/bugs/1959532 Commit e3a9b1212b9d ("PCI: Export pci_dev_trylock() and pci_dev_unlock()") already exported pci_dev_trylock()/pci_dev_unlock() however in some circumstances such as during error recovery it makes sense to block waiting to get full access to the device so also export pci_dev_lock(). Link: https://lore.kernel.org/all/20210928181014.GA713179@bhelgaas/ Acked-by: Pierre Morel Acked-by: Bjorn Helgaas Signed-off-by: Niklas Schnelle Signed-off-by: Vasily Gorbik (cherry picked from commit dfd5bb23ad75bdabde89ac3166705a450bf16acb) Signed-off-by: Patricia Domingues --- drivers/pci/pci.c | 3 ++- include/linux/pci.h | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index 9dbf92a7f5aa..9cdbb35dd090 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -5092,12 +5092,13 @@ static int pci_reset_bus_function(struct pci_dev *dev, bool probe) return pci_parent_bus_reset(dev, probe); } -static void pci_dev_lock(struct pci_dev *dev) +void pci_dev_lock(struct pci_dev *dev) { pci_cfg_access_lock(dev); /* block PM suspend, driver probe, etc. */ device_lock(&dev->dev); } +EXPORT_SYMBOL_GPL(pci_dev_lock); /* Return 1 on successful lock, 0 on contention */ int pci_dev_trylock(struct pci_dev *dev) diff --git a/include/linux/pci.h b/include/linux/pci.h index 72821c023239..84890df788b2 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -1677,6 +1677,7 @@ void pci_cfg_access_lock(struct pci_dev *dev); bool pci_cfg_access_trylock(struct pci_dev *dev); void pci_cfg_access_unlock(struct pci_dev *dev); +void pci_dev_lock(struct pci_dev *dev); int pci_dev_trylock(struct pci_dev *dev); void pci_dev_unlock(struct pci_dev *dev);