From: Paul E. McKenney Date: Tue, 18 May 2021 17:56:19 +0000 (-0700) Subject: Merge branches 'bitmaprange.2021.05.10c', 'doc.2021.05.10c', 'fixes.2021.05.13a'... X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=641faf1b9064c270a476a424e60063bb05df3ee9;p=uclinux-h8%2Flinux.git Merge branches 'bitmaprange.2021.05.10c', 'doc.2021.05.10c', 'fixes.2021.05.13a', 'kvfree_rcu.2021.05.10c', 'mmdumpobj.2021.05.10c', 'nocb.2021.05.12a', 'srcu.2021.05.12a', 'tasks.2021.05.18a' and 'torture.2021.05.10c' into HEAD bitmaprange.2021.05.10c: Allow "all" for bitmap ranges. doc.2021.05.10c: Documentation updates. fixes.2021.05.13a: Miscellaneous fixes. kvfree_rcu.2021.05.10c: kvfree_rcu() updates. mmdumpobj.2021.05.10c: mem_dump_obj() updates. nocb.2021.05.12a: RCU NOCB CPU updates, including limited deoffloading. srcu.2021.05.12a: SRCU updates. tasks.2021.05.18a: Tasks-RCU updates. torture.2021.05.10c: Torture-test updates. --- 641faf1b9064c270a476a424e60063bb05df3ee9 diff --cc kernel/rcu/tree.c index 8e78b2430c16,8e78b2430c16,4b00e4fbfa10,618ec9152e5e,8e78b2430c16,ed1b5465b3e8,0420b23fc9d0,f4daa4e60b14,8e78b2430c16..28f1093027b9 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@@@@@@@@@ -3251,9 -3251,9 -3233,9 -3264,28 -3251,9 -3251,9 -3251,9 -3252,9 -3251,9 +3247,28 @@@@@@@@@@ put_cached_bnode(struct kfree_rcu_cpu * return false; llist_add((struct llist_node *) bnode, &krcp->bkvcache); --- ----- krcp->nr_bkv_objs++; +++ +++++ WRITE_ONCE(krcp->nr_bkv_objs, krcp->nr_bkv_objs + 1); return true; +++ +++++} +++ +++++ +++ +++++static int +++ +++++drain_page_cache(struct kfree_rcu_cpu *krcp) +++ +++++{ +++ +++++ unsigned long flags; +++ +++++ struct llist_node *page_list, *pos, *n; +++ +++++ int freed = 0; + + +++ +++++ raw_spin_lock_irqsave(&krcp->lock, flags); +++ +++++ page_list = llist_del_all(&krcp->bkvcache); +++ +++++ WRITE_ONCE(krcp->nr_bkv_objs, 0); +++ +++++ raw_spin_unlock_irqrestore(&krcp->lock, flags); ++ +++++ +++ +++++ llist_for_each_safe(pos, n, page_list) { +++ +++++ free_page((unsigned long)pos); +++ +++++ freed++; +++ +++++ } +++ ++ ++ +++ +++++ return freed; } /*