lkml.org 
[lkml]   [2019]   [Jun]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip:perf/core] perf/x86/rapl: Get quirk state from new probe framework
    Commit-ID:  637d97b53cdded02da55d0a25cda6fd6af3bd042
    Gitweb: https://git.kernel.org/tip/637d97b53cdded02da55d0a25cda6fd6af3bd042
    Author: Jiri Olsa <jolsa@kernel.org>
    AuthorDate: Sun, 16 Jun 2019 16:03:58 +0200
    Committer: Ingo Molnar <mingo@kernel.org>
    CommitDate: Mon, 24 Jun 2019 19:28:36 +0200

    perf/x86/rapl: Get quirk state from new probe framework

    Getting the apply_quirk bool from new rapl_model_match array.

    And because apply_quirk was the last remaining piece of data
    in rapl_cpu_match, replacing it with rapl_model_match as device
    table.

    The switch to new perf_msr_probe detection API is done.

    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Kan <kan.liang@linux.intel.com>
    Cc: Liang
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Link: https://lkml.kernel.org/r/20190616140358.27799-9-jolsa@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    ---
    arch/x86/events/intel/rapl.c | 82 ++------------------------------------------
    1 file changed, 3 insertions(+), 79 deletions(-)

    diff --git a/arch/x86/events/intel/rapl.c b/arch/x86/events/intel/rapl.c
    index 460196c02bae..64ab51ffdf06 100644
    --- a/arch/x86/events/intel/rapl.c
    +++ b/arch/x86/events/intel/rapl.c
    @@ -671,75 +671,6 @@ static int __init init_rapl_pmus(void)
    #define X86_RAPL_MODEL_MATCH(model, init) \
    { X86_VENDOR_INTEL, 6, model, X86_FEATURE_ANY, (unsigned long)&init }

    -struct intel_rapl_init_fun {
    - bool apply_quirk;
    -};
    -
    -static const struct intel_rapl_init_fun snb_rapl_init __initconst = {
    - .apply_quirk = false,
    -};
    -
    -static const struct intel_rapl_init_fun hsx_rapl_init __initconst = {
    - .apply_quirk = true,
    -};
    -
    -static const struct intel_rapl_init_fun hsw_rapl_init __initconst = {
    - .apply_quirk = false,
    -};
    -
    -static const struct intel_rapl_init_fun snbep_rapl_init __initconst = {
    - .apply_quirk = false,
    -};
    -
    -static const struct intel_rapl_init_fun knl_rapl_init __initconst = {
    - .apply_quirk = true,
    -};
    -
    -static const struct intel_rapl_init_fun skl_rapl_init __initconst = {
    - .apply_quirk = false,
    -};
    -
    -static const struct x86_cpu_id rapl_cpu_match[] __initconst = {
    - X86_RAPL_MODEL_MATCH(INTEL_FAM6_SANDYBRIDGE, snb_rapl_init),
    - X86_RAPL_MODEL_MATCH(INTEL_FAM6_SANDYBRIDGE_X, snbep_rapl_init),
    -
    - X86_RAPL_MODEL_MATCH(INTEL_FAM6_IVYBRIDGE, snb_rapl_init),
    - X86_RAPL_MODEL_MATCH(INTEL_FAM6_IVYBRIDGE_X, snbep_rapl_init),
    -
    - X86_RAPL_MODEL_MATCH(INTEL_FAM6_HASWELL_CORE, hsw_rapl_init),
    - X86_RAPL_MODEL_MATCH(INTEL_FAM6_HASWELL_X, hsx_rapl_init),
    - X86_RAPL_MODEL_MATCH(INTEL_FAM6_HASWELL_ULT, hsw_rapl_init),
    - X86_RAPL_MODEL_MATCH(INTEL_FAM6_HASWELL_GT3E, hsw_rapl_init),
    -
    - X86_RAPL_MODEL_MATCH(INTEL_FAM6_BROADWELL_CORE, hsw_rapl_init),
    - X86_RAPL_MODEL_MATCH(INTEL_FAM6_BROADWELL_GT3E, hsw_rapl_init),
    - X86_RAPL_MODEL_MATCH(INTEL_FAM6_BROADWELL_X, hsx_rapl_init),
    - X86_RAPL_MODEL_MATCH(INTEL_FAM6_BROADWELL_XEON_D, hsx_rapl_init),
    -
    - X86_RAPL_MODEL_MATCH(INTEL_FAM6_XEON_PHI_KNL, knl_rapl_init),
    - X86_RAPL_MODEL_MATCH(INTEL_FAM6_XEON_PHI_KNM, knl_rapl_init),
    -
    - X86_RAPL_MODEL_MATCH(INTEL_FAM6_SKYLAKE_MOBILE, skl_rapl_init),
    - X86_RAPL_MODEL_MATCH(INTEL_FAM6_SKYLAKE_DESKTOP, skl_rapl_init),
    - X86_RAPL_MODEL_MATCH(INTEL_FAM6_SKYLAKE_X, hsx_rapl_init),
    -
    - X86_RAPL_MODEL_MATCH(INTEL_FAM6_KABYLAKE_MOBILE, skl_rapl_init),
    - X86_RAPL_MODEL_MATCH(INTEL_FAM6_KABYLAKE_DESKTOP, skl_rapl_init),
    -
    - X86_RAPL_MODEL_MATCH(INTEL_FAM6_CANNONLAKE_MOBILE, skl_rapl_init),
    -
    - X86_RAPL_MODEL_MATCH(INTEL_FAM6_ATOM_GOLDMONT, hsw_rapl_init),
    - X86_RAPL_MODEL_MATCH(INTEL_FAM6_ATOM_GOLDMONT_X, hsw_rapl_init),
    -
    - X86_RAPL_MODEL_MATCH(INTEL_FAM6_ATOM_GOLDMONT_PLUS, hsw_rapl_init),
    -
    - X86_RAPL_MODEL_MATCH(INTEL_FAM6_ICELAKE_MOBILE, skl_rapl_init),
    - X86_RAPL_MODEL_MATCH(INTEL_FAM6_ICELAKE_DESKTOP, skl_rapl_init),
    - {},
    -};
    -
    -MODULE_DEVICE_TABLE(x86cpu, rapl_cpu_match);
    -
    static struct rapl_model model_snb = {
    .events = BIT(PERF_RAPL_PP0) |
    BIT(PERF_RAPL_PKG) |
    @@ -813,12 +744,12 @@ static const struct x86_cpu_id rapl_model_match[] __initconst = {
    {},
    };

    +MODULE_DEVICE_TABLE(x86cpu, rapl_model_match);
    +
    static int __init rapl_pmu_init(void)
    {
    const struct x86_cpu_id *id;
    - struct intel_rapl_init_fun *rapl_init;
    struct rapl_model *rm;
    - bool apply_quirk;
    int ret;

    id = x86_match_cpu(rapl_model_match);
    @@ -829,14 +760,7 @@ static int __init rapl_pmu_init(void)
    rapl_cntr_mask = perf_msr_probe(rapl_msrs, PERF_RAPL_MAX,
    false, (void *) &rm->events);

    - id = x86_match_cpu(rapl_cpu_match);
    - if (!id)
    - return -ENODEV;
    -
    - rapl_init = (struct intel_rapl_init_fun *)id->driver_data;
    - apply_quirk = rapl_init->apply_quirk;
    -
    - ret = rapl_check_hw_unit(apply_quirk);
    + ret = rapl_check_hw_unit(rm->apply_quirk);
    if (ret)
    return ret;

    \
     
     \ /
      Last update: 2019-06-25 10:44    [W:3.212 / U:0.264 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site