Skip to contentSkip to conversation

Linux 6.12.11

DISCUSSION Greg Kroah-Hartman 2 participants 4 messages Jan 23, 2025 – Feb 11, 2025 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 6.12.11 kernel.

All users of the 6.12 kernel series must upgrade.

The updated 6.12.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.12.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary

thanks,

greg k-h

------------

 Makefile                                                            |    2 
 arch/x86/include/asm/special_insns.h                                |    2 
 arch/x86/kernel/fred.c                                              |    8 
 drivers/acpi/resource.c                                             |    6 
 drivers/block/zram/zram_drv.c                                       |    1 
 drivers/cpufreq/Kconfig                                             |    4 
 drivers/cpuidle/governors/teo.c                                     |   91 +--
 drivers/firmware/efi/Kconfig                                        |    4 
 drivers/firmware/efi/libstub/Makefile.zboot                         |   18 
 drivers/gpio/gpio-sim.c                                             |   48 +
 drivers/gpio/gpio-virtuser.c                                        |   47 +
 drivers/gpio/gpio-xilinx.c                                          |   32 -
 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c                          |    5 
 drivers/gpu/drm/amd/amdgpu/amdgpu_fw_attestation.c                  |    4 
 drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c                              |    4 
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c                   |   41 +
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crc.c               |   25 
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c              |    4 
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.h              |    2 
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c           |    2 
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c         |   14 
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_psr.c               |   35 +
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_psr.h               |    3 
 drivers/gpu/drm/amd/display/dc/dml/dcn35/dcn35_fpu.c                |    4 
 drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c                |   11 
 drivers/gpu/drm/i915/display/intel_fb.c                             |    2 
 drivers/gpu/drm/nouveau/nouveau_fence.c                             |    6 
 drivers/gpu/drm/nouveau/nvkm/engine/disp/mcp77.c                    |    1 
 drivers/gpu/drm/tests/drm_kunit_helpers.c                           |    3 
 drivers/gpu/drm/v3d/v3d_irq.c                                       |    4 
 drivers/gpu/drm/vmwgfx/vmwgfx_bo.c                                  |    3 
 drivers/gpu/drm/vmwgfx/vmwgfx_bo.h                                  |    3 
 drivers/gpu/drm/vmwgfx/vmwgfx_drv.c                                 |    7 
 drivers/gpu/drm/vmwgfx/vmwgfx_gem.c                                 |    1 
 drivers/gpu/drm/vmwgfx/vmwgfx_kms.c                                 |   20 
 drivers/gpu/drm/vmwgfx/vmwgfx_shader.c                              |    7 
 drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c                          |    5 
 drivers/gpu/drm/xe/xe_hw_engine.c                                   |    2 
 drivers/gpu/drm/xe/xe_oa.c                                          |    1 
 drivers/hwmon/ltc2991.c                                             |    2 
 drivers/hwmon/tmp513.c                                              |    7 
 drivers/i2c/busses/i2c-rcar.c                                       |   20 
 drivers/i2c/i2c-atr.c                                               |    2 
 drivers/i2c/i2c-core-base.c                                         |    1 
 drivers/i2c/i2c-slave-testunit.c                                    |   19 
 drivers/i2c/muxes/i2c-demux-pinctrl.c                               |    4 
 drivers/infiniband/hw/bnxt_re/ib_verbs.c                            |    1 
 drivers/infiniband/hw/bnxt_re/ib_verbs.h                            |    4 
 drivers/infiniband/hw/bnxt_re/qplib_fp.c                            |    1 
 drivers/infiniband/hw/bnxt_re/qplib_fp.h                            |    1 
 drivers/irqchip/irq-gic-v3-its.c                                    |    2 
 drivers/irqchip/irq-gic-v3.c                                        |    2 
 drivers/irqchip/irqchip.c                                           |    4 
 drivers/mtd/spi-nor/core.c                                          |    2 
 drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c                         |   19 
 drivers/net/ethernet/broadcom/bnxt/bnxt.c                           |   25 
 drivers/net/ethernet/broadcom/bnxt/bnxt.h                           |    2 
 drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c                       |    7 
 drivers/net/ethernet/freescale/fec_main.c                           |   19 
 drivers/net/ethernet/intel/ice/ice.h                                |    5 
 drivers/net/ethernet/intel/ice/ice_adapter.c                        |    6 
 drivers/net/ethernet/intel/ice/ice_adapter.h                        |   22 
 drivers/net/ethernet/intel/ice/ice_adminq_cmd.h                     |    1 
 drivers/net/ethernet/intel/ice/ice_common.c                         |   51 +
 drivers/net/ethernet/intel/ice/ice_common.h                         |    1 
 drivers/net/ethernet/intel/ice/ice_main.c                           |    6 
 drivers/net/ethernet/intel/ice/ice_ptp.c                            |  165 +++--
 drivers/net/ethernet/intel/ice/ice_ptp.h                            |    9 
 drivers/net/ethernet/intel/ice/ice_ptp_consts.h                     |    2 
 drivers/net/ethernet/intel/ice/ice_ptp_hw.c                         |  285 +++++-----
 drivers/net/ethernet/intel/ice/ice_ptp_hw.h                         |    5 
 drivers/net/ethernet/intel/ice/ice_type.h                           |    2 
 drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c            |   22 
 drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c         |   12 
 drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_offload.c    |   11 
 drivers/net/ethernet/mellanox/mlx5/core/fs_core.c                   |    1 
 drivers/net/ethernet/mellanox/mlx5/core/lag/port_sel.c              |    4 
 drivers/net/ethernet/mellanox/mlx5/core/sf/devlink.c                |    1 
 drivers/net/ethernet/mellanox/mlx5/core/wc.c                        |   24 
 drivers/net/ethernet/netronome/nfp/bpf/offload.c                    |    3 
 drivers/net/ethernet/renesas/ravb_main.c                            |    1 
 drivers/net/ethernet/ti/cpsw_ale.c                                  |   14 
 drivers/net/ethernet/xilinx/xilinx_axienet_main.c                   |    6 
 drivers/net/gtp.c                                                   |   26 
 drivers/net/pfcp.c                                                  |   15 
 drivers/nvme/target/io-cmd-bdev.c                                   |    2 
 drivers/platform/x86/dell/dell-uart-backlight.c                     |    5 
 drivers/platform/x86/intel/speed_select_if/isst_if_common.c         |    1 
 drivers/platform/x86/intel/tpmi_power_domains.c                     |    1 
 drivers/platform/x86/lenovo-yoga-tab2-pro-1380-fastcharger.c        |    5 
 drivers/pmdomain/imx/imx8mp-blk-ctrl.c                              |    2 
 drivers/reset/reset-rzg2l-usbphy-ctrl.c                             |    1 
 drivers/ufs/core/ufshcd.c                                           |    9 
 fs/afs/addr_prefs.c                                                 |    6 
 fs/btrfs/volumes.c                                                  |    4 
 fs/cachefiles/daemon.c                                              |   14 
 fs/cachefiles/internal.h                                            |    3 
 fs/cachefiles/security.c                                            |    6 
 fs/file.c                                                           |    1 
 fs/hfs/super.c                                                      |    4 
 fs/iomap/buffered-io.c                                              |    2 
 fs/netfs/read_collect.c                                             |    9 
 fs/proc/vmcore.c                                                    |    2 
 fs/qnx6/inode.c                                                     |   11 
 fs/smb/client/connect.c                                             |    3 
 include/linux/hrtimer.h                                             |    1 
 include/linux/poll.h                                                |   10 
 include/linux/pruss_driver.h                                        |   12 
 include/linux/userfaultfd_k.h                                       |   12 
 include/net/page_pool/helpers.h                                     |    2 
 include/trace/events/mmflags.h                                      |   63 ++
 kernel/cpu.c                                                        |    2 
 kernel/gen_kheaders.sh                                              |    1 
 kernel/sched/ext.c                                                  |   11 
 kernel/sched/fair.c                                                 |    6 
 kernel/time/hrtimer.c                                               |   11 
 kernel/time/timer_migration.c                                       |   43 +
 mm/filemap.c                                                        |    2 
 mm/huge_memory.c                                                    |   12 
 mm/hugetlb.c                                                        |   14 
 mm/kmemleak.c                                                       |    2 
 mm/mremap.c                                                         |   32 +
 mm/vmscan.c                                                         |    3 
 net/core/filter.c                                                   |   30 -
 net/core/netdev-genl-gen.c                                          |   14 
 net/core/pktgen.c                                                   |    6 
 net/mac802154/iface.c                                               |    4 
 net/mptcp/options.c                                                 |    6 
 net/mptcp/protocol.h                                                |    9 
 net/ncsi/internal.h                                                 |    2 
 net/ncsi/ncsi-manage.c                                              |   16 
 net/ncsi/ncsi-rsp.c                                                 |   19 
 net/openvswitch/actions.c                                           |    4 
 net/vmw_vsock/af_vsock.c                                            |   18 
 net/vmw_vsock/virtio_transport_common.c                             |   36 -
 net/vmw_vsock/vsock_bpf.c                                           |    9 
 security/apparmor/policy.c                                          |    1 
 sound/pci/hda/patch_realtek.c                                       |    3 
 tools/net/ynl/ynl-gen-c.py                                          |   16 
 tools/testing/selftests/mm/cow.c                                    |    8 
 tools/testing/selftests/net/mptcp/mptcp_connect.c                   |   43 +
 tools/testing/selftests/sched_ext/ddsp_bogus_dsq_fail.bpf.c         |    2 
 tools/testing/selftests/sched_ext/ddsp_vtimelocal_fail.bpf.c        |    4 
 tools/testing/selftests/sched_ext/dsp_local_on.bpf.c                |    7 
 tools/testing/selftests/sched_ext/dsp_local_on.c                    |    5 
 tools/testing/selftests/sched_ext/enq_select_cpu_fails.bpf.c        |    2 
 tools/testing/selftests/sched_ext/exit.bpf.c                        |    4 
 tools/testing/selftests/sched_ext/maximal.bpf.c                     |    8 
 tools/testing/selftests/sched_ext/select_cpu_dfl.bpf.c              |    2 
 tools/testing/selftests/sched_ext/select_cpu_dfl_nodispatch.bpf.c   |    2 
 tools/testing/selftests/sched_ext/select_cpu_dispatch.bpf.c         |    2 
 tools/testing/selftests/sched_ext/select_cpu_dispatch_bad_dsq.bpf.c |    2 
 tools/testing/selftests/sched_ext/select_cpu_dispatch_dbl_dsp.bpf.c |    4 
 tools/testing/selftests/sched_ext/select_cpu_vtime.bpf.c            |    8 
 tools/testing/selftests/tc-testing/tc-tests/filters/flow.json       |    4 
 tools/testing/shared/linux/maple_tree.h                             |    2 
 tools/testing/vma/linux/atomic.h                                    |    2 
 157 files changed, 1324 insertions(+), 636 deletions(-)

Alex Deucher (1):
drm/amdgpu/smu13: update powersave optimizations

Ard Biesheuvel (1):
efi/zboot: Limit compression options to GZIP and ZSTD

Artem Chernyshev (1):
pktgen: Avoid out-of-bounds access in get_imix_entries

Ashutosh Dixit (1):
drm/xe/oa: Add missing VISACTL mux registers

Brahmajit Das (1):
fs/qnx6: Fix building with GCC 15

Chenyuan Yang (2):
platform/x86: dell-uart-backlight: fix serdev race platform/x86: lenovo-yoga-tab2-pro-1380-fastcharger: fix serdev race

Chris Mi (1):
net/mlx5: SF, Fix add port error handling

Christian König (1):
drm/amdgpu: always sync the GFX pipe on ctx switch

Claudiu Beznea (1):
reset: rzg2l-usbphy-ctrl: Assign proper of node to the allocated device

Dan Carpenter (1):
nfp: bpf: prevent integer overflow in nfp_bpf_event_output()

Dave Airlie (1):
nouveau/fence: handle cross device fences properly

David Howells (2):
kheaders: Ignore silly-rename files
netfs: Fix non-contiguous donation between completed reads

David Lechner (2):
hwmon: (tmp513) Fix division of negative numbers
hwmon: (ltc2991) Fix mixed signed/unsigned in DIV_ROUND_CLOSEST

David Vernet (1):
scx: Fix maximal BPF selftest prog

Donet Tom (1):
mm: vmscan : pgdemote vmstat is not getting updated when MGLRU is enabled.

Frederic Weisbecker (2):
timers/migration: Fix another race between hotplug and idle entry/exit timers/migration: Enforce group initialization visibility to tree walkers

Greg Kroah-Hartman (1):

      Linux 6.12.11

Gui Chengming (1):

      drm/amdgpu: fix fw attestation for MP0_14_0_{2/3}

Guo Weikang (1):
mm/kmemleak: fix percpu memory leak detection failure

Hans de Goede (1):
ACPI: resource: acpi_dev_irq_override(): Check DMI match last

Heiner Kallweit (1):
net: ethernet: xgbe: re-add aneg to supported features in PHY quirks

Henry Huang (1):

      sched_ext: keep running prev when prev->scx.slice != 0

Hongguang Gao (1):
RDMA/bnxt_re: Fix to export port num to ib_query_qp

Ian Forbes (2):
drm/vmwgfx: Unreserve BO on error
drm/vmwgfx: Add new keep_resv BO param

Ihor Solodrai (1):
selftests/sched_ext: fix build after renames in sched_ext API

Ilya Maximets (1):
openvswitch: fix lockup on tx to unregistering netdev with carrier

Jakub Kicinski (3):
eth: bnxt: always recalculate features after XDP clearing, fix null-deref
netdev: avoid CFI problems with sock priv helpers
selftests: tc-testing: reduce rshift value

Joe Hattori (2):
i2c: core: fix reference leak in i2c_register_adapter()
irqchip: Plug a OF node reference leak in platform_irqchip_probe()

Juergen Gross (1):
x86/asm: Make serialize() always_inline

Kairui Song (1):
zram: fix potential UAF of zram table

Karol Kolacinski (4):
ice: Fix E825 initialization
ice: Fix quad registers read on E825
ice: Fix ETH56G FC-FEC Rx offset value
ice: Add correct PHY lane assignment

Kenneth Feng (1):
drm/amdgpu: disable gfxoff with the compute workload on gfx12

Kevin Groeneveld (1):
net: fec: handle page_pool_dev_alloc_pages error

Koichiro Den (3):
gpio: virtuser: lock up configfs that an instantiated device depends on
gpio: sim: lock up configfs that an instantiated device depends on
hrtimers: Handle CPU state correctly on hotplug

Kuniyuki Iwashima (3):
gtp: Use for_each_netdev_rcu() in gtp_genl_dump_pdp().
gtp: Destroy device along with udp socket's netns dismantle.
pfcp: Destroy device along with udp socket's netns dismantle.

Leo Li (2):
drm/amd/display: Do not elevate mem_type change to full update drm/amd/display: Do not wait for PSR disable on vbl enable

Leo Stone (1):
hfs: Sanity check the root record

Leon Romanovsky (3):
net/mlx5e: Fix inversion dependency warning while enabling IPsec tunnel net/mlx5e: Rely on reqid in IPsec tunnel mode
net/mlx5e: Always start IPsec sequence number from 1

Lizhi Xu (2):
mac802154: check local interfaces before deleting sdata list
afs: Fix merge preference rule failure condition

Luis Chamberlain (1):
nvmet: propagate npwg topology

Luke D. Jones (2):
ALSA: hda/realtek: fixup ASUS GA605W
ALSA: hda/realtek: fixup ASUS H7606W

MD Danish Anwar (1):
soc: ti: pruss: Fix pruss APIs

Manivannan Sadhasivam (1):
scsi: ufs: core: Honor runtime/system PM levels if set by host controller drivers

Marco Nelissen (2):
iomap: avoid avoid truncating 64-bit offset to 32 bits
filemap: avoid truncating 64-bit offset to 32 bits

Mark Zhang (1):
net/mlx5: Clear port select structure when fail to create

Matthew Brost (1):
drm/xe: Mark ComputeCS read mode as UC on iGPU

Max Kellermann (1):
cachefiles: Parse the "secctx" immediately

Maíra Canal (1):
drm/v3d: Ensure job pointer is set to NULL after job completion

Michal Luczaj (1):
bpf: Fix bpf_sk_select_reuseport() memory leak

Nicholas Susanto (1):
Revert "drm/amd/display: Enable urgent latency adjustments for DCN35"

Oleg Nesterov (1):
poll_wait: add mb() to fix theoretical race between waitqueue_active() and .poll()

Paolo Abeni (3):
mptcp: be sure to send ack when mptcp-level window re-opens
mptcp: fix spurious wake-up on under memory pressure
selftests: mptcp: avoid spurious errors on disconnect

Patrisious Haddad (1):
net/mlx5: Fix RDMA TX steering prio

Paul Barker (1):
net: ravb: Fix max TX frame size for RZ/V2M

Paul Fertser (1):
net/ncsi: fix locking in Get MAC Address handling

Paulo Alcantara (1):
smb: client: fix double free of TCP_Server_Info::hostname

Pavel Begunkov (1):
net: make page_pool_ref_netmem work with net iovs

Peter Zijlstra (1):
sched/fair: Fix update_cfs_group() vs DELAY_DEQUEUE

Pratyush Yadav (1):
Revert "mtd: spi-nor: core: replace dummy buswidth from addr to data"

Qu Wenruo (1):
btrfs: add the missing error handling inside get_canonical_dev_path

Rafael J. Wysocki (1):
cpuidle: teo: Update documentation after previous changes

Rik van Riel (1):
fs/proc: fix softlockup in __read_vmcore (part 2)

Ryan Lee (1):
apparmor: allocate xmatch for nullpdb inside aa_alloc_null

Ryan Roberts (2):
selftests/mm: set allocated memory to non-zero content in cow test
mm: clear uffd-wp PTE/PMD state on mremap()

Sean Anderson (2):
net: xilinx: axienet: Fix IRQ coalescing packet count overflow
gpio: xilinx: Convert gpio_lock to raw spinlock

Sergey Temerkhanov (3):
ice: Introduce ice_get_phy_model() wrapper
ice: Add ice_get_ctrl_ptp() wrapper to simplify the code
ice: Use ice_adapter for PTP shared data instead of auxdev

Srinivas Pandruvada (2):
platform/x86/intel: power-domains: Add Clearwater Forest support platform/x86: ISST: Add Clearwater Forest to support list

Stefan Binding (1):
ALSA: hda/realtek: Add support for Ayaneo System using CS35L41 HDA

Stefano Garzarella (5):
vsock/bpf: return early if transport is not assigned vsock/virtio: discard packets if the transport changes vsock/virtio: cancel close work in the destructor
vsock: reset socket state when de-assigning the transport
vsock: prevent null-ptr-deref in vsock_*[has_data|has_space]

Steven Rostedt (1):
tracing: gfp: Fix the GFP enum values shown for user space tracing tools

Sudheer Kumar Doredla (1):
net: ethernet: ti: cpsw_ale: Fix cpsw_ale_get_field()

Suren Baghdasaryan (1):
tools: fix atomic_set() definition to set the value correctly

Takashi Iwai (1):
drm/nouveau/disp: Fix missing backlight control on Macbook 5,1

Tejun Heo (1):
sched_ext: Fix dsq_local_on selftest

Tom Chung (2):
drm/amd/display: Fix PSR-SU not support but still call the amdgpu_dm_psr_enable drm/amd/display: Disable replay and psr while VRR is enabled

Tomas Krcka (1):
irqchip/gic-v3-its: Don't enable interrupts in its_irq_set_vcpu_affinity()

Tomi Valkeinen (1):
i2c: atr: Fix client detach

Ville Syrjälä (1):
drm/i915/fb: Relax clear color alignment to 64 bytes

Viresh Kumar (1):
cpufreq: Move endif to the end of Kconfig file

Wayne Lin (1):
drm/amd/display: Validate mdoe under MST LCT=1 case as well

Wolfram Sang (3):
i2c: mux: demux-pinctrl: check initial mux selection, too
i2c: rcar: fix NACK handling when being a target
i2c: testunit: on errors, repeat NACK until STOP

Xiaolei Wang (1):
pmdomain: imx8mp-blk-ctrl: add missing loop break condition

Xin Li (Intel) (1):
x86/fred: Fix the FRED RSP0 MSR out of sync with its per-CPU cache

Yishai Hadas (1):
net/mlx5: Fix a lockdep warning as part of the write combining test

Yogesh Lal (1):
irqchip/gic-v3: Handle CPU_PM_ENTER_FAILED correctly

Yu-Chun Lin (1):
drm/tests: helpers: Fix compiler warning

Zhang Kunbo (1):
fs: fix missing declaration of init_files

author maintainer
#1 lore raw
Makefile +1 -1
index 233e9e88e402..7cf8f11975f8 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 6
 PATCHLEVEL = 12
-SUBLEVEL = 10
+SUBLEVEL = 11
 EXTRAVERSION =
 NAME = Baby Opossum Posse
 
arch/x86/include/asm/special_insns.h +1 -1
index aec6e2d3aa1d..98bfc097389c 100644
@@ -217,7 +217,7 @@ static inline int write_user_shstk_64(u64 __user *addr, u64 val)
 
 #define nop() asm volatile ("nop")
 
-static inline void serialize(void)
+static __always_inline void serialize(void)
 {
 	/* Instruction opcode for SERIALIZE; supported in binutils >= 2.35. */
 	asm volatile(".byte 0xf, 0x1, 0xe8" ::: "memory");
arch/x86/kernel/fred.c +7 -1
index 8d32c3f48abc..5e2cd1004980 100644
@@ -50,7 +50,13 @@ void cpu_init_fred_exceptions(void)
 	       FRED_CONFIG_ENTRYPOINT(asm_fred_entrypoint_user));
 
 	wrmsrl(MSR_IA32_FRED_STKLVLS, 0);
-	wrmsrl(MSR_IA32_FRED_RSP0, 0);
+
+	/*
+	 * Ater a CPU offline/online cycle, the FRED RSP0 MSR should be
+	 * resynchronized with its per-CPU cache.
+	 */
+	wrmsrl(MSR_IA32_FRED_RSP0, __this_cpu_read(fred_rsp0));
+
 	wrmsrl(MSR_IA32_FRED_RSP1, 0);
 	wrmsrl(MSR_IA32_FRED_RSP2, 0);
 	wrmsrl(MSR_IA32_FRED_RSP3, 0);
drivers/acpi/resource.c +3 -3
index d27a3bf96f80..90aaec923889 100644
@@ -689,11 +689,11 @@ static bool acpi_dev_irq_override(u32 gsi, u8 triggering, u8 polarity,
 	for (i = 0; i < ARRAY_SIZE(override_table); i++) {
 		const struct irq_override_cmp *entry = &override_table[i];
 
-		if (dmi_check_system(entry->system) &&
-		    entry->irq == gsi &&
+		if (entry->irq == gsi &&
 		    entry->triggering == triggering &&
 		    entry->polarity == polarity &&
-		    entry->shareable == shareable)
+		    entry->shareable == shareable &&
+		    dmi_check_system(entry->system))
 			return entry->override;
 	}
 
drivers/block/zram/zram_drv.c +1 -0
index bf83a104086c..76b326ddd75c 100644
@@ -1349,6 +1349,7 @@ static bool zram_meta_alloc(struct zram *zram, u64 disksize)
 	zram->mem_pool = zs_create_pool(zram->disk->disk_name);
 	if (!zram->mem_pool) {
 		vfree(zram->table);
+		zram->table = NULL;
 		return false;
 	}
 
drivers/cpufreq/Kconfig +2 -2
index 2561b215432a..588ab1cc6d55 100644
@@ -311,8 +311,6 @@ config QORIQ_CPUFREQ
 	  This adds the CPUFreq driver support for Freescale QorIQ SoCs
 	  which are capable of changing the CPU's frequency dynamically.
 
-endif
-
 config ACPI_CPPC_CPUFREQ
 	tristate "CPUFreq driver based on the ACPI CPPC spec"
 	depends on ACPI_PROCESSOR
@@ -341,4 +339,6 @@ config ACPI_CPPC_CPUFREQ_FIE
 
 	  If in doubt, say N.
 
+endif
+
 endmenu
drivers/cpuidle/governors/teo.c +48 -43

127 lines not on this page · raw message

drivers/firmware/efi/Kconfig +0 -4
index 72f2537d90ca..f45c70154a93 100644
@@ -76,10 +76,6 @@ config EFI_ZBOOT
 	bool "Enable the generic EFI decompressor"
 	depends on EFI_GENERIC_STUB && !ARM
 	select HAVE_KERNEL_GZIP
-	select HAVE_KERNEL_LZ4
-	select HAVE_KERNEL_LZMA
-	select HAVE_KERNEL_LZO
-	select HAVE_KERNEL_XZ
 	select HAVE_KERNEL_ZSTD
 	help
 	  Create the bootable image as an EFI application that carries the
drivers/firmware/efi/libstub/Makefile.zboot +6 -12
index 65ffd0b760b2..48842b5c106b 100644
@@ -12,22 +12,16 @@ quiet_cmd_copy_and_pad = PAD     $@
 $(obj)/vmlinux.bin: $(obj)/$(EFI_ZBOOT_PAYLOAD) FORCE
 	$(call if_changed,copy_and_pad)
 
-comp-type-$(CONFIG_KERNEL_GZIP)		:= gzip
-comp-type-$(CONFIG_KERNEL_LZ4)		:= lz4
-comp-type-$(CONFIG_KERNEL_LZMA)		:= lzma
-comp-type-$(CONFIG_KERNEL_LZO)		:= lzo
-comp-type-$(CONFIG_KERNEL_XZ)		:= xzkern
-comp-type-$(CONFIG_KERNEL_ZSTD)		:= zstd22
-
 # in GZIP, the appended le32 carrying the uncompressed size is part of the
 # format, but in other cases, we just append it at the end for convenience,
 # causing the original tools to complain when checking image integrity.
-# So disregard it when calculating the payload size in the zimage header.
-zboot-method-y                         := $(comp-type-y)_with_size
-zboot-size-len-y                       := 4
+comp-type-y				:= gzip
+zboot-method-y				:= gzip
+zboot-size-len-y			:= 0
 
-zboot-method-$(CONFIG_KERNEL_GZIP)     := gzip
-zboot-size-len-$(CONFIG_KERNEL_GZIP)   := 0
+comp-type-$(CONFIG_KERNEL_ZSTD)		:= zstd
+zboot-method-$(CONFIG_KERNEL_ZSTD)	:= zstd22_with_size
+zboot-size-len-$(CONFIG_KERNEL_ZSTD)	:= 4
 
 $(obj)/vmlinuz: $(obj)/vmlinux.bin FORCE
 	$(call if_changed,$(zboot-method-y))
drivers/gpio/gpio-sim.c +41 -7

61 lines not on this page · raw message

drivers/gpio/gpio-virtuser.c +40 -7

61 lines not on this page · raw message

drivers/gpio/gpio-xilinx.c +16 -16
index afcf432a1573..2ea8ccfbdccd 100644
@@ -65,7 +65,7 @@ struct xgpio_instance {
 	DECLARE_BITMAP(state, 64);
 	DECLARE_BITMAP(last_irq_read, 64);
 	DECLARE_BITMAP(dir, 64);
-	spinlock_t gpio_lock;	/* For serializing operations */
+	raw_spinlock_t gpio_lock;	/* For serializing operations */
 	int irq;
 	DECLARE_BITMAP(enable, 64);
 	DECLARE_BITMAP(rising_edge, 64);
@@ -179,14 +179,14 @@ static void xgpio_set(struct gpio_chip *gc, unsigned int gpio, int val)
 	struct xgpio_instance *chip = gpiochip_get_data(gc);
 	int bit = xgpio_to_bit(chip, gpio);
 
-	spin_lock_irqsave(&chip->gpio_lock, flags);
+	raw_spin_lock_irqsave(&chip->gpio_lock, flags);
 
 	/* Write to GPIO signal and set its direction to output */
 	__assign_bit(bit, chip->state, val);
 
 	xgpio_write_ch(chip, XGPIO_DATA_OFFSET, bit, chip->state);
 
-	spin_unlock_irqrestore(&chip->gpio_lock, flags);
+	raw_spin_unlock_irqrestore(&chip->gpio_lock, flags);
 }
 
 /**
@@ -210,7 +210,7 @@ static void xgpio_set_multiple(struct gpio_chip *gc, unsigned long *mask,
 	bitmap_remap(hw_mask, mask, chip->sw_map, chip->hw_map, 64);
 	bitmap_remap(hw_bits, bits, chip->sw_map, chip->hw_map, 64);
 
-	spin_lock_irqsave(&chip->gpio_lock, flags);
+	raw_spin_lock_irqsave(&chip->gpio_lock, flags);
 
 	bitmap_replace(state, chip->state, hw_bits, hw_mask, 64);
 
@@ -218,7 +218,7 @@ static void xgpio_set_multiple(struct gpio_chip *gc, unsigned long *mask,
 
 	bitmap_copy(chip->state, state, 64);
 
-	spin_unlock_irqrestore(&chip->gpio_lock, flags);
+	raw_spin_unlock_irqrestore(&chip->gpio_lock, flags);
 }
 
 /**
@@ -236,13 +236,13 @@ static int xgpio_dir_in(struct gpio_chip *gc, unsigned int gpio)
 	struct xgpio_instance *chip = gpiochip_get_data(gc);
 	int bit = xgpio_to_bit(chip, gpio);
 
-	spin_lock_irqsave(&chip->gpio_lock, flags);
+	raw_spin_lock_irqsave(&chip->gpio_lock, flags);
 
 	/* Set the GPIO bit in shadow register and set direction as input */
 	__set_bit(bit, chip->dir);
 	xgpio_write_ch(chip, XGPIO_TRI_OFFSET, bit, chip->dir);
 
-	spin_unlock_irqrestore(&chip->gpio_lock, flags);
+	raw_spin_unlock_irqrestore(&chip->gpio_lock, flags);
 
 	return 0;
 }
@@ -265,7 +265,7 @@ static int xgpio_dir_out(struct gpio_chip *gc, unsigned int gpio, int val)
 	struct xgpio_instance *chip = gpiochip_get_data(gc);
 	int bit = xgpio_to_bit(chip, gpio);
 
-	spin_lock_irqsave(&chip->gpio_lock, flags);
+	raw_spin_lock_irqsave(&chip->gpio_lock, flags);
 
 	/* Write state of GPIO signal */
 	__assign_bit(bit, chip->state, val);
@@ -275,7 +275,7 @@ static int xgpio_dir_out(struct gpio_chip *gc, unsigned int gpio, int val)
 	__clear_bit(bit, chip->dir);
 	xgpio_write_ch(chip, XGPIO_TRI_OFFSET, bit, chip->dir);
 
-	spin_unlock_irqrestore(&chip->gpio_lock, flags);
+	raw_spin_unlock_irqrestore(&chip->gpio_lock, flags);
 
 	return 0;
 }
@@ -398,7 +398,7 @@ static void xgpio_irq_mask(struct irq_data *irq_data)
 	int bit = xgpio_to_bit(chip, irq_offset);
 	u32 mask = BIT(bit / 32), temp;
 
-	spin_lock_irqsave(&chip->gpio_lock, flags);
+	raw_spin_lock_irqsave(&chip->gpio_lock, flags);
 
 	__clear_bit(bit, chip->enable);
 
@@ -408,7 +408,7 @@ static void xgpio_irq_mask(struct irq_data *irq_data)
 		temp &= ~mask;
 		xgpio_writereg(chip->regs + XGPIO_IPIER_OFFSET, temp);
 	}
-	spin_unlock_irqrestore(&chip->gpio_lock, flags);
+	raw_spin_unlock_irqrestore(&chip->gpio_lock, flags);
 
 	gpiochip_disable_irq(&chip->gc, irq_offset);
 }
@@ -428,7 +428,7 @@ static void xgpio_irq_unmask(struct irq_data *irq_data)
 
 	gpiochip_enable_irq(&chip->gc, irq_offset);
 
-	spin_lock_irqsave(&chip->gpio_lock, flags);
+	raw_spin_lock_irqsave(&chip->gpio_lock, flags);
 
 	__set_bit(bit, chip->enable);
 
@@ -447,7 +447,7 @@ static void xgpio_irq_unmask(struct irq_data *irq_data)
 		xgpio_writereg(chip->regs + XGPIO_IPIER_OFFSET, val);
 	}
 
-	spin_unlock_irqrestore(&chip->gpio_lock, flags);
+	raw_spin_unlock_irqrestore(&chip->gpio_lock, flags);
 }
 
 /**
@@ -512,7 +512,7 @@ static void xgpio_irqhandler(struct irq_desc *desc)
 
 	chained_irq_enter(irqchip, desc);
 
-	spin_lock(&chip->gpio_lock);
+	raw_spin_lock(&chip->gpio_lock);
 
 	xgpio_read_ch_all(chip, XGPIO_DATA_OFFSET, all);
 
@@ -529,7 +529,7 @@ static void xgpio_irqhandler(struct irq_desc *desc)
 	bitmap_copy(chip->last_irq_read, all, 64);
 	bitmap_or(all, rising, falling, 64);
 
-	spin_unlock(&chip->gpio_lock);
+	raw_spin_unlock(&chip->gpio_lock);
 
 	dev_dbg(gc->parent, "IRQ rising %*pb falling %*pb\n", 64, rising, 64, falling);
 
@@ -620,7 +620,7 @@ static int xgpio_probe(struct platform_device *pdev)
 	bitmap_set(chip->hw_map,  0, width[0]);
 	bitmap_set(chip->hw_map, 32, width[1]);
 
-	spin_lock_init(&chip->gpio_lock);
+	raw_spin_lock_init(&chip->gpio_lock);
 
 	chip->gc.base = -1;
 	chip->gc.ngpio = bitmap_weight(chip->hw_map, 64);
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c +3 -2
index e41318bfbf45..84e5364d1f67 100644
@@ -715,8 +715,9 @@ int amdgpu_amdkfd_submit_ib(struct amdgpu_device *adev,
 void amdgpu_amdkfd_set_compute_idle(struct amdgpu_device *adev, bool idle)
 {
 	enum amd_powergating_state state = idle ? AMD_PG_STATE_GATE : AMD_PG_STATE_UNGATE;
-	if (IP_VERSION_MAJ(amdgpu_ip_version(adev, GC_HWIP, 0)) == 11 &&
-	    ((adev->mes.kiq_version & AMDGPU_MES_VERSION_MASK) <= 64)) {
+	if ((IP_VERSION_MAJ(amdgpu_ip_version(adev, GC_HWIP, 0)) == 11 &&
+	    ((adev->mes.kiq_version & AMDGPU_MES_VERSION_MASK) <= 64)) ||
+		(IP_VERSION_MAJ(amdgpu_ip_version(adev, GC_HWIP, 0)) == 12)) {
 		pr_debug("GFXOFF is %s\n", idle ? "enabled" : "disabled");
 		amdgpu_gfx_off_ctrl(adev, idle);
 	} else if ((IP_VERSION_MAJ(amdgpu_ip_version(adev, GC_HWIP, 0)) == 9) &&
drivers/gpu/drm/amd/amdgpu/amdgpu_fw_attestation.c +4 -0
index 2d4b67175b55..328a1b963548 100644
@@ -122,6 +122,10 @@ static int amdgpu_is_fw_attestation_supported(struct amdgpu_device *adev)
 	if (adev->flags & AMD_IS_APU)
 		return 0;
 
+	if (amdgpu_ip_version(adev, MP0_HWIP, 0) == IP_VERSION(14, 0, 2) ||
+	    amdgpu_ip_version(adev, MP0_HWIP, 0) == IP_VERSION(14, 0, 3))
+		return 0;
+
 	if (adev->asic_type >= CHIP_SIENNA_CICHLID)
 		return 1;
 
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c +2 -2
index 8b512dc28df8..071f187f5e28 100644
@@ -193,8 +193,8 @@ int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned int num_ibs,
 	need_ctx_switch = ring->current_ctx != fence_ctx;
 	if (ring->funcs->emit_pipeline_sync && job &&
 	    ((tmp = amdgpu_sync_get_fence(&job->explicit_sync)) ||
-	     (amdgpu_sriov_vf(adev) && need_ctx_switch) ||
-	     amdgpu_vm_need_pipeline_sync(ring, job))) {
+	     need_ctx_switch || amdgpu_vm_need_pipeline_sync(ring, job))) {
+
 		need_pipe_sync = true;
 
 		if (tmp)
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +30 -11

93 lines not on this page · raw message

drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crc.c +16 -9
index f936a35fa9eb..0f6ba7b1575d 100644
@@ -30,6 +30,7 @@
 #include "amdgpu_dm.h"
 #include "dc.h"
 #include "amdgpu_securedisplay.h"
+#include "amdgpu_dm_psr.h"
 
 static const char *const pipe_crc_sources[] = {
 	"none",
@@ -224,6 +225,10 @@ int amdgpu_dm_crtc_configure_crc_source(struct drm_crtc *crtc,
 
 	mutex_lock(&adev->dm.dc_lock);
 
+	/* For PSR1, check that the panel has exited PSR */
+	if (stream_state->link->psr_settings.psr_version < DC_PSR_VERSION_SU_1)
+		amdgpu_dm_psr_wait_disable(stream_state);
+
 	/* Enable or disable CRTC CRC generation */
 	if (dm_is_crc_source_crtc(source) || source == AMDGPU_DM_PIPE_CRC_SOURCE_NONE) {
 		if (!dc_stream_configure_crc(stream_state->ctx->dc,
@@ -357,6 +362,17 @@ int amdgpu_dm_crtc_set_crc_source(struct drm_crtc *crtc, const char *src_name)
 
 	}
 
+	/*
+	 * Reading the CRC requires the vblank interrupt handler to be
+	 * enabled. Keep a reference until CRC capture stops.
+	 */
+	enabled = amdgpu_dm_is_valid_crc_source(cur_crc_src);
+	if (!enabled && enable) {
+		ret = drm_crtc_vblank_get(crtc);
+		if (ret)
+			goto cleanup;
+	}
+
 #if defined(CONFIG_DRM_AMD_SECURE_DISPLAY)
 	/* Reset secure_display when we change crc source from debugfs */
 	amdgpu_dm_set_crc_window_default(crtc, crtc_state->stream);
@@ -367,16 +383,7 @@ int amdgpu_dm_crtc_set_crc_source(struct drm_crtc *crtc, const char *src_name)
 		goto cleanup;
 	}
 
-	/*
-	 * Reading the CRC requires the vblank interrupt handler to be
-	 * enabled. Keep a reference until CRC capture stops.
-	 */
-	enabled = amdgpu_dm_is_valid_crc_source(cur_crc_src);
 	if (!enabled && enable) {
-		ret = drm_crtc_vblank_get(crtc);
-		if (ret)
-			goto cleanup;
-
 		if (dm_is_crc_source_dprx(source)) {
 			if (drm_dp_start_crc(aux, crtc)) {
 				DRM_DEBUG_DRIVER("dp start crc failed\n");
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c +2 -2
index 9be87b532517..70fcfae8e4c5 100644
@@ -93,7 +93,7 @@ int amdgpu_dm_crtc_set_vupdate_irq(struct drm_crtc *crtc, bool enable)
 	return rc;
 }
 
-bool amdgpu_dm_crtc_vrr_active(struct dm_crtc_state *dm_state)
+bool amdgpu_dm_crtc_vrr_active(const struct dm_crtc_state *dm_state)
 {
 	return dm_state->freesync_config.state == VRR_STATE_ACTIVE_VARIABLE ||
 	       dm_state->freesync_config.state == VRR_STATE_ACTIVE_FIXED;
@@ -142,7 +142,7 @@ static void amdgpu_dm_crtc_set_panel_sr_feature(
 		amdgpu_dm_replay_enable(vblank_work->stream, true);
 	} else if (vblank_enabled) {
 		if (link->psr_settings.psr_version < DC_PSR_VERSION_SU_1 && is_sr_active)
-			amdgpu_dm_psr_disable(vblank_work->stream);
+			amdgpu_dm_psr_disable(vblank_work->stream, false);
 	} else if (link->psr_settings.psr_feature_enabled &&
 		allow_sr_entry && !is_sr_active && !is_crc_window_active) {
 
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.h +1 -1
index 17e948753f59..c1212947a77b 100644
@@ -37,7 +37,7 @@ int amdgpu_dm_crtc_set_vupdate_irq(struct drm_crtc *crtc, bool enable);
 
 bool amdgpu_dm_crtc_vrr_active_irq(struct amdgpu_crtc *acrtc);
 
-bool amdgpu_dm_crtc_vrr_active(struct dm_crtc_state *dm_state);
+bool amdgpu_dm_crtc_vrr_active(const struct dm_crtc_state *dm_state);
 
 int amdgpu_dm_crtc_enable_vblank(struct drm_crtc *crtc);
 
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c +1 -1
index db56b0aa5454..98e88903d07d 100644
@@ -3638,7 +3638,7 @@ static int crc_win_update_set(void *data, u64 val)
 		/* PSR may write to OTG CRC window control register,
 		 * so close it before starting secure_display.
 		 */
-		amdgpu_dm_psr_disable(acrtc->dm_irq_params.stream);
+		amdgpu_dm_psr_disable(acrtc->dm_irq_params.stream, true);
 
 		spin_lock_irq(&adev_to_drm(adev)->event_lock);
 
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c +9 -5
index 32b025c92c63..3d624ae6d9bd 100644
@@ -1831,11 +1831,15 @@ enum dc_status dm_dp_mst_is_port_support_mode(
 			if (immediate_upstream_port) {
 				virtual_channel_bw_in_kbps = kbps_from_pbn(immediate_upstream_port->full_pbn);
 				virtual_channel_bw_in_kbps = min(root_link_bw_in_kbps, virtual_channel_bw_in_kbps);
-				if (bw_range.min_kbps > virtual_channel_bw_in_kbps) {
-					DRM_DEBUG_DRIVER("MST_DSC dsc decode at last link."
-							 "Max dsc compression can't fit into MST available bw\n");
-					return DC_FAIL_BANDWIDTH_VALIDATE;
-				}
+			} else {
+				/* For topology LCT 1 case - only one mstb*/
+				virtual_channel_bw_in_kbps = root_link_bw_in_kbps;
+			}
+
+			if (bw_range.min_kbps > virtual_channel_bw_in_kbps) {
+				DRM_DEBUG_DRIVER("MST_DSC dsc decode at last link."
+						 "Max dsc compression can't fit into MST available bw\n");
+				return DC_FAIL_BANDWIDTH_VALIDATE;
 			}
 		}
 
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_psr.c +32 -3
index f40240aafe98..45858bf1523d 100644
@@ -201,14 +201,13 @@ void amdgpu_dm_psr_enable(struct dc_stream_state *stream)
  *
  * Return: true if success
  */
-bool amdgpu_dm_psr_disable(struct dc_stream_state *stream)
+bool amdgpu_dm_psr_disable(struct dc_stream_state *stream, bool wait)
 {
-	unsigned int power_opt = 0;
 	bool psr_enable = false;
 
 	DRM_DEBUG_DRIVER("Disabling psr...\n");
 
-	return dc_link_set_psr_allow_active(stream->link, &psr_enable, true, false, &power_opt);
+	return dc_link_set_psr_allow_active(stream->link, &psr_enable, wait, false, NULL);
 }
 
 /*
@@ -251,3 +250,33 @@ bool amdgpu_dm_psr_is_active_allowed(struct amdgpu_display_manager *dm)
 
 	return allow_active;
 }
+
+/**
+ * amdgpu_dm_psr_wait_disable() - Wait for eDP panel to exit PSR
+ * @stream: stream state attached to the eDP link
+ *
+ * Waits for a max of 500ms for the eDP panel to exit PSR.
+ *
+ * Return: true if panel exited PSR, false otherwise.
+ */
+bool amdgpu_dm_psr_wait_disable(struct dc_stream_state *stream)
+{
+	enum dc_psr_state psr_state = PSR_STATE0;
+	struct dc_link *link = stream->link;
+	int retry_count;
+
+	if (link == NULL)
+		return false;
+
+	for (retry_count = 0; retry_count <= 1000; retry_count++) {
+		dc_link_get_psr_state(link, &psr_state);
+		if (psr_state == PSR_STATE0)
+			break;
+		udelay(500);
+	}
+
+	if (retry_count == 1000)
+		return false;
+
+	return true;
+}
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_psr.h +2 -1
index cd2d45c2b5ef..e2366321a3c1 100644
@@ -34,8 +34,9 @@
 void amdgpu_dm_set_psr_caps(struct dc_link *link);
 void amdgpu_dm_psr_enable(struct dc_stream_state *stream);
 bool amdgpu_dm_link_setup_psr(struct dc_stream_state *stream);
-bool amdgpu_dm_psr_disable(struct dc_stream_state *stream);
+bool amdgpu_dm_psr_disable(struct dc_stream_state *stream, bool wait);
 bool amdgpu_dm_psr_disable_all(struct amdgpu_display_manager *dm);
 bool amdgpu_dm_psr_is_active_allowed(struct amdgpu_display_manager *dm);
+bool amdgpu_dm_psr_wait_disable(struct dc_stream_state *stream);
 
 #endif /* AMDGPU_DM_AMDGPU_DM_PSR_H_ */
drivers/gpu/drm/amd/display/dc/dml/dcn35/dcn35_fpu.c +2 -2
index beed7adbbd43..47d785204f29 100644
@@ -195,9 +195,9 @@ struct _vcs_dpi_soc_bounding_box_st dcn3_5_soc = {
 	.dcn_downspread_percent = 0.5,
 	.gpuvm_min_page_size_bytes = 4096,
 	.hostvm_min_page_size_bytes = 4096,
-	.do_urgent_latency_adjustment = 1,
+	.do_urgent_latency_adjustment = 0,
 	.urgent_latency_adjustment_fabric_clock_component_us = 0,
-	.urgent_latency_adjustment_fabric_clock_reference_mhz = 3000,
+	.urgent_latency_adjustment_fabric_clock_reference_mhz = 0,
 };
 
 void dcn35_build_wm_range_table_fpu(struct clk_mgr *clk_mgr)
drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c +6 -5
index cd2cf0ffc0f5..5a0a10144a73 100644
@@ -2549,11 +2549,12 @@ static int smu_v13_0_0_set_power_profile_mode(struct smu_context *smu,
 					  &backend_workload_mask);
 
 	/* Add optimizations for SMU13.0.0/10.  Reuse the power saving profile */
-	if ((amdgpu_ip_version(smu->adev, MP1_HWIP, 0) == IP_VERSION(13, 0, 0) &&
-	     ((smu->adev->pm.fw_version == 0x004e6601) ||
-	      (smu->adev->pm.fw_version >= 0x004e7300))) ||
-	    (amdgpu_ip_version(smu->adev, MP1_HWIP, 0) == IP_VERSION(13, 0, 10) &&
-	     smu->adev->pm.fw_version >= 0x00504500)) {
+	if ((workload_mask & (1 << PP_SMC_POWER_PROFILE_COMPUTE)) &&
+	    ((amdgpu_ip_version(smu->adev, MP1_HWIP, 0) == IP_VERSION(13, 0, 0) &&
+	      ((smu->adev->pm.fw_version == 0x004e6601) ||
+	       (smu->adev->pm.fw_version >= 0x004e7300))) ||
+	     (amdgpu_ip_version(smu->adev, MP1_HWIP, 0) == IP_VERSION(13, 0, 10) &&
+	      smu->adev->pm.fw_version >= 0x00504500))) {
 		workload_type = smu_cmn_to_asic_specific_index(smu,
 							       CMN2ASIC_MAPPING_WORKLOAD,
 							       PP_SMC_POWER_PROFILE_POWERSAVING);
drivers/gpu/drm/i915/display/intel_fb.c +1 -1
index 35557d98d7a7..3d16e9406dc6 100644
@@ -1613,7 +1613,7 @@ int intel_fill_fb_info(struct drm_i915_private *i915, struct intel_framebuffer *
 		 * arithmetic related to alignment and offset calculation.
 		 */
 		if (is_gen12_ccs_cc_plane(&fb->base, i)) {
-			if (IS_ALIGNED(fb->base.offsets[i], PAGE_SIZE))
+			if (IS_ALIGNED(fb->base.offsets[i], 64))
 				continue;
 			else
 				return -EINVAL;
drivers/gpu/drm/nouveau/nouveau_fence.c +4 -2
index 09686d038d60..7cc84472cece 100644
@@ -387,11 +387,13 @@ nouveau_fence_sync(struct nouveau_bo *nvbo, struct nouveau_channel *chan,
 			if (f) {
 				struct nouveau_channel *prev;
 				bool must_wait = true;
+				bool local;
 
 				rcu_read_lock();
 				prev = rcu_dereference(f->channel);
-				if (prev && (prev == chan ||
-					     fctx->sync(f, prev, chan) == 0))
+				local = prev && prev->cli->drm == chan->cli->drm;
+				if (local && (prev == chan ||
+					      fctx->sync(f, prev, chan) == 0))
 					must_wait = false;
 				rcu_read_unlock();
 				if (!must_wait)
drivers/gpu/drm/nouveau/nvkm/engine/disp/mcp77.c +1 -0
index 841e3b69fcaf..5a0c9b8a79f3 100644
@@ -31,6 +31,7 @@ mcp77_sor = {
 	.state = g94_sor_state,
 	.power = nv50_sor_power,
 	.clock = nv50_sor_clock,
+	.bl = &nv50_sor_bl,
 	.hdmi = &g84_sor_hdmi,
 	.dp = &g94_sor_dp,
 };
drivers/gpu/drm/tests/drm_kunit_helpers.c +1 -2
index 04a6b8cc62ac..3c0b7824c0be 100644
@@ -320,8 +320,7 @@ static void kunit_action_drm_mode_destroy(void *ptr)
 }
 
 /**
- * drm_kunit_display_mode_from_cea_vic() - return a mode for CEA VIC
-					   for a KUnit test
+ * drm_kunit_display_mode_from_cea_vic() - return a mode for CEA VIC for a KUnit test
  * @test: The test context object
  * @dev: DRM device
  * @video_code: CEA VIC of the mode
drivers/gpu/drm/v3d/v3d_irq.c +4 -0
index 20bf33702c3c..da203045df9b 100644
@@ -108,6 +108,7 @@ v3d_irq(int irq, void *arg)
 		v3d_job_update_stats(&v3d->bin_job->base, V3D_BIN);
 		trace_v3d_bcl_irq(&v3d->drm, fence->seqno);
 		dma_fence_signal(&fence->base);
+		v3d->bin_job = NULL;
 		status = IRQ_HANDLED;
 	}
 
@@ -118,6 +119,7 @@ v3d_irq(int irq, void *arg)
 		v3d_job_update_stats(&v3d->render_job->base, V3D_RENDER);
 		trace_v3d_rcl_irq(&v3d->drm, fence->seqno);
 		dma_fence_signal(&fence->base);
+		v3d->render_job = NULL;
 		status = IRQ_HANDLED;
 	}
 
@@ -128,6 +130,7 @@ v3d_irq(int irq, void *arg)
 		v3d_job_update_stats(&v3d->csd_job->base, V3D_CSD);
 		trace_v3d_csd_irq(&v3d->drm, fence->seqno);
 		dma_fence_signal(&fence->base);
+		v3d->csd_job = NULL;
 		status = IRQ_HANDLED;
 	}
 
@@ -165,6 +168,7 @@ v3d_hub_irq(int irq, void *arg)
 		v3d_job_update_stats(&v3d->tfu_job->base, V3D_TFU);
 		trace_v3d_tfu_irq(&v3d->drm, fence->seqno);
 		dma_fence_signal(&fence->base);
+		v3d->tfu_job = NULL;
 		status = IRQ_HANDLED;
 	}
 
drivers/gpu/drm/vmwgfx/vmwgfx_bo.c +2 -1
index a0e433fbcba6..183cda50094c 100644
@@ -443,7 +443,8 @@ static int vmw_bo_init(struct vmw_private *dev_priv,
 
 	if (params->pin)
 		ttm_bo_pin(&vmw_bo->tbo);
-	ttm_bo_unreserve(&vmw_bo->tbo);
+	if (!params->keep_resv)
+		ttm_bo_unreserve(&vmw_bo->tbo);
 
 	return 0;
 }
drivers/gpu/drm/vmwgfx/vmwgfx_bo.h +2 -1
index 43b5439ec9f7..c21ba7ff7736 100644
@@ -56,8 +56,9 @@ struct vmw_bo_params {
 	u32 domain;
 	u32 busy_domain;
 	enum ttm_bo_type bo_type;
-	size_t size;
 	bool pin;
+	bool keep_resv;
+	size_t size;
 	struct dma_resv *resv;
 	struct sg_table *sg;
 };
drivers/gpu/drm/vmwgfx/vmwgfx_drv.c +2 -5
index 2825dd3149ed..2e84e1029732 100644
@@ -401,7 +401,8 @@ static int vmw_dummy_query_bo_create(struct vmw_private *dev_priv)
 		.busy_domain = VMW_BO_DOMAIN_SYS,
 		.bo_type = ttm_bo_type_kernel,
 		.size = PAGE_SIZE,
-		.pin = true
+		.pin = true,
+		.keep_resv = true,
 	};
 
 	/*
@@ -413,10 +414,6 @@ static int vmw_dummy_query_bo_create(struct vmw_private *dev_priv)
 	if (unlikely(ret != 0))
 		return ret;
 
-	ret = ttm_bo_reserve(&vbo->tbo, false, true, NULL);
-	BUG_ON(ret != 0);
-	vmw_bo_pin_reserved(vbo, true);
-
 	ret = ttm_bo_kmap(&vbo->tbo, 0, 1, &map);
 	if (likely(ret == 0)) {
 		result = ttm_kmap_obj_virtual(&map, &dummy);
drivers/gpu/drm/vmwgfx/vmwgfx_gem.c +1 -0
index b9857f37ca1a..ed5015ced392 100644
@@ -206,6 +206,7 @@ struct drm_gem_object *vmw_prime_import_sg_table(struct drm_device *dev,
 		.bo_type = ttm_bo_type_sg,
 		.size = attach->dmabuf->size,
 		.pin = false,
+		.keep_resv = true,
 		.resv = attach->dmabuf->resv,
 		.sg = table,
 
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c +15 -5
index 10d596cb4b40..5f99f7437ae6 100644
@@ -750,6 +750,7 @@ vmw_du_cursor_plane_atomic_update(struct drm_plane *plane,
 	struct vmw_plane_state *old_vps = vmw_plane_state_to_vps(old_state);
 	struct vmw_bo *old_bo = NULL;
 	struct vmw_bo *new_bo = NULL;
+	struct ww_acquire_ctx ctx;
 	s32 hotspot_x, hotspot_y;
 	int ret;
 
@@ -769,9 +770,11 @@ vmw_du_cursor_plane_atomic_update(struct drm_plane *plane,
 	if (du->cursor_surface)
 		du->cursor_age = du->cursor_surface->snooper.age;
 
+	ww_acquire_init(&ctx, &reservation_ww_class);
+
 	if (!vmw_user_object_is_null(&old_vps->uo)) {
 		old_bo = vmw_user_object_buffer(&old_vps->uo);
-		ret = ttm_bo_reserve(&old_bo->tbo, false, false, NULL);
+		ret = ttm_bo_reserve(&old_bo->tbo, false, false, &ctx);
 		if (ret != 0)
 			return;
 	}
@@ -779,9 +782,14 @@ vmw_du_cursor_plane_atomic_update(struct drm_plane *plane,
 	if (!vmw_user_object_is_null(&vps->uo)) {
 		new_bo = vmw_user_object_buffer(&vps->uo);
 		if (old_bo != new_bo) {
-			ret = ttm_bo_reserve(&new_bo->tbo, false, false, NULL);
-			if (ret != 0)
+			ret = ttm_bo_reserve(&new_bo->tbo, false, false, &ctx);
+			if (ret != 0) {
+				if (old_bo) {
+					ttm_bo_unreserve(&old_bo->tbo);
+					ww_acquire_fini(&ctx);
+				}
 				return;
+			}
 		} else {
 			new_bo = NULL;
 		}
@@ -803,10 +811,12 @@ vmw_du_cursor_plane_atomic_update(struct drm_plane *plane,
 						hotspot_x, hotspot_y);
 	}
 
-	if (old_bo)
-		ttm_bo_unreserve(&old_bo->tbo);
 	if (new_bo)
 		ttm_bo_unreserve(&new_bo->tbo);
+	if (old_bo)
+		ttm_bo_unreserve(&old_bo->tbo);
+
+	ww_acquire_fini(&ctx);
 
 	du->cursor_x = new_state->crtc_x + du->set_gui_x;
 	du->cursor_y = new_state->crtc_y + du->set_gui_y;
drivers/gpu/drm/vmwgfx/vmwgfx_shader.c +2 -5
index a01ca3226d0a..7fb1c88bcc47 100644
@@ -896,7 +896,8 @@ int vmw_compat_shader_add(struct vmw_private *dev_priv,
 		.busy_domain = VMW_BO_DOMAIN_SYS,
 		.bo_type = ttm_bo_type_device,
 		.size = size,
-		.pin = true
+		.pin = true,
+		.keep_resv = true,
 	};
 
 	if (!vmw_shader_id_ok(user_key, shader_type))
@@ -906,10 +907,6 @@ int vmw_compat_shader_add(struct vmw_private *dev_priv,
 	if (unlikely(ret != 0))
 		goto out;
 
-	ret = ttm_bo_reserve(&buf->tbo, false, true, NULL);
-	if (unlikely(ret != 0))
-		goto no_reserve;
-
 	/* Map and copy shader bytecode. */
 	ret = ttm_bo_kmap(&buf->tbo, 0, PFN_UP(size), &map);
 	if (unlikely(ret != 0)) {
drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c +2 -3
index 621d98b376bb..5553892d7c3e 100644
@@ -572,15 +572,14 @@ int vmw_bo_create_and_populate(struct vmw_private *dev_priv,
 		.busy_domain = domain,
 		.bo_type = ttm_bo_type_kernel,
 		.size = bo_size,
-		.pin = true
+		.pin = true,
+		.keep_resv = true,
 	};
 
 	ret = vmw_bo_create(dev_priv, &bo_params, &vbo);
 	if (unlikely(ret != 0))
 		return ret;
 
-	ret = ttm_bo_reserve(&vbo->tbo, false, true, NULL);
-	BUG_ON(ret != 0);
 	ret = vmw_ttm_populate(vbo->tbo.bdev, vbo->tbo.ttm, &ctx);
 	if (likely(ret == 0)) {
 		struct vmw_ttm_tt *vmw_tt =
drivers/gpu/drm/xe/xe_hw_engine.c +1 -1
index 547919e8ce9e..b11bc0f00dfd 100644
@@ -417,7 +417,7 @@ hw_engine_setup_default_state(struct xe_hw_engine *hwe)
 	 * Bspec: 72161
 	 */
 	const u8 mocs_write_idx = gt->mocs.uc_index;
-	const u8 mocs_read_idx = hwe->class == XE_ENGINE_CLASS_COMPUTE &&
+	const u8 mocs_read_idx = hwe->class == XE_ENGINE_CLASS_COMPUTE && IS_DGFX(xe) &&
 				 (GRAPHICS_VER(xe) >= 20 || xe->info.platform == XE_PVC) ?
 				 gt->mocs.wb_index : gt->mocs.uc_index;
 	u32 ring_cmd_cctl_val = REG_FIELD_PREP(CMD_CCTL_WRITE_OVERRIDE_MASK, mocs_write_idx) |
drivers/gpu/drm/xe/xe_oa.c +1 -0
index 78823f53d290..6fc00d63b285 100644
@@ -1980,6 +1980,7 @@ static const struct xe_mmio_range xe2_oa_mux_regs[] = {
 	{ .start = 0x5194, .end = 0x5194 },	/* SYS_MEM_LAT_MEASURE_MERTF_GRP_3D */
 	{ .start = 0x8704, .end = 0x8704 },	/* LMEM_LAT_MEASURE_MCFG_GRP */
 	{ .start = 0xB1BC, .end = 0xB1BC },	/* L3_BANK_LAT_MEASURE_LBCF_GFX */
+	{ .start = 0xD0E0, .end = 0xD0F4 },	/* VISACTL */
 	{ .start = 0xE18C, .end = 0xE18C },	/* SAMPLER_MODE */
 	{ .start = 0xE590, .end = 0xE590 },	/* TDL_LSC_LAT_MEASURE_TDL_GFX */
 	{ .start = 0x13000, .end = 0x137FC },	/* PES_0_PESL0 - PES_63_UPPER_PESL3 */
drivers/hwmon/ltc2991.c +1 -1
index 7ca139e4b6af..6d5d4cb846da 100644
@@ -125,7 +125,7 @@ static int ltc2991_get_curr(struct ltc2991_state *st, u32 reg, int channel,
 
 	/* Vx-Vy, 19.075uV/LSB */
 	*val = DIV_ROUND_CLOSEST(sign_extend32(reg_val, 14) * 19075,
-				 st->r_sense_uohm[channel]);
+				 (s32)st->r_sense_uohm[channel]);
 
 	return 0;
 }
drivers/hwmon/tmp513.c +4 -3
index 1c2cb12071b8..5acbfd7d088d 100644
@@ -207,7 +207,8 @@ static int tmp51x_get_value(struct tmp51x_data *data, u8 reg, u8 pos,
 		*val = sign_extend32(regval,
 				     reg == TMP51X_SHUNT_CURRENT_RESULT ?
 				     16 - tmp51x_get_pga_shift(data) : 15);
-		*val = DIV_ROUND_CLOSEST(*val * 10 * MILLI, data->shunt_uohms);
+		*val = DIV_ROUND_CLOSEST(*val * 10 * (long)MILLI, (long)data->shunt_uohms);
+
 		break;
 	case TMP51X_BUS_VOLTAGE_RESULT:
 	case TMP51X_BUS_VOLTAGE_H_LIMIT:
@@ -223,7 +224,7 @@ static int tmp51x_get_value(struct tmp51x_data *data, u8 reg, u8 pos,
 	case TMP51X_BUS_CURRENT_RESULT:
 		// Current = (ShuntVoltage * CalibrationRegister) / 4096
 		*val = sign_extend32(regval, 15) * (long)data->curr_lsb_ua;
-		*val = DIV_ROUND_CLOSEST(*val, MILLI);
+		*val = DIV_ROUND_CLOSEST(*val, (long)MILLI);
 		break;
 	case TMP51X_LOCAL_TEMP_RESULT:
 	case TMP51X_REMOTE_TEMP_RESULT_1:
@@ -263,7 +264,7 @@ static int tmp51x_set_value(struct tmp51x_data *data, u8 reg, long val)
 		 * The user enter current value and we convert it to
 		 * voltage. 1lsb = 10uV
 		 */
-		val = DIV_ROUND_CLOSEST(val * data->shunt_uohms, 10 * MILLI);
+		val = DIV_ROUND_CLOSEST(val * (long)data->shunt_uohms, 10 * (long)MILLI);
 		max_val = U16_MAX >> tmp51x_get_pga_shift(data);
 		regval = clamp_val(val, -max_val, max_val);
 		break;
drivers/i2c/busses/i2c-rcar.c +15 -5
index 9267df38c2d0..399122414821 100644
@@ -130,6 +130,8 @@
 #define ID_P_PM_BLOCKED		BIT(31)
 #define ID_P_MASK		GENMASK(31, 27)
 
+#define ID_SLAVE_NACK		BIT(0)
+
 enum rcar_i2c_type {
 	I2C_RCAR_GEN1,
 	I2C_RCAR_GEN2,
@@ -166,6 +168,7 @@ struct rcar_i2c_priv {
 	int irq;
 
 	struct i2c_client *host_notify_client;
+	u8 slave_flags;
 };
 
 #define rcar_i2c_priv_to_dev(p)		((p)->adap.dev.parent)
@@ -655,6 +658,7 @@ static bool rcar_i2c_slave_irq(struct rcar_i2c_priv *priv)
 {
 	u32 ssr_raw, ssr_filtered;
 	u8 value;
+	int ret;
 
 	ssr_raw = rcar_i2c_read(priv, ICSSR) & 0xff;
 	ssr_filtered = ssr_raw & rcar_i2c_read(priv, ICSIER);
@@ -670,7 +674,10 @@ static bool rcar_i2c_slave_irq(struct rcar_i2c_priv *priv)
 			rcar_i2c_write(priv, ICRXTX, value);
 			rcar_i2c_write(priv, ICSIER, SDE | SSR | SAR);
 		} else {
-			i2c_slave_event(priv->slave, I2C_SLAVE_WRITE_REQUESTED, &value);
+			ret = i2c_slave_event(priv->slave, I2C_SLAVE_WRITE_REQUESTED, &value);
+			if (ret)
+				priv->slave_flags |= ID_SLAVE_NACK;
+
 			rcar_i2c_read(priv, ICRXTX);	/* dummy read */
 			rcar_i2c_write(priv, ICSIER, SDR | SSR | SAR);
 		}
@@ -683,18 +690,21 @@ static bool rcar_i2c_slave_irq(struct rcar_i2c_priv *priv)
 	if (ssr_filtered & SSR) {
 		i2c_slave_event(priv->slave, I2C_SLAVE_STOP, &value);
 		rcar_i2c_write(priv, ICSCR, SIE | SDBS); /* clear our NACK */
+		priv->slave_flags &= ~ID_SLAVE_NACK;
 		rcar_i2c_write(priv, ICSIER, SAR);
 		rcar_i2c_write(priv, ICSSR, ~SSR & 0xff);
 	}
 
 	/* master wants to write to us */
 	if (ssr_filtered & SDR) {
-		int ret;
-
 		value = rcar_i2c_read(priv, ICRXTX);
 		ret = i2c_slave_event(priv->slave, I2C_SLAVE_WRITE_RECEIVED, &value);
-		/* Send NACK in case of error */
-		rcar_i2c_write(priv, ICSCR, SIE | SDBS | (ret < 0 ? FNA : 0));
+		if (ret)
+			priv->slave_flags |= ID_SLAVE_NACK;
+
+		/* Send NACK in case of error, but it will come 1 byte late :( */
+		rcar_i2c_write(priv, ICSCR, SIE | SDBS |
+			       (priv->slave_flags & ID_SLAVE_NACK ? FNA : 0));
 		rcar_i2c_write(priv, ICSSR, ~SDR & 0xff);
 	}
 
drivers/i2c/i2c-atr.c +1 -1
index f21475ae5921..0d54d0b5e327 100644
@@ -412,7 +412,7 @@ static int i2c_atr_bus_notifier_call(struct notifier_block *nb,
 				dev_name(dev), ret);
 		break;
 
-	case BUS_NOTIFY_DEL_DEVICE:
+	case BUS_NOTIFY_REMOVED_DEVICE:
 		i2c_atr_detach_client(client->adapter, client);
 		break;
 
drivers/i2c/i2c-core-base.c +1 -0
index 7c810893bfa3..75d30861ffe2 100644
@@ -1562,6 +1562,7 @@ static int i2c_register_adapter(struct i2c_adapter *adap)
 	res = device_add(&adap->dev);
 	if (res) {
 		pr_err("adapter '%s': can't register device (%d)\n", adap->name, res);
+		put_device(&adap->dev);
 		goto out_list;
 	}
 
drivers/i2c/i2c-slave-testunit.c +15 -4
index 9fe3150378e8..7ae0c7902f67 100644
@@ -38,6 +38,7 @@ enum testunit_regs {
 
 enum testunit_flags {
 	TU_FLAG_IN_PROCESS,
+	TU_FLAG_NACK,
 };
 
 struct testunit_data {
@@ -90,8 +91,10 @@ static int i2c_slave_testunit_slave_cb(struct i2c_client *client,
 
 	switch (event) {
 	case I2C_SLAVE_WRITE_REQUESTED:
-		if (test_bit(TU_FLAG_IN_PROCESS, &tu->flags))
-			return -EBUSY;
+		if (test_bit(TU_FLAG_IN_PROCESS | TU_FLAG_NACK, &tu->flags)) {
+			ret = -EBUSY;
+			break;
+		}
 
 		memset(tu->regs, 0, TU_NUM_REGS);
 		tu->reg_idx = 0;
@@ -99,8 +102,10 @@ static int i2c_slave_testunit_slave_cb(struct i2c_client *client,
 		break;
 
 	case I2C_SLAVE_WRITE_RECEIVED:
-		if (test_bit(TU_FLAG_IN_PROCESS, &tu->flags))
-			return -EBUSY;
+		if (test_bit(TU_FLAG_IN_PROCESS | TU_FLAG_NACK, &tu->flags)) {
+			ret = -EBUSY;
+			break;
+		}
 
 		if (tu->reg_idx < TU_NUM_REGS)
 			tu->regs[tu->reg_idx] = *val;
@@ -129,6 +134,8 @@ static int i2c_slave_testunit_slave_cb(struct i2c_client *client,
 		 * here because we still need them in the workqueue!
 		 */
 		tu->reg_idx = 0;
+
+		clear_bit(TU_FLAG_NACK, &tu->flags);
 		break;
 
 	case I2C_SLAVE_READ_PROCESSED:
@@ -151,6 +158,10 @@ static int i2c_slave_testunit_slave_cb(struct i2c_client *client,
 		break;
 	}
 
+	/* If an error occurred somewhen, we NACK everything until next STOP */
+	if (ret)
+		set_bit(TU_FLAG_NACK, &tu->flags);
+
 	return ret;
 }
 
drivers/i2c/muxes/i2c-demux-pinctrl.c +3 -1
index 7e2686b606c0..cec7f3447e19 100644
@@ -261,7 +261,9 @@ static int i2c_demux_pinctrl_probe(struct platform_device *pdev)
 	pm_runtime_no_callbacks(&pdev->dev);
 
 	/* switch to first parent as active master */
-	i2c_demux_activate_master(priv, 0);
+	err = i2c_demux_activate_master(priv, 0);
+	if (err)
+		goto err_rollback;
 
 	err = device_create_file(&pdev->dev, &dev_attr_available_masters);
 	if (err)
drivers/infiniband/hw/bnxt_re/ib_verbs.c +1 -0
index b20cffcc3e7d..14e434ff51ed 100644
@@ -2269,6 +2269,7 @@ int bnxt_re_query_qp(struct ib_qp *ib_qp, struct ib_qp_attr *qp_attr,
 	qp_attr->retry_cnt = qplib_qp->retry_cnt;
 	qp_attr->rnr_retry = qplib_qp->rnr_retry;
 	qp_attr->min_rnr_timer = qplib_qp->min_rnr_timer;
+	qp_attr->port_num = __to_ib_port_num(qplib_qp->port_id);
 	qp_attr->rq_psn = qplib_qp->rq.psn;
 	qp_attr->max_rd_atomic = qplib_qp->max_rd_atomic;
 	qp_attr->sq_psn = qplib_qp->sq.psn;
drivers/infiniband/hw/bnxt_re/ib_verbs.h +4 -0
index b789e47ec97a..9cd8f770d1b2 100644
@@ -264,6 +264,10 @@ void bnxt_re_dealloc_ucontext(struct ib_ucontext *context);
 int bnxt_re_mmap(struct ib_ucontext *context, struct vm_area_struct *vma);
 void bnxt_re_mmap_free(struct rdma_user_mmap_entry *rdma_entry);
 
+static inline u32 __to_ib_port_num(u16 port_id)
+{
+	return (u32)port_id + 1;
+}
 
 unsigned long bnxt_re_lock_cqs(struct bnxt_re_qp *qp);
 void bnxt_re_unlock_cqs(struct bnxt_re_qp *qp, unsigned long flags);
drivers/infiniband/hw/bnxt_re/qplib_fp.c +1 -0
index 828e2f980801..613b5fc70e13 100644
@@ -1479,6 +1479,7 @@ int bnxt_qplib_query_qp(struct bnxt_qplib_res *res, struct bnxt_qplib_qp *qp)
 	qp->dest_qpn = le32_to_cpu(sb->dest_qp_id);
 	memcpy(qp->smac, sb->src_mac, 6);
 	qp->vlan_id = le16_to_cpu(sb->vlan_pcp_vlan_dei_vlan_id);
+	qp->port_id = le16_to_cpu(sb->port_id);
 bail:
 	dma_free_coherent(&rcfw->pdev->dev, sbuf.size,
 			  sbuf.sb, sbuf.dma_addr);
drivers/infiniband/hw/bnxt_re/qplib_fp.h +1 -0
index d8c71c024613..6f02954eb142 100644
@@ -298,6 +298,7 @@ struct bnxt_qplib_qp {
 	u32				dest_qpn;
 	u8				smac[6];
 	u16				vlan_id;
+	u16				port_id;
 	u8				nw_type;
 	struct bnxt_qplib_ah		ah;
 
drivers/irqchip/irq-gic-v3-its.c +1 -1
index d9b6ec844cdd..0d3a889b1905 100644
@@ -1961,7 +1961,7 @@ static int its_irq_set_vcpu_affinity(struct irq_data *d, void *vcpu_info)
 	if (!is_v4(its_dev->its))
 		return -EINVAL;
 
-	guard(raw_spinlock_irq)(&its_dev->event_map.vlpi_lock);
+	guard(raw_spinlock)(&its_dev->event_map.vlpi_lock);
 
 	/* Unmap request? */
 	if (!info)
drivers/irqchip/irq-gic-v3.c +1 -1
index b0bfb61539c2..8fdee511bc0f 100644
@@ -1522,7 +1522,7 @@ static int gic_retrigger(struct irq_data *data)
 static int gic_cpu_pm_notifier(struct notifier_block *self,
 			       unsigned long cmd, void *v)
 {
-	if (cmd == CPU_PM_EXIT) {
+	if (cmd == CPU_PM_EXIT || cmd == CPU_PM_ENTER_FAILED) {
 		if (gic_dist_security_disabled())
 			gic_enable_redist(true);
 		gic_cpu_sys_reg_enable();
drivers/irqchip/irqchip.c +1 -3
index 1eeb0d0156ce..0ee7b6b71f5f 100644
@@ -35,11 +35,10 @@ void __init irqchip_init(void)
 int platform_irqchip_probe(struct platform_device *pdev)
 {
 	struct device_node *np = pdev->dev.of_node;
-	struct device_node *par_np = of_irq_find_parent(np);
+	struct device_node *par_np __free(device_node) = of_irq_find_parent(np);
 	of_irq_init_cb_t irq_init_cb = of_device_get_match_data(&pdev->dev);
 
 	if (!irq_init_cb) {
-		of_node_put(par_np);
 		return -EINVAL;
 	}
 
@@ -55,7 +54,6 @@ int platform_irqchip_probe(struct platform_device *pdev)
 	 * interrupt controller can check for specific domains as necessary.
 	 */
 	if (par_np && !irq_find_matching_host(par_np, DOMAIN_BUS_ANY)) {
-		of_node_put(par_np);
 		return -EPROBE_DEFER;
 	}
 
drivers/mtd/spi-nor/core.c +1 -1
index 8c57df44c40f..9d6e85bf227b 100644
@@ -89,7 +89,7 @@ void spi_nor_spimem_setup_op(const struct spi_nor *nor,
 		op->addr.buswidth = spi_nor_get_protocol_addr_nbits(proto);
 
 	if (op->dummy.nbytes)
-		op->dummy.buswidth = spi_nor_get_protocol_data_nbits(proto);
+		op->dummy.buswidth = spi_nor_get_protocol_addr_nbits(proto);
 
 	if (op->data.nbytes)
 		op->data.buswidth = spi_nor_get_protocol_data_nbits(proto);
drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c +2 -17
index 6a716337f48b..268399dfcf22 100644
@@ -923,7 +923,6 @@ static void xgbe_phy_free_phy_device(struct xgbe_prv_data *pdata)
 
 static bool xgbe_phy_finisar_phy_quirks(struct xgbe_prv_data *pdata)
 {
-	__ETHTOOL_DECLARE_LINK_MODE_MASK(supported) = { 0, };
 	struct xgbe_phy_data *phy_data = pdata->phy_data;
 	unsigned int phy_id = phy_data->phydev->phy_id;
 
@@ -945,14 +944,7 @@ static bool xgbe_phy_finisar_phy_quirks(struct xgbe_prv_data *pdata)
 	phy_write(phy_data->phydev, 0x04, 0x0d01);
 	phy_write(phy_data->phydev, 0x00, 0x9140);
 
-	linkmode_set_bit_array(phy_10_100_features_array,
-			       ARRAY_SIZE(phy_10_100_features_array),
-			       supported);
-	linkmode_set_bit_array(phy_gbit_features_array,
-			       ARRAY_SIZE(phy_gbit_features_array),
-			       supported);
-
-	linkmode_copy(phy_data->phydev->supported, supported);
+	linkmode_copy(phy_data->phydev->supported, PHY_GBIT_FEATURES);
 
 	phy_support_asym_pause(phy_data->phydev);
 
@@ -964,7 +956,6 @@ static bool xgbe_phy_finisar_phy_quirks(struct xgbe_prv_data *pdata)
 
 static bool xgbe_phy_belfuse_phy_quirks(struct xgbe_prv_data *pdata)
 {
-	__ETHTOOL_DECLARE_LINK_MODE_MASK(supported) = { 0, };
 	struct xgbe_phy_data *phy_data = pdata->phy_data;
 	struct xgbe_sfp_eeprom *sfp_eeprom = &phy_data->sfp_eeprom;
 	unsigned int phy_id = phy_data->phydev->phy_id;
@@ -1028,13 +1019,7 @@ static bool xgbe_phy_belfuse_phy_quirks(struct xgbe_prv_data *pdata)
 	reg = phy_read(phy_data->phydev, 0x00);
 	phy_write(phy_data->phydev, 0x00, reg & ~0x00800);
 
-	linkmode_set_bit_array(phy_10_100_features_array,
-			       ARRAY_SIZE(phy_10_100_features_array),
-			       supported);
-	linkmode_set_bit_array(phy_gbit_features_array,
-			       ARRAY_SIZE(phy_gbit_features_array),
-			       supported);
-	linkmode_copy(phy_data->phydev->supported, supported);
+	linkmode_copy(phy_data->phydev->supported, PHY_GBIT_FEATURES);
 	phy_support_asym_pause(phy_data->phydev);
 
 	netif_dbg(pdata, drv, pdata->netdev,
drivers/net/ethernet/broadcom/bnxt/bnxt.c +20 -5
index c255445e97f3..603e9c968c44 100644
@@ -4558,7 +4558,7 @@ void bnxt_set_ring_params(struct bnxt *bp)
 /* Changing allocation mode of RX rings.
  * TODO: Update when extending xdp_rxq_info to support allocation modes.
  */
-int bnxt_set_rx_skb_mode(struct bnxt *bp, bool page_mode)
+static void __bnxt_set_rx_skb_mode(struct bnxt *bp, bool page_mode)
 {
 	struct net_device *dev = bp->dev;
 
@@ -4579,15 +4579,30 @@ int bnxt_set_rx_skb_mode(struct bnxt *bp, bool page_mode)
 			bp->rx_skb_func = bnxt_rx_page_skb;
 		}
 		bp->rx_dir = DMA_BIDIRECTIONAL;
-		/* Disable LRO or GRO_HW */
-		netdev_update_features(dev);
 	} else {
 		dev->max_mtu = bp->max_mtu;
 		bp->flags &= ~BNXT_FLAG_RX_PAGE_MODE;
 		bp->rx_dir = DMA_FROM_DEVICE;
 		bp->rx_skb_func = bnxt_rx_skb;
 	}
-	return 0;
+}
+
+void bnxt_set_rx_skb_mode(struct bnxt *bp, bool page_mode)
+{
+	__bnxt_set_rx_skb_mode(bp, page_mode);
+
+	if (!page_mode) {
+		int rx, tx;
+
+		bnxt_get_max_rings(bp, &rx, &tx, true);
+		if (rx > 1) {
+			bp->flags &= ~BNXT_FLAG_NO_AGG_RINGS;
+			bp->dev->hw_features |= NETIF_F_LRO;
+		}
+	}
+
+	/* Update LRO and GRO_HW availability */
+	netdev_update_features(bp->dev);
 }
 
 static void bnxt_free_vnic_attributes(struct bnxt *bp)
@@ -15909,7 +15924,7 @@ static int bnxt_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 	if (bp->max_fltr < BNXT_MAX_FLTR)
 		bp->max_fltr = BNXT_MAX_FLTR;
 	bnxt_init_l2_fltr_tbl(bp);
-	bnxt_set_rx_skb_mode(bp, false);
+	__bnxt_set_rx_skb_mode(bp, false);
 	bnxt_set_tpa_flags(bp);
 	bnxt_set_ring_params(bp);
 	bnxt_rdma_aux_device_init(bp);
drivers/net/ethernet/broadcom/bnxt/bnxt.h +1 -1
index 9e05704d9445..bee645f58d0b 100644
@@ -2796,7 +2796,7 @@ void bnxt_reuse_rx_data(struct bnxt_rx_ring_info *rxr, u16 cons, void *data);
 u32 bnxt_fw_health_readl(struct bnxt *bp, int reg_idx);
 void bnxt_set_tpa_flags(struct bnxt *bp);
 void bnxt_set_ring_params(struct bnxt *);
-int bnxt_set_rx_skb_mode(struct bnxt *bp, bool page_mode);
+void bnxt_set_rx_skb_mode(struct bnxt *bp, bool page_mode);
 void bnxt_insert_usr_fltr(struct bnxt *bp, struct bnxt_filter_base *fltr);
 void bnxt_del_one_usr_fltr(struct bnxt *bp, struct bnxt_filter_base *fltr);
 int bnxt_hwrm_func_drv_rgtr(struct bnxt *bp, unsigned long *bmap,
drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c +0 -7
index f88b641533fc..dc51dce209d5 100644
@@ -422,15 +422,8 @@ static int bnxt_xdp_set(struct bnxt *bp, struct bpf_prog *prog)
 		bnxt_set_rx_skb_mode(bp, true);
 		xdp_features_set_redirect_target(dev, true);
 	} else {
-		int rx, tx;
-
 		xdp_features_clear_redirect_target(dev);
 		bnxt_set_rx_skb_mode(bp, false);
-		bnxt_get_max_rings(bp, &rx, &tx, true);
-		if (rx > 1) {
-			bp->flags &= ~BNXT_FLAG_NO_AGG_RINGS;
-			bp->dev->hw_features |= NETIF_F_LRO;
-		}
 	}
 	bp->tx_nr_rings_xdp = tx_xdp;
 	bp->tx_nr_rings = bp->tx_nr_rings_per_tc * tc + tx_xdp;
drivers/net/ethernet/freescale/fec_main.c +14 -5
index 9d9fcec41488..49d1748e0c04 100644
@@ -1591,19 +1591,22 @@ static void fec_enet_tx(struct net_device *ndev, int budget)
 		fec_enet_tx_queue(ndev, i, budget);
 }
 
-static void fec_enet_update_cbd(struct fec_enet_priv_rx_q *rxq,
+static int fec_enet_update_cbd(struct fec_enet_priv_rx_q *rxq,
 				struct bufdesc *bdp, int index)
 {
 	struct page *new_page;
 	dma_addr_t phys_addr;
 
 	new_page = page_pool_dev_alloc_pages(rxq->page_pool);
-	WARN_ON(!new_page);
-	rxq->rx_skb_info[index].page = new_page;
+	if (unlikely(!new_page))
+		return -ENOMEM;
 
+	rxq->rx_skb_info[index].page = new_page;
 	rxq->rx_skb_info[index].offset = FEC_ENET_XDP_HEADROOM;
 	phys_addr = page_pool_get_dma_addr(new_page) + FEC_ENET_XDP_HEADROOM;
 	bdp->cbd_bufaddr = cpu_to_fec32(phys_addr);
+
+	return 0;
 }
 
 static u32
@@ -1698,6 +1701,7 @@ fec_enet_rx_queue(struct net_device *ndev, int budget, u16 queue_id)
 	int cpu = smp_processor_id();
 	struct xdp_buff xdp;
 	struct page *page;
+	__fec32 cbd_bufaddr;
 	u32 sub_len = 4;
 
 #if !defined(CONFIG_M5272)
@@ -1766,12 +1770,17 @@ fec_enet_rx_queue(struct net_device *ndev, int budget, u16 queue_id)
 
 		index = fec_enet_get_bd_index(bdp, &rxq->bd);
 		page = rxq->rx_skb_info[index].page;
+		cbd_bufaddr = bdp->cbd_bufaddr;
+		if (fec_enet_update_cbd(rxq, bdp, index)) {
+			ndev->stats.rx_dropped++;
+			goto rx_processing_done;
+		}
+
 		dma_sync_single_for_cpu(&fep->pdev->dev,
-					fec32_to_cpu(bdp->cbd_bufaddr),
+					fec32_to_cpu(cbd_bufaddr),
 					pkt_len,
 					DMA_FROM_DEVICE);
 		prefetch(page_address(page));
-		fec_enet_update_cbd(rxq, bdp, index);
 
 		if (xdp_prog) {
 			xdp_buff_clear_frags_flag(&xdp);
drivers/net/ethernet/intel/ice/ice.h +5 -0
index d6f80da30dec..558cda577191 100644
@@ -1047,5 +1047,10 @@ static inline void ice_clear_rdma_cap(struct ice_pf *pf)
 	clear_bit(ICE_FLAG_RDMA_ENA, pf->flags);
 }
 
+static inline enum ice_phy_model ice_get_phy_model(const struct ice_hw *hw)
+{
+	return hw->ptp.phy_model;
+}
+
 extern const struct xdp_metadata_ops ice_xdp_md_ops;
 #endif /* _ICE_H_ */
drivers/net/ethernet/intel/ice/ice_adapter.c +6 -0
index ad84d8ad49a6..f3e195974a8e 100644
@@ -40,11 +40,17 @@ static struct ice_adapter *ice_adapter_new(void)
 	spin_lock_init(&adapter->ptp_gltsyn_time_lock);
 	refcount_set(&adapter->refcount, 1);
 
+	mutex_init(&adapter->ports.lock);
+	INIT_LIST_HEAD(&adapter->ports.ports);
+
 	return adapter;
 }
 
 static void ice_adapter_free(struct ice_adapter *adapter)
 {
+	WARN_ON(!list_empty(&adapter->ports.ports));
+	mutex_destroy(&adapter->ports.lock);
+
 	kfree(adapter);
 }
 
drivers/net/ethernet/intel/ice/ice_adapter.h +21 -1
index 9d11014ec02f..e233225848b3 100644
@@ -4,22 +4,42 @@
 #ifndef _ICE_ADAPTER_H_
 #define _ICE_ADAPTER_H_
 
+#include <linux/types.h>
 #include <linux/spinlock_types.h>
 #include <linux/refcount_types.h>
 
 struct pci_dev;
+struct ice_pf;
+
+/**
+ * struct ice_port_list - data used to store the list of adapter ports
+ *
+ * This structure contains data used to maintain a list of adapter ports
+ *
+ * @ports: list of ports
+ * @lock: protect access to the ports list
+ */
+struct ice_port_list {
+	struct list_head ports;
+	/* To synchronize the ports list operations */
+	struct mutex lock;
+};
 
 /**
  * struct ice_adapter - PCI adapter resources shared across PFs
  * @ptp_gltsyn_time_lock: Spinlock protecting access to the GLTSYN_TIME
  *                        register of the PTP clock.
  * @refcount: Reference count. struct ice_pf objects hold the references.
+ * @ctrl_pf: Control PF of the adapter
+ * @ports: Ports list
  */
 struct ice_adapter {
+	refcount_t refcount;
 	/* For access to the GLTSYN_TIME register */
 	spinlock_t ptp_gltsyn_time_lock;
 
-	refcount_t refcount;
+	struct ice_pf *ctrl_pf;
+	struct ice_port_list ports;
 };
 
 struct ice_adapter *ice_adapter_get(const struct pci_dev *pdev);
drivers/net/ethernet/intel/ice/ice_adminq_cmd.h +1 -0
index 79a6edd0be0e..80f3dfd27124 100644
@@ -1648,6 +1648,7 @@ struct ice_aqc_get_port_options_elem {
 #define ICE_AQC_PORT_OPT_MAX_LANE_25G	5
 #define ICE_AQC_PORT_OPT_MAX_LANE_50G	6
 #define ICE_AQC_PORT_OPT_MAX_LANE_100G	7
+#define ICE_AQC_PORT_OPT_MAX_LANE_200G	8
 
 	u8 global_scid[2];
 	u8 phy_scid[2];
drivers/net/ethernet/intel/ice/ice_common.c +51 -0

57 lines not on this page · raw message

drivers/net/ethernet/intel/ice/ice_common.h +1 -0
index 27208a60cece..fe6f88cfd948 100644
@@ -193,6 +193,7 @@ ice_aq_get_port_options(struct ice_hw *hw,
 int
 ice_aq_set_port_option(struct ice_hw *hw, u8 lport, u8 lport_valid,
 		       u8 new_option);
+int ice_get_phy_lane_number(struct ice_hw *hw);
 int
 ice_aq_sff_eeprom(struct ice_hw *hw, u16 lport, u8 bus_addr,
 		  u16 mem_addr, u8 page, u8 set_page, u8 *data, u8 length,
drivers/net/ethernet/intel/ice/ice_main.c +3 -3
index 8f2e758c3942..45eefe22fb5b 100644
@@ -1144,7 +1144,7 @@ ice_link_event(struct ice_pf *pf, struct ice_port_info *pi, bool link_up,
 	if (link_up == old_link && link_speed == old_link_speed)
 		return 0;
 
-	ice_ptp_link_change(pf, pf->hw.pf_id, link_up);
+	ice_ptp_link_change(pf, link_up);
 
 	if (ice_is_dcb_active(pf)) {
 		if (test_bit(ICE_FLAG_DCB_ENA, pf->flags))
@@ -6744,7 +6744,7 @@ static int ice_up_complete(struct ice_vsi *vsi)
 		ice_print_link_msg(vsi, true);
 		netif_tx_start_all_queues(vsi->netdev);
 		netif_carrier_on(vsi->netdev);
-		ice_ptp_link_change(pf, pf->hw.pf_id, true);
+		ice_ptp_link_change(pf, true);
 	}
 
 	/* Perform an initial read of the statistics registers now to
@@ -7214,7 +7214,7 @@ int ice_down(struct ice_vsi *vsi)
 
 	if (vsi->netdev) {
 		vlan_err = ice_vsi_del_vlan_zero(vsi);
-		ice_ptp_link_change(vsi->back, vsi->back->hw.pf_id, false);
+		ice_ptp_link_change(vsi->back, false);
 		netif_carrier_off(vsi->netdev);
 		netif_tx_disable(vsi->netdev);
 	}
drivers/net/ethernet/intel/ice/ice_ptp.c +102 -63

373 lines not on this page · raw message

drivers/net/ethernet/intel/ice/ice_ptp.h +5 -4
index 2db2257a0fb2..f1cfa6aa4e76 100644
@@ -169,7 +169,7 @@ struct ice_ptp_tx {
  * ready for PTP functionality. It is used to track the port initialization
  * and determine when the port's PHY offset is valid.
  *
- * @list_member: list member structure of auxiliary device
+ * @list_node: list member structure
  * @tx: Tx timestamp tracking for this port
  * @aux_dev: auxiliary device associated with this port
  * @ov_work: delayed work task for tracking when PHY offset is valid
@@ -179,7 +179,7 @@ struct ice_ptp_tx {
  * @port_num: the port number this structure represents
  */
 struct ice_ptp_port {
-	struct list_head list_member;
+	struct list_head list_node;
 	struct ice_ptp_tx tx;
 	struct auxiliary_device aux_dev;
 	struct kthread_delayed_work ov_work;
@@ -205,6 +205,7 @@ enum ice_ptp_tx_interrupt {
  * @ports: list of porst handled by this port owner
  * @lock: protect access to ports list
  */
+
 struct ice_ptp_port_owner {
 	struct auxiliary_driver aux_driver;
 	struct list_head ports;
@@ -331,7 +332,7 @@ void ice_ptp_prepare_for_reset(struct ice_pf *pf,
 			       enum ice_reset_req reset_type);
 void ice_ptp_init(struct ice_pf *pf);
 void ice_ptp_release(struct ice_pf *pf);
-void ice_ptp_link_change(struct ice_pf *pf, u8 port, bool linkup);
+void ice_ptp_link_change(struct ice_pf *pf, bool linkup);
 #else /* IS_ENABLED(CONFIG_PTP_1588_CLOCK) */
 static inline int ice_ptp_set_ts_config(struct ice_pf *pf, struct ifreq *ifr)
 {
@@ -379,7 +380,7 @@ static inline void ice_ptp_prepare_for_reset(struct ice_pf *pf,
 }
 static inline void ice_ptp_init(struct ice_pf *pf) { }
 static inline void ice_ptp_release(struct ice_pf *pf) { }
-static inline void ice_ptp_link_change(struct ice_pf *pf, u8 port, bool linkup)
+static inline void ice_ptp_link_change(struct ice_pf *pf, bool linkup)
 {
 }
 
drivers/net/ethernet/intel/ice/ice_ptp_consts.h +1 -1
index 3005dd252a10..bdb1020147d1 100644
@@ -131,7 +131,7 @@ struct ice_eth56g_mac_reg_cfg eth56g_mac_cfg[NUM_ICE_ETH56G_LNK_SPD] = {
 		.rx_offset = {
 			.serdes = 0xffffeb27, /* -10.42424 */
 			.no_fec = 0xffffcccd, /* -25.6 */
-			.fc = 0xfffe0014, /* -255.96 */
+			.fc = 0xfffc557b, /* -469.26 */
 			.sfd = 0x4a4, /* 2.32 */
 			.bs_ds = 0x32 /* 0.0969697 */
 		}
drivers/net/ethernet/intel/ice/ice_ptp_hw.c +152 -133

551 lines not on this page · raw message

drivers/net/ethernet/intel/ice/ice_ptp_hw.h +5 -0
index 4c8b84571344..3499062218b5 100644
@@ -452,6 +452,11 @@ static inline u64 ice_get_base_incval(struct ice_hw *hw)
 	}
 }
 
+static inline bool ice_is_dual(struct ice_hw *hw)
+{
+	return !!(hw->dev_caps.nac_topo.mode & ICE_NAC_TOPO_DUAL_M);
+}
+
 #define PFTSYN_SEM_BYTES	4
 
 #define ICE_PTP_CLOCK_INDEX_0	0x00
drivers/net/ethernet/intel/ice/ice_type.h +0 -2
index 45768796691f..609f31e0dfde 100644
@@ -850,7 +850,6 @@ struct ice_mbx_data {
 
 struct ice_eth56g_params {
 	u8 num_phys;
-	u8 phy_addr[2];
 	bool onestep_ena;
 	bool sfd_ena;
 	u32 peer_delay;
@@ -881,7 +880,6 @@ struct ice_ptp_hw {
 	union ice_phy_params phy;
 	u8 num_lports;
 	u8 ports_per_phy;
-	bool is_2x50g_muxed_topo;
 };
 
 /* Port hardware description */
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c +12 -10
index ca92e518be76..1baf8933a07c 100644
@@ -724,6 +724,12 @@ static int mlx5e_xfrm_add_state(struct xfrm_state *x,
 	/* check esn */
 	if (x->props.flags & XFRM_STATE_ESN)
 		mlx5e_ipsec_update_esn_state(sa_entry);
+	else
+		/* 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.
+		 */
+		sa_entry->esn_state.esn = 1;
 
 	mlx5e_ipsec_build_accel_xfrm_attrs(sa_entry, &sa_entry->attrs);
 
@@ -768,9 +774,12 @@ static int mlx5e_xfrm_add_state(struct xfrm_state *x,
 				   MLX5_IPSEC_RESCHED);
 
 	if (x->xso.type == XFRM_DEV_OFFLOAD_PACKET &&
-	    x->props.mode == XFRM_MODE_TUNNEL)
-		xa_set_mark(&ipsec->sadb, sa_entry->ipsec_obj_id,
-			    MLX5E_IPSEC_TUNNEL_SA);
+	    x->props.mode == XFRM_MODE_TUNNEL) {
+		xa_lock_bh(&ipsec->sadb);
+		__xa_set_mark(&ipsec->sadb, sa_entry->ipsec_obj_id,
+			      MLX5E_IPSEC_TUNNEL_SA);
+		xa_unlock_bh(&ipsec->sadb);
+	}
 
 out:
 	x->xso.offload_handle = (unsigned long)sa_entry;
@@ -797,7 +806,6 @@ static int mlx5e_xfrm_add_state(struct xfrm_state *x,
 static void mlx5e_xfrm_del_state(struct xfrm_state *x)
 {
 	struct mlx5e_ipsec_sa_entry *sa_entry = to_ipsec_sa_entry(x);
-	struct mlx5_accel_esp_xfrm_attrs *attrs = &sa_entry->attrs;
 	struct mlx5e_ipsec *ipsec = sa_entry->ipsec;
 	struct mlx5e_ipsec_sa_entry *old;
 
@@ -806,12 +814,6 @@ static void mlx5e_xfrm_del_state(struct xfrm_state *x)
 
 	old = xa_erase_bh(&ipsec->sadb, sa_entry->ipsec_obj_id);
 	WARN_ON(old != sa_entry);
-
-	if (attrs->mode == XFRM_MODE_TUNNEL &&
-	    attrs->type == XFRM_DEV_OFFLOAD_PACKET)
-		/* Make sure that no ARP requests are running in parallel */
-		flush_workqueue(ipsec->wq);
-
 }
 
 static void mlx5e_xfrm_free_state(struct xfrm_state *x)
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c +5 -7
index e51b03d4c717..57861d34d46f 100644
@@ -1718,23 +1718,21 @@ static int tx_add_rule(struct mlx5e_ipsec_sa_entry *sa_entry)
 		goto err_alloc;
 	}
 
-	if (attrs->family == AF_INET)
-		setup_fte_addr4(spec, &attrs->saddr.a4, &attrs->daddr.a4);
-	else
-		setup_fte_addr6(spec, attrs->saddr.a6, attrs->daddr.a6);
-
 	setup_fte_no_frags(spec);
 	setup_fte_upper_proto_match(spec, &attrs->upspec);
 
 	switch (attrs->type) {
 	case XFRM_DEV_OFFLOAD_CRYPTO:
+		if (attrs->family == AF_INET)
+			setup_fte_addr4(spec, &attrs->saddr.a4, &attrs->daddr.a4);
+		else
+			setup_fte_addr6(spec, attrs->saddr.a6, attrs->daddr.a6);
 		setup_fte_spi(spec, attrs->spi, false);
 		setup_fte_esp(spec);
 		setup_fte_reg_a(spec);
 		break;
 	case XFRM_DEV_OFFLOAD_PACKET:
-		if (attrs->reqid)
-			setup_fte_reg_c4(spec, attrs->reqid);
+		setup_fte_reg_c4(spec, attrs->reqid);
 		err = setup_pkt_reformat(ipsec, attrs, &flow_act);
 		if (err)
 			goto err_pkt_reformat;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_offload.c +8 -3
index 53cfa39188cb..820debf3fbbf 100644
@@ -91,8 +91,9 @@ u32 mlx5_ipsec_device_caps(struct mlx5_core_dev *mdev)
 EXPORT_SYMBOL_GPL(mlx5_ipsec_device_caps);
 
 static void mlx5e_ipsec_packet_setup(void *obj, u32 pdn,
-				     struct mlx5_accel_esp_xfrm_attrs *attrs)
+				     struct mlx5e_ipsec_sa_entry *sa_entry)
 {
+	struct mlx5_accel_esp_xfrm_attrs *attrs = &sa_entry->attrs;
 	void *aso_ctx;
 
 	aso_ctx = MLX5_ADDR_OF(ipsec_obj, obj, ipsec_aso);
@@ -120,8 +121,12 @@ static void mlx5e_ipsec_packet_setup(void *obj, u32 pdn,
 	 * active.
 	 */
 	MLX5_SET(ipsec_obj, obj, aso_return_reg, MLX5_IPSEC_ASO_REG_C_4_5);
-	if (attrs->dir == XFRM_DEV_OFFLOAD_OUT)
+	if (attrs->dir == XFRM_DEV_OFFLOAD_OUT) {
 		MLX5_SET(ipsec_aso, aso_ctx, mode, MLX5_IPSEC_ASO_INC_SN);
+		if (!attrs->replay_esn.trigger)
+			MLX5_SET(ipsec_aso, aso_ctx, mode_parameter,
+				 sa_entry->esn_state.esn);
+	}
 
 	if (attrs->lft.hard_packet_limit != XFRM_INF) {
 		MLX5_SET(ipsec_aso, aso_ctx, remove_flow_pkt_cnt,
@@ -175,7 +180,7 @@ static int mlx5_create_ipsec_obj(struct mlx5e_ipsec_sa_entry *sa_entry)
 
 	res = &mdev->mlx5e_res.hw_objs;
 	if (attrs->type == XFRM_DEV_OFFLOAD_PACKET)
-		mlx5e_ipsec_packet_setup(obj, res->pdn, attrs);
+		mlx5e_ipsec_packet_setup(obj, res->pdn, sa_entry);
 
 	err = mlx5_cmd_exec(mdev, in, sizeof(in), out, sizeof(out));
 	if (!err)
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c +1 -0
index 2eabfcc247c6..0ce999706d41 100644
@@ -2709,6 +2709,7 @@ struct mlx5_flow_namespace *mlx5_get_flow_namespace(struct mlx5_core_dev *dev,
 		break;
 	case MLX5_FLOW_NAMESPACE_RDMA_TX:
 		root_ns = steering->rdma_tx_root_ns;
+		prio = RDMA_TX_BYPASS_PRIO;
 		break;
 	case MLX5_FLOW_NAMESPACE_RDMA_RX_COUNTERS:
 		root_ns = steering->rdma_rx_root_ns;
drivers/net/ethernet/mellanox/mlx5/core/lag/port_sel.c +3 -1
index ab2717012b79..39e80704b1c4 100644
@@ -530,7 +530,7 @@ int mlx5_lag_port_sel_create(struct mlx5_lag *ldev,
 	set_tt_map(port_sel, hash_type);
 	err = mlx5_lag_create_definers(ldev, hash_type, ports);
 	if (err)
-		return err;
+		goto clear_port_sel;
 
 	if (port_sel->tunnel) {
 		err = mlx5_lag_create_inner_ttc_table(ldev);
@@ -549,6 +549,8 @@ int mlx5_lag_port_sel_create(struct mlx5_lag *ldev,
 		mlx5_destroy_ttc_table(port_sel->inner.ttc);
 destroy_definers:
 	mlx5_lag_destroy_definers(ldev);
+clear_port_sel:
+	memset(port_sel, 0, sizeof(*port_sel));
 	return err;
 }
 
drivers/net/ethernet/mellanox/mlx5/core/sf/devlink.c +1 -0
index a96be98be032..b96909fbeb12 100644
@@ -257,6 +257,7 @@ static int mlx5_sf_add(struct mlx5_core_dev *dev, struct mlx5_sf_table *table,
 	return 0;
 
 esw_err:
+	mlx5_sf_function_id_erase(table, sf);
 	mlx5_sf_free(table, sf);
 	return err;
 }
drivers/net/ethernet/mellanox/mlx5/core/wc.c +12 -12
index 1bed75eca97d..740b719e7072 100644
@@ -382,6 +382,7 @@ static void mlx5_core_test_wc(struct mlx5_core_dev *mdev)
 
 bool mlx5_wc_support_get(struct mlx5_core_dev *mdev)
 {
+	struct mutex *wc_state_lock = &mdev->wc_state_lock;
 	struct mlx5_core_dev *parent = NULL;
 
 	if (!MLX5_CAP_GEN(mdev, bf)) {
@@ -400,32 +401,31 @@ bool mlx5_wc_support_get(struct mlx5_core_dev *mdev)
 		 */
 		goto out;
 
-	mutex_lock(&mdev->wc_state_lock);
-
-	if (mdev->wc_state != MLX5_WC_STATE_UNINITIALIZED)
-		goto unlock;
-
 #ifdef CONFIG_MLX5_SF
-	if (mlx5_core_is_sf(mdev))
+	if (mlx5_core_is_sf(mdev)) {
 		parent = mdev->priv.parent_mdev;
+		wc_state_lock = &parent->wc_state_lock;
+	}
 #endif
 
-	if (parent) {
-		mutex_lock(&parent->wc_state_lock);
+	mutex_lock(wc_state_lock);
 
+	if (mdev->wc_state != MLX5_WC_STATE_UNINITIALIZED)
+		goto unlock;
+
+	if (parent) {
 		mlx5_core_test_wc(parent);
 
 		mlx5_core_dbg(mdev, "parent set wc_state=%d\n",
 			      parent->wc_state);
 		mdev->wc_state = parent->wc_state;
 
-		mutex_unlock(&parent->wc_state_lock);
+	} else {
+		mlx5_core_test_wc(mdev);
 	}
 
-	mlx5_core_test_wc(mdev);
-
 unlock:
-	mutex_unlock(&mdev->wc_state_lock);
+	mutex_unlock(wc_state_lock);
 out:
 	mlx5_core_dbg(mdev, "wc_state=%d\n", mdev->wc_state);
 
drivers/net/ethernet/netronome/nfp/bpf/offload.c +2 -1
index 9d97cd281f18..c03558adda91 100644
@@ -458,7 +458,8 @@ int nfp_bpf_event_output(struct nfp_app_bpf *bpf, const void *data,
 	map_id_full = be64_to_cpu(cbe->map_ptr);
 	map_id = map_id_full;
 
-	if (len < sizeof(struct cmsg_bpf_event) + pkt_size + data_size)
+	if (size_add(pkt_size, data_size) > INT_MAX ||
+	    len < sizeof(struct cmsg_bpf_event) + pkt_size + data_size)
 		return -EINVAL;
 	if (cbe->hdr.ver != NFP_CCM_ABI_VERSION)
 		return -EINVAL;
drivers/net/ethernet/renesas/ravb_main.c +1 -0
index 907af4651c55..6f6b0566c65b 100644
@@ -2756,6 +2756,7 @@ static const struct ravb_hw_info ravb_rzv2m_hw_info = {
 	.net_features = NETIF_F_RXCSUM,
 	.stats_len = ARRAY_SIZE(ravb_gstrings_stats),
 	.tccr_mask = TCCR_TSRQ0 | TCCR_TSRQ1 | TCCR_TSRQ2 | TCCR_TSRQ3,
+	.tx_max_frame_size = SZ_2K,
 	.rx_max_frame_size = SZ_2K,
 	.rx_buffer_size = SZ_2K +
 			  SKB_DATA_ALIGN(sizeof(struct skb_shared_info)),
drivers/net/ethernet/ti/cpsw_ale.c +7 -7
index 8d02d2b21429..dc5e247ca5d1 100644
@@ -127,15 +127,15 @@ struct cpsw_ale_dev_id {
 
 static inline int cpsw_ale_get_field(u32 *ale_entry, u32 start, u32 bits)
 {
-	int idx, idx2;
+	int idx, idx2, index;
 	u32 hi_val = 0;
 
 	idx    = start / 32;
 	idx2 = (start + bits - 1) / 32;
 	/* Check if bits to be fetched exceed a word */
 	if (idx != idx2) {
-		idx2 = 2 - idx2; /* flip */
-		hi_val = ale_entry[idx2] << ((idx2 * 32) - start);
+		index = 2 - idx2; /* flip */
+		hi_val = ale_entry[index] << ((idx2 * 32) - start);
 	}
 	start -= idx * 32;
 	idx    = 2 - idx; /* flip */
@@ -145,16 +145,16 @@ static inline int cpsw_ale_get_field(u32 *ale_entry, u32 start, u32 bits)
 static inline void cpsw_ale_set_field(u32 *ale_entry, u32 start, u32 bits,
 				      u32 value)
 {
-	int idx, idx2;
+	int idx, idx2, index;
 
 	value &= BITMASK(bits);
 	idx = start / 32;
 	idx2 = (start + bits - 1) / 32;
 	/* Check if bits to be set exceed a word */
 	if (idx != idx2) {
-		idx2 = 2 - idx2; /* flip */
-		ale_entry[idx2] &= ~(BITMASK(bits + start - (idx2 * 32)));
-		ale_entry[idx2] |= (value >> ((idx2 * 32) - start));
+		index = 2 - idx2; /* flip */
+		ale_entry[index] &= ~(BITMASK(bits + start - (idx2 * 32)));
+		ale_entry[index] |= (value >> ((idx2 * 32) - start));
 	}
 	start -= idx * 32;
 	idx = 2 - idx; /* flip */
drivers/net/ethernet/xilinx/xilinx_axienet_main.c +6 -0
index 1fcbcaa85ebd..de10a2d08c42 100644
@@ -2056,6 +2056,12 @@ axienet_ethtools_set_coalesce(struct net_device *ndev,
 		return -EBUSY;
 	}
 
+	if (ecoalesce->rx_max_coalesced_frames > 255 ||
+	    ecoalesce->tx_max_coalesced_frames > 255) {
+		NL_SET_ERR_MSG(extack, "frames must be less than 256");
+		return -EINVAL;
+	}
+
 	if (ecoalesce->rx_max_coalesced_frames)
 		lp->coalesce_count_rx = ecoalesce->rx_max_coalesced_frames;
 	if (ecoalesce->rx_coalesce_usecs)
drivers/net/gtp.c +17 -9
index 70f981887518..47406ce99016 100644
@@ -1526,8 +1526,8 @@ static int gtp_newlink(struct net *src_net, struct net_device *dev,
 		goto out_encap;
 	}
 
-	gn = net_generic(dev_net(dev), gtp_net_id);
-	list_add_rcu(&gtp->list, &gn->gtp_dev_list);
+	gn = net_generic(src_net, gtp_net_id);
+	list_add(&gtp->list, &gn->gtp_dev_list);
 	dev->priv_destructor = gtp_destructor;
 
 	netdev_dbg(dev, "registered new GTP interface\n");
@@ -1553,7 +1553,7 @@ static void gtp_dellink(struct net_device *dev, struct list_head *head)
 		hlist_for_each_entry_safe(pctx, next, &gtp->tid_hash[i], hlist_tid)
 			pdp_context_delete(pctx);
 
-	list_del_rcu(&gtp->list);
+	list_del(&gtp->list);
 	unregister_netdevice_queue(dev, head);
 }
 
@@ -2279,16 +2279,19 @@ static int gtp_genl_dump_pdp(struct sk_buff *skb,
 	struct gtp_dev *last_gtp = (struct gtp_dev *)cb->args[2], *gtp;
 	int i, j, bucket = cb->args[0], skip = cb->args[1];
 	struct net *net = sock_net(skb->sk);
+	struct net_device *dev;
 	struct pdp_ctx *pctx;
-	struct gtp_net *gn;
-
-	gn = net_generic(net, gtp_net_id);
 
 	if (cb->args[4])
 		return 0;
 
 	rcu_read_lock();
-	list_for_each_entry_rcu(gtp, &gn->gtp_dev_list, list) {
+	for_each_netdev_rcu(net, dev) {
+		if (dev->rtnl_link_ops != &gtp_link_ops)
+			continue;
+
+		gtp = netdev_priv(dev);
+
 		if (last_gtp && last_gtp != gtp)
 			continue;
 		else
@@ -2483,9 +2486,14 @@ static void __net_exit gtp_net_exit_batch_rtnl(struct list_head *net_list,
 
 	list_for_each_entry(net, net_list, exit_list) {
 		struct gtp_net *gn = net_generic(net, gtp_net_id);
-		struct gtp_dev *gtp;
+		struct gtp_dev *gtp, *gtp_next;
+		struct net_device *dev;
+
+		for_each_netdev(net, dev)
+			if (dev->rtnl_link_ops == &gtp_link_ops)
+				gtp_dellink(dev, dev_to_kill);
 
-		list_for_each_entry(gtp, &gn->gtp_dev_list, list)
+		list_for_each_entry_safe(gtp, gtp_next, &gn->gtp_dev_list, list)
 			gtp_dellink(gtp->dev, dev_to_kill);
 	}
 }
drivers/net/pfcp.c +10 -5
index 69434fd13f96..68d0d9e92a22 100644
@@ -206,8 +206,8 @@ static int pfcp_newlink(struct net *net, struct net_device *dev,
 		goto exit_del_pfcp_sock;
 	}
 
-	pn = net_generic(dev_net(dev), pfcp_net_id);
-	list_add_rcu(&pfcp->list, &pn->pfcp_dev_list);
+	pn = net_generic(net, pfcp_net_id);
+	list_add(&pfcp->list, &pn->pfcp_dev_list);
 
 	netdev_dbg(dev, "registered new PFCP interface\n");
 
@@ -224,7 +224,7 @@ static void pfcp_dellink(struct net_device *dev, struct list_head *head)
 {
 	struct pfcp_dev *pfcp = netdev_priv(dev);
 
-	list_del_rcu(&pfcp->list);
+	list_del(&pfcp->list);
 	unregister_netdevice_queue(dev, head);
 }
 
@@ -247,11 +247,16 @@ static int __net_init pfcp_net_init(struct net *net)
 static void __net_exit pfcp_net_exit(struct net *net)
 {
 	struct pfcp_net *pn = net_generic(net, pfcp_net_id);
-	struct pfcp_dev *pfcp;
+	struct pfcp_dev *pfcp, *pfcp_next;
+	struct net_device *dev;
 	LIST_HEAD(list);
 
 	rtnl_lock();
-	list_for_each_entry(pfcp, &pn->pfcp_dev_list, list)
+	for_each_netdev(net, dev)
+		if (dev->rtnl_link_ops == &pfcp_link_ops)
+			pfcp_dellink(dev, &list);
+
+	list_for_each_entry_safe(pfcp, pfcp_next, &pn->pfcp_dev_list, list)
 		pfcp_dellink(pfcp->dev, &list);
 
 	unregister_netdevice_many(&list);
drivers/nvme/target/io-cmd-bdev.c +1 -1
index 0bda83d0fc3e..eaf31c823cbe 100644
@@ -36,7 +36,7 @@ void nvmet_bdev_set_limits(struct block_device *bdev, struct nvme_id_ns *id)
 	 */
 	id->nsfeat |= 1 << 4;
 	/* NPWG = Namespace Preferred Write Granularity. 0's based */
-	id->npwg = lpp0b;
+	id->npwg = to0based(bdev_io_min(bdev) / bdev_logical_block_size(bdev));
 	/* NPWA = Namespace Preferred Write Alignment. 0's based */
 	id->npwa = id->npwg;
 	/* NPDG = Namespace Preferred Deallocate Granularity. 0's based */
drivers/platform/x86/dell/dell-uart-backlight.c +3 -2
index 3995f90add45..c45bc332af7a 100644
@@ -283,6 +283,9 @@ static int dell_uart_bl_serdev_probe(struct serdev_device *serdev)
 	init_waitqueue_head(&dell_bl->wait_queue);
 	dell_bl->dev = dev;
 
+	serdev_device_set_drvdata(serdev, dell_bl);
+	serdev_device_set_client_ops(serdev, &dell_uart_bl_serdev_ops);
+
 	ret = devm_serdev_device_open(dev, serdev);
 	if (ret)
 		return dev_err_probe(dev, ret, "opening UART device\n");
@@ -290,8 +293,6 @@ static int dell_uart_bl_serdev_probe(struct serdev_device *serdev)
 	/* 9600 bps, no flow control, these are the default but set them to be sure */
 	serdev_device_set_baudrate(serdev, 9600);
 	serdev_device_set_flow_control(serdev, false);
-	serdev_device_set_drvdata(serdev, dell_bl);
-	serdev_device_set_client_ops(serdev, &dell_uart_bl_serdev_ops);
 
 	get_version[0] = DELL_SOF(GET_CMD_LEN);
 	get_version[1] = CMD_GET_VERSION;
drivers/platform/x86/intel/speed_select_if/isst_if_common.c +1 -0
index 1e46e30dae96..dbcd3087aaa4 100644
@@ -804,6 +804,7 @@ EXPORT_SYMBOL_GPL(isst_if_cdev_unregister);
 static const struct x86_cpu_id isst_cpu_ids[] = {
 	X86_MATCH_VFM(INTEL_ATOM_CRESTMONT,	SST_HPM_SUPPORTED),
 	X86_MATCH_VFM(INTEL_ATOM_CRESTMONT_X,	SST_HPM_SUPPORTED),
+	X86_MATCH_VFM(INTEL_ATOM_DARKMONT_X,	SST_HPM_SUPPORTED),
 	X86_MATCH_VFM(INTEL_EMERALDRAPIDS_X,	0),
 	X86_MATCH_VFM(INTEL_GRANITERAPIDS_D,	SST_HPM_SUPPORTED),
 	X86_MATCH_VFM(INTEL_GRANITERAPIDS_X,	SST_HPM_SUPPORTED),
drivers/platform/x86/intel/tpmi_power_domains.c +1 -0
index 0609a8320f7e..12fb0943b5dc 100644
@@ -81,6 +81,7 @@ static const struct x86_cpu_id tpmi_cpu_ids[] = {
 	X86_MATCH_VFM(INTEL_GRANITERAPIDS_X,	NULL),
 	X86_MATCH_VFM(INTEL_ATOM_CRESTMONT_X,	NULL),
 	X86_MATCH_VFM(INTEL_ATOM_CRESTMONT,	NULL),
+	X86_MATCH_VFM(INTEL_ATOM_DARKMONT_X,	NULL),
 	X86_MATCH_VFM(INTEL_GRANITERAPIDS_D,	NULL),
 	X86_MATCH_VFM(INTEL_PANTHERCOVE_X,	NULL),
 	{}
drivers/platform/x86/lenovo-yoga-tab2-pro-1380-fastcharger.c +3 -2
index d525bdc8ca9b..32d9b6009c42 100644
@@ -199,14 +199,15 @@ static int yt2_1380_fc_serdev_probe(struct serdev_device *serdev)
 	if (ret)
 		return ret;
 
+	serdev_device_set_drvdata(serdev, fc);
+	serdev_device_set_client_ops(serdev, &yt2_1380_fc_serdev_ops);
+
 	ret = devm_serdev_device_open(dev, serdev);
 	if (ret)
 		return dev_err_probe(dev, ret, "opening UART device\n");
 
 	serdev_device_set_baudrate(serdev, 600);
 	serdev_device_set_flow_control(serdev, false);
-	serdev_device_set_drvdata(serdev, fc);
-	serdev_device_set_client_ops(serdev, &yt2_1380_fc_serdev_ops);
 
 	ret = devm_extcon_register_notifier_all(dev, fc->extcon, &fc->nb);
 	if (ret)
drivers/pmdomain/imx/imx8mp-blk-ctrl.c +1 -1
index 77e889165eed..a19e806bb147 100644
@@ -770,7 +770,7 @@ static void imx8mp_blk_ctrl_remove(struct platform_device *pdev)
 
 	of_genpd_del_provider(pdev->dev.of_node);
 
-	for (i = 0; bc->onecell_data.num_domains; i++) {
+	for (i = 0; i < bc->onecell_data.num_domains; i++) {
 		struct imx8mp_blk_ctrl_domain *domain = &bc->domains[i];
 
 		pm_genpd_remove(&domain->genpd);
drivers/reset/reset-rzg2l-usbphy-ctrl.c +1 -0
index 1cd157f4f03b..4e2ac1f0060c 100644
@@ -176,6 +176,7 @@ static int rzg2l_usbphy_ctrl_probe(struct platform_device *pdev)
 	vdev->dev.parent = dev;
 	priv->vdev = vdev;
 
+	device_set_of_node_from_dev(&vdev->dev, dev);
 	error = platform_device_add(vdev);
 	if (error)
 		goto err_device_put;
drivers/ufs/core/ufshcd.c +6 -3
index 05b936ad353b..6cc9e61cca07 100644
@@ -10589,14 +10589,17 @@ int ufshcd_init(struct ufs_hba *hba, void __iomem *mmio_base, unsigned int irq)
 	}
 
 	/*
-	 * Set the default power management level for runtime and system PM.
+	 * Set the default power management level for runtime and system PM if
+	 * not set by the host controller drivers.
 	 * Default power saving mode is to keep UFS link in Hibern8 state
 	 * and UFS device in sleep state.
 	 */
-	hba->rpm_lvl = ufs_get_desired_pm_lvl_for_dev_link_state(
+	if (!hba->rpm_lvl)
+		hba->rpm_lvl = ufs_get_desired_pm_lvl_for_dev_link_state(
 						UFS_SLEEP_PWR_MODE,
 						UIC_LINK_HIBERN8_STATE);
-	hba->spm_lvl = ufs_get_desired_pm_lvl_for_dev_link_state(
[… more lines in the raw message]

Lines of this file are not shown. View the raw message.

fs/afs/addr_prefs.c +4 -2
index a189ff8a5034..c0384201b8fe 100644

Lines of this file are not shown. View the raw message.

fs/btrfs/volumes.c +4 -0
index 0c4d14c59ebe..395b8b880ce7 100644

Lines of this file are not shown. View the raw message.

fs/cachefiles/daemon.c +7 -7
index 89b11336a836..1806bff8e59b 100644

Lines of this file are not shown. View the raw message.

fs/cachefiles/internal.h +2 -1
index 7b99bd98de75..38c236e38cef 100644

Lines of this file are not shown. View the raw message.

fs/cachefiles/security.c +3 -3
index fe777164f1d8..fc6611886b3b 100644

Lines of this file are not shown. View the raw message.

fs/file.c +1 -0
index eb093e736972..4cb952541dd0 100644

Lines of this file are not shown. View the raw message.

fs/hfs/super.c +3 -1
index eeac99765f0d..cf13b5cc1084 100644

Lines of this file are not shown. View the raw message.

fs/iomap/buffered-io.c +1 -1
index 25d1ede6bb0e..1bad460275eb 100644

Lines of this file are not shown. View the raw message.

fs/netfs/read_collect.c +5 -4
index e70eb4ea21c0..a44132c98653 100644

Lines of this file are not shown. View the raw message.

fs/proc/vmcore.c +2 -0
index b4521b096058..387a7a176ad8 100644

Lines of this file are not shown. View the raw message.

fs/qnx6/inode.c +4 -7
index 85925ec0051a..3310d1ad4d0e 100644

Lines of this file are not shown. View the raw message.

fs/smb/client/connect.c +1 -2
index fe40152b915d..fb51cdf55206 100644

Lines of this file are not shown. View the raw message.

include/linux/hrtimer.h +1 -0
index aa1e65ccb615..6caaa62d2b1f 100644

Lines of this file are not shown. View the raw message.

include/linux/poll.h +9 -1
index d1ea4f3714a8..fc641b50f129 100644

Lines of this file are not shown. View the raw message.

include/linux/pruss_driver.h +6 -6
index c9a31c567e85..2e18fef1a2e1 100644

Lines of this file are not shown. View the raw message.

include/linux/userfaultfd_k.h +12 -0
index cb40f1a1d081..75342022d144 100644

Lines of this file are not shown. View the raw message.

include/net/page_pool/helpers.h +1 -1
index 793e6fd78bc5..60a5347922be 100644

Lines of this file are not shown. View the raw message.

include/trace/events/mmflags.h +63 -0

63 lines not on this page · raw message

kernel/cpu.c +1 -1
index d293d52a3e00..9ee6c9145b1d 100644

Lines of this file are not shown. View the raw message.

kernel/gen_kheaders.sh +1 -0
index 383fd43ac612..7e1340da5aca 100755

Lines of this file are not shown. View the raw message.

kernel/sched/ext.c +7 -4
index f928a67a07d2..4c4681cb9337 100644

Lines of this file are not shown. View the raw message.

kernel/sched/fair.c +5 -1
index 1ca96c99872f..60be5f8bbe71 100644

Lines of this file are not shown. View the raw message.

kernel/time/hrtimer.c +10 -1
index cddcd08ea827..ee20f5032a03 100644

Lines of this file are not shown. View the raw message.

kernel/time/timer_migration.c +40 -3

43 lines not on this page · raw message

mm/filemap.c +1 -1
index 56fa431c52af..dc83baab85a1 100644

Lines of this file are not shown. View the raw message.

mm/huge_memory.c +12 -0
index 7e0f72cd9fd4..f127b61f04a8 100644

Lines of this file are not shown. View the raw message.

mm/hugetlb.c +13 -1
index 2fa87b9ecec6..4a8a4f3535ca 100644

Lines of this file are not shown. View the raw message.

mm/kmemleak.c +1 -1
index 74f5f4c51ab8..5f878ee05ff8 100644

Lines of this file are not shown. View the raw message.

mm/mremap.c +31 -1
index dee98ff2bbd6..1b2edd65c2a1 100644

Lines of this file are not shown. View the raw message.

mm/vmscan.c +3 -0
index 67a680e4b484..d81d66790744 100644

Lines of this file are not shown. View the raw message.

net/core/filter.c +18 -12
index 54a53fae9e98..46da488ff070 100644

Lines of this file are not shown. View the raw message.

net/core/netdev-genl-gen.c +12 -2
index b28424ae06d5..8614988fc67b 100644

Lines of this file are not shown. View the raw message.

net/core/pktgen.c +3 -3
index 34f68ef74b8f..b6db4910359b 100644

Lines of this file are not shown. View the raw message.

net/mac802154/iface.c +4 -0
index c0e2da5072be..9e4631fade90 100644

Lines of this file are not shown. View the raw message.

net/mptcp/options.c +4 -2
index a62bc874bf1e..123f3f297284 100644

Lines of this file are not shown. View the raw message.

net/mptcp/protocol.h +7 -2
index a93e661ef5c4..73526f1d768f 100644

Lines of this file are not shown. View the raw message.

net/ncsi/internal.h +2 -0
index ef0f8f73826f..4e0842df5234 100644

Lines of this file are not shown. View the raw message.

net/ncsi/ncsi-manage.c +14 -2
index 5cf55bde366d..bf276eaf9330 100644

Lines of this file are not shown. View the raw message.

net/ncsi/ncsi-rsp.c +6 -13
index e28be33bdf2c..14bd66909ca4 100644

Lines of this file are not shown. View the raw message.

net/openvswitch/actions.c +3 -1
index 16e260014684..704c858cf209 100644

Lines of this file are not shown. View the raw message.

net/vmw_vsock/af_vsock.c +18 -0
index b52b798aa4c2..15724f171b0f 100644

Lines of this file are not shown. View the raw message.

net/vmw_vsock/virtio_transport_common.c +26 -10
index 9acc13ab3f82..7f7de6d88096 100644

Lines of this file are not shown. View the raw message.

net/vmw_vsock/vsock_bpf.c +9 -0
index 4aa6e74ec295..f201d9eca1df 100644

Lines of this file are not shown. View the raw message.

security/apparmor/policy.c +1 -0
index 14df15e35695..105706abf281 100644

Lines of this file are not shown. View the raw message.

sound/pci/hda/patch_realtek.c +3 -0
index 3ed82f98e2de..a9f6138b59b0 100644

Lines of this file are not shown. View the raw message.

tools/net/ynl/ynl-gen-c.py +13 -3
index 717530bc9c52..463f1394ab97 100755

Lines of this file are not shown. View the raw message.

tools/testing/selftests/mm/cow.c +4 -4
index 32c6ccc2a6be..1238e1c5aae1 100644

Lines of this file are not shown. View the raw message.

tools/testing/selftests/net/mptcp/mptcp_connect.c +32 -11

43 lines not on this page · raw message

tools/testing/selftests/sched_ext/ddsp_bogus_dsq_fail.bpf.c +1 -1
index 37d9bf6fb745..6f4c3f5a1c5d 100644

Lines of this file are not shown. View the raw message.

tools/testing/selftests/sched_ext/ddsp_vtimelocal_fail.bpf.c +2 -2
index dffc97d9cdf1..e4a55027778f 100644

Lines of this file are not shown. View the raw message.

tools/testing/selftests/sched_ext/dsp_local_on.bpf.c +5 -2
index 6a7db1502c29..fbda6bf54671 100644

Lines of this file are not shown. View the raw message.

tools/testing/selftests/sched_ext/dsp_local_on.c +3 -2
index 472851b56854..0ff27e57fe43 100644

Lines of this file are not shown. View the raw message.

tools/testing/selftests/sched_ext/enq_select_cpu_fails.bpf.c +1 -1
index 1efb50d61040..a7cf868d5e31 100644

Lines of this file are not shown. View the raw message.

tools/testing/selftests/sched_ext/exit.bpf.c +2 -2
index d75d4faf07f6..4bc36182d3ff 100644

Lines of this file are not shown. View the raw message.

tools/testing/selftests/sched_ext/maximal.bpf.c +5 -3
index 4d4cd8d966db..430f5e13bf55 100644

Lines of this file are not shown. View the raw message.

tools/testing/selftests/sched_ext/select_cpu_dfl.bpf.c +1 -1
index f171ac470970..13d0f5be788d 100644

Lines of this file are not shown. View the raw message.

tools/testing/selftests/sched_ext/select_cpu_dfl_nodispatch.bpf.c +1 -1
index 9efdbb7da928..815f1d5d61ac 100644

Lines of this file are not shown. View the raw message.

tools/testing/selftests/sched_ext/select_cpu_dispatch.bpf.c +1 -1
index 59bfc4f36167..4bb99699e920 100644

Lines of this file are not shown. View the raw message.

tools/testing/selftests/sched_ext/select_cpu_dispatch_bad_dsq.bpf.c +1 -1
index 3bbd5fcdfb18..2a75de11b2cf 100644

Lines of this file are not shown. View the raw message.

tools/testing/selftests/sched_ext/select_cpu_dispatch_dbl_dsp.bpf.c +2 -2
index 0fda57fe0ecf..99d075695c97 100644

Lines of this file are not shown. View the raw message.

tools/testing/selftests/sched_ext/select_cpu_vtime.bpf.c +4 -4
index e6c67bcf5e6e..bfcb96cd4954 100644

Lines of this file are not shown. View the raw message.

tools/testing/selftests/tc-testing/tc-tests/filters/flow.json +2 -2
index 58189327f644..383fbda07245 100644

Lines of this file are not shown. View the raw message.

tools/testing/shared/linux/maple_tree.h +1 -1
index 06c89bdcc515..f67d47d32857 100644

Lines of this file are not shown. View the raw message.

tools/testing/vma/linux/atomic.h +1 -1
index e01f66f98982..3e1b6adc027b 100644

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

Part of the diff is not shown here. View the raw message.

#2 lore raw
In reply to Greg Kroah-Hartman
Quoted 251 lines · Greg Kroah-Hartman

I'm announcing the release of the 6.12.11 kernel.

All users of the 6.12 kernel series must upgrade.

The updated 6.12.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.12.y and can be browsed at the normal kernel.org git web browser:
https://urldefense.com/v3/__https://git.kernel.org/?p=linux*kernel*git*stable*linux-stable.git;a=summary__;Ly8vLw!!ACWV5N9M2RV99hQ!J_IGyCPKkv3oSvdvR0g6NJGyswikO67ppTGbwZzGalLBSGSelXIqNjqiQ9ZXns63whuU-wfTFZUzSeykbE2EEgE$

thanks,

greg k-h

------------

Makefile                                                            |    2 
arch/x86/include/asm/special_insns.h                                |    2 
arch/x86/kernel/fred.c                                              |    8 
drivers/acpi/resource.c                                             |    6 
drivers/block/zram/zram_drv.c                                       |    1 
drivers/cpufreq/Kconfig                                             |    4 
drivers/cpuidle/governors/teo.c                                     |   91 +--
drivers/firmware/efi/Kconfig                                        |    4 
drivers/firmware/efi/libstub/Makefile.zboot                         |   18 
drivers/gpio/gpio-sim.c                                             |   48 +
drivers/gpio/gpio-virtuser.c                                        |   47 +
drivers/gpio/gpio-xilinx.c                                          |   32 -
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c                          |    5 
drivers/gpu/drm/amd/amdgpu/amdgpu_fw_attestation.c                  |    4 
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c                              |    4 
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c                   |   41 +
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crc.c               |   25 
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c              |    4 
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.h              |    2 
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c           |    2 
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c         |   14 
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_psr.c               |   35 +
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_psr.h               |    3 
drivers/gpu/drm/amd/display/dc/dml/dcn35/dcn35_fpu.c                |    4 
drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c                |   11 
drivers/gpu/drm/i915/display/intel_fb.c                             |    2 
drivers/gpu/drm/nouveau/nouveau_fence.c                             |    6 
drivers/gpu/drm/nouveau/nvkm/engine/disp/mcp77.c                    |    1 
drivers/gpu/drm/tests/drm_kunit_helpers.c                           |    3 
drivers/gpu/drm/v3d/v3d_irq.c                                       |    4 
drivers/gpu/drm/vmwgfx/vmwgfx_bo.c                                  |    3 
drivers/gpu/drm/vmwgfx/vmwgfx_bo.h                                  |    3 
drivers/gpu/drm/vmwgfx/vmwgfx_drv.c                                 |    7 
drivers/gpu/drm/vmwgfx/vmwgfx_gem.c                                 |    1 
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c                                 |   20 
drivers/gpu/drm/vmwgfx/vmwgfx_shader.c                              |    7 
drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c                          |    5 
drivers/gpu/drm/xe/xe_hw_engine.c                                   |    2 
drivers/gpu/drm/xe/xe_oa.c                                          |    1 
drivers/hwmon/ltc2991.c                                             |    2 
drivers/hwmon/tmp513.c                                              |    7 
drivers/i2c/busses/i2c-rcar.c                                       |   20 
drivers/i2c/i2c-atr.c                                               |    2 
drivers/i2c/i2c-core-base.c                                         |    1 
drivers/i2c/i2c-slave-testunit.c                                    |   19 
drivers/i2c/muxes/i2c-demux-pinctrl.c                               |    4 
drivers/infiniband/hw/bnxt_re/ib_verbs.c                            |    1 
drivers/infiniband/hw/bnxt_re/ib_verbs.h                            |    4 
drivers/infiniband/hw/bnxt_re/qplib_fp.c                            |    1 
drivers/infiniband/hw/bnxt_re/qplib_fp.h                            |    1 
drivers/irqchip/irq-gic-v3-its.c                                    |    2 
drivers/irqchip/irq-gic-v3.c                                        |    2 
drivers/irqchip/irqchip.c                                           |    4 
drivers/mtd/spi-nor/core.c                                          |    2 
drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c                         |   19 
drivers/net/ethernet/broadcom/bnxt/bnxt.c                           |   25 
drivers/net/ethernet/broadcom/bnxt/bnxt.h                           |    2 
drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c                       |    7 
drivers/net/ethernet/freescale/fec_main.c                           |   19 
drivers/net/ethernet/intel/ice/ice.h                                |    5 
drivers/net/ethernet/intel/ice/ice_adapter.c                        |    6 
drivers/net/ethernet/intel/ice/ice_adapter.h                        |   22 
drivers/net/ethernet/intel/ice/ice_adminq_cmd.h                     |    1 
drivers/net/ethernet/intel/ice/ice_common.c                         |   51 +
drivers/net/ethernet/intel/ice/ice_common.h                         |    1 
drivers/net/ethernet/intel/ice/ice_main.c                           |    6 
drivers/net/ethernet/intel/ice/ice_ptp.c                            |  165 +++--
drivers/net/ethernet/intel/ice/ice_ptp.h                            |    9 
drivers/net/ethernet/intel/ice/ice_ptp_consts.h                     |    2 
drivers/net/ethernet/intel/ice/ice_ptp_hw.c                         |  285 +++++-----
drivers/net/ethernet/intel/ice/ice_ptp_hw.h                         |    5 
drivers/net/ethernet/intel/ice/ice_type.h                           |    2 
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c            |   22 
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c         |   12 
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_offload.c    |   11 
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c                   |    1 
drivers/net/ethernet/mellanox/mlx5/core/lag/port_sel.c              |    4 
drivers/net/ethernet/mellanox/mlx5/core/sf/devlink.c                |    1 
drivers/net/ethernet/mellanox/mlx5/core/wc.c                        |   24 
drivers/net/ethernet/netronome/nfp/bpf/offload.c                    |    3 
drivers/net/ethernet/renesas/ravb_main.c                            |    1 
drivers/net/ethernet/ti/cpsw_ale.c                                  |   14 
drivers/net/ethernet/xilinx/xilinx_axienet_main.c                   |    6 
drivers/net/gtp.c                                                   |   26 
drivers/net/pfcp.c                                                  |   15 
drivers/nvme/target/io-cmd-bdev.c                                   |    2 
drivers/platform/x86/dell/dell-uart-backlight.c                     |    5 
drivers/platform/x86/intel/speed_select_if/isst_if_common.c         |    1 
drivers/platform/x86/intel/tpmi_power_domains.c                     |    1 
drivers/platform/x86/lenovo-yoga-tab2-pro-1380-fastcharger.c        |    5 
drivers/pmdomain/imx/imx8mp-blk-ctrl.c                              |    2 
drivers/reset/reset-rzg2l-usbphy-ctrl.c                             |    1 
drivers/ufs/core/ufshcd.c                                           |    9 
fs/afs/addr_prefs.c                                                 |    6 
fs/btrfs/volumes.c                                                  |    4 
fs/cachefiles/daemon.c                                              |   14 
fs/cachefiles/internal.h                                            |    3 
fs/cachefiles/security.c                                            |    6 
fs/file.c                                                           |    1 
fs/hfs/super.c                                                      |    4 
fs/iomap/buffered-io.c                                              |    2 
fs/netfs/read_collect.c                                             |    9 
fs/proc/vmcore.c                                                    |    2 
fs/qnx6/inode.c                                                     |   11 
fs/smb/client/connect.c                                             |    3 
include/linux/hrtimer.h                                             |    1 
include/linux/poll.h                                                |   10 
include/linux/pruss_driver.h                                        |   12 
include/linux/userfaultfd_k.h                                       |   12 
include/net/page_pool/helpers.h                                     |    2 
include/trace/events/mmflags.h                                      |   63 ++
kernel/cpu.c                                                        |    2 
kernel/gen_kheaders.sh                                              |    1 
kernel/sched/ext.c                                                  |   11 
kernel/sched/fair.c                                                 |    6 
kernel/time/hrtimer.c                                               |   11 
kernel/time/timer_migration.c                                       |   43 +
mm/filemap.c                                                        |    2 
mm/huge_memory.c                                                    |   12 
mm/hugetlb.c                                                        |   14 
mm/kmemleak.c                                                       |    2 
mm/mremap.c                                                         |   32 +
mm/vmscan.c                                                         |    3 
net/core/filter.c                                                   |   30 -
net/core/netdev-genl-gen.c                                          |   14 
net/core/pktgen.c                                                   |    6 
net/mac802154/iface.c                                               |    4 
net/mptcp/options.c                                                 |    6 
net/mptcp/protocol.h                                                |    9 
net/ncsi/internal.h                                                 |    2 
net/ncsi/ncsi-manage.c                                              |   16 
net/ncsi/ncsi-rsp.c                                                 |   19 
net/openvswitch/actions.c                                           |    4 
net/vmw_vsock/af_vsock.c                                            |   18 
net/vmw_vsock/virtio_transport_common.c                             |   36 -
net/vmw_vsock/vsock_bpf.c                                           |    9 
security/apparmor/policy.c                                          |    1 
sound/pci/hda/patch_realtek.c                                       |    3 
tools/net/ynl/ynl-gen-c.py                                          |   16 
tools/testing/selftests/mm/cow.c                                    |    8 
tools/testing/selftests/net/mptcp/mptcp_connect.c                   |   43 +
tools/testing/selftests/sched_ext/ddsp_bogus_dsq_fail.bpf.c         |    2 
tools/testing/selftests/sched_ext/ddsp_vtimelocal_fail.bpf.c        |    4 
tools/testing/selftests/sched_ext/dsp_local_on.bpf.c                |    7 
tools/testing/selftests/sched_ext/dsp_local_on.c                    |    5 
tools/testing/selftests/sched_ext/enq_select_cpu_fails.bpf.c        |    2 
tools/testing/selftests/sched_ext/exit.bpf.c                        |    4 
tools/testing/selftests/sched_ext/maximal.bpf.c                     |    8 
tools/testing/selftests/sched_ext/select_cpu_dfl.bpf.c              |    2 
tools/testing/selftests/sched_ext/select_cpu_dfl_nodispatch.bpf.c   |    2 
tools/testing/selftests/sched_ext/select_cpu_dispatch.bpf.c         |    2 
tools/testing/selftests/sched_ext/select_cpu_dispatch_bad_dsq.bpf.c |    2 
tools/testing/selftests/sched_ext/select_cpu_dispatch_dbl_dsp.bpf.c |    4 
tools/testing/selftests/sched_ext/select_cpu_vtime.bpf.c            |    8 
tools/testing/selftests/tc-testing/tc-tests/filters/flow.json       |    4 
tools/testing/shared/linux/maple_tree.h                             |    2 
tools/testing/vma/linux/atomic.h                                    |    2 
157 files changed, 1324 insertions(+), 636 deletions(-)

Alex Deucher (1):
drm/amdgpu/smu13: update powersave optimizations

Ard Biesheuvel (1):
efi/zboot: Limit compression options to GZIP and ZSTD

Artem Chernyshev (1):
pktgen: Avoid out-of-bounds access in get_imix_entries

Ashutosh Dixit (1):
drm/xe/oa: Add missing VISACTL mux registers

Brahmajit Das (1):
fs/qnx6: Fix building with GCC 15

Chenyuan Yang (2):
platform/x86: dell-uart-backlight: fix serdev race platform/x86: lenovo-yoga-tab2-pro-1380-fastcharger: fix serdev race

Chris Mi (1):
net/mlx5: SF, Fix add port error handling

Christian König (1):
drm/amdgpu: always sync the GFX pipe on ctx switch

Claudiu Beznea (1):
reset: rzg2l-usbphy-ctrl: Assign proper of node to the allocated device

Dan Carpenter (1):
nfp: bpf: prevent integer overflow in nfp_bpf_event_output()

Dave Airlie (1):
nouveau/fence: handle cross device fences properly

David Howells (2):
kheaders: Ignore silly-rename files
netfs: Fix non-contiguous donation between completed reads

David Lechner (2):
hwmon: (tmp513) Fix division of negative numbers
hwmon: (ltc2991) Fix mixed signed/unsigned in DIV_ROUND_CLOSEST

David Vernet (1):
scx: Fix maximal BPF selftest prog

Donet Tom (1):
mm: vmscan : pgdemote vmstat is not getting updated when MGLRU is enabled.

Frederic Weisbecker (2):
timers/migration: Fix another race between hotplug and idle entry/exit timers/migration: Enforce group initialization visibility to tree walkers

Greg Kroah-Hartman (1):

     Linux 6.12.11

Gui Chengming (1):

     drm/amdgpu: fix fw attestation for MP0_14_0_{2/3}

Guo Weikang (1):
mm/kmemleak: fix percpu memory leak detection failure

Hans de Goede (1):
ACPI: resource: acpi_dev_irq_override(): Check DMI match last

Heiner Kallweit (1):
net: ethernet: xgbe: re-add aneg to supported features in PHY quirks

Henry Huang (1):

     sched_ext: keep running prev when prev->scx.slice != 0

Hongguang Gao (1):
RDMA/bnxt_re: Fix to export port num to ib_query_qp

Quoted 6 lines

Ian Forbes (2):
drm/vmwgfx: Unreserve BO on error
drm/vmwgfx: Add new keep_resv BO param

Ihor Solodrai (1):
selftests/sched_ext: fix build after renames in sched_ext API

Hi Greg,

I think the commit "selftests/sched_ext: fix build after renames in sched_ext API” was wrongly pulled into the stable 6.12.y without the sched_ext API changes introduced by Tejun’s series: https://lore.kernel.org/all/[email protected].
As a result, the sched_ext selftests compilation fails starting from v6.12.11:

exit.bpf.c:36:2: error: call to undeclared function 'scx_bpf_dsq_insert'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]

   36 |         scx_bpf_dsq_insert(p, DSQ_ID, SCX_SLICE_DFL, enq_flags);
      |         ^
exit.bpf.c:44:2: error: call to undeclared function 'scx_bpf_dsq_move_to_local'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
   44 |         scx_bpf_dsq_move_to_local(DSQ_ID);
      |         ^

2 errors generated.
...

Thanks,
Libo

Quoted 220 lines

Ilya Maximets (1):
openvswitch: fix lockup on tx to unregistering netdev with carrier

Jakub Kicinski (3):
eth: bnxt: always recalculate features after XDP clearing, fix null-deref
netdev: avoid CFI problems with sock priv helpers
selftests: tc-testing: reduce rshift value

Joe Hattori (2):
i2c: core: fix reference leak in i2c_register_adapter()
irqchip: Plug a OF node reference leak in platform_irqchip_probe()

Juergen Gross (1):
x86/asm: Make serialize() always_inline

Kairui Song (1):
zram: fix potential UAF of zram table

Karol Kolacinski (4):
ice: Fix E825 initialization
ice: Fix quad registers read on E825
ice: Fix ETH56G FC-FEC Rx offset value
ice: Add correct PHY lane assignment

Kenneth Feng (1):
drm/amdgpu: disable gfxoff with the compute workload on gfx12

Kevin Groeneveld (1):
net: fec: handle page_pool_dev_alloc_pages error

Koichiro Den (3):
gpio: virtuser: lock up configfs that an instantiated device depends on
gpio: sim: lock up configfs that an instantiated device depends on
hrtimers: Handle CPU state correctly on hotplug

Kuniyuki Iwashima (3):
gtp: Use for_each_netdev_rcu() in gtp_genl_dump_pdp().
gtp: Destroy device along with udp socket's netns dismantle.
pfcp: Destroy device along with udp socket's netns dismantle.

Leo Li (2):
drm/amd/display: Do not elevate mem_type change to full update drm/amd/display: Do not wait for PSR disable on vbl enable

Leo Stone (1):
hfs: Sanity check the root record

Leon Romanovsky (3):
net/mlx5e: Fix inversion dependency warning while enabling IPsec tunnel net/mlx5e: Rely on reqid in IPsec tunnel mode
net/mlx5e: Always start IPsec sequence number from 1

Lizhi Xu (2):
mac802154: check local interfaces before deleting sdata list
afs: Fix merge preference rule failure condition

Luis Chamberlain (1):
nvmet: propagate npwg topology

Luke D. Jones (2):
ALSA: hda/realtek: fixup ASUS GA605W
ALSA: hda/realtek: fixup ASUS H7606W

MD Danish Anwar (1):
soc: ti: pruss: Fix pruss APIs

Manivannan Sadhasivam (1):
scsi: ufs: core: Honor runtime/system PM levels if set by host controller drivers

Marco Nelissen (2):
iomap: avoid avoid truncating 64-bit offset to 32 bits
filemap: avoid truncating 64-bit offset to 32 bits

Mark Zhang (1):
net/mlx5: Clear port select structure when fail to create

Matthew Brost (1):
drm/xe: Mark ComputeCS read mode as UC on iGPU

Max Kellermann (1):
cachefiles: Parse the "secctx" immediately

Maíra Canal (1):
drm/v3d: Ensure job pointer is set to NULL after job completion

Michal Luczaj (1):
bpf: Fix bpf_sk_select_reuseport() memory leak

Nicholas Susanto (1):
Revert "drm/amd/display: Enable urgent latency adjustments for DCN35"

Oleg Nesterov (1):
poll_wait: add mb() to fix theoretical race between waitqueue_active() and .poll()

Paolo Abeni (3):
mptcp: be sure to send ack when mptcp-level window re-opens
mptcp: fix spurious wake-up on under memory pressure
selftests: mptcp: avoid spurious errors on disconnect

Patrisious Haddad (1):
net/mlx5: Fix RDMA TX steering prio

Paul Barker (1):
net: ravb: Fix max TX frame size for RZ/V2M

Paul Fertser (1):
net/ncsi: fix locking in Get MAC Address handling

Paulo Alcantara (1):
smb: client: fix double free of TCP_Server_Info::hostname

Pavel Begunkov (1):
net: make page_pool_ref_netmem work with net iovs

Peter Zijlstra (1):
sched/fair: Fix update_cfs_group() vs DELAY_DEQUEUE

Pratyush Yadav (1):
Revert "mtd: spi-nor: core: replace dummy buswidth from addr to data"

Qu Wenruo (1):
btrfs: add the missing error handling inside get_canonical_dev_path

Rafael J. Wysocki (1):
cpuidle: teo: Update documentation after previous changes

Rik van Riel (1):
fs/proc: fix softlockup in __read_vmcore (part 2)

Ryan Lee (1):
apparmor: allocate xmatch for nullpdb inside aa_alloc_null

Ryan Roberts (2):
selftests/mm: set allocated memory to non-zero content in cow test
mm: clear uffd-wp PTE/PMD state on mremap()

Sean Anderson (2):
net: xilinx: axienet: Fix IRQ coalescing packet count overflow
gpio: xilinx: Convert gpio_lock to raw spinlock

Sergey Temerkhanov (3):
ice: Introduce ice_get_phy_model() wrapper
ice: Add ice_get_ctrl_ptp() wrapper to simplify the code
ice: Use ice_adapter for PTP shared data instead of auxdev

Srinivas Pandruvada (2):
platform/x86/intel: power-domains: Add Clearwater Forest support platform/x86: ISST: Add Clearwater Forest to support list

Stefan Binding (1):
ALSA: hda/realtek: Add support for Ayaneo System using CS35L41 HDA

Stefano Garzarella (5):
vsock/bpf: return early if transport is not assigned vsock/virtio: discard packets if the transport changes vsock/virtio: cancel close work in the destructor
vsock: reset socket state when de-assigning the transport
vsock: prevent null-ptr-deref in vsock_*[has_data|has_space]

Steven Rostedt (1):
tracing: gfp: Fix the GFP enum values shown for user space tracing tools

Sudheer Kumar Doredla (1):
net: ethernet: ti: cpsw_ale: Fix cpsw_ale_get_field()

Suren Baghdasaryan (1):
tools: fix atomic_set() definition to set the value correctly

Takashi Iwai (1):
drm/nouveau/disp: Fix missing backlight control on Macbook 5,1

Tejun Heo (1):
sched_ext: Fix dsq_local_on selftest

Tom Chung (2):
drm/amd/display: Fix PSR-SU not support but still call the amdgpu_dm_psr_enable drm/amd/display: Disable replay and psr while VRR is enabled

Tomas Krcka (1):
irqchip/gic-v3-its: Don't enable interrupts in its_irq_set_vcpu_affinity()

Tomi Valkeinen (1):
i2c: atr: Fix client detach

Ville Syrjälä (1):
drm/i915/fb: Relax clear color alignment to 64 bytes

Viresh Kumar (1):
cpufreq: Move endif to the end of Kconfig file

Wayne Lin (1):
drm/amd/display: Validate mdoe under MST LCT=1 case as well

Wolfram Sang (3):
i2c: mux: demux-pinctrl: check initial mux selection, too
i2c: rcar: fix NACK handling when being a target
i2c: testunit: on errors, repeat NACK until STOP

Xiaolei Wang (1):
pmdomain: imx8mp-blk-ctrl: add missing loop break condition

Xin Li (Intel) (1):
x86/fred: Fix the FRED RSP0 MSR out of sync with its per-CPU cache

Yishai Hadas (1):
net/mlx5: Fix a lockdep warning as part of the write combining test

Yogesh Lal (1):
irqchip/gic-v3: Handle CPU_PM_ENTER_FAILED correctly

Yu-Chun Lin (1):
drm/tests: helpers: Fix compiler warning

Zhang Kunbo (1):
fs: fix missing declaration of init_files

author maintainer
#3 lore raw
Quoted 10 lines · Libo Chen
Quoted 3 lines · Greg Kroah-Hartman

Ihor Solodrai (1):
selftests/sched_ext: fix build after renames in sched_ext API

Hi Greg,

I think the commit "selftests/sched_ext: fix build after renames in sched_ext API” was wrongly pulled into the stable 6.12.y without the sched_ext API changes introduced by Tejun’s series: https://lore.kernel.org/all/[email protected].
As a result, the sched_ext selftests compilation fails starting from v6.12.11:

Quoted 8 lines

exit.bpf.c:36:2: error: call to undeclared function 'scx_bpf_dsq_insert'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]

   36 |         scx_bpf_dsq_insert(p, DSQ_ID, SCX_SLICE_DFL, enq_flags);
      |         ^
exit.bpf.c:44:2: error: call to undeclared function 'scx_bpf_dsq_move_to_local'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
   44 |         scx_bpf_dsq_move_to_local(DSQ_ID);
      |         ^

2 errors generated.
...

Thanks for catching this (nit, can you trim your reply, it's hard to find it in a huge email like this.)

Can you send a revert to fix this up?

thanks,

greg k-h