Messages in this thread | | | Subject | Re: [PATCH v4 1/5] x86/asm: move the raw asm in iosubmit_cmds512() to special_insns.h | From | Dave Jiang <> | Date | Wed, 23 Sep 2020 08:43:11 -0700 |
| |
On 9/23/2020 3:41 AM, Borislav Petkov wrote: >> Subject: Re: [PATCH v4 1/5] x86/asm: move the raw asm in iosubmit_cmds512() to special_insns.h > > Start patch name with a capital letter: "Move the asm definition.." > > Also, calling stuff "raw" and "core" is misleading in the kernel context > - you wanna say simply: "Carve out a generic movdir64b() helper... "
Ok I will update
> > On Thu, Sep 17, 2020 at 02:15:16PM -0700, Dave Jiang wrote: >> diff --git a/arch/x86/include/asm/special_insns.h b/arch/x86/include/asm/special_insns.h >> index 59a3e13204c3..7bc8e714f37e 100644 >> --- a/arch/x86/include/asm/special_insns.h >> +++ b/arch/x86/include/asm/special_insns.h >> @@ -234,6 +234,23 @@ static inline void clwb(volatile void *__p) >> >> #define nop() asm volatile ("nop") >> >> +static inline void movdir64b(void *__dst, const void *src) > > Make __dst be the function local variable name and keep "dst", i.e., > without the underscores, the function parameter name.
Ok will fix
> >> + /* >> + * Note that this isn't an "on-stack copy", just definition of "dst" >> + * as a pointer to 64-bytes of stuff that is going to be overwritten. >> + * In the MOVDIR64B case that may be needed as you can use the >> + * MOVDIR64B instruction to copy arbitrary memory around. This trick >> + * lets the compiler know how much gets clobbered. >> + */ >> + volatile struct { char _[64]; } *dst = __dst; >> + >> + /* MOVDIR64B [rdx], rax */ >> + asm volatile(".byte 0x66, 0x0f, 0x38, 0xf8, 0x02" >> + : "=m" (dst) >> + : "d" (src), "a" (dst)); >> +} >> + >> #endif /* __KERNEL__ */ >> >> #endif /* _ASM_X86_SPECIAL_INSNS_H */ >> >
| |