[PATCH] crypto, x86: aesni: add compatibility with IAS

5 views
Skip to first unread message

Jian Cai

unread,
Jun 22, 2020, 7:28:44 PM6/22/20
to caij...@gmail.com, jia...@google.com, ndesau...@google.com, manoj...@google.com, sedat...@gmail.com, mas...@google.com, Herbert Xu, David S. Miller, Thomas Gleixner, Ingo Molnar, Borislav Petkov, x...@kernel.org, H. Peter Anvin, linux-...@vger.kernel.org, linux-...@vger.kernel.org, clang-bu...@googlegroups.com
Clang's integrated assembler complains "invalid reassignment of
non-absolute variable 'var_ddq_add'" while assembling
arch/x86/crypto/aes_ctrby8_avx-x86_64.S. It was because var_ddq_add was
reassigned with non-absolute values several times, which IAS did not
support. We can avoid the reassignment by replacing the uses of
var_ddq_add with its definitions accordingly to have compatilibility
with IAS.

Link: https://github.com/ClangBuiltLinux/linux/issues/1008
Reported-by: Sedat Dilek <sedat...@gmail.com>
Reported-by: Fangrui Song <mas...@google.com>
Tested-by: Sedat Dilek <sedat...@gmail.com> # build+boot Linux v5.7.5; clang v11.0.0-git
Signed-off-by: Jian Cai <caij...@gmail.com>
---
arch/x86/crypto/aes_ctrby8_avx-x86_64.S | 14 +++-----------
1 file changed, 3 insertions(+), 11 deletions(-)

diff --git a/arch/x86/crypto/aes_ctrby8_avx-x86_64.S b/arch/x86/crypto/aes_ctrby8_avx-x86_64.S
index ec437db1fa54..494a3bda8487 100644
--- a/arch/x86/crypto/aes_ctrby8_avx-x86_64.S
+++ b/arch/x86/crypto/aes_ctrby8_avx-x86_64.S
@@ -127,10 +127,6 @@ ddq_add_8:

/* generate a unique variable for ddq_add_x */

-.macro setddq n
- var_ddq_add = ddq_add_\n
-.endm
-
/* generate a unique variable for xmm register */
.macro setxdata n
var_xdata = %xmm\n
@@ -140,9 +136,7 @@ ddq_add_8:

.macro club name, id
.altmacro
- .if \name == DDQ_DATA
- setddq %\id
- .elseif \name == XDATA
+ .if \name == XDATA
setxdata %\id
.endif
.noaltmacro
@@ -165,9 +159,8 @@ ddq_add_8:

.set i, 1
.rept (by - 1)
- club DDQ_DATA, i
club XDATA, i
- vpaddq var_ddq_add(%rip), xcounter, var_xdata
+ vpaddq (ddq_add_1 + 16 * (i - 1))(%rip), xcounter, var_xdata
vptest ddq_low_msk(%rip), var_xdata
jnz 1f
vpaddq ddq_high_add_1(%rip), var_xdata, var_xdata
@@ -180,8 +173,7 @@ ddq_add_8:
vmovdqa 1*16(p_keys), xkeyA

vpxor xkey0, xdata0, xdata0
- club DDQ_DATA, by
- vpaddq var_ddq_add(%rip), xcounter, xcounter
+ vpaddq (ddq_add_1 + 16 * (by - 1))(%rip), xcounter, xcounter
vptest ddq_low_msk(%rip), xcounter
jnz 1f
vpaddq ddq_high_add_1(%rip), xcounter, xcounter
--
2.27.0.111.gc72c7da667-goog

Herbert Xu

unread,
Jul 3, 2020, 12:49:11 AM7/3/20
to Jian Cai, jia...@google.com, ndesau...@google.com, manoj...@google.com, sedat...@gmail.com, mas...@google.com, David S. Miller, Thomas Gleixner, Ingo Molnar, Borislav Petkov, x...@kernel.org, H. Peter Anvin, linux-...@vger.kernel.org, linux-...@vger.kernel.org, clang-bu...@googlegroups.com
On Mon, Jun 22, 2020 at 04:24:33PM -0700, Jian Cai wrote:
> Clang's integrated assembler complains "invalid reassignment of
> non-absolute variable 'var_ddq_add'" while assembling
> arch/x86/crypto/aes_ctrby8_avx-x86_64.S. It was because var_ddq_add was
> reassigned with non-absolute values several times, which IAS did not
> support. We can avoid the reassignment by replacing the uses of
> var_ddq_add with its definitions accordingly to have compatilibility
> with IAS.
>
> Link: https://github.com/ClangBuiltLinux/linux/issues/1008
> Reported-by: Sedat Dilek <sedat...@gmail.com>
> Reported-by: Fangrui Song <mas...@google.com>
> Tested-by: Sedat Dilek <sedat...@gmail.com> # build+boot Linux v5.7.5; clang v11.0.0-git
> Signed-off-by: Jian Cai <caij...@gmail.com>
> ---
> arch/x86/crypto/aes_ctrby8_avx-x86_64.S | 14 +++-----------
> 1 file changed, 3 insertions(+), 11 deletions(-)

Patch applied. Thanks.
--
Email: Herbert Xu <her...@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

Sedat Dilek

unread,
Jul 3, 2020, 4:36:55 AM7/3/20
to Herbert Xu, Jian Cai, jia...@google.com, Nick Desaulniers, manoj...@google.com, mas...@google.com, David S. Miller, Thomas Gleixner, Ingo Molnar, Borislav Petkov, x...@kernel.org, H. Peter Anvin, linux-...@vger.kernel.org, linux-...@vger.kernel.org, Clang-Built-Linux ML
On Fri, Jul 3, 2020 at 6:49 AM Herbert Xu <her...@gondor.apana.org.au> wrote:
>
> On Mon, Jun 22, 2020 at 04:24:33PM -0700, Jian Cai wrote:
> > Clang's integrated assembler complains "invalid reassignment of
> > non-absolute variable 'var_ddq_add'" while assembling
> > arch/x86/crypto/aes_ctrby8_avx-x86_64.S. It was because var_ddq_add was
> > reassigned with non-absolute values several times, which IAS did not
> > support. We can avoid the reassignment by replacing the uses of
> > var_ddq_add with its definitions accordingly to have compatilibility
> > with IAS.
> >
> > Link: https://github.com/ClangBuiltLinux/linux/issues/1008
> > Reported-by: Sedat Dilek <sedat...@gmail.com>
> > Reported-by: Fangrui Song <mas...@google.com>
> > Tested-by: Sedat Dilek <sedat...@gmail.com> # build+boot Linux v5.7.5; clang v11.0.0-git
> > Signed-off-by: Jian Cai <caij...@gmail.com>
> > ---
> > arch/x86/crypto/aes_ctrby8_avx-x86_64.S | 14 +++-----------
> > 1 file changed, 3 insertions(+), 11 deletions(-)
>
> Patch applied. Thanks.

Hi Herbert,

Can you please apply my patch, too?

For being able to compile/assemble with LLVM_IAS=1 *both* patches are
needed with CONFIG_CRYPTO_AES_NI_INTEL={m,y}.

If you do pick this up, please add a...

Link: https://bugs.llvm.org/show_bug.cgi?id=24494

Thanks.

Regards,
- Sedat -

[0] https://lore.kernel.org/patchwork/patch/1263102/
[1] https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git/commit/?id=44069737ac9625a0f02f0f7f5ab96aae4cd819bc
[2] https://bugs.llvm.org/show_bug.cgi?id=24494

Herbert Xu

unread,
Jul 3, 2020, 9:00:29 AM7/3/20
to Sedat Dilek, Jian Cai, jia...@google.com, Nick Desaulniers, manoj...@google.com, mas...@google.com, David S. Miller, Thomas Gleixner, Ingo Molnar, Borislav Petkov, x...@kernel.org, H. Peter Anvin, linux-...@vger.kernel.org, linux-...@vger.kernel.org, Clang-Built-Linux ML
On Fri, Jul 03, 2020 at 10:36:43AM +0200, Sedat Dilek wrote:
>
> Can you please apply my patch, too?

Please repost your patch without the 5.7 tag.

Thanks,

Sedat Dilek

unread,
Jul 3, 2020, 10:33:51 AM7/3/20
to Herbert Xu, Jian Cai, jia...@google.com, Nick Desaulniers, manoj...@google.com, mas...@google.com, David S. Miller, Thomas Gleixner, Ingo Molnar, Borislav Petkov, x...@kernel.org, H. Peter Anvin, linux-...@vger.kernel.org, linux-...@vger.kernel.org, Clang-Built-Linux ML
On Fri, Jul 3, 2020 at 3:00 PM Herbert Xu <her...@gondor.apana.org.au> wrote:
>
> On Fri, Jul 03, 2020 at 10:36:43AM +0200, Sedat Dilek wrote:
> >
> > Can you please apply my patch, too?
>
> Please repost your patch without the 5.7 tag.
>

Sent out a v5:

Changes v4->v5:
- Drop "5.7" tag from subject line as requested by Herbert Xu
- Add Link to LLVM bug #24494 (thanks Nick)

Thanks.

- Sedat -
> --
> You received this message because you are subscribed to the Google Groups "Clang Built Linux" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to clang-built-li...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/clang-built-linux/20200703125949.GA28373%40gondor.apana.org.au.
Reply all
Reply to author
Forward
0 new messages