u-boot/test
Rasmus Villemoes 50128aeb0f cyclic: get rid of cyclic_init()
Currently, we must call cyclic_init() at some point before
cyclic_register() becomes possible. That turns out to be somewhat
awkward, especially with SPL, and has resulted in a watchdog callback
not being registered, thus causing the board to prematurely reset.

We already rely on gd->cyclic reliably being set to NULL by the asm
code that clears all of gd. Now that the cyclic list is a hlist, and
thus an empty list is represented by a NULL head pointer, and struct
cyclic_drv has no other members, we can just as well drop a level of
indirection and put the hlist_head directly in struct
global_data. This doesn't increase the size of struct global_data,
gets rid of an early malloc(), and generates slightly smaller code.

But primarily, this avoids having to call cyclic_init() early; the cyclic
infrastructure is simply ready to register callbacks as soon as we
enter C code.

We can still end up with schedule() being called from asm very early,
so we still need to check that gd itself has been properly initialized
[*], but once it has, gd->cyclic_list is perfectly fine to access, and
will just be an empty list.

As for cyclic_uninit(), it was never really the opposite of
cyclic_init() since it didn't free the struct cyclic_drv nor set
gd->cyclic to NULL. Rename it to cyclic_unregister_all() and use that
in test/, and also insert a call at the end of the board_init_f
sequence so that gd->cyclic_list is a fresh empty list before we enter
board_init_r().

A small piece of ugliness is that I had to add a cast in
cyclic_get_list() to silence a "discards 'volatile' qualifier"
warning, but that is completely equivalent to the existing handling of
the uclass_root_s list_head member.

[*] I'm not really sure where we guarantee that the register used for
gd contains 0 until it gets explicitly initialized, but that must be
the case, otherwise testing gd for being NULL would not make much sense.

Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
Reviewed-by: Stefan Roese <sr@denx.de>
Tested-by: Stefan Roese <sr@denx.de>
Tested-by: Tim Harvey <tharvey@gateworks.com> # imx8mm-venice-*
2022-11-02 08:42:03 +01:00
..
boot vbe: Use a manual test 2022-10-31 11:04:00 -04:00
cmd video: Add commands to list and change fonts 2022-10-30 20:01:40 +01:00
common cyclic: Use schedule() instead of WATCHDOG_RESET() 2022-09-18 10:26:33 +02:00
dm test: dm: Add test cases for FWU Metadata uclass 2022-10-31 14:47:33 -04:00
env sandbox: add test of CONFIG_ENV_IMPORT_FDT 2021-05-04 12:52:30 -04:00
fs Consistently use nproc for counting the CPUs 2020-01-30 13:30:35 -05:00
fuzz dm: treewide: Use uclass_first_device_err when accessing one device 2022-10-17 21:17:12 -06:00
image treewide: Drop image_header_t typedef 2022-09-29 16:07:57 -04:00
lib display_options: print_size: Fix order overflow 2022-09-23 15:13:18 -04:00
log test: fix log tests 2022-07-26 02:30:56 -06:00
optee test: Add a macros for finding tests in linker_lists 2021-03-12 09:57:30 -05:00
overlay test: Add a macros for finding tests in linker_lists 2021-03-12 09:57:30 -05:00
py test: dm: Add test cases for FWU Metadata uclass 2022-10-31 14:47:33 -04:00
stdint Remove <inttypes.h> includes and PRI* usages in printf() entirely 2018-09-10 20:48:17 -04:00
trace SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
bloblist.c bloblist: Add functions to obtain base address and size 2022-01-13 09:13:41 -07:00
bootm.c test: Fix bootm_test_subst_var() running independently 2022-09-12 18:06:36 -04:00
cmd_ut.c test: Support tests which can only be run manually 2022-10-31 11:02:44 -04:00
command_ut.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
common.sh Consistently use nproc for counting the CPUs 2020-01-30 13:30:35 -05:00
compression.c doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
Kconfig test: Add some tests for kconfig.h 2022-08-10 13:38:30 -04:00
Makefile test: Add some tests for kconfig.h 2022-08-10 13:38:30 -04:00
nokia_rx51_test.sh Nokia RX-51: Add booting from UBI into test script 2022-09-15 16:11:46 -04:00
print_ut.c lib: Move string tests to the string module 2022-04-25 10:00:03 -04:00
run test: Fix typo in test name 2022-10-21 21:37:47 -04:00
str_ut.c lib: Add a way to find the postiion of a trailing number 2022-04-25 10:00:03 -04:00
test-main.c cyclic: get rid of cyclic_init() 2022-11-02 08:42:03 +01:00
time_ut.c common: Drop linux/delay.h from common header 2020-05-18 21:19:23 -04:00
unicode_ut.c test: unit test for u16_strlcat() 2022-05-03 21:39:22 +02:00
ut.c test: Add a way to skip console checking until a string matches 2021-09-16 14:39:40 -04:00