Received: by 2002:a25:e74b:0:0:0:0:0 with SMTP id e72csp1045746ybh; Mon, 13 Jul 2020 08:01:41 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxTK5RZr3F5PFM3tjIIIKdboADg4NXOl7kPhuxpYppt0Radu9jWC627j/hR+frv+brmNEtq X-Received: by 2002:a17:906:edbb:: with SMTP id sa27mr201578ejb.438.1594652500965; Mon, 13 Jul 2020 08:01:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1594652500; cv=none; d=google.com; s=arc-20160816; b=0tcJH5nCunMm5WryVlYLT6rS74bf8TZbhcY9l9m25s3Bx2ci8F+sSZCzht8qbhACuY i+jB9+F4Lw+HbxweQUz/noel8HN7IZIwruH6w0V2b/oIs+QZWfXgjUxhkd0JobBgRrTO gLdZIYJPmyd0FqR/4CLgHUgGs3Tw8KOcsLzkZksACTg+70B4RhpSpbk/05jo11HVoMEE R8A9s5HTgPtsR8EkzubEeVpnlB282YXQGRBXHNjmlkwiTdRdQhXR9E8J8sorsBWyC4n2 CvxD/3MWzwWIutBm06vXNf/6Bn4BuBYtXYQamtqhXQ0mMjQRqu0rsHJDTMa0ugmgdyQ+ Gy4w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=idB200zkk4M6w9/S7/x4u9pjVtl7D3vW0TITJbchsNw=; b=F5uD7rGnkpBpFsGlTtbhMltWrMrKwqiMnFnRGro4h/RisGQBR49KTpIV8wD3GZWcAO Jz2QXSAKW0pLy1hEovVma8swNICi/XmnRkX0uwM4xmL0byk3WwsH/Vi9PM+1AVoegE3M zqHNzRa/ufRvP3rd+/VZCSUMbBLuKlAX4e7U5eaqcIJ5gGNycOWi1q5VDTmFIhM+13v1 C8Rew/0KlbLIkwwWC8rsEX61dHi4K135XFHw0Ib7KmRbHY3HnFfn/BnsbveNJku+pEpU tU/FnOHmX5GJx+Wu5j6w6DkGk9P8nuAxaTrRWCHDYebMLpabQf+WOs3bpn+zUzQUz32F Joyg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=MGhljGuE; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id k14si9496607ejs.400.2020.07.13.08.01.17; Mon, 13 Jul 2020 08:01:40 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=MGhljGuE; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729961AbgGMO6x (ORCPT + 99 others); Mon, 13 Jul 2020 10:58:53 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34212 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729649AbgGMO6x (ORCPT ); Mon, 13 Jul 2020 10:58:53 -0400 Received: from mail-pf1-x444.google.com (mail-pf1-x444.google.com [IPv6:2607:f8b0:4864:20::444]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E5814C061755 for ; Mon, 13 Jul 2020 07:58:52 -0700 (PDT) Received: by mail-pf1-x444.google.com with SMTP id u5so6114227pfn.7 for ; Mon, 13 Jul 2020 07:58:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=idB200zkk4M6w9/S7/x4u9pjVtl7D3vW0TITJbchsNw=; b=MGhljGuEzLpygi69eidMBOHf8JA7D5si19uxVWcDC6Wy1Ds3uBLnXz+J8pmK1Apf4C rMmUlG6BbNE4/eHlD2XU9eX/SsqTtl43LhMyugFG9ueLoLh8na9gJF9gzHZi2RsHIAp4 6pesbK3XrTP9JIQRWJEoKp6puC2JSUW19qeZrksHqiwiKMbntIEIK16tGnrB5kP4T66g ZT/J+hRlu+6DCemfhm1vsgZdBrFLrrpBJeVu4nhLxLLp0MHoQvvA3dHs9EOzuPYjNbUS By46/6ScZW9bi40KVfwRLM0C/czPMJALxG9Lxbl337r5C17bgkkNmVWQvXxZ81iY9y5u W+eg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=idB200zkk4M6w9/S7/x4u9pjVtl7D3vW0TITJbchsNw=; b=NlFk9OxbcJ+Wk3n9qm1hZmdxXt2NTjtY8uHEik/gStJeqEgXnLl6rIBoB1MqgYxWJN pqkmWDIhPGxaGUkB+r10gPo0weN3S6Pv5Rt1+y7NOJuE/XerTjkRmeA5wQJI9kawFjUB rAoYTDKkAg22vdIQ74j/pU9g8S1JdHtl7+BwMGHtDiq1pd1olYaU1GTM8Tg43fe7noDp 213IpZSbguNQjUZB7f02wMSJZs9lXybD/PrUAv03Sbq7hJ5X3ZnAnQWCJglwjA9eDbmP bPAV48gVxM3fIBdfnrozWxjmIx4BeZkytOEB0YgwHwoG4s5mnxAY/jm1A15HfsSynR6O Zpkw== X-Gm-Message-State: AOAM532IPSl7STovzyHuAqF6UafsiL8p4LabBGjw0yXL2uTetRkqbkdX yxIbYbe5WTWsPOEbXKmhkdHmapo7SwALa5e8pl8= X-Received: by 2002:a63:a05f:: with SMTP id u31mr61913148pgn.4.1594652332426; Mon, 13 Jul 2020 07:58:52 -0700 (PDT) MIME-Version: 1.0 References: <20200713144324.23654-1-a.hajda@samsung.com> <20200713144324.23654-2-a.hajda@samsung.com> In-Reply-To: <20200713144324.23654-2-a.hajda@samsung.com> From: Andy Shevchenko Date: Mon, 13 Jul 2020 17:58:35 +0300 Message-ID: Subject: Re: [PATCH v9 1/4] driver core: add device probe log helper To: Andrzej Hajda Cc: Greg Kroah-Hartman , Bartlomiej Zolnierkiewicz , Marek Szyprowski , "Rafael J. Wysocki" , Linux Kernel Mailing List , linux-arm Mailing List , Mark Brown , Russell King - ARM Linux , Neil Armstrong , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Daniel Vetter , "open list:DRM DRIVERS" Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Jul 13, 2020 at 5:43 PM Andrzej Hajda wrote: > > 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 omitted or implemented only > partially. > dev_err_probe helps to replace such code sequences with simple call, > so code: > if (err != -EPROBE_DEFER) > dev_err(dev, ...); > return err; > becomes: > return dev_err_probe(dev, err, ...); > FWIW, Reviewed-by: Andy Shevchenko > Signed-off-by: Andrzej Hajda > Reviewed-by: Rafael J. Wysocki > Reviewed-by: Mark Brown > --- > drivers/base/core.c | 42 ++++++++++++++++++++++++++++++++++++++++++ > include/linux/device.h | 3 +++ > 2 files changed, 45 insertions(+) > > diff --git a/drivers/base/core.c b/drivers/base/core.c > index 67d39a90b45c..3a827c82933f 100644 > --- a/drivers/base/core.c > +++ b/drivers/base/core.c > @@ -3953,6 +3953,48 @@ define_dev_printk_level(_dev_info, KERN_INFO); > > #endif > > +/** > + * dev_err_probe - probe error check and log helper > + * @dev: the pointer to the struct device > + * @err: error value to test > + * @fmt: printf-style format string > + * @...: arguments as specified in the format string > + * > + * This helper implements common pattern present in probe functions for error > + * checking: print debug or error message depending if the error value is > + * -EPROBE_DEFER and propagate error upwards. > + * It replaces code sequence: > + * if (err != -EPROBE_DEFER) > + * dev_err(dev, ...); > + * else > + * dev_dbg(dev, ...); > + * return err; > + * with > + * return dev_err_probe(dev, err, ...); > + * > + * Returns @err. > + * > + */ > +int dev_err_probe(const struct device *dev, int err, const char *fmt, ...) > +{ > + struct va_format vaf; > + va_list args; > + > + va_start(args, fmt); > + vaf.fmt = fmt; > + vaf.va = &args; > + if (err != -EPROBE_DEFER) I would rather see positive conditional (slightly better to parse when read), but here I think it's more or less equal. > + dev_err(dev, "error %d: %pV", err, &vaf); > + else > + dev_dbg(dev, "error %d: %pV", err, &vaf); > + va_end(args); > + > + return err; > +} > +EXPORT_SYMBOL_GPL(dev_err_probe); > + > 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 15460a5ac024..6b2272ae9af8 100644 > --- a/include/linux/device.h > +++ b/include/linux/device.h > @@ -964,6 +964,9 @@ void device_link_remove(void *consumer, struct device *supplier); > void device_links_supplier_sync_state_pause(void); > void device_links_supplier_sync_state_resume(void); > > +extern __printf(3, 4) > +int dev_err_probe(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)) > -- > 2.17.1 > -- With Best Regards, Andy Shevchenko