diff options
| author | Louis Burda <quent.burda@gmail.com> | 2022-12-06 16:33:55 +0100 |
|---|---|---|
| committer | Louis Burda <quent.burda@gmail.com> | 2022-12-06 16:33:55 +0100 |
| commit | 8e71e9bb226346afc2900f1d8bd3057372b8ec4c (patch) | |
| tree | 6cb0a5f9455ecb8f9708775d864dcc9d33601a5e /crypto | |
| parent | 98e413ac3ef0d01e5aa38939027d1354ba1515e1 (diff) | |
| download | cachepc-linux-8e71e9bb226346afc2900f1d8bd3057372b8ec4c.tar.gz cachepc-linux-8e71e9bb226346afc2900f1d8bd3057372b8ec4c.zip | |
stash
Diffstat (limited to 'crypto')
| -rw-r--r-- | crypto/aes_generic.c | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/crypto/aes_generic.c b/crypto/aes_generic.c index 27ab27931813..90679ec8ba79 100644 --- a/crypto/aes_generic.c +++ b/crypto/aes_generic.c @@ -1173,8 +1173,78 @@ EXPORT_SYMBOL_GPL(crypto_aes_set_key); f_rl(bo, bi, 3, k); \ } while (0) +#define L1_ASSOC 8 +#define L1_LINESIZE 64 +#define L1_SETS 64 +#define L1_SIZE (L1_SETS * L1_ASSOC * L1_LINESIZE) + +#define ACCESS_LINE(n) \ + asm volatile ("mov (%0), %%rbx" \ + : : "r"(((uint8_t*) L1) + n * L1_LINESIZE) : "rbx"); + +#define DO_ACCESS_PATTERN() \ + ACCESS_LINE(60) \ + ACCESS_LINE(13) \ + ACCESS_LINE(24) \ + ACCESS_LINE(19) \ + ACCESS_LINE(38) \ + ACCESS_LINE(17) \ + ACCESS_LINE( 2) \ + ACCESS_LINE(12) \ + ACCESS_LINE(22) \ + ACCESS_LINE(46) \ + ACCESS_LINE( 4) \ + ACCESS_LINE(61) \ + ACCESS_LINE( 5) \ + ACCESS_LINE(14) \ + ACCESS_LINE(11) \ + ACCESS_LINE(35) \ + ACCESS_LINE(45) \ + ACCESS_LINE(10) \ + ACCESS_LINE(49) \ + ACCESS_LINE(56) \ + ACCESS_LINE(27) \ + ACCESS_LINE(37) \ + ACCESS_LINE(63) \ + ACCESS_LINE(54) \ + ACCESS_LINE(55) \ + ACCESS_LINE(29) \ + ACCESS_LINE(48) \ + ACCESS_LINE( 9) \ + ACCESS_LINE(16) \ + ACCESS_LINE(39) \ + ACCESS_LINE(20) \ + ACCESS_LINE(21) \ + ACCESS_LINE(62) \ + ACCESS_LINE( 0) \ + ACCESS_LINE(34) \ + ACCESS_LINE( 8) \ + ACCESS_LINE(53) \ + ACCESS_LINE(42) \ + ACCESS_LINE(51) \ + ACCESS_LINE(50) \ + ACCESS_LINE(57) \ + ACCESS_LINE( 7) \ + ACCESS_LINE( 6) \ + ACCESS_LINE(33) \ + ACCESS_LINE(26) \ + +uint8_t *L1 = NULL; + static void crypto_aes_encrypt(struct crypto_tfm *tfm, u8 *out, const u8 *in) { + int cpu; + + if (L1 == NULL) { + L1 = kzalloc(L1_SETS * L1_LINESIZE, GFP_KERNEL); + BUG_ON(((uintptr_t)L1) % (L1_SETS * L1_LINESIZE) != 0); + } + + pr_warn("CachePC-TEST: Running AES-Generic!"); + + cpu = get_cpu(); + DO_ACCESS_PATTERN() + const struct crypto_aes_ctx *ctx = crypto_tfm_ctx(tfm); u32 b0[4], b1[4]; const u32 *kp = ctx->key_enc + 4; @@ -1210,6 +1280,9 @@ static void crypto_aes_encrypt(struct crypto_tfm *tfm, u8 *out, const u8 *in) put_unaligned_le32(b0[1], out + 4); put_unaligned_le32(b0[2], out + 8); put_unaligned_le32(b0[3], out + 12); + + DO_ACCESS_PATTERN(); + put_cpu(); } /* decrypt a block of text */ |
