Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp3879934iob; Tue, 17 May 2022 09:03:16 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwx8ZUQ2fXarCQq0PQ7G1mY7WUz5KUQwndJtOaz9V06/wIKiLVyscJzc61P0bIzBjB/zDrG X-Received: by 2002:a17:90b:1c8e:b0:1dd:24f3:c6f6 with SMTP id oo14-20020a17090b1c8e00b001dd24f3c6f6mr36666191pjb.244.1652803396112; Tue, 17 May 2022 09:03:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1652803396; cv=none; d=google.com; s=arc-20160816; b=EkXK9LXknHD/w4AcxnjDsibN8cxkyLKPhTfaIscuSk1m17M7dNiHfyvsqyPBKCXah6 OVqgnD3RX5PbkQxp2XZLej18A5WVyFb23eFNgDk2kWt2WKvMj3BflaSXVLEU8AxEtXeW 2EZ2cVWx+973VbyFvena/C8Go/19gX7+Jsz0xTXL2NRiss9zRytKDbPFOKuL3KvPmjdg JD8bWRk8J2+Er5ArPVLZY0bTSaPApwVCOgiqf8IEM0O0dWha+6xKXqicEwnqYoLDrOEQ nrbuVu44EyVSKQssDR2VYjziJ69zdYjQAYvHi+uGxhnfyWNj2yWdiCtgJGIcXKf1pZ7s /XMA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:from:references :cc:to:subject; bh=hC9V62OYMBKAAg/xFp9psBF20xDy4FYnELOZGjkuzvU=; b=h3B8ynhqxFE1xg6K02aR38Ym8kYJG0ijG/NuC9cOpwbQbrPSOJmr0dKRgvOx+Ngls5 8sJv54GjoH7Mg+JGIIdn0yT3nQg+u6sn2ex8rrx+74RjXNOyYTbyMLUBJEY/d7uivzdI EXE6vq/XcyzAimw0qPlTWO3ld9x/FS3l+sLeSmZFa1YrR7BtO6ecbcxGEKvNzfxXdQOD Yv6lhZdon77RoaKtWnErxbOackDIAQP/0eqmBFBnp3ruWOMXPIR5OEO7ItCP25sJjFdp UX7GrIAeUddWWVhfHyk5aCiN+uS20yXLpRVtYKsNCNnxhAOnTGI9SLgQLvPkLOi2nPEe T9xg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id z3-20020a63e543000000b003db070d6484si16113996pgj.121.2022.05.17.09.03.01; Tue, 17 May 2022 09:03:16 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235580AbiEQBh1 (ORCPT + 99 others); Mon, 16 May 2022 21:37:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54112 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229692AbiEQBhZ (ORCPT ); Mon, 16 May 2022 21:37:25 -0400 Received: from szxga03-in.huawei.com (szxga03-in.huawei.com [45.249.212.189]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8B5862E68F; Mon, 16 May 2022 18:37:24 -0700 (PDT) Received: from kwepemi100017.china.huawei.com (unknown [172.30.72.55]) by szxga03-in.huawei.com (SkyGuard) with ESMTP id 4L2JWw6bypzCsjd; Tue, 17 May 2022 09:32:28 +0800 (CST) Received: from kwepemm600003.china.huawei.com (7.193.23.202) by kwepemi100017.china.huawei.com (7.221.188.163) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24; Tue, 17 May 2022 09:37:22 +0800 Received: from [10.67.101.67] (10.67.101.67) by kwepemm600003.china.huawei.com (7.193.23.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24; Tue, 17 May 2022 09:37:21 +0800 Subject: Re: [PATCH v8 4/8] perf arm: Refactor event list iteration in auxtrace_record__init() To: John Garry , Yicong Yang , , , , , , , , CC: , , , , , , , , , , , , , , , , References: <20220516125223.32012-1-yangyicong@hisilicon.com> <20220516125223.32012-5-yangyicong@hisilicon.com> From: "liuqi (BA)" Message-ID: <164bf8c9-70d1-6c34-0269-1be109ca1ae0@huawei.com> Date: Tue, 17 May 2022 09:37:21 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Thunderbird/68.6.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset="utf-8"; format=flowed Content-Language: en-GB Content-Transfer-Encoding: 8bit X-Originating-IP: [10.67.101.67] X-ClientProxiedBy: dggems706-chm.china.huawei.com (10.3.19.183) To kwepemm600003.china.huawei.com (7.193.23.202) X-CFilter-Loop: Reflected X-Spam-Status: No, score=-4.6 required=5.0 tests=BAYES_00,NICE_REPLY_A, RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2022/5/17 0:29, John Garry wrote: > On 16/05/2022 13:52, Yicong Yang wrote: > > As requested before, please mention "perf tool" in the commit subject "perf arm" is used referenced to previous commit, ok, will mention "perf tool" in the commit subject next time. Thanks, Qi > >> From: Qi Liu >> >> Use find_pmu_for_event() to simplify logic in auxtrace_record__init(). >> >> Signed-off-by: Qi Liu >> Signed-off-by: Yicong Yang >> --- >>   tools/perf/arch/arm/util/auxtrace.c | 53 ++++++++++++++++++----------- >>   1 file changed, 34 insertions(+), 19 deletions(-) >> >> diff --git a/tools/perf/arch/arm/util/auxtrace.c >> b/tools/perf/arch/arm/util/auxtrace.c >> index 5fc6a2a3dbc5..384c7cfda0fd 100644 >> --- a/tools/perf/arch/arm/util/auxtrace.c >> +++ b/tools/perf/arch/arm/util/auxtrace.c >> @@ -50,16 +50,32 @@ static struct perf_pmu **find_all_arm_spe_pmus(int >> *nr_spes, int *err) >>       return arm_spe_pmus; >>   } >> +static struct perf_pmu *find_pmu_for_event(struct perf_pmu **pmus, >> +                       int pmu_nr, struct evsel *evsel) >> +{ >> +    int i; >> + >> +    if (!pmus) >> +        return NULL; >> + >> +    for (i = 0; i < pmu_nr; i++) { >> +        if (evsel->core.attr.type == pmus[i]->type) >> +            return pmus[i]; >> +    } >> + >> +    return NULL; >> +} >> + >>   struct auxtrace_record >>   *auxtrace_record__init(struct evlist *evlist, int *err) >>   { >> -    struct perf_pmu    *cs_etm_pmu; >> +    struct perf_pmu    *cs_etm_pmu = NULL; >> +    struct perf_pmu **arm_spe_pmus = NULL; >>       struct evsel *evsel; >> -    bool found_etm = false; >> +    struct perf_pmu *found_etm = NULL; >>       struct perf_pmu *found_spe = NULL; >> -    struct perf_pmu **arm_spe_pmus = NULL; >> +    int auxtrace_event_cnt = 0; >>       int nr_spes = 0; >> -    int i = 0; >>       if (!evlist) >>           return NULL; >> @@ -68,24 +84,23 @@ struct auxtrace_record >>       arm_spe_pmus = find_all_arm_spe_pmus(&nr_spes, err); >>       evlist__for_each_entry(evlist, evsel) { >> -        if (cs_etm_pmu && >> -            evsel->core.attr.type == cs_etm_pmu->type) >> -            found_etm = true; >> - >> -        if (!nr_spes || found_spe) >> -            continue; >> - >> -        for (i = 0; i < nr_spes; i++) { >> -            if (evsel->core.attr.type == arm_spe_pmus[i]->type) { >> -                found_spe = arm_spe_pmus[i]; >> -                break; >> -            } >> -        } >> +        if (cs_etm_pmu && !found_etm) >> +            found_etm = find_pmu_for_event(&cs_etm_pmu, 1, evsel); >> + >> +        if (arm_spe_pmus && !found_spe) >> +            found_spe = find_pmu_for_event(arm_spe_pmus, nr_spes, >> evsel); >>       } >> + >>       free(arm_spe_pmus); >> -    if (found_etm && found_spe) { >> -        pr_err("Concurrent ARM Coresight ETM and SPE operation not >> currently supported\n"); >> +    if (found_etm) >> +        auxtrace_event_cnt++; >> + >> +    if (found_spe) >> +        auxtrace_event_cnt++; >> + >> +    if (auxtrace_event_cnt > 1) { >> +        pr_err("Concurrent AUX trace operation not currently >> supported\n"); >>           *err = -EOPNOTSUPP; >>           return NULL; >>       } > > .