Received: by 2002:a05:6602:2086:0:0:0:0 with SMTP id a6csp4451821ioa; Wed, 27 Apr 2022 04:17:41 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyq0LQC0nqd6VAptV/a0NBCDMHYP5yiZyBTYpaIkrK6oOoOo1JUWJmXSpgbUgMEku0yJJBD X-Received: by 2002:a17:902:d50c:b0:15c:eedb:f01c with SMTP id b12-20020a170902d50c00b0015ceedbf01cmr20390383plg.138.1651058261366; Wed, 27 Apr 2022 04:17:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651058261; cv=none; d=google.com; s=arc-20160816; b=M4o3LSGr3SqSX6Wbs8mNzudl5zRHlH4Eb04xqZ0/SuiKaVaxO+ldFbP0eC8P2+vHxh tOMKq9vOyFv9VjAIPPQK0BDqYjoxFzZH/Rn+c+3GXPSbArKCzaQLAkumDCQHg01sOOez /FvNmm2Fpx8AYzPwHTHZs3KpQNhlbQFEBG6TdgfrmQa1XnoD2eUZ3ivdpEuoqYzwDfHS BjKfQdxJPjSscaxztHxJslMSw9eVDZRIGDWZ+ahKFJy8xGTO/36yGdlAPMdqwQRAsXEz e/3KyfPUSwhM31GsVFX4CzkOoq2qYaoXUKVh5U06olrfmWeT8ZuKwQCRaVot8RTAVw57 euVA== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=PRPgfDQGUqrQG/s3X0Se/PJKutfB+c1teY3v35n+PiM=; b=ENlROXbpNEi51+g00x/xsxQJ5RO6vggLet/cDDC6LecNZZEIL1LU2GZY1+UBELZpNf 7OKKnpzymw5WlAMI9gWcMkMxmKAOTqf7X1s5gIIsynJKlJwLaRBodrP/1ya2zgIV2c6N +DTJf2mNj5cYJyzepokobxUKBSKMtdwUBM9CSyO0uF+9x7o6+h5tEE+fHlmhnO0zNfPM 3WC+NTaw8tL9Vyg5MKMbhng+qohTc6uRJrtRR3Z51kf9bhlOIBcPtq5YaCmUbN6QjlGr odQ/OGs7xcVmXq5ZQmI2MjJPlrgokRgU0FfIOIl+9OrU7++6ddb4zF7sq7ZgS+iJBfu5 c/mg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b="TSmR/y6y"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id x19-20020a17090ab01300b001cd476d0e71si4832283pjq.82.2022.04.27.04.17.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 Apr 2022 04:17:41 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b="TSmR/y6y"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from out1.vger.email (out1.vger.email [IPv6:2620:137:e000::1:20]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 7E01B460FB0; Wed, 27 Apr 2022 03:11:26 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237235AbiDZI6Y (ORCPT + 99 others); Tue, 26 Apr 2022 04:58:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60370 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346583AbiDZIpL (ORCPT ); Tue, 26 Apr 2022 04:45:11 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CB2517DE3A; Tue, 26 Apr 2022 01:35:05 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 364C2618BF; Tue, 26 Apr 2022 08:35:05 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 20B2DC385A4; Tue, 26 Apr 2022 08:35:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1650962104; bh=tl2LK/JQS604tLL9yaUwwYcSn+n1f2Rk9mjlTuRuNoA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=TSmR/y6yWqLIFgjnL77ERv0LLWvVnA27J8EgQsCjj1hQSp0gQzCcgzAgsUNd1we4+ mU/+u2c17fgMoAmveN3o+hvU4Q7BiUl4RhO/ilAeS+xZvmKbVywxakeusqFKbgeLZa fnoESqmX7s26WHcU28iVUzrxcQeIyx8+yFl09oGA= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Athira Rajeev , Madhavan Srinivasan , Michael Ellerman , Sasha Levin Subject: [PATCH 5.10 72/86] powerpc/perf: Fix power9 event alternatives Date: Tue, 26 Apr 2022 10:21:40 +0200 Message-Id: <20220426081743.287834279@linuxfoundation.org> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20220426081741.202366502@linuxfoundation.org> References: <20220426081741.202366502@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.5 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE autolearn=unavailable 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 From: Athira Rajeev [ Upstream commit 0dcad700bb2776e3886fe0a645a4bf13b1e747cd ] When scheduling a group of events, there are constraint checks done to make sure all events can go in a group. Example, one of the criteria is that events in a group cannot use the same PMC. But platform specific PMU supports alternative event for some of the event codes. During perf_event_open(), if any event group doesn't match constraint check criteria, further lookup is done to find alternative event. By current design, the array of alternatives events in PMU code is expected to be sorted by column 0. This is because in find_alternative() the return criteria is based on event code comparison. ie. "event < ev_alt[i][0])". This optimisation is there since find_alternative() can be called multiple times. In power9 PMU code, the alternative event array is not sorted properly and hence there is breakage in finding alternative events. To work with existing logic, fix the alternative event array to be sorted by column 0 for power9-pmu.c Results: With alternative events, multiplexing can be avoided. That is, for example, in power9 PM_LD_MISS_L1 (0x3e054) has alternative event, PM_LD_MISS_L1_ALT (0x400f0). This is an identical event which can be programmed in a different PMC. Before: # perf stat -e r3e054,r300fc Performance counter stats for 'system wide': 1057860 r3e054 (50.21%) 379 r300fc (49.79%) 0.944329741 seconds time elapsed Since both the events are using PMC3 in this case, they are multiplexed here. After: # perf stat -e r3e054,r300fc Performance counter stats for 'system wide': 1006948 r3e054 182 r300fc Fixes: 91e0bd1e6251 ("powerpc/perf: Add PM_LD_MISS_L1 and PM_BR_2PATH to power9 event list") Signed-off-by: Athira Rajeev Reviewed-by: Madhavan Srinivasan Signed-off-by: Michael Ellerman Link: https://lore.kernel.org/r/20220419114828.89843-1-atrajeev@linux.vnet.ibm.com Signed-off-by: Sasha Levin --- arch/powerpc/perf/power9-pmu.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/arch/powerpc/perf/power9-pmu.c b/arch/powerpc/perf/power9-pmu.c index 2a57e93a79dc..7245355bee28 100644 --- a/arch/powerpc/perf/power9-pmu.c +++ b/arch/powerpc/perf/power9-pmu.c @@ -133,11 +133,11 @@ int p9_dd22_bl_ev[] = { /* Table of alternatives, sorted by column 0 */ static const unsigned int power9_event_alternatives[][MAX_ALT] = { - { PM_INST_DISP, PM_INST_DISP_ALT }, - { PM_RUN_CYC_ALT, PM_RUN_CYC }, - { PM_RUN_INST_CMPL_ALT, PM_RUN_INST_CMPL }, - { PM_LD_MISS_L1, PM_LD_MISS_L1_ALT }, { PM_BR_2PATH, PM_BR_2PATH_ALT }, + { PM_INST_DISP, PM_INST_DISP_ALT }, + { PM_RUN_CYC_ALT, PM_RUN_CYC }, + { PM_LD_MISS_L1, PM_LD_MISS_L1_ALT }, + { PM_RUN_INST_CMPL_ALT, PM_RUN_INST_CMPL }, }; static int power9_get_alternatives(u64 event, unsigned int flags, u64 alt[]) -- 2.35.1