Re: [PATCH 09/10] x86/intel_rdt: Hot cpu support for Cache Allocation

From: Vikas Shivappa
Date: Fri Jun 19 2015 - 16:46:04 EST




On Tue, 16 Jun 2015, Thomas Gleixner wrote:

On Tue, 16 Jun 2015, Vikas Shivappa wrote:
On Tue, 16 Jun 2015, Thomas Gleixner wrote:

On Fri, 12 Jun 2015, Vikas Shivappa wrote:
+static inline void intel_rdt_cpu_start(int cpu)
+{
+ struct intel_pqr_state *state = &per_cpu(pqr_state, cpu);
+
+ state->closid = 0;
+ mutex_lock(&rdt_group_mutex);

This is called from CPU_STARTING, which runs on the starting cpu with
interrupts disabled. Clearly never tested with any of the mandatory
debug configs enabled.

But this can race with cbm_update_all calling on_each_cpu_mask ? or in other
words the lock helps on_each_cpu_mask not race with hot cpu code updating the
rdt_cpumask since the on_each_cpu_mask is also called with the lock always.

Its tested on the 0 day build which should include the debug config. Will add
a tested tag.

And that tag gives you special permission to take a mutex in irq
disabled context on a cpu which cannot schedule, right?

Will fix.

Doing
case CPU_ONLINE:
intel_rdt_cpu_start(cpu);
instead of
CPU_UP_PREPARE:
intel_rdt_cpu_start(cpu);

should work ?

CPU_ONLINE is just enough for me which doesnot have interrupts disabled and i can then sync using the lock.

Thanks,
Vikas


Thanks,

tglx

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
Please read the FAQ at http://www.tux.org/lkml/