Files
u-boot/include
Michal Simek 94c5c0835b efi_loader: avoid superfluous variable store writes on unchanged data
Every SetVariable() call triggers efi_var_mem_ins() followed by
efi_var_to_storage(), even when the variable value is not actually
changing. This is unfriendly to flash-backed stores that suffer
wear from unnecessary erase/write cycles.

Add a change-detection path to efi_var_mem_ins(): when size2 == 0
(i.e. not an append) and the caller passes a non-NULL changep flag,
look up the existing variable and compare attributes, length, time
and data byte-by-byte. If everything matches, set *changep = false
and return EFI_SUCCESS without touching the variable buffer.

Both efi_set_variable_int() and efi_set_variable_runtime() now
check the flag and skip efi_var_mem_del() / efi_var_to_storage()
when nothing changed.

Introduce efi_memcmp_runtime() - a runtime-safe byte-by-byte memory
comparison helper, following the same pattern as the existing
efi_memcpy_runtime(). The standard memcmp() is not available after
ExitBootServices() and calling it from Linux will crash.

Tested-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Signed-off-by: Michal Simek <michal.simek@amd.com>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
2026-03-14 08:14:20 +01:00
..
2025-11-06 08:30:33 -06:00
2026-03-13 02:56:52 +08:00
2026-01-14 16:25:09 +01:00
2025-11-21 19:25:56 +01:00
2025-12-04 09:38:58 -06:00
2024-10-17 03:12:47 +02:00
2025-08-25 16:20:48 +02:00
2025-06-02 17:26:15 -06:00
2024-07-29 15:01:04 -06:00
2025-07-23 17:37:14 -06:00
2024-08-26 14:05:38 -06:00
2025-10-26 09:03:32 -06:00
2025-06-12 16:14:33 -06:00
2024-07-29 15:01:04 -06:00
2025-06-02 17:26:15 -06:00
2025-05-29 08:29:16 -06:00
2025-06-02 17:26:15 -06:00
2025-12-30 11:22:57 -06:00
2025-08-06 08:41:30 +02:00
2025-09-26 11:55:13 -06:00
2025-11-07 15:34:04 -06:00
2025-06-02 17:26:15 -06:00
2024-09-24 13:41:20 -06:00
2025-08-25 16:20:48 +02:00
2025-05-13 11:30:09 -06:00
2024-07-29 15:01:04 -06:00
2025-06-27 11:48:20 -06:00
2024-07-29 15:01:04 -06:00
2026-02-02 14:24:40 -06:00
2024-07-29 15:01:04 -06:00
2025-08-06 08:41:30 +02:00
2025-06-02 17:26:16 -06:00
2025-03-10 07:41:16 +01:00
2025-04-03 11:41:54 -06:00
2025-04-03 16:54:49 -06:00
2024-07-29 15:01:04 -06:00
2024-07-29 15:01:04 -06:00
2024-10-24 11:21:48 -06:00
2024-07-29 15:01:04 -06:00
2024-07-29 15:01:04 -06:00
2025-07-08 13:11:12 -06:00
2025-05-29 08:30:25 -06:00
2024-11-25 23:07:37 -03:00
2024-09-30 17:48:12 -06:00
2025-05-05 14:16:50 -06:00
2024-09-12 17:35:37 +02:00
2025-07-08 13:11:12 -06:00
2025-05-29 18:35:49 -06:00
2024-07-29 15:01:04 -06:00
2024-07-29 15:01:04 -06:00
2025-02-11 20:10:58 -06:00
2025-01-07 15:45:51 +02:00
2025-12-04 09:38:58 -06:00
2025-01-01 10:40:33 -06:00
2025-07-11 10:43:29 -06:00
2024-07-29 15:01:04 -06:00
2024-07-29 15:01:04 -06:00
2025-02-03 16:01:36 -06:00
2024-07-29 15:01:04 -06:00