| From 1834fc1de9600cface922d98de1e03ca79ec42ef Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 11 Jan 2022 20:05:06 +0000 |
| Subject: um: fix and optimize xor select template for CONFIG64 and timetravel |
| mode |
| |
| From: Benjamin Beichler <benjamin.beichler@uni-rostock.de> |
| |
| [ Upstream commit e3a33af812c611d99756e2ec61e9d7068d466bdf ] |
| |
| Due to dropped inclusion of asm-generic/xor.h, xor_block_8regs symbol is |
| missing with CONFIG64 and break compilation, as the asm/xor_64.h also did |
| not include it. The patch recreate the logic from arch/x86, which check |
| whether AVX is available and add fallbacks for 32bit and 64bit config of |
| um. |
| |
| A very minor additional "fix" is, the return of the macro parameter |
| instead of NULL, as this is the original intent of the macro, but |
| this does not change the actual behavior. |
| |
| Fixes: c0ecca6604b8 ("um: enable the use of optimized xor routines in UML") |
| Signed-off-by: Benjamin Beichler <benjamin.beichler@uni-rostock.de> |
| Acked-By: Anton Ivanov <anton.ivanov@cambridgegreys.com> |
| Signed-off-by: Richard Weinberger <richard@nod.at> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| arch/um/include/asm/xor.h | 4 +++- |
| 1 file changed, 3 insertions(+), 1 deletion(-) |
| |
| diff --git a/arch/um/include/asm/xor.h b/arch/um/include/asm/xor.h |
| index f512704a9ec7..22b39de73c24 100644 |
| --- a/arch/um/include/asm/xor.h |
| +++ b/arch/um/include/asm/xor.h |
| @@ -4,8 +4,10 @@ |
| |
| #ifdef CONFIG_64BIT |
| #undef CONFIG_X86_32 |
| +#define TT_CPU_INF_XOR_DEFAULT (AVX_SELECT(&xor_block_sse_pf64)) |
| #else |
| #define CONFIG_X86_32 1 |
| +#define TT_CPU_INF_XOR_DEFAULT (AVX_SELECT(&xor_block_8regs)) |
| #endif |
| |
| #include <asm/cpufeature.h> |
| @@ -16,7 +18,7 @@ |
| #undef XOR_SELECT_TEMPLATE |
| /* pick an arbitrary one - measuring isn't possible with inf-cpu */ |
| #define XOR_SELECT_TEMPLATE(x) \ |
| - (time_travel_mode == TT_MODE_INFCPU ? &xor_block_8regs : NULL) |
| + (time_travel_mode == TT_MODE_INFCPU ? TT_CPU_INF_XOR_DEFAULT : x)) |
| #endif |
| |
| #endif |
| -- |
| 2.35.1 |
| |