• Reinette Chatre's avatar
    x86/intel_rdt: Ensure a CPU remains online for the region's pseudo-locking sequence · 80b71c34
    Reinette Chatre authored
    The user triggers the creation of a pseudo-locked region when writing
    the requested schemata to the schemata resctrl file. The pseudo-locking
    of a region is required to be done on a CPU that is associated with the
    cache on which the pseudo-locked region will reside. In order to run the
    locking code on a specific CPU, the needed CPU has to be selected and
    ensured to remain online during the entire locking sequence.
    
    At this time, the cpu_hotplug_lock is not taken during the pseudo-lock
    region creation and it is thus possible for a CPU to be selected to run
    the pseudo-locking code and then that CPU to go offline before the
    thread is able to run on it.
    
    Fix this by ensuring that the cpu_hotplug_lock is taken while the CPU on
    which code has to run needs to be controlled. Since the cpu_hotplug_lock
    is always taken before rdtgroup_mutex the lock order is maintained.
    
    Fixes: e0bdfe8e ("x86/intel_rdt: Support creation/removal of pseudo-locked region")
    Signed-off-by: default avatarReinette Chatre <reinette.chatre@intel.com>
    Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Fenghua Yu <fenghua.yu@intel.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Tony Luck <tony.luck@intel.com>
    Cc: gavin.hindman@intel.com
    Cc: jithu.joseph@intel.com
    Cc: stable <stable@vger.kernel.org>
    Cc: x86-ml <x86@kernel.org>
    Link: https://lkml.kernel.org/r/b7b17432a80f95a1fa21a1698ba643014f58ad31.1544476425.git.reinette.chatre@intel.com
    80b71c34
intel_rdt_ctrlmondata.c 11.7 KB