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.129.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 4FDAC500960 for ; Mon, 19 Jan 2026 01:30:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768786252; cv=none; b=tGA2CO+NWptVzc7kBrSiYeOYGEEZ0jpktfCOXYfXfZXNFbLtwz7PEYRFSlCAOhJA3FHD/4wODTpYzn9inwNN/c9AhwPvOZuvq9MefyQ8dFjJ2vHOulmnWBHU2UpPsU99tC0UO0xpwvsgtd3GRzYDl/fZTCFQozCU1+2h4GXuUlE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768786252; c=relaxed/simple; bh=esFUOG5kG/KdPoZSnGmpEQOj2HbWxqZ50jGQ1dSqriE=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=Ocf4ElPRxZG7qsRYlqSsaWQkVNIKA1v9SAkV0HIKTt4vn5vjkYRmOZaqOa6e0xE/ToVvWfLTaPlqeC/Z28danHF7qFwYwxO8Mdfuw3jgE4xlSBdBkwLn5HyU33YQw3FJS+e9Udbr4fkPVo2DcNvrY+kBJEgwY4Ful4XE7878Bn4= 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=CCAT6O26; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=ePi4sZM7; arc=none smtp.client-ip=170.10.129.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="CCAT6O26"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="ePi4sZM7" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1768786249; 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=5ZNUsUjLhm5UFUgzDZQqKpLzGtDmZv4iToPekSwA0mM=; b=CCAT6O26rYvKHS7NVB8CWH8F4zKaN2E+jR7xK9765iX7fbvOoq1QpxFL7OZ77qxHGXa5LF kRdfMrhlpDz3VnVTJgc6YN9UV7Jd8ukR27qnCQacok2vbe0gZW6upvOX9UBwNtX11cew38 7S13bknUopSJvIkxmVfUz0/2Ld4V2lU= Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-287-sv4WNSdlP1OEoqDqVgju3g-1; Sun, 18 Jan 2026 20:30:47 -0500 X-MC-Unique: sv4WNSdlP1OEoqDqVgju3g-1 X-Mimecast-MFC-AGG-ID: sv4WNSdlP1OEoqDqVgju3g_1768786247 Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-34e5a9f0d6aso3651515a91.0 for ; Sun, 18 Jan 2026 17:30:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1768786247; x=1769391047; 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=5ZNUsUjLhm5UFUgzDZQqKpLzGtDmZv4iToPekSwA0mM=; b=ePi4sZM7yM0iTIhMnb33AtCfSoFP6hAsG5EgQHx5YV6QGvg21TKaBvhuxqRFkofprJ NpR3ZwvtznOmRwIn2clPDaXYAhN7tykW47oD6fa04qp09qFwn+yptoWY1/+XGx4lSzl2 UafdnpnYpsW0TqwCn03IujiQ02/frcA5Wvk7w4aB86jDDX2clSB4nZSfyA41SsyCXMBu 5Grc0iX4VzC2hOkJszxPo3pEQb6HAke0fs6EOoTuXy/OjeVbIpO5dUWIBRxm4OIbiE9Q ENrlgv6fRNIk9dXlFQbuXovts7fwyWi7Bs5XsBuD2E1nru9DREXPw27hbzGNf6y1x3pd /EhA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768786247; x=1769391047; 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=5ZNUsUjLhm5UFUgzDZQqKpLzGtDmZv4iToPekSwA0mM=; b=w2X/LtouhS4/ZF1UoS5J7Z/4t7r6Y0vMR0Oo2739DJVMr0SZBvkuBa02mXJZ+Sr1u3 aCk38UoxUXttjCbqrr5EWz+tx5ZxjD6Ioe/MT39u98iaU8WRAWZHJ0b2wW851xP1pAtw 4BVJ3NVb5Vb964OXXoxDx/KLXFlH7ixgWfnPFgp/STXnfm0B0thAEfz633M+KVeQNBVP 1HWMY20pkcSm39Ir89XwfdytG3r5pW2seBOVoyHuNqCFq5cZQoGM03BLQtzjCc/ejrvH TNZir7f9RDEUpAwlRlXDhm9eEX2movQrOTxyKNh0/a40tuWqF9Qhu8dQngS+JnadChMd HjWQ== X-Forwarded-Encrypted: i=1; AJvYcCWBze68Fm42OgVuXxlKDk746iXiQth5ea5ZZdergAMRZrkAPJYPyfzb4MGmk7K5ZXxgdWYCBN3MLrhXa4c=@vger.kernel.org X-Gm-Message-State: AOJu0YwxxOn8IoRSkRSEOs9qz0c9Or3afmb3RtAjUi8Lc6xSkCrgeQPm Ttl8nPtMkGUsbUCeEuDwI52OI9m5S9bLy6/avBEhpOkF9N3NF5W9K4jU2BgmvbBXP98C1l+rnmG 2xK9fQ2vD195cLdcVWS/zmXCA49+vfVie5LsL3R2ep5HdI0DaB445Db/MfszZoAOShA== X-Gm-Gg: AY/fxX5hdNLtwc61kzyPUiYa1JWUrQnZgZtC8OavVNCTS8RL9ox5AGrIz9vjidb8asH DqvX/Jyoery/0ZQEivFGteALHiJR6xRc10TjtExRxIKjW9HOIDHJEXOyeHURucZemGhYyM57yqt Tv8AKE1IvRfkDtQPBbzPCIIBsiqza3m860jhUh/T653jn3mmr3XYGypyGWR7b6biijRjasey7QI KfGJ5RNnoIgGrVZ7SAa8T6EaADVkqhIQazhSmAcagZcHz7hm3WsDXizSxAow1YA1saAjS1r41js DXzAJREhrdtOCMuSz3vrE83enALd6MObeOrP29Qcjw89SxvX5SOQHTQBUYMvf8G7jR06oIgz5z3 8VR0p55wluSM= X-Received: by 2002:a17:90b:4984:b0:34e:6e7d:7e73 with SMTP id 98e67ed59e1d1-352678b93d7mr12264059a91.11.1768786246320; Sun, 18 Jan 2026 17:30:46 -0800 (PST) X-Received: by 2002:a17:90b:4984:b0:34e:6e7d:7e73 with SMTP id 98e67ed59e1d1-352678b93d7mr12264032a91.11.1768786245873; Sun, 18 Jan 2026 17:30:45 -0800 (PST) Received: from [10.72.112.128] ([209.132.188.88]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3527310210fsm804506a91.9.2026.01.18.17.30.34 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 18 Jan 2026 17:30:44 -0800 (PST) Message-ID: <97a5f9d3-6afa-49cf-883d-4e6932e8ff60@redhat.com> Date: Mon, 19 Jan 2026 09:30:32 +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 00/47] arm_mpam: Add KVM/arm64 and resctrl glue code 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> Content-Language: en-US From: Gavin Shan In-Reply-To: <20260112165914.4086692-1-ben.horgan@arm.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 1/13/26 12:58 AM, Ben Horgan wrote: > This new version of the mpam missing pieces has no major rework from the > previous version. It's mainly small corrections and code tidying based on > review and things I spotted along the way. To be able to merge this we need > review from more people and people to start testing on their platforms and > giving some Tested-by tags. > > Change list in patches. > > As mentioned in the cover letter for v2, one major departure from the > previous snapshot branches referenced in the base driver series is that the > same MPAM setting are used for kernel-space and user-space. There are pros > and cons of choosing this policy but I think it is the best thing to start > with as there are AMD plans for adding a resctrl feature to allow a > different closid/rmid configuration for user-space from kernel space. The > AMD feature is called PLZA and is mentioned in this lpc slide deck[1]. This > gives us a path forward to add support for having the EL1 and EL0 MPAM > partid/pmg configuration differ from each other. > > From James' cover letter: > > This is the missing piece to make MPAM usable resctrl in user-space. This has > shed its debugfs code and the read/write 'event configuration' for the monitors > to make the series smaller. > > This adds the arch code and KVM support first. I anticipate the whole thing > going via arm64, but if goes via tip instead, the an immutable branch with those > patches should be easy to do. > > Generally the resctrl glue code works by picking what MPAM features it can expose > from the MPAM drive, then configuring the structs that back the resctrl helpers. > If your platform is sufficiently Xeon shaped, you should be able to get L2/L3 CPOR > bitmaps exposed via resctrl. CSU counters work if they are on/after the L3. MBWU > counters are considerably more hairy, and depend on hueristics around the topology, > and a bunch of stuff trying to emulate ABMC. > If it didn't pick what you wanted it to, please share the debug messages produced > when enabling dynamic debug and booting with: > | dyndbg="file mpam_resctrl.c +pl" > > I've not found a platform that can test all the behaviours around the monitors, > so this is where I'd expect the most bugs. > > The MPAM spec that describes all the system and MMIO registers can be found here: > https://developer.arm.com/documentation/ddi0598/db/?lang=en > (Ignored the 'RETIRED' warning - that is just arm moving the documentation around. > This document has the best overview) > > > Based on v6.19-rc5 > This series can be retrieved from: > https://gitlab.arm.com/linux-arm/linux-bh.git mpam_resctrl_glue_v3 > > v2 can be found at: > https://lore.kernel.org/linux-arm-kernel/20251219181147.3404071-1-ben.horgan@arm.com/ > > rfc can be found at: > https://lore.kernel.org/linux-arm-kernel/20251205215901.17772-1-james.morse@arm.com/ > > [1] https://lpc.events/event/19/contributions/2093/attachments/1958/4172/resctrl%20Microconference%20LPC%202025%20Tokyo.pdf > > Ben Horgan (10): > arm_mpam: Use non-atomic bitops when modifying feature bitmap > arm64/sysreg: Add MPAMSM_EL1 register > KVM: arm64: Preserve host MPAM configuration when changing traps > KVM: arm64: Make MPAMSM_EL1 accesses UNDEF > arm64: mpam: Initialise and context switch the MPAMSM_EL1 register > KVM: arm64: Use kernel-space partid configuration for hypercalls > arm_mpam: resctrl: Add rmid index helpers > arm_mpam: resctrl: Add kunit test for rmid idx conversions > arm_mpam: resctrl: Wait for cacheinfo to be ready > arm_mpam: resctrl: Add kunit test for mbw min control generation > > Dave Martin (2): > arm_mpam: resctrl: Convert to/from MPAMs fixed-point formats > arm_mpam: resctrl: Add kunit test for control format conversions > > James Morse (30): > arm64: mpam: Context switch the MPAM registers > arm64: mpam: Re-initialise MPAM regs when CPU comes online > arm64: mpam: Advertise the CPUs MPAM limits to the driver > arm64: mpam: Add cpu_pm notifier to restore MPAM sysregs > arm64: mpam: Add helpers to change a task or cpu's MPAM PARTID/PMG > values > KVM: arm64: Force guest EL1 to use user-space's partid configuration > arm_mpam: resctrl: Add boilerplate cpuhp and domain allocation > arm_mpam: resctrl: Sort the order of the domain lists > arm_mpam: resctrl: Pick the caches we will use as resctrl resources > arm_mpam: resctrl: Implement resctrl_arch_reset_all_ctrls() > arm_mpam: resctrl: Add resctrl_arch_get_config() > arm_mpam: resctrl: Implement helpers to update configuration > arm_mpam: resctrl: Add plumbing against arm64 task and cpu hooks > arm_mpam: resctrl: Add CDP emulation > arm_mpam: resctrl: Add support for 'MB' resource > arm_mpam: resctrl: Add support for csu counters > arm_mpam: resctrl: Pick classes for use as mbm counters > arm_mpam: resctrl: Pre-allocate free running monitors > arm_mpam: resctrl: Pre-allocate assignable monitors > arm_mpam: resctrl: Add kunit test for ABMC/CDP interactions > arm_mpam: resctrl: Add resctrl_arch_config_cntr() for ABMC use > arm_mpam: resctrl: Allow resctrl to allocate monitors > arm_mpam: resctrl: Add resctrl_arch_rmid_read() and > resctrl_arch_reset_rmid() > arm_mpam: resctrl: Add resctrl_arch_cntr_read() & > resctrl_arch_reset_cntr() > arm_mpam: resctrl: Update the rmid reallocation limit > arm_mpam: resctrl: Add empty definitions for assorted resctrl > functions > arm64: mpam: Select ARCH_HAS_CPU_RESCTRL > arm_mpam: resctrl: Call resctrl_init() on platforms that can support > resctrl > arm_mpam: Generate a configuration for min controls > arm_mpam: Quirk CMN-650's CSU NRDY behaviour > > Jiapeng Chong (1): > arm_mpam: Remove duplicate linux/srcu.h header > > Shanker Donthineni (4): > arm_mpam: Add quirk framework > arm_mpam: Add workaround for T241-MPAM-1 > arm_mpam: Add workaround for T241-MPAM-4 > arm_mpam: Add workaround for T241-MPAM-6 > > Documentation/arch/arm64/silicon-errata.rst | 9 + > arch/arm64/Kconfig | 6 +- > arch/arm64/include/asm/el2_setup.h | 3 +- > arch/arm64/include/asm/mpam.h | 98 + > arch/arm64/include/asm/resctrl.h | 2 + > arch/arm64/include/asm/thread_info.h | 3 + > arch/arm64/kernel/Makefile | 1 + > arch/arm64/kernel/cpufeature.c | 21 +- > arch/arm64/kernel/mpam.c | 58 + > arch/arm64/kernel/process.c | 7 + > arch/arm64/kvm/hyp/include/hyp/switch.h | 12 +- > arch/arm64/kvm/hyp/nvhe/hyp-main.c | 8 + > arch/arm64/kvm/hyp/vhe/sysreg-sr.c | 13 + > arch/arm64/kvm/sys_regs.c | 2 + > arch/arm64/tools/sysreg | 8 + > drivers/resctrl/Kconfig | 9 +- > drivers/resctrl/Makefile | 1 + > drivers/resctrl/mpam_devices.c | 306 ++- > drivers/resctrl/mpam_internal.h | 131 +- > drivers/resctrl/mpam_resctrl.c | 1930 +++++++++++++++++++ > drivers/resctrl/test_mpam_devices.c | 66 + > drivers/resctrl/test_mpam_resctrl.c | 426 ++++ > include/linux/arm_mpam.h | 32 + > 23 files changed, 3119 insertions(+), 33 deletions(-) > create mode 100644 arch/arm64/include/asm/mpam.h > create mode 100644 arch/arm64/include/asm/resctrl.h > create mode 100644 arch/arm64/kernel/mpam.c > create mode 100644 drivers/resctrl/mpam_resctrl.c > create mode 100644 drivers/resctrl/test_mpam_resctrl.c > The L3 cache partitioning and MBW (soft) limiting works fine on NVidia's grace-hopper machine. Tested-by: Gavin Shan Thanks, Gavin