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



  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.