diff mbox series

[V1,1/4] dt-bindings: ufs: qcom: Add qos property

Message ID 1696952947-18062-2-git-send-email-quic_mnaresh@quicinc.com (mailing list archive)
State Changes Requested
Headers show
Series Add per-cpu PM QoS support for QCOM UFS | expand

Commit Message

Maramaina Naresh Oct. 10, 2023, 3:49 p.m. UTC
Add bindings for per-cpu QoS for QCOM UFS. This improves random io
performance by 20% for QCOM UFS.

Signed-off-by: Maramaina Naresh <quic_mnaresh@quicinc.com>
---
 Documentation/devicetree/bindings/ufs/qcom,ufs.yaml | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

Comments

Rob Herring Oct. 10, 2023, 4:27 p.m. UTC | #1
On Tue, 10 Oct 2023 21:19:04 +0530, Maramaina Naresh wrote:
> Add bindings for per-cpu QoS for QCOM UFS. This improves random io
> performance by 20% for QCOM UFS.
> 
> Signed-off-by: Maramaina Naresh <quic_mnaresh@quicinc.com>
> ---
>  Documentation/devicetree/bindings/ufs/qcom,ufs.yaml | 16 ++++++++++++++++
>  1 file changed, 16 insertions(+)
> 

My bot found errors running 'make DT_CHECKER_FLAGS=-m dt_binding_check'
on your patch (DT_CHECKER_FLAGS is new in v5.13):

yamllint warnings/errors:
./Documentation/devicetree/bindings/ufs/qcom,ufs.yaml:83:6: [warning] wrong indentation: expected 6 but found 5 (indentation)
./Documentation/devicetree/bindings/ufs/qcom,ufs.yaml:85:6: [warning] wrong indentation: expected 6 but found 5 (indentation)

dtschema/dtc warnings/errors:
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/ufs/qcom,ufs.yaml: properties:qos: 'anyOf' conditional failed, one must be fixed:
	'cpumask' is not one of ['$ref', 'additionalItems', 'additionalProperties', 'allOf', 'anyOf', 'const', 'contains', 'default', 'dependencies', 'dependentRequired', 'dependentSchemas', 'deprecated', 'description', 'else', 'enum', 'exclusiveMaximum', 'exclusiveMinimum', 'items', 'if', 'minItems', 'minimum', 'maxItems', 'maximum', 'multipleOf', 'not', 'oneOf', 'pattern', 'patternProperties', 'properties', 'required', 'then', 'typeSize', 'unevaluatedProperties', 'uniqueItems']
	'type' was expected
	from schema $id: http://devicetree.org/meta-schemas/keywords.yaml#
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/ufs/qcom,ufs.yaml: properties:qos: 'anyOf' conditional failed, one must be fixed:
	'vote' is not one of ['$ref', 'additionalItems', 'additionalProperties', 'allOf', 'anyOf', 'const', 'contains', 'default', 'dependencies', 'dependentRequired', 'dependentSchemas', 'deprecated', 'description', 'else', 'enum', 'exclusiveMaximum', 'exclusiveMinimum', 'items', 'if', 'minItems', 'minimum', 'maxItems', 'maximum', 'multipleOf', 'not', 'oneOf', 'pattern', 'patternProperties', 'properties', 'required', 'then', 'typeSize', 'unevaluatedProperties', 'uniqueItems']
	'type' was expected
	from schema $id: http://devicetree.org/meta-schemas/keywords.yaml#
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/ufs/qcom,ufs.yaml: qos: missing type definition
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/ufs/qcom,ufs.example.dtb: ufs@1d84000: Unevaluated properties are not allowed ('qos0', 'qos1' were unexpected)
	from schema $id: http://devicetree.org/schemas/ufs/qcom,ufs.yaml#

doc reference errors (make refcheckdocs):

See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/1696952947-18062-2-git-send-email-quic_mnaresh@quicinc.com

The base for the series is generally the latest rc1. A different dependency
should be noted in *this* patch.

If you already ran 'make dt_binding_check' and didn't see the above
error(s), then make sure 'yamllint' is installed and dt-schema is up to
date:

pip3 install dtschema --upgrade

Please check and re-submit after running the above command yourself. Note
that DT_SCHEMA_FILES can be set to your schema file to speed up checking
your schema. However, it must be unset to test all examples with your schema.
Konrad Dybcio Oct. 10, 2023, 4:37 p.m. UTC | #2
On 10/10/23 17:49, Maramaina Naresh wrote:
> Add bindings for per-cpu QoS for QCOM UFS. This improves random io
> performance by 20% for QCOM UFS.
The bindings addition improves performance? Cool :P

Please explain your changes and provide the "why".

[...]

> @@ -318,5 +326,13 @@ examples:
>                               <0 0>,
>                               <0 0>;
>               qcom,ice = <&ice>;
> +            qos0 {
Looks like the indentation is off, also missing newline before subnodes.

> +                cpumask = <0x0f>;This should be a CPU phandle array instead. Besides, can we not 
determine this dynamically?

> +                vote = <44>;
> +            };
> +            qos1 {
Missing newline between subnodes.

Konrad
kernel test robot Oct. 11, 2023, 7:37 a.m. UTC | #3
Hi Maramaina,

kernel test robot noticed the following build warnings:

[auto build test WARNING on mkp-scsi/for-next]
[also build test WARNING on jejb-scsi/for-next robh/for-next linus/master v6.6-rc5 next-20231010]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Maramaina-Naresh/dt-bindings-ufs-qcom-Add-qos-property/20231010-235602
base:   https://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git for-next
patch link:    https://lore.kernel.org/r/1696952947-18062-2-git-send-email-quic_mnaresh%40quicinc.com
patch subject: [PATCH V1 1/4] dt-bindings: ufs: qcom: Add qos property
compiler: loongarch64-linux-gcc (GCC) 13.2.0
reproduce: (https://download.01.org/0day-ci/archive/20231011/202310111509.fFHOVdaI-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202310111509.fFHOVdaI-lkp@intel.com/

dtcheck warnings: (new ones prefixed by >>)
>> Documentation/devicetree/bindings/ufs/qcom,ufs.yaml:83:6: [warning] wrong indentation: expected 6 but found 5 (indentation)
   Documentation/devicetree/bindings/ufs/qcom,ufs.yaml:85:6: [warning] wrong indentation: expected 6 but found 5 (indentation)
--
>> Documentation/devicetree/bindings/ufs/qcom,ufs.yaml: properties:qos: 'anyOf' conditional failed, one must be fixed:
   	'cpumask' is not one of ['$ref', 'additionalItems', 'additionalProperties', 'allOf', 'anyOf', 'const', 'contains', 'default', 'dependencies', 'dependentRequired', 'dependentSchemas', 'deprecated', 'description', 'else', 'enum', 'exclusiveMaximum', 'exclusiveMinimum', 'items', 'if', 'minItems', 'minimum', 'maxItems', 'maximum', 'multipleOf', 'not', 'oneOf', 'pattern', 'patternProperties', 'properties', 'required', 'then', 'typeSize', 'unevaluatedProperties', 'uniqueItems']
   	'type' was expected
   	from schema $id: http://devicetree.org/meta-schemas/keywords.yaml#
>> Documentation/devicetree/bindings/ufs/qcom,ufs.yaml: properties:qos: 'anyOf' conditional failed, one must be fixed:
   	'vote' is not one of ['$ref', 'additionalItems', 'additionalProperties', 'allOf', 'anyOf', 'const', 'contains', 'default', 'dependencies', 'dependentRequired', 'dependentSchemas', 'deprecated', 'description', 'else', 'enum', 'exclusiveMaximum', 'exclusiveMinimum', 'items', 'if', 'minItems', 'minimum', 'maxItems', 'maximum', 'multipleOf', 'not', 'oneOf', 'pattern', 'patternProperties', 'properties', 'required', 'then', 'typeSize', 'unevaluatedProperties', 'uniqueItems']
   	'type' was expected
   	from schema $id: http://devicetree.org/meta-schemas/keywords.yaml#

vim +83 Documentation/devicetree/bindings/ufs/qcom,ufs.yaml

     8	
     9	maintainers:
    10	  - Bjorn Andersson <bjorn.andersson@linaro.org>
    11	  - Andy Gross <agross@kernel.org>
    12	
    13	# Select only our matches, not all jedec,ufs-2.0
    14	select:
    15	  properties:
    16	    compatible:
    17	      contains:
    18	        const: qcom,ufshc
    19	  required:
    20	    - compatible
    21	
    22	properties:
    23	  compatible:
    24	    items:
    25	      - enum:
    26	          - qcom,msm8994-ufshc
    27	          - qcom,msm8996-ufshc
    28	          - qcom,msm8998-ufshc
    29	          - qcom,sa8775p-ufshc
    30	          - qcom,sc8280xp-ufshc
    31	          - qcom,sdm845-ufshc
    32	          - qcom,sm6115-ufshc
    33	          - qcom,sm6350-ufshc
    34	          - qcom,sm8150-ufshc
    35	          - qcom,sm8250-ufshc
    36	          - qcom,sm8350-ufshc
    37	          - qcom,sm8450-ufshc
    38	          - qcom,sm8550-ufshc
    39	      - const: qcom,ufshc
    40	      - const: jedec,ufs-2.0
    41	
    42	  clocks:
    43	    minItems: 8
    44	    maxItems: 11
    45	
    46	  clock-names:
    47	    minItems: 8
    48	    maxItems: 11
    49	
    50	  dma-coherent: true
    51	
    52	  interconnects:
    53	    minItems: 2
    54	    maxItems: 2
    55	
    56	  interconnect-names:
    57	    items:
    58	      - const: ufs-ddr
    59	      - const: cpu-ufs
    60	
    61	  iommus:
    62	    minItems: 1
    63	    maxItems: 2
    64	
    65	  phys:
    66	    maxItems: 1
    67	
    68	  phy-names:
    69	    items:
    70	      - const: ufsphy
    71	
    72	  power-domains:
    73	    maxItems: 1
    74	
    75	  qcom,ice:
    76	    $ref: /schemas/types.yaml#/definitions/phandle
    77	    description: phandle to the Inline Crypto Engine node
    78	
    79	  qos:
    80	    minItems: 2
    81	    maxItems: 2
    82	    cpumask:
  > 83	     description: list of CPUs under CPU group
    84	    vote:
    85	     description: vote value for QoS CPU group
    86	
    87	  reg:
    88	    minItems: 1
    89	    maxItems: 2
    90	
    91	  reg-names:
    92	    items:
    93	      - const: std
    94	      - const: ice
    95	
    96	  required-opps:
    97	    maxItems: 1
    98	
    99	  resets:
   100	    maxItems: 1
   101	
   102	  '#reset-cells':
   103	    const: 1
   104	
   105	  reset-names:
   106	    items:
   107	      - const: rst
   108	
   109	  reset-gpios:
   110	    maxItems: 1
   111	    description:
   112	      GPIO connected to the RESET pin of the UFS memory device.
   113	
   114	required:
   115	  - compatible
   116	  - reg
   117	
   118	allOf:
   119	  - $ref: ufs-common.yaml
   120	
   121	  - if:
   122	      properties:
   123	        compatible:
   124	          contains:
   125	            enum:
   126	              - qcom,msm8998-ufshc
   127	              - qcom,sa8775p-ufshc
   128	              - qcom,sc8280xp-ufshc
   129	              - qcom,sm8250-ufshc
   130	              - qcom,sm8350-ufshc
   131	              - qcom,sm8450-ufshc
   132	              - qcom,sm8550-ufshc
   133	    then:
   134	      properties:
   135	        clocks:
   136	          minItems: 8
   137	          maxItems: 8
   138	        clock-names:
   139	          items:
   140	            - const: core_clk
   141	            - const: bus_aggr_clk
   142	            - const: iface_clk
   143	            - const: core_clk_unipro
   144	            - const: ref_clk
   145	            - const: tx_lane0_sync_clk
   146	            - const: rx_lane0_sync_clk
   147	            - const: rx_lane1_sync_clk
   148	        reg:
   149	          minItems: 1
   150	          maxItems: 1
   151	        reg-names:
   152	          maxItems: 1
   153	
   154	  - if:
   155	      properties:
   156	        compatible:
   157	          contains:
   158	            enum:
   159	              - qcom,sdm845-ufshc
   160	              - qcom,sm6350-ufshc
   161	              - qcom,sm8150-ufshc
   162	    then:
   163	      properties:
   164	        clocks:
   165	          minItems: 9
   166	          maxItems: 9
   167	        clock-names:
   168	          items:
   169	            - const: core_clk
   170	            - const: bus_aggr_clk
   171	            - const: iface_clk
   172	            - const: core_clk_unipro
   173	            - const: ref_clk
   174	            - const: tx_lane0_sync_clk
   175	            - const: rx_lane0_sync_clk
   176	            - const: rx_lane1_sync_clk
   177	            - const: ice_core_clk
   178	        reg:
   179	          minItems: 2
   180	          maxItems: 2
   181	        reg-names:
   182	          minItems: 2
   183	      required:
   184	        - reg-names
   185	
   186	  - if:
   187	      properties:
   188	        compatible:
   189	          contains:
   190	            enum:
   191	              - qcom,msm8996-ufshc
   192	    then:
   193	      properties:
   194	        clocks:
   195	          minItems: 11
   196	          maxItems: 11
   197	        clock-names:
   198	          items:
   199	            - const: core_clk_src
   200	            - const: core_clk
   201	            - const: bus_clk
   202	            - const: bus_aggr_clk
   203	            - const: iface_clk
   204	            - const: core_clk_unipro_src
   205	            - const: core_clk_unipro
   206	            - const: core_clk_ice
   207	            - const: ref_clk
   208	            - const: tx_lane0_sync_clk
   209	            - const: rx_lane0_sync_clk
   210	        reg:
   211	          minItems: 1
   212	          maxItems: 1
   213	        reg-names:
   214	          maxItems: 1
   215	
   216	  - if:
   217	      properties:
   218	        compatible:
   219	          contains:
   220	            enum:
   221	              - qcom,sm6115-ufshc
   222	    then:
   223	      properties:
   224	        clocks:
   225	          minItems: 8
   226	          maxItems: 8
   227	        clock-names:
   228	          items:
   229	            - const: core_clk
   230	            - const: bus_aggr_clk
   231	            - const: iface_clk
   232	            - const: core_clk_unipro
   233	            - const: ref_clk
   234	            - const: tx_lane0_sync_clk
   235	            - const: rx_lane0_sync_clk
   236	            - const: ice_core_clk
   237	        reg:
   238	          minItems: 2
   239	          maxItems: 2
   240	        reg-names:
   241	          minItems: 2
   242	      required:
   243	        - reg-names
   244	
   245	    # TODO: define clock bindings for qcom,msm8994-ufshc
   246	
   247	  - if:
   248	      required:
   249	        - qcom,ice
   250	    then:
   251	      properties:
   252	        reg:
   253	          maxItems: 1
   254	        clocks:
   255	          minItems: 8
   256	          maxItems: 8
   257	    else:
   258	      properties:
   259	        reg:
   260	          minItems: 1
   261	          maxItems: 2
   262	        clocks:
   263	          minItems: 8
   264	          maxItems: 11
   265
Krzysztof Kozlowski Oct. 12, 2023, 12:54 p.m. UTC | #4
On 10/10/2023 17:49, Maramaina Naresh wrote:
> Add bindings for per-cpu QoS for QCOM UFS. This improves random io
> performance by 20% for QCOM UFS.
> 
> Signed-off-by: Maramaina Naresh <quic_mnaresh@quicinc.com>
> ---
>  Documentation/devicetree/bindings/ufs/qcom,ufs.yaml | 16 ++++++++++++++++
>  1 file changed, 16 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/ufs/qcom,ufs.yaml b/Documentation/devicetree/bindings/ufs/qcom,ufs.yaml
> index 462ead5..d8b807e 100644
> --- a/Documentation/devicetree/bindings/ufs/qcom,ufs.yaml
> +++ b/Documentation/devicetree/bindings/ufs/qcom,ufs.yaml
> @@ -76,6 +76,14 @@ properties:
>      $ref: /schemas/types.yaml#/definitions/phandle
>      description: phandle to the Inline Crypto Engine node
>  
> +  qos:
> +    minItems: 2
> +    maxItems: 2

This was absolutely never tested.

Best regards,
Krzysztof
Konrad Dybcio Oct. 21, 2023, 5:22 p.m. UTC | #5
On 10/20/23 11:04, Maramaina Naresh wrote:
> Hi All,
> 
> Thanks for reviewing the patch.
> 
> We are moving this feature support to core UFS driver and planning to control through UFS capability flag [ As per upstream comments ].
> 
> We will take care of comments and push new changes in next patch series.
Sounds good.

Please also fix your email client to avoid HTML. The lists will
only accept plaintext messages.

Konrad
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/ufs/qcom,ufs.yaml b/Documentation/devicetree/bindings/ufs/qcom,ufs.yaml
index 462ead5..d8b807e 100644
--- a/Documentation/devicetree/bindings/ufs/qcom,ufs.yaml
+++ b/Documentation/devicetree/bindings/ufs/qcom,ufs.yaml
@@ -76,6 +76,14 @@  properties:
     $ref: /schemas/types.yaml#/definitions/phandle
     description: phandle to the Inline Crypto Engine node
 
+  qos:
+    minItems: 2
+    maxItems: 2
+    cpumask:
+     description: list of CPUs under CPU group
+    vote:
+     description: vote value for QoS CPU group
+
   reg:
     minItems: 1
     maxItems: 2
@@ -318,5 +326,13 @@  examples:
                             <0 0>,
                             <0 0>;
             qcom,ice = <&ice>;
+            qos0 {
+                cpumask = <0x0f>;
+                vote = <44>;
+            };
+            qos1 {
+                cpumask = <0xf0>;
+                vote = <44>;
+            };
         };
     };