linux-clk.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Rahul Pathak <rpathak@ventanamicro.com>
Cc: "Anup Patel" <apatel@ventanamicro.com>,
	"Michael Turquette" <mturquette@baylibre.com>,
	"Stephen Boyd" <sboyd@kernel.org>,
	"Rob Herring" <robh@kernel.org>,
	"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
	"Conor Dooley" <conor+dt@kernel.org>,
	"Jassi Brar" <jassisinghbrar@gmail.com>,
	"Thomas Gleixner" <tglx@linutronix.de>,
	"Rafael J . Wysocki" <rafael@kernel.org>,
	"Mika Westerberg" <mika.westerberg@linux.intel.com>,
	"Linus Walleij" <linus.walleij@linaro.org>,
	"Bartosz Golaszewski" <brgl@bgdev.pl>,
	"Uwe Kleine-König" <ukleinek@kernel.org>,
	"Palmer Dabbelt" <palmer@dabbelt.com>,
	"Paul Walmsley" <paul.walmsley@sifive.com>,
	"Len Brown" <lenb@kernel.org>,
	"Sunil V L" <sunilvl@ventanamicro.com>,
	"Leyfoon Tan" <leyfoon.tan@starfivetech.com>,
	"Atish Patra" <atish.patra@linux.dev>,
	"Andrew Jones" <ajones@ventanamicro.com>,
	"Samuel Holland" <samuel.holland@sifive.com>,
	"Anup Patel" <anup@brainfault.org>,
	linux-clk@vger.kernel.org, devicetree@vger.kernel.org,
	linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v6 09/23] clk: Add clock driver for the RISC-V RPMI clock service group
Date: Thu, 26 Jun 2025 17:08:24 +0300	[thread overview]
Message-ID: <aF1UWNzWhheLNTky@smile.fi.intel.com> (raw)
In-Reply-To: <CA+Oz1=a65HvfXHWjeSq4Ubq=5kzHp9pkLJVr77hvTYAGFHv0Mg@mail.gmail.com>

On Thu, Jun 26, 2025 at 12:32:14PM +0530, Rahul Pathak wrote:
> On Mon, Jun 23, 2025 at 2:36 PM Andy Shevchenko
> <andriy.shevchenko@linux.intel.com> wrote:
> > On Wed, Jun 18, 2025 at 05:43:44PM +0530, Anup Patel wrote:

...

> > > +union rpmi_clk_rates {
> > > +     u64 discrete[RPMI_CLK_DISCRETE_MAX_NUM_RATES];
> > > +     struct {
> > > +             u64 min;
> > > +             u64 max;
> > > +             u64 step;
> > > +     } linear;
> >
> > Have you looked at the linear_range.h? Why can it not be (re-)used here?
> 
> I did the first time only when you commented. And i dont see any
> benefit in that.
> linear_range has slightly different way to access any value using `sel`.
> Here this union represents how RPMI protocol represents the rates and
> reusing linear_range will only introduce conversion to and fro.

Summarize this in the comment on top of the struct definition so one will not
attempt to convert the driver in the future.

> > > +};

...

> > > +static u32 rpmi_clk_get_num_clocks(struct rpmi_clk_context *context)
> > > +{
> > > +     struct rpmi_get_num_clocks_rx rx;
> > > +     struct rpmi_mbox_message msg;
> > > +     int ret;
> > > +
> > > +     rpmi_mbox_init_send_with_response(&msg, RPMI_CLK_SRV_GET_NUM_CLOCKS,
> > > +                                       NULL, 0, &rx, sizeof(rx));
> >
> > ...here
> >
> > > +     ret = rpmi_mbox_send_message(context->chan, &msg);
> > > +
> >
> > This blank line should be rather ^^^
> 
> Sure, I will update.
> 
> >
> > > +     if (ret || rx.status)
> > > +             return 0;
> >
> > Why rx.status can't be checked before calling to a sending message?
> > Sounds like the rpmi_mbox_init_send_with_response() links rx to msg somehow.
> > If this is the case, use msg here, otherwise move the check to be in the
> > correct place.
> 
> Yes, the rpmi_mbox_init_send_with_response is a helper function which links
> the rx to msg. It's a very simple function which only performs assignments.
> 
> Using msg instead of rx directly will require additional typecasting
> which will only clutter
> I can add a comment if that helps wherever the rpmi_mbox_init_send_with_response
> is used.

This is besides harder-to-read code is kinda of layering violation.
If you afraid of a casting, add a helper to check for the status error.
Comment won't help much as making code better to begin with.

> > Seems the same question to the all similar checks in the code.
> >
> > > +     return le32_to_cpu(rx.num_clocks);
> > > +}

...

> > > +     struct rpmi_clk_context *context = rpmi_clk->context;
> > > +     struct rpmi_clk_rate_discrete *rate_discrete;
> > > +     struct rpmi_clk_rate_linear *rate_linear;

> > > +     struct rpmi_get_supp_rates_rx *rx __free(kfree) = NULL;

This should be assigned where it's used. NULL assignment is not encouraged.

> > > +     struct rpmi_get_supp_rates_tx tx;
> > > +     struct rpmi_mbox_message msg;
> >
> > > +     size_t clk_rate_idx = 0;
> >
> > This kind of assignments is hard to maintain and it's mistake prone in case
> > some additional code is injected in the future that might reuse it.
> >
> I dont understand what is the problem with this assignment. If any
> code added in the future reuse it then it has to make sure that
> clk_rate_idx has the correct initial value before any further references.

Yes, it will add an additional churn and require more brain activity to
maintain such a code. It's a general recommendation to assign when it's
actually needed (there are, of course, exceptions for some small functions,
but this one is not).

> > > +     int ret, rateidx, j;

...

> > > +     context->chan = mbox_request_channel(&context->client, 0);
> > > +     if (IS_ERR(context->chan))
> > > +             return PTR_ERR(context->chan);
> >
> > Here is an incorrect order of the freeing resources. Besides that, wrapping
> > the mbox_free_channel() into managed resources reduces this code by more
> > than 10 LoCs! At bare minimum it will fix the bug,
> 
> Understood. So we can use devm_add_action_or_reset to link a release function
> with the context->chan. Is this what you are suggesting? This will also make
> the .remove callback redundant which can be removed.

Yes.

-- 
With Best Regards,
Andy Shevchenko



  reply	other threads:[~2025-06-26 14:08 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-06-18 12:13 [PATCH v6 00/23] Linux SBI MPXY and RPMI drivers Anup Patel
2025-06-18 12:13 ` [PATCH v6 01/23] dt-bindings: mailbox: Add bindings for RPMI shared memory transport Anup Patel
2025-06-18 12:13 ` [PATCH v6 02/23] dt-bindings: mailbox: Add bindings for RISC-V SBI MPXY extension Anup Patel
2025-06-18 12:13 ` [PATCH v6 03/23] RISC-V: Add defines for the SBI message proxy extension Anup Patel
2025-06-24  6:58   ` Atish Patra
2025-06-18 12:13 ` [PATCH v6 04/23] mailbox: Add common header for RPMI messages sent via mailbox Anup Patel
2025-06-18 12:13 ` [PATCH v6 05/23] mailbox: Allow controller specific mapping using fwnode Anup Patel
2025-06-23  8:45   ` Andy Shevchenko
2025-07-01  6:50     ` Anup Patel
2025-06-18 12:13 ` [PATCH v6 06/23] mailbox: Add RISC-V SBI message proxy (MPXY) based mailbox driver Anup Patel
2025-06-23  8:50   ` Andy Shevchenko
2025-07-01  7:02     ` Anup Patel
2025-06-18 12:13 ` [PATCH v6 07/23] dt-bindings: clock: Add RPMI clock service message proxy bindings Anup Patel
2025-06-21 21:00   ` Stephen Boyd
2025-06-23  3:45     ` Anup Patel
2025-06-18 12:13 ` [PATCH v6 08/23] dt-bindings: clock: Add RPMI clock service controller bindings Anup Patel
2025-06-21 21:05   ` Stephen Boyd
2025-06-18 12:13 ` [PATCH v6 09/23] clk: Add clock driver for the RISC-V RPMI clock service group Anup Patel
2025-06-21 21:04   ` Stephen Boyd
2025-06-23  9:06   ` Andy Shevchenko
2025-06-26  7:02     ` Rahul Pathak
2025-06-26 14:08       ` Andy Shevchenko [this message]
2025-06-27 15:06         ` Rahul Pathak
2025-06-27 15:58           ` Andy Shevchenko
2025-06-18 12:13 ` [PATCH v6 10/23] dt-bindings: Add RPMI system MSI message proxy bindings Anup Patel
2025-06-18 12:13 ` [PATCH v6 11/23] dt-bindings: Add RPMI system MSI interrupt controller bindings Anup Patel
2025-06-18 12:13 ` [PATCH v6 12/23] irqchip: Add driver for the RPMI system MSI service group Anup Patel
2025-06-18 12:13 ` [PATCH v6 13/23] ACPI: property: Refactor acpi_fwnode_get_reference_args() Anup Patel
2025-06-23  9:08   ` Andy Shevchenko
2025-06-23 10:20     ` Rafael J. Wysocki
2025-06-18 12:13 ` [PATCH v6 14/23] ACPI: property: Add support for cells property Anup Patel
2025-06-23  9:14   ` Andy Shevchenko
2025-06-30  5:17     ` Sunil V L
2025-06-18 12:13 ` [PATCH v6 15/23] ACPI: scan: Update honor list for RPMI System MSI Anup Patel
2025-06-18 12:13 ` [PATCH v6 16/23] ACPI: RISC-V: Create interrupt controller list in sorted order Anup Patel
2025-06-18 12:13 ` [PATCH v6 17/23] ACPI: RISC-V: Add support to update gsi range Anup Patel
2025-06-18 12:13 ` [PATCH v6 18/23] ACPI: RISC-V: Add RPMI System MSI to GSI mapping Anup Patel
2025-06-18 12:13 ` [PATCH v6 19/23] irqchip/irq-riscv-imsic-early: Export imsic_acpi_get_fwnode() Anup Patel
2025-06-18 12:13 ` [PATCH v6 20/23] mailbox/riscv-sbi-mpxy: Add ACPI support Anup Patel
2025-06-18 12:13 ` [PATCH v6 21/23] irqchip/riscv-rpmi-sysmsi: " Anup Patel
2025-06-18 12:13 ` [PATCH v6 22/23] RISC-V: Enable GPIO keyboard and event device in RV64 defconfig Anup Patel
2025-06-18 12:13 ` [PATCH v6 23/23] MAINTAINERS: Add entry for RISC-V RPMI and MPXY drivers Anup Patel
2025-06-22 16:26 ` [PATCH v6 00/23] Linux SBI MPXY and RPMI drivers Jassi Brar
2025-06-23  8:51   ` Andy Shevchenko
2025-07-02  5:12   ` Anup Patel

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=aF1UWNzWhheLNTky@smile.fi.intel.com \
    --to=andriy.shevchenko@linux.intel.com \
    --cc=ajones@ventanamicro.com \
    --cc=anup@brainfault.org \
    --cc=apatel@ventanamicro.com \
    --cc=atish.patra@linux.dev \
    --cc=brgl@bgdev.pl \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=jassisinghbrar@gmail.com \
    --cc=krzk+dt@kernel.org \
    --cc=lenb@kernel.org \
    --cc=leyfoon.tan@starfivetech.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-riscv@lists.infradead.org \
    --cc=mika.westerberg@linux.intel.com \
    --cc=mturquette@baylibre.com \
    --cc=palmer@dabbelt.com \
    --cc=paul.walmsley@sifive.com \
    --cc=rafael@kernel.org \
    --cc=robh@kernel.org \
    --cc=rpathak@ventanamicro.com \
    --cc=samuel.holland@sifive.com \
    --cc=sboyd@kernel.org \
    --cc=sunilvl@ventanamicro.com \
    --cc=tglx@linutronix.de \
    --cc=ukleinek@kernel.org \
    /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).