Can you run lsefimmap and lspaging on the system in question? lspaging
patch is in neighboring thread

Regards
Vladimir 'phcoder' Serbinenko

Le ven. 11 avr. 2025, 14:01, Vladimir 'phcoder' Serbinenko <
phco...@gmail.com> a écrit :

> How early is this bug? Do you see "Welcome to GRUB"? Does recompiling with
> fPIC help? Do you have memory map dump and paging table dump?
>
> Regards
> Vladimir 'phcoder' Serbinenko
>
> Le ven. 11 avr. 2025, 13:39, Tobias Heider <tobias.hei...@canonical.com>
> a écrit :
>
>> On arm64 we can't restrict memory usage below 0xffffffff as we do
>> on x86 because there is no guarantee memory in that range exists
>> at all (an example is Apple Silicon).
>> Instead, try to allocate in the lower 4GB range first and fall
>> back to the entire available address space if that did not work.
>>
>> This fixes a bug on Snapdragon X Elite devices such as the Lenovo
>> Thinkpad T14s which crashes when accessing memory above 0xffffffff.
>>
>> Signed-off-by: Tobias Heider <tobias.hei...@canonical.com>
>> ---
>>
>>  For previous discussion see
>>  https://lists.gnu.org/archive/html/grub-devel/2025-04/msg00072.html
>>
>>  In contrast to the previous patch this one affects all archs.
>>  It seems generally safe not to limit it to arm64 with the fallback
>>  to the old behaviour but I'd be interested to hear if there are any
>>  concerns.
>>  Tested on a Snapdragon X Elite and Macbook M2 Air.
>>
>>  grub-core/kern/efi/mm.c | 16 +++++++++++++---
>>  1 file changed, 13 insertions(+), 3 deletions(-)
>>
>> diff --git a/grub-core/kern/efi/mm.c b/grub-core/kern/efi/mm.c
>> index df238b165..029d975dd 100644
>> --- a/grub-core/kern/efi/mm.c
>> +++ b/grub-core/kern/efi/mm.c
>> @@ -168,9 +168,19 @@ grub_efi_allocate_pages_real
>> (grub_efi_physical_address_t address,
>>  void *
>>  grub_efi_allocate_any_pages (grub_efi_uintn_t pages)
>>  {
>> -  return grub_efi_allocate_pages_real (GRUB_EFI_MAX_USABLE_ADDRESS,
>> -                                      pages,
>> GRUB_EFI_ALLOCATE_MAX_ADDRESS,
>> -                                      GRUB_EFI_LOADER_DATA);
>> +  void *ret;
>> +
>> +  ret = grub_efi_allocate_pages_real (0xffffffff,
>> +                                     pages,
>> GRUB_EFI_ALLOCATE_MAX_ADDRESS,
>> +                                     GRUB_EFI_LOADER_DATA);
>> +  if (ret == NULL)
>> +    {
>> +      grub_errno = GRUB_ERR_NONE;
>> +      ret = grub_efi_allocate_pages_real (GRUB_EFI_MAX_USABLE_ADDRESS,
>> +                                         pages,
>> GRUB_EFI_ALLOCATE_MAX_ADDRESS,
>> +                                         GRUB_EFI_LOADER_DATA);
>> +    }
>> +  return ret;
>>  }
>>
>>  void *
>> --
>> 2.48.1
>>
>>
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to