Skip to contentSkip to conversation

Linux 6.18.59

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Oct 26 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 6.18.59 kernel.

All users of the 6.18 kernel series must upgrade.

The updated 6.18.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.18.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

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

 Documentation/netlink/specs/conntrack.yaml                    |   21 
 Makefile                                                      |    2 
 arch/arm/boot/dts/ti/omap/dra7xx-clocks.dtsi                  |    2 
 arch/nios2/include/asm/checksum.h                             |    2 
 arch/s390/pci/pci_sysfs.c                                     |    3 
 arch/x86/hyperv/hv_init.c                                     |    3 
 arch/x86/kernel/kvm.c                                         |   32 
 arch/x86/kvm/mmu.h                                            |   16 
 arch/x86/kvm/mmu/mmu.c                                        |    1 
 arch/x86/kvm/mmu/paging_tmpl.h                                |    2 
 arch/x86/kvm/svm/svm.c                                        |   10 
 arch/x86/kvm/vmx/nested.c                                     |    4 
 block/bsg-lib.c                                               |   13 
 drivers/accel/rocket/rocket_device.c                          |    2 
 drivers/accel/rocket/rocket_device.h                          |    1 
 drivers/accel/rocket/rocket_drv.c                             |    7 
 drivers/base/regmap/internal.h                                |    1 
 drivers/base/regmap/regcache-maple.c                          |    9 
 drivers/base/regmap/regcache.c                                |   18 
 drivers/gpio/gpio-mxc.c                                       |   36 
 drivers/gpio/gpio-nct6694.c                                   |    2 
 drivers/gpio/gpiolib.c                                        |    9 
 drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c                        |    6 
 drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c                   |   21 
 drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c                       |   11 
 drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c                        |   25 
 drivers/gpu/drm/amd/amdgpu/vce_v3_0.c                         |    2 
 drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_2_ppt.c          |   55 
 drivers/gpu/drm/drm_exec.c                                    |   73 -
 drivers/gpu/drm/i915/display/intel_cx0_phy.c                  |   12 
 drivers/gpu/drm/i915/display/intel_dmc.c                      |   76 +
 drivers/gpu/drm/i915/display/intel_dmc_regs.h                 |   12 
 drivers/gpu/drm/panthor/panthor_hw.c                          |    2 
 drivers/gpu/drm/ttm/ttm_bo.c                                  |    2 
 drivers/gpu/drm/vc4/vc4_hdmi.c                                |   20 
 drivers/gpu/drm/xe/xe_bo.c                                    |    6 
 drivers/gpu/drm/xe/xe_exec.c                                  |    7 
 drivers/gpu/drm/xe/xe_oa.c                                    |    7 
 drivers/gpu/drm/xe/xe_vm.c                                    |   31 
 drivers/gpu/drm/xe/xe_vm.h                                    |    2 
 drivers/hv/channel_mgmt.c                                     |   12 
 drivers/hv/connection.c                                       |    1 
 drivers/hv/vmbus_drv.c                                        |    1 
 drivers/i2c/busses/i2c-qcom-cci.c                             |    4 
 drivers/i2c/busses/i2c-qcom-geni.c                            |   37 
 drivers/i2c/busses/i2c-viai2c-wmt.c                           |    2 
 drivers/md/dm-cache-target.c                                  |   59 
 drivers/md/dm-crypt.c                                         |    3 
 drivers/md/dm-ebs-target.c                                    |    3 
 drivers/md/dm-integrity.c                                     |    6 
 drivers/net/ethernet/broadcom/genet/bcmgenet.c                |   10 
 drivers/net/ethernet/intel/Kconfig                            |    1 
 drivers/net/ethernet/intel/ice/ice.h                          |    3 
 drivers/net/ethernet/intel/ice/ice_base.c                     |  128 -
 drivers/net/ethernet/intel/ice/ice_ethtool.c                  |   26 
 drivers/net/ethernet/intel/ice/ice_lib.c                      |   16 
 drivers/net/ethernet/intel/ice/ice_main.c                     |   21 
 drivers/net/ethernet/intel/ice/ice_txrx.c                     |  647 +---------
 drivers/net/ethernet/intel/ice/ice_txrx.h                     |  125 -
 drivers/net/ethernet/intel/ice/ice_txrx_lib.c                 |   65 -
 drivers/net/ethernet/intel/ice/ice_txrx_lib.h                 |    9 
 drivers/net/ethernet/intel/ice/ice_xsk.c                      |  146 --
 drivers/net/ethernet/intel/ice/ice_xsk.h                      |    6 
 drivers/net/ethernet/intel/ice/virt/queues.c                  |    6 
 drivers/net/ethernet/mellanox/mlx5/core/steering/hws/fs_hws.c |    5 
 drivers/net/wireless/intersil/p54/fwio.c                      |   42 
 drivers/pci/pci.c                                             |   15 
 drivers/pinctrl/pinctrl-amd.c                                 |    9 
 drivers/pinctrl/qcom/pinctrl-ipq5018.c                        |   10 
 drivers/pinctrl/qcom/pinctrl-qcs8300.c                        |    1 
 drivers/pinctrl/sunxi/pinctrl-sunxi-dt.c                      |    1 
 drivers/power/supply/ds2780_battery.c                         |    2 
 drivers/power/supply/generic-adc-battery.c                    |    9 
 drivers/power/supply/power_supply_core.c                      |   26 
 drivers/s390/net/ctcm_mpc.c                                   |    3 
 drivers/scsi/libiscsi.c                                       |   14 
 drivers/scsi/libsas/sas_expander.c                            |   14 
 drivers/scsi/mpi3mr/mpi3mr_app.c                              |    2 
 drivers/scsi/scsi_transport_fc.c                              |    6 
 drivers/scsi/scsi_transport_iscsi.c                           |    2 
 drivers/scsi/scsi_transport_sas.c                             |    6 
 drivers/scsi/st.c                                             |   18 
 drivers/scsi/xen-scsifront.c                                  |    1 
 drivers/soc/tegra/fuse/tegra-apbmisc.c                        |    2 
 drivers/spi/spi-tegra114.c                                    |    7 
 drivers/target/iscsi/iscsi_target_configfs.c                  |   26 
 drivers/ufs/core/ufs_bsg.c                                    |    2 
 fs/afs/internal.h                                             |    2 
 fs/afs/super.c                                                |    2 
 fs/autofs/waitq.c                                             |   25 
 fs/ext4/ext4.h                                                |    2 
 fs/ext4/extents_status.c                                      |    7 
 fs/ext4/extents_status.h                                      |    1 
 fs/ext4/super.c                                               |   13 
 fs/namei.c                                                    |    3 
 fs/notify/mark.c                                              |   11 
 fs/ntfs3/ntfs_fs.h                                            |    1 
 fs/ntfs3/super.c                                              |   66 -
 fs/ocfs2/dlm/dlmcommon.h                                      |    2 
 fs/ocfs2/dlm/dlmdebug.c                                       |    5 
 fs/ocfs2/dlm/dlmrecovery.c                                    |    2 
 fs/pipe.c                                                     |    6 
 fs/smb/client/cifsfs.c                                        |   10 
 fs/smb/client/cifssmb.c                                       |   13 
 fs/smb/client/connect.c                                       |   21 
 fs/smb/client/file.c                                          |   38 
 fs/smb/client/smb2ops.c                                       |   35 
 fs/smb/server/smb2pdu.c                                       |    5 
 fs/tracefs/event_inode.c                                      |   10 
 fs/unicode/utf8-core.c                                        |   21 
 fs/xfs/libxfs/xfs_rtgroup.h                                   |    6 
 fs/xfs/libxfs/xfs_sb.c                                        |   37 
 fs/xfs/xfs_aops.c                                             |    3 
 fs/xfs/xfs_fsmap.c                                            |    2 
 fs/xfs/xfs_ioctl.c                                            |    2 
 fs/xfs/xfs_iomap.c                                            |    3 
 fs/xfs/xfs_iops.c                                             |    2 
 include/drm/drm_exec.h                                        |   15 
 include/linux/bsg-lib.h                                       |    3 
 include/linux/cgroup-defs.h                                   |    5 
 include/linux/fsnotify_backend.h                              |    1 
 include/linux/futex.h                                         |   18 
 include/linux/ipv6.h                                          |   22 
 include/linux/maple_tree.h                                    |    4 
 include/linux/mm_types.h                                      |    3 
 include/linux/power_supply.h                                  |   16 
 include/linux/sched/user.h                                    |    8 
 include/linux/unicode.h                                       |    1 
 include/net/af_vsock.h                                        |    3 
 include/net/ipv6.h                                            |    2 
 include/net/netfilter/nf_tables_ipv6.h                        |    4 
 include/net/rose.h                                            |   12 
 io_uring/cancel.c                                             |  269 ++++
 io_uring/cancel.h                                             |    8 
 io_uring/io_uring.c                                           |  288 ----
 io_uring/io_uring.h                                           |   13 
 io_uring/sqpoll.c                                             |    1 
 kernel/cgroup/cgroup.c                                        |    6 
 kernel/events/core.c                                          |   33 
 kernel/exit.c                                                 |    2 
 kernel/futex/core.c                                           |   75 -
 kernel/kexec_handover.c                                       |    2 
 kernel/pid_namespace.c                                        |    2 
 kernel/printk/printk.c                                        |    2 
 kernel/sched/ext.c                                            |   13 
 kernel/sched/ext_idle.c                                       |   50 
 kernel/sched/ext_internal.h                                   |    5 
 kernel/trace/ring_buffer.c                                    |   13 
 kernel/trace/trace.c                                          |   13 
 kernel/trace/trace_events_filter.c                            |    9 
 kernel/trace/trace_events_hist.c                              |   19 
 kernel/trace/trace_probe.c                                    |    3 
 kernel/watch_queue.c                                          |   11 
 kernel/workqueue.c                                            |   36 
 lib/crypto/arm64/poly1305-armv8.pl                            |    2 
 lib/crypto/poly1305.c                                         |    2 
 net/ax25/ax25_std_in.c                                        |   36 
 net/bridge/br_multicast.c                                     |   13 
 net/bridge/br_netfilter_ipv6.c                                |    2 
 net/bridge/netfilter/nf_conntrack_bridge.c                    |    4 
 net/core/page_pool.c                                          |    3 
 net/core/sock.c                                               |    3 
 net/ipv4/fib_semantics.c                                      |    2 
 net/ipv4/tcp.c                                                |   18 
 net/ipv4/tcp_cong.c                                           |    4 
 net/ipv4/tcp_dctcp.c                                          |    4 
 net/ipv4/tcp_minisocks.c                                      |    2 
 net/ipv4/tcp_output.c                                         |    2 
 net/ipv4/udp.c                                                |   11 
 net/ipv6/calipso.c                                            |    6 
 net/ipv6/ip6_input.c                                          |    2 
 net/ipv6/ip6_offload.c                                        |    7 
 net/ipv6/output_core.c                                        |    7 
 net/iucv/af_iucv.c                                            |   42 
 net/mac802154/ieee802154_i.h                                  |    7 
 net/mac802154/main.c                                          |    1 
 net/mac802154/scan.c                                          |   51 
 net/netfilter/ipvs/ip_vs_xmit.c                               |    2 
 net/netfilter/nf_conntrack_ovs.c                              |    2 
 net/netfilter/nf_log_syslog.c                                 |    2 
 net/netfilter/nft_byteorder.c                                 |   51 
 net/netlink/af_netlink.c                                      |   10 
 net/rds/rdma_transport.c                                      |   38 
 net/sched/act_api.c                                           |   11 
 net/sched/cls_flower.c                                        |    5 
 net/sched/sch_cake.c                                          |    2 
 net/sctp/inqueue.c                                            |    6 
 net/sctp/socket.c                                             |   33 
 net/tipc/node.c                                               |    2 
 net/vmw_vsock/af_vsock.c                                      |   49 
 net/vmw_vsock/virtio_transport_common.c                       |    9 
 net/vmw_vsock/vmci_transport.c                                |   40 
 samples/pidfd/Makefile                                        |    2 
 sound/pci/ctxfi/ctatc.c                                       |   16 
 sound/pci/ctxfi/ctdaio.c                                      |    5 
 sound/pci/ctxfi/ctdaio.h                                      |    2 
 sound/soc/amd/yc/pci-acp6x.c                                  |   38 
 sound/soc/codecs/cs42l52.c                                    |    2 
 sound/soc/codecs/cs42l56.c                                    |    2 
 sound/soc/codecs/max98371.c                                   |    2 
 sound/soc/codecs/nau8822.c                                    |    4 
 sound/soc/codecs/pcm3168a.c                                   |    2 
 sound/soc/codecs/wm8978.c                                     |    4 
 sound/soc/intel/avs/pcm.c                                     |    2 
 sound/soc/sof/ipc4-topology.c                                 |   16 
 sound/soc/stm/stm32_spdifrx.c                                 |    2 
 tools/bootconfig/main.c                                       |    3 
 tools/gpio/Makefile                                           |    6 
 tools/power/x86/turbostat/turbostat.c                         |   24 
 209 files changed, 2201 insertions(+), 1896 deletions(-)

Abel Vesa (1):
i2c: qcom-geni: Restore the source-clock selection policy

Adriel Santos (1):
pinctrl: qcom: ipq5018: replace gcc_plltest with pwm2 on gpio12

Aleksandr Khromov (3):
ksmbd: fill in FileSysIdentifier in FS_POSIX_INFORMATION
ksmbd: initialize FileSystemControlFlags in FS_CONTROL_INFORMATION
ksmbd: zero the FS_OBJECT_ID_INFORMATION buffer before filling it in

Alexander Gruhlke (1):
PCI: Don't treat ~0 as ready in pci_dev_wait() with RRS SV

Alexander Lobakin (1):
ice: fix broken Rx on VFs

Alexander Stein (1):
gpio: mxc: use BIT() macro

Alexandre Cassen (2):
net/mlx5: HWS, release L2 to L3 tunnel reformats to their own pool net/mlx5: HWS, fix flow meter offset within its bulk

Alexey Charkov (1):
power: supply: core: prevent unregistering a power supply while a callback runs

Alice Mikityanska (1):
net/ipv6: Introduce payload_len helpers

Allison Henderson (1):
net/rds: don't let the rdma_cm destroy an id RDS still owns on route failure

Amirmohammad Eftekhar (1):
KVM: nVMX: Reset MMU back to the root MMU if loading L2 state fails for !VM-Entry

Amit Machhiwal (1):
tracing: Do not initialize tracefs work if tracing is disabled

Andy Shevchenko (1):

      regcache: Add ->populate() callback to separate from ->init()

Antoine Huret (1):
perf: Update cgroup time when rotating multiplexed events

Aohan Mei (2):
net: rds: fix uninitialized trans dereference in CM event handler net/sched: cls_flower: validate mask pointer after nla_next()

Aswin Karuvally (1):
s390/ctcm: Prevent XID null dereference

Avi Weiss (1):
ASoC: stm32: spdifrx: fix synchronization state check

Aviv Vaknin (1):
pid_namespace: make zap_pid_ns_processes() freezable

Baokun Li (1):
fs/ntfs3: fix ntfs_mount_options leak in ntfs_fill_super()

Ben Cressey (2):
dm-crypt: fix a tiny race condition in crypt_dec_pending
dm-integrity: fix infinite loop on discard with large tag size

Benjamin Marzinski (1):
dm cache: fix issue with background work locking

Bernard Pidoux (2):
ax25: bound REJ-driven fast retransmits with the existing N2 counter
rose: purge rose_neigh->queue on final teardown

Bobby Eshleman (1):
virtio: set skb owner of virtio_transport_reset_no_sock() reply

Bommu Krishnaiah (1):
drm/xe/oa: Zero OA buffer at allocation

Breno Leitao (1):
workqueue: release pwq pools by pool type

Bryam Vargas (1):
net/iucv: fix the recvmsg window update

Carlos Jones Jr (1):
spi: tegra114: assert CS GPIO for every transfer in a message

Carlos Maiolino (1):
xfs: fix capability check in xfs

Cen Zhang (1):
ocfs2/dlm: Protect the recovery list during debugfs reads

Cen Zhang (Microsoft Security FORGE Labs) (3):
tcp: fix use-after-free in do_tcp_getsockopt(TCP_CONGESTION)
tcp: fix use-after-free in do_tcp_getsockopt(TCP_CC_INFO) io_uring/cancel: don't spin on local work the task can't run

Cen Zhang (Microsoft) (1):
watch_queue: Fix note pool publication race in watch_queue_set_size()

Charles Vosburgh (1):
sctp: validate chunk length in the inqueue parser

Chen Cheng (1):
dm-integrity: require stable writes for internal hash modes

Chengfeng Ye (1):
tipc: protect node reset trace dump with node lock

Christian Brauner (6):
afs: free the super info after a grace period
unicode: free the map after a grace period
eventfs: Free the eventfs_inode after an rcu grace period too
namei: test for a negative dentry the way traverse_mounts() does
ext4: free the sbi after a grace period
ntfs3: free the sbi after a grace period

Christian König (1):
drm/exec: don't immediately add prelocked obj to array of locked objs

Christoph Hellwig (1):
xfs: fix zoned write iomap flags assignments

Daehyeon Ko (3):
sctp: revalidate output stream after association connect wait vsock/virtio: validate packet source for connected sockets vsock/vmci: validate packet source for connected sockets

Dave Stevenson (1):
drm/vc4: hdmi: Move packet RAM enable to PM runtime

David Carlier (2):
ring-buffer: Do not show buffer_meta for CPUs without a buffer
tracing: Take trace_types_lock when dropping the buffer_meta reference

David Oberhollenzer (1):
ARM: dts: ti/omap: dra7: fix PCIe PHY clock divider definition

David Rosca (1):
drm/amdgpu: Fix VCE 3 ring align_mask

Dibin Moolakadan Subrahmanian (2):
drm/i915/dmc: Add sanity check for DMC load address drm/i915/dmc: Harden DMC firmware payload parsing

Dmitry Kandybka (1):
tracing: Fix ignored return value of resize_buffer_duplicate_size()

Dnyaneshwar Bhadane (1):
drm/i915/cx0_phy: Fix ARL-S host bridge detection

Donggeun Yoo (2):
ring-buffer: Fix the sub-buffer array base in rb_meta_subbuf_idx()
tracing: Fix the shift out of bounds in the log2 histogram modifier

EJ Campbell (1):
x86/kvm: Don't consume async #PF flags on a kernel #PF in NMI context

Eric Biggers (1):

      lib/crypto: poly1305: Use memzero_explicit() in poly1305_final()

Erik Faye-Lund (1):
drm/panthor: fix immortalis condition

Etienne Perot (1):
cgroup: fix spurious SIGKILL of CLONE_INTO_CGROUP children

Federico Parola (1):
kho: free phys_bits bitmaps using free_page() in __kho_abort()

Florian Schauer (1):
page_pool: keep frag_offset aligned for odd-sized requests

Florian Westphal (1):
netfilter: nft_byteorder: remove multi-register support

Francesco Lavra (1):
regcache: Do not overwrite error code when finalizing cache after error

Frank Sorenson (3):
cifs: don't update i_size in cifs_do_truncate without a cached handle
smb: client: fix heap overflow in cifs_do_set_acl()
cifs: add revalidation on FSCTL failure in smb2_duplicate_extents()

Genjian Zhang (1):
dm-ebs: fix incorrect device offset check in ebs_ctr()

Gilberto Conde (1):
pinctrl: qcom: ipq5018: add missing pwm3 function on gpio13

Greg Kroah-Hartman (1):

      Linux 6.18.59

Guangshuo Li (1):
accel/rocket: clear rdev on device init failure

Harin Lee (2):
ALSA: ctxfi: Rename SPDIFI1 to SPDIFI_BAY
ALSA: ctxfi: Use correct DAIO type for da_desc

Haris Okanovic (1):
perf: Fix perf_pmu_migrate_context() leaving events behind

Heyang Tan (1):
wifi: p54: validate firmware record lengths

Hui Su (1):
sched_ext: idle: Respect task affinity in restricted CPU selection

Huiwen He (1):
smb/client: refresh allocation size after duplicate extents

HyeongJun An (6):
ASoC: cs42l56: Put the Limiter Cushion control on the limiter register
ASoC: cs42l52: Fix the NG Type Switch bit
ASoC: pcm3168a: Fix the DAC zero flag polarity bit
ASoC: max98371: Fix the Speaker DHT Min Volume bits
ASoC: wm8978: Fix the 128x oversampling switch bits
ASoC: nau8822: Fix the 128x oversampling switch bits

Hyunwoo Kim (1):
KVM: x86/mmu: Preserve nested TDP shadow page tables if they are used as roots

Ido Schimmel (1):
ipv4: udp: Create exceptions before socket matching

Igor Paunovic (1):
accel/rocket: search every core slot when a core is removed

Ilya Maximets (2):
netlink: specs: fix the conntrack filter type
netlink: specs: add missing mask attributes for conntrack dump

Jann Horn (1):
futex: Fix mm reuse handling for FUT_OFF_MMSHARED

Jens Axboe (3):
io_uring/cancel: move request/task cancelation logic into cancel.c io_uring/cancel: move __io_uring_cancel() into cancel.c io_uring/cancel: move cancelation code from io_uring.c to cancel.c

Jesse Zhang (4):
drm/amdgpu: don't drop the runtime PM reference twice in amdgpu_gpr drm/amdgpu: report the BO alignment in bytes in GEM_LIST_HANDLES drm/amdgpu: keep the eviction fence until the last handle is closed drm/amdgpu: free the userptr ranges when a CS fails after parser_bos

Jinhui Guo (1):
soc/tegra: fuse: Add missing newline to APBMISC error message

Joas Antonio dos Santos (1):
calipso: keep BIG TCP payload_len in calipso_skbuff_setattr()

John Ogness (1):
printk: Postpone kthread startup

Jun Yang (1):
net: bridge: mcast: don't truncate the port group walk on teardown

Jérémy Jean (2):
lib/crypto: arm64: Fix lost Poly1305 carry when resuming NEON state net/sched: fix use-after-free in __tcf_action_put()

Kaiwen Shi (1):

      mac802154: fix data race and NULL deref on local->assoc_dev

Karl Mehltretter (1):
power: supply: Fix maintenance charge table kernel-doc

Keith Busch (1):
nios2: fix __wsum type degradation in csum_fold()

Kenneth Feng (1):
drm/amd/pm: add zero fan stop temperature support on smu 14.0.2

Kent Gibson (1):
gpiolib: fix memory leak in gpiod_set_array_value_complex() on error paths

Konrad Dybcio (1):
pinctrl: qcom: qcs8300: Fix intr_target_width

Krystian Kaniewski (1):
ring-buffer: Fix false warning in ring_buffer_map_get_reader()

Kyle Zeng (4):
netlink: reset skb headers before unicast and multicast filtering
pipe: preserve existing fasync readers on writer setup failure
netlink: avoid hashing the network namespace pointer
fsnotify: prevent mark additions during connector teardown

Laurence Oberman (2):
scsi: st: Save the visited block for the partition the drive is in
scsi: st: Fix use-after-free race between st_remove() and st_open()

Lee Jones (1):
tracing/histograms: Reject non-stacktrace fields for synthetic stacktrace fields

Len Brown (4):
tools/power turbostat: Fix fd_perf leak on reset tools/power turbostat: Fix CWF PMT off-by-one tools/power turbostat: Fix PMT error path fd handling tools/power turbostat: Fix add_counter issue if > 24 counters.

Linfeng Sun (1):
scsi: target: iscsi: Fix race in discovery auth updates

Loic Poulain (1):
i2c: qcom-cci: Fix HALT_ACK reset request being dropped

Lorenzo Stoakes (ARM) (1):
perf: Track the perf mlock gift separately

Mario Limonciello (2):
ASoC: amd: yc: disable MSI on resume
pinctrl: amd: Clear S4 wake bits when firmware has _AEI

Martin Kaiser (1):
tracing: probes: error if BTF is required but unavailable

Michael Kelley (2):
x86/hyperv: Avoid using per-cpu output page in hv_apicid_to_vp_index()
Drivers: hv: Don't reset VMBus connection state on error/exit paths

Michael Reeves (1):
regmap: Drop map lock during cache init and exit

Michal Kubiak (3):
ice: remove legacy Rx and construct SKB
ice: drop page splitting and recycling
ice: switch to Page Pool

Michal Luczaj (1):
vsock: treat TCP_CLOSING as once-established

Michal Schmidt (1):
ice: fix crash in ethtool offline loopback test

Ming Yu (1):
gpio: nct6694: Mark the GPIO controller as sleeping

Ming-Hung Tsai (1):
dm cache: fix demotion stats in passthrough mode

Nicolai Buchwitz (1):
net: bcmgenet: unshare the skb before writing the control block

Niklas Schnelle (1):
s390/pci: Fix leak of uninitialized kernel data in SCLP report

Niranjana Vishwanathapura (1):
drm/xe: skip eviction of a BO with no resource

Norbert Szetei (1):
net: psp: do not inherit the Rx association on clone

Pablo Mazzini (1):
pinctrl: sunxi: dt: do not accumulate npins across probe attempts

Paolo Bonzini (1):
KVM: x86/mmu: Cope with the SS bit being set in #NPF exit codes

Paulo Alcantara (3):
smb: client: fix multiuser mount with krb5
smb: client: fix data corruption with concurrent writes and O_TRUNC
smb: client: drain outstanding I/O before truncating on O_TRUNC open

Peng Fan (4):
gpio: mxc: fix race between chained IRQ handler install and probe completion
gpio: mxc: fix both_edges bit operations
gpio: mxc: fix wakeup_pads bit operations
gpio: mxc: fix race between gpiochip registration and IRQ domain setup

Peter Ujfalusi (1):
ASoC: SOF: ipc4-topology: Fix shift-out-of-bounds for aggregated ALH capture

Sasha Levin (3):
samples: pidfd: fix userprogs typo
bootconfig: give the footer size static_assert a message
tools: gpio: fix building from the top level with O=

Sergey Tiraspolsky (1):
ASoC: Intel: avs: Reset the stream unless it is already prepared

Stanley Jhu (1):
scsi: bsg: Pass reply_len to bsg_setup_queue() to fit UFS ARPMB replies

Sung Byeongchan (1):
autofs: ignore notification errors from a replaced pipe

Svyatoslav Ryhel (1):
power: supply: generic-adc-battery: Fix temperature IIO channel conversion

Taeyang Lee (2):
tracing: Check operator stack capacity before pushing
tracing: Keep the predicate limit separate from program capacity

Takashi Iwai (1):
ALSA: ctxfi: Don't enumerate SPDIF1 at DAIO initialization

Tejun Heo (2):
workqueue: Annotate cb_lock nesting when draining a dead BH pool
sched_ext: Fix stall when a task enqueued with SCX_ENQ_LAST lands back on its CPU's local DSQ

Tengda Wu (1):
tracing: Fix hist trigger timestamps for buffered events

Thomas Hellström (1):
drm/xe: Bump LRU for external objects on exec and rebind

Timur Kristóf (1):
drm/amdgpu/sdma3: Work around POLL_REGMEM / FENCE hang

Vadim Nikitushkin (1):
drm/ttm: fix swapped-out resources never leaving their bulk_move range

Waiman Long (1):
Drivers: hv: Avoid infinite retry loop in init_vp_index()

Wentao Liang (1):
i2c: viai2c-wmt: Fix clock leak in wmt_i2c_probe()

Xingui Yang (1):
scsi: libsas: Fix SMP IO deadlock during HA resume

Xueqin Luo (1):
power: supply: ds2780: Fix ds2780_get_capacity() returning raw value

YangWen (2):

      ntfs3: fix use-after-free of sbi->options in cmp_fnames
      ntfs3: fix double free of sbi->options->nls and clarify ownership of fc->fs_private

Yao Kai (1):
workqueue: Fix unbound pool lifetime for pending pwqs

Yehyeong Lee (4):
scsi: xen/scsifront: Check for a NULL shadow entry on a backend response
scsi: libiscsi: Reject a negative task index from parse_pdu_itt
scsi: libiscsi: Validate the ITT reflected in a Reject PDU
scsi: libiscsi: Validate the task named by a management response

Yosry Ahmed (1):
KVM: SVM: Stop toggling virtual VMSAVE/VMLOAD on intercept recalc

Yun Zhou (1):
xfs: don't hold buffer locks across sync transaction commit in xfs_sync_sb_buf

Zihan Xi (1):
ipv4: avoid divide by zero in fib_rebalance

Zqiang (1):
workqueue: Use raise_softirq() to trigger softirq in irq_work handler

author maintainer
#1 lore raw
Documentation/netlink/specs/conntrack.yaml +18 -3
index db7cddcda50a..b1eb102ab843 100644
@@ -360,6 +360,17 @@ attribute-sets:
         name: tsoff
         type: u32
         byte-order: big-endian
+  -
+    name: filter-attrs
+    attributes:
+      -
+        name: orig-flags
+        type: u32
+        doc: bitmask of tuple fields to filter on, original direction
+      -
+        name: reply-flags
+        type: u32
+        doc: bitmask of tuple fields to filter on, reply direction
   -
     name: conntrack-attrs
     attributes:
@@ -466,7 +477,7 @@ attribute-sets:
       -
         name: filter
         type: nest
-        nested-attributes: tuple-attrs
+        nested-attributes: filter-attrs
       -
         name: status-mask
         type: u32
@@ -591,10 +602,14 @@ operations:
         request:
           value: 0x101
           attributes:
-            - mark
-            - filter
+            - tuple-orig
+            - tuple-reply
             - status
+            - mark
             - zone
+            - mark-mask
+            - filter
+            - status-mask
         reply:
           value: 0x100
           attributes:
Makefile +1 -1
index 4b6869e045e6..dbe46057221c 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 6
 PATCHLEVEL = 18
-SUBLEVEL = 58
+SUBLEVEL = 59
 EXTRAVERSION =
 NAME = Baby Opossum Posse
 
arch/arm/boot/dts/ti/omap/dra7xx-clocks.dtsi +1 -1
index 0de16ee262cf..615a8fb47776 100644
@@ -1376,8 +1376,8 @@ optfclk_pciephy_div: clock-optfclk-pciephy-div-8@4a00821c {
 		clocks = <&apll_pcie_ck>;
 		#clock-cells = <0>;
 		reg = <0x021c>;
+		ti,dividers = <2>, <1>;
 		ti,bit-shift = <8>;
-		ti,max-div = <2>;
 	};
 
 	apll_pcie_clkvcoldo: clock-apll-pcie-clkvcoldo {
arch/nios2/include/asm/checksum.h +1 -1
index 69004e07a1ba..b6b415ae17a0 100644
@@ -27,7 +27,7 @@ static inline __sum16 csum_fold(__wsum sum)
 		"add	%0, %0, r8\n"
 		"nor	%0, %0, %0\n"
 		: "=r" (sum)
-		: "r" (sum << 16), "0" (sum)
+		: "r" ((__force u32)sum << 16), "0" (sum)
 		: "r8");
 	return (__force __sum16) sum;
 }
arch/s390/pci/pci_sysfs.c +3 -0
index 12060870e2aa..f3b2c624bf89 100644
@@ -154,6 +154,9 @@ static ssize_t report_error_write(struct file *filp, struct kobject *kobj,
 	if (off || (count < sizeof(*report)))
 		return -EINVAL;
 
+	if (count < (report->length + sizeof(*report)))
+		return -EINVAL;
+
 	ret = sclp_pci_report(report, zdev->fh, zdev->fid);
 
 	return ret ? ret : count;
arch/x86/hyperv/hv_init.c +2 -1
index 085ef4f2e73a..498d48b575e5 100644
@@ -713,7 +713,8 @@ int hv_apicid_to_vp_index(u32 apic_id)
 	input->partition_id = HV_PARTITION_ID_SELF;
 	input->apic_ids[0] = apic_id;
 
-	output = *this_cpu_ptr(hyperv_pcpu_output_arg);
+	/* Treat input as having 2 APIC IDs so output is 64-bit aligned */
+	output = (void *)input + struct_size(input, apic_ids, 2);
 
 	control = HV_HYPERCALL_REP_COMP_1 | HVCALL_GET_VP_INDEX_FROM_APIC_ID;
 	status = hv_do_hypercall(control, input, output);
arch/x86/kernel/kvm.c +29 -3
index 1500852ba03c..38c7509e16de 100644
@@ -255,11 +255,39 @@ noinstr u32 kvm_read_and_reset_apf_flags(void)
 }
 EXPORT_SYMBOL_GPL(kvm_read_and_reset_apf_flags);
 
+static __always_inline bool kvm_apf_reason_pending(void)
+{
+	return __this_cpu_read(async_pf_enabled) &&
+	       __this_cpu_read(apf_reason.flags);
+}
+
 noinstr bool __kvm_handle_async_pf(struct pt_regs *regs, u32 token)
 {
-	u32 flags = kvm_read_and_reset_apf_flags();
 	irqentry_state_t state;
+	u32 flags;
+
+	if (!kvm_apf_reason_pending())
+		return false;
+
+	/*
+	 * The guest does not enable KVM_ASYNC_PF_SEND_ALWAYS, so the host
+	 * delivers async #PF only to user mode (or as a #PF VM-exit, which KVM
+	 * reads itself). A #PF from kernel mode can still arrive between that
+	 * delivery and the read of the reason flags, inside an NMI that
+	 * interrupted it, for instance perf reading user memory for a call
+	 * chain. Such a fault is not async, so leave the async PF flags
+	 * untouched for the outer handler.  Outside NMI context, on the other
+	 * hand, async PF flags on a kernel-mode fault mean the host is broken.
+	 */
+	if (!user_mode(regs)) {
+		if (likely(in_nmi()))
+			return false;
+		state = irqentry_enter(regs);
+		instrumentation_begin();
+		panic("Host injected async #PF in kernel mode\n");
+	}
 
+	flags = kvm_read_and_reset_apf_flags();
 	if (!flags)
 		return false;
 
@@ -275,8 +303,6 @@ noinstr bool __kvm_handle_async_pf(struct pt_regs *regs, u32 token)
 		panic("Host injected async #PF in interrupt disabled region\n");
 
 	if (flags & KVM_PV_REASON_PAGE_NOT_PRESENT) {
-		if (unlikely(!(user_mode(regs))))
-			panic("Host injected async #PF in kernel mode\n");
 		/* Page is swapped out by the host. */
 		kvm_async_pf_task_wait_schedule(token);
 	} else {
arch/x86/kvm/mmu.h +12 -4
index f63074048ec6..64b785ad6fd6 100644
@@ -186,8 +186,18 @@ static inline u8 permission_fault(struct kvm_vcpu *vcpu, struct kvm_mmu *mmu,
 				  unsigned pte_access, unsigned pte_pkey,
 				  u64 access)
 {
-	/* strip nested paging fault error codes */
-	unsigned int pfec = access;
+	/*
+	 * Of the error codes that do not contribute to the index in
+	 * mmu->permissions, PK and SS are not supported by shadow paging
+	 * and also not provided to EPT violations, but SS *is* included
+	 * in the NPT exit code.  RSVD faults are handled elsewhere.
+	 */
+	unsigned int pfec = access & ~PFERR_SS_MASK;
+	if (WARN_ON_ONCE(pfec & ~(PFERR_PRESENT_MASK | PFERR_WRITE_MASK |
+				  PFERR_USER_MASK | PFERR_FETCH_MASK)))
+		pfec &= (PFERR_PRESENT_MASK | PFERR_WRITE_MASK |
+			 PFERR_USER_MASK | PFERR_FETCH_MASK);
+
 	unsigned long rflags = kvm_x86_call(get_rflags)(vcpu);
 
 	/*
@@ -211,8 +221,6 @@ static inline u8 permission_fault(struct kvm_vcpu *vcpu, struct kvm_mmu *mmu,
 	kvm_mmu_refresh_passthrough_bits(vcpu, mmu);
 
 	fault = (mmu->permissions[index] >> pte_access) & 1;
-
-	WARN_ON_ONCE(pfec & (PFERR_PK_MASK | PFERR_SS_MASK | PFERR_RSVD_MASK));
 	if (unlikely(mmu->pkru_mask)) {
 		u32 pkru_bits, offset;
 
arch/x86/kvm/mmu/mmu.c +1 -0
index 205d314a7583..1fa251ca4dcc 100644
@@ -2630,6 +2630,7 @@ static int mmu_page_zap_pte(struct kvm *kvm, struct kvm_mmu_page *sp,
 			 */
 			if (tdp_enabled && invalid_list &&
 			    child->role.guest_mode &&
+			    !child->root_count &&
 			    !atomic_long_read(&child->parent_ptes.val))
 				return kvm_mmu_prepare_zap_page(kvm, child,
 								invalid_list);
arch/x86/kvm/mmu/paging_tmpl.h +1 -1
index 6e2ce54a13b3..07b0ddd15b9d 100644
@@ -474,7 +474,7 @@ static int FNAME(walk_addr_generic)(struct guest_walker *walker,
 	return 1;
 
 error:
-	errcode |= write_fault | user_fault;
+	errcode |= write_fault | user_fault | (access & PFERR_SS_MASK);
 	if (fetch_fault && (is_efer_nx(mmu) || is_cr4_smep(mmu)))
 		errcode |= PFERR_FETCH_MASK;
 
arch/x86/kvm/svm/svm.c +8 -2
index 335b214aa371..5f3c6d7974fb 100644
@@ -981,10 +981,14 @@ static void svm_recalc_instruction_intercepts(struct kvm_vcpu *vcpu)
 			svm_set_intercept(svm, INTERCEPT_RDTSCP);
 	}
 
+	/*
+	 * No need to toggle VIRTUAL_VMLOAD_VMSAVE_ENABLE_MASK here, it is
+	 * always set if vls is enabled. If the intercepts are set, the bit is
+	 * meaningless anyway.
+	 */
 	if (guest_cpuid_is_intel_compatible(vcpu)) {
 		svm_set_intercept(svm, INTERCEPT_VMLOAD);
 		svm_set_intercept(svm, INTERCEPT_VMSAVE);
-		svm->vmcb->control.virt_ext &= ~VIRTUAL_VMLOAD_VMSAVE_ENABLE_MASK;
 	} else {
 		/*
 		 * If hardware supports Virtual VMLOAD VMSAVE then enable it
@@ -993,7 +997,6 @@ static void svm_recalc_instruction_intercepts(struct kvm_vcpu *vcpu)
 		if (vls) {
 			svm_clr_intercept(svm, INTERCEPT_VMLOAD);
 			svm_clr_intercept(svm, INTERCEPT_VMSAVE);
-			svm->vmcb->control.virt_ext |= VIRTUAL_VMLOAD_VMSAVE_ENABLE_MASK;
 		}
 	}
 }
@@ -1137,6 +1140,9 @@ static void init_vmcb(struct kvm_vcpu *vcpu, bool init_event)
 		svm->vmcb->control.int_ctl |= V_GIF_ENABLE_MASK;
 	}
 
+	if (vls)
+		svm->vmcb->control.virt_ext |= VIRTUAL_VMLOAD_VMSAVE_ENABLE_MASK;
+
 	if (vcpu->kvm->arch.bus_lock_detection_enabled)
 		svm_set_intercept(svm, INTERCEPT_BUSLOCK);
 
arch/x86/kvm/vmx/nested.c +3 -1
index 97ef2ebc2477..be2ab71cd9ea 100644
@@ -3821,8 +3821,10 @@ enum nvmx_vmentry_status nested_vmx_enter_non_root_mode(struct kvm_vcpu *vcpu,
 vmentry_fail_vmexit:
 	vmx_switch_vmcs(vcpu, &vmx->vmcs01);
 
-	if (!from_vmentry)
+	if (!from_vmentry) {
+		nested_ept_uninit_mmu_context(vcpu);
 		return NVMX_VMENTRY_VMEXIT;
+	}
 
 	nested_put_vmcs12_pages(vcpu);
 
block/bsg-lib.c +10 -3
index 9ceb5d0832f5..da05b28cc867 100644
@@ -23,11 +23,14 @@ struct bsg_set {
 	struct bsg_device	*bd;
 	bsg_job_fn		*job_fn;
 	bsg_timeout_fn		*timeout_fn;
+	unsigned int		reply_len;
 };
 
 static int bsg_transport_sg_io_fn(struct request_queue *q, struct sg_io_v4 *hdr,
 		bool open_for_write, unsigned int timeout)
 {
+	struct bsg_set *bset =
+		container_of(q->tag_set, struct bsg_set, tag_set);
 	struct bsg_job *job;
 	struct request *rq;
 	struct bio *bio;
@@ -50,7 +53,7 @@ static int bsg_transport_sg_io_fn(struct request_queue *q, struct sg_io_v4 *hdr,
 	reply = job->reply;
 	memset(job, 0, sizeof(*job));
 	job->reply = reply;
-	job->reply_len = SCSI_SENSE_BUFFERSIZE;
+	job->reply_len = bset->reply_len;
 	job->dd_data = job + 1;
 
 	job->request_len = hdr->request_len;
@@ -301,9 +304,10 @@ static blk_status_t bsg_queue_rq(struct blk_mq_hw_ctx *hctx,
 static int bsg_init_rq(struct blk_mq_tag_set *set, struct request *req,
 		       unsigned int hctx_idx, unsigned int numa_node)
 {
+	struct bsg_set *bset = container_of(set, struct bsg_set, tag_set);
 	struct bsg_job *job = blk_mq_rq_to_pdu(req);
 
-	job->reply = kzalloc(SCSI_SENSE_BUFFERSIZE, GFP_KERNEL);
+	job->reply = kzalloc(bset->reply_len, GFP_KERNEL);
 	if (!job->reply)
 		return -ENOMEM;
 	return 0;
@@ -358,10 +362,12 @@ static const struct blk_mq_ops bsg_mq_ops = {
  * @job_fn: bsg job handler
  * @timeout: timeout handler function pointer
  * @dd_job_size: size of LLD data needed for each job
+ * @reply_len: size of the reply buffer needed for each job
  */
 struct request_queue *bsg_setup_queue(struct device *dev, const char *name,
 		struct queue_limits *lim, bsg_job_fn *job_fn,
-		bsg_timeout_fn *timeout, int dd_job_size)
+		bsg_timeout_fn *timeout, int dd_job_size,
+		unsigned int reply_len)
 {
 	struct bsg_set *bset;
 	struct blk_mq_tag_set *set;
@@ -374,6 +380,7 @@ struct request_queue *bsg_setup_queue(struct device *dev, const char *name,
 
 	bset->job_fn = job_fn;
 	bset->timeout_fn = timeout;
+	bset->reply_len = reply_len;
 
 	set = &bset->tag_set;
 	set->ops = &bsg_mq_ops;
drivers/accel/rocket/rocket_device.c +2 -0
index 46e6ee1e72c5..efd004194c1a 100644
@@ -31,6 +31,8 @@ struct rocket_device *rocket_device_init(struct platform_device *pdev,
 		if (of_device_is_available(core_node))
 			num_cores++;
 
+	rdev->max_cores = num_cores;
+
 	rdev->cores = devm_kcalloc(dev, num_cores, sizeof(*rdev->cores), GFP_KERNEL);
 	if (!rdev->cores)
 		return ERR_PTR(-ENOMEM);
drivers/accel/rocket/rocket_device.h +1 -0
index ce662abc01d3..c62d56701069 100644
@@ -19,6 +19,7 @@ struct rocket_device {
 
 	struct rocket_core *cores;
 	unsigned int num_cores;
+	unsigned int max_cores;
 };
 
 struct rocket_device *rocket_device_init(struct platform_device *pdev,
drivers/accel/rocket/rocket_drv.c +5 -2
index f6ef4c7aeef1..53e2d9452ce9 100644
@@ -165,8 +165,11 @@ static int rocket_probe(struct platform_device *pdev)
 		/* First core probing, initialize DRM device. */
 		rdev = rocket_device_init(drm_dev, &rocket_drm_driver);
 		if (IS_ERR(rdev)) {
+			int err = PTR_ERR(rdev);
+
 			dev_err(&pdev->dev, "failed to initialize rocket device\n");
-			return PTR_ERR(rdev);
+			rdev = NULL;
+			return err;
 		}
 	}
 
@@ -222,7 +225,7 @@ static int find_core_for_dev(struct device *dev)
 {
 	struct rocket_device *rdev = dev_get_drvdata(dev);
 
-	for (unsigned int core = 0; core < rdev->num_cores; core++) {
+	for (unsigned int core = 0; core < rdev->max_cores; core++) {
 		if (dev == rdev->cores[core].dev)
 			return core;
 	}
drivers/base/regmap/internal.h +1 -0
index 6f31240ee4a9..6efed02c21c5 100644
@@ -186,6 +186,7 @@ struct regcache_ops {
 	enum regcache_type type;
 	int (*init)(struct regmap *map);
 	int (*exit)(struct regmap *map);
+	int (*populate)(struct regmap *map);
 #ifdef CONFIG_DEBUG_FS
 	void (*debugfs_init)(struct regmap *map);
 #endif
drivers/base/regmap/regcache-maple.c +7 -2
index 9cf0384ce7b9..38a648efa606 100644
@@ -295,16 +295,21 @@ static int regcache_maple_exit(struct regmap *map)
 	struct maple_tree *mt = map->cache;
 	MA_STATE(mas, mt, 0, UINT_MAX);
 	unsigned int *entry;
+	unsigned long flags;
 
 	/* if we've already been called then just return */
 	if (!mt)
 		return 0;
 
-	mas_lock(&mas);
+	/*
+	 * Register access may take the Maple lock from hard IRQ context, so
+	 * preserve its IRQ-safe lockdep state during teardown.
+	 */
+	mas_lock_irqsave(&mas, flags);
 	mas_for_each(&mas, entry, UINT_MAX)
 		kfree(entry);
 	__mt_destroy(mt);
-	mas_unlock(&mas);
+	mas_unlock_irqrestore(&mas, flags);
 
 	kfree(mt);
 	map->cache = NULL;
drivers/base/regmap/regcache.c +14 -4
index c7650fa434ad..57757adad1f5 100644
@@ -215,14 +215,26 @@ int regcache_init(struct regmap *map, const struct regmap_config *config)
 	if (map->cache_ops->init) {
 		dev_dbg(map->dev, "Initializing %s cache\n",
 			map->cache_ops->name);
-		map->lock(map->lock_arg);
 		ret = map->cache_ops->init(map);
-		map->unlock(map->lock_arg);
 		if (ret)
 			goto err_free;
 	}
+
+	if (map->num_reg_defaults && map->cache_ops->populate) {
+		dev_dbg(map->dev, "Populating %s cache\n", map->cache_ops->name);
+		map->lock(map->lock_arg);
+		ret = map->cache_ops->populate(map);
+		map->unlock(map->lock_arg);
+		if (ret)
+			goto err_exit;
+	}
 	return 0;
 
+err_exit:
+	if (map->cache_ops->exit) {
+		dev_dbg(map->dev, "Destroying %s cache\n", map->cache_ops->name);
+		map->cache_ops->exit(map);
+	}
 err_free:
 	kfree(map->reg_defaults);
 	if (map->cache_free)
@@ -245,9 +257,7 @@ void regcache_exit(struct regmap *map)
 	if (map->cache_ops->exit) {
 		dev_dbg(map->dev, "Destroying %s cache\n",
 			map->cache_ops->name);
-		map->lock(map->lock_arg);
 		map->cache_ops->exit(map);
-		map->unlock(map->lock_arg);
 	}
 }
 
drivers/gpio/gpio-mxc.c +22 -14
index 12f11a6c9665..32ded7b548fb 100644
@@ -7,6 +7,7 @@
 // Authors: Daniel Mack, Juergen Beisert.
 // Copyright (C) 2004-2010 Freescale Semiconductor, Inc. All Rights Reserved.
 
+#include <linux/bitops.h>
 #include <linux/cleanup.h>
 #include <linux/clk.h>
 #include <linux/err.h>
@@ -68,11 +69,11 @@ struct mxc_gpio_port {
 	struct irq_domain *domain;
 	struct gpio_generic_chip gen_gc;
 	struct device *dev;
-	u32 both_edges;
+	unsigned long both_edges;
 	struct mxc_gpio_reg_saved gpio_saved_reg;
 	bool power_off;
-	u32 wakeup_pads;
 	bool is_pad_wakeup;
+	unsigned long wakeup_pads;
 	u32 pad_type[32];
 	const struct mxc_gpio_hwdata *hwdata;
 };
@@ -168,7 +169,7 @@ static int gpio_set_irq_type(struct irq_data *d, u32 type)
 	int edge;
 	void __iomem *reg = port->base;
 
-	port->both_edges &= ~(1 << gpio_idx);
+	clear_bit(gpio_idx, &port->both_edges);
 	switch (type) {
 	case IRQ_TYPE_EDGE_RISING:
 		edge = GPIO_INT_RISE_EDGE;
@@ -188,7 +189,7 @@ static int gpio_set_irq_type(struct irq_data *d, u32 type)
 				edge = GPIO_INT_HIGH_LEV;
 				pr_debug("mxc: set GPIO %d to high trigger\n", gpio_idx);
 			}
-			port->both_edges |= 1 << gpio_idx;
+			set_bit(gpio_idx, &port->both_edges);
 		}
 		break;
 	case IRQ_TYPE_LEVEL_LOW:
@@ -259,7 +260,7 @@ static void mxc_gpio_irq_handler(struct mxc_gpio_port *port, u32 irq_stat)
 	while (irq_stat != 0) {
 		int irqoffset = fls(irq_stat) - 1;
 
-		if (port->both_edges & (1 << irqoffset))
+		if (test_bit(irqoffset, &port->both_edges))
 			mxc_flip_edge(port, irqoffset);
 
 		generic_handle_domain_irq(port->domain, irqoffset);
@@ -330,16 +331,18 @@ static int gpio_set_wake_irq(struct irq_data *d, u32 enable)
 			ret = enable_irq_wake(port->irq_high);
 		else
 			ret = enable_irq_wake(port->irq);
-		port->wakeup_pads |= (1 << gpio_idx);
 	} else {
 		if (port->irq_high && (gpio_idx >= 16))
 			ret = disable_irq_wake(port->irq_high);
 		else
 			ret = disable_irq_wake(port->irq);
-		port->wakeup_pads &= ~(1 << gpio_idx);
 	}
+	if (ret)
+		return ret;
 
-	return ret;
+	assign_bit(gpio_idx, &port->wakeup_pads, enable);
+
+	return 0;
 }
 
 static int mxc_gpio_init_gc(struct mxc_gpio_port *port, int irq_base)
@@ -474,8 +477,6 @@ static int mxc_gpio_probe(struct platform_device *pdev)
 	} else
 		port->mx_irq_handler = mx3_gpio_irq_handler;
 
-	mxc_update_irq_chained_handler(port, true);
-
 	config.dev = &pdev->dev;
 	config.sz = 4;
 	config.dat = port->base + GPIO_PSR;
@@ -499,10 +500,6 @@ static int mxc_gpio_probe(struct platform_device *pdev)
 	else /* silence boot time warning */
 		port->gen_gc.gc.base = -1;
 
-	err = devm_gpiochip_add_data(&pdev->dev, &port->gen_gc.gc, port);
-	if (err)
-		goto out_bgio;
-
 	irq_base = devm_irq_alloc_descs(&pdev->dev, -1, 0, 32, numa_node_id());
 	if (irq_base < 0) {
 		err = irq_base;
@@ -523,8 +520,19 @@ static int mxc_gpio_probe(struct platform_device *pdev)
 	if (err < 0)
 		goto out_irqdomain_remove;
 
+	/*
+	 * Register the GPIO chip last: devm_gpiochip_add_data() makes the
+	 * chip visible to consumers immediately, so the IRQ domain and
+	 * generic irq chip must be ready before any to_irq() call.
+	 */
+	err = devm_gpiochip_add_data(&pdev->dev, &port->gen_gc.gc, port);
+	if (err)
+		goto out_irqdomain_remove;
+
 	list_add_tail(&port->node, &mxc_gpio_ports);
 
+	mxc_update_irq_chained_handler(port, true);
+
 	platform_set_drvdata(pdev, port);
 	pm_runtime_put_autosuspend(&pdev->dev);
 
drivers/gpio/gpio-nct6694.c +1 -1
index a8607f0d9915..a38add1cde29 100644
@@ -444,7 +444,7 @@ static int nct6694_gpio_probe(struct platform_device *pdev)
 	data->gpio.set_config		= nct6694_set_config;
 	data->gpio.init_valid_mask	= nct6694_init_valid_mask;
 	data->gpio.base			= -1;
-	data->gpio.can_sleep		= false;
+	data->gpio.can_sleep		= true;
 	data->gpio.owner		= THIS_MODULE;
 	data->gpio.ngpio		= NCT6694_NR_GPIO;
 
drivers/gpio/gpiolib.c +5 -4
index 9d3c33e1c9f9..d0efcb96d276 100644
@@ -3798,16 +3798,17 @@ int gpiod_set_array_value_complex(bool raw, bool can_sleep,
 		} while ((i < array_size) &&
 			 gpio_device_chip_cmp(desc_array[i]->gdev, guard.gc));
 		/* push collected bits to outputs */
-		if (count != 0) {
+		ret = 0;
+		if (count != 0)
 			ret = gpiochip_set_multiple(guard.gc, mask, bits);
-			if (ret)
-				return ret;
-		}
 
 		if (mask != fastpath_mask)
 			bitmap_free(mask);
 		if (bits != fastpath_bits)
 			bitmap_free(bits);
+
+		if (ret)
+			return ret;
 	}
 	return 0;
 }
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +6 -0
index 38ce4d7c86f0..f8a2c9e41ca3 100644
@@ -1448,6 +1448,7 @@ static void amdgpu_cs_parser_fini(struct amdgpu_cs_parser *parser)
 int amdgpu_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
 {
 	struct amdgpu_device *adev = drm_to_adev(dev);
+	struct amdgpu_bo_list_entry *e;
 	struct amdgpu_cs_parser parser;
 	int r;
 
@@ -1502,6 +1503,11 @@ int amdgpu_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
 	return 0;
 
 error_backoff:
+	/* amdgpu_cs_submit() only drops the ranges once it got that far. */
+	amdgpu_bo_list_for_each_userptr_entry(e, parser.bo_list) {
+		amdgpu_ttm_tt_get_user_pages_done(e->bo->tbo.ttm, e->range);
+		e->range = NULL;
+	}
 	mutex_unlock(&parser.bo_list->bo_list_mutex);
 
 error_fini:
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c +3 -18
index cda4696d2dd4..04939a9711e9 100644
@@ -1164,7 +1164,6 @@ static ssize_t amdgpu_debugfs_gpr_read(struct file *f, char __user *buf,
 {
 	struct amdgpu_device *adev = f->f_inode->i_private;
 	int r;
-	ssize_t result = 0;
 	uint32_t offset, se, sh, cu, wave, simd, thread, bank, *data;
 
 	if (size > 4096 || size & 3 || *pos & 3)
@@ -1209,25 +1208,11 @@ static ssize_t amdgpu_debugfs_gpr_read(struct file *f, char __user *buf,
 
 	pm_runtime_mark_last_busy(adev_to_drm(adev)->dev);
 	pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
+	amdgpu_virt_disable_access_debugfs(adev);
 
-	while (size) {
-		uint32_t value;
-
-		value = data[result >> 2];
-		r = put_user(value, (uint32_t *)buf);
-		if (r) {
-			amdgpu_virt_disable_access_debugfs(adev);
-			goto err;
-		}
-
-		result += 4;
-		buf += 4;
-		size -= 4;
-	}
-
+	r = copy_to_user(buf, data, size) ? -EFAULT : size;
 	kfree(data);
-	amdgpu_virt_disable_access_debugfs(adev);
-	return result;
+	return r;
 
 err:
 	pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c +7 -4
index 81c6003b3e79..3b03157faa7e 100644
@@ -325,11 +325,14 @@ static void amdgpu_gem_object_close(struct drm_gem_object *obj,
 			goto out_unlock;
 	}
 
+	bo_va = amdgpu_vm_bo_find(vm, bo);
+	/* the fence is attached once per bo_va, so keep it for other handles */
+	if (bo_va && --bo_va->ref_count)
+		goto out_unlock;
+
 	if (!amdgpu_vm_is_bo_always_valid(vm, bo))
 		amdgpu_eviction_fence_detach(&fpriv->evf_mgr, bo);
-
-	bo_va = amdgpu_vm_bo_find(vm, bo);
-	if (!bo_va || --bo_va->ref_count)
+	if (!bo_va)
 		goto out_unlock;
 
 	amdgpu_vm_bo_del(adev, bo_va);
@@ -1217,7 +1220,7 @@ int amdgpu_gem_list_handles_ioctl(struct drm_device *dev, void *data,
 		bo_entry->alloc_flags = bo->flags & AMDGPU_GEM_CREATE_SETTABLE_MASK;
 		bo_entry->preferred_domains = bo->preferred_domains;
 		bo_entry->gem_handle = id;
-		bo_entry->alignment = bo->tbo.page_alignment;
+		bo_entry->alignment = (u64)bo->tbo.page_alignment << PAGE_SHIFT;
 
 		if (bo->tbo.base.import_attach)
 			bo_entry->flags |= AMDGPU_GEM_LIST_HANDLES_FLAG_IS_IMPORT;
drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c +21 -4
index 1c076bd1cf73..8ffab53b4c27 100644
@@ -457,6 +457,9 @@ static void sdma_v3_0_ring_emit_hdp_flush(struct amdgpu_ring *ring)
 	else
 		ref_and_mask = REG_SET_FIELD(ref_and_mask, GPU_HDP_FLUSH_DONE, SDMA1, 1);
 
+	/* Hang workaround */
+	amdgpu_ring_write(ring, SDMA_PKT_NOP_HEADER_OP(SDMA_OP_NOP));
+
 	amdgpu_ring_write(ring, SDMA_PKT_HEADER_OP(SDMA_OP_POLL_REGMEM) |
 			  SDMA_PKT_POLL_REGMEM_HEADER_HDP_FLUSH(1) |
 			  SDMA_PKT_POLL_REGMEM_HEADER_FUNC(3)); /* == */
@@ -484,6 +487,10 @@ static void sdma_v3_0_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 se
 				      unsigned flags)
 {
 	bool write64bit = flags & AMDGPU_FENCE_FLAG_64BIT;
+
+	/* Hang workaround */
+	amdgpu_ring_write(ring, SDMA_PKT_NOP_HEADER_OP(SDMA_OP_NOP));
+
 	/* write the fence */
 	amdgpu_ring_write(ring, SDMA_PKT_HEADER_OP(SDMA_OP_FENCE));
 	amdgpu_ring_write(ring, lower_32_bits(addr));
@@ -492,7 +499,11 @@ static void sdma_v3_0_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 se
 
 	/* optionally write high bits as well */
 	if (write64bit) {
+		/* Hang workaround */
+		amdgpu_ring_write(ring, SDMA_PKT_NOP_HEADER_OP(SDMA_OP_NOP));
+
 		addr += 4;
+
 		amdgpu_ring_write(ring, SDMA_PKT_HEADER_OP(SDMA_OP_FENCE));
 		amdgpu_ring_write(ring, lower_32_bits(addr));
 		amdgpu_ring_write(ring, upper_32_bits(addr));
@@ -1033,6 +1044,9 @@ static void sdma_v3_0_ring_emit_pipeline_sync(struct amdgpu_ring *ring)
 	uint32_t seq = ring->fence_drv.sync_seq;
 	uint64_t addr = ring->fence_drv.gpu_addr;
 
+	/* Hang workaround */
+	amdgpu_ring_write(ring, SDMA_PKT_NOP_HEADER_OP(SDMA_OP_NOP));
+
 	/* wait for idle */
 	amdgpu_ring_write(ring, SDMA_PKT_HEADER_OP(SDMA_OP_POLL_REGMEM) |
 			  SDMA_PKT_POLL_REGMEM_HEADER_HDP_FLUSH(0) |
@@ -1061,6 +1075,9 @@ static void sdma_v3_0_ring_emit_vm_flush(struct amdgpu_ring *ring,
 {
 	amdgpu_gmc_emit_flush_gpu_tlb(ring, vmid, pd_addr);
 
+	/* Hang workaround */
+	amdgpu_ring_write(ring, SDMA_PKT_NOP_HEADER_OP(SDMA_OP_NOP));
+
 	/* wait for flush */
 	amdgpu_ring_write(ring, SDMA_PKT_HEADER_OP(SDMA_OP_POLL_REGMEM) |
 			  SDMA_PKT_POLL_REGMEM_HEADER_HDP_FLUSH(0) |
@@ -1563,11 +1580,11 @@ static const struct amdgpu_ring_funcs sdma_v3_0_ring_funcs = {
 	.get_wptr = sdma_v3_0_ring_get_wptr,
 	.set_wptr = sdma_v3_0_ring_set_wptr,
 	.emit_frame_size =
-		6 + /* sdma_v3_0_ring_emit_hdp_flush */
+		6 + 1 + /* sdma_v3_0_ring_emit_hdp_flush */
 		3 + /* hdp invalidate */
-		6 + /* sdma_v3_0_ring_emit_pipeline_sync */
-		VI_FLUSH_GPU_TLB_NUM_WREG * 3 + 6 + /* sdma_v3_0_ring_emit_vm_flush */
-		10 + 10 + 10, /* sdma_v3_0_ring_emit_fence x3 for user fence, vm fence */
+		6 + 1 + /* sdma_v3_0_ring_emit_pipeline_sync */
+		VI_FLUSH_GPU_TLB_NUM_WREG * 3 + 6 + 1 + /* sdma_v3_0_ring_emit_vm_flush */
+		(10 + 1) * 3, /* sdma_v3_0_ring_emit_fence x3 for user fence, vm fence */
 	.emit_ib_size = 7 + 6, /* sdma_v3_0_ring_emit_ib */
 	.emit_ib = sdma_v3_0_ring_emit_ib,
 	.emit_fence = sdma_v3_0_ring_emit_fence,
drivers/gpu/drm/amd/amdgpu/vce_v3_0.c +1 -1
index b54359efac06..9c4c782c99aa 100644
@@ -955,7 +955,7 @@ static const struct amdgpu_ring_funcs vce_v3_0_ring_phys_funcs = {
 
 static const struct amdgpu_ring_funcs vce_v3_0_ring_vm_funcs = {
 	.type = AMDGPU_RING_TYPE_VCE,
-	.align_mask = 0xf,
+	.align_mask = 0x1f,
 	.nop = VCE_CMD_NO_OP,
 	.support_64bit_ptrs = false,
 	.no_user_fence = true,
drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_2_ppt.c +54 -1

97 lines not on this page · raw message

drivers/gpu/drm/drm_exec.c +43 -30

114 lines not on this page · raw message

drivers/gpu/drm/i915/display/intel_cx0_phy.c +7 -5
index a2d2cecf7121..93e795307ea6 100644
@@ -2202,12 +2202,14 @@ static void intel_c10pll_dump_hw_state(struct intel_display *display,
 static bool is_arrowlake_s_by_host_bridge(void)
 {
 	struct pci_dev *pdev = NULL;
-	u16 host_bridge_pci_dev_id;
-
-	while ((pdev = pci_get_class(PCI_CLASS_BRIDGE_HOST << 8, pdev)))
-		host_bridge_pci_dev_id = pdev->device;
+	while ((pdev = pci_get_class(PCI_CLASS_BRIDGE_HOST << 8, pdev))) {
+		if (IS_ARROWLAKE_S_BY_HOST_BRIDGE_ID(pdev->device)) {
+			pci_dev_put(pdev);
+			return true;
+		}
+	}
 
-	return pdev && IS_ARROWLAKE_S_BY_HOST_BRIDGE_ID(host_bridge_pci_dev_id);
+	return false;
 }
 
 static u16 intel_c20_hdmi_tmds_tx_cgf_1(struct intel_crtc_state *crtc_state)
drivers/gpu/drm/i915/display/intel_dmc.c +71 -5

109 lines not on this page · raw message

drivers/gpu/drm/i915/display/intel_dmc_regs.h +12 -0
index c5aa49921cb9..b6eecdbc7614 100644
@@ -521,6 +521,18 @@ enum pipedmc_event_id {
 #define TGL_PIPE_MMIO_END(dmc_id)	_PICK_EVEN(((dmc_id) - 1), _TGL_PIPEA_MMIO_END,\
 					      _TGL_PIPEB_MMIO_END)
 
+/* For DMC header version v3*/
+#define DMC_MAIN_PROGRAM_BASE_START	0x80000
+#define DMC_MAIN_PROGRAM_BASE_END	0x86fff
+#define DMC_PIPEA_PROGRAM_BASE_START	0x90000
+#define DMC_PIPEA_PROGRAM_BASE_END	0x96fff
+#define DMC_PIPEB_PROGRAM_BASE_START	0x98000
+#define DMC_PIPEB_PROGRAM_BASE_END	0x9efff
+#define DMC_PIPEC_PROGRAM_BASE_START	0x52000
+#define DMC_PIPEC_PROGRAM_BASE_END	0x53fff
+#define DMC_PIPED_PROGRAM_BASE_START	0x59000
+#define DMC_PIPED_PROGRAM_BASE_END	0x5afff
+
 #define SKL_DMC_DC3_DC5_COUNT	_MMIO(0x80030)
 #define SKL_DMC_DC5_DC6_COUNT	_MMIO(0x8002C)
 #define BXT_DMC_DC3_DC5_COUNT	_MMIO(0x80038)
drivers/gpu/drm/panthor/panthor_hw.c +1 -1
index 4f2858114e5e..9a567e4f0956 100644
@@ -27,7 +27,7 @@ static char *get_gpu_model_name(struct panthor_device *ptdev)
 	case GPU_PROD_ID_MAKE(10, 7):
 		return "Mali-G610";
 	case GPU_PROD_ID_MAKE(11, 2):
-		if (shader_core_count > 10 && ray_intersection)
+		if (shader_core_count >= 10 && ray_intersection)
 			return "Mali-G715-Immortalis";
 		else if (shader_core_count >= 7)
 			return "Mali-G715";
drivers/gpu/drm/ttm/ttm_bo.c +1 -1
index 493471012820..de04814a2e96 100644
@@ -1176,7 +1176,7 @@ ttm_bo_swapout_cb(struct ttm_lru_walk *walk, struct ttm_buffer_object *bo)
 
 	if (ttm_tt_is_populated(tt)) {
 		ret = ttm_tt_swapout(bdev, tt, swapout_walk->gfp_flags);
-		if (!ret) {
+		if (ret > 0) {
 			spin_lock(&bdev->lru_lock);
 			ttm_resource_del_bulk_move_unevictable(bo->resource, bo);
 			ttm_resource_move_to_lru_tail(bo->resource);
drivers/gpu/drm/vc4/vc4_hdmi.c +11 -9
index 34b974f46f87..2f854386c338 100644
@@ -816,7 +816,7 @@ static void vc4_hdmi_encoder_post_crtc_disable(struct drm_encoder *encoder,
 
 	spin_lock_irqsave(&vc4_hdmi->hw_lock, flags);
 
-	HDMI_WRITE(HDMI_RAM_PACKET_CONFIG, 0);
+	HDMI_WRITE(HDMI_RAM_PACKET_CONFIG, VC4_HDMI_RAM_PACKET_ENABLE);
 
 	HDMI_WRITE(HDMI_VID_CTL, HDMI_READ(HDMI_VID_CTL) | VC4_HD_VID_CTL_CLRRGB);
 
@@ -1588,9 +1588,6 @@ static void vc4_hdmi_encoder_post_crtc_enable(struct drm_encoder *encoder,
 		WARN_ONCE(ret, "Timeout waiting for "
 			  "VC4_HDMI_SCHEDULER_CONTROL_HDMI_ACTIVE\n");
 	} else {
-		HDMI_WRITE(HDMI_RAM_PACKET_CONFIG,
-			   HDMI_READ(HDMI_RAM_PACKET_CONFIG) &
-			   ~(VC4_HDMI_RAM_PACKET_ENABLE));
 		HDMI_WRITE(HDMI_SCHEDULER_CONTROL,
 			   HDMI_READ(HDMI_SCHEDULER_CONTROL) &
 			   ~VC4_HDMI_SCHEDULER_CONTROL_MODE_HDMI);
@@ -1609,9 +1606,6 @@ static void vc4_hdmi_encoder_post_crtc_enable(struct drm_encoder *encoder,
 		WARN_ON(!(HDMI_READ(HDMI_SCHEDULER_CONTROL) &
 			  VC4_HDMI_SCHEDULER_CONTROL_HDMI_ACTIVE));
 
-		HDMI_WRITE(HDMI_RAM_PACKET_CONFIG,
-			   VC4_HDMI_RAM_PACKET_ENABLE);
-
 		spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags);
 		vc4_hdmi->packet_ram_enabled = true;
 
@@ -3072,6 +3066,11 @@ static int vc5_hdmi_init_resources(struct drm_device *drm,
 static int vc4_hdmi_runtime_suspend(struct device *dev)
 {
 	struct vc4_hdmi *vc4_hdmi = dev_get_drvdata(dev);
+	unsigned long flags;
+
+	spin_lock_irqsave(&vc4_hdmi->hw_lock, flags);
+	HDMI_WRITE(HDMI_RAM_PACKET_CONFIG, 0);
+	spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags);
 
 	clk_disable_unprepare(vc4_hdmi->audio_clock);
 	clk_disable_unprepare(vc4_hdmi->hsm_clock);
@@ -3082,9 +3081,8 @@ static int vc4_hdmi_runtime_suspend(struct device *dev)
 static int vc4_hdmi_runtime_resume(struct device *dev)
 {
 	struct vc4_hdmi *vc4_hdmi = dev_get_drvdata(dev);
-	unsigned long __maybe_unused flags;
+	unsigned long rate, flags;
 	u32 __maybe_unused value;
-	unsigned long rate;
 	int ret;
 
 	ret = clk_prepare_enable(vc4_hdmi->hsm_clock);
@@ -3130,6 +3128,10 @@ static int vc4_hdmi_runtime_resume(struct device *dev)
 	}
 #endif
 
+	spin_lock_irqsave(&vc4_hdmi->hw_lock, flags);
+	HDMI_WRITE(HDMI_RAM_PACKET_CONFIG, VC4_HDMI_RAM_PACKET_ENABLE);
+	spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags);
+
 	return 0;
 
 err_disable_clk:
drivers/gpu/drm/xe/xe_bo.c +6 -0
index 6d3db1517c8a..2496b24840be 100644
@@ -313,6 +313,12 @@ static void xe_evict_flags(struct ttm_buffer_object *tbo,
 		return;
 	}
 
+	/* No resource: nothing is placed/mapped, so there is nothing to evict. */
+	if (!tbo->resource) {
+		placement->num_placement = 0;
+		return;
+	}
+
 	bo = ttm_to_xe_bo(tbo);
 	if (bo->flags & XE_BO_FLAG_CPU_ADDR_MIRROR) {
 		*placement = sys_placement;
drivers/gpu/drm/xe/xe_exec.c +2 -5
index c156cf4661f2..25124159a363 100644
@@ -346,11 +346,8 @@ int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
 	xe_sched_job_push(job);
 	xe_vm_reactivate_rebind(vm);
 
-	if (!err && !xe_vm_in_lr_mode(vm)) {
-		spin_lock(&xe->ttm.lru_lock);
-		ttm_lru_bulk_move_tail(&vm->lru_bulk_move);
-		spin_unlock(&xe->ttm.lru_lock);
-	}
+	if (!err && !xe_vm_in_lr_mode(vm))
+		xe_vm_bump_lru(vm, exec);
 
 	if (mode == EXEC_MODE_LR)
 		xe_hw_engine_group_resume_faulting_lr_jobs(group);
drivers/gpu/drm/xe/xe_oa.c +7 -0
index a753ac7ecc86..b88d3d39aea6 100644
@@ -893,6 +893,13 @@ static int xe_oa_alloc_oa_buffer(struct xe_oa_stream *stream, size_t size)
 	if (IS_ERR(bo))
 		return PTR_ERR(bo);
 
+	/*
+	 * ttm_bo_type_kernel BOs are not zeroed on allocation, so the buffer can
+	 * hold stale data from previously freed pages. Since the OA buffer is
+	 * mmap'able by userspace, clear it here to avoid leaking kernel memory.
+	 */
+	xe_map_memset(stream->oa->xe, &bo->vmap, 0, 0, xe_bo_size(bo));
+
 	stream->oa_buffer.bo = bo;
 	/* mmap implementation requires OA buffer to be in system memory */
 	xe_assert(stream->oa->xe, bo->vmap.is_iomem == 0);
drivers/gpu/drm/xe/xe_vm.c +28 -3
index a4272bc248ec..72ec3f1533d0 100644
@@ -376,6 +376,33 @@ int xe_vm_validate_rebind(struct xe_vm *vm, struct drm_exec *exec,
 	return 0;
 }
 
+/**
+ * xe_vm_bump_lru() - Bump the LRU position of BOs used by a submission
+ * @vm: The vm for which we are bumping LRUs.
+ * @exec: The struct drm_exec with the locked GEM objects.
+ *
+ * Move the VM's private BOs, and all external objects locked by @exec,
+ * to the LRU tail. Private BOs are moved in bulk using @vm's
+ * &xe_vm.lru_bulk_move. External objects, which may be shared with other
+ * VMs, are not part of that bulk move and are bumped individually.
+ */
+void xe_vm_bump_lru(struct xe_vm *vm, struct drm_exec *exec)
+{
+	spinlock_t *lru_lock = &vm->xe->ttm.lru_lock;
+	struct drm_gem_object *obj;
+
+	spin_lock(lru_lock);
+	ttm_lru_bulk_move_tail(&vm->lru_bulk_move);
+	drm_exec_for_each_locked_object(exec, obj) {
+		if (!drm_gpuvm_is_extobj(&vm->gpuvm, obj))
+			continue;
+
+		ttm_bo_move_to_lru_tail(&gem_to_xe_bo(obj)->ttm);
+		cond_resched_lock(lru_lock);
+	}
+	spin_unlock(lru_lock);
+}
+
 static int xe_preempt_work_begin(struct drm_exec *exec, struct xe_vm *vm,
 				 bool *done)
 {
@@ -524,9 +551,7 @@ static void preempt_rebind_work_func(struct work_struct *w)
 
 #undef retry_required
 
-	spin_lock(&vm->xe->ttm.lru_lock);
-	ttm_lru_bulk_move_tail(&vm->lru_bulk_move);
-	spin_unlock(&vm->xe->ttm.lru_lock);
+	xe_vm_bump_lru(vm, &exec);
 
 	/* Point of no return. */
 	arm_preempt_fences(vm, &preempt_fences);
drivers/gpu/drm/xe/xe_vm.h +2 -0
index 016f6786134c..6589b36d49d6 100644
@@ -265,6 +265,8 @@ int xe_vm_lock_vma(struct drm_exec *exec, struct xe_vma *vma);
 int xe_vm_validate_rebind(struct xe_vm *vm, struct drm_exec *exec,
 			  unsigned int num_fences);
 
+void xe_vm_bump_lru(struct xe_vm *vm, struct drm_exec *exec);
+
 struct dma_fence *xe_vm_bind_kernel_bo(struct xe_vm *vm, struct xe_bo *bo,
 				       struct xe_exec_queue *q, u64 addr,
 				       enum xe_cache_level cache_lvl);
drivers/hv/channel_mgmt.c +9 -3
index d5348195e4fb..5f013d4582d7 100644
@@ -744,13 +744,14 @@ static void init_vp_index(struct vmbus_channel *channel)
 	u32 i, ncpu = num_online_cpus();
 	cpumask_var_t available_mask;
 	struct cpumask *allocated_mask;
+	const struct cpumask *node_mask;
 	const struct cpumask *hk_mask = housekeeping_cpumask(HK_TYPE_MANAGED_IRQ);
 	u32 target_cpu;
 	int numa_node;
 
 	if (!perf_chn ||
 	    !alloc_cpumask_var(&available_mask, GFP_KERNEL) ||
-	    cpumask_empty(hk_mask)) {
+	    !cpumask_intersects(hk_mask, cpu_online_mask)) {
 		/*
 		 * If the channel is not a performance critical
 		 * channel, bind it to VMBUS_CONNECT_CPU.
@@ -772,14 +773,19 @@ static void init_vp_index(struct vmbus_channel *channel)
 				next_numa_node_id = 0;
 				continue;
 			}
-			if (cpumask_empty(cpumask_of_node(numa_node)))
+			/*
+			 * Try next NUMA node if current NUMA node has no CPU
+			 * or doesn't contain any housekeeping CPU.
+			 */
+			node_mask = cpumask_of_node(numa_node);
+			if (!cpumask_intersects(node_mask, hk_mask))
 				continue;
 			break;
 		}
 		allocated_mask = &hv_context.hv_numa_map[numa_node];
 
 retry:
-		cpumask_xor(available_mask, allocated_mask, cpumask_of_node(numa_node));
+		cpumask_xor(available_mask, allocated_mask, node_mask);
 		cpumask_and(available_mask, available_mask, hk_mask);
 
 		if (cpumask_empty(available_mask)) {
drivers/hv/connection.c +0 -1
index 9be2af772867..4a3bb9ae9250 100644
@@ -340,7 +340,6 @@ int vmbus_connect(void)
 cleanup:
 	pr_err("Unable to connect to host\n");
 
-	vmbus_connection.conn_state = DISCONNECTED;
 	vmbus_disconnect();
 
 	kfree(msginfo);
drivers/hv/vmbus_drv.c +0 -1
index b1552a26b8d3..1dc371eb5340 100644
@@ -3018,7 +3018,6 @@ static void __exit vmbus_exit(void)
 
 	hv_remove_kexec_handler();
 	hv_remove_crash_handler();
-	vmbus_connection.conn_state = DISCONNECTED;
 	hv_stimer_global_cleanup();
 	vmbus_disconnect();
 	if (vmbus_irq == -1) {
drivers/i2c/busses/i2c-qcom-cci.c +2 -2
index 52ef7f07c51c..38d7d4f479bd 100644
@@ -167,12 +167,12 @@ static irqreturn_t cci_isr(int irq, void *dev)
 	}
 
 	if (unlikely(val & CCI_IRQ_STATUS_0_I2C_M0_Q0Q1_HALT_ACK)) {
-		reset = CCI_RESET_CMD_M0_MASK;
+		reset |= CCI_RESET_CMD_M0_MASK;
 		ret = IRQ_HANDLED;
 	}
 
 	if (unlikely(val & CCI_IRQ_STATUS_0_I2C_M1_Q0Q1_HALT_ACK)) {
-		reset = CCI_RESET_CMD_M1_MASK;
+		reset |= CCI_RESET_CMD_M1_MASK;
 		ret = IRQ_HANDLED;
 	}
 
drivers/i2c/busses/i2c-qcom-geni.c +20 -17
index 307e2e4030af..fbfffbec05e1 100644
@@ -169,28 +169,31 @@ static const struct geni_i2c_clk_fld geni_i2c_clk_map_32mhz[] = {
 static int geni_i2c_clk_map_idx(struct geni_i2c_dev *gi2c)
 {
 	const struct geni_i2c_clk_fld *itr;
-	unsigned long res_freq;
+	unsigned long req_freq, res_freq;
+	int ret;
 
 	/*
-	 * Frequency counter tables are calibrated for a specific source
-	 * clock frequency and are not valid for any multiple of it
-	 * (e.g. 64 MHz, 128 MHz).
-	 * Use exact=true and verify res_freq matches req_freq literally
-	 * to reject harmonics: a 64 MHz clock that divides evenly to
-	 * 32 MHz would pass exact matching but produce double the intended
-	 * I2C frequency with these counter values.
+	 * Use 32 MHz only if already selected, otherwise use 19.2 MHz.
+	 * Preferring 32 MHz merely because DFS supports it breaks I2C
+	 * transfers on X1E80100 CRD.
 	 */
-	if (!geni_se_clk_freq_match(&gi2c->se, GENI_SE_CLK_32MHZ,
-				    &gi2c->clk_idx, &res_freq, true) &&
-	    res_freq == GENI_SE_CLK_32MHZ) {
+	if (clk_get_rate(gi2c->se.clk) == GENI_SE_CLK_32MHZ) {
+		req_freq = GENI_SE_CLK_32MHZ;
 		itr = geni_i2c_clk_map_32mhz;
-	} else if (!geni_se_clk_freq_match(&gi2c->se, GENI_SE_CLK_19P2MHZ,
-					   &gi2c->clk_idx, &res_freq, true) &&
-		   res_freq == GENI_SE_CLK_19P2MHZ) {
-		itr = geni_i2c_clk_map_19p2mhz;
 	} else {
-		dev_err(gi2c->se.dev,
-			"Unsupported SE source clock: must be exactly 32 MHz or 19.2 MHz\n");
+		req_freq = GENI_SE_CLK_19P2MHZ;
+		itr = geni_i2c_clk_map_19p2mhz;
+	}
+
+	ret = geni_se_clk_freq_match(&gi2c->se, req_freq, &gi2c->clk_idx,
+				     &res_freq, true);
+	if (ret)
+		return dev_err_probe(gi2c->se.dev, ret,
+				     "Failed to find SE source clock %lu Hz\n",
+				     req_freq);
+	if (res_freq != req_freq) {
+		dev_err(gi2c->se.dev, "Unsupported SE source clock %lu Hz\n",
+			res_freq);
 		return -EINVAL;
 	}
 
drivers/i2c/busses/i2c-viai2c-wmt.c +1 -1
index 2cf3cc0165fb..74ca93b44347 100644
@@ -117,7 +117,7 @@ static int wmt_i2c_probe(struct platform_device *pdev)
 		return dev_err_probe(&pdev->dev, err,
 				"failed to request irq %i\n", i2c->irq);
 
-	i2c->clk = of_clk_get(np, 0);
+	i2c->clk = devm_clk_get(&pdev->dev, NULL);
 	if (IS_ERR(i2c->clk))
 		return dev_err_probe(&pdev->dev, PTR_ERR(i2c->clk),
 				     "unable to request clock\n");
drivers/md/dm-cache-target.c +31 -28

129 lines not on this page · raw message

drivers/md/dm-crypt.c +1 -2
index db8108acb312..893355ee7d8e 100644
@@ -1820,7 +1820,6 @@ static void crypt_dec_pending(struct dm_crypt_io *io)
 {
 	struct crypt_config *cc = io->cc;
 	struct bio *base_bio = io->base_bio;
-	blk_status_t error = io->error;
 
 	if (!atomic_dec_and_test(&io->io_pending))
 		return;
@@ -1842,7 +1841,7 @@ static void crypt_dec_pending(struct dm_crypt_io *io)
 	else
 		kfree(io->integrity_metadata);
 
-	base_bio->bi_status = error;
+	base_bio->bi_status = io->error;
 
 	bio_endio(base_bio);
 }
drivers/md/dm-ebs-target.c +1 -2
index b354e74a670e..9301c9f55085 100644
@@ -265,8 +265,7 @@ static int ebs_ctr(struct dm_target *ti, unsigned int argc, char **argv)
 
 	r = -EINVAL;
 	if (sscanf(argv[1], "%llu%c", &tmp, &dummy) != 1 ||
-	    tmp != (sector_t)tmp ||
-	    (sector_t)tmp >= ti->len) {
+	    tmp != (sector_t)tmp) {
 		ti->error = "Invalid device offset sector";
 		goto bad;
 	}
drivers/md/dm-integrity.c +5 -1
index 24d2e76c21a9..400bb77f33ed 100644
@@ -1979,7 +1979,7 @@ static void integrity_metadata(struct work_struct *w)
 
 		if (unlikely(dio->op == REQ_OP_DISCARD)) {
 			unsigned int bi_size = dio->bio_details.bi_iter.bi_size;
-			unsigned int max_size = likely(checksums != checksums_onstack) ? PAGE_SIZE : HASH_MAX_DIGESTSIZE;
+			unsigned int max_size = likely(checksums != checksums_onstack) ? PAGE_SIZE : sizeof(checksums_onstack);
 			unsigned int max_blocks = (max_size - extra_space) / ic->tag_size;
 			sector_t sector = dio->range.logical_sector;
 
@@ -4179,6 +4179,10 @@ static void dm_integrity_io_hints(struct dm_target *ti, struct queue_limits *lim
 		limits->discard_granularity = ic->sectors_per_block << SECTOR_SHIFT;
 	}
 
+	if (ic->internal_hash &&
+	    (ic->mode == 'D' || ic->mode == 'B' || ic->mode == 'I'))
+		limits->features |= BLK_FEAT_STABLE_WRITES;
+
 	if (!ic->internal_hash) {
 		struct blk_integrity *bi = &limits->integrity;
 
drivers/net/ethernet/broadcom/genet/bcmgenet.c +10 -0
index 5a891cf59f10..75bfd74b391b 100644
@@ -2149,6 +2149,16 @@ static netdev_tx_t bcmgenet_xmit(struct sk_buff *skb, struct net_device *dev)
 		goto out;
 	}
 
+	/* We store Tx state in the control block, so the skb must not be
+	 * shared, but ether_setup() leaves IFF_TX_SKB_SHARING set.
+	 */
+	skb = skb_share_check(skb, GFP_ATOMIC);
+	if (!skb) {
+		BCMGENET_STATS64_INC((&ring->stats64), dropped);
+		ret = NETDEV_TX_OK;
+		goto out;
+	}
+
 	/* Retain how many bytes will be sent on the wire, without TSB inserted
 	 * by transmit checksum offload
 	 */
drivers/net/ethernet/intel/Kconfig +1 -0
index 122ee23497e6..288fa8ce53af 100644
@@ -296,6 +296,7 @@ config ICE
 	depends on GNSS || GNSS = n
 	select AUXILIARY_BUS
 	select DIMLIB
+	select LIBETH_XDP
 	select LIBIE
 	select LIBIE_ADMINQ
 	select LIBIE_FWLOG if DEBUG_FS
drivers/net/ethernet/intel/ice/ice.h +2 -1
index 2b285ffa9d4b..c2332a7a8c87 100644
@@ -374,6 +374,8 @@ struct ice_vsi {
 	spinlock_t arfs_lock;	/* protects aRFS hash table and filter state */
 	atomic_t *arfs_last_fltr_id;
 
+	u16 max_frame;
+
 	struct ice_aqc_vsi_props info;	 /* VSI properties */
 	struct ice_vsi_vlan_info vlan_info;	/* vlan config to be restored */
 
@@ -509,7 +511,6 @@ enum ice_pf_flags {
 	ICE_FLAG_MOD_POWER_UNSUPPORTED,
 	ICE_FLAG_PHY_FW_LOAD_FAILED,
 	ICE_FLAG_ETHTOOL_CTXT,		/* set when ethtool holds RTNL lock */
-	ICE_FLAG_LEGACY_RX,
 	ICE_FLAG_VF_TRUE_PROMISC_ENA,
 	ICE_FLAG_MDD_AUTO_RESET_VF,
 	ICE_FLAG_VF_VLAN_PRUNING,
drivers/net/ethernet/intel/ice/ice_base.c +47 -81

226 lines not on this page · raw message

drivers/net/ethernet/intel/ice/ice_ethtool.c +13 -13
index ec33586b6da5..428118475e2f 100644
@@ -10,6 +10,7 @@
 #include "ice_lib.h"
 #include "ice_dcb_lib.h"
 #include <net/dcbnl.h>
+#include <net/libeth/rx.h>
 
 struct ice_stats {
 	char stat_string[ETH_GSTRING_LEN];
@@ -340,7 +341,6 @@ static const struct ice_priv_flag ice_gstrings_priv_flags[] = {
 		      ICE_FLAG_VF_TRUE_PROMISC_ENA),
 	ICE_PRIV_FLAG("mdd-auto-reset-vf", ICE_FLAG_MDD_AUTO_RESET_VF),
 	ICE_PRIV_FLAG("vf-vlan-pruning", ICE_FLAG_VF_VLAN_PRUNING),
-	ICE_PRIV_FLAG("legacy-rx", ICE_FLAG_LEGACY_RX),
 };
 
 #define ICE_PRIV_FLAG_ARRAY_SIZE	ARRAY_SIZE(ice_gstrings_priv_flags)
@@ -1223,8 +1223,9 @@ static int ice_diag_send(struct ice_tx_ring *tx_ring, u8 *data, u16 size)
  */
 static int ice_lbtest_receive_frames(struct ice_rx_ring *rx_ring)
 {
-	struct ice_rx_buf *rx_buf;
+	struct libeth_fqe *rx_buf;
 	int valid_frames, i;
+	struct page *page;
 	u8 *received_buf;
 
 	valid_frames = 0;
@@ -1239,8 +1240,10 @@ static int ice_lbtest_receive_frames(struct ice_rx_ring *rx_ring)
 		     cpu_to_le16(BIT(ICE_RX_FLEX_DESC_STATUS0_EOF_S)))))
 			continue;
 
-		rx_buf = &rx_ring->rx_buf[i];
-		received_buf = page_address(rx_buf->page) + rx_buf->page_offset;
+		rx_buf = &rx_ring->rx_fqes[i];
+		page = __netmem_to_page(rx_buf->netmem);
+		received_buf = page_address(page) + rx_buf->offset +
+			       page->pp->p.offset;
 
 		if (ice_lbtest_check_frame(received_buf))
 			valid_frames++;
@@ -1278,6 +1281,10 @@ static u64 ice_loopback_test(struct net_device *netdev)
 	test_vsi->netdev = netdev;
 	tx_ring = test_vsi->tx_rings[0];
 	rx_ring = test_vsi->rx_rings[0];
+	/* Dummy q_vector and napi. Fill the minimum required for
+	 * ice_rxq_pp_create().
+	 */
+	rx_ring->q_vector->napi.dev = netdev;
 
 	if (ice_lbtest_prepare_rings(test_vsi)) {
 		ret = 2;
@@ -1848,10 +1855,6 @@ static int ice_set_priv_flags(struct net_device *netdev, u32 flags)
 			ice_nway_reset(netdev);
 		}
 	}
-	if (test_bit(ICE_FLAG_LEGACY_RX, change_flags)) {
-		/* down and up VSI so that changes of Rx cfg are reflected. */
-		ice_down_up(vsi);
-	}
 	/* don't allow modification of this flag when a single VF is in
 	 * promiscuous mode because it's not supported
 	 */
@@ -3309,7 +3312,8 @@ ice_set_ringparam(struct net_device *netdev, struct ethtool_ringparam *ring,
 		rx_rings[i].count = new_rx_cnt;
 		rx_rings[i].cached_phctime = pf->ptp.cached_phc_time;
 		rx_rings[i].desc = NULL;
-		rx_rings[i].rx_buf = NULL;
+		rx_rings[i].xdp_buf = NULL;
+
 		/* this is to allow wr32 to have something to write to
 		 * during early allocation of Rx buffers
 		 */
@@ -3318,10 +3322,6 @@ ice_set_ringparam(struct net_device *netdev, struct ethtool_ringparam *ring,
 		err = ice_setup_rx_ring(&rx_rings[i]);
 		if (err)
 			goto rx_unwind;
-
-		/* allocate Rx buffers */
-		err = ice_alloc_rx_bufs(&rx_rings[i],
-					ICE_RX_DESC_UNUSED(&rx_rings[i]));
 rx_unwind:
 		if (err) {
 			while (i) {
drivers/net/ethernet/intel/ice/ice_lib.c +10 -6
index 6de55d2424f4..80eb5c9f8a9b 100644
@@ -107,10 +107,6 @@ static int ice_vsi_alloc_arrays(struct ice_vsi *vsi)
 	if (!vsi->rxq_map)
 		goto err_rxq_map;
 
-	/* There is no need to allocate q_vectors for a loopback VSI. */
-	if (vsi->type == ICE_VSI_LB)
-		return 0;
-
 	/* allocate memory for q_vector pointers */
 	vsi->q_vectors = devm_kcalloc(dev, vsi->num_q_vectors,
 				      sizeof(*vsi->q_vectors), GFP_KERNEL);
@@ -239,6 +235,8 @@ static void ice_vsi_set_num_qs(struct ice_vsi *vsi)
 	case ICE_VSI_LB:
 		vsi->alloc_txq = 1;
 		vsi->alloc_rxq = 1;
+		/* A dummy q_vector, no actual IRQ. */
+		vsi->num_q_vectors = 1;
 		break;
 	default:
 		dev_warn(ice_pf_to_dev(pf), "Unknown VSI type %d\n", vsi_type);
@@ -1431,7 +1429,6 @@ static int ice_vsi_alloc_rings(struct ice_vsi *vsi)
 		ring->reg_idx = vsi->rxq_map[i];
 		ring->vsi = vsi;
 		ring->netdev = vsi->netdev;
-		ring->dev = dev;
 		ring->count = vsi->num_rx_desc;
 		ring->cached_phctime = pf->ptp.cached_phc_time;
 
@@ -2425,14 +2422,21 @@ static int ice_vsi_cfg_def(struct ice_vsi *vsi)
 		}
 		break;
 	case ICE_VSI_LB:
-		ret = ice_vsi_alloc_rings(vsi);
+		ret = ice_vsi_alloc_q_vectors(vsi);
 		if (ret)
 			goto unroll_vsi_init;
 
+		ret = ice_vsi_alloc_rings(vsi);
+		if (ret)
+			goto unroll_alloc_q_vector;
+
 		ret = ice_vsi_alloc_ring_stats(vsi);
 		if (ret)
 			goto unroll_vector_base;
 
+		/* Simply map the dummy q_vector to the only rx_ring */
+		vsi->rx_rings[0]->q_vector = vsi->q_vectors[0];
+
 		break;
 	default:
 		/* clean up the resources and exit */
drivers/net/ethernet/intel/ice/ice_main.c +3 -18
index f85051072ba2..9cc323801b94 100644
@@ -37,6 +37,8 @@ static const char ice_copyright[] = "Copyright (c) 2018, Intel Corporation.";
 #define ICE_DDP_PKG_FILE	ICE_DDP_PKG_PATH "ice.pkg"
 
 MODULE_DESCRIPTION(DRV_SUMMARY);
+MODULE_IMPORT_NS("LIBETH");
+MODULE_IMPORT_NS("LIBETH_XDP");
 MODULE_IMPORT_NS("LIBIE");
 MODULE_IMPORT_NS("LIBIE_ADMINQ");
 MODULE_IMPORT_NS("LIBIE_FWLOG");
@@ -2957,10 +2959,7 @@ int ice_vsi_determine_xdp_res(struct ice_vsi *vsi)
  */
 static int ice_max_xdp_frame_size(struct ice_vsi *vsi)
 {
-	if (test_bit(ICE_FLAG_LEGACY_RX, vsi->back->flags))
-		return ICE_RXBUF_1664;
-	else
-		return ICE_RXBUF_3072;
+	return ICE_RXBUF_3072;
 }
 
 /**
@@ -3018,19 +3017,11 @@ ice_xdp_setup_prog(struct ice_vsi *vsi, struct bpf_prog *prog,
 			}
 		}
 		xdp_features_set_redirect_target(vsi->netdev, true);
-		/* reallocate Rx queues that are used for zero-copy */
-		xdp_ring_err = ice_realloc_zc_buf(vsi, true);
-		if (xdp_ring_err)
-			NL_SET_ERR_MSG_MOD(extack, "Setting up XDP Rx resources failed");
 	} else if (ice_is_xdp_ena_vsi(vsi) && !prog) {
 		xdp_features_clear_redirect_target(vsi->netdev);
 		xdp_ring_err = ice_destroy_xdp_rings(vsi, ICE_XDP_CFG_FULL);
 		if (xdp_ring_err)
 			NL_SET_ERR_MSG_MOD(extack, "Freeing XDP Tx resources failed");
-		/* reallocate Rx queues that were used for zero-copy */
-		xdp_ring_err = ice_realloc_zc_buf(vsi, false);
-		if (xdp_ring_err)
-			NL_SET_ERR_MSG_MOD(extack, "Freeing XDP Rx resources failed");
 	}
 
 resume_if:
@@ -7879,12 +7870,6 @@ int ice_change_mtu(struct net_device *netdev, int new_mtu)
 				   frame_size - ICE_ETH_PKT_HDR_PAD);
 			return -EINVAL;
 		}
-	} else if (test_bit(ICE_FLAG_LEGACY_RX, pf->flags)) {
-		if (new_mtu + ICE_ETH_PKT_HDR_PAD > ICE_MAX_FRAME_LEGACY_RX) {
-			netdev_err(netdev, "Too big MTU for legacy-rx; Max is %d\n",
-				   ICE_MAX_FRAME_LEGACY_RX - ICE_ETH_PKT_HDR_PAD);
-			return -EINVAL;
-		}
 	}
 
 	/* if a reset is in progress, wait for some time for it to complete */
drivers/net/ethernet/intel/ice/ice_txrx.c +78 -569

869 lines not on this page · raw message

drivers/net/ethernet/intel/ice/ice_txrx.h +9 -116

207 lines not on this page · raw message

drivers/net/ethernet/intel/ice/ice_txrx_lib.c +41 -24

26 lines not on this page · raw message

drivers/net/ethernet/intel/ice/ice_txrx_lib.h +0 -9
index 99717730f21a..6a3f10f7a53f 100644

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

drivers/net/ethernet/intel/ice/ice_xsk.c +21 -125

146 lines not on this page · raw message

drivers/net/ethernet/intel/ice/ice_xsk.h +3 -3
index 600cbeeaa203..5275fcedc9e1 100644

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

drivers/net/ethernet/intel/ice/virt/queues.c +4 -2
index 0765ee901b7c..431c9c546b04 100644

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

drivers/net/ethernet/mellanox/mlx5/core/steering/hws/fs_hws.c +3 -2
index c45a7ca66ad8..5745ba84c3a0 100644

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

drivers/net/wireless/intersil/p54/fwio.c +37 -5

42 lines not on this page · raw message

drivers/pci/pci.c +11 -4
index 264213aa7630..78d4411e3255 100644

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

drivers/pinctrl/pinctrl-amd.c +9 -0
index d962f2e1d2ac..33c43f2ea991 100644

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

drivers/pinctrl/qcom/pinctrl-ipq5018.c +5 -5
index cbf34854f882..c6e52615b36e 100644

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

drivers/pinctrl/qcom/pinctrl-qcs8300.c +1 -0
index f1af1a620684..0819a2935346 100644

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

drivers/pinctrl/sunxi/pinctrl-sunxi-dt.c +1 -0
index 50a16f3bd131..8bcd566593ae 100644

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

drivers/power/supply/ds2780_battery.c +1 -1
index 5b57bbba79d4..ef2446386c2a 100644

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

drivers/power/supply/generic-adc-battery.c +7 -2
index f5f2566b3a32..c69c9b9fa0eb 100644

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

drivers/power/supply/power_supply_core.c +25 -1
index 42ad333394d9..615dc27089a3 100644

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

drivers/s390/net/ctcm_mpc.c +1 -2
index 407b7c516658..bca949cbfb36 100644

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

drivers/scsi/libiscsi.c +8 -6
index e2adebc80b3a..0a6c3ab0ffcd 100644

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

drivers/scsi/libsas/sas_expander.c +12 -2
index d953225f6cc2..c9a7a55a5917 100644

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

drivers/scsi/mpi3mr/mpi3mr_app.c +1 -1
index 0e5478d62580..f4174d549fe6 100644

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

drivers/scsi/scsi_transport_fc.c +4 -2
index 2661cf9908a5..5b222802fad1 100644

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

drivers/scsi/scsi_transport_iscsi.c +1 -1
index 743b4c792ceb..5ef807335e27 100644

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

drivers/scsi/scsi_transport_sas.c +4 -2
index bbbc2f448e7d..860cab565c59 100644

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

drivers/scsi/st.c +12 -6
index 74a6830b7ed8..476a45fdf787 100644

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

drivers/scsi/xen-scsifront.c +1 -0
index 924025305753..59928be4c273 100644

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

drivers/soc/tegra/fuse/tegra-apbmisc.c +1 -1
index 0ce94fdc536f..1c25b36c2f3c 100644

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

drivers/spi/spi-tegra114.c +7 -0
index a28597b6b80d..b696c34d83de 100644

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

drivers/target/iscsi/iscsi_target_configfs.c +19 -7
index efe8cdb20060..3b4e7a8d3d31 100644

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

drivers/ufs/core/ufs_bsg.c +1 -1
index 252186124669..bb6ff8ca5c7a 100644

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

fs/afs/internal.h +2 -0
index 61cba72f0c40..a0798e4f7512 100644

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

fs/afs/super.c +1 -1
index 0612dd76a18e..bb32c19fea29 100644

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

fs/autofs/waitq.c +19 -6
index 33dd4660d82f..cab26ca65873 100644

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

fs/ext4/ext4.h +2 -0
index da6428312c36..dae7fb8bc598 100644

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

fs/ext4/extents_status.c +6 -1
index 31dc0496f8d0..fbfd1937d07d 100644

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

fs/ext4/extents_status.h +1 -0
index 8f9c008d11e8..502d9110a73c 100644

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

fs/ext4/super.c +11 -2
index 9b45d27515f9..3f5e9d825a5e 100644

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

fs/namei.c +1 -2
index 2e86733b4bac..fc2f463c6ea4 100644

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

fs/notify/mark.c +11 -0
index 78338075f08a..6be5f4c96119 100644

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

fs/ntfs3/ntfs_fs.h +1 -0
index 99a78204b986..9cacca339705 100644

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

fs/ntfs3/super.c +51 -15

66 lines not on this page · raw message

fs/ocfs2/dlm/dlmcommon.h +2 -0
index 20f790a47484..58b28dfa8d34 100644

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

fs/ocfs2/dlm/dlmdebug.c +4 -1
index 564567358620..38a6a99603a9 100644

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

fs/ocfs2/dlm/dlmrecovery.c +1 -1
index 2379225f0ee6..a55787282eaf 100644

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

fs/pipe.c +4 -2
index 42fead1efe52..ec1742bad3e7 100644

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

fs/smb/client/cifsfs.c +7 -3
index f63519a0b1d8..0429e90dcfd6 100644

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

fs/smb/client/cifssmb.c +11 -2
index 0a5b580e5227..0f293819d5e1 100644

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

fs/smb/client/connect.c +16 -5
index 151399de7d6a..e908d522920c 100644

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

fs/smb/client/file.c +32 -6
index 4eb1ac4f7b60..b24a7e191928 100644

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

fs/smb/client/smb2ops.c +34 -1
index 2026e627bc44..600ecf4382fa 100644

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

fs/smb/server/smb2pdu.c +5 -0
index 27a6e47fe7a9..c97f2a128651 100644

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

fs/tracefs/event_inode.c +9 -1
index abb0ea57601b..a992c2919f79 100644

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

fs/unicode/utf8-core.c +17 -4
index 6fc9ab8667e6..0c15d18ae5c9 100644

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

fs/xfs/libxfs/xfs_rtgroup.h +5 -1
index a94e925ae67c..a4a336f3927c 100644

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

fs/xfs/libxfs/xfs_sb.c +17 -20
index 823ff59ba711..33ce787729ce 100644

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

fs/xfs/xfs_aops.c +1 -2
index a26f79815533..9845a5fcf857 100644

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

fs/xfs/xfs_fsmap.c +1 -1
index af68c7de8ee8..0921d288b590 100644

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

fs/xfs/xfs_ioctl.c +1 -1
index a6bb7ee7a27a..7084311ace79 100644

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

fs/xfs/xfs_iomap.c +1 -2
index dcea927e0d3a..a1c88df45dd0 100644

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

fs/xfs/xfs_iops.c +1 -1
index caff0125faea..65d68347bf76 100644

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

include/drm/drm_exec.h +9 -6
index dee6ebdbe416..1962f8d2056d 100644

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

include/linux/bsg-lib.h +2 -1
index 14fa93268630..a697246feeac 100644

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

include/linux/cgroup-defs.h +4 -1
index b760a3c470a5..23b6bb0d3077 100644

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

include/linux/fsnotify_backend.h +1 -0
index 4affacb909ae..d67a893d75fa 100644

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

include/linux/futex.h +11 -7
index e93f2be22779..01febbc9ef1e 100644

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

include/linux/ipv6.h +22 -0
index 7294e4e89b79..c5541096a286 100644

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

include/linux/maple_tree.h +4 -0
index 2ba53c065467..983a57400563 100644

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

include/linux/mm_types.h +3 -0
index f9c552744b71..08495d38572f 100644

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

include/linux/power_supply.h +13 -3
index 360ffdf272da..8f9e4d084305 100644

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

include/linux/sched/user.h +5 -3
index 8d7e5521f7cd..ec262b605437 100644

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

include/linux/unicode.h +1 -0
index 5e6b212a2aed..609e8f5da415 100644

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

include/net/af_vsock.h +3 -0
index d40e978126e3..bb3af3e97e0f 100644

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

include/net/ipv6.h +0 -2
index cd798f3569cb..b03467b337f4 100644

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

include/net/netfilter/nf_tables_ipv6.h +2 -2
index a0633eeaec97..c53ac00bb974 100644

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

include/net/rose.h +12 -0
index 0d957b8dd0ba..49140668b3dd 100644

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

io_uring/cancel.c +269 -0

269 lines not on this page · raw message

io_uring/cancel.h +7 -1
index eaa4069e258c..1b201a094303 100644

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

io_uring/io_uring.c +4 -284

288 lines not on this page · raw message

io_uring/io_uring.h +9 -4
index 042bdd766571..36918faff5af 100644

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

io_uring/sqpoll.c +1 -0
index e22f072c7d5f..74c1a130cd87 100644

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

kernel/cgroup/cgroup.c +2 -4
index 5ae4c27e3b3d..275c335c02a7 100644

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

kernel/events/core.c +14 -19
index 018a1e4ef5b0..9007f2b36c44 100644

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

kernel/exit.c +1 -1
index e38b2bb85097..4dac7d188d74 100644

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

kernel/futex/core.c +42 -33

75 lines not on this page · raw message

kernel/kexec_handover.c +1 -1
index 9fe5d14f1ec5..9691f6bc2fba 100644

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

kernel/pid_namespace.c +1 -1
index 650be58d8d18..a3dd5fc55e85 100644

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

kernel/printk/printk.c +1 -1
index dffdbbfa4a00..d555d05ffa8d 100644

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

kernel/sched/ext.c +11 -2
index 55072a105cd6..f3e3146e5feb 100644

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

kernel/sched/ext_idle.c +39 -11

50 lines not on this page · raw message

kernel/sched/ext_internal.h +3 -2
index 7cb9c8725b65..ed25c130b999 100644

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

kernel/trace/ring_buffer.c +5 -8
index c6d3730eb6f3..f74acc78866d 100644

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

kernel/trace/trace.c +11 -2
index 54bdc493498b..a76743475e9f 100644

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

kernel/trace/trace_events_filter.c +4 -5
index 9c63ea51c8be..7985bbdf2ba6 100644

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

kernel/trace/trace_events_hist.c +13 -6
index 9152f63cfb4c..20d23a08b5b8 100644

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

kernel/trace/trace_probe.c +1 -2
index a0fe68cff4d3..7202fb4aced1 100644

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

kernel/watch_queue.c +7 -4
index 7e45559521af..bc8d6b641ed4 100644

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

kernel/workqueue.c +24 -12
index 162137855058..8c74f199cd70 100644

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

lib/crypto/arm64/poly1305-armv8.pl +1 -1
index f1930c6b55ce..234398ff6b60 100644

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

lib/crypto/poly1305.c +1 -1
index f313ccc4b4dd..048c7afe8613 100644

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

net/ax25/ax25_std_in.c +36 -0
index ba176196ae06..f280683f83fc 100644

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

net/bridge/br_multicast.c +12 -1
index 78682aace574..c437cb684aeb 100644

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

net/bridge/br_netfilter_ipv6.c +1 -1
index e0421eaa3abc..76ce70b4e7f3 100644

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

net/bridge/netfilter/nf_conntrack_bridge.c +2 -2
index cfa809110242..b17962672ebf 100644

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

net/core/page_pool.c +2 -1
index e02bdee3c5fd..e2a169d6f7b0 100644

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

net/core/sock.c +3 -0
index 4dc2b03509f8..b8c723d6ac59 100644

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

net/ipv4/fib_semantics.c +1 -1
index 08d1bbaafc79..d194701fe0ad 100644

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

net/ipv4/tcp.c +14 -4
index ec8958688c48..56e7e7ef5e5c 100644

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

net/ipv4/tcp_cong.c +2 -2
index e9f6c77e0631..8e83ef81fc18 100644

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

net/ipv4/tcp_dctcp.c +2 -2
index 6f103038b015..0492728fa613 100644

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

net/ipv4/tcp_minisocks.c +1 -1
index a496c26737fd..d05009f985af 100644

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

net/ipv4/tcp_output.c +1 -1
index 3f9e11a43f35..ddcc7e53f2e3 100644

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

net/ipv4/udp.c +10 -1
index 341786983d42..a7ae0d098f2c 100644

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

net/ipv6/calipso.c +3 -3
index 21f6ed126253..22008f5a2973 100644

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

net/ipv6/ip6_input.c +1 -1
index b59b2b119a1c..673c6f0ce617 100644

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

net/ipv6/ip6_offload.c +3 -4
index fce91183797a..6762ce7909c8 100644

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

net/ipv6/output_core.c +1 -6
index 1c9b283a4132..cba1684a3f30 100644

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

net/iucv/af_iucv.c +25 -17

42 lines not on this page · raw message

net/mac802154/ieee802154_i.h +6 -1
index 279ff4e9b11e..992ce6698c20 100644

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

net/mac802154/main.c +1 -0
index 386c086c79d1..8ed6de111f5a 100644

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

net/mac802154/scan.c +38 -13

51 lines not on this page · raw message

net/netfilter/ipvs/ip_vs_xmit.c +1 -1
index fa66e3168550..9d92e92a966c 100644

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

net/netfilter/nf_conntrack_ovs.c +1 -1
index 068e9489e1c2..a6988eeb1579 100644

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

net/netfilter/nf_log_syslog.c +1 -1
index 6782c72bcfc2..f368e090e645 100644

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

net/netfilter/nft_byteorder.c +20 -31

51 lines not on this page · raw message

net/netlink/af_netlink.c +7 -3
index fd8e9cfe6171..6c0aabca5dba 100644

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

net/rds/rdma_transport.c +33 -5
index b15cf316b23a..7be38be1228e 100644

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

net/sched/act_api.c +5 -6
index a0e8f74ca075..382d6706f2c4 100644

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

net/sched/cls_flower.c +5 -0
index 5e61bf334ed8..cf1f94b559f4 100644

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

net/sched/sch_cake.c +1 -1
index 0e7007c545e8..9e89300d5aa2 100644

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

net/sctp/inqueue.c +4 -2
index 5f988b3a8814..d666cec6b194 100644

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

net/sctp/socket.c +21 -12
index 0559f58c6cab..03588ac5c382 100644

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

net/tipc/node.c +2 -0
index 768c5501b42e..4a40cc2e6d1b 100644

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

net/vmw_vsock/af_vsock.c +40 -9

49 lines not on this page · raw message

net/vmw_vsock/virtio_transport_common.c +8 -1
index 829feae9c0e0..9010d1a1535c 100644

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

net/vmw_vsock/vmci_transport.c +34 -6
index 4f02a6f269cd..df0c472f9dd6 100644

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

samples/pidfd/Makefile +1 -1
index 9754e2d81f70..d82409f7061f 100644

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

sound/pci/ctxfi/ctatc.c +11 -5
index 7cb33d7c43d2..da728549ce42 100644

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

sound/pci/ctxfi/ctdaio.c +2 -3
index fe40fcee3673..1c12fffce1a2 100644

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

sound/pci/ctxfi/ctdaio.h +1 -1
index b337da2de8b5..cc2e93a3edda 100644

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

sound/soc/amd/yc/pci-acp6x.c +36 -2
index 1140ed1cbb3d..b72b7ae1a256 100644

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

sound/soc/codecs/cs42l52.c +1 -1
index a9ffba62aaf8..4a7cfd52e583 100644

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

sound/soc/codecs/cs42l56.c +1 -1
index 98fa812bc07b..4e46b8ba9248 100644

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

sound/soc/codecs/max98371.c +1 -1
index 852db211ba1e..c53f76f0ade7 100644

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

sound/soc/codecs/nau8822.c +2 -2
index 15d6f8d01f78..1386ba604199 100644

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

sound/soc/codecs/pcm3168a.c +1 -1
index 2066cf6c1e97..68d914148bf3 100644

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

sound/soc/codecs/wm8978.c +2 -2
index 8c45ba6fc4c3..e9ef9bf4be09 100644

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

sound/soc/intel/avs/pcm.c +1 -1
index a2c05a4ced72..8f09d539e224 100644

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

sound/soc/sof/ipc4-topology.c +14 -2
index 5701e4d1ac13..7178279ddfb7 100644

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

sound/soc/stm/stm32_spdifrx.c +1 -1
index 57b711c44278..47cd3efcadc1 100644

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

tools/bootconfig/main.c +2 -1
index bf455757aab9..6f5d60045f90 100644

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

tools/gpio/Makefile +6 -0
index 342e056c8c66..1cd7636b9cac 100644

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

tools/power/x86/turbostat/turbostat.c +16 -8
index 313872f64a9a..3bab2677b067 100644

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

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

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