]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
test: Allow saving and restoring the bloblist
authorSimon Glass <sjg@chromium.org>
Mon, 28 Oct 2024 12:47:53 +0000 (13:47 +0100)
committerTom Rini <trini@konsulko.com>
Mon, 4 Nov 2024 03:27:12 +0000 (21:27 -0600)
Tests which create a new bloblist overwrite the existing one in sandbox.
Provide a flag for tests to declare this behaviour. Save and restore the
bloblist pointer so that other tests remain unaffected.

Note that when sandbox is running normally, the bloblist has been
relocated to high in memory. The existing bloblist tests create a new
bloblist low in memory, so they do not conflict.

Correct a build error on coreboot by using accessors for gd->bloblist:
Signed-off-by: Simon Glass <sjg@chromium.org>
include/asm-generic/global_data.h
include/test/test.h
test/test-main.c

index bf593d96a847d22106d23397ffb1a6a8944869cf..26277b93976b24b060b88ad3cc284fa7a7f22d3b 100644 (file)
@@ -545,8 +545,10 @@ static_assert(sizeof(struct global_data) == GD_SIZE);
 
 #if CONFIG_IS_ENABLED(BLOBLIST)
 #define gd_bloblist()          gd->bloblist
+#define gd_set_bloblist(_val)  gd->bloblist = (_val)
 #else
 #define gd_bloblist()          NULL
+#define gd_set_bloblist(_val)
 #endif
 
 #if CONFIG_IS_ENABLED(BOOTSTAGE)
index 92eec2eb6f9c1ccbc4b2450b7aa1d349946e64ce..21c0478befe02f003f95f6781497c45103355652 100644 (file)
@@ -29,6 +29,7 @@
  * @of_other: Live tree for the other FDT
  * @runs_per_test: Number of times to run each test (typically 1)
  * @force_run: true to run tests marked with the UTF_MANUAL flag
+ * @old_bloblist: stores the old gd->bloblist pointer
  * @expect_str: Temporary string used to hold expected string value
  * @actual_str: Temporary string used to hold actual string value
  */
@@ -50,6 +51,7 @@ struct unit_test_state {
        struct device_node *of_other;
        int runs_per_test;
        bool force_run;
+       void *old_bloblist;
        char expect_str[512];
        char actual_str[512];
 };
@@ -73,6 +75,7 @@ enum ut_flags {
        UTF_MANUAL      = BIT(8),
        UTF_ETH_BOOTDEV = BIT(9),       /* enable Ethernet bootdevs */
        UTF_SF_BOOTDEV  = BIT(10),      /* enable SPI flash bootdevs */
+       UFT_BLOBLIST    = BIT(11),      /* test changes gd->bloblist */
 };
 
 /**
index ca6a073a8cbea72422c53aa950b09ac81bf97b98..7a1f74a2c84c8ff401676b1cd1e7028188e714f8 100644 (file)
@@ -4,6 +4,8 @@
  * Written by Simon Glass <sjg@chromium.org>
  */
 
+#define LOG_CATEGORY   LOGC_TEST
+
 #include <blk.h>
 #include <console.h>
 #include <cyclic.h>
@@ -386,6 +388,12 @@ static int test_pre_run(struct unit_test_state *uts, struct unit_test *test)
                        return -EAGAIN;
                }
        }
+       if (test->flags & UFT_BLOBLIST) {
+               log_debug("save bloblist %p\n", gd_bloblist());
+               uts->old_bloblist = gd_bloblist();
+               gd_set_bloblist(NULL);
+       }
+
        ut_silence_console(uts);
 
        return 0;
@@ -409,6 +417,11 @@ static int test_post_run(struct unit_test_state *uts, struct unit_test *test)
        free(uts->of_other);
        uts->of_other = NULL;
 
+       if (test->flags & UFT_BLOBLIST) {
+               gd_set_bloblist(uts->old_bloblist);
+               log_debug("restore bloblist %p\n", gd_bloblist());
+       }
+
        blkcache_free();
 
        return 0;