mbox series

[v2,00/13] of: overlay/unittest: Miscellaneous fixes and improvements

Message ID cover.1690533838.git.geert+renesas@glider.be
Headers show
Series of: overlay/unittest: Miscellaneous fixes and improvements | expand

Message

Geert Uytterhoeven July 28, 2023, 8:50 a.m. UTC
Hi all,

This patch series contains miscellaneous fixes and improvements for
dynamic DT overlays and the related unit tests.

The first two patches are fixes for a lock-up and a crash.
The remaining patches are smaller fixes, enhancements and cleanups for
the overlay tests, including one new test.

I ran into the crash when accidentally loading the wrong overlay (using
the out-of-tree DT overlay configfs[1]), and removing it afterwards.
As this case was not yet covered by the unittests, I added a test.
I enhanced the tests to clean up partial state after a failed
overlay apply attempt, which triggered the lock-up.

Changes compared to v1[2]:
  - Correct fixes tag and update description.
  - Merge differently, as requested by Rob.

Thanks for your comments!

[1] https://elinux.org/R-Car/DT-Overlays
[2] https://lore.kernel.org/r/cover.1689776064.git.geert+renesas@glider.be

Geert Uytterhoeven (13):
  of: dynamic: Do not use "%pOF" while holding devtree_lock
  of: overlay: Call of_changeset_init() early
  of: unittest: Fix overlay type in apply/revert check
  of: unittest: Restore indentation in overlay_bad_add_dup_prop test
  of: unittest: Improve messages and comments in apply/revert checks
  of: unittest: Merge of_unittest_apply{,_revert}_overlay_check()
  of: unittest: Cleanup partially-applied overlays
  of: unittest: Add separators to of_unittest_overlay_high_level()
  of: overlay: unittest: Add test for unresolved symbol
  of: unittest-data: Convert remaining overlay DTS files to sugar syntax
  of: unittest-data: Fix whitespace - blank lines
  of: unittest-data: Fix whitespace - indentation
  of: unittest-data: Fix whitespace - angular brackets

 drivers/of/dynamic.c                          |  12 +-
 drivers/of/overlay.c                          |   3 +-
 drivers/of/unittest-data/Makefile             |   3 +-
 drivers/of/unittest-data/overlay.dtso         |  32 ++-
 drivers/of/unittest-data/overlay_0.dtso       |  11 +-
 drivers/of/unittest-data/overlay_1.dtso       |  11 +-
 drivers/of/unittest-data/overlay_11.dtso      |   1 -
 drivers/of/unittest-data/overlay_12.dtso      |  11 +-
 drivers/of/unittest-data/overlay_13.dtso      |  11 +-
 drivers/of/unittest-data/overlay_15.dtso      |   1 +
 drivers/of/unittest-data/overlay_4.dtso       |   1 -
 .../overlay_bad_add_dup_node.dtso             |   9 +-
 .../overlay_bad_add_dup_prop.dtso             |   9 +-
 .../of/unittest-data/overlay_bad_phandle.dtso |   5 +-
 .../of/unittest-data/overlay_bad_symbol.dtso  |   5 +-
 .../unittest-data/overlay_bad_unresolved.dtso |   7 +
 drivers/of/unittest-data/overlay_common.dtsi  |  36 ++-
 drivers/of/unittest-data/overlay_gpio_01.dtso |   1 +
 .../of/unittest-data/overlay_gpio_02a.dtso    |   1 +
 .../of/unittest-data/overlay_gpio_02b.dtso    |   1 +
 drivers/of/unittest-data/overlay_gpio_03.dtso |   1 +
 .../of/unittest-data/overlay_gpio_04a.dtso    |   1 +
 .../of/unittest-data/overlay_gpio_04b.dtso    |   1 +
 .../of/unittest-data/testcases_common.dtsi    |   1 +
 .../of/unittest-data/tests-interrupts.dtsi    |   1 +
 drivers/of/unittest-data/tests-overlay.dtsi   |   1 -
 drivers/of/unittest-data/tests-phandle.dtsi   |   2 +
 drivers/of/unittest.c                         | 218 +++++++++++-------
 28 files changed, 224 insertions(+), 173 deletions(-)
 create mode 100644 drivers/of/unittest-data/overlay_bad_unresolved.dtso

Comments

Rob Herring July 31, 2023, 4:14 p.m. UTC | #1
On Fri, Jul 28, 2023 at 10:50:26AM +0200, Geert Uytterhoeven wrote:
> 	Hi all,
> 
> This patch series contains miscellaneous fixes and improvements for
> dynamic DT overlays and the related unit tests.
> 
> The first two patches are fixes for a lock-up and a crash.
> The remaining patches are smaller fixes, enhancements and cleanups for
> the overlay tests, including one new test.
> 
> I ran into the crash when accidentally loading the wrong overlay (using
> the out-of-tree DT overlay configfs[1]), and removing it afterwards.
> As this case was not yet covered by the unittests, I added a test.
> I enhanced the tests to clean up partial state after a failed
> overlay apply attempt, which triggered the lock-up.
> 
> Changes compared to v1[2]:
>   - Correct fixes tag and update description.
>   - Merge differently, as requested by Rob.
> 
> Thanks for your comments!
> 
> [1] https://elinux.org/R-Car/DT-Overlays
> [2] https://lore.kernel.org/r/cover.1689776064.git.geert+renesas@glider.be
> 
> Geert Uytterhoeven (13):
>   of: dynamic: Do not use "%pOF" while holding devtree_lock
>   of: overlay: Call of_changeset_init() early
>   of: unittest: Fix overlay type in apply/revert check
>   of: unittest: Restore indentation in overlay_bad_add_dup_prop test
>   of: unittest: Improve messages and comments in apply/revert checks
>   of: unittest: Merge of_unittest_apply{,_revert}_overlay_check()
>   of: unittest: Cleanup partially-applied overlays
>   of: unittest: Add separators to of_unittest_overlay_high_level()
>   of: overlay: unittest: Add test for unresolved symbol
>   of: unittest-data: Convert remaining overlay DTS files to sugar syntax
>   of: unittest-data: Fix whitespace - blank lines
>   of: unittest-data: Fix whitespace - indentation
>   of: unittest-data: Fix whitespace - angular brackets

I've applied patches 2-13. For patch 1, I sent an alternative[1].

Rob

[1] https://lore.kernel.org/all/20230728231950.1619073-1-robh@kernel.org/
Rob Herring July 31, 2023, 4:35 p.m. UTC | #2
On Mon, Jul 31, 2023 at 10:14:25AM -0600, Rob Herring wrote:
> On Fri, Jul 28, 2023 at 10:50:26AM +0200, Geert Uytterhoeven wrote:
> > 	Hi all,
> > 
> > This patch series contains miscellaneous fixes and improvements for
> > dynamic DT overlays and the related unit tests.
> > 
> > The first two patches are fixes for a lock-up and a crash.
> > The remaining patches are smaller fixes, enhancements and cleanups for
> > the overlay tests, including one new test.
> > 
> > I ran into the crash when accidentally loading the wrong overlay (using
> > the out-of-tree DT overlay configfs[1]), and removing it afterwards.
> > As this case was not yet covered by the unittests, I added a test.
> > I enhanced the tests to clean up partial state after a failed
> > overlay apply attempt, which triggered the lock-up.
> > 
> > Changes compared to v1[2]:
> >   - Correct fixes tag and update description.
> >   - Merge differently, as requested by Rob.
> > 
> > Thanks for your comments!
> > 
> > [1] https://elinux.org/R-Car/DT-Overlays
> > [2] https://lore.kernel.org/r/cover.1689776064.git.geert+renesas@glider.be
> > 
> > Geert Uytterhoeven (13):
> >   of: dynamic: Do not use "%pOF" while holding devtree_lock
> >   of: overlay: Call of_changeset_init() early
> >   of: unittest: Fix overlay type in apply/revert check
> >   of: unittest: Restore indentation in overlay_bad_add_dup_prop test
> >   of: unittest: Improve messages and comments in apply/revert checks
> >   of: unittest: Merge of_unittest_apply{,_revert}_overlay_check()
> >   of: unittest: Cleanup partially-applied overlays
> >   of: unittest: Add separators to of_unittest_overlay_high_level()
> >   of: overlay: unittest: Add test for unresolved symbol
> >   of: unittest-data: Convert remaining overlay DTS files to sugar syntax
> >   of: unittest-data: Fix whitespace - blank lines
> >   of: unittest-data: Fix whitespace - indentation
> >   of: unittest-data: Fix whitespace - angular brackets
> 
> I've applied patches 2-13. For patch 1, I sent an alternative[1].

I guess there's a dependency on patch 1 because I hang here:

[    1.341292] OF: overlay: ERROR: multiple fragments add and/or delete node /testcase-data-2/substation@100/motor-1/controller
[    1.343222] OF: overlay: ERROR: multiple fragments add, update, and/or delete property /testcase-data-2/substation@100/motor-1/controller/name

Rob
Geert Uytterhoeven Aug. 14, 2023, 10:08 a.m. UTC | #3
Hi Rob,

On Mon, Jul 31, 2023 at 6:35 PM Rob Herring <robh@kernel.org> wrote:
> On Mon, Jul 31, 2023 at 10:14:25AM -0600, Rob Herring wrote:
> > On Fri, Jul 28, 2023 at 10:50:26AM +0200, Geert Uytterhoeven wrote:
> > > This patch series contains miscellaneous fixes and improvements for
> > > dynamic DT overlays and the related unit tests.
> > >
> > > The first two patches are fixes for a lock-up and a crash.
> > > The remaining patches are smaller fixes, enhancements and cleanups for
> > > the overlay tests, including one new test.
> > >
> > > I ran into the crash when accidentally loading the wrong overlay (using
> > > the out-of-tree DT overlay configfs[1]), and removing it afterwards.
> > > As this case was not yet covered by the unittests, I added a test.
> > > I enhanced the tests to clean up partial state after a failed
> > > overlay apply attempt, which triggered the lock-up.
> > >
> > > Changes compared to v1[2]:
> > >   - Correct fixes tag and update description.
> > >   - Merge differently, as requested by Rob.
> > >
> > > Thanks for your comments!
> > >
> > > [1] https://elinux.org/R-Car/DT-Overlays
> > > [2] https://lore.kernel.org/r/cover.1689776064.git.geert+renesas@glider.be
> > >
> > > Geert Uytterhoeven (13):
> > >   of: dynamic: Do not use "%pOF" while holding devtree_lock
> > >   of: overlay: Call of_changeset_init() early
> > >   of: unittest: Fix overlay type in apply/revert check
> > >   of: unittest: Restore indentation in overlay_bad_add_dup_prop test
> > >   of: unittest: Improve messages and comments in apply/revert checks
> > >   of: unittest: Merge of_unittest_apply{,_revert}_overlay_check()
> > >   of: unittest: Cleanup partially-applied overlays
> > >   of: unittest: Add separators to of_unittest_overlay_high_level()
> > >   of: overlay: unittest: Add test for unresolved symbol
> > >   of: unittest-data: Convert remaining overlay DTS files to sugar syntax
> > >   of: unittest-data: Fix whitespace - blank lines
> > >   of: unittest-data: Fix whitespace - indentation
> > >   of: unittest-data: Fix whitespace - angular brackets
> >
> > I've applied patches 2-13. For patch 1, I sent an alternative[1].
>
> I guess there's a dependency on patch 1 because I hang here:
>
> [    1.341292] OF: overlay: ERROR: multiple fragments add and/or delete node /testcase-data-2/substation@100/motor-1/controller
> [    1.343222] OF: overlay: ERROR: multiple fragments add, update, and/or delete property /testcase-data-2/substation@100/motor-1/controller/name

Yes there is: during removal of a partially-applied overlay, some
errors are printed using %pOF, which must not be done while holding
devtree_lock.

Gr{oetje,eeting}s,

                        Geert