From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752832AbdJLHyn (ORCPT ); Thu, 12 Oct 2017 03:54:43 -0400 Received: from mailout1.samsung.com ([203.254.224.24]:56130 "EHLO mailout1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751632AbdJLHyl (ORCPT ); Thu, 12 Oct 2017 03:54:41 -0400 X-AuditID: b6c32a47-4b1ff70000001114-2b-59df1fbebe2d From: Pankaj Dubey To: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Kishon Vijay Abraham I , Bjorn Helgaas , Jingoo Han , Joao Pinto , Pankaj Dubey Subject: [PATCH] PCI: dwc: designware: don't sleep in atomic context Date: Thu, 12 Oct 2017 13:24:49 +0530 Message-id: <1507794889-11148-1-git-send-email-pankaj.dubey@samsung.com> X-Mailer: git-send-email 2.7.4 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrBIsWRmVeSWpSXmKPExsWy7bCmhe4++fuRBh3HlSyWNGVYrPgyk93i x6OjzBYXnvawWVzeNYfN4uy842wWi7Z+YXdg99g56y67x4JNpR59W1YxemzZ/5nR4/iN7Uwe nzfJBbBFcdmkpOZklqUW6dslcGVsnfeLrWCWUMW3hiNsDYwL+LsYOTkkBEwkvqw5xNbFyMUh JLCDUeLjusfMEM53RolF5zaydjFygFXNXBwJEd/AKLH+xX+ojp+MEu/vr2cHGcUmoCvx5P1c ZhBbRMBaouHVKlaQImaBo4wSB1buZQVJCAu4SLzqesoIYrMIqErcO/mEEWQDr4CHxIpjOhAn yUncPNcJdoWEwE9WifkfDzFCJFwkDnR8YIKwhSVeHd/CDmFLSzxbtRGqplriycnXLBDNExgl Nh48zgyRsJc4cGUOC4jNLMAn0XH4LzvEa7wSHW1CEKaHRNdHGYhqR4mWhVPAnhcSiJV4u7Rm AqPkAkaGVYxiqQXFuempxUYFxnrFibnFpXnpesn5uZsYwfGn5b6Dcds5n0OMAhyMSjy8L7Tu RQqxJpYVV+YeYpTgYFYS4fXfBRTiTUmsrEotyo8vKs1JLT7EKM3BoiTOW7ftWoSQQHpiSWp2 ampBahFMlomDU6qBsUKJTe6725NTAfImPvO0Ywtaj0qfXj7D0PaFzfTl5462fXlhZf1Kxu/H mYXy2xwvbN2Rx1FYJhOXNHepZebv3Vz/RG5cfegz/7yZHqdGzVyTBTMY1xX8ud7M/3LDoejv O7ikIxgkGK2DQ1qO3zs9q57vsMlVvvD37t7mf9Sd+UOLxKd2rNd/rsRSnJFoqMVcVJwIAM5Z Sry7AgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrKJMWRmVeSWpSXmKPExsVy+t9jQd198vcjDc58FrVY0pRhseLLTHaL H4+OMltceNrDZnF51xw2i7PzjrNZLNr6hd2B3WPnrLvsHgs2lXr0bVnF6LFl/2dGj+M3tjN5 fN4kF8AWxWWTkpqTWZZapG+XwJWxdd4vtoJZQhXfGo6wNTAu4O9i5OCQEDCRmLk4souRk0NI YB2jxJRNAl2MXED2T0aJ6+fvMIIk2AR0JZ68n8sMYosIWEs0vFrFClLELHCUUeLptKNgRcIC LhKvup6C2SwCqhL3Tj5hBFnAK+AhseKYDkhYQkBO4ua5TuYJjFwLGBlWMUqmFhTnpucWGxUY 5aWW6xUn5haX5qXrJefnbmIEBsa2w1r9OxgfL4k/xCjAwajEwztB416kEGtiWXFl7iFGCQ5m JRFe/11AId6UxMqq1KL8+KLSnNTiQ4zSHCxK4rz8+ccihQTSE0tSs1NTC1KLYLJMHJxSDYz9 Czu/NiRKbzjgrmAeda5Y5tYeoZO13yKnz9Od/WH1vz0aR2NX/7x1ec5pvYCp7HOEDheoc+bz 7OZSM3y1teywdEp8z9UX3W8s9mzbd/3jM0fFGCmjlv/9Xy5qtl6pWfZVWuiuN5/8ioN8Pzdp Xv9sEOe9aI9A6geGtW+ffXtmJrLtGvu/tEchSizFGYmGWsxFxYkAiAe66QgCAAA= X-CMS-MailID: 20171012075438epcas2p32599c2db4ed1512c81d1039bb1ed5607 X-Msg-Generator: CA X-Sender-IP: 182.195.42.143 X-Local-Sender: =?UTF-8?B?7YyQ7Lm07KaIG1NTSVItRkRTIFNXG+yCvOyEseyghOyekBsu?= =?UTF-8?B?L1NlbmlvciBDaGllZiBFbmdpbmVlcg==?= X-Global-Sender: =?UTF-8?B?UEFOS0FKIEtVTUFSIERVQkVZG1NTSVItRkRTIFNXG1NhbXN1?= =?UTF-8?B?bmcgRWxlY3Ryb25pY3MbLi9TZW5pb3IgQ2hpZWYgRW5naW5lZXI=?= X-Sender-Code: =?UTF-8?B?QzEwG1NXQUhRG0MxMElEMDdJRDAxMDk5Nw==?= CMS-TYPE: 102P X-CMS-RootMailID: 20171012075438epcas2p32599c2db4ed1512c81d1039bb1ed5607 X-RootMTR: 20171012075438epcas2p32599c2db4ed1512c81d1039bb1ed5607 References: Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In pcie-designware.c many places we are calling "usleep_range" which are in atomic context. This patch fixes these potential BUGs and replaces "usleep_range" with mdelay calls. Signed-off-by: Pankaj Dubey --- drivers/pci/dwc/pcie-designware.c | 8 ++++---- drivers/pci/dwc/pcie-designware.h | 3 +-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/drivers/pci/dwc/pcie-designware.c b/drivers/pci/dwc/pcie-designware.c index 88abddd..35d19b9 100644 --- a/drivers/pci/dwc/pcie-designware.c +++ b/drivers/pci/dwc/pcie-designware.c @@ -138,7 +138,7 @@ static void dw_pcie_prog_outbound_atu_unroll(struct dw_pcie *pci, int index, if (val & PCIE_ATU_ENABLE) return; - usleep_range(LINK_WAIT_IATU_MIN, LINK_WAIT_IATU_MAX); + mdelay(LINK_WAIT_IATU_MIN); } dev_err(pci->dev, "outbound iATU is not being enabled\n"); } @@ -181,7 +181,7 @@ void dw_pcie_prog_outbound_atu(struct dw_pcie *pci, int index, int type, if (val & PCIE_ATU_ENABLE) return; - usleep_range(LINK_WAIT_IATU_MIN, LINK_WAIT_IATU_MAX); + mdelay(LINK_WAIT_IATU_MIN); } dev_err(pci->dev, "outbound iATU is not being enabled\n"); } @@ -239,7 +239,7 @@ static int dw_pcie_prog_inbound_atu_unroll(struct dw_pcie *pci, int index, if (val & PCIE_ATU_ENABLE) return 0; - usleep_range(LINK_WAIT_IATU_MIN, LINK_WAIT_IATU_MAX); + mdelay(LINK_WAIT_IATU_MIN); } dev_err(pci->dev, "inbound iATU is not being enabled\n"); @@ -285,7 +285,7 @@ int dw_pcie_prog_inbound_atu(struct dw_pcie *pci, int index, int bar, if (val & PCIE_ATU_ENABLE) return 0; - usleep_range(LINK_WAIT_IATU_MIN, LINK_WAIT_IATU_MAX); + mdelay(LINK_WAIT_IATU_MIN); } dev_err(pci->dev, "inbound iATU is not being enabled\n"); diff --git a/drivers/pci/dwc/pcie-designware.h b/drivers/pci/dwc/pcie-designware.h index e5d9d77..13c17c9 100644 --- a/drivers/pci/dwc/pcie-designware.h +++ b/drivers/pci/dwc/pcie-designware.h @@ -28,8 +28,7 @@ /* Parameters for the waiting for iATU enabled routine */ #define LINK_WAIT_MAX_IATU_RETRIES 5 -#define LINK_WAIT_IATU_MIN 9000 -#define LINK_WAIT_IATU_MAX 10000 +#define LINK_WAIT_IATU_MIN 9 /* Synopsys-specific PCIe configuration registers */ #define PCIE_PORT_LINK_CONTROL 0x710 -- 2.7.4