Re: [tip:ras/core 11/13] include/linux/ras.h:9:10: fatal error: uapi/asm/mce.h: No such file or directory

From: Borislav Petkov
Date: Wed Jan 03 2024 - 14:33:54 EST


On Thu, Jan 04, 2024 at 02:35:29AM +0800, kernel test robot wrote:
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git ras/core
> head: d48d30d8c358004c7b1cb2e16969a569d45953b3
> commit: 8e1d0790e0a749a62428ff039c7a9050a06e9feb [11/13] RAS: Introduce AMD Address Translation Library
> config: sh-allmodconfig (https://download.01.org/0day-ci/archive/20240104/202401040257.NPrXuVk7-lkp@xxxxxxxxx/config)
> compiler: sh4-linux-gcc (GCC) 13.2.0
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240104/202401040257.NPrXuVk7-lkp@xxxxxxxxx/reproduce)

How are you even testing this successfully?

I get with this compiler here:

<stdin>:1519:2: warning: #warning syscall clone3 not implemented [-Wcpp]
{standard input}: Assembler messages:
{standard input}:1094: Warning: end of file not at end of a line; newline inserted
{standard input}:1095: Error: expected symbol name
sh4-linux-gcc: internal compiler error: Segmentation fault signal terminated program cc1
Please submit a full bug report, with preprocessed source (by using -freport-bug).
See <https://gcc.gnu.org/bugs/> for instructions.
make[5]: *** [scripts/Makefile.build:243: drivers/net/pcs/pcs-xpcs.o] Error 4
make[4]: *** [scripts/Makefile.build:480: drivers/net/pcs] Error 2
make[4]: *** Waiting for unfinished jobs....
make[3]: *** [scripts/Makefile.build:480: drivers/net] Error 2
make[3]: *** Waiting for unfinished jobs....
make[2]: *** [scripts/Makefile.build:480: drivers] Error 2
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [/mnt/kernel/kernel/linux/Makefile:1911: .] Error 2
make: *** [Makefile:234: __sub-make] Error 2

Anyway, this should fix it:

diff --git a/include/linux/ras.h b/include/linux/ras.h
index 829252a358b7..5d8f0e6fc03d 100644
--- a/include/linux/ras.h
+++ b/include/linux/ras.h
@@ -6,7 +6,9 @@
#include <linux/uuid.h>
#include <linux/cper.h>

+#ifdef CONFIG_X86_MCE
#include <uapi/asm/mce.h>
+#endif

#ifdef CONFIG_DEBUG_FS
int ras_userspace_consumers(void);
@@ -38,11 +40,12 @@ static inline void
log_arm_hw_error(struct cper_sec_proc_arm *err) { return; }
#endif

-#if IS_ENABLED(CONFIG_AMD_ATL)
+#ifdef CONFIG_AMD_ATL
void amd_atl_register_decoder(unsigned long (*f)(struct mce *));
void amd_atl_unregister_decoder(void);
unsigned long amd_convert_umc_mca_addr_to_sys_addr(struct mce *m);
#else
+struct mce;
static inline unsigned long amd_convert_umc_mca_addr_to_sys_addr(struct mce *m) { return -EINVAL; }
#endif /* CONFIG_AMD_ATL */

--
Regards/Gruss,
Boris.

https://people.kernel.org/tglx/notes-about-netiquette