From patchwork Wed Oct 17 08:58:24 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrzej Hajda X-Patchwork-Id: 10645127 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id DA37A13A4 for ; Wed, 17 Oct 2018 09:03:42 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C9D602A7E6 for ; Wed, 17 Oct 2018 09:03:42 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id BDF892A806; Wed, 17 Oct 2018 09:03:42 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id AC35C2A7E6 for ; Wed, 17 Oct 2018 09:03:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References: In-reply-to:Message-id:Date:Subject:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=bsBhqEwLAXFm4pxjuW7IMsW4HTRoMhCgNnK9byU2z3U=; b=l2I9U631VjSjwuQbJBQVeGoo+x aGen3FuIM++K7io0JuRHO5sAa0PNKTyZHFNQAUmbT65WjsGjdEBEodcKmkv5J6FB5hYiQ4TvdYfzD bObgMORZbJmn8ZBSUeIOZlpMXb/KCK2HuTBNxawOYUNT57mAKSL4CzEre3OFQqXi+Hqj7+VPKTMbs UiKMVD9KdL+3wt6a3MwZCkwrMObapRD2nRLLFqo6PdXZiew+xeGVDSmWH5JfQNrFQd7LXkigXcdo7 Zt7ycK3nUEvId+ySbq3G7jSeoTieV90fV2Ip87j0iQL1ArbAD1qIqlHb6dBnx1LxRwLGF9TJX8fZO cbn8lQNg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1gChjm-0005h6-KO; Wed, 17 Oct 2018 09:03:30 +0000 Received: from casper.infradead.org ([2001:8b0:10b:1236::1]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1gChjj-0005ZT-Qi for linux-arm-kernel@bombadil.infradead.org; Wed, 17 Oct 2018 09:03:27 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=References:In-reply-to:Message-id:Date: Subject:Cc:To:From:Sender:Reply-To:MIME-Version:Content-Type: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=KZ/e2xySQS+OE+AFMvIGc6tBNmknZ1uPpkiJ7OxGnvg=; b=pDiTpo3Pwizr9s7RAjqkz9zzQ 74jN9pGqFX3K7T33g5VMeMqLbJPzMxsP9bBOaNy4e52svLpm2IJD3FBv+kLdzuxCHsmDf1Xc5B/VS uDsOgG04rj+4K5HPxMPHgwxyKASkG+GPKK2dpuZU7sCGRiY20wWy7gvP9RmD+RDc1hSKf1pQfhvQv zifuL3n8KLMt3HTW4jc8mrFbzG9mSlF0q2Ug1AUJlv1wqIPJiI6Lr1UIZ338S00L0coupJ0HMtQaZ efQjr+uAaADDTQJ9gEkd7SaC0ecRsSCCH9MidKTILKpcHbGrUTcueR36Yic6QB+LTUk8s27vDv80S GBnaZyqSA==; Received: from mailout2.w1.samsung.com ([210.118.77.12]) by casper.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1gChfH-0008LG-Et for linux-arm-kernel@lists.infradead.org; Wed, 17 Oct 2018 08:58:56 +0000 Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20181017085834euoutp028baae7162b3e2e3a480f5b44889bf589~eWasogqg21870518705euoutp021; Wed, 17 Oct 2018 08:58:34 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20181017085834euoutp028baae7162b3e2e3a480f5b44889bf589~eWasogqg21870518705euoutp021 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1539766714; bh=KZ/e2xySQS+OE+AFMvIGc6tBNmknZ1uPpkiJ7OxGnvg=; h=From:To:Cc:Subject:Date:In-reply-to:References:From; b=NZpJ2o2Ox2Y+es08qKpIVPY0XCkHjDeIa7NuOpewB8TJA/PYTX0t0ETyhY0Fuxdmd gNSSBgL+YzYJOns5zhTR5F6IiSIFtnjgyBu38bvJh1YHylFGOuQr04/E8LwvkM1NLE Br3jJqSRIl4e3s7ktclgxbxNZyoSzLirYPHtaLtA= Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20181017085833eucas1p285833f4f82de46a976d7d673518a7b35~eWasIwXnZ0823608236eucas1p2T; Wed, 17 Oct 2018 08:58:33 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges1new.samsung.com (EUCPMTA) with SMTP id 99.43.04441.9B9F6CB5; Wed, 17 Oct 2018 09:58:33 +0100 (BST) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20181017085832eucas1p23dbb86230149a13634b8a091c3b1301f~eWarb_6p90824808248eucas1p2C; Wed, 17 Oct 2018 08:58:32 +0000 (GMT) X-AuditID: cbfec7f2-5c9ff70000001159-8e-5bc6f9b958e7 Received: from eusync4.samsung.com ( [203.254.199.214]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id E6.C8.04128.8B9F6CB5; Wed, 17 Oct 2018 09:58:32 +0100 (BST) Received: from AMDC2768.DIGITAL.local ([106.120.43.17]) by eusync4.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0PGQ00HKSJLJEQ40@eusync4.samsung.com>; Wed, 17 Oct 2018 09:58:32 +0100 (BST) From: Andrzej Hajda To: Greg Kroah-Hartman Subject: [PATCH v2 1/3] driver core: add probe_err log helper Date: Wed, 17 Oct 2018 10:58:24 +0200 Message-id: <20181017085824.30806-1-a.hajda@samsung.com> X-Mailer: git-send-email 2.18.0 In-reply-to: X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrIIsWRmVeSWpSXmKPExsWy7djP87o7fx6LNrj0Stri1rpzrBYvJxxm tNg4Yz2rxdSHT9gsmhevZ7NYOG05o8Wmx9dYLS7vmsNmsfbIXXaLuV+mMjtweeycdZfdY9Oq TjaP/XPXsHtsXlLv8X7fVTaPvi2rGD0+b5ILYI/isklJzcksSy3St0vgyrjw+wprwSPRiuf/ nrI0MJ4V7GLk5JAQMJHYsLOdrYuRi0NIYAWjxJtdh6Gcz4wSlyf0scFUvf/8mhEisYxR4tTq b1DOf0aJvjVnGUGq2AQ0Jf5uvgnWISJgLNF/dhY7SBGzwBsmiScPpjCBJIQFbCV+9c8FK2IR UJVYvX0jK4jNK2AhMf1cHwvEOnmJh8fbwYZyCgRL9C6YBxVfwSbRuVKpi5EDyHaROLCCCyIs LPHq+BZ2CFtG4vLkbqjyeommmVeYQW6QEOhglDixeDnUO9YSh49fBNvLLMAnMWnbdGaImbwS HW1CECUeEtuajkKDYgmjRPO1PcwTGCUXMDKsYhRPLS3OTU8tNsxLLdcrTswtLs1L10vOz93E CIzY0/+Of9rB+PVS0iFGAQ5GJR7eHWLHooVYE8uKK3MPMUpwMCuJ8GYuBgrxpiRWVqUW5ccX leakFh9ilOZgURLnXTZvY7SQQHpiSWp2ampBahFMlomDU6qBMVGjZ4ZuqAVT2kzlrNmcWSwL E5c5vHk3e5vxiqDi0HUvPcttc0+8WSjOsO5r0on3Elltm5crbnssks2k9Hm9xlY/zZpikwWS CY7Sh0LOs5X+dlj5hefvc3OxdVYn2/hCxd9u1+1heZwnLGJd2fwrRHKq2JSp7xZKtCsx/Ge7 LalnJ/HLu15RiaU4I9FQi7moOBEAjXLxs9QCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprPLMWRmVeSWpSXmKPExsVy+t/xa7o7fh6LNpj+3dLi1rpzrBYvJxxm tNg4Yz2rxdSHT9gsmhevZ7NYOG05o8Wmx9dYLS7vmsNmsfbIXXaLuV+mMjtweeycdZfdY9Oq TjaP/XPXsHtsXlLv8X7fVTaPvi2rGD0+b5ILYI/isklJzcksSy3St0vgyrjw+wprwSPRiuf/ nrI0MJ4V7GLk5JAQMJF4//k1I4gtJLCEUeLQA+UuRi4gu5FJ4vrVNawgCTYBTYm/m2+ygdgi AsYS/WdnsYMUMQu8Y5KY9eQFWLewgK3Er/65YEUsAqoSq7dvBGvmFbCQmH6ujwVim7zEw+Pt YPWcAsESPe8vsUFsDpD4fHky6wRGngWMDKsYRVJLi3PTc4uN9IoTc4tL89L1kvNzNzECg23b sZ9bdjB2vQs+xCjAwajEw7tD7Fi0EGtiWXFl7iFGCQ5mJRHezMVAId6UxMqq1KL8+KLSnNTi Q4zSHCxK4rznDSqjhATSE0tSs1NTC1KLYLJMHJxSDYwHzpxOKXbYdeubV6jHkhWx8wwYTtsp ndCpPRF+Ma2p3HPWRqb4v1P2v3c6MU9DzPDa4bwnlys+rejQSWs2em0WcFBup3/G3qXl5xI5 kp0M1GNO/mU6sOpX+ayABVsZX6zLaNlw29m7q2jm/Qu1Hx4UJ/Xej27yvGSwxShvbYOJktCj 6qeTDxsqsRRnJBpqMRcVJwIA999RMTICAAA= X-CMS-MailID: 20181017085832eucas1p23dbb86230149a13634b8a091c3b1301f X-Msg-Generator: CA CMS-TYPE: 201P X-CMS-RootMailID: 20181017085832eucas1p23dbb86230149a13634b8a091c3b1301f References: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20181017_095851_703654_2BC018E9 X-CRM114-Status: GOOD ( 17.38 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Rafael J. Wysocki" , Bartlomiej Zolnierkiewicz , linux-kernel@vger.kernel.org, Javier Martinez Canillas , Andrzej Hajda , andy.shevchenko@gmail.com, Mark Brown , linux-arm-kernel@lists.infradead.org, Marek Szyprowski MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP During probe every time driver gets resource it should usually check for error printk some message if it is not -EPROBE_DEFER and return the error. This pattern is simple but requires adding few lines after any resource acquisition code, as a result it is often omited or implemented only partially. probe_err helps to replace such code sequences with simple call, so code: if (err != -EPROBE_DEFER) dev_err(dev, ...); return err; becomes: return probe_err(dev, err, ...); Signed-off-by: Andrzej Hajda Reviewed-by: Javier Martinez Canillas Reviewed-by: Andy Shevchenko --- v2: - added error value to log message, - fixed code style, - added EXPORT_SYMBOL_GPL, - Added R-B by Javier (I hope the changes did not invalidate it). --- drivers/base/core.c | 37 +++++++++++++++++++++++++++++++++++++ include/linux/device.h | 2 ++ 2 files changed, 39 insertions(+) diff --git a/drivers/base/core.c b/drivers/base/core.c index 04bbcd779e11..aa6f3229d066 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -3067,6 +3067,43 @@ define_dev_printk_level(_dev_info, KERN_INFO); #endif +/** + * probe_err - probe error check and log helper + * @dev: the pointer to the struct device + * @err: error value to test + * @fmt: printf-style format string, not ended with newline + * @...: arguments as specified in the format string + * + * This helper implements common pattern present in probe functions for error + * checking: print message if the error is not -EPROBE_DEFER and propagate it. + * It replaces code sequence: + * if (err != -EPROBE_DEFER) + * dev_err(dev, ...); + * return err; + * with + * return probe_err(dev, err, ...); + * + * Returns @err. + * + */ +int probe_err(const struct device *dev, int err, const char *fmt, ...) +{ + struct va_format vaf; + va_list args; + + if (err == -EPROBE_DEFER) + return err; + + va_start(args, fmt); + vaf.fmt = fmt; + vaf.va = &args; + dev_err(dev, "%pV, %d\n", &vaf, err); + va_end(args); + + return err; +} +EXPORT_SYMBOL_GPL(probe_err); + static inline bool fwnode_is_primary(struct fwnode_handle *fwnode) { return fwnode && !IS_ERR(fwnode->secondary); diff --git a/include/linux/device.h b/include/linux/device.h index 90224e75ade4..06c2c797d132 100644 --- a/include/linux/device.h +++ b/include/linux/device.h @@ -1577,6 +1577,8 @@ do { \ WARN_ONCE(condition, "%s %s: " format, \ dev_driver_string(dev), dev_name(dev), ## arg) +int probe_err(const struct device *dev, int err, const char *fmt, ...); + /* Create alias, so I can be autoloaded. */ #define MODULE_ALIAS_CHARDEV(major,minor) \ MODULE_ALIAS("char-major-" __stringify(major) "-" __stringify(minor)) From patchwork Wed Oct 17 08:59:36 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrzej Hajda X-Patchwork-Id: 10645121 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 25D7D13A4 for ; Wed, 17 Oct 2018 09:00:54 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 121822ABE2 for ; Wed, 17 Oct 2018 09:00:54 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 069292ABCB; Wed, 17 Oct 2018 09:00:54 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 2A1B12ABA5 for ; Wed, 17 Oct 2018 09:00:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References: In-reply-to:Message-id:Date:Subject:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=MskprZ8SUkclJTug9ugceNKLAJck02daI15qQe9HqOc=; b=kTMpg65708d7XpqsD6/dn42Ye4 N2WsYm8VHs3eHrSWjMvEJh6D+l2ftcfS+XLE6K6pUrZXCZ2DJoc7spF+aQd7OzP8JJmNISkc7/RUL aZwJ0D8nfLCAwopm/JvwdVjUXK7cX+QJnXBLkR2LyznpYk7LkwTh8Dolvea2qH8awGQBpgNkCBy7N U173CJ1TRzVZZm/H1Ho8BBw+iIDLet3qJ8QUP5V6/h12kdyejBSsp/QLgdaPDdIQbql5XIiFrOV/w zL0sWTHcon8Eb9M+9TmjbJrZBLLod5713QZVgAxioXXVvoNVqzsVxdw6QVKrb7nBExHBNla+2eDMU hwewy3qg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1gChh1-000577-ML; Wed, 17 Oct 2018 09:00:39 +0000 Received: from mailout1.w1.samsung.com ([210.118.77.11]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1gChgW-0003dv-Gv for linux-arm-kernel@lists.infradead.org; Wed, 17 Oct 2018 09:00:25 +0000 Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20181017085953euoutp01eea45d02fded47101e44152f3e3a3025~eWb2xSbQD1975819758euoutp01e; Wed, 17 Oct 2018 08:59:53 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20181017085953euoutp01eea45d02fded47101e44152f3e3a3025~eWb2xSbQD1975819758euoutp01e DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1539766793; bh=WI3F1xM62Fk6UsbqhzCd5tOGs2n0Z2wRTbCYB/hEOYE=; h=From:To:Cc:Subject:Date:In-reply-to:References:From; b=bALUkESmhsnI/WK1AExu92XbOoyALmltC1nUSst0YoeDXYh5QOII5ufFICsiN+STy gzuwKcWkd/9wqhwpXsXPAiKeNmpzq05/1KUlk8TOiKu2F981ytNamB+vTAnzKWshy3 nLEa79h0w+03PiDMcxn1Q6Zrqjf0M2gHzCVXg0jY= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20181017085952eucas1p2cecdc59208b26971f564651c8c06872a~eWb16pLde2641926419eucas1p2A; Wed, 17 Oct 2018 08:59:52 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id C0.F1.04294.80AF6CB5; Wed, 17 Oct 2018 09:59:52 +0100 (BST) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20181017085952eucas1p2ff93b96d300aab2dc70b97bf266978ab~eWb1OCkZl2643026430eucas1p2n; Wed, 17 Oct 2018 08:59:52 +0000 (GMT) X-AuditID: cbfec7f4-835ff700000010c6-b0-5bc6fa0821a9 Received: from eusync1.samsung.com ( [203.254.199.211]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 9C.C8.04284.80AF6CB5; Wed, 17 Oct 2018 09:59:52 +0100 (BST) Received: from AMDC2768.DIGITAL.local ([106.120.43.17]) by eusync1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0PGQ0074EJNRRY50@eusync1.samsung.com>; Wed, 17 Oct 2018 09:59:52 +0100 (BST) From: Andrzej Hajda To: Greg Kroah-Hartman Subject: [PATCH v2 2/3] driver core: add deferring probe reason to devices_deferred property Date: Wed, 17 Oct 2018 10:59:36 +0200 Message-id: <20181017085936.30886-1-a.hajda@samsung.com> X-Mailer: git-send-email 2.18.0 In-reply-to: X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrEIsWRmVeSWpSXmKPExsWy7djP87ocv45FG7x4o25xa905VouXEw4z WmycsZ7VYurDJ2wWzYvXs1ksnLac0WLT42usFpd3zWGzWHvkLrvF3C9TmR24PHbOusvusWlV J5vH/rlr2D02L6n3eL/vKptH35ZVjB6fN8kFsEdx2aSk5mSWpRbp2yVwZSz+t5i1oEOlYvm9 iSwNjL9luxg5OSQETCR6ds9j6WLk4hASWMEoMfXWGSYI5zOjxIfp04EyHGBVV6eLQ8SXMUr8 2j2ZEcL5zyixZPp8JpBRbAKaEn8332QDsUUEjCX6z85iByliFnjDJPHkwRSwImGBOIm2E81g RSwCqhInN+1gBLF5BSwkfs/dzQpxk7zEw+PtYHFOgWCJpdvPMoMMkhBYwybxqbWNGaLIReL6 5jcsELawxKvjW9ghbBmJzo6DTBB2vUTTzCtQzR2MEicWL2eDSFhLHD5+EWwbswCfxKRt05kh /uSV6GgTgijxkLjQ+wAaFksYJSa2P2abwCi5gJFhFaN4amlxbnpqsVFearlecWJucWleul5y fu4mRmDMnv53/MsOxl1/kg4xCnAwKvHw7hA7Fi3EmlhWXJl7iFGCg1lJhDdzMVCINyWxsiq1 KD++qDQntfgQozQHi5I477J5G6OFBNITS1KzU1MLUotgskwcnFINjKHrGGsjn3Mev8Ub88c0 JSNbK/D0g6eCxyuqD018dWD+Ysbv4Su3Ljux4KtsYXff29cPVnO827/Pq8fnzNLFt9Y+W3We X9ba4XfhPOnio4rnVwdfTpynOb+sNd6W2fnYDPeVAeXN/LEnSy5X/Di7/NR+zefhfRafTs5s XOQR4v3F8u5sBtvPFzYosRRnJBpqMRcVJwIA8PVif9UCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprPLMWRmVeSWpSXmKPExsVy+t/xy7ocv45FG3ycwmVxa905VouXEw4z WmycsZ7VYurDJ2wWzYvXs1ksnLac0WLT42usFpd3zWGzWHvkLrvF3C9TmR24PHbOusvusWlV J5vH/rlr2D02L6n3eL/vKptH35ZVjB6fN8kFsEdx2aSk5mSWpRbp2yVwZSz+t5i1oEOlYvm9 iSwNjL9luxg5OCQETCSuThfvYuTiEBJYwihxqm8iO4TTyCTxd8c1pi5GTg42AU2Jv5tvsoHY IgLGEv1nZ4EVMQu8Y5KY9eQFI0hCWCBOou1EM1gRi4CqxMlNO8DivAIWEr/n7mYFsSUE5CUe Hm8Hi3MKBEss27UELC4kECBxfvcTtgmMPAsYGVYxiqSWFuem5xYb6hUn5haX5qXrJefnbmIE Btu2Yz8372C8tDH4EKMAB6MSD+8OsWPRQqyJZcWVuYcYJTiYlUR4MxcDhXhTEiurUovy44tK c1KLDzFKc7AoifOeN6iMEhJITyxJzU5NLUgtgskycXBKNTAyd9WoFAfvrWP5OCf7+O3Lry1m X9pxYfm5FUe31F9zskqYOIX9myXn9GkfnNPPhUYrpYneM0lwfhe7qelH5s5/iytbFqdErS2c /9/N7lnhYmNOUYuP5zsn89+bz3FwiV1VkmtaZGQY+3/BQx7TViy6cGRRIivz5g3+sq6f5WS3 ye4I4dqYLNCgxFKckWioxVxUnAgAIMtP+zICAAA= X-CMS-MailID: 20181017085952eucas1p2ff93b96d300aab2dc70b97bf266978ab X-Msg-Generator: CA CMS-TYPE: 201P X-CMS-RootMailID: 20181017085952eucas1p2ff93b96d300aab2dc70b97bf266978ab References: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20181017_020008_965272_897639B6 X-CRM114-Status: GOOD ( 20.11 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Rafael J. Wysocki" , Bartlomiej Zolnierkiewicz , linux-kernel@vger.kernel.org, Javier Martinez Canillas , Andrzej Hajda , andy.shevchenko@gmail.com, Mark Brown , linux-arm-kernel@lists.infradead.org, Marek Szyprowski MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP /sys/kernel/debug/devices_deferred property contains list of deferred devices. This list does not contain reason why the driver deferred probe, the patch improves it. The natural place to set the reason is probe_err function introduced recently, ie. if probe_err will be called with -EPROBE_DEFER instead of printk the message will be attached to deferred device and printed when user read devices_deferred property. Signed-off-by: Andrzej Hajda Reviewed-by: Mark Brown Reviewed-by: Javier Martinez Canillas Reviewed-by: Andy Shevchenko --- v2: - changed __deferred_probe_set_msg args - like in __dev_printk, fits better, - use kasprintf instead of bunch of code, - keep consistent format of devices_deferred lines, - added R-Bs (again I hope changes above are not against it). --- drivers/base/base.h | 3 +++ drivers/base/core.c | 11 +++++++---- drivers/base/dd.c | 21 ++++++++++++++++++++- 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/drivers/base/base.h b/drivers/base/base.h index 7a419a7a6235..effbd5e7f9f1 100644 --- a/drivers/base/base.h +++ b/drivers/base/base.h @@ -75,6 +75,7 @@ struct device_private { struct klist_node knode_driver; struct klist_node knode_bus; struct list_head deferred_probe; + char *deferred_probe_msg; struct device *device; }; #define to_device_private_parent(obj) \ @@ -113,6 +114,8 @@ extern void device_release_driver_internal(struct device *dev, extern void driver_detach(struct device_driver *drv); extern int driver_probe_device(struct device_driver *drv, struct device *dev); extern void driver_deferred_probe_del(struct device *dev); +extern void __deferred_probe_set_msg(const struct device *dev, + struct va_format *vaf); static inline int driver_match_device(struct device_driver *drv, struct device *dev) { diff --git a/drivers/base/core.c b/drivers/base/core.c index aa6f3229d066..560758b2ae79 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -3076,6 +3076,7 @@ define_dev_printk_level(_dev_info, KERN_INFO); * * This helper implements common pattern present in probe functions for error * checking: print message if the error is not -EPROBE_DEFER and propagate it. + * In case of -EPROBE_DEFER it sets defer probe reason. * It replaces code sequence: * if (err != -EPROBE_DEFER) * dev_err(dev, ...); @@ -3091,13 +3092,15 @@ int probe_err(const struct device *dev, int err, const char *fmt, ...) struct va_format vaf; va_list args; - if (err == -EPROBE_DEFER) - return err; - va_start(args, fmt); vaf.fmt = fmt; vaf.va = &args; - dev_err(dev, "%pV, %d\n", &vaf, err); + + if (err != -EPROBE_DEFER) + dev_err(dev, "%pV, %d\n", &vaf, err); + else + __deferred_probe_set_msg(dev, &vaf); + va_end(args); return err; diff --git a/drivers/base/dd.c b/drivers/base/dd.c index 169412ee4ae8..345fbfe335d1 100644 --- a/drivers/base/dd.c +++ b/drivers/base/dd.c @@ -27,6 +27,7 @@ #include #include #include +#include #include "base.h" #include "power/power.h" @@ -132,6 +133,8 @@ void driver_deferred_probe_del(struct device *dev) if (!list_empty(&dev->p->deferred_probe)) { dev_dbg(dev, "Removed from deferred list\n"); list_del_init(&dev->p->deferred_probe); + kfree(dev->p->deferred_probe_msg); + dev->p->deferred_probe_msg = NULL; } mutex_unlock(&deferred_probe_mutex); } @@ -202,6 +205,21 @@ void device_unblock_probing(void) driver_deferred_probe_trigger(); } +/* + * __deferred_probe_set_msg() - Set defer probe reason message for device + */ +void __deferred_probe_set_msg(const struct device *dev, struct va_format *vaf) +{ + mutex_lock(&deferred_probe_mutex); + + if (dev->p->deferred_probe_msg) + kfree(dev->p->deferred_probe_msg); + dev->p->deferred_probe_msg = kasprintf(GFP_KERNEL, "%s: %pV", + dev_driver_string(dev), vaf); + + mutex_unlock(&deferred_probe_mutex); +} + /* * deferred_devs_show() - Show the devices in the deferred probe pending list. */ @@ -212,7 +230,8 @@ static int deferred_devs_show(struct seq_file *s, void *data) mutex_lock(&deferred_probe_mutex); list_for_each_entry(curr, &deferred_probe_pending_list, deferred_probe) - seq_printf(s, "%s\n", dev_name(curr->device)); + seq_printf(s, "%s\t%s\n", dev_name(curr->device), + curr->device->p->deferred_probe_msg ?: ""); mutex_unlock(&deferred_probe_mutex);