* [PATCH] crypto: fix ctx pointer and digest copy in sha256-mb
@ 2016-08-12 10:24 Xiaodong Liu
2016-08-12 16:17 ` Tim Chen
2016-08-16 9:52 ` Herbert Xu
0 siblings, 2 replies; 3+ messages in thread
From: Xiaodong Liu @ 2016-08-12 10:24 UTC (permalink / raw)
To: herbert; +Cc: linux-crypto, tim.c.chen, megha.dey, linux-kernel, Xiaodong Liu
1. fix ctx pointer
Use req_ctx which is the ctx for the next job that have
been completed in the lanes instead of the first
completed job rctx, whose completion could have been
called and released.
2. fix digest copy
Use XMM register to copy another 16 bytes sha256 digest
instead of a regular register.
Signed-off-by: Xiaodong Liu <xiaodong.liu@intel.com>
---
arch/x86/crypto/sha256-mb/sha256_mb.c | 4 ++--
arch/x86/crypto/sha256-mb/sha256_mb_mgr_flush_avx2.S | 7 ++++---
2 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/arch/x86/crypto/sha256-mb/sha256_mb.c b/arch/x86/crypto/sha256-mb/sha256_mb.c
index 89fa85e..6f97fb3 100644
--- a/arch/x86/crypto/sha256-mb/sha256_mb.c
+++ b/arch/x86/crypto/sha256-mb/sha256_mb.c
@@ -485,10 +485,10 @@ static int sha_complete_job(struct mcryptd_hash_request_ctx *rctx,
req = cast_mcryptd_ctx_to_req(req_ctx);
if (irqs_disabled())
- rctx->complete(&req->base, ret);
+ req_ctx->complete(&req->base, ret);
else {
local_bh_disable();
- rctx->complete(&req->base, ret);
+ req_ctx->complete(&req->base, ret);
local_bh_enable();
}
}
diff --git a/arch/x86/crypto/sha256-mb/sha256_mb_mgr_flush_avx2.S b/arch/x86/crypto/sha256-mb/sha256_mb_mgr_flush_avx2.S
index b691da9..a78a069 100644
--- a/arch/x86/crypto/sha256-mb/sha256_mb_mgr_flush_avx2.S
+++ b/arch/x86/crypto/sha256-mb/sha256_mb_mgr_flush_avx2.S
@@ -265,13 +265,14 @@ ENTRY(sha256_mb_mgr_get_comp_job_avx2)
vpinsrd $1, _args_digest+1*32(state, idx, 4), %xmm0, %xmm0
vpinsrd $2, _args_digest+2*32(state, idx, 4), %xmm0, %xmm0
vpinsrd $3, _args_digest+3*32(state, idx, 4), %xmm0, %xmm0
- movl _args_digest+4*32(state, idx, 4), tmp2_w
+ vmovd _args_digest(state , idx, 4) , %xmm0
vpinsrd $1, _args_digest+5*32(state, idx, 4), %xmm1, %xmm1
vpinsrd $2, _args_digest+6*32(state, idx, 4), %xmm1, %xmm1
vpinsrd $3, _args_digest+7*32(state, idx, 4), %xmm1, %xmm1
- vmovdqu %xmm0, _result_digest(job_rax)
- movl tmp2_w, _result_digest+1*16(job_rax)
+ vmovdqu %xmm0, _result_digest(job_rax)
+ offset = (_result_digest + 1*16)
+ vmovdqu %xmm1, offset(job_rax)
pop %rbx
--
1.9.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] crypto: fix ctx pointer and digest copy in sha256-mb
2016-08-12 10:24 [PATCH] crypto: fix ctx pointer and digest copy in sha256-mb Xiaodong Liu
@ 2016-08-12 16:17 ` Tim Chen
2016-08-16 9:52 ` Herbert Xu
1 sibling, 0 replies; 3+ messages in thread
From: Tim Chen @ 2016-08-12 16:17 UTC (permalink / raw)
To: Xiaodong Liu, herbert, Megha Dey; +Cc: linux-crypto, megha.dey, linux-kernel
On Fri, 2016-08-12 at 06:24 -0400, Xiaodong Liu wrote:
> 1. fix ctx pointer
> Use req_ctx which is the ctx for the next job that have
> been completed in the lanes instead of the first
> completed job rctx, whose completion could have been
> called and released.
> 2. fix digest copy
> Use XMM register to copy another 16 bytes sha256 digest
> instead of a regular register.
The changes look fine to me. Megha, can you double check?
Tim
>
> Signed-off-by: Xiaodong Liu <xiaodong.liu@intel.com>
> ---
> arch/x86/crypto/sha256-mb/sha256_mb.c | 4 ++--
> arch/x86/crypto/sha256-mb/sha256_mb_mgr_flush_avx2.S | 7 ++++---
> 2 files changed, 6 insertions(+), 5 deletions(-)
>
> diff --git a/arch/x86/crypto/sha256-mb/sha256_mb.c b/arch/x86/crypto/sha256-mb/sha256_mb.c
> index 89fa85e..6f97fb3 100644
> --- a/arch/x86/crypto/sha256-mb/sha256_mb.c
> +++ b/arch/x86/crypto/sha256-mb/sha256_mb.c
> @@ -485,10 +485,10 @@ static int sha_complete_job(struct mcryptd_hash_request_ctx *rctx,
>
> req = cast_mcryptd_ctx_to_req(req_ctx);
> if (irqs_disabled())
> - rctx->complete(&req->base, ret);
> + req_ctx->complete(&req->base, ret);
> else {
> local_bh_disable();
> - rctx->complete(&req->base, ret);
> + req_ctx->complete(&req->base, ret);
> local_bh_enable();
> }
> }
> diff --git a/arch/x86/crypto/sha256-mb/sha256_mb_mgr_flush_avx2.S b/arch/x86/crypto/sha256-mb/sha256_mb_mgr_flush_avx2.S
> index b691da9..a78a069 100644
> --- a/arch/x86/crypto/sha256-mb/sha256_mb_mgr_flush_avx2.S
> +++ b/arch/x86/crypto/sha256-mb/sha256_mb_mgr_flush_avx2.S
> @@ -265,13 +265,14 @@ ENTRY(sha256_mb_mgr_get_comp_job_avx2)
> vpinsrd $1, _args_digest+1*32(state, idx, 4), %xmm0, %xmm0
> vpinsrd $2, _args_digest+2*32(state, idx, 4), %xmm0, %xmm0
> vpinsrd $3, _args_digest+3*32(state, idx, 4), %xmm0, %xmm0
> - movl _args_digest+4*32(state, idx, 4), tmp2_w
> + vmovd _args_digest(state , idx, 4) , %xmm0
> vpinsrd $1, _args_digest+5*32(state, idx, 4), %xmm1, %xmm1
> vpinsrd $2, _args_digest+6*32(state, idx, 4), %xmm1, %xmm1
> vpinsrd $3, _args_digest+7*32(state, idx, 4), %xmm1, %xmm1
>
> - vmovdqu %xmm0, _result_digest(job_rax)
> - movl tmp2_w, _result_digest+1*16(job_rax)
> + vmovdqu %xmm0, _result_digest(job_rax)
> + offset = (_result_digest + 1*16)
> + vmovdqu %xmm1, offset(job_rax)
>
> pop %rbx
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] crypto: fix ctx pointer and digest copy in sha256-mb
2016-08-12 10:24 [PATCH] crypto: fix ctx pointer and digest copy in sha256-mb Xiaodong Liu
2016-08-12 16:17 ` Tim Chen
@ 2016-08-16 9:52 ` Herbert Xu
1 sibling, 0 replies; 3+ messages in thread
From: Herbert Xu @ 2016-08-16 9:52 UTC (permalink / raw)
To: Xiaodong Liu; +Cc: linux-crypto, tim.c.chen, megha.dey, linux-kernel
On Fri, Aug 12, 2016 at 06:24:42AM -0400, Xiaodong Liu wrote:
> 1. fix ctx pointer
> Use req_ctx which is the ctx for the next job that have
> been completed in the lanes instead of the first
> completed job rctx, whose completion could have been
> called and released.
> 2. fix digest copy
> Use XMM register to copy another 16 bytes sha256 digest
> instead of a regular register.
>
> Signed-off-by: Xiaodong Liu <xiaodong.liu@intel.com>
Patch applied. Thanks.
--
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-08-16 9:53 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-08-12 10:24 [PATCH] crypto: fix ctx pointer and digest copy in sha256-mb Xiaodong Liu
2016-08-12 16:17 ` Tim Chen
2016-08-16 9:52 ` Herbert Xu
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.