Running as a Xen PV guest uncovered some bugs when ITS mitigation is
active.
Juergen Gross (3):
x86/execmem: don't use PAGE_KERNEL protection for code pages
x86/mm/pat: don't collapse pages without PSE set
x86/alternative: make kernel ITS thunks read-only
arch/x86/kernel/alternative.c | 16 ++++++++++++++++
arch/x86/mm/init.c | 2 +-
arch/x86/mm/pat/set_memory.c | 3 +++
3 files changed, 20 insertions(+), 1 deletion(-)
--
2.43.0
Hello Cassio,
thanks for your input.
On Tue, Jun 10, 2025 at 09:31:48PM +0100, Cassio Neri wrote:
> Although untested, I'm pretty sure that with very small changes, the
> previous revision (1d1bb12) can handle dates prior to 1970-01-01 with no
> need to add extra branches or arithmetic operations. Indeed, 1d1bb12
> contains:
>
> <code>
> /* time must be positive */
> days = div_s64_rem(time, 86400, &secs);
>
> /* day of the week, 1970-01-01 was a Thursday */
> tm->tm_wday = (days + 4) % 7;
>
> /* long comments */
>
> udays = ((u32) days) + 719468;
> </code>
>
> This could have been changed to:
>
> <code>
> /* time must be >= -719468 * 86400 which corresponds to 0000-03-01 */
> udays = div_u64_rem(time + 719468 * 86400, 86400, &secs);
>
> /* day of the week, 0000-03-01 was a Wednesday (in the proleptic Gregorian
> calendar) */
> tm->tm_wday = (days + 3) % 7;
>
> /* long comments */
> </code>
>
> Indeed, the addition of 719468 * 86400 to `time` makes `days` to be 719468
> more than it should be. Therefore, in the calculation of `udays`, the
> addition of 719468 becomes unnecessary and thus, `udays == days`. Moreover,
> this means that `days` can be removed altogether and replaced by `udays`.
> (Not the other way around because in the remaining code `udays` must be
> u32.)
>
> Now, 719468 % 7 = 1 and thus tm->wday is 1 day after what it should be and
> we correct that by adding 3 instead of 4.
>
> Therefore, I suggest these changes on top of 1d1bb12 instead of those made
> in 7df4cfe. Since you're working on this, can I please kindly suggest two
> other changes?
It's to late for "instead", and we're discussing a backport to stable
for a commit that is already in v6.16-rc1.
While your concerns are correct (though I didn't check the details yet),
I claim that 7df4cfef8b35 is correct and it's the right thing to
backport that today. Incremental changes can then go in the development
version (and backported if deemed necessary).
> 1) Change the reference provided in the long comment. It should say, "The
> following algorithm is, basically, Figure 12 of Neri and Schneider [1]" and
> [1] should refer to the published article:
>
> Neri C, Schneider L. Euclidean affine functions and their application to
> calendar algorithms. Softw Pract Exper. 2023;53(4):937-970. doi:
> 10.1002/spe.3172
> https://doi.org/10.1002/spe.3172
>
> The article is much better written and clearer than the pre-print currently
> referred to.
I'll add that to my todo list. (that = improving rtc_time64_to_tm() and
reading your paper :-)
> 2) Function rtc_time64_to_tm_test_date_range in drivers/rtc/lib_test.c, is
> a kunit test that checks the result for everyday in a 160000 years range
> starting at 1970-01-01. It'd be nice if this test is adapted to the new
> code and starts at 1900-01-01 (technically, it could start at 0000-03-01
> but since tm->year counts from 1900, it would be weird to see tm->year ==
> -1900 to mean that the calendar year is 0.) Also 160000 is definitely an
> overkill (my bad!) and a couple of thousands of years, say 3000, should be
> more than safe for anyone. :-)
I already did 2), see https://git.kernel.org/linus/ccb2dba3c19f.
Best regards
Uwe
From: Dave Hansen <dave.hansen(a)linux.intel.com>
PTI uses separate ASIDs (aka. PCIDs) for kernel and user address
spaces. When the kernel needs to flush the user address space, it
just sets a bit in a bitmap and then flushes the entire PCID on
the next switch to userspace.
But, this bitmap is a single 'unsigned long' which is plenty for
all 6 dynamic ASIDs. But, unfortunately, the INVLPGB support
brings along a bunch more user ASIDs, as many as ~2k more. The
bitmap can't address that many.
Fortunately, the bitmap is only needed for PTI and all the CPUs
with INVLPGB are AMD CPUs that aren't vulnerable to Meltdown and
don't need PTI. The only way someone can run into an issue in
practice is by booting with pti=on on a newer AMD CPU.
Disable INVLPGB if PTI is enabled. Avoid overrunning the small
bitmap.
Note: this will be fixed up properly by making the bitmap bigger.
For now, just avoid the mostly theoretical bug.
Signed-off-by: Dave Hansen <dave.hansen(a)linux.intel.com>
Fixes: 4afeb0ed1753 ("x86/mm: Enable broadcast TLB invalidation for multi-threaded processes")
Cc: stable(a)vger.kernel.org
Cc: Rik van Riel <riel(a)surriel.com>
Cc: Borislav Petkov (AMD) <bp(a)alien8.de>
Cc: Ingo Molnar <mingo(a)kernel.org>
Cc: Nadav Amit <nadav.amit(a)gmail.com>
Cc: Andy Lutomirski <luto(a)kernel.org>
Cc: Peter Zijlstra <peterz(a)infradead.org>
---
b/arch/x86/mm/pti.c | 5 +++++
1 file changed, 5 insertions(+)
diff -puN arch/x86/mm/pti.c~no-INVLPGB-plus-KPTI arch/x86/mm/pti.c
--- a/arch/x86/mm/pti.c~no-INVLPGB-plus-KPTI 2025-06-10 15:02:14.439554339 -0700
+++ b/arch/x86/mm/pti.c 2025-06-10 15:09:47.713198206 -0700
@@ -98,6 +98,11 @@ void __init pti_check_boottime_disable(v
return;
setup_force_cpu_cap(X86_FEATURE_PTI);
+
+ if (cpu_feature_enabled(X86_FEATURE_INVLPGB)) {
+ pr_debug("PTI enabled, disabling INVLPGB\n");
+ setup_clear_cpu_cap(X86_FEATURE_INVLPGB);
+ }
}
static int __init pti_parse_cmdline(char *arg)
_
In mt_perf_to_adistance(), the calculation of abstract distance (adist)
involves multiplying several int values including MEMTIER_ADISTANCE_DRAM.
```
*adist = MEMTIER_ADISTANCE_DRAM *
(perf->read_latency + perf->write_latency) /
(default_dram_perf.read_latency + default_dram_perf.write_latency) *
(default_dram_perf.read_bandwidth + default_dram_perf.write_bandwidth) /
(perf->read_bandwidth + perf->write_bandwidth);
```
Since these values can be large, the multiplication may exceed the maximum
value of an int (INT_MAX) and overflow (Our platform did), leading to an
incorrect adist.
User-visible impact:
The memory tiering subsystem will misinterpret slow memory (like CXL)
as faster than DRAM, causing inappropriate demotion of pages from
CXL (slow memory) to DRAM (fast memory).
For example, we will see the following demotion chains from the dmesg, where
Node0,1 are DRAM, and Node2,3 are CXL node:
Demotion targets for Node 0: null
Demotion targets for Node 1: null
Demotion targets for Node 2: preferred: 0-1, fallback: 0-1
Demotion targets for Node 3: preferred: 0-1, fallback: 0-1
Change MEMTIER_ADISTANCE_DRAM to be a long constant by writing it with the
'L' suffix. This prevents the overflow because the multiplication will then
be done in the long type which has a larger range.
Fixes: 3718c02dbd4c ("acpi, hmat: calculate abstract distance with HMAT")
Cc: stable(a)vger.kernel.org
Reviewed-by: Huang Ying <ying.huang(a)linux.alibaba.com>
Acked-by: Balbir Singh <balbirs(a)nvidia.com>
Reviewed-by: Donet Tom <donettom(a)linux.ibm.com>
Reviewed-by: Oscar Salvador <osalvador(a)suse.de>
Signed-off-by: Li Zhijian <lizhijian(a)fujitsu.com>
---
V2:
Document the 'User-visible impact' # Andrew Morton <akpm(a)linux-foundation.org>
---
include/linux/memory-tiers.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/linux/memory-tiers.h b/include/linux/memory-tiers.h
index 0dc0cf2863e2..7a805796fcfd 100644
--- a/include/linux/memory-tiers.h
+++ b/include/linux/memory-tiers.h
@@ -18,7 +18,7 @@
* adistance value (slightly faster) than default DRAM adistance to be part of
* the same memory tier.
*/
-#define MEMTIER_ADISTANCE_DRAM ((4 * MEMTIER_CHUNK_SIZE) + (MEMTIER_CHUNK_SIZE >> 1))
+#define MEMTIER_ADISTANCE_DRAM ((4L * MEMTIER_CHUNK_SIZE) + (MEMTIER_CHUNK_SIZE >> 1))
struct memory_tier;
struct memory_dev_type {
--
2.41.0
The patch titled
Subject: maple_tree: restart walk on correct status
has been added to the -mm mm-new branch. Its filename is
maple_tree-restart-walk-on-correct-status.patch
This patch will shortly appear at
https://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new.git/tree/patche…
This patch will later appear in the mm-new branch at
git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
Note, mm-new is a provisional staging ground for work-in-progress
patches, and acceptance into mm-new is a notification for others take
notice and to finish up reviews. Please do not hesitate to respond to
review feedback and post updated versions to replace or incrementally
fixup patches in mm-new.
Before you just go and hit "reply", please:
a) Consider who else should be cc'ed
b) Prefer to cc a suitable mailing list as well
c) Ideally: find the original patch on the mailing list and do a
reply-to-all to that, adding suitable additional cc's
*** Remember to use Documentation/process/submit-checklist.rst when testing your code ***
The -mm tree is included into linux-next via the mm-everything
branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
and is updated there every 2-3 working days
------------------------------------------------------
From: Wei Yang <richard.weiyang(a)gmail.com>
Subject: maple_tree: restart walk on correct status
Date: Wed, 11 Jun 2025 01:12:52 +0000
Commit a8091f039c1e ("maple_tree: add MAS_UNDERFLOW and MAS_OVERFLOW
states") adds more status during maple tree walk. But it introduce a typo
on the status check during walk.
It expects to mean neither active nor start, we would restart the walk,
while current code means we would always restart the walk.
Link: https://lkml.kernel.org/r/20250611011253.19515-3-richard.weiyang@gmail.com
Fixes: a8091f039c1e ("maple_tree: add MAS_UNDERFLOW and MAS_OVERFLOW states")
Signed-off-by: Wei Yang <richard.weiyang(a)gmail.com>
Reviewed-by: Liam R. Howlett <Liam.Howlett(a)Oracle.com>
Cc: Matthew Wilcox (Oracle) <willy(a)infradead.org>
Cc: <stable(a)vger.kernel.org>
Signed-off-by: Andrew Morton <akpm(a)linux-foundation.org>
---
lib/maple_tree.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/lib/maple_tree.c~maple_tree-restart-walk-on-correct-status
+++ a/lib/maple_tree.c
@@ -4930,7 +4930,7 @@ void *mas_walk(struct ma_state *mas)
{
void *entry;
- if (!mas_is_active(mas) || !mas_is_start(mas))
+ if (!mas_is_active(mas) && !mas_is_start(mas))
mas->status = ma_start;
retry:
entry = mas_state_walk(mas);
_
Patches currently in -mm which might be from richard.weiyang(a)gmail.com are
maple_tree-fix-mt_destroy_walk-on-root-leaf-node.patch
maple_tree-restart-walk-on-correct-status.patch
maple_tree-assert-retrieving-new-value-on-a-tree-containing-just-a-leaf-node.patch
The patch titled
Subject: maple_tree: fix mt_destroy_walk() on root leaf node
has been added to the -mm mm-new branch. Its filename is
maple_tree-fix-mt_destroy_walk-on-root-leaf-node.patch
This patch will shortly appear at
https://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new.git/tree/patche…
This patch will later appear in the mm-new branch at
git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
Note, mm-new is a provisional staging ground for work-in-progress
patches, and acceptance into mm-new is a notification for others take
notice and to finish up reviews. Please do not hesitate to respond to
review feedback and post updated versions to replace or incrementally
fixup patches in mm-new.
Before you just go and hit "reply", please:
a) Consider who else should be cc'ed
b) Prefer to cc a suitable mailing list as well
c) Ideally: find the original patch on the mailing list and do a
reply-to-all to that, adding suitable additional cc's
*** Remember to use Documentation/process/submit-checklist.rst when testing your code ***
The -mm tree is included into linux-next via the mm-everything
branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
and is updated there every 2-3 working days
------------------------------------------------------
From: Wei Yang <richard.weiyang(a)gmail.com>
Subject: maple_tree: fix mt_destroy_walk() on root leaf node
Date: Wed, 11 Jun 2025 01:12:51 +0000
Patch series "maple_tree: Fix the replacement of a root leaf node", v3.
On destroy we should set each node dead. But current code miss this when
the maple tree has only the root node.
The reason is that mt_destroy_walk() leverages mte_destroy_descend() to
set the node dead, but this is skipped since the only root node is a leaf.
Patch 1 fixes this.
When adding a test case, I found we always get the new value even when we
leave the old root node not dead. It turns out we always re-walk the tree
in mas_walk(). It looks like a typo on the status check of mas_walk().
Patch 2 fixes this.
Patch 3 adds a test case to assert retrieving new value when overwriting
the whole range to a tree with only root node.
This patch (of 3):
On destroy, we should set each node dead. But current code miss this when
the maple tree has only the root node.
The reason is mt_destroy_walk() leverage mte_destroy_descend() to set node
dead, but this is skipped since the only root node is a leaf.
Fixes this by setting the node dead if it is a leaf.
Link: https://lkml.kernel.org/r/20250611011253.19515-1-richard.weiyang@gmail.com
Link: https://lkml.kernel.org/r/20250611011253.19515-2-richard.weiyang@gmail.com
Fixes: 54a611b60590 ("Maple Tree: add new data structure")
Signed-off-by: Wei Yang <richard.weiyang(a)gmail.com>
Reviewed-by: Liam R. Howlett <Liam.Howlett(a)Oracle.com>
Cc: Matthew Wilcox (Oracle) <willy(a)infradead.org>
Cc: <stable(a)vger.kernel.org>
Signed-off-by: Andrew Morton <akpm(a)linux-foundation.org>
---
lib/maple_tree.c | 1 +
1 file changed, 1 insertion(+)
--- a/lib/maple_tree.c~maple_tree-fix-mt_destroy_walk-on-root-leaf-node
+++ a/lib/maple_tree.c
@@ -5319,6 +5319,7 @@ static void mt_destroy_walk(struct maple
struct maple_enode *start;
if (mte_is_leaf(enode)) {
+ mte_set_node_dead(enode);
node->type = mte_node_type(enode);
goto free_leaf;
}
_
Patches currently in -mm which might be from richard.weiyang(a)gmail.com are
maple_tree-fix-mt_destroy_walk-on-root-leaf-node.patch
maple_tree-restart-walk-on-correct-status.patch
maple_tree-assert-retrieving-new-value-on-a-tree-containing-just-a-leaf-node.patch
Property num_cpu and feature is read-only once eiointc is created, which
is set with KVM_DEV_LOONGARCH_EXTIOI_GRP_CTRL attr group before device
creation.
Attr group KVM_DEV_LOONGARCH_EXTIOI_GRP_SW_STATUS is to update register
and software state for migration and reset usage, property num_cpu and
feature can not be update again if it is created already.
Here discard write operation with property num_cpu and feature in attr
group KVM_DEV_LOONGARCH_EXTIOI_GRP_CTRL.
Cc: stable(a)vger.kernel.org
Fixes: 1ad7efa552fd ("LoongArch: KVM: Add EIOINTC user mode read and write functions")
Signed-off-by: Bibo Mao <maobibo(a)loongson.cn>
---
arch/loongarch/kvm/intc/eiointc.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/arch/loongarch/kvm/intc/eiointc.c b/arch/loongarch/kvm/intc/eiointc.c
index 0b648c56b0c3..b48511f903b5 100644
--- a/arch/loongarch/kvm/intc/eiointc.c
+++ b/arch/loongarch/kvm/intc/eiointc.c
@@ -910,9 +910,22 @@ static int kvm_eiointc_sw_status_access(struct kvm_device *dev,
data = (void __user *)attr->addr;
switch (addr) {
case KVM_DEV_LOONGARCH_EXTIOI_SW_STATUS_NUM_CPU:
+ /*
+ * Property num_cpu and feature is read-only once eiointc is
+ * created with KVM_DEV_LOONGARCH_EXTIOI_GRP_CTRL group API
+ *
+ * Disable writing with KVM_DEV_LOONGARCH_EXTIOI_GRP_SW_STATUS
+ * group API
+ */
+ if (is_write)
+ return ret;
+
p = &s->num_cpu;
break;
case KVM_DEV_LOONGARCH_EXTIOI_SW_STATUS_FEATURE:
+ if (is_write)
+ return ret;
+
p = &s->features;
break;
case KVM_DEV_LOONGARCH_EXTIOI_SW_STATUS_STATE:
--
2.39.3
Commit a8091f039c1e ("maple_tree: add MAS_UNDERFLOW and MAS_OVERFLOW
states") adds more status during maple tree walk. But it introduce a
typo on the status check during walk.
It expects to mean neither active nor start, we would restart the walk,
while current code means we would always restart the walk.
Fixes: a8091f039c1e ("maple_tree: add MAS_UNDERFLOW and MAS_OVERFLOW states")
Signed-off-by: Wei Yang <richard.weiyang(a)gmail.com>
Cc: Liam R. Howlett <Liam.Howlett(a)Oracle.com>
Cc: <stable(a)vger.kernel.org>
Reviewed-by: Liam R. Howlett <Liam.Howlett(a)Oracle.com>
---
lib/maple_tree.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/maple_tree.c b/lib/maple_tree.c
index b0c345b6e646..7144dbbc3481 100644
--- a/lib/maple_tree.c
+++ b/lib/maple_tree.c
@@ -4930,7 +4930,7 @@ void *mas_walk(struct ma_state *mas)
{
void *entry;
- if (!mas_is_active(mas) || !mas_is_start(mas))
+ if (!mas_is_active(mas) && !mas_is_start(mas))
mas->status = ma_start;
retry:
entry = mas_state_walk(mas);
--
2.34.1
On destroy, we should set each node dead. But current code miss this
when the maple tree has only the root node.
The reason is mt_destroy_walk() leverage mte_destroy_descend() to set
node dead, but this is skipped since the only root node is a leaf.
Fixes this by setting the node dead if it is a leaf.
Fixes: 54a611b60590 ("Maple Tree: add new data structure")
Signed-off-by: Wei Yang <richard.weiyang(a)gmail.com>
Cc: Liam R. Howlett <Liam.Howlett(a)Oracle.com>
Cc: <stable(a)vger.kernel.org>
Reviewed-by: Liam R. Howlett <Liam.Howlett(a)Oracle.com>
---
v2:
* move the operation into mt_destroy_walk()
* adjust the title accordingly
---
lib/maple_tree.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/lib/maple_tree.c b/lib/maple_tree.c
index affe979bd14d..b0c345b6e646 100644
--- a/lib/maple_tree.c
+++ b/lib/maple_tree.c
@@ -5319,6 +5319,7 @@ static void mt_destroy_walk(struct maple_enode *enode, struct maple_tree *mt,
struct maple_enode *start;
if (mte_is_leaf(enode)) {
+ mte_set_node_dead(enode);
node->type = mte_node_type(enode);
goto free_leaf;
}
--
2.34.1
The following commit has been merged into the x86/urgent branch of tip:
Commit-ID: 0b3bc018e86afdc0cbfef61328c63d5c08f8b370
Gitweb: https://git.kernel.org/tip/0b3bc018e86afdc0cbfef61328c63d5c08f8b370
Author: Kai Huang <kai.huang(a)intel.com>
AuthorDate: Sat, 07 Jun 2025 01:07:37 +12:00
Committer: Dave Hansen <dave.hansen(a)linux.intel.com>
CommitterDate: Tue, 10 Jun 2025 12:32:52 -07:00
x86/virt/tdx: Avoid indirect calls to TDX assembly functions
Two 'static inline' TDX helper functions (sc_retry() and
sc_retry_prerr()) take function pointer arguments which refer to
assembly functions. Normally, the compiler inlines the TDX helper,
realizes that the function pointer targets are completely static --
thus can be resolved at compile time -- and generates direct call
instructions.
But, other times (like when CONFIG_CC_OPTIMIZE_FOR_SIZE=y), the
compiler declines to inline the helpers and will instead generate
indirect call instructions.
Indirect calls to assembly functions require special annotation (for
various Control Flow Integrity mechanisms). But TDX assembly
functions lack the special annotations and can only be called
directly.
Annotate both the helpers as '__always_inline' to prod the compiler
into maintaining the direct calls. There is no guarantee here, but
Peter has volunteered to report the compiler bug if this assumption
ever breaks[1].
Fixes: 1e66a7e27539 ("x86/virt/tdx: Handle SEAMCALL no entropy error in common code")
Fixes: df01f5ae07dd ("x86/virt/tdx: Add SEAMCALL error printing for module initialization")
Signed-off-by: Kai Huang <kai.huang(a)intel.com>
Signed-off-by: Dave Hansen <dave.hansen(a)linux.intel.com>
Cc: stable(a)vger.kernel.org
Link: https://lore.kernel.org/lkml/20250605145914.GW39944@noisy.programming.kicks… [1]
Link: https://lore.kernel.org/all/20250606130737.30713-1-kai.huang%40intel.com
---
arch/x86/include/asm/tdx.h | 2 +-
arch/x86/virt/vmx/tdx/tdx.c | 5 +++--
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/arch/x86/include/asm/tdx.h b/arch/x86/include/asm/tdx.h
index 8b19294..7ddef3a 100644
--- a/arch/x86/include/asm/tdx.h
+++ b/arch/x86/include/asm/tdx.h
@@ -106,7 +106,7 @@ void tdx_init(void);
typedef u64 (*sc_func_t)(u64 fn, struct tdx_module_args *args);
-static inline u64 sc_retry(sc_func_t func, u64 fn,
+static __always_inline u64 sc_retry(sc_func_t func, u64 fn,
struct tdx_module_args *args)
{
int retry = RDRAND_RETRY_LOOPS;
diff --git a/arch/x86/virt/vmx/tdx/tdx.c b/arch/x86/virt/vmx/tdx/tdx.c
index 2457d13..c7a9a08 100644
--- a/arch/x86/virt/vmx/tdx/tdx.c
+++ b/arch/x86/virt/vmx/tdx/tdx.c
@@ -75,8 +75,9 @@ static inline void seamcall_err_ret(u64 fn, u64 err,
args->r9, args->r10, args->r11);
}
-static inline int sc_retry_prerr(sc_func_t func, sc_err_func_t err_func,
- u64 fn, struct tdx_module_args *args)
+static __always_inline int sc_retry_prerr(sc_func_t func,
+ sc_err_func_t err_func,
+ u64 fn, struct tdx_module_args *args)
{
u64 sret = sc_retry(func, fn, args);
Hi all,
#regzbot introduced: c53f23f7075c9f63f14d7ec8f2cc3e33e118d986
**Summary**
A regression introduced in **v6.14.10** breaks AMD GPU initialization on
RX 9070 XT system due to commit c53f23f7… (“drm/amd/display: check
stream id dml21 wrapper…”). Reverting this commit restores proper
graphical startup.
dmesg output before revert
[ 2.699091] ACPI: bus type drm_connector registered
[ 2.699734] xhci_hcd 0000:02:00.0: xHCI Host Controller
[ 2.699740] xhci_hcd 0000:02:00.0: new USB bus registered, assigned
bus number 1
[ 2.755165] xhci_hcd 0000:02:00.0: hcc params 0x0200ef81 hci version
0x110 quirks 0x0000000000000010
[ 2.755445] xhci_hcd 0000:02:00.0: xHCI Host Controller
[ 2.755448] xhci_hcd 0000:02:00.0: new USB bus registered, assigned
bus number 2
[ 2.755450] xhci_hcd 0000:02:00.0: Host supports USB 3.1 Enhanced
SuperSpeed
[ 2.755511] usb usb1: New USB device found, idVendor=1d6b,
idProduct=0002, bcdDevice= 6.14
[ 2.755512] usb usb1: New USB device strings: Mfr=3, Product=2,
SerialNumber=1
[ 2.755514] usb usb1: Product: xHCI Host Controller
[ 2.755515] usb usb1: Manufacturer: Linux 6.14.10-x64v3-xanmod1 xhci-hcd
[ 2.755517] usb usb1: SerialNumber: 0000:02:00.0
[ 2.755613] hub 1-0:1.0: USB hub found
[ 2.755629] hub 1-0:1.0: 10 ports detected
[ 2.755952] usb usb2: We don't know the algorithms for LPM for this
host, disabling LPM.
[ 2.755973] usb usb2: New USB device found, idVendor=1d6b,
idProduct=0003, bcdDevice= 6.14
[ 2.755975] usb usb2: New USB device strings: Mfr=3, Product=2,
SerialNumber=1
[ 2.755976] usb usb2: Product: xHCI Host Controller
[ 2.755978] usb usb2: Manufacturer: Linux 6.14.10-x64v3-xanmod1 xhci-hcd
[ 2.755979] usb usb2: SerialNumber: 0000:02:00.0
[ 2.756056] hub 2-0:1.0: USB hub found
[ 2.756065] hub 2-0:1.0: 4 ports detected
[ 2.756274] xhci_hcd 0000:0a:00.3: xHCI Host Controller
[ 2.756278] xhci_hcd 0000:0a:00.3: new USB bus registered, assigned
bus number 3
[ 2.756384] xhci_hcd 0000:0a:00.3: hcc params 0x0278ffe5 hci version
0x110 quirks 0x0000000000000010
[ 2.756622] xhci_hcd 0000:0a:00.3: xHCI Host Controller
[ 2.756624] xhci_hcd 0000:0a:00.3: new USB bus registered, assigned
bus number 4
[ 2.756626] xhci_hcd 0000:0a:00.3: Host supports USB 3.1 Enhanced
SuperSpeed
[ 2.756657] usb usb3: New USB device found, idVendor=1d6b,
idProduct=0002, bcdDevice= 6.14
[ 2.756659] usb usb3: New USB device strings: Mfr=3, Product=2,
SerialNumber=1
[ 2.756660] usb usb3: Product: xHCI Host Controller
[ 2.756661] usb usb3: Manufacturer: Linux 6.14.10-x64v3-xanmod1 xhci-hcd
[ 2.756663] usb usb3: SerialNumber: 0000:0a:00.3
[ 2.756748] hub 3-0:1.0: USB hub found
[ 2.756756] hub 3-0:1.0: 4 ports detected
[ 2.756903] usb usb4: We don't know the algorithms for LPM for this
host, disabling LPM.
[ 2.756924] usb usb4: New USB device found, idVendor=1d6b,
idProduct=0003, bcdDevice= 6.14
[ 2.756926] usb usb4: New USB device strings: Mfr=3, Product=2,
SerialNumber=1
[ 2.756927] usb usb4: Product: xHCI Host Controller
[ 2.756928] usb usb4: Manufacturer: Linux 6.14.10-x64v3-xanmod1 xhci-hcd
[ 2.756929] usb usb4: SerialNumber: 0000:0a:00.3
[ 2.757008] hub 4-0:1.0: USB hub found
[ 2.757015] hub 4-0:1.0: 4 ports detected
[ 2.757180] usbcore: registered new interface driver usbserial_generic
[ 2.757184] usbserial: USB Serial support registered for generic
[ 2.757253] rtc_cmos 00:02: RTC can wake from S4
[ 2.757465] rtc_cmos 00:02: registered as rtc0
[ 2.757494] rtc_cmos 00:02: setting system clock to
2025-06-10T13:46:18 UTC (1749563178)
[ 2.757517] rtc_cmos 00:02: alarms up to one month, y3k, 114 bytes nvram
[ 2.793080] simple-framebuffer simple-framebuffer.0: [drm] Registered
1 planes with drm panic
[ 2.793082] [drm] Initialized simpledrm 1.0.0 for
simple-framebuffer.0 on minor 0
[ 2.796240] fbcon: Deferring console take-over
[ 2.796241] simple-framebuffer simple-framebuffer.0: [drm] fb0:
simpledrmdrmfb frame buffer device
dmesg output after revert
[ 2.634779] ata1: SATA max UDMA/133 abar m131072@0xfcc80000 port
0xfcc80100 irq 40 lpm-pol 0
[ 2.634782] ata2: SATA max UDMA/133 abar m131072@0xfcc80000 port
0xfcc80180 irq 40 lpm-pol 0
[ 2.634785] ata3: SATA max UDMA/133 abar m131072@0xfcc80000 port
0xfcc80200 irq 40 lpm-pol 0
[ 2.634787] ata4: SATA max UDMA/133 abar m131072@0xfcc80000 port
0xfcc80280 irq 40 lpm-pol 0
[ 2.634789] ata5: SATA max UDMA/133 abar m131072@0xfcc80000 port
0xfcc80300 irq 40 lpm-pol 0
[ 2.634791] ata6: SATA max UDMA/133 abar m131072@0xfcc80000 port
0xfcc80380 irq 40 lpm-pol 0
[ 2.634848] ACPI: bus type drm_connector registered
[ 2.634869] [drm] amdgpu kernel modesetting enabled.
[ 2.644006] amdgpu: Virtual CRAT table created for CPU
[ 2.644017] amdgpu: Topology: Add CPU node
[ 2.644089] amdgpu 0000:08:00.0: enabling device (0006 -> 0007)
[ 2.644120] [drm] initializing kernel modesetting (IP DISCOVERY
0x1002:0x7550 0x1EAE:0x8811 0xC0).
[ 2.644128] [drm] register mmio base: 0xFCD00000
[ 2.644129] [drm] register mmio size: 524288
[ 2.648358] amdgpu 0000:08:00.0: amdgpu: detected ip block number 0
<soc24_common>
[ 2.648360] amdgpu 0000:08:00.0: amdgpu: detected ip block number 1
<gmc_v12_0>
[ 2.648362] amdgpu 0000:08:00.0: amdgpu: detected ip block number 2
<ih_v7_0>
[ 2.648364] amdgpu 0000:08:00.0: amdgpu: detected ip block number 3 <psp>
[ 2.648365] amdgpu 0000:08:00.0: amdgpu: detected ip block number 4 <smu>
[ 2.648366] amdgpu 0000:08:00.0: amdgpu: detected ip block number 5 <dm>
[ 2.648368] amdgpu 0000:08:00.0: amdgpu: detected ip block number 6
<gfx_v12_0>
[ 2.648369] amdgpu 0000:08:00.0: amdgpu: detected ip block number 7
<sdma_v7_0>
[ 2.648370] amdgpu 0000:08:00.0: amdgpu: detected ip block number 8
<vcn_v5_0_0>
[ 2.648372] amdgpu 0000:08:00.0: amdgpu: detected ip block number 9
<jpeg_v5_0_0>
[ 2.648373] amdgpu 0000:08:00.0: amdgpu: detected ip block number 10
<mes_v12_0>
[ 2.648383] amdgpu 0000:08:00.0: amdgpu: Fetched VBIOS from VFCT
[ 2.648385] amdgpu: ATOM BIOS: 113-EXT108832-100
[ 2.659806] amdgpu 0000:08:00.0: vgaarb: deactivate vga console
[ 2.659809] amdgpu 0000:08:00.0: amdgpu: Trusted Memory Zone (TMZ)
feature not supported
[ 2.659830] amdgpu 0000:08:00.0: amdgpu: MEM ECC is not presented.
[ 2.659831] amdgpu 0000:08:00.0: amdgpu: SRAM ECC is not presented.
[ 2.659845] [drm] vm size is 262144 GB, 4 levels, block size is
9-bit, fragment size is 9-bit
[ 2.659850] amdgpu 0000:08:00.0: amdgpu: VRAM: 16304M
0x0000008000000000 - 0x00000083FAFFFFFF (16304M used)
[ 2.659852] amdgpu 0000:08:00.0: amdgpu: GART: 512M
0x0000000000000000 - 0x000000001FFFFFFF
[ 2.659856] [drm] Detected VRAM RAM=16304M, BAR=16384M
[ 2.659858] [drm] RAM width 256bits GDDR6
[ 2.659915] [drm] amdgpu: 16304M of VRAM memory ready
[ 2.659916] [drm] amdgpu: 15990M of GTT memory ready.
[ 2.659926] [drm] GART: num cpu pages 131072, num gpu pages 131072
[ 2.659998] amdgpu 0000:08:00.0: amdgpu: PCIE GART of 512M enabled
(table at 0x00000083DAB00000).
[ 2.660416] [drm] Loading DMUB firmware via PSP: version=0x00010300
[ 2.660749] [drm] Found VCN firmware Version ENC: 1.7 DEC: 9 VEP: 0
Revision: 19
[ 2.895324] amdgpu 0000:08:00.0: amdgpu: RAP: optional rap ta ucode
is not available
[ 2.895327] amdgpu 0000:08:00.0: amdgpu: SECUREDISPLAY: securedisplay
ta ucode is not available
[ 2.895357] amdgpu 0000:08:00.0: amdgpu: smu driver if version =
0x0000002e, smu fw if version = 0x00000032, smu fw program = 0, smu fw
version = 0x00684400 (104.68.0)
[ 2.895360] amdgpu 0000:08:00.0: amdgpu: SMU driver if version not
matched
[ 2.934857] amdgpu 0000:08:00.0: amdgpu: SMU is initialized successfully!
[ 2.935596] [drm] Display Core v3.2.316 initialized on DCN 4.0.1
[ 2.935598] [drm] DP-HDMI FRL PCON supported
[ 2.939115] [drm] DMUB hardware initialized: version=0x00010300
[ 2.942565] ata1: SATA link down (SStatus 0 SControl 300)
[ 3.233092] amdgpu 0000:08:00.0: amdgpu: program CP_MES_CNTL : 0x4000000
[ 3.233097] amdgpu 0000:08:00.0: amdgpu: program CP_MES_CNTL : 0xc000000
[ 3.293410] amdgpu: HMM registered 16304MB device memory
[ 3.294762] kfd kfd: amdgpu: Allocated 3969056 bytes on gart
[ 3.294771] kfd kfd: amdgpu: Total number of KFD nodes to be created: 1
[ 3.294806] amdgpu: Virtual CRAT table created for GPU
[ 3.294972] amdgpu: Topology: Add dGPU node [0x7550:0x1002]
[ 3.294974] kfd kfd: amdgpu: added device 1002:7550
[ 3.294983] amdgpu 0000:08:00.0: amdgpu: SE 4, SH per SE 2, CU per SH
8, active_cu_number 64
[ 3.294986] amdgpu 0000:08:00.0: amdgpu: ring gfx_0.0.0 uses VM inv
eng 0 on hub 0
[ 3.294987] amdgpu 0000:08:00.0: amdgpu: ring comp_1.0.0 uses VM inv
eng 1 on hub 0
[ 3.294989] amdgpu 0000:08:00.0: amdgpu: ring comp_1.1.0 uses VM inv
eng 4 on hub 0
[ 3.294990] amdgpu 0000:08:00.0: amdgpu: ring comp_1.0.1 uses VM inv
eng 6 on hub 0
[ 3.294991] amdgpu 0000:08:00.0: amdgpu: ring comp_1.1.1 uses VM inv
eng 7 on hub 0
[ 3.294993] amdgpu 0000:08:00.0: amdgpu: ring sdma0 uses VM inv eng 8
on hub 0
[ 3.294994] amdgpu 0000:08:00.0: amdgpu: ring sdma1 uses VM inv eng 9
on hub 0
[ 3.294995] amdgpu 0000:08:00.0: amdgpu: ring vcn_unified_0 uses VM
inv eng 0 on hub 8
[ 3.294997] amdgpu 0000:08:00.0: amdgpu: ring jpeg_dec uses VM inv
eng 1 on hub 8
[ 3.296713] [drm] ring gfx_32768.1.1 was added
[ 3.296874] [drm] ring compute_32768.2.2 was added
[ 3.297032] [drm] ring sdma_32768.3.3 was added
[ 3.297075] [drm] ring gfx_32768.1.1 ib test pass
[ 3.297119] [drm] ring compute_32768.2.2 ib test pass
[ 3.297157] [drm] ring sdma_32768.3.3 ib test pass
[ 3.299782] amdgpu 0000:08:00.0: amdgpu: Using BACO for runtime pm
[ 3.300156] amdgpu 0000:08:00.0: [drm] Registered 4 planes with drm panic
[ 3.300158] [drm] Initialized amdgpu 3.61.0 for 0000:08:00.0 on minor 0
[ 3.328171] fbcon: amdgpudrmfb (fb0) is primary device
[ 3.328173] fbcon: Deferring console take-over
[ 3.328175] amdgpu 0000:08:00.0: [drm] fb0: amdgpudrmfb frame buffer
device
I am aware that this issue pertains to the XanMod kernel. However, upon
reviewing the commits, there is no indication that it is a downstream
issue. I attempted to confirm this regression by building the kernel
from the Git repository, but my limited skills and knowledge proved
insufficient.
Please review this regression and consider reverting the commit from the
stable 6.14 and 6.15 branches - or propose an alternate patch.
Thanks & Regards,
Marcin Kryzak
Commit 2f2bd7cbd1d1 ("hid: lenovo: Resend all settings on reset_resume
for compact keyboards") introduced a regression for ThinkPad TrackPoint
Keyboard II by removing the conditional check for enabling F7/9/11 mode
needed for compact keyboards only. As a result, the non-compact
keyboards can no longer toggle Fn-lock via Fn+Esc, although it can be
controlled via sysfs knob that directly sends raw commands.
This patch restores the previous conditional check without any
additions.
Cc: stable(a)vger.kernel.org
Fixes: 2f2bd7cbd1d1 ("hid: lenovo: Resend all settings on reset_resume for compact keyboards")
Signed-off-by: Iusico Maxim <iusico.maxim(a)libero.it>
---
drivers/hid/hid-lenovo.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/drivers/hid/hid-lenovo.c b/drivers/hid/hid-lenovo.c
index af29ba84052..a3c23a72316 100644
--- a/drivers/hid/hid-lenovo.c
+++ b/drivers/hid/hid-lenovo.c
@@ -548,11 +548,14 @@ static void lenovo_features_set_cptkbd(struct hid_device *hdev)
/*
* Tell the keyboard a driver understands it, and turn F7, F9, F11 into
- * regular keys
+ * regular keys (Compact only)
*/
- ret = lenovo_send_cmd_cptkbd(hdev, 0x01, 0x03);
- if (ret)
- hid_warn(hdev, "Failed to switch F7/9/11 mode: %d\n", ret);
+ if (hdev->product == USB_DEVICE_ID_LENOVO_CUSBKBD ||
+ hdev->product == USB_DEVICE_ID_LENOVO_CBTKBD) {
+ ret = lenovo_send_cmd_cptkbd(hdev, 0x01, 0x03);
+ if (ret)
+ hid_warn(hdev, "Failed to switch F7/9/11 mode: %d\n", ret);
+ }
/* Switch middle button to native mode */
ret = lenovo_send_cmd_cptkbd(hdev, 0x09, 0x01);
--
2.48.1
When cross compiling the kernel with clang, we need to override
CLANG_CROSS_FLAGS when preparing the step libraries.
Prior to commit d1d096312176 ("tools: fix annoying "mkdir -p ..." logs
when building tools in parallel"), MAKEFLAGS would have been set to a
value that wouldn't set a value for CLANG_CROSS_FLAGS, hiding the
fact that we weren't properly overriding it.
Cc: stable(a)vger.kernel.org
Fixes: 56a2df7615fa ("tools/resolve_btfids: Compile resolve_btfids as host program")
Signed-off-by: Suleiman Souhlal <suleiman(a)google.com>
---
v2:
- "Signed-off-by:" instead of "Signed-of-by".
v1: https://lore.kernel.org/lkml/20250606052301.810338-1-suleiman@google.com/
---
tools/bpf/resolve_btfids/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/bpf/resolve_btfids/Makefile b/tools/bpf/resolve_btfids/Makefile
index afbddea3a39c..ce1b556dfa90 100644
--- a/tools/bpf/resolve_btfids/Makefile
+++ b/tools/bpf/resolve_btfids/Makefile
@@ -17,7 +17,7 @@ endif
# Overrides for the prepare step libraries.
HOST_OVERRIDES := AR="$(HOSTAR)" CC="$(HOSTCC)" LD="$(HOSTLD)" ARCH="$(HOSTARCH)" \
- CROSS_COMPILE="" EXTRA_CFLAGS="$(HOSTCFLAGS)"
+ CROSS_COMPILE="" CLANG_CROSS_FLAGS="" EXTRA_CFLAGS="$(HOSTCFLAGS)"
RM ?= rm
HOSTCC ?= gcc
--
2.50.0.rc0.642.g800a2b2222-goog
On Mon, 9 Jun 2025 16:16:32 -0700 David Ranch wrote:
> I'm not sure what you mean by "the only user of this code". There are
> many people using the Linux AX.25 + NETROM stack but we unfortunately
> don't have a active kernel maintainer for this code today.
Alright, sorry. Either way - these locks are not performance critical
for you, right?
Hello,
Looking for a buyer to move any of the following Items located in USA.
Used MICRON SSD 7300 PRO 3.84TB
U.2 HTFDHBE3T8TDF SSD 2.5" NVMe 3480GB
Quantity 400, price $100 EACH
005052112 _ 7.68TB HDD -$200 PER w/ caddies refurbished
Quantity 76, price $100
Brand New CISCO C9300-48UXM-E
Available 5
$2000 EACH
Brand New C9200L-48T-4X-E
$1,200 EACH
QTY4
HP 1040G3 Elite Book Folio Processor :- Intel Core i5
◻Processor :- Intel Core i5
◻Generation :- 6th
◻RAM :- 16GB
◻Storage :- 256G SSD
◻Display :- 14 inch" Touch Screen
QTY 340 $90 EA
SK HYNIX 16GB 2RX4 PC4 - 2133P-RAO-10
HMA42GR7AFR4N-TF TD AB 1526
QTY560 $20 EA
Xeon Gold 6442Y (60M Cache, 2.60 GHz)
PK8071305120500
QTY670 700 each
SAMSUNG 64GB 4DRX4 PC4-2666V-LD2-12-MAO
M386A8K40BM2-CTD60 S
QTY 320 $42 each
Brand New CISCO C9300-48UXM-E
Available 5
$2500 EACH
Core i3-1315U (10M Cache, up to 4.50 GHz)
FJ8071505258601
QTY50 $80 EA
Intel Xeon Gold 5418Y Processors
QTY28 $780 each
Brand New C9200L-48T-4X-E
$1000 EACH
QTY4
Brand New Gigabyte NVIDIA GeForce RTX 5090 AORUS
MASTER OC Graphics Card GPU 32GB GDDR7
QTY50 $1,300
Brand New N9K-C93108TC-FX-24 Nexus
9300-FX w/ 24p 100M/1/10GT & 6p 40/100G
Available 4
$3000 each
Brand New NVIDIA GeForce RTX 4090 Founders
Edition 24GB - QTY: 56 - $700 each
Charles Lawson
Exceptional One PC
3645 Central Ave, Riverside
CA 92506, United States
www.exceptionalonepc.com
info(a)exceptionalonepc.com
Office: (951)-556-3104
The patch below does not apply to the 6.12-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.12.y
git checkout FETCH_HEAD
git cherry-pick -x e683131e64f71e957ca77743cb3d313646157329
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<stable(a)vger.kernel.org>' --in-reply-to '2025060734-elated-juvenile-da5c@gregkh' --subject-prefix 'PATCH 6.12.y' HEAD^..
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From e683131e64f71e957ca77743cb3d313646157329 Mon Sep 17 00:00:00 2001
From: David Lechner <dlechner(a)baylibre.com>
Date: Thu, 29 May 2025 11:53:19 -0500
Subject: [PATCH] dt-bindings: pwm: adi,axi-pwmgen: Fix clocks
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Fix a shortcoming in the bindings that doesn't allow for a separate
external clock.
The AXI PWMGEN IP block has a compile option ASYNC_CLK_EN that allows
the use of an external clock for the PWM output separate from the AXI
clock that runs the peripheral.
This was missed in the original bindings and so users were writing dts
files where the one and only clock specified would be the external
clock, if there was one, incorrectly missing the separate AXI clock.
The correct bindings are that the AXI clock is always required and the
external clock is optional (must be given only when HDL compile option
ASYNC_CLK_EN=1).
Fixes: 1edf2c2a2841 ("dt-bindings: pwm: Add AXI PWM generator")
Cc: stable(a)vger.kernel.org
Signed-off-by: David Lechner <dlechner(a)baylibre.com>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski(a)linaro.org>
Link: https://lore.kernel.org/r/20250529-pwm-axi-pwmgen-add-external-clock-v3-2-5…
Signed-off-by: Uwe Kleine-König <ukleinek(a)kernel.org>
diff --git a/Documentation/devicetree/bindings/pwm/adi,axi-pwmgen.yaml b/Documentation/devicetree/bindings/pwm/adi,axi-pwmgen.yaml
index 45e112d0efb4..5575c58357d6 100644
--- a/Documentation/devicetree/bindings/pwm/adi,axi-pwmgen.yaml
+++ b/Documentation/devicetree/bindings/pwm/adi,axi-pwmgen.yaml
@@ -30,11 +30,19 @@ properties:
const: 3
clocks:
- maxItems: 1
+ minItems: 1
+ maxItems: 2
+
+ clock-names:
+ minItems: 1
+ items:
+ - const: axi
+ - const: ext
required:
- reg
- clocks
+ - clock-names
unevaluatedProperties: false
@@ -43,6 +51,7 @@ examples:
pwm@44b00000 {
compatible = "adi,axi-pwmgen-2.00.a";
reg = <0x44b00000 0x1000>;
- clocks = <&spi_clk>;
+ clocks = <&fpga_clk>, <&spi_clk>;
+ clock-names = "axi", "ext";
#pwm-cells = <3>;
};
Hi Sasha,
On Tue, Jun 10, 2025 at 08:18:13AM -0400, Sasha Levin wrote:
> This is a note to let you know that I've just added the patch titled
>
> USB: serial: bus: fix const issue in usb_serial_device_match()
>
> to the 6.15-stable tree which can be found at:
> http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
>
> The filename of the patch is:
> usb-serial-bus-fix-const-issue-in-usb_serial_device_.patch
> and it can be found in the queue-6.15 subdirectory.
>
> If you, or anyone else, feels it should not be added to the stable tree,
> please let <stable(a)vger.kernel.org> know about it.
>
>
>
> commit 0e91be50efc1a26ec9047dadc980631d31ef8578
> Author: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
> Date: Wed May 21 15:41:34 2025 +0200
>
> USB: serial: bus: fix const issue in usb_serial_device_match()
>
> [ Upstream commit 92cd405b648605db4da866f3b9818b271ae84ef0 ]
>
> usb_serial_device_match() takes a const pointer, and then decides to
> cast it away into a non-const one, which is not a good thing to do
> overall. Fix this up by properly setting the pointers to be const to
> preserve that attribute.
>
> Fixes: d69d80484598 ("driver core: have match() callback in struct bus_type take a const *")
> Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
> Signed-off-by: Johan Hovold <johan(a)kernel.org>
> Signed-off-by: Sasha Levin <sashal(a)kernel.org>
This patch does not need to be backported and I left out the stable
patch on purpose as usual.
Please drop.
Johan