lkml.org 
[lkml]   [2018]   [Mar]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4/6] perf,x86: Update rdpmc_always_available static key to modern api
    Date
    No changes in refcount semantics -- key init is false; replace

    static_key_slow_inc|dec with static_branch_inc|dec
    static_key_false with static_branch_unlikely

    Added a '_key' suffix to rdpmc_always_available, for better self
    documentation.

    Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
    ---
    arch/x86/events/core.c | 6 +++---
    arch/x86/include/asm/mmu_context.h | 5 +++--
    2 files changed, 6 insertions(+), 5 deletions(-)

    diff --git a/arch/x86/events/core.c b/arch/x86/events/core.c
    index c5f3d83c04ad..7a987e6c7c35 100644
    --- a/arch/x86/events/core.c
    +++ b/arch/x86/events/core.c
    @@ -48,7 +48,7 @@ DEFINE_PER_CPU(struct cpu_hw_events, cpu_hw_events) = {
    .enabled = 1,
    };

    -struct static_key rdpmc_always_available = STATIC_KEY_INIT_FALSE;
    +DEFINE_STATIC_KEY_FALSE(rdpmc_always_available_key);

    u64 __read_mostly hw_cache_event_ids
    [PERF_COUNT_HW_CACHE_MAX]
    @@ -2206,9 +2206,9 @@ static ssize_t set_attr_rdpmc(struct device *cdev,
    * but only root can trigger it, so it's okay.
    */
    if (val == 2)
    - static_key_slow_inc(&rdpmc_always_available);
    + static_branch_inc(&rdpmc_always_available_key);
    else
    - static_key_slow_dec(&rdpmc_always_available);
    + static_branch_dec(&rdpmc_always_available_key);
    on_each_cpu(refresh_pce, NULL, 1);
    }

    diff --git a/arch/x86/include/asm/mmu_context.h b/arch/x86/include/asm/mmu_context.h
    index 1de72ce514cd..57e3785d0d26 100644
    --- a/arch/x86/include/asm/mmu_context.h
    +++ b/arch/x86/include/asm/mmu_context.h
    @@ -24,11 +24,12 @@ static inline void paravirt_activate_mm(struct mm_struct *prev,
    #endif /* !CONFIG_PARAVIRT */

    #ifdef CONFIG_PERF_EVENTS
    -extern struct static_key rdpmc_always_available;
    +
    +DECLARE_STATIC_KEY_FALSE(rdpmc_always_available_key);

    static inline void load_mm_cr4(struct mm_struct *mm)
    {
    - if (static_key_false(&rdpmc_always_available) ||
    + if (static_branch_unlikely(&rdpmc_always_available_key) ||
    atomic_read(&mm->context.perf_rdpmc_allowed))
    cr4_set_bits(X86_CR4_PCE);
    else
    --
    2.13.6
    \
     
     \ /
      Last update: 2018-03-26 23:25    [W:2.828 / U:0.324 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site