From: James Morse <james.morse@arm.com>
To: linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, linux-acpi@vger.kernel.org
Cc: James Morse <james.morse@arm.com>,
D Scott Phillips OS <scott@os.amperecomputing.com>,
carl@os.amperecomputing.com, lcherian@marvell.com,
bobo.shaobowang@huawei.com, tan.shaopeng@fujitsu.com,
baolin.wang@linux.alibaba.com,
Jamie Iles <quic_jiles@quicinc.com>,
Xin Hao <xhao@linux.alibaba.com>,
peternewman@google.com, dfustini@baylibre.com,
amitsinght@marvell.com, David Hildenbrand <david@redhat.com>,
Dave Martin <dave.martin@arm.com>, Koba Ko <kobak@nvidia.com>,
Shanker Donthineni <sdonthineni@nvidia.com>,
fenghuay@nvidia.com, baisheng.gao@unisoc.com,
Jonathan Cameron <jonathan.cameron@huawei.com>,
Rob Herring <robh@kernel.org>,
Rohit Mathew <rohit.mathew@arm.com>,
Rafael Wysocki <rafael@kernel.org>, Len Brown <lenb@kernel.org>,
Lorenzo Pieralisi <lpieralisi@kernel.org>,
Hanjun Guo <guohanjun@huawei.com>,
Sudeep Holla <sudeep.holla@arm.com>,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will@kernel.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Danilo Krummrich <dakr@kernel.org>,
Lecopzer Chen <lecopzerc@nvidia.com>
Subject: [PATCH v2 10/29] arm_mpam: Add cpuhp callbacks to probe MSC hardware
Date: Wed, 10 Sep 2025 20:42:50 +0000 [thread overview]
Message-ID: <20250910204309.20751-11-james.morse@arm.com> (raw)
In-Reply-To: <20250910204309.20751-1-james.morse@arm.com>
Because an MSC can only by accessed from the CPUs in its cpu-affinity
set we need to be running on one of those CPUs to probe the MSC
hardware.
Do this work in the cpuhp callback. Probing the hardware will only
happen before MPAM is enabled, walk all the MSCs and probe those we can
reach that haven't already been probed as each CPU's online call is made.
This adds the low-level MSC register accessors.
Once all MSCs reported by the firmware have been probed from a CPU in
their respective cpu-affinity set, the probe-time cpuhp callbacks are
replaced. The replacement callbacks will ultimately need to handle
save/restore of the runtime MSC state across power transitions, but for
now there is nothing to do in them: so do nothing.
The architecture's context switch code will be enabled by a static-key,
this can be set by mpam_enable(), but must be done from process context,
not a cpuhp callback because both take the cpuhp lock.
Whenever a new MSC has been probed, the mpam_enable() work is scheduled
to test if all the MSCs have been probed. If probing fails, mpam_disable()
is scheduled to unregister the cpuhp callbacks and free memory.
CC: Lecopzer Chen <lecopzerc@nvidia.com>
Signed-off-by: James Morse <james.morse@arm.com>
---
Changes since v1:
* Removed register bounds check. If the firmware tables are wrong the
resulting translation fault should be enough to debug this.
* Removed '&' in front of a function pointer.
* Pulled mpam_disable() into this patch.
* Disable mpam when probing fails to avoid extra work on broken platforms.
* Added mpam_disbale_reason as there are now two non-debug reasons for this
to happen.
---
drivers/resctrl/mpam_devices.c | 173 +++++++++++++++++++++++++++++++-
drivers/resctrl/mpam_internal.h | 5 +
2 files changed, 177 insertions(+), 1 deletion(-)
diff --git a/drivers/resctrl/mpam_devices.c b/drivers/resctrl/mpam_devices.c
index c7f4981b3545..c265376d936b 100644
--- a/drivers/resctrl/mpam_devices.c
+++ b/drivers/resctrl/mpam_devices.c
@@ -4,6 +4,7 @@
#define pr_fmt(fmt) "%s:%s: " fmt, KBUILD_MODNAME, __func__
#include <linux/acpi.h>
+#include <linux/atomic.h>
#include <linux/arm_mpam.h>
#include <linux/cacheinfo.h>
#include <linux/cpu.h>
@@ -19,6 +20,7 @@
#include <linux/slab.h>
#include <linux/spinlock.h>
#include <linux/types.h>
+#include <linux/workqueue.h>
#include "mpam_internal.h"
@@ -38,6 +40,22 @@ struct srcu_struct mpam_srcu;
*/
static atomic_t mpam_num_msc;
+static int mpam_cpuhp_state;
+static DEFINE_MUTEX(mpam_cpuhp_state_lock);
+
+/*
+ * mpam is enabled once all devices have been probed from CPU online callbacks,
+ * scheduled via this work_struct. If access to an MSC depends on a CPU that
+ * was not brought online at boot, this can happen surprisingly late.
+ */
+static DECLARE_WORK(mpam_enable_work, &mpam_enable);
+
+/*
+ * All mpam error interrupts indicate a software bug. On receipt, disable the
+ * driver.
+ */
+static DECLARE_WORK(mpam_broken_work, &mpam_disable);
+
/*
* An MSC is a physical container for controls and monitors, each identified by
* their RIS index. These share a base-address, interrupts and some MMIO
@@ -77,6 +95,24 @@ LIST_HEAD(mpam_classes);
/* List of all objects that can be free()d after synchronise_srcu() */
static LLIST_HEAD(mpam_garbage);
+/* When mpam is disabled, the printed reason to aid debugging */
+static char *mpam_disable_reason;
+
+static u32 __mpam_read_reg(struct mpam_msc *msc, u16 reg)
+{
+ WARN_ON_ONCE(!cpumask_test_cpu(smp_processor_id(), &msc->accessibility));
+
+ return readl_relaxed(msc->mapped_hwpage + reg);
+}
+
+static inline u32 _mpam_read_partsel_reg(struct mpam_msc *msc, u16 reg)
+{
+ lockdep_assert_held_once(&msc->part_sel_lock);
+ return __mpam_read_reg(msc, reg);
+}
+
+#define mpam_read_partsel_reg(msc, reg) _mpam_read_partsel_reg(msc, MPAMF_##reg)
+
#define init_garbage(x) init_llist_node(&(x)->garbage.llist)
static struct mpam_vmsc *
@@ -434,6 +470,86 @@ int mpam_ris_create(struct mpam_msc *msc, u8 ris_idx,
return err;
}
+static int mpam_msc_hw_probe(struct mpam_msc *msc)
+{
+ u64 idr;
+ struct device *dev = &msc->pdev->dev;
+
+ lockdep_assert_held(&msc->probe_lock);
+
+ idr = __mpam_read_reg(msc, MPAMF_AIDR);
+ if ((idr & MPAMF_AIDR_ARCH_MAJOR_REV) != MPAM_ARCHITECTURE_V1) {
+ dev_err_once(dev, "MSC does not match MPAM architecture v1.x\n");
+ return -EIO;
+ }
+
+ msc->probed = true;
+
+ return 0;
+}
+
+static int mpam_cpu_online(unsigned int cpu)
+{
+ return 0;
+}
+
+/* Before mpam is enabled, try to probe new MSC */
+static int mpam_discovery_cpu_online(unsigned int cpu)
+{
+ int err = 0;
+ struct mpam_msc *msc;
+ bool new_device_probed = false;
+
+ guard(srcu)(&mpam_srcu);
+ list_for_each_entry_srcu(msc, &mpam_all_msc, all_msc_list,
+ srcu_read_lock_held(&mpam_srcu)) {
+ if (!cpumask_test_cpu(cpu, &msc->accessibility))
+ continue;
+
+ mutex_lock(&msc->probe_lock);
+ if (!msc->probed)
+ err = mpam_msc_hw_probe(msc);
+ mutex_unlock(&msc->probe_lock);
+
+ if (!err)
+ new_device_probed = true;
+ else
+ break;
+ }
+
+ if (new_device_probed && !err)
+ schedule_work(&mpam_enable_work);
+ if (err) {
+ mpam_disable_reason = "error during probing";
+ schedule_work(&mpam_broken_work);
+ }
+
+ return err;
+}
+
+static int mpam_cpu_offline(unsigned int cpu)
+{
+ return 0;
+}
+
+static void mpam_register_cpuhp_callbacks(int (*online)(unsigned int online),
+ int (*offline)(unsigned int offline))
+{
+ mutex_lock(&mpam_cpuhp_state_lock);
+ if (mpam_cpuhp_state) {
+ cpuhp_remove_state(mpam_cpuhp_state);
+ mpam_cpuhp_state = 0;
+ }
+
+ mpam_cpuhp_state = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "mpam:online",
+ online, offline);
+ if (mpam_cpuhp_state <= 0) {
+ pr_err("Failed to register cpuhp callbacks");
+ mpam_cpuhp_state = 0;
+ }
+ mutex_unlock(&mpam_cpuhp_state_lock);
+}
+
/*
* An MSC can control traffic from a set of CPUs, but may only be accessible
* from a (hopefully wider) set of CPUs. The common reason for this is power
@@ -544,7 +660,7 @@ static int mpam_msc_drv_probe(struct platform_device *pdev)
mpam_msc_drv_remove(pdev);
if (!err && atomic_add_return(1, &mpam_num_msc) == fw_num_msc)
- pr_info("Discovered all MSC\n");
+ mpam_register_cpuhp_callbacks(mpam_discovery_cpu_online, NULL);
return err;
}
@@ -557,6 +673,61 @@ static struct platform_driver mpam_msc_driver = {
.remove = mpam_msc_drv_remove,
};
+static void mpam_enable_once(void)
+{
+ mpam_register_cpuhp_callbacks(mpam_cpu_online, mpam_cpu_offline);
+
+ pr_info("MPAM enabled\n");
+}
+
+void mpam_disable(struct work_struct *ignored)
+{
+ struct mpam_msc *msc, *tmp;
+
+ mutex_lock(&mpam_cpuhp_state_lock);
+ if (mpam_cpuhp_state) {
+ cpuhp_remove_state(mpam_cpuhp_state);
+ mpam_cpuhp_state = 0;
+ }
+ mutex_unlock(&mpam_cpuhp_state_lock);
+
+ mutex_lock(&mpam_list_lock);
+ list_for_each_entry_safe(msc, tmp, &mpam_all_msc, all_msc_list)
+ mpam_msc_destroy(msc);
+ mutex_unlock(&mpam_list_lock);
+ mpam_free_garbage();
+
+ pr_err_once("MPAM disabled due to %s\n", mpam_disable_reason);
+}
+
+/*
+ * Enable mpam once all devices have been probed.
+ * Scheduled by mpam_discovery_cpu_online() once all devices have been created.
+ * Also scheduled when new devices are probed when new CPUs come online.
+ */
+void mpam_enable(struct work_struct *work)
+{
+ static atomic_t once;
+ struct mpam_msc *msc;
+ bool all_devices_probed = true;
+
+ /* Have we probed all the hw devices? */
+ guard(srcu)(&mpam_srcu);
+ list_for_each_entry_srcu(msc, &mpam_all_msc, all_msc_list,
+ srcu_read_lock_held(&mpam_srcu)) {
+ mutex_lock(&msc->probe_lock);
+ if (!msc->probed)
+ all_devices_probed = false;
+ mutex_unlock(&msc->probe_lock);
+
+ if (!all_devices_probed)
+ break;
+ }
+
+ if (all_devices_probed && !atomic_fetch_inc(&once))
+ mpam_enable_once();
+}
+
static int __init mpam_msc_driver_init(void)
{
if (!system_supports_mpam())
diff --git a/drivers/resctrl/mpam_internal.h b/drivers/resctrl/mpam_internal.h
index 109f03df46c2..d4f3febc7a50 100644
--- a/drivers/resctrl/mpam_internal.h
+++ b/drivers/resctrl/mpam_internal.h
@@ -51,6 +51,7 @@ struct mpam_msc {
* properties become read-only and the lists are protected by SRCU.
*/
struct mutex probe_lock;
+ bool probed;
unsigned long ris_idxs;
u32 ris_max;
@@ -149,6 +150,10 @@ struct mpam_msc_ris {
extern struct srcu_struct mpam_srcu;
extern struct list_head mpam_classes;
+/* Scheduled work callback to enable mpam once all MSC have been probed */
+void mpam_enable(struct work_struct *work);
+void mpam_disable(struct work_struct *work);
+
int mpam_get_cpumask_from_cache_id(unsigned long cache_id, u32 cache_level,
cpumask_t *affinity);
--
2.39.5
next prev parent reply other threads:[~2025-09-10 20:44 UTC|newest]
Thread overview: 200+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-10 20:42 [PATCH v2 00/29] arm_mpam: Add basic mpam driver James Morse
2025-09-10 20:42 ` [PATCH v2 01/29] ACPI / PPTT: Add a helper to fill a cpumask from a processor container James Morse
2025-09-11 10:43 ` Jonathan Cameron
2025-09-11 10:48 ` Jonathan Cameron
2025-09-19 16:10 ` James Morse
2025-09-25 9:32 ` Stanimir Varbanov
2025-10-10 16:54 ` James Morse
2025-10-02 3:35 ` Fenghua Yu
2025-10-10 16:54 ` James Morse
2025-10-03 0:15 ` Gavin Shan
2025-10-10 16:55 ` James Morse
2025-09-10 20:42 ` [PATCH v2 02/29] ACPI / PPTT: Stop acpi_count_levels() expecting callers to clear levels James Morse
2025-09-11 10:46 ` Jonathan Cameron
2025-09-19 16:10 ` James Morse
2025-09-11 14:08 ` Ben Horgan
2025-09-19 16:10 ` James Morse
2025-10-02 3:55 ` Fenghua Yu
2025-10-10 16:55 ` James Morse
2025-10-03 0:17 ` Gavin Shan
2025-09-10 20:42 ` [PATCH v2 03/29] ACPI / PPTT: Find cache level by cache-id James Morse
2025-09-11 10:59 ` Jonathan Cameron
2025-09-19 16:10 ` James Morse
2025-09-11 15:27 ` Lorenzo Pieralisi
2025-09-19 16:10 ` James Morse
2025-10-02 4:30 ` Fenghua Yu
2025-10-10 16:55 ` James Morse
2025-10-03 0:23 ` Gavin Shan
2025-09-10 20:42 ` [PATCH v2 04/29] ACPI / PPTT: Add a helper to fill a cpumask from a cache_id James Morse
2025-09-11 11:06 ` Jonathan Cameron
2025-09-19 16:10 ` James Morse
2025-10-02 5:03 ` Fenghua Yu
2025-10-10 16:55 ` James Morse
2025-09-10 20:42 ` [PATCH v2 05/29] arm64: kconfig: Add Kconfig entry for MPAM James Morse
2025-09-12 10:14 ` Ben Horgan
2025-10-02 5:06 ` Fenghua Yu
2025-10-10 16:55 ` James Morse
2025-10-03 0:32 ` Gavin Shan
2025-10-10 16:55 ` James Morse
2025-09-10 20:42 ` [PATCH v2 06/29] ACPI / MPAM: Parse the MPAM table James Morse
2025-09-11 13:17 ` Jonathan Cameron
2025-09-19 16:11 ` James Morse
2025-09-26 14:48 ` Jonathan Cameron
2025-10-17 18:50 ` James Morse
2025-09-11 14:56 ` Lorenzo Pieralisi
2025-09-19 16:11 ` James Morse
2025-09-16 13:17 ` [PATCH] arm_mpam: Try reading again if MPAM instance returns not ready Zeng Heng
2025-09-19 16:11 ` James Morse
2025-09-20 10:14 ` Zeng Heng
2025-10-02 3:21 ` [PATCH v2 06/29] ACPI / MPAM: Parse the MPAM table Fenghua Yu
2025-10-17 18:50 ` James Morse
2025-10-03 0:58 ` Gavin Shan
2025-10-17 18:51 ` James Morse
2025-09-10 20:42 ` [PATCH v2 07/29] arm_mpam: Add probe/remove for mpam msc driver and kbuild boiler plate James Morse
2025-09-11 13:35 ` Jonathan Cameron
2025-09-23 16:41 ` James Morse
2025-09-26 14:55 ` Jonathan Cameron
2025-10-17 18:51 ` James Morse
2025-09-17 11:03 ` Ben Horgan
2025-09-29 17:44 ` James Morse
2025-10-03 3:53 ` Gavin Shan
2025-10-17 18:51 ` James Morse
2025-09-10 20:42 ` [PATCH v2 08/29] arm_mpam: Add the class and component structures for firmware described ris James Morse
2025-09-11 14:22 ` Jonathan Cameron
2025-09-26 17:52 ` James Morse
2025-09-11 16:30 ` Markus Elfring
2025-09-26 17:52 ` James Morse
2025-09-26 18:15 ` Markus Elfring
2025-10-17 18:51 ` James Morse
2025-10-03 16:54 ` Fenghua Yu
2025-10-17 18:51 ` James Morse
2025-10-06 23:13 ` Gavin Shan
2025-10-17 18:51 ` James Morse
2025-09-10 20:42 ` [PATCH v2 09/29] arm_mpam: Add MPAM MSC register layout definitions James Morse
2025-09-11 15:00 ` Jonathan Cameron
2025-10-17 18:53 ` James Morse
2025-09-12 7:33 ` Markus Elfring
2025-10-06 23:25 ` Gavin Shan
2025-09-10 20:42 ` James Morse [this message]
2025-09-11 15:07 ` [PATCH v2 10/29] arm_mpam: Add cpuhp callbacks to probe MSC hardware Jonathan Cameron
2025-09-29 17:44 ` James Morse
2025-09-12 10:42 ` Ben Horgan
2025-09-29 17:44 ` James Morse
2025-10-03 17:56 ` Fenghua Yu
2025-10-06 23:42 ` Gavin Shan
2025-09-10 20:42 ` [PATCH v2 11/29] arm_mpam: Probe hardware to find the supported partid/pmg values James Morse
2025-09-11 15:18 ` Jonathan Cameron
2025-09-29 17:44 ` James Morse
2025-09-12 11:11 ` Ben Horgan
2025-09-29 17:44 ` James Morse
2025-10-03 18:58 ` Fenghua Yu
2025-09-10 20:42 ` [PATCH v2 12/29] arm_mpam: Add helpers for managing the locking around the mon_sel registers James Morse
2025-09-11 15:24 ` Jonathan Cameron
2025-09-29 17:44 ` James Morse
2025-09-11 15:31 ` Ben Horgan
2025-09-29 17:44 ` James Morse
2025-10-05 0:09 ` Fenghua Yu
2025-09-10 20:42 ` [PATCH v2 13/29] arm_mpam: Probe the hardware features resctrl supports James Morse
2025-09-11 15:29 ` Jonathan Cameron
2025-09-29 17:45 ` James Morse
2025-09-11 15:37 ` Ben Horgan
2025-09-29 17:45 ` James Morse
2025-09-30 13:32 ` Ben Horgan
2025-10-05 0:53 ` Fenghua Yu
2025-09-10 20:42 ` [PATCH v2 14/29] arm_mpam: Merge supported features during mpam_enable() into mpam_class James Morse
2025-09-12 11:49 ` Jonathan Cameron
2025-09-29 17:45 ` James Morse
2025-10-05 1:28 ` Fenghua Yu
2025-09-10 20:42 ` [PATCH v2 15/29] arm_mpam: Reset MSC controls from cpu hp callbacks James Morse
2025-09-12 11:25 ` Ben Horgan
2025-09-12 14:52 ` Ben Horgan
2025-09-30 17:06 ` James Morse
2025-09-30 17:06 ` James Morse
2025-09-12 11:55 ` Jonathan Cameron
2025-09-30 17:06 ` James Morse
2025-09-30 2:51 ` Shaopeng Tan (Fujitsu)
2025-10-01 9:51 ` James Morse
[not found] ` <1f084a23-7211-4291-99b6-7f5192fb9096@nvidia.com>
2025-10-17 18:50 ` James Morse
2025-09-10 20:42 ` [PATCH v2 16/29] arm_mpam: Add a helper to touch an MSC from any CPU James Morse
2025-09-12 11:57 ` Jonathan Cameron
2025-10-01 9:50 ` James Morse
2025-10-05 21:08 ` Fenghua Yu
2025-09-10 20:42 ` [PATCH v2 17/29] arm_mpam: Extend reset logic to allow devices to be reset any time James Morse
2025-09-12 11:42 ` Ben Horgan
2025-10-02 18:02 ` James Morse
2025-09-12 12:02 ` Jonathan Cameron
2025-09-30 17:06 ` James Morse
2025-09-25 7:16 ` Fenghua Yu
2025-10-02 18:02 ` James Morse
2025-09-10 20:42 ` [PATCH v2 18/29] arm_mpam: Register and enable IRQs James Morse
2025-09-12 12:12 ` Jonathan Cameron
2025-10-02 18:02 ` James Morse
2025-09-12 14:40 ` Ben Horgan
2025-10-02 18:03 ` James Morse
2025-09-12 15:22 ` Dave Martin
2025-10-03 18:02 ` James Morse
2025-09-25 6:33 ` Fenghua Yu
2025-10-03 18:03 ` James Morse
2025-09-10 20:42 ` [PATCH v2 19/29] arm_mpam: Use a static key to indicate when mpam is enabled James Morse
2025-09-12 12:13 ` Jonathan Cameron
2025-10-03 18:03 ` James Morse
2025-09-12 14:42 ` Ben Horgan
2025-10-03 18:03 ` James Morse
2025-09-26 2:31 ` Fenghua Yu
2025-10-03 18:04 ` James Morse
2025-09-10 20:43 ` [PATCH v2 20/29] arm_mpam: Allow configuration to be applied and restored during cpu online James Morse
2025-09-12 12:22 ` Jonathan Cameron
2025-10-07 11:11 ` James Morse
2025-09-12 15:00 ` Ben Horgan
2025-09-25 6:53 ` Fenghua Yu
2025-10-03 18:04 ` James Morse
2025-09-10 20:43 ` [PATCH v2 21/29] arm_mpam: Probe and reset the rest of the features James Morse
2025-09-12 13:07 ` Jonathan Cameron
2025-10-03 18:05 ` James Morse
2025-09-10 20:43 ` [PATCH v2 22/29] arm_mpam: Add helpers to allocate monitors James Morse
2025-09-12 13:11 ` Jonathan Cameron
2025-10-06 14:57 ` James Morse
2025-10-06 15:56 ` James Morse
2025-09-10 20:43 ` [PATCH v2 23/29] arm_mpam: Add mpam_msmon_read() to read monitor value James Morse
2025-09-11 15:46 ` Ben Horgan
2025-09-12 15:08 ` Ben Horgan
2025-10-06 16:00 ` James Morse
2025-10-06 15:59 ` James Morse
2025-09-12 13:21 ` Jonathan Cameron
2025-10-09 17:48 ` James Morse
2025-09-25 2:30 ` Fenghua Yu
2025-10-09 17:48 ` James Morse
2025-09-10 20:43 ` [PATCH v2 24/29] arm_mpam: Track bandwidth counter state for overflow and power management James Morse
2025-09-12 13:24 ` Jonathan Cameron
2025-10-09 17:48 ` James Morse
2025-09-12 15:55 ` Ben Horgan
2025-10-13 16:29 ` James Morse
2025-09-10 20:43 ` [PATCH v2 25/29] arm_mpam: Probe for long/lwd mbwu counters James Morse
2025-09-12 13:27 ` Jonathan Cameron
2025-10-09 17:48 ` James Morse
2025-09-10 20:43 ` [PATCH v2 26/29] arm_mpam: Use long MBWU counters if supported James Morse
2025-09-12 13:29 ` Jonathan Cameron
2025-10-10 16:53 ` James Morse
2025-09-26 4:51 ` Fenghua Yu
2025-09-10 20:43 ` [PATCH v2 27/29] arm_mpam: Add helper to reset saved mbwu state James Morse
2025-09-12 13:33 ` Jonathan Cameron
2025-10-10 16:53 ` James Morse
2025-09-18 2:35 ` Shaopeng Tan (Fujitsu)
2025-10-10 16:53 ` James Morse
2025-09-26 4:11 ` Fenghua Yu
2025-10-10 16:53 ` James Morse
2025-09-10 20:43 ` [PATCH v2 28/29] arm_mpam: Add kunit test for bitmap reset James Morse
2025-09-12 13:37 ` Jonathan Cameron
2025-10-10 16:53 ` James Morse
2025-09-12 16:06 ` Ben Horgan
2025-10-10 16:53 ` James Morse
2025-09-26 2:35 ` Fenghua Yu
2025-10-10 16:53 ` James Morse
2025-09-10 20:43 ` [PATCH v2 29/29] arm_mpam: Add kunit tests for props_mismatch() James Morse
2025-09-12 13:41 ` Jonathan Cameron
2025-10-10 16:54 ` James Morse
2025-09-12 16:01 ` Ben Horgan
2025-10-10 16:54 ` James Morse
2025-09-26 2:36 ` Fenghua Yu
2025-10-10 16:54 ` James Morse
2025-09-25 7:18 ` [PATCH v2 00/29] arm_mpam: Add basic mpam driver Fenghua Yu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250910204309.20751-11-james.morse@arm.com \
--to=james.morse@arm.com \
--cc=amitsinght@marvell.com \
--cc=baisheng.gao@unisoc.com \
--cc=baolin.wang@linux.alibaba.com \
--cc=bobo.shaobowang@huawei.com \
--cc=carl@os.amperecomputing.com \
--cc=catalin.marinas@arm.com \
--cc=dakr@kernel.org \
--cc=dave.martin@arm.com \
--cc=david@redhat.com \
--cc=dfustini@baylibre.com \
--cc=fenghuay@nvidia.com \
--cc=gregkh@linuxfoundation.org \
--cc=guohanjun@huawei.com \
--cc=jonathan.cameron@huawei.com \
--cc=kobak@nvidia.com \
--cc=lcherian@marvell.com \
--cc=lecopzerc@nvidia.com \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lpieralisi@kernel.org \
--cc=peternewman@google.com \
--cc=quic_jiles@quicinc.com \
--cc=rafael@kernel.org \
--cc=robh@kernel.org \
--cc=rohit.mathew@arm.com \
--cc=scott@os.amperecomputing.com \
--cc=sdonthineni@nvidia.com \
--cc=sudeep.holla@arm.com \
--cc=tan.shaopeng@fujitsu.com \
--cc=will@kernel.org \
--cc=xhao@linux.alibaba.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).