tree:
https://git.kernel.org/pub/scm/linux/kernel/git/luto/linux.git x86/fault
head: eefc5d2176680683703cf4c056949054da2d5f53
commit: a5ff54330bd58fa9d5dba5c9b44aabb51af592aa [7/13] x86/fault: Improve
kernel-executing-user-memory handling
config: x86_64-randconfig-r003-20210209 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
reproduce (this is a W=1 build):
#
https://git.kernel.org/pub/scm/linux/kernel/git/luto/linux.git/commit/?id...
git remote add luto
https://git.kernel.org/pub/scm/linux/kernel/git/luto/linux.git
git fetch --no-tags luto x86/fault
git checkout a5ff54330bd58fa9d5dba5c9b44aabb51af592aa
# save the attached .config to linux build tree
make W=1 ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
In file included from include/linux/kernel.h:16,
from arch/x86/include/asm/percpu.h:27,
from arch/x86/include/asm/current.h:6,
from include/linux/sched.h:12,
from arch/x86/mm/fault.c:7:
arch/x86/mm/fault.c: In function 'is_errata93':
> arch/x86/mm/fault.c:461:15: error: 'errata93_warning'
undeclared (first use in this function)
461 | printk_once(errata93_warning);
| ^~~~~~~~~~~~~~~~
include/linux/printk.h:445:10: note: in definition of macro 'printk_once'
445 | printk(fmt, ##__VA_ARGS__); \
| ^~~
arch/x86/mm/fault.c:461:15: note: each undeclared identifier is reported only once for
each function it appears in
461 | printk_once(errata93_warning);
| ^~~~~~~~~~~~~~~~
include/linux/printk.h:445:10: note: in definition of macro 'printk_once'
445 | printk(fmt, ##__VA_ARGS__); \
| ^~~
vim +/errata93_warning +461 arch/x86/mm/fault.c
^1da177e4c3f41 arch/x86_64/mm/fault.c Linus Torvalds 2005-04-16 428
2d4a71676f4d89 arch/x86/mm/fault.c Ingo Molnar 2009-02-20 429 /*
2d4a71676f4d89 arch/x86/mm/fault.c Ingo Molnar 2009-02-20 430 * Workaround for
K8 erratum #93 & buggy BIOS.
2d4a71676f4d89 arch/x86/mm/fault.c Ingo Molnar 2009-02-20 431 *
2d4a71676f4d89 arch/x86/mm/fault.c Ingo Molnar 2009-02-20 432 * BIOS SMM
functions are required to use a specific workaround
2d4a71676f4d89 arch/x86/mm/fault.c Ingo Molnar 2009-02-20 433 * to avoid
corruption of the 64bit RIP register on C stepping K8.
2d4a71676f4d89 arch/x86/mm/fault.c Ingo Molnar 2009-02-20 434 *
2d4a71676f4d89 arch/x86/mm/fault.c Ingo Molnar 2009-02-20 435 * A lot of BIOS
that didn't get tested properly miss this.
2d4a71676f4d89 arch/x86/mm/fault.c Ingo Molnar 2009-02-20 436 *
2d4a71676f4d89 arch/x86/mm/fault.c Ingo Molnar 2009-02-20 437 * The OS sees this
as a page fault with the upper 32bits of RIP cleared.
2d4a71676f4d89 arch/x86/mm/fault.c Ingo Molnar 2009-02-20 438 * Try to work
around it here.
2d4a71676f4d89 arch/x86/mm/fault.c Ingo Molnar 2009-02-20 439 *
2d4a71676f4d89 arch/x86/mm/fault.c Ingo Molnar 2009-02-20 440 * Note we only
handle faults in kernel here.
2d4a71676f4d89 arch/x86/mm/fault.c Ingo Molnar 2009-02-20 441 * Does nothing on
32-bit.
fdfe8aa84dd78c arch/x86/mm/fault_64.c Harvey Harrison 2008-01-30 442 */
^1da177e4c3f41 arch/x86_64/mm/fault.c Linus Torvalds 2005-04-16 443 static int
is_errata93(struct pt_regs *regs, unsigned long address)
^1da177e4c3f41 arch/x86_64/mm/fault.c Linus Torvalds 2005-04-16 444 {
a5ff54330bd58f arch/x86/mm/fault.c Andy Lutomirski 2021-02-09 445 #if
defined(CONFIG_X86_64)
a5ff54330bd58f arch/x86/mm/fault.c Andy Lutomirski 2021-02-09 446 if
(!is_amd_k8_pre_npt())
a5ff54330bd58f arch/x86/mm/fault.c Andy Lutomirski 2021-02-09 447 return 0;
a5ff54330bd58f arch/x86/mm/fault.c Andy Lutomirski 2021-02-09 448
a5ff54330bd58f arch/x86/mm/fault.c Andy Lutomirski 2021-02-09 449 if
(user_mode(regs))
e05139f2569ecf arch/x86/mm/fault.c Jan Beulich 2011-09-28 450 return 0;
e05139f2569ecf arch/x86/mm/fault.c Jan Beulich 2011-09-28 451
65ea5b03499035 arch/x86/mm/fault_64.c H. Peter Anvin 2008-01-30 452 if (address !=
regs->ip)
^1da177e4c3f41 arch/x86_64/mm/fault.c Linus Torvalds 2005-04-16 453 return 0;
2d4a71676f4d89 arch/x86/mm/fault.c Ingo Molnar 2009-02-20 454
^1da177e4c3f41 arch/x86_64/mm/fault.c Linus Torvalds 2005-04-16 455 if ((address
>> 32) != 0)
^1da177e4c3f41 arch/x86_64/mm/fault.c Linus Torvalds 2005-04-16 456 return 0;
2d4a71676f4d89 arch/x86/mm/fault.c Ingo Molnar 2009-02-20 457
^1da177e4c3f41 arch/x86_64/mm/fault.c Linus Torvalds 2005-04-16 458 address |=
0xffffffffUL << 32;
^1da177e4c3f41 arch/x86_64/mm/fault.c Linus Torvalds 2005-04-16 459 if ((address >=
(u64)_stext && address <= (u64)_etext) ||
^1da177e4c3f41 arch/x86_64/mm/fault.c Linus Torvalds 2005-04-16 460 (address >=
MODULES_VADDR && address <= MODULES_END)) {
a454ab3110175d arch/x86/mm/fault.c Ingo Molnar 2009-05-03 @461
printk_once(errata93_warning);
65ea5b03499035 arch/x86/mm/fault_64.c H. Peter Anvin 2008-01-30 462 regs->ip =
address;
^1da177e4c3f41 arch/x86_64/mm/fault.c Linus Torvalds 2005-04-16 463 return 1;
^1da177e4c3f41 arch/x86_64/mm/fault.c Linus Torvalds 2005-04-16 464 }
fdfe8aa84dd78c arch/x86/mm/fault_64.c Harvey Harrison 2008-01-30 465 #endif
^1da177e4c3f41 arch/x86_64/mm/fault.c Linus Torvalds 2005-04-16 466 return 0;
^1da177e4c3f41 arch/x86_64/mm/fault.c Linus Torvalds 2005-04-16 467 }
^1da177e4c3f41 arch/x86_64/mm/fault.c Linus Torvalds 2005-04-16 468
:::::: The code at line 461 was first introduced by commit
:::::: a454ab3110175d710f4f9a96226a26ce4d5d5de2 x86, mm: fault.c, use printk_once() in
is_errata93()
:::::: TO: Ingo Molnar <mingo(a)elte.hu>
:::::: CC: Ingo Molnar <mingo(a)elte.hu>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org