RCU Archive on lore.kernel.org
 help / color / Atom feed
* [PATCH -rcu/dev] Please squash: fixup! rcu/tree: Add basic support for kfree_rcu() batching
@ 2019-08-17  4:22 Joel Fernandes (Google)
  2019-08-17  4:38 ` Paul Walmsley
  0 siblings, 1 reply; 4+ messages in thread
From: Joel Fernandes (Google) @ 2019-08-17  4:22 UTC (permalink / raw)
  To: linux-kernel
  Cc: Joel Fernandes (Google),
	Palmer Dabbelt, Paul E. McKenney, Paul Walmsley, rcu

xchg() on a bool is causing issues on riscv and arm32. Please squash
this into the -rcu dev branch to resolve the issue.

Please squash this fix.

Fixes: -rcu dev commit 3cbd3aa7d9c7bdf ("rcu/tree: Add basic support for kfree_rcu() batching")

Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org>
---
 kernel/rcu/tree.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
index 4f7c3096d786..33192a58b39a 100644
--- a/kernel/rcu/tree.c
+++ b/kernel/rcu/tree.c
@@ -2717,7 +2717,7 @@ struct kfree_rcu_cpu {
 	 * is busy, ->head just continues to grow and we retry flushing later.
 	 */
 	struct delayed_work monitor_work;
-	bool monitor_todo;	/* Is a delayed work pending execution? */
+	int monitor_todo;	/* Is a delayed work pending execution? */
 };
 
 static DEFINE_PER_CPU(struct kfree_rcu_cpu, krc);
@@ -2790,7 +2790,7 @@ static inline void kfree_rcu_drain_unlock(struct kfree_rcu_cpu *krcp,
 	/* Previous batch that was queued to RCU did not get free yet, let us
 	 * try again soon.
 	 */
-	if (!xchg(&krcp->monitor_todo, true))
+	if (!xchg(&krcp->monitor_todo, 1))
 		schedule_delayed_work(&krcp->monitor_work, KFREE_DRAIN_JIFFIES);
 	spin_unlock_irqrestore(&krcp->lock, flags);
 }
@@ -2806,7 +2806,7 @@ static void kfree_rcu_monitor(struct work_struct *work)
 						 monitor_work.work);
 
 	spin_lock_irqsave(&krcp->lock, flags);
-	if (xchg(&krcp->monitor_todo, false))
+	if (xchg(&krcp->monitor_todo, 0))
 		kfree_rcu_drain_unlock(krcp, flags);
 	else
 		spin_unlock_irqrestore(&krcp->lock, flags);
@@ -2858,7 +2858,7 @@ void kfree_call_rcu(struct rcu_head *head, rcu_callback_t func)
 	krcp->head = head;
 
 	/* Schedule monitor for timely drain after KFREE_DRAIN_JIFFIES. */
-	if (!xchg(&krcp->monitor_todo, true))
+	if (!xchg(&krcp->monitor_todo, 1))
 		schedule_delayed_work(&krcp->monitor_work, KFREE_DRAIN_JIFFIES);
 
 	spin_unlock(&krcp->lock);
-- 
2.23.0.rc1.153.gdeed80330f-goog


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH -rcu/dev] Please squash: fixup! rcu/tree: Add basic support for kfree_rcu() batching
  2019-08-17  4:22 [PATCH -rcu/dev] Please squash: fixup! rcu/tree: Add basic support for kfree_rcu() batching Joel Fernandes (Google)
@ 2019-08-17  4:38 ` Paul Walmsley
  2019-08-17  4:43   ` Joel Fernandes
  0 siblings, 1 reply; 4+ messages in thread
From: Paul Walmsley @ 2019-08-17  4:38 UTC (permalink / raw)
  To: Joel Fernandes (Google)
  Cc: linux-kernel, Palmer Dabbelt, Paul E. McKenney, rcu, linux-riscv

On Sat, 17 Aug 2019, Joel Fernandes (Google) wrote:

> xchg() on a bool is causing issues on riscv and arm32.

Indeed, it seems best not to use xchg() on any type that's not 32 bits 
long or that's not the CPU's native word size.  Probably we should update 
the documentation.

> Please squash this into the -rcu dev branch to resolve the issue.
> 
> Please squash this fix.
> 
> Fixes: -rcu dev commit 3cbd3aa7d9c7bdf ("rcu/tree: Add basic support for kfree_rcu() batching")
> 
> Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org>

Link: https://lore.kernel.org/lkml/alpine.DEB.2.21.9999.1908161931110.32497@viisi.sifive.com/T/#me9956f66cb611b95d26ae92700e1d901f46e8c59
Reviewed-by: Paul Walmsley <paul.walmsley@sifive.com>


- Paul

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH -rcu/dev] Please squash: fixup! rcu/tree: Add basic support for kfree_rcu() batching
  2019-08-17  4:38 ` Paul Walmsley
@ 2019-08-17  4:43   ` Joel Fernandes
  2019-08-17 21:42     ` Paul E. McKenney
  0 siblings, 1 reply; 4+ messages in thread
From: Joel Fernandes @ 2019-08-17  4:43 UTC (permalink / raw)
  To: Paul Walmsley
  Cc: linux-kernel, Palmer Dabbelt, Paul E. McKenney, rcu, linux-riscv

On Fri, Aug 16, 2019 at 09:38:54PM -0700, Paul Walmsley wrote:
> On Sat, 17 Aug 2019, Joel Fernandes (Google) wrote:
> 
> > xchg() on a bool is causing issues on riscv and arm32.
> 
> Indeed, it seems best not to use xchg() on any type that's not 32 bits 
> long or that's not the CPU's native word size.  Probably we should update 
> the documentation.

I would endorse any such documentation effort ;-)

> > Please squash this into the -rcu dev branch to resolve the issue.
> > 
> > Please squash this fix.
> > 
> > Fixes: -rcu dev commit 3cbd3aa7d9c7bdf ("rcu/tree: Add basic support for kfree_rcu() batching")
> > 
> > Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org>
> 
> Link: https://lore.kernel.org/lkml/alpine.DEB.2.21.9999.1908161931110.32497@viisi.sifive.com/T/#me9956f66cb611b95d26ae92700e1d901f46e8c59
> Reviewed-by: Paul Walmsley <paul.walmsley@sifive.com>

Thanks Paul! And nice to meet you again after many years ;-) Glad to see you
working on riscv.

thanks,

 - Joel


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH -rcu/dev] Please squash: fixup! rcu/tree: Add basic support for kfree_rcu() batching
  2019-08-17  4:43   ` Joel Fernandes
@ 2019-08-17 21:42     ` Paul E. McKenney
  0 siblings, 0 replies; 4+ messages in thread
From: Paul E. McKenney @ 2019-08-17 21:42 UTC (permalink / raw)
  To: Joel Fernandes
  Cc: Paul Walmsley, linux-kernel, Palmer Dabbelt, rcu, linux-riscv

On Sat, Aug 17, 2019 at 12:43:08AM -0400, Joel Fernandes wrote:
> On Fri, Aug 16, 2019 at 09:38:54PM -0700, Paul Walmsley wrote:
> > On Sat, 17 Aug 2019, Joel Fernandes (Google) wrote:
> > 
> > > xchg() on a bool is causing issues on riscv and arm32.
> > 
> > Indeed, it seems best not to use xchg() on any type that's not 32 bits 
> > long or that's not the CPU's native word size.  Probably we should update 
> > the documentation.
> 
> I would endorse any such documentation effort ;-)
> 
> > > Please squash this into the -rcu dev branch to resolve the issue.
> > > 
> > > Please squash this fix.

Done, please see below for updated version.

> > > Fixes: -rcu dev commit 3cbd3aa7d9c7bdf ("rcu/tree: Add basic support for kfree_rcu() batching")
> > > 
> > > Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org>
> > 
> > Link: https://lore.kernel.org/lkml/alpine.DEB.2.21.9999.1908161931110.32497@viisi.sifive.com/T/#me9956f66cb611b95d26ae92700e1d901f46e8c59
> > Reviewed-by: Paul Walmsley <paul.walmsley@sifive.com>

I added the link, thank you Paul!  If you meant the Reviewed-by to apply
to the entire kfree_rcu() patch, I will of course be very happy to apply
that as well.

> Thanks Paul! And nice to meet you again after many years ;-) Glad to see you
> working on riscv.

What Joel said!  ;-)

							Thanx, Paul

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, back to index

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-17  4:22 [PATCH -rcu/dev] Please squash: fixup! rcu/tree: Add basic support for kfree_rcu() batching Joel Fernandes (Google)
2019-08-17  4:38 ` Paul Walmsley
2019-08-17  4:43   ` Joel Fernandes
2019-08-17 21:42     ` Paul E. McKenney

RCU Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/rcu/0 rcu/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 rcu rcu/ https://lore.kernel.org/rcu \
		rcu@vger.kernel.org rcu@archiver.kernel.org
	public-inbox-index rcu

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.rcu


AGPL code for this site: git clone https://public-inbox.org/ public-inbox