All of lore.kernel.org
 help / color / mirror / Atom feed
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 --]

  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.