x86/resctrl: Preserve CDP enable over CPU hotplug
Resctrl assumes that all CPUs are online when the filesystem is mounted,
and that CPUs remember their CDP-enabled state over CPU hotplug.
This goes wrong when resctrl's CDP-enabled state changes while all the
CPUs in a domain are offline.
When a domain comes online, enable (or disable!) CDP to match resctrl's
current setting.
Fixes: 5ff193fbde
("x86/intel_rdt: Add basic resctrl filesystem support")
Suggested-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: James Morse <james.morse@arm.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Cc: <stable@vger.kernel.org>
Link: https://lkml.kernel.org/r/20200221162105.154163-1-james.morse@arm.com
This commit is contained in:
parent
b0151da52a
commit
9fe0450785
|
@ -578,6 +578,8 @@ static void domain_add_cpu(int cpu, struct rdt_resource *r)
|
||||||
d->id = id;
|
d->id = id;
|
||||||
cpumask_set_cpu(cpu, &d->cpu_mask);
|
cpumask_set_cpu(cpu, &d->cpu_mask);
|
||||||
|
|
||||||
|
rdt_domain_reconfigure_cdp(r);
|
||||||
|
|
||||||
if (r->alloc_capable && domain_setup_ctrlval(r, d)) {
|
if (r->alloc_capable && domain_setup_ctrlval(r, d)) {
|
||||||
kfree(d);
|
kfree(d);
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -601,5 +601,6 @@ bool has_busy_rmid(struct rdt_resource *r, struct rdt_domain *d);
|
||||||
void __check_limbo(struct rdt_domain *d, bool force_free);
|
void __check_limbo(struct rdt_domain *d, bool force_free);
|
||||||
bool cbm_validate_intel(char *buf, u32 *data, struct rdt_resource *r);
|
bool cbm_validate_intel(char *buf, u32 *data, struct rdt_resource *r);
|
||||||
bool cbm_validate_amd(char *buf, u32 *data, struct rdt_resource *r);
|
bool cbm_validate_amd(char *buf, u32 *data, struct rdt_resource *r);
|
||||||
|
void rdt_domain_reconfigure_cdp(struct rdt_resource *r);
|
||||||
|
|
||||||
#endif /* _ASM_X86_RESCTRL_INTERNAL_H */
|
#endif /* _ASM_X86_RESCTRL_INTERNAL_H */
|
||||||
|
|
|
@ -1859,6 +1859,19 @@ static int set_cache_qos_cfg(int level, bool enable)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Restore the qos cfg state when a domain comes online */
|
||||||
|
void rdt_domain_reconfigure_cdp(struct rdt_resource *r)
|
||||||
|
{
|
||||||
|
if (!r->alloc_capable)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (r == &rdt_resources_all[RDT_RESOURCE_L2DATA])
|
||||||
|
l2_qos_cfg_update(&r->alloc_enabled);
|
||||||
|
|
||||||
|
if (r == &rdt_resources_all[RDT_RESOURCE_L3DATA])
|
||||||
|
l3_qos_cfg_update(&r->alloc_enabled);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Enable or disable the MBA software controller
|
* Enable or disable the MBA software controller
|
||||||
* which helps user specify bandwidth in MBps.
|
* which helps user specify bandwidth in MBps.
|
||||||
|
|
Loading…
Reference in New Issue