Re: call_rcu data race patch

Paul E. McKenney
2021-09-19T16:35:48Z

On Sat, Sep 18, 2021 at 09:08:38AM +0200, Guillaume Morin wrote:
> On 17 Sep 21:00, Paul E. McKenney wrote:
> > That is them! There are some flags that control their activities:
> >
> > o rcu_data structure's ->nocb_gp_sleep field (rcuog)
> > o rcu_data structure's ->nocb_cb_sleep field (rcuoc)
>
> >From the same kdump:
>
> crash> pd rcu_data:all | grep -E 'nocb_cb_sleep|nocb_gp_sleep|per_cpu'
> per_cpu(rcu_data, 0) = $69 = {
> nocb_gp_sleep = 0 '\000',
> nocb_cb_sleep = false,
> per_cpu(rcu_data, 1) = $70 = {
> nocb_gp_sleep = 1 '\001',
> nocb_cb_sleep = true,
> per_cpu(rcu_data, 2) = $71 = {
> nocb_gp_sleep = 0 '\000',
> nocb_cb_sleep = true,
> per_cpu(rcu_data, 3) = $72 = {
> nocb_gp_sleep = 0 '\000',
> nocb_cb_sleep = true,
> per_cpu(rcu_data, 4) = $73 = {
> nocb_gp_sleep = 1 '\001',
> nocb_cb_sleep = true,
> per_cpu(rcu_data, 5) = $74 = {
> nocb_gp_sleep = 0 '\000',
> nocb_cb_sleep = true,
> per_cpu(rcu_data, 6) = $75 = {
> nocb_gp_sleep = 0 '\000',
> nocb_cb_sleep = true,
> per_cpu(rcu_data, 7) = $76 = {
> nocb_gp_sleep = 0 '\000',
> nocb_cb_sleep = true,
> per_cpu(rcu_data, 8) = $77 = {
> nocb_gp_sleep = 1 '\001',
> nocb_cb_sleep = true,
> per_cpu(rcu_data, 9) = $78 = {
> nocb_gp_sleep = 0 '\000',
> nocb_cb_sleep = true,
> per_cpu(rcu_data, 10) = $79 = {
> nocb_gp_sleep = 0 '\000',
> nocb_cb_sleep = true,
> per_cpu(rcu_data, 11) = $80 = {
> nocb_gp_sleep = 0 '\000',
> nocb_cb_sleep = true,
> per_cpu(rcu_data, 12) = $81 = {
> nocb_gp_sleep = 1 '\001',
> nocb_cb_sleep = true,
> per_cpu(rcu_data, 13) = $82 = {
> nocb_gp_sleep = 0 '\000',
> nocb_cb_sleep = true,
> per_cpu(rcu_data, 14) = $83 = {
> nocb_gp_sleep = 0 '\000',
> nocb_cb_sleep = true,
> per_cpu(rcu_data, 15) = $84 = {
> nocb_gp_sleep = 0 '\000',
> nocb_cb_sleep = true,
> per_cpu(rcu_data, 16) = $85 = {
> nocb_gp_sleep = 1 '\001',
> nocb_cb_sleep = true,
> per_cpu(rcu_data, 17) = $86 = {
> nocb_gp_sleep = 0 '\000',
> nocb_cb_sleep = true,
> crash>

This is consistent with CPU 0's rcuoc kthread processing callbacks
and all of the rcuog threads waiting for more callbacks.

How is the testing of the patches going? (I am guessing nothing yet
based on the failure times, but who knows?)

Thanx, Paul