On Sun Jul 6, 2025 at 10:43 PM +0300, Konstantin Belousov wrote:
> On Sun, Jul 06, 2025 at 07:28:21PM +0000, Ahmad Khalifa wrote:
>> The branch main has been updated by vexeduxr:
>>
>> URL: 
>> https://cgit.FreeBSD.org/src/commit/?id=85dcdb7aad85498b3f497b8752e69b8612b27cb7
>>
>> commit 85dcdb7aad85498b3f497b8752e69b8612b27cb7
>> Author:     Ahmad Khalifa <vexed...@freebsd.org>
>> AuthorDate: 2025-07-06 19:10:25 +0000
>> Commit:     Ahmad Khalifa <vexed...@freebsd.org>
>> CommitDate: 2025-07-06 19:26:07 +0000
>>
>>     amd64: allow the mapping of other regions for efirt
>>
>>     Some BIOSes access data outside of regions marked as "runtime" in their
>>     runtime EFI functions. Allow the mapping and preservation of other
>>     regions through a tunable.
>>
>>     The tunable is a bitmap specifying the regions to map. e.g bit 3 would
>>     be set to map BootServicesCode.
>>
>>     Currently allowed regions are:
>>     BootServicesCode
>>     BootServicesData
>>     RuntimeServicesCode
>>     RuntimeServicesData
>>     ACPIMemoryNVS
>>
>>     PR:             287422
>>     Reviewed by:    kib
>>     Approved by:    imp (mentor)
>>     Differential Revision:  https://reviews.freebsd.org/D51146
>> ---
>>  sys/amd64/amd64/efirt_machdep.c | 18 +++++++++++++++++-
>>  sys/amd64/amd64/machdep.c       |  8 ++++++--
>>  sys/amd64/include/efi.h         |  4 ++++
>>  3 files changed, 27 insertions(+), 3 deletions(-)
>>
>> diff --git a/sys/amd64/amd64/efirt_machdep.c 
>> b/sys/amd64/amd64/efirt_machdep.c
>> index 81a28ebe97ee..75c357f6e3df 100644
>> --- a/sys/amd64/amd64/efirt_machdep.c
>> +++ b/sys/amd64/amd64/efirt_machdep.c
>> @@ -56,6 +56,15 @@
>>  #include <vm/vm_pager.h>
>>  #include <vm/vm_radix.h>
>>
>> +/* The EFI regions we're allowed to map. */
>> +#define EFI_ALLOWED_TYPES_MASK ( \
>> +    1u << EFI_MD_TYPE_BS_CODE | 1u << EFI_MD_TYPE_BS_DATA | \
>> +    1u << EFI_MD_TYPE_RT_CODE | 1u << EFI_MD_TYPE_RT_DATA | \
>> +    1u << EFI_MD_TYPE_FIRMWARE \
>> +)
>> +
>> +uint32_t efi_map_regs;
>> +
>
> Apparently efi_map_regs must be defined in amd64/machdep.c and not in
> efirt_machdep.c.  If efirt is compiled as module, efo_map_regs gets
> undefined in the kernel.

Ah, nice catch. Review opened.

Reply via email to