From: Rob Herring <robh@kernel.org>
To: Frank Rowand <frowand.list@gmail.com>,
"Enrico Weigelt, metux IT consult" <info@metux.net>,
"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>,
Sakari Ailus <sakari.ailus@linux.intel.com>,
Petr Mladek <pmladek@suse.com>,
Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
Geert Uytterhoeven <geert+renesas@glider.be>
Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH v3 3/6] of: dynamic: Refactor changeset action printing to common helpers
Date: Fri, 18 Aug 2023 15:40:58 -0500 [thread overview]
Message-ID: <20230801-dt-changeset-fixes-v3-3-5f0410e007dd@kernel.org> (raw)
In-Reply-To: <20230801-dt-changeset-fixes-v3-0-5f0410e007dd@kernel.org>
Several places print the changeset action with node and property
details. Refactor these into a common printing helper. The complicating
factor is some prints are debug and some are errors. Solve this with a
bit of preprocessor magic.
Signed-off-by: Rob Herring <robh@kernel.org>
---
v3:
- Drop printing changeset entry pointers
v2:
- Split out refactoring from fix in prior patch
- Avoid pr_cont and relying on pr_debug return value which dynamic
debug doesn't have
---
drivers/of/dynamic.c | 53 +++++++++++-----------------------------------------
1 file changed, 11 insertions(+), 42 deletions(-)
diff --git a/drivers/of/dynamic.c b/drivers/of/dynamic.c
index 4999636eaa92..17a0727d3f9b 100644
--- a/drivers/of/dynamic.c
+++ b/drivers/of/dynamic.c
@@ -72,27 +72,21 @@ static const char *action_names[] = {
[OF_RECONFIG_UPDATE_PROPERTY] = "UPDATE_PROPERTY",
};
+#define _do_print(func, prefix, action, node, prop, ...) ({ \
+ func("changeset: " prefix "%-15s %pOF%s%s\n", \
+ ##__VA_ARGS__, action_names[action], node, \
+ prop ? ":" : "", prop ? prop->name : ""); \
+})
+#define of_changeset_action_err(...) _do_print(pr_err, __VA_ARGS__)
+#define of_changeset_action_debug(...) _do_print(pr_debug, __VA_ARGS__)
+
int of_reconfig_notify(unsigned long action, struct of_reconfig_data *p)
{
int rc;
-#ifdef DEBUG
struct of_reconfig_data *pr = p;
- switch (action) {
- case OF_RECONFIG_ATTACH_NODE:
- case OF_RECONFIG_DETACH_NODE:
- pr_debug("notify %-15s %pOF\n", action_names[action],
- pr->dn);
- break;
- case OF_RECONFIG_ADD_PROPERTY:
- case OF_RECONFIG_REMOVE_PROPERTY:
- case OF_RECONFIG_UPDATE_PROPERTY:
- pr_debug("notify %-15s %pOF:%s\n", action_names[action],
- pr->dn, pr->prop->name);
- break;
+ of_changeset_action_debug("notify: ", action, pr->dn, pr->prop);
- }
-#endif
rc = blocking_notifier_call_chain(&of_reconfig_chain, action, p);
return notifier_to_errno(rc);
}
@@ -503,30 +497,6 @@ static void __of_changeset_entry_destroy(struct of_changeset_entry *ce)
kfree(ce);
}
-#ifdef DEBUG
-static void __of_changeset_entry_dump(struct of_changeset_entry *ce)
-{
- switch (ce->action) {
- case OF_RECONFIG_ADD_PROPERTY:
- case OF_RECONFIG_REMOVE_PROPERTY:
- case OF_RECONFIG_UPDATE_PROPERTY:
- pr_debug("cset<%p> %-15s %pOF/%s\n", ce, action_names[ce->action],
- ce->np, ce->prop->name);
- break;
- case OF_RECONFIG_ATTACH_NODE:
- case OF_RECONFIG_DETACH_NODE:
- pr_debug("cset<%p> %-15s %pOF\n", ce, action_names[ce->action],
- ce->np);
- break;
- }
-}
-#else
-static inline void __of_changeset_entry_dump(struct of_changeset_entry *ce)
-{
- /* empty */
-}
-#endif
-
static void __of_changeset_entry_invert(struct of_changeset_entry *ce,
struct of_changeset_entry *rce)
{
@@ -598,7 +568,7 @@ static int __of_changeset_entry_apply(struct of_changeset_entry *ce)
unsigned long flags;
int ret = 0;
- __of_changeset_entry_dump(ce);
+ of_changeset_action_debug("applying: ", ce->action, ce->np, ce->prop);
raw_spin_lock_irqsave(&devtree_lock, flags);
switch (ce->action) {
@@ -642,8 +612,7 @@ static int __of_changeset_entry_apply(struct of_changeset_entry *ce)
raw_spin_unlock_irqrestore(&devtree_lock, flags);
if (ret) {
- pr_err("changeset: apply failed: %-15s %pOF:%s\n",
- action_names[ce->action], ce->np, ce->prop->name);
+ of_changeset_action_err("apply failed: ", ce->action, ce->np, ce->prop);
return ret;
}
--
2.40.1
next prev parent reply other threads:[~2023-08-18 20:42 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-18 20:40 [PATCH v3 0/6] dt: changeset fixes and cleanups Rob Herring
2023-08-18 20:40 ` [PATCH v3 1/6] of: unittest: Fix EXPECT for parse_phandle_with_args_map() test Rob Herring
2023-08-18 20:40 ` [PATCH v3 2/6] of: dynamic: Refactor action prints to not use "%pOF" inside devtree_lock Rob Herring
2023-08-21 11:52 ` Geert Uytterhoeven
2023-08-18 20:40 ` Rob Herring [this message]
2023-08-21 12:09 ` [PATCH v3 3/6] of: dynamic: Refactor changeset action printing to common helpers Geert Uytterhoeven
2023-08-18 20:40 ` [PATCH v3 4/6] of: dynamic: Fix race in getting old property when updating property Rob Herring
2023-08-21 12:53 ` Geert Uytterhoeven
2023-08-18 20:41 ` [PATCH v3 5/6] of: dynamic: Move dead property list check into property add/update functions Rob Herring
2023-08-21 10:49 ` Andy Shevchenko
2023-08-21 10:52 ` Andy Shevchenko
2023-08-21 12:24 ` Rob Herring
2023-08-21 12:35 ` Andy Shevchenko
2023-08-21 13:05 ` Geert Uytterhoeven
2023-08-21 14:23 ` Rob Herring
2023-08-18 20:41 ` [PATCH v3 6/6] of: Refactor node and property manipulation function locking Rob Herring
2023-08-21 10:51 ` Andy Shevchenko
2023-08-21 13:18 ` Geert Uytterhoeven
2023-08-21 19:00 ` Rob Herring
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230801-dt-changeset-fixes-v3-3-5f0410e007dd@kernel.org \
--to=robh@kernel.org \
--cc=andriy.shevchenko@linux.intel.com \
--cc=devicetree@vger.kernel.org \
--cc=frowand.list@gmail.com \
--cc=geert+renesas@glider.be \
--cc=info@metux.net \
--cc=linux-kernel@vger.kernel.org \
--cc=pmladek@suse.com \
--cc=rafael.j.wysocki@intel.com \
--cc=sakari.ailus@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).