* [PATCH v3 1/4] dt-bindings: timer: sifive,clint: add legacy riscv compatible
2022-08-17 20:12 [PATCH v3 0/4] Fix dt-validate issues on qemu dtbdumps due to dt-bindings Conor Dooley
@ 2022-08-17 20:12 ` Conor Dooley
2022-08-18 16:36 ` Rob Herring
2022-08-17 20:12 ` [PATCH v3 2/4] dt-bindings: interrupt-controller: sifive,plic: " Conor Dooley
` (2 subsequent siblings)
3 siblings, 1 reply; 11+ messages in thread
From: Conor Dooley @ 2022-08-17 20:12 UTC (permalink / raw)
To: Thomas Gleixner, Marc Zyngier, Rob Herring, Krzysztof Kozlowski,
Palmer Dabbelt, Paul Walmsley, Albert Ou
Cc: Daniel Lezcano, Anup Patel, Conor Dooley, Guo Ren, Sagar Kadam,
Jessica Clarke, Andrew Jones, linux-kernel, devicetree,
linux-riscv, qemu-riscv, Rob Herring
From: Conor Dooley <conor.dooley@microchip.com>
While "real" hardware might not use the compatible string "riscv,clint0"
it is present in the driver & QEMU uses it for automatically generated
virt machine dtbs. To avoid dt-validate problems with QEMU produced
dtbs, such as the following, add it to the binding.
riscv-virt.dtb: clint@2000000: compatible:0: 'sifive,clint0' is not one of ['sifive,fu540-c000-clint', 'starfive,jh7100-clint', 'canaan,k210-clint']
Reported-by: Rob Herring <robh@kernel.org>
Link: https://lore.kernel.org/linux-riscv/20220803170552.GA2250266-robh@kernel.org/
Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
---
.../bindings/timer/sifive,clint.yaml | 18 ++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)
diff --git a/Documentation/devicetree/bindings/timer/sifive,clint.yaml b/Documentation/devicetree/bindings/timer/sifive,clint.yaml
index e64f46339079..bbad24165837 100644
--- a/Documentation/devicetree/bindings/timer/sifive,clint.yaml
+++ b/Documentation/devicetree/bindings/timer/sifive,clint.yaml
@@ -22,12 +22,18 @@ description:
properties:
compatible:
- items:
- - enum:
- - sifive,fu540-c000-clint
- - starfive,jh7100-clint
- - canaan,k210-clint
- - const: sifive,clint0
+ oneOf:
+ - items:
+ - enum:
+ - sifive,fu540-c000-clint
+ - starfive,jh7100-clint
+ - canaan,k210-clint
+ - const: sifive,clint0
+ - items:
+ - const: sifive,clint0
+ - const: riscv,clint0
+ deprecated: true
+ description: For the QEMU virt machine only
description:
Should be "<vendor>,<chip>-clint" and "sifive,clint<version>".
--
2.37.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v3 1/4] dt-bindings: timer: sifive,clint: add legacy riscv compatible
2022-08-17 20:12 ` [PATCH v3 1/4] dt-bindings: timer: sifive,clint: add legacy riscv compatible Conor Dooley
@ 2022-08-18 16:36 ` Rob Herring
0 siblings, 0 replies; 11+ messages in thread
From: Rob Herring @ 2022-08-18 16:36 UTC (permalink / raw)
To: Conor Dooley
Cc: Thomas Gleixner, Marc Zyngier, Krzysztof Kozlowski,
Palmer Dabbelt, Paul Walmsley, Albert Ou, Daniel Lezcano,
Anup Patel, Conor Dooley, Guo Ren, Sagar Kadam, Jessica Clarke,
Andrew Jones, linux-kernel, devicetree, linux-riscv, qemu-riscv
On Wed, Aug 17, 2022 at 09:12:10PM +0100, Conor Dooley wrote:
> From: Conor Dooley <conor.dooley@microchip.com>
>
> While "real" hardware might not use the compatible string "riscv,clint0"
> it is present in the driver & QEMU uses it for automatically generated
> virt machine dtbs. To avoid dt-validate problems with QEMU produced
> dtbs, such as the following, add it to the binding.
>
> riscv-virt.dtb: clint@2000000: compatible:0: 'sifive,clint0' is not one of ['sifive,fu540-c000-clint', 'starfive,jh7100-clint', 'canaan,k210-clint']
>
> Reported-by: Rob Herring <robh@kernel.org>
> Link: https://lore.kernel.org/linux-riscv/20220803170552.GA2250266-robh@kernel.org/
> Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
> ---
> .../bindings/timer/sifive,clint.yaml | 18 ++++++++++++------
> 1 file changed, 12 insertions(+), 6 deletions(-)
Reviewed-by: Rob Herring <robh@kernel.org>
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v3 2/4] dt-bindings: interrupt-controller: sifive,plic: add legacy riscv compatible
2022-08-17 20:12 [PATCH v3 0/4] Fix dt-validate issues on qemu dtbdumps due to dt-bindings Conor Dooley
2022-08-17 20:12 ` [PATCH v3 1/4] dt-bindings: timer: sifive,clint: add legacy riscv compatible Conor Dooley
@ 2022-08-17 20:12 ` Conor Dooley
2022-08-18 16:36 ` Rob Herring
2022-08-17 20:12 ` [PATCH v3 3/4] dt-bindings: riscv: add new riscv,isa strings for emulators Conor Dooley
2022-08-17 20:12 ` [NOT FOR INCLUSION v3 4/4] dt-bindings: riscv: isa string bonus content Conor Dooley
3 siblings, 1 reply; 11+ messages in thread
From: Conor Dooley @ 2022-08-17 20:12 UTC (permalink / raw)
To: Thomas Gleixner, Marc Zyngier, Rob Herring, Krzysztof Kozlowski,
Palmer Dabbelt, Paul Walmsley, Albert Ou
Cc: Daniel Lezcano, Anup Patel, Conor Dooley, Guo Ren, Sagar Kadam,
Jessica Clarke, Andrew Jones, linux-kernel, devicetree,
linux-riscv, qemu-riscv, Rob Herring
From: Conor Dooley <conor.dooley@microchip.com>
While "real" hardware might not use the compatible string "riscv,plic0"
it is present in the driver & QEMU uses it for automatically generated
virt machine dtbs. To avoid dt-validate problems with QEMU produced
dtbs, such as the following, add it to the binding.
riscv-virt.dtb: plic@c000000: compatible: 'oneOf' conditional failed, one must be fixed:
'sifive,plic-1.0.0' is not one of ['sifive,fu540-c000-plic', 'starfive,jh7100-plic', 'canaan,k210-plic']
'sifive,plic-1.0.0' is not one of ['allwinner,sun20i-d1-plic']
'sifive,plic-1.0.0' was expected
'thead,c900-plic' was expected
riscv-virt.dtb: plic@c000000: '#address-cells' is a required property
Reported-by: Rob Herring <robh@kernel.org>
Link: https://lore.kernel.org/linux-riscv/20220803170552.GA2250266-robh@kernel.org/
Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
---
.../bindings/interrupt-controller/sifive,plic-1.0.0.yaml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/Documentation/devicetree/bindings/interrupt-controller/sifive,plic-1.0.0.yaml b/Documentation/devicetree/bindings/interrupt-controller/sifive,plic-1.0.0.yaml
index 92e0f8c3eff2..99e01f4d0a69 100644
--- a/Documentation/devicetree/bindings/interrupt-controller/sifive,plic-1.0.0.yaml
+++ b/Documentation/devicetree/bindings/interrupt-controller/sifive,plic-1.0.0.yaml
@@ -66,6 +66,11 @@ properties:
- enum:
- allwinner,sun20i-d1-plic
- const: thead,c900-plic
+ - items:
+ - const: sifive,plic-1.0.0
+ - const: riscv,plic0
+ deprecated: true
+ description: For the QEMU virt machine only
reg:
maxItems: 1
--
2.37.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v3 2/4] dt-bindings: interrupt-controller: sifive,plic: add legacy riscv compatible
2022-08-17 20:12 ` [PATCH v3 2/4] dt-bindings: interrupt-controller: sifive,plic: " Conor Dooley
@ 2022-08-18 16:36 ` Rob Herring
0 siblings, 0 replies; 11+ messages in thread
From: Rob Herring @ 2022-08-18 16:36 UTC (permalink / raw)
To: Conor Dooley
Cc: Thomas Gleixner, Marc Zyngier, Krzysztof Kozlowski,
Palmer Dabbelt, Paul Walmsley, Albert Ou, Daniel Lezcano,
Anup Patel, Conor Dooley, Guo Ren, Sagar Kadam, Jessica Clarke,
Andrew Jones, linux-kernel, devicetree, linux-riscv, qemu-riscv
On Wed, Aug 17, 2022 at 09:12:11PM +0100, Conor Dooley wrote:
> From: Conor Dooley <conor.dooley@microchip.com>
>
> While "real" hardware might not use the compatible string "riscv,plic0"
> it is present in the driver & QEMU uses it for automatically generated
> virt machine dtbs. To avoid dt-validate problems with QEMU produced
> dtbs, such as the following, add it to the binding.
>
> riscv-virt.dtb: plic@c000000: compatible: 'oneOf' conditional failed, one must be fixed:
> 'sifive,plic-1.0.0' is not one of ['sifive,fu540-c000-plic', 'starfive,jh7100-plic', 'canaan,k210-plic']
> 'sifive,plic-1.0.0' is not one of ['allwinner,sun20i-d1-plic']
> 'sifive,plic-1.0.0' was expected
> 'thead,c900-plic' was expected
> riscv-virt.dtb: plic@c000000: '#address-cells' is a required property
>
> Reported-by: Rob Herring <robh@kernel.org>
> Link: https://lore.kernel.org/linux-riscv/20220803170552.GA2250266-robh@kernel.org/
> Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
> ---
> .../bindings/interrupt-controller/sifive,plic-1.0.0.yaml | 5 +++++
> 1 file changed, 5 insertions(+)
Reviewed-by: Rob Herring <robh@kernel.org>
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v3 3/4] dt-bindings: riscv: add new riscv,isa strings for emulators
2022-08-17 20:12 [PATCH v3 0/4] Fix dt-validate issues on qemu dtbdumps due to dt-bindings Conor Dooley
2022-08-17 20:12 ` [PATCH v3 1/4] dt-bindings: timer: sifive,clint: add legacy riscv compatible Conor Dooley
2022-08-17 20:12 ` [PATCH v3 2/4] dt-bindings: interrupt-controller: sifive,plic: " Conor Dooley
@ 2022-08-17 20:12 ` Conor Dooley
2022-08-18 1:34 ` Guo Ren
2022-08-18 5:40 ` Andrew Jones
2022-08-17 20:12 ` [NOT FOR INCLUSION v3 4/4] dt-bindings: riscv: isa string bonus content Conor Dooley
3 siblings, 2 replies; 11+ messages in thread
From: Conor Dooley @ 2022-08-17 20:12 UTC (permalink / raw)
To: Thomas Gleixner, Marc Zyngier, Rob Herring, Krzysztof Kozlowski,
Palmer Dabbelt, Paul Walmsley, Albert Ou
Cc: Daniel Lezcano, Anup Patel, Conor Dooley, Guo Ren, Sagar Kadam,
Jessica Clarke, Andrew Jones, linux-kernel, devicetree,
linux-riscv, qemu-riscv, Rob Herring
From: Conor Dooley <conor.dooley@microchip.com>
The QEMU virt and spike machines currently export a riscv,isa string of
"rv64imafdcsuh",
While the RISC-V foundation has been ratifying a bunch of extenstions
etc, the kernel has remained relatively static with what hardware is
supported - but the same is not true of QEMU. Using the virt machine
and running dt-validate on the dumped dtb fails, partly due to the
unexpected isa string.
Rather than enumerate the many many possbilities, change the pattern
to a regex, with the following assumptions:
- the single letter order is fixed & we don't care about things that
can't even do "ima"
- the standard multi letter extensions are all in a "_z<foo>" format
where the first letter of <foo> is a valid single letter extension
- _s & _h are used for supervisor and hyper visor extensions.
- after the first two chars, a standard multi letter extension name
could be an english word (ifencei anyone?) so it's not worth
restricting the charset
- vendor ISA extensions begind with _x and have no charset restrictions
- we don't care about an e extension from an OS pov
- that attempting to validate the contents of the multiletter extensions
with dt-validate beyond the formatting is a futile, massively verbose
or unwieldy exercise at best.
- ima are required
The following limitations also apply:
- multi letter extension ordering is not enforced. dt-schema does not
appear to allow for named match groups, so the resulting regex would
be even more of a headache.
- ditto for the numbered extensions.
Finally, add me as a maintainer of the binding so that when it breaks
in the future, I can be held responsible!
Reported-by: Rob Herring <robh@kernel.org>
Link: https://lore.kernel.org/linux-riscv/20220803170552.GA2250266-robh@kernel.org/
Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
---
Palmer, feel free to drop the maintainer addition. I just mostly want
to clean up my own mess on this when they decide to ratify more
extensions & this comes back up again.
---
Documentation/devicetree/bindings/riscv/cpus.yaml | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/Documentation/devicetree/bindings/riscv/cpus.yaml b/Documentation/devicetree/bindings/riscv/cpus.yaml
index 873dd12f6e89..c0e0bc5dce04 100644
--- a/Documentation/devicetree/bindings/riscv/cpus.yaml
+++ b/Documentation/devicetree/bindings/riscv/cpus.yaml
@@ -9,6 +9,7 @@ title: RISC-V bindings for 'cpus' DT nodes
maintainers:
- Paul Walmsley <paul.walmsley@sifive.com>
- Palmer Dabbelt <palmer@sifive.com>
+ - Conor Dooley <conor@kernel.org>
description: |
This document uses some terminology common to the RISC-V community
@@ -79,9 +80,7 @@ properties:
insensitive, letters in the riscv,isa string must be all
lowercase to simplify parsing.
$ref: "/schemas/types.yaml#/definitions/string"
- enum:
- - rv64imac
- - rv64imafdc
+ pattern: ^rv(?:64|32)imaf?d?q?c?b?v?k?h?(?:(?:_[zsh][imafdqcbvksh]|_x)(?:[a-z])+)*$
# RISC-V requires 'timebase-frequency' in /cpus, so disallow it here
timebase-frequency: false
--
2.37.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v3 3/4] dt-bindings: riscv: add new riscv,isa strings for emulators
2022-08-17 20:12 ` [PATCH v3 3/4] dt-bindings: riscv: add new riscv,isa strings for emulators Conor Dooley
@ 2022-08-18 1:34 ` Guo Ren
2022-08-18 5:40 ` Andrew Jones
1 sibling, 0 replies; 11+ messages in thread
From: Guo Ren @ 2022-08-18 1:34 UTC (permalink / raw)
To: Conor Dooley
Cc: Thomas Gleixner, Marc Zyngier, Rob Herring, Krzysztof Kozlowski,
Palmer Dabbelt, Paul Walmsley, Albert Ou, Daniel Lezcano,
Anup Patel, Conor Dooley, Sagar Kadam, Jessica Clarke,
Andrew Jones, linux-kernel, devicetree, linux-riscv, qemu-riscv,
Rob Herring
On Thu, Aug 18, 2022 at 4:12 AM Conor Dooley <mail@conchuod.ie> wrote:
>
> From: Conor Dooley <conor.dooley@microchip.com>
>
> The QEMU virt and spike machines currently export a riscv,isa string of
> "rv64imafdcsuh",
>
> While the RISC-V foundation has been ratifying a bunch of extenstions
> etc, the kernel has remained relatively static with what hardware is
> supported - but the same is not true of QEMU. Using the virt machine
> and running dt-validate on the dumped dtb fails, partly due to the
> unexpected isa string.
>
> Rather than enumerate the many many possbilities, change the pattern
> to a regex, with the following assumptions:
> - the single letter order is fixed & we don't care about things that
> can't even do "ima"
> - the standard multi letter extensions are all in a "_z<foo>" format
> where the first letter of <foo> is a valid single letter extension
> - _s & _h are used for supervisor and hyper visor extensions.
> - after the first two chars, a standard multi letter extension name
> could be an english word (ifencei anyone?) so it's not worth
> restricting the charset
> - vendor ISA extensions begind with _x and have no charset restrictions
> - we don't care about an e extension from an OS pov
> - that attempting to validate the contents of the multiletter extensions
> with dt-validate beyond the formatting is a futile, massively verbose
> or unwieldy exercise at best.
> - ima are required
>
> The following limitations also apply:
> - multi letter extension ordering is not enforced. dt-schema does not
> appear to allow for named match groups, so the resulting regex would
> be even more of a headache.
> - ditto for the numbered extensions.
>
> Finally, add me as a maintainer of the binding so that when it breaks
> in the future, I can be held responsible!
>
> Reported-by: Rob Herring <robh@kernel.org>
> Link: https://lore.kernel.org/linux-riscv/20220803170552.GA2250266-robh@kernel.org/
> Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
> ---
> Palmer, feel free to drop the maintainer addition. I just mostly want
> to clean up my own mess on this when they decide to ratify more
> extensions & this comes back up again.
> ---
> Documentation/devicetree/bindings/riscv/cpus.yaml | 5 ++---
> 1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/riscv/cpus.yaml b/Documentation/devicetree/bindings/riscv/cpus.yaml
> index 873dd12f6e89..c0e0bc5dce04 100644
> --- a/Documentation/devicetree/bindings/riscv/cpus.yaml
> +++ b/Documentation/devicetree/bindings/riscv/cpus.yaml
> @@ -9,6 +9,7 @@ title: RISC-V bindings for 'cpus' DT nodes
> maintainers:
> - Paul Walmsley <paul.walmsley@sifive.com>
> - Palmer Dabbelt <palmer@sifive.com>
> + - Conor Dooley <conor@kernel.org>
Acked-by: Guo Ren <guoren@kernel.org>
>
> description: |
> This document uses some terminology common to the RISC-V community
> @@ -79,9 +80,7 @@ properties:
> insensitive, letters in the riscv,isa string must be all
> lowercase to simplify parsing.
> $ref: "/schemas/types.yaml#/definitions/string"
> - enum:
> - - rv64imac
> - - rv64imafdc
> + pattern: ^rv(?:64|32)imaf?d?q?c?b?v?k?h?(?:(?:_[zsh][imafdqcbvksh]|_x)(?:[a-z])+)*$
>
> # RISC-V requires 'timebase-frequency' in /cpus, so disallow it here
> timebase-frequency: false
> --
> 2.37.1
>
--
Best Regards
Guo Ren
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3 3/4] dt-bindings: riscv: add new riscv,isa strings for emulators
2022-08-17 20:12 ` [PATCH v3 3/4] dt-bindings: riscv: add new riscv,isa strings for emulators Conor Dooley
2022-08-18 1:34 ` Guo Ren
@ 2022-08-18 5:40 ` Andrew Jones
2022-08-18 5:48 ` Andrew Jones
1 sibling, 1 reply; 11+ messages in thread
From: Andrew Jones @ 2022-08-18 5:40 UTC (permalink / raw)
To: Conor Dooley
Cc: Thomas Gleixner, Marc Zyngier, Rob Herring, Krzysztof Kozlowski,
Palmer Dabbelt, Paul Walmsley, Albert Ou, Daniel Lezcano,
Anup Patel, Conor Dooley, Guo Ren, Sagar Kadam, Jessica Clarke,
linux-kernel, devicetree, linux-riscv, qemu-riscv, Rob Herring
On Wed, Aug 17, 2022 at 09:12:12PM +0100, Conor Dooley wrote:
> From: Conor Dooley <conor.dooley@microchip.com>
>
> The QEMU virt and spike machines currently export a riscv,isa string of
> "rv64imafdcsuh",
>
> While the RISC-V foundation has been ratifying a bunch of extenstions
> etc, the kernel has remained relatively static with what hardware is
> supported - but the same is not true of QEMU. Using the virt machine
> and running dt-validate on the dumped dtb fails, partly due to the
> unexpected isa string.
>
> Rather than enumerate the many many possbilities, change the pattern
> to a regex, with the following assumptions:
> - the single letter order is fixed & we don't care about things that
> can't even do "ima"
> - the standard multi letter extensions are all in a "_z<foo>" format
> where the first letter of <foo> is a valid single letter extension
> - _s & _h are used for supervisor and hyper visor extensions.
> - after the first two chars, a standard multi letter extension name
> could be an english word (ifencei anyone?) so it's not worth
> restricting the charset
> - vendor ISA extensions begind with _x and have no charset restrictions
> - we don't care about an e extension from an OS pov
> - that attempting to validate the contents of the multiletter extensions
> with dt-validate beyond the formatting is a futile, massively verbose
> or unwieldy exercise at best.
> - ima are required
>
> The following limitations also apply:
> - multi letter extension ordering is not enforced. dt-schema does not
> appear to allow for named match groups, so the resulting regex would
> be even more of a headache.
> - ditto for the numbered extensions.
>
> Finally, add me as a maintainer of the binding so that when it breaks
> in the future, I can be held responsible!
>
> Reported-by: Rob Herring <robh@kernel.org>
> Link: https://lore.kernel.org/linux-riscv/20220803170552.GA2250266-robh@kernel.org/
> Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
> ---
> Palmer, feel free to drop the maintainer addition. I just mostly want
> to clean up my own mess on this when they decide to ratify more
> extensions & this comes back up again.
> ---
> Documentation/devicetree/bindings/riscv/cpus.yaml | 5 ++---
> 1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/riscv/cpus.yaml b/Documentation/devicetree/bindings/riscv/cpus.yaml
> index 873dd12f6e89..c0e0bc5dce04 100644
> --- a/Documentation/devicetree/bindings/riscv/cpus.yaml
> +++ b/Documentation/devicetree/bindings/riscv/cpus.yaml
> @@ -9,6 +9,7 @@ title: RISC-V bindings for 'cpus' DT nodes
> maintainers:
> - Paul Walmsley <paul.walmsley@sifive.com>
> - Palmer Dabbelt <palmer@sifive.com>
> + - Conor Dooley <conor@kernel.org>
>
> description: |
> This document uses some terminology common to the RISC-V community
> @@ -79,9 +80,7 @@ properties:
> insensitive, letters in the riscv,isa string must be all
> lowercase to simplify parsing.
> $ref: "/schemas/types.yaml#/definitions/string"
> - enum:
> - - rv64imac
> - - rv64imafdc
> + pattern: ^rv(?:64|32)imaf?d?q?c?b?v?k?h?(?:(?:_[zsh][imafdqcbvksh]|_x)(?:[a-z])+)*$
>
> # RISC-V requires 'timebase-frequency' in /cpus, so disallow it here
> timebase-frequency: false
> --
> 2.37.1
>
Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3 3/4] dt-bindings: riscv: add new riscv,isa strings for emulators
2022-08-18 5:40 ` Andrew Jones
@ 2022-08-18 5:48 ` Andrew Jones
2022-08-18 6:24 ` Conor.Dooley
0 siblings, 1 reply; 11+ messages in thread
From: Andrew Jones @ 2022-08-18 5:48 UTC (permalink / raw)
To: Conor Dooley
Cc: Thomas Gleixner, Marc Zyngier, Rob Herring, Krzysztof Kozlowski,
Palmer Dabbelt, Paul Walmsley, Albert Ou, Daniel Lezcano,
Anup Patel, Conor Dooley, Guo Ren, Sagar Kadam, Jessica Clarke,
linux-kernel, devicetree, linux-riscv, qemu-riscv, Rob Herring
On Thu, Aug 18, 2022 at 07:40:14AM +0200, Andrew Jones wrote:
> On Wed, Aug 17, 2022 at 09:12:12PM +0100, Conor Dooley wrote:
> > From: Conor Dooley <conor.dooley@microchip.com>
> >
> > The QEMU virt and spike machines currently export a riscv,isa string of
> > "rv64imafdcsuh",
> >
> > While the RISC-V foundation has been ratifying a bunch of extenstions
> > etc, the kernel has remained relatively static with what hardware is
> > supported - but the same is not true of QEMU. Using the virt machine
> > and running dt-validate on the dumped dtb fails, partly due to the
> > unexpected isa string.
> >
> > Rather than enumerate the many many possbilities, change the pattern
> > to a regex, with the following assumptions:
> > - the single letter order is fixed & we don't care about things that
> > can't even do "ima"
> > - the standard multi letter extensions are all in a "_z<foo>" format
> > where the first letter of <foo> is a valid single letter extension
> > - _s & _h are used for supervisor and hyper visor extensions.
> > - after the first two chars, a standard multi letter extension name
> > could be an english word (ifencei anyone?) so it's not worth
> > restricting the charset
> > - vendor ISA extensions begind with _x and have no charset restrictions
> > - we don't care about an e extension from an OS pov
> > - that attempting to validate the contents of the multiletter extensions
> > with dt-validate beyond the formatting is a futile, massively verbose
> > or unwieldy exercise at best.
> > - ima are required
> >
> > The following limitations also apply:
> > - multi letter extension ordering is not enforced. dt-schema does not
> > appear to allow for named match groups, so the resulting regex would
> > be even more of a headache.
> > - ditto for the numbered extensions.
> >
> > Finally, add me as a maintainer of the binding so that when it breaks
> > in the future, I can be held responsible!
> >
> > Reported-by: Rob Herring <robh@kernel.org>
> > Link: https://lore.kernel.org/linux-riscv/20220803170552.GA2250266-robh@kernel.org/
> > Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
> > ---
> > Palmer, feel free to drop the maintainer addition. I just mostly want
> > to clean up my own mess on this when they decide to ratify more
> > extensions & this comes back up again.
> > ---
> > Documentation/devicetree/bindings/riscv/cpus.yaml | 5 ++---
> > 1 file changed, 2 insertions(+), 3 deletions(-)
> >
> > diff --git a/Documentation/devicetree/bindings/riscv/cpus.yaml b/Documentation/devicetree/bindings/riscv/cpus.yaml
> > index 873dd12f6e89..c0e0bc5dce04 100644
> > --- a/Documentation/devicetree/bindings/riscv/cpus.yaml
> > +++ b/Documentation/devicetree/bindings/riscv/cpus.yaml
> > @@ -9,6 +9,7 @@ title: RISC-V bindings for 'cpus' DT nodes
> > maintainers:
> > - Paul Walmsley <paul.walmsley@sifive.com>
> > - Palmer Dabbelt <palmer@sifive.com>
> > + - Conor Dooley <conor@kernel.org>
> >
> > description: |
> > This document uses some terminology common to the RISC-V community
> > @@ -79,9 +80,7 @@ properties:
> > insensitive, letters in the riscv,isa string must be all
> > lowercase to simplify parsing.
> > $ref: "/schemas/types.yaml#/definitions/string"
> > - enum:
> > - - rv64imac
> > - - rv64imafdc
> > + pattern: ^rv(?:64|32)imaf?d?q?c?b?v?k?h?(?:(?:_[zsh][imafdqcbvksh]|_x)(?:[a-z])+)*$
Actually we don't want S and H extensions to be treated like Z, but rather
like X. Only Z extensions have the category character convention. (And I'm
still tempted to just drop the enforcement from Z too, since it adds
additional maintenance and we've already settled for something less than
complete.)
Thanks,
drew
> >
> > # RISC-V requires 'timebase-frequency' in /cpus, so disallow it here
> > timebase-frequency: false
> > --
> > 2.37.1
> >
>
> Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3 3/4] dt-bindings: riscv: add new riscv,isa strings for emulators
2022-08-18 5:48 ` Andrew Jones
@ 2022-08-18 6:24 ` Conor.Dooley
0 siblings, 0 replies; 11+ messages in thread
From: Conor.Dooley @ 2022-08-18 6:24 UTC (permalink / raw)
To: ajones, mail
Cc: tglx, maz, robh+dt, krzysztof.kozlowski+dt, palmer, paul.walmsley,
aou, daniel.lezcano, anup, guoren, sagar.kadam, jrtc27,
linux-kernel, devicetree, linux-riscv, qemu-riscv, robh
On 18/08/2022 06:48, Andrew Jones wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
>
> On Thu, Aug 18, 2022 at 07:40:14AM +0200, Andrew Jones wrote:
>> On Wed, Aug 17, 2022 at 09:12:12PM +0100, Conor Dooley wrote:
>>> From: Conor Dooley <conor.dooley@microchip.com>
>>>
>>> The QEMU virt and spike machines currently export a riscv,isa string of
>>> "rv64imafdcsuh",
>>>
>>> While the RISC-V foundation has been ratifying a bunch of extenstions
>>> etc, the kernel has remained relatively static with what hardware is
>>> supported - but the same is not true of QEMU. Using the virt machine
>>> and running dt-validate on the dumped dtb fails, partly due to the
>>> unexpected isa string.
>>>
>>> Rather than enumerate the many many possbilities, change the pattern
>>> to a regex, with the following assumptions:
>>> - the single letter order is fixed & we don't care about things that
>>> can't even do "ima"
>>> - the standard multi letter extensions are all in a "_z<foo>" format
>>> where the first letter of <foo> is a valid single letter extension
>>> - _s & _h are used for supervisor and hyper visor extensions.
>>> - after the first two chars, a standard multi letter extension name
>>> could be an english word (ifencei anyone?) so it's not worth
>>> restricting the charset
>>> - vendor ISA extensions begind with _x and have no charset restrictions
>>> - we don't care about an e extension from an OS pov
>>> - that attempting to validate the contents of the multiletter extensions
>>> with dt-validate beyond the formatting is a futile, massively verbose
>>> or unwieldy exercise at best.
>>> - ima are required
>>>
>>> The following limitations also apply:
>>> - multi letter extension ordering is not enforced. dt-schema does not
>>> appear to allow for named match groups, so the resulting regex would
>>> be even more of a headache.
>>> - ditto for the numbered extensions.
>>>
>>> Finally, add me as a maintainer of the binding so that when it breaks
>>> in the future, I can be held responsible!
>>>
>>> Reported-by: Rob Herring <robh@kernel.org>
>>> Link: https://lore.kernel.org/linux-riscv/20220803170552.GA2250266-robh@kernel.org/
>>> Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
>>> ---
>>> Palmer, feel free to drop the maintainer addition. I just mostly want
>>> to clean up my own mess on this when they decide to ratify more
>>> extensions & this comes back up again.
>>> ---
>>> Documentation/devicetree/bindings/riscv/cpus.yaml | 5 ++---
>>> 1 file changed, 2 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/Documentation/devicetree/bindings/riscv/cpus.yaml b/Documentation/devicetree/bindings/riscv/cpus.yaml
>>> index 873dd12f6e89..c0e0bc5dce04 100644
>>> --- a/Documentation/devicetree/bindings/riscv/cpus.yaml
>>> +++ b/Documentation/devicetree/bindings/riscv/cpus.yaml
>>> @@ -9,6 +9,7 @@ title: RISC-V bindings for 'cpus' DT nodes
>>> maintainers:
>>> - Paul Walmsley <paul.walmsley@sifive.com>
>>> - Palmer Dabbelt <palmer@sifive.com>
>>> + - Conor Dooley <conor@kernel.org>
>>>
>>> description: |
>>> This document uses some terminology common to the RISC-V community
>>> @@ -79,9 +80,7 @@ properties:
>>> insensitive, letters in the riscv,isa string must be all
>>> lowercase to simplify parsing.
>>> $ref: "/schemas/types.yaml#/definitions/string"
>>> - enum:
>>> - - rv64imac
>>> - - rv64imafdc
>>> + pattern: ^rv(?:64|32)imaf?d?q?c?b?v?k?h?(?:(?:_[zsh][imafdqcbvksh]|_x)(?:[a-z])+)*$
>
> Actually we don't want S and H extensions to be treated like Z, but rather
> like X. Only Z extensions have the category character convention. (And I'm
> still tempted to just drop the enforcement from Z too, since it adds
> additional maintenance and we've already settled for something less than
> complete.)
Yeah, I think you are probably right there. I'll let this one sit for
a few days & if nothing else comes in I'll send a v4 with the charset
restriction dropped.
Thanks Drew,
Conor.
>
> Thanks,
> drew
>
>>>
>>> # RISC-V requires 'timebase-frequency' in /cpus, so disallow it here
>>> timebase-frequency: false
>>> --
>>> 2.37.1
>>>
>>
>> Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
^ permalink raw reply [flat|nested] 11+ messages in thread
* [NOT FOR INCLUSION v3 4/4] dt-bindings: riscv: isa string bonus content
2022-08-17 20:12 [PATCH v3 0/4] Fix dt-validate issues on qemu dtbdumps due to dt-bindings Conor Dooley
` (2 preceding siblings ...)
2022-08-17 20:12 ` [PATCH v3 3/4] dt-bindings: riscv: add new riscv,isa strings for emulators Conor Dooley
@ 2022-08-17 20:12 ` Conor Dooley
3 siblings, 0 replies; 11+ messages in thread
From: Conor Dooley @ 2022-08-17 20:12 UTC (permalink / raw)
To: Thomas Gleixner, Marc Zyngier, Rob Herring, Krzysztof Kozlowski,
Palmer Dabbelt, Paul Walmsley, Albert Ou
Cc: Daniel Lezcano, Anup Patel, Conor Dooley, Guo Ren, Sagar Kadam,
Jessica Clarke, Andrew Jones, linux-kernel, devicetree,
linux-riscv, qemu-riscv
From: Conor Dooley <conor.dooley@microchip.com>
**NOT FOR INCLUSION**
I figured, sure why not add the strings for version number validation,
just in case we need them in the future. The commented out string is
considered by dt-schema to be "not a regex", but regex101 thinks it
is... Maybe dt-schema does not support named match groups, but they
are the only way that I could trivially find to make this somewhat
manageable. Either way, it is permissive so it allows combinations
of "M", "MpM" & no number.
Not-signed-off-by: Conor Dooley <conor.dooley@microchip.com>
---
Documentation/devicetree/bindings/riscv/cpus.yaml | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/riscv/cpus.yaml b/Documentation/devicetree/bindings/riscv/cpus.yaml
index c0e0bc5dce04..38a824453012 100644
--- a/Documentation/devicetree/bindings/riscv/cpus.yaml
+++ b/Documentation/devicetree/bindings/riscv/cpus.yaml
@@ -80,7 +80,11 @@ properties:
insensitive, letters in the riscv,isa string must be all
lowercase to simplify parsing.
$ref: "/schemas/types.yaml#/definitions/string"
- pattern: ^rv(?:64|32)imaf?d?q?c?b?v?k?h?(?:(?:_[zsh][imafdqcbvksh]|_x)(?:[a-z])+)*$
+ oneOf:
+ - pattern: ^rv(?:64|32)imaf?d?q?c?b?v?k?h?(?:(?:_[zsh][imafdqcbvksh]|_x)(?:[a-z])+)*$
+ - pattern: ^rv(?:64|32)(?:i\d+)(?:m\d+)(?:a\d+)(?:f\d+)?(?:d\d+)?(?:q\d+)?(?:c\d+)?(?:b\d+)?(?:v\d+)?(?:k\d+)?(?:h\d+)?(?:(?:_[zsh][imafdqcbvksh]|_x)(?:[a-z])+\d+)*$
+ - pattern: ^rv(?:64|32)(?:i\d+p\d+)(?:m\d+p\d+)(?:a\d+p\d+)(?:f\d+p\d+)?(?:d\d+p\d+)?(?:q\d+p\d+)?(?:c\d+p\d+)?(?:b\d+p\d+)?(?:v\d+p\d+)?(?:k\d+p\d+)?(?:h\d+p\d+)?(?:(?:_[zsh][imafdqcbvksh]|_x)(?:[a-z])+(?:\d+p\d+))*$
+# - pattern: ^rv(?:64|32)(?:i(?<num>(?:\d+|\d+p\d+)?)?)(?:m(?:\k<num>)?)(?:a(?:\k<num>)?)(?:f(?:\k<num>)?)?(?:d(?:\k<num>)?)?(?:q(?:\k<num>)?)?(?:c(?:\k<num>)?)?(?:b(?:\k<num>)?)?(?:v(?:\k<num>)?)?(?:k(?:\k<num>)?)?(?:h(?:\k<num>)?)?(?:(?:_[zsh][imafdqcbvksh]|_x)(?:[a-z])*(?:\d+|\d+p\d+)?)+$
# RISC-V requires 'timebase-frequency' in /cpus, so disallow it here
timebase-frequency: false
--
2.37.1
^ permalink raw reply related [flat|nested] 11+ messages in thread