lkml.org 
[lkml]   [2020]   [Apr]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.5 61/65] x86/resctrl: Preserve CDP enable over CPU hotplug
    Date
    From: James Morse <james.morse@arm.com>

    commit 9fe0450785abbc04b0ed5d3cf61fcdb8ab656b4b upstream.

    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: 5ff193fbde20 ("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
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    arch/x86/kernel/cpu/resctrl/core.c | 2 ++
    arch/x86/kernel/cpu/resctrl/internal.h | 1 +
    arch/x86/kernel/cpu/resctrl/rdtgroup.c | 13 +++++++++++++
    3 files changed, 16 insertions(+)

    --- a/arch/x86/kernel/cpu/resctrl/core.c
    +++ b/arch/x86/kernel/cpu/resctrl/core.c
    @@ -578,6 +578,8 @@ static void domain_add_cpu(int cpu, stru
    d->id = id;
    cpumask_set_cpu(cpu, &d->cpu_mask);

    + rdt_domain_reconfigure_cdp(r);
    +
    if (r->alloc_capable && domain_setup_ctrlval(r, d)) {
    kfree(d);
    return;
    --- a/arch/x86/kernel/cpu/resctrl/internal.h
    +++ b/arch/x86/kernel/cpu/resctrl/internal.h
    @@ -601,5 +601,6 @@ bool has_busy_rmid(struct rdt_resource *
    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_amd(char *buf, u32 *data, struct rdt_resource *r);
    +void rdt_domain_reconfigure_cdp(struct rdt_resource *r);

    #endif /* _ASM_X86_RESCTRL_INTERNAL_H */
    --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
    +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
    @@ -1769,6 +1769,19 @@ static int set_cache_qos_cfg(int level,
    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
    * which helps user specify bandwidth in MBps.

    \
     
     \ /
      Last update: 2020-04-20 14:42    [W:8.520 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site