public inbox for stable@vger.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	patches@lists.linux.dev, Johannes Weiner <hannes@cmpxchg.org>,
	Domenico Cerasuolo <cerasuolodomenico@gmail.com>,
	"Peter Zijlstra (Intel)" <peterz@infradead.org>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.1 091/183] sched/psi: Allow unprivileged polling of N*2s period
Date: Tue, 25 Jul 2023 12:45:19 +0200	[thread overview]
Message-ID: <20230725104511.260423571@linuxfoundation.org> (raw)
In-Reply-To: <20230725104507.756981058@linuxfoundation.org>

From: Domenico Cerasuolo <cerasuolodomenico@gmail.com>

[ Upstream commit d82caa273565b45fcf103148950549af76c314b0 ]

PSI offers 2 mechanisms to get information about a specific resource
pressure. One is reading from /proc/pressure/<resource>, which gives
average pressures aggregated every 2s. The other is creating a pollable
fd for a specific resource and cgroup.

The trigger creation requires CAP_SYS_RESOURCE, and gives the
possibility to pick specific time window and threshold, spawing an RT
thread to aggregate the data.

Systemd would like to provide containers the option to monitor pressure
on their own cgroup and sub-cgroups. For example, if systemd launches a
container that itself then launches services, the container should have
the ability to poll() for pressure in individual services. But neither
the container nor the services are privileged.

This patch implements a mechanism to allow unprivileged users to create
pressure triggers. The difference with privileged triggers creation is
that unprivileged ones must have a time window that's a multiple of 2s.
This is so that we can avoid unrestricted spawning of rt threads, and
use instead the same aggregation mechanism done for the averages, which
runs independently of any triggers.

Suggested-by: Johannes Weiner <hannes@cmpxchg.org>
Signed-off-by: Domenico Cerasuolo <cerasuolodomenico@gmail.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Acked-by: Johannes Weiner <hannes@cmpxchg.org>
Link: https://lore.kernel.org/r/20230330105418.77061-5-cerasuolodomenico@gmail.com
Stable-dep-of: aff037078eca ("sched/psi: use kernfs polling functions for PSI trigger polling")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 Documentation/accounting/psi.rst |   4 +
 include/linux/psi.h              |   2 +-
 include/linux/psi_types.h        |   7 ++
 kernel/cgroup/cgroup.c           |   2 +-
 kernel/sched/psi.c               | 175 +++++++++++++++++++------------
 5 files changed, 121 insertions(+), 69 deletions(-)

diff --git a/Documentation/accounting/psi.rst b/Documentation/accounting/psi.rst
index 5e40b3f437f90..df6062eb3abbc 100644
--- a/Documentation/accounting/psi.rst
+++ b/Documentation/accounting/psi.rst
@@ -105,6 +105,10 @@ prevent overly frequent polling. Max limit is chosen as a high enough number
 after which monitors are most likely not needed and psi averages can be used
 instead.
 
+Unprivileged users can also create monitors, with the only limitation that the
+window size must be a multiple of 2s, in order to prevent excessive resource
+usage.
+
 When activated, psi monitor stays active for at least the duration of one
 tracking window to avoid repeated activations/deactivations when system is
 bouncing in and out of the stall state.
diff --git a/include/linux/psi.h b/include/linux/psi.h
index b029a847def1e..ab26200c28033 100644
--- a/include/linux/psi.h
+++ b/include/linux/psi.h
@@ -24,7 +24,7 @@ void psi_memstall_leave(unsigned long *flags);
 
 int psi_show(struct seq_file *s, struct psi_group *group, enum psi_res res);
 struct psi_trigger *psi_trigger_create(struct psi_group *group,
-			char *buf, enum psi_res res);
+			char *buf, enum psi_res res, struct file *file);
 void psi_trigger_destroy(struct psi_trigger *t);
 
 __poll_t psi_trigger_poll(void **trigger_ptr, struct file *file,
diff --git a/include/linux/psi_types.h b/include/linux/psi_types.h
index 1819afa8b1987..040c089581c6c 100644
--- a/include/linux/psi_types.h
+++ b/include/linux/psi_types.h
@@ -151,6 +151,9 @@ struct psi_trigger {
 
 	/* Deferred event(s) from previous ratelimit window */
 	bool pending_event;
+
+	/* Trigger type - PSI_AVGS for unprivileged, PSI_POLL for RT */
+	enum psi_aggregators aggregator;
 };
 
 struct psi_group {
@@ -171,6 +174,10 @@ struct psi_group {
 	/* Aggregator work control */
 	struct delayed_work avgs_work;
 
+	/* Unprivileged triggers against N*PSI_FREQ windows */
+	struct list_head avg_triggers;
+	u32 avg_nr_triggers[NR_PSI_STATES - 1];
+
 	/* Total stall times and sampled pressure averages */
 	u64 total[NR_PSI_AGGREGATORS][NR_PSI_STATES - 1];
 	unsigned long avg[NR_PSI_STATES - 1][3];
diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c
index 2380c4daef33d..c35efae566a4b 100644
--- a/kernel/cgroup/cgroup.c
+++ b/kernel/cgroup/cgroup.c
@@ -3771,7 +3771,7 @@ static ssize_t pressure_write(struct kernfs_open_file *of, char *buf,
 	}
 
 	psi = cgroup_psi(cgrp);
-	new = psi_trigger_create(psi, buf, res);
+	new = psi_trigger_create(psi, buf, res, of->file);
 	if (IS_ERR(new)) {
 		cgroup_put(cgrp);
 		return PTR_ERR(new);
diff --git a/kernel/sched/psi.c b/kernel/sched/psi.c
index f3df6a8ff493c..e072f6b31bf30 100644
--- a/kernel/sched/psi.c
+++ b/kernel/sched/psi.c
@@ -186,9 +186,14 @@ static void group_init(struct psi_group *group)
 		seqcount_init(&per_cpu_ptr(group->pcpu, cpu)->seq);
 	group->avg_last_update = sched_clock();
 	group->avg_next_update = group->avg_last_update + psi_period;
-	INIT_DELAYED_WORK(&group->avgs_work, psi_avgs_work);
 	mutex_init(&group->avgs_lock);
-	/* Init trigger-related members */
+
+	/* Init avg trigger-related members */
+	INIT_LIST_HEAD(&group->avg_triggers);
+	memset(group->avg_nr_triggers, 0, sizeof(group->avg_nr_triggers));
+	INIT_DELAYED_WORK(&group->avgs_work, psi_avgs_work);
+
+	/* Init rtpoll trigger-related members */
 	atomic_set(&group->rtpoll_scheduled, 0);
 	mutex_init(&group->rtpoll_trigger_lock);
 	INIT_LIST_HEAD(&group->rtpoll_triggers);
@@ -430,21 +435,32 @@ static u64 window_update(struct psi_window *win, u64 now, u64 value)
 	return growth;
 }
 
-static u64 update_triggers(struct psi_group *group, u64 now, bool *update_total)
+static u64 update_triggers(struct psi_group *group, u64 now, bool *update_total,
+						   enum psi_aggregators aggregator)
 {
 	struct psi_trigger *t;
-	u64 *total = group->total[PSI_POLL];
+	u64 *total = group->total[aggregator];
+	struct list_head *triggers;
+	u64 *aggregator_total;
 	*update_total = false;
 
+	if (aggregator == PSI_AVGS) {
+		triggers = &group->avg_triggers;
+		aggregator_total = group->avg_total;
+	} else {
+		triggers = &group->rtpoll_triggers;
+		aggregator_total = group->rtpoll_total;
+	}
+
 	/*
 	 * On subsequent updates, calculate growth deltas and let
 	 * watchers know when their specified thresholds are exceeded.
 	 */
-	list_for_each_entry(t, &group->rtpoll_triggers, node) {
+	list_for_each_entry(t, triggers, node) {
 		u64 growth;
 		bool new_stall;
 
-		new_stall = group->rtpoll_total[t->state] != total[t->state];
+		new_stall = aggregator_total[t->state] != total[t->state];
 
 		/* Check for stall activity or a previous threshold breach */
 		if (!new_stall && !t->pending_event)
@@ -546,6 +562,7 @@ static void psi_avgs_work(struct work_struct *work)
 	struct delayed_work *dwork;
 	struct psi_group *group;
 	u32 changed_states;
+	bool update_total;
 	u64 now;
 
 	dwork = to_delayed_work(work);
@@ -563,8 +580,10 @@ static void psi_avgs_work(struct work_struct *work)
 	 * Once restarted, we'll catch up the running averages in one
 	 * go - see calc_avgs() and missed_periods.
 	 */
-	if (now >= group->avg_next_update)
+	if (now >= group->avg_next_update) {
+		update_triggers(group, now, &update_total, PSI_AVGS);
 		group->avg_next_update = update_averages(group, now);
+	}
 
 	if (changed_states & PSI_STATE_RESCHEDULE) {
 		schedule_delayed_work(dwork, nsecs_to_jiffies(
@@ -574,7 +593,7 @@ static void psi_avgs_work(struct work_struct *work)
 	mutex_unlock(&group->avgs_lock);
 }
 
-static void init_triggers(struct psi_group *group, u64 now)
+static void init_rtpoll_triggers(struct psi_group *group, u64 now)
 {
 	struct psi_trigger *t;
 
@@ -667,7 +686,7 @@ static void psi_rtpoll_work(struct psi_group *group)
 	if (changed_states & group->rtpoll_states) {
 		/* Initialize trigger windows when entering polling mode */
 		if (now > group->rtpoll_until)
-			init_triggers(group, now);
+			init_rtpoll_triggers(group, now);
 
 		/*
 		 * Keep the monitor active for at least the duration of the
@@ -684,7 +703,7 @@ static void psi_rtpoll_work(struct psi_group *group)
 	}
 
 	if (now >= group->rtpoll_next_update) {
-		group->rtpoll_next_update = update_triggers(group, now, &update_total);
+		group->rtpoll_next_update = update_triggers(group, now, &update_total, PSI_POLL);
 		if (update_total)
 			memcpy(group->rtpoll_total, group->total[PSI_POLL],
 				   sizeof(group->rtpoll_total));
@@ -1254,16 +1273,23 @@ int psi_show(struct seq_file *m, struct psi_group *group, enum psi_res res)
 }
 
 struct psi_trigger *psi_trigger_create(struct psi_group *group,
-			char *buf, enum psi_res res)
+			char *buf, enum psi_res res, struct file *file)
 {
 	struct psi_trigger *t;
 	enum psi_states state;
 	u32 threshold_us;
+	bool privileged;
 	u32 window_us;
 
 	if (static_branch_likely(&psi_disabled))
 		return ERR_PTR(-EOPNOTSUPP);
 
+	/*
+	 * Checking the privilege here on file->f_cred implies that a privileged user
+	 * could open the file and delegate the write to an unprivileged one.
+	 */
+	privileged = cap_raised(file->f_cred->cap_effective, CAP_SYS_RESOURCE);
+
 	if (sscanf(buf, "some %u %u", &threshold_us, &window_us) == 2)
 		state = PSI_IO_SOME + res * 2;
 	else if (sscanf(buf, "full %u %u", &threshold_us, &window_us) == 2)
@@ -1283,6 +1309,13 @@ struct psi_trigger *psi_trigger_create(struct psi_group *group,
 		window_us > WINDOW_MAX_US)
 		return ERR_PTR(-EINVAL);
 
+	/*
+	 * Unprivileged users can only use 2s windows so that averages aggregation
+	 * work is used, and no RT threads need to be spawned.
+	 */
+	if (!privileged && window_us % 2000000)
+		return ERR_PTR(-EINVAL);
+
 	/* Check threshold */
 	if (threshold_us == 0 || threshold_us > window_us)
 		return ERR_PTR(-EINVAL);
@@ -1302,31 +1335,40 @@ struct psi_trigger *psi_trigger_create(struct psi_group *group,
 	t->last_event_time = 0;
 	init_waitqueue_head(&t->event_wait);
 	t->pending_event = false;
+	t->aggregator = privileged ? PSI_POLL : PSI_AVGS;
 
-	mutex_lock(&group->rtpoll_trigger_lock);
+	if (privileged) {
+		mutex_lock(&group->rtpoll_trigger_lock);
 
-	if (!rcu_access_pointer(group->rtpoll_task)) {
-		struct task_struct *task;
+		if (!rcu_access_pointer(group->rtpoll_task)) {
+			struct task_struct *task;
 
-		task = kthread_create(psi_rtpoll_worker, group, "psimon");
-		if (IS_ERR(task)) {
-			kfree(t);
-			mutex_unlock(&group->rtpoll_trigger_lock);
-			return ERR_CAST(task);
+			task = kthread_create(psi_rtpoll_worker, group, "psimon");
+			if (IS_ERR(task)) {
+				kfree(t);
+				mutex_unlock(&group->rtpoll_trigger_lock);
+				return ERR_CAST(task);
+			}
+			atomic_set(&group->rtpoll_wakeup, 0);
+			wake_up_process(task);
+			rcu_assign_pointer(group->rtpoll_task, task);
 		}
-		atomic_set(&group->rtpoll_wakeup, 0);
-		wake_up_process(task);
-		rcu_assign_pointer(group->rtpoll_task, task);
-	}
 
-	list_add(&t->node, &group->rtpoll_triggers);
-	group->rtpoll_min_period = min(group->rtpoll_min_period,
-		div_u64(t->win.size, UPDATES_PER_WINDOW));
-	group->rtpoll_nr_triggers[t->state]++;
-	group->rtpoll_states |= (1 << t->state);
+		list_add(&t->node, &group->rtpoll_triggers);
+		group->rtpoll_min_period = min(group->rtpoll_min_period,
+			div_u64(t->win.size, UPDATES_PER_WINDOW));
+		group->rtpoll_nr_triggers[t->state]++;
+		group->rtpoll_states |= (1 << t->state);
 
-	mutex_unlock(&group->rtpoll_trigger_lock);
+		mutex_unlock(&group->rtpoll_trigger_lock);
+	} else {
+		mutex_lock(&group->avgs_lock);
+
+		list_add(&t->node, &group->avg_triggers);
+		group->avg_nr_triggers[t->state]++;
 
+		mutex_unlock(&group->avgs_lock);
+	}
 	return t;
 }
 
@@ -1350,34 +1392,41 @@ void psi_trigger_destroy(struct psi_trigger *t)
 	 */
 	wake_up_pollfree(&t->event_wait);
 
-	mutex_lock(&group->rtpoll_trigger_lock);
-
-	if (!list_empty(&t->node)) {
-		struct psi_trigger *tmp;
-		u64 period = ULLONG_MAX;
-
-		list_del(&t->node);
-		group->rtpoll_nr_triggers[t->state]--;
-		if (!group->rtpoll_nr_triggers[t->state])
-			group->rtpoll_states &= ~(1 << t->state);
-		/* reset min update period for the remaining triggers */
-		list_for_each_entry(tmp, &group->rtpoll_triggers, node)
-			period = min(period, div_u64(tmp->win.size,
-					UPDATES_PER_WINDOW));
-		group->rtpoll_min_period = period;
-		/* Destroy rtpoll_task when the last trigger is destroyed */
-		if (group->rtpoll_states == 0) {
-			group->rtpoll_until = 0;
-			task_to_destroy = rcu_dereference_protected(
-					group->rtpoll_task,
-					lockdep_is_held(&group->rtpoll_trigger_lock));
-			rcu_assign_pointer(group->rtpoll_task, NULL);
-			del_timer(&group->rtpoll_timer);
+	if (t->aggregator == PSI_AVGS) {
+		mutex_lock(&group->avgs_lock);
+		if (!list_empty(&t->node)) {
+			list_del(&t->node);
+			group->avg_nr_triggers[t->state]--;
 		}
+		mutex_unlock(&group->avgs_lock);
+	} else {
+		mutex_lock(&group->rtpoll_trigger_lock);
+		if (!list_empty(&t->node)) {
+			struct psi_trigger *tmp;
+			u64 period = ULLONG_MAX;
+
+			list_del(&t->node);
+			group->rtpoll_nr_triggers[t->state]--;
+			if (!group->rtpoll_nr_triggers[t->state])
+				group->rtpoll_states &= ~(1 << t->state);
+			/* reset min update period for the remaining triggers */
+			list_for_each_entry(tmp, &group->rtpoll_triggers, node)
+				period = min(period, div_u64(tmp->win.size,
+						UPDATES_PER_WINDOW));
+			group->rtpoll_min_period = period;
+			/* Destroy rtpoll_task when the last trigger is destroyed */
+			if (group->rtpoll_states == 0) {
+				group->rtpoll_until = 0;
+				task_to_destroy = rcu_dereference_protected(
+						group->rtpoll_task,
+						lockdep_is_held(&group->rtpoll_trigger_lock));
+				rcu_assign_pointer(group->rtpoll_task, NULL);
+				del_timer(&group->rtpoll_timer);
+			}
+		}
+		mutex_unlock(&group->rtpoll_trigger_lock);
 	}
 
-	mutex_unlock(&group->rtpoll_trigger_lock);
-
 	/*
 	 * Wait for psi_schedule_rtpoll_work RCU to complete its read-side
 	 * critical section before destroying the trigger and optionally the
@@ -1437,27 +1486,19 @@ static int psi_cpu_show(struct seq_file *m, void *v)
 	return psi_show(m, &psi_system, PSI_CPU);
 }
 
-static int psi_open(struct file *file, int (*psi_show)(struct seq_file *, void *))
-{
-	if (file->f_mode & FMODE_WRITE && !capable(CAP_SYS_RESOURCE))
-		return -EPERM;
-
-	return single_open(file, psi_show, NULL);
-}
-
 static int psi_io_open(struct inode *inode, struct file *file)
 {
-	return psi_open(file, psi_io_show);
+	return single_open(file, psi_io_show, NULL);
 }
 
 static int psi_memory_open(struct inode *inode, struct file *file)
 {
-	return psi_open(file, psi_memory_show);
+	return single_open(file, psi_memory_show, NULL);
 }
 
 static int psi_cpu_open(struct inode *inode, struct file *file)
 {
-	return psi_open(file, psi_cpu_show);
+	return single_open(file, psi_cpu_show, NULL);
 }
 
 static ssize_t psi_write(struct file *file, const char __user *user_buf,
@@ -1491,7 +1532,7 @@ static ssize_t psi_write(struct file *file, const char __user *user_buf,
 		return -EBUSY;
 	}
 
-	new = psi_trigger_create(&psi_system, buf, res);
+	new = psi_trigger_create(&psi_system, buf, res, file);
 	if (IS_ERR(new)) {
 		mutex_unlock(&seq->lock);
 		return PTR_ERR(new);
@@ -1571,7 +1612,7 @@ static int psi_irq_show(struct seq_file *m, void *v)
 
 static int psi_irq_open(struct inode *inode, struct file *file)
 {
-	return psi_open(file, psi_irq_show);
+	return single_open(file, psi_irq_show, NULL);
 }
 
 static ssize_t psi_irq_write(struct file *file, const char __user *user_buf,
-- 
2.39.2




  parent reply	other threads:[~2023-07-25 11:05 UTC|newest]

Thread overview: 196+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-25 10:43 [PATCH 6.1 000/183] 6.1.42-rc1 review Greg Kroah-Hartman
2023-07-25 10:43 ` [PATCH 6.1 001/183] io_uring: treat -EAGAIN for REQ_F_NOWAIT as final for io-wq Greg Kroah-Hartman
2023-07-25 10:43 ` [PATCH 6.1 002/183] ALSA: hda/realtek - remove 3k pull low procedure Greg Kroah-Hartman
2023-07-25 10:43 ` [PATCH 6.1 003/183] ALSA: hda/realtek: Add quirk for Clevo NS70AU Greg Kroah-Hartman
2023-07-25 10:43 ` [PATCH 6.1 004/183] ALSA: hda/realtek: Enable Mute LED on HP Laptop 15s-eq2xxx Greg Kroah-Hartman
2023-07-25 10:43 ` [PATCH 6.1 005/183] maple_tree: set the node limit when creating a new root node Greg Kroah-Hartman
2023-07-25 10:43 ` [PATCH 6.1 006/183] maple_tree: fix node allocation testing on 32 bit Greg Kroah-Hartman
2023-07-25 10:43 ` [PATCH 6.1 007/183] keys: Fix linking a duplicate key to a keyrings assoc_array Greg Kroah-Hartman
2023-07-25 10:43 ` [PATCH 6.1 008/183] perf probe: Add test for regression introduced by switch to die_get_decl_file() Greg Kroah-Hartman
2023-07-25 10:43 ` [PATCH 6.1 009/183] btrfs: fix warning when putting transaction with qgroups enabled after abort Greg Kroah-Hartman
2023-07-25 10:43 ` [PATCH 6.1 010/183] fuse: revalidate: dont invalidate if interrupted Greg Kroah-Hartman
2023-07-25 10:43 ` [PATCH 6.1 011/183] fuse: Apply flags2 only when userspace set the FUSE_INIT_EXT Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 012/183] btrfs: set_page_extent_mapped after read_folio in btrfs_cont_expand Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 013/183] btrfs: zoned: fix memory leak after finding block group with super blocks Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 014/183] fuse: ioctl: translate ENOSYS in outarg Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 015/183] btrfs: fix race between balance and cancel/pause Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 016/183] selftests: tc: set timeout to 15 minutes Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 017/183] selftests: tc: add ct action kconfig dep Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 018/183] regmap: Drop initial version of maximum transfer length fixes Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 019/183] of: Preserve "of-display" device name for compatibility Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 020/183] regmap: Account for register length in SMBus I/O limits Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 021/183] arm64/fpsimd: Ensure SME storage is allocated after SVE VL changes Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 022/183] can: mcp251xfd: __mcp251xfd_chip_set_mode(): increase poll timeout Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 023/183] can: bcm: Fix UAF in bcm_proc_show() Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 024/183] can: gs_usb: gs_can_open(): improve error handling Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 025/183] selftests: tc: add ConnTrack procfs kconfig Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 026/183] dma-buf/dma-resv: Stop leaking on krealloc() failure Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 027/183] drm/amdgpu/vkms: relax timer deactivation by hrtimer_try_to_cancel Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 028/183] drm/amdgpu/pm: make gfxclock consistent for sienna cichlid Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 029/183] drm/amdgpu/pm: make mclk consistent for smu 13.0.7 Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 030/183] drm/client: Fix memory leak in drm_client_target_cloned Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 031/183] drm/client: Fix memory leak in drm_client_modeset_probe Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 032/183] drm/amd/display: only accept async flips for fast updates Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 033/183] drm/amd/display: Disable MPC split by default on special asic Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 034/183] drm/amd/display: check TG is non-null before checking if enabled Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 035/183] drm/amd/display: Keep PHY active for DP displays on DCN31 Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 036/183] ASoC: fsl_sai: Disable bit clock with transmitter Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 037/183] ASoC: fsl_sai: Revert "ASoC: fsl_sai: Enable MCTL_MCLK_EN bit for master mode" Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 038/183] ASoC: tegra: Fix ADX byte map Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 039/183] ASoC: rt5640: Fix sleep in atomic context Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 040/183] ASoC: cs42l51: fix driver to properly autoload with automatic module loading Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 041/183] ASoC: codecs: wcd938x: fix missing clsh ctrl error handling Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 042/183] ASoC: codecs: wcd-mbhc-v2: fix resource leaks on component remove Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 043/183] ASoC: qdsp6: audioreach: fix topology probe deferral Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 044/183] ASoC: tegra: Fix AMX byte map Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 045/183] ASoC: codecs: wcd938x: fix resource leaks on component remove Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 046/183] ASoC: codecs: wcd938x: fix missing mbhc init error handling Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 047/183] ASoC: codecs: wcd934x: fix resource leaks on component remove Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 048/183] ASoC: codecs: wcd938x: fix codec initialisation race Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 049/183] ASoC: codecs: wcd938x: fix soundwire " Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 050/183] ext4: correct inline offset when handling xattrs in inode body Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 051/183] [PATCH AUTOSEL 4.19 01/11] drm/radeon: Fix integer overflow in radeon_cs_parser_init Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 052/183] [PATCH AUTOSEL 4.19 02/11] ALSA: emu10k1: roll up loops in DSP setup code for Audigy Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 053/183] [PATCH AUTOSEL 4.19 03/11] quota: Properly disable quotas when add_dquot_ref() fails Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 054/183] [PATCH AUTOSEL 4.19 04/11] quota: fix warning in dqgrab() Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 055/183] [PATCH AUTOSEL 4.19 05/11] HID: add quirk for 03f0:464a HP Elite Presenter Mouse Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 056/183] [PATCH AUTOSEL 4.19 06/11] ovl: check type and offset of struct vfsmount in ovl_entry Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 057/183] [PATCH AUTOSEL 4.19 07/11] udf: Fix uninitialized array access for some pathnames Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 058/183] [PATCH AUTOSEL 4.19 08/11] fs: jfs: Fix UBSAN: array-index-out-of-bounds in dbAllocDmapLev Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 059/183] [PATCH AUTOSEL 4.19 09/11] MIPS: dec: prom: Address -Warray-bounds warning Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 060/183] [PATCH AUTOSEL 4.19 10/11] FS: JFS: Fix null-ptr-deref Read in txBegin Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 061/183] [PATCH AUTOSEL 4.19 11/11] FS: JFS: Check for read-only mounted filesystem " Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 062/183] ACPI: video: Add backlight=native DMI quirk for Dell Studio 1569 Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 063/183] rcu-tasks: Avoid pr_info() with spin lock in cblist_init_generic() Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 064/183] rcu: Mark additional concurrent load from ->cpu_no_qs.b.exp Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 065/183] sched/fair: Dont balance task to its current running CPU Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 066/183] wifi: ath11k: fix registration of 6Ghz-only phy without the full channel range Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 067/183] bpf: Print a warning only if writing to unprivileged_bpf_disabled Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 068/183] bpf: Address KCSAN report on bpf_lru_list Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 069/183] bpf: tcp: Avoid taking fast sock lock in iterator Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 070/183] wifi: ath11k: add support default regdb while searching board-2.bin for WCN6855 Greg Kroah-Hartman
2023-07-25 10:44 ` [PATCH 6.1 071/183] wifi: mac80211_hwsim: Fix possible NULL dereference Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 072/183] spi: dw: Add compatible for Intel Mount Evans SoC Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 073/183] wifi: ath11k: fix memory leak in WMI firmware stats Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 074/183] net: ethernet: litex: add support for 64 bit stats Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 075/183] devlink: report devlink_port_type_warn source device Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 076/183] wifi: wext-core: Fix -Wstringop-overflow warning in ioctl_standard_iw_point() Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 077/183] wifi: iwlwifi: Add support for new PCI Id Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 078/183] wifi: iwlwifi: mvm: avoid baid size integer overflow Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 079/183] wifi: iwlwifi: pcie: add device id 51F1 for killer 1675 Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 080/183] igb: Fix igb_down hung on surprise removal Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 081/183] net: hns3: fix strncpy() not using dest-buf length as length issue Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 082/183] ASoC: amd: acp: fix for invalid dai id handling in acp_get_byte_count() Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 083/183] ASoC: codecs: wcd938x: fix mbhc impedance loglevel Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 084/183] ASoC: codecs: wcd938x: fix dB range for HPHL and HPHR Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 085/183] ASoC: qcom: q6apm: do not close GPR port before closing graph Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 086/183] sched/fair: Use recent_used_cpu to test p->cpus_ptr Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 087/183] sched/psi: Fix avgs_work re-arm in psi_avgs_work() Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 088/183] sched/psi: Rearrange polling code in preparation Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 089/183] sched/psi: Rename existing poll members " Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 090/183] sched/psi: Extract update_triggers side effect Greg Kroah-Hartman
2023-07-25 10:45 ` Greg Kroah-Hartman [this message]
2023-07-25 10:45 ` [PATCH 6.1 092/183] sched/psi: use kernfs polling functions for PSI trigger polling Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 093/183] pinctrl: renesas: rzv2m: Handle non-unique subnode names Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 094/183] pinctrl: renesas: rzg2l: " Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 095/183] spi: bcm63xx: fix max prepend length Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 096/183] fbdev: imxfb: warn about invalid left/right margin Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 097/183] fbdev: imxfb: Removed unneeded release_mem_region Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 098/183] perf build: Fix library not found error when using CSLIBS Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 099/183] btrfs: be a bit more careful when setting mirror_num_ret in btrfs_map_block Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 100/183] spi: s3c64xx: clear loopback bit after loopback test Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 101/183] kallsyms: Improve the performance of kallsyms_lookup_name() Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 102/183] kallsyms: Correctly sequence symbols when CONFIG_LTO_CLANG=y Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 103/183] kallsyms: strip LTO-only suffixes from promoted global functions Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 104/183] dsa: mv88e6xxx: Do a final check before timing out Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 105/183] net: ethernet: ti: cpsw_ale: Fix cpsw_ale_get_field()/cpsw_ale_set_field() Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 106/183] bridge: Add extack warning when enabling STP in netns Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 107/183] net: ethernet: mtk_eth_soc: handle probe deferral Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 108/183] cifs: fix mid leak during reconnection after timeout threshold Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 109/183] ASoC: SOF: ipc3-dtrace: uninitialized data in dfsentry_trace_filter_write() Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 110/183] net: sched: cls_matchall: Undo tcf_bind_filter in case of failure after mall_set_parms Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 111/183] net: sched: cls_u32: Undo tcf_bind_filter if u32_replace_hw_knode Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 112/183] net: sched: cls_u32: Undo refcount decrement in case update failed Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 113/183] net: sched: cls_bpf: Undo tcf_bind_filter in case of an error Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 114/183] net: dsa: microchip: ksz8: Separate static MAC table operations for code reuse Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 115/183] net: dsa: microchip: ksz8: Make ksz8_r_sta_mac_table() static Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 116/183] net: dsa: microchip: ksz8_r_sta_mac_table(): Avoid using error code for empty entries Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 117/183] net: dsa: microchip: correct KSZ8795 static MAC table access Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 118/183] iavf: Fix use-after-free in free_netdev Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 119/183] iavf: Fix out-of-bounds when setting channels on remove Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 120/183] iavf: use internal state to free traffic IRQs Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 121/183] iavf: Move netdev_update_features() into watchdog task Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 122/183] iavf: send VLAN offloading caps once after VFR Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 123/183] iavf: make functions static where possible Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 124/183] iavf: Wait for reset in callbacks which trigger it Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 125/183] iavf: fix a deadlock caused by rtnl and drivers lock circular dependencies Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 126/183] iavf: fix reset task race with iavf_remove() Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 127/183] security: keys: Modify mismatched function name Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 128/183] octeontx2-pf: Dont allocate BPIDs for LBK interfaces Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 129/183] bpf: Fix subprog idx logic in check_max_stack_depth Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 130/183] bpf: Repeat check_max_stack_depth for async callbacks Greg Kroah-Hartman
2023-07-25 10:45 ` [PATCH 6.1 131/183] bpf, arm64: Fix BTI type used for freplace attached functions Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 132/183] igc: Avoid transmit queue timeout for XDP Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 133/183] igc: Prevent garbled TX queue with XDP ZEROCOPY Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 134/183] net: ipv4: use consistent txhash in TIME_WAIT and SYN_RECV Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 135/183] tcp: annotate data-races around tcp_rsk(req)->txhash Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 136/183] tcp: annotate data-races around tcp_rsk(req)->ts_recent Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 137/183] net: ipv4: Use kfree_sensitive instead of kfree Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 138/183] net:ipv6: check return value of pskb_trim() Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 139/183] Revert "tcp: avoid the lookup process failing to get sk in ehash table" Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 140/183] fbdev: au1200fb: Fix missing IRQ check in au1200fb_drv_probe Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 141/183] llc: Dont drop packet from non-root netns Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 142/183] ALSA: hda/realtek: Fix generic fixup definition for cs35l41 amp Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 143/183] netfilter: nf_tables: fix spurious set element insertion failure Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 144/183] netfilter: nf_tables: cant schedule in nft_chain_validate Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 145/183] netfilter: nft_set_pipapo: fix improper element removal Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 146/183] netfilter: nf_tables: skip bound chain in netns release path Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 147/183] netfilter: nf_tables: skip bound chain on rule flush Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 148/183] Bluetooth: use RCU for hci_conn_params and iterate safely in hci_sync Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 149/183] Bluetooth: hci_event: call disconnect callback before deleting conn Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 150/183] Bluetooth: ISO: fix iso_conn related locking and validity issues Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 151/183] Bluetooth: hci_sync: Avoid use-after-free in dbg for hci_remove_adv_monitor() Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 152/183] tcp: annotate data-races around tp->tcp_tx_delay Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 153/183] tcp: annotate data-races around tp->tsoffset Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 154/183] tcp: annotate data-races around tp->keepalive_time Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 155/183] tcp: annotate data-races around tp->keepalive_intvl Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 156/183] tcp: annotate data-races around tp->keepalive_probes Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 157/183] tcp: annotate data-races around icsk->icsk_syn_retries Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 158/183] tcp: annotate data-races around tp->linger2 Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 159/183] tcp: annotate data-races around rskq_defer_accept Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 160/183] tcp: annotate data-races around tp->notsent_lowat Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 161/183] tcp: annotate data-races around icsk->icsk_user_timeout Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 162/183] tcp: annotate data-races around fastopenq.max_qlen Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 163/183] net: phy: prevent stale pointer dereference in phy_init() Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 164/183] jbd2: recheck chechpointing non-dirty buffer Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 165/183] tracing/histograms: Return an error if we fail to add histogram to hist_vars list Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 166/183] drm/ttm: fix bulk_move corruption when adding a entry Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 167/183] spi: dw: Remove misleading comment for Mount Evans SoC Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 168/183] kallsyms: add kallsyms_seqs_of_names to list of special symbols Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 169/183] scripts/kallsyms.c Make the comment up-to-date with current implementation Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 170/183] scripts/kallsyms: update the usage in the comment block Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 171/183] bpf: allow precision tracking for programs with subprogs Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 172/183] bpf: stop setting precise in current state Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 173/183] bpf: aggressively forget precise markings during state checkpointing Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 174/183] selftests/bpf: make test_align selftest more robust Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 175/183] selftests/bpf: Workaround verification failure for fexit_bpf2bpf/func_replace_return_code Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 176/183] selftests/bpf: Fix sk_assign on s390x Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 177/183] drm/amd/display: use max_dsc_bpp in amdgpu_dm Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 178/183] drm/amd/display: fix some coding style issues Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 179/183] drm/dp_mst: Clear MSG_RDY flag before sending new message Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 180/183] drm/amd/display: force connector state when bpc changes during compliance Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 181/183] drm/amd/display: Clean up errors & warnings in amdgpu_dm.c Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 182/183] drm/amd/display: fix linux dp link lost handled only one time Greg Kroah-Hartman
2023-07-25 10:46 ` [PATCH 6.1 183/183] drm/amd/display: Add polling method to handle MST reply packet Greg Kroah-Hartman
2023-07-25 12:33 ` [PATCH 6.1 000/183] 6.1.42-rc1 review Takeshi Ogasawara
2023-07-25 16:27 ` Jon Hunter
2023-07-25 18:10 ` SeongJae Park
2023-07-25 20:16 ` Shuah Khan
2023-07-25 22:22 ` Florian Fainelli
2023-07-26  4:23 ` Bagas Sanjaya
2023-07-26  9:28 ` Conor Dooley
2023-07-26 10:38 ` Naresh Kamboju
2023-07-26 13:13 ` Ron Economos
2023-07-27  0:02 ` Guenter Roeck
2023-07-27  4:01 ` Joel Fernandes
2023-07-27 11:42 ` Pavel Machek

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=20230725104511.260423571@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=cerasuolodomenico@gmail.com \
    --cc=hannes@cmpxchg.org \
    --cc=patches@lists.linux.dev \
    --cc=peterz@infradead.org \
    --cc=sashal@kernel.org \
    --cc=stable@vger.kernel.org \
    /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