Skip to contentSkip to conversation

Linux 6.13.7

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Mar 13, 2025 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 6.13.7 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/admin-guide/sysctl/kernel.rst               |   11 
 Documentation/devicetree/bindings/iio/adc/adi,ad7606.yaml |    1 
 Makefile                                                  |    7 
 arch/arm/mm/fault-armv.c                                  |   37 +-
 arch/arm64/include/asm/hugetlb.h                          |    4 
 arch/arm64/mm/hugetlbpage.c                               |   61 +---
 arch/loongarch/include/asm/bug.h                          |   13 
 arch/loongarch/include/asm/hugetlb.h                      |    6 
 arch/loongarch/kernel/machine_kexec.c                     |    4 
 arch/loongarch/kernel/setup.c                             |    3 
 arch/loongarch/kernel/smp.c                               |   47 +++
 arch/loongarch/kvm/exit.c                                 |    6 
 arch/loongarch/kvm/main.c                                 |    7 
 arch/loongarch/kvm/vcpu.c                                 |    2 
 arch/loongarch/kvm/vm.c                                   |    6 
 arch/loongarch/mm/mmap.c                                  |    6 
 arch/mips/include/asm/hugetlb.h                           |    6 
 arch/parisc/include/asm/hugetlb.h                         |    2 
 arch/parisc/mm/hugetlbpage.c                              |    2 
 arch/powerpc/include/asm/hugetlb.h                        |    6 
 arch/riscv/include/asm/hugetlb.h                          |    3 
 arch/riscv/mm/hugetlbpage.c                               |    2 
 arch/s390/include/asm/hugetlb.h                           |   18 -
 arch/s390/kernel/traps.c                                  |    6 
 arch/s390/mm/hugetlbpage.c                                |    4 
 arch/sparc/include/asm/hugetlb.h                          |    2 
 arch/sparc/mm/hugetlbpage.c                               |    2 
 arch/x86/boot/compressed/pgtable_64.c                     |    2 
 arch/x86/include/asm/kvm_host.h                           |    1 
 arch/x86/kernel/amd_nb.c                                  |    9 
 arch/x86/kernel/cpu/cacheinfo.c                           |    2 
 arch/x86/kernel/cpu/intel.c                               |   52 ++-
 arch/x86/kernel/cpu/microcode/amd.c                       |    6 
 arch/x86/kernel/cpu/sgx/ioctl.c                           |    7 
 arch/x86/kvm/cpuid.c                                      |    2 
 arch/x86/kvm/svm/sev.c                                    |   13 
 arch/x86/kvm/svm/svm.c                                    |   49 +++
 arch/x86/kvm/svm/svm.h                                    |    2 
 arch/x86/kvm/svm/vmenter.S                                |   10 
 arch/x86/kvm/vmx/vmx.c                                    |    8 
 arch/x86/kvm/vmx/vmx.h                                    |    2 
 arch/x86/kvm/x86.c                                        |    2 
 block/partitions/efi.c                                    |    2 
 drivers/base/core.c                                       |    1 
 drivers/block/ublk_drv.c                                  |    7 
 drivers/bluetooth/btusb.c                                 |    1 
 drivers/bus/mhi/host/pci_generic.c                        |    5 
 drivers/cdx/cdx.c                                         |    6 
 drivers/char/misc.c                                       |    2 
 drivers/gpio/gpio-aggregator.c                            |   20 +
 drivers/gpio/gpio-rcar.c                                  |   31 +-
 drivers/gpu/drm/amd/amdkfd/kfd_queue.c                    |    4 
 drivers/gpu/drm/amd/display/dc/core/dc_resource.c         |    3 
 drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0.c            |   12 
 drivers/gpu/drm/imagination/pvr_fw_meta.c                 |    6 
 drivers/gpu/drm/imagination/pvr_fw_trace.c                |    4 
 drivers/gpu/drm/imagination/pvr_queue.c                   |   18 -
 drivers/gpu/drm/imagination/pvr_queue.h                   |    4 
 drivers/gpu/drm/imagination/pvr_vm.c                      |  134 +++++++--
 drivers/gpu/drm/imagination/pvr_vm.h                      |    3 
 drivers/gpu/drm/nouveau/Kconfig                           |    1 
 drivers/gpu/drm/radeon/r300.c                             |    3 
 drivers/gpu/drm/radeon/radeon_asic.h                      |    1 
 drivers/gpu/drm/radeon/rs400.c                            |   18 +
 drivers/gpu/drm/scheduler/gpu_scheduler_trace.h           |    4 
 drivers/gpu/drm/tiny/bochs.c                              |    5 
 drivers/gpu/drm/xe/display/xe_plane_initial.c             |   10 
 drivers/gpu/drm/xe/xe_gt.c                                |    4 
 drivers/gpu/drm/xe/xe_hmm.c                               |  188 +++++++++----
 drivers/gpu/drm/xe/xe_hmm.h                               |    7 
 drivers/gpu/drm/xe/xe_pt.c                                |   96 +++---
 drivers/gpu/drm/xe/xe_pt_walk.c                           |    3 
 drivers/gpu/drm/xe/xe_pt_walk.h                           |    4 
 drivers/gpu/drm/xe/xe_vm.c                                |  100 ++++---
 drivers/gpu/drm/xe/xe_vm.h                                |   10 
 drivers/gpu/drm/xe/xe_vm_types.h                          |    8 
 drivers/hid/hid-appleir.c                                 |    2 
 drivers/hid/hid-corsair-void.c                            |   83 +++--
 drivers/hid/hid-google-hammer.c                           |    2 
 drivers/hid/hid-steam.c                                   |    2 
 drivers/hid/intel-ish-hid/ishtp-hid-client.c              |    2 
 drivers/hid/intel-ish-hid/ishtp-hid.c                     |    4 
 drivers/hwmon/ad7314.c                                    |   10 
 drivers/hwmon/ntc_thermistor.c                            |   66 ++--
 drivers/hwmon/peci/dimmtemp.c                             |   10 
 drivers/hwmon/pmbus/pmbus.c                               |    2 
 drivers/hwmon/xgene-hwmon.c                               |    2 
 drivers/hwtracing/intel_th/pci.c                          |   15 +
 drivers/iio/adc/ad7192.c                                  |    2 
 drivers/iio/adc/ad7606.c                                  |    2 
 drivers/iio/adc/at91-sama5d2_adc.c                        |   68 ++--
 drivers/iio/dac/ad3552r.c                                 |    6 
 drivers/iio/filter/admv8818.c                             |   14 
 drivers/iio/light/apds9306.c                              |    4 
 drivers/iio/light/hid-sensor-prox.c                       |    7 
 drivers/misc/cardreader/rtsx_usb.c                        |   15 -
 drivers/misc/eeprom/digsy_mtc_eeprom.c                    |    2 
 drivers/misc/mei/hw-me-regs.h                             |    2 
 drivers/misc/mei/pci-me.c                                 |    2 
 drivers/misc/mei/vsc-tp.c                                 |    2 
 drivers/net/caif/caif_virtio.c                            |    2 
 drivers/net/dsa/mt7530.c                                  |    8 
 drivers/net/ethernet/emulex/benet/be.h                    |    2 
 drivers/net/ethernet/emulex/benet/be_cmds.c               |  197 ++++++--------
 drivers/net/ethernet/emulex/benet/be_main.c               |    2 
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_ptp.c    |    2 
 drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c      |    6 
 drivers/net/ipa/data/ipa_data-v4.7.c                      |   18 -
 drivers/net/mctp/mctp-i3c.c                               |    3 
 drivers/net/phy/phy.c                                     |   43 +++
 drivers/net/phy/phy_device.c                              |    2 
 drivers/net/ppp/ppp_generic.c                             |   28 +
 drivers/net/wireless/intel/iwlwifi/fw/dump.c              |    3 
 drivers/net/wireless/intel/iwlwifi/iwl-drv.c              |    2 
 drivers/net/wireless/intel/iwlwifi/mvm/d3.c               |   77 +++--
 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c          |    7 
 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c       |    2 
 drivers/net/wireless/intel/iwlwifi/pcie/internal.h        |    5 
 drivers/net/wireless/intel/iwlwifi/pcie/tx-gen2.c         |    6 
 drivers/net/wireless/intel/iwlwifi/pcie/tx.c              |   23 -
 drivers/nvme/host/ioctl.c                                 |   12 
 drivers/nvme/host/tcp.c                                   |   81 +++++
 drivers/nvme/target/nvmet.h                               |    1 
 drivers/nvme/target/tcp.c                                 |   15 -
 drivers/of/of_reserved_mem.c                              |    4 
 drivers/platform/x86/thinkpad_acpi.c                      |    1 
 drivers/rapidio/devices/rio_mport_cdev.c                  |    3 
 drivers/rapidio/rio-scan.c                                |    5 
 drivers/slimbus/messaging.c                               |    5 
 drivers/usb/atm/cxacru.c                                  |   13 
 drivers/usb/core/hub.c                                    |   33 ++
 drivers/usb/core/quirks.c                                 |    4 
 drivers/usb/dwc3/core.c                                   |   85 +++---
 drivers/usb/dwc3/core.h                                   |    2 
 drivers/usb/dwc3/drd.c                                    |    4 
 drivers/usb/dwc3/gadget.c                                 |   10 
 drivers/usb/gadget/composite.c                            |   17 -
 drivers/usb/gadget/function/u_ether.c                     |    4 
 drivers/usb/host/xhci-hub.c                               |    8 
 drivers/usb/host/xhci-mem.c                               |    3 
 drivers/usb/host/xhci-pci.c                               |   10 
 drivers/usb/host/xhci.c                                   |    6 
 drivers/usb/host/xhci.h                                   |    2 
 drivers/usb/renesas_usbhs/common.c                        |    6 
 drivers/usb/renesas_usbhs/mod_gadget.c                    |    2 
 drivers/usb/typec/tcpm/tcpci_rt1711h.c                    |   11 
 drivers/usb/typec/ucsi/ucsi.c                             |   25 -
 drivers/usb/typec/ucsi/ucsi.h                             |    2 
 drivers/usb/typec/ucsi/ucsi_acpi.c                        |   21 -
 drivers/usb/typec/ucsi/ucsi_ccg.c                         |    1 
 drivers/usb/typec/ucsi/ucsi_glink.c                       |    1 
 drivers/usb/typec/ucsi/ucsi_stm32g0.c                     |    1 
 drivers/usb/typec/ucsi/ucsi_yoga_c630.c                   |    1 
 drivers/virt/acrn/hsm.c                                   |    6 
 drivers/virt/coco/sev-guest/sev-guest.c                   |   24 +
 fs/btrfs/inode.c                                          |    9 
 fs/btrfs/volumes.c                                        |    1 
 fs/coredump.c                                             |   15 -
 fs/exfat/balloc.c                                         |   10 
 fs/exfat/exfat_fs.h                                       |    2 
 fs/exfat/fatent.c                                         |   11 
 fs/exfat/file.c                                           |    2 
 fs/exfat/namei.c                                          |    2 
 fs/nfs/file.c                                             |    3 
 fs/smb/client/cifsglob.h                                  |    6 
 fs/smb/client/inode.c                                     |    2 
 fs/smb/client/reparse.h                                   |   28 +
 fs/smb/client/smb1ops.c                                   |    4 
 fs/smb/client/smb2inode.c                                 |    4 
 fs/smb/client/smb2ops.c                                   |    3 
 fs/smb/server/smb2pdu.c                                   |    8 
 fs/smb/server/smbacl.c                                    |   16 +
 fs/smb/server/transport_ipc.c                             |    1 
 include/asm-generic/hugetlb.h                             |    2 
 include/linux/compaction.h                                |    5 
 include/linux/cred.h                                      |    9 
 include/linux/ethtool.h                                   |   23 +
 include/linux/hugetlb.h                                   |    4 
 include/linux/nvme-tcp.h                                  |    2 
 include/linux/phy.h                                       |   36 ++
 include/linux/phylib_stubs.h                              |   42 ++
 include/linux/sched.h                                     |    2 
 kernel/events/core.c                                      |    4 
 kernel/sched/fair.c                                       |    6 
 kernel/trace/trace_fprobe.c                               |   15 +
 kernel/trace/trace_probe.h                                |    2 
 mm/compaction.c                                           |    3 
 mm/hugetlb.c                                              |    4 
 mm/internal.h                                             |    5 
 mm/kmsan/hooks.c                                          |    1 
 mm/memory-failure.c                                       |   63 ++--
 mm/memory.c                                               |   21 -
 mm/memory_hotplug.c                                       |   26 -
 mm/page_alloc.c                                           |    4 
 mm/userfaultfd.c                                          |   17 +
 mm/vma.c                                                  |   12 
 mm/vmalloc.c                                              |    4 
 net/8021q/vlan.c                                          |    3 
 net/bluetooth/mgmt.c                                      |    5 
 net/ethtool/cabletest.c                                   |    8 
 net/ethtool/linkstate.c                                   |   26 +
 net/ethtool/netlink.c                                     |    6 
 net/ethtool/netlink.h                                     |    5 
 net/ethtool/phy.c                                         |    2 
 net/ethtool/plca.c                                        |    6 
 net/ethtool/pse-pd.c                                      |    4 
 net/ethtool/stats.c                                       |   18 +
 net/ethtool/strset.c                                      |    2 
 net/ipv4/tcp_offload.c                                    |   11 
 net/ipv4/udp_offload.c                                    |    8 
 net/ipv6/ila/ila_lwt.c                                    |    4 
 net/llc/llc_s_ac.c                                        |   49 +--
 net/mac80211/ieee80211_i.h                                |    2 
 net/mac80211/mlme.c                                       |    1 
 net/mac80211/parse.c                                      |  164 ++++++++---
 net/mptcp/pm_netlink.c                                    |   18 +
 net/wireless/nl80211.c                                    |    5 
 net/wireless/reg.c                                        |    3 
 rust/kernel/block/mq/gen_disk.rs                          |    6 
 sound/core/seq/seq_clientmgr.c                            |   46 ++-
 sound/pci/hda/Kconfig                                     |    1 
 sound/pci/hda/hda_intel.c                                 |    2 
 sound/pci/hda/patch_realtek.c                             |  107 ++++++-
 sound/usb/usx2y/usbusx2y.c                                |   11 
 sound/usb/usx2y/usbusx2y.h                                |   26 +
 sound/usb/usx2y/usbusx2yaudio.c                           |   27 -
 tools/testing/selftests/damon/damon_nr_regions.py         |    2 
 tools/testing/selftests/damon/damos_quota.py              |    9 
 tools/testing/selftests/damon/damos_quota_goal.py         |    3 
 tools/testing/selftests/mm/hugepage-mremap.c              |    2 
 tools/testing/selftests/mm/ksm_functional_tests.c         |    8 
 tools/testing/selftests/mm/memfd_secret.c                 |   14 
 tools/testing/selftests/mm/mkdirty.c                      |    8 
 tools/testing/selftests/mm/mlock2.h                       |    1 
 tools/testing/selftests/mm/protection_keys.c              |    2 
 tools/testing/selftests/mm/uffd-common.c                  |    4 
 tools/testing/selftests/mm/uffd-stress.c                  |   15 -
 tools/testing/selftests/mm/uffd-unit-tests.c              |   14 
 usr/include/Makefile                                      |    2 
 239 files changed, 2390 insertions(+), 1068 deletions(-)

Ahmed S. Darwish (3):

      x86/cacheinfo: Validate CPUID leaf 0x2 EDX output
      x86/cpu: Validate CPUID leaf 0x2 EDX output
      x86/cpu: Properly parse CPUID leaf 0x2 TLB descriptor 0x63

Alessio Belle (1):
drm/imagination: Fix timestamps in firmware traces

Alexander Shishkin (2):
intel_th: pci: Add Panther Lake-H support
intel_th: pci: Add Panther Lake-P/U support

Alexander Usyskin (1):
mei: me: add panther lake P DID

Andrei Kuchynski (1):
usb: typec: ucsi: Fix NULL pointer access

Andrew Cooper (1):
x86/amd_nb: Use rdmsr_safe() in amd_get_mmconfig_range()

Andrew Martin (1):
drm/amdkfd: Fix NULL Pointer Dereference in KFD queue

Andy Shevchenko (1):
eeprom: digsy_mtc: Make GPIO lookup table match the device

Angelo Dureghello (3):
iio: dac: ad3552r: clear reset status flag
dt-bindings: iio: dac: adi-axi-adc: fix ad7606 pwm-names
iio: adc: ad7606: fix wrong scale available

AngeloGioacchino Del Regno (1):
usb: typec: tcpci_rt1711h: Unmask alert interrupts to fix functionality

Antheas Kapenekakis (1):
ALSA: hda/realtek: Remove (revert) duplicate Ally X config

Antoine Tenart (1):
net: gso: fix ownership in __udp_gso_segment

Ard Biesheuvel (1):
x86/boot: Sanitize boot params before parsing command line

Arnd Bergmann (2):
kbuild: hdrcheck: fix cross build with clang
ALSA: hda: realtek: fix incorrect IS_REACHABLE() usage

Badhri Jagan Sridharan (1):
usb: dwc3: gadget: Prevent irq storm when TH re-executes

Benjamin Berg (1):
wifi: iwlwifi: mvm: log error for failures after D3

Bibo Mao (5):
LoongArch: Set hugetlb mmap base address aligned with pmd size
LoongArch: Set max_pfn with the PFN of the last page
LoongArch: KVM: Add interrupt checking for AVEC
LoongArch: KVM: Reload guest CSR registers after sleep
LoongArch: KVM: Fix GPA size issue about VM

Borislav Petkov (AMD) (1):
x86/microcode/AMD: Add some forgotten models to the SHA check

Brendan King (3):
drm/imagination: avoid deadlock on fence release drm/imagination: Hold drm_gem_gpuva lock for unmap drm/imagination: only init job done fences once

Brian Geffon (1):
mm: fix finish_fault() handling for large folios

Christian A. Ehrhardt (1):

      acpi: typec: ucsi: Introduce a ->poll_cci method

Christian Brauner (1):
cred: return old creds from revert_creds_light()

Christian Heusel (1):
Revert "drivers/card_reader/rtsx_usb: Restore interrupt based detection"

Claudiu Beznea (3):
usb: renesas_usbhs: Call clk_put()
usb: renesas_usbhs: Use devm_usb_get_phy()
usb: renesas_usbhs: Flush the notify_hotplug_work

Dan Carpenter (1):
nvme-tcp: fix signedness bug in nvme_tcp_init_connection()

Daniil Dulov (1):
HID: appleir: Fix potential NULL dereference at raw event handle

Dave Airlie (1):
drm/nouveau: select FW caching

Emmanuel Grumbach (2):
wifi: iwlwifi: mvm: don't dump the firmware state upon RFKILL while suspend
wifi: iwlwifi: mvm: don't try to talk to a dead firmware

Eric Dumazet (1):
llc: do not use skb_get() before dev_queue_xmit()

Eric Sandeen (1):
exfat: short-circuit zero-byte writes in exfat_file_write_iter

Erik Schumacher (1):
hwmon: (ad7314) Validate leading zero bits and return error

Fabrizio Castro (1):
gpio: rcar: Fix missing of_node_put() call

Fedor Pchelkin (1):
usb: typec: ucsi: increase timeout for PPM reset operations

Gabriel Krisman Bertazi (1):

      Revert "mm/page_alloc.c: don't show protection in zone's ->lowmem_reserve[] for empty zone"

Greg Kroah-Hartman (1):

      Linux 6.13.7

Hans de Goede (1):
mei: vsc: Use "wakeuphostint" when getting the host wakeup GPIO

Hao Zhang (1):
mm/page_alloc: fix uninitialized variable

Haoxiang Li (5):
btrfs: fix a leaked chunk map issue in read_one_chunk()
Bluetooth: Add check for mgmt_alloc_skb() in mgmt_remote_name()
Bluetooth: Add check for mgmt_alloc_skb() in mgmt_device_connected()
rapidio: add check for rio_add_net() in rio_scan_alloc_net()
rapidio: fix an API misues when rio_add_net() fails

Haoyu Li (1):
drivers: virt: acrn: hsm: Use kzalloc to avoid info leak in pmcmd_ioctl

Heiko Carstens (1):
s390/traps: Fix test_monitor_call() inline assembly

Herbert Xu (1):
cred: Fix RCU warnings in override/revert_creds

Hoku Ishibe (1):
ALSA: hda: intel: Add Dell ALC3271 to power_save denylist

Huacai Chen (1):
LoongArch: Use polling play_dead() when resuming from hibernation

Ilan Peer (4):
wifi: iwlwifi: Free pages allocated when failing to build A-MSDU
wifi: iwlwifi: Fix A-MSDU TSO preparation
wifi: mac80211: Support parsing EPCS ML element
wifi: iwlwifi: pcie: Fix TSO preparation

Jakub Kicinski (1):
net: ethtool: plumb PHY stats to PHY drivers

Jarkko Sakkinen (1):
x86/sgx: Fix size overflows in sgx_encl_create()

Jason Xing (1):
net-timestamp: support TCP GSO case for a few missing flags

Javier Carrasco (1):
iio: light: apds9306: fix max_scale_nano values

Jiayuan Chen (1):
ppp: Fix KMSAN uninit-value warning with bpf

Johannes Berg (4):
wifi: iwlwifi: mvm: clean up ROC on failure
wifi: iwlwifi: limit printed string from FW file
wifi: mac80211: fix MLE non-inheritance parsing
wifi: mac80211: fix vendor-specific inheritance

John Hubbard (1):
Revert "selftests/mm: remove local __NR_* definitions"

Justin Iurman (2):
net: ipv6: fix dst ref loop in ila lwtunnel
net: ipv6: fix missing dst ref drop in ila lwtunnel

Kailang Yang (2):
ALSA: hda/realtek - add supported Mic Mute LED for Lenovo platform
ALSA: hda/realtek: update ALC222 depop optimize

Kees Cook (1):
coredump: Only sort VMAs when core_sort_vma sysctl is set

Keith Busch (1):
nvme-ioctl: fix leaked requests on mapping error

Kenneth Feng (1):
drm/amd/pm: always allow ih interrupt from fw

Koichiro Den (1):
gpio: aggregator: protect driver attr handlers against module unload

Krister Johansen (1):
mptcp: fix 'scheduling while atomic' in mptcp_pm_nl_append_new_local_addr

Lorenzo Bianconi (1):
net: dsa: mt7530: Fix traffic flooding for MMIO devices

Lorenzo Stoakes (1):
mm: abort vma_modify() on merge out of memory failure

Luca Ceresoli (1):
drivers: core: fix device leak in __fw_devlink_relax_cycles()

Luca Weiss (3):
net: ipa: Fix v4.7 resource group names
net: ipa: Fix QSB data for v4.7
net: ipa: Enable checksum for IPA_ENDPOINT_AP_MODEM_{RX,TX} for v4.7

Ma Ke (1):

      drm/amd/display: Fix null check for pipe_ctx->plane_state in resource_build_scaling_params

Ma Wupeng (3):
mm: memory-failure: update ttu flag inside unmap_poisoned_folio hwpoison, memory_hotplug: lock folio before unmap hwpoisoned folio
mm: memory-hotplug: check folio ref count first in do_migrate_range

Maarten Lankhorst (1):
drm/xe: Remove double pageflip

Manivannan Sadhasivam (1):
bus: mhi: host: pci_generic: Use pci_try_reset_function() to avoid deadlock

Marc Zyngier (1):
xhci: Restrict USB4 tunnel detection for USB3 devices to Intel hosts

Marek Szyprowski (1):
usb: gadget: Fix setting self-powered state on suspend

Markus Burri (1):
iio: adc: ad7192: fix channel select

Masami Hiramatsu (Google) (3):
tracing: tprobe-events: Fix a memory leak when tprobe with $retval
tracing: tprobe-events: Reject invalid tracepoint name
tracing: probe-events: Remove unused MAX_ARG_BUF_LEN macro

Matt Johnston (1):
mctp i3c: handle NULL header address

Matthew Auld (1):
drm/xe/userptr: properly setup pfn_flags_mask

Matthew Brost (1):
drm/xe: Add staging tree for VM binds

Maud Spierings (1):
hwmon: (ntc_thermistor) Fix the ncpXXxh103 sensor table

Maurizio Lombardi (4):
nvmet: remove old function prototype
nvme-tcp: add basic support for the C2HTermReq PDU
nvme-tcp: fix potential memory corruption in nvme_tcp_recv_pdu()
nvme-tcp: Fix a C2HTermReq error message

Maxime Chevallier (1):
net: ethtool: netlink: Allow NULL nlattrs when getting a phy_device

Meir Elisha (1):
nvmet-tcp: Fix a possible sporadic response drops in weakly ordered arch

Miao Li (1):
usb: quirks: Add DELAY_INIT and NO_LPM for Prolific Mass Storage Card Reader

Michal Pecio (2):
usb: xhci: Fix host controllers "dying" after suspend and resume
usb: xhci: Enable the TRB overfetch quirk on VIA VL805

Mike Snitzer (1):
NFS: fix nfs_release_folio() to not deadlock via kcompactd writeback

Mingcong Bai (1):
platform/x86: thinkpad_acpi: Add battery quirk for ThinkPad X131e

Miri Korenblit (1):
wifi: iwlwifi: fw: avoid using an uninitialized variable

Murad Masimov (1):
ALSA: usx2y: validate nrpacks module parameter on probe

Namjae Jeon (5):
ksmbd: fix type confusion via race condition when using ipc_msg_send_request
ksmbd: fix out-of-bounds in parse_sec_desc()
ksmbd: fix use-after-free in smb2_lock
ksmbd: fix bug on trap in smb2_lock
exfat: fix soft lockup in exfat_clear_bitmap

Naohiro Aota (1):
btrfs: zoned: fix extent range end unlock in cow_file_range()

Nayab Sayed (1):
iio: adc: at91-sama5d2_adc: fix sama7g5 realbits value

Nikita Zhandarovich (2):
wifi: cfg80211: regulatory: improve invalid hints checking
usb: atm: cxacru: fix a flaw in existing endpoint checks

Niklas Söderlund (1):
gpio: rcar: Use raw_spinlock to protect register access

Nikolay Aleksandrov (1):
be2net: fix sleeping while atomic bugs in be_ndo_bridge_getlink

Nikunj A Dadhania (1):
virt: sev-guest: Allocate request data dynamically

Oleksij Rempel (1):
ethtool: linkstate: migrate linkstate functions to support multi-PHY setups

Olivier Gayot (1):
block: fix conversion of GPT partition name to 7-bit

Oscar Maes (1):
vlan: enforce underlying device type

Pali Rohár (1):
cifs: Remove symlink member from cifs_open_info_data union

Paul Fertser (1):
hwmon: (peci/dimmtemp) Do not provide fake thresholds data

Pawel Chmielewski (1):
intel_th: pci: Add Arrow Lake support

Pawel Laszczak (1):
usb: hub: lack of clearing xHC resources

Peiyang Wang (1):
net: hns3: make sure ptp clock is unregister and freed if hclge_ptp_get_cycle returns an error

Peter Zijlstra (2):
loongarch: Use ASM_REACHABLE
perf/core: Fix pmus_lock vs. pmus_srcu ordering

Philipp Stanner (2):
stmmac: loongson: Pass correct arg to PCI function drm/sched: Fix preprocessor guard

Prashanth K (3):
usb: gadget: u_ether: Set is_suspend flag if remote wakeup fails
usb: gadget: Set self-powered based on MaxPower and bmAttributes
usb: gadget: Check bmAttributes only if configuration is valid

Qi Zheng (1):
arm: pgtable: fix NULL pointer dereference issue

Qiu-ji Chen (1):
cdx: Fix possible UAF error in driver_override_show()

Ricardo Ribalda (1):
iio: hid-sensor-prox: Split difference from multiple channels

Richard Thier (1):
drm/radeon: Fix rs400_gpu_init for ATI mobility radeon Xpress 200M

Rob Herring (Arm) (1):
Revert "of: reserved-memory: Fix using wrong number of cells to get property 'alignment'"

Ryan Roberts (3):
mm: don't skip arch_sync_kernel_mappings() in error paths
mm: hugetlb: Add huge page size param to huge_ptep_get_and_clear()
arm64: hugetlb: Fix huge_ptep_get_and_clear() for non-present ptes

Salah Triki (1):
bluetooth: btusb: Initialize .owner field of force_poll_sync_fops

Sam Winchenbach (1):
iio: filter: admv8818: Force initialization of SDO

Sean Christopherson (7):
KVM: SVM: Set RFLAGS.IF=1 in C code, to get VMRUN out of the STI shadow
KVM: SVM: Save host DR masks on CPUs with DebugSwap
KVM: SVM: Drop DEBUGCTL[5:2] from guest's effective value
KVM: SVM: Suppress DEBUGCTL.BTF on AMD
KVM: x86: Snapshot the host's DEBUGCTL in common x86
KVM: SVM: Manually context switch DEBUGCTL if LBR virtualization is disabled
KVM: x86: Snapshot the host's DEBUGCTL after disabling IRQs

Sebastian Andrzej Siewior (1):
dma: kmsan: export kmsan_handle_dma() for modules

SeongJae Park (4):
selftests/damon/damos_quota_goal: handle minimum quota that cannot be further reduced selftests/damon/damos_quota: make real expectation of quota exceeds selftests/damon/damon_nr_regions: set ops update for merge results check to 100ms selftests/damon/damon_nr_regions: sort collected regiosn before checking with min/max boundaries

Steve French (1):
smb311: failure to open files of length 1040 when mounting with SMB3.1.1 POSIX extensions

Stuart Hayhurst (1):
HID: corsair-void: Update power supply values with a unified work handler

Suren Baghdasaryan (1):
userfaultfd: do not block on locking a large folio with raised refcount

Takashi Iwai (2):
ALSA: seq: Avoid module auto-load handling at event delivery drm/bochs: Fix DPMS regression

Thadeu Lima de Souza Cascardo (1):
char: misc: deallocate static minor in error path

Thinh Nguyen (1):
usb: dwc3: Set SUSPENDENABLE soon after phy init

Thomas Hellström (6):
drm/xe/hmm: Style- and include fixes
drm/xe/hmm: Don't dereference struct page pointers without notifier lock drm/xe/vm: Fix a misplaced #endif
drm/xe/vm: Validate userptr during gpu vma prefetching drm/xe: Fix fault mode invalidation with unbind drm/xe/userptr: Unmap userptrs in the mmu notifier

Thomas Weißschuh (1):
kbuild: userprogs: use correct lld when linking through clang

Tiezhu Yang (1):
LoongArch: Convert unreachable() to BUG()

Titus Rwantare (1):
hwmon: (pmbus) Initialise page count in pmbus_identify()

Tvrtko Ursulin (1):
drm/xe: Fix GT "for each engine" workarounds

Uday Shankar (1):
ublk: set_params: properly check if parameters can be applied

Vicki Pfau (1):
HID: hid-steam: Fix use-after-free when detaching device

Visweswara Tanuku (1):
slimbus: messaging: Free transaction ID in delayed interrupt scenario

Vitaliy Shevtsov (2):
wifi: nl80211: reject cooked mode if it is set along with other flags
caif_virtio: fix wrong pointer check in cfv_probe()

Xiaoyao Li (1):
KVM: x86: Explicitly zero EAX and EBX when PERFMON_V2 isn't supported by KVM

Xinghuo Chen (1):
hwmon: fix a NULL vs IS_ERR_OR_NULL() check in xgene_hwmon_probe()

Yu-Chun Lin (1):
HID: google: fix unused variable warning under !CONFIG_ACPI

Yuezhang Mo (1):
exfat: fix just enough dentries but allocate a new cluster to dir

Yutaro Ohno (1):
rust: block: fix formatting in GenDisk doc

Zecheng Li (1):
sched/fair: Fix potential memory corruption in child_cfs_rq_on_list

Zhang Lixu (2):
HID: intel-ish-hid: Fix use-after-free issue in hid_ishtp_cl_remove()
HID: intel-ish-hid: Fix use-after-free issue in ishtp_hid_remove()

author maintainer
#1 lore raw
Documentation/admin-guide/sysctl/kernel.rst +11 -0
index b2b36d0c3094..7a85b6eb884e 100644
@@ -212,6 +212,17 @@ pid>/``).
 This value defaults to 0.
 
 
+core_sort_vma
+=============
+
+The default coredump writes VMAs in address order. By setting
+``core_sort_vma`` to 1, VMAs will be written from smallest size
+to largest size. This is known to break at least elfutils, but
+can be handy when dealing with very large (and truncated)
+coredumps where the more useful debugging details are included
+in the smaller VMAs.
+
+
 core_uses_pid
 =============
 
Documentation/devicetree/bindings/iio/adc/adi,ad7606.yaml +1 -0
index ab5881d0d017..52d3f1ce3367 100644
@@ -146,6 +146,7 @@ properties:
     maxItems: 2
 
   pwm-names:
+    minItems: 1
     items:
       - const: convst1
       - const: convst2
Makefile +6 -1
index f49182f3bae1..3363645fa624 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 6
 PATCHLEVEL = 13
-SUBLEVEL = 6
+SUBLEVEL = 7
 EXTRAVERSION =
 NAME = Baby Opossum Posse
 
@@ -1122,6 +1122,11 @@ endif
 KBUILD_USERCFLAGS  += $(filter -m32 -m64 --target=%, $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS))
 KBUILD_USERLDFLAGS += $(filter -m32 -m64 --target=%, $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS))
 
+# userspace programs are linked via the compiler, use the correct linker
+ifeq ($(CONFIG_CC_IS_CLANG)$(CONFIG_LD_IS_LLD),yy)
+KBUILD_USERLDFLAGS += --ld-path=$(LD)
+endif
+
 # make the checker run with the right architecture
 CHECKFLAGS += --arch=$(ARCH)
 
arch/arm/mm/fault-armv.c +25 -12
index 2bec87c3327d..39fd5df73317 100644
@@ -62,7 +62,7 @@ static int do_adjust_pte(struct vm_area_struct *vma, unsigned long address,
 }
 
 static int adjust_pte(struct vm_area_struct *vma, unsigned long address,
-		      unsigned long pfn, struct vm_fault *vmf)
+		      unsigned long pfn, bool need_lock)
 {
 	spinlock_t *ptl;
 	pgd_t *pgd;
@@ -99,12 +99,11 @@ static int adjust_pte(struct vm_area_struct *vma, unsigned long address,
 	if (!pte)
 		return 0;
 
-	/*
-	 * If we are using split PTE locks, then we need to take the page
-	 * lock here.  Otherwise we are using shared mm->page_table_lock
-	 * which is already locked, thus cannot take it.
-	 */
-	if (ptl != vmf->ptl) {
+	if (need_lock) {
+		/*
+		 * Use nested version here to indicate that we are already
+		 * holding one similar spinlock.
+		 */
 		spin_lock_nested(ptl, SINGLE_DEPTH_NESTING);
 		if (unlikely(!pmd_same(pmdval, pmdp_get_lockless(pmd)))) {
 			pte_unmap_unlock(pte, ptl);
@@ -114,7 +113,7 @@ static int adjust_pte(struct vm_area_struct *vma, unsigned long address,
 
 	ret = do_adjust_pte(vma, address, pfn, pte);
 
-	if (ptl != vmf->ptl)
+	if (need_lock)
 		spin_unlock(ptl);
 	pte_unmap(pte);
 
@@ -123,9 +122,10 @@ static int adjust_pte(struct vm_area_struct *vma, unsigned long address,
 
 static void
 make_coherent(struct address_space *mapping, struct vm_area_struct *vma,
-	      unsigned long addr, pte_t *ptep, unsigned long pfn,
-	      struct vm_fault *vmf)
+	      unsigned long addr, pte_t *ptep, unsigned long pfn)
 {
+	const unsigned long pmd_start_addr = ALIGN_DOWN(addr, PMD_SIZE);
+	const unsigned long pmd_end_addr = pmd_start_addr + PMD_SIZE;
 	struct mm_struct *mm = vma->vm_mm;
 	struct vm_area_struct *mpnt;
 	unsigned long offset;
@@ -141,6 +141,14 @@ make_coherent(struct address_space *mapping, struct vm_area_struct *vma,
 	 */
 	flush_dcache_mmap_lock(mapping);
 	vma_interval_tree_foreach(mpnt, &mapping->i_mmap, pgoff, pgoff) {
+		/*
+		 * If we are using split PTE locks, then we need to take the pte
+		 * lock. Otherwise we are using shared mm->page_table_lock which
+		 * is already locked, thus cannot take it.
+		 */
+		bool need_lock = IS_ENABLED(CONFIG_SPLIT_PTE_PTLOCKS);
+		unsigned long mpnt_addr;
+
 		/*
 		 * If this VMA is not in our MM, we can ignore it.
 		 * Note that we intentionally mask out the VMA
@@ -151,7 +159,12 @@ make_coherent(struct address_space *mapping, struct vm_area_struct *vma,
 		if (!(mpnt->vm_flags & VM_MAYSHARE))
 			continue;
 		offset = (pgoff - mpnt->vm_pgoff) << PAGE_SHIFT;
-		aliases += adjust_pte(mpnt, mpnt->vm_start + offset, pfn, vmf);
+		mpnt_addr = mpnt->vm_start + offset;
+
+		/* Avoid deadlocks by not grabbing the same PTE lock again. */
+		if (mpnt_addr >= pmd_start_addr && mpnt_addr < pmd_end_addr)
+			need_lock = false;
+		aliases += adjust_pte(mpnt, mpnt_addr, pfn, need_lock);
 	}
 	flush_dcache_mmap_unlock(mapping);
 	if (aliases)
@@ -194,7 +207,7 @@ void update_mmu_cache_range(struct vm_fault *vmf, struct vm_area_struct *vma,
 		__flush_dcache_folio(mapping, folio);
 	if (mapping) {
 		if (cache_is_vivt())
-			make_coherent(mapping, vma, addr, ptep, pfn, vmf);
+			make_coherent(mapping, vma, addr, ptep, pfn);
 		else if (vma->vm_flags & VM_EXEC)
 			__flush_icache_all();
 	}
arch/arm64/include/asm/hugetlb.h +2 -2
index c6dff3e69539..03db9cb21ace 100644
@@ -42,8 +42,8 @@ extern int huge_ptep_set_access_flags(struct vm_area_struct *vma,
 				      unsigned long addr, pte_t *ptep,
 				      pte_t pte, int dirty);
 #define __HAVE_ARCH_HUGE_PTEP_GET_AND_CLEAR
-extern pte_t huge_ptep_get_and_clear(struct mm_struct *mm,
-				     unsigned long addr, pte_t *ptep);
+extern pte_t huge_ptep_get_and_clear(struct mm_struct *mm, unsigned long addr,
+				     pte_t *ptep, unsigned long sz);
 #define __HAVE_ARCH_HUGE_PTEP_SET_WRPROTECT
 extern void huge_ptep_set_wrprotect(struct mm_struct *mm,
 				    unsigned long addr, pte_t *ptep);
arch/arm64/mm/hugetlbpage.c +25 -36

106 lines not on this page · raw message

arch/loongarch/include/asm/bug.h +7 -6
index 08388876ade4..561ac1bf79e2 100644
@@ -4,6 +4,7 @@
 
 #include <asm/break.h>
 #include <linux/stringify.h>
+#include <linux/objtool.h>
 
 #ifndef CONFIG_DEBUG_BUGVERBOSE
 #define _BUGVERBOSE_LOCATION(file, line)
@@ -33,25 +34,25 @@
 
 #define ASM_BUG_FLAGS(flags)					\
 	__BUG_ENTRY(flags)					\
-	break		BRK_BUG
+	break		BRK_BUG;
 
 #define ASM_BUG()	ASM_BUG_FLAGS(0)
 
-#define __BUG_FLAGS(flags)					\
-	asm_inline volatile (__stringify(ASM_BUG_FLAGS(flags)));
+#define __BUG_FLAGS(flags, extra)					\
+	asm_inline volatile (__stringify(ASM_BUG_FLAGS(flags))		\
+			     extra);
 
 #define __WARN_FLAGS(flags)					\
 do {								\
 	instrumentation_begin();				\
-	__BUG_FLAGS(BUGFLAG_WARNING|(flags));			\
-	annotate_reachable();					\
+	__BUG_FLAGS(BUGFLAG_WARNING|(flags), ASM_REACHABLE);	\
 	instrumentation_end();					\
 } while (0)
 
 #define BUG()							\
 do {								\
 	instrumentation_begin();				\
-	__BUG_FLAGS(0);						\
+	__BUG_FLAGS(0, "");					\
 	unreachable();						\
 } while (0)
 
arch/loongarch/include/asm/hugetlb.h +4 -2
index c8e4057734d0..4dc4b3e04225 100644
@@ -36,7 +36,8 @@ static inline void huge_pte_clear(struct mm_struct *mm, unsigned long addr,
 
 #define __HAVE_ARCH_HUGE_PTEP_GET_AND_CLEAR
 static inline pte_t huge_ptep_get_and_clear(struct mm_struct *mm,
-					    unsigned long addr, pte_t *ptep)
+					    unsigned long addr, pte_t *ptep,
+					    unsigned long sz)
 {
 	pte_t clear;
 	pte_t pte = ptep_get(ptep);
@@ -51,8 +52,9 @@ static inline pte_t huge_ptep_clear_flush(struct vm_area_struct *vma,
 					  unsigned long addr, pte_t *ptep)
 {
 	pte_t pte;
+	unsigned long sz = huge_page_size(hstate_vma(vma));
 
-	pte = huge_ptep_get_and_clear(vma->vm_mm, addr, ptep);
+	pte = huge_ptep_get_and_clear(vma->vm_mm, addr, ptep, sz);
 	flush_tlb_page(vma, addr);
 	return pte;
 }
arch/loongarch/kernel/machine_kexec.c +2 -2
index 8ae641dc53bb..f9381800e291 100644
@@ -126,14 +126,14 @@ void kexec_reboot(void)
 	/* All secondary cpus go to kexec_smp_wait */
 	if (smp_processor_id() > 0) {
 		relocated_kexec_smp_wait(NULL);
-		unreachable();
+		BUG();
 	}
 #endif
 
 	do_kexec = (void *)reboot_code_buffer;
 	do_kexec(efi_boot, cmdline_ptr, systable_ptr, start_addr, first_ind_entry);
 
-	unreachable();
+	BUG();
 }
 
 
arch/loongarch/kernel/setup.c +3 -0
index 56934fe58170..1fa6a604734e 100644
@@ -387,6 +387,9 @@ static void __init check_kernel_sections_mem(void)
  */
 static void __init arch_mem_init(char **cmdline_p)
 {
+	/* Recalculate max_low_pfn for "mem=xxx" */
+	max_pfn = max_low_pfn = PHYS_PFN(memblock_end_of_DRAM());
+
 	if (usermem)
 		pr_info("User-defined physical RAM map overwrite\n");
 
arch/loongarch/kernel/smp.c +46 -1

65 lines not on this page · raw message

arch/loongarch/kvm/exit.c +6 -0
index a7893bd01e73..6db13d3e189e 100644
@@ -669,6 +669,12 @@ static int kvm_handle_rdwr_fault(struct kvm_vcpu *vcpu, bool write)
 	struct kvm_run *run = vcpu->run;
 	unsigned long badv = vcpu->arch.badv;
 
+	/* Inject ADE exception if exceed max GPA size */
+	if (unlikely(badv >= vcpu->kvm->arch.gpa_size)) {
+		kvm_queue_exception(vcpu, EXCCODE_ADE, EXSUBCODE_ADEM);
+		return RESUME_GUEST;
+	}
+
 	ret = kvm_handle_mm_fault(vcpu, badv, write);
 	if (ret) {
 		/* Treat as MMIO */
arch/loongarch/kvm/main.c +7 -0
index 034402e0948c..d0b941459a6b 100644
@@ -299,6 +299,13 @@ int kvm_arch_enable_virtualization_cpu(void)
 	kvm_debug("GCFG:%lx GSTAT:%lx GINTC:%lx GTLBC:%lx",
 		  read_csr_gcfg(), read_csr_gstat(), read_csr_gintc(), read_csr_gtlbc());
 
+	/*
+	 * HW Guest CSR registers are lost after CPU suspend and resume.
+	 * Clear last_vcpu so that Guest CSR registers forced to reload
+	 * from vCPU SW state.
+	 */
+	this_cpu_ptr(vmcs)->last_vcpu = NULL;
+
 	return 0;
 }
 
arch/loongarch/kvm/vcpu.c +1 -1
index d18a4a270415..153b617c115b 100644
@@ -311,7 +311,7 @@ static int kvm_handle_exit(struct kvm_run *run, struct kvm_vcpu *vcpu)
 {
 	int ret = RESUME_GUEST;
 	unsigned long estat = vcpu->arch.host_estat;
-	u32 intr = estat & 0x1fff; /* Ignore NMI */
+	u32 intr = estat & CSR_ESTAT_IS;
 	u32 ecode = (estat & CSR_ESTAT_EXC) >> CSR_ESTAT_EXC_SHIFT;
 
 	vcpu->mode = OUTSIDE_GUEST_MODE;
arch/loongarch/kvm/vm.c +5 -1
index b8b3e1972d6e..edccfc8c9cd8 100644
@@ -48,7 +48,11 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)
 	if (kvm_pvtime_supported())
 		kvm->arch.pv_features |= BIT(KVM_FEATURE_STEAL_TIME);
 
-	kvm->arch.gpa_size = BIT(cpu_vabits - 1);
+	/*
+	 * cpu_vabits means user address space only (a half of total).
+	 * GPA size of VM is the same with the size of user address space.
+	 */
+	kvm->arch.gpa_size = BIT(cpu_vabits);
 	kvm->arch.root_level = CONFIG_PGTABLE_LEVELS - 1;
 	kvm->arch.invalid_ptes[0] = 0;
 	kvm->arch.invalid_ptes[1] = (unsigned long)invalid_pte_table;
arch/loongarch/mm/mmap.c +5 -1
index 914e82ff3f65..1df9e99582cc 100644
@@ -3,6 +3,7 @@
  * Copyright (C) 2020-2022 Loongson Technology Corporation Limited
  */
 #include <linux/export.h>
+#include <linux/hugetlb.h>
 #include <linux/io.h>
 #include <linux/kfence.h>
 #include <linux/memblock.h>
@@ -63,8 +64,11 @@ static unsigned long arch_get_unmapped_area_common(struct file *filp,
 	}
 
 	info.length = len;
-	info.align_mask = do_color_align ? (PAGE_MASK & SHM_ALIGN_MASK) : 0;
 	info.align_offset = pgoff << PAGE_SHIFT;
+	if (filp && is_file_hugepages(filp))
+		info.align_mask = huge_page_mask_align(filp);
+	else
+		info.align_mask = do_color_align ? (PAGE_MASK & SHM_ALIGN_MASK) : 0;
 
 	if (dir == DOWN) {
 		info.flags = VM_UNMAPPED_AREA_TOPDOWN;
arch/mips/include/asm/hugetlb.h +4 -2
index d0a86ce83de9..fbc71ddcf0f6 100644
@@ -27,7 +27,8 @@ static inline int prepare_hugepage_range(struct file *file,
 
 #define __HAVE_ARCH_HUGE_PTEP_GET_AND_CLEAR
 static inline pte_t huge_ptep_get_and_clear(struct mm_struct *mm,
-					    unsigned long addr, pte_t *ptep)
+					    unsigned long addr, pte_t *ptep,
+					    unsigned long sz)
 {
 	pte_t clear;
 	pte_t pte = *ptep;
@@ -42,13 +43,14 @@ static inline pte_t huge_ptep_clear_flush(struct vm_area_struct *vma,
 					  unsigned long addr, pte_t *ptep)
 {
 	pte_t pte;
+	unsigned long sz = huge_page_size(hstate_vma(vma));
 
 	/*
 	 * clear the huge pte entry firstly, so that the other smp threads will
 	 * not get old pte entry after finishing flush_tlb_page and before
 	 * setting new huge pte entry
 	 */
-	pte = huge_ptep_get_and_clear(vma->vm_mm, addr, ptep);
+	pte = huge_ptep_get_and_clear(vma->vm_mm, addr, ptep, sz);
 	flush_tlb_page(vma, addr);
 	return pte;
 }
arch/parisc/include/asm/hugetlb.h +1 -1
index 5b3a5429f71b..21e9ace17739 100644
@@ -10,7 +10,7 @@ void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
 
 #define __HAVE_ARCH_HUGE_PTEP_GET_AND_CLEAR
 pte_t huge_ptep_get_and_clear(struct mm_struct *mm, unsigned long addr,
-			      pte_t *ptep);
+			      pte_t *ptep, unsigned long sz);
 
 #define __HAVE_ARCH_HUGE_PTEP_CLEAR_FLUSH
 static inline pte_t huge_ptep_clear_flush(struct vm_area_struct *vma,
arch/parisc/mm/hugetlbpage.c +1 -1
index e9d18cf25b79..a94fe546d434 100644
@@ -126,7 +126,7 @@ void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
 
 
 pte_t huge_ptep_get_and_clear(struct mm_struct *mm, unsigned long addr,
-			      pte_t *ptep)
+			      pte_t *ptep, unsigned long sz)
 {
 	pte_t entry;
 
arch/powerpc/include/asm/hugetlb.h +4 -2
index dad2e7980f24..86326587e58d 100644
@@ -45,7 +45,8 @@ void set_huge_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep,
 
 #define __HAVE_ARCH_HUGE_PTEP_GET_AND_CLEAR
 static inline pte_t huge_ptep_get_and_clear(struct mm_struct *mm,
-					    unsigned long addr, pte_t *ptep)
+					    unsigned long addr, pte_t *ptep,
+					    unsigned long sz)
 {
 	return __pte(pte_update(mm, addr, ptep, ~0UL, 0, 1));
 }
@@ -55,8 +56,9 @@ static inline pte_t huge_ptep_clear_flush(struct vm_area_struct *vma,
 					  unsigned long addr, pte_t *ptep)
 {
 	pte_t pte;
+	unsigned long sz = huge_page_size(hstate_vma(vma));
 
-	pte = huge_ptep_get_and_clear(vma->vm_mm, addr, ptep);
+	pte = huge_ptep_get_and_clear(vma->vm_mm, addr, ptep, sz);
 	flush_hugetlb_page(vma, addr);
 	return pte;
 }
arch/riscv/include/asm/hugetlb.h +2 -1
index faf3624d8057..446126497768 100644
@@ -28,7 +28,8 @@ void set_huge_pte_at(struct mm_struct *mm,
 
 #define __HAVE_ARCH_HUGE_PTEP_GET_AND_CLEAR
 pte_t huge_ptep_get_and_clear(struct mm_struct *mm,
-			      unsigned long addr, pte_t *ptep);
+			      unsigned long addr, pte_t *ptep,
+			      unsigned long sz);
 
 #define __HAVE_ARCH_HUGE_PTEP_CLEAR_FLUSH
 pte_t huge_ptep_clear_flush(struct vm_area_struct *vma,
arch/riscv/mm/hugetlbpage.c +1 -1
index 42314f093922..b4a78a4b35cf 100644
@@ -293,7 +293,7 @@ int huge_ptep_set_access_flags(struct vm_area_struct *vma,
 
 pte_t huge_ptep_get_and_clear(struct mm_struct *mm,
 			      unsigned long addr,
-			      pte_t *ptep)
+			      pte_t *ptep, unsigned long sz)
 {
 	pte_t orig_pte = ptep_get(ptep);
 	int pte_num;
arch/s390/include/asm/hugetlb.h +13 -5
index a40664b236e9..5ef1b5778fc7 100644
@@ -23,9 +23,17 @@ void __set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
 		     pte_t *ptep, pte_t pte);
 #define __HAVE_ARCH_HUGE_PTEP_GET
 extern pte_t huge_ptep_get(struct mm_struct *mm, unsigned long addr, pte_t *ptep);
+
+pte_t __huge_ptep_get_and_clear(struct mm_struct *mm, unsigned long addr,
+				pte_t *ptep);
+
 #define __HAVE_ARCH_HUGE_PTEP_GET_AND_CLEAR
-extern pte_t huge_ptep_get_and_clear(struct mm_struct *mm,
-			      unsigned long addr, pte_t *ptep);
+static inline pte_t huge_ptep_get_and_clear(struct mm_struct *mm,
+					    unsigned long addr, pte_t *ptep,
+					    unsigned long sz)
+{
+	return __huge_ptep_get_and_clear(mm, addr, ptep);
+}
 
 static inline void arch_clear_hugetlb_flags(struct folio *folio)
 {
@@ -47,7 +55,7 @@ static inline void huge_pte_clear(struct mm_struct *mm, unsigned long addr,
 static inline pte_t huge_ptep_clear_flush(struct vm_area_struct *vma,
 					  unsigned long address, pte_t *ptep)
 {
-	return huge_ptep_get_and_clear(vma->vm_mm, address, ptep);
+	return __huge_ptep_get_and_clear(vma->vm_mm, address, ptep);
 }
 
 #define  __HAVE_ARCH_HUGE_PTEP_SET_ACCESS_FLAGS
@@ -57,7 +65,7 @@ static inline int huge_ptep_set_access_flags(struct vm_area_struct *vma,
 {
 	int changed = !pte_same(huge_ptep_get(vma->vm_mm, addr, ptep), pte);
 	if (changed) {
-		huge_ptep_get_and_clear(vma->vm_mm, addr, ptep);
+		__huge_ptep_get_and_clear(vma->vm_mm, addr, ptep);
 		__set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
 	}
 	return changed;
@@ -67,7 +75,7 @@ static inline int huge_ptep_set_access_flags(struct vm_area_struct *vma,
 static inline void huge_ptep_set_wrprotect(struct mm_struct *mm,
 					   unsigned long addr, pte_t *ptep)
 {
-	pte_t pte = huge_ptep_get_and_clear(mm, addr, ptep);
+	pte_t pte = __huge_ptep_get_and_clear(mm, addr, ptep);
 	__set_huge_pte_at(mm, addr, ptep, pte_wrprotect(pte));
 }
 
arch/s390/kernel/traps.c +3 -3
index 24fee11b030d..b746213d3110 100644
@@ -285,10 +285,10 @@ static void __init test_monitor_call(void)
 		return;
 	asm volatile(
 		"	mc	0,0\n"
-		"0:	xgr	%0,%0\n"
+		"0:	lhi	%[val],0\n"
 		"1:\n"
-		EX_TABLE(0b,1b)
-		: "+d" (val));
+		EX_TABLE(0b, 1b)
+		: [val] "+d" (val));
 	if (!val)
 		panic("Monitor call doesn't work!\n");
 }
arch/s390/mm/hugetlbpage.c +2 -2
index d9ce199953de..2e568f175cd4 100644
@@ -188,8 +188,8 @@ pte_t huge_ptep_get(struct mm_struct *mm, unsigned long addr, pte_t *ptep)
 	return __rste_to_pte(pte_val(*ptep));
 }
 
-pte_t huge_ptep_get_and_clear(struct mm_struct *mm,
-			      unsigned long addr, pte_t *ptep)
+pte_t __huge_ptep_get_and_clear(struct mm_struct *mm,
+				unsigned long addr, pte_t *ptep)
 {
 	pte_t pte = huge_ptep_get(mm, addr, ptep);
 	pmd_t *pmdp = (pmd_t *) ptep;
arch/sparc/include/asm/hugetlb.h +1 -1
index c714ca6a05aa..e7a9cdd498dc 100644
@@ -20,7 +20,7 @@ void __set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
 
 #define __HAVE_ARCH_HUGE_PTEP_GET_AND_CLEAR
 pte_t huge_ptep_get_and_clear(struct mm_struct *mm, unsigned long addr,
-			      pte_t *ptep);
+			      pte_t *ptep, unsigned long sz);
 
 #define __HAVE_ARCH_HUGE_PTEP_CLEAR_FLUSH
 static inline pte_t huge_ptep_clear_flush(struct vm_area_struct *vma,
arch/sparc/mm/hugetlbpage.c +1 -1
index eee601a0d2cf..80504148d8a5 100644
@@ -260,7 +260,7 @@ void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
 }
 
 pte_t huge_ptep_get_and_clear(struct mm_struct *mm, unsigned long addr,
-			      pte_t *ptep)
+			      pte_t *ptep, unsigned long sz)
 {
 	unsigned int i, nptes, orig_shift, shift;
 	unsigned long size;
arch/x86/boot/compressed/pgtable_64.c +2 -0
index c882e1f67af0..d8c5de40669d 100644
@@ -1,6 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0
 #include "misc.h"
 #include <asm/bootparam.h>
+#include <asm/bootparam_utils.h>
 #include <asm/e820/types.h>
 #include <asm/processor.h>
 #include "pgtable.h"
@@ -107,6 +108,7 @@ asmlinkage void configure_5level_paging(struct boot_params *bp, void *pgtable)
 	bool l5_required = false;
 
 	/* Initialize boot_params. Required for cmdline_find_option_bool(). */
+	sanitize_boot_params(bp);
 	boot_params_ptr = bp;
 
 	/*
arch/x86/include/asm/kvm_host.h +1 -0
index 76bfeb03c041..c39ee7d569e0 100644
@@ -761,6 +761,7 @@ struct kvm_vcpu_arch {
 	u32 pkru;
 	u32 hflags;
 	u64 efer;
+	u64 host_debugctl;
 	u64 apic_base;
 	struct kvm_lapic *apic;    /* kernel irqchip context */
 	bool load_eoi_exitmap_pending;
arch/x86/kernel/amd_nb.c +3 -6
index 37b8244899d8..04712fd0c964 100644
@@ -405,7 +405,6 @@ bool __init early_is_amd_nb(u32 device)
 
 struct resource *amd_get_mmconfig_range(struct resource *res)
 {
-	u32 address;
 	u64 base, msr;
 	unsigned int segn_busn_bits;
 
@@ -413,13 +412,11 @@ struct resource *amd_get_mmconfig_range(struct resource *res)
 	    boot_cpu_data.x86_vendor != X86_VENDOR_HYGON)
 		return NULL;
 
-	/* assume all cpus from fam10h have mmconfig */
-	if (boot_cpu_data.x86 < 0x10)
+	/* Assume CPUs from Fam10h have mmconfig, although not all VMs do */
+	if (boot_cpu_data.x86 < 0x10 ||
+	    rdmsrl_safe(MSR_FAM10H_MMIO_CONF_BASE, &msr))
 		return NULL;
 
-	address = MSR_FAM10H_MMIO_CONF_BASE;
-	rdmsrl(address, msr);
-
 	/* mmconfig is not enabled */
 	if (!(msr & FAM10H_MMIO_CONF_ENABLE))
 		return NULL;
arch/x86/kernel/cpu/cacheinfo.c +1 -1
index e6fa03ed9172..a6c6bccfa8b8 100644
@@ -808,7 +808,7 @@ void init_intel_cacheinfo(struct cpuinfo_x86 *c)
 			cpuid(2, &regs[0], &regs[1], &regs[2], &regs[3]);
 
 			/* If bit 31 is set, this is an unknown format */
-			for (j = 0 ; j < 3 ; j++)
+			for (j = 0 ; j < 4 ; j++)
 				if (regs[j] & (1 << 31))
 					regs[j] = 0;
 
arch/x86/kernel/cpu/intel.c +35 -17

81 lines not on this page · raw message

arch/x86/kernel/cpu/microcode/amd.c +6 -0
index f5365b32582a..def6a2854a4b 100644
@@ -175,23 +175,29 @@ static bool need_sha_check(u32 cur_rev)
 {
 	switch (cur_rev >> 8) {
 	case 0x80012: return cur_rev <= 0x800126f; break;
+	case 0x80082: return cur_rev <= 0x800820f; break;
 	case 0x83010: return cur_rev <= 0x830107c; break;
 	case 0x86001: return cur_rev <= 0x860010e; break;
 	case 0x86081: return cur_rev <= 0x8608108; break;
 	case 0x87010: return cur_rev <= 0x8701034; break;
 	case 0x8a000: return cur_rev <= 0x8a0000a; break;
+	case 0xa0010: return cur_rev <= 0xa00107a; break;
 	case 0xa0011: return cur_rev <= 0xa0011da; break;
 	case 0xa0012: return cur_rev <= 0xa001243; break;
+	case 0xa0082: return cur_rev <= 0xa00820e; break;
 	case 0xa1011: return cur_rev <= 0xa101153; break;
 	case 0xa1012: return cur_rev <= 0xa10124e; break;
 	case 0xa1081: return cur_rev <= 0xa108109; break;
 	case 0xa2010: return cur_rev <= 0xa20102f; break;
 	case 0xa2012: return cur_rev <= 0xa201212; break;
+	case 0xa4041: return cur_rev <= 0xa404109; break;
+	case 0xa5000: return cur_rev <= 0xa500013; break;
 	case 0xa6012: return cur_rev <= 0xa60120a; break;
 	case 0xa7041: return cur_rev <= 0xa704109; break;
 	case 0xa7052: return cur_rev <= 0xa705208; break;
 	case 0xa7080: return cur_rev <= 0xa708009; break;
 	case 0xa70c0: return cur_rev <= 0xa70C009; break;
+	case 0xaa001: return cur_rev <= 0xaa00116; break;
 	case 0xaa002: return cur_rev <= 0xaa00218; break;
 	default: break;
 	}
arch/x86/kernel/cpu/sgx/ioctl.c +7 -0
index b65ab214bdf5..776a20172867 100644
@@ -64,6 +64,13 @@ static int sgx_encl_create(struct sgx_encl *encl, struct sgx_secs *secs)
 	struct file *backing;
 	long ret;
 
+	/*
+	 * ECREATE would detect this too, but checking here also ensures
+	 * that the 'encl_size' calculations below can never overflow.
+	 */
+	if (!is_power_of_2(secs->size))
+		return -EINVAL;
+
 	va_page = sgx_encl_grow(encl, true);
 	if (IS_ERR(va_page))
 		return PTR_ERR(va_page);
arch/x86/kvm/cpuid.c +1 -1
index ae0b438a2c99..ed3b28e5609f 100644
@@ -1393,7 +1393,7 @@ static inline int __do_cpuid_func(struct kvm_cpuid_array *array, u32 function)
 
 		entry->ecx = entry->edx = 0;
 		if (!enable_pmu || !kvm_cpu_cap_has(X86_FEATURE_PERFMON_V2)) {
-			entry->eax = entry->ebx;
+			entry->eax = entry->ebx = 0;
 			break;
 		}
 
arch/x86/kvm/svm/sev.c +10 -3
index fe6cc763fd51..0f40267114a0 100644
@@ -4567,6 +4567,8 @@ void sev_es_vcpu_reset(struct vcpu_svm *svm)
 
 void sev_es_prepare_switch_to_guest(struct vcpu_svm *svm, struct sev_es_save_area *hostsa)
 {
+	struct kvm *kvm = svm->vcpu.kvm;
+
 	/*
 	 * All host state for SEV-ES guests is categorized into three swap types
 	 * based on how it is handled by hardware during a world switch:
@@ -4590,10 +4592,15 @@ void sev_es_prepare_switch_to_guest(struct vcpu_svm *svm, struct sev_es_save_are
 
 	/*
 	 * If DebugSwap is enabled, debug registers are loaded but NOT saved by
-	 * the CPU (Type-B). If DebugSwap is disabled/unsupported, the CPU both
-	 * saves and loads debug registers (Type-A).
+	 * the CPU (Type-B). If DebugSwap is disabled/unsupported, the CPU does
+	 * not save or load debug registers.  Sadly, on CPUs without
+	 * ALLOWED_SEV_FEATURES, KVM can't prevent SNP guests from enabling
+	 * DebugSwap on secondary vCPUs without KVM's knowledge via "AP Create".
+	 * Save all registers if DebugSwap is supported to prevent host state
+	 * from being clobbered by a misbehaving guest.
 	 */
-	if (sev_vcpu_has_debug_swap(svm)) {
+	if (sev_vcpu_has_debug_swap(svm) ||
+	    (sev_snp_guest(kvm) && cpu_feature_enabled(X86_FEATURE_DEBUG_SWAP))) {
 		hostsa->dr0 = native_get_debugreg(0);
 		hostsa->dr1 = native_get_debugreg(1);
 		hostsa->dr2 = native_get_debugreg(2);
arch/x86/kvm/svm/svm.c +49 -0

79 lines not on this page · raw message

arch/x86/kvm/svm/svm.h +1 -1
index 43fa6a16eb19..d114efac7af7 100644
@@ -591,7 +591,7 @@ static inline bool is_vnmi_enabled(struct vcpu_svm *svm)
 /* svm.c */
 #define MSR_INVALID				0xffffffffU
 
-#define DEBUGCTL_RESERVED_BITS (~(0x3fULL))
+#define DEBUGCTL_RESERVED_BITS (~DEBUGCTLMSR_LBR)
 
 extern bool dump_invalid_vmcb;
 
arch/x86/kvm/svm/vmenter.S +1 -9
index 2ed80aea3bb1..0c61153b275f 100644
@@ -170,12 +170,8 @@ SYM_FUNC_START(__svm_vcpu_run)
 	mov VCPU_RDI(%_ASM_DI), %_ASM_DI
 
 	/* Enter guest mode */
-	sti
-
 3:	vmrun %_ASM_AX
 4:
-	cli
-
 	/* Pop @svm to RAX while it's the only available register. */
 	pop %_ASM_AX
 
@@ -340,12 +336,8 @@ SYM_FUNC_START(__svm_sev_es_vcpu_run)
 	mov KVM_VMCB_pa(%rax), %rax
 
 	/* Enter guest mode */
-	sti
-
 1:	vmrun %rax
-
-2:	cli
-
+2:
 	/* IMPORTANT: Stuff the RSB immediately after VM-Exit, before RET! */
 	FILL_RETURN_BUFFER %rax, RSB_CLEAR_LOOPS, X86_FEATURE_RSB_VMEXIT
 
arch/x86/kvm/vmx/vmx.c +2 -6
index aebd45d43ebb..bd20609e69d1 100644
@@ -1514,16 +1514,12 @@ void vmx_vcpu_load_vmcs(struct kvm_vcpu *vcpu, int cpu,
  */
 void vmx_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
 {
-	struct vcpu_vmx *vmx = to_vmx(vcpu);
-
 	if (vcpu->scheduled_out && !kvm_pause_in_guest(vcpu->kvm))
 		shrink_ple_window(vcpu);
 
 	vmx_vcpu_load_vmcs(vcpu, cpu, NULL);
 
 	vmx_vcpu_pi_load(vcpu, cpu);
-
-	vmx->host_debugctlmsr = get_debugctlmsr();
 }
 
 void vmx_vcpu_put(struct kvm_vcpu *vcpu)
@@ -7469,8 +7465,8 @@ fastpath_t vmx_vcpu_run(struct kvm_vcpu *vcpu, bool force_immediate_exit)
 	}
 
 	/* MSR_IA32_DEBUGCTLMSR is zeroed on vmexit. Restore it if needed */
-	if (vmx->host_debugctlmsr)
-		update_debugctlmsr(vmx->host_debugctlmsr);
+	if (vcpu->arch.host_debugctl)
+		update_debugctlmsr(vcpu->arch.host_debugctl);
 
 #ifndef CONFIG_X86_64
 	/*
arch/x86/kvm/vmx/vmx.h +0 -2
index 892302022094..13ba4bac1f24 100644
@@ -337,8 +337,6 @@ struct vcpu_vmx {
 	/* apic deadline value in host tsc */
 	u64 hv_deadline_tsc;
 
-	unsigned long host_debugctlmsr;
-
 	/*
 	 * Only bits masked by msr_ia32_feature_control_valid_bits can be set in
 	 * msr_ia32_feature_control. FEAT_CTL_LOCKED is always included
arch/x86/kvm/x86.c +2 -0
index 030310b26c69..742d9f4bca22 100644
@@ -10960,6 +10960,8 @@ static int vcpu_enter_guest(struct kvm_vcpu *vcpu)
 		set_debugreg(0, 7);
 	}
 
+	vcpu->arch.host_debugctl = get_debugctlmsr();
+
 	guest_timing_enter_irqoff();
 
 	for (;;) {
block/partitions/efi.c +1 -1
index 5e9be13a56a8..7acba66eed48 100644
@@ -682,7 +682,7 @@ static void utf16_le_to_7bit(const __le16 *in, unsigned int size, u8 *out)
 	out[size] = 0;
 
 	while (i < size) {
-		u8 c = le16_to_cpu(in[i]) & 0xff;
+		u8 c = le16_to_cpu(in[i]) & 0x7f;
 
 		if (c && !isprint(c))
 			c = '!';
drivers/base/core.c +1 -0
index 94865c9d8adc..70dbf8706980 100644
@@ -2079,6 +2079,7 @@ static bool __fw_devlink_relax_cycles(struct fwnode_handle *con_handle,
 out:
 	sup_handle->flags &= ~FWNODE_FLAG_VISITED;
 	put_device(sup_dev);
+	put_device(con_dev);
 	put_device(par_dev);
 	return ret;
 }
drivers/block/ublk_drv.c +5 -2
index 934ab9332c80..d9e8bf9f5e5a 100644
@@ -2716,9 +2716,12 @@ static int ublk_ctrl_set_params(struct ublk_device *ub,
 	if (ph.len > sizeof(struct ublk_params))
 		ph.len = sizeof(struct ublk_params);
 
-	/* parameters can only be changed when device isn't live */
 	mutex_lock(&ub->mutex);
-	if (ub->dev_info.state == UBLK_S_DEV_LIVE) {
+	if (test_bit(UB_STATE_USED, &ub->state)) {
+		/*
+		 * Parameters can only be changed when device hasn't
+		 * been started yet
+		 */
 		ret = -EACCES;
 	} else if (copy_from_user(&ub->params, argp, ph.len)) {
 		ret = -EFAULT;
drivers/bluetooth/btusb.c +1 -0
index 72e85673b709..75dbe07e07e2 100644
@@ -3652,6 +3652,7 @@ static ssize_t force_poll_sync_write(struct file *file,
 }
 
 static const struct file_operations force_poll_sync_fops = {
+	.owner		= THIS_MODULE,
 	.open		= simple_open,
 	.read		= force_poll_sync_read,
 	.write		= force_poll_sync_write,
drivers/bus/mhi/host/pci_generic.c +3 -2
index 56ba4192c89c..eb502fc557cd 100644
@@ -1040,8 +1040,9 @@ static void mhi_pci_recovery_work(struct work_struct *work)
 err_unprepare:
 	mhi_unprepare_after_power_down(mhi_cntrl);
 err_try_reset:
-	if (pci_reset_function(pdev))
-		dev_err(&pdev->dev, "Recovery failed\n");
+	err = pci_try_reset_function(pdev);
+	if (err)
+		dev_err(&pdev->dev, "Recovery failed: %d\n", err);
 }
 
 static void health_check(struct timer_list *t)
drivers/cdx/cdx.c +5 -1
index 76eac3653b1c..daa0fb62a1f7 100644
@@ -470,8 +470,12 @@ static ssize_t driver_override_show(struct device *dev,
 				    struct device_attribute *attr, char *buf)
 {
 	struct cdx_device *cdx_dev = to_cdx_device(dev);
+	ssize_t len;
 
-	return sysfs_emit(buf, "%s\n", cdx_dev->driver_override);
+	device_lock(dev);
+	len = sysfs_emit(buf, "%s\n", cdx_dev->driver_override);
+	device_unlock(dev);
+	return len;
 }
 static DEVICE_ATTR_RW(driver_override);
 
drivers/char/misc.c +1 -1
index 2cf595d2e10b..f7dd455dd0dd 100644
@@ -264,8 +264,8 @@ int misc_register(struct miscdevice *misc)
 		device_create_with_groups(&misc_class, misc->parent, dev,
 					  misc, misc->groups, "%s", misc->name);
 	if (IS_ERR(misc->this_device)) {
+		misc_minor_free(misc->minor);
 		if (is_dynamic) {
-			misc_minor_free(misc->minor);
 			misc->minor = MISC_DYNAMIC_MINOR;
 		}
 		err = PTR_ERR(misc->this_device);
drivers/gpio/gpio-aggregator.c +17 -3
index 65f41cc3eafc..d668ddb2e81d 100644
@@ -119,10 +119,15 @@ static ssize_t new_device_store(struct device_driver *driver, const char *buf,
 	struct platform_device *pdev;
 	int res, id;
 
+	if (!try_module_get(THIS_MODULE))
+		return -ENOENT;
+
 	/* kernfs guarantees string termination, so count + 1 is safe */
 	aggr = kzalloc(sizeof(*aggr) + count + 1, GFP_KERNEL);
-	if (!aggr)
-		return -ENOMEM;
+	if (!aggr) {
+		res = -ENOMEM;
+		goto put_module;
+	}
 
 	memcpy(aggr->args, buf, count + 1);
 
@@ -161,6 +166,7 @@ static ssize_t new_device_store(struct device_driver *driver, const char *buf,
 	}
 
 	aggr->pdev = pdev;
+	module_put(THIS_MODULE);
 	return count;
 
 remove_table:
@@ -175,6 +181,8 @@ static ssize_t new_device_store(struct device_driver *driver, const char *buf,
 	kfree(aggr->lookups);
 free_ga:
 	kfree(aggr);
+put_module:
+	module_put(THIS_MODULE);
 	return res;
 }
 
@@ -203,13 +211,19 @@ static ssize_t delete_device_store(struct device_driver *driver,
 	if (error)
 		return error;
 
+	if (!try_module_get(THIS_MODULE))
+		return -ENOENT;
+
 	mutex_lock(&gpio_aggregator_lock);
 	aggr = idr_remove(&gpio_aggregator_idr, id);
 	mutex_unlock(&gpio_aggregator_lock);
-	if (!aggr)
+	if (!aggr) {
+		module_put(THIS_MODULE);
 		return -ENOENT;
+	}
 
 	gpio_aggregator_free(aggr);
+	module_put(THIS_MODULE);
 	return count;
 }
 static DRIVER_ATTR_WO(delete_device);
drivers/gpio/gpio-rcar.c +18 -13
index 2ecee3269a0c..a7a1cdf7ac66 100644
@@ -40,7 +40,7 @@ struct gpio_rcar_info {
 
 struct gpio_rcar_priv {
 	void __iomem *base;
-	spinlock_t lock;
+	raw_spinlock_t lock;
 	struct device *dev;
 	struct gpio_chip gpio_chip;
 	unsigned int irq_parent;
@@ -123,7 +123,7 @@ static void gpio_rcar_config_interrupt_input_mode(struct gpio_rcar_priv *p,
 	 * "Setting Level-Sensitive Interrupt Input Mode"
 	 */
 
-	spin_lock_irqsave(&p->lock, flags);
+	raw_spin_lock_irqsave(&p->lock, flags);
 
 	/* Configure positive or negative logic in POSNEG */
 	gpio_rcar_modify_bit(p, POSNEG, hwirq, !active_high_rising_edge);
@@ -142,7 +142,7 @@ static void gpio_rcar_config_interrupt_input_mode(struct gpio_rcar_priv *p,
 	if (!level_trigger)
 		gpio_rcar_write(p, INTCLR, BIT(hwirq));
 
-	spin_unlock_irqrestore(&p->lock, flags);
+	raw_spin_unlock_irqrestore(&p->lock, flags);
 }
 
 static int gpio_rcar_irq_set_type(struct irq_data *d, unsigned int type)
@@ -246,7 +246,7 @@ static void gpio_rcar_config_general_input_output_mode(struct gpio_chip *chip,
 	 * "Setting General Input Mode"
 	 */
 
-	spin_lock_irqsave(&p->lock, flags);
+	raw_spin_lock_irqsave(&p->lock, flags);
 
 	/* Configure positive logic in POSNEG */
 	gpio_rcar_modify_bit(p, POSNEG, gpio, false);
@@ -261,7 +261,7 @@ static void gpio_rcar_config_general_input_output_mode(struct gpio_chip *chip,
 	if (p->info.has_outdtsel && output)
 		gpio_rcar_modify_bit(p, OUTDTSEL, gpio, false);
 
-	spin_unlock_irqrestore(&p->lock, flags);
+	raw_spin_unlock_irqrestore(&p->lock, flags);
 }
 
 static int gpio_rcar_request(struct gpio_chip *chip, unsigned offset)
@@ -347,7 +347,7 @@ static int gpio_rcar_get_multiple(struct gpio_chip *chip, unsigned long *mask,
 		return 0;
 	}
 
-	spin_lock_irqsave(&p->lock, flags);
+	raw_spin_lock_irqsave(&p->lock, flags);
 	outputs = gpio_rcar_read(p, INOUTSEL);
 	m = outputs & bankmask;
 	if (m)
@@ -356,7 +356,7 @@ static int gpio_rcar_get_multiple(struct gpio_chip *chip, unsigned long *mask,
 	m = ~outputs & bankmask;
 	if (m)
 		val |= gpio_rcar_read(p, INDT) & m;
-	spin_unlock_irqrestore(&p->lock, flags);
+	raw_spin_unlock_irqrestore(&p->lock, flags);
 
 	bits[0] = val;
 	return 0;
@@ -367,9 +367,9 @@ static void gpio_rcar_set(struct gpio_chip *chip, unsigned offset, int value)
 	struct gpio_rcar_priv *p = gpiochip_get_data(chip);
 	unsigned long flags;
 
-	spin_lock_irqsave(&p->lock, flags);
+	raw_spin_lock_irqsave(&p->lock, flags);
 	gpio_rcar_modify_bit(p, OUTDT, offset, value);
-	spin_unlock_irqrestore(&p->lock, flags);
+	raw_spin_unlock_irqrestore(&p->lock, flags);
 }
 
 static void gpio_rcar_set_multiple(struct gpio_chip *chip, unsigned long *mask,
@@ -386,12 +386,12 @@ static void gpio_rcar_set_multiple(struct gpio_chip *chip, unsigned long *mask,
 	if (!bankmask)
 		return;
 
-	spin_lock_irqsave(&p->lock, flags);
+	raw_spin_lock_irqsave(&p->lock, flags);
 	val = gpio_rcar_read(p, OUTDT);
 	val &= ~bankmask;
 	val |= (bankmask & bits[0]);
 	gpio_rcar_write(p, OUTDT, val);
-	spin_unlock_irqrestore(&p->lock, flags);
+	raw_spin_unlock_irqrestore(&p->lock, flags);
 }
 
 static int gpio_rcar_direction_output(struct gpio_chip *chip, unsigned offset,
@@ -468,7 +468,12 @@ static int gpio_rcar_parse_dt(struct gpio_rcar_priv *p, unsigned int *npins)
 	p->info = *info;
 
 	ret = of_parse_phandle_with_fixed_args(np, "gpio-ranges", 3, 0, &args);
-	*npins = ret == 0 ? args.args[2] : RCAR_MAX_GPIO_PER_BANK;
+	if (ret) {
+		*npins = RCAR_MAX_GPIO_PER_BANK;
+	} else {
+		*npins = args.args[2];
+		of_node_put(args.np);
+	}
 
 	if (*npins == 0 || *npins > RCAR_MAX_GPIO_PER_BANK) {
 		dev_warn(p->dev, "Invalid number of gpio lines %u, using %u\n",
@@ -505,7 +510,7 @@ static int gpio_rcar_probe(struct platform_device *pdev)
 		return -ENOMEM;
 
 	p->dev = dev;
-	spin_lock_init(&p->lock);
+	raw_spin_lock_init(&p->lock);
 
 	/* Get device configuration from DT node */
 	ret = gpio_rcar_parse_dt(p, &npins);
drivers/gpu/drm/amd/amdkfd/kfd_queue.c +2 -2
index ad29634f8b44..80c85b6cc478 100644
@@ -266,8 +266,8 @@ int kfd_queue_acquire_buffers(struct kfd_process_device *pdd, struct queue_prope
 	/* EOP buffer is not required for all ASICs */
 	if (properties->eop_ring_buffer_address) {
 		if (properties->eop_ring_buffer_size != topo_dev->node_props.eop_buffer_size) {
-			pr_debug("queue eop bo size 0x%lx not equal to node eop buf size 0x%x\n",
-				properties->eop_buf_bo->tbo.base.size,
+			pr_debug("queue eop bo size 0x%x not equal to node eop buf size 0x%x\n",
+				properties->eop_ring_buffer_size,
 				topo_dev->node_props.eop_buffer_size);
 			err = -EINVAL;
 			goto out_err_unreserve;
drivers/gpu/drm/amd/display/dc/core/dc_resource.c +2 -1
index 626f75b6ad00..568f5b215ce2 100644
@@ -1455,7 +1455,8 @@ bool resource_build_scaling_params(struct pipe_ctx *pipe_ctx)
 	DC_LOGGER_INIT(pipe_ctx->stream->ctx->logger);
 
 	/* Invalid input */
-	if (!plane_state->dst_rect.width ||
+	if (!plane_state ||
+			!plane_state->dst_rect.width ||
 			!plane_state->dst_rect.height ||
 			!plane_state->src_rect.width ||
 			!plane_state->src_rect.height) {
drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0.c +1 -11
index a87040cb2f2e..daa37e009349 100644
@@ -1899,16 +1899,6 @@ static int smu_v14_0_allow_ih_interrupt(struct smu_context *smu)
 				    NULL);
 }
 
-static int smu_v14_0_process_pending_interrupt(struct smu_context *smu)
-{
-	int ret = 0;
-
-	if (smu_cmn_feature_is_enabled(smu, SMU_FEATURE_ACDC_BIT))
-		ret = smu_v14_0_allow_ih_interrupt(smu);
-
-	return ret;
-}
-
 int smu_v14_0_enable_thermal_alert(struct smu_context *smu)
 {
 	int ret = 0;
@@ -1920,7 +1910,7 @@ int smu_v14_0_enable_thermal_alert(struct smu_context *smu)
 	if (ret)
 		return ret;
 
-	return smu_v14_0_process_pending_interrupt(smu);
+	return smu_v14_0_allow_ih_interrupt(smu);
 }
 
 int smu_v14_0_disable_thermal_alert(struct smu_context *smu)
drivers/gpu/drm/imagination/pvr_fw_meta.c +4 -2
index c39beb70c317..6d13864851fc 100644
@@ -527,8 +527,10 @@ pvr_meta_vm_map(struct pvr_device *pvr_dev, struct pvr_fw_object *fw_obj)
 static void
 pvr_meta_vm_unmap(struct pvr_device *pvr_dev, struct pvr_fw_object *fw_obj)
 {
-	pvr_vm_unmap(pvr_dev->kernel_vm_ctx, fw_obj->fw_mm_node.start,
-		     fw_obj->fw_mm_node.size);
+	struct pvr_gem_object *pvr_obj = fw_obj->gem;
+
+	pvr_vm_unmap_obj(pvr_dev->kernel_vm_ctx, pvr_obj,
+			 fw_obj->fw_mm_node.start, fw_obj->fw_mm_node.size);
 }
 
 static bool
drivers/gpu/drm/imagination/pvr_fw_trace.c +2 -2
index 73707daa4e52..5dbb636d7d4f 100644
@@ -333,8 +333,8 @@ static int fw_trace_seq_show(struct seq_file *s, void *v)
 	if (sf_id == ROGUE_FW_SF_LAST)
 		return -EINVAL;
 
-	timestamp = read_fw_trace(trace_seq_data, 1) |
-		((u64)read_fw_trace(trace_seq_data, 2) << 32);
+	timestamp = ((u64)read_fw_trace(trace_seq_data, 1) << 32) |
+		read_fw_trace(trace_seq_data, 2);
 	timestamp = (timestamp & ~ROGUE_FWT_TIMESTAMP_TIME_CLRMSK) >>
 		ROGUE_FWT_TIMESTAMP_TIME_SHIFT;
 
drivers/gpu/drm/imagination/pvr_queue.c +14 -4
index c4f08432882b..43411be930a2 100644
@@ -109,12 +109,20 @@ pvr_queue_fence_get_driver_name(struct dma_fence *f)
 	return PVR_DRIVER_NAME;
 }
 
+static void pvr_queue_fence_release_work(struct work_struct *w)
+{
+	struct pvr_queue_fence *fence = container_of(w, struct pvr_queue_fence, release_work);
+
+	pvr_context_put(fence->queue->ctx);
+	dma_fence_free(&fence->base);
+}
+
 static void pvr_queue_fence_release(struct dma_fence *f)
 {
 	struct pvr_queue_fence *fence = container_of(f, struct pvr_queue_fence, base);
+	struct pvr_device *pvr_dev = fence->queue->ctx->pvr_dev;
 
-	pvr_context_put(fence->queue->ctx);
-	dma_fence_free(f);
+	queue_work(pvr_dev->sched_wq, &fence->release_work);
 }
 
 static const char *
@@ -268,6 +276,7 @@ pvr_queue_fence_init(struct dma_fence *f,
 
 	pvr_context_get(queue->ctx);
 	fence->queue = queue;
+	INIT_WORK(&fence->release_work, pvr_queue_fence_release_work);
 	dma_fence_init(&fence->base, fence_ops,
 		       &fence_ctx->lock, fence_ctx->id,
 		       atomic_inc_return(&fence_ctx->seqno));
@@ -304,8 +313,9 @@ pvr_queue_cccb_fence_init(struct dma_fence *fence, struct pvr_queue *queue)
 static void
 pvr_queue_job_fence_init(struct dma_fence *fence, struct pvr_queue *queue)
 {
-	pvr_queue_fence_init(fence, queue, &pvr_queue_job_fence_ops,
-			     &queue->job_fence_ctx);
+	if (!fence->ops)
+		pvr_queue_fence_init(fence, queue, &pvr_queue_job_fence_ops,
+				     &queue->job_fence_ctx);
 }
 
 /**
drivers/gpu/drm/imagination/pvr_queue.h +4 -0
index e06ced69302f..93fe9ac9f58c 100644
@@ -5,6 +5,7 @@
 #define PVR_QUEUE_H
 
 #include <drm/gpu_scheduler.h>
+#include <linux/workqueue.h>
 
 #include "pvr_cccb.h"
 #include "pvr_device.h"
@@ -63,6 +64,9 @@ struct pvr_queue_fence {
 
 	/** @queue: Queue that created this fence. */
 	struct pvr_queue *queue;
+
+	/** @release_work: Fence release work structure. */
+	struct work_struct release_work;
 };
 
 /**
drivers/gpu/drm/imagination/pvr_vm.c +108 -26

187 lines not on this page · raw message

drivers/gpu/drm/imagination/pvr_vm.h +3 -0
index 79406243617c..b0528dffa7f1 100644
@@ -38,6 +38,9 @@ struct pvr_vm_context *pvr_vm_create_context(struct pvr_device *pvr_dev,
 int pvr_vm_map(struct pvr_vm_context *vm_ctx,
 	       struct pvr_gem_object *pvr_obj, u64 pvr_obj_offset,
 	       u64 device_addr, u64 size);
+int pvr_vm_unmap_obj(struct pvr_vm_context *vm_ctx,
+		     struct pvr_gem_object *pvr_obj,
+		     u64 device_addr, u64 size);
 int pvr_vm_unmap(struct pvr_vm_context *vm_ctx, u64 device_addr, u64 size);
 void pvr_vm_unmap_all(struct pvr_vm_context *vm_ctx);
 
drivers/gpu/drm/nouveau/Kconfig +1 -0
index ce840300578d..1050a4617fc1 100644
@@ -4,6 +4,7 @@ config DRM_NOUVEAU
 	depends on DRM && PCI && MMU
 	select IOMMU_API
 	select FW_LOADER
+	select FW_CACHE if PM_SLEEP
 	select DRM_CLIENT_SELECTION
 	select DRM_DISPLAY_DP_HELPER
 	select DRM_DISPLAY_HDMI_HELPER
drivers/gpu/drm/radeon/r300.c +2 -1
index 05c13102a8cb..d22889fbfa9c 100644
@@ -359,7 +359,8 @@ int r300_mc_wait_for_idle(struct radeon_device *rdev)
 	return -1;
 }
 
-static void r300_gpu_init(struct radeon_device *rdev)
+/* rs400_gpu_init also calls this! */
+void r300_gpu_init(struct radeon_device *rdev)
 {
 	uint32_t gb_tile_config, tmp;
 
drivers/gpu/drm/radeon/radeon_asic.h +1 -0
index 1e00f6b99f94..8f5e07834fcc 100644
@@ -165,6 +165,7 @@ void r200_set_safe_registers(struct radeon_device *rdev);
  */
 extern int r300_init(struct radeon_device *rdev);
 extern void r300_fini(struct radeon_device *rdev);
+extern void r300_gpu_init(struct radeon_device *rdev);
 extern int r300_suspend(struct radeon_device *rdev);
 extern int r300_resume(struct radeon_device *rdev);
 extern int r300_asic_reset(struct radeon_device *rdev, bool hard);
drivers/gpu/drm/radeon/rs400.c +16 -2
index d6c18fd740ec..13cd0a688a65 100644
@@ -256,8 +256,22 @@ int rs400_mc_wait_for_idle(struct radeon_device *rdev)
 
 static void rs400_gpu_init(struct radeon_device *rdev)
 {
-	/* FIXME: is this correct ? */
-	r420_pipes_init(rdev);
+	/* Earlier code was calling r420_pipes_init and then
+	 * rs400_mc_wait_for_idle(rdev). The problem is that
+	 * at least on my Mobility Radeon Xpress 200M RC410 card
+	 * that ends up in this code path ends up num_gb_pipes == 3
+	 * while the card seems to have only one pipe. With the
+	 * r420 pipe initialization method.
+	 *
+	 * Problems shown up as HyperZ glitches, see:
+	 * https://bugs.freedesktop.org/show_bug.cgi?id=110897
+	 *
+	 * Delegating initialization to r300 code seems to work
+	 * and results in proper pipe numbers. The rs400 cards
+	 * are said to be not r400, but r300 kind of cards.
+	 */
+	r300_gpu_init(rdev);
+
 	if (rs400_mc_wait_for_idle(rdev)) {
 		pr_warn("rs400: Failed to wait MC idle while programming pipes. Bad things might happen. %08x\n",
 			RREG32(RADEON_MC_STATUS));
drivers/gpu/drm/scheduler/gpu_scheduler_trace.h +2 -2
index c75302ca3427..f56e77e7f6d0 100644
@@ -21,7 +21,7 @@
  *
  */
 
-#if !defined(_GPU_SCHED_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
+#if !defined(_GPU_SCHED_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ)
 #define _GPU_SCHED_TRACE_H_
 
 #include <linux/stringify.h>
@@ -106,7 +106,7 @@ TRACE_EVENT(drm_sched_job_wait_dep,
 		      __entry->seqno)
 );
 
-#endif
+#endif /* _GPU_SCHED_TRACE_H_ */
 
 /* This part must be outside protection */
 #undef TRACE_INCLUDE_PATH
drivers/gpu/drm/tiny/bochs.c +3 -2
index 6f91ff1dbf7e..4e7d49fb9e6e 100644
@@ -335,8 +335,6 @@ static void bochs_hw_setmode(struct bochs_device *bochs, struct drm_display_mode
 			 bochs->xres, bochs->yres, bochs->bpp,
 			 bochs->yres_virtual);
 
-	bochs_hw_blank(bochs, false);
-
 	bochs_dispi_write(bochs, VBE_DISPI_INDEX_ENABLE,      0);
 	bochs_dispi_write(bochs, VBE_DISPI_INDEX_BPP,         bochs->bpp);
 	bochs_dispi_write(bochs, VBE_DISPI_INDEX_XRES,        bochs->xres);
@@ -506,6 +504,9 @@ static int bochs_crtc_helper_atomic_check(struct drm_crtc *crtc,
 static void bochs_crtc_helper_atomic_enable(struct drm_crtc *crtc,
 					    struct drm_atomic_state *state)
 {
+	struct bochs_device *bochs = to_bochs_device(crtc->dev);
+
+	bochs_hw_blank(bochs, false);
 }
 
 static void bochs_crtc_helper_atomic_disable(struct drm_crtc *crtc,
drivers/gpu/drm/xe/display/xe_plane_initial.c +0 -10
index 8c113463a3d5..668f544a7ac8 100644
@@ -194,8 +194,6 @@ intel_find_initial_plane_obj(struct intel_crtc *crtc,
 		to_intel_plane(crtc->base.primary);
 	struct intel_plane_state *plane_state =
 		to_intel_plane_state(plane->base.state);
-	struct intel_crtc_state *crtc_state =
-		to_intel_crtc_state(crtc->base.state);
 	struct drm_framebuffer *fb;
 	struct i915_vma *vma;
 
@@ -241,14 +239,6 @@ intel_find_initial_plane_obj(struct intel_crtc *crtc,
 	atomic_or(plane->frontbuffer_bit, &to_intel_frontbuffer(fb)->bits);
 
 	plane_config->vma = vma;
-
-	/*
-	 * Flip to the newly created mapping ASAP, so we can re-use the
-	 * first part of GGTT for WOPCM, prevent flickering, and prevent
-	 * the lookup of sysmem scratch pages.
-	 */
-	plane->check_plane(crtc_state, plane_state);
-	plane->async_flip(NULL, plane, crtc_state, plane_state, true);
 	return;
 
 nofb:
drivers/gpu/drm/xe/xe_gt.c +2 -2
index 77d818beb26d..560fb82f5dc4 100644
@@ -380,9 +380,7 @@ int xe_gt_init_early(struct xe_gt *gt)
 	if (err)
 		return err;
 
-	xe_wa_process_gt(gt);
 	xe_wa_process_oob(gt);
-	xe_tuning_process_gt(gt);
 
 	xe_force_wake_init_gt(gt, gt_to_fw(gt));
 	spin_lock_init(&gt->global_invl_lock);
@@ -474,6 +472,8 @@ static int all_fw_domain_init(struct xe_gt *gt)
 	}
 
 	xe_gt_mcr_set_implicit_defaults(gt);
+	xe_wa_process_gt(gt);
+	xe_tuning_process_gt(gt);
 	xe_reg_sr_apply_mmio(&gt->reg_sr, gt);
 
 	err = xe_gt_clock_init(gt);
drivers/gpu/drm/xe/xe_hmm.c +140 -48

273 lines not on this page · raw message

drivers/gpu/drm/xe/xe_hmm.h +7 -0
index 909dc2bdcd97..0ea98d8e7bbc 100644
@@ -3,9 +3,16 @@
  * Copyright © 2024 Intel Corporation
  */
 
+#ifndef _XE_HMM_H_
+#define _XE_HMM_H_
+
 #include <linux/types.h>
 
 struct xe_userptr_vma;
 
 int xe_hmm_userptr_populate_range(struct xe_userptr_vma *uvma, bool is_mm_mmap_locked);
+
 void xe_hmm_userptr_free_sg(struct xe_userptr_vma *uvma);
+
+void xe_hmm_userptr_unmap(struct xe_userptr_vma *uvma);
+#endif
drivers/gpu/drm/xe/xe_pt.c +49 -47

229 lines not on this page · raw message

drivers/gpu/drm/xe/xe_pt_walk.c +2 -1
index b8b3d2aea492..be602a763ff3 100644
@@ -74,7 +74,8 @@ int xe_pt_walk_range(struct xe_ptw *parent, unsigned int level,
 		     u64 addr, u64 end, struct xe_pt_walk *walk)
 {
 	pgoff_t offset = xe_pt_offset(addr, level, walk);
-	struct xe_ptw **entries = parent->children ? parent->children : NULL;
+	struct xe_ptw **entries = walk->staging ? (parent->staging ?: NULL) :
+		(parent->children ?: NULL);
 	const struct xe_pt_walk_ops *ops = walk->ops;
 	enum page_walk_action action;
 	struct xe_ptw *child;
drivers/gpu/drm/xe/xe_pt_walk.h +4 -0
index 5ecc4d2f0f65..5c02c244f7de 100644
@@ -11,12 +11,14 @@
 /**
  * struct xe_ptw - base class for driver pagetable subclassing.
  * @children: Pointer to an array of children if any.
+ * @staging: Pointer to an array of staging if any.
  *
  * Drivers could subclass this, and if it's a page-directory, typically
  * embed an array of xe_ptw pointers.
  */
 struct xe_ptw {
 	struct xe_ptw **children;
+	struct xe_ptw **staging;
 };
 
 /**
@@ -41,6 +43,8 @@ struct xe_pt_walk {
 	 * as shared pagetables.
 	 */
 	bool shared_pt_mode;
+	/** @staging: Walk staging PT structure */
+	bool staging;
 };
 
 /**
drivers/gpu/drm/xe/xe_vm.c +70 -30

158 lines not on this page · raw message

drivers/gpu/drm/xe/xe_vm.h +9 -1
index c864dba35e1d..d2406532fcc5 100644
@@ -275,9 +275,17 @@ static inline void vm_dbg(const struct drm_device *dev,
 			  const char *format, ...)
 { /* noop */ }
 #endif
-#endif
 
 struct xe_vm_snapshot *xe_vm_snapshot_capture(struct xe_vm *vm);
 void xe_vm_snapshot_capture_delayed(struct xe_vm_snapshot *snap);
 void xe_vm_snapshot_print(struct xe_vm_snapshot *snap, struct drm_printer *p);
 void xe_vm_snapshot_free(struct xe_vm_snapshot *snap);
+
+#if IS_ENABLED(CONFIG_DRM_XE_USERPTR_INVAL_INJECT)
+void xe_vma_userptr_force_invalidate(struct xe_userptr_vma *uvma);
+#else
+static inline void xe_vma_userptr_force_invalidate(struct xe_userptr_vma *uvma)
+{
+}
+#endif
+#endif
drivers/gpu/drm/xe/xe_vm_types.h +6 -2
index 7f9a303e51d8..a4b4091cfd0d 100644
@@ -59,12 +59,16 @@ struct xe_userptr {
 	struct sg_table *sg;
 	/** @notifier_seq: notifier sequence number */
 	unsigned long notifier_seq;
+	/** @unmap_mutex: Mutex protecting dma-unmapping */
+	struct mutex unmap_mutex;
 	/**
 	 * @initial_bind: user pointer has been bound at least once.
 	 * write: vm->userptr.notifier_lock in read mode and vm->resv held.
 	 * read: vm->userptr.notifier_lock in write mode or vm->resv held.
 	 */
 	bool initial_bind;
+	/** @mapped: Whether the @sgt sg-table is dma-mapped. Protected by @unmap_mutex. */
+	bool mapped;
 #if IS_ENABLED(CONFIG_DRM_XE_USERPTR_INVAL_INJECT)
 	u32 divisor;
 #endif
@@ -227,8 +231,8 @@ struct xe_vm {
 		 * up for revalidation. Protected from access with the
 		 * @invalidated_lock. Removing items from the list
 		 * additionally requires @lock in write mode, and adding
-		 * items to the list requires the @userptr.notifer_lock in
-		 * write mode.
+		 * items to the list requires either the @userptr.notifer_lock in
+		 * write mode, OR @lock in write mode.
 		 */
 		struct list_head invalidated;
 	} userptr;
drivers/hid/hid-appleir.c +1 -1
index 8deded185725..c45e5aa569d2 100644
@@ -188,7 +188,7 @@ static int appleir_raw_event(struct hid_device *hid, struct hid_report *report,
 	static const u8 flatbattery[] = { 0x25, 0x87, 0xe0 };
 	unsigned long flags;
 
-	if (len != 5)
+	if (len != 5 || !(hid->claimed & HID_CLAIMED_INPUT))
 		goto out;
 
 	if (!memcmp(data, keydown, sizeof(keydown))) {
drivers/hid/hid-corsair-void.c +43 -40

149 lines not on this page · raw message

drivers/hid/hid-google-hammer.c +2 -0
index 0f292b5d3e26..eb6fd2dc75d0 100644
@@ -268,11 +268,13 @@ static void cbas_ec_remove(struct platform_device *pdev)
 	mutex_unlock(&cbas_ec_reglock);
 }
 
+#ifdef CONFIG_ACPI
 static const struct acpi_device_id cbas_ec_acpi_ids[] = {
 	{ "GOOG000B", 0 },
 	{ }
 };
 MODULE_DEVICE_TABLE(acpi, cbas_ec_acpi_ids);
+#endif
 
 #ifdef CONFIG_OF
 static const struct of_device_id cbas_ec_of_match[] = {
drivers/hid/hid-steam.c +1 -1
index 5f8518f6f5ac..03e57d8acdad 100644
@@ -1327,11 +1327,11 @@ static void steam_remove(struct hid_device *hdev)
 		return;
 	}
 
+	hid_destroy_device(steam->client_hdev);
 	cancel_delayed_work_sync(&steam->mode_switch);
 	cancel_work_sync(&steam->work_connect);
 	cancel_work_sync(&steam->rumble_work);
 	cancel_work_sync(&steam->unregister_work);
-	hid_destroy_device(steam->client_hdev);
 	steam->client_hdev = NULL;
 	steam->client_opened = 0;
 	if (steam->quirks & STEAM_QUIRK_WIRELESS) {
drivers/hid/intel-ish-hid/ishtp-hid-client.c +1 -1
index cb04cd1d980b..6550ad5bfbb5 100644
@@ -832,9 +832,9 @@ static void hid_ishtp_cl_remove(struct ishtp_cl_device *cl_device)
 			hid_ishtp_cl);
 
 	dev_dbg(ishtp_device(cl_device), "%s\n", __func__);
-	hid_ishtp_cl_deinit(hid_ishtp_cl);
 	ishtp_put_device(cl_device);
 	ishtp_hid_remove(client_data);
+	hid_ishtp_cl_deinit(hid_ishtp_cl);
 
 	hid_ishtp_cl = NULL;
 
drivers/hid/intel-ish-hid/ishtp-hid.c +3 -1
index 00c6f0ebf356..be2c62fc8251 100644
@@ -261,12 +261,14 @@ int ishtp_hid_probe(unsigned int cur_hid_dev,
  */
 void ishtp_hid_remove(struct ishtp_cl_data *client_data)
 {
+	void *data;
 	int i;
 
 	for (i = 0; i < client_data->num_hid_devices; ++i) {
 		if (client_data->hid_sensor_hubs[i]) {
-			kfree(client_data->hid_sensor_hubs[i]->driver_data);
+			data = client_data->hid_sensor_hubs[i]->driver_data;
 			hid_destroy_device(client_data->hid_sensor_hubs[i]);
+			kfree(data);
 			client_data->hid_sensor_hubs[i] = NULL;
 		}
 	}
drivers/hwmon/ad7314.c +10 -0
index 7802bbf5f958..59424103f634 100644
@@ -22,11 +22,13 @@
  */
 #define AD7314_TEMP_MASK		0x7FE0
 #define AD7314_TEMP_SHIFT		5
+#define AD7314_LEADING_ZEROS_MASK	BIT(15)
 
 /*
  * ADT7301 and ADT7302 temperature masks
  */
 #define ADT7301_TEMP_MASK		0x3FFF
+#define ADT7301_LEADING_ZEROS_MASK	(BIT(15) | BIT(14))
 
 enum ad7314_variant {
 	adt7301,
@@ -65,12 +67,20 @@ static ssize_t ad7314_temperature_show(struct device *dev,
 		return ret;
 	switch (spi_get_device_id(chip->spi_dev)->driver_data) {
 	case ad7314:
+		if (ret & AD7314_LEADING_ZEROS_MASK) {
+			/* Invalid read-out, leading zero part is missing */
+			return -EIO;
+		}
 		data = (ret & AD7314_TEMP_MASK) >> AD7314_TEMP_SHIFT;
 		data = sign_extend32(data, 9);
 
 		return sprintf(buf, "%d\n", 250 * data);
 	case adt7301:
 	case adt7302:
+		if (ret & ADT7301_LEADING_ZEROS_MASK) {
+			/* Invalid read-out, leading zero part is missing */
+			return -EIO;
+		}
 		/*
 		 * Documented as a 13 bit twos complement register
 		 * with a sign bit - which is a 14 bit 2's complement
drivers/hwmon/ntc_thermistor.c +33 -33

73 lines not on this page · raw message

drivers/hwmon/peci/dimmtemp.c +4 -6
index d6762259dd69..fbe82d9852e0 100644
@@ -127,8 +127,6 @@ static int update_thresholds(struct peci_dimmtemp *priv, int dimm_no)
 		return 0;
 
 	ret = priv->gen_info->read_thresholds(priv, dimm_order, chan_rank, &data);
-	if (ret == -ENODATA) /* Use default or previous value */
-		return 0;
 	if (ret)
 		return ret;
 
@@ -509,11 +507,11 @@ read_thresholds_icx(struct peci_dimmtemp *priv, int dimm_order, int chan_rank, u
 
 	ret = peci_ep_pci_local_read(priv->peci_dev, 0, 13, 0, 2, 0xd4, &reg_val);
 	if (ret || !(reg_val & BIT(31)))
-		return -ENODATA; /* Use default or previous value */
+		return -ENODATA;
 
 	ret = peci_ep_pci_local_read(priv->peci_dev, 0, 13, 0, 2, 0xd0, &reg_val);
 	if (ret)
-		return -ENODATA; /* Use default or previous value */
+		return -ENODATA;
 
 	/*
 	 * Device 26, Offset 224e0: IMC 0 channel 0 -> rank 0
@@ -546,11 +544,11 @@ read_thresholds_spr(struct peci_dimmtemp *priv, int dimm_order, int chan_rank, u
 
 	ret = peci_ep_pci_local_read(priv->peci_dev, 0, 30, 0, 2, 0xd4, &reg_val);
 	if (ret || !(reg_val & BIT(31)))
-		return -ENODATA; /* Use default or previous value */
+		return -ENODATA;
 
 	ret = peci_ep_pci_local_read(priv->peci_dev, 0, 30, 0, 2, 0xd0, &reg_val);
 	if (ret)
-		return -ENODATA; /* Use default or previous value */
+		return -ENODATA;
 
 	/*
 	 * Device 26, Offset 219a8: IMC 0 channel 0 -> rank 0
drivers/hwmon/pmbus/pmbus.c +2 -0
index 77cf268e7d2d..920cd5408141 100644
@@ -103,6 +103,8 @@ static int pmbus_identify(struct i2c_client *client,
 		if (pmbus_check_byte_register(client, 0, PMBUS_PAGE)) {
 			int page;
 
+			info->pages = PMBUS_PAGES;
+
 			for (page = 1; page < PMBUS_PAGES; page++) {
 				if (pmbus_set_page(client, page, 0xff) < 0)
 					break;
drivers/hwmon/xgene-hwmon.c +1 -1
index 1e3bd129a922..7087197383c9 100644
@@ -706,7 +706,7 @@ static int xgene_hwmon_probe(struct platform_device *pdev)
 			goto out;
 		}
 
-		if (!ctx->pcc_comm_addr) {
+		if (IS_ERR_OR_NULL(ctx->pcc_comm_addr)) {
 			dev_err(&pdev->dev,
 				"Failed to ioremap PCC comm region\n");
 			rc = -ENOMEM;
drivers/hwtracing/intel_th/pci.c +15 -0
index e9d8d28e055f..e3def163d5cf 100644
@@ -334,6 +334,21 @@ static const struct pci_device_id intel_th_pci_id_table[] = {
 		PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0xa824),
 		.driver_data = (kernel_ulong_t)&intel_th_2x,
 	},
+	{
+		/* Arrow Lake */
+		PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x7724),
+		.driver_data = (kernel_ulong_t)&intel_th_2x,
+	},
+	{
+		/* Panther Lake-H */
+		PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0xe324),
+		.driver_data = (kernel_ulong_t)&intel_th_2x,
+	},
+	{
+		/* Panther Lake-P/U */
+		PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0xe424),
+		.driver_data = (kernel_ulong_t)&intel_th_2x,
+	},
 	{
 		/* Alder Lake CPU */
 		PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x466f),
drivers/iio/adc/ad7192.c +1 -1
index 1c87db0e0460..c4effe8429c8 100644
@@ -1082,7 +1082,7 @@ static int ad7192_update_scan_mode(struct iio_dev *indio_dev, const unsigned lon
 
 	conf &= ~AD7192_CONF_CHAN_MASK;
 	for_each_set_bit(i, scan_mask, 8)
-		conf |= FIELD_PREP(AD7192_CONF_CHAN_MASK, i);
+		conf |= FIELD_PREP(AD7192_CONF_CHAN_MASK, BIT(i));
 
 	ret = ad_sd_write_reg(&st->sd, AD7192_REG_CONF, 3, conf);
 	if (ret < 0)
drivers/iio/adc/ad7606.c +1 -1
index e35d55d03d86..b60be98f877d 100644
@@ -1039,7 +1039,7 @@ static int ad7606_read_avail(struct iio_dev *indio_dev,
 
 		cs = &st->chan_scales[ch];
 		*vals = (int *)cs->scale_avail;
-		*length = cs->num_scales;
+		*length = cs->num_scales * 2;
 		*type = IIO_VAL_INT_PLUS_MICRO;
 
 		return IIO_AVAIL_LIST;
drivers/iio/adc/at91-sama5d2_adc.c +40 -28

104 lines not on this page · raw message

drivers/iio/dac/ad3552r.c +6 -0
index e7206af53af6..7944f5c1d264 100644
@@ -410,6 +410,12 @@ static int ad3552r_reset(struct ad3552r_desc *dac)
 		return ret;
 	}
 
+	/* Clear reset error flag, see ad3552r manual, rev B table 38. */
+	ret = ad3552r_write_reg(dac, AD3552R_REG_ADDR_ERR_STATUS,
+				AD3552R_MASK_RESET_STATUS);
+	if (ret)
+		return ret;
+
 	return ad3552r_update_reg_field(dac,
 					AD3552R_REG_ADDR_INTERFACE_CONFIG_A,
 					AD3552R_MASK_ADDR_ASCENSION,
drivers/iio/filter/admv8818.c +4 -10
index 848baa6e3bbf..d85b7d3de866 100644
@@ -574,21 +574,15 @@ static int admv8818_init(struct admv8818_state *st)
 	struct spi_device *spi = st->spi;
 	unsigned int chip_id;
 
-	ret = regmap_update_bits(st->regmap, ADMV8818_REG_SPI_CONFIG_A,
-				 ADMV8818_SOFTRESET_N_MSK |
-				 ADMV8818_SOFTRESET_MSK,
-				 FIELD_PREP(ADMV8818_SOFTRESET_N_MSK, 1) |
-				 FIELD_PREP(ADMV8818_SOFTRESET_MSK, 1));
+	ret = regmap_write(st->regmap, ADMV8818_REG_SPI_CONFIG_A,
+			   ADMV8818_SOFTRESET_N_MSK | ADMV8818_SOFTRESET_MSK);
 	if (ret) {
 		dev_err(&spi->dev, "ADMV8818 Soft Reset failed.\n");
 		return ret;
 	}
 
-	ret = regmap_update_bits(st->regmap, ADMV8818_REG_SPI_CONFIG_A,
-				 ADMV8818_SDOACTIVE_N_MSK |
-				 ADMV8818_SDOACTIVE_MSK,
-				 FIELD_PREP(ADMV8818_SDOACTIVE_N_MSK, 1) |
-				 FIELD_PREP(ADMV8818_SDOACTIVE_MSK, 1));
+	ret = regmap_write(st->regmap, ADMV8818_REG_SPI_CONFIG_A,
+			   ADMV8818_SDOACTIVE_N_MSK | ADMV8818_SDOACTIVE_MSK);
 	if (ret) {
 		dev_err(&spi->dev, "ADMV8818 SDO Enable failed.\n");
 		return ret;
drivers/iio/light/apds9306.c +2 -2
index 69a0d609cffc..5ed7e17f49e7 100644
@@ -108,11 +108,11 @@ static const struct part_id_gts_multiplier apds9306_gts_mul[] = {
 	{
 		.part_id = 0xB1,
 		.max_scale_int = 16,
-		.max_scale_nano = 3264320,
+		.max_scale_nano = 326432000,
 	}, {
 		.part_id = 0xB3,
 		.max_scale_int = 14,
-		.max_scale_nano = 9712000,
+		.max_scale_nano = 97120000,
 	},
 };
 
drivers/iio/light/hid-sensor-prox.c +4 -3
index c83acbd78275..71dcef3fbe57 100644
@@ -49,9 +49,10 @@ static const u32 prox_sensitivity_addresses[] = {
 #define PROX_CHANNEL(_is_proximity, _channel) \
 	{\
 		.type = _is_proximity ? IIO_PROXIMITY : IIO_ATTENTION,\
-		.info_mask_separate = _is_proximity ? BIT(IIO_CHAN_INFO_RAW) :\
-				      BIT(IIO_CHAN_INFO_PROCESSED),\
-		.info_mask_shared_by_type = BIT(IIO_CHAN_INFO_OFFSET) |\
+		.info_mask_separate = \
+		(_is_proximity ? BIT(IIO_CHAN_INFO_RAW) :\
+				BIT(IIO_CHAN_INFO_PROCESSED)) |\
+		BIT(IIO_CHAN_INFO_OFFSET) |\
 		BIT(IIO_CHAN_INFO_SCALE) |\
 		BIT(IIO_CHAN_INFO_SAMP_FREQ) |\
 		BIT(IIO_CHAN_INFO_HYSTERESIS),\
drivers/misc/cardreader/rtsx_usb.c +0 -15
index e0174da5e9fc..77b0490a1b38 100644
@@ -286,7 +286,6 @@ static int rtsx_usb_get_status_with_bulk(struct rtsx_ucr *ucr, u16 *status)
 int rtsx_usb_get_card_status(struct rtsx_ucr *ucr, u16 *status)
 {
 	int ret;
-	u8 interrupt_val = 0;
 	u16 *buf;
 
 	if (!status)
@@ -309,20 +308,6 @@ int rtsx_usb_get_card_status(struct rtsx_ucr *ucr, u16 *status)
 		ret = rtsx_usb_get_status_with_bulk(ucr, status);
 	}
 
-	rtsx_usb_read_register(ucr, CARD_INT_PEND, &interrupt_val);
-	/* Cross check presence with interrupts */
-	if (*status & XD_CD)
-		if (!(interrupt_val & XD_INT))
-			*status &= ~XD_CD;
-
-	if (*status & SD_CD)
-		if (!(interrupt_val & SD_INT))
-			*status &= ~SD_CD;
-
-	if (*status & MS_CD)
-		if (!(interrupt_val & MS_INT))
-			*status &= ~MS_CD;
-
 	/* usb_control_msg may return positive when success */
 	if (ret < 0)
 		return ret;
drivers/misc/eeprom/digsy_mtc_eeprom.c +1 -1
index 88888485e6f8..ee58f7ce5bfa 100644
@@ -50,7 +50,7 @@ static struct platform_device digsy_mtc_eeprom = {
 };
 
 static struct gpiod_lookup_table eeprom_spi_gpiod_table = {
-	.dev_id         = "spi_gpio",
+	.dev_id         = "spi_gpio.1",
 	.table          = {
 		GPIO_LOOKUP("gpio@b00", GPIO_EEPROM_CLK,
 			    "sck", GPIO_ACTIVE_HIGH),
drivers/misc/mei/hw-me-regs.h +2 -0
index c3a6657dcd4a..a5f88ec97df7 100644
@@ -117,6 +117,8 @@
 
 #define MEI_DEV_ID_LNL_M      0xA870  /* Lunar Lake Point M */
 
+#define MEI_DEV_ID_PTL_P      0xE470  /* Panther Lake P */
+
 /*
  * MEI HW Section
  */
drivers/misc/mei/pci-me.c +2 -0
index 6589635f8ba3..d6ff9d82ae94 100644
@@ -124,6 +124,8 @@ static const struct pci_device_id mei_me_pci_tbl[] = {
 
 	{MEI_PCI_DEVICE(MEI_DEV_ID_LNL_M, MEI_ME_PCH15_CFG)},
 
+	{MEI_PCI_DEVICE(MEI_DEV_ID_PTL_P, MEI_ME_PCH15_CFG)},
+
 	/* required last entry */
 	{0, }
 };
drivers/misc/mei/vsc-tp.c +1 -1
index 35d349fee769..7be1649b1972 100644
@@ -502,7 +502,7 @@ static int vsc_tp_probe(struct spi_device *spi)
 	if (ret)
[… more lines in the raw message]

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

drivers/net/caif/caif_virtio.c +1 -1
index 7fea00c7ca8a..c60386bf2d1a 100644

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

drivers/net/dsa/mt7530.c +2 -6
index 086b8b3d5b40..b05e38d19b21 100644

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

drivers/net/ethernet/emulex/benet/be.h +1 -1
index e48b861e4ce1..270ff9aab335 100644

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

drivers/net/ethernet/emulex/benet/be_cmds.c +98 -99

197 lines not on this page · raw message

drivers/net/ethernet/emulex/benet/be_main.c +1 -1
index 875fe379eea2..3d2e21592119 100644

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

drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_ptp.c +1 -1
index bab16c2191b2..181af419b878 100644

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

drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c +4 -2
index f5acfb7d4ff6..ab7c2750c104 100644

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

drivers/net/ipa/data/ipa_data-v4.7.c +9 -9
index c8c23d9be961..41f212209993 100644

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

drivers/net/mctp/mctp-i3c.c +3 -0
index d247fe483c58..c1e72253063b 100644

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

drivers/net/phy/phy.c +43 -0

43 lines not on this page · raw message

drivers/net/phy/phy_device.c +2 -0
index b26bb33cd1d4..5f1ad0c7fb53 100644

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

drivers/net/ppp/ppp_generic.c +19 -9
index 4583e15ad03a..1420c4efa48e 100644

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

drivers/net/wireless/intel/iwlwifi/fw/dump.c +3 -0
index 8e0c85a1240d..c7b261c8ec96 100644

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

drivers/net/wireless/intel/iwlwifi/iwl-drv.c +1 -1
index c620911a1193..754e01688900 100644

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

drivers/net/wireless/intel/iwlwifi/mvm/d3.c +51 -26

77 lines not on this page · raw message

drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c +7 -0
index 91ca830a7b60..f4276fdee6be 100644

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

drivers/net/wireless/intel/iwlwifi/mvm/time-event.c +2 -0
index 72fa7ac86516..17b8ccc27569 100644

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

drivers/net/wireless/intel/iwlwifi/pcie/internal.h +3 -2
index 27a7e0b5b3d5..ebe9b25cc53a 100644

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

drivers/net/wireless/intel/iwlwifi/pcie/tx-gen2.c +4 -2
index b1846abb99b7..477a05cd1288 100644

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

drivers/net/wireless/intel/iwlwifi/pcie/tx.c +14 -9
index 1ef14340953c..477f779d4bf7 100644

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

drivers/nvme/host/ioctl.c +8 -4
index b1b46c2713e1..24e2c702da7a 100644

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

drivers/nvme/host/tcp.c +75 -6

81 lines not on this page · raw message

drivers/nvme/target/nvmet.h +0 -1
index 7233549f7c8a..016a5c250546 100644

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

drivers/nvme/target/tcp.c +11 -4
index 7c51c2a8c109..4f9cac8a5abe 100644

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

drivers/of/of_reserved_mem.c +2 -2
index e2da88d7706a..f31fadad29cc 100644

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

drivers/platform/x86/thinkpad_acpi.c +1 -0
index 2cfb2ac3f465..84dcd7da7319 100644

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

drivers/rapidio/devices/rio_mport_cdev.c +2 -1
index 27afbb9d544b..cbf531d0ba68 100644

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

drivers/rapidio/rio-scan.c +4 -1
index fdcf742b2adb..c12941f71e2c 100644

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

drivers/slimbus/messaging.c +3 -2
index 242570a5e565..455c1fd1490f 100644

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

drivers/usb/atm/cxacru.c +7 -6
index 0dd85d2635b9..47d06af33747 100644

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

drivers/usb/core/hub.c +33 -0
index 906daf423cb0..145787c424e0 100644

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

drivers/usb/core/quirks.c +4 -0
index 027479179f09..6926bd639ec6 100644

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

drivers/usb/dwc3/core.c +48 -37

85 lines not on this page · raw message

drivers/usb/dwc3/core.h +1 -1
index f11570c8ffd0..ecadedd2fc0b 100644

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

drivers/usb/dwc3/drd.c +2 -2
index d76ae676783c..7977860932b1 100644

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

drivers/usb/dwc3/gadget.c +7 -3
index 329bc164241a..535b73217715 100644

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

drivers/usb/gadget/composite.c +12 -5
index bdda8c74602d..869ad99afb48 100644

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

drivers/usb/gadget/function/u_ether.c +2 -2
index 09e2838917e2..f58590bf5e02 100644

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

drivers/usb/host/xhci-hub.c +8 -0
index 9693464c0520..69c278b64084 100644

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

drivers/usb/host/xhci-mem.c +2 -1
index 92703efda1f7..fdf0c1008225 100644

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

drivers/usb/host/xhci-pci.c +7 -3
index ad0ff356f6fa..54460d11f7ee 100644

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

drivers/usb/host/xhci.c +5 -1
index 5ebde8cae4fc..55086d63e7ef 100644

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

drivers/usb/host/xhci.h +1 -1
index 4914f0a10cff..dba1db259cd3 100644

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

drivers/usb/renesas_usbhs/common.c +5 -1
index 935fc496fe94..4b35ef216125 100644

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

drivers/usb/renesas_usbhs/mod_gadget.c +1 -1
index 105132ae87ac..e8e5723f5412 100644

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

drivers/usb/typec/tcpm/tcpci_rt1711h.c +11 -0
index 64f6dd0dc660..88c50b984e8a 100644

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

drivers/usb/typec/ucsi/ucsi.c +13 -12
index fcf499cc9458..2a2915b0a645 100644

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

drivers/usb/typec/ucsi/ucsi.h +2 -0
index 5ff369c24a2f..e4c563da715f 100644

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

drivers/usb/typec/ucsi/ucsi_acpi.c +14 -7
index 5c5515551963..ac1ebb5d9527 100644

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

drivers/usb/typec/ucsi/ucsi_ccg.c +1 -0
index 740171f24ef9..4b1668733a4b 100644

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

drivers/usb/typec/ucsi/ucsi_glink.c +1 -0
index fed39d458090..8af79101a2fc 100644

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

drivers/usb/typec/ucsi/ucsi_stm32g0.c +1 -0
index 6923fad31d79..57ef7d83a412 100644

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

drivers/usb/typec/ucsi/ucsi_yoga_c630.c +1 -0
index f3a5e24ea84d..40e5da4fd2a4 100644

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

drivers/virt/acrn/hsm.c +3 -3
index c24036c4e51e..e4e196abdaac 100644

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

drivers/virt/coco/sev-guest/sev-guest.c +15 -9
index b699771be029..af64e6191f74 100644

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

fs/btrfs/inode.c +7 -2
index b4160b1c7757..d1acae2d6d33 100644

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

fs/btrfs/volumes.c +1 -0
index 3d0ac8bdb21f..083841e45689 100644

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

fs/coredump.c +13 -2
index d48edb37bc35..c6f4c745e1bd 100644

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

fs/exfat/balloc.c +8 -2
index ce9be95c9172..9ff825f1502d 100644

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

fs/exfat/exfat_fs.h +1 -1
index 78be6964a8a0..d30ce18a88b7 100644

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

fs/exfat/fatent.c +7 -4
index 9e5492ac409b..6f3651c6ca91 100644

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

fs/exfat/file.c +1 -1
index 05b51e721783..807349d8ea05 100644

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

fs/exfat/namei.c +1 -1
index 099f80645072..9996ca61c85b 100644

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

fs/nfs/file.c +2 -1
index 1bb646752e46..033feeab8c34 100644

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

fs/smb/client/cifsglob.h +2 -4
index 1e6085f2f78e..37b7d84e2691 100644

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

fs/smb/client/inode.c +1 -1
index 0d149b315a83..4d8effe78be5 100644

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

fs/smb/client/reparse.h +22 -6
index ff05b0e75c92..f080f92cb1e7 100644

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

fs/smb/client/smb1ops.c +2 -2
index c70f4961c4eb..bd791aa54681 100644

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

fs/smb/client/smb2inode.c +4 -0
index 7dfd3eb3847b..6048b3fed3e7 100644

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

fs/smb/client/smb2ops.c +2 -1
index 793e9b2b79d6..17c3063a9ca5 100644

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

fs/smb/server/smb2pdu.c +4 -4
index 772deec5b90f..91de0224902f 100644

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

fs/smb/server/smbacl.c +16 -0
index d39d3e553366..89415b02dd64 100644

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

fs/smb/server/transport_ipc.c +1 -0
index e9aa92d02789..22a3646b909b 100644

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

include/asm-generic/hugetlb.h +1 -1
index f42133dae68e..2afc95bf1655 100644

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

include/linux/compaction.h +5 -0
index e94776496049..7bf0c521db63 100644

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

include/linux/cred.h +3 -6
index e4a3155fe409..1e1ec8834e45 100644

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

include/linux/ethtool.h +23 -0
index b8b935b52603..b0ed740ca749 100644

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

include/linux/hugetlb.h +3 -1
index ae4fe8615bb6..0385103dffcd 100644

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

include/linux/nvme-tcp.h +2 -0
index e07e8978d691..e435250fcb4d 100644

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

include/linux/phy.h +36 -0
index 563c46205685..bed2b81f8fb3 100644

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

include/linux/phylib_stubs.h +42 -0

42 lines not on this page · raw message

include/linux/sched.h +1 -1
index 949b53e0accf..376478d29e2d 100644

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

kernel/events/core.c +2 -2
index 0e6e16eb2d10..43a44a6e243b 100644

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

kernel/sched/fair.c +4 -2
index 7d0a05660e5e..4f850edf1640 100644

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

kernel/trace/trace_fprobe.c +15 -0
index c62d1629cffe..99048c330382 100644

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

kernel/trace/trace_probe.h +1 -1
index 5803e6a41570..8a6797c2278d 100644

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

mm/compaction.c +3 -0
index 384e4672998e..77dbb9022b47 100644

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

mm/hugetlb.c +2 -2
index b2294dc1dd6e..15ae955c7cbc 100644

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

mm/internal.h +3 -2
index 9826f7dce607..c9186ca8d7c2 100644

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

mm/kmsan/hooks.c +1 -0
index 3ea50f09311f..3df45c25c1f6 100644

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

mm/memory-failure.c +31 -32

63 lines not on this page · raw message

mm/memory.c +14 -7
index 398c031be9ba..b6015e230822 100644

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

mm/memory_hotplug.c +12 -14
index c43b4e7fb298..c3de35389269 100644

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

mm/page_alloc.c +2 -2
index 01eab25edf89..0f9b359d67bb 100644

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

mm/userfaultfd.c +16 -1
index 60a0be33766f..64e998f7d57c 100644

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

mm/vma.c +8 -4
index bb2119e5a0d0..b126683397fc 100644

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

mm/vmalloc.c +2 -2
index 5c88d0e90c20..b6e8e39af653 100644

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

net/8021q/vlan.c +2 -1
index e45187b88220..41be38264493 100644

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

net/bluetooth/mgmt.c +5 -0
index 71dda10f6a24..aa8b0df41291 100644

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

net/ethtool/cabletest.c +4 -4
index f22051f33868..84096f6b0236 100644

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

net/ethtool/linkstate.c +17 -9
index 34d76e87847d..05a5f72c99fa 100644

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

net/ethtool/netlink.c +3 -3
index 4d18dc29b304..e233dfc8ca4b 100644

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

net/ethtool/netlink.h +3 -2
index 203b08eb6c6f..5e176938d6d2 100644

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

net/ethtool/phy.c +1 -1
index ed8f690f6bac..e067cc234419 100644

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

net/ethtool/plca.c +3 -3
index d95d92f173a6..e1f7820a6158 100644

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

net/ethtool/pse-pd.c +2 -2
index a0705edca22a..71843de832cc 100644

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

net/ethtool/stats.c +18 -0
index 912f0c4fff2f..273ae4ff343f 100644

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

net/ethtool/strset.c +1 -1
index b3382b3cf325..b9400d18f01d 100644

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

net/ipv4/tcp_offload.c +7 -4
index 2308665b51c5..2dfac79dc78b 100644

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

net/ipv4/udp_offload.c +6 -2
index a5be6e4ed326..ecfca59f31f1 100644

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

net/ipv6/ila/ila_lwt.c +3 -1
index ff7e734e335b..7d574f5132e2 100644

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

net/llc/llc_s_ac.c +27 -22

49 lines not on this page · raw message

net/mac80211/ieee80211_i.h +2 -0
index 9f0db39b28ff..c39b813a8199 100644

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

net/mac80211/mlme.c +1 -0
index 61c318f5239f..0e3db0c2920b 100644

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

net/mac80211/parse.c +119 -45

164 lines not on this page · raw message

net/mptcp/pm_netlink.c +15 -3
index 2b1982fe1632..3f93ddab9408 100644

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

net/wireless/nl80211.c +5 -0
index dd84fc54fb9b..f65e7441e644 100644

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

net/wireless/reg.c +2 -1
index 1df65a5a44f7..eec95cb0ab9e 100644

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

rust/kernel/block/mq/gen_disk.rs +3 -3
index 798c4ae0bded..14806e1997fd 100644

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

sound/core/seq/seq_clientmgr.c +30 -16

46 lines not on this page · raw message

sound/pci/hda/Kconfig +1 -0
index 68f1eee9e5c9..dbf933c18a82 100644

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

sound/pci/hda/hda_intel.c +2 -0
index 4a62440adfaf..188b64c0ed75 100644

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

sound/pci/hda/patch_realtek.c +94 -13

107 lines not on this page · raw message

sound/usb/usx2y/usbusx2y.c +11 -0
index 5f81c68fd42b..5756ff3528a2 100644

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

sound/usb/usx2y/usbusx2y.h +26 -0
index 391fd7b4ed5e..6a76d04bf1c7 100644

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

sound/usb/usx2y/usbusx2yaudio.c +0 -27
index f540f46a0b14..acca8bead82e 100644

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

tools/testing/selftests/damon/damon_nr_regions.py +2 -0
index 2e8a74aff543..58f3291fed12 100755

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

tools/testing/selftests/damon/damos_quota.py +6 -3
index 7d4c6bb2e3cd..57c4937aaed2 100755

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

tools/testing/selftests/damon/damos_quota_goal.py +3 -0
index 18246f3b62f7..f76e0412b564 100755

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

tools/testing/selftests/mm/hugepage-mremap.c +1 -1
index ada9156cc497..c463d1c09c9b 100644

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

tools/testing/selftests/mm/ksm_functional_tests.c +7 -1
index 66b4e111b5a2..b61803e36d1c 100644

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

tools/testing/selftests/mm/memfd_secret.c +13 -1
index 74c911aa3aea..9a0597310a76 100644

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

tools/testing/selftests/mm/mkdirty.c +7 -1
index 1db134063c38..b8a7efe9204e 100644

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

tools/testing/selftests/mm/mlock2.h +0 -1
index 1e5731bab499..4417eaa5cfb7 100644

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

tools/testing/selftests/mm/protection_keys.c +1 -1
index 4990f7ab4cb7..4fcecfb7b189 100644

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

tools/testing/selftests/mm/uffd-common.c +4 -0
index 717539eddf98..7ad6ba660c7d 100644

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

tools/testing/selftests/mm/uffd-stress.c +14 -1
index a4b83280998a..944d559ade21 100644

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

tools/testing/selftests/mm/uffd-unit-tests.c +13 -1
index a2e71b1636e7..3ddbb0a71b9c 100644

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

usr/include/Makefile +1 -1
index 6c6de1b1622b..e3d6b03527fe 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.