Commit Graph

1325456 Commits

Author SHA1 Message Date
Tiezhu Yang
531936dee5 LoongArch: Extend the maximum number of watchpoints
The maximum number of load/store watchpoints and fetch instruction
watchpoints is 14 each according to LoongArch Reference Manual, so
extend the maximum number of watchpoints from 8 to 14 for ptrace.

By the way, just simply change 8 to 14 for the definition in struct
user_watch_state at the beginning, but it may corrupt uapi, then add
a new struct user_watch_state_v2 directly.

As far as I can tell, the only users for this struct in the userspace
are GDB and LLDB, there are no any problems of software compatibility
between the application and kernel according to the analysis.

The compatibility problem has been considered while developing and
testing. When the applications in the userspace get watchpoint state,
the length will be specified which is no bigger than the sizeof struct
user_watch_state or user_watch_state_v2, the actual length is assigned
as the minimal value of the application and kernel in the generic code
of ptrace:

kernel/ptrace.c: ptrace_regset():

	kiov->iov_len = min(kiov->iov_len,
			   (__kernel_size_t) (regset->n * regset->size));

	if (req == PTRACE_GETREGSET)
		return copy_regset_to_user(task, view, regset_no, 0,
					  kiov->iov_len, kiov->iov_base);
	else
		return copy_regset_from_user(task, view, regset_no, 0,
					  kiov->iov_len, kiov->iov_base);

For example, there are four kind of combinations, all of them work well.

(1) "older kernel + older gdb", the actual length is 8+(8+8+4+4)*8=200;
(2) "newer kernel + newer gdb", the actual length is 8+(8+8+4+4)*14=344;
(3) "older kernel + newer gdb", the actual length is 8+(8+8+4+4)*8=200;
(4) "newer kernel + older gdb", the actual length is 8+(8+8+4+4)*8=200.

Link: https://loongson.github.io/LoongArch-Documentation/LoongArch-Vol1-EN.html#control-and-status-registers-related-to-watchpoints
Cc: stable@vger.kernel.org
Fixes: 1a69f7a161 ("LoongArch: ptrace: Expose hardware breakpoints to debuggers")
Reviewed-by: WANG Xuerui <git@xen0n.name>
Reviewed-by: Xi Ruoyao <xry111@xry111.site>
Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
2025-01-26 21:49:59 +08:00
Tiezhu Yang
f502ea618b LoongArch: Change 8 to 14 for LOONGARCH_MAX_{BRP,WRP}
The maximum number of load/store watchpoints and fetch instruction
watchpoints is 14 each according to LoongArch Reference Manual, so
change 8 to 14 for the related code.

Link: https://loongson.github.io/LoongArch-Documentation/LoongArch-Vol1-EN.html#control-and-status-registers-related-to-watchpoints
Cc: stable@vger.kernel.org
Fixes: edffa33c7b ("LoongArch: Add hardware breakpoints/watchpoints support")
Reviewed-by: WANG Xuerui <git@xen0n.name>
Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
2025-01-26 21:49:59 +08:00
Huacai Chen
04816c1507 LoongArch: Add debugfs entries to switch SFB/TSO state
We need to switch SFB (Store Fill Buffer) and TSO (Total Store Order)
state at runtime to debug memory management and KVM virtualization, so
add two debugfs entries "sfb_state" and "tso_state" under the directory
/sys/kernel/debug/loongarch.

Query SFB:
cat /sys/kernel/debug/loongarch/sfb_state

Enable SFB:
echo 1 > /sys/kernel/debug/loongarch/sfb_state

Disable SFB:
echo 0 > /sys/kernel/debug/loongarch/sfb_state

Query TSO:
cat /sys/kernel/debug/loongarch/tso_state

Switch TSO:
echo [TSO] > /sys/kernel/debug/loongarch/tso_state

Available [TSO] states:
0 (No Load No Store)    1 (All Load No Store)   3 (Same Load No Store)
4 (No Load All Store)   5 (All Load All Store)  7 (Same Load All Store)

Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
2025-01-26 21:49:59 +08:00
Huacai Chen
26c0a2d93a LoongArch: Fix warnings during S3 suspend
The enable_gpe_wakeup() function calls acpi_enable_all_wakeup_gpes(),
and the later one may call the preempt_schedule_common() function,
resulting in a thread switch and causing the CPU to be in an interrupt
enabled state after the enable_gpe_wakeup() function returns, leading
to the warnings as follow.

[ C0] WARNING: ... at kernel/time/timekeeping.c:845 ktime_get+0xbc/0xc8
[ C0]          ...
[ C0] Call Trace:
[ C0] [<90000000002243b4>] show_stack+0x64/0x188
[ C0] [<900000000164673c>] dump_stack_lvl+0x60/0x88
[ C0] [<90000000002687e4>] __warn+0x8c/0x148
[ C0] [<90000000015e9978>] report_bug+0x1c0/0x2b0
[ C0] [<90000000016478e4>] do_bp+0x204/0x3b8
[ C0] [<90000000025b1924>] exception_handlers+0x1924/0x10000
[ C0] [<9000000000343bbc>] ktime_get+0xbc/0xc8
[ C0] [<9000000000354c08>] tick_sched_timer+0x30/0xb0
[ C0] [<90000000003408e0>] __hrtimer_run_queues+0x160/0x378
[ C0] [<9000000000341f14>] hrtimer_interrupt+0x144/0x388
[ C0] [<9000000000228348>] constant_timer_interrupt+0x38/0x48
[ C0] [<90000000002feba4>] __handle_irq_event_percpu+0x64/0x1e8
[ C0] [<90000000002fed48>] handle_irq_event_percpu+0x20/0x80
[ C0] [<9000000000306b9c>] handle_percpu_irq+0x5c/0x98
[ C0] [<90000000002fd4a0>] generic_handle_domain_irq+0x30/0x48
[ C0] [<9000000000d0c7b0>] handle_cpu_irq+0x70/0xa8
[ C0] [<9000000001646b30>] handle_loongarch_irq+0x30/0x48
[ C0] [<9000000001646bc8>] do_vint+0x80/0xe0
[ C0] [<90000000002aea1c>] finish_task_switch.isra.0+0x8c/0x2a8
[ C0] [<900000000164e34c>] __schedule+0x314/0xa48
[ C0] [<900000000164ead8>] schedule+0x58/0xf0
[ C0] [<9000000000294a2c>] worker_thread+0x224/0x498
[ C0] [<900000000029d2f0>] kthread+0xf8/0x108
[ C0] [<9000000000221f28>] ret_from_kernel_thread+0xc/0xa4
[ C0]
[ C0] ---[ end trace 0000000000000000 ]---

The root cause is acpi_enable_all_wakeup_gpes() uses a mutex to protect
acpi_hw_enable_all_wakeup_gpes(), and acpi_ut_acquire_mutex() may cause
a thread switch. Since there is no longer concurrent execution during
loongarch_acpi_suspend(), we can call acpi_hw_enable_all_wakeup_gpes()
directly in enable_gpe_wakeup().

The solution is similar to commit 22db06337f ("ACPI: sleep: Avoid
breaking S3 wakeup due to might_sleep()").

Fixes: 366bb35a8e ("LoongArch: Add suspend (ACPI S3) support")
Signed-off-by: Qunqin Zhao <zhaoqunqin@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
2025-01-26 21:49:59 +08:00
Huacai Chen
307094c9e2 LoongArch: Adjust SETUP_SLEEP and SETUP_WAKEUP
SETUP_SLEEP should only save the GPR context, which is symmetric to
SETUP_WAKEUP, so move the acpi_saved_sp handling out of SETUP_SLEEP.

Move "addi.d  sp, sp, PT_SIZE" into SETUP_WAKEUP for the same reason.

No functional changes.

Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
2025-01-25 18:51:43 +08:00
Huacai Chen
5d0cc7e585 LoongArch: Refactor bug_handler() implementation
1. Early return for user mode triggered exception with all types.
2. Give a chance to call fixup_exception() for default types (like
   S390).

Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
2025-01-25 18:51:42 +08:00
Huacai Chen
0816b2ea18 LoongArch: Add pgprot_nx() implementation
Commit cca98e9f8b ("mm: enforce that vmap can't map pages
executable") enforces the W^X protection by not allowing remapping
existing pages as executable. Add LoongArch bits so that LoongArch
can benefit the same protection.

Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
2025-01-25 18:51:42 +08:00
Huacai Chen
613d4164f5 LoongArch: Correct the __switch_to() prototype in comments
Correct the __switch_to() prototype in comments, keep it be the same as
the declaration in switch_to.h.

Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
2025-01-25 18:51:42 +08:00
Huacai Chen
b62a03049f LoongArch: Correct the cacheinfo sharing information
SMT cores and their sibling cores share the same L1 and L2 private
caches (of course last level cache is also shared), so correct the
cacheinfo sharing information to let shared_cpu_map correctly reflect
this relationship.

Below is the output of "lscpu" on Loongson-3A6000 (4 cores, 8 threads).

1. Before patch:

  L1d:                    512 KiB (8 instances)
  L1i:                    512 KiB (8 instances)
  L2:                     2 MiB (8 instances)
  L3:                     16 MiB (1 instance)

2. After patch:

  L1d:                    256 KiB (4 instances)
  L1i:                    256 KiB (4 instances)
  L2:                     1 MiB (4 instances)
  L3:                     16 MiB (1 instance)

Reported-by: Chao Li <lichao@loongson.cn>
Signed-off-by: Juxin Gao <gaojuxin@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
2025-01-25 18:51:33 +08:00
Jiaxun Yang
98e720f77d LoongArch: Derive timer max_delta from PRCFG1's timer_bits
As per arch spec, maximum timer bits is configurable and should not be
hardcoded in any way.

Probe timer bits from PRCFG1 and use that to determine the clockevent's
max_delta to be conformance.

Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
2025-01-25 18:51:33 +08:00
Jiaxun Yang
341cf992d3 LoongArch: Disable FIX_EARLYCON_MEM when ARCH_IOREMAP is enabled
When ARCH_IOREMAP is enabled, we are using always accessible DMW for
ioremap(). It makes no sense to create a dedicated mapping for earlycon
given that we can access the region via DMW.

Disable FIX_EARLYCON_MEM when ARCH_IOREMAP is selected. This can ease
debugging for early mapping issues.

Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
2025-01-25 18:51:33 +08:00
Masahiro Yamada
c91ddab579 LoongArch: Migrate to the generic rule for built-in DTB
Commit 654102df2a ("kbuild: add generic support for built-in boot
DTBs") introduced generic support for built-in DTBs.

Select GENERIC_BUILTIN_DTB when built-in DTB support is enabled.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
2025-01-25 18:51:33 +08:00
Huacai Chen
09e9d370ce Merge tag 'irq-core-2025-01-21' into loongarch-next
LoongArch architecture changes for 6.14 depend on the irq-core changes
(AVECINTC fixes) to work well for NUMA, so merge them to create a base.
2025-01-25 18:15:32 +08:00
Linus Torvalds
ffd294d346 Linux 6.13 2025-01-19 15:51:45 -08:00
Linus Torvalds
9528d418de - Mark serialize() noinstr so that it can be used from instrumentation-free
code
 
 - Make sure FRED's RSP0 MSR is synchronized with its corresponding per-CPU
   value in order to avoid double faults in hotplug scenarios
 
 - Disable EXECMEM_ROX on x86 for now because it didn't receive proper x86
   maintainers review, went in and broke a bunch of things
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEzv7L6UO9uDPlPSfHEsHwGGHeVUoFAmeM5PkACgkQEsHwGGHe
 VUrrsRAAkQLbaww4SwB2CAS0VARt/ethSuna+uElVfm74IoQqblBCzLAe+Gd6aWR
 ANSpsPkKumfsFu6j8+KCDZf86SnToxEbKv8+xV0ZIohFYL7DDFkuhDsyuWp2nBTe
 E9FCOY2J6w4JTik1QuhCnyMjNg3UFE/I9nAa3gwqOhLxZiyuSdzCZ1Vs3NX2zcmv
 x8zht+ZY+y/qgn6yuVcPoCwx6QlkoWxoJA6cOIwNdJ6mVOruYb7Aozmix6bL6oDS
 5qPoz8qQyAQbPS++ezb80facZqGx2kvw8Alz5msxkRBYvjnckjEd08+QS7y/7fet
 0XmJh+RPpTL8krG2na5JE5RtMTTHuj0oEu/vIUOJ42PGfhaebaYYXwbI0Nub4hDv
 dCddIq+WZwk+Jn9jTGnkW2894ozmwE/l+GWbJ7MhWH02Mbbg/vMrebj4VIkGTFL0
 xlU7KGiRPVgZa3S9A3zhh7nY9XEK5PFUMpSFFY5G657C+HP+wSyEZNqEjdsxV8nJ
 SZBOuzWUoWbhIeXNf+zkf2x2zrrkFwqIZG1H5fSqQF1tDaZVkBgkWsWBP4zuVnXo
 rS/9dBJeyzWLXMY0ZQdO5Tk32/ICkgqlsQFPiQL4shn2+1OnLRfUqzF8MCQZWypt
 KU8xkRGzu3vGHmVeW4Le39z/vooLbO+0GfBcj+iYMHuhCnQFCEA=
 =b6qH
 -----END PGP SIGNATURE-----

Merge tag 'x86_urgent_for_v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull x86 fixes from Borislav Petkov:

 - Mark serialize() noinstr so that it can be used from instrumentation-
   free code

 - Make sure FRED's RSP0 MSR is synchronized with its corresponding
   per-CPU value in order to avoid double faults in hotplug scenarios

 - Disable EXECMEM_ROX on x86 for now because it didn't receive proper
   x86 maintainers review, went in and broke a bunch of things

* tag 'x86_urgent_for_v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  x86/asm: Make serialize() always_inline
  x86/fred: Fix the FRED RSP0 MSR out of sync with its per-CPU cache
  x86: Disable EXECMEM_ROX support
2025-01-19 09:33:40 -08:00
Linus Torvalds
25144ea31b - Reset hrtimers correctly when a CPU hotplug state traversal happens
"half-ways" and leaves hrtimers not (re-)initialized properly
 
 - Annotate accesses to a timer group's ignore flag to prevent KCSAN from
   raising data_race warnings
 
 - Make sure timer group initialization is visible to timer tree walkers and
   avoid a hypothetical race
 
 - Fix another race between CPU hotplug and idle entry/exit where timers on
   a fully idle system are getting ignored
 
 - Fix a case where an ignored signal is still being handled which it shouldn't
   be
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEzv7L6UO9uDPlPSfHEsHwGGHeVUoFAmeM4vgACgkQEsHwGGHe
 VUpw3RAAnKu9B1bizT4lAfK4dsh9I/beDmeCaLZ8kWWq6Ot4LJry8qsAnr8Pami9
 WsFxn/LSCvqsTOZ5aSuYNyWpeUJBrHzCvaTrdpOfgpgq1eZzS/iuuZBXJtV018dp
 DKVnjHSjCseXW9EfquXHcHIaHswzvdAsep/y8qTRiJlJ13lmihGOxbQDjQTWP9mm
 geYDXKaih25dMeON7RJ+ND6Lnai8lfxyncv7HPE5wAo4Exr5jCDPIBHSXhE4Hgde
 f4SnBnvevJCDKwbrvpN4ecgFLBj4FIe80TiKFpGDk1rFG0myLQrDps6RMfZ6XzB4
 duEu5chfsECbp3ioq7nC/6hRuJCIXJrN20Ij0MQAGFGPKO+uKlSfWVY4Zqc3lbxZ
 xROHxTeYYram8RIzclUnwhprZug5SN3PUyyvAYgswLxc4tKJ39elHIkh5c+TReHK
 qFG+//Xnyd9dmYNb+SwbDRps17F50bJLDhOS+7FwkYRkCG8NoxlR2EAJeI0RGBzL
 1B9EE5Nht9awwzWtVCbJizyfbkRZSok5lToyqPIyjsrmueiz+qiZDnAdqhiArfJ7
 ThcN21BKSvMBJ5/tEyAPfE7dK08Sxq6oBuP8mtscv0CK9cU1sis99/0COwfclhlm
 8EfAyHpIz7cMsmnENAURMAyeB3L4HRIc8FJUw60IO9HRe6RH1Hs=
 =Xfav
 -----END PGP SIGNATURE-----

Merge tag 'timers_urgent_for_v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull timer fixes from Borislav Petkov:

 - Reset hrtimers correctly when a CPU hotplug state traversal happens
   "half-ways" and leaves hrtimers not (re-)initialized properly

 - Annotate accesses to a timer group's ignore flag to prevent KCSAN
   from raising data_race warnings

 - Make sure timer group initialization is visible to timer tree walkers
   and avoid a hypothetical race

 - Fix another race between CPU hotplug and idle entry/exit where timers
   on a fully idle system are getting ignored

 - Fix a case where an ignored signal is still being handled which it
   shouldn't be

* tag 'timers_urgent_for_v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  hrtimers: Handle CPU state correctly on hotplug
  timers/migration: Annotate accesses to ignore flag
  timers/migration: Enforce group initialization visibility to tree walkers
  timers/migration: Fix another race between hotplug and idle entry/exit
  signal/posixtimers: Handle ignore/blocked sequences correctly
2025-01-19 09:09:07 -08:00
Linus Torvalds
b031457ab1 - Fix an OF node leak in irqchip init's error handling path
- Fix sunxi systems to wake up from suspend with an NMI by pressing the power
   button
 
 - Do not spuriously enable interrupts in gic-v3 in a nested
   interrupts-off section
 
 - Make sure gic-v3 handles properly a failure to enter a low power state
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEzv7L6UO9uDPlPSfHEsHwGGHeVUoFAmeM3eIACgkQEsHwGGHe
 VUqbEw/7BfNk7aiL9OrHg9J5IPE51hSzctr+MrlqRPkBBdpQF5Q4HC4R7ZlSBy44
 k8zR96jO6qCgo+rObj1BmtYk6Yndxf1WDauVovaK774IMJVyhtJ4hGvPCYt1jOYt
 BZ/rF3mkPxC8ui/e2HsZVwMXjmuPaf6tZ8Bvsof0qrxy6ayh+L4b8KPBYXtXdoYr
 GxwuIoK7VHDj+0HTcBtzCAB3CLhYAeknwVGeGMP9xnE4DkqoYurfsmY60OnIXz0n
 j2oTTeQaLHFcAXcw5B7jABYeCAh3UfrKg9Og108z8aQ3hvTcGvM6ou/bBdVUVDSY
 E2bCW8DC2hmHUqEUQ2zW5CueVFCBkyi/JYbkuXG56gGH/qZ2moIcSm01ELNxiX4X
 jh6StDOKhqczSJb0rbzNK8BT8ZfiJK4OQSJOvIWyKEb3gEJxW3pEuFHiKcUECGZe
 EAXo81UF7R5eMFmJubAa1LYw60LSD83/1SKbeXHT5GnMWA51YIL16xYUsthpQnpV
 xZ/XVtPU1oM2cl+03q70VSVPZw0Eisd5i+5TSX9D0hdXfAD4g070oaOEZEc+ZFEj
 7VO68AmGgAb1ZoKFNxDt/+tM/r4GJxiKTqMgjYX/dLN5jhtTbHi8Nui9h4m8WGqK
 58WjqDuba7ajrYpt8ah8uWd8lU2zFvtFNXTQl6YS8oVPbJM2CxY=
 =Hjnc
 -----END PGP SIGNATURE-----

Merge tag 'irq_urgent_for_v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull irq fixes from Borislav Petkov:

 - Fix an OF node leak in irqchip init's error handling path

 - Fix sunxi systems to wake up from suspend with an NMI by
   pressing the power button

 - Do not spuriously enable interrupts in gic-v3 in a nested
   interrupts-off section

 - Make sure gic-v3 handles properly a failure to enter a
   low power state

* tag 'irq_urgent_for_v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  irqchip: Plug a OF node reference leak in platform_irqchip_probe()
  irqchip/sunxi-nmi: Add missing SKIP_WAKE flag
  irqchip/gic-v3-its: Don't enable interrupts in its_irq_set_vcpu_affinity()
  irqchip/gic-v3: Handle CPU_PM_ENTER_FAILED correctly
2025-01-19 09:04:33 -08:00
Linus Torvalds
8ff6d472ab - Do not adjust the weight of empty group entities and avoid scheduling
artifacts
 
 - Avoid scheduling lag by computing lag properly and thus address an EEVDF
   entity placement issue
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEzv7L6UO9uDPlPSfHEsHwGGHeVUoFAmeM2+8ACgkQEsHwGGHe
 VUrqHA/+PyPsILNfDFnaXD/Shv7kCgk3hH2YVrCnyIQn8fhTCL+K0luXRRmAPhl1
 pEbRyEtVRXZM9WyHJ1r7VmnIHVanUKWcuZzAx8HT9b7Tkrqy/xSriH/jAV7FYG9h
 gIhWA4vXT34HG2MQHTecJ/4gvkeI5tV93nkZ6vwEwwN4pGxSvijPR3yr3yl286Nt
 BlHP9cXBWWsxTq4CYb2j5q9nmymKuiDmhD8jc1fVjDKxjmrNHEwX5mtvtRLGI1dR
 O4pjUEqYQ+TWIkX8ZIRBPzLd9b6750ncO/9yb24cY7Z3RMKov4wz8b819Dt77cTp
 XF+bT+8fsaKNRjkzPEseZU4OL16ZO+33Kcn+JoNPWvbONgFKusZ4qkCCwvWpiQlV
 0Eddh1XjKBoXA1tR6VrREcUKQ2zWoXrn8tlHUTMfPuPq1jlbQNtzN7OWcR+WBy7L
 FiClWzWLv0fCeTXaAEcO9+/MN5z2lDQsJRiLtAlGh0JJU6/1H6IVX2tSZllkpR/R
 5pyHCpYsh5cucx6cQPk+rp9O6PDYu2frMuJ8itWlQLHeSzjzOoeE6EwwZcMQG4xb
 UG/azMbmqWrtmZqCgNCBtq7RAkVRe0IuxWuCtV1VkatU+2RXdtV85tVKn/JG2KLW
 05c8GTdQZgnoY65/TZHwudhkzytclynKrrvhfKFllAWnb8D8gyQ=
 =fZWm
 -----END PGP SIGNATURE-----

Merge tag 'sched_urgent_for_v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull scheduler fixes from Borislav Petkov:

 - Do not adjust the weight of empty group entities and avoid
   scheduling artifacts

 - Avoid scheduling lag by computing lag properly and thus address
   an EEVDF entity placement issue

* tag 'sched_urgent_for_v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  sched/fair: Fix update_cfs_group() vs DELAY_DEQUEUE
  sched/fair: Fix EEVDF entity placement bug causing scheduling lag
2025-01-19 09:01:17 -08:00
Linus Torvalds
fda5e3f284 Fix regression in GFP output in trace events
It was reported that the GFP flags in trace events went from human
 readable to just their hex values:
 
   gfp_flags=GFP_HIGHUSER_MOVABLE|__GFP_COMP to gfp_flags=0x140cca
 
 This was caused by a change that added the use of enums in calculating
 the GFP flags. As defines get translated into their values in the
 trace event format files, the user space tooling could easily convert
 the GFP flags into their symbols via the __print_flags() helper macro.
 The problem is that enums do not get converted, and the names of the
 enums show up in the format files and user space tooling cannot translate
 them.
 
 Add TRACE_DEFINE_ENUM() around the enums used for GFP flags which is the
 tracing infrastructure macro that informs the tracing subsystem what
 the values for enums and it can then expose that to user space.
 -----BEGIN PGP SIGNATURE-----
 
 iIoEABYIADIWIQRRSw7ePDh/lE+zeZMp5XQQmuv6qgUCZ4u7AxQccm9zdGVkdEBn
 b29kbWlzLm9yZwAKCRAp5XQQmuv6qgIkAP0VVW80Ck5K9hpDJ3SvSgaGDntSegY7
 lI0ExVqGsJz8GQEAzkaRjgGXuXfzGzA9K7ZUe9X4R8W0Xkl9GisvqqEU1Ak=
 =rzFM
 -----END PGP SIGNATURE-----

Merge tag 'trace-v6.13-rc7-2' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace

Pull tracing fix from Steven Rostedt:
 "Fix regression in GFP output in trace events

  It was reported that the GFP flags in trace events went from human
  readable to just their hex values:

      gfp_flags=GFP_HIGHUSER_MOVABLE|__GFP_COMP to gfp_flags=0x140cca

  This was caused by a change that added the use of enums in calculating
  the GFP flags.

  As defines get translated into their values in the trace event format
  files, the user space tooling could easily convert the GFP flags into
  their symbols via the __print_flags() helper macro.

  The problem is that enums do not get converted, and the names of the
  enums show up in the format files and user space tooling cannot
  translate them.

  Add TRACE_DEFINE_ENUM() around the enums used for GFP flags which is
  the tracing infrastructure macro that informs the tracing subsystem
  what the values for enums and it can then expose that to user space"

* tag 'trace-v6.13-rc7-2' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace:
  tracing: gfp: Fix the GFP enum values shown for user space tracing tools
2025-01-18 13:22:53 -08:00
Linus Torvalds
595523945b Devicetree fixes for 6.13, part 2:
Another fix and testcase to avoid the newly added WARN in the case of
 non-translatable addresses.
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEktVUI4SxYhzZyEuo+vtdtY28YcMFAmeK0gAACgkQ+vtdtY28
 YcNanRAAjtXeeRK8NZJ9JfjTDaNMxQJ89WVSKmbJBNH8M/hWFK9eq2fJvNwnPJJT
 4xHfWvNr7znyC2kLm6k/LKGmyV/mQqiJ8vCaBKQ1KssjQ1hXR7JiXbniw78Rc0LD
 zfY9nDxMRm8jJhz5T0TNfhWn1bBAUA9dibew8etdo2KqCXGrFnGIZoeFU/ro8Tzy
 /bW90QhlUxze9V4bH/4UBvTmfK8WmSTobG9r7Z2/YXcbTxB1uDGKZhV4jhJ4Issa
 qrue201VlReHdRmiYWeDz57m/aXBudOvLaDJVymzoYJU5FypNH/757cvmysiQxzq
 tRRLgZLhAye5qB3HCX5xa6v3CvAvuf01EzTMMLKuKA4IkkaoO6CjjG7D/ip4lvdc
 Ekt4OFGYdxGQaJNeXmaLioJzhrsS0NQe4ZFUQF1YnMdOfI3vneVsRcG6CHgKyfft
 pnoBiakIiapNj4S/UTn+A2bI+/rG0P9rbMwhpb3ojJBlp5IpC/8vqKzeA8Hzy19I
 3Yi3lfX4sscSvQJk6izkTxwDMfx/FsrQfkf6PS8eYfhAlyMcc1JKuxN15sIoEth7
 TapRH0hR5aCe64jYWpIEIwaVb+d2izdEPf+9Dd7v/LBRe44mvHnLAMs2936UxvUg
 U/dKP9iR/pWaibPpIGuK6RCRY4uO6qJfzwvSRPrJNohZUk8RNhM=
 =Uw0f
 -----END PGP SIGNATURE-----

Merge tag 'devicetree-fixes-for-6.13-2' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux

Pull devicetree fixes from Rob Herring:
 "Another fix and testcase to avoid the newly added WARN in the case of
  non-translatable addresses"

* tag 'devicetree-fixes-for-6.13-2' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux:
  of/address: Fix WARN when attempting translating non-translatable addresses
  of/unittest: Add test that of_address_to_resource() fails on non-translatable address
2025-01-17 15:01:24 -08:00
Linus Torvalds
ed9add2b32 soc: fixes for 6.13, part 4
Two last minute fixes: one build issue on TI soc drivers,
 and a regression in the renesas reset controller driver.
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEiK/NIGsWEZVxh/FrYKtH/8kJUicFAmeKhqUACgkQYKtH/8kJ
 Uie9ARAAxtghxRPixgucuNr2qgLB/zaCJ8r78DrS70Duc6meyH82uOfv0zBgKHbi
 y/a09FsLbJUG6jC2Ipd2gxXJ3U2mTHisIYEcCw6bmppLHcByteI7bkB5xqv8Sw4V
 p0n4eqohQ8FruzCdHQgKA8P3C1Bw3t4m/ODzEc/gs6RFyfQdfRHHGtFuN7wzjcpu
 pzL4q2n2wuNv6ys5o/QLPlP8zrskSemhJvNxBozq/Lfkh1eCPPo4xnKguCXPnip3
 VyJYT85UpqyyB7ngKoSw4CaL+eMHSMvT19AkzDRffay47dAhOvgKzh3MROWHFVp2
 9NR5XFTQShmSobxevM8arLJUbZt0lyRxZoB+/708WMHWNCy3OPWWRAaZNr7uNyAk
 8J7gCWN34nOX657jlBgYYZmp27yspgyGTe7MOWr65qiBVWFBKfZvppyyBvbfgXuG
 A4xcGPpa20lucx2npbEzJ4TrRD3CMSfMFMK7xqBdBYdGMJELihRVYg8Frq4GYWNE
 SfBFsLMTM+rq2jPg1t65Y8aYK1Y7xABos1OT7Gai8+6nLlOgAt7lk2SlIqzNemG9
 0ME4DAp1SG/bgM30kVraU6/L1uZmmoHhJEeTS2GDFC5XHdfz79gUzU97l/tPaa+w
 T3C6y42Ehl+LZnP+GAdIdvecQv8O+zTIlRVqkE35Cx7Igt5mAdE=
 =UIAA
 -----END PGP SIGNATURE-----

Merge tag 'soc-fixes-6.13-4' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc

Pull SoC fixes from Arnd Bergmann:
 "Two last minute fixes: one build issue on TI soc drivers, and a
  regression in the renesas reset controller driver"

* tag 'soc-fixes-6.13-4' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc:
  soc: ti: pruss: Fix pruss APIs
  reset: rzg2l-usbphy-ctrl: Assign proper of node to the allocated device
2025-01-17 14:49:53 -08:00
Linus Torvalds
775a15eaf7 platform-drivers-x86 for v6.13-6
Fixes:
 
  - dell-uart-backlight: Fix serdev race
 
  - lenovo-yoga-tab2-pro-1380-fastcharger: Fix serdev race
 
 The following is an automated shortlog grouped by driver:
 
 dell-uart-backlight:
  -  fix serdev race
 
 lenovo-yoga-tab2-pro-1380-fastcharger:
  -  fix serdev race
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYIAB0WIQSCSUwRdwTNL2MhaBlZrE9hU+XOMQUCZ4p5jwAKCRBZrE9hU+XO
 MWJ3AQDgEOM9WkVFa8xyyol4tHloy+9Li4Kb4CIcDKGdTXdu0AEAstMDX7NWhVc4
 1F7mfC4K0t9OejC0bgU76v7PbdEayAs=
 =EQTo
 -----END PGP SIGNATURE-----

Merge tag 'platform-drivers-x86-v6.13-6' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86

Pull x86 platform driver fixes from Ilpo Järvinen:

 - dell-uart-backlight: Fix serdev race

 - lenovo-yoga-tab2-pro-1380-fastcharger: Fix serdev race

* tag 'platform-drivers-x86-v6.13-6' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86:
  platform/x86: lenovo-yoga-tab2-pro-1380-fastcharger: fix serdev race
  platform/x86: dell-uart-backlight: fix serdev race
2025-01-17 14:40:09 -08:00
Linus Torvalds
42f38ccb00 Very late this cycle we identified a breakage that could potentially hit
several spi controller drivers because of a change in the way the dummy
 cycles validity is checked. We do not know at the moment how to handle
 the situation properly, so we prefer to revert the faulty patch for the
 next release.
 -----BEGIN PGP SIGNATURE-----
 
 iQEzBAABCAAdFiEE9HuaYnbmDhq/XIDIJWrqGEe9VoQFAmeKqocACgkQJWrqGEe9
 VoQcWQgAv8bth4dYDRDYkzpfC2vkysf/kXz0FX3yhHV/lvRTzhcupikscZYqdygW
 gVwRhjSBreoJ5kuaK/oI2Xsv4+czpkYkrG0EYaXngqXIquzF/43Dj4iiti+B7LrJ
 jLXAijuHNhmPn8y8fRWq3V0h8ean7z/eSDY4fHxWq3DYjmAUHDtuIhFnKiciDhQH
 Jj9O/LSgEvLneZ3dOqxOvj8Au0gXK4+e3st9OFv2OHMaJsQ9Q7ctEK4dHXpao8YT
 XMP5oJN/Pv2fCxohcpYHFEl/1Wbf9+mtlhYEjzIrclADoE3+S1V2wBBoUWYd0+eB
 85P43jnPO/7+eJIXeNhkn/8qij1LoQ==
 =ICSH
 -----END PGP SIGNATURE-----

Merge tag 'mtd/fixes-for-6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux

Pull mtd revert from Miquel Raynal:
 "Very late this cycle we identified a breakage that could potentially
  hit several spi controller drivers because of a change in the way the
  dummy cycles validity is checked.

  We do not know at the moment how to handle the situation properly, so
  we prefer to revert the faulty patch for the next release"

* tag 'mtd/fixes-for-6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux:
  Revert "mtd: spi-nor: core: replace dummy buswidth from addr to data"
2025-01-17 14:22:36 -08:00
Steven Rostedt
60295b944f tracing: gfp: Fix the GFP enum values shown for user space tracing tools
Tracing tools like perf and trace-cmd read the /sys/kernel/tracing/events/*/*/format
files to know how to parse the data and also how to print it. For the
"print fmt" portion of that file, if anything uses an enum that is not
exported to the tracing system, user space will not be able to parse it.

The GFP flags use to be defines, and defines get translated in the print
fmt sections. But now they are converted to use enums, which is not.

The mm_page_alloc trace event format use to have:

  print fmt: "page=%p pfn=0x%lx order=%d migratetype=%d gfp_flags=%s",
    REC->pfn != -1UL ? (((struct page *)vmemmap_base) + (REC->pfn)) : ((void
    *)0), REC->pfn != -1UL ? REC->pfn : 0, REC->order, REC->migratetype,
    (REC->gfp_flags) ? __print_flags(REC->gfp_flags, "|", {( unsigned
    long)(((((((( gfp_t)(0x400u|0x800u)) | (( gfp_t)0x40u) | (( gfp_t)0x80u) |
    (( gfp_t)0x100000u)) | (( gfp_t)0x02u)) | (( gfp_t)0x08u) | (( gfp_t)0)) |
    (( gfp_t)0x40000u) | (( gfp_t)0x80000u) | (( gfp_t)0x2000u)) & ~((
    gfp_t)(0x400u|0x800u))) | (( gfp_t)0x400u)), "GFP_TRANSHUGE"}, {( unsigned
    long)((((((( gfp_t)(0x400u|0x800u)) | (( gfp_t)0x40u) | (( gfp_t)0x80u) |
    (( gfp_t)0x100000u)) | (( gfp_t)0x02u)) | (( gfp_t)0x08u) | (( gfp_t)0)) ...

Where the GFP values are shown and not their names. But after the GFP
flags were converted to use enums, it has:

  print fmt: "page=%p pfn=0x%lx order=%d migratetype=%d gfp_flags=%s",
    REC->pfn != -1UL ? (vmemmap + (REC->pfn)) : ((void *)0), REC->pfn != -1UL
    ? REC->pfn : 0, REC->order, REC->migratetype, (REC->gfp_flags) ?
    __print_flags(REC->gfp_flags, "|", {( unsigned long)((((((((
    gfp_t)(((((1UL))) << (___GFP_DIRECT_RECLAIM_BIT))|((((1UL))) <<
    (___GFP_KSWAPD_RECLAIM_BIT)))) | (( gfp_t)((((1UL))) << (___GFP_IO_BIT)))
    | (( gfp_t)((((1UL))) << (___GFP_FS_BIT))) | (( gfp_t)((((1UL))) <<
    (___GFP_HARDWALL_BIT)))) | (( gfp_t)((((1UL))) << (___GFP_HIGHMEM_BIT))))
    | (( gfp_t)((((1UL))) << (___GFP_MOVABLE_BIT))) | (( gfp_t)0)) | ((
    gfp_t)((((1UL))) << (___GFP_COMP_BIT))) ...

Where the enums names like ___GFP_KSWAPD_RECLAIM_BIT are shown and not their
values. User space has no way to convert these names to their values and
the output will fail to parse. What is shown is now:

  mm_page_alloc:  page=0xffffffff981685f3 pfn=0x1d1ac1 order=0 migratetype=1 gfp_flags=0x140cca

The TRACE_DEFINE_ENUM() macro was created to handle enums in the print fmt
files. This causes them to be replaced at boot up with the numbers, so
that user space tooling can parse it. By using this macro, the output is
back to the human readable:

  mm_page_alloc: page=0xffffffff981685f3 pfn=0x122233 order=0 migratetype=1 gfp_flags=GFP_HIGHUSER_MOVABLE|__GFP_COMP

Cc: stable@vger.kernel.org
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Veronika  Molnarova <vmolnaro@redhat.com>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Link: https://lore.kernel.org/20250116214438.749504792@goodmis.org
Reported-by: Michael Petlan <mpetlan@redhat.com>
Closes: https://lore.kernel.org/all/87be5f7c-1a0-dad-daa0-54e342efaea7@redhat.com/
Fixes: 772dd03427 ("mm: enumerate all gfp flags")
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
2025-01-17 16:15:39 -05:00
Linus Torvalds
07757eeb96 hwmon fixes for v6.13-rc8/v6.13
- ltc2991, tmp513: Fix problems seen when dividing negative numbers
 
 - drivetemp: Handle large timeouts observed on some drives
 
 - acpi_power_meter: Fix loading the driver on platforms without _PMD method
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEEiHPvMQj9QTOCiqgVyx8mb86fmYEFAmeKiEAACgkQyx8mb86f
 mYFcRBAApLO5JZrC4U7DiBLUKZ4EKXtp/C/+iabcp8rJisF7BqdEjn8BHz+gEIKk
 eO7AoMv49s7zxZd2yNpa84XWIFB703rZpz/mDFHAsimOQRDE23xM2qrxImhyaRVt
 OsY7glQQJJpm7IWzVywUGaxkVqilvge0OH/S6Cw3p+yw/aMQ8UAHR6T+ed+5t9s0
 eGrgbQQOvlvEOhaNvWFe+Nhj66uzayfEOSeiPZL17r4MLFjdtUVzli4myfCm6CKC
 C6uTy7YvF6l8Sf3+h+9SFVWaudyH5oFfGmkBFXcwTOR7yoY1y5emVEtz7zbI6ZlA
 MaVB5VqaqlXWWZoVfIKMjR9iHNQvWtvwY35UwAyOi1nCXDMaqmBNfbSO/sJ5R+qw
 5U2Eg+XLxOc5I4CsjU0PuLsraj0zQ79LgYEnaVIBgM9gBYNCwwrUIeOssLEkwZZG
 gfUny6cGWKwPX3JafaAgy2NKwzDPrkud5MlmxGoUpK2NqsYP3CIh/cZw4a9gfKWE
 xLqbaJx8L13PrIy2AV6AoT4db8dryHrtj5H0ItyqzTJ70kWf1dZRw5l0NTTVZa1n
 N5C4lLvYfJd/4s+HtqMUYIZFux+IkIql4K94cn0UhXWK8N6OnBH7hv9TJZVC4MJb
 g8I7gFcXmy3Q0LQ/lok9pF/5Mr5gt80mvrzdmKDbct6LlyY2NPo=
 =jMB2
 -----END PGP SIGNATURE-----

Merge tag 'hwmon-for-v6.13-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging

Pull hwmon fixes from Guenter Roeck:

 - ltc2991, tmp513: Fix problems seen when dividing negative numbers

 - drivetemp: Handle large timeouts observed on some drives

 - acpi_power_meter: Fix loading the driver on platforms without _PMD
   method

* tag 'hwmon-for-v6.13-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
  hwmon: (ltc2991) Fix mixed signed/unsigned in DIV_ROUND_CLOSEST
  hwmon: (drivetemp) Set scsi command timeout to 10s
  hwmon: (acpi_power_meter) Fix a check for the return value of read_domain_devices().
  hwmon: (tmp513) Fix division of negative numbers
2025-01-17 12:31:37 -08:00
Linus Torvalds
7fed891d6e gpio fixes for v6.13
- convert regular spinlock to raw spinlock in gpio-xilinx to avoid a
   lockdep splat
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEFp3rbAvDxGAT0sefEacuoBRx13IFAmeKTCoACgkQEacuoBRx
 13KDfw/+JDW949lcZsIf9ZqZmIG9l2wdC20HWd6Jb4PPEVjWvYXTYwBhTz7J5YLC
 jF35x7mOM7mDxHPAHg2O4lqFoE+0pwkFJrtd3uYuNI9F/lWYvja6r0RYXlAKhmd4
 GZEcQzYvOWCLJ5IEw0M86xbBkD4CmFrKH3CKbQrV0xX8cZW+jWcdmi/mXCinrobp
 sh4tk2gbhjv3lgYegiKLrFkbeJAYDwFIRbf+M0yo8g0EhE+miM1YBlBH2RZ0c43s
 p8L5bsN3xtPhaFOX/LayItmk4sx1jr0vC56RTeYhUuVYBZsK/M8QOytzK4ypsbNM
 QzaeKD1kyrOiXg4dTuwhqGO6g2nONHoLyHbPbIDbOjSP+vUw6JNPZkuldpbiJM+N
 C8NQKFv6JmfKXK9zWOhMNWxk0ae52VHU2s6e29L3N2KKBG9vOUS6r8ImQ27SXplC
 yCB21qLIVlp3bSv4mpMoPn+oJaiOAoyykCqSbbGjIo9zoKliI09ctD0tA/X2tPBK
 kq5tBuYWzNQ0QPLRXpEaG3reZQai8+H7T972yn0G7KPj/ipWKDzWx1A4LZejblgz
 1MFXTqFK0rB+luTU7sOlZVQuBCl0KfP7To0mEsh4BwjsCBr5qzbUJXQ+I/d2Uh6h
 RmEKExjy2nqvdtU89k+HW0UFkCMwlHpArKfCXY2SFzEPEXbAF1c=
 =WhW4
 -----END PGP SIGNATURE-----

Merge tag 'gpio-fixes-for-v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux

Pull gpio fix from Bartosz Golaszewski:

 - convert regular spinlock to raw spinlock in gpio-xilinx to avoid a
   lockdep splat

* tag 'gpio-fixes-for-v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux:
  gpio: xilinx: Convert gpio_lock to raw spinlock
2025-01-17 11:39:28 -08:00
Linus Torvalds
5e74b9bf26 i2c-for-6.13-rc8
This pull request fixes:
 
 - a ref leak in the I2C core
 - the remove notification in the address translator
 - a missing error check in the pinctrl demuxer
   (plus a typo fix)
 - handling NAK when Linux is testunit target
 - handling NAK for the Renesas R-Car controller when
   it is a target
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEOZGx6rniZ1Gk92RdFA3kzBSgKbYFAmeJ/6QACgkQFA3kzBSg
 KbY4pA/+LCdKS27uHKgCmnHM7xBsQBZhKI8cfQmBH9ssfV5xJi5DMcqCGZRxss5b
 Q14MP/3Mi3J5gVvDuadtN6yXQxiIAMBHvdAW11QYF/gKL34SR0QOzluEmf+b5Q6l
 leesgsJMXuJIXSrH/ZMXAyyDqOcNSQtaTIrY7HV9gCL3yW/xNdDPxBq6+K5bcCst
 p2FaWMO2RSSkaoDKnhEIWPM7cwGTt3RyeUz1CjDeGxzqHFXj8PKBg803ubbNZ0qz
 A+uv+UdJ7cH1pmGFY+rH7UEopPOAe52pQ+1k8YyirAFsqmwne0bLrK/ZBwEoA6Dd
 7h9OTPhnKKAnb5o983JM5AZ7ApQgBlQPChjT64Yv3xUI38WDJDcvZ119REwUQJ4O
 FgdGyHxwd++mUJFo3IKJx3D0fQ3XkDD1vX0ZvqFT5fWL9LBdZfS0HeX+pbQxzn9C
 LVpuFGOJhd48el/iulQNyhRTysrHi03nKpXKswJ/QdViSMap9XV8i/OAhO8q/Liv
 JBDAHTMQjDZeReWYHX1tyoQabhAUlFP4cBrpsOJqkc5xGEcevBpAoglC/Qw8UBZ+
 BTwUXWHM83bnoPh2QQsFPeW0QOEBVpWe//RA9c5P/OzS/E1L22T2mK0EY1oHta1t
 qFw4Ku3GZ/sMcfTtODlvquUiRX9LKFdjz4U7Wl8TX3r1BKgxsIA=
 =8f0F
 -----END PGP SIGNATURE-----

Merge tag 'i2c-for-6.13-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux

Pull i2c fixes from Wolfram Sang:

 - fix ref leak in the I2C core

 - fix remove notification in the address translator

 - missing error check in the pinctrl demuxer (plus a typo fix)

 - fix NAK handling when Linux is testunit target

 - fix NAK handling for the Renesas R-Car controller when it is a target

* tag 'i2c-for-6.13-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux:
  i2c: testunit: on errors, repeat NACK until STOP
  i2c: rcar: fix NACK handling when being a target
  i2c: mux: demux-pinctrl: correct comment
  i2c: mux: demux-pinctrl: check initial mux selection, too
  i2c: atr: Fix client detach
  i2c: core: fix reference leak in i2c_register_adapter()
2025-01-17 11:14:47 -08:00
Linus Torvalds
4b040f0abe pmdomain providers:
- imx8mp-blk-ctrl: Add missing loop break condition
 -----BEGIN PGP SIGNATURE-----
 
 iQJLBAABCgA1FiEEugLDXPmKSktSkQsV/iaEJXNYjCkFAmeKQ18XHHVsZi5oYW5z
 c29uQGxpbmFyby5vcmcACgkQ/iaEJXNYjCmzzBAAv4a7k285C5UwiYKIRjQE8eRL
 UIP0xNv7rFKCbHH880OEheACBAxUbQXaYGRtGkg0mwBv873+qfYlqDlFjUo1x7AM
 Nc2sArQpebD0rPWhSC6pSi6/a98Tl9+Aqc5ISxQQA4+Hs3Cwo1J+tj3zY+mXxU36
 XTRGr0pktzIvSbGbkjX5txFyXcXMud221BpXSteMsjf9nespgnGphBW2yAhVLuux
 bYP5u0JprdywsNheTwoyDUTv+VflRTpjnQ9Q00C7P5ZW+obVO36hrFnEnjCaW2kH
 nEswEcDANEqRZnOP8BHR1rJX20EZmTR1yJ7wCxp/+uOBcBWim3lBJ/HEI8Wjt9el
 d4956Ips1PxN1+6gqsfrl9QtdaBJaBXkj7oQsI/jOHjqmf4W0UruAvCK8ehAcrhU
 dTMX1uoFPl07jyGNoc4WIxZ8OF+Yv86AQy1xMp3Z+yPQkRM7xl54gA9cxQ4sJ+5D
 OkFtURnHv2Xi1s290Y8Y/6VsYiqdEkH4nKQN6HAryMNKdG8y4p/w8eV6T2sZd9cr
 wVtbU9J5xXShfcma/RMsUxoRUrGSQ0o/KniHUqzisp4D21NT+nHJ5dCWYaANtBp6
 g66ljcywJagSspSY5slx+pnEpNeGukjdq5v4ga80NPGN6x0to+w9RjRhn9rR9hwh
 ghBvyXZYgbcCKNDyn28=
 =5ALK
 -----END PGP SIGNATURE-----

Merge tag 'pmdomain-v6.13-rc2-2' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/linux-pm

Pull pmdomain fix from Ulf Hansson:

 - imx8mp-blk-ctrl: Add missing loop break condition

* tag 'pmdomain-v6.13-rc2-2' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/linux-pm:
  pmdomain: imx8mp-blk-ctrl: add missing loop break condition
2025-01-17 09:21:22 -08:00
Linus Torvalds
ad26fc09da 7 singleton hotfixes. 6 are MM. 2 are cc:stable and the remainder
address post-6.12 issues.
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYKAB0WIQTTMBEPP41GrTpTJgfdBJ7gKXxAjgUCZ4nmkQAKCRDdBJ7gKXxA
 jjkeAP0bWXTKNDnJJRtlIMfqU47bexzLwGZUA5TUTwMpXw1UywD/Z/L3tSHMOV+Z
 DN65lVDkAmB62YAcPr968llp8A0xwwM=
 =St5g
 -----END PGP SIGNATURE-----

Merge tag 'mm-hotfixes-stable-2025-01-16-21-11' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm

Pull misc fixes from Andrew Morton:
 "7 singleton hotfixes.  6 are MM.

  Two are cc:stable and the remainder address post-6.12 issues"

* tag 'mm-hotfixes-stable-2025-01-16-21-11' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm:
  ocfs2: check dir i_size in ocfs2_find_entry
  mailmap: update entry for Ethan Carter Edwards
  mm: zswap: move allocations during CPU init outside the lock
  mm: khugepaged: fix call hpage_collapse_scan_file() for anonymous vma
  mm: shmem: use signed int for version handling in casefold option
  alloc_tag: skip pgalloc_tag_swap if profiling is disabled
  mm: page_alloc: fix missed updates of lowmem_reserve in adjust_managed_page_count
2025-01-16 21:24:34 -08:00
Linus Torvalds
9ca2729666 two client fixes, both for stable
-----BEGIN PGP SIGNATURE-----
 
 iQGzBAABCgAdFiEE6fsu8pdIjtWE/DpLiiy9cAdyT1EFAmeIk7cACgkQiiy9cAdy
 T1F1IAwAuTZGuIQOnTYV3VzUamT+yzmzbEnxwyMJIS/H/J9F1ZuSobEHepxSCPiX
 dvPUH7ud/AxSfsosyG64mzhm3vvcjN6TO+NDEZhHYWKMSlXvsCjKYh81DnfGbOyF
 lyOFDLoxc8c0Z5WxNTD41Zeic6/WiA9KFipAFC3k6+QUWSbR0KNqZzOWLdejsBjo
 YgzigPdsQXl3SSwvl5+2xhEAJ7xcg8DocnvH87+jGVyhqoFoA2JYls7OUvvdkLpQ
 V7auH7AlDBGFhIk8QNuniUmDw6XXrd3FLJKiawsZk8xLbkoAUUSd6ofLNZszg6E3
 pjoPM/oJe2V5qg/AKXXbjkhUjgn3uqpFIPZNZn0ZrnPBO3XXzMB2mr5bmqZyVN4e
 mYvTiecr64ooe9j4W+cHANFpecy4F7RDfsQK2zi5KY6c8O+30dJ7x1JzdvkS7glv
 y1JC7uj22Gl6UNoBpx2QmJNeycmLuOPfLU8NA2cCH/ZRl+rTEYVNyviLqtIOZPVG
 2gyi/erR
 =RwwN
 -----END PGP SIGNATURE-----

Merge tag '6.13-rc7-SMB3-client-fixes' of git://git.samba.org/sfrench/cifs-2.6

Pull smb client fixes from Steve French:

 - fix double free when reconnect racing with closing session

 - fix SMB1 reconnect with password rotation

* tag '6.13-rc7-SMB3-client-fixes' of git://git.samba.org/sfrench/cifs-2.6:
  smb: client: fix double free of TCP_Server_Info::hostname
  cifs: support reconnect with alternate password for SMB1
2025-01-16 21:18:12 -08:00
Linus Torvalds
9bffa1ad25 drm fixes for 6.13-rc8
kunit:
 - Fix W=1 build for kunit tests.
 
 bridge:
 - Handle YCbCr420 better in bridge code, with tests.
 - itee-it6263 error handling fix.
 
 amdgpu:
 - SMU 13 fix
 - DP MST fixes
 - DCN 3.5 fix
 - PSR fixes
 - eDP fix
 - VRR fix
 - Enforce isolation fixes
 - GFX 12 fix
 - PSP 14.x fix
 
 xe:
 - Add steering info support for GuC register lists
 - Add means to wait for reset and synchronous reset
 - Make changing ccs_mode a synchronous action
 - Add missing mux registers
 - Mark ComputeCS read mode as UC on iGPU, unblocking ULLS on iGPU
 
 i915:
 - Relax clear color alignment to 64 bytes [fb]
 
 v3d:
 - Fix warn when unloading v3d.
 
 nouveau:
 - Fix cross-device fence handling in nouveau.
 - Fix backlight regression for macbooks 5,1
 
 vmwgfx:
 - Fix BO reservation handling in vmwgfx.
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEEEKbZHaGwW9KfbeusDHTzWXnEhr4FAmeJxdoACgkQDHTzWXnE
 hr7KgQ/8CFZKVze9cDoWGrLKLoa9/9AWLCf3uopkEF7pxPwJucEaFcPDRpFicCVI
 LWTfNiTZZ2IFqO0aPRbf6olatSis7qsNbVYhbXji5DRnzsGNOjOE1jP8yTnBWEuv
 ndoTXwPWXzVvwHUoKaNwAbvBGM3ZRZoltsPPB+oTL0Br2DEQBSKJUhiZqf2aLAji
 MnZ1SLIO3B80asp38Kj/euSICu4Lm8dWjlKHfPCEat3zSNG6Hn0BwkKOfMfS8ru/
 SlO47h5f7y5vjooKCVEKx+vLNv7z7VtnHzEYA/lSybyV4rGsVAoMYewzoWP9tXdI
 0fFSNdYL9zWoEiPK2LjPM5XbG4NvpOyzRe8xBQBXyW8IdpIpc6eZ4Keij4RdorM9
 JuqIyp4JUBE0p1stRdVfnKoQPMhW687JjJKiK1giNIhTEEUjo5WxNgT8jjdUysjI
 XK8CvtIwrjmXpxYq2JqBtVIyXK0XcLo9ruCCwD9k/Jz9UMGMRJh2JdHg+lIPfTkM
 zDYDSMchVWjUTCTB8Heyxig3ECote4/Mf/hTNwVOOMncTjhreJw5grCbPxLJFocg
 qyRl+jfMyhiKnf0OZbV3RPODKuH9sNPfib7mHQMjYHTst6xwr29fOhdiV40Nu9oO
 NkxCAqCaCl1edKAbZPf0b5tftVaQxZ36uZ29AfQ+h6m5mrxcOiU=
 =rW31
 -----END PGP SIGNATURE-----

Merge tag 'drm-fixes-2025-01-17' of https://gitlab.freedesktop.org/drm/kernel

Pull drm fixes from Dave Airlie:
 "Final(?) set of fixes for 6.13, I think the holidays finally caught up
  with everyone, the misc changes are 2 weeks worth, otherwise amdgpu
  and xe are most of it. The largest pieces is a new test so I'm not too
  worried about that.

  kunit:
   - Fix W=1 build for kunit tests

  bridge:
   - Handle YCbCr420 better in bridge code, with tests
   - itee-it6263 error handling fix

  amdgpu:
   - SMU 13 fix
   - DP MST fixes
   - DCN 3.5 fix
   - PSR fixes
   - eDP fix
   - VRR fix
   - Enforce isolation fixes
   - GFX 12 fix
   - PSP 14.x fix

  xe:
   - Add steering info support for GuC register lists
   - Add means to wait for reset and synchronous reset
   - Make changing ccs_mode a synchronous action
   - Add missing mux registers
   - Mark ComputeCS read mode as UC on iGPU, unblocking ULLS on iGPU

  i915:
   - Relax clear color alignment to 64 bytes [fb]

  v3d:
   - Fix warn when unloading v3d

  nouveau:
   - Fix cross-device fence handling in nouveau
   - Fix backlight regression for macbooks 5,1

  vmwgfx:
   - Fix BO reservation handling in vmwgfx"

* tag 'drm-fixes-2025-01-17' of https://gitlab.freedesktop.org/drm/kernel: (33 commits)
  drm/xe: Mark ComputeCS read mode as UC on iGPU
  drm/xe/oa: Add missing VISACTL mux registers
  drm/xe: make change ccs_mode a synchronous action
  drm/xe: introduce xe_gt_reset and xe_gt_wait_for_reset
  drm/xe/guc: Adding steering info support for GuC register lists
  drm/bridge: ite-it6263: Prevent error pointer dereference in probe()
  drm/v3d: Ensure job pointer is set to NULL after job completion
  drm/vmwgfx: Add new keep_resv BO param
  drm/vmwgfx: Remove busy_places
  drm/vmwgfx: Unreserve BO on error
  drm/amdgpu: fix fw attestation for MP0_14_0_{2/3}
  drm/amdgpu: always sync the GFX pipe on ctx switch
  drm/amdgpu: disable gfxoff with the compute workload on gfx12
  drm/amdgpu: Fix Circular Locking Dependency in AMDGPU GFX Isolation
  drm/i915/fb: Relax clear color alignment to 64 bytes
  drm/amd/display: Disable replay and psr while VRR is enabled
  drm/amd/display: Fix PSR-SU not support but still call the amdgpu_dm_psr_enable
  nouveau/fence: handle cross device fences properly
  drm/tests: connector: Add ycbcr_420_allowed tests
  drm/connector: hdmi: Validate supported_formats matches ycbcr_420_allowed
  ...
2025-01-16 19:49:26 -08:00
Linus Torvalds
a634dda261 io_uring-6.13-20250116
-----BEGIN PGP SIGNATURE-----
 
 iQJEBAABCAAuFiEEwPw5LcreJtl1+l5K99NY+ylx4KYFAmeJnF4QHGF4Ym9lQGtl
 cm5lbC5kawAKCRD301j7KXHgptMlD/0QfIv0xMET+tYYbS88RSsPyXLC8/OLJHfZ
 QZ5d0Q7F6qEKaCgtj0ttqDiUKsKJSyDRs93sDR7IzAdf8i79kIlQh8kqpD6PgPHu
 pKxBvU+a1x7EIafZw3jYo6yE1r+W7QgxzJY8Y/DxN81P4ahqwE2f019HuJ3uFj9j
 AzUXz/upVTMhq2i5DODS6FhyeF66ROsEvJxuCtdkpXS/9tptCn1wiGYQ5ES8s6CJ
 UnwpNdg3rbpo8/moglqJeKbugd/0BH5u3kjntXnSmBEYXojxz28Fj1wg5DfpNCF6
 4o8sxlzlH5EKgTGjy5JtRZdYH4VZ8q09rymot6vMPwJu+i7Xgz+Hn+YQyRWkFQB+
 y6oqad3DP0E1+k7chmWx8CMBiK4pABevSwzxrJGlM4RxDuLA7B8YTOew6G7NDtYL
 AbPabqDcne+UgegXZ+rMUB7u7B0TGNdlm4P2kDjxl8dKKPNWmvyvy0LNMVjLUfln
 VNHNkaAkuURs6QY2CYfWSFkbHGyjWJVi1wrnePSArWmGSQjYMGg2QPP4YIHH4sqP
 szosm8Orl68Gw73OjHnndGOMgYlZB+lTysZHMzIUpWpxwaWH5OpwR3QEbJE29mzZ
 8At74cCVxEpH1rno+E7uWuwYyoHJnOorz/SEl4E9n65MsS5IgjPDHYyvQ6i48Nqr
 klswSIPHPA==
 =c+iG
 -----END PGP SIGNATURE-----

Merge tag 'io_uring-6.13-20250116' of git://git.kernel.dk/linux

Pull io_uring fixes from Jens Axboe:
 "One fix for the error handling in buffer cloning, and one fix for the
  ring resizing.

  Two minor followups for the latter as well.

  Both of these issues only affect 6.13, so not marked for stable"

* tag 'io_uring-6.13-20250116' of git://git.kernel.dk/linux:
  io_uring/register: cache old SQ/CQ head reading for copies
  io_uring/register: document io_register_resize_rings() shared mem usage
  io_uring/register: use stable SQ/CQ ring data during resize
  io_uring/rsrc: fixup io_clone_buffers() error handling
2025-01-16 17:02:28 -08:00
Dave Airlie
9b1c673a16 Driver Changes:
- Add steering info support for GuC register lists (Jesus Narvaez)
 - Add means to wait for reset and synchronous reset (Maciej)
 - Make changing ccs_mode a synchronous action (Maciej)
 - Add missing mux registers (Ashutosh)
 - Mark ComputeCS read mode as UC on iGPU, unblocking ULLS on iGPU (Matt Brost)
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYKAB0WIQRskUM7w1oG5rx2IZO4FpNVCsYGvwUCZ4lk5wAKCRC4FpNVCsYG
 v9MbAQC4nZSeGqn4h82TEnaVk7kMRaKQQki64HmpXba3TwhcwgEAwNLRTj5ST5Md
 qbJURxPSjExGvBMNAyrPN/97l+1Buww=
 =RZDr
 -----END PGP SIGNATURE-----

Merge tag 'drm-xe-fixes-2025-01-16' of https://gitlab.freedesktop.org/drm/xe/kernel into drm-fixes

Driver Changes:
- Add steering info support for GuC register lists (Jesus Narvaez)
- Add means to wait for reset and synchronous reset (Maciej)
- Make changing ccs_mode a synchronous action (Maciej)
- Add missing mux registers (Ashutosh)
- Mark ComputeCS read mode as UC on iGPU, unblocking ULLS on iGPU (Matt Brost)

Signed-off-by: Dave Airlie <airlied@redhat.com>

From: Thomas Hellstrom <thomas.hellstrom@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/Z4ll3F1anLEwCvrf@fedora
2025-01-17 10:38:45 +10:00
Linus Torvalds
f692a6c690 Tracing fixes for 6.13:
- Fix a regression in the irqsoff and wakeup latency tracing
 
   The function graph tracer infrastructure has become generic so that
   fprobes and BPF can be based on it. As it use to only handle function
   graph tracing, it would always calculate the time the function entered
   so that it could then calculate the time it exits and give the length of
   time the function executed for. But this is not needed for the other
   users (fprobes and BPF) and reading the clock adds a non-negligible
   overhead, so the calculation was moved into the function graph tracer
   logic.
 
   But the irqsoff and wakeup latency tracers, when the "display-graph"
   option was set, would use the function graph tracer to calculate the
   times of functions during the latency. The movement of the calltime
   calculation made the value zero for these tracers, and the output
   no longer showed the length of time of each tracer, but instead the
   absolute timestamp of when the function returned (rettime - calltime
   where calltime is now zero).
 
   Have the irqsoff and wakeup latency tracers also do the calltime
   calculation as the function graph tracer does and report the proper
   length of the function timings.
 
 - Update the tracing display to reflect the new preempt lazy model
 
   When the system is configured with preempt lazy, the output of the
   trace data would state "unknown" for the current preemption model.
   Because the lazy preemption model was just added, make it known
   to the tracing subsystem too. This is just a one line change.
 
 - Document multiple function graph having slightly different timings
 
   Now that function graph tracer infrastructure is separate, this also
   allows the function graph tracer to run in multiple instances (it wasn't
   able to do so before). If two instances ran the function graph tracer and
   traced the same functions, the timings for them will be slightly
   different because each does their own timings and collects the timestamps
   differently. Document this to not have people be confused by it.
 -----BEGIN PGP SIGNATURE-----
 
 iIoEABYIADIWIQRRSw7ePDh/lE+zeZMp5XQQmuv6qgUCZ4kcvhQccm9zdGVkdEBn
 b29kbWlzLm9yZwAKCRAp5XQQmuv6qnaPAPwPrZraRcXCF2SvWfF6aJ/hSVzy7XgM
 mj7FDlkw57QlVgD/cy/g8czLQ38hAqNULP+tvPc6mPSHptV8yOTKaWuVFgg=
 =N7/a
 -----END PGP SIGNATURE-----

Merge tag 'trace-v6.13-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace

Pull tracing fixes from Steven Rostedt:

 - Fix a regression in the irqsoff and wakeup latency tracing

   The function graph tracer infrastructure has become generic so that
   fprobes and BPF can be based on it. As it use to only handle function
   graph tracing, it would always calculate the time the function
   entered so that it could then calculate the time it exits and give
   the length of time the function executed for. But this is not needed
   for the other users (fprobes and BPF) and reading the clock adds a
   non-negligible overhead, so the calculation was moved into the
   function graph tracer logic.

   But the irqsoff and wakeup latency tracers, when the "display-graph"
   option was set, would use the function graph tracer to calculate the
   times of functions during the latency. The movement of the calltime
   calculation made the value zero for these tracers, and the output no
   longer showed the length of time of each tracer, but instead the
   absolute timestamp of when the function returned (rettime - calltime
   where calltime is now zero).

   Have the irqsoff and wakeup latency tracers also do the calltime
   calculation as the function graph tracer does and report the proper
   length of the function timings.

 - Update the tracing display to reflect the new preempt lazy model

   When the system is configured with preempt lazy, the output of the
   trace data would state "unknown" for the current preemption model.
   Because the lazy preemption model was just added, make it known to
   the tracing subsystem too. This is just a one line change.

 - Document multiple function graph having slightly different timings

   Now that function graph tracer infrastructure is separate, this also
   allows the function graph tracer to run in multiple instances (it
   wasn't able to do so before). If two instances ran the function graph
   tracer and traced the same functions, the timings for them will be
   slightly different because each does their own timings and collects
   the timestamps differently. Document this to not have people be
   confused by it.

* tag 'trace-v6.13-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace:
  ftrace: Document that multiple function_graph tracing may have different times
  tracing: Print lazy preemption model
  tracing: Fix irqsoff and wakeup latency tracers when using function graph
2025-01-16 16:19:05 -08:00
Dave Airlie
cfaf51adaf Merge tag 'drm-intel-fixes-2025-01-15' of https://gitlab.freedesktop.org/drm/i915/kernel into drm-fixes
- Relax clear color alignment to 64 bytes [fb] (Ville Syrjälä)

Signed-off-by: Dave Airlie <airlied@redhat.com>
From: Tvrtko Ursulin <tursulin@igalia.com>
Link: https://patchwork.freedesktop.org/patch/msgid/Z4fdIVf68qsqIpiN@linux
2025-01-17 08:48:12 +10:00
Matthew Brost
b1231ff7ea drm/xe: Mark ComputeCS read mode as UC on iGPU
RING_CMD_CCTL read index should be UC on iGPU parts due to L3 caching
structure. Having this as WB blocks ULLS from being enabled. Change to
UC to unblock ULLS on iGPU.

v2:
 - Drop internal communications commnet, bspec is updated

Cc: Balasubramani Vivekanandan <balasubramani.vivekanandan@intel.com>
Cc: Michal Mrozek <michal.mrozek@intel.com>
Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
Cc: José Roberto de Souza <jose.souza@intel.com>
Cc: stable@vger.kernel.org
Fixes: 328e089bfb ("drm/xe: Leverage ComputeCS read L3 caching")
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Acked-by: Michal Mrozek <michal.mrozek@intel.com>
Reviewed-by: Stuart Summers <stuart.summers@intel.com>
Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250114002507.114087-1-matthew.brost@intel.com
(cherry picked from commit 758debf35b)
Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
2025-01-16 20:03:11 +01:00
Linus Torvalds
ce69b40190 Current release - regressions:
- core: avoid CFI problems with sock priv helpers
 
   - xsk: bring back busy polling support
 
   - netpoll: ensure skb_pool list is always initialized
 
 Current release - new code bugs:
 
   - core: make page_pool_ref_netmem work with net iovs
 
   - ipv4: route: fix drop reason being overridden in ip_route_input_slow
 
   - udp: make rehash4 independent in udp_lib_rehash()
 
 Previous releases - regressions:
 
   - bpf: fix bpf_sk_select_reuseport() memory leak
 
   - openvswitch: fix lockup on tx to unregistering netdev with carrier
 
   - mptcp: be sure to send ack when mptcp-level window re-opens
 
   - eth: bnxt: always recalculate features after XDP clearing, fix null-deref
 
   - eth: mlx5: fix sub-function add port error handling
 
   - eth: fec: handle page_pool_dev_alloc_pages error
 
 Previous releases - always broken:
 
   - vsock: some fixes due to transport de-assignment
 
   - eth: ice: fix E825 initialization
 
   - eth: mlx5e: fix inversion dependency warning while enabling IPsec tunnel
 
   - eth: gtp: destroy device along with udp socket's netns dismantle.
 
   - eth: xilinx: axienet: Fix IRQ coalescing packet count overflow
 
 Signed-off-by: Paolo Abeni <pabeni@redhat.com>
 -----BEGIN PGP SIGNATURE-----
 
 iQJGBAABCAAwFiEEg1AjqC77wbdLX2LbKSR5jcyPE6QFAmeJGOISHHBhYmVuaUBy
 ZWRoYXQuY29tAAoJECkkeY3MjxOkfLwP/1XaeyEtSifDiF+bj7f3M6gd8RC2wkNq
 8DvHadl+uPx1RWv0F2UH9fsVz17A3Gg3oF2Agl4tMP5p9F0e489pNjm2QXOl1zac
 hpJdV0VdNJHKEfWhKODRfLap6fNtPoEQP5r3scbFYuzkdMw6sYZujdQUmFNghPYe
 Y6GKZIrQ96vYLpSTrLCAQt/2EEt608b3ESFFhqTkvB8voB2cODNxxBoTJ5K+jMa0
 +fVW46siGKc8HSaUJCWS5YkAW/Tu3AXJmYgKGQg9PaErVclwImsQFXggIki80P7W
 747Gkuc3kZm3Mt91d6kK1s5Sxr/FAaaJlOOE2iHpZld6cN+Y6niJ+knFdkaX5rCE
 T/aLq8cdegwSdct6CIJ7YZp3v1AVv21erWf7OpbY9KGTWPV9d2yzh3fYin87tAzs
 YYo0H1OqqbxpnKThgGREpu+LqEkCbMzsKmwn/5wTAZZl28ySZWZin2ukzTMRqla0
 Y8JJvBYvcHn/ekb4gJNaDhJF7ZBuLjrXlG1SXAyO+GS4TwToqrK/luPRf0tkbI/Z
 QVNBNCukdRTy/IeZQJsc1gtE1tlQmRXNlTbAILPIkWWdxgjdpd/wBbP8/qG9184l
 Ut4gu7AVF+LLH5nhgRVHAcfrO3i/kbRFC3ErQw06YLyqLInyss8GPULP7tWeFfE3
 iM/DsTHjjr04
 =EtnO
 -----END PGP SIGNATURE-----

Merge tag 'net-6.13-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net

Pull networking fixes from Paolo Abeni:
 "Notably this includes fixes for a few regressions spotted very
  recently. No known outstanding ones.

  Current release - regressions:

   - core: avoid CFI problems with sock priv helpers

   - xsk: bring back busy polling support

   - netpoll: ensure skb_pool list is always initialized

  Current release - new code bugs:

   - core: make page_pool_ref_netmem work with net iovs

   - ipv4: route: fix drop reason being overridden in
     ip_route_input_slow

   - udp: make rehash4 independent in udp_lib_rehash()

  Previous releases - regressions:

   - bpf: fix bpf_sk_select_reuseport() memory leak

   - openvswitch: fix lockup on tx to unregistering netdev with carrier

   - mptcp: be sure to send ack when mptcp-level window re-opens

   - eth:
      - bnxt: always recalculate features after XDP clearing, fix
        null-deref
      - mlx5: fix sub-function add port error handling
      - fec: handle page_pool_dev_alloc_pages error

  Previous releases - always broken:

   - vsock: some fixes due to transport de-assignment

   - eth:
      - ice: fix E825 initialization
      - mlx5e: fix inversion dependency warning while enabling IPsec
        tunnel
      - gtp: destroy device along with udp socket's netns dismantle.
      - xilinx: axienet: Fix IRQ coalescing packet count overflow"

* tag 'net-6.13-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (44 commits)
  netdev: avoid CFI problems with sock priv helpers
  net/mlx5e: Always start IPsec sequence number from 1
  net/mlx5e: Rely on reqid in IPsec tunnel mode
  net/mlx5e: Fix inversion dependency warning while enabling IPsec tunnel
  net/mlx5: Clear port select structure when fail to create
  net/mlx5: SF, Fix add port error handling
  net/mlx5: Fix a lockdep warning as part of the write combining test
  net/mlx5: Fix RDMA TX steering prio
  net: make page_pool_ref_netmem work with net iovs
  net: ethernet: xgbe: re-add aneg to supported features in PHY quirks
  net: pcs: xpcs: actively unset DW_VR_MII_DIG_CTRL1_2G5_EN for 1G SGMII
  net: pcs: xpcs: fix DW_VR_MII_DIG_CTRL1_2G5_EN bit being set for 1G SGMII w/o inband
  selftests: net: Adapt ethtool mq tests to fix in qdisc graft
  net: fec: handle page_pool_dev_alloc_pages error
  net: netpoll: ensure skb_pool list is always initialized
  net: xilinx: axienet: Fix IRQ coalescing packet count overflow
  nfp: bpf: prevent integer overflow in nfp_bpf_event_output()
  selftests: mptcp: avoid spurious errors on disconnect
  mptcp: fix spurious wake-up on under memory pressure
  mptcp: be sure to send ack when mptcp-level window re-opens
  ...
2025-01-16 09:09:44 -08:00
Linus Torvalds
6b4ccf11fa Power management fixes for final 6.13
Update the documentation of cpuidle governors that does not match the
 code any more after previous functional changes (Rafael Wysocki) and
 fix up the cpufreq Kconfig file broken inadvertently by a previous
 update (Viresh Kumar).
 -----BEGIN PGP SIGNATURE-----
 
 iQJGBAABCAAwFiEE4fcc61cGeeHD/fCwgsRv/nhiVHEFAmeJGhcSHHJqd0Byand5
 c29ja2kubmV0AAoJEILEb/54YlRxOOsP/0ApuqVBJHC4ib6Ay+Ja50pq0Ud2lhWO
 9pUGB7d3/MHAoViuAeh0Mjx4SKGQ3zCNnlAsqjMWqzwITPFPP33qbOoaDWscE2r4
 2ePcE6hjcZ9cKi/0NQ5lssWdOgpGTV4P9cU0VqDyVc61SRrcY5n1fiFmsglaMDX8
 pS0lySfykQ4zI2m+mkLLOqAUdbPZSFeWZrDgW3zwv3vcncXXudHRcKkPHFJkyhIF
 W/s3MQiqY+Bs16hT1YEMeVCSrLCTWLB2W11/mgjz8tnvGY4R5jk/DPXtVNcr/0xd
 aHoaYJbpBx2Y72KmEePN2aFFQPHC+2mIgqVSrBvxyn5ADqKLfIYxPC6LtX9HMDts
 YMkQycsQdRan9mpxE7wEqTKzigQJHTJVirqrxW9qrFTFbnelpe1AtgA3LJaP1mjP
 AHkASzmVVRdKN8AERrWIpVGy/qVsSIox9vaUfuwHJJyPQpbxrjcT11sT9VnulliD
 m8y9E3BORpwR5A3n/JkyM6c6JX7UCHgMMCCT3n88iDMRmr/0GfSUth27UH3dLaDj
 uaqXBgHVdpu98nII396K/FLtQ8dcr9tgJQaK5qdubRldVVeDvqmlpVWH+npVP2+Q
 wlOpZkjBNmKVynziaymkgnUnzoWLGv/i57Mx6T1hgwJN6pnrur3qCGSNi73sMEwr
 NmmvebjpGJQO
 =zMmu
 -----END PGP SIGNATURE-----

Merge tag 'pm-6.13-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm

Pull power management fixes from Rafael Wysocki:
 "Update the documentation of cpuidle governors that does not match the
  code any more after previous functional changes (Rafael Wysocki) and
  fix up the cpufreq Kconfig file broken inadvertently by a previous
  update (Viresh Kumar)"

* tag 'pm-6.13-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
  cpufreq: Move endif to the end of Kconfig file
  cpuidle: teo: Update documentation after previous changes
  cpuidle: menu: Update documentation after previous changes
2025-01-16 09:04:10 -08:00
Linus Torvalds
5d5c478759 ACPI fix for final 6.13
Prevent acpi_video_device_EDID() from returning a pointer to a memory
 region that should not be passed to kfree() which causes one of its
 users to crash randomly on attempts to free it (Chris Bainbridge).
 -----BEGIN PGP SIGNATURE-----
 
 iQJGBAABCAAwFiEE4fcc61cGeeHD/fCwgsRv/nhiVHEFAmeJF6YSHHJqd0Byand5
 c29ja2kubmV0AAoJEILEb/54YlRxqbgQAIdwiU/kLnvhIxfgOpaqMtAWxlpwmMyU
 qXmBNrvrW0CueMy2lCCKQZbVcyxxzvZigV8eW1rdmx+ISfI3fPTFeroqK+XHMl6z
 +izohhWVKj3hCormkefOLuqh1TnJsM0OVYVVJrQZ4CrewunCzG7mR72qaJnk+98x
 LQuSOCIbAe7AChAEW1Ydg1I2oWcwz4HUdixkJse5F3h8M51ZhwyoUZsRvk2fIIVA
 pfcZw2yz9bidCzUuhP54pfVwVItngCe9AwUu7/gDUXCAtxyMQrMn5ppDSmYhCHxc
 BSACmcDdJzOOcwoBRbsaYJrc33zRXH8NmXK3ekZLb3FgozDmuT01lvsn+tGay/zR
 Ektk0d0uSLLDfaXdO4IycuEtngINkO7R43J4TiT5QufN+HLJz3Ru+0/cGe3YkSae
 WLu+N3ZDnpA9CDT4A/eEL6taabZfgN2FIKNq+OuKdhb9sogrcrN2U6R5RvIWZipN
 +Xgwg1euRrmAfjDZngvpDRVMTYywl8PYoGdoYKMDHlLU6ftzK+5d59juBXVsoze8
 8IUUgszkNcqunMj+V3GlnRmu6LlTpRQinArFU+DKf3/YQvqr+l9V8IDjiiFiQh6N
 P2BPUlKTl3LgiY2vNvztxQK504cim78Xwe2U+rwngJS6y2SiGldkwwxSzILAsVA2
 YIbY9jfQeTlF
 =7/13
 -----END PGP SIGNATURE-----

Merge tag 'acpi-6.13-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm

Pull ACPI fix from Rafael Wysocki:
 "Prevent acpi_video_device_EDID() from returning a pointer to a memory
  region that should not be passed to kfree() which causes one of its
  users to crash randomly on attempts to free it (Chris Bainbridge)"

* tag 'acpi-6.13-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
  ACPI: video: Fix random crashes due to bad kfree()
2025-01-16 09:02:10 -08:00
Linus Torvalds
ed8fd8d5dd for-6.13-rc7-tag
-----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEE8rQSAMVO+zA4DBdWxWXV+ddtWDsFAmeI5MAACgkQxWXV+ddt
 WDtMIg//WwV2p/gQmFMfFu7txZQQrt6m6nMuq/2y0qAA+d2e9oXFr3jNLlho0RwL
 hvSM5IEsxzL1ujh67tqxUBojvRjq+CRwiI6fxFO13dLIMrlKoiINtuOEiIhgZr/Q
 K+weXC4yHCFSB4q82dcr5i++/GVdY8wBoLHGe4zdJ0TVtM0xHrYVQ/4PXAGMX97V
 Bmv038aAMpRJTxJ6rcObloNxOb+WoyM0DIRbJ2UWVmy+bOLHMEa/jSkkQDWwcuPV
 UJjQgXz21FXiJqhtcndM58mEsKfe1WV9gG3lihedyb/xNeCPggqkDbfSzZU55Lkm
 vRXSgklbkifK6RTqrozg7e38MV+rZMwwNzqysMxNtlvrC5R+0A6of4t2Ny1vaeGG
 flcVncbLi/ip9J4fMLUpVS0fbAZjQgIJca6fbgM7Ajdzvm9rIDGpR078GW1zDlg2
 20f7isQWqSkj3i9kPElGbDT65RvcxR5EpJQfwr78+bsgSsyBGwghhAJ5F7vqZh5L
 wdmJOYxkwq5r1YxeuEQPVv404WPrwZE2Gyk6TGXkzpA+l6isCViY3NTyQPBOMH9y
 2GEelW61QSKtc5BPp1h85Aw74wtSCpGkCY+t/v03oQ6PBssWIsVcXZ7NnjJh9+72
 U+JY0H7UPyyczEzicEGlwWYBWs2/KeBuCrladNCkv3S5TWgB5yQ=
 =sF6v
 -----END PGP SIGNATURE-----

Merge tag 'for-6.13-rc7-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux

Pull btrfs fix from David Sterba:

 - handle d_path() errors when canonicalizing device mapper paths during
   device scan

* tag 'for-6.13-rc7-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux:
  btrfs: add the missing error handling inside get_canonical_dev_path
2025-01-16 08:54:33 -08:00
Juergen Gross
ae02ae16b7 x86/asm: Make serialize() always_inline
In order to allow serialize() to be used from noinstr code, make it
__always_inline.

Fixes: 0ef8047b73 ("x86/static-call: provide a way to do very early static-call updates")
Closes: https://lore.kernel.org/oe-kbuild-all/202412181756.aJvzih2K-lkp@intel.com/
Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Juergen Gross <jgross@suse.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Link: https://lore.kernel.org/r/20241218100918.22167-1-jgross@suse.com
2025-01-16 16:51:17 +01:00
Xiaolei Wang
726efa92e0 pmdomain: imx8mp-blk-ctrl: add missing loop break condition
Currently imx8mp_blk_ctrl_remove() will continue the for loop
until an out-of-bounds exception occurs.

pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
pc : dev_pm_domain_detach+0x8/0x48
lr : imx8mp_blk_ctrl_shutdown+0x58/0x90
sp : ffffffc084f8bbf0
x29: ffffffc084f8bbf0 x28: ffffff80daf32ac0 x27: 0000000000000000
x26: ffffffc081658d78 x25: 0000000000000001 x24: ffffffc08201b028
x23: ffffff80d0db9490 x22: ffffffc082340a78 x21: 00000000000005b0
x20: ffffff80d19bc180 x19: 000000000000000a x18: ffffffffffffffff
x17: ffffffc080a39e08 x16: ffffffc080a39c98 x15: 4f435f464f006c72
x14: 0000000000000004 x13: ffffff80d0172110 x12: 0000000000000000
x11: ffffff80d0537740 x10: ffffff80d05376c0 x9 : ffffffc0808ed2d8
x8 : ffffffc084f8bab0 x7 : 0000000000000000 x6 : 0000000000000000
x5 : ffffff80d19b9420 x4 : fffffffe03466e60 x3 : 0000000080800077
x2 : 0000000000000000 x1 : 0000000000000001 x0 : 0000000000000000
Call trace:
 dev_pm_domain_detach+0x8/0x48
 platform_shutdown+0x2c/0x48
 device_shutdown+0x158/0x268
 kernel_restart_prepare+0x40/0x58
 kernel_kexec+0x58/0xe8
 __do_sys_reboot+0x198/0x258
 __arm64_sys_reboot+0x2c/0x40
 invoke_syscall+0x5c/0x138
 el0_svc_common.constprop.0+0x48/0xf0
 do_el0_svc+0x24/0x38
 el0_svc+0x38/0xc8
 el0t_64_sync_handler+0x120/0x130
 el0t_64_sync+0x190/0x198
Code: 8128c2d0 ffffffc0 aa1e03e9 d503201f

Fixes: 556f5cf956 ("soc: imx: add i.MX8MP HSIO blk-ctrl")
Cc: stable@vger.kernel.org
Signed-off-by: Xiaolei Wang <xiaolei.wang@windriver.com>
Reviewed-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Fabio Estevam <festevam@gmail.com>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Link: https://lore.kernel.org/r/20250115014118.4086729-1-xiaolei.wang@windriver.com
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
2025-01-16 16:10:32 +01:00
Rafael J. Wysocki
3744b08449 Merge branch 'pm-cpufreq'
Merge a cpufreq fix for 6.13:

 - Fix cpufreq Kconfig breakage after previous changes (Viresh Kumar).

* pm-cpufreq:
  cpufreq: Move endif to the end of Kconfig file
2025-01-16 15:36:41 +01:00
Jakub Kicinski
a50da36562 netdev: avoid CFI problems with sock priv helpers
Li Li reports that casting away callback type may cause issues
for CFI. Let's generate a small wrapper for each callback,
to make sure compiler sees the anticipated types.

Reported-by: Li Li <dualli@chromium.org>
Link: https://lore.kernel.org/CANBPYPjQVqmzZ4J=rVQX87a9iuwmaetULwbK_5_3YWk2eGzkaA@mail.gmail.com
Fixes: 170aafe35c ("netdev: support binding dma-buf to netdevice")
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Reviewed-by: Mina Almasry <almasrymina@google.com>
Link: https://patch.msgid.link/20250115161436.648646-1-kuba@kernel.org
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2025-01-16 13:15:40 +01:00
Koichiro Den
2f8dea1692 hrtimers: Handle CPU state correctly on hotplug
Consider a scenario where a CPU transitions from CPUHP_ONLINE to halfway
through a CPU hotunplug down to CPUHP_HRTIMERS_PREPARE, and then back to
CPUHP_ONLINE:

Since hrtimers_prepare_cpu() does not run, cpu_base.hres_active remains set
to 1 throughout. However, during a CPU unplug operation, the tick and the
clockevents are shut down at CPUHP_AP_TICK_DYING. On return to the online
state, for instance CFS incorrectly assumes that the hrtick is already
active, and the chance of the clockevent device to transition to oneshot
mode is also lost forever for the CPU, unless it goes back to a lower state
than CPUHP_HRTIMERS_PREPARE once.

This round-trip reveals another issue; cpu_base.online is not set to 1
after the transition, which appears as a WARN_ON_ONCE in enqueue_hrtimer().

Aside of that, the bulk of the per CPU state is not reset either, which
means there are dangling pointers in the worst case.

Address this by adding a corresponding startup() callback, which resets the
stale per CPU state and sets the online flag.

[ tglx: Make the new callback unconditionally available, remove the online
  	modification in the prepare() callback and clear the remaining
  	state in the starting callback instead of the prepare callback ]

Fixes: 5c0930ccaa ("hrtimers: Push pending hrtimers away from outgoing CPU earlier")
Signed-off-by: Koichiro Den <koichiro.den@canonical.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/all/20241220134421.3809834-1-koichiro.den@canonical.com
2025-01-16 13:06:14 +01:00
Frederic Weisbecker
922efd298b timers/migration: Annotate accesses to ignore flag
The group's ignore flag is:

_ read under the group's lock (idle entry, remote expiry)
_ turned on/off under the group's lock (idle entry, remote expiry)
_ turned on locklessly on idle exit

When idle entry or remote expiry clear the "ignore" flag of a group, the
operation must be synchronized against other concurrent idle entry or
remote expiry to make sure the related group timer is never missed. To
enforce this synchronization, both "ignore" clear and read are
performed under the group lock.

On the contrary, whether idle entry or remote expiry manage to observe
the "ignore" flag turned on by a CPU exiting idle is a matter of
optimization. If that flag set is missed or cleared concurrently, the
worst outcome is a migrator wasting time remotely handling a "ghost"
timer. This is why the ignore flag can be set locklessly.

Unfortunately, the related lockless accesses are bare and miss
appropriate annotations. KCSAN rightfully complains:

		 BUG: KCSAN: data-race in __tmigr_cpu_activate / print_report

		 write to 0xffff88842fc28004 of 1 bytes by task 0 on cpu 0:
		 __tmigr_cpu_activate
		 tmigr_cpu_activate
		 timer_clear_idle
		 tick_nohz_restart_sched_tick
		 tick_nohz_idle_exit
		 do_idle
		 cpu_startup_entry
		 kernel_init
		 do_initcalls
		 clear_bss
		 reserve_bios_regions
		 common_startup_64

		 read to 0xffff88842fc28004 of 1 bytes by task 0 on cpu 1:
		 print_report
		 kcsan_report_known_origin
		 kcsan_setup_watchpoint
		 tmigr_next_groupevt
		 tmigr_update_events
		 tmigr_inactive_up
		 __walk_groups+0x50/0x77
		 walk_groups
		 __tmigr_cpu_deactivate
		 tmigr_cpu_deactivate
		 __get_next_timer_interrupt
		 timer_base_try_to_set_idle
		 tick_nohz_stop_tick
		 tick_nohz_idle_stop_tick
		 cpuidle_idle_call
		 do_idle

Although the relevant accesses could be marked as data_race(), the
"ignore" flag being read several times within the same
tmigr_update_events() function is confusing and error prone. Prefer
reading it once in that function and make use of similar/paired accesses
elsewhere with appropriate comments when necessary.

Reported-by: kernel test robot <oliver.sang@intel.com>
Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/all/20250114231507.21672-4-frederic@kernel.org
Closes: https://lore.kernel.org/oe-lkp/202501031612.62e0c498-lkp@intel.com
2025-01-16 12:47:11 +01:00
Frederic Weisbecker
de3ced72a7 timers/migration: Enforce group initialization visibility to tree walkers
Commit 2522c84db513 ("timers/migration: Fix another race between hotplug
and idle entry/exit") fixed yet another race between idle exit and CPU
hotplug up leading to a wrong "0" value migrator assigned to the top
level. However there is yet another situation that remains unhandled:

         [GRP0:0]
      migrator  = TMIGR_NONE
      active    = NONE
      groupmask = 1
      /     \      \
     0       1     2..7
   idle      idle   idle

0) The system is fully idle.

         [GRP0:0]
      migrator  = CPU 0
      active    = CPU 0
      groupmask = 1
      /     \      \
     0       1     2..7
   active   idle   idle

1) CPU 0 is activating. It has done the cmpxchg on the top's ->migr_state
but it hasn't yet returned to __walk_groups().

         [GRP0:0]
      migrator  = CPU 0
      active    = CPU 0, CPU 1
      groupmask = 1
      /     \      \
     0       1     2..7
   active  active  idle

2) CPU 1 is activating. CPU 0 stays the migrator (still stuck in
__walk_groups(), delayed by #VMEXIT for example).

                    [GRP1:0]
                migrator = TMIGR_NONE
                active   = NONE
                groupmask = 1
             /                   \
         [GRP0:0]                  [GRP0:1]
      migrator  = CPU 0           migrator = TMIGR_NONE
      active    = CPU 0, CPU1     active   = NONE
      groupmask = 1               groupmask = 2
      /     \      \
     0       1     2..7                   8
   active  active  idle                !online

3) CPU 8 is preparing to boot. CPUHP_TMIGR_PREPARE is being ran by CPU 1
which has created the GRP0:1 and the new top GRP1:0 connected to GRP0:1
and GRP0:0. CPU 1 hasn't yet propagated its activation up to GRP1:0.

                    [GRP1:0]
               migrator = GRP0:0
               active   = GRP0:0
               groupmask = 1
             /                   \
         [GRP0:0]                  [GRP0:1]
     migrator  = CPU 0           migrator = TMIGR_NONE
     active    = CPU 0, CPU1     active   = NONE
     groupmask = 1               groupmask = 2
     /     \      \
    0       1     2..7                   8
  active  active  idle                !online

4) CPU 0 finally resumed after its #VMEXIT. It's in __walk_groups()
returning from tmigr_cpu_active(). The new top GRP1:0 is visible and
fetched and the pre-initialized groupmask of GRP0:0 is also visible.
As a result tmigr_active_up() is called to GRP1:0 with GRP0:0 as active
and migrator. CPU 0 is returning to __walk_groups() but suffers again
a #VMEXIT.

                    [GRP1:0]
               migrator = GRP0:0
               active   = GRP0:0
               groupmask = 1
             /                   \
         [GRP0:0]                  [GRP0:1]
     migrator  = CPU 0           migrator = TMIGR_NONE
     active    = CPU 0, CPU1     active   = NONE
     groupmask = 1               groupmask = 2
     /     \      \
    0       1     2..7                   8
  active  active  idle                 !online

5) CPU 1 propagates its activation of GRP0:0 to GRP1:0. This has no
   effect since CPU 0 did it already.

                    [GRP1:0]
               migrator = GRP0:0
               active   = GRP0:0, GRP0:1
               groupmask = 1
             /                   \
         [GRP0:0]                  [GRP0:1]
     migrator  = CPU 0           migrator = CPU 8
     active    = CPU 0, CPU1     active   = CPU 8
     groupmask = 1               groupmask = 2
     /     \      \                     \
    0       1     2..7                   8
  active  active  idle                 active

6) CPU 1 links CPU 8 to its group. CPU 8 boots and goes through
   CPUHP_AP_TMIGR_ONLINE which propagates activation.

                                   [GRP2:0]
                              migrator = TMIGR_NONE
                              active   = NONE
                              groupmask = 1
                             /                \
                    [GRP1:0]                    [GRP1:1]
               migrator = GRP0:0              migrator = TMIGR_NONE
               active   = GRP0:0, GRP0:1      active   = NONE
               groupmask = 1                  groupmask = 2
             /                   \
         [GRP0:0]                  [GRP0:1]                [GRP0:2]
     migrator  = CPU 0           migrator = CPU 8        migrator = TMIGR_NONE
     active    = CPU 0, CPU1     active   = CPU 8        active   = NONE
     groupmask = 1               groupmask = 2           groupmask = 0
     /     \      \                     \
    0       1     2..7                   8                  64
  active  active  idle                 active             !online

7) CPU 64 is booting. CPUHP_TMIGR_PREPARE is being ran by CPU 1
which has created the GRP1:1, GRP0:2 and the new top GRP2:0 connected to
GRP1:1 and GRP1:0. CPU 1 hasn't yet propagated its activation up to
GRP2:0.

                                   [GRP2:0]
                              migrator = 0 (!!!)
                              active   = NONE
                              groupmask = 1
                             /                \
                    [GRP1:0]                    [GRP1:1]
               migrator = GRP0:0              migrator = TMIGR_NONE
               active   = GRP0:0, GRP0:1      active   = NONE
               groupmask = 1                  groupmask = 2
             /                   \
         [GRP0:0]                  [GRP0:1]                [GRP0:2]
     migrator  = CPU 0           migrator = CPU 8        migrator = TMIGR_NONE
     active    = CPU 0, CPU1     active   = CPU 8        active   = NONE
     groupmask = 1               groupmask = 2           groupmask = 0
     /     \      \                     \
    0       1     2..7                   8                  64
  active  active  idle                 active             !online

8) CPU 0 finally resumed after its #VMEXIT. It's in __walk_groups()
returning from tmigr_cpu_active(). The new top GRP2:0 is visible and
fetched but the pre-initialized groupmask of GRP1:0 is not because no
ordering made its initialization visible. As a result tmigr_active_up()
may be called to GRP2:0 with a "0" child's groumask. Leaving the timers
ignored for ever when the system is fully idle.

The race is highly theoretical and perhaps impossible in practice but
the groupmask of the child is not the only concern here as the whole
initialization of the child is not guaranteed to be visible to any
tree walker racing against hotplug (idle entry/exit, remote handling,
etc...). Although the current code layout seem to be resilient to such
hazards, this doesn't tell much about the future.

Fix this with enforcing address dependency between group initialization
and the write/read to the group's parent's pointer. Fortunately that
doesn't involve any barrier addition in the fast paths.

Fixes: 10a0e6f3d3 ("timers/migration: Move hierarchy setup into cpuhotplug prepare callback")
Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/all/20250114231507.21672-3-frederic@kernel.org
2025-01-16 12:47:11 +01:00
Frederic Weisbecker
b729cc1ec2 timers/migration: Fix another race between hotplug and idle entry/exit
Commit 10a0e6f3d3 ("timers/migration: Move hierarchy setup into
cpuhotplug prepare callback") fixed a race between idle exit and CPU
hotplug up leading to a wrong "0" value migrator assigned to the top
level. However there is still a situation that remains unhandled:

         [GRP0:0]
        migrator  = TMIGR_NONE
        active    = NONE
        groupmask = 0
        /     \      \
       0       1     2..7
     idle      idle   idle

0) The system is fully idle.

         [GRP0:0]
        migrator  = CPU 0
        active    = CPU 0
        groupmask = 0
        /     \      \
       0       1     2..7
     active   idle   idle

1) CPU 0 is activating. It has done the cmpxchg on the top's ->migr_state
but it hasn't yet returned to __walk_groups().

         [GRP0:0]
        migrator  = CPU 0
        active    = CPU 0, CPU 1
        groupmask = 0
        /     \      \
       0       1     2..7
     active  active  idle

2) CPU 1 is activating. CPU 0 stays the migrator (still stuck in
__walk_groups(), delayed by #VMEXIT for example).

                 [GRP1:0]
              migrator = TMIGR_NONE
              active   = NONE
              groupmask = 0
              /                  \
        [GRP0:0]                      [GRP0:1]
       migrator  = CPU 0           migrator = TMIGR_NONE
       active    = CPU 0, CPU1     active   = NONE
       groupmask = 2               groupmask = 1
       /     \      \
      0       1     2..7                   8
    active  active  idle              !online

3) CPU 8 is preparing to boot. CPUHP_TMIGR_PREPARE is being ran by CPU 1
which has created the GRP0:1 and the new top GRP1:0 connected to GRP0:1
and GRP0:0. The groupmask of GRP0:0 is now 2. CPU 1 hasn't yet
propagated its activation up to GRP1:0.

                 [GRP1:0]
              migrator = 0 (!!!)
              active   = NONE
              groupmask = 0
              /                  \
        [GRP0:0]                  [GRP0:1]
       migrator  = CPU 0           migrator = TMIGR_NONE
       active    = CPU 0, CPU1     active   = NONE
       groupmask = 2               groupmask = 1
       /     \      \
      0       1     2..7                   8
    active  active  idle                !online

4) CPU 0 finally resumed after its #VMEXIT. It's in __walk_groups()
returning from tmigr_cpu_active(). The new top GRP1:0 is visible and
fetched but the freshly updated groupmask of GRP0:0 may not be visible
due to lack of ordering! As a result tmigr_active_up() is called to
GRP0:0 with a child's groupmask of "0". This buggy "0" groupmask then
becomes the migrator for GRP1:0 forever. As a result, timers on a fully
idle system get ignored.

One possible fix would be to define TMIGR_NONE as "0" so that such a
race would have no effect. And after all TMIGR_NONE doesn't need to be
anything else. However this would leave an uncomfortable state machine
where gears happen not to break by chance but are vulnerable to future
modifications.

Keep TMIGR_NONE as is instead and pre-initialize to "1" the groupmask of
any newly created top level. This groupmask is guaranteed to be visible
upon fetching the corresponding group for the 1st time:

_ By the upcoming CPU thanks to CPU hotplug synchronization between the
  control CPU (BP) and the booting one (AP).

_ By the control CPU since the groupmask and parent pointers are
  initialized locally.

_ By all CPUs belonging to the same group than the control CPU because
  they must wait for it to ever become idle before needing to walk to
  the new top. The cmpcxhg() on ->migr_state then makes sure its
  groupmask is visible.

With this pre-initialization, it is guaranteed that if a future top level
is linked to an old one, it is walked through with a valid groupmask.

Fixes: 10a0e6f3d3 ("timers/migration: Move hierarchy setup into cpuhotplug prepare callback")
Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/all/20250114231507.21672-2-frederic@kernel.org
2025-01-16 12:47:11 +01:00
Paolo Abeni
676d53a480 Merge branch 'mlx5-misc-fixes-2025-01-15'
Tariq Toukan says:

====================
mlx5 misc fixes 2025-01-15

This patchset provides misc bug fixes from the team to the mlx5 core and
Eth drivers.
====================

Link: https://patch.msgid.link/20250115113910.1990174-1-tariqt@nvidia.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2025-01-16 12:45:51 +01:00
Leon Romanovsky
7f95b02477 net/mlx5e: Always start IPsec sequence number from 1
According to RFC4303, section "3.3.3. Sequence Number Generation",
the first packet sent using a given SA will contain a sequence
number of 1.

This is applicable to both ESN and non-ESN mode, which was not covered
in commit mentioned in Fixes line.

Fixes: 3d42c8cc67 ("net/mlx5e: Ensure that IPsec sequence packet number starts from 1")
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2025-01-16 12:45:47 +01:00