Message ID | 20200829170923.29949-3-sudeep.holla@arm.com |
---|---|
State | New |
Headers | show |
Series | firmware: Add initial support for Arm FF-A | expand |
On Sat, 29 Aug 2020 18:09:16 +0100, Sudeep Holla wrote: > Since the FF-A v1.0 specification doesn't list the UUID of all the > partitions in the discovery API, we need to specify the UUID of the > partitions that need to be accessed by drivers within the kernel. > > This extends the binding to provide the list of partitions that kernel > drivers may need to access and are not part of the partitions managed > by the hypervisor. > > Signed-off-by: Sudeep Holla <sudeep.holla@arm.com> > --- > .../devicetree/bindings/arm/arm,ffa.yaml | 34 +++++++++++++++++-- > 1 file changed, 32 insertions(+), 2 deletions(-) > > Hi, > > I am sure this is incomplete, but I couldn't figure out how to make all > the child properties optional if it is not managed by hypervisor. > > Moreover, if we don't like the idea of adding UUID of all the partitions > that in-kernel drivers may need to communicate to, one alternative I can > think of is to allow the creation of FFA device from the FFA driver > itself. > > Regards, > Sudeep > My bot found errors running 'make dt_binding_check' on your patch: Traceback (most recent call last): File "/usr/local/bin/dt-extract-example", line 45, in <module> binding = yaml.load(open(args.yamlfile, encoding='utf-8').read()) File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/main.py", line 343, in load return constructor.get_single_data() File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 111, in get_single_data node = self.composer.get_single_node() File "_ruamel_yaml.pyx", line 706, in _ruamel_yaml.CParser.get_single_node File "_ruamel_yaml.pyx", line 724, in _ruamel_yaml.CParser._compose_document File "_ruamel_yaml.pyx", line 775, in _ruamel_yaml.CParser._compose_node File "_ruamel_yaml.pyx", line 889, in _ruamel_yaml.CParser._compose_mapping_node File "_ruamel_yaml.pyx", line 773, in _ruamel_yaml.CParser._compose_node File "_ruamel_yaml.pyx", line 850, in _ruamel_yaml.CParser._compose_sequence_node File "_ruamel_yaml.pyx", line 775, in _ruamel_yaml.CParser._compose_node File "_ruamel_yaml.pyx", line 889, in _ruamel_yaml.CParser._compose_mapping_node File "_ruamel_yaml.pyx", line 775, in _ruamel_yaml.CParser._compose_node File "_ruamel_yaml.pyx", line 889, in _ruamel_yaml.CParser._compose_mapping_node File "_ruamel_yaml.pyx", line 731, in _ruamel_yaml.CParser._compose_node File "_ruamel_yaml.pyx", line 904, in _ruamel_yaml.CParser._parse_next_event ruamel.yaml.scanner.ScannerError: while scanning for the next token found character that cannot start any token in "<unicode string>", line 98, column 1 make[1]: *** [Documentation/devicetree/bindings/Makefile:18: Documentation/devicetree/bindings/arm/arm,ffa.example.dts] Error 1 make[1]: *** Deleting file 'Documentation/devicetree/bindings/arm/arm,ffa.example.dts' make[1]: *** Waiting for unfinished jobs.... ./Documentation/devicetree/bindings/arm/arm,ffa.yaml: while scanning for the next token found character that cannot start any token in "<unicode string>", line 98, column 1 /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/arm/arm,ffa.yaml: ignoring, error parsing file warning: no schema found in file: ./Documentation/devicetree/bindings/arm/arm,ffa.yaml make: *** [Makefile:1366: dt_binding_check] Error 2 See https://patchwork.ozlabs.org/patch/1353741 If you already ran 'make dt_binding_check' and didn't see the above error(s), then make sure dt-schema is up to date: pip3 install git+https://github.com/devicetree-org/dt-schema.git@master --upgrade Please check and re-submit.
On Wed, Sep 02, 2020 at 03:36:52PM -0600, Rob Herring wrote: > On Sat, 29 Aug 2020 18:09:16 +0100, Sudeep Holla wrote: > > Since the FF-A v1.0 specification doesn't list the UUID of all the > > partitions in the discovery API, we need to specify the UUID of the > > partitions that need to be accessed by drivers within the kernel. > > > > This extends the binding to provide the list of partitions that kernel > > drivers may need to access and are not part of the partitions managed > > by the hypervisor. > > > > Signed-off-by: Sudeep Holla <sudeep.holla@arm.com> > > --- > > .../devicetree/bindings/arm/arm,ffa.yaml | 34 +++++++++++++++++-- > > 1 file changed, 32 insertions(+), 2 deletions(-) > > > > Hi, > > > > I am sure this is incomplete, but I couldn't figure out how to make all > > the child properties optional if it is not managed by hypervisor. > > > > Moreover, if we don't like the idea of adding UUID of all the partitions > > that in-kernel drivers may need to communicate to, one alternative I can > > think of is to allow the creation of FFA device from the FFA driver > > itself. > > > > Regards, > > Sudeep > > > > > My bot found errors running 'make dt_binding_check' on your patch: > > Traceback (most recent call last): > File "/usr/local/bin/dt-extract-example", line 45, in <module> > binding = yaml.load(open(args.yamlfile, encoding='utf-8').read()) > File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/main.py", line 343, in load > return constructor.get_single_data() > File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 111, in get_single_data > node = self.composer.get_single_node() > File "_ruamel_yaml.pyx", line 706, in _ruamel_yaml.CParser.get_single_node > File "_ruamel_yaml.pyx", line 724, in _ruamel_yaml.CParser._compose_document > File "_ruamel_yaml.pyx", line 775, in _ruamel_yaml.CParser._compose_node > File "_ruamel_yaml.pyx", line 889, in _ruamel_yaml.CParser._compose_mapping_node > File "_ruamel_yaml.pyx", line 773, in _ruamel_yaml.CParser._compose_node > File "_ruamel_yaml.pyx", line 850, in _ruamel_yaml.CParser._compose_sequence_node > File "_ruamel_yaml.pyx", line 775, in _ruamel_yaml.CParser._compose_node > File "_ruamel_yaml.pyx", line 889, in _ruamel_yaml.CParser._compose_mapping_node > File "_ruamel_yaml.pyx", line 775, in _ruamel_yaml.CParser._compose_node > File "_ruamel_yaml.pyx", line 889, in _ruamel_yaml.CParser._compose_mapping_node > File "_ruamel_yaml.pyx", line 731, in _ruamel_yaml.CParser._compose_node > File "_ruamel_yaml.pyx", line 904, in _ruamel_yaml.CParser._parse_next_event > ruamel.yaml.scanner.ScannerError: while scanning for the next token > found character that cannot start any token > in "<unicode string>", line 98, column 1 > make[1]: *** [Documentation/devicetree/bindings/Makefile:18: Documentation/devicetree/bindings/arm/arm,ffa.example.dts] Error 1 > make[1]: *** Deleting file 'Documentation/devicetree/bindings/arm/arm,ffa.example.dts' > make[1]: *** Waiting for unfinished jobs.... > ./Documentation/devicetree/bindings/arm/arm,ffa.yaml: while scanning for the next token > found character that cannot start any token > in "<unicode string>", line 98, column 1 > /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/arm/arm,ffa.yaml: ignoring, error parsing file > warning: no schema found in file: ./Documentation/devicetree/bindings/arm/arm,ffa.yaml > make: *** [Makefile:1366: dt_binding_check] Error 2 > > > See https://patchwork.ozlabs.org/patch/1353741 > > If you already ran 'make dt_binding_check' and didn't see the above > error(s), then make sure dt-schema is up to date: > > pip3 install git+https://github.com/devicetree-org/dt-schema.git@master --upgrade > > Please check and re-submit. > Thanks for the report and the steps to setup. I will try this soon. -- Regards, Sudeep
diff --git a/Documentation/devicetree/bindings/arm/arm,ffa.yaml b/Documentation/devicetree/bindings/arm/arm,ffa.yaml index 668a5995fcab..d5c6d71c99de 100644 --- a/Documentation/devicetree/bindings/arm/arm,ffa.yaml +++ b/Documentation/devicetree/bindings/arm/arm,ffa.yaml @@ -23,11 +23,12 @@ description: | properties: $nodename: - const: ffa_hyp + pattern: "^(ffa|ffa_hyp)$" compatible: oneOf: - const: arm,ffa-1.0-hypervisor + - const: arm,ffa-1.0 memory-region: $ref: '/schemas/types.yaml#/definitions/phandle' @@ -83,10 +84,26 @@ description: | [3] Documentation/devicetree/bindings/reserved-memory/arm,ffa-memory.yaml +required: + - compatible + +allOf: + - if: + properties: + compatible: + contains: + const: arm,ffa-1.0-hypervisor + then: + required: + - memory-region + additionalProperties: false examples: - - | + - |+ + + // Case 1: Partitions managed by hypervisor + ffa_hyp { compatible = "arm,ffa-1.0-hypervisor"; memory-region = <&ffa_hyp_reserved>; @@ -100,3 +117,16 @@ additionalProperties: false memory-region = <&ffa_reserved0 &ffa_reserved1>; }; }; + + - |+ + + // Case 2: Partitions needing in-kernel usage + + ffa { + compatible = "arm,ffa-1.0"; + + ffa_partition1 { + compatible = "arm,ffa-1.0-partition"; + uuid = "589fc454-4502-4e66-9347-97b61e27cf73"; + }; + };
Since the FF-A v1.0 specification doesn't list the UUID of all the partitions in the discovery API, we need to specify the UUID of the partitions that need to be accessed by drivers within the kernel. This extends the binding to provide the list of partitions that kernel drivers may need to access and are not part of the partitions managed by the hypervisor. Signed-off-by: Sudeep Holla <sudeep.holla@arm.com> --- .../devicetree/bindings/arm/arm,ffa.yaml | 34 +++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) Hi, I am sure this is incomplete, but I couldn't figure out how to make all the child properties optional if it is not managed by hypervisor. Moreover, if we don't like the idea of adding UUID of all the partitions that in-kernel drivers may need to communicate to, one alternative I can think of is to allow the creation of FFA device from the FFA driver itself. Regards, Sudeep -- 2.17.1