lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CA+V-a8sXqWTPqRN_fFiYpNiSVghC9e+DHpVBF4CCG_e9s3s0TA@mail.gmail.com>
Date: Sun, 22 Dec 2024 11:11:44 +0000
From: "Lad, Prabhakar" <prabhakar.csengg@...il.com>
To: Krzysztof Kozlowski <krzk@...nel.org>
Cc: Geert Uytterhoeven <geert+renesas@...der.be>, 
	Wolfram Sang <wsa+renesas@...g-engineering.com>, 
	Michael Turquette <mturquette@...libre.com>, Stephen Boyd <sboyd@...nel.org>, 
	Rob Herring <robh@...nel.org>, Krzysztof Kozlowski <krzk+dt@...nel.org>, Conor Dooley <conor+dt@...nel.org>, 
	Wim Van Sebroeck <wim@...ux-watchdog.org>, Guenter Roeck <linux@...ck-us.net>, 
	Magnus Damm <magnus.damm@...il.com>, linux-renesas-soc@...r.kernel.org, 
	linux-clk@...r.kernel.org, devicetree@...r.kernel.org, 
	linux-kernel@...r.kernel.org, linux-watchdog@...r.kernel.org, 
	Biju Das <biju.das.jz@...renesas.com>, 
	Fabrizio Castro <fabrizio.castro.jz@...esas.com>, 
	Lad Prabhakar <prabhakar.mahadev-lad.rj@...renesas.com>
Subject: Re: [PATCH 4/6] dt-bindings: watchdog: renesas: Document
 `renesas,r9a09g057-syscon-wdt-errorrst` property

Hi Krzysztof,

On Thu, Dec 19, 2024 at 4:01 PM Krzysztof Kozlowski <krzk@...nel.org> wrote:
>
> On 19/12/2024 11:06, Lad, Prabhakar wrote:
> >>> To facilitate this operation, add `renesas,r9a09g057-syscon-wdt-errorrst`
> >>> property to the WDT node, which maps to the `syscon` CPG node, enabling
> >>> retrieval of the necessary information. For example:
> >>>
> >>>     wdt1: watchdog@...00000 {
> >>>         compatible = "renesas,r9a09g057-wdt";
> >>>         renesas,r9a09g057-syscon-wdt-errorrst = <&cpg 0xb40 1>;
> >>>         ...
> >>
> >> Drop, obvious.
> >>
> > Ok.
> >
> >>>     };
> >>>
> >>> The `renesas,r9a09g057-syscon-wdt-errorrst` property consists of three
> >>> cells:
> >>> 1. The first cell is a phandle to the CPG node.
> >>> 2. The second cell specifies the offset of the CPG_ERROR_RSTm register
> >>>    within the SYSCON.
> >>> 3. The third cell indicates the specific bit within the CPG_ERROR_RSTm
> >>>    register.
> >>
> >> Don't describe the contents of patch.  Drop paragraph. There is no need
> >> to make commit msg unnecessary long. Focus on explaining unknown parts
> >> of commit: why? or who is affected by ABI break? why breaking ABI?
> >> instead of repeating diff.
> >>
> > Ok, I'll drop the para. There isnt any ABI breakage as the driver
> > patch [0] will skip supporting watchdog bootstatus if this property is
> > not present.
> >
> > [0] https://lore.kernel.org/all/20241218003414.490498-6-prabhakar.mahadev-lad.rj@bp.renesas.com/
>
> Really? I see in rzv2h_wdt_probe():
>
> +               if (ret)
> +                       return ret;
>
> so to me you are failing the probe, not skipping anything.
>
Yes really this wont break any ABI. From patch [0] we have the below:

[0] https://lore.kernel.org/all/20241218003414.490498-6-prabhakar.mahadev-lad.rj@bp.renesas.com/

    /* Do not error out to maintain old DT compatibility */
    syscon = syscon_regmap_lookup_by_phandle(np,
"renesas,syscon-cpg-error-rst");
    if (!IS_ERR(syscon)) {
        struct of_phandle_args args;
        u32 reg;

        ret = of_parse_phandle_with_fixed_args(np,
"renesas,syscon-cpg-error-rst",
                               2, 0, &args);
        if (ret)
            return ret;

        ret = regmap_read(syscon, args.args[0], &reg);
        if (ret)
            return -EINVAL;

        if (reg & CPG_ERROR_RST2(args.args[1])) {
            ret = regmap_write(syscon, args.args[0],
                       CPG_ERROR_RST2(args.args[1]) |
                       CPG_ERROR_RST2_WEN(args.args[1]));
            if (ret)
                return -EINVAL;
        }
        cardreset = true;
        bootstatus = reg & CPG_ERROR_RST2(args.args[1]) ? WDIOF_CARDRESET : 0;
        regmap_read(syscon, args.args[0], &reg);
    }

Case 1: "renesas,syscon-cpg-error-rst" is missing in the device tree (DT).
In this case, syscon_regmap_lookup_by_phandle() will return an error
code. Since the condition (!IS_ERR(syscon)) checks for a success case,
the code does not enter the if block when an error is returned.

Case 2: "renesas,syscon-cpg-error-rst" is present in the DT.
Here, syscon_regmap_lookup_by_phandle() will return 0, allowing the
code to enter the if block. Once inside the if block, we can confirm
that "renesas,syscon-cpg-error-rst" is present in the DT. At this
point, we validate the property and use
of_parse_phandle_with_fixed_args(). If the property does not match our
requirements, we return an error. Does returning an error when
"renesas,syscon-cpg-error-rst" is present but with unexpected values
in the DT break the ABI in this scenario?

> >
> >>>
> >>> Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@...renesas.com>
> >>> ---
> >>>  .../bindings/watchdog/renesas,wdt.yaml          | 17 +++++++++++++++++
> >>>  1 file changed, 17 insertions(+)
> >>>
> >>> diff --git a/Documentation/devicetree/bindings/watchdog/renesas,wdt.yaml b/Documentation/devicetree/bindings/watchdog/renesas,wdt.yaml
> >>> index 29ada89fdcdc..8d29f5f1be7e 100644
> >>> --- a/Documentation/devicetree/bindings/watchdog/renesas,wdt.yaml
> >>> +++ b/Documentation/devicetree/bindings/watchdog/renesas,wdt.yaml
> >>> @@ -112,6 +112,19 @@ properties:
> >>>
> >>>    timeout-sec: true
> >>>
> >>> +  renesas,r9a09g057-syscon-wdt-errorrst:
> >>
> >> There are never, *never* SoC names in property names, because we want
> >> properties to be re-usable.
> >>
> > I should have mentioned this in my commit message (my bad). The
> > renesas,wdt.yaml binding file is being used for all the SoCs
> > currently. To avoid any conflicts by just having vendor specific
> > property I added SoC name to the preoperty.
>
> I know what you did and I replied: that's a no go for reasons I stated.
>
> >
> > @Geert/Wolfram - Maybe we need to split the binding on per SoC bases?
>
> You can but I don't understand why exactly.
>
OK, I'll rename the property to "renesas,syscon-cpg-error-rst".

> >
> >> Make the property generic for all your devices and be sure to disallow
> >> it everywhere the CPG_ERROR_RSTm *does not* exist (which is different
> >> from "where CPG_ERROR_RSTm is not used by watchdog driver").
> >>
> > This patch already disallows `renesas,r9a09g057-syscon-wdt-errorrst`
> > for the rest of the SoCs and only allows for RZ/V2H(P) SoC or am I
> > missing something?
>
> No, that's fine, but to avoid disallowing it for others you named it per
> SoC.
>
> >
> >>> +    $ref: /schemas/types.yaml#/definitions/phandle-array
> >>> +    description:
> >>> +      The first cell is a phandle to the SYSCON entry required to obtain
> >>> +      the current boot status. The second cell specifies the CPG_ERROR_RSTm
> >>> +      register offset within the SYSCON, and the third cell indicates the
> >>> +      bit within the CPG_ERROR_RSTm register.
> >>> +    items:
> >>> +      - items:
> >>> +          - description: Phandle to the CPG node
> >>> +          - description: The CPG_ERROR_RSTm register offset
> >>> +          - description: The bit within CPG_ERROR_RSTm register of interest
> >>> +
> >>>  required:
> >>>    - compatible
> >>>    - reg
> >>> @@ -182,7 +195,11 @@ allOf:
> >>>        properties:
> >>>          interrupts: false
> >>>          interrupt-names: false
> >>> +      required:
> >>> +        - renesas,r9a09g057-syscon-wdt-errorrst
> >>
> >> No, ABI break.
> >>
> > As mentioned above we won't break ABI, this required flag is for future changes.
>
> Then why is this required? Or at least explain this in the commit msg.
>
Sure i'll explain this in the commit message.

Cheers,
Prabhakar

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ