u-boot/drivers/core
Simon Glass cdd73e7215 dm: core: Deal with a wrinkle with linker lists
When every member of a linker list is aligned by the compiler, we can no
longer rely on the sizeof of the struct to determine the number of
entries.

For example, if the struct size is 0x90 but every entry is aligned to 0xa0
by the compiler, the linker list entries takes more space in memory and
the calculation of the number of entries is incorrect. For example, we may
see 0x12 entries when there are only 0x11.

This is a real problem. There may be a general solution, although I cannot
currently think of one. So far it only bites with OF_PLATDATA_RT which
creates a pointer to each entry of the 'struct udevice' linker_list. This
does not happen without that option, so it only affects SPL.

Work around it by manually calculating the aligned size of struct udevice,
then using that for the n_ent calculation.

Note: the alignment fix to linker list was here:

   0b2fa98aa5 linker_lists: Fix alignment issue

Signed-off-by: Simon Glass <sjg@chromium.org>
2022-04-18 17:53:56 -04:00
..
acpi.c acpi: Tidy up the item list 2022-01-25 11:44:36 -07:00
device-remove.c event: Add events for device probe/remove 2022-03-10 08:28:36 -05:00
device.c dm: core: Deal with a wrinkle with linker lists 2022-04-18 17:53:56 -04:00
devres.c dm: core: Access device flags through functions 2021-01-05 12:24:41 -07:00
dump.c dm: core: Check uclass_get() return value when dumping 2021-07-15 18:42:05 -04:00
fdtaddr.c dm: core: Add a new API devfdt_get_addr_index_ptr() 2021-10-20 10:59:09 +08:00
Kconfig event: Add events for device probe/remove 2022-03-10 08:28:36 -05:00
lists.c doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
Makefile dm: core: Allow devres to be disabled in SPL 2022-04-18 17:53:56 -04:00
of_access.c doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
of_addr.c drivers/core/of_addr.c: Fix spelling of "shouldn't". 2022-01-13 07:57:50 -05:00
of_extra.c net: introduce a helper to determine whether to use in-band autoneg 2021-11-23 09:57:55 +02:00
ofnode.c treewide: Rename PHY_INTERFACE_MODE_NONE to PHY_INTERFACE_MODE_NA 2022-04-10 08:44:13 +03:00
read.c net: introduce helpers to get PHY interface mode from a device/ofnode 2022-04-10 08:44:12 +03:00
read_extra.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
regmap.c reset: Avoid a warning in devm_regmap_init() 2021-07-15 18:42:05 -04:00
root.c dm: core: Deal with a wrinkle with linker lists 2022-04-18 17:53:56 -04:00
simple-bus.c treewide: Use OF_REAL instead of !OF_PLATDATA 2021-09-25 09:46:15 -06:00
simple-pm-bus.c simple-pm-bus: Use -ENOSYS for checking missing system call 2021-04-06 16:33:19 +12:00
syscon-uclass.c treewide: Use OF_REAL instead of !OF_PLATDATA 2021-09-25 09:46:15 -06:00
tag.c dm: add tag support 2022-04-09 21:06:31 +02:00
uclass.c doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
util.c treewide: Use OF_REAL instead of !OF_PLATDATA 2021-09-25 09:46:15 -06:00