Messages in this thread | | | Date | Wed, 8 May 2019 11:47:58 +0200 | From | Peter Zijlstra <> | Subject | Re: [PATCH] sched: Provide a pointer to the valid CPU mask |
| |
On Tue, Apr 23, 2019 at 04:26:36PM +0200, Sebastian Andrzej Siewior wrote: > In commit 4b53a3412d66 ("sched/core: Remove the tsk_nr_cpus_allowed() > wrapper") the tsk_nr_cpus_allowed() wrapper was removed. There was not > much difference in !RT but in RT we used this to implement > migrate_disable(). Within a migrate_disable() section the CPU mask is > restricted to single CPU while the "normal" CPU mask remains untouched. > > As an alternative implementation Ingo suggested to use > struct task_struct { > const cpumask_t *cpus_ptr; > cpumask_t cpus_mask; > }; > with > t->cpus_allowed_ptr = &t->cpus_allowed; > > In -RT we then can switch the cpus_ptr to > t->cpus_allowed_ptr = &cpumask_of(task_cpu(p)); > > in a migration disabled region. The rules are simple: > - Code that 'uses' ->cpus_allowed would use the pointer. > - Code that 'modifies' ->cpus_allowed would use the direct mask. > > I proposed this patch as a series earlier and it was shutdown due to the > migrate_disable() bits. It has been said that migrate_disable() should > only be used with RT and thus not introduced without it. > I hereby propose only the mask CPU-bits. > > Cc: Peter Zijlstra <peterz@infradead.org> > Cc: Thomas Gleixner <tglx@linutronix.de> > Cc: Ingo Molnar <mingo@kernel.org> > Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
OK I suppose; I still think that accessor was the nicer solution, but whatever. Queued for after the merge window.
| |