On 09.01.26 12:45, Jan Kiszka wrote:
> On 09.01.26 12:34, Simon Glass wrote:
>> Hi Mark,
>>
>> On Wed, 7 Jan 2026 at 12:38, Mark Kettenis <[email protected]> wrote:
>>>
>>>> From: Simon Glass <[email protected]>
>>>> Date: Wed, 7 Jan 2026 12:02:27 -0700
>>>>
>>>> On Tue, 6 Jan 2026 at 19:42, Peter Robinson <[email protected]> wrote:
>>>>>
>>>>> On Wed, 7 Jan 2026 at 00:33, Simon Glass <[email protected]> wrote:
>>>>>>
>>>>>> From: Simon Glass <[email protected]>
>>>>>>
>>>>>> This work-around dates from 2019 and grub 2.04 which is quite old. New
>>>>>> builds of grub don't have the problem and old boards presumably use an
>>>>>> older U-Boot, so don't need this.
>>>>>>
>>>>>> Drop it.
>>>>>>
>>>>>> Signed-off-by: Simon Glass <[email protected]>
>>>>>> Signed-off-by: Simon Glass <[email protected]>
>>>>>> ---
>>>>>>
>>>>>>  configs/mt7623n_bpir2_defconfig |  1 -
>>>>>>  lib/efi_loader/Kconfig          | 10 ----------
>>>>>>  lib/efi_loader/efi_boottime.c   | 26 --------------------------
>>>>>>  3 files changed, 37 deletions(-)
>>>>>>
>>>>>> diff --git a/configs/mt7623n_bpir2_defconfig 
>>>>>> b/configs/mt7623n_bpir2_defconfig
>>>>>> index 404380558f2..d75168a72ed 100644
>>>>>> --- a/configs/mt7623n_bpir2_defconfig
>>>>>> +++ b/configs/mt7623n_bpir2_defconfig
>>>>>> @@ -13,7 +13,6 @@ CONFIG_DEFAULT_DEVICE_TREE="mt7623n-bananapi-bpi-r2"
>>>>>>  CONFIG_TARGET_MT7623=y
>>>>>>  CONFIG_SYS_BOOTM_LEN=0x4000000
>>>>>>  CONFIG_SYS_LOAD_ADDR=0x84000000
>>>>>> -# CONFIG_EFI_GRUB_ARM32_WORKAROUND is not set
>>>>>>  CONFIG_FIT=y
>>>>>>  CONFIG_FIT_VERBOSE=y
>>>>>>  CONFIG_DISTRO_DEFAULTS=y
>>>>>> diff --git a/lib/efi_loader/Kconfig b/lib/efi_loader/Kconfig
>>>>>> index 13e44be1d06..5585c841c27 100644
>>>>>> --- a/lib/efi_loader/Kconfig
>>>>>> +++ b/lib/efi_loader/Kconfig
>>>>>> @@ -505,16 +505,6 @@ config EFI_LOADER_BOUNCE_BUFFER
>>>>>>           hardware we can create a bounce buffer so that payloads don't 
>>>>>> have to
>>>>>>           worry about platform details.
>>>>>>
>>>>>> -config EFI_GRUB_ARM32_WORKAROUND
>>>>>> -       bool "Workaround for GRUB on 32bit ARM"
>>>>>> -       default n if ARCH_BCM283X || ARCH_SUNXI || ARCH_QEMU
>>>>>> -       default y
>>>>>> -       depends on ARM && !ARM64
>>>>>> -       help
>>>>>> -         GRUB prior to version 2.04 requires U-Boot to disable caches. 
>>>>>> This
>>>>>> -         workaround currently is also needed on systems with caches that
>>>>>> -         cannot be managed via CP15.
>>>>>
>>>>> This also states that it's needed for systems that can't be managed by
>>>>> CP15, what systems are they, how are those platforms addressed?
>>>>
>>>> I'm guessing that some systems have level2 caches with their own
>>>> software interface. I certainly have seen this with Tegra2/3, for
>>>> example.
>>>
>>> This is already being discussed in another thread on the mailing list
>>> started by Jan Kiszka:
>>>
>>>   https://lists.denx.de/pipermail/u-boot/2026-January/606817.html
>>>
>>> My suggestion would be to drop this patch from your set and let that
>>> thread run its course.
>>
>> Yes I did see that and I was pleased to see that someone else was
>> interested in this topic.
>>
>> Still, that thread does not actually include a patch. So let's see how
>> it pans out.
>>
> 
> I'm played with turning off the workaround on a socfpga target, and that
> apparently causes troubles:
> https://lore.kernel.org/cip-dev/[email protected]/
> 
> I'm inclined now to keep cache disabling by default, only enable caches
> on known-good boards. If someone has a hint how to reliable identify
> targets that have architected CR15 cache control, I would use that as
> input. Otherwise, we need to maintain a positive list in Kconfig.
> 
> Along that, the control may need renaming because the original reason -
> broken bootloaders - is really history.
> 

 * TODO:
 * According to the UEFI spec caches that can be managed via CP15
 * operations should be enabled. Caches requiring platform information
 * to manage should be disabled. This should not happen in
 * ExitBootServices() but before invoking any UEFI binary is invoked.

So, that last sentence points out another issue for targets with
non-architected caches: The current logic seems to disable them too
late, right? Should the cache disabling move to do_bootefi_exec?

Jan

-- 
Siemens AG, Foundational Technologies
Linux Expert Center

Reply via email to