* [ardb:x86-efi-memattr-kexec-v3 4/5] drivers/firmware/efi/memattr.c:104:8: error: call to undeclared function 'PAGE_ALIGNED'; ISO C99 and later do not support implicit function declarations
@ 2026-04-01 23:47 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-04-01 23:47 UTC (permalink / raw)
To: Ard Biesheuvel; +Cc: llvm, oe-kbuild-all, Breno Leitao
tree: https://git.kernel.org/pub/scm/linux/kernel/git/ardb/linux.git x86-efi-memattr-kexec-v3
head: 9dee7ecd271959a84a9d7bd622e017f6eb7ff5b9
commit: 3f66665e01597a2b05c8d87edf66f3227a97c994 [4/5] efi: Use efi_mem_reserve() to reserve the memory attribute table
config: x86_64-kexec (https://download.01.org/0day-ci/archive/20260402/202604020129.gK0ZFl02-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260402/202604020129.gK0ZFl02-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202604020129.gK0ZFl02-lkp@intel.com/
All errors (new ones prefixed by >>):
>> drivers/firmware/efi/memattr.c:104:8: error: call to undeclared function 'PAGE_ALIGNED'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
104 | (!PAGE_ALIGNED(in->phys_addr) ||
| ^
1 error generated.
vim +/PAGE_ALIGNED +104 drivers/firmware/efi/memattr.c
10f0d2f5770535 Ard Biesheuvel 2016-04-25 83
10f0d2f5770535 Ard Biesheuvel 2016-04-25 84 /*
10f0d2f5770535 Ard Biesheuvel 2016-04-25 85 * Returns a copy @out of the UEFI memory descriptor @in if it is covered
10f0d2f5770535 Ard Biesheuvel 2016-04-25 86 * entirely by a UEFI memory map entry with matching attributes. The virtual
10f0d2f5770535 Ard Biesheuvel 2016-04-25 87 * address of @out is set according to the matching entry that was found.
10f0d2f5770535 Ard Biesheuvel 2016-04-25 88 */
10f0d2f5770535 Ard Biesheuvel 2016-04-25 89 static bool entry_is_valid(const efi_memory_desc_t *in, efi_memory_desc_t *out)
10f0d2f5770535 Ard Biesheuvel 2016-04-25 90 {
10f0d2f5770535 Ard Biesheuvel 2016-04-25 91 u64 in_paddr = in->phys_addr;
10f0d2f5770535 Ard Biesheuvel 2016-04-25 92 u64 in_size = in->num_pages << EFI_PAGE_SHIFT;
10f0d2f5770535 Ard Biesheuvel 2016-04-25 93 efi_memory_desc_t *md;
10f0d2f5770535 Ard Biesheuvel 2016-04-25 94
10f0d2f5770535 Ard Biesheuvel 2016-04-25 95 *out = *in;
10f0d2f5770535 Ard Biesheuvel 2016-04-25 96
10f0d2f5770535 Ard Biesheuvel 2016-04-25 97 if (in->type != EFI_RUNTIME_SERVICES_CODE &&
10f0d2f5770535 Ard Biesheuvel 2016-04-25 98 in->type != EFI_RUNTIME_SERVICES_DATA) {
10f0d2f5770535 Ard Biesheuvel 2016-04-25 99 pr_warn("Entry type should be RuntimeServiceCode/Data\n");
10f0d2f5770535 Ard Biesheuvel 2016-04-25 100 return false;
10f0d2f5770535 Ard Biesheuvel 2016-04-25 101 }
10f0d2f5770535 Ard Biesheuvel 2016-04-25 102
10f0d2f5770535 Ard Biesheuvel 2016-04-25 103 if (PAGE_SIZE > EFI_PAGE_SIZE &&
10f0d2f5770535 Ard Biesheuvel 2016-04-25 @104 (!PAGE_ALIGNED(in->phys_addr) ||
10f0d2f5770535 Ard Biesheuvel 2016-04-25 105 !PAGE_ALIGNED(in->num_pages << EFI_PAGE_SHIFT))) {
10f0d2f5770535 Ard Biesheuvel 2016-04-25 106 /*
10f0d2f5770535 Ard Biesheuvel 2016-04-25 107 * Since arm64 may execute with page sizes of up to 64 KB, the
10f0d2f5770535 Ard Biesheuvel 2016-04-25 108 * UEFI spec mandates that RuntimeServices memory regions must
10f0d2f5770535 Ard Biesheuvel 2016-04-25 109 * be 64 KB aligned. We need to validate this here since we will
10f0d2f5770535 Ard Biesheuvel 2016-04-25 110 * not be able to tighten permissions on such regions without
10f0d2f5770535 Ard Biesheuvel 2016-04-25 111 * affecting adjacent regions.
10f0d2f5770535 Ard Biesheuvel 2016-04-25 112 */
10f0d2f5770535 Ard Biesheuvel 2016-04-25 113 pr_warn("Entry address region misaligned\n");
10f0d2f5770535 Ard Biesheuvel 2016-04-25 114 return false;
10f0d2f5770535 Ard Biesheuvel 2016-04-25 115 }
10f0d2f5770535 Ard Biesheuvel 2016-04-25 116
10f0d2f5770535 Ard Biesheuvel 2016-04-25 117 for_each_efi_memory_desc(md) {
10f0d2f5770535 Ard Biesheuvel 2016-04-25 118 u64 md_paddr = md->phys_addr;
10f0d2f5770535 Ard Biesheuvel 2016-04-25 119 u64 md_size = md->num_pages << EFI_PAGE_SHIFT;
10f0d2f5770535 Ard Biesheuvel 2016-04-25 120
10f0d2f5770535 Ard Biesheuvel 2016-04-25 121 if (!(md->attribute & EFI_MEMORY_RUNTIME))
10f0d2f5770535 Ard Biesheuvel 2016-04-25 122 continue;
5de0fef0230f3c Ard Biesheuvel 2019-02-02 123 if (md->virt_addr == 0 && md->phys_addr != 0) {
10f0d2f5770535 Ard Biesheuvel 2016-04-25 124 /* no virtual mapping has been installed by the stub */
10f0d2f5770535 Ard Biesheuvel 2016-04-25 125 break;
10f0d2f5770535 Ard Biesheuvel 2016-04-25 126 }
10f0d2f5770535 Ard Biesheuvel 2016-04-25 127
10f0d2f5770535 Ard Biesheuvel 2016-04-25 128 if (md_paddr > in_paddr || (in_paddr - md_paddr) >= md_size)
10f0d2f5770535 Ard Biesheuvel 2016-04-25 129 continue;
10f0d2f5770535 Ard Biesheuvel 2016-04-25 130
10f0d2f5770535 Ard Biesheuvel 2016-04-25 131 /*
10f0d2f5770535 Ard Biesheuvel 2016-04-25 132 * This entry covers the start of @in, check whether
10f0d2f5770535 Ard Biesheuvel 2016-04-25 133 * it covers the end as well.
10f0d2f5770535 Ard Biesheuvel 2016-04-25 134 */
10f0d2f5770535 Ard Biesheuvel 2016-04-25 135 if (md_paddr + md_size < in_paddr + in_size) {
10f0d2f5770535 Ard Biesheuvel 2016-04-25 136 pr_warn("Entry covers multiple EFI memory map regions\n");
10f0d2f5770535 Ard Biesheuvel 2016-04-25 137 return false;
10f0d2f5770535 Ard Biesheuvel 2016-04-25 138 }
10f0d2f5770535 Ard Biesheuvel 2016-04-25 139
10f0d2f5770535 Ard Biesheuvel 2016-04-25 140 if (md->type != in->type) {
10f0d2f5770535 Ard Biesheuvel 2016-04-25 141 pr_warn("Entry type deviates from EFI memory map region type\n");
10f0d2f5770535 Ard Biesheuvel 2016-04-25 142 return false;
10f0d2f5770535 Ard Biesheuvel 2016-04-25 143 }
10f0d2f5770535 Ard Biesheuvel 2016-04-25 144
10f0d2f5770535 Ard Biesheuvel 2016-04-25 145 out->virt_addr = in_paddr + (md->virt_addr - md_paddr);
10f0d2f5770535 Ard Biesheuvel 2016-04-25 146
10f0d2f5770535 Ard Biesheuvel 2016-04-25 147 return true;
10f0d2f5770535 Ard Biesheuvel 2016-04-25 148 }
10f0d2f5770535 Ard Biesheuvel 2016-04-25 149
10f0d2f5770535 Ard Biesheuvel 2016-04-25 150 pr_warn("No matching entry found in the EFI memory map\n");
10f0d2f5770535 Ard Biesheuvel 2016-04-25 151 return false;
10f0d2f5770535 Ard Biesheuvel 2016-04-25 152 }
10f0d2f5770535 Ard Biesheuvel 2016-04-25 153
:::::: The code at line 104 was first introduced by commit
:::::: 10f0d2f57705350bbbe5f28e9292ae3905823c3c efi: Implement generic support for the Memory Attributes table
:::::: TO: Ard Biesheuvel <ard.biesheuvel@linaro.org>
:::::: CC: Ingo Molnar <mingo@kernel.org>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-04-01 23:48 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-01 23:47 [ardb:x86-efi-memattr-kexec-v3 4/5] drivers/firmware/efi/memattr.c:104:8: error: call to undeclared function 'PAGE_ALIGNED'; ISO C99 and later do not support implicit function declarations kernel test robot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox