Received: by 2002:a5d:9c59:0:0:0:0:0 with SMTP id 25csp91676iof; Sun, 5 Jun 2022 22:06:03 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxh/iY/aKbYiBcbI8PjLXdgzZgtFdHXQhXsyJjhKfLXlvQwUCYqWj5N2UAjfVNmVFk6ES1O X-Received: by 2002:a63:89c1:0:b0:3fc:6001:e871 with SMTP id v184-20020a6389c1000000b003fc6001e871mr19907732pgd.14.1654491962913; Sun, 05 Jun 2022 22:06:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1654491962; cv=none; d=google.com; s=arc-20160816; b=Tnja8h9zboKru/jasNz1e7tD+gBGplLOsA7gJsxna4aqvsikXizApofQG+xgjqCo+u WojK/8Q+dJO3TwlVHN++Jeyvc2sRlQvdTb9ywY0kIiXDqxInKMCe3rQvD4g/EiI2cPzX HKnhmKvK2YQv4eoRlax9OVz6vvz8XVemEfge2Sbl3Qg6TMfdFfv8DDegYdBWYLMbPOfz 9LS4ezBsXRssW2YITW26UNNOtxfsOIFclZQFA9YH76M36fQDzpcd3XCTicCtbRubicLv AsiO2eSIQPp2gaasCqYE8XSrjGx4iNry9mPX6F5Z/O0fcKh+pkbLjbFinMVN+MyJjuuq LD4Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=9Itr786U0bNQsTn9HxoMNJVLfUK0SwX/2+UygpwWJQU=; b=h1ytWhO16CHNTd/V6U9tO8ESIYcUcbc1YLspYRBc0vDZBmJklOh4Pzli2enx7mlEYm btcbKwGePXbyUvsd7FlBaIJOcQVHCFlFd8MipqVl+UYAJGINRYOXFskq/14u/5CpT66M TSva5YgWaQ9NPYvyHyapGGkuyCSDMBXJKdk4g5Gm8tfIl2X8i0baM9Qib3O/CDhhBpY6 1eb1Pe5RtropZ1TfO8ZGIlnAYqcbPX4TINZ5/0T0lq8b9MHrAAxd1Gg695GgU/1RQru6 HKnR4wq+5u2gOeDAsAmctaHaKkDkMz0rqP3hgib4hCFhXvFP+j/WmRPzJrrHhpSiB9VA t1zA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=HRrqkSj5; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id 101-20020a17090a0fee00b001e31fad7db1si18283859pjz.24.2022.06.05.22.06.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jun 2022 22:06:02 -0700 (PDT) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=HRrqkSj5; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 170C312C948; Sun, 5 Jun 2022 21:14:56 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1350493AbiFDE3R (ORCPT + 99 others); Sat, 4 Jun 2022 00:29:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57352 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1350473AbiFDE3M (ORCPT ); Sat, 4 Jun 2022 00:29:12 -0400 Received: from mail-pl1-x631.google.com (mail-pl1-x631.google.com [IPv6:2607:f8b0:4864:20::631]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6ED703C4B4 for ; Fri, 3 Jun 2022 21:29:06 -0700 (PDT) Received: by mail-pl1-x631.google.com with SMTP id u18so8152138plb.3 for ; Fri, 03 Jun 2022 21:29:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=9Itr786U0bNQsTn9HxoMNJVLfUK0SwX/2+UygpwWJQU=; b=HRrqkSj5jFDX3oMdC1b9v6uPAqX/It6MRcEmj5Xxq9SmXB740LQdQ0XK56Rip58K2N iyVPOXcR4/24EcInYwZz6mOBPcEyuUfcofWoYnyqNVDsMWiIbjOHIYOFglDE9C8Vk4lp n/Br/AdLC8qZp9sQLK4oio+rHwYCvXa+QG81PjO7mVeq6WlUzkKitg0M2ZIWjBkbVzm6 MMYTJkAXvaU3hKMX5oKllQHiDzyxILYIMnedbAI/49PKj3HIzJdbBYmRFQ/Nmjf17i9Q 4pqdfmL1YmcR/z9ZEIs6ncfC3OR/gLid8xbqcOAeUD7FGEwXOI2JqCWCUGRvpko9kBC9 xuPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=9Itr786U0bNQsTn9HxoMNJVLfUK0SwX/2+UygpwWJQU=; b=GTZfeHh9b4zMEcdbtks+e1UsCDoT6X39AF+fIJOFihXTgcHjLtbI7SpqJNb10d6MxV sgbreDtEYsKlnbd7M1VO3S+8FwQTkyl5LTOHHaXAZGeMVz1g+Mv84fFV5iPM4EL3x9f1 DAsTkKo/CQdgzikftZ8DbUAKbPamMGdWxV3rdwynhUjTMAC98ffADP4l8fRkSuJyCxZY DuADBCLB3p846DYT4uss7bEZX/y0kKH1hk4/KXHA88C1XOmPieQ0HKHyy6cpuX6UIW1G B3d+w/gm6Eusw574NfSS3Sc/MMIN+UjRKTVqLvpUopE9HLY9YyKxbrI0YNBIke1pwXoO u6Hw== X-Gm-Message-State: AOAM531x0iJz4v9DHsx+gXdxywgvzaP78KmUNIzDEsVcd6Qn62JF94yH QbeyzVnJBt+HftqmNE+Ux3dfXQ== X-Received: by 2002:a17:902:b683:b0:163:4ef2:3c40 with SMTP id c3-20020a170902b68300b001634ef23c40mr12758423pls.123.1654316945603; Fri, 03 Jun 2022 21:29:05 -0700 (PDT) Received: from leo-build-box.lan (ec2-54-67-95-58.us-west-1.compute.amazonaws.com. [54.67.95.58]) by smtp.gmail.com with ESMTPSA id w24-20020a1709027b9800b00163d4c3ffabsm6152916pll.304.2022.06.03.21.29.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 03 Jun 2022 21:29:05 -0700 (PDT) From: Leo Yan To: Arnaldo Carvalho de Melo , Peter Zijlstra , Ingo Molnar , Mark Rutland , Jiri Olsa , Namhyung Kim , Ian Rogers , John Garry , Will Deacon , James Clark , German Gomez , Ali Saidi , Joe Mario , Adam Li , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Cc: Leo Yan Subject: [PATCH v5 04/17] perf arm-spe: Don't set data source if it's not a memory operation Date: Sat, 4 Jun 2022 12:28:07 +0800 Message-Id: <20220604042820.2270916-5-leo.yan@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220604042820.2270916-1-leo.yan@linaro.org> References: <20220604042820.2270916-1-leo.yan@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no 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 Except memory load and store operations, Arm SPE records also can support other operation types, bug when set the data source field the current code assumes a record is a either load operation or store operation, this leads to wrongly synthesize memory samples. This patch strictly checks the record operation type, it only sets data source only for the operation types ARM_SPE_LD and ARM_SPE_ST, otherwise, returns zero for data source. Therefore, we can synthesize memory samples only when data source is a non-zero value, the function arm_spe__is_memory_event() is useless and removed. Fixes: e55ed3423c1b ("perf arm-spe: Synthesize memory event") Signed-off-by: Leo Yan Reviewed-by: Ali Saidi Tested-by: Ali Saidi Reviewed-by: German Gomez --- tools/perf/util/arm-spe.c | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/tools/perf/util/arm-spe.c b/tools/perf/util/arm-spe.c index 1a80151baed9..d040406f3314 100644 --- a/tools/perf/util/arm-spe.c +++ b/tools/perf/util/arm-spe.c @@ -387,26 +387,16 @@ static int arm_spe__synth_instruction_sample(struct arm_spe_queue *speq, return arm_spe_deliver_synth_event(spe, speq, event, &sample); } -#define SPE_MEM_TYPE (ARM_SPE_L1D_ACCESS | ARM_SPE_L1D_MISS | \ - ARM_SPE_LLC_ACCESS | ARM_SPE_LLC_MISS | \ - ARM_SPE_REMOTE_ACCESS) - -static bool arm_spe__is_memory_event(enum arm_spe_sample_type type) -{ - if (type & SPE_MEM_TYPE) - return true; - - return false; -} - static u64 arm_spe__synth_data_source(const struct arm_spe_record *record) { union perf_mem_data_src data_src = { 0 }; if (record->op == ARM_SPE_LD) data_src.mem_op = PERF_MEM_OP_LOAD; - else + else if (record->op == ARM_SPE_ST) data_src.mem_op = PERF_MEM_OP_STORE; + else + return 0; if (record->type & (ARM_SPE_LLC_ACCESS | ARM_SPE_LLC_MISS)) { data_src.mem_lvl = PERF_MEM_LVL_L3; @@ -510,7 +500,11 @@ static int arm_spe_sample(struct arm_spe_queue *speq) return err; } - if (spe->sample_memory && arm_spe__is_memory_event(record->type)) { + /* + * When data_src is zero it means the record is not a memory operation, + * skip to synthesize memory sample for this case. + */ + if (spe->sample_memory && data_src) { err = arm_spe__synth_mem_sample(speq, spe->memory_id, data_src); if (err) return err; -- 2.25.1