From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932469AbcJZPab (ORCPT ); Wed, 26 Oct 2016 11:30:31 -0400 Received: from Galois.linutronix.de ([146.0.238.70]:40565 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754641AbcJZPaa (ORCPT ); Wed, 26 Oct 2016 11:30:30 -0400 Date: Wed, 26 Oct 2016 17:27:39 +0200 (CEST) From: Thomas Gleixner To: Fenghua Yu cc: "H. Peter Anvin" , Ingo Molnar , Tony Luck , Peter Zijlstra , Stephane Eranian , Borislav Petkov , Dave Hansen , Nilay Vaish , Shaohua Li , David Carrillo-Cisneros , Ravi V Shankar , Sai Prakhya , Vikas Shivappa , linux-kernel , x86 Subject: Re: [PATCH v5 15/18] x86/intel_rdt: Add tasks files In-Reply-To: <1477142405-32078-16-git-send-email-fenghua.yu@intel.com> Message-ID: References: <1477142405-32078-1-git-send-email-fenghua.yu@intel.com> <1477142405-32078-16-git-send-email-fenghua.yu@intel.com> User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sat, 22 Oct 2016, Fenghua Yu wrote: > +static void show_rdt_tasks(struct rdtgroup *r, struct seq_file *s) > +{ > + struct task_struct *p; > + > + rcu_read_lock(); > + for_each_process(p) { So this is restricted to processes, but with the write function I can put a single thread into a group ... for_each_process_thread() is what you want. > static int rdt_num_closid_show(struct kernfs_open_file *of, > @@ -594,6 +758,13 @@ static void rdt_reset_pqr_assoc_closid(void *v) > static void rmdir_all_sub(void) > { > struct rdtgroup *rdtgrp, *tmp; > + struct task_struct *p; > + > + /* move all tasks to default resource group */ > + read_lock(&tasklist_lock); > + for_each_process(p) > + p->closid = 0; Same issue as above .... > + read_unlock(&tasklist_lock); > > get_cpu(); > /* Reset PQR_ASSOC MSR on this cpu. */ > @@ -723,6 +894,7 @@ static int rdtgroup_rmdir(struct kernfs_node *kn) > { > struct rdtgroup *rdtgrp; > int cpu, ret = 0; > + struct task_struct *p; > > rdtgrp = rdtgroup_kn_lock_live(kn); > if (!rdtgrp) { > @@ -730,6 +902,14 @@ static int rdtgroup_rmdir(struct kernfs_node *kn) > return -ENOENT; > } > > + /* Give any tasks back to the default group */ > + read_lock(&tasklist_lock); > + for_each_process(p) { > + if (p->closid == rdtgrp->closid) > + p->closid = 0; Once more. > + } > + read_unlock(&tasklist_lock); > + Thanks, tglx