Linux 6.13.7
Greg Kroah-Hartman
maintainerI'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 0x63Alessio 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()
Greg Kroah-Hartman
maintainerDocumentation/admin-guide/sysctl/kernel.rst +11 -0
@@ -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
@@ -146,6 +146,7 @@ properties: maxItems: 2 pwm-names: + minItems: 1 items: - const: convst1 - const: convst2
Makefile +6 -1
@@ -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
@@ -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
@@ -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_WRPROTECTextern 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
@@ -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
@@ -36,7 +36,8 @@ static inline void huge_pte_clear(struct mm_struct *mm, unsigned long addr,#define __HAVE_ARCH_HUGE_PTEP_GET_AND_CLEARstatic 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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -27,7 +27,8 @@ static inline int prepare_hugepage_range(struct file *file,#define __HAVE_ARCH_HUGE_PTEP_GET_AND_CLEARstatic 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
@@ -10,7 +10,7 @@ void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,#define __HAVE_ARCH_HUGE_PTEP_GET_AND_CLEARpte_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
@@ -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
@@ -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_CLEARstatic 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
@@ -28,7 +28,8 @@ void set_huge_pte_at(struct mm_struct *mm,#define __HAVE_ARCH_HUGE_PTEP_GET_AND_CLEARpte_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
@@ -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
@@ -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_GETextern 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
@@ -285,10 +285,10 @@ static void __init test_monitor_call(void)return ; asmvolatile (" 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
@@ -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
@@ -20,7 +20,7 @@ void __set_huge_pte_at(struct mm_struct *mm, unsigned long addr,#define __HAVE_ARCH_HUGE_PTEP_GET_AND_CLEARpte_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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -808,7 +808,7 @@ void init_intel_cacheinfo(struct cpuinfo_x86 *c)cpuid (2 , ®s[0 ], ®s[1 ], ®s[2 ], ®s[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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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 (>->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 (>->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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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 , ®_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 , ®_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 , ®_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 , ®_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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -502,7 +502,7 @@ static int vsc_tp_probe(struct spi_device *spi)if (ret)
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
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_ptp.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c +4 -2
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/wireless/intel/iwlwifi/fw/dump.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/iwl-drv.c +1 -1
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
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/mvm/time-event.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/pcie/internal.h +3 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/pcie/tx-gen2.c +4 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/pcie/tx.c +14 -9
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/rapidio/devices/rio_mport_cdev.c +2 -1
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/typec/tcpm/tcpci_rt1711h.c +11 -0
Lines of this file are not shown. View the raw message.
drivers/usb/typec/ucsi/ucsi_yoga_c630.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/virt/coco/sev-guest/sev-guest.c +15 -9
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
mm/memory-failure.c +31 -32
63 lines not on this page · raw message
net/llc/llc_s_ac.c +27 -22
49 lines not on this page · raw message
net/mac80211/parse.c +119 -45
164 lines not on this page · raw message
sound/core/seq/seq_clientmgr.c +30 -16
46 lines not on this page · raw message
sound/pci/hda/patch_realtek.c +94 -13
107 lines not on this page · raw message
tools/testing/selftests/damon/damon_nr_regions.py +2 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/damon/damos_quota.py +6 -3
Lines of this file are not shown. View the raw message.
tools/testing/selftests/damon/damos_quota_goal.py +3 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/mm/hugepage-mremap.c +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/mm/ksm_functional_tests.c +7 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/mm/memfd_secret.c +13 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/mm/protection_keys.c +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/mm/uffd-common.c +4 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/mm/uffd-stress.c +14 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/mm/uffd-unit-tests.c +13 -1
Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.