From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752608AbcGMNR2 (ORCPT ); Wed, 13 Jul 2016 09:17:28 -0400 Received: from www.linutronix.de ([62.245.132.108]:38884 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752560AbcGMNRT (ORCPT ); Wed, 13 Jul 2016 09:17:19 -0400 Date: Wed, 13 Jul 2016 15:14:31 +0200 (CEST) From: Thomas Gleixner To: Fenghua Yu cc: Ingo Molnar , "H. Peter Anvin" , Tony Luck , Tejun Heo , Borislav Petkov , Stephane Eranian , Peter Zijlstra , Marcelo Tosatti , David Carrillo-Cisneros , Ravi V Shankar , Vikas Shivappa , Sai Prakhya , linux-kernel , x86 Subject: Re: [PATCH 24/32] Task fork and exit for rdtgroup In-Reply-To: <1468371785-53231-25-git-send-email-fenghua.yu@intel.com> Message-ID: References: <1468371785-53231-1-git-send-email-fenghua.yu@intel.com> <1468371785-53231-25-git-send-email-fenghua.yu@intel.com> User-Agent: Alpine 2.11 (DEB 23 2013-08-11) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Linutronix-Spam-Score: -1.0 X-Linutronix-Spam-Level: - X-Linutronix-Spam-Status: No , -1.0 points, 5.0 required, ALL_TRUSTED=-1,SHORTCIRCUIT=-0.0001 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 12 Jul 2016, Fenghua Yu wrote: > +void rdtgroup_fork(struct task_struct *child) > +{ > + INIT_LIST_HEAD(&child->rg_list); > + child->rdtgroup = NULL; > +} > + > +void rdtgroup_post_fork(struct task_struct *child) > +{ > + if (!use_rdtgroup_tasks) > + return; > + > + spin_lock_irq(&rdtgroup_task_lock); > + if (list_empty(&child->rg_list)) { Why would the list be non empty after a fork? > + struct rdtgroup *rdtgrp = current->rdtgroup; > + > + list_add_tail(&child->rg_list, &rdtgrp->pset.tasks); > + child->rdtgroup = rdtgrp; > + atomic_inc(&rdtgrp->pset.refcount); > + } > + spin_unlock_irq(&rdtgroup_task_lock); > +} > diff --git a/kernel/exit.c b/kernel/exit.c > index 9e6e135..04346b6 100644 > --- a/kernel/exit.c > +++ b/kernel/exit.c > @@ -59,6 +59,7 @@ > #include > #include > #include > +#include > > static void __unhash_process(struct task_struct *p, bool group_dead) > { > @@ -757,6 +758,7 @@ void do_exit(long code) > perf_event_exit_task(tsk); > > cgroup_exit(tsk); > + rdtgroup_exit(tsk); -ENOSUCHFUNCTION Please provide the implementations first and then hook it up not the other way round. Thanks, tglx