2021-03-09 07:35:46

by Athani Nadeem Ladkhan

[permalink] [raw]
Subject: [PATCH 1/2] dt-bindings:pci: Set LTSSM Detect.Quiet state delay.

The parameter detect-quiet-min-delay can be used to program the minimum
time that LTSSM waits on entering Detect.Quiet state.
00 : 0us minimum wait time in Detect.Quiet state.
01 : 100us minimum wait time in Detect.Quiet state.
10 : 1000us minimum wait time in Detect.Quiet state.
11 : 2000us minimum wait time in Detect.Quiet state.

Signed-off-by: Nadeem Athani <[email protected]>
---
.../devicetree/bindings/pci/cdns,cdns-pcie-host.yaml | 13 +++++++++++++
1 file changed, 13 insertions(+)

diff --git a/Documentation/devicetree/bindings/pci/cdns,cdns-pcie-host.yaml b/Documentation/devicetree/bindings/pci/cdns,cdns-pcie-host.yaml
index 293b8ec318bc..a1d56e0be419 100644
--- a/Documentation/devicetree/bindings/pci/cdns,cdns-pcie-host.yaml
+++ b/Documentation/devicetree/bindings/pci/cdns,cdns-pcie-host.yaml
@@ -27,6 +27,18 @@ properties:

msi-parent: true

+ detect-quiet-min-delay:
+ description:
+ LTSSM Detect.Quiet state minimum delay.
+ 00 : 0us minimum wait time
+ 01 : 100us minimum wait time
+ 10 : 1000us minimum wait time
+ 11 : 2000us minimum wait time
+ $ref: /schemas/types.yaml#/definitions/uint32
+ minimum: 0
+ maximum: 3
+ default: 0
+
required:
- reg
- reg-names
@@ -48,6 +60,7 @@ examples:
linux,pci-domain = <0>;
vendor-id = <0x17cd>;
device-id = <0x0200>;
+ detect-quiet-min-delay = <0>;

reg = <0x0 0xfb000000 0x0 0x01000000>,
<0x0 0x41000000 0x0 0x00001000>;
--
2.15.0


2021-03-09 16:48:51

by Rob Herring

[permalink] [raw]
Subject: Re: [PATCH 1/2] dt-bindings:pci: Set LTSSM Detect.Quiet state delay.

On Tue, Mar 9, 2021 at 12:31 AM Nadeem Athani <[email protected]> wrote:
>
> The parameter detect-quiet-min-delay can be used to program the minimum
> time that LTSSM waits on entering Detect.Quiet state.
> 00 : 0us minimum wait time in Detect.Quiet state.
> 01 : 100us minimum wait time in Detect.Quiet state.
> 10 : 1000us minimum wait time in Detect.Quiet state.
> 11 : 2000us minimum wait time in Detect.Quiet state.

What determines this setting? Is it per board or SoC? Is this a
standard PCI timing thing? Why does this need to be tuned per
platform?

> Signed-off-by: Nadeem Athani <[email protected]>
> ---
> .../devicetree/bindings/pci/cdns,cdns-pcie-host.yaml | 13 +++++++++++++
> 1 file changed, 13 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/pci/cdns,cdns-pcie-host.yaml b/Documentation/devicetree/bindings/pci/cdns,cdns-pcie-host.yaml
> index 293b8ec318bc..a1d56e0be419 100644
> --- a/Documentation/devicetree/bindings/pci/cdns,cdns-pcie-host.yaml
> +++ b/Documentation/devicetree/bindings/pci/cdns,cdns-pcie-host.yaml
> @@ -27,6 +27,18 @@ properties:
>
> msi-parent: true
>
> + detect-quiet-min-delay:
> + description:
> + LTSSM Detect.Quiet state minimum delay.
> + 00 : 0us minimum wait time
> + 01 : 100us minimum wait time
> + 10 : 1000us minimum wait time
> + 11 : 2000us minimum wait time
> + $ref: /schemas/types.yaml#/definitions/uint32
> + minimum: 0
> + maximum: 3
> + default: 0
> +
> required:
> - reg
> - reg-names
> @@ -48,6 +60,7 @@ examples:
> linux,pci-domain = <0>;
> vendor-id = <0x17cd>;
> device-id = <0x0200>;
> + detect-quiet-min-delay = <0>;
>
> reg = <0x0 0xfb000000 0x0 0x01000000>,
> <0x0 0x41000000 0x0 0x00001000>;
> --
> 2.15.0
>

2021-03-09 17:21:38

by Rob Herring

[permalink] [raw]
Subject: Re: [PATCH 1/2] dt-bindings:pci: Set LTSSM Detect.Quiet state delay.

On Tue, 09 Mar 2021 08:31:41 +0100, Nadeem Athani wrote:
> The parameter detect-quiet-min-delay can be used to program the minimum
> time that LTSSM waits on entering Detect.Quiet state.
> 00 : 0us minimum wait time in Detect.Quiet state.
> 01 : 100us minimum wait time in Detect.Quiet state.
> 10 : 1000us minimum wait time in Detect.Quiet state.
> 11 : 2000us minimum wait time in Detect.Quiet state.
>
> Signed-off-by: Nadeem Athani <[email protected]>
> ---
> .../devicetree/bindings/pci/cdns,cdns-pcie-host.yaml | 13 +++++++++++++
> 1 file changed, 13 insertions(+)
>

My bot found errors running 'make dt_binding_check' on your patch:

yamllint warnings/errors:
./Documentation/devicetree/bindings/pci/cdns,cdns-pcie-host.yaml:33:10: [error] syntax error: mapping values are not allowed here (syntax)

dtschema/dtc warnings/errors:
./Documentation/devicetree/bindings/pci/cdns,cdns-pcie-host.yaml: mapping values are not allowed in this context
in "<unicode string>", line 33, column 10
/builds/robherring/linux-dt-review/Documentation/devicetree/bindings/pci/cdns,cdns-pcie-host.yaml: ignoring, error parsing file
warning: no schema found in file: ./Documentation/devicetree/bindings/pci/cdns,cdns-pcie-host.yaml
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 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 891, in _ruamel_yaml.CParser._compose_mapping_node
File "_ruamel_yaml.pyx", line 904, in _ruamel_yaml.CParser._parse_next_event
ruamel.yaml.scanner.ScannerError: mapping values are not allowed in this context
in "<unicode string>", line 33, column 10
make[1]: *** [Documentation/devicetree/bindings/Makefile:20: Documentation/devicetree/bindings/pci/cdns,cdns-pcie-host.example.dts] Error 1
make[1]: *** Deleting file 'Documentation/devicetree/bindings/pci/cdns,cdns-pcie-host.example.dts'
make: *** [Makefile:1380: dt_binding_check] Error 2

See https://patchwork.ozlabs.org/patch/1449563

This check can fail if there are any dependencies. The base for a patch
series is generally the most recent rc1.

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.

2021-03-14 19:12:04

by Athani Nadeem Ladkhan

[permalink] [raw]
Subject: RE: [PATCH 1/2] dt-bindings:pci: Set LTSSM Detect.Quiet state delay.

Hi Rob,

> -----Original Message-----
> From: Rob Herring <[email protected]>
> Sent: Tuesday, March 9, 2021 10:17 PM
> To: Athani Nadeem Ladkhan <[email protected]>
> Cc: Tom Joseph <[email protected]>; Bjorn Helgaas
> <[email protected]>; PCI <[email protected]>;
> [email protected]; [email protected]; Lorenzo Pieralisi
> <[email protected]>; Kishon Vijay Abraham I <[email protected]>;
> Milind Parab <[email protected]>; Swapnil Kashinath Jakhade
> <[email protected]>; Parshuram Raju Thombare
> <[email protected]>
> Subject: Re: [PATCH 1/2] dt-bindings:pci: Set LTSSM Detect.Quiet state delay.
>
> EXTERNAL MAIL
>
>
> On Tue, Mar 9, 2021 at 12:31 AM Nadeem Athani <[email protected]>
> wrote:
> >
> > The parameter detect-quiet-min-delay can be used to program the
> > minimum time that LTSSM waits on entering Detect.Quiet state.
> > 00 : 0us minimum wait time in Detect.Quiet state.
> > 01 : 100us minimum wait time in Detect.Quiet state.
> > 10 : 1000us minimum wait time in Detect.Quiet state.
> > 11 : 2000us minimum wait time in Detect.Quiet state.
>
> What determines this setting? Is it per board or SoC? Is this a standard PCI
> timing thing? Why does this need to be tuned per platform?
The pcie spec. says this delay to be between 0 to 1ms.
The default 0 value works in most cases.
However it has been found that some SOC may require this delay to be greater than 0.
This has been proved by an internal simulation experiments.
Hence providing this feature in device tree for required SOC's.
>
> > Signed-off-by: Nadeem Athani <[email protected]>
> > ---
> > .../devicetree/bindings/pci/cdns,cdns-pcie-host.yaml | 13
> +++++++++++++
> > 1 file changed, 13 insertions(+)
> >
> > diff --git
> > a/Documentation/devicetree/bindings/pci/cdns,cdns-pcie-host.yaml
> > b/Documentation/devicetree/bindings/pci/cdns,cdns-pcie-host.yaml
> > index 293b8ec318bc..a1d56e0be419 100644
> > --- a/Documentation/devicetree/bindings/pci/cdns,cdns-pcie-host.yaml
> > +++ b/Documentation/devicetree/bindings/pci/cdns,cdns-pcie-host.yaml
> > @@ -27,6 +27,18 @@ properties:
> >
> > msi-parent: true
> >
> > + detect-quiet-min-delay:
> > + description:
> > + LTSSM Detect.Quiet state minimum delay.
> > + 00 : 0us minimum wait time
> > + 01 : 100us minimum wait time
> > + 10 : 1000us minimum wait time
> > + 11 : 2000us minimum wait time
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + minimum: 0
> > + maximum: 3
> > + default: 0
> > +
> > required:
> > - reg
> > - reg-names
> > @@ -48,6 +60,7 @@ examples:
> > linux,pci-domain = <0>;
> > vendor-id = <0x17cd>;
> > device-id = <0x0200>;
> > + detect-quiet-min-delay = <0>;
> >
> > reg = <0x0 0xfb000000 0x0 0x01000000>,
> > <0x0 0x41000000 0x0 0x00001000>;
> > --
> > 2.15.0
> >