From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (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 3D95B25332E for ; Mon, 19 Jan 2026 12:19:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768825148; cv=none; b=l0oLGnQ+C1WBbLL8oPRmCZv8GyxaqGwVFWLE/resnd0u2LZHQaBy04unW6W4vWVyonH1xCdSS5DhwMGcNY+3U5E2bzCk83qlIyWNQnQ5KZks5Sf2baerRUuBRAweBrng7rYbtavVA74Rwjdq2ST7BnrYUTY3L3a8S3M/G7ZSOPM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768825148; c=relaxed/simple; bh=teXFtXXGk/xNdzpHOe8ZicaUkQF5AxEGCtxNPGNKlv8=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=GJuRtCFxwbd6MaxDtD/T5d/9IsOZmYnqujQwFVSmj+7VsG4RV2o5HS+0MfHAGrstBopy51nwJnhc85Z8gpdwbnNR9sf65v0iRcZb5mMNhycwAllGL5Nb5n4qID3CGCvUt7R5RxIirG070Hq2uY8PsYCetRUQrC8nRqrcle7eDIA= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=PuUUAox0; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=QxelgIhm; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="PuUUAox0"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="QxelgIhm" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1768825146; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=FTsb/OUNxM0Yl8TxO7CLRPGc7+/qemhXAp5qIFHps8o=; b=PuUUAox0hXqQLy4S1oxQ4mIhDAnDzCVGB4voowfL0KMG1iuvSap/e4v/3TC6i+N8ODj6o7 Dzo6TLimJ89eHZ30EvnzIUX3Pl3iOZvVeypnilCg+tUBuWqjXn3cC/HIz9rWLkve9T55QT hQGK7r9zRcJSLVMYbSoq36jWcblpMvg= Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-584-5WuBZyE4NI--TfDZTsNkng-1; Mon, 19 Jan 2026 07:19:04 -0500 X-MC-Unique: 5WuBZyE4NI--TfDZTsNkng-1 X-Mimecast-MFC-AGG-ID: 5WuBZyE4NI--TfDZTsNkng_1768825144 Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-c5539b9adbcso6276126a12.3 for ; Mon, 19 Jan 2026 04:19:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1768825143; x=1769429943; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=FTsb/OUNxM0Yl8TxO7CLRPGc7+/qemhXAp5qIFHps8o=; b=QxelgIhmZRM0sxVyTAAzaOtCFlRJBA3/48VGbkE+pCEl/h5xxR6Mge0MrBknSA+zUz IggV11vxRawpq1tjnB5qWsKkulvLaU5FYqQdos0oECXaWQkZjDND0AWxFIdmtzLc9+wK 3RjO+RU+roeKis1StU9jFNWufHXVvygu0FtI5iy5KNjLzHAhZT+eCSVO/YXmJKrI6Qoo VrztAQBQnoyFKKvFlNDb/QYqve07CS/wn4CuLa/aNtWUo8ApToZcl/UAQ2LdEhBH9T11 hh7LuBVSiLy20RJSEoaCRet0/JxLbEvdO2quuAtoYRpn+qZOmElxxpWPDZZiPu1yjrDN K8sg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768825143; x=1769429943; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=FTsb/OUNxM0Yl8TxO7CLRPGc7+/qemhXAp5qIFHps8o=; b=hAyVY/3HivRx4cJO43rh9jYwOQ89HM+jCqZMRu7G5jBCVqW3am9lFz90x5BzIDpsVK 9lkoHCBqcZsQjp/aKSMBajQ/7oFHRY3AUe1D3Fe2VAJvazDHY84bY20uepmwbwKKaJRC H7OY0puVDRz2XnBThV7WLu0uokzeQAmophRnkeLdiPwTibX/BKhnsqXkrYDDBAG6XRQ4 V2tmCwPTmHvGPpzOZPVfRNdHSkdxXIxVF+9O557XxlEWenMQe2k6EgwRcb2XLPI1xNDu z6wmKC05EnBEO5tUC/O4AVT0R7/NychTu5ji397Sqjxf9anLu+0Wvyij/ScGmURZSu5E O+6A== X-Forwarded-Encrypted: i=1; AJvYcCWyLeKFxNwsQ7tXXjdQYjeiw0ApKkV+rK5OFdtB+97PbMqB+DcY3OZuX8YE6FInujTXc8Df2LP+k+zGl3o=@vger.kernel.org X-Gm-Message-State: AOJu0Yy+zLt5sfbUrI/oLCHyvjduz9yNTkvrNgoTTjNRlWb9zg4Dy/2Z GgZGoDlAwRdb0/s92pZujbZ8eXfKQOmAMna/fxW3y0WQPAFtCNVwTCr4LEP2rsPrbuALcqGcYYH 4l3ymHeGg5z4cAAsX/DE/snzkh7DYin7/grFNvXDcVBqrj+GBPhrANxgasFoOZ17M7A== X-Gm-Gg: AY/fxX5U74yK88yywm7eTmTRxHp8gnGh1ivhuf+x04qaqFiaR9It81hs9d2B9UYIpo0 LdHUgxKr2WP5ML4IXglbgL576Gu7T3mvVjBCo7Z4A5vbzpfMr3kEr1OPBiBLqdc7jIXYmnSssR3 Ck8jrUcemxDEj26r7xJr4CRf+3jevdWbMMjAogBScJ7XXEAqIge8NSLfpZDS+PfRtZgzrHBsfPU F1tPexgEGD8ftbHI+l+2xqEx4CxrtntDte7S4jtbwlJQF8G7jixBdnU/5tohD0JBrTMqsKQhhwV U4NbD3Hrss+aBReEqlfBFlhajjFoTpEYaSW4eizzecyeCUHsvW1pqQ4r/mhN7E7buTcJ3VOKL5n O+2TOJwBKwUs= X-Received: by 2002:a05:6a21:4ccb:b0:366:14b0:1a2f with SMTP id adf61e73a8af0-38dfe7c6bc4mr11049677637.61.1768825143681; Mon, 19 Jan 2026 04:19:03 -0800 (PST) X-Received: by 2002:a05:6a21:4ccb:b0:366:14b0:1a2f with SMTP id adf61e73a8af0-38dfe7c6bc4mr11049665637.61.1768825143365; Mon, 19 Jan 2026 04:19:03 -0800 (PST) Received: from [10.72.112.128] ([209.132.188.88]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c5edf32d1f1sm8972189a12.22.2026.01.19.04.18.52 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 19 Jan 2026 04:19:02 -0800 (PST) Message-ID: <30b7483d-abaa-4668-95bd-93765c72a1f2@redhat.com> Date: Mon, 19 Jan 2026 20:18:50 +0800 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v3 47/47] arm_mpam: Quirk CMN-650's CSU NRDY behaviour To: Ben Horgan Cc: amitsinght@marvell.com, baisheng.gao@unisoc.com, baolin.wang@linux.alibaba.com, carl@os.amperecomputing.com, dave.martin@arm.com, david@kernel.org, dfustini@baylibre.com, fenghuay@nvidia.com, james.morse@arm.com, jonathan.cameron@huawei.com, kobak@nvidia.com, lcherian@marvell.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, peternewman@google.com, punit.agrawal@oss.qualcomm.com, quic_jiles@quicinc.com, reinette.chatre@intel.com, rohit.mathew@arm.com, scott@os.amperecomputing.com, sdonthineni@nvidia.com, tan.shaopeng@fujitsu.com, xhao@linux.alibaba.com, catalin.marinas@arm.com, will@kernel.org, corbet@lwn.net, maz@kernel.org, oupton@kernel.org, joey.gouly@arm.com, suzuki.poulose@arm.com, kvmarm@lists.linux.dev References: <20260112165914.4086692-1-ben.horgan@arm.com> <20260112165914.4086692-48-ben.horgan@arm.com> Content-Language: en-US From: Gavin Shan In-Reply-To: <20260112165914.4086692-48-ben.horgan@arm.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 1/13/26 12:59 AM, Ben Horgan wrote: > From: James Morse > > CMN-650 is afflicted with an erratum where the CSU NRDY bit never clears. > This tells us the monitor never finishes scanning the cache. The erratum > document says to wait the maximum time, then ignore the field. > > Add a flag to indicate whether this is the final attempt to read the > counter, and when this quirk is applied, ignore the NRDY field. > > This means accesses to this counter will always retry, even if the counter > was previously programmed to the same values. > > The counter value is not expected to be stable, it drifts up and down with > each allocation and eviction. The CSU register provides the value for a > point in time. > > Signed-off-by: James Morse > Signed-off-by: Ben Horgan > --- > Documentation/arch/arm64/silicon-errata.rst | 3 +++ > drivers/resctrl/mpam_devices.c | 12 ++++++++++++ > drivers/resctrl/mpam_internal.h | 6 ++++++ > 3 files changed, 21 insertions(+) > > diff --git a/Documentation/arch/arm64/silicon-errata.rst b/Documentation/arch/arm64/silicon-errata.rst > index e810b2a8f40e..3667650036fb 100644 > --- a/Documentation/arch/arm64/silicon-errata.rst > +++ b/Documentation/arch/arm64/silicon-errata.rst > @@ -213,6 +213,9 @@ stable kernels. > | ARM | GIC-700 | #2941627 | ARM64_ERRATUM_2941627 | > +----------------+-----------------+-----------------+-----------------------------+ > +----------------+-----------------+-----------------+-----------------------------+ > +| ARM | CMN-650 | #3642720 | N/A | > ++----------------+-----------------+-----------------+-----------------------------+ > ++----------------+-----------------+-----------------+-----------------------------+ > | Broadcom | Brahma-B53 | N/A | ARM64_ERRATUM_845719 | > +----------------+-----------------+-----------------+-----------------------------+ > | Broadcom | Brahma-B53 | N/A | ARM64_ERRATUM_843419 | > diff --git a/drivers/resctrl/mpam_devices.c b/drivers/resctrl/mpam_devices.c > index 7409cb7edab4..e6c9ddaa60e2 100644 > --- a/drivers/resctrl/mpam_devices.c > +++ b/drivers/resctrl/mpam_devices.c > @@ -691,6 +691,12 @@ static const struct mpam_quirk mpam_quirks[] = { > .iidr_mask = MPAM_IIDR_MATCH_ONE, > .workaround = T241_MBW_COUNTER_SCALE_64, > }, > + { > + /* ARM CMN-650 CSU erratum 3642720 */ > + .iidr = MPAM_IIDR_ARM_CMN_650, > + .iidr_mask = MPAM_IIDR_MATCH_ONE, > + .workaround = IGNORE_CSU_NRDY, > + }, > { NULL } /* Sentinel */ > }; > > @@ -1003,6 +1009,7 @@ struct mon_read { > enum mpam_device_features type; > u64 *val; > int err; > + bool waited_timeout; > }; > > static bool mpam_ris_has_mbwu_long_counter(struct mpam_msc_ris *ris) > @@ -1249,6 +1256,10 @@ static void __ris_msmon_read(void *arg) > if (mpam_has_feature(mpam_feat_msmon_csu_hw_nrdy, rprops)) > nrdy = now & MSMON___NRDY; > now = FIELD_GET(MSMON___VALUE, now); > + > + if (mpam_has_quirk(IGNORE_CSU_NRDY, msc) && m->waited_timeout) > + nrdy = false; > + > break; > case mpam_feat_msmon_mbwu_31counter: > case mpam_feat_msmon_mbwu_44counter: > @@ -1386,6 +1397,7 @@ int mpam_msmon_read(struct mpam_component *comp, struct mon_cfg *ctx, > .ctx = ctx, > .type = type, > .val = val, > + .waited_timeout = true, > }; > *val = 0; > > diff --git a/drivers/resctrl/mpam_internal.h b/drivers/resctrl/mpam_internal.h > index 1680d1036472..0bd323728b53 100644 > --- a/drivers/resctrl/mpam_internal.h > +++ b/drivers/resctrl/mpam_internal.h > @@ -226,6 +226,7 @@ enum mpam_device_quirks { > T241_SCRUB_SHADOW_REGS, > T241_FORCE_MBW_MIN_TO_ONE, > T241_MBW_COUNTER_SCALE_64, > + IGNORE_CSU_NRDY, > MPAM_QUIRK_LAST > }; > > @@ -251,6 +252,11 @@ struct mpam_quirk { > FIELD_PREP_CONST(MPAMF_IIDR_REVISION, 0) | \ > FIELD_PREP_CONST(MPAMF_IIDR_IMPLEMENTER, 0x36b) > > +#define MPAM_IIDR_ARM_CMN_650 FIELD_PREP_CONST(MPAMF_IIDR_PRODUCTID, 0) | \ > + FIELD_PREP_CONST(MPAMF_IIDR_VARIANT, 0) | \ > + FIELD_PREP_CONST(MPAMF_IIDR_REVISION, 0) | \ > + FIELD_PREP_CONST(MPAMF_IIDR_IMPLEMENTER, 0x43b) > + An error reported by checkpatch.pl as below. ERROR: Macros with complex values should be enclosed in parentheses #105: FILE: drivers/resctrl/mpam_internal.h:255: +#define MPAM_IIDR_ARM_CMN_650 FIELD_PREP_CONST(MPAMF_IIDR_PRODUCTID, 0) | \ + FIELD_PREP_CONST(MPAMF_IIDR_VARIANT, 0) | \ + FIELD_PREP_CONST(MPAMF_IIDR_REVISION, 0) | \ + FIELD_PREP_CONST(MPAMF_IIDR_IMPLEMENTER, 0x43b) > /* The values for MSMON_CFG_MBWU_FLT.RWBW */ > enum mon_filter_options { > COUNT_BOTH = 0, Thanks, Gavin