lkml.org 
[lkml]   [2023]   [Nov]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 08/34] drivers/perf: optimize ali_drw_get_counter_idx() by using find_bit()
    Date
    The function searches used_mask for a set bit in a for-loop bit by bit.
    We can do it faster by using atomic find_and_set_bit().

    Signed-off-by: Yury Norov <yury.norov@gmail.com>
    ---
    drivers/perf/alibaba_uncore_drw_pmu.c | 10 ++--------
    1 file changed, 2 insertions(+), 8 deletions(-)

    diff --git a/drivers/perf/alibaba_uncore_drw_pmu.c b/drivers/perf/alibaba_uncore_drw_pmu.c
    index 19d459a36be5..2a3b7701d568 100644
    --- a/drivers/perf/alibaba_uncore_drw_pmu.c
    +++ b/drivers/perf/alibaba_uncore_drw_pmu.c
    @@ -274,15 +274,9 @@ static const struct attribute_group *ali_drw_pmu_attr_groups[] = {
    static int ali_drw_get_counter_idx(struct perf_event *event)
    {
    struct ali_drw_pmu *drw_pmu = to_ali_drw_pmu(event->pmu);
    - int idx;
    + int idx = find_and_set_bit(drw_pmu->used_mask, ALI_DRW_PMU_COMMON_MAX_COUNTERS);

    - for (idx = 0; idx < ALI_DRW_PMU_COMMON_MAX_COUNTERS; ++idx) {
    - if (!test_and_set_bit(idx, drw_pmu->used_mask))
    - return idx;
    - }
    -
    - /* The counters are all in use. */
    - return -EBUSY;
    + return idx < ALI_DRW_PMU_COMMON_MAX_COUNTERS ? idx : -EBUSY;
    }

    static u64 ali_drw_pmu_read_counter(struct perf_event *event)
    --
    2.39.2
    \
     
     \ /
      Last update: 2023-11-20 14:04    [W:4.075 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site