* [PATCH tip/core/rcu 01/12] rcu: Remove rcu_swap_protected()
2019-12-10 4:07 [PATCH tip/core/rcu 0/12] Miscellaneous fixes for v5.6 Paul E. McKenney
@ 2019-12-10 4:07 ` paulmck
2019-12-11 3:35 ` Martin K. Petersen
2019-12-10 4:07 ` [PATCH tip/core/rcu 02/12] rcu: Mark non-global functions and variables as static paulmck
` (10 subsequent siblings)
11 siblings, 1 reply; 22+ messages in thread
From: paulmck @ 2019-12-10 4:07 UTC (permalink / raw)
To: rcu
Cc: linux-kernel, kernel-team, mingo, jiangshanlai, dipankar, akpm,
mathieu.desnoyers, josh, tglx, peterz, rostedt, dhowells,
edumazet, fweisbec, oleg, joel, Paul E. McKenney,
Bart Van Assche, Christoph Hellwig, Hannes Reinecke,
Johannes Thumshirn, Shane M Seymour, Martin K . Petersen
From: "Paul E. McKenney" <paulmck@kernel.org>
Now that the calls to rcu_swap_protected() have been replaced by
rcu_replace_pointer(), this commit removes rcu_swap_protected().
Link: https://lore.kernel.org/lkml/CAHk-=wiAsJLw1egFEE=Z7-GGtM6wcvtyytXZA1+BHqta4gg6Hw@mail.gmail.com/
Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Cc: Bart Van Assche <bart.vanassche@wdc.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Hannes Reinecke <hare@suse.de>
Cc: Johannes Thumshirn <jthumshirn@suse.de>
Cc: Shane M Seymour <shane.seymour@hpe.com>
Cc: Martin K. Petersen <martin.petersen@oracle.com>
---
include/linux/rcupdate.h | 16 ----------------
1 file changed, 16 deletions(-)
diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h
index 0b75063..fe47024 100644
--- a/include/linux/rcupdate.h
+++ b/include/linux/rcupdate.h
@@ -401,22 +401,6 @@ do { \
})
/**
- * rcu_swap_protected() - swap an RCU and a regular pointer
- * @rcu_ptr: RCU pointer
- * @ptr: regular pointer
- * @c: the conditions under which the dereference will take place
- *
- * Perform swap(@rcu_ptr, @ptr) where @rcu_ptr is an RCU-annotated pointer and
- * @c is the argument that is passed to the rcu_dereference_protected() call
- * used to read that pointer.
- */
-#define rcu_swap_protected(rcu_ptr, ptr, c) do { \
- typeof(ptr) __tmp = rcu_dereference_protected((rcu_ptr), (c)); \
- rcu_assign_pointer((rcu_ptr), (ptr)); \
- (ptr) = __tmp; \
-} while (0)
-
-/**
* rcu_access_pointer() - fetch RCU pointer with no dereferencing
* @p: The pointer to read
*
--
2.9.5
^ permalink raw reply related [flat|nested] 22+ messages in thread
* Re: [PATCH tip/core/rcu 01/12] rcu: Remove rcu_swap_protected()
2019-12-10 4:07 ` [PATCH tip/core/rcu 01/12] rcu: Remove rcu_swap_protected() paulmck
@ 2019-12-11 3:35 ` Martin K. Petersen
2019-12-11 3:51 ` Paul E. McKenney
0 siblings, 1 reply; 22+ messages in thread
From: Martin K. Petersen @ 2019-12-11 3:35 UTC (permalink / raw)
To: paulmck
Cc: rcu, linux-kernel, kernel-team, mingo, jiangshanlai, dipankar,
akpm, mathieu.desnoyers, josh, tglx, peterz, rostedt, dhowells,
edumazet, fweisbec, oleg, joel, Bart Van Assche,
Christoph Hellwig, Hannes Reinecke, Johannes Thumshirn,
Shane M Seymour, Martin K . Petersen
Paul,
> Now that the calls to rcu_swap_protected() have been replaced by
> rcu_replace_pointer(), this commit removes rcu_swap_protected().
It appears there are two callers remaining in Linus' master. Otherwise
looks good to me.
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
--
Martin K. Petersen Oracle Linux Engineering
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH tip/core/rcu 01/12] rcu: Remove rcu_swap_protected()
2019-12-11 3:35 ` Martin K. Petersen
@ 2019-12-11 3:51 ` Paul E. McKenney
2019-12-11 18:37 ` Paul E. McKenney
0 siblings, 1 reply; 22+ messages in thread
From: Paul E. McKenney @ 2019-12-11 3:51 UTC (permalink / raw)
To: Martin K. Petersen
Cc: rcu, linux-kernel, kernel-team, mingo, jiangshanlai, dipankar,
akpm, mathieu.desnoyers, josh, tglx, peterz, rostedt, dhowells,
edumazet, fweisbec, oleg, joel, Bart Van Assche,
Christoph Hellwig, Hannes Reinecke, Johannes Thumshirn,
Shane M Seymour
On Tue, Dec 10, 2019 at 10:35:49PM -0500, Martin K. Petersen wrote:
>
> Paul,
>
> > Now that the calls to rcu_swap_protected() have been replaced by
> > rcu_replace_pointer(), this commit removes rcu_swap_protected().
>
> It appears there are two callers remaining in Linus' master. Otherwise
> looks good to me.
I did queue a fix for one of them, and thank you for calling my
attention to the new one. This commit should hit -next soon, so
hopefully this will discourage further additions. ;-)
> Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
Thank you!
Thanx, Paul
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH tip/core/rcu 01/12] rcu: Remove rcu_swap_protected()
2019-12-11 3:51 ` Paul E. McKenney
@ 2019-12-11 18:37 ` Paul E. McKenney
2019-12-11 19:09 ` Matthias Brugger
0 siblings, 1 reply; 22+ messages in thread
From: Paul E. McKenney @ 2019-12-11 18:37 UTC (permalink / raw)
To: Martin K. Petersen
Cc: rcu, linux-kernel, kernel-team, mingo, jiangshanlai, dipankar,
akpm, mathieu.desnoyers, josh, tglx, peterz, rostedt, dhowells,
edumazet, fweisbec, oleg, joel, Bart Van Assche,
Christoph Hellwig, Hannes Reinecke, Johannes Thumshirn,
Shane M Seymour, Felix Fietkau, Lorenzo Bianconi, Ryder Lee,
Roy Luo, Kalle Valo, David S. Miller, Matthias Brugger
On Tue, Dec 10, 2019 at 07:51:22PM -0800, Paul E. McKenney wrote:
> On Tue, Dec 10, 2019 at 10:35:49PM -0500, Martin K. Petersen wrote:
> >
> > Paul,
> >
> > > Now that the calls to rcu_swap_protected() have been replaced by
> > > rcu_replace_pointer(), this commit removes rcu_swap_protected().
> >
> > It appears there are two callers remaining in Linus' master. Otherwise
> > looks good to me.
>
> I did queue a fix for one of them, and thank you for calling my
> attention to the new one. This commit should hit -next soon, so
> hopefully this will discourage further additions. ;-)
>
> > Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
>
> Thank you!
And here is the patch for the new one.
Thanx, Paul
------------------------------------------------------------------------
commit 10699d92c906707d679e28b099cd798a519b4f51
Author: Paul E. McKenney <paulmck@kernel.org>
Date: Wed Dec 11 10:30:21 2019 -0800
wireless/mediatek: Replace rcu_swap_protected() with rcu_replace_pointer()
This commit replaces the use of rcu_swap_protected() with the more
intuitively appealing rcu_replace_pointer() as a step towards removing
rcu_swap_protected().
Link: https://lore.kernel.org/lkml/CAHk-=wiAsJLw1egFEE=Z7-GGtM6wcvtyytXZA1+BHqta4gg6Hw@mail.gmail.com/
Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
Reported-by: "Martin K. Petersen" <martin.petersen@oracle.com>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Cc: Felix Fietkau <nbd@nbd.name>
Cc: Lorenzo Bianconi <lorenzo.bianconi83@gmail.com>
Cc: Ryder Lee <ryder.lee@mediatek.com>
Cc: Roy Luo <royluo@google.com>
Cc: Kalle Valo <kvalo@codeaurora.org>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Matthias Brugger <matthias.bgg@gmail.com>
Cc: <linux-wireless@vger.kernel.org>
Cc: <netdev@vger.kernel.org>
Cc: <linux-arm-kernel@lists.infradead.org>
Cc: <linux-mediatek@lists.infradead.org>
diff --git a/drivers/net/wireless/mediatek/mt76/agg-rx.c b/drivers/net/wireless/mediatek/mt76/agg-rx.c
index 53b5a4b..80986ce 100644
--- a/drivers/net/wireless/mediatek/mt76/agg-rx.c
+++ b/drivers/net/wireless/mediatek/mt76/agg-rx.c
@@ -281,8 +281,8 @@ void mt76_rx_aggr_stop(struct mt76_dev *dev, struct mt76_wcid *wcid, u8 tidno)
{
struct mt76_rx_tid *tid = NULL;
- rcu_swap_protected(wcid->aggr[tidno], tid,
- lockdep_is_held(&dev->mutex));
+ tid = rcu_swap_protected(wcid->aggr[tidno], tid,
+ lockdep_is_held(&dev->mutex));
if (tid) {
mt76_rx_aggr_shutdown(dev, tid);
kfree_rcu(tid, rcu_head);
^ permalink raw reply related [flat|nested] 22+ messages in thread
* Re: [PATCH tip/core/rcu 01/12] rcu: Remove rcu_swap_protected()
2019-12-11 18:37 ` Paul E. McKenney
@ 2019-12-11 19:09 ` Matthias Brugger
2019-12-11 23:12 ` Paul E. McKenney
0 siblings, 1 reply; 22+ messages in thread
From: Matthias Brugger @ 2019-12-11 19:09 UTC (permalink / raw)
To: paulmck, Martin K. Petersen
Cc: rcu, linux-kernel, kernel-team, mingo, jiangshanlai, dipankar,
akpm, mathieu.desnoyers, josh, tglx, peterz, rostedt, dhowells,
edumazet, fweisbec, oleg, joel, Bart Van Assche,
Christoph Hellwig, Hannes Reinecke, Johannes Thumshirn,
Shane M Seymour, Felix Fietkau, Lorenzo Bianconi, Ryder Lee,
Roy Luo, Kalle Valo, David S. Miller
On 11/12/2019 19:37, Paul E. McKenney wrote:
> On Tue, Dec 10, 2019 at 07:51:22PM -0800, Paul E. McKenney wrote:
>> On Tue, Dec 10, 2019 at 10:35:49PM -0500, Martin K. Petersen wrote:
>>>
>>> Paul,
>>>
>>>> Now that the calls to rcu_swap_protected() have been replaced by
>>>> rcu_replace_pointer(), this commit removes rcu_swap_protected().
>>>
>>> It appears there are two callers remaining in Linus' master. Otherwise
>>> looks good to me.
>>
>> I did queue a fix for one of them, and thank you for calling my
>> attention to the new one. This commit should hit -next soon, so
>> hopefully this will discourage further additions. ;-)
>>
>>> Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
>>
>> Thank you!
>
> And here is the patch for the new one.
>
> Thanx, Paul
>
> ------------------------------------------------------------------------
>
> commit 10699d92c906707d679e28b099cd798a519b4f51
> Author: Paul E. McKenney <paulmck@kernel.org>
> Date: Wed Dec 11 10:30:21 2019 -0800
>
> wireless/mediatek: Replace rcu_swap_protected() with rcu_replace_pointer()
>
> This commit replaces the use of rcu_swap_protected() with the more
> intuitively appealing rcu_replace_pointer() as a step towards removing
> rcu_swap_protected().
>
> Link: https://lore.kernel.org/lkml/CAHk-=wiAsJLw1egFEE=Z7-GGtM6wcvtyytXZA1+BHqta4gg6Hw@mail.gmail.com/
> Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
> Reported-by: "Martin K. Petersen" <martin.petersen@oracle.com>
> Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
> Cc: Felix Fietkau <nbd@nbd.name>
> Cc: Lorenzo Bianconi <lorenzo.bianconi83@gmail.com>
> Cc: Ryder Lee <ryder.lee@mediatek.com>
> Cc: Roy Luo <royluo@google.com>
> Cc: Kalle Valo <kvalo@codeaurora.org>
> Cc: "David S. Miller" <davem@davemloft.net>
> Cc: Matthias Brugger <matthias.bgg@gmail.com>
> Cc: <linux-wireless@vger.kernel.org>
> Cc: <netdev@vger.kernel.org>
> Cc: <linux-arm-kernel@lists.infradead.org>
> Cc: <linux-mediatek@lists.infradead.org>
>
> diff --git a/drivers/net/wireless/mediatek/mt76/agg-rx.c b/drivers/net/wireless/mediatek/mt76/agg-rx.c
> index 53b5a4b..80986ce 100644
> --- a/drivers/net/wireless/mediatek/mt76/agg-rx.c
> +++ b/drivers/net/wireless/mediatek/mt76/agg-rx.c
> @@ -281,8 +281,8 @@ void mt76_rx_aggr_stop(struct mt76_dev *dev, struct mt76_wcid *wcid, u8 tidno)
> {
> struct mt76_rx_tid *tid = NULL;
>
> - rcu_swap_protected(wcid->aggr[tidno], tid,
> - lockdep_is_held(&dev->mutex));
> + tid = rcu_swap_protected(wcid->aggr[tidno], tid,
> + lockdep_is_held(&dev->mutex));
I suppose you meant: rcu_replace_pointer() here.
Regards,
Matthias
> if (tid) {
> mt76_rx_aggr_shutdown(dev, tid);
> kfree_rcu(tid, rcu_head);
>
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH tip/core/rcu 01/12] rcu: Remove rcu_swap_protected()
2019-12-11 19:09 ` Matthias Brugger
@ 2019-12-11 23:12 ` Paul E. McKenney
2019-12-12 9:31 ` Kalle Valo
[not found] ` <87mubxdh52.fsf@kamboji.qca.qualcomm.com>
0 siblings, 2 replies; 22+ messages in thread
From: Paul E. McKenney @ 2019-12-11 23:12 UTC (permalink / raw)
To: Matthias Brugger
Cc: Martin K. Petersen, rcu, linux-kernel, kernel-team, mingo,
jiangshanlai, dipankar, akpm, mathieu.desnoyers, josh, tglx,
peterz, rostedt, dhowells, edumazet, fweisbec, oleg, joel,
Bart Van Assche, Christoph Hellwig, Hannes Reinecke,
Johannes Thumshirn, Shane M Seymour, Felix Fietkau,
Lorenzo Bianconi, Ryder Lee, Roy Luo, Kalle Valo,
David S. Miller
On Wed, Dec 11, 2019 at 08:09:11PM +0100, Matthias Brugger wrote:
>
>
> On 11/12/2019 19:37, Paul E. McKenney wrote:
> > On Tue, Dec 10, 2019 at 07:51:22PM -0800, Paul E. McKenney wrote:
> >> On Tue, Dec 10, 2019 at 10:35:49PM -0500, Martin K. Petersen wrote:
> >>>
> >>> Paul,
> >>>
> >>>> Now that the calls to rcu_swap_protected() have been replaced by
> >>>> rcu_replace_pointer(), this commit removes rcu_swap_protected().
> >>>
> >>> It appears there are two callers remaining in Linus' master. Otherwise
> >>> looks good to me.
> >>
> >> I did queue a fix for one of them, and thank you for calling my
> >> attention to the new one. This commit should hit -next soon, so
> >> hopefully this will discourage further additions. ;-)
> >>
> >>> Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
> >>
> >> Thank you!
> >
> > And here is the patch for the new one.
> >
> > Thanx, Paul
> >
> > ------------------------------------------------------------------------
> >
> > commit 10699d92c906707d679e28b099cd798a519b4f51
> > Author: Paul E. McKenney <paulmck@kernel.org>
> > Date: Wed Dec 11 10:30:21 2019 -0800
> >
> > wireless/mediatek: Replace rcu_swap_protected() with rcu_replace_pointer()
> >
> > This commit replaces the use of rcu_swap_protected() with the more
> > intuitively appealing rcu_replace_pointer() as a step towards removing
> > rcu_swap_protected().
> >
> > Link: https://lore.kernel.org/lkml/CAHk-=wiAsJLw1egFEE=Z7-GGtM6wcvtyytXZA1+BHqta4gg6Hw@mail.gmail.com/
> > Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
> > Reported-by: "Martin K. Petersen" <martin.petersen@oracle.com>
> > Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
> > Cc: Felix Fietkau <nbd@nbd.name>
> > Cc: Lorenzo Bianconi <lorenzo.bianconi83@gmail.com>
> > Cc: Ryder Lee <ryder.lee@mediatek.com>
> > Cc: Roy Luo <royluo@google.com>
> > Cc: Kalle Valo <kvalo@codeaurora.org>
> > Cc: "David S. Miller" <davem@davemloft.net>
> > Cc: Matthias Brugger <matthias.bgg@gmail.com>
> > Cc: <linux-wireless@vger.kernel.org>
> > Cc: <netdev@vger.kernel.org>
> > Cc: <linux-arm-kernel@lists.infradead.org>
> > Cc: <linux-mediatek@lists.infradead.org>
> >
> > diff --git a/drivers/net/wireless/mediatek/mt76/agg-rx.c b/drivers/net/wireless/mediatek/mt76/agg-rx.c
> > index 53b5a4b..80986ce 100644
> > --- a/drivers/net/wireless/mediatek/mt76/agg-rx.c
> > +++ b/drivers/net/wireless/mediatek/mt76/agg-rx.c
> > @@ -281,8 +281,8 @@ void mt76_rx_aggr_stop(struct mt76_dev *dev, struct mt76_wcid *wcid, u8 tidno)
> > {
> > struct mt76_rx_tid *tid = NULL;
> >
> > - rcu_swap_protected(wcid->aggr[tidno], tid,
> > - lockdep_is_held(&dev->mutex));
> > + tid = rcu_swap_protected(wcid->aggr[tidno], tid,
> > + lockdep_is_held(&dev->mutex));
>
> I suppose you meant: rcu_replace_pointer() here.
Indeed I did, and thank you for catching this! Bad patch day here. :-/
Update below...
Thanx, Paul
------------------------------------------------------------------------
commit ad5572b091429a45e863acaa6a36cf396d44f58d
Author: Paul E. McKenney <paulmck@kernel.org>
Date: Wed Dec 11 10:30:21 2019 -0800
wireless/mediatek: Replace rcu_swap_protected() with rcu_replace_pointer()
This commit replaces the use of rcu_swap_protected() with the more
intuitively appealing rcu_replace_pointer() as a step towards removing
rcu_swap_protected().
Link: https://lore.kernel.org/lkml/CAHk-=wiAsJLw1egFEE=Z7-GGtM6wcvtyytXZA1+BHqta4gg6Hw@mail.gmail.com/
Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
Reported-by: "Martin K. Petersen" <martin.petersen@oracle.com>
[ paulmck: Apply Matthias Brugger feedback. ]
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Reviewed-by: "Martin K. Petersen" <martin.petersen@oracle.com>
Cc: Felix Fietkau <nbd@nbd.name>
Cc: Lorenzo Bianconi <lorenzo.bianconi83@gmail.com>
Cc: Ryder Lee <ryder.lee@mediatek.com>
Cc: Roy Luo <royluo@google.com>
Cc: Kalle Valo <kvalo@codeaurora.org>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Matthias Brugger <matthias.bgg@gmail.com>
Cc: <linux-wireless@vger.kernel.org>
Cc: <netdev@vger.kernel.org>
Cc: <linux-arm-kernel@lists.infradead.org>
Cc: <linux-mediatek@lists.infradead.org>
diff --git a/drivers/net/wireless/mediatek/mt76/agg-rx.c b/drivers/net/wireless/mediatek/mt76/agg-rx.c
index 53b5a4b..59c1878 100644
--- a/drivers/net/wireless/mediatek/mt76/agg-rx.c
+++ b/drivers/net/wireless/mediatek/mt76/agg-rx.c
@@ -281,8 +281,8 @@ void mt76_rx_aggr_stop(struct mt76_dev *dev, struct mt76_wcid *wcid, u8 tidno)
{
struct mt76_rx_tid *tid = NULL;
- rcu_swap_protected(wcid->aggr[tidno], tid,
- lockdep_is_held(&dev->mutex));
+ tid = rcu_replace_pointer(wcid->aggr[tidno], tid,
+ lockdep_is_held(&dev->mutex));
if (tid) {
mt76_rx_aggr_shutdown(dev, tid);
kfree_rcu(tid, rcu_head);
^ permalink raw reply related [flat|nested] 22+ messages in thread
* Re: [PATCH tip/core/rcu 01/12] rcu: Remove rcu_swap_protected()
2019-12-11 23:12 ` Paul E. McKenney
@ 2019-12-12 9:31 ` Kalle Valo
[not found] ` <87mubxdh52.fsf@kamboji.qca.qualcomm.com>
1 sibling, 0 replies; 22+ messages in thread
From: Kalle Valo @ 2019-12-12 9:31 UTC (permalink / raw)
To: Paul E. McKenney
Cc: Matthias Brugger, Martin K. Petersen, rcu, linux-kernel,
kernel-team, mingo, jiangshanlai, dipankar, akpm,
mathieu.desnoyers, josh, tglx, peterz, rostedt, dhowells,
edumazet, fweisbec, oleg, joel, Bart Van Assche,
Christoph Hellwig, Hannes Reinecke, Johannes Thumshirn,
Shane M Seymour, Felix Fietkau, Lorenzo Bianconi, Ryder Lee,
Roy Luo, David S. Miller, linux-wireless
+ linux-wireless
"Paul E. McKenney" <paulmck@kernel.org> writes:
> On Wed, Dec 11, 2019 at 08:09:11PM +0100, Matthias Brugger wrote:
>> On 11/12/2019 19:37, Paul E. McKenney wrote:
>>
>> > --- a/drivers/net/wireless/mediatek/mt76/agg-rx.c
>> > +++ b/drivers/net/wireless/mediatek/mt76/agg-rx.c
>> > @@ -281,8 +281,8 @@ void mt76_rx_aggr_stop(struct mt76_dev *dev, struct mt76_wcid *wcid, u8 tidno)
>> > {
>> > struct mt76_rx_tid *tid = NULL;
>> >
>> > - rcu_swap_protected(wcid->aggr[tidno], tid,
>> > - lockdep_is_held(&dev->mutex));
>> > + tid = rcu_swap_protected(wcid->aggr[tidno], tid,
>> > + lockdep_is_held(&dev->mutex));
>>
>> I suppose you meant: rcu_replace_pointer() here.
>
> Indeed I did, and thank you for catching this! Bad patch day here. :-/
>
> Update below...
>
> Thanx, Paul
>
> ------------------------------------------------------------------------
>
> commit ad5572b091429a45e863acaa6a36cf396d44f58d
> Author: Paul E. McKenney <paulmck@kernel.org>
> Date: Wed Dec 11 10:30:21 2019 -0800
>
> wireless/mediatek: Replace rcu_swap_protected() with rcu_replace_pointer()
>
> This commit replaces the use of rcu_swap_protected() with the more
> intuitively appealing rcu_replace_pointer() as a step towards removing
> rcu_swap_protected().
>
> Link: https://lore.kernel.org/lkml/CAHk-=wiAsJLw1egFEE=Z7-GGtM6wcvtyytXZA1+BHqta4gg6Hw@mail.gmail.com/
> Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
> Reported-by: "Martin K. Petersen" <martin.petersen@oracle.com>
> [ paulmck: Apply Matthias Brugger feedback. ]
> Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
> Reviewed-by: "Martin K. Petersen" <martin.petersen@oracle.com>
> Cc: Felix Fietkau <nbd@nbd.name>
> Cc: Lorenzo Bianconi <lorenzo.bianconi83@gmail.com>
> Cc: Ryder Lee <ryder.lee@mediatek.com>
> Cc: Roy Luo <royluo@google.com>
> Cc: Kalle Valo <kvalo@codeaurora.org>
> Cc: "David S. Miller" <davem@davemloft.net>
> Cc: Matthias Brugger <matthias.bgg@gmail.com>
> Cc: <linux-wireless@vger.kernel.org>
> Cc: <netdev@vger.kernel.org>
> Cc: <linux-arm-kernel@lists.infradead.org>
> Cc: <linux-mediatek@lists.infradead.org>
Via which tree is this supposed to go? If I should take this please
resend to linux-wireless so that patchwork sees it, but if someone else
is planning to take this:
Acked-by: Kalle Valo <kvalo@codeaurora.org>
--
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
^ permalink raw reply [flat|nested] 22+ messages in thread
[parent not found: <87mubxdh52.fsf@kamboji.qca.qualcomm.com>]
* Re: [PATCH tip/core/rcu 01/12] rcu: Remove rcu_swap_protected()
[not found] ` <87mubxdh52.fsf@kamboji.qca.qualcomm.com>
@ 2019-12-12 18:21 ` Paul E. McKenney
0 siblings, 0 replies; 22+ messages in thread
From: Paul E. McKenney @ 2019-12-12 18:21 UTC (permalink / raw)
To: Kalle Valo
Cc: Matthias Brugger, Martin K. Petersen, rcu, linux-kernel,
kernel-team, mingo, jiangshanlai, dipankar, akpm,
mathieu.desnoyers, josh, tglx, peterz, rostedt, dhowells,
edumazet, fweisbec, oleg, joel, Bart Van Assche,
Christoph Hellwig, Hannes Reinecke, Johannes Thumshirn,
Shane M Seymour, Felix Fietkau, Lorenzo Bianconi, Ryder Lee,
Roy Luo, David S. Miller, linux-wireless
On Thu, Dec 12, 2019 at 11:31:37AM +0200, Kalle Valo wrote:
> + linux-wireless
>
> "Paul E. McKenney" <paulmck@kernel.org> writes:
>
> > On Wed, Dec 11, 2019 at 08:09:11PM +0100, Matthias Brugger wrote:
> >> On 11/12/2019 19:37, Paul E. McKenney wrote:
> >>
> >> > --- a/drivers/net/wireless/mediatek/mt76/agg-rx.c
> >> > +++ b/drivers/net/wireless/mediatek/mt76/agg-rx.c
> >> > @@ -281,8 +281,8 @@ void mt76_rx_aggr_stop(struct mt76_dev *dev, struct mt76_wcid *wcid, u8 tidno)
> >> > {
> >> > struct mt76_rx_tid *tid = NULL;
> >> >
> >> > - rcu_swap_protected(wcid->aggr[tidno], tid,
> >> > - lockdep_is_held(&dev->mutex));
> >> > + tid = rcu_swap_protected(wcid->aggr[tidno], tid,
> >> > + lockdep_is_held(&dev->mutex));
> >>
> >> I suppose you meant: rcu_replace_pointer() here.
> >
> > Indeed I did, and thank you for catching this! Bad patch day here. :-/
> >
> > Update below...
> >
> > Thanx, Paul
> >
> > ------------------------------------------------------------------------
> >
> > commit ad5572b091429a45e863acaa6a36cf396d44f58d
> > Author: Paul E. McKenney <paulmck@kernel.org>
> > Date: Wed Dec 11 10:30:21 2019 -0800
> >
> > wireless/mediatek: Replace rcu_swap_protected() with rcu_replace_pointer()
> >
> > This commit replaces the use of rcu_swap_protected() with the more
> > intuitively appealing rcu_replace_pointer() as a step towards removing
> > rcu_swap_protected().
> >
> > Link: https://lore.kernel.org/lkml/CAHk-=wiAsJLw1egFEE=Z7-GGtM6wcvtyytXZA1+BHqta4gg6Hw@mail.gmail.com/
> > Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
> > Reported-by: "Martin K. Petersen" <martin.petersen@oracle.com>
> > [ paulmck: Apply Matthias Brugger feedback. ]
> > Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
> > Reviewed-by: "Martin K. Petersen" <martin.petersen@oracle.com>
> > Cc: Felix Fietkau <nbd@nbd.name>
> > Cc: Lorenzo Bianconi <lorenzo.bianconi83@gmail.com>
> > Cc: Ryder Lee <ryder.lee@mediatek.com>
> > Cc: Roy Luo <royluo@google.com>
> > Cc: Kalle Valo <kvalo@codeaurora.org>
> > Cc: "David S. Miller" <davem@davemloft.net>
> > Cc: Matthias Brugger <matthias.bgg@gmail.com>
> > Cc: <linux-wireless@vger.kernel.org>
> > Cc: <netdev@vger.kernel.org>
> > Cc: <linux-arm-kernel@lists.infradead.org>
> > Cc: <linux-mediatek@lists.infradead.org>
>
> Via which tree is this supposed to go? If I should take this please
> resend to linux-wireless so that patchwork sees it, but if someone else
> is planning to take this:
>
> Acked-by: Kalle Valo <kvalo@codeaurora.org>
I have queued it just preceding the commit that remove rcu_swap_protected()
with your ack, thank you!
Thanx, Paul
^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH tip/core/rcu 02/12] rcu: Mark non-global functions and variables as static
2019-12-10 4:07 [PATCH tip/core/rcu 0/12] Miscellaneous fixes for v5.6 Paul E. McKenney
2019-12-10 4:07 ` [PATCH tip/core/rcu 01/12] rcu: Remove rcu_swap_protected() paulmck
@ 2019-12-10 4:07 ` paulmck
2019-12-10 4:07 ` [PATCH tip/core/rcu 03/12] rcu: Fix harmless omission of "CONFIG_" from #if condition paulmck
` (9 subsequent siblings)
11 siblings, 0 replies; 22+ messages in thread
From: paulmck @ 2019-12-10 4:07 UTC (permalink / raw)
To: rcu
Cc: linux-kernel, kernel-team, mingo, jiangshanlai, dipankar, akpm,
mathieu.desnoyers, josh, tglx, peterz, rostedt, dhowells,
edumazet, fweisbec, oleg, joel, Paul E. McKenney
From: "Paul E. McKenney" <paulmck@kernel.org>
Each of rcu_state, rcu_rnp_online_cpus(), rcu_dynticks_curr_cpu_in_eqs(),
and rcu_dynticks_snap() are used only in the kernel/rcu/tree.o translation
unit, and may thus be marked static. This commit therefore makes this
change.
Reported-by: Ben Dooks <ben.dooks@codethink.co.uk>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Reviewed-by: Joel Fernandes (Google) <joel@joelfernandes.org>
---
kernel/rcu/tree.c | 8 ++++----
kernel/rcu/tree.h | 2 --
2 files changed, 4 insertions(+), 6 deletions(-)
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
index 1694a6b..dd8cfc3 100644
--- a/kernel/rcu/tree.c
+++ b/kernel/rcu/tree.c
@@ -84,7 +84,7 @@ static DEFINE_PER_CPU_SHARED_ALIGNED(struct rcu_data, rcu_data) = {
.dynticks_nmi_nesting = DYNTICK_IRQ_NONIDLE,
.dynticks = ATOMIC_INIT(RCU_DYNTICK_CTRL_CTR),
};
-struct rcu_state rcu_state = {
+static struct rcu_state rcu_state = {
.level = { &rcu_state.node[0] },
.gp_state = RCU_GP_IDLE,
.gp_seq = (0UL - 300UL) << RCU_SEQ_CTR_SHIFT,
@@ -188,7 +188,7 @@ EXPORT_SYMBOL_GPL(rcu_get_gp_kthreads_prio);
* held, but the bit corresponding to the current CPU will be stable
* in most contexts.
*/
-unsigned long rcu_rnp_online_cpus(struct rcu_node *rnp)
+static unsigned long rcu_rnp_online_cpus(struct rcu_node *rnp)
{
return READ_ONCE(rnp->qsmaskinitnext);
}
@@ -294,7 +294,7 @@ static void rcu_dynticks_eqs_online(void)
*
* No ordering, as we are sampling CPU-local information.
*/
-bool rcu_dynticks_curr_cpu_in_eqs(void)
+static bool rcu_dynticks_curr_cpu_in_eqs(void)
{
struct rcu_data *rdp = this_cpu_ptr(&rcu_data);
@@ -305,7 +305,7 @@ bool rcu_dynticks_curr_cpu_in_eqs(void)
* Snapshot the ->dynticks counter with full ordering so as to allow
* stable comparison of this counter with past and future snapshots.
*/
-int rcu_dynticks_snap(struct rcu_data *rdp)
+static int rcu_dynticks_snap(struct rcu_data *rdp)
{
int snap = atomic_add_return(0, &rdp->dynticks);
diff --git a/kernel/rcu/tree.h b/kernel/rcu/tree.h
index 055c317..e4dc5de 100644
--- a/kernel/rcu/tree.h
+++ b/kernel/rcu/tree.h
@@ -403,8 +403,6 @@ static const char *tp_rcu_varname __used __tracepoint_string = rcu_name;
#define RCU_NAME rcu_name
#endif /* #else #ifdef CONFIG_TRACING */
-int rcu_dynticks_snap(struct rcu_data *rdp);
-
/* Forward declarations for tree_plugin.h */
static void rcu_bootup_announce(void);
static void rcu_qs(void);
--
2.9.5
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH tip/core/rcu 03/12] rcu: Fix harmless omission of "CONFIG_" from #if condition
2019-12-10 4:07 [PATCH tip/core/rcu 0/12] Miscellaneous fixes for v5.6 Paul E. McKenney
2019-12-10 4:07 ` [PATCH tip/core/rcu 01/12] rcu: Remove rcu_swap_protected() paulmck
2019-12-10 4:07 ` [PATCH tip/core/rcu 02/12] rcu: Mark non-global functions and variables as static paulmck
@ 2019-12-10 4:07 ` paulmck
2019-12-10 4:07 ` [PATCH tip/core/rcu 04/12] rcu: Fix tracepoint tracking RCU CPU kthread utilization paulmck
` (8 subsequent siblings)
11 siblings, 0 replies; 22+ messages in thread
From: paulmck @ 2019-12-10 4:07 UTC (permalink / raw)
To: rcu
Cc: linux-kernel, kernel-team, mingo, jiangshanlai, dipankar, akpm,
mathieu.desnoyers, josh, tglx, peterz, rostedt, dhowells,
edumazet, fweisbec, oleg, joel, Lai Jiangshan, Paul E . McKenney
From: Lai Jiangshan <laijs@linux.alibaba.com>
The C preprocessor macros SRCU and TINY_RCU should instead be CONFIG_SRCU
and CONFIG_TINY_RCU, respectively in the #f in kernel/rcu/rcu.h. But
there is no harm when "TINY_RCU" is wrongly used, which are always
non-defined, which makes "!defined(TINY_RCU)" always true, which means
the code block is always included, and the included code block doesn't
cause any compilation error so far in CONFIG_TINY_RCU builds. It is
also the reason this change should not be taken in -stable.
This commit adds the needed "CONFIG_" prefix to both macros.
Not for -stable.
Signed-off-by: Lai Jiangshan <jiangshanlai@gmail.com>
Signed-off-by: Lai Jiangshan <laijs@linux.alibaba.com>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---
kernel/rcu/rcu.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/kernel/rcu/rcu.h b/kernel/rcu/rcu.h
index ab504fb..4732594 100644
--- a/kernel/rcu/rcu.h
+++ b/kernel/rcu/rcu.h
@@ -281,7 +281,7 @@ void rcu_test_sync_prims(void);
*/
extern void resched_cpu(int cpu);
-#if defined(SRCU) || !defined(TINY_RCU)
+#if defined(CONFIG_SRCU) || !defined(CONFIG_TINY_RCU)
#include <linux/rcu_node_tree.h>
@@ -418,7 +418,7 @@ do { \
#define raw_lockdep_assert_held_rcu_node(p) \
lockdep_assert_held(&ACCESS_PRIVATE(p, lock))
-#endif /* #if defined(SRCU) || !defined(TINY_RCU) */
+#endif /* #if defined(CONFIG_SRCU) || !defined(CONFIG_TINY_RCU) */
#ifdef CONFIG_SRCU
void srcu_init(void);
--
2.9.5
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH tip/core/rcu 04/12] rcu: Fix tracepoint tracking RCU CPU kthread utilization
2019-12-10 4:07 [PATCH tip/core/rcu 0/12] Miscellaneous fixes for v5.6 Paul E. McKenney
` (2 preceding siblings ...)
2019-12-10 4:07 ` [PATCH tip/core/rcu 03/12] rcu: Fix harmless omission of "CONFIG_" from #if condition paulmck
@ 2019-12-10 4:07 ` paulmck
2019-12-10 4:07 ` [PATCH tip/core/rcu 05/12] rcu: Remove the declaration of call_rcu() in tree.h paulmck
` (7 subsequent siblings)
11 siblings, 0 replies; 22+ messages in thread
From: paulmck @ 2019-12-10 4:07 UTC (permalink / raw)
To: rcu
Cc: linux-kernel, kernel-team, mingo, jiangshanlai, dipankar, akpm,
mathieu.desnoyers, josh, tglx, peterz, rostedt, dhowells,
edumazet, fweisbec, oleg, joel, Lai Jiangshan, Paul E . McKenney
From: Lai Jiangshan <laijs@linux.alibaba.com>
In the call to trace_rcu_utilization() at the start of the loop in
rcu_cpu_kthread(), "rcu_wait" is incorrect, plus this trace event needs
to be hoisted above the loop to balance with either the "rcu_wait" or
"rcu_yield", depending on how the loop exits. This commit therefore
makes these changes.
Signed-off-by: Lai Jiangshan <jiangshanlai@gmail.com>
Signed-off-by: Lai Jiangshan <laijs@linux.alibaba.com>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---
kernel/rcu/tree.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
index dd8cfc3..ba154a3 100644
--- a/kernel/rcu/tree.c
+++ b/kernel/rcu/tree.c
@@ -2474,8 +2474,8 @@ static void rcu_cpu_kthread(unsigned int cpu)
char work, *workp = this_cpu_ptr(&rcu_data.rcu_cpu_has_work);
int spincnt;
+ trace_rcu_utilization(TPS("Start CPU kthread@rcu_run"));
for (spincnt = 0; spincnt < 10; spincnt++) {
- trace_rcu_utilization(TPS("Start CPU kthread@rcu_wait"));
local_bh_disable();
*statusp = RCU_KTHREAD_RUNNING;
local_irq_disable();
--
2.9.5
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH tip/core/rcu 05/12] rcu: Remove the declaration of call_rcu() in tree.h
2019-12-10 4:07 [PATCH tip/core/rcu 0/12] Miscellaneous fixes for v5.6 Paul E. McKenney
` (3 preceding siblings ...)
2019-12-10 4:07 ` [PATCH tip/core/rcu 04/12] rcu: Fix tracepoint tracking RCU CPU kthread utilization paulmck
@ 2019-12-10 4:07 ` paulmck
2019-12-10 4:07 ` [PATCH tip/core/rcu 06/12] rcu: Move gp_state_names[] and gp_state_getname() to tree_stall.h paulmck
` (6 subsequent siblings)
11 siblings, 0 replies; 22+ messages in thread
From: paulmck @ 2019-12-10 4:07 UTC (permalink / raw)
To: rcu
Cc: linux-kernel, kernel-team, mingo, jiangshanlai, dipankar, akpm,
mathieu.desnoyers, josh, tglx, peterz, rostedt, dhowells,
edumazet, fweisbec, oleg, joel, Lai Jiangshan, Paul E . McKenney
From: Lai Jiangshan <laijs@linux.alibaba.com>
The call_rcu() function is an external RCU API that is declared in
include/linux/rcupdate.h. There is thus no point in redeclaring it
in kernel/rcu/tree.h, so this commit removes that redundant declaration.
Signed-off-by: Lai Jiangshan <jiangshanlai@gmail.com>
Signed-off-by: Lai Jiangshan <laijs@linux.alibaba.com>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---
kernel/rcu/tree.h | 1 -
1 file changed, 1 deletion(-)
diff --git a/kernel/rcu/tree.h b/kernel/rcu/tree.h
index e4dc5de..54ff989 100644
--- a/kernel/rcu/tree.h
+++ b/kernel/rcu/tree.h
@@ -413,7 +413,6 @@ static bool rcu_preempt_has_tasks(struct rcu_node *rnp);
static int rcu_print_task_exp_stall(struct rcu_node *rnp);
static void rcu_preempt_check_blocked_tasks(struct rcu_node *rnp);
static void rcu_flavor_sched_clock_irq(int user);
-void call_rcu(struct rcu_head *head, rcu_callback_t func);
static void dump_blkd_tasks(struct rcu_node *rnp, int ncheck);
static void rcu_initiate_boost(struct rcu_node *rnp, unsigned long flags);
static void rcu_preempt_boost_start_gp(struct rcu_node *rnp);
--
2.9.5
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH tip/core/rcu 06/12] rcu: Move gp_state_names[] and gp_state_getname() to tree_stall.h
2019-12-10 4:07 [PATCH tip/core/rcu 0/12] Miscellaneous fixes for v5.6 Paul E. McKenney
` (4 preceding siblings ...)
2019-12-10 4:07 ` [PATCH tip/core/rcu 05/12] rcu: Remove the declaration of call_rcu() in tree.h paulmck
@ 2019-12-10 4:07 ` paulmck
2019-12-10 4:07 ` [PATCH tip/core/rcu 07/12] rcu: Move rcu_{expedited,normal} definitions into rcupdate.h paulmck
` (5 subsequent siblings)
11 siblings, 0 replies; 22+ messages in thread
From: paulmck @ 2019-12-10 4:07 UTC (permalink / raw)
To: rcu
Cc: linux-kernel, kernel-team, mingo, jiangshanlai, dipankar, akpm,
mathieu.desnoyers, josh, tglx, peterz, rostedt, dhowells,
edumazet, fweisbec, oleg, joel, Lai Jiangshan, Paul E . McKenney
From: Lai Jiangshan <laijs@linux.alibaba.com>
Only tree_stall.h needs to get name from GP state, so this commit
moves the gp_state_names[] array and the gp_state_getname()
from kernel/rcu/tree.h and kernel/rcu/tree.c, respectively, to
kernel/rcu/tree_stall.h. While moving gp_state_names[], this commit
uses the GCC syntax to ensure that the right string is associated with
the right CPP macro.
Signed-off-by: Lai Jiangshan <jiangshanlai@gmail.com>
Signed-off-by: Lai Jiangshan <laijs@linux.alibaba.com>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---
kernel/rcu/tree.c | 10 ----------
kernel/rcu/tree.h | 12 ------------
kernel/rcu/tree_stall.h | 22 ++++++++++++++++++++++
3 files changed, 22 insertions(+), 22 deletions(-)
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
index ba154a3..bbb60ed 100644
--- a/kernel/rcu/tree.c
+++ b/kernel/rcu/tree.c
@@ -529,16 +529,6 @@ static struct rcu_node *rcu_get_root(void)
}
/*
- * Convert a ->gp_state value to a character string.
- */
-static const char *gp_state_getname(short gs)
-{
- if (gs < 0 || gs >= ARRAY_SIZE(gp_state_names))
- return "???";
- return gp_state_names[gs];
-}
-
-/*
* Send along grace-period-related data for rcutorture diagnostics.
*/
void rcutorture_get_gp_data(enum rcutorture_type test_type, int *flags,
diff --git a/kernel/rcu/tree.h b/kernel/rcu/tree.h
index 54ff989..9d5986a 100644
--- a/kernel/rcu/tree.h
+++ b/kernel/rcu/tree.h
@@ -368,18 +368,6 @@ struct rcu_state {
#define RCU_GP_CLEANUP 7 /* Grace-period cleanup started. */
#define RCU_GP_CLEANED 8 /* Grace-period cleanup complete. */
-static const char * const gp_state_names[] = {
- "RCU_GP_IDLE",
- "RCU_GP_WAIT_GPS",
- "RCU_GP_DONE_GPS",
- "RCU_GP_ONOFF",
- "RCU_GP_INIT",
- "RCU_GP_WAIT_FQS",
- "RCU_GP_DOING_FQS",
- "RCU_GP_CLEANUP",
- "RCU_GP_CLEANED",
-};
-
/*
* In order to export the rcu_state name to the tracing tools, it
* needs to be added in the __tracepoint_string section.
diff --git a/kernel/rcu/tree_stall.h b/kernel/rcu/tree_stall.h
index c0b8c45..f18adaf 100644
--- a/kernel/rcu/tree_stall.h
+++ b/kernel/rcu/tree_stall.h
@@ -279,6 +279,28 @@ static void print_cpu_stall_fast_no_hz(char *cp, int cpu)
#endif /* #else #ifdef CONFIG_RCU_FAST_NO_HZ */
+static const char * const gp_state_names[] = {
+ [RCU_GP_IDLE] = "RCU_GP_IDLE",
+ [RCU_GP_WAIT_GPS] = "RCU_GP_WAIT_GPS",
+ [RCU_GP_DONE_GPS] = "RCU_GP_DONE_GPS",
+ [RCU_GP_ONOFF] = "RCU_GP_ONOFF",
+ [RCU_GP_INIT] = "RCU_GP_INIT",
+ [RCU_GP_WAIT_FQS] = "RCU_GP_WAIT_FQS",
+ [RCU_GP_DOING_FQS] = "RCU_GP_DOING_FQS",
+ [RCU_GP_CLEANUP] = "RCU_GP_CLEANUP",
+ [RCU_GP_CLEANED] = "RCU_GP_CLEANED",
+};
+
+/*
+ * Convert a ->gp_state value to a character string.
+ */
+static const char *gp_state_getname(short gs)
+{
+ if (gs < 0 || gs >= ARRAY_SIZE(gp_state_names))
+ return "???";
+ return gp_state_names[gs];
+}
+
/*
* Print out diagnostic information for the specified stalled CPU.
*
--
2.9.5
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH tip/core/rcu 07/12] rcu: Move rcu_{expedited,normal} definitions into rcupdate.h
2019-12-10 4:07 [PATCH tip/core/rcu 0/12] Miscellaneous fixes for v5.6 Paul E. McKenney
` (5 preceding siblings ...)
2019-12-10 4:07 ` [PATCH tip/core/rcu 06/12] rcu: Move gp_state_names[] and gp_state_getname() to tree_stall.h paulmck
@ 2019-12-10 4:07 ` paulmck
2019-12-10 4:07 ` [PATCH tip/core/rcu 08/12] rcu: Switch force_qs_rnp() to for_each_leaf_node_cpu_mask() paulmck
` (4 subsequent siblings)
11 siblings, 0 replies; 22+ messages in thread
From: paulmck @ 2019-12-10 4:07 UTC (permalink / raw)
To: rcu
Cc: linux-kernel, kernel-team, mingo, jiangshanlai, dipankar, akpm,
mathieu.desnoyers, josh, tglx, peterz, rostedt, dhowells,
edumazet, fweisbec, oleg, joel, Ben Dooks, Paul E . McKenney
From: Ben Dooks <ben.dooks@codethink.co.uk>
This commit moves the rcu_{expedited,normal} definitions from
kernel/rcu/update.c to include/linux/rcupdate.h to make sure they are
in sync, and also to avoid the following warning from sparse:
kernel/ksysfs.c:150:5: warning: symbol 'rcu_expedited' was not declared. Should it be static?
kernel/ksysfs.c:167:5: warning: symbol 'rcu_normal' was not declared. Should it be static?
Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---
include/linux/rcupdate.h | 4 ++++
kernel/rcu/update.c | 2 --
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h
index fe47024..bb363796 100644
--- a/include/linux/rcupdate.h
+++ b/include/linux/rcupdate.h
@@ -896,4 +896,8 @@ rcu_head_after_call_rcu(struct rcu_head *rhp, rcu_callback_t f)
return false;
}
+/* kernel/ksysfs.c definitions */
+extern int rcu_expedited;
+extern int rcu_normal;
+
#endif /* __LINUX_RCUPDATE_H */
diff --git a/kernel/rcu/update.c b/kernel/rcu/update.c
index 1861103..294d357 100644
--- a/kernel/rcu/update.c
+++ b/kernel/rcu/update.c
@@ -51,9 +51,7 @@
#define MODULE_PARAM_PREFIX "rcupdate."
#ifndef CONFIG_TINY_RCU
-extern int rcu_expedited; /* from sysctl */
module_param(rcu_expedited, int, 0);
-extern int rcu_normal; /* from sysctl */
module_param(rcu_normal, int, 0);
static int rcu_normal_after_boot;
module_param(rcu_normal_after_boot, int, 0);
--
2.9.5
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH tip/core/rcu 08/12] rcu: Switch force_qs_rnp() to for_each_leaf_node_cpu_mask()
2019-12-10 4:07 [PATCH tip/core/rcu 0/12] Miscellaneous fixes for v5.6 Paul E. McKenney
` (6 preceding siblings ...)
2019-12-10 4:07 ` [PATCH tip/core/rcu 07/12] rcu: Move rcu_{expedited,normal} definitions into rcupdate.h paulmck
@ 2019-12-10 4:07 ` paulmck
2019-12-10 4:07 ` [PATCH tip/core/rcu 09/12] srcu: Apply *_ONCE() to ->srcu_last_gp_end paulmck
` (3 subsequent siblings)
11 siblings, 0 replies; 22+ messages in thread
From: paulmck @ 2019-12-10 4:07 UTC (permalink / raw)
To: rcu
Cc: linux-kernel, kernel-team, mingo, jiangshanlai, dipankar, akpm,
mathieu.desnoyers, josh, tglx, peterz, rostedt, dhowells,
edumazet, fweisbec, oleg, joel, Paul E. McKenney
From: "Paul E. McKenney" <paulmck@kernel.org>
Currently, force_qs_rnp() uses a for_each_leaf_node_possible_cpu()
loop containing a check of the current CPU's bit in ->qsmask.
This works, but this commit saves three lines by instead using
for_each_leaf_node_cpu_mask(), which combines the functionality of
for_each_leaf_node_possible_cpu() and leaf_node_cpu_bit(). This commit
also replaces the use of the local variable "bit" with rdp->grpmask.
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---
kernel/rcu/tree.c | 13 +++++--------
1 file changed, 5 insertions(+), 8 deletions(-)
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
index bbb60ed..d950764 100644
--- a/kernel/rcu/tree.c
+++ b/kernel/rcu/tree.c
@@ -2298,14 +2298,11 @@ static void force_qs_rnp(int (*f)(struct rcu_data *rdp))
raw_spin_unlock_irqrestore_rcu_node(rnp, flags);
continue;
}
- for_each_leaf_node_possible_cpu(rnp, cpu) {
- unsigned long bit = leaf_node_cpu_bit(rnp, cpu);
- if ((rnp->qsmask & bit) != 0) {
- rdp = per_cpu_ptr(&rcu_data, cpu);
- if (f(rdp)) {
- mask |= bit;
- rcu_disable_urgency_upon_qs(rdp);
- }
+ for_each_leaf_node_cpu_mask(rnp, cpu, rnp->qsmask) {
+ rdp = per_cpu_ptr(&rcu_data, cpu);
+ if (f(rdp)) {
+ mask |= rdp->grpmask;
+ rcu_disable_urgency_upon_qs(rdp);
}
}
if (mask != 0) {
--
2.9.5
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH tip/core/rcu 09/12] srcu: Apply *_ONCE() to ->srcu_last_gp_end
2019-12-10 4:07 [PATCH tip/core/rcu 0/12] Miscellaneous fixes for v5.6 Paul E. McKenney
` (7 preceding siblings ...)
2019-12-10 4:07 ` [PATCH tip/core/rcu 08/12] rcu: Switch force_qs_rnp() to for_each_leaf_node_cpu_mask() paulmck
@ 2019-12-10 4:07 ` paulmck
2019-12-10 4:07 ` [PATCH tip/core/rcu 10/12] .mailmap: Add entries for old paulmck@kernel.org addresses paulmck
` (2 subsequent siblings)
11 siblings, 0 replies; 22+ messages in thread
From: paulmck @ 2019-12-10 4:07 UTC (permalink / raw)
To: rcu
Cc: linux-kernel, kernel-team, mingo, jiangshanlai, dipankar, akpm,
mathieu.desnoyers, josh, tglx, peterz, rostedt, dhowells,
edumazet, fweisbec, oleg, joel, Paul E. McKenney
From: "Paul E. McKenney" <paulmck@kernel.org>
The ->srcu_last_gp_end field is accessed from any CPU at any time
by synchronize_srcu(), so non-initialization references need to use
READ_ONCE() and WRITE_ONCE(). This commit therefore makes that change.
Reported-by: syzbot+08f3e9d26e5541e1ecf2@syzkaller.appspotmail.com
Acked-by: Marco Elver <elver@google.com>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---
kernel/rcu/srcutree.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/kernel/rcu/srcutree.c b/kernel/rcu/srcutree.c
index 5dffade..21acdff 100644
--- a/kernel/rcu/srcutree.c
+++ b/kernel/rcu/srcutree.c
@@ -530,7 +530,7 @@ static void srcu_gp_end(struct srcu_struct *ssp)
idx = rcu_seq_state(ssp->srcu_gp_seq);
WARN_ON_ONCE(idx != SRCU_STATE_SCAN2);
cbdelay = srcu_get_delay(ssp);
- ssp->srcu_last_gp_end = ktime_get_mono_fast_ns();
+ WRITE_ONCE(ssp->srcu_last_gp_end, ktime_get_mono_fast_ns());
rcu_seq_end(&ssp->srcu_gp_seq);
gpseq = rcu_seq_current(&ssp->srcu_gp_seq);
if (ULONG_CMP_LT(ssp->srcu_gp_seq_needed_exp, gpseq))
@@ -762,6 +762,7 @@ static bool srcu_might_be_idle(struct srcu_struct *ssp)
unsigned long flags;
struct srcu_data *sdp;
unsigned long t;
+ unsigned long tlast;
/* If the local srcu_data structure has callbacks, not idle. */
local_irq_save(flags);
@@ -780,9 +781,9 @@ static bool srcu_might_be_idle(struct srcu_struct *ssp)
/* First, see if enough time has passed since the last GP. */
t = ktime_get_mono_fast_ns();
+ tlast = READ_ONCE(ssp->srcu_last_gp_end);
if (exp_holdoff == 0 ||
- time_in_range_open(t, ssp->srcu_last_gp_end,
- ssp->srcu_last_gp_end + exp_holdoff))
+ time_in_range_open(t, tlast, tlast + exp_holdoff))
return false; /* Too soon after last GP. */
/* Next, check for probable idleness. */
--
2.9.5
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH tip/core/rcu 10/12] .mailmap: Add entries for old paulmck@kernel.org addresses
2019-12-10 4:07 [PATCH tip/core/rcu 0/12] Miscellaneous fixes for v5.6 Paul E. McKenney
` (8 preceding siblings ...)
2019-12-10 4:07 ` [PATCH tip/core/rcu 09/12] srcu: Apply *_ONCE() to ->srcu_last_gp_end paulmck
@ 2019-12-10 4:07 ` paulmck
2019-12-11 19:03 ` Florian Fainelli
2019-12-10 4:07 ` [PATCH tip/core/rcu 11/12] powerpc: Remove comment about read_barrier_depends() paulmck
2019-12-10 4:07 ` [PATCH tip/core/rcu 12/12] rcu: Remove unused stop-machine #include paulmck
11 siblings, 1 reply; 22+ messages in thread
From: paulmck @ 2019-12-10 4:07 UTC (permalink / raw)
To: rcu
Cc: linux-kernel, kernel-team, mingo, jiangshanlai, dipankar, akpm,
mathieu.desnoyers, josh, tglx, peterz, rostedt, dhowells,
edumazet, fweisbec, oleg, joel, Paul E. McKenney
From: "Paul E. McKenney" <paulmck@kernel.org>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---
.mailmap | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/.mailmap b/.mailmap
index c24773d..5f330c5 100644
--- a/.mailmap
+++ b/.mailmap
@@ -207,6 +207,11 @@ Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Patrick Mochel <mochel@digitalimplant.org>
Paul Burton <paulburton@kernel.org> <paul.burton@imgtec.com>
Paul Burton <paulburton@kernel.org> <paul.burton@mips.com>
+Paul Burton <paul.burton@mips.com> <paul.burton@imgtec.com>
+Paul E. McKenney <paulmck@kernel.org> <paulmck@linux.ibm.com>
+Paul E. McKenney <paulmck@kernel.org> <paulmck@linux.vnet.ibm.com>
+Paul E. McKenney <paulmck@kernel.org> <paul.mckenney@linaro.org>
+Paul E. McKenney <paulmck@kernel.org> <paulmck@us.ibm.com>
Peter A Jonsson <pj@ludd.ltu.se>
Peter Oruba <peter@oruba.de>
Peter Oruba <peter.oruba@amd.com>
--
2.9.5
^ permalink raw reply related [flat|nested] 22+ messages in thread
* Re: [PATCH tip/core/rcu 10/12] .mailmap: Add entries for old paulmck@kernel.org addresses
2019-12-10 4:07 ` [PATCH tip/core/rcu 10/12] .mailmap: Add entries for old paulmck@kernel.org addresses paulmck
@ 2019-12-11 19:03 ` Florian Fainelli
2019-12-11 23:14 ` Paul E. McKenney
0 siblings, 1 reply; 22+ messages in thread
From: Florian Fainelli @ 2019-12-11 19:03 UTC (permalink / raw)
To: paulmck, rcu
Cc: linux-kernel, kernel-team, mingo, jiangshanlai, dipankar, akpm,
mathieu.desnoyers, josh, tglx, peterz, rostedt, dhowells,
edumazet, fweisbec, oleg, joel
On 12/9/2019 8:07 PM, paulmck@kernel.org wrote:
> From: "Paul E. McKenney" <paulmck@kernel.org>
>
> Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
> ---
> .mailmap | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/.mailmap b/.mailmap
> index c24773d..5f330c5 100644
> --- a/.mailmap
> +++ b/.mailmap
> @@ -207,6 +207,11 @@ Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
> Patrick Mochel <mochel@digitalimplant.org>
> Paul Burton <paulburton@kernel.org> <paul.burton@imgtec.com>
> Paul Burton <paulburton@kernel.org> <paul.burton@mips.com>
> +Paul Burton <paul.burton@mips.com> <paul.burton@imgtec.com>
This duplicates an existing entry.
--
Florian
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH tip/core/rcu 10/12] .mailmap: Add entries for old paulmck@kernel.org addresses
2019-12-11 19:03 ` Florian Fainelli
@ 2019-12-11 23:14 ` Paul E. McKenney
0 siblings, 0 replies; 22+ messages in thread
From: Paul E. McKenney @ 2019-12-11 23:14 UTC (permalink / raw)
To: Florian Fainelli
Cc: rcu, linux-kernel, kernel-team, mingo, jiangshanlai, dipankar,
akpm, mathieu.desnoyers, josh, tglx, peterz, rostedt, dhowells,
edumazet, fweisbec, oleg, joel
On Wed, Dec 11, 2019 at 11:03:44AM -0800, Florian Fainelli wrote:
>
>
> On 12/9/2019 8:07 PM, paulmck@kernel.org wrote:
> > From: "Paul E. McKenney" <paulmck@kernel.org>
> >
> > Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
> > ---
> > .mailmap | 5 +++++
> > 1 file changed, 5 insertions(+)
> >
> > diff --git a/.mailmap b/.mailmap
> > index c24773d..5f330c5 100644
> > --- a/.mailmap
> > +++ b/.mailmap
> > @@ -207,6 +207,11 @@ Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
> > Patrick Mochel <mochel@digitalimplant.org>
> > Paul Burton <paulburton@kernel.org> <paul.burton@imgtec.com>
> > Paul Burton <paulburton@kernel.org> <paul.burton@mips.com>
> > +Paul Burton <paul.burton@mips.com> <paul.burton@imgtec.com>
>
> This duplicates an existing entry.
Good catch, thank you! How about the following?
Thanx, Paul
------------------------------------------------------------------------
commit 4b9423cbab36dda3d0e4501dc27d57dae35bda3d
Author: Paul E. McKenney <paulmck@kernel.org>
Date: Mon Nov 25 15:35:26 2019 -0800
.mailmap: Add entries for old paulmck@kernel.org addresses
[ paulmck: Apply Florian Fainelli feedback. ]
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
diff --git a/.mailmap b/.mailmap
index c24773d..39efbe9 100644
--- a/.mailmap
+++ b/.mailmap
@@ -207,6 +207,10 @@ Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Patrick Mochel <mochel@digitalimplant.org>
Paul Burton <paulburton@kernel.org> <paul.burton@imgtec.com>
Paul Burton <paulburton@kernel.org> <paul.burton@mips.com>
+Paul E. McKenney <paulmck@kernel.org> <paulmck@linux.ibm.com>
+Paul E. McKenney <paulmck@kernel.org> <paulmck@linux.vnet.ibm.com>
+Paul E. McKenney <paulmck@kernel.org> <paul.mckenney@linaro.org>
+Paul E. McKenney <paulmck@kernel.org> <paulmck@us.ibm.com>
Peter A Jonsson <pj@ludd.ltu.se>
Peter Oruba <peter@oruba.de>
Peter Oruba <peter.oruba@amd.com>
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH tip/core/rcu 11/12] powerpc: Remove comment about read_barrier_depends()
2019-12-10 4:07 [PATCH tip/core/rcu 0/12] Miscellaneous fixes for v5.6 Paul E. McKenney
` (9 preceding siblings ...)
2019-12-10 4:07 ` [PATCH tip/core/rcu 10/12] .mailmap: Add entries for old paulmck@kernel.org addresses paulmck
@ 2019-12-10 4:07 ` paulmck
2019-12-10 4:07 ` [PATCH tip/core/rcu 12/12] rcu: Remove unused stop-machine #include paulmck
11 siblings, 0 replies; 22+ messages in thread
From: paulmck @ 2019-12-10 4:07 UTC (permalink / raw)
To: rcu
Cc: linux-kernel, kernel-team, mingo, jiangshanlai, dipankar, akpm,
mathieu.desnoyers, josh, tglx, peterz, rostedt, dhowells,
edumazet, fweisbec, oleg, joel, Will Deacon, Paul E . McKenney
From: Will Deacon <will@kernel.org>
'read_barrier_depends()' doesn't exist anymore so stop talking about it.
Signed-off-by: Will Deacon <will@kernel.org>
Acked-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---
arch/powerpc/include/asm/barrier.h | 2 --
1 file changed, 2 deletions(-)
diff --git a/arch/powerpc/include/asm/barrier.h b/arch/powerpc/include/asm/barrier.h
index fbe8df4..123adce 100644
--- a/arch/powerpc/include/asm/barrier.h
+++ b/arch/powerpc/include/asm/barrier.h
@@ -18,8 +18,6 @@
* mb() prevents loads and stores being reordered across this point.
* rmb() prevents loads being reordered across this point.
* wmb() prevents stores being reordered across this point.
- * read_barrier_depends() prevents data-dependent loads being reordered
- * across this point (nop on PPC).
*
* *mb() variants without smp_ prefix must order all types of memory
* operations with one another. sync is the only instruction sufficient
--
2.9.5
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH tip/core/rcu 12/12] rcu: Remove unused stop-machine #include
2019-12-10 4:07 [PATCH tip/core/rcu 0/12] Miscellaneous fixes for v5.6 Paul E. McKenney
` (10 preceding siblings ...)
2019-12-10 4:07 ` [PATCH tip/core/rcu 11/12] powerpc: Remove comment about read_barrier_depends() paulmck
@ 2019-12-10 4:07 ` paulmck
11 siblings, 0 replies; 22+ messages in thread
From: paulmck @ 2019-12-10 4:07 UTC (permalink / raw)
To: rcu
Cc: linux-kernel, kernel-team, mingo, jiangshanlai, dipankar, akpm,
mathieu.desnoyers, josh, tglx, peterz, rostedt, dhowells,
edumazet, fweisbec, oleg, joel, Paul E. McKenney
From: "Paul E. McKenney" <paulmck@kernel.org>
Long ago, RCU used the stop-machine mechanism to implement expedited
grace periods, but no longer does so. This commit therefore removes
the no-longer-needed #includes of linux/stop_machine.h.
Link: https://lwn.net/Articles/805317/
Reported-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---
kernel/rcu/tree.c | 1 -
kernel/rcu/tree.h | 1 -
2 files changed, 2 deletions(-)
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
index d950764..878f62f 100644
--- a/kernel/rcu/tree.c
+++ b/kernel/rcu/tree.c
@@ -43,7 +43,6 @@
#include <uapi/linux/sched/types.h>
#include <linux/prefetch.h>
#include <linux/delay.h>
-#include <linux/stop_machine.h>
#include <linux/random.h>
#include <linux/trace_events.h>
#include <linux/suspend.h>
diff --git a/kernel/rcu/tree.h b/kernel/rcu/tree.h
index 9d5986a..ce90c68 100644
--- a/kernel/rcu/tree.h
+++ b/kernel/rcu/tree.h
@@ -16,7 +16,6 @@
#include <linux/cpumask.h>
#include <linux/seqlock.h>
#include <linux/swait.h>
-#include <linux/stop_machine.h>
#include <linux/rcu_node_tree.h>
#include "rcu_segcblist.h"
--
2.9.5
^ permalink raw reply related [flat|nested] 22+ messages in thread