Thread (4 messages) 4 messages, 3 authors, 2021-06-02
DORMANTno replies

[PATCH v3 1/1] lib/utils: consider ':' in stdout-path

From: Anup Patel <hidden>
Date: 2021-06-02 11:42:42

-----Original Message-----
From: Atish Patra <redacted>
Sent: 28 May 2021 23:28
To: Heinrich Schuchardt <redacted>
Cc: OpenSBI <redacted>; Anup Patel
[off-list ref]
Subject: Re: [PATCH v3 1/1] lib/utils: consider ':' in stdout-path

On Fri, May 28, 2021 at 10:06 AM Heinrich Schuchardt
[off-list ref] wrote:
quoted
The value of the /chosen/stdout-path devicetree property is used to
determine the UART used by openSBI. According to the devicetree
specification the value may contain a hyphen, e.g.

        chosen {
                stdout-path = "/serial at f00:115200";
        };

If the character ':' is present, it terminates the path of the device.

Signed-off-by: Heinrich Schuchardt <redacted>
---
v3:
        * Use fdt_path_offset_namelen() if stdout-path contains a ':'
          (thanks Atish).
        * Fix typo %s/pointed/pointed to/.
---
 lib/utils/serial/fdt_serial.c | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/lib/utils/serial/fdt_serial.c
b/lib/utils/serial/fdt_serial.c index 25982ec..1d1eba8 100644
--- a/lib/utils/serial/fdt_serial.c
+++ b/lib/utils/serial/fdt_serial.c
@@ -42,12 +42,21 @@ int fdt_serial_init(void)
        int pos, noff = -1, len, coff, rc;
        void *fdt = sbi_scratch_thishart_arg1_ptr();

-       /* Find offset of node pointed by stdout-path */
+       /* Find offset of node pointed to by stdout-path */
        coff = fdt_path_offset(fdt, "/chosen");
        if (-1 < coff) {
                prop = fdt_getprop(fdt, coff, "stdout-path", &len);
-               if (prop && len)
-                       noff = fdt_path_offset(fdt, prop);
+               if (prop && len) {
+                       const char *sep, *start = prop;
+
+                       /* The device path may be followed by ':' */
+                       sep = strchr(start, ':');
+                       if (sep)
+                               noff = fdt_path_offset_namelen(fdt, prop,
+                                                              sep - start);
+                       else
+                               noff = fdt_path_offset(fdt, prop);
We can further simplify this by passing strlen() to fdt_path_offset_namelen if
": "
is not present. But that's just personal preference.

I am fine with this version as well.
quoted
+               }
        }

        /* First check DT node pointed by stdout-path */
--
2.30.2
Either way,

Reviewed-by: Atish Patra <redacted>
Applied this patch to the riscv/opensbi repo

Thanks,
Anup
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help