mbox series

[v4,0/4] Add post-init-providers binding to improve suspend/resume stability

Message ID 20240222034624.2970024-1-saravanak@google.com
Headers show
Series Add post-init-providers binding to improve suspend/resume stability | expand

Message

Saravana Kannan Feb. 22, 2024, 3:46 a.m. UTC
This patch series adds a "post-init-providers" device tree binding that
can be used to break dependency cycles in device tree and enforce a more
determinstic probe/suspend/resume order. This will also improve the
stability of global async probing and async suspend/resume and allow us
to enable them more easily. Yet another step away from playing initcall
chicken with probing and step towards fully async probing and
suspend/resume.

Patch 3 (the binding documentation) provides a lot more details and
examples.

v3->v4:
- Fixed MAINTAINERS file to go with the file rename.

v2->v3:
- Changes doc/code from "post-init-supplier" to "post-init-providers"
- Fixed some wording that was ambiguous for Conor.
- Fixed indentation, additionalProperies and white space issues in the
  yaml syntax.
- Fixed syntax errors in the example.

v1->v2:
- Addressed Documentation/commit text errors pointed out by Rob
- Reordered MAINTAINERS chunk as pointed out by Krzysztof

Saravana Kannan (4):
  driver core: Adds flags param to fwnode_link_add()
  driver core: Add FWLINK_FLAG_IGNORE to completely ignore a fwnode link
  dt-bindings: Add post-init-providers property
  of: property: fw_devlink: Add support for "post-init-providers"
    property

 .../bindings/post-init-providers.yaml         | 105 ++++++++++++++++++
 MAINTAINERS                                   |  13 ++-
 drivers/base/core.c                           |  14 ++-
 drivers/firmware/efi/sysfb_efi.c              |   2 +-
 drivers/of/property.c                         |  17 ++-
 include/linux/fwnode.h                        |   5 +-
 6 files changed, 142 insertions(+), 14 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/post-init-providers.yaml

Comments

Rob Herring Feb. 22, 2024, 5:23 a.m. UTC | #1
On Wed, 21 Feb 2024 19:46:21 -0800, Saravana Kannan wrote:
> The post-init-providers property can be used to break a dependency cycle by
> marking some provider(s) as a post device initialization provider(s). This
> allows an OS to do a better job at ordering initialization and
> suspend/resume of the devices in a dependency cycle.
> 
> Signed-off-by: Saravana Kannan <saravanak@google.com>
> ---
>  .../bindings/post-init-providers.yaml         | 105 ++++++++++++++++++
>  MAINTAINERS                                   |  13 ++-
>  2 files changed, 112 insertions(+), 6 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/post-init-providers.yaml
> 

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:

dtschema/dtc warnings/errors:
Documentation/devicetree/bindings/post-init-providers.example.dtb: /example-0/clock-controller@1000: failed to match any schema with compatible: ['vendor,soc4-gcc', 'vendor,soc1-gcc']
Documentation/devicetree/bindings/post-init-providers.example.dtb: /example-0/clock-controller@1000: failed to match any schema with compatible: ['vendor,soc4-gcc', 'vendor,soc1-gcc']
Documentation/devicetree/bindings/post-init-providers.example.dtb: /example-0/clock-controller@2000: failed to match any schema with compatible: ['vendor,soc4-dispcc', 'vendor,soc1-dispcc']
Documentation/devicetree/bindings/post-init-providers.example.dtb: /example-0/clock-controller@2000: failed to match any schema with compatible: ['vendor,soc4-dispcc', 'vendor,soc1-dispcc']

doc reference errors (make refcheckdocs):

See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20240222034624.2970024-4-saravanak@google.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.
Rafael J. Wysocki Feb. 29, 2024, 5:57 p.m. UTC | #2
On Thu, Feb 22, 2024 at 4:46 AM Saravana Kannan <saravanak@google.com> wrote:
>
> This patch series adds a "post-init-providers" device tree binding that
> can be used to break dependency cycles in device tree and enforce a more
> determinstic probe/suspend/resume order. This will also improve the
> stability of global async probing and async suspend/resume and allow us
> to enable them more easily. Yet another step away from playing initcall
> chicken with probing and step towards fully async probing and
> suspend/resume.
>
> Patch 3 (the binding documentation) provides a lot more details and
> examples.
>
> v3->v4:
> - Fixed MAINTAINERS file to go with the file rename.
>
> v2->v3:
> - Changes doc/code from "post-init-supplier" to "post-init-providers"
> - Fixed some wording that was ambiguous for Conor.
> - Fixed indentation, additionalProperies and white space issues in the
>   yaml syntax.
> - Fixed syntax errors in the example.
>
> v1->v2:
> - Addressed Documentation/commit text errors pointed out by Rob
> - Reordered MAINTAINERS chunk as pointed out by Krzysztof
>
> Saravana Kannan (4):
>   driver core: Adds flags param to fwnode_link_add()
>   driver core: Add FWLINK_FLAG_IGNORE to completely ignore a fwnode link
>   dt-bindings: Add post-init-providers property
>   of: property: fw_devlink: Add support for "post-init-providers"
>     property
>
>  .../bindings/post-init-providers.yaml         | 105 ++++++++++++++++++
>  MAINTAINERS                                   |  13 ++-
>  drivers/base/core.c                           |  14 ++-
>  drivers/firmware/efi/sysfb_efi.c              |   2 +-
>  drivers/of/property.c                         |  17 ++-
>  include/linux/fwnode.h                        |   5 +-
>  6 files changed, 142 insertions(+), 14 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/post-init-providers.yaml
>
> --

This looks reasonable to me overall, so

Acked-by: Rafael J. Wysocki <rafael@kernel.org>
Rob Herring March 4, 2024, 2:06 p.m. UTC | #3
On Wed, Feb 21, 2024 at 07:46:18PM -0800, Saravana Kannan wrote:
> This patch series adds a "post-init-providers" device tree binding that
> can be used to break dependency cycles in device tree and enforce a more
> determinstic probe/suspend/resume order. This will also improve the
> stability of global async probing and async suspend/resume and allow us
> to enable them more easily. Yet another step away from playing initcall
> chicken with probing and step towards fully async probing and
> suspend/resume.
> 
> Patch 3 (the binding documentation) provides a lot more details and
> examples.
> 
> v3->v4:
> - Fixed MAINTAINERS file to go with the file rename.
> 
> v2->v3:
> - Changes doc/code from "post-init-supplier" to "post-init-providers"
> - Fixed some wording that was ambiguous for Conor.
> - Fixed indentation, additionalProperies and white space issues in the
>   yaml syntax.
> - Fixed syntax errors in the example.
> 
> v1->v2:
> - Addressed Documentation/commit text errors pointed out by Rob
> - Reordered MAINTAINERS chunk as pointed out by Krzysztof
> 
> Saravana Kannan (4):
>   driver core: Adds flags param to fwnode_link_add()
>   driver core: Add FWLINK_FLAG_IGNORE to completely ignore a fwnode link
>   dt-bindings: Add post-init-providers property
>   of: property: fw_devlink: Add support for "post-init-providers"
>     property

Reviewed-by: Rob Herring <robh@kernel.org>

I'm assuming Greg takes this. You'll probably need to resend without the 
binding. Submit it to dtschema please.

Rob