Skip to contentSkip to conversation

Linux 6.13.4

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Feb 21, 2025 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 6.13.4 kernel.

All users of the 6.13 kernel series must upgrade.

The updated 6.13.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.13.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/devicetree/bindings/regulator/qcom,smd-rpm-regulator.yaml |    2 
 Documentation/networking/iso15765-2.rst                                 |    4 
 Makefile                                                                |   15 -
 arch/alpha/include/uapi/asm/ptrace.h                                    |    2 
 arch/alpha/kernel/asm-offsets.c                                         |    4 
 arch/alpha/kernel/entry.S                                               |   24 -
 arch/alpha/kernel/traps.c                                               |    2 
 arch/alpha/mm/fault.c                                                   |    4 
 arch/arm64/Makefile                                                     |    4 
 arch/arm64/kernel/cacheinfo.c                                           |   12 
 arch/arm64/kernel/vdso/vdso.lds.S                                       |    1 
 arch/arm64/kernel/vmlinux.lds.S                                         |    1 
 arch/loongarch/kernel/genex.S                                           |   28 +
 arch/loongarch/kernel/idle.c                                            |    3 
 arch/loongarch/kernel/reset.c                                           |    6 
 arch/loongarch/kvm/main.c                                               |    4 
 arch/loongarch/lib/csum.c                                               |    2 
 arch/powerpc/sysdev/fsl_msi.c                                           |    2 
 arch/s390/pci/pci_bus.c                                                 |   20 +
 arch/s390/pci/pci_iov.c                                                 |   56 ++-
 arch/s390/pci/pci_iov.h                                                 |    7 
 arch/um/kernel/process.c                                                |   10 
 arch/um/os-Linux/skas/process.c                                         |   16 -
 arch/x86/Kconfig                                                        |    3 
 arch/x86/events/intel/core.c                                            |   33 --
 arch/x86/events/intel/ds.c                                              |   10 
 arch/x86/include/asm/kvm-x86-ops.h                                      |    1 
 arch/x86/include/asm/kvm_host.h                                         |    1 
 arch/x86/include/asm/mmu.h                                              |    2 
 arch/x86/include/asm/mmu_context.h                                      |    1 
 arch/x86/include/asm/msr-index.h                                        |    3 
 arch/x86/include/asm/perf_event.h                                       |   28 +
 arch/x86/include/asm/tlbflush.h                                         |    1 
 arch/x86/kernel/cpu/bugs.c                                              |   21 -
 arch/x86/kvm/hyperv.c                                                   |    6 
 arch/x86/kvm/mmu/mmu.c                                                  |    2 
 arch/x86/kvm/svm/nested.c                                               |   10 
 arch/x86/kvm/svm/svm.c                                                  |   13 
 arch/x86/kvm/vmx/main.c                                                 |    1 
 arch/x86/kvm/vmx/vmx.c                                                  |   10 
 arch/x86/kvm/vmx/x86_ops.h                                              |    1 
 arch/x86/kvm/x86.c                                                      |    3 
 arch/x86/mm/tlb.c                                                       |   35 ++
 arch/x86/um/os-Linux/registers.c                                        |   21 +
 arch/x86/um/signal.c                                                    |   13 
 arch/x86/xen/mmu_pv.c                                                   |   75 ++++-
 block/partitions/mac.c                                                  |   18 +
 drivers/acpi/arm64/gtdt.c                                               |   12 
 drivers/acpi/x86/utils.c                                                |   13 
 drivers/base/regmap/regmap-irq.c                                        |    2 
 drivers/bluetooth/btintel_pcie.c                                        |    5 
 drivers/bus/moxtet.c                                                    |    2 
 drivers/cpufreq/amd-pstate.c                                            |  105 ++-----
 drivers/firmware/efi/efi.c                                              |    6 
 drivers/firmware/efi/libstub/randomalloc.c                              |    3 
 drivers/firmware/efi/libstub/relocate.c                                 |    3 
 drivers/firmware/qcom/qcom_scm-smc.c                                    |    3 
 drivers/gpio/gpio-bcm-kona.c                                            |   71 +++-
 drivers/gpio/gpio-stmpe.c                                               |   15 -
 drivers/gpio/gpiolib-acpi.c                                             |   14 
 drivers/gpio/gpiolib.c                                                  |    6 
 drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c                                 |    5 
 drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c                  |    2 
 drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c                               |    3 
 drivers/gpu/drm/display/drm_dp_helper.c                                 |    2 
 drivers/gpu/drm/i915/selftests/i915_gem_gtt.c                           |    4 
 drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_2_x1e80100.h                |    4 
 drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c                           |    3 
 drivers/gpu/drm/msm/msm_gem_submit.c                                    |    3 
 drivers/gpu/drm/panthor/panthor_drv.c                                   |    1 
 drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi.c                         |    2 
 drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi_regs.h                    |    1 
 drivers/gpu/drm/renesas/rz-du/rzg2l_du_kms.c                            |    6 
 drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c                      |    7 
 drivers/gpu/drm/tidss/tidss_dispc.c                                     |   26 +
 drivers/gpu/drm/tidss/tidss_irq.c                                       |    2 
 drivers/gpu/drm/v3d/v3d_perfmon.c                                       |    5 
 drivers/gpu/drm/xe/regs/xe_oa_regs.h                                    |    9 
 drivers/gpu/drm/xe/xe_drm_client.c                                      |    2 
 drivers/gpu/drm/xe/xe_oa.c                                              |   92 ++++--
 drivers/gpu/drm/xe/xe_oa_types.h                                        |    5 
 drivers/gpu/drm/xe/xe_query.c                                           |    4 
 drivers/gpu/drm/xe/xe_trace_bo.h                                        |   12 
 drivers/gpu/drm/xe/xe_ttm_stolen_mgr.c                                  |   54 ++-
 drivers/gpu/drm/xlnx/zynqmp_dp.c                                        |    2 
 drivers/gpu/host1x/dev.c                                                |    2 
 drivers/gpu/host1x/intr.c                                               |    2 
 drivers/hid/hid-corsair-void.c                                          |    3 
 drivers/hid/hid-multitouch.c                                            |    5 
 drivers/hid/hid-steam.c                                                 |   41 ++
 drivers/hid/hid-thrustmaster.c                                          |    2 
 drivers/hid/hid-winwing.c                                               |    2 
 drivers/hv/channel_mgmt.c                                               |   61 +++-
 drivers/hv/connection.c                                                 |    4 
 drivers/hv/hyperv_vmbus.h                                               |   14 
 drivers/hv/vmbus_drv.c                                                  |   16 -
 drivers/i3c/master/Kconfig                                              |   11 
 drivers/i3c/master/mipi-i3c-hci/Makefile                                |    1 
 drivers/i3c/master/mipi-i3c-hci/dma.c                                   |   17 +
 drivers/i3c/master/mipi-i3c-hci/mipi-i3c-hci-pci.c                      |  148 ++++++++++
 drivers/infiniband/hw/efa/efa_main.c                                    |    9 
 drivers/iommu/amd/amd_iommu_types.h                                     |    1 
 drivers/iommu/amd/init.c                                                |    4 
 drivers/iommu/intel/prq.c                                               |    4 
 drivers/iommu/io-pgfault.c                                              |    1 
 drivers/irqchip/irq-partition-percpu.c                                  |    2 
 drivers/media/dvb-frontends/cxd2841er.c                                 |    8 
 drivers/media/i2c/ds90ub913.c                                           |   25 +
 drivers/media/i2c/ds90ub953.c                                           |   46 ++-
 drivers/media/platform/broadcom/bcm2835-unicam.c                        |    8 
 drivers/media/test-drivers/vidtv/vidtv_bridge.c                         |    8 
 drivers/media/usb/uvc/uvc_driver.c                                      |   18 +
 drivers/media/usb/uvc/uvc_video.c                                       |   27 +
 drivers/media/usb/uvc/uvcvideo.h                                        |    1 
 drivers/mmc/host/mtk-sd.c                                               |   31 +-
 drivers/mmc/host/sdhci_am654.c                                          |   30 --
 drivers/net/can/c_can/c_can_platform.c                                  |    5 
 drivers/net/can/ctucanfd/ctucanfd_base.c                                |   10 
 drivers/net/can/rockchip/rockchip_canfd-core.c                          |    2 
 drivers/net/can/usb/etas_es58x/es58x_devlink.c                          |    6 
 drivers/net/ethernet/intel/idpf/idpf_lib.c                              |    5 
 drivers/net/ethernet/intel/idpf/idpf_txrx.c                             |    5 
 drivers/net/ethernet/intel/igc/igc_main.c                               |   22 -
 drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c                  |    4 
 drivers/net/ethernet/ti/am65-cpsw-nuss.c                                |   50 ++-
 drivers/net/team/team_core.c                                            |    4 
 drivers/net/vxlan/vxlan_core.c                                          |    7 
 drivers/net/wireless/ath/ath12k/wmi.c                                   |   61 +++-
 drivers/net/wireless/ath/ath12k/wmi.h                                   |    1 
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c                 |    4 
 drivers/parport/parport_serial.c                                        |   12 
 drivers/pci/controller/pcie-mediatek-gen3.c                             |   59 ++-
 drivers/pci/endpoint/pci-epc-core.c                                     |   11 
 drivers/pci/quirks.c                                                    |   15 -
 drivers/pci/switch/switchtec.c                                          |   26 +
 drivers/pinctrl/pinconf-generic.c                                       |    8 
 drivers/pinctrl/pinctrl-cy8c95x0.c                                      |   42 +-
 drivers/ptp/ptp_vmclock.c                                               |    8 
 drivers/regulator/core.c                                                |   61 +---
 drivers/soc/qcom/llcc-qcom.c                                            |   57 +++
 drivers/soc/qcom/smp2p.c                                                |    2 
 drivers/soc/tegra/fuse/fuse-tegra30.c                                   |   17 -
 drivers/spi/spi-sn-f-ospi.c                                             |    3 
 drivers/tty/serial/8250/8250.h                                          |    2 
 drivers/tty/serial/8250/8250_dma.c                                      |   16 +
 drivers/tty/serial/8250/8250_pci.c                                      |   76 ++---
 drivers/tty/serial/8250/8250_pci1xxxx.c                                 |   60 +++-
 drivers/tty/serial/8250/8250_port.c                                     |    9 
 drivers/tty/serial/serial_port.c                                        |    5 
 drivers/ufs/core/ufs_bsg.c                                              |    1 
 drivers/ufs/core/ufshcd.c                                               |  127 ++++----
 drivers/usb/class/cdc-acm.c                                             |   28 +
 drivers/usb/core/hub.c                                                  |   14 
 drivers/usb/core/quirks.c                                               |    6 
 drivers/usb/dwc2/gadget.c                                               |    1 
 drivers/usb/dwc3/gadget.c                                               |   34 ++
 drivers/usb/gadget/function/f_midi.c                                    |   17 -
 drivers/usb/gadget/udc/core.c                                           |    2 
 drivers/usb/gadget/udc/renesas_usb3.c                                   |    2 
 drivers/usb/host/pci-quirks.c                                           |    9 
 drivers/usb/host/xhci-pci.c                                             |    7 
 drivers/usb/roles/class.c                                               |    5 
 drivers/usb/serial/option.c                                             |   49 +--
 drivers/usb/typec/tcpm/tcpm.c                                           |    3 
 drivers/vfio/pci/nvgrace-gpu/main.c                                     |   95 ++++--
 drivers/vfio/pci/vfio_pci_rdwr.c                                        |    1 
 drivers/vfio/platform/vfio_platform_common.c                            |   10 
 drivers/video/fbdev/omap/lcd_dma.c                                      |    4 
 drivers/xen/swiotlb-xen.c                                               |   20 -
 fs/btrfs/extent_io.c                                                    |   29 +
 fs/btrfs/file.c                                                         |    4 
 fs/nfs/sysfs.c                                                          |    6 
 fs/nfsd/filecache.c                                                     |   11 
 fs/nfsd/nfs2acl.c                                                       |    2 
 fs/nfsd/nfs3acl.c                                                       |    2 
 fs/nfsd/nfs4callback.c                                                  |    7 
 fs/ntfs3/attrib.c                                                       |   15 -
 fs/ntfs3/dir.c                                                          |    2 
 fs/ntfs3/frecord.c                                                      |   71 ++--
 fs/ntfs3/fsntfs.c                                                       |    6 
 fs/ntfs3/index.c                                                        |    6 
 fs/ntfs3/inode.c                                                        |    3 
 fs/ntfs3/ntfs_fs.h                                                      |   21 -
 fs/ntfs3/record.c                                                       |   79 ++---
 fs/orangefs/orangefs-debugfs.c                                          |    4 
 fs/smb/client/cifsglob.h                                                |    1 
 fs/smb/client/file.c                                                    |    7 
 include/drm/display/drm_dp.h                                            |    1 
 include/kunit/platform_device.h                                         |    1 
 include/linux/blk-mq.h                                                  |   18 -
 include/linux/cgroup-defs.h                                             |    6 
 include/linux/compiler.h                                                |   26 -
 include/linux/efi.h                                                     |    1 
 include/linux/netdevice.h                                               |    6 
 include/linux/pci_ids.h                                                 |   11 
 include/linux/sched/task.h                                              |    1 
 include/net/dst.h                                                       |    9 
 include/net/ip.h                                                        |   13 
 include/net/l3mdev.h                                                    |    2 
 include/net/net_namespace.h                                             |    2 
 include/net/route.h                                                     |    9 
 include/uapi/drm/xe_drm.h                                               |   16 +
 include/uapi/linux/thermal.h                                            |    2 
 include/ufs/ufshcd.h                                                    |    9 
 io_uring/kbuf.c                                                         |   15 -
 io_uring/uring_cmd.c                                                    |   32 --
 io_uring/waitid.c                                                       |    4 
 kernel/cgroup/cgroup.c                                                  |   20 -
 kernel/cgroup/rstat.c                                                   |    1 
 kernel/sched/autogroup.c                                                |    4 
 kernel/sched/core.c                                                     |    7 
 kernel/sched/ext.c                                                      |   71 ++--
 kernel/sched/ext.h                                                      |    4 
 kernel/sched/sched.h                                                    |    2 
 kernel/time/clocksource.c                                               |    9 
 kernel/trace/ring_buffer.c                                              |   28 +
 kernel/trace/trace.c                                                    |    4 
 kernel/workqueue.c                                                      |   12 
 net/ax25/af_ax25.c                                                      |   11 
 net/batman-adv/bat_v.c                                                  |    2 
 net/batman-adv/bat_v_elp.c                                              |  122 +++++---
 net/batman-adv/bat_v_elp.h                                              |    2 
 net/batman-adv/translation-table.c                                      |   12 
 net/batman-adv/types.h                                                  |    3 
 net/can/j1939/socket.c                                                  |    4 
 net/can/j1939/transport.c                                               |    5 
 net/core/fib_rules.c                                                    |   24 -
 net/core/flow_dissector.c                                               |   21 -
 net/core/neighbour.c                                                    |    8 
 net/core/rtnetlink.c                                                    |    1 
 net/ipv4/arp.c                                                          |    4 
 net/ipv4/devinet.c                                                      |    3 
 net/ipv4/icmp.c                                                         |   31 +-
 net/ipv4/route.c                                                        |   30 +-
 net/ipv6/icmp.c                                                         |   42 +-
 net/ipv6/ioam6_iptunnel.c                                               |   75 ++---
 net/ipv6/mcast.c                                                        |   45 +--
 net/ipv6/ndisc.c                                                        |   24 -
 net/ipv6/route.c                                                        |    7 
 net/ipv6/rpl_iptunnel.c                                                 |   59 ++-
 net/ipv6/seg6_iptunnel.c                                                |   98 ++++--
 net/openvswitch/datapath.c                                              |   12 
 net/vmw_vsock/af_vsock.c                                                |   12 
 rust/Makefile                                                           |    1 
 rust/kernel/rbtree.rs                                                   |    2 
 samples/hid/Makefile                                                    |   13 
 scripts/Makefile.defconf                                                |   13 
 scripts/Makefile.extrawarn                                              |   13 
 scripts/kconfig/Makefile                                                |    4 
 sound/soc/intel/boards/bytcr_rt5640.c                                   |   17 +
 sound/soc/renesas/Kconfig                                               |    2 
 tools/objtool/check.c                                                   |    1 
 tools/sched_ext/include/scx/common.bpf.h                                |   12 
 tools/testing/selftests/gpio/gpio-sim.sh                                |   31 +-
 tools/tracing/rtla/src/timerlat_hist.c                                  |    8 
 tools/tracing/rtla/src/timerlat_top.c                                   |    8 
 256 files changed, 2792 insertions(+), 1331 deletions(-)

Aaro Koskinen (1):
fbdev: omap: use threaded IRQ for LCD DMA

Aditya Garg (1):
wifi: brcmfmac: use random seed flag for BCM4355 and BCM4364 firmware

Aditya Kumar Singh (1):
wifi: ath12k: fix handling of 6 GHz rules

Alan Stern (1):
USB: hub: Ignore non-compliant devices with too many configs or interfaces

Alexander Hölzl (1):
can: j1939: j1939_sk_send_loop(): fix unable to send messages with data length zero

Andrea Righi (1):
sched_ext: Fix lock imbalance in dispatch_to_local_dsq()

Andy Shevchenko (10):
pinctrl: cy8c95x0: Fix off-by-one in the regmap range settings
pinctrl: cy8c95x0: Avoid accessing reserved registers
pinctrl: cy8c95x0: Enable regmap locking for debug
pinctrl: cy8c95x0: Rename PWMSEL to SELPWM
pinctrl: cy8c95x0: Respect IRQ trigger settings from firmware
gpiolib: Fix crash on error in gpiochip_get_ngpios()
serial: 8250_pci: Resolve WCH vendor ID ambiguity
serial: 8250_pci: Share WCH IDs with parport_serial driver
serial: port: Assign ->iotype correctly when ->iobase is set
serial: port: Always update ->iotype in __uart_read_properties()

Andy Strohman (1):
batman-adv: fix panic during interface removal

Andy-ld Lu (1):
mmc: mtk-sd: Fix register settings for hs400(es) mode

Ankit Agrawal (2):
vfio/nvgrace-gpu: Read dvsec register to determine need for uncached resmem vfio/nvgrace-gpu: Expose the blackwell device PF BAR1 to the VM

Ard Biesheuvel (1):
efi: Avoid cold plugged memory for placing the kernel

Arnd Bergmann (1):
media: cxd2841er: fix 64-bit division on gcc-9

Artur Weber (3):
gpio: bcm-kona: Fix GPIO lock/unlock for banks above bank 0
gpio: bcm-kona: Make sure GPIO bits are unlocked when requesting IRQ
gpio: bcm-kona: Add missing newline to dev_err format string

Ashutosh Dixit (2):
drm/xe/oa/uapi: Expose an unblock after N reports OA property drm/xe/oa: Set stream->pollin in xe_oa_buffer_check_unlocked

Avri Altman (5):
scsi: ufs: core: Introduce ufshcd_has_pending_tasks()
scsi: ufs: core: Prepare to introduce a new clock_gating lock
scsi: ufs: core: Introduce a new clock_gating lock
scsi: ufs: Fix toggling of clk_gating.state when clock gating is not allowed
scsi: ufs: core: Ensure clk_gating.lock is used only after initialization

Benjamin Berg (4):
um: add back support for FXSAVE registers
um: avoid copying FP state from init_task
um: properly align signal stack on x86_64
um: fix execve stub execution on old host OSs

Bibo Mao (1):
LoongArch: KVM: Fix typo issue about GCFG feature detection

Bjorn Helgaas (1):
PCI: Avoid FLR for Mediatek MT7922 WiFi

Brian Norris (1):
kunit: platform: Resolve 'struct completion' warning

Caleb Sander Mateos (2):
io_uring/uring_cmd: don't assume io_uring_cmd_data layout io_uring/uring_cmd: switch sqe to async_data on EAGAIN

Charles Han (2):
HID: winwing: Add NULL check in winwing_init_led()
HID: multitouch: Add NULL check in mt_input_configured

Chester A. Unal (1):
USB: serial: option: add MeiG Smart SLM828

Chris Brandt (1):
drm: renesas: rz-du: Increase supported resolutions

Christian Gmeiner (1):
drm/v3d: Stop active perfmon if it is being destroyed

Chuyi Zhou (2):
sched_ext: Fix the incorrect bpf_list kfunc API in common.bpf.h.
sched_ext: Use SCX_CALL_OP_TASK in task_tick_scx

Claudiu Beznea (1):
pinctrl: pinconf-generic: Print unsigned value if a format is registered

Dai Ngo (1):
NFSD: fix hang in nfsd4_shutdown_callback

Dan Carpenter (1):
drm/msm/gem: prevent integer overflow in msm_ioctl_gem_submit()

David Sterba (1):
btrfs: rename __get_extent_map() and pass btrfs_inode

David Woodhouse (1):
ptp: vmclock: Add .owner to vmclock_miscdev_fops

Devarsh Thakkar (2):
drm/tidss: Fix race condition while handling interrupt registers drm/tidss: Clear the interrupt status for interrupts being disabled

Dhananjay Ugwekar (5):
cpufreq/amd-pstate: Refactor amd_pstate_epp_reenable() and amd_pstate_epp_offline() cpufreq/amd-pstate: Remove the cppc_state check in offline/online functions cpufreq/amd-pstate: Merge amd_pstate_epp_cpu_offline() and amd_pstate_epp_offline() cpufreq/amd-pstate: Fix cpufreq_policy ref counting cpufreq/amd-pstate: Remove the goto label in amd_pstate_update_limits

Dmitry Baryshkov (1):
drm/msm/dpu1: don't choke on disabling the writeback connector

Edward Adam Davis (1):
media: vidtv: Fix a null-ptr-deref in vidtv_mux_stop_thread

Elson Roy Serrao (1):
usb: roles: set switch registered flag early on

Eric Dumazet (23):
net: fib_rules: annotate data-races around rule->[io]ifindex
ndisc: ndisc_send_redirect() must use dev_get_by_index_rcu()
vrf: use RCU protection in l3mdev_l3_out()
vxlan: check vxlan_vnigroup_init() return value
team: better TEAM_OPTION_TYPE_STRING validation
ipv4: add RCU protection to ip4_dst_hoplimit()
ipv4: use RCU protection in ip_dst_mtu_maybe_forward()
net: add dev_net_rcu() helper
ipv4: use RCU protection in ipv4_default_advmss()
ipv4: use RCU protection in rt_is_expired()
ipv4: use RCU protection in inet_select_addr()
ipv4: use RCU protection in __ip_rt_update_pmtu()
ipv4: icmp: convert to dev_net_rcu()
flow_dissector: use RCU protection to fetch dev_net()
ipv6: use RCU protection in ip6_default_advmss()
ipv6: icmp: convert to dev_net_rcu()
ndisc: use RCU protection in ndisc_alloc_skb()
neighbour: use RCU protection in __neigh_notify()
arp: use RCU protection in arp_xmit()
openvswitch: use RCU protection in ovs_vport_cmd_fill_info()
ndisc: extend RCU protection in ndisc_send_skb()
ipv6: mcast: extend RCU protection in igmp6_send()
ipv6: mcast: add RCU protection to mld_newpack()

Fabio Porcedda (2):
USB: serial: option: add Telit Cinterion FN990B compositions
USB: serial: option: fix Telit Cinterion FN990A name

Fabrice Gasnier (1):
usb: dwc2: gadget: remove of_node reference upon udc_stop

Fedor Pchelkin (1):
can: ctucanfd: handle skb allocation failure

Filipe Manana (2):
btrfs: fix hole expansion when writing at an offset beyond EOF
btrfs: fix stale page cache after race between readahead and direct IO write

Geert Uytterhoeven (2):
ASoC: renesas: SND_SIU_MIGOR should depend on DMADEVICES
genirq: Remove leading space from irq_chip::irq_print_chip() callbacks

Greg Kroah-Hartman (2):
Revert "vfio/platform: check the bounds of read/write syscalls" Linux 6.13.4

Guixin Liu (1):
scsi: ufs: bsg: Set bsg_queue to NULL after removal

Guo Ren (1):
usb: gadget: udc: renesas_usb3: Fix compiler warning

Hans de Goede (2):
ACPI: x86: Add skip i2c clients quirk for Vexia EDU ATLA 10 tablet 5V
ASoC: Intel: bytcr_rt5640: Add DMI quirk for Vexia Edu Atla 10 tablet 5V

Huacai Chen (1):
USB: pci-quirks: Fix HCCPARAMS register error for LS7A EHCI

Imre Deak (1):
drm: Fix DSC BPP increment decoding

Isaac Scott (3):
media: uvcvideo: Implement dual stream quirk to fix loss of usb packets
media: uvcvideo: Add new quirk definition for the Sonix Technology Co. 292a camera
media: uvcvideo: Add Kurokesu C1 PRO camera

Ivan Kokshaysky (3):
alpha: make stack 16-byte aligned (most cases)
alpha: replace hardcoded stack offsets with autogenerated ones
alpha: align stack for page fault and user unaligned trap handlers

Jakub Kicinski (2):
net: ipv6: fix dst ref loops in rpl, seg6 and ioam6 lwtunnels
net: ipv6: fix dst refleaks in rpl, seg6 and ioam6 lwtunnels

Jann Horn (3):
usb: cdc-acm: Check control transfer buffer size before access
usb: cdc-acm: Fix handling of oversized fragments
partitions: mac: fix handling of bogus partition table

Jarkko Nikula (2):
i3c: mipi-i3c-hci: Add Intel specific quirk to ring resuming
i3c: mipi-i3c-hci: Add support for MIPI I3C HCI on PCI bus

Jeff Layton (1):
nfsd: validate the nfsd_serv pointer before calling svc_wake_up

Jens Axboe (4):
io_uring/uring_cmd: remove dead req_has_async_data() check
block: cleanup and fix batch completion adding conditions io_uring/uring_cmd: cleanup struct io_uring_cmd_data layout io_uring/uring_cmd: unconditionally copy SQEs at prep time

Jerome Brunet (1):
regulator: core: let dt properties override driver init_data

Jiang Liu (2):
drm/amdgpu: bail out when failed to load fw in psp_init_cap_microcode() drm/amdgpu: avoid buffer overflow attach in smu_sys_set_pp_table()

Jiasheng Jiang (1):
regmap-irq: Add missing kfree()

Jinghao Jia (2):
samples/hid: remove unnecessary -I flags from libbpf EXTRA_CFLAGS samples/hid: fix broken vmlinux path for VMLINUX_BTF

Johan Hovold (1):
USB: serial: option: drop MeiG Smart defines

John Keeping (2):
usb: gadget: f_midi: fix MIDI Streaming descriptor lengths
serial: 8250: Fix fifo underflow on flush

Jos Wang (1):
usb: typec: tcpm: PSSourceOffTimer timeout in PR_Swap enters ERROR_RECOVERY

Joshua Hay (1):
idpf: call set_real_num_queues in idpf_open

Josua Mayer (1):
Revert "mmc: sdhci_am654: Add sdhci_am654_start_signal_voltage_switch"

Juergen Gross (2):
xen/swiotlb: relax alignment requirements x86/xen: allow larger contiguous memory regions in PV guests

Justin Iurman (4):
include: net: add static inline dst_dev_overhead() to dst.h
net: ipv6: ioam6_iptunnel: mitigate 2-realloc issue
net: ipv6: seg6_iptunnel: mitigate 2-realloc issue
net: ipv6: rpl_iptunnel: mitigate 2-realloc issue

Justin M. Forbes (1):
rust: kbuild: add -fzero-init-padding-bits to bindgen_skip_cflags

Kan Liang (2):
perf/x86/intel: Clean up PEBS-via-PT on hybrid perf/x86/intel: Fix ARCH_PERFMON_NUM_COUNTER_LEAF

Karol Przybylski (1):
drm: zynqmp_dp: Fix integer overflow in zynqmp_dp_rate_get()

Kartik Rajput (1):
soc/tegra: fuse: Update Tegra234 nvmem keepout list

Kees Cook (2):
kbuild: Use -fzero-init-padding-bits=all compiler.h: Move C string helpers into C-only kernel section

Kiran K (1):
Bluetooth: btintel_pcie: Fix a potential race condition

Koichiro Den (1):
selftests: gpio: gpio-sim: Fix missing chip disablements

Konstantin Komarov (2):
fs/ntfs3: Mark inode as bad as soon as error detected in mi_enum_attr() fs/ntfs3: Unify inode corruption marking with _ntfs_bad_inode()

Krzysztof Karas (1):
drm/i915/selftests: avoid using uninitialized context

Krzysztof Kozlowski (2):
firmware: qcom: scm: smc: Handle missing SCM device
can: c_can: fix unbalanced runtime PM disable in error path

Kunihiko Hayashi (1):
spi: sn-f-ospi: Fix division by zero

Lai Jiangshan (1):
workqueue: Put the pwq after detaching the rescuer from the pool

Lei Huang (1):
USB: quirks: add USB_QUIRK_NO_LPM quirk for Teclast dist

Li Lingfeng (1):
nfsd: clear acl_access/acl_default after releasing them

Lorenzo Bianconi (1):
PCI: mediatek-gen3: Avoid PCIe resetting via PERST# for Airoha EN7581 SoC

Lu Baolu (2):
iommu/vt-d: Make intel_iommu_drain_pasid_prq() cover faults for RID
iommu: Fix potential memory leak in iopf_queue_remove_device()

Maksym Planeta (1):
Grab mm lock before grabbing pt lock

Marco Crivellari (1):
LoongArch: Fix idle VS timer enqueue

Marek Vasut (1):
USB: cdc-acm: Fill in Renesas R-Car D3 USB Download mode quirk

Mario Limonciello (2):
gpiolib: acpi: Add a quirk for Acer Nitro ANV14 cpufreq/amd-pstate: convert mutex use to guard()

Masahiro Yamada (2):
tools: fix annoying "mkdir -p ..." logs when building tools in parallel
kbuild: suppress stdout from merge_config for silent builds

Mathias Nyman (1):
USB: Add USB_QUIRK_NO_LPM quirk for sony xperia xz1 smartphone

Maxime Ripard (1):
drm/tests: hdmi: Fix WW_MUTEX_SLOWPATH failures

Michael Margolin (1):
RDMA/efa: Reset device on probe failure

Michal Luczaj (2):
vsock: Keep the binding until socket destruction
vsock: Orphan socket after transport release

Michal Pecio (1):
usb: xhci: Restore xhci_pci support for Renesas HCs

Miguel Ojeda (3):
arm64: rust: clean Rust 1.85.0 warning using softfloat target objtool/rust: add one more noreturn Rust function
rust: rbtree: fix overindented list item

Mike Marshall (1):
orangefs: fix a oob in orangefs_debug_write

Muhammad Adeel (1):
cgroup: Remove steal time from usage_usec

Murad Masimov (1):
ax25: Fix refcount leak caused by setting SO_BINDTODEVICE sockopt

Naman Jain (1):
Drivers: hv: vmbus: Wait for boot-time offers during boot and resume

Nathan Chancellor (2):
scripts/Makefile.extrawarn: Do not show clang's non-kprintf warnings at W=1
arm64: Handle .ARM.attributes section in linker scripts

Naushir Patuck (1):
media: bcm2835-unicam: Disable trigger mode operation

Nicolas Dichtel (1):
rtnetlink: fix netns leak with rtnl_setlink()

Niklas Cassel (1):
PCI: endpoint: Add size check for fixed size BARs in pci_epc_set_bar()

Niklas Schnelle (2):
s390/pci: Pull search for parent PF out of zpci_iov_setup_virtfn() s390/pci: Fix handling of isolated VFs

Nirmoy Das (1):
drm/xe: Carve out wopcm portion from the stolen memory

Oliver Upton (1):
ACPI: GTDT: Relax sanity checking on Platform Timers array count

Patrick Bellasi (1):
x86/cpu/kvm: SRSO: Fix possible missing IBPB on VM-Exit

Pavel Begunkov (2):
io_uring/waitid: don't abuse io_tw_state io_uring/kbuf: reallocate buf lists on upgrade

Radu Rendec (1):
arm64: cacheinfo: Avoid out-of-bounds write to cacheinfo array

Rakesh Babu Saladi (1):
PCI: switchtec: Add Microchip PCI100X device IDs

Ramesh Thomas (1):
vfio/pci: Enable iowrite64 and ioread64 for vfio pci

Remi Pommarel (1):
batman-adv: Fix incorrect offset in batadv_tt_tvlv_ogm_handler_v1()

Rengarajan S (1):
8250: microchip: pci1xxxx: Add workaround for RTS bit toggle

Reyders Morales (1):
Documentation/networking: fix basic node example document ISO 15765-2

Rik van Riel (1):
x86/mm/tlb: Only trim the mm_cpumask once a second

Robin van der Gracht (1):
can: rockchip: rkcanfd_handle_rx_fifo_overflow_int(): bail out if skb cannot be allocated

Roger Quadros (3):
net: ethernet: ti: am65-cpsw: fix memleak in certain XDP cases
net: ethernet: ti: am65-cpsw: fix RX & TX statistics for XDP_TX case
net: ethernet: ti: am65_cpsw: fix tx_cleanup for XDP case

Roy Luo (1):
usb: gadget: core: flush gadget workqueue after device removal

Rupinderjit Singh (1):
gpu: host1x: Fix a use of uninitialized mutex

Sai Teja Pottumuttu (1):
drm/xe/oa/uapi: Make OA buffer size configurable

Sean Christopherson (4):
KVM: x86: Reject Hyper-V's SEND_IPI hypercalls if local APIC isn't in-kernel
KVM: x86: Load DR6 with guest value only before entering .vcpu_run() loop
KVM: nSVM: Enter guest mode before initializing nested NPT MMU perf/x86/intel: Ensure LBRs are disabled when a CPU is starting

Selvarasu Ganesan (2):
usb: gadget: f_midi: Fixing wMaxPacketSize exceeded issue during MIDI bind retries
usb: dwc3: Fix timeout issue during controller enter/exit from halt state

Shakeel Butt (1):
cgroup: fix race between fork and cgroup.kill

Shyam Prasad N (1):
cifs: pick channels for individual subrequests

Song Yoong Siang (1):
igc: Set buffer type for empty frames in igc_init_empty_frame

Sridhar Samudrala (2):
idpf: fix handling rsc packet with a single segment
idpf: record rx queue in skb for RSC packets

Stefan Eichenberger (1):
usb: core: fix pipe creation for get_bMaxPacketSize0

Stephan Gerhold (1):
drm/msm/dpu: fix x1e80100 intf_6 underrun/vsync interrupt

Steven Rostedt (4):
ring-buffer: Unlock resize on mmap error
tracing: Do not allow mmap() of persistent ring buffer
ring-buffer: Validate the persistent meta data subbuf array
ring-buffer: Update pages_touched to reflect persistent buffer content

Stuart Hayhurst (2):
HID: corsair-void: Initialise memory for psy_cfg
HID: corsair-void: Add missing delayed work cancel for headset status

Su Hui (1):
drm/panthor: avoid garbage value in panthor_ioctl_dev_query()

Sven Eckelmann (2):
batman-adv: Ignore neighbor throughput metrics in error case
batman-adv: Drop unmanaged ELP metric worker

Takashi Iwai (1):
PCI/DPC: Quirk PIO log size for Intel Raptor Lake-P

Tejas Upadhyay (1):

      drm/xe/client: bo->client does not need bos_lock

Tejun Heo (3):
sched_ext: Fix incorrect autogroup migration detection
sched_ext: Fix migration disabled handling in targeted dispatches
sched_ext: Fix incorrect assumption about migration disabled tasks in task_can_run_on_remote_rq()

Thomas Hellström (1):
drm/xe/tracing: Fix a potential TP_printk UAF

Thomas Weißschuh (3):
kbuild: userprogs: fix bitsize and target detection on clang
ptp: vmclock: Don't unregister misc device if it was not registered
ptp: vmclock: Set driver data before its usage

Tomas Glozar (2):
rtla/timerlat_hist: Abort event processing on second signal rtla/timerlat_top: Abort event processing on second signal

Tomi Valkeinen (4):
media: i2c: ds90ub913: Add error handling to ub913_hw_init()
media: i2c: ds90ub953: Add error handling for i2c reads/writes drm/tidss: Fix issue in irq handling causing irq-flood issue drm/rcar-du: dsi: Fix PHY lock bit check

Tulio Fernandes (1):
HID: hid-thrustmaster: fix stack-out-of-bounds read in usb_check_int_endpoints()

Varadarajan Narayanan (2):
soc: qcom: llcc: Update configuration data for IPQ5424
regulator: qcom_smd: Add l2, l5 sub-node to mp5496 regulator

Vasant Hegde (1):
iommu/amd: Expicitly enable CNTRL.EPHEn bit in resume path

Vicki Pfau (3):
HID: hid-steam: Don't use cancel_delayed_work_sync in IRQ context
HID: hid-steam: Make sure rumble work is canceled on removal
HID: hid-steam: Move hidraw input (un)registering to work

Vincent Mailhol (1):

      can: etas_es58x: fix potential NULL pointer dereference on udev->serial

Waiman Long (2):
clocksource: Use pr_info() for "Checking clocksource synchronization" message
clocksource: Use migrate_disable() to avoid calling get_random_u32() in atomic context

Wentao Liang (2):
gpio: stmpe: Check return value of stmpe_reg_read in stmpe_gpio_irq_sync_unlock
mlxsw: Add return value check for mlxsw_sp_port_get_stats_raw()

Yuli Wang (1):
LoongArch: csum: Fix OoB access in IP checksum code for negative lengths

Zdenek Bouska (1):
igc: Fix HW RX timestamp when passed by ZC XDP

Zhang Rui (1):
thermal/netlink: Prevent userspace segmentation fault by adjusting UAPI header

Zhu Lingshan (1):
amdkfd: properly free gang_ctx_bo when failed to init user queue

Zichen Xie (1):
NFS: Fix potential buffer overflowin nfs_sysfs_link_rpc_client()

author maintainer
#1 lore raw
Documentation/devicetree/bindings/regulator/qcom,smd-rpm-regulator.yaml +1 -1
index f2fd2df68a9e..b7241ce975b9 100644
@@ -22,7 +22,7 @@ description:
   Each sub-node is identified using the node's name, with valid values listed
   for each of the pmics below.
 
-  For mp5496, s1, s2
+  For mp5496, s1, s2, l2, l5
 
   For pm2250, s1, s2, s3, s4, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11,
   l12, l13, l14, l15, l16, l17, l18, l19, l20, l21, l22
Documentation/networking/iso15765-2.rst +2 -2
index 0e9d96074178..37ebb2c417cb 100644
@@ -369,8 +369,8 @@ to their default.
 
   addr.can_family = AF_CAN;
   addr.can_ifindex = if_nametoindex("can0");
-  addr.tp.tx_id = 0x18DA42F1 | CAN_EFF_FLAG;
-  addr.tp.rx_id = 0x18DAF142 | CAN_EFF_FLAG;
+  addr.can_addr.tp.tx_id = 0x18DA42F1 | CAN_EFF_FLAG;
+  addr.can_addr.tp.rx_id = 0x18DAF142 | CAN_EFF_FLAG;
 
   ret = bind(s, (struct sockaddr *)&addr, sizeof(addr));
   if (ret < 0)
Makefile +5 -10
index 423d087afad2..c436a6e64971 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 6
 PATCHLEVEL = 13
-SUBLEVEL = 3
+SUBLEVEL = 4
 EXTRAVERSION =
 NAME = Baby Opossum Posse
 
@@ -1119,8 +1119,8 @@ LDFLAGS_vmlinux += --orphan-handling=$(CONFIG_LD_ORPHAN_WARN_LEVEL)
 endif
 
 # Align the bit size of userspace programs with the kernel
-KBUILD_USERCFLAGS  += $(filter -m32 -m64 --target=%, $(KBUILD_CFLAGS))
-KBUILD_USERLDFLAGS += $(filter -m32 -m64 --target=%, $(KBUILD_CFLAGS))
+KBUILD_USERCFLAGS  += $(filter -m32 -m64 --target=%, $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS))
+KBUILD_USERLDFLAGS += $(filter -m32 -m64 --target=%, $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS))
 
 # make the checker run with the right architecture
 CHECKFLAGS += --arch=$(ARCH)
@@ -1416,18 +1416,13 @@ ifneq ($(wildcard $(resolve_btfids_O)),)
 	$(Q)$(MAKE) -sC $(srctree)/tools/bpf/resolve_btfids O=$(resolve_btfids_O) clean
 endif
 
-# Clear a bunch of variables before executing the submake
-ifeq ($(quiet),silent_)
-tools_silent=s
-endif
-
 tools/: FORCE
 	$(Q)mkdir -p $(objtree)/tools
-	$(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(tools_silent) $(filter --j% -j,$(MAKEFLAGS))" O=$(abspath $(objtree)) subdir=tools -C $(srctree)/tools/
+	$(Q)$(MAKE) LDFLAGS= O=$(abspath $(objtree)) subdir=tools -C $(srctree)/tools/
 
 tools/%: FORCE
 	$(Q)mkdir -p $(objtree)/tools
-	$(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(tools_silent) $(filter --j% -j,$(MAKEFLAGS))" O=$(abspath $(objtree)) subdir=tools -C $(srctree)/tools/ $*
+	$(Q)$(MAKE) LDFLAGS= O=$(abspath $(objtree)) subdir=tools -C $(srctree)/tools/ $*
 
 # ---------------------------------------------------------------------------
 # Kernel selftest
arch/alpha/include/uapi/asm/ptrace.h +2 -0
index 5ca45934fcbb..72ed913a910f 100644
@@ -42,6 +42,8 @@ struct pt_regs {
 	unsigned long trap_a0;
 	unsigned long trap_a1;
 	unsigned long trap_a2;
+/* This makes the stack 16-byte aligned as GCC expects */
+	unsigned long __pad0;
 /* These are saved by PAL-code: */
 	unsigned long ps;
 	unsigned long pc;
arch/alpha/kernel/asm-offsets.c +4 -0
index 4cfeae42c79a..e9dad60b147f 100644
@@ -19,9 +19,13 @@ static void __used foo(void)
 	DEFINE(TI_STATUS, offsetof(struct thread_info, status));
 	BLANK();
 
+	DEFINE(SP_OFF, offsetof(struct pt_regs, ps));
 	DEFINE(SIZEOF_PT_REGS, sizeof(struct pt_regs));
 	BLANK();
 
+	DEFINE(SWITCH_STACK_SIZE, sizeof(struct switch_stack));
+	BLANK();
+
 	DEFINE(HAE_CACHE, offsetof(struct alpha_machine_vector, hae_cache));
 	DEFINE(HAE_REG, offsetof(struct alpha_machine_vector, hae_register));
 }
arch/alpha/kernel/entry.S +10 -14
index dd26062d75b3..f4d41b4538c2 100644
@@ -15,10 +15,6 @@
 	.set noat
 	.cfi_sections	.debug_frame
 
-/* Stack offsets.  */
-#define SP_OFF			184
-#define SWITCH_STACK_SIZE	64
-
 .macro	CFI_START_OSF_FRAME	func
 	.align	4
 	.globl	\func
@@ -198,8 +194,8 @@ CFI_END_OSF_FRAME entArith
 CFI_START_OSF_FRAME entMM
 	SAVE_ALL
 /* save $9 - $15 so the inline exception code can manipulate them.  */
-	subq	$sp, 56, $sp
-	.cfi_adjust_cfa_offset	56
+	subq	$sp, 64, $sp
+	.cfi_adjust_cfa_offset	64
 	stq	$9, 0($sp)
 	stq	$10, 8($sp)
 	stq	$11, 16($sp)
@@ -214,7 +210,7 @@ CFI_START_OSF_FRAME entMM
 	.cfi_rel_offset	$13, 32
 	.cfi_rel_offset	$14, 40
 	.cfi_rel_offset	$15, 48
-	addq	$sp, 56, $19
+	addq	$sp, 64, $19
 /* handle the fault */
 	lda	$8, 0x3fff
 	bic	$sp, $8, $8
@@ -227,7 +223,7 @@ CFI_START_OSF_FRAME entMM
 	ldq	$13, 32($sp)
 	ldq	$14, 40($sp)
 	ldq	$15, 48($sp)
-	addq	$sp, 56, $sp
+	addq	$sp, 64, $sp
 	.cfi_restore	$9
 	.cfi_restore	$10
 	.cfi_restore	$11
@@ -235,7 +231,7 @@ CFI_START_OSF_FRAME entMM
 	.cfi_restore	$13
 	.cfi_restore	$14
 	.cfi_restore	$15
-	.cfi_adjust_cfa_offset	-56
+	.cfi_adjust_cfa_offset	-64
 /* finish up the syscall as normal.  */
 	br	ret_from_sys_call
 CFI_END_OSF_FRAME entMM
@@ -382,8 +378,8 @@ entUnaUser:
 	.cfi_restore	$0
 	.cfi_adjust_cfa_offset	-256
 	SAVE_ALL		/* setup normal kernel stack */
-	lda	$sp, -56($sp)
-	.cfi_adjust_cfa_offset	56
+	lda	$sp, -64($sp)
+	.cfi_adjust_cfa_offset	64
 	stq	$9, 0($sp)
 	stq	$10, 8($sp)
 	stq	$11, 16($sp)
@@ -399,7 +395,7 @@ entUnaUser:
 	.cfi_rel_offset	$14, 40
 	.cfi_rel_offset	$15, 48
 	lda	$8, 0x3fff
-	addq	$sp, 56, $19
+	addq	$sp, 64, $19
 	bic	$sp, $8, $8
 	jsr	$26, do_entUnaUser
 	ldq	$9, 0($sp)
@@ -409,7 +405,7 @@ entUnaUser:
 	ldq	$13, 32($sp)
 	ldq	$14, 40($sp)
 	ldq	$15, 48($sp)
-	lda	$sp, 56($sp)
+	lda	$sp, 64($sp)
 	.cfi_restore	$9
 	.cfi_restore	$10
 	.cfi_restore	$11
@@ -417,7 +413,7 @@ entUnaUser:
 	.cfi_restore	$13
 	.cfi_restore	$14
 	.cfi_restore	$15
-	.cfi_adjust_cfa_offset	-56
+	.cfi_adjust_cfa_offset	-64
 	br	ret_from_sys_call
 CFI_END_OSF_FRAME entUna
 
arch/alpha/kernel/traps.c +1 -1
index a9a38c80c4a7..7004397937cf 100644
@@ -649,7 +649,7 @@ s_reg_to_mem (unsigned long s_reg)
 static int unauser_reg_offsets[32] = {
 	R(r0), R(r1), R(r2), R(r3), R(r4), R(r5), R(r6), R(r7), R(r8),
 	/* r9 ... r15 are stored in front of regs.  */
-	-56, -48, -40, -32, -24, -16, -8,
+	-64, -56, -48, -40, -32, -24, -16,	/* padding at -8 */
 	R(r16), R(r17), R(r18),
 	R(r19), R(r20), R(r21), R(r22), R(r23), R(r24), R(r25), R(r26),
 	R(r27), R(r28), R(gp),
arch/alpha/mm/fault.c +2 -2
index 8c9850437e67..a9816bbc9f34 100644
@@ -78,8 +78,8 @@ __load_new_mm_context(struct mm_struct *next_mm)
 
 /* Macro for exception fixup code to access integer registers.  */
 #define dpf_reg(r)							\
-	(((unsigned long *)regs)[(r) <= 8 ? (r) : (r) <= 15 ? (r)-16 :	\
-				 (r) <= 18 ? (r)+10 : (r)-10])
+	(((unsigned long *)regs)[(r) <= 8 ? (r) : (r) <= 15 ? (r)-17 :	\
+				 (r) <= 18 ? (r)+11 : (r)-10])
 
 asmlinkage void
 do_page_fault(unsigned long address, unsigned long mmcsr,
arch/arm64/Makefile +4 -0
index 358c68565bfd..2b25d671365f 100644
@@ -48,7 +48,11 @@ KBUILD_CFLAGS	+= $(CC_FLAGS_NO_FPU) \
 KBUILD_CFLAGS	+= $(call cc-disable-warning, psabi)
 KBUILD_AFLAGS	+= $(compat_vdso)
 
+ifeq ($(call test-ge, $(CONFIG_RUSTC_VERSION), 108500),y)
+KBUILD_RUSTFLAGS += --target=aarch64-unknown-none-softfloat
+else
 KBUILD_RUSTFLAGS += --target=aarch64-unknown-none -Ctarget-feature="-neon"
+endif
 
 KBUILD_CFLAGS	+= $(call cc-option,-mabi=lp64)
 KBUILD_AFLAGS	+= $(call cc-option,-mabi=lp64)
arch/arm64/kernel/cacheinfo.c +7 -5
index d9c9218fa1fd..309942b06c5b 100644
@@ -101,16 +101,18 @@ int populate_cache_leaves(unsigned int cpu)
 	unsigned int level, idx;
 	enum cache_type type;
 	struct cpu_cacheinfo *this_cpu_ci = get_cpu_cacheinfo(cpu);
-	struct cacheinfo *this_leaf = this_cpu_ci->info_list;
+	struct cacheinfo *infos = this_cpu_ci->info_list;
 
 	for (idx = 0, level = 1; level <= this_cpu_ci->num_levels &&
-	     idx < this_cpu_ci->num_leaves; idx++, level++) {
+	     idx < this_cpu_ci->num_leaves; level++) {
 		type = get_cache_type(level);
 		if (type == CACHE_TYPE_SEPARATE) {
-			ci_leaf_init(this_leaf++, CACHE_TYPE_DATA, level);
-			ci_leaf_init(this_leaf++, CACHE_TYPE_INST, level);
+			if (idx + 1 >= this_cpu_ci->num_leaves)
+				break;
+			ci_leaf_init(&infos[idx++], CACHE_TYPE_DATA, level);
+			ci_leaf_init(&infos[idx++], CACHE_TYPE_INST, level);
 		} else {
-			ci_leaf_init(this_leaf++, type, level);
+			ci_leaf_init(&infos[idx++], type, level);
 		}
 	}
 	return 0;
arch/arm64/kernel/vdso/vdso.lds.S +1 -0
index 4ec32e86a8da..47ad6944f9f0 100644
@@ -41,6 +41,7 @@ SECTIONS
 	 */
 	/DISCARD/	: {
 		*(.note.GNU-stack .note.gnu.property)
+		*(.ARM.attributes)
 	}
 	.note		: { *(.note.*) }		:text	:note
 
arch/arm64/kernel/vmlinux.lds.S +1 -0
index f84c71f04d9e..e73326bd3ff7 100644
@@ -162,6 +162,7 @@ SECTIONS
 	/DISCARD/ : {
 		*(.interp .dynamic)
 		*(.dynsym .dynstr .hash .gnu.hash)
+		*(.ARM.attributes)
 	}
 
 	. = KIMAGE_VADDR;
arch/loongarch/kernel/genex.S +15 -13
index 86d5d90ebefe..4f0912141781 100644
@@ -18,16 +18,19 @@
 
 	.align	5
 SYM_FUNC_START(__arch_cpu_idle)
-	/* start of rollback region */
-	LONG_L	t0, tp, TI_FLAGS
-	nop
-	andi	t0, t0, _TIF_NEED_RESCHED
-	bnez	t0, 1f
-	nop
-	nop
-	nop
+	/* start of idle interrupt region */
+	ori	t0, zero, CSR_CRMD_IE
+	/* idle instruction needs irq enabled */
+	csrxchg	t0, t0, LOONGARCH_CSR_CRMD
+	/*
+	 * If an interrupt lands here; between enabling interrupts above and
+	 * going idle on the next instruction, we must *NOT* go idle since the
+	 * interrupt could have set TIF_NEED_RESCHED or caused an timer to need
+	 * reprogramming. Fall through -- see handle_vint() below -- and have
+	 * the idle loop take care of things.
+	 */
 	idle	0
-	/* end of rollback region */
+	/* end of idle interrupt region */
 1:	jr	ra
 SYM_FUNC_END(__arch_cpu_idle)
 
@@ -35,11 +38,10 @@ SYM_CODE_START(handle_vint)
 	UNWIND_HINT_UNDEFINED
 	BACKUP_T0T1
 	SAVE_ALL
-	la_abs	t1, __arch_cpu_idle
+	la_abs	t1, 1b
 	LONG_L	t0, sp, PT_ERA
-	/* 32 byte rollback region */
-	ori	t0, t0, 0x1f
-	xori	t0, t0, 0x1f
+	/* 3 instructions idle interrupt region */
+	ori	t0, t0, 0b1100
 	bne	t0, t1, 1f
 	LONG_S	t0, sp, PT_ERA
 1:	move	a0, sp
arch/loongarch/kernel/idle.c +1 -2
index 0b5dd2faeb90..54b247d8cdb6 100644
@@ -11,7 +11,6 @@
 
 void __cpuidle arch_cpu_idle(void)
 {
-	raw_local_irq_enable();
-	__arch_cpu_idle(); /* idle instruction needs irq enabled */
+	__arch_cpu_idle();
 	raw_local_irq_disable();
 }
arch/loongarch/kernel/reset.c +3 -3
index 1ef8c6383535..de8fa5a8a825 100644
@@ -33,7 +33,7 @@ void machine_halt(void)
 	console_flush_on_panic(CONSOLE_FLUSH_PENDING);
 
 	while (true) {
-		__arch_cpu_idle();
+		__asm__ __volatile__("idle 0" : : : "memory");
 	}
 }
 
@@ -53,7 +53,7 @@ void machine_power_off(void)
 #endif
 
 	while (true) {
-		__arch_cpu_idle();
+		__asm__ __volatile__("idle 0" : : : "memory");
 	}
 }
 
@@ -74,6 +74,6 @@ void machine_restart(char *command)
 		acpi_reboot();
 
 	while (true) {
-		__arch_cpu_idle();
+		__asm__ __volatile__("idle 0" : : : "memory");
 	}
 }
arch/loongarch/kvm/main.c +2 -2
index 396fed2665a5..034402e0948c 100644
@@ -285,9 +285,9 @@ int kvm_arch_enable_virtualization_cpu(void)
 	 * TOE=0:       Trap on Exception.
 	 * TIT=0:       Trap on Timer.
 	 */
-	if (env & CSR_GCFG_GCIP_ALL)
+	if (env & CSR_GCFG_GCIP_SECURE)
 		gcfg |= CSR_GCFG_GCI_SECURE;
-	if (env & CSR_GCFG_MATC_ROOT)
+	if (env & CSR_GCFG_MATP_ROOT)
 		gcfg |= CSR_GCFG_MATC_ROOT;
 
 	write_csr_gcfg(gcfg);
arch/loongarch/lib/csum.c +1 -1
index a5e84b403c3b..df309ae4045d 100644
@@ -25,7 +25,7 @@ unsigned int __no_sanitize_address do_csum(const unsigned char *buff, int len)
 	const u64 *ptr;
 	u64 data, sum64 = 0;
 
-	if (unlikely(len == 0))
+	if (unlikely(len <= 0))
 		return 0;
 
 	offset = (unsigned long)buff & 7;
arch/powerpc/sysdev/fsl_msi.c +1 -1
index 1aa0cb097c9c..7b9a5ea9cad9 100644
@@ -75,7 +75,7 @@ static void fsl_msi_print_chip(struct irq_data *irqd, struct seq_file *p)
 	srs = (hwirq >> msi_data->srs_shift) & MSI_SRS_MASK;
 	cascade_virq = msi_data->cascade_array[srs]->virq;
 
-	seq_printf(p, " fsl-msi-%d", cascade_virq);
+	seq_printf(p, "fsl-msi-%d", cascade_virq);
 }
 
 
arch/s390/pci/pci_bus.c +20 -0
index 857afbc4828f..39a481ec4a40 100644
@@ -331,6 +331,17 @@ static int zpci_bus_add_device(struct zpci_bus *zbus, struct zpci_dev *zdev)
 	return rc;
 }
 
+static bool zpci_bus_is_isolated_vf(struct zpci_bus *zbus, struct zpci_dev *zdev)
+{
+	struct pci_dev *pdev;
+
+	pdev = zpci_iov_find_parent_pf(zbus, zdev);
+	if (!pdev)
+		return true;
+	pci_dev_put(pdev);
+	return false;
+}
+
 int zpci_bus_device_register(struct zpci_dev *zdev, struct pci_ops *ops)
 {
 	bool topo_is_tid = zdev->tid_avail;
@@ -345,6 +356,15 @@ int zpci_bus_device_register(struct zpci_dev *zdev, struct pci_ops *ops)
 
 	topo = topo_is_tid ? zdev->tid : zdev->pchid;
 	zbus = zpci_bus_get(topo, topo_is_tid);
+	/*
+	 * An isolated VF gets its own domain/bus even if there exists
+	 * a matching domain/bus already
+	 */
+	if (zbus && zpci_bus_is_isolated_vf(zbus, zdev)) {
+		zpci_bus_put(zbus);
+		zbus = NULL;
+	}
+
 	if (!zbus) {
 		zbus = zpci_bus_alloc(topo, topo_is_tid);
 		if (!zbus)
arch/s390/pci/pci_iov.c +42 -14

75 lines not on this page · raw message

arch/s390/pci/pci_iov.h +7 -0
index e3fa4e77fc86..d2c2793eb0f3 100644
@@ -19,6 +19,8 @@ void zpci_iov_map_resources(struct pci_dev *pdev);
 
 int zpci_iov_setup_virtfn(struct zpci_bus *zbus, struct pci_dev *virtfn, int vfn);
 
+struct pci_dev *zpci_iov_find_parent_pf(struct zpci_bus *zbus, struct zpci_dev *zdev);
+
 #else /* CONFIG_PCI_IOV */
 static inline void zpci_iov_remove_virtfn(struct pci_dev *pdev, int vfn) {}
 
@@ -28,5 +30,10 @@ static inline int zpci_iov_setup_virtfn(struct zpci_bus *zbus, struct pci_dev *v
 {
 	return 0;
 }
+
+static inline struct pci_dev *zpci_iov_find_parent_pf(struct zpci_bus *zbus, struct zpci_dev *zdev)
+{
+	return NULL;
+}
 #endif /* CONFIG_PCI_IOV */
 #endif /* __S390_PCI_IOV_h */
arch/um/kernel/process.c +9 -1
index 30bdc0a87dc8..3a67ba8aa62d 100644
@@ -191,7 +191,15 @@ void initial_thread_cb(void (*proc)(void *), void *arg)
 int arch_dup_task_struct(struct task_struct *dst,
 			 struct task_struct *src)
 {
-	memcpy(dst, src, arch_task_struct_size);
+	/* init_task is not dynamically sized (missing FPU state) */
+	if (unlikely(src == &init_task)) {
+		memcpy(dst, src, sizeof(init_task));
+		memset((void *)dst + sizeof(init_task), 0,
+		       arch_task_struct_size - sizeof(init_task));
+	} else {
+		memcpy(dst, src, arch_task_struct_size);
+	}
+
 	return 0;
 }
 
arch/um/os-Linux/skas/process.c +13 -3
index f683cfc9e51a..e2f8f156402f 100644
@@ -181,6 +181,10 @@ extern char __syscall_stub_start[];
 
 static int stub_exe_fd;
 
+#ifndef CLOSE_RANGE_CLOEXEC
+#define CLOSE_RANGE_CLOEXEC	(1U << 2)
+#endif
+
 static int userspace_tramp(void *stack)
 {
 	char *const argv[] = { "uml-userspace", NULL };
@@ -202,8 +206,12 @@ static int userspace_tramp(void *stack)
 	init_data.stub_data_fd = phys_mapping(uml_to_phys(stack), &offset);
 	init_data.stub_data_offset = MMAP_OFFSET(offset);
 
-	/* Set CLOEXEC on all FDs and then unset on all memory related FDs */
-	close_range(0, ~0U, CLOSE_RANGE_CLOEXEC);
+	/*
+	 * Avoid leaking unneeded FDs to the stub by setting CLOEXEC on all FDs
+	 * and then unsetting it on all memory related FDs.
+	 * This is not strictly necessary from a safety perspective.
+	 */
+	syscall(__NR_close_range, 0, ~0U, CLOSE_RANGE_CLOEXEC);
 
 	fcntl(init_data.stub_data_fd, F_SETFD, 0);
 	for (iomem = iomem_regions; iomem; iomem = iomem->next)
@@ -224,7 +232,9 @@ static int userspace_tramp(void *stack)
 	if (ret != sizeof(init_data))
 		exit(4);
 
-	execveat(stub_exe_fd, "", argv, NULL, AT_EMPTY_PATH);
+	/* Raw execveat for compatibility with older libc versions */
+	syscall(__NR_execveat, stub_exe_fd, (unsigned long)"",
+		(unsigned long)argv, NULL, AT_EMPTY_PATH);
 
 	exit(5);
 }
arch/x86/Kconfig +2 -1
index ef6cfea9df73..c2fb8fe86a45 100644
@@ -2593,7 +2593,8 @@ config MITIGATION_IBPB_ENTRY
 	depends on CPU_SUP_AMD && X86_64
 	default y
 	help
-	  Compile the kernel with support for the retbleed=ibpb mitigation.
+	  Compile the kernel with support for the retbleed=ibpb and
+	  spec_rstack_overflow={ibpb,ibpb-vmexit} mitigations.
 
 config MITIGATION_IBRS_ENTRY
 	bool "Enable IBRS on kernel entry"
arch/x86/events/intel/core.c +14 -19
index 99c590da0ae2..b1855a46b2ad 100644
@@ -4887,20 +4887,22 @@ static inline bool intel_pmu_broken_perf_cap(void)
 
 static void update_pmu_cap(struct x86_hybrid_pmu *pmu)
 {
-	unsigned int sub_bitmaps, eax, ebx, ecx, edx;
+	unsigned int cntr, fixed_cntr, ecx, edx;
+	union cpuid35_eax eax;
+	union cpuid35_ebx ebx;
 
-	cpuid(ARCH_PERFMON_EXT_LEAF, &sub_bitmaps, &ebx, &ecx, &edx);
+	cpuid(ARCH_PERFMON_EXT_LEAF, &eax.full, &ebx.full, &ecx, &edx);
 
-	if (ebx & ARCH_PERFMON_EXT_UMASK2)
+	if (ebx.split.umask2)
 		pmu->config_mask |= ARCH_PERFMON_EVENTSEL_UMASK2;
-	if (ebx & ARCH_PERFMON_EXT_EQ)
+	if (ebx.split.eq)
 		pmu->config_mask |= ARCH_PERFMON_EVENTSEL_EQ;
 
-	if (sub_bitmaps & ARCH_PERFMON_NUM_COUNTER_LEAF_BIT) {
+	if (eax.split.cntr_subleaf) {
 		cpuid_count(ARCH_PERFMON_EXT_LEAF, ARCH_PERFMON_NUM_COUNTER_LEAF,
-			    &eax, &ebx, &ecx, &edx);
-		pmu->cntr_mask64 = eax;
-		pmu->fixed_cntr_mask64 = ebx;
+			    &cntr, &fixed_cntr, &ecx, &edx);
+		pmu->cntr_mask64 = cntr;
+		pmu->fixed_cntr_mask64 = fixed_cntr;
 	}
 
 	if (!intel_pmu_broken_perf_cap()) {
@@ -4923,11 +4925,6 @@ static void intel_pmu_check_hybrid_pmus(struct x86_hybrid_pmu *pmu)
 	else
 		pmu->intel_ctrl &= ~(1ULL << GLOBAL_CTRL_EN_PERF_METRICS);
 
-	if (pmu->intel_cap.pebs_output_pt_available)
-		pmu->pmu.capabilities |= PERF_PMU_CAP_AUX_OUTPUT;
-	else
-		pmu->pmu.capabilities &= ~PERF_PMU_CAP_AUX_OUTPUT;
-
 	intel_pmu_check_event_constraints(pmu->event_constraints,
 					  pmu->cntr_mask64,
 					  pmu->fixed_cntr_mask64,
@@ -5005,9 +5002,6 @@ static bool init_hybrid_pmu(int cpu)
 
 	pr_info("%s PMU driver: ", pmu->name);
 
-	if (pmu->intel_cap.pebs_output_pt_available)
-		pr_cont("PEBS-via-PT ");
-
 	pr_cont("\n");
 
 	x86_pmu_show_pmu_cap(&pmu->pmu);
@@ -5030,8 +5024,11 @@ static void intel_pmu_cpu_starting(int cpu)
 
 	init_debug_store_on_cpu(cpu);
 	/*
-	 * Deal with CPUs that don't clear their LBRs on power-up.
+	 * Deal with CPUs that don't clear their LBRs on power-up, and that may
+	 * even boot with LBRs enabled.
 	 */
+	if (!static_cpu_has(X86_FEATURE_ARCH_LBR) && x86_pmu.lbr_nr)
+		msr_clear_bit(MSR_IA32_DEBUGCTLMSR, DEBUGCTLMSR_LBR_BIT);
 	intel_pmu_lbr_reset();
 
 	cpuc->lbr_sel = NULL;
@@ -6362,11 +6359,9 @@ static __always_inline int intel_pmu_init_hybrid(enum hybrid_pmu_type pmus)
 		pmu->intel_cap.capabilities = x86_pmu.intel_cap.capabilities;
 		if (pmu->pmu_type & hybrid_small_tiny) {
 			pmu->intel_cap.perf_metrics = 0;
-			pmu->intel_cap.pebs_output_pt_available = 1;
 			pmu->mid_ack = true;
 		} else if (pmu->pmu_type & hybrid_big) {
 			pmu->intel_cap.perf_metrics = 1;
-			pmu->intel_cap.pebs_output_pt_available = 0;
 			pmu->late_ack = true;
 		}
 	}
arch/x86/events/intel/ds.c +9 -1
index 6ba6549f26fa..cb0eca734789 100644
@@ -2544,7 +2544,15 @@ void __init intel_ds_init(void)
 			}
 			pr_cont("PEBS fmt4%c%s, ", pebs_type, pebs_qual);
 
-			if (!is_hybrid() && x86_pmu.intel_cap.pebs_output_pt_available) {
+			/*
+			 * The PEBS-via-PT is not supported on hybrid platforms,
+			 * because not all CPUs of a hybrid machine support it.
+			 * The global x86_pmu.intel_cap, which only contains the
+			 * common capabilities, is used to check the availability
+			 * of the feature. The per-PMU pebs_output_pt_available
+			 * in a hybrid machine should be ignored.
+			 */
+			if (x86_pmu.intel_cap.pebs_output_pt_available) {
 				pr_cont("PEBS-via-PT, ");
 				x86_get_pmu(smp_processor_id())->capabilities |= PERF_PMU_CAP_AUX_OUTPUT;
 			}
arch/x86/include/asm/kvm-x86-ops.h +1 -0
index 5aff7222e40f..14dbed976e42 100644
@@ -48,6 +48,7 @@ KVM_X86_OP(set_idt)
 KVM_X86_OP(get_gdt)
 KVM_X86_OP(set_gdt)
 KVM_X86_OP(sync_dirty_debug_regs)
+KVM_X86_OP(set_dr6)
 KVM_X86_OP(set_dr7)
 KVM_X86_OP(cache_reg)
 KVM_X86_OP(get_rflags)
arch/x86/include/asm/kvm_host.h +1 -0
index c1043f8c9b03..76bfeb03c041 100644
@@ -1674,6 +1674,7 @@ struct kvm_x86_ops {
 	void (*get_gdt)(struct kvm_vcpu *vcpu, struct desc_ptr *dt);
 	void (*set_gdt)(struct kvm_vcpu *vcpu, struct desc_ptr *dt);
 	void (*sync_dirty_debug_regs)(struct kvm_vcpu *vcpu);
+	void (*set_dr6)(struct kvm_vcpu *vcpu, unsigned long value);
 	void (*set_dr7)(struct kvm_vcpu *vcpu, unsigned long value);
 	void (*cache_reg)(struct kvm_vcpu *vcpu, enum kvm_reg reg);
 	unsigned long (*get_rflags)(struct kvm_vcpu *vcpu);
arch/x86/include/asm/mmu.h +2 -0
index ce4677b8b735..3b496cdcb74b 100644
@@ -37,6 +37,8 @@ typedef struct {
 	 */
 	atomic64_t tlb_gen;
 
+	unsigned long next_trim_cpumask;
+
 #ifdef CONFIG_MODIFY_LDT_SYSCALL
 	struct rw_semaphore	ldt_usr_sem;
 	struct ldt_struct	*ldt;
arch/x86/include/asm/mmu_context.h +1 -0
index 2886cb668d7f..795fdd53bd0a 100644
@@ -151,6 +151,7 @@ static inline int init_new_context(struct task_struct *tsk,
 
 	mm->context.ctx_id = atomic64_inc_return(&last_mm_ctx_id);
 	atomic64_set(&mm->context.tlb_gen, 0);
+	mm->context.next_trim_cpumask = jiffies + HZ;
 
 #ifdef CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS
 	if (cpu_feature_enabled(X86_FEATURE_OSPKE)) {
arch/x86/include/asm/msr-index.h +2 -1
index 3ae84c3b8e6d..61e991507353 100644
@@ -395,7 +395,8 @@
 #define MSR_IA32_PASID_VALID		BIT_ULL(31)
 
 /* DEBUGCTLMSR bits (others vary by model): */
-#define DEBUGCTLMSR_LBR			(1UL <<  0) /* last branch recording */
+#define DEBUGCTLMSR_LBR_BIT		0	     /* last branch recording */
+#define DEBUGCTLMSR_LBR			(1UL <<  DEBUGCTLMSR_LBR_BIT)
 #define DEBUGCTLMSR_BTF_SHIFT		1
 #define DEBUGCTLMSR_BTF			(1UL <<  1) /* single-step on branches */
 #define DEBUGCTLMSR_BUS_LOCK_DETECT	(1UL <<  2)
arch/x86/include/asm/perf_event.h +25 -3
index d95f902acc52..f996a32ca788 100644
@@ -187,11 +187,33 @@ union cpuid10_edx {
  * detection/enumeration details:
  */
 #define ARCH_PERFMON_EXT_LEAF			0x00000023
-#define ARCH_PERFMON_EXT_UMASK2			0x1
-#define ARCH_PERFMON_EXT_EQ			0x2
-#define ARCH_PERFMON_NUM_COUNTER_LEAF_BIT	0x1
 #define ARCH_PERFMON_NUM_COUNTER_LEAF		0x1
 
+union cpuid35_eax {
+	struct {
+		unsigned int	leaf0:1;
+		/* Counters Sub-Leaf */
+		unsigned int    cntr_subleaf:1;
+		/* Auto Counter Reload Sub-Leaf */
+		unsigned int    acr_subleaf:1;
+		/* Events Sub-Leaf */
+		unsigned int    events_subleaf:1;
+		unsigned int	reserved:28;
+	} split;
+	unsigned int            full;
+};
+
+union cpuid35_ebx {
+	struct {
+		/* UnitMask2 Supported */
+		unsigned int    umask2:1;
+		/* EQ-bit Supported */
+		unsigned int    eq:1;
+		unsigned int	reserved:30;
+	} split;
+	unsigned int            full;
+};
+
 /*
  * Intel Architectural LBR CPUID detection/enumeration details:
  */
arch/x86/include/asm/tlbflush.h +1 -0
index 69e79fff41b8..02fc2aa06e9e 100644
@@ -222,6 +222,7 @@ struct flush_tlb_info {
 	unsigned int		initiating_cpu;
 	u8			stride_shift;
 	u8			freed_tables;
+	u8			trim_cpumask;
 };
 
 void flush_tlb_local(void);
arch/x86/kernel/cpu/bugs.c +14 -7
index 47a01d4028f6..5fba44a4f988 100644
@@ -1115,6 +1115,8 @@ static void __init retbleed_select_mitigation(void)
 
 	case RETBLEED_MITIGATION_IBPB:
 		setup_force_cpu_cap(X86_FEATURE_ENTRY_IBPB);
+		setup_force_cpu_cap(X86_FEATURE_IBPB_ON_VMEXIT);
+		mitigate_smt = true;
 
 		/*
 		 * IBPB on entry already obviates the need for
@@ -1124,9 +1126,6 @@ static void __init retbleed_select_mitigation(void)
 		setup_clear_cpu_cap(X86_FEATURE_UNRET);
 		setup_clear_cpu_cap(X86_FEATURE_RETHUNK);
 
-		setup_force_cpu_cap(X86_FEATURE_IBPB_ON_VMEXIT);
-		mitigate_smt = true;
-
 		/*
 		 * There is no need for RSB filling: entry_ibpb() ensures
 		 * all predictions, including the RSB, are invalidated,
@@ -2643,6 +2642,7 @@ static void __init srso_select_mitigation(void)
 		if (IS_ENABLED(CONFIG_MITIGATION_IBPB_ENTRY)) {
 			if (has_microcode) {
 				setup_force_cpu_cap(X86_FEATURE_ENTRY_IBPB);
+				setup_force_cpu_cap(X86_FEATURE_IBPB_ON_VMEXIT);
 				srso_mitigation = SRSO_MITIGATION_IBPB;
 
 				/*
@@ -2652,6 +2652,13 @@ static void __init srso_select_mitigation(void)
 				 */
 				setup_clear_cpu_cap(X86_FEATURE_UNRET);
 				setup_clear_cpu_cap(X86_FEATURE_RETHUNK);
+
+				/*
+				 * There is no need for RSB filling: entry_ibpb() ensures
+				 * all predictions, including the RSB, are invalidated,
+				 * regardless of IBPB implementation.
+				 */
+				setup_clear_cpu_cap(X86_FEATURE_RSB_VMEXIT);
 			}
 		} else {
 			pr_err("WARNING: kernel not compiled with MITIGATION_IBPB_ENTRY.\n");
@@ -2659,8 +2666,8 @@ static void __init srso_select_mitigation(void)
 		break;
 
 	case SRSO_CMD_IBPB_ON_VMEXIT:
-		if (IS_ENABLED(CONFIG_MITIGATION_SRSO)) {
-			if (!boot_cpu_has(X86_FEATURE_ENTRY_IBPB) && has_microcode) {
+		if (IS_ENABLED(CONFIG_MITIGATION_IBPB_ENTRY)) {
+			if (has_microcode) {
 				setup_force_cpu_cap(X86_FEATURE_IBPB_ON_VMEXIT);
 				srso_mitigation = SRSO_MITIGATION_IBPB_ON_VMEXIT;
 
@@ -2672,8 +2679,8 @@ static void __init srso_select_mitigation(void)
 				setup_clear_cpu_cap(X86_FEATURE_RSB_VMEXIT);
 			}
 		} else {
-			pr_err("WARNING: kernel not compiled with MITIGATION_SRSO.\n");
-                }
+			pr_err("WARNING: kernel not compiled with MITIGATION_IBPB_ENTRY.\n");
+		}
 		break;
 	default:
 		break;
arch/x86/kvm/hyperv.c +5 -1
index 4f0a94346d00..44c88537448c 100644
@@ -2226,6 +2226,9 @@ static u64 kvm_hv_send_ipi(struct kvm_vcpu *vcpu, struct kvm_hv_hcall *hc)
 	u32 vector;
 	bool all_cpus;
 
+	if (!lapic_in_kernel(vcpu))
+		return HV_STATUS_INVALID_HYPERCALL_INPUT;
+
 	if (hc->code == HVCALL_SEND_IPI) {
 		if (!hc->fast) {
 			if (unlikely(kvm_read_guest(kvm, hc->ingpa, &send_ipi,
@@ -2852,7 +2855,8 @@ int kvm_get_hv_cpuid(struct kvm_vcpu *vcpu, struct kvm_cpuid2 *cpuid,
 			ent->eax |= HV_X64_REMOTE_TLB_FLUSH_RECOMMENDED;
 			ent->eax |= HV_X64_APIC_ACCESS_RECOMMENDED;
 			ent->eax |= HV_X64_RELAXED_TIMING_RECOMMENDED;
-			ent->eax |= HV_X64_CLUSTER_IPI_RECOMMENDED;
+			if (!vcpu || lapic_in_kernel(vcpu))
+				ent->eax |= HV_X64_CLUSTER_IPI_RECOMMENDED;
 			ent->eax |= HV_X64_EX_PROCESSOR_MASKS_RECOMMENDED;
 			if (evmcs_ver)
 				ent->eax |= HV_X64_ENLIGHTENED_VMCS_RECOMMENDED;
arch/x86/kvm/mmu/mmu.c +1 -1
index 74c455193090..e102505735a7 100644
@@ -5524,7 +5524,7 @@ void kvm_init_shadow_npt_mmu(struct kvm_vcpu *vcpu, unsigned long cr0,
 	union kvm_mmu_page_role root_role;
 
 	/* NPT requires CR0.PG=1. */
-	WARN_ON_ONCE(cpu_role.base.direct);
+	WARN_ON_ONCE(cpu_role.base.direct || !cpu_role.base.guest_mode);
 
 	root_role = cpu_role.base;
 	root_role.level = kvm_mmu_get_tdp_level(vcpu);
arch/x86/kvm/svm/nested.c +5 -5
index b708bdf7eaff..ee37e3ebc043 100644
@@ -646,6 +646,11 @@ static void nested_vmcb02_prepare_control(struct vcpu_svm *svm,
 	u32 pause_count12;
 	u32 pause_thresh12;
 
+	nested_svm_transition_tlb_flush(vcpu);
+
+	/* Enter Guest-Mode */
+	enter_guest_mode(vcpu);
+
 	/*
 	 * Filled at exit: exit_code, exit_code_hi, exit_info_1, exit_info_2,
 	 * exit_int_info, exit_int_info_err, next_rip, insn_len, insn_bytes.
@@ -762,11 +767,6 @@ static void nested_vmcb02_prepare_control(struct vcpu_svm *svm,
 		}
 	}
 
-	nested_svm_transition_tlb_flush(vcpu);
-
-	/* Enter Guest-Mode */
-	enter_guest_mode(vcpu);
-
 	/*
 	 * Merge guest and host intercepts - must be called with vcpu in
 	 * guest-mode to take effect.
arch/x86/kvm/svm/svm.c +6 -7
index 21dacd312779..68704e035d7c 100644
@@ -1995,11 +1995,11 @@ static void new_asid(struct vcpu_svm *svm, struct svm_cpu_data *sd)
 	svm->asid = sd->next_asid++;
 }
 
-static void svm_set_dr6(struct vcpu_svm *svm, unsigned long value)
+static void svm_set_dr6(struct kvm_vcpu *vcpu, unsigned long value)
 {
-	struct vmcb *vmcb = svm->vmcb;
+	struct vmcb *vmcb = to_svm(vcpu)->vmcb;
 
-	if (svm->vcpu.arch.guest_state_protected)
+	if (vcpu->arch.guest_state_protected)
 		return;
 
 	if (unlikely(value != vmcb->save.dr6)) {
@@ -4236,10 +4236,8 @@ static __no_kcsan fastpath_t svm_vcpu_run(struct kvm_vcpu *vcpu,
 	 * Run with all-zero DR6 unless needed, so that we can get the exact cause
 	 * of a #DB.
 	 */
-	if (unlikely(vcpu->arch.switch_db_regs & KVM_DEBUGREG_WONT_EXIT))
-		svm_set_dr6(svm, vcpu->arch.dr6);
-	else
-		svm_set_dr6(svm, DR6_ACTIVE_LOW);
+	if (likely(!(vcpu->arch.switch_db_regs & KVM_DEBUGREG_WONT_EXIT)))
+		svm_set_dr6(vcpu, DR6_ACTIVE_LOW);
 
 	clgi();
 	kvm_load_guest_xsave_state(vcpu);
@@ -5036,6 +5034,7 @@ static struct kvm_x86_ops svm_x86_ops __initdata = {
 	.set_idt = svm_set_idt,
 	.get_gdt = svm_get_gdt,
 	.set_gdt = svm_set_gdt,
+	.set_dr6 = svm_set_dr6,
 	.set_dr7 = svm_set_dr7,
 	.sync_dirty_debug_regs = svm_sync_dirty_debug_regs,
 	.cache_reg = svm_cache_reg,
arch/x86/kvm/vmx/main.c +1 -0
index 92d35cc6cd15..7972f2152b36 100644
@@ -61,6 +61,7 @@ struct kvm_x86_ops vt_x86_ops __initdata = {
 	.set_idt = vmx_set_idt,
 	.get_gdt = vmx_get_gdt,
 	.set_gdt = vmx_set_gdt,
+	.set_dr6 = vmx_set_dr6,
 	.set_dr7 = vmx_set_dr7,
 	.sync_dirty_debug_regs = vmx_sync_dirty_debug_regs,
 	.cache_reg = vmx_cache_reg,
arch/x86/kvm/vmx/vmx.c +6 -4
index 01abcdcbbf70..aebd45d43ebb 100644
@@ -5644,6 +5644,12 @@ void vmx_sync_dirty_debug_regs(struct kvm_vcpu *vcpu)
 	set_debugreg(DR6_RESERVED, 6);
 }
 
+void vmx_set_dr6(struct kvm_vcpu *vcpu, unsigned long val)
+{
+	lockdep_assert_irqs_disabled();
+	set_debugreg(vcpu->arch.dr6, 6);
+}
+
 void vmx_set_dr7(struct kvm_vcpu *vcpu, unsigned long val)
 {
 	vmcs_writel(GUEST_DR7, val);
@@ -7428,10 +7434,6 @@ fastpath_t vmx_vcpu_run(struct kvm_vcpu *vcpu, bool force_immediate_exit)
 		vmx->loaded_vmcs->host_state.cr4 = cr4;
 	}
 
-	/* When KVM_DEBUGREG_WONT_EXIT, dr6 is accessible in guest. */
-	if (unlikely(vcpu->arch.switch_db_regs & KVM_DEBUGREG_WONT_EXIT))
-		set_debugreg(vcpu->arch.dr6, 6);
-
 	/* When single-stepping over STI and MOV SS, we must clear the
 	 * corresponding interruptibility bits in the guest state. Otherwise
 	 * vmentry fails as it then expects bit 14 (BS) in pending debug
arch/x86/kvm/vmx/x86_ops.h +1 -0
index 48dc76bf0ec0..4aba200f435d 100644
@@ -74,6 +74,7 @@ void vmx_get_idt(struct kvm_vcpu *vcpu, struct desc_ptr *dt);
 void vmx_set_idt(struct kvm_vcpu *vcpu, struct desc_ptr *dt);
 void vmx_get_gdt(struct kvm_vcpu *vcpu, struct desc_ptr *dt);
 void vmx_set_gdt(struct kvm_vcpu *vcpu, struct desc_ptr *dt);
+void vmx_set_dr6(struct kvm_vcpu *vcpu, unsigned long val);
 void vmx_set_dr7(struct kvm_vcpu *vcpu, unsigned long val);
 void vmx_sync_dirty_debug_regs(struct kvm_vcpu *vcpu);
 void vmx_cache_reg(struct kvm_vcpu *vcpu, enum kvm_reg reg);
arch/x86/kvm/x86.c +3 -0
index 23bf088fc4ae..030310b26c69 100644
@@ -10953,6 +10953,9 @@ static int vcpu_enter_guest(struct kvm_vcpu *vcpu)
 		set_debugreg(vcpu->arch.eff_db[1], 1);
 		set_debugreg(vcpu->arch.eff_db[2], 2);
 		set_debugreg(vcpu->arch.eff_db[3], 3);
+		/* When KVM_DEBUGREG_WONT_EXIT, dr6 is accessible in guest. */
+		if (unlikely(vcpu->arch.switch_db_regs & KVM_DEBUGREG_WONT_EXIT))
+			kvm_x86_call(set_dr6)(vcpu, vcpu->arch.dr6);
 	} else if (unlikely(hw_breakpoint_active())) {
 		set_debugreg(0, 7);
 	}
arch/x86/mm/tlb.c +32 -3
index a2becb85bea7..90a9e4740913 100644
@@ -893,9 +893,36 @@ static void flush_tlb_func(void *info)
 			nr_invalidate);
 }
 
-static bool tlb_is_not_lazy(int cpu, void *data)
+static bool should_flush_tlb(int cpu, void *data)
 {
-	return !per_cpu(cpu_tlbstate_shared.is_lazy, cpu);
+	struct flush_tlb_info *info = data;
+
+	/* Lazy TLB will get flushed at the next context switch. */
+	if (per_cpu(cpu_tlbstate_shared.is_lazy, cpu))
+		return false;
+
+	/* No mm means kernel memory flush. */
+	if (!info->mm)
+		return true;
+
+	/* The target mm is loaded, and the CPU is not lazy. */
+	if (per_cpu(cpu_tlbstate.loaded_mm, cpu) == info->mm)
+		return true;
+
+	/* In cpumask, but not the loaded mm? Periodically remove by flushing. */
+	if (info->trim_cpumask)
+		return true;
+
+	return false;
+}
+
+static bool should_trim_cpumask(struct mm_struct *mm)
+{
+	if (time_after(jiffies, READ_ONCE(mm->context.next_trim_cpumask))) {
+		WRITE_ONCE(mm->context.next_trim_cpumask, jiffies + HZ);
+		return true;
+	}
+	return false;
 }
 
 DEFINE_PER_CPU_SHARED_ALIGNED(struct tlb_state_shared, cpu_tlbstate_shared);
@@ -929,7 +956,7 @@ STATIC_NOPV void native_flush_tlb_multi(const struct cpumask *cpumask,
 	if (info->freed_tables)
 		on_each_cpu_mask(cpumask, flush_tlb_func, (void *)info, true);
 	else
-		on_each_cpu_cond_mask(tlb_is_not_lazy, flush_tlb_func,
+		on_each_cpu_cond_mask(should_flush_tlb, flush_tlb_func,
 				(void *)info, 1, cpumask);
 }
 
@@ -980,6 +1007,7 @@ static struct flush_tlb_info *get_flush_tlb_info(struct mm_struct *mm,
 	info->freed_tables	= freed_tables;
 	info->new_tlb_gen	= new_tlb_gen;
 	info->initiating_cpu	= smp_processor_id();
+	info->trim_cpumask	= 0;
 
 	return info;
 }
@@ -1022,6 +1050,7 @@ void flush_tlb_mm_range(struct mm_struct *mm, unsigned long start,
 	 * flush_tlb_func_local() directly in this case.
 	 */
 	if (cpumask_any_but(mm_cpumask(mm), cpu) < nr_cpu_ids) {
+		info->trim_cpumask = should_trim_cpumask(mm);
 		flush_tlb_multi(mm_cpumask(mm), info);
 	} else if (mm == this_cpu_read(cpu_tlbstate.loaded_mm)) {
 		lockdep_assert_irqs_enabled();
arch/x86/um/os-Linux/registers.c +18 -3
index 76eaeb93928c..eb1cdadc8a61 100644
@@ -18,6 +18,7 @@
 #include <registers.h>
 #include <sys/mman.h>
 
+static unsigned long ptrace_regset;
 unsigned long host_fp_size;
 
 int get_fp_registers(int pid, unsigned long *regs)
@@ -27,7 +28,7 @@ int get_fp_registers(int pid, unsigned long *regs)
 		.iov_len = host_fp_size,
 	};
 
-	if (ptrace(PTRACE_GETREGSET, pid, NT_X86_XSTATE, &iov) < 0)
+	if (ptrace(PTRACE_GETREGSET, pid, ptrace_regset, &iov) < 0)
 		return -errno;
 	return 0;
 }
@@ -39,7 +40,7 @@ int put_fp_registers(int pid, unsigned long *regs)
 		.iov_len = host_fp_size,
 	};
 
-	if (ptrace(PTRACE_SETREGSET, pid, NT_X86_XSTATE, &iov) < 0)
+	if (ptrace(PTRACE_SETREGSET, pid, ptrace_regset, &iov) < 0)
 		return -errno;
 	return 0;
 }
@@ -58,9 +59,23 @@ int arch_init_registers(int pid)
 		return -ENOMEM;
 
 	/* GDB has x86_xsave_length, which uses x86_cpuid_count */
-	ret = ptrace(PTRACE_GETREGSET, pid, NT_X86_XSTATE, &iov);
+	ptrace_regset = NT_X86_XSTATE;
+	ret = ptrace(PTRACE_GETREGSET, pid, ptrace_regset, &iov);
 	if (ret)
 		ret = -errno;
+
+	if (ret == -ENODEV) {
+#ifdef CONFIG_X86_32
+		ptrace_regset = NT_PRXFPREG;
+#else
+		ptrace_regset = NT_PRFPREG;
+#endif
+		iov.iov_len = 2 * 1024 * 1024;
+		ret = ptrace(PTRACE_GETREGSET, pid, ptrace_regset, &iov);
+		if (ret)
+			ret = -errno;
+	}
+
 	munmap(iov.iov_base, 2 * 1024 * 1024);
 
 	host_fp_size = iov.iov_len;
arch/x86/um/signal.c +10 -3
index 75087e85b6fd..2934e170b0fe 100644
@@ -187,7 +187,12 @@ static int copy_sc_to_user(struct sigcontext __user *to,
 	 * Put magic/size values for userspace. We do not bother to verify them
 	 * later on, however, userspace needs them should it try to read the
 	 * XSTATE data. And ptrace does not fill in these parts.
+	 *
+	 * Skip this if we do not have an XSTATE frame.
 	 */
+	if (host_fp_size <= sizeof(to_fp64->fpstate))
+		return 0;
+
 	BUILD_BUG_ON(sizeof(int) != FP_XSTATE_MAGIC2_SIZE);
 #ifdef CONFIG_X86_32
 	__put_user(offsetof(struct _fpstate_32, _fxsr_env) +
@@ -367,11 +372,13 @@ int setup_signal_stack_si(unsigned long stack_top, struct ksignal *ksig,
 	int err = 0, sig = ksig->sig;
 	unsigned long fp_to;
 
-	frame = (struct rt_sigframe __user *)
-		round_down(stack_top - sizeof(struct rt_sigframe), 16);
+	frame = (void __user *)stack_top - sizeof(struct rt_sigframe);
 
 	/* Add required space for math frame */
-	frame = (struct rt_sigframe __user *)((unsigned long)frame - math_size);
+	frame = (void __user *)((unsigned long)frame - math_size);
+
+	/* ABI requires 16 byte boundary alignment */
+	frame = (void __user *)round_down((unsigned long)frame, 16);
 
 	/* Subtract 128 for a red zone and 8 for proper alignment */
 	frame = (struct rt_sigframe __user *) ((unsigned long) frame - 128 - 8);
arch/x86/xen/mmu_pv.c +66 -9

148 lines not on this page · raw message

block/partitions/mac.c +15 -3
index c80183156d68..b02530d98629 100644
@@ -53,13 +53,25 @@ int mac_partition(struct parsed_partitions *state)
 	}
 	secsize = be16_to_cpu(md->block_size);
 	put_dev_sector(sect);
+
+	/*
+	 * If the "block size" is not a power of 2, things get weird - we might
+	 * end up with a partition straddling a sector boundary, so we wouldn't
+	 * be able to read a partition entry with read_part_sector().
+	 * Real block sizes are probably (?) powers of two, so just require
+	 * that.
+	 */
+	if (!is_power_of_2(secsize))
+		return -1;
 	datasize = round_down(secsize, 512);
 	data = read_part_sector(state, datasize / 512, &sect);
 	if (!data)
 		return -1;
 	partoffset = secsize % 512;
-	if (partoffset + sizeof(*part) > datasize)
+	if (partoffset + sizeof(*part) > datasize) {
+		put_dev_sector(sect);
 		return -1;
+	}
 	part = (struct mac_partition *) (data + partoffset);
 	if (be16_to_cpu(part->signature) != MAC_PARTITION_MAGIC) {
 		put_dev_sector(sect);
@@ -112,8 +124,8 @@ int mac_partition(struct parsed_partitions *state)
 				int i, l;
 
 				goodness++;
-				l = strlen(part->name);
-				if (strcmp(part->name, "/") == 0)
+				l = strnlen(part->name, sizeof(part->name));
+				if (strncmp(part->name, "/", sizeof(part->name)) == 0)
 					goodness++;
 				for (i = 0; i <= l - 4; ++i) {
 					if (strncasecmp(part->name + i, "root",
drivers/acpi/arm64/gtdt.c +8 -4
index 3561553eff8b..70f8290b659d 100644
@@ -163,7 +163,7 @@ int __init acpi_gtdt_init(struct acpi_table_header *table,
 {
 	void *platform_timer;
 	struct acpi_table_gtdt *gtdt;
-	int cnt = 0;
+	u32 cnt = 0;
 
 	gtdt = container_of(table, struct acpi_table_gtdt, header);
 	acpi_gtdt_desc.gtdt = gtdt;
@@ -188,13 +188,17 @@ int __init acpi_gtdt_init(struct acpi_table_header *table,
 		cnt++;
 
 	if (cnt != gtdt->platform_timer_count) {
+		cnt = min(cnt, gtdt->platform_timer_count);
+		pr_err(FW_BUG "limiting Platform Timer count to %d\n", cnt);
+	}
+
+	if (!cnt) {
 		acpi_gtdt_desc.platform_timer = NULL;
-		pr_err(FW_BUG "invalid timer data.\n");
-		return -EINVAL;
+		return 0;
 	}
 
 	if (platform_timer_count)
-		*platform_timer_count = gtdt->platform_timer_count;
+		*platform_timer_count = cnt;
 
 	return 0;
 }
drivers/acpi/x86/utils.c +13 -0
index cb45ef5240da..068c1612660b 100644
@@ -407,6 +407,19 @@ static const struct dmi_system_id acpi_quirk_skip_dmi_ids[] = {
 		.driver_data = (void *)(ACPI_QUIRK_SKIP_I2C_CLIENTS |
 					ACPI_QUIRK_SKIP_ACPI_AC_AND_BATTERY),
 	},
+	{
+		/* Vexia Edu Atla 10 tablet 5V version */
+		.matches = {
+			/* Having all 3 of these not set is somewhat unique */
+			DMI_MATCH(DMI_SYS_VENDOR, "To be filled by O.E.M."),
+			DMI_MATCH(DMI_PRODUCT_NAME, "To be filled by O.E.M."),
+			DMI_MATCH(DMI_BOARD_NAME, "To be filled by O.E.M."),
+			/* Above strings are too generic, also match on BIOS date */
+			DMI_MATCH(DMI_BIOS_DATE, "05/14/2015"),
+		},
+		.driver_data = (void *)(ACPI_QUIRK_SKIP_I2C_CLIENTS |
+					ACPI_QUIRK_SKIP_ACPI_AC_AND_BATTERY),
+	},
 	{
 		/* Vexia Edu Atla 10 tablet 9V version */
 		.matches = {
drivers/base/regmap/regmap-irq.c +2 -0
index 0bcd81389a29..978613407ea3 100644
@@ -906,6 +906,7 @@ int regmap_add_irq_chip_fwnode(struct fwnode_handle *fwnode,
 	kfree(d->wake_buf);
 	kfree(d->mask_buf_def);
 	kfree(d->mask_buf);
+	kfree(d->main_status_buf);
 	kfree(d->status_buf);
 	kfree(d->status_reg_buf);
 	if (d->config_buf) {
@@ -981,6 +982,7 @@ void regmap_del_irq_chip(int irq, struct regmap_irq_chip_data *d)
 	kfree(d->wake_buf);
 	kfree(d->mask_buf_def);
 	kfree(d->mask_buf);
+	kfree(d->main_status_buf);
 	kfree(d->status_reg_buf);
 	kfree(d->status_buf);
 	if (d->config_buf) {
drivers/bluetooth/btintel_pcie.c +4 -1
index 2b79952f3628..091ffe3e1495 100644
@@ -1320,6 +1320,10 @@ static int btintel_pcie_send_frame(struct hci_dev *hdev,
 			if (opcode == 0xfc01)
 				btintel_pcie_inject_cmd_complete(hdev, opcode);
 		}
+		/* Firmware raises alive interrupt on HCI_OP_RESET */
+		if (opcode == HCI_OP_RESET)
+			data->gp0_received = false;
+
 		hdev->stat.cmd_tx++;
 		break;
 	case HCI_ACLDATA_PKT:
@@ -1357,7 +1361,6 @@ static int btintel_pcie_send_frame(struct hci_dev *hdev,
 			   opcode, btintel_pcie_alivectxt_state2str(old_ctxt),
 			   btintel_pcie_alivectxt_state2str(data->alive_intr_ctxt));
 		if (opcode == HCI_OP_RESET) {
-			data->gp0_received = false;
 			ret = wait_event_timeout(data->gp0_wait_q,
 						 data->gp0_received,
 						 msecs_to_jiffies(BTINTEL_DEFAULT_INTR_TIMEOUT_MS));
drivers/bus/moxtet.c +1 -1
index 6276551d7968..1e57ebfb7622 100644
@@ -657,7 +657,7 @@ static void moxtet_irq_print_chip(struct irq_data *d, struct seq_file *p)
 
 	id = moxtet->modules[pos->idx];
 
-	seq_printf(p, " moxtet-%s.%i#%i", mox_module_name(id), pos->idx,
+	seq_printf(p, "moxtet-%s.%i#%i", mox_module_name(id), pos->idx,
 		   pos->bit);
 }
 
drivers/cpufreq/amd-pstate.c +31 -74

208 lines not on this page · raw message

drivers/firmware/efi/efi.c +4 -2
index 60c64b81d2c3..1992d1176c7e 100644
@@ -937,13 +937,15 @@ char * __init efi_md_typeattr_format(char *buf, size_t size,
 		     EFI_MEMORY_WB | EFI_MEMORY_UCE | EFI_MEMORY_RO |
 		     EFI_MEMORY_WP | EFI_MEMORY_RP | EFI_MEMORY_XP |
 		     EFI_MEMORY_NV | EFI_MEMORY_SP | EFI_MEMORY_CPU_CRYPTO |
-		     EFI_MEMORY_RUNTIME | EFI_MEMORY_MORE_RELIABLE))
+		     EFI_MEMORY_MORE_RELIABLE | EFI_MEMORY_HOT_PLUGGABLE |
+		     EFI_MEMORY_RUNTIME))
 		snprintf(pos, size, "|attr=0x%016llx]",
 			 (unsigned long long)attr);
 	else
 		snprintf(pos, size,
-			 "|%3s|%2s|%2s|%2s|%2s|%2s|%2s|%2s|%2s|%3s|%2s|%2s|%2s|%2s]",
+			 "|%3s|%2s|%2s|%2s|%2s|%2s|%2s|%2s|%2s|%2s|%3s|%2s|%2s|%2s|%2s]",
 			 attr & EFI_MEMORY_RUNTIME		? "RUN" : "",
+			 attr & EFI_MEMORY_HOT_PLUGGABLE	? "HP"  : "",
 			 attr & EFI_MEMORY_MORE_RELIABLE	? "MR"  : "",
 			 attr & EFI_MEMORY_CPU_CRYPTO   	? "CC"  : "",
 			 attr & EFI_MEMORY_SP			? "SP"  : "",
drivers/firmware/efi/libstub/randomalloc.c +3 -0
index c41e7b2091cd..8ad3efb9b1ff 100644
@@ -25,6 +25,9 @@ static unsigned long get_entry_num_slots(efi_memory_desc_t *md,
 	if (md->type != EFI_CONVENTIONAL_MEMORY)
 		return 0;
 
+	if (md->attribute & EFI_MEMORY_HOT_PLUGGABLE)
+		return 0;
+
 	if (efi_soft_reserve_enabled() &&
 	    (md->attribute & EFI_MEMORY_SP))
 		return 0;
drivers/firmware/efi/libstub/relocate.c +3 -0
index d694bcfa1074..bf676dd127a1 100644
@@ -53,6 +53,9 @@ efi_status_t efi_low_alloc_above(unsigned long size, unsigned long align,
 		if (desc->type != EFI_CONVENTIONAL_MEMORY)
 			continue;
 
+		if (desc->attribute & EFI_MEMORY_HOT_PLUGGABLE)
+			continue;
+
 		if (efi_soft_reserve_enabled() &&
 		    (desc->attribute & EFI_MEMORY_SP))
 			continue;
drivers/firmware/qcom/qcom_scm-smc.c +3 -0
index 2b4c2826f572..3f10b23ec941 100644
@@ -173,6 +173,9 @@ int __scm_smc_call(struct device *dev, const struct qcom_scm_desc *desc,
 		smc.args[i + SCM_SMC_FIRST_REG_IDX] = desc->args[i];
 
 	if (unlikely(arglen > SCM_SMC_N_REG_ARGS)) {
+		if (!mempool)
+			return -EINVAL;
+
 		args_virt = qcom_tzmem_alloc(mempool,
 					     SCM_SMC_N_EXT_ARGS * sizeof(u64),
 					     flag);
drivers/gpio/gpio-bcm-kona.c +58 -13

126 lines not on this page · raw message

drivers/gpio/gpio-stmpe.c +12 -3
index 75a3633ceddb..222279a9d82b 100644
@@ -191,7 +191,7 @@ static void stmpe_gpio_irq_sync_unlock(struct irq_data *d)
 		[REG_IE][CSB] = STMPE_IDX_IEGPIOR_CSB,
 		[REG_IE][MSB] = STMPE_IDX_IEGPIOR_MSB,
 	};
-	int i, j;
+	int ret, i, j;
 
 	/*
 	 * STMPE1600: to be able to get IRQ from pins,
@@ -199,8 +199,16 @@ static void stmpe_gpio_irq_sync_unlock(struct irq_data *d)
 	 * GPSR or GPCR registers
 	 */
 	if (stmpe->partnum == STMPE1600) {
-		stmpe_reg_read(stmpe, stmpe->regs[STMPE_IDX_GPMR_LSB]);
-		stmpe_reg_read(stmpe, stmpe->regs[STMPE_IDX_GPMR_CSB]);
+		ret = stmpe_reg_read(stmpe, stmpe->regs[STMPE_IDX_GPMR_LSB]);
+		if (ret < 0) {
+			dev_err(stmpe->dev, "Failed to read GPMR_LSB: %d\n", ret);
+			goto err;
+		}
+		ret = stmpe_reg_read(stmpe, stmpe->regs[STMPE_IDX_GPMR_CSB]);
+		if (ret < 0) {
+			dev_err(stmpe->dev, "Failed to read GPMR_CSB: %d\n", ret);
+			goto err;
+		}
 	}
 
 	for (i = 0; i < CACHE_NR_REGS; i++) {
@@ -222,6 +230,7 @@ static void stmpe_gpio_irq_sync_unlock(struct irq_data *d)
 		}
 	}
 
+err:
 	mutex_unlock(&stmpe_gpio->irq_lock);
 }
 
drivers/gpio/gpiolib-acpi.c +14 -0
index 1f9fe50bba00..f7746c57ba76 100644
@@ -1689,6 +1689,20 @@ static const struct dmi_system_id gpiolib_acpi_quirks[] __initconst = {
 			.ignore_wake = "PNP0C50:00@8",
 		},
 	},
+	{
+		/*
+		 * Spurious wakeups from GPIO 11
+		 * Found in BIOS 1.04
+		 * https://gitlab.freedesktop.org/drm/amd/-/issues/3954
+		 */
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
+			DMI_MATCH(DMI_PRODUCT_FAMILY, "Acer Nitro V 14"),
+		},
+		.driver_data = &(struct acpi_gpiolib_dmi_quirk) {
+			.ignore_interrupt = "AMDI0030:00@11",
+		},
+	},
 	{} /* Terminating entry */
 };
 
drivers/gpio/gpiolib.c +3 -3
index 679ed764cb14..ca2f58a2cd45 100644
@@ -904,13 +904,13 @@ int gpiochip_get_ngpios(struct gpio_chip *gc, struct device *dev)
 	}
 
 	if (gc->ngpio == 0) {
-		chip_err(gc, "tried to insert a GPIO chip with zero lines\n");
+		dev_err(dev, "tried to insert a GPIO chip with zero lines\n");
 		return -EINVAL;
 	}
 
 	if (gc->ngpio > FASTPATH_NGPIO)
-		chip_warn(gc, "line cnt %u is greater than fast path cnt %u\n",
-			gc->ngpio, FASTPATH_NGPIO);
+		dev_warn(dev, "line cnt %u is greater than fast path cnt %u\n",
+			 gc->ngpio, FASTPATH_NGPIO);
 
 	return 0;
 }
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c +3 -2
index 448f9e742983..75c0f64602ed 100644
@@ -3790,9 +3790,10 @@ int psp_init_cap_microcode(struct psp_context *psp, const char *chip_name)
 		if (err == -ENODEV) {
 			dev_warn(adev->dev, "cap microcode does not exist, skip\n");
 			err = 0;
-			goto out;
+		} else {
+			dev_err(adev->dev, "fail to initialize cap microcode\n");
 		}
-		dev_err(adev->dev, "fail to initialize cap microcode\n");
+		goto out;
 	}
 
 	info = &adev->firmware.ucode[AMDGPU_UCODE_ID_CAP];
drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c +1 -1
index bd595b1db15f..1d538e874140 100644
@@ -298,7 +298,7 @@ static int init_user_queue(struct process_queue_manager *pqm,
 	return 0;
 
 free_gang_ctx_bo:
-	amdgpu_amdkfd_free_gtt_mem(dev->adev, (*q)->gang_ctx_bo);
+	amdgpu_amdkfd_free_gtt_mem(dev->adev, &(*q)->gang_ctx_bo);
 cleanup:
 	uninit_queue(*q);
 	*q = NULL;
drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c +2 -1
index 21bd635bcdfc..c0b98749dde7 100644
@@ -609,7 +609,8 @@ static int smu_sys_set_pp_table(void *handle,
 		return -EIO;
 	}
 
-	if (!smu_table->hardcode_pptable) {
+	if (!smu_table->hardcode_pptable || smu_table->power_play_table_size < size) {
+		kfree(smu_table->hardcode_pptable);
 		smu_table->hardcode_pptable = kzalloc(size, GFP_KERNEL);
 		if (!smu_table->hardcode_pptable)
 			return -ENOMEM;
drivers/gpu/drm/display/drm_dp_helper.c +1 -1
index 6ee51003de3c..9fa13da513d2 100644
@@ -2421,7 +2421,7 @@ u8 drm_dp_dsc_sink_bpp_incr(const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE])
 {
 	u8 bpp_increment_dpcd = dsc_dpcd[DP_DSC_BITS_PER_PIXEL_INC - DP_DSC_SUPPORT];
 
-	switch (bpp_increment_dpcd) {
+	switch (bpp_increment_dpcd & DP_DSC_BITS_PER_PIXEL_MASK) {
 	case DP_DSC_BITS_PER_PIXEL_1_16:
 		return 16;
 	case DP_DSC_BITS_PER_PIXEL_1_8:
drivers/gpu/drm/i915/selftests/i915_gem_gtt.c +2 -2
index 5c397a2df70e..5d27e1c733c5 100644
@@ -168,7 +168,7 @@ static int igt_ppgtt_alloc(void *arg)
 		return PTR_ERR(ppgtt);
 
 	if (!ppgtt->vm.allocate_va_range)
-		goto err_ppgtt_cleanup;
+		goto ppgtt_vm_put;
 
 	/*
 	 * While we only allocate the page tables here and so we could
@@ -236,7 +236,7 @@ static int igt_ppgtt_alloc(void *arg)
 			goto retry;
 	}
 	i915_gem_ww_ctx_fini(&ww);
-
+ppgtt_vm_put:
 	i915_vm_put(&ppgtt->vm);
 	return err;
 }
drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_2_x1e80100.h +2 -2
index e084406ebb07..4f110be6b750 100644
@@ -391,8 +391,8 @@ static const struct dpu_intf_cfg x1e80100_intf[] = {
 		.type = INTF_DP,
 		.controller_id = MSM_DP_CONTROLLER_2,
 		.prog_fetch_lines_worst_case = 24,
-		.intr_underrun = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 17),
-		.intr_vsync = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 16),
+		.intr_underrun = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 16),
+		.intr_vsync = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 17),
 	}, {
 		.name = "intf_7", .id = INTF_7,
 		.base = 0x3b000, .len = 0x280,
drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c +0 -3
index 16f144cbc0c9..8ff496082902 100644
@@ -42,9 +42,6 @@ static int dpu_wb_conn_atomic_check(struct drm_connector *connector,
 	if (!conn_state || !conn_state->connector) {
 		DPU_ERROR("invalid connector state\n");
 		return -EINVAL;
-	} else if (conn_state->connector->status != connector_status_connected) {
-		DPU_ERROR("connector not connected %d\n", conn_state->connector->status);
-		return -EINVAL;
 	}
 
 	crtc = conn_state->crtc;
drivers/gpu/drm/msm/msm_gem_submit.c +1 -2
index fba78193127d..f775638d239a 100644
@@ -787,8 +787,7 @@ int msm_ioctl_gem_submit(struct drm_device *dev, void *data,
 			goto out;
 
 		if (!submit->cmd[i].size ||
-			((submit->cmd[i].size + submit->cmd[i].offset) >
-				obj->size / 4)) {
+		    (size_add(submit->cmd[i].size, submit->cmd[i].offset) > obj->size / 4)) {
 			SUBMIT_ERROR(submit, "invalid cmdstream size: %u\n", submit->cmd[i].size * 4);
 			ret = -EINVAL;
 			goto out;
drivers/gpu/drm/panthor/panthor_drv.c +1 -0
index 0b3fbee3d37a..44f5c72d46c3 100644
@@ -802,6 +802,7 @@ static void panthor_query_group_priorities_info(struct drm_file *file,
 {
 	int prio;
 
+	memset(arg, 0, sizeof(*arg));
 	for (prio = PANTHOR_GROUP_PRIORITY_REALTIME; prio >= 0; prio--) {
 		if (!group_priority_permit(file, prio))
 			arg->allowed_mask |= BIT(prio);
drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi.c +1 -1
index 8180625d5866..be4ffc0ab14f 100644
@@ -587,7 +587,7 @@ static int rcar_mipi_dsi_startup(struct rcar_mipi_dsi *dsi,
 	for (timeout = 10; timeout > 0; --timeout) {
 		if ((rcar_mipi_dsi_read(dsi, PPICLSR) & PPICLSR_STPST) &&
 		    (rcar_mipi_dsi_read(dsi, PPIDLSR) & PPIDLSR_STPST) &&
-		    (rcar_mipi_dsi_read(dsi, CLOCKSET1) & CLOCKSET1_LOCK))
+		    (rcar_mipi_dsi_read(dsi, CLOCKSET1) & CLOCKSET1_LOCK_PHY))
 			break;
 
 		usleep_range(1000, 2000);
drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi_regs.h +0 -1
index f8114d11f2d1..a6b276f1d6ee 100644
@@ -142,7 +142,6 @@
 
 #define CLOCKSET1			0x101c
 #define CLOCKSET1_LOCK_PHY		(1 << 17)
-#define CLOCKSET1_LOCK			(1 << 16)
 #define CLOCKSET1_CLKSEL		(1 << 8)
 #define CLOCKSET1_CLKINSEL_EXTAL	(0 << 2)
 #define CLOCKSET1_CLKINSEL_DIG		(1 << 2)
drivers/gpu/drm/renesas/rz-du/rzg2l_du_kms.c +3 -3
index b99217b4e05d..90c6269ccd29 100644
@@ -311,11 +311,11 @@ int rzg2l_du_modeset_init(struct rzg2l_du_device *rcdu)
 	dev->mode_config.helper_private = &rzg2l_du_mode_config_helper;
 
 	/*
-	 * The RZ DU uses the VSP1 for memory access, and is limited
-	 * to frame sizes of 1920x1080.
+	 * The RZ DU was designed to support a frame size of 1920x1200 (landscape)
+	 * or 1200x1920 (portrait).
 	 */
 	dev->mode_config.max_width = 1920;
-	dev->mode_config.max_height = 1080;
+	dev->mode_config.max_height = 1920;
 
 	rcdu->num_crtcs = hweight8(rcdu->info->channels_mask);
 
drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c +7 -0
index 4ba869e0e794..cbd9584af329 100644
@@ -70,10 +70,17 @@ static int light_up_connector(struct kunit *test,
 	state = drm_kunit_helper_atomic_state_alloc(test, drm, ctx);
 	KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state);
 
+retry:
 	conn_state = drm_atomic_get_connector_state(state, connector);
 	KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state);
 
 	ret = drm_atomic_set_crtc_for_connector(conn_state, crtc);
+	if (ret == -EDEADLK) {
+		drm_atomic_state_clear(state);
+		ret = drm_modeset_backoff(ctx);
+		if (!ret)
+			goto retry;
+	}
 	KUNIT_EXPECT_EQ(test, ret, 0);
 
 	crtc_state = drm_atomic_get_crtc_state(state, crtc);
drivers/gpu/drm/tidss/tidss_dispc.c +16 -10
index 1ad711f8d2a8..45f22ead3e61 100644
@@ -700,7 +700,7 @@ void dispc_k2g_set_irqenable(struct dispc_device *dispc, dispc_irq_t mask)
 {
 	dispc_irq_t old_mask = dispc_k2g_read_irqenable(dispc);
 
-	/* clear the irqstatus for newly enabled irqs */
+	/* clear the irqstatus for irqs that will be enabled */
 	dispc_k2g_clear_irqstatus(dispc, (mask ^ old_mask) & mask);
 
 	dispc_k2g_vp_set_irqenable(dispc, 0, mask);
@@ -708,6 +708,9 @@ void dispc_k2g_set_irqenable(struct dispc_device *dispc, dispc_irq_t mask)
 
 	dispc_write(dispc, DISPC_IRQENABLE_SET, (1 << 0) | (1 << 7));
 
+	/* clear the irqstatus for irqs that were disabled */
+	dispc_k2g_clear_irqstatus(dispc, (mask ^ old_mask) & old_mask);
+
 	/* flush posted write */
 	dispc_k2g_read_irqenable(dispc);
 }
@@ -780,24 +783,20 @@ static
 void dispc_k3_clear_irqstatus(struct dispc_device *dispc, dispc_irq_t clearmask)
 {
 	unsigned int i;
-	u32 top_clear = 0;
 
 	for (i = 0; i < dispc->feat->num_vps; ++i) {
-		if (clearmask & DSS_IRQ_VP_MASK(i)) {
+		if (clearmask & DSS_IRQ_VP_MASK(i))
 			dispc_k3_vp_write_irqstatus(dispc, i, clearmask);
-			top_clear |= BIT(i);
-		}
 	}
 	for (i = 0; i < dispc->feat->num_planes; ++i) {
-		if (clearmask & DSS_IRQ_PLANE_MASK(i)) {
+		if (clearmask & DSS_IRQ_PLANE_MASK(i))
 			dispc_k3_vid_write_irqstatus(dispc, i, clearmask);
-			top_clear |= BIT(4 + i);
-		}
 	}
 	if (dispc->feat->subrev == DISPC_K2G)
 		return;
 
-	dispc_write(dispc, DISPC_IRQSTATUS, top_clear);
+	/* always clear the top level irqstatus */
+	dispc_write(dispc, DISPC_IRQSTATUS, dispc_read(dispc, DISPC_IRQSTATUS));
 
 	/* Flush posted writes */
 	dispc_read(dispc, DISPC_IRQSTATUS);
@@ -843,7 +842,7 @@ static void dispc_k3_set_irqenable(struct dispc_device *dispc,
 
 	old_mask = dispc_k3_read_irqenable(dispc);
 
-	/* clear the irqstatus for newly enabled irqs */
+	/* clear the irqstatus for irqs that will be enabled */
 	dispc_k3_clear_irqstatus(dispc, (old_mask ^ mask) & mask);
 
 	for (i = 0; i < dispc->feat->num_vps; ++i) {
@@ -868,6 +867,9 @@ static void dispc_k3_set_irqenable(struct dispc_device *dispc,
 	if (main_disable)
 		dispc_write(dispc, DISPC_IRQENABLE_CLR, main_disable);
 
+	/* clear the irqstatus for irqs that were disabled */
+	dispc_k3_clear_irqstatus(dispc, (old_mask ^ mask) & old_mask);
+
 	/* Flush posted writes */
 	dispc_read(dispc, DISPC_IRQENABLE_SET);
 }
@@ -2767,8 +2769,12 @@ static void dispc_init_errata(struct dispc_device *dispc)
  */
 static void dispc_softreset_k2g(struct dispc_device *dispc)
 {
+	unsigned long flags;
+
+	spin_lock_irqsave(&dispc->tidss->wait_lock, flags);
 	dispc_set_irqenable(dispc, 0);
 	dispc_read_and_clear_irqstatus(dispc);
+	spin_unlock_irqrestore(&dispc->tidss->wait_lock, flags);
 
 	for (unsigned int vp_idx = 0; vp_idx < dispc->feat->num_vps; ++vp_idx)
 		VP_REG_FLD_MOD(dispc, vp_idx, DISPC_VP_CONTROL, 0, 0, 0);
drivers/gpu/drm/tidss/tidss_irq.c +2 -0
index 604334ef526a..d053dbb9d28c 100644
@@ -60,7 +60,9 @@ static irqreturn_t tidss_irq_handler(int irq, void *arg)
 	unsigned int id;
 	dispc_irq_t irqstatus;
 
+	spin_lock(&tidss->wait_lock);
 	irqstatus = dispc_read_and_clear_irqstatus(tidss->dispc);
+	spin_unlock(&tidss->wait_lock);
 
 	for (id = 0; id < tidss->num_crtcs; id++) {
 		struct drm_crtc *crtc = tidss->crtcs[id];
drivers/gpu/drm/v3d/v3d_perfmon.c +5 -0
index ecf06e8e9fbc..c49abb90954d 100644
@@ -384,6 +384,7 @@ int v3d_perfmon_destroy_ioctl(struct drm_device *dev, void *data,
 {
 	struct v3d_file_priv *v3d_priv = file_priv->driver_priv;
 	struct drm_v3d_perfmon_destroy *req = data;
+	struct v3d_dev *v3d = v3d_priv->v3d;
 	struct v3d_perfmon *perfmon;
 
 	mutex_lock(&v3d_priv->perfmon.lock);
@@ -393,6 +394,10 @@ int v3d_perfmon_destroy_ioctl(struct drm_device *dev, void *data,
 	if (!perfmon)
 		return -EINVAL;
 
+	/* If the active perfmon is being destroyed, stop it first */
+	if (perfmon == v3d->active_perfmon)
+		v3d_perfmon_stop(v3d, perfmon, false);
+
 	v3d_perfmon_put(perfmon);
 
 	return 0;
drivers/gpu/drm/xe/regs/xe_oa_regs.h +1 -8
index 6d31573ed176..a79ad2da070c 100644
@@ -41,14 +41,6 @@
 
 #define OAG_OABUFFER		XE_REG(0xdb08)
 #define  OABUFFER_SIZE_MASK	REG_GENMASK(5, 3)
-#define  OABUFFER_SIZE_128K	REG_FIELD_PREP(OABUFFER_SIZE_MASK, 0)
-#define  OABUFFER_SIZE_256K	REG_FIELD_PREP(OABUFFER_SIZE_MASK, 1)
-#define  OABUFFER_SIZE_512K	REG_FIELD_PREP(OABUFFER_SIZE_MASK, 2)
-#define  OABUFFER_SIZE_1M	REG_FIELD_PREP(OABUFFER_SIZE_MASK, 3)
-#define  OABUFFER_SIZE_2M	REG_FIELD_PREP(OABUFFER_SIZE_MASK, 4)
-#define  OABUFFER_SIZE_4M	REG_FIELD_PREP(OABUFFER_SIZE_MASK, 5)
-#define  OABUFFER_SIZE_8M	REG_FIELD_PREP(OABUFFER_SIZE_MASK, 6)
-#define  OABUFFER_SIZE_16M	REG_FIELD_PREP(OABUFFER_SIZE_MASK, 7)
 #define  OAG_OABUFFER_MEMORY_SELECT		REG_BIT(0) /* 0: PPGTT, 1: GGTT */
 
 #define OAG_OACONTROL				XE_REG(0xdaf4)
@@ -67,6 +59,7 @@
 #define OAG_OA_DEBUG XE_REG(0xdaf8, XE_REG_OPTION_MASKED)
 #define  OAG_OA_DEBUG_DISABLE_MMIO_TRG			REG_BIT(14)
 #define  OAG_OA_DEBUG_START_TRIGGER_SCOPE_CONTROL	REG_BIT(13)
+#define  OAG_OA_DEBUG_BUF_SIZE_SELECT			REG_BIT(12)
 #define  OAG_OA_DEBUG_DISABLE_START_TRG_2_COUNT_QUAL	REG_BIT(8)
 #define  OAG_OA_DEBUG_DISABLE_START_TRG_1_COUNT_QUAL	REG_BIT(7)
 #define  OAG_OA_DEBUG_INCLUDE_CLK_RATIO			REG_BIT(6)
drivers/gpu/drm/xe/xe_drm_client.c +1 -1
index 22f0f1a6dfd5..e8eaeb464606 100644
@@ -135,8 +135,8 @@ void xe_drm_client_add_bo(struct xe_drm_client *client,
 	XE_WARN_ON(bo->client);
 	XE_WARN_ON(!list_empty(&bo->client_link));
 
-	spin_lock(&client->bos_lock);
 	bo->client = xe_drm_client_get(client);
+	spin_lock(&client->bos_lock);
 	list_add_tail(&bo->client_link, &client->bos_list);
 	spin_unlock(&client->bos_lock);
 }
drivers/gpu/drm/xe/xe_oa.c +71 -21

208 lines not on this page · raw message

drivers/gpu/drm/xe/xe_oa_types.h +4 -1
index fea9d981e414..2dcd3b9562e9 100644
@@ -15,7 +15,7 @@
 #include "regs/xe_reg_defs.h"
 #include "xe_hw_engine_types.h"
 
-#define XE_OA_BUFFER_SIZE SZ_16M
+#define DEFAULT_XE_OA_BUFFER_SIZE SZ_16M
 
 enum xe_oa_report_header {
 	HDR_32_BIT = 0,
@@ -218,6 +218,9 @@ struct xe_oa_stream {
 	/** @pollin: Whether there is data available to read */
 	bool pollin;
 
+	/** @wait_num_reports: Number of reports to wait for before signalling pollin */
+	int wait_num_reports;
+
 	/** @periodic: Whether periodic sampling is currently enabled */
 	bool periodic;
 
drivers/gpu/drm/xe/xe_query.c +3 -1
index 170ae72d1a7b..1bdffe6315d5 100644
@@ -670,7 +670,9 @@ static int query_oa_units(struct xe_device *xe,
 			du->oa_unit_id = u->oa_unit_id;
 			du->oa_unit_type = u->type;
 			du->oa_timestamp_freq = xe_oa_timestamp_frequency(gt);
-			du->capabilities = DRM_XE_OA_CAPS_BASE | DRM_XE_OA_CAPS_SYNCS;
+			du->capabilities = DRM_XE_OA_CAPS_BASE | DRM_XE_OA_CAPS_SYNCS |
+					   DRM_XE_OA_CAPS_OA_BUFFER_SIZE |
+					   DRM_XE_OA_CAPS_WAIT_NUM_REPORTS;
 
 			j = 0;
 			for_each_hw_engine(hwe, gt, hwe_id) {
drivers/gpu/drm/xe/xe_trace_bo.h +6 -6
index 30a3cfbaaa09..4ff023b5d040 100644
@@ -55,8 +55,8 @@ TRACE_EVENT(xe_bo_move,
 	    TP_STRUCT__entry(
 		     __field(struct xe_bo *, bo)
 		     __field(size_t, size)
-		     __field(u32, new_placement)
-		     __field(u32, old_placement)
+		     __string(new_placement_name, xe_mem_type_to_name[new_placement])
+		     __string(old_placement_name, xe_mem_type_to_name[old_placement])
 		     __string(device_id, __dev_name_bo(bo))
 		     __field(bool, move_lacks_source)
 			),
@@ -64,15 +64,15 @@ TRACE_EVENT(xe_bo_move,
 	    TP_fast_assign(
 		   __entry->bo      = bo;
 		   __entry->size = bo->size;
-		   __entry->new_placement = new_placement;
-		   __entry->old_placement = old_placement;
+		   __assign_str(new_placement_name);
+		   __assign_str(old_placement_name);
 		   __assign_str(device_id);
 		   __entry->move_lacks_source = move_lacks_source;
 		   ),
 	    TP_printk("move_lacks_source:%s, migrate object %p [size %zu] from %s to %s device_id:%s",
 		      __entry->move_lacks_source ? "yes" : "no", __entry->bo, __entry->size,
-		      xe_mem_type_to_name[__entry->old_placement],
-		      xe_mem_type_to_name[__entry->new_placement], __get_str(device_id))
+		      __get_str(old_placement_name),
+		      __get_str(new_placement_name), __get_str(device_id))
 );
 
 DECLARE_EVENT_CLASS(xe_vma,
drivers/gpu/drm/xe/xe_ttm_stolen_mgr.c +30 -24

78 lines not on this page · raw message

drivers/gpu/drm/xlnx/zynqmp_dp.c +1 -1
index 25c5dc61ee88..56a261a40ea3 100644
@@ -2190,7 +2190,7 @@ static int zynqmp_dp_rate_get(void *data, u64 *val)
 	struct zynqmp_dp *dp = data;
 
 	mutex_lock(&dp->lock);
-	*val = drm_dp_bw_code_to_link_rate(dp->test.bw_code) * 10000;
+	*val = drm_dp_bw_code_to_link_rate(dp->test.bw_code) * 10000ULL;
 	mutex_unlock(&dp->lock);
 	return 0;
 }
drivers/gpu/host1x/dev.c +2 -0
index 7b1d091f3c09..46cae925b095 100644
@@ -619,6 +619,8 @@ static int host1x_probe(struct platform_device *pdev)
 		goto free_contexts;
 	}
 
+	mutex_init(&host->intr_mutex);
+
 	pm_runtime_enable(&pdev->dev);
 
 	err = devm_tegra_core_dev_init_opp_table_common(&pdev->dev);
drivers/gpu/host1x/intr.c +0 -2
index b3285dd10180..f77a678949e9 100644
@@ -104,8 +104,6 @@ int host1x_intr_init(struct host1x *host)
 	unsigned int id;
 	int i, err;
 
-	mutex_init(&host->intr_mutex);
-
 	for (id = 0; id < host1x_syncpt_nb_pts(host); ++id) {
 		struct host1x_syncpt *syncpt = &host->syncpt[id];
 
drivers/hid/hid-corsair-void.c +2 -1
index 6ece56b850fc..56e858066c3c 100644
@@ -553,7 +553,7 @@ static void corsair_void_battery_remove_work_handler(struct work_struct *work)
 static void corsair_void_battery_add_work_handler(struct work_struct *work)
 {
 	struct corsair_void_drvdata *drvdata;
-	struct power_supply_config psy_cfg;
+	struct power_supply_config psy_cfg = {};
 	struct power_supply *new_supply;
 
 	drvdata = container_of(work, struct corsair_void_drvdata,
@@ -726,6 +726,7 @@ static void corsair_void_remove(struct hid_device *hid_dev)
 	if (drvdata->battery)
 		power_supply_unregister(drvdata->battery);
 
+	cancel_delayed_work_sync(&drvdata->delayed_status_work);
 	cancel_delayed_work_sync(&drvdata->delayed_firmware_work);
 	sysfs_remove_group(&hid_dev->dev.kobj, &corsair_void_attr_group);
 }
drivers/hid/hid-multitouch.c +4 -1
index 82900857bfd8..e50887a6d22c 100644
@@ -1679,9 +1679,12 @@ static int mt_input_configured(struct hid_device *hdev, struct hid_input *hi)
 		break;
 	}
 
-	if (suffix)
+	if (suffix) {
 		hi->input->name = devm_kasprintf(&hdev->dev, GFP_KERNEL,
 						 "%s %s", hdev->name, suffix);
+		if (!hi->input->name)
+			return -ENOMEM;
+	}
 
 	return 0;
 }
drivers/hid/hid-steam.c +33 -8

89 lines not on this page · raw message

drivers/hid/hid-thrustmaster.c +1 -1
index 6c3e758bbb09..3b81468a1df2 100644
@@ -171,7 +171,7 @@ static void thrustmaster_interrupts(struct hid_device *hdev)
 	b_ep = ep->desc.bEndpointAddress;
 
 	/* Are the expected endpoints present? */
-	u8 ep_addr[1] = {b_ep};
+	u8 ep_addr[2] = {b_ep, 0};
 
 	if (!usb_check_int_endpoints(usbif, ep_addr)) {
 		hid_err(hdev, "Unexpected non-int endpoint\n");
drivers/hid/hid-winwing.c +2 -0
index 831b760c66ea..d4afbbd27807 100644
@@ -106,6 +106,8 @@ static int winwing_init_led(struct hid_device *hdev,
 						"%s::%s",
 						dev_name(&input->dev),
 						info->led_name);
+		if (!led->cdev.name)
+			return -ENOMEM;
 
 		ret = devm_led_classdev_register(&hdev->dev, &led->cdev);
 		if (ret)
drivers/hv/channel_mgmt.c +46 -15

102 lines not on this page · raw message

drivers/hv/connection.c +2 -2
index f001ae880e1d..8351360bba16 100644
@@ -34,8 +34,8 @@ struct vmbus_connection vmbus_connection = {
 
 	.ready_for_suspend_event = COMPLETION_INITIALIZER(
 				  vmbus_connection.ready_for_suspend_event),
-	.ready_for_resume_event	= COMPLETION_INITIALIZER(
-				  vmbus_connection.ready_for_resume_event),
+	.all_offers_delivered_event = COMPLETION_INITIALIZER(
+				  vmbus_connection.all_offers_delivered_event),
 };
 EXPORT_SYMBOL_GPL(vmbus_connection);
 
drivers/hv/hyperv_vmbus.h +3 -11
index 52cb744b4d7f..e4058af98731 100644
@@ -287,18 +287,10 @@ struct vmbus_connection {
 	struct completion ready_for_suspend_event;
 
 	/*
-	 * The number of primary channels that should be "fixed up"
-	 * upon resume: these channels are re-offered upon resume, and some
-	 * fields of the channel offers (i.e. child_relid and connection_id)
-	 * can change, so the old offermsg must be fixed up, before the resume
-	 * callbacks of the VSC drivers start to further touch the channels.
+	 * Completed once the host has offered all boot-time channels.
+	 * Note that some channels may still be under process on a workqueue.
 	 */
-	atomic_t nr_chan_fixup_on_resume;
-	/*
-	 * vmbus_bus_resume() waits for "nr_chan_fixup_on_resume" to
-	 * drop to zero.
-	 */
-	struct completion ready_for_resume_event;
+	struct completion all_offers_delivered_event;
 };
 
 
drivers/hv/vmbus_drv.c +0 -16
index 2892b8da20a5..bf5608a74056 100644
@@ -2427,11 +2427,6 @@ static int vmbus_bus_suspend(struct device *dev)
 	if (atomic_read(&vmbus_connection.nr_chan_close_on_suspend) > 0)
 		wait_for_completion(&vmbus_connection.ready_for_suspend_event);
 
-	if (atomic_read(&vmbus_connection.nr_chan_fixup_on_resume) != 0) {
-		pr_err("Can not suspend due to a previous failed resuming\n");
-		return -EBUSY;
-	}
-
 	mutex_lock(&vmbus_connection.channel_mutex);
 
 	list_for_each_entry(channel, &vmbus_connection.chn_list, listentry) {
@@ -2456,17 +2451,12 @@ static int vmbus_bus_suspend(struct device *dev)
 			pr_err("Sub-channel not deleted!\n");
 			WARN_ON_ONCE(1);
 		}
-
-		atomic_inc(&vmbus_connection.nr_chan_fixup_on_resume);
 	}
 
 	mutex_unlock(&vmbus_connection.channel_mutex);
 
 	vmbus_initiate_unload(false);
 
-	/* Reset the event for the next resume. */
-	reinit_completion(&vmbus_connection.ready_for_resume_event);
-
 	return 0;
 }
 
@@ -2502,14 +2492,8 @@ static int vmbus_bus_resume(struct device *dev)
 	if (ret != 0)
 		return ret;
 
-	WARN_ON(atomic_read(&vmbus_connection.nr_chan_fixup_on_resume) == 0);
-
 	vmbus_request_offers();
 
-	if (wait_for_completion_timeout(
-		&vmbus_connection.ready_for_resume_event, secs_to_jiffies(10)) == 0)
-		pr_err("Some vmbus device is missing after suspending?\n");
-
 	/* Reset the event for the next suspend. */
 	reinit_completion(&vmbus_connection.ready_for_suspend_event);
 
drivers/i3c/master/Kconfig +11 -0
index 90dee3ec5520..77da199c7413 100644
@@ -57,3 +57,14 @@ config MIPI_I3C_HCI
 
 	  This driver can also be built as a module.  If so, the module will be
 	  called mipi-i3c-hci.
+
+config MIPI_I3C_HCI_PCI
+	tristate "MIPI I3C Host Controller Interface PCI support"
+	depends on MIPI_I3C_HCI
+	depends on PCI
+	help
+	  Support for MIPI I3C Host Controller Interface compatible hardware
+	  on the PCI bus.
+
+	  This driver can also be built as a module. If so, the module will be
+	  called mipi-i3c-hci-pci.
drivers/i3c/master/mipi-i3c-hci/Makefile +1 -0
index 1f8cd5c48fde..e3d3ef757035 100644
@@ -5,3 +5,4 @@ mipi-i3c-hci-y				:= core.o ext_caps.o pio.o dma.o \
 					   cmd_v1.o cmd_v2.o \
 					   dat_v1.o dct_v1.o \
 					   hci_quirks.o
+obj-$(CONFIG_MIPI_I3C_HCI_PCI)		+= mipi-i3c-hci-pci.o
drivers/i3c/master/mipi-i3c-hci/dma.c +17 -0
index e8e56a8d2057..491dfe70b660 100644
@@ -758,9 +758,26 @@ static bool hci_dma_irq_handler(struct i3c_hci *hci)
 			complete(&rh->op_done);
 
 		if (status & INTR_TRANSFER_ABORT) {
+			u32 ring_status;
+
 			dev_notice_ratelimited(&hci->master.dev,
 				"ring %d: Transfer Aborted\n", i);
 			mipi_i3c_hci_resume(hci);
+			ring_status = rh_reg_read(RING_STATUS);
+			if (!(ring_status & RING_STATUS_RUNNING) &&
+			    status & INTR_TRANSFER_COMPLETION &&
+			    status & INTR_TRANSFER_ERR) {
+				/*
+				 * Ring stop followed by run is an Intel
+				 * specific required quirk after resuming the
+				 * halted controller. Do it only when the ring
+				 * is not in running state after a transfer
+				 * error.
+				 */
+				rh_reg_write(RING_CONTROL, RING_CTRL_ENABLE);
+				rh_reg_write(RING_CONTROL, RING_CTRL_ENABLE |
+							   RING_CTRL_RUN_STOP);
+			}
 		}
 		if (status & INTR_WARN_INS_STOP_MODE)
 			dev_warn_ratelimited(&hci->master.dev,
drivers/i3c/master/mipi-i3c-hci/mipi-i3c-hci-pci.c new file +148 -0

148 lines not on this page · raw message

drivers/infiniband/hw/efa/efa_main.c +5 -4
index ad225823e6f2..45a4564c670c 100644
@@ -470,7 +470,6 @@ static void efa_ib_device_remove(struct efa_dev *dev)
 	ibdev_info(&dev->ibdev, "Unregister ib device\n");
 	ib_unregister_device(&dev->ibdev);
 	efa_destroy_eqs(dev);
-	efa_com_dev_reset(&dev->edev, EFA_REGS_RESET_NORMAL);
 	efa_release_doorbell_bar(dev);
 }
 
@@ -643,12 +642,14 @@ static struct efa_dev *efa_probe_device(struct pci_dev *pdev)
 	return ERR_PTR(err);
 }
 
-static void efa_remove_device(struct pci_dev *pdev)
+static void efa_remove_device(struct pci_dev *pdev,
+			      enum efa_regs_reset_reason_types reset_reason)
 {
 	struct efa_dev *dev = pci_get_drvdata(pdev);
 	struct efa_com_dev *edev;
 
 	edev = &dev->edev;
+	efa_com_dev_reset(edev, reset_reason);
 	efa_com_admin_destroy(edev);
 	efa_free_irq(dev, &dev->admin_irq);
 	efa_disable_msix(dev);
@@ -676,7 +677,7 @@ static int efa_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	return 0;
 
 err_remove_device:
-	efa_remove_device(pdev);
+	efa_remove_device(pdev, EFA_REGS_RESET_INIT_ERR);
 	return err;
 }
 
@@ -685,7 +686,7 @@ static void efa_remove(struct pci_dev *pdev)
 	struct efa_dev *dev = pci_get_drvdata(pdev);
 
 	efa_ib_device_remove(dev);
-	efa_remove_device(pdev);
+	efa_remove_device(pdev, EFA_REGS_RESET_NORMAL);
 }
 
 static void efa_shutdown(struct pci_dev *pdev)
drivers/iommu/amd/amd_iommu_types.h +1 -0
index fdb0357e0bb9..903b426c9f89 100644
@@ -175,6 +175,7 @@
 #define CONTROL_GAM_EN		25
 #define CONTROL_GALOG_EN	28
 #define CONTROL_GAINT_EN	29
+#define CONTROL_EPH_EN		45
 #define CONTROL_XT_EN		50
 #define CONTROL_INTCAPXT_EN	51
 #define CONTROL_IRTCACHEDIS	59
drivers/iommu/amd/init.c +4 -0
index db4b52aae1fc..4c0f876445de 100644
@@ -2635,6 +2635,10 @@ static void iommu_init_flags(struct amd_iommu *iommu)
 
 	/* Set IOTLB invalidation timeout to 1s */
 	iommu_set_inv_tlb_timeout(iommu, CTRL_INV_TO_1S);
+
+	/* Enable Enhanced Peripheral Page Request Handling */
+	if (check_feature(FEATURE_EPHSUP))
+		iommu_feature_enable(iommu, CONTROL_EPH_EN);
 }
 
 static void iommu_apply_resume_quirks(struct amd_iommu *iommu)
drivers/iommu/intel/prq.c +3 -1
index c2d792db52c3..064194399b38 100644
@@ -87,7 +87,9 @@ void intel_iommu_drain_pasid_prq(struct device *dev, u32 pasid)
 		struct page_req_dsc *req;
 
 		req = &iommu->prq[head / sizeof(*req)];
-		if (!req->pasid_present || req->pasid != pasid) {
+		if (req->rid != sid ||
+		    (req->pasid_present && pasid != req->pasid) ||
+		    (!req->pasid_present && pasid != IOMMU_NO_PASID)) {
 			head = (head + sizeof(*req)) & PRQ_RING_MASK;
 			continue;
 		}
drivers/iommu/io-pgfault.c +1 -0
index 4674e618797c..8b5926c1452e 100644
@@ -478,6 +478,7 @@ void iopf_queue_remove_device(struct iopf_queue *queue, struct device *dev)
 
 		ops->page_response(dev, iopf, &resp);
 		list_del_init(&group->pending_node);
+		iopf_free_group(group);
 	}
 	mutex_unlock(&fault_param->lock);
 
drivers/irqchip/irq-partition-percpu.c +1 -1
index 8e76d2913e6b..4441ffe149ea 100644
@@ -98,7 +98,7 @@ static void partition_irq_print_chip(struct irq_data *d, struct seq_file *p)
 	struct irq_chip *chip = irq_desc_get_chip(part->chained_desc);
 	struct irq_data *data = irq_desc_get_irq_data(part->chained_desc);
 
-	seq_printf(p, " %5s-%lu", chip->name, data->hwirq);
+	seq_printf(p, "%5s-%lu", chip->name, data->hwirq);
 }
 
 static struct irq_chip partition_irq_chip = {
drivers/media/dvb-frontends/cxd2841er.c +2 -6
index d925ca24183b..415f1f91cc30 100644
@@ -311,12 +311,8 @@ static int cxd2841er_set_reg_bits(struct cxd2841er_priv *priv,
 
 static u32 cxd2841er_calc_iffreq_xtal(enum cxd2841er_xtal xtal, u32 ifhz)
 {
-	u64 tmp;
-
-	tmp = (u64) ifhz * 16777216;
-	do_div(tmp, ((xtal == SONY_XTAL_24000) ? 48000000 : 41000000));
-
-	return (u32) tmp;
+	return div_u64(ifhz * 16777216ull,
+		       (xtal == SONY_XTAL_24000) ? 48000000 : 41000000);
 }
 
 static u32 cxd2841er_calc_iffreq(u32 ifhz)
drivers/media/i2c/ds90ub913.c +21 -4
index 9f01950a0ca3..fd2d2d5272bf 100644
@@ -8,6 +8,7 @@
  * Copyright (c) 2023 Tomi Valkeinen <[email protected]>
  */
 
+#include <linux/bitfield.h>
 #include <linux/clk-provider.h>
 #include <linux/clk.h>
 #include <linux/delay.h>
@@ -146,6 +147,19 @@ static int ub913_write(const struct ub913_data *priv, u8 reg, u8 val)
 	return ret;
 }
 
+static int ub913_update_bits(const struct ub913_data *priv, u8 reg, u8 mask,
+			     u8 val)
+{
+	int ret;
+
+	ret = regmap_update_bits(priv->regmap, reg, mask, val);
+	if (ret < 0)
+		dev_err(&priv->client->dev,
+			"Cannot update register 0x%02x %d!\n", reg, ret);
+
+	return ret;
+}
+
 /*
  * GPIO chip
  */
@@ -733,10 +747,13 @@ static int ub913_hw_init(struct ub913_data *priv)
 	if (ret)
 		return dev_err_probe(dev, ret, "i2c master init failed\n");
 
-	ub913_read(priv, UB913_REG_GENERAL_CFG, &v);
-	v &= ~UB913_REG_GENERAL_CFG_PCLK_RISING;
-	v |= priv->pclk_polarity_rising ? UB913_REG_GENERAL_CFG_PCLK_RISING : 0;
-	ub913_write(priv, UB913_REG_GENERAL_CFG, v);
+	ret = ub913_update_bits(priv, UB913_REG_GENERAL_CFG,
+				UB913_REG_GENERAL_CFG_PCLK_RISING,
+				FIELD_PREP(UB913_REG_GENERAL_CFG_PCLK_RISING,
+					   priv->pclk_polarity_rising));
+
+	if (ret)
+		return ret;
 
 	return 0;
 }
drivers/media/i2c/ds90ub953.c +32 -14

23 lines not on this page · raw message

drivers/media/platform/broadcom/bcm2835-unicam.c +1 -7
index 3aed0e493c81..4090a8e47740 100644

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

drivers/media/test-drivers/vidtv/vidtv_bridge.c +7 -1
index e1dd8adeba46..438483c62fac 100644

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

drivers/media/usb/uvc/uvc_driver.c +18 -0
index 31b4b54657fe..011a14506ea0 100644

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

drivers/media/usb/uvc/uvc_video.c +26 -1
index d2fe01bcd209..eab7b8f55730 100644

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

drivers/media/usb/uvc/uvcvideo.h +1 -0
index 5690cfd61e23..7daf2aca29b7 100644

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

drivers/mmc/host/mtk-sd.c +20 -11
index af445d3f8e2a..5ab7a26529a0 100644

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

drivers/mmc/host/sdhci_am654.c +0 -30
index b73f673db92b..f75c31815ab0 100644

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

drivers/net/can/c_can/c_can_platform.c +3 -2
index 6cba9717a6d8..399844809bbe 100644

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

drivers/net/can/ctucanfd/ctucanfd_base.c +6 -4
index 64c349fd4600..f65c1a1e05cc 100644

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

drivers/net/can/rockchip/rockchip_canfd-core.c +1 -1
index df18c85fc078..d9a937ba126c 100644

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

drivers/net/can/usb/etas_es58x/es58x_devlink.c +5 -1
index eee20839d96f..0d155eb1b9e9 100644

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

drivers/net/ethernet/intel/idpf/idpf_lib.c +5 -0
index b4fbb99bfad2..a3d6b8f198a8 100644

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

drivers/net/ethernet/intel/idpf/idpf_txrx.c +1 -4
index 2fa9c36e33c9..9be6a6b59c4e 100644

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

drivers/net/ethernet/intel/igc/igc_main.c +13 -9
index 27872bdea9bd..8dd0fb86e3a2 100644

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

drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c +3 -1
index 2bed8c86b7cf..3f64cdbabfa3 100644

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

drivers/net/ethernet/ti/am65-cpsw-nuss.c +31 -19

50 lines not on this page · raw message

drivers/net/team/team_core.c +3 -1
index dc7cbd6a9798..f4019815f473 100644

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

drivers/net/vxlan/vxlan_core.c +5 -2
index 9ea63059d52d..cbe0f191a116 100644

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

drivers/net/wireless/ath/ath12k/wmi.c +45 -16

61 lines not on this page · raw message

drivers/net/wireless/ath/ath12k/wmi.h +0 -1
index 6f55dbdf629d..b16615b116ae 100644

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

drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c +2 -2
index e4395b1f8c11..d2caa80e9412 100644

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

drivers/parport/parport_serial.c +8 -4
index 3644997a8342..24d4f3a3ec3d 100644

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

drivers/pci/controller/pcie-mediatek-gen3.c +41 -18

59 lines not on this page · raw message

drivers/pci/endpoint/pci-epc-core.c +9 -2
index 75c668829003..111caa42f6b7 100644

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

drivers/pci/quirks.c +14 -1
index 76f4df75b08a..0a1f668999ce 100644

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

drivers/pci/switch/switchtec.c +26 -0
index c7e1089ffdaf..b14dfab04d84 100644

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

drivers/pinctrl/pinconf-generic.c +4 -4
index 0b13d7f17b32..42547f64453e 100644

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

drivers/pinctrl/pinctrl-cy8c95x0.c +25 -17

42 lines not on this page · raw message

drivers/ptp/ptp_vmclock.c +5 -3
index 0a2cfc8ad3c5..9b8bd626a397 100644

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

drivers/regulator/core.c +27 -34

61 lines not on this page · raw message

drivers/soc/qcom/llcc-qcom.c +55 -2

57 lines not on this page · raw message

drivers/soc/qcom/smp2p.c +1 -1
index 4783ab1adb8d..a3e88ced328a 100644

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

drivers/soc/tegra/fuse/fuse-tegra30.c +11 -6
index eb14e5ff5a0a..e24ab5f7d2bf 100644

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

drivers/spi/spi-sn-f-ospi.c +3 -0
index adac645732fe..56ef114effc9 100644

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

drivers/tty/serial/8250/8250.h +2 -0
index e5310c65cf52..10a706fe4b24 100644

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

drivers/tty/serial/8250/8250_dma.c +16 -0
index d215c494ee24..f245a84f4a50 100644

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

drivers/tty/serial/8250/8250_pci.c +35 -41

76 lines not on this page · raw message

drivers/tty/serial/8250/8250_pci1xxxx.c +59 -1

60 lines not on this page · raw message

drivers/tty/serial/8250/8250_port.c +9 -0
index b8babbdec8f3..27572e5f1ff1 100644

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

drivers/tty/serial/serial_port.c +3 -2
index d35f1d24156c..85285c56fabf 100644

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

drivers/ufs/core/ufs_bsg.c +1 -0
index 58023f735c19..8d4ad0a3f2cf 100644

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

drivers/ufs/core/ufshcd.c +67 -60

127 lines not on this page · raw message

drivers/usb/class/cdc-acm.c +21 -7
index 6b37d1c47fce..c2ecfa3c8349 100644

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

drivers/usb/core/hub.c +12 -2
index 21ac9b464696..906daf423cb0 100644

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

drivers/usb/core/quirks.c +6 -0
index 13171454f959..027479179f09 100644

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

drivers/usb/dwc2/gadget.c +1 -0
index e7bf9cc635be..bd4c788f03bc 100644

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

drivers/usb/dwc3/gadget.c +34 -0
index 31a654c6f15b..329bc164241a 100644

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

drivers/usb/gadget/function/f_midi.c +13 -4
index 837fcdfa3840..47260d65066a 100644

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

drivers/usb/gadget/udc/core.c +1 -1
index a6f46364be65..4b3d5075621a 100644

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

drivers/usb/gadget/udc/renesas_usb3.c +1 -1
index fce5c41d9f29..89b304cf6d03 100644

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

drivers/usb/host/pci-quirks.c +9 -0
index 1f9c1b1435d8..0404489c2f6a 100644

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

drivers/usb/host/xhci-pci.c +4 -3
index 2d1e205c14c6..ad0ff356f6fa 100644

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

drivers/usb/roles/class.c +3 -2
index c58a12c147f4..30482d4cf826 100644

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

drivers/usb/serial/option.c +29 -20

49 lines not on this page · raw message

drivers/usb/typec/tcpm/tcpm.c +1 -2
index a22c1644d0f7..061c04efffa7 100644

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

drivers/vfio/pci/nvgrace-gpu/main.c +73 -22

95 lines not on this page · raw message

drivers/vfio/pci/vfio_pci_rdwr.c +1 -0
index 66b72c289284..a0595c745732 100644

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

drivers/vfio/platform/vfio_platform_common.c +0 -10
index d63c2d266d07..3bf1043cd795 100644

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

drivers/video/fbdev/omap/lcd_dma.c +2 -2
index f85817635a8c..0da23c57e475 100644

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

drivers/xen/swiotlb-xen.c +12 -8
index a337edcf8faf..26c62e0d34e9 100644

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

fs/btrfs/extent_io.c +20 -9
index b923d0cec61c..d14ecbe24d77 100644

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

fs/btrfs/file.c +1 -3
index 4d7c7a296d2d..6542ee00bf39 100644

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

fs/nfs/sysfs.c +3 -3
index bf378ecd5d9f..7b59a40d40c0 100644

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

fs/nfsd/filecache.c +10 -1
index a1cdba42c4fa..78f4b5573b90 100644

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

fs/nfsd/nfs2acl.c +2 -0
index 4e3be7201b1c..5fb202acb0fd 100644

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

fs/nfsd/nfs3acl.c +2 -0
index 5e34e98db969..7b5433bd3019 100644

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

fs/nfsd/nfs4callback.c +5 -2
index c083e539e898..b7b70ab962f8 100644

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

fs/ntfs3/attrib.c +8 -7
index 8d789b017fa9..af94e3737470 100644

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

fs/ntfs3/dir.c +1 -1
index fc6a8aa29e3a..b6da80c69ca6 100644

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

fs/ntfs3/frecord.c +38 -33

71 lines not on this page · raw message

fs/ntfs3/fsntfs.c +5 -1
index 03471bc9371c..938d351ebac7 100644

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

fs/ntfs3/index.c +2 -4
index 9089c58a005c..7eb9fae22f8d 100644

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

fs/ntfs3/inode.c +3 -0
index be04d2845bb7..a1e11228dafd 100644

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

fs/ntfs3/ntfs_fs.h +11 -10
index cd8e8374bb5a..382820464dee 100644

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

fs/ntfs3/record.c +42 -37

79 lines not on this page · raw message

fs/orangefs/orangefs-debugfs.c +2 -2
index 1b508f543384..fa41db088488 100644

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

fs/smb/client/cifsglob.h +0 -1
index cf53503e001e..1e6085f2f78e 100644

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

fs/smb/client/file.c +4 -3
index 3b2d33291a7e..a34de8ed5ed1 100644

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

include/drm/display/drm_dp.h +1 -0
index a6f8b098c56f..3bd9f482f0c3 100644

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

include/kunit/platform_device.h +1 -0
index 0fc0999d2420..f8236a8536f7 100644

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

include/linux/blk-mq.h +14 -4
index c596e0e4cb75..7b19b83349cf 100644

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

include/linux/cgroup-defs.h +3 -3
index 1b20d2d8ef7c..17960a1e858d 100644

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

include/linux/compiler.h +13 -13
index 240c632c5b95..7af999a131cb 100644

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

include/linux/efi.h +1 -0
index e5815867aba9..8bcd629ee250 100644

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

include/linux/netdevice.h +6 -0
index 3928e91bb590..8268be0723ee 100644

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

include/linux/pci_ids.h +11 -0
index d2402bf4aea2..de5deb1a0118 100644

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

include/linux/sched/task.h +1 -0
index 0f2aeb37bbb0..ca1db4b92c32 100644

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

include/net/dst.h +9 -0
index 0f303cc60252..08647c99d79c 100644

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

include/net/ip.h +10 -3
index 0e548c1f2a0e..23ecb10945b0 100644

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

include/net/l3mdev.h +2 -0
index 2d6141f28b53..f7fe796e8429 100644

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

include/net/net_namespace.h +1 -1
index 5a2a0df8ad91..44be742cf4d6 100644

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

include/net/route.h +7 -2
index 84cb1e04f5cd..64949854d35d 100644

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

include/uapi/drm/xe_drm.h +16 -0
index 4a8a4a63e99c..f62689ca861a 100644

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

include/uapi/linux/thermal.h +1 -1
index 349718c271eb..46a2633d33aa 100644

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

include/ufs/ufshcd.h +7 -2
index 82b2d2b25c23..ee2adc4de05e 100644

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

io_uring/kbuf.c +11 -4
index eec5eb7de843..e1895952066e 100644

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

io_uring/uring_cmd.c +11 -21
index 25cae9f5575b..8c44a5198414 100644

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

io_uring/waitid.c +2 -2
index daef5dd644f0..eddd2dffc88b 100644

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

kernel/cgroup/cgroup.c +12 -8
index d9061bd55436..afc665b7b1fe 100644

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

kernel/cgroup/rstat.c +0 -1
index 5877974ece92..aac91466279f 100644

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

kernel/sched/autogroup.c +2 -2
index db68a964e34e..c4a3ccf6a8ac 100644

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

kernel/sched/core.c +4 -3
index ffceb5ff4c5c..aeba4e920102 100644

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

kernel/sched/ext.c +43 -28

71 lines not on this page · raw message

kernel/sched/ext.h +2 -2
index 4d022d17ac7d..1079b56b0f7a 100644

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

kernel/sched/sched.h +1 -1
index c5d67a43fe52..66744d60904d 100644

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

kernel/time/clocksource.c +6 -3
index 7304d7cf47f2..2a7802ec480c 100644

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

kernel/trace/ring_buffer.c +26 -2
index 6b888699f916..2bbc96568a2b 100644

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

kernel/trace/trace.c +4 -0
index b6e40e8791fa..d2267b4406cd 100644

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

kernel/workqueue.c +6 -6
index 9362484a653c..218f8c138808 100644

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

net/ax25/af_ax25.c +11 -0
index aa6c714892ec..9f3b8b682adb 100644

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

net/batman-adv/bat_v.c +0 -2
index ac11f1f08db0..d35479c465e2 100644

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

net/batman-adv/bat_v_elp.c +86 -36

122 lines not on this page · raw message

net/batman-adv/bat_v_elp.h +0 -2
index 9e2740195fa2..c9cb0a307100 100644

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

net/batman-adv/translation-table.c +5 -7
index 760d51fdbdf6..7d5de4cbb814 100644

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

net/batman-adv/types.h +0 -3
index 04f6398b3a40..85a50096f5b2 100644

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

net/can/j1939/socket.c +2 -2
index 305dd72c844c..17226b2341d0 100644

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

net/can/j1939/transport.c +3 -2
index 95f7a7e65a73..9b72d118d756 100644

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

net/core/fib_rules.c +13 -11
index 34185d138c95..ff1cebd71f7b 100644

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

net/core/flow_dissector.c +11 -10
index 0e638a37aa09..5db41bf2ed93 100644

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

net/core/neighbour.c +6 -2
index 89656d180bc6..bd0251bd74a1 100644

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

net/core/rtnetlink.c +1 -0
index d9f959c619d9..b7cc30fd80e8 100644

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

net/ipv4/arp.c +3 -1
index cb9a7ed8abd3..f23a1ec6694c 100644

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

net/ipv4/devinet.c +2 -1
index c8b3cf5fba4c..55b8151759bc 100644

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

net/ipv4/icmp.c +17 -14
index 094084b61bff..5482edb5aade 100644

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

net/ipv4/route.c +21 -9
index 3a1467f2d553..cf84704af25c 100644

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

net/ipv6/icmp.c +23 -19

42 lines not on this page · raw message

net/ipv6/ioam6_iptunnel.c +40 -35

75 lines not on this page · raw message

net/ipv6/mcast.c +25 -20

45 lines not on this page · raw message

net/ipv6/ndisc.c +13 -11
index d044c67019de..8699d1a188dc 100644

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

net/ipv6/route.c +6 -1
index 67ff16c04718..997e2e4f441d 100644

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

net/ipv6/rpl_iptunnel.c +34 -25

59 lines not on this page · raw message

net/ipv6/seg6_iptunnel.c +61 -37

98 lines not on this page · raw message

net/openvswitch/datapath.c +9 -3
index 225f6048867f..5d548eda742d 100644

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

net/vmw_vsock/af_vsock.c +11 -1
index 141697e7a833..53a081d49d28 100644

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

rust/Makefile +1 -0
index a40a3936126d..43cd7f845a9a 100644

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

rust/kernel/rbtree.rs +1 -1
index cb4415a12258..571e27efe544 100644

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

samples/hid/Makefile +7 -6
index 8ea59e9631a3..db5a077c77fc 100644

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

scripts/Makefile.defconf +7 -6
index 226ea3df3b4b..a44307f08e9d 100644

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

scripts/Makefile.extrawarn +8 -5
index 04faf15ed316..dc081cf46d21 100644

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

scripts/kconfig/Makefile +3 -1
index a0a0be38cbdc..fb50bd4f4103 100644

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

sound/soc/intel/boards/bytcr_rt5640.c +16 -1
index 9caa4407c1ca..6446cda0f857 100644

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

sound/soc/renesas/Kconfig +1 -1
index 426632996a0a..cb01fb36355f 100644

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

tools/objtool/check.c +1 -0
index 76060da755b5..e7ec29dfdff2 100644

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

tools/sched_ext/include/scx/common.bpf.h +10 -2
index 625f5b046776..9fa64b053ba9 100644

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

tools/testing/selftests/gpio/gpio-sim.sh +25 -6
index 6fb66a687f17..bbc29ed9c60a 100755

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

tools/tracing/rtla/src/timerlat_hist.c +8 -0
index 90b33b0c4391..446d650f0c94 100644

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

tools/tracing/rtla/src/timerlat_top.c +8 -0
index 139eb58336c3..f387597d3ac2 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.