From: Rob Herring <robh@kernel.org>
To: Miquel Raynal <miquel.raynal@bootlin.com>
Cc: Thierry Reding <thierry.reding@gmail.com>,
David Airlie <airlied@gmail.com>, Daniel Vetter <daniel@ffwll.ch>,
Mikko Perttunen <mperttunen@nvidia.com>,
dri-devel@lists.freedesktop.org,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
devicetree@vger.kernel.org,
Thomas Petazzoni <thomas.petazzoni@bootlin.com>,
linux-tegra@vger.kernel.org,
Frank Rowand <frowand.list@gmail.com>
Subject: Re: [PATCH v2 2/2] gpu: host1x: Stop open-coding of_device_uevent()
Date: Thu, 22 Jun 2023 08:31:40 -0600 [thread overview]
Message-ID: <20230622143140.GA1638531-robh@kernel.org> (raw)
In-Reply-To: <20230609155634.1495338-3-miquel.raynal@bootlin.com>
On Fri, Jun 09, 2023 at 05:56:34PM +0200, Miquel Raynal wrote:
> There is apparently no reasons to open-code of_device_uevent() besides:
> - The helper receives a struct device while we want to use the of_node
> member of the struct device *parent*.
> - of_device_uevent() could not be called by modules because of a missing
> EXPORT_SYMBOL*().
>
> In practice, the former point is not very constraining, just calling
> of_device_uevent(dev->parent, ...) would have made the trick.
>
> The latter point is more an observation rather than a real blocking
> point because nothing prevented of_uevent() (called by the inline
> function of_device_uevent()) to be exported to modules. In practice,
> this helper is now exported, so nothing prevent us from using
> of_device_uevent() anymore.
>
> Let's use the core helper directly instead of open-coding it.
>
> Cc: Thierry Reding <thierry.reding@gmail.com>
> Cc: David Airlie <airlied@gmail.com>
> Cc: Daniel Vetter <daniel@ffwll.ch>
> Cc: Mikko Perttunen <mperttunen@nvidia.com>
> Cc: Rob Herring <robh+dt@kernel.org>
> Cc: Frank Rowand <frowand.list@gmail.com>
> Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
>
> ---
>
> This patch depends on the changes performed earlier in the series under
> the drivers/of/ folder.
> ---
> drivers/gpu/host1x/bus.c | 29 ++++++-----------------------
> 1 file changed, 6 insertions(+), 23 deletions(-)
>
> diff --git a/drivers/gpu/host1x/bus.c b/drivers/gpu/host1x/bus.c
> index 4d16a3396c4a..dae589b83be1 100644
> --- a/drivers/gpu/host1x/bus.c
> +++ b/drivers/gpu/host1x/bus.c
> @@ -338,32 +338,15 @@ static int host1x_device_match(struct device *dev, struct device_driver *drv)
> return strcmp(dev_name(dev), drv->name) == 0;
> }
>
> +/*
> + * Note that this is really only needed for backwards compatibility
> + * with libdrm, which parses this information from sysfs and will
> + * fail if it can't find the OF_FULLNAME, specifically.
> + */
> static int host1x_device_uevent(const struct device *dev,
> struct kobj_uevent_env *env)
> {
> - struct device_node *np = dev->parent->of_node;
> - unsigned int count = 0;
> - struct property *p;
> - const char *compat;
> -
> - /*
> - * This duplicates most of of_device_uevent(), but the latter cannot
> - * be called from modules and operates on dev->of_node, which is not
> - * available in this case.
> - *
> - * Note that this is really only needed for backwards compatibility
> - * with libdrm, which parses this information from sysfs and will
> - * fail if it can't find the OF_FULLNAME, specifically.
> - */
> - add_uevent_var(env, "OF_NAME=%pOFn", np);
> - add_uevent_var(env, "OF_FULLNAME=%pOF", np);
> -
> - of_property_for_each_string(np, "compatible", p, compat) {
> - add_uevent_var(env, "OF_COMPATIBLE_%u=%s", count, compat);
> - count++;
> - }
> -
> - add_uevent_var(env, "OF_COMPATIBLE_N=%u", count);
> + of_device_uevent((const struct device *)&dev->parent, env);
Why do you have the cast and the "&"?
Rob
WARNING: multiple messages have this Message-ID (diff)
From: Rob Herring <robh@kernel.org>
To: Miquel Raynal <miquel.raynal@bootlin.com>
Cc: devicetree@vger.kernel.org,
Thomas Petazzoni <thomas.petazzoni@bootlin.com>,
Frank Rowand <frowand.list@gmail.com>,
dri-devel@lists.freedesktop.org,
Mikko Perttunen <mperttunen@nvidia.com>,
Thierry Reding <thierry.reding@gmail.com>,
linux-tegra@vger.kernel.org,
Krzysztof Kozlowski <krzk+dt@kernel.org>
Subject: Re: [PATCH v2 2/2] gpu: host1x: Stop open-coding of_device_uevent()
Date: Thu, 22 Jun 2023 08:31:40 -0600 [thread overview]
Message-ID: <20230622143140.GA1638531-robh@kernel.org> (raw)
In-Reply-To: <20230609155634.1495338-3-miquel.raynal@bootlin.com>
On Fri, Jun 09, 2023 at 05:56:34PM +0200, Miquel Raynal wrote:
> There is apparently no reasons to open-code of_device_uevent() besides:
> - The helper receives a struct device while we want to use the of_node
> member of the struct device *parent*.
> - of_device_uevent() could not be called by modules because of a missing
> EXPORT_SYMBOL*().
>
> In practice, the former point is not very constraining, just calling
> of_device_uevent(dev->parent, ...) would have made the trick.
>
> The latter point is more an observation rather than a real blocking
> point because nothing prevented of_uevent() (called by the inline
> function of_device_uevent()) to be exported to modules. In practice,
> this helper is now exported, so nothing prevent us from using
> of_device_uevent() anymore.
>
> Let's use the core helper directly instead of open-coding it.
>
> Cc: Thierry Reding <thierry.reding@gmail.com>
> Cc: David Airlie <airlied@gmail.com>
> Cc: Daniel Vetter <daniel@ffwll.ch>
> Cc: Mikko Perttunen <mperttunen@nvidia.com>
> Cc: Rob Herring <robh+dt@kernel.org>
> Cc: Frank Rowand <frowand.list@gmail.com>
> Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
>
> ---
>
> This patch depends on the changes performed earlier in the series under
> the drivers/of/ folder.
> ---
> drivers/gpu/host1x/bus.c | 29 ++++++-----------------------
> 1 file changed, 6 insertions(+), 23 deletions(-)
>
> diff --git a/drivers/gpu/host1x/bus.c b/drivers/gpu/host1x/bus.c
> index 4d16a3396c4a..dae589b83be1 100644
> --- a/drivers/gpu/host1x/bus.c
> +++ b/drivers/gpu/host1x/bus.c
> @@ -338,32 +338,15 @@ static int host1x_device_match(struct device *dev, struct device_driver *drv)
> return strcmp(dev_name(dev), drv->name) == 0;
> }
>
> +/*
> + * Note that this is really only needed for backwards compatibility
> + * with libdrm, which parses this information from sysfs and will
> + * fail if it can't find the OF_FULLNAME, specifically.
> + */
> static int host1x_device_uevent(const struct device *dev,
> struct kobj_uevent_env *env)
> {
> - struct device_node *np = dev->parent->of_node;
> - unsigned int count = 0;
> - struct property *p;
> - const char *compat;
> -
> - /*
> - * This duplicates most of of_device_uevent(), but the latter cannot
> - * be called from modules and operates on dev->of_node, which is not
> - * available in this case.
> - *
> - * Note that this is really only needed for backwards compatibility
> - * with libdrm, which parses this information from sysfs and will
> - * fail if it can't find the OF_FULLNAME, specifically.
> - */
> - add_uevent_var(env, "OF_NAME=%pOFn", np);
> - add_uevent_var(env, "OF_FULLNAME=%pOF", np);
> -
> - of_property_for_each_string(np, "compatible", p, compat) {
> - add_uevent_var(env, "OF_COMPATIBLE_%u=%s", count, compat);
> - count++;
> - }
> -
> - add_uevent_var(env, "OF_COMPATIBLE_N=%u", count);
> + of_device_uevent((const struct device *)&dev->parent, env);
Why do you have the cast and the "&"?
Rob
next prev parent reply other threads:[~2023-06-22 14:31 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-09 15:56 [PATCH v2 0/2] Small of/device cleanup Miquel Raynal
2023-06-09 15:56 ` Miquel Raynal
2023-06-09 15:56 ` [PATCH v2 1/2] of: module: Export of_device_uevent() Miquel Raynal
2023-06-09 15:56 ` Miquel Raynal
2023-06-14 23:34 ` Rob Herring
2023-06-14 23:34 ` Rob Herring
2023-06-09 15:56 ` [PATCH v2 2/2] gpu: host1x: Stop open-coding of_device_uevent() Miquel Raynal
2023-06-09 15:56 ` Miquel Raynal
2023-06-22 14:31 ` Rob Herring [this message]
2023-06-22 14:31 ` Rob Herring
2023-06-22 21:29 ` Miquel Raynal
2023-06-22 21:29 ` Miquel Raynal
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=20230622143140.GA1638531-robh@kernel.org \
--to=robh@kernel.org \
--cc=airlied@gmail.com \
--cc=daniel@ffwll.ch \
--cc=devicetree@vger.kernel.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=frowand.list@gmail.com \
--cc=krzk+dt@kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=miquel.raynal@bootlin.com \
--cc=mperttunen@nvidia.com \
--cc=thierry.reding@gmail.com \
--cc=thomas.petazzoni@bootlin.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.