diff mbox series

[2/9] dt-bindings: Arm: Extend FF-A binding to support in-kernel usage of partitions

Message ID 20200829170923.29949-3-sudeep.holla@arm.com
State New
Headers show
Series firmware: Add initial support for Arm FF-A | expand

Commit Message

Sudeep Holla Aug. 29, 2020, 5:09 p.m. UTC
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

Comments

Rob Herring (Arm) Sept. 2, 2020, 9:36 p.m. UTC | #1
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.
Sudeep Holla Sept. 7, 2020, 11:41 a.m. UTC | #2
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 mbox series

Patch

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";
+        };
+   };