Received: by 2002:ab2:715a:0:b0:1fd:c064:50c with SMTP id l26csp35812lqm; Mon, 10 Jun 2024 11:51:46 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCX05hkpT2Yleyns7zwu597njjYDIAamsRbVD1tAlai1A4mckQOqFZ6iGHzEio7aJOXoaRmN0i3ySQmichSZRmSnWb54UffcQ3TsTEt7QA== X-Google-Smtp-Source: AGHT+IF4TgLQPoHt9etlvreaf/bT26wL/HYmVAohkZ1pjfqz2aUOydLjpKbLCUxON5KYvgSSekK0 X-Received: by 2002:a17:90b:3014:b0:2c2:f052:a24a with SMTP id 98e67ed59e1d1-2c2f052a2ddmr4232532a91.24.1718045506622; Mon, 10 Jun 2024 11:51:46 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1718045506; cv=pass; d=google.com; s=arc-20160816; b=Eea6URjYKXIZFL3ofhYrf5B4ERs4z8nr931iCkLjSSbnqmlmemYRhsZV5D3J04wGgN 9c2CU1bddPtn4MmcPPa9NKQpxh4o3YpeXAng5PoNfNNsjkZe5KDMdrNBNmikcoMVgExZ gjZL7knYs6r5ld8As5AYNrBH+K5a5eYpW0JXvCrLqfs63fHNQLqo+R7iTOUgx/AuUf2B c7An0ccfMPqPFT2KASbQ+sqPwlrRihq0Q2KTn+PMGkTeEUekIYq+y9i3W9s2tKzgSGjY bQsNRoKOOw4Ki+P9i3WS/oPx0Jr+4+aaZJDOo+DR5h0FrzV4Bev+p4nKyKwnxMvKrI9z 2FGw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=a198dPrqD6ZWyiQ6c23Xw+C5QHwIg+I5P3BKUseSWKQ=; fh=qTx768JYq6oxdX3jfjUzjJGF83d0IKGtQzHdow3lchk=; b=nOgjUacUv245auZMRwvezrIWge3QglHtUIilb9HxCvPfl3OvHQGHPUX7aEIXeuMp7C fzAyjbqXsv9V+DdaQsobYZ8xsTTnHpiBrwTSF81c2QebeyjwdTWgjg1mJ9erNofZqwK/ IyFTXThMB4WYn3YivDnXCDOD1oNlDtFJN/WbOWkNPsOtb58Jsqg/qWCEFcezmb7Ws3EZ SV6etwL6bvN1Ip0Mjzv9PRfrT20Slq6ZyTIKg4VY2rNrjmdPD6s84XErlT+Jm/95dRJi iilNg9Ty6Ejfk8Z3QycSkqPOofR3QMCFuHOP9OqtREF5AIzanjW0dhFz21h0HK43jKz9 FABA==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=XVOXr8m+; arc=pass (i=1 spf=pass spfdomain=intel.com dkim=pass dkdomain=intel.com dmarc=pass fromdomain=intel.com); spf=pass (google.com: domain of linux-kernel+bounces-208756-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-208756-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [2604:1380:40f1:3f00::1]) by mx.google.com with ESMTPS id 98e67ed59e1d1-2c2c978198csi5858253a91.25.2024.06.10.11.51.46 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 10 Jun 2024 11:51:46 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-208756-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) client-ip=2604:1380:40f1:3f00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=XVOXr8m+; arc=pass (i=1 spf=pass spfdomain=intel.com dkim=pass dkdomain=intel.com dmarc=pass fromdomain=intel.com); spf=pass (google.com: domain of linux-kernel+bounces-208756-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-208756-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sy.mirrors.kernel.org (Postfix) with ESMTPS id 9F0E8B249AB for ; Mon, 10 Jun 2024 18:38:37 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id F16DD154C01; Mon, 10 Jun 2024 18:35:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="XVOXr8m+" Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B397915279B for ; Mon, 10 Jun 2024 18:35:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.16 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718044551; cv=none; b=Ri4edt+i4A2HopKdmC7P1eBe0efnuRWdkZ3FgB/J0IzFWnnJTvdPhoV3SK0pgBLn72/o4Fe1qVJK8guoi6dCWJ+rvpd9d0seTd/jtxPQYu1SeJm2ZidhuvgBltWfzxk60gWt7eWszqLYrBJJprGy4PZqryqFpezP8sEExwlrDM4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718044551; c=relaxed/simple; bh=QZ9rPqge4hOJ1gyfwwcwTgWV+5+F/cF2I5sFjpHiY0Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=oPoGu/W+fLcYd8+uPrAc8tkNe/BNoE8vWyB8SDPgYIjFqB/n0wgDP75zewIRadE/ym1+cyNzYO2TzzlsTv1+PfqwkldEXkwRsYR8s+/S0tI4aVPAsOZIr0or84yaJDxQ+SUsVKdMedu8QYF8w6b15u6TAFTMgejFDH82U++wiPQ= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=XVOXr8m+; arc=none smtp.client-ip=192.198.163.16 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1718044550; x=1749580550; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=QZ9rPqge4hOJ1gyfwwcwTgWV+5+F/cF2I5sFjpHiY0Y=; b=XVOXr8m+ZqaTmUTXKA2HThNWTjROuq219P1Q/ew1NYe8ZbAuZw2JXRPh dpO8abpHIzvHZXRDt0TXAARMrSasD1LI0RoB0zuMdrUZLy++DyNxnFGxK iQecOmbRrhBBax8p+vPXDrl3/4YRrdHMm1Gon3CHr8JzhVARXGaH7gYvE vrNrkTofudg6CCQdjOIDcyBZyPWR7WE75mPEc8mZCczwZ4kp2uId2dYp1 kNzQFaZs4ZOeor0IkIMVAHU/p07k24bcdbYAupRFflxfwWcHEwc6oHCLL xOzkWd8nZ7qmOLvwdx1dF59xEzmy0MKk3bQI05sw/RnH8Plv8yJckzDG9 A==; X-CSE-ConnectionGUID: 6i/THa2KRneXXB8f3tm83g== X-CSE-MsgGUID: bcsiYbfgTAuaQb5LobNORw== X-IronPort-AV: E=McAfee;i="6600,9927,11099"; a="12004872" X-IronPort-AV: E=Sophos;i="6.08,227,1712646000"; d="scan'208";a="12004872" Received: from fmviesa005.fm.intel.com ([10.60.135.145]) by fmvoesa110.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Jun 2024 11:35:38 -0700 X-CSE-ConnectionGUID: GjLDaN1uT9SaG8oTEDSVaw== X-CSE-MsgGUID: 0dZ+4QkWSICYj5Gg/xSO1w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.08,227,1712646000"; d="scan'208";a="43576597" Received: from agluck-desk3.sc.intel.com ([172.25.222.70]) by fmviesa005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Jun 2024 11:35:39 -0700 From: Tony Luck To: Fenghua Yu , Reinette Chatre , Maciej Wieczor-Retman , Peter Newman , James Morse , Babu Moger , Drew Fustini , Dave Martin Cc: x86@kernel.org, linux-kernel@vger.kernel.org, patches@lists.linux.dev, Tony Luck Subject: [PATCH v20 15/18] x86/resctrl: Make __mon_event_count() handle sum domains Date: Mon, 10 Jun 2024 11:35:25 -0700 Message-ID: <20240610183528.349198-16-tony.luck@intel.com> X-Mailer: git-send-email 2.45.0 In-Reply-To: <20240610183528.349198-1-tony.luck@intel.com> References: <20240610183528.349198-1-tony.luck@intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Legacy resctrl monitor files must provide the sum of event values across all Sub-NUMA Cluster (SNC) domains that share an L3 cache instance. There are now two cases: 1) A specific domain is provided in struct rmid_read This is either a non-SNC system, or the request is to read data from just one SNC node. 2) Domain pointer is NULL. In this case the cacheinfo field in struct rmid_read indicates that all SNC nodes that share that L3 cache instance should have the event read and return the sum of all values. Update the CPU sanity check. The existing check that an event is read from a CPU in the requested domain still applies when reading a single domain. But when summing across domains a more relaxed check that the current CPU is in the scope of the L3 cache instance is appropriate since the MSRs to read events are scoped at L3 cache level. Signed-off-by: Tony Luck --- arch/x86/kernel/cpu/resctrl/monitor.c | 40 +++++++++++++++++++++------ 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/arch/x86/kernel/cpu/resctrl/monitor.c b/arch/x86/kernel/cpu/resctrl/monitor.c index f2fd35d294f2..c4d9a8df8d2d 100644 --- a/arch/x86/kernel/cpu/resctrl/monitor.c +++ b/arch/x86/kernel/cpu/resctrl/monitor.c @@ -324,9 +324,6 @@ int resctrl_arch_rmid_read(struct rdt_resource *r, struct rdt_mon_domain *d, resctrl_arch_rmid_read_context_check(); - if (!cpumask_test_cpu(smp_processor_id(), &d->hdr.cpu_mask)) - return -EINVAL; - prmid = logical_rmid_to_physical_rmid(cpu, rmid); ret = __rmid_read_phys(prmid, eventid, &msr_val); if (ret) @@ -592,6 +589,8 @@ static struct mbm_state *get_mbm_state(struct rdt_mon_domain *d, u32 closid, static int __mon_event_count(u32 closid, u32 rmid, struct rmid_read *rr) { + int cpu = smp_processor_id(); + struct rdt_mon_domain *d; struct mbm_state *m; u64 tval = 0; @@ -603,12 +602,37 @@ static int __mon_event_count(u32 closid, u32 rmid, struct rmid_read *rr) return 0; } - rr->err = resctrl_arch_rmid_read(rr->r, rr->d, closid, rmid, rr->evtid, - &tval, rr->arch_mon_ctx); - if (rr->err) - return rr->err; + if (rr->d) { + /* Reading a single domain, must be on a CPU in that domain */ + if (!cpumask_test_cpu(cpu, &rr->d->hdr.cpu_mask)) + return -EINVAL; + rr->err = resctrl_arch_rmid_read(rr->r, rr->d, closid, rmid, + rr->evtid, &tval, rr->arch_mon_ctx); + if (rr->err) + return rr->err; + + rr->val += tval; + + return 0; + } - rr->val += tval; + /* Summing domains that share a cache, must be on a CPU for that cache */ + if (!cpumask_test_cpu(cpu, &rr->ci->shared_cpu_map)) + return -EINVAL; + + /* + * Legacy files must report the sum of an event across all + * domains that share the same L3 cache instance. + */ + list_for_each_entry(d, &rr->r->mon_domains, hdr.list) { + if (d->ci->id != rr->ci->id) + continue; + rr->err = resctrl_arch_rmid_read(rr->r, d, closid, rmid, + rr->evtid, &tval, rr->arch_mon_ctx); + if (rr->err) + return rr->err; + rr->val += tval; + } return 0; } -- 2.45.0