diff options
Diffstat (limited to 'kernel/rcutree.c')
-rw-r--r-- | kernel/rcutree.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/kernel/rcutree.c b/kernel/rcutree.c index 6042fb859535..86bb9499aae6 100644 --- a/kernel/rcutree.c +++ b/kernel/rcutree.c | |||
@@ -1859,6 +1859,14 @@ static void __init rcu_init_one(struct rcu_state *rsp) | |||
1859 | INIT_LIST_HEAD(&rnp->blocked_tasks[3]); | 1859 | INIT_LIST_HEAD(&rnp->blocked_tasks[3]); |
1860 | } | 1860 | } |
1861 | } | 1861 | } |
1862 | |||
1863 | rnp = rsp->level[NUM_RCU_LVLS - 1]; | ||
1864 | for_each_possible_cpu(i) { | ||
1865 | if (i > rnp->grphi) | ||
1866 | rnp++; | ||
1867 | rsp->rda[i]->mynode = rnp; | ||
1868 | rcu_boot_init_percpu_data(i, rsp); | ||
1869 | } | ||
1862 | } | 1870 | } |
1863 | 1871 | ||
1864 | /* | 1872 | /* |
@@ -1869,19 +1877,11 @@ static void __init rcu_init_one(struct rcu_state *rsp) | |||
1869 | #define RCU_INIT_FLAVOR(rsp, rcu_data) \ | 1877 | #define RCU_INIT_FLAVOR(rsp, rcu_data) \ |
1870 | do { \ | 1878 | do { \ |
1871 | int i; \ | 1879 | int i; \ |
1872 | int j; \ | ||
1873 | struct rcu_node *rnp; \ | ||
1874 | \ | 1880 | \ |
1875 | rcu_init_one(rsp); \ | ||
1876 | rnp = (rsp)->level[NUM_RCU_LVLS - 1]; \ | ||
1877 | j = 0; \ | ||
1878 | for_each_possible_cpu(i) { \ | 1881 | for_each_possible_cpu(i) { \ |
1879 | if (i > rnp[j].grphi) \ | ||
1880 | j++; \ | ||
1881 | per_cpu(rcu_data, i).mynode = &rnp[j]; \ | ||
1882 | (rsp)->rda[i] = &per_cpu(rcu_data, i); \ | 1882 | (rsp)->rda[i] = &per_cpu(rcu_data, i); \ |
1883 | rcu_boot_init_percpu_data(i, rsp); \ | ||
1884 | } \ | 1883 | } \ |
1884 | rcu_init_one(rsp); \ | ||
1885 | } while (0) | 1885 | } while (0) |
1886 | 1886 | ||
1887 | void __init rcu_init(void) | 1887 | void __init rcu_init(void) |