Linux 6.12.11
Greg Kroah-Hartman
maintainerI'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
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -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
@@ -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. */ asmvolatile (".byte 0xf, 0x1, 0xe8" :::"memory" );
arch/x86/kernel/fred.c +7 -1
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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 8u8 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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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 (>p->list, &gn->gtp_dev_list); + gn =net_generic (src_net, gtp_net_id); +list_add (>p->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, >p->tid_hash[i], hlist_tid)pdp_context_delete (pctx); -list_del_rcu (>p->list); +list_del (>p->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 != >p_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 == >p_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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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(
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/time/timer_migration.c +40 -3
43 lines not on this page · raw message
net/vmw_vsock/virtio_transport_common.c +26 -10
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
Lines of this file are not shown. View the raw message.
tools/testing/selftests/sched_ext/ddsp_vtimelocal_fail.bpf.c +2 -2
Lines of this file are not shown. View the raw message.
tools/testing/selftests/sched_ext/dsp_local_on.bpf.c +5 -2
Lines of this file are not shown. View the raw message.
tools/testing/selftests/sched_ext/dsp_local_on.c +3 -2
Lines of this file are not shown. View the raw message.
tools/testing/selftests/sched_ext/enq_select_cpu_fails.bpf.c +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/sched_ext/exit.bpf.c +2 -2
Lines of this file are not shown. View the raw message.
tools/testing/selftests/sched_ext/maximal.bpf.c +5 -3
Lines of this file are not shown. View the raw message.
tools/testing/selftests/sched_ext/select_cpu_dfl.bpf.c +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/sched_ext/select_cpu_dfl_nodispatch.bpf.c +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/sched_ext/select_cpu_dispatch.bpf.c +1 -1
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
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
Lines of this file are not shown. View the raw message.
tools/testing/selftests/sched_ext/select_cpu_vtime.bpf.c +4 -4
Lines of this file are not shown. View the raw message.
tools/testing/selftests/tc-testing/tc-tests/filters/flow.json +2 -2
Lines of this file are not shown. View the raw message.
tools/testing/shared/linux/maple_tree.h +1 -1
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.
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.gitlinux-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 optimizationsArd Biesheuvel (1):
efi/zboot: Limit compression options to GZIP and ZSTDArtem Chernyshev (1):
pktgen: Avoid out-of-bounds access inget_imix_entriesAshutosh Dixit (1):
drm/xe/oa: Add missing VISACTL mux registersBrahmajit Das (1):
fs/qnx6: Fix building with GCC 15Chenyuan Yang (2):
platform/x86: dell-uart-backlight: fix serdev race platform/x86: lenovo-yoga-tab2-pro-1380-fastcharger: fix serdev raceChris Mi (1):
net/mlx5: SF, Fix add port error handlingChristian König (1):
drm/amdgpu: always sync the GFX pipe on ctx switchClaudiu Beznea (1):
reset: rzg2l-usbphy-ctrl: Assign proper of node to the allocated deviceDan Carpenter (1):
nfp: bpf: prevent integer overflow innfp_bpf_event_output()Dave Airlie (1):
nouveau/fence: handle cross device fences properlyDavid Howells (2):
kheaders: Ignore silly-rename files
netfs: Fix non-contiguous donation between completed readsDavid Lechner (2):
hwmon: (tmp513) Fix division of negative numbers
hwmon: (ltc2991) Fix mixed signed/unsigned inDIV_ROUND_CLOSESTDavid Vernet (1):
scx: Fix maximal BPF selftest progDonet 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 walkersGreg Kroah-Hartman (1):
Linux 6.12.11Gui Chengming (1):
drm/amdgpu: fix fw attestation for MP0_14_0_{2/3}Guo Weikang (1):
mm/kmemleak: fix percpu memory leak detection failureHans de Goede (1):
ACPI: resource:acpi_dev_irq_override(): Check DMI match lastHeiner Kallweit (1):
net: ethernet: xgbe: re-add aneg to supported features in PHY quirksHenry Huang (1):
sched_ext: keep running prev when prev->scx.slice != 0Hongguang Gao (1):
RDMA/bnxt_re: Fix to export port num toib_query_qp
Quoted 6 lines
Ian Forbes (2):
drm/vmwgfx: Unreserve BO on error
drm/vmwgfx: Add newkeep_resvBO paramIhor Solodrai (1):
selftests/sched_ext: fix build after renames insched_extAPI
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 carrierJakub 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 valueJoe Hattori (2):
i2c: core: fix reference leak ini2c_register_adapter()
irqchip: Plug a OF node reference leak inplatform_irqchip_probe()Juergen Gross (1):
x86/asm: Makeserialize()always_inlineKairui Song (1):
zram: fix potential UAF of zram tableKarol 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 assignmentKenneth Feng (1):
drm/amdgpu: disable gfxoff with the compute workload on gfx12Kevin Groeneveld (1):
net: fec: handlepage_pool_dev_alloc_pageserrorKoichiro 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 hotplugKuniyuki Iwashima (3):
gtp: Usefor_each_netdev_rcu()ingtp_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 elevatemem_typechange to full update drm/amd/display: Do not wait for PSR disable on vbl enableLeo Stone (1):
hfs: Sanity check the root recordLeon 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 1Lizhi Xu (2):
mac802154: check local interfaces before deleting sdata list
afs: Fix merge preference rule failure conditionLuis Chamberlain (1):
nvmet: propagate npwg topologyLuke D. Jones (2):
ALSA: hda/realtek: fixup ASUS GA605W
ALSA: hda/realtek: fixup ASUS H7606WMD Danish Anwar (1):
soc: ti: pruss: Fix pruss APIsManivannan Sadhasivam (1):
scsi: ufs: core: Honor runtime/system PM levels if set by host controller driversMarco Nelissen (2):
iomap: avoid avoid truncating 64-bit offset to 32 bits
filemap: avoid truncating 64-bit offset to 32 bitsMark Zhang (1):
net/mlx5: Clear port select structure when fail to createMatthew Brost (1):
drm/xe: Mark ComputeCS read mode as UC on iGPUMax Kellermann (1):
cachefiles: Parse the "secctx" immediatelyMaíra Canal (1):
drm/v3d: Ensure job pointer is set to NULL after job completionMichal Luczaj (1):
bpf: Fixbpf_sk_select_reuseport()memory leakNicholas Susanto (1):
Revert "drm/amd/display: Enable urgent latency adjustments for DCN35"Oleg Nesterov (1):
poll_wait: addmb()to fix theoretical race betweenwaitqueue_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 disconnectPatrisious Haddad (1):
net/mlx5: Fix RDMA TX steering prioPaul Barker (1):
net: ravb: Fix max TX frame size for RZ/V2MPaul Fertser (1):
net/ncsi: fix locking in Get MAC Address handlingPaulo Alcantara (1):
smb: client: fix double free ofTCP_Server_Info::hostnamePavel Begunkov (1):
net: makepage_pool_ref_netmemwork with net iovsPeter Zijlstra (1):
sched/fair: Fixupdate_cfs_group()vsDELAY_DEQUEUEPratyush Yadav (1):
Revert "mtd: spi-nor: core: replace dummy buswidth from addr to data"Qu Wenruo (1):
btrfs: add the missing error handling insideget_canonical_dev_pathRafael J. Wysocki (1):
cpuidle: teo: Update documentation after previous changesRik van Riel (1):
fs/proc: fix softlockup in__read_vmcore(part 2)Ryan Lee (1):
apparmor: allocate xmatch for nullpdb insideaa_alloc_nullRyan Roberts (2):
selftests/mm: set allocated memory to non-zero content in cow test
mm: clear uffd-wp PTE/PMD state onmremap()Sean Anderson (2):
net: xilinx: axienet: Fix IRQ coalescing packet count overflow
gpio: xilinx: Convertgpio_lockto raw spinlockSergey Temerkhanov (3):
ice: Introduceice_get_phy_model()wrapper
ice: Addice_get_ctrl_ptp()wrapper to simplify the code
ice: Useice_adapterfor PTP shared data instead of auxdevSrinivas Pandruvada (2):
platform/x86/intel: power-domains: Add Clearwater Forest support platform/x86: ISST: Add Clearwater Forest to support listStefan Binding (1):
ALSA: hda/realtek: Add support for Ayaneo System using CS35L41 HDAStefano 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 toolsSudheer Kumar Doredla (1):
net: ethernet: ti:cpsw_ale: Fixcpsw_ale_get_field()Suren Baghdasaryan (1):
tools: fixatomic_set()definition to set the value correctlyTakashi Iwai (1):
drm/nouveau/disp: Fix missing backlight control on Macbook 5,1Tejun Heo (1):
sched_ext: Fixdsq_local_onselftestTom Chung (2):
drm/amd/display: Fix PSR-SU not support but still call theamdgpu_dm_psr_enabledrm/amd/display: Disable replay and psr while VRR is enabledTomas Krcka (1):
irqchip/gic-v3-its: Don't enable interrupts inits_irq_set_vcpu_affinity()Tomi Valkeinen (1):
i2c: atr: Fix client detachVille Syrjälä (1):
drm/i915/fb: Relax clear color alignment to 64 bytesViresh Kumar (1):
cpufreq: Move endif to the end ofKconfigfileWayne Lin (1):
drm/amd/display: Validate mdoe under MST LCT=1 case as wellWolfram 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 STOPXiaolei Wang (1):
pmdomain: imx8mp-blk-ctrl: add missing loop break conditionXin Li (Intel) (1):
x86/fred: Fix the FRED RSP0 MSR out of sync with its per-CPU cacheYishai Hadas (1):
net/mlx5: Fix a lockdep warning as part of the write combining testYogesh Lal (1):
irqchip/gic-v3: HandleCPU_PM_ENTER_FAILEDcorrectlyYu-Chun Lin (1):
drm/tests: helpers: Fix compiler warningZhang Kunbo (1):
fs: fix missing declaration ofinit_files
Greg Kroah-Hartman
maintainerQuoted 10 lines · Libo Chen
Quoted 3 lines · Greg Kroah-Hartman
Ihor Solodrai (1):
selftests/sched_ext: fix build after renames insched_extAPIHi Greg,
I think the commit "selftests/sched_ext: fix build after renames in
sched_extAPI” was wrongly pulled into the stable 6.12.y without thesched_extAPI changes introduced by Tejun’s series: https://lore.kernel.org/all/[email protected].
As a result, thesched_extselftests 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