lkml.org 
[lkml]   [2019]   [Mar]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.20 169/171] perf/x86/intel: Generalize dynamic constraint creation
    Date
    4.20-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: "Peter Zijlstra (Intel)" <peterz@infradead.org>

    commit 11f8b2d65ca9029591c8df26bb6bd063c312b7fe upstream

    Such that we can re-use it.

    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    arch/x86/events/intel/core.c | 51 +++++++++++++++++++++++++------------------
    1 file changed, 30 insertions(+), 21 deletions(-)

    --- a/arch/x86/events/intel/core.c
    +++ b/arch/x86/events/intel/core.c
    @@ -2769,6 +2769,35 @@ intel_stop_scheduling(struct cpu_hw_even
    }

    static struct event_constraint *
    +dyn_constraint(struct cpu_hw_events *cpuc, struct event_constraint *c, int idx)
    +{
    + WARN_ON_ONCE(!cpuc->constraint_list);
    +
    + if (!(c->flags & PERF_X86_EVENT_DYNAMIC)) {
    + struct event_constraint *cx;
    +
    + /*
    + * grab pre-allocated constraint entry
    + */
    + cx = &cpuc->constraint_list[idx];
    +
    + /*
    + * initialize dynamic constraint
    + * with static constraint
    + */
    + *cx = *c;
    +
    + /*
    + * mark constraint as dynamic
    + */
    + cx->flags |= PERF_X86_EVENT_DYNAMIC;
    + c = cx;
    + }
    +
    + return c;
    +}
    +
    +static struct event_constraint *
    intel_get_excl_constraints(struct cpu_hw_events *cpuc, struct perf_event *event,
    int idx, struct event_constraint *c)
    {
    @@ -2798,27 +2827,7 @@ intel_get_excl_constraints(struct cpu_hw
    * only needed when constraint has not yet
    * been cloned (marked dynamic)
    */
    - if (!(c->flags & PERF_X86_EVENT_DYNAMIC)) {
    - struct event_constraint *cx;
    -
    - /*
    - * grab pre-allocated constraint entry
    - */
    - cx = &cpuc->constraint_list[idx];
    -
    - /*
    - * initialize dynamic constraint
    - * with static constraint
    - */
    - *cx = *c;
    -
    - /*
    - * mark constraint as dynamic, so we
    - * can free it later on
    - */
    - cx->flags |= PERF_X86_EVENT_DYNAMIC;
    - c = cx;
    - }
    + c = dyn_constraint(cpuc, c, idx);

    /*
    * From here on, the constraint is dynamic.

    \
     
     \ /
      Last update: 2019-03-12 18:15    [W:2.818 / U:0.184 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site