From: kbuild test robot <lkp@intel.com>
To: "Joel Fernandes (Google)" <joel@joelfernandes.org>
Cc: kbuild-all@lists.01.org, linux-kernel@vger.kernel.org,
"Uladzislau Rezki (Sony)" <urezki@gmail.com>,
Joel Fernandes <joel@joelfernandes.org>,
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:10:18 +0800 [thread overview]
Message-ID: <202003301715.9gMSa9Ca%lkp@intel.com> (raw)
In-Reply-To: <20200330023248.164994-11-joel@joelfernandes.org>
[-- Attachment #1: Type: text/plain, Size: 4737 bytes --]
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
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 28352 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: kbuild test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH 10/18] rcu/tree: Maintain separate array for vmalloc ptrs
Date: Mon, 30 Mar 2020 17:10:18 +0800 [thread overview]
Message-ID: <202003301715.9gMSa9Ca%lkp@intel.com> (raw)
In-Reply-To: <20200330023248.164994-11-joel@joelfernandes.org>
[-- Attachment #1: Type: text/plain, Size: 4874 bytes --]
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(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 28352 bytes --]
next prev parent reply other threads:[~2020-03-30 9:11 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 [this message]
2020-03-30 9:10 ` kbuild test robot
2020-03-30 15:29 ` Uladzislau Rezki
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=202003301715.9gMSa9Ca%lkp@intel.com \
--to=lkp@intel.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 \
--cc=urezki@gmail.com \
/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.