Re: [PATCH 1/1] rcu/tree: Drop the lock before entering to page allocator

2020-07-16 Thread Uladzislau Rezki
On Thu, Jul 16, 2020 at 02:27:07PM -0400, Joel Fernandes wrote: > On Thu, Jul 16, 2020 at 04:37:14PM +0200, Uladzislau Rezki wrote: > > On Thu, Jul 16, 2020 at 09:36:47AM -0400, Joel Fernandes wrote: > > > On Thu, Jul 16, 2020 at 11:19:13AM +0200, Uladzislau Rezki wrote: > > > > On Wed, Jul 15, 202

Re: [PATCH 1/1] rcu/tree: Drop the lock before entering to page allocator

2020-07-16 Thread Joel Fernandes
On Thu, Jul 16, 2020 at 04:37:14PM +0200, Uladzislau Rezki wrote: > On Thu, Jul 16, 2020 at 09:36:47AM -0400, Joel Fernandes wrote: > > On Thu, Jul 16, 2020 at 11:19:13AM +0200, Uladzislau Rezki wrote: > > > On Wed, Jul 15, 2020 at 07:13:33PM -0400, Joel Fernandes wrote: > > > > On Wed, Jul 15, 202

Re: [PATCH 1/1] rcu/tree: Drop the lock before entering to page allocator

2020-07-16 Thread Paul E. McKenney
On Thu, Jul 16, 2020 at 05:36:38PM +0200, Sebastian Andrzej Siewior wrote: > On 2020-07-16 08:20:27 [-0700], Paul E. McKenney wrote: > > You lost me on this one. I am instead concerned that something like this > > might be needed on short notice: > > > > raw_spin_lock(&some_lock); > > kfr

Re: [PATCH 1/1] rcu/tree: Drop the lock before entering to page allocator

2020-07-16 Thread Sebastian Andrzej Siewior
On 2020-07-16 08:20:27 [-0700], Paul E. McKenney wrote: > You lost me on this one. I am instead concerned that something like this > might be needed on short notice: > > raw_spin_lock(&some_lock); > kfree_rcu(some_pointer, some_field_offset); > > In contrast, single-argument kfree_rc

Re: [PATCH 1/1] rcu/tree: Drop the lock before entering to page allocator

2020-07-16 Thread Uladzislau Rezki
On Thu, Jul 16, 2020 at 05:04:14PM +0200, Sebastian Andrzej Siewior wrote: > On 2020-07-16 16:47:28 [+0200], Uladzislau Rezki wrote: > > On Thu, Jul 16, 2020 at 04:25:37PM +0200, Sebastian Andrzej Siewior wrote: > > > On 2020-07-16 11:19:13 [+0200], Uladzislau Rezki wrote: > > > > Sebastian, could

Re: [PATCH 1/1] rcu/tree: Drop the lock before entering to page allocator

2020-07-16 Thread Paul E. McKenney
On Thu, Jul 16, 2020 at 04:14:21PM +0200, Sebastian Andrzej Siewior wrote: > On 2020-07-15 15:14:49 [-0700], Paul E. McKenney wrote: > > > > My concern is that some critical bug will show up at some point > > that requires double-argument kfree_rcu() be invoked while holding > > a raw spinlock. (

Re: [PATCH 1/1] rcu/tree: Drop the lock before entering to page allocator

2020-07-16 Thread Sebastian Andrzej Siewior
On 2020-07-16 16:47:28 [+0200], Uladzislau Rezki wrote: > On Thu, Jul 16, 2020 at 04:25:37PM +0200, Sebastian Andrzej Siewior wrote: > > On 2020-07-16 11:19:13 [+0200], Uladzislau Rezki wrote: > > > Sebastian, could you please confirm that if that patch that is in > > > question fixes it? > > > >

Re: [PATCH 1/1] rcu/tree: Drop the lock before entering to page allocator

2020-07-16 Thread Uladzislau Rezki
On Thu, Jul 16, 2020 at 04:25:37PM +0200, Sebastian Andrzej Siewior wrote: > On 2020-07-16 11:19:13 [+0200], Uladzislau Rezki wrote: > > Sebastian, could you please confirm that if that patch that is in > > question fixes it? > > > > It would be appreciated! > > So that preempt disable should in

Re: [PATCH 1/1] rcu/tree: Drop the lock before entering to page allocator

2020-07-16 Thread Uladzislau Rezki
On Thu, Jul 16, 2020 at 09:36:47AM -0400, Joel Fernandes wrote: > On Thu, Jul 16, 2020 at 11:19:13AM +0200, Uladzislau Rezki wrote: > > On Wed, Jul 15, 2020 at 07:13:33PM -0400, Joel Fernandes wrote: > > > On Wed, Jul 15, 2020 at 2:56 PM Sebastian Andrzej Siewior > > > wrote: > > > > > > > > On 20

Re: [PATCH 1/1] rcu/tree: Drop the lock before entering to page allocator

2020-07-16 Thread Sebastian Andrzej Siewior
On 2020-07-16 11:19:13 [+0200], Uladzislau Rezki wrote: > Sebastian, could you please confirm that if that patch that is in > question fixes it? > > It would be appreciated! So that preempt disable should in terms any warnings. However I don't think that it is strictly needed and from scheduling

Re: [PATCH 1/1] rcu/tree: Drop the lock before entering to page allocator

2020-07-16 Thread Sebastian Andrzej Siewior
On 2020-07-15 15:14:49 [-0700], Paul E. McKenney wrote: > > My concern is that some critical bug will show up at some point > that requires double-argument kfree_rcu() be invoked while holding > a raw spinlock. (Single-argument kfree_rcu() must sometimes invoke > synchronize_rcu(), so it can neve

Re: [PATCH 1/1] rcu/tree: Drop the lock before entering to page allocator

2020-07-16 Thread Joel Fernandes
On Thu, Jul 16, 2020 at 11:19:13AM +0200, Uladzislau Rezki wrote: > On Wed, Jul 15, 2020 at 07:13:33PM -0400, Joel Fernandes wrote: > > On Wed, Jul 15, 2020 at 2:56 PM Sebastian Andrzej Siewior > > wrote: > > > > > > On 2020-07-15 20:35:37 [+0200], Uladzislau Rezki (Sony) wrote: > > > > @@ -3306,6

Re: [PATCH 1/1] rcu/tree: Drop the lock before entering to page allocator

2020-07-16 Thread Uladzislau Rezki
On Wed, Jul 15, 2020 at 07:13:33PM -0400, Joel Fernandes wrote: > On Wed, Jul 15, 2020 at 2:56 PM Sebastian Andrzej Siewior > wrote: > > > > On 2020-07-15 20:35:37 [+0200], Uladzislau Rezki (Sony) wrote: > > > @@ -3306,6 +3307,9 @@ kvfree_call_rcu_add_ptr_to_bulk(struct > > > kfree_rcu_cpu *krcp,

Re: [PATCH 1/1] rcu/tree: Drop the lock before entering to page allocator

2020-07-15 Thread Joel Fernandes
On Wed, Jul 15, 2020 at 2:56 PM Sebastian Andrzej Siewior wrote: > > On 2020-07-15 20:35:37 [+0200], Uladzislau Rezki (Sony) wrote: > > @@ -3306,6 +3307,9 @@ kvfree_call_rcu_add_ptr_to_bulk(struct kfree_rcu_cpu > > *krcp, void *ptr) > > if (IS_ENABLED(CONFIG_PREEMPT_RT)) > >

Re: [PATCH 1/1] rcu/tree: Drop the lock before entering to page allocator

2020-07-15 Thread Paul E. McKenney
On Wed, Jul 15, 2020 at 09:32:50PM +0200, Sebastian Andrzej Siewior wrote: > On 2020-07-15 21:02:43 [+0200], Uladzislau Rezki wrote: > > > > > > spin_lock(); > > __get_free_page(GFP_NOWAIT | __GFP_NOWARN); > > spin_unlock(); > > > > > > Also, please note we do it for regular kernel.

Re: [PATCH 1/1] rcu/tree: Drop the lock before entering to page allocator

2020-07-15 Thread Uladzislau Rezki
On Wed, Jul 15, 2020 at 09:32:50PM +0200, Sebastian Andrzej Siewior wrote: > On 2020-07-15 21:02:43 [+0200], Uladzislau Rezki wrote: > > > > > > spin_lock(); > > __get_free_page(GFP_NOWAIT | __GFP_NOWARN); > > spin_unlock(); > > > > > > Also, please note we do it for regular kernel.

Re: [PATCH 1/1] rcu/tree: Drop the lock before entering to page allocator

2020-07-15 Thread Sebastian Andrzej Siewior
On 2020-07-15 21:02:43 [+0200], Uladzislau Rezki wrote: > > > spin_lock(); > __get_free_page(GFP_NOWAIT | __GFP_NOWARN); > spin_unlock(); > > > Also, please note we do it for regular kernel. ach right okay then. > > > > What happened to the part where I asked for a spinlock_t? > >

Re: [PATCH 1/1] rcu/tree: Drop the lock before entering to page allocator

2020-07-15 Thread Uladzislau Rezki
On Wed, Jul 15, 2020 at 08:56:28PM +0200, Sebastian Andrzej Siewior wrote: > On 2020-07-15 20:35:37 [+0200], Uladzislau Rezki (Sony) wrote: > > @@ -3306,6 +3307,9 @@ kvfree_call_rcu_add_ptr_to_bulk(struct kfree_rcu_cpu > > *krcp, void *ptr) > > if (IS_ENABLED(CONFIG_PREEMPT_RT)

Re: [PATCH 1/1] rcu/tree: Drop the lock before entering to page allocator

2020-07-15 Thread Sebastian Andrzej Siewior
On 2020-07-15 20:35:37 [+0200], Uladzislau Rezki (Sony) wrote: > @@ -3306,6 +3307,9 @@ kvfree_call_rcu_add_ptr_to_bulk(struct kfree_rcu_cpu > *krcp, void *ptr) > if (IS_ENABLED(CONFIG_PREEMPT_RT)) > return false; > > + preem

[PATCH 1/1] rcu/tree: Drop the lock before entering to page allocator

2020-07-15 Thread Uladzislau Rezki (Sony)
If the kernel is built with CONFIG_PROVE_RAW_LOCK_NESTING option, the lockedp will complain about violation of the nesting rules. It does the raw_spinlock vs. spinlock nesting checks. Internally the kfree_rcu() uses raw_spinlock_t whereas the page allocator internally deals with spinlock_t to acce