• Stephen Boyd's avatar
    of: Add test managed wrappers for of_overlay_apply()/of_node_put() · 6774e90f
    Stephen Boyd authored
    Add test managed wrappers for of_overlay_apply() that automatically
    removes the overlay when the test is finished. This API is intended for
    use by KUnit tests that test code which relies on 'struct device_node's
    and of_*() APIs.
    
    KUnit tests will call of_overlay_apply_kunit() to load an overlay that's
    been built into the kernel image. When the test is complete, the overlay
    will be removed.
    
    This has a few benefits:
    
     1) It keeps the tests hermetic because the overlay is removed when the
        test is complete. Tests won't even be aware that an overlay was
        loaded in another test.
    
     2) The overlay code can live right next to the unit test that loads it.
        The overlay and the unit test can be compiled into one kernel module
        if desired.
    
     3) We can test different device tree configurations by loading
        different overlays. The overlays can be written for a specific test,
        and there can be many of them loaded per-test without needing to jam
        all possible combinations into one DTB.
    
     4) It also allows KUnit to test device tree dependent code on any
        architecture, not just UML. This allows KUnit tests to test
        architecture specific device tree code.
    
    There are some potential pitfalls though. Test authors need to be
    careful to not overwrite properties in the live tree. The easiest way to
    do this is to add and remove nodes with a 'kunit-' prefix, almost
    guaranteeing that the same node won't be present in the tree loaded at
    boot.
    Suggested-by: default avatarRob Herring <robh@kernel.org>
    Cc: Rob Herring <robh@kernel.org>
    Cc: Saravana Kannan <saravanak@google.com>
    Reviewed-by: default avatarRob Herring (Arm) <robh@kernel.org>
    Reviewed-by: default avatarDavid Gow <davidgow@google.com>
    Signed-off-by: default avatarStephen Boyd <sboyd@kernel.org>
    Link: https://lore.kernel.org/r/20240718210513.3801024-3-sboyd@kernel.org
    6774e90f
of.rst 287 Bytes