lkml.org 
[lkml]   [2020]   [May]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v4 06/10] x86/resctrl: Use is_closid_match() in more places
    Date
    rdtgroup_tasks_assigned() and show_rdt_tasks() loop over threads testing
    for a CTRL/MON group match by closid/rmid with the provided rdtgrp.
    Further down the file are helpers to do this, move these further up and
    make use of them here.

    These helpers additionally check for alloc/mon capable. This is harmless
    as rdtgroup_mkdir() tests these capable flags before allowing the config
    directories to be created.

    Signed-off-by: James Morse <james.morse@arm.com>
    Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
    ---
    arch/x86/kernel/cpu/resctrl/rdtgroup.c | 30 ++++++++++++--------------
    1 file changed, 14 insertions(+), 16 deletions(-)

    diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
    index 24bdb52446aa..d3aa55e1380f 100644
    --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
    +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
    @@ -592,6 +592,18 @@ static int __rdtgroup_move_task(struct task_struct *tsk,
    return ret;
    }

    +static bool is_closid_match(struct task_struct *t, struct rdtgroup *r)
    +{
    + return (rdt_alloc_capable &&
    + (r->type == RDTCTRL_GROUP) && (t->closid == r->closid));
    +}
    +
    +static bool is_rmid_match(struct task_struct *t, struct rdtgroup *r)
    +{
    + return (rdt_mon_capable &&
    + (r->type == RDTMON_GROUP) && (t->rmid == r->mon.rmid));
    +}
    +
    /**
    * rdtgroup_tasks_assigned - Test if tasks have been assigned to resource group
    * @r: Resource group
    @@ -607,8 +619,7 @@ int rdtgroup_tasks_assigned(struct rdtgroup *r)

    rcu_read_lock();
    for_each_process_thread(p, t) {
    - if ((r->type == RDTCTRL_GROUP && t->closid == r->closid) ||
    - (r->type == RDTMON_GROUP && t->rmid == r->mon.rmid)) {
    + if (is_closid_match(t, r) || is_rmid_match(t, r)) {
    ret = 1;
    break;
    }
    @@ -706,8 +717,7 @@ static void show_rdt_tasks(struct rdtgroup *r, struct seq_file *s)

    rcu_read_lock();
    for_each_process_thread(p, t) {
    - if ((r->type == RDTCTRL_GROUP && t->closid == r->closid) ||
    - (r->type == RDTMON_GROUP && t->rmid == r->mon.rmid))
    + if (is_closid_match(t, r) || is_rmid_match(t, r))
    seq_printf(s, "%d\n", t->pid);
    }
    rcu_read_unlock();
    @@ -2244,18 +2254,6 @@ static int reset_all_ctrls(struct rdt_resource *r)
    return 0;
    }

    -static bool is_closid_match(struct task_struct *t, struct rdtgroup *r)
    -{
    - return (rdt_alloc_capable &&
    - (r->type == RDTCTRL_GROUP) && (t->closid == r->closid));
    -}
    -
    -static bool is_rmid_match(struct task_struct *t, struct rdtgroup *r)
    -{
    - return (rdt_mon_capable &&
    - (r->type == RDTMON_GROUP) && (t->rmid == r->mon.rmid));
    -}
    -
    /*
    * Move tasks from one to the other group. If @from is NULL, then all tasks
    * in the systems are moved unconditionally (used for teardown).
    --
    2.19.1
    \
     
     \ /
      Last update: 2020-05-26 15:41    [W:3.722 / U:0.000 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site