From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752117AbdBFM3g (ORCPT ); Mon, 6 Feb 2017 07:29:36 -0500 Received: from mail-wm0-f67.google.com ([74.125.82.67]:35977 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751875AbdBFM3d (ORCPT ); Mon, 6 Feb 2017 07:29:33 -0500 Date: Mon, 6 Feb 2017 13:29:28 +0100 From: Ingo Molnar To: Mike Galbraith Cc: Ingo Molnar , Thomas Gleixner , Sebastian Andrzej Siewior , LKML , Peter Zijlstra Subject: Re: tip: demise of tsk_cpus_allowed() and tsk_nr_cpus_allowed() Message-ID: <20170206122928.GB9404@gmail.com> References: <1486355037.10462.17.camel@gmx.de> <20170206103156.GA18908@gmail.com> <1486383511.10462.43.camel@gmx.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1486383511.10462.43.camel@gmx.de> User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org * Mike Galbraith wrote: > On Mon, 2017-02-06 at 11:31 +0100, Ingo Molnar wrote: > > * Mike Galbraith wrote: > > > > > Hi Ingo, > > > > > > Doing my ~daily tip merge of -rt, I couldn't help noticing $subject, as > > > they grow more functionality in -rt, which is allegedly slowly but > > > surely headed toward merge. I don't suppose they could be left intact? > > > I can easily restore them in my local tree, but it seems a bit of a > > > shame to whack these integration friendly bits. > > > > Oh, I missed that. How is tsk_cpus_allowed() wrapped in -rt right now? > > RT extends them to reflect whether migration is disabled or not. > > +/* Future-safe accessor for struct task_struct's cpus_allowed. */ > +static inline const struct cpumask *tsk_cpus_allowed(struct task_struct *p) > +{ > + if (__migrate_disabled(p)) > + return cpumask_of(task_cpu(p)); > + > + return &p->cpus_allowed; > +} > + > +static inline int tsk_nr_cpus_allowed(struct task_struct *p) > +{ > + if (__migrate_disabled(p)) > + return 1; > + return p->nr_cpus_allowed; > +} So ... I think the cleaner approach in -rt would be to introduce ->cpus_allowed_saved, and when disabling/enabling migration then saving the current mask there and changing ->cpus_allowed - and then restoring it when re-enabling migration. This means ->cpus_allowed could be used by the scheduler directly, no wrappery would be required, AFAICS. ( Some extra care would be required in places that change ->cpus_allowed because they'd now have to be aware of ->cpus_allowed_saved. ) Am I missing something? Ingo