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
+ 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>;
+ };
};
};
--
2.7.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
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
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
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
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.
© 2016 - 2026 Red Hat, Inc.