From: Uladzislau Rezki <urezki@gmail.com>
To: "Joel Fernandes (Google)" <joel@joelfernandes.org>
Cc: "Joel Fernandes (Google)" <joel@joelfernandes.org>,
kbuild-all@lists.01.org, linux-kernel@vger.kernel.org,
"Uladzislau Rezki (Sony)" <urezki@gmail.com>,
Andrew Morton <akpm@linux-foundation.org>,
Ingo Molnar <mingo@redhat.com>,
Josh Triplett <josh@joshtriplett.org>,
Lai Jiangshan <jiangshanlai@gmail.com>,
linux-mm@kvack.org,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
"Paul E. McKenney" <paulmck@kernel.org>,
"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>,
rcu@vger.kernel.org, Steven Rostedt <rostedt@goodmis.org>
Subject: Re: [PATCH 10/18] rcu/tree: Maintain separate array for vmalloc ptrs
Date: Mon, 30 Mar 2020 17:29:51 +0200 [thread overview]
Message-ID: <20200330152951.GA2553@pc636> (raw)
In-Reply-To: <202003301715.9gMSa9Ca%lkp@intel.com>
Hello, Joel.
Sent out the patch fixing build error.
--
Vlad Rezki
> Hi "Joel,
>
> Thank you for the patch! Yet something to improve:
>
> [auto build test ERROR on rcu/dev]
> [also build test ERROR on rcu/rcu/next next-20200327]
> [cannot apply to linus/master linux/master v5.6]
> [if your patch is applied to the wrong git tree, please drop us a note to help
> improve the system. BTW, we also suggest to use '--base' option to specify the
> base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
>
> url: https://github.com/0day-ci/linux/commits/Joel-Fernandes-Google/kfree_rcu-improvements-for-rcu-dev/20200330-113719
> base: https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git dev
> config: mips-randconfig-a001-20200330 (attached as .config)
> compiler: mips64el-linux-gcc (GCC) 5.5.0
> reproduce:
> wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> chmod +x ~/bin/make.cross
> # save the attached .config to linux build tree
> GCC_VERSION=5.5.0 make.cross ARCH=mips
>
> If you fix the issue, kindly add following tag
> Reported-by: kbuild test robot <lkp@intel.com>
>
> All errors (new ones prefixed by >>):
>
> kernel/rcu/tree.c: In function 'kfree_rcu_work':
> >> kernel/rcu/tree.c:2946:4: error: implicit declaration of function 'vfree' [-Werror=implicit-function-declaration]
> vfree(bvhead->records[i]);
> ^
> cc1: some warnings being treated as errors
>
> vim +/vfree +2946 kernel/rcu/tree.c
>
> 2884
> 2885 /*
> 2886 * This function is invoked in workqueue context after a grace period.
> 2887 * It frees all the objects queued on ->bhead_free or ->head_free.
> 2888 */
> 2889 static void kfree_rcu_work(struct work_struct *work)
> 2890 {
> 2891 unsigned long flags;
> 2892 struct kvfree_rcu_bulk_data *bkhead, *bknext;
> 2893 struct kvfree_rcu_bulk_data *bvhead, *bvnext;
> 2894 struct rcu_head *head, *next;
> 2895 struct kfree_rcu_cpu *krcp;
> 2896 struct kfree_rcu_cpu_work *krwp;
> 2897 int i;
> 2898
> 2899 krwp = container_of(to_rcu_work(work),
> 2900 struct kfree_rcu_cpu_work, rcu_work);
> 2901
> 2902 krcp = krwp->krcp;
> 2903 spin_lock_irqsave(&krcp->lock, flags);
> 2904 /* Channel 1. */
> 2905 bkhead = krwp->bkvhead_free[0];
> 2906 krwp->bkvhead_free[0] = NULL;
> 2907
> 2908 /* Channel 2. */
> 2909 bvhead = krwp->bkvhead_free[1];
> 2910 krwp->bkvhead_free[1] = NULL;
> 2911
> 2912 /* Channel 3. */
> 2913 head = krwp->head_free;
> 2914 krwp->head_free = NULL;
> 2915 spin_unlock_irqrestore(&krcp->lock, flags);
> 2916
> 2917 /* kmalloc()/kfree() channel. */
> 2918 for (; bkhead; bkhead = bknext) {
> 2919 bknext = bkhead->next;
> 2920
> 2921 debug_rcu_bhead_unqueue(bkhead);
> 2922
> 2923 rcu_lock_acquire(&rcu_callback_map);
> 2924 trace_rcu_invoke_kfree_bulk_callback(rcu_state.name,
> 2925 bkhead->nr_records, bkhead->records);
> 2926
> 2927 kfree_bulk(bkhead->nr_records, bkhead->records);
> 2928 rcu_lock_release(&rcu_callback_map);
> 2929
> 2930 if (cmpxchg(&krcp->bkvcache[0], NULL, bkhead))
> 2931 free_page((unsigned long) bkhead);
> 2932
> 2933 cond_resched_tasks_rcu_qs();
> 2934 }
> 2935
> 2936 /* vmalloc()/vfree() channel. */
> 2937 for (; bvhead; bvhead = bvnext) {
> 2938 bvnext = bvhead->next;
> 2939
> 2940 debug_rcu_bhead_unqueue(bvhead);
> 2941
> 2942 rcu_lock_acquire(&rcu_callback_map);
> 2943 for (i = 0; i < bvhead->nr_records; i++) {
> 2944 trace_rcu_invoke_kvfree_callback(rcu_state.name,
> 2945 (struct rcu_head *) bvhead->records[i], 0);
> > 2946 vfree(bvhead->records[i]);
> 2947 }
> 2948 rcu_lock_release(&rcu_callback_map);
> 2949
> 2950 if (cmpxchg(&krcp->bkvcache[1], NULL, bvhead))
> 2951 free_page((unsigned long) bvhead);
> 2952
> 2953 cond_resched_tasks_rcu_qs();
> 2954 }
> 2955
> 2956 /*
> 2957 * This path covers emergency case only due to high
> 2958 * memory pressure also means low memory condition,
> 2959 * when we could not allocate a bulk array.
> 2960 *
> 2961 * Under that condition an object is queued to the
> 2962 * list instead.
> 2963 */
> 2964 for (; head; head = next) {
> 2965 unsigned long offset = (unsigned long)head->func;
> 2966 void *ptr = (void *)head - offset;
> 2967
> 2968 next = head->next;
> 2969 debug_rcu_head_unqueue((struct rcu_head *)ptr);
> 2970 rcu_lock_acquire(&rcu_callback_map);
> 2971 trace_rcu_invoke_kvfree_callback(rcu_state.name, head, offset);
> 2972
> 2973 if (!WARN_ON_ONCE(!__is_kvfree_rcu_offset(offset)))
> 2974 kvfree(ptr);
> 2975
> 2976 rcu_lock_release(&rcu_callback_map);
> 2977 cond_resched_tasks_rcu_qs();
> 2978 }
> 2979 }
> 2980
>
> ---
> 0-DAY CI Kernel Test Service, Intel Corporation
> https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
next prev parent reply other threads:[~2020-03-30 15:30 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-30 2:32 [PATCH 00/18] kfree_rcu() improvements for -rcu dev Joel Fernandes (Google)
2020-03-30 2:32 ` [PATCH 01/18] mm/list_lru.c: Rename kvfree_rcu() to local variant Joel Fernandes (Google)
2020-03-30 2:32 ` [PATCH 02/18] rcu: Introduce kvfree_rcu() interface Joel Fernandes (Google)
2020-03-30 2:32 ` [PATCH 03/18] rcu: Rename rcu_invoke_kfree_callback/rcu_kfree_callback Joel Fernandes (Google)
2020-03-30 2:32 ` [PATCH 04/18] rcu: Rename __is_kfree_rcu_offset() macro Joel Fernandes (Google)
2020-03-30 2:32 ` [PATCH 05/18] rcu: Rename kfree_call_rcu() to the kvfree_call_rcu() Joel Fernandes (Google)
2020-03-30 2:32 ` [PATCH 06/18] mm/list_lru.c: Remove kvfree_rcu_local() function Joel Fernandes (Google)
2020-03-30 2:32 ` [PATCH 07/18] rcu/tree: Simplify debug_objects handling Joel Fernandes (Google)
2020-03-30 7:00 ` kbuild test robot
2020-03-30 7:00 ` kbuild test robot
2020-03-30 18:42 ` Joel Fernandes
2020-03-30 2:32 ` [PATCH 08/18] rcu/tree: Clarify emergency path comment better Joel Fernandes (Google)
2020-03-30 2:32 ` [PATCH 09/18] rcu/tree: Simplify KFREE_BULK_MAX_ENTR macro Joel Fernandes (Google)
2020-03-30 2:32 ` [PATCH 10/18] rcu/tree: Maintain separate array for vmalloc ptrs Joel Fernandes (Google)
2020-03-30 6:48 ` kbuild test robot
2020-03-30 6:48 ` kbuild test robot
2020-03-30 9:10 ` kbuild test robot
2020-03-30 9:10 ` kbuild test robot
2020-03-30 15:29 ` Uladzislau Rezki [this message]
2020-03-30 15:31 ` Matthew Wilcox
2020-03-30 15:31 ` Matthew Wilcox
2020-03-30 15:37 ` Paul E. McKenney
2020-03-30 15:37 ` Paul E. McKenney
2020-03-30 17:16 ` Joel Fernandes
2020-03-30 17:43 ` Uladzislau Rezki
2020-03-30 18:21 ` Paul E. McKenney
2020-03-30 18:21 ` Paul E. McKenney
2020-03-30 2:32 ` [PATCH 11/18] rcu/tree: Introduce expedited_drain flag Joel Fernandes (Google)
2020-03-30 2:32 ` [PATCH 12/18] rcu/tree: Support reclaim for head-less object Joel Fernandes (Google)
2020-03-30 2:32 ` [PATCH 13/18] rcu/tiny: Move kvfree_call_rcu() out of header Joel Fernandes (Google)
2020-03-30 2:32 ` [PATCH 14/18] rcu/tiny: Support reclaim for head-less object Joel Fernandes (Google)
2020-03-30 2:32 ` [PATCH 15/18] rcu: Support headless variant in the kvfree_rcu() Joel Fernandes (Google)
2020-03-30 2:32 ` [PATCH 16/18] rcu/tree: Remove extra next variable in kfree worker function Joel Fernandes (Google)
2020-03-30 2:32 ` [PATCH 17/18] rcu/tree: Simplify is_vmalloc_addr expression Joel Fernandes (Google)
2020-03-30 2:32 ` [PATCH 18/18] rcu/tree: Make kvfree_rcu() tolerate any alignment Joel Fernandes (Google)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200330152951.GA2553@pc636 \
--to=urezki@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=jiangshanlai@gmail.com \
--cc=joel@joelfernandes.org \
--cc=josh@joshtriplett.org \
--cc=kbuild-all@lists.01.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=mingo@redhat.com \
--cc=paulmck@kernel.org \
--cc=rafael.j.wysocki@intel.com \
--cc=rcu@vger.kernel.org \
--cc=rostedt@goodmis.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.