Skip to content

[test] rcu-dev_test - #1

Open
kernel-patches-bot wants to merge 2 commits into
rcu-devfrom
rcu-dev_test
Open

[test] rcu-dev_test#1
kernel-patches-bot wants to merge 2 commits into
rcu-devfrom
rcu-dev_test

Conversation

@kernel-patches-bot

Copy link
Copy Markdown

branch: rcu-dev_test
base: rcu-dev
version: 2f91146

@kernel-patches-bot

Copy link
Copy Markdown
Author

branch: rcu-dev_test
base: rcu-dev
version: 2d20ef4

@kernel-patches-bot

Copy link
Copy Markdown
Author

branch: rcu-dev_test
base: rcu-dev
version: 80fc02e

kernel-patches-bot pushed a commit that referenced this pull request Sep 23, 2022
When going through the lazy-rcu work, I noticed that
rcu_barrier_entrain() does not really wake up the rcuog GP thread in any
path after entraining. This means it is possible the GP thread is not
awakened soon (say there were no CBs in the cblist after entraining
time).

Further, nothing appears to be calling the rcu_barrier callback
directly in the case the ->cblist was empty which means if the IPI gets
delayed enough to make the ->cblist empty and it turns out to be the last
CPU holding, then nothing calls completes rcu_state.barrier_completion.

Fix both these issues.

A note on the wakeup, there are 3 cases AFAICS after the call to
rcu_nocb_flush_bypass():

1. The rdp->cblist has pending CBs.

2. The rdp->cblist has all done CBs.

3. The rdp->cblist has no CBs at all (say the IPI took a long time to
arrive and some other path dequeued them in the meanwhile).

For #3, entraining a CB is not needed and we should bail.  For #1 and
needed. But for #2 it is needed.

Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org>
@kernel-patches-bot

Copy link
Copy Markdown
Author

branch: rcu-dev_test
base: rcu-dev
version: 80fc02e

kernel-patches-bot pushed a commit that referenced this pull request Sep 23, 2022
When going through the lazy-rcu work, I noticed that
rcu_barrier_entrain() does not really wake up the rcuog GP thread in any
path after entraining. This means it is possible the GP thread is not
awakened soon (say there were no CBs in the cblist after entraining
time).

Further, nothing appears to be calling the rcu_barrier callback
directly in the case the ->cblist was empty which means if the IPI gets
delayed enough to make the ->cblist empty and it turns out to be the last
CPU holding, then nothing calls completes rcu_state.barrier_completion.

Fix both these issues.

A note on the wakeup, there are 3 cases AFAICS after the call to
rcu_nocb_flush_bypass():

1. The rdp->cblist has pending CBs.

2. The rdp->cblist has all done CBs.

3. The rdp->cblist has no CBs at all (say the IPI took a long time to
arrive and some other path dequeued them in the meanwhile).

For #3, entraining a CB is not needed and we should bail.  For #1 and
needed. But for #2 it is needed.

Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org>
@kernel-patches-bot

Copy link
Copy Markdown
Author

branch: rcu-dev_test
base: rcu-dev
version: 80fc02e

kernel-patches-bot pushed a commit that referenced this pull request Sep 23, 2022
When going through the lazy-rcu work, I noticed that
rcu_barrier_entrain() does not really wake up the rcuog GP thread in any
path after entraining. This means it is possible the GP thread is not
awakened soon (say there were no CBs in the cblist after entraining
time).

Further, nothing appears to be calling the rcu_barrier callback
directly in the case the ->cblist was empty which means if the IPI gets
delayed enough to make the ->cblist empty and it turns out to be the last
CPU holding, then nothing calls completes rcu_state.barrier_completion.

Fix both these issues.

A note on the wakeup, there are 3 cases AFAICS after the call to
rcu_nocb_flush_bypass():

1. The rdp->cblist has pending CBs.

2. The rdp->cblist has all done CBs.

3. The rdp->cblist has no CBs at all (say the IPI took a long time to
arrive and some other path dequeued them in the meanwhile).

For #3, entraining a CB is not needed and we should bail.  For #1 and
needed. But for #2 it is needed.

Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org>
@kernel-patches-bot

Copy link
Copy Markdown
Author

branch: rcu-dev_test
base: rcu-dev
version: 32fad12

kernel-patches-bot pushed a commit that referenced this pull request Sep 26, 2022
When going through the lazy-rcu work, I noticed that
rcu_barrier_entrain() does not really wake up the rcuog GP thread in any
path after entraining. This means it is possible the GP thread is not
awakened soon (say there were no CBs in the cblist after entraining
time).

Further, nothing appears to be calling the rcu_barrier callback
directly in the case the ->cblist was empty which means if the IPI gets
delayed enough to make the ->cblist empty and it turns out to be the last
CPU holding, then nothing calls completes rcu_state.barrier_completion.

Fix both these issues.

A note on the wakeup, there are 3 cases AFAICS after the call to
rcu_nocb_flush_bypass():

1. The rdp->cblist has pending CBs.

2. The rdp->cblist has all done CBs.

3. The rdp->cblist has no CBs at all (say the IPI took a long time to
arrive and some other path dequeued them in the meanwhile).

For #3, entraining a CB is not needed and we should bail.  For #1 and
needed. But for #2 it is needed.

Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org>
@kernel-patches-bot

Copy link
Copy Markdown
Author

branch: rcu-dev_test
base: rcu-dev
version: 32fad12

kernel-patches-bot pushed a commit that referenced this pull request Sep 26, 2022
When going through the lazy-rcu work, I noticed that
rcu_barrier_entrain() does not really wake up the rcuog GP thread in any
path after entraining. This means it is possible the GP thread is not
awakened soon (say there were no CBs in the cblist after entraining
time).

Further, nothing appears to be calling the rcu_barrier callback
directly in the case the ->cblist was empty which means if the IPI gets
delayed enough to make the ->cblist empty and it turns out to be the last
CPU holding, then nothing calls completes rcu_state.barrier_completion.

Fix both these issues.

A note on the wakeup, there are 3 cases AFAICS after the call to
rcu_nocb_flush_bypass():

1. The rdp->cblist has pending CBs.

2. The rdp->cblist has all done CBs.

3. The rdp->cblist has no CBs at all (say the IPI took a long time to
arrive and some other path dequeued them in the meanwhile).

For #3, entraining a CB is not needed and we should bail.  For #1 and
needed. But for #2 it is needed.

Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org>
@kernel-patches-bot

Copy link
Copy Markdown
Author

branch: rcu-dev_test
base: rcu-dev
version: 32fad12

kernel-patches-bot pushed a commit that referenced this pull request Sep 26, 2022
When going through the lazy-rcu work, I noticed that
rcu_barrier_entrain() does not really wake up the rcuog GP thread in any
path after entraining. This means it is possible the GP thread is not
awakened soon (say there were no CBs in the cblist after entraining
time).

Further, nothing appears to be calling the rcu_barrier callback
directly in the case the ->cblist was empty which means if the IPI gets
delayed enough to make the ->cblist empty and it turns out to be the last
CPU holding, then nothing calls completes rcu_state.barrier_completion.

Fix both these issues.

A note on the wakeup, there are 3 cases AFAICS after the call to
rcu_nocb_flush_bypass():

1. The rdp->cblist has pending CBs.

2. The rdp->cblist has all done CBs.

3. The rdp->cblist has no CBs at all (say the IPI took a long time to
arrive and some other path dequeued them in the meanwhile).

For #3, entraining a CB is not needed and we should bail.  For #1 and
needed. But for #2 it is needed.

Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org>
@kernel-patches-bot

Copy link
Copy Markdown
Author

branch: rcu-dev_test
base: rcu-dev
version: 32fad12

kernel-patches-bot pushed a commit that referenced this pull request Sep 26, 2022
When going through the lazy-rcu work, I noticed that
rcu_barrier_entrain() does not really wake up the rcuog GP thread in any
path after entraining. This means it is possible the GP thread is not
awakened soon (say there were no CBs in the cblist after entraining
time).

Further, nothing appears to be calling the rcu_barrier callback
directly in the case the ->cblist was empty which means if the IPI gets
delayed enough to make the ->cblist empty and it turns out to be the last
CPU holding, then nothing calls completes rcu_state.barrier_completion.

Fix both these issues.

A note on the wakeup, there are 3 cases AFAICS after the call to
rcu_nocb_flush_bypass():

1. The rdp->cblist has pending CBs.

2. The rdp->cblist has all done CBs.

3. The rdp->cblist has no CBs at all (say the IPI took a long time to
arrive and some other path dequeued them in the meanwhile).

For #3, entraining a CB is not needed and we should bail.  For #1 and
needed. But for #2 it is needed.

Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org>
@kernel-patches-bot

Copy link
Copy Markdown
Author

branch: rcu-dev_test
base: rcu-dev
version: 32fad12

kernel-patches-bot pushed a commit that referenced this pull request Sep 26, 2022
When going through the lazy-rcu work, I noticed that
rcu_barrier_entrain() does not really wake up the rcuog GP thread in any
path after entraining. This means it is possible the GP thread is not
awakened soon (say there were no CBs in the cblist after entraining
time).

Further, nothing appears to be calling the rcu_barrier callback
directly in the case the ->cblist was empty which means if the IPI gets
delayed enough to make the ->cblist empty and it turns out to be the last
CPU holding, then nothing calls completes rcu_state.barrier_completion.

Fix both these issues.

A note on the wakeup, there are 3 cases AFAICS after the call to
rcu_nocb_flush_bypass():

1. The rdp->cblist has pending CBs.

2. The rdp->cblist has all done CBs.

3. The rdp->cblist has no CBs at all (say the IPI took a long time to
arrive and some other path dequeued them in the meanwhile).

For #3, entraining a CB is not needed and we should bail.  For #1 and
needed. But for #2 it is needed.

Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org>
@kernel-patches-bot

Copy link
Copy Markdown
Author

branch: rcu-dev_test
base: rcu-dev
version: 32fad12

@kernel-patches-bot

Copy link
Copy Markdown
Author

branch: rcu-dev_test
base: rcu-dev
version: 94119b8

27 similar comments
@kernel-patches-bot

Copy link
Copy Markdown
Author

branch: rcu-dev_test
base: rcu-dev
version: 94119b8

@kernel-patches-bot

Copy link
Copy Markdown
Author

branch: rcu-dev_test
base: rcu-dev
version: 94119b8

@kernel-patches-bot

Copy link
Copy Markdown
Author

branch: rcu-dev_test
base: rcu-dev
version: 94119b8

@kernel-patches-bot

Copy link
Copy Markdown
Author

branch: rcu-dev_test
base: rcu-dev
version: 94119b8

@kernel-patches-bot

Copy link
Copy Markdown
Author

branch: rcu-dev_test
base: rcu-dev
version: 94119b8

@kernel-patches-bot

Copy link
Copy Markdown
Author

branch: rcu-dev_test
base: rcu-dev
version: 94119b8

@kernel-patches-bot

Copy link
Copy Markdown
Author

branch: rcu-dev_test
base: rcu-dev
version: 94119b8

@kernel-patches-bot

Copy link
Copy Markdown
Author

branch: rcu-dev_test
base: rcu-dev
version: 94119b8

@kernel-patches-bot

Copy link
Copy Markdown
Author

branch: rcu-dev_test
base: rcu-dev
version: 94119b8

@kernel-patches-bot

Copy link
Copy Markdown
Author

branch: rcu-dev_test
base: rcu-dev
version: 94119b8

@kernel-patches-bot

Copy link
Copy Markdown
Author

branch: rcu-dev_test
base: rcu-dev
version: 94119b8

@kernel-patches-bot

Copy link
Copy Markdown
Author

branch: rcu-dev_test
base: rcu-dev
version: 94119b8

@kernel-patches-bot

Copy link
Copy Markdown
Author

branch: rcu-dev_test
base: rcu-dev
version: 94119b8

@kernel-patches-bot

Copy link
Copy Markdown
Author

branch: rcu-dev_test
base: rcu-dev
version: 94119b8

@kernel-patches-bot

Copy link
Copy Markdown
Author

branch: rcu-dev_test
base: rcu-dev
version: 94119b8

@kernel-patches-bot

Copy link
Copy Markdown
Author

branch: rcu-dev_test
base: rcu-dev
version: 94119b8

@kernel-patches-bot

Copy link
Copy Markdown
Author

branch: rcu-dev_test
base: rcu-dev
version: 94119b8

@kernel-patches-bot

Copy link
Copy Markdown
Author

branch: rcu-dev_test
base: rcu-dev
version: 94119b8

@kernel-patches-bot

Copy link
Copy Markdown
Author

branch: rcu-dev_test
base: rcu-dev
version: 94119b8

@kernel-patches-bot

Copy link
Copy Markdown
Author

branch: rcu-dev_test
base: rcu-dev
version: 94119b8

@kernel-patches-bot

Copy link
Copy Markdown
Author

branch: rcu-dev_test
base: rcu-dev
version: 94119b8

@kernel-patches-bot

Copy link
Copy Markdown
Author

branch: rcu-dev_test
base: rcu-dev
version: 94119b8

@kernel-patches-bot

Copy link
Copy Markdown
Author

branch: rcu-dev_test
base: rcu-dev
version: 94119b8

@kernel-patches-bot

Copy link
Copy Markdown
Author

branch: rcu-dev_test
base: rcu-dev
version: 94119b8

@kernel-patches-bot

Copy link
Copy Markdown
Author

branch: rcu-dev_test
base: rcu-dev
version: 94119b8

@kernel-patches-bot

Copy link
Copy Markdown
Author

branch: rcu-dev_test
base: rcu-dev
version: 94119b8

@kernel-patches-bot

Copy link
Copy Markdown
Author

branch: rcu-dev_test
base: rcu-dev
version: 94119b8

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants