Re: [PATCH] padata: use smp_mb in padata_reorder to avoid orphaned padata jobs

2019-07-16 Thread Daniel Jordan
On 7/16/19 11:01 AM, Herbert Xu wrote: On Tue, Jul 16, 2019 at 02:53:09PM +0200, Andrea Parri wrote: P1(atomic_t *reorder_objects, spinlock_t *pd_lock, spinlock_t *reorder_lock) { int r1; spin_lock(reorder_lock); atomic_inc(reorder_objects); spin_unlock(reorder_

Re: [PATCH] padata: use smp_mb in padata_reorder to avoid orphaned padata jobs

2019-07-16 Thread Herbert Xu
On Tue, Jul 16, 2019 at 02:53:09PM +0200, Andrea Parri wrote: > > P1(atomic_t *reorder_objects, spinlock_t *pd_lock, spinlock_t *reorder_lock) > { > int r1; > > spin_lock(reorder_lock); > atomic_inc(reorder_objects); > spin_unlock(reorder_lock); > //smp_mb(); >

Re: [PATCH] padata: use smp_mb in padata_reorder to avoid orphaned padata jobs

2019-07-16 Thread Peter Zijlstra
On Tue, Jul 16, 2019 at 02:53:09PM +0200, Andrea Parri wrote: > C daniel-padata > > { } > > P0(atomic_t *reorder_objects, spinlock_t *pd_lock) > { > int r0; > > spin_lock(pd_lock); > spin_unlock(pd_lock); > smp_mb(); > r0 = atomic_read(reorder_objects); > } > > P1

Re: [PATCH] padata: use smp_mb in padata_reorder to avoid orphaned padata jobs

2019-07-16 Thread Andrea Parri
Hi Daniel, My two cents (summarizing some findings we discussed privately): > I think adding the full barrier guarantees the following ordering, and the > memory model people can correct me if I'm wrong: > > CPU21 CPU22 > -

Re: [PATCH] padata: use smp_mb in padata_reorder to avoid orphaned padata jobs

2019-07-16 Thread Steffen Klassert
On Tue, Jul 16, 2019 at 06:04:47PM +0800, Herbert Xu wrote: > On Mon, Jul 15, 2019 at 12:10:46PM -0400, Daniel Jordan wrote: > > > > I've been wrong before plenty of times, and there's nothing preventing this > > from being one of those times :) , but in this case I believe what I'm > > showing >

Re: [PATCH] padata: use smp_mb in padata_reorder to avoid orphaned padata jobs

2019-07-16 Thread Herbert Xu
On Mon, Jul 15, 2019 at 12:10:46PM -0400, Daniel Jordan wrote: > > I've been wrong before plenty of times, and there's nothing preventing this > from being one of those times :) , but in this case I believe what I'm showing > is correct. > > The padata_do_serial call for a given job ensures padata

Re: [PATCH] padata: use smp_mb in padata_reorder to avoid orphaned padata jobs

2019-07-15 Thread Daniel Jordan
On Sat, Jul 13, 2019 at 01:03:21PM +0800, Herbert Xu wrote: > On Fri, Jul 12, 2019 at 12:07:37PM -0400, Daniel Jordan wrote: > > > > modprobe (CPU2) kworker/21:1-293 (CPU21) > > kworker/5:2-276 (CPU5) > > --

Re: [PATCH] padata: use smp_mb in padata_reorder to avoid orphaned padata jobs

2019-07-12 Thread Herbert Xu
On Fri, Jul 12, 2019 at 12:07:37PM -0400, Daniel Jordan wrote: > > modprobe (CPU2) kworker/21:1-293 (CPU21) > kworker/5:2-276 (CPU5) > -- > -- > > ... >

Re: [PATCH] padata: use smp_mb in padata_reorder to avoid orphaned padata jobs

2019-07-12 Thread Daniel Jordan
On Fri, Jul 12, 2019 at 12:10:12PM +0200, Steffen Klassert wrote: > On Fri, Jul 12, 2019 at 06:06:36PM +0800, Herbert Xu wrote: > > Daniel Jordan wrote: > > > > > > CPU0 CPU1 > > > > > > padata_reorder padata_do_serial > > > LOAD reorder_objec

Re: [PATCH] padata: use smp_mb in padata_reorder to avoid orphaned padata jobs

2019-07-12 Thread Steffen Klassert
On Fri, Jul 12, 2019 at 06:06:36PM +0800, Herbert Xu wrote: > Daniel Jordan wrote: > > > > CPU0 CPU1 > > > > padata_reorder padata_do_serial > > LOAD reorder_objects // 0 > > INC reorder_objects // 1 >

Re: [PATCH] padata: use smp_mb in padata_reorder to avoid orphaned padata jobs

2019-07-12 Thread Herbert Xu
Daniel Jordan wrote: > > CPU0 CPU1 > > padata_reorder padata_do_serial > LOAD reorder_objects // 0 > INC reorder_objects // 1 > padata_reorder >

[PATCH] padata: use smp_mb in padata_reorder to avoid orphaned padata jobs

2019-07-11 Thread Daniel Jordan
Testing padata with the tcrypt module on a 5.2 kernel... # modprobe tcrypt alg="pcrypt(rfc4106(gcm(aes)))" type=3 # modprobe tcrypt mode=211 sec=1 ...produces this splat: INFO: task modprobe:10075 blocked for more than 120 seconds. Not tainted 5.2.0-base+ #16 modprobe