Linux 6.12.19
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.12.19 kernel.
All users of the 6.12 kernel series must upgrade.
The updated 6.12.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.12.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
.clippy.toml | 9 .gitignore | 1 Documentation/admin-guide/sysctl/kernel.rst | 11 Documentation/rust/coding-guidelines.rst | 146 + MAINTAINERS | 8 Makefile | 22 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/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/powerpc/kvm/e500_mmu_host.c | 19 arch/riscv/include/asm/hugetlb.h | 3 arch/riscv/mm/hugetlbpage.c | 2 arch/s390/include/asm/hugetlb.h | 17 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 arch/x86/mm/init.c | 23 block/partitions/efi.c | 2 drivers/base/core.c | 1 drivers/block/rnull.rs | 4 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/gpio/gpio-vf610.c | 11 drivers/gpu/drm/Kconfig | 12 drivers/gpu/drm/Makefile | 6 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/drm_client_setup.c | 66 drivers/gpu/drm/drm_fb_helper.c | 85 - drivers/gpu/drm/drm_fbdev_client.c | 141 + drivers/gpu/drm/drm_fbdev_ttm.c | 142 - drivers/gpu/drm/drm_fourcc.c | 30 drivers/gpu/drm/drm_panic_qr.rs | 25 drivers/gpu/drm/i915/display/i9xx_plane.c | 22 drivers/gpu/drm/i915/display/icl_dsi.c | 448 ++--- drivers/gpu/drm/i915/display/icl_dsi.h | 4 drivers/gpu/drm/i915/display/intel_atomic_plane.c | 49 drivers/gpu/drm/i915/display/intel_atomic_plane.h | 19 drivers/gpu/drm/i915/display/intel_color.c | 17 drivers/gpu/drm/i915/display/intel_color.h | 1 drivers/gpu/drm/i915/display/intel_cursor.c | 101 - drivers/gpu/drm/i915/display/intel_ddi.c | 2 drivers/gpu/drm/i915/display/intel_de.h | 11 drivers/gpu/drm/i915/display/intel_display.c | 58 drivers/gpu/drm/i915/display/intel_display_types.h | 16 drivers/gpu/drm/i915/display/intel_sprite.c | 27 drivers/gpu/drm/i915/display/skl_universal_plane.c | 307 ++- 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 | 2 drivers/gpu/drm/nouveau/nouveau_drm.c | 10 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/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-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/at91-sama5d2_adc.c | 68 drivers/iio/dac/ad3552r.c | 6 drivers/iio/filter/admv8818.c | 14 drivers/iio/light/apds9306.c | 4 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/iwl-drv.c | 2 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 | 20 drivers/nvme/host/nvme.h | 7 drivers/nvme/host/pci.c | 147 + drivers/nvme/host/tcp.c | 81 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 | 18 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 fs/btrfs/file.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/netfs/read_collect.c | 21 fs/netfs/read_pgpriv2.c | 5 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/drm/drm_client_setup.h | 26 include/drm/drm_drv.h | 18 include/drm/drm_fbdev_client.h | 19 include/drm/drm_fbdev_ttm.h | 13 include/drm/drm_fourcc.h | 1 include/linux/compaction.h | 5 include/linux/ethtool.h | 23 include/linux/hugetlb.h | 4 include/linux/nvme-tcp.h | 2 include/linux/nvme.h | 1 include/linux/phy.h | 36 include/linux/phylib_stubs.h | 42 include/linux/sched.h | 2 kernel/events/core.c | 4 kernel/events/uprobes.c | 2 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/kasan/kasan_test_rust.rs | 3 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/Makefile | 92 - rust/bindgen_parameters | 5 rust/bindings/bindings_helper.h | 1 rust/bindings/lib.rs | 6 rust/exports.c | 1 rust/ffi.rs | 48 rust/helpers/helpers.c | 1 rust/helpers/slab.c | 6 rust/helpers/vmalloc.c | 9 rust/kernel/alloc.rs | 150 + rust/kernel/alloc/allocator.rs | 208 +- rust/kernel/alloc/allocator_test.rs | 95 + rust/kernel/alloc/box_ext.rs | 89 - rust/kernel/alloc/kbox.rs | 456 +++++ rust/kernel/alloc/kvec.rs | 913 +++++++++++ rust/kernel/alloc/layout.rs | 91 + rust/kernel/alloc/vec_ext.rs | 185 -- rust/kernel/block/mq/gen_disk.rs | 6 rust/kernel/block/mq/operations.rs | 18 rust/kernel/block/mq/raw_writer.rs | 2 rust/kernel/block/mq/tag_set.rs | 2 rust/kernel/error.rs | 82 rust/kernel/firmware.rs | 2 rust/kernel/init.rs | 127 - rust/kernel/init/__internal.rs | 13 rust/kernel/init/macros.rs | 18 rust/kernel/ioctl.rs | 2 rust/kernel/lib.rs | 5 rust/kernel/list.rs | 1 rust/kernel/list/arc_field.rs | 2 rust/kernel/net/phy.rs | 16 rust/kernel/prelude.rs | 5 rust/kernel/print.rs | 5 rust/kernel/rbtree.rs | 49 rust/kernel/std_vendor.rs | 12 rust/kernel/str.rs | 46 rust/kernel/sync/arc.rs | 25 rust/kernel/sync/arc/std_vendor.rs | 2 rust/kernel/sync/condvar.rs | 7 rust/kernel/sync/lock.rs | 8 rust/kernel/sync/lock/mutex.rs | 4 rust/kernel/sync/lock/spinlock.rs | 4 rust/kernel/sync/locked_by.rs | 2 rust/kernel/task.rs | 8 rust/kernel/time.rs | 4 rust/kernel/types.rs | 140 - rust/kernel/uaccess.rs | 48 rust/kernel/workqueue.rs | 29 rust/macros/lib.rs | 14 rust/macros/module.rs | 8 rust/uapi/lib.rs | 6 samples/rust/rust_minimal.rs | 4 samples/rust/rust_print.rs | 1 scripts/Makefile.build | 4 scripts/generate_rust_analyzer.py | 11 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/bpf/benchs/bench_trigger.c | 3 tools/testing/selftests/bpf/bpf_util.h | 9 tools/testing/selftests/bpf/map_tests/task_storage_map.c | 3 tools/testing/selftests/bpf/prog_tests/bpf_cookie.c | 2 tools/testing/selftests/bpf/prog_tests/bpf_iter.c | 6 tools/testing/selftests/bpf/prog_tests/cgrp_local_storage.c | 10 tools/testing/selftests/bpf/prog_tests/core_reloc.c | 2 tools/testing/selftests/bpf/prog_tests/linked_funcs.c | 2 tools/testing/selftests/bpf/prog_tests/ns_current_pid_tgid.c | 2 tools/testing/selftests/bpf/prog_tests/rcu_read_lock.c | 4 tools/testing/selftests/bpf/prog_tests/task_local_storage.c | 8 tools/testing/selftests/bpf/prog_tests/uprobe_multi_test.c | 2 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 335 files changed, 6008 insertions(+), 2448 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 (2):
xhci: pci: Fix indentation in the PCI device ID definitions
eeprom: digsy_mtc: Make GPIO lookup table match the device
Angelo Dureghello (1):
iio: dac: ad3552r: clear reset status flag
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
Asahi Lina (1):
rust: alloc: Fix ArrayLayout allocations
Badhri Jagan Sridharan (1):
usb: dwc3: gadget: Prevent irq storm when TH re-executes
Bartosz Golaszewski (1):
gpio: vf610: use generic device_get_match_data()
Benno Lossin (1):
rust: alloc: introduce ArrayLayout
Bibo Mao (4):
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 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
Danilo Krummrich (28):
rust: alloc: add Allocator trait
rust: alloc: separate aligned_size from krealloc_aligned
rust: alloc: rename KernelAllocator to Kmalloc
rust: alloc: implement ReallocFunc
rust: alloc: make allocator module public
rust: alloc: implement Allocator for Kmalloc
rust: alloc: add module allocator_test
rust: alloc: implement Vmalloc allocator
rust: alloc: implement KVmalloc allocator
rust: alloc: add __GFP_NOWARN to Flags
rust: alloc: implement kernel Box
rust: treewide: switch to our kernel Box type
rust: alloc: remove extension of std's Box
rust: alloc: add Box to prelude
rust: alloc: implement kernel Vec type
rust: alloc: implement IntoIterator for Vec
rust: alloc: implement collect for IntoIter
rust: treewide: switch to the kernel Vec type
rust: alloc: remove VecExt extension
rust: alloc: add Vec to prelude
rust: error: use core::alloc::LayoutError
rust: error: check for config test in Error::name
rust: alloc: implement contains for Flags
rust: alloc: implement Cmalloc in module allocator_test
rust: str: test: replace alloc::format
rust: alloc: update module comment of alloc.rs
kbuild: rust: remove the alloc crate and GlobalAlloc
MAINTAINERS: add entry for the Rust alloc module
Dave Airlie (1):
drm/nouveau: select FW caching
Emmanuel Grumbach (1):
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
Ethan D. Twardy (1):
rust: kbuild: expand rusttest target for macros
Fabrizio Castro (1):
gpio: rcar: Fix missing of_node_put() call
Fedor Pchelkin (1):
usb: typec: ucsi: increase timeout for PPM reset operations
Filipe Xavier (2):
rust: error: make conversion functions public
rust: error: optimize error type to use nonzero
Gabriel Krisman Bertazi (1):
Revert "mm/page_alloc.c: don't show protection in zone's ->lowmem_reserve[] for empty zone"
Gary Guo (4):
rust: fix size_t in bindgen prototypes of C builtins
rust: map __kernel_size_t and friends also to usize/isize
rust: use custom FFI integer types
rust: map long to isize and char to u8
Greg Kroah-Hartman (5):
Revert "KVM: e500: always restore irqs"
Revert "KVM: PPC: e500: Use __kvm_faultin_pfn() to handle page faults" Revert "KVM: PPC: e500: Mark "struct page" pfn accessed before dropping mmu_lock" Revert "KVM: PPC: e500: Mark "struct page" dirty in kvmppc_e500_shadow_map()" Linux 6.12.19
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
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
Imre Deak (1):
drm/i915/dsi: Use TRANS_DDI_FUNC_CTL's own port width macro
Jakub Kicinski (1):
net: ethtool: plumb PHY stats to PHY drivers
Jani Nikula (1):
drm/i915/dsi: convert to struct intel_display
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
Jiri Olsa (1):
uprobes: Fix race in uprobe_free_utask
Johan Korsnes (1):
gpio: vf610: add locking to gpio direction functions
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 (3):
nvme-pci: add support for sgl metadata
nvme-pci: use sgls for all user requests if possible
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
Kumar Kartikeya Dwivedi (1):
selftests/bpf: Clean up open-coded gettid syscall invocations
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 (3):
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
Max Kellermann (2):
fs/netfs/read_pgpriv2: skip folio queues without marks3 fs/netfs/read_collect: fix crash due to uninitialized prev variable
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 (1):
usb: xhci: Enable the TRB overfetch quirk on VIA VL805
Miguel Ojeda (19):
rust: workqueue: remove unneeded ``#[allow(clippy::new_ret_no_self)]`
rust: sort global Rust flags
rust: types: avoid repetition in {As,From}Bytes impls
rust: enable clippy::undocumented_unsafe_blocks lint
rust: enable clippy::unnecessary_safety_comment lint
rust: enable clippy::unnecessary_safety_doc lint
rust: enable clippy::ignored_unit_patterns lint
rust: enable rustdoc::unescaped_backticks lint
rust: init: remove unneeded #[allow(clippy::disallowed_names)]
rust: sync: remove unneeded #[allow(clippy::non_send_fields_in_send_ty)]
rust: introduce .clippy.toml
rust: replace clippy::dbg_macro with disallowed_macros
rust: provide proper code documentation titles
rust: enable Clippy's check-private-items
Documentation: rust: add coding guidelines on lints
rust: start using the #[expect(...)] attribute
Documentation: rust: discuss #[expect(...)] in the guidelines
rust: finish using custom FFI integer types
docs: rust: remove spurious item in expect list
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
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
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
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
Paolo Bonzini (1):
KVM: e500: always restore irqs
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
Qiu-ji Chen (1):
cdx: Fix possible UAF error in driver_override_show()
Qu Wenruo (1):
btrfs: fix data overwriting bug during buffered write when block size < page size
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
Suren Baghdasaryan (1):
userfaultfd: do not block on locking a large folio with raised refcount
Takashi Iwai (1):
ALSA: seq: Avoid module auto-load handling at event delivery
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 Böhler (7):
drm/panic: avoid reimplementing Iterator::find drm/panic: remove unnecessary borrow in alignment_pattern drm/panic: prefer eliding lifetimes
drm/panic: remove redundant field when assigning value drm/panic: correctly indent continuation of line in list item drm/panic: allow verbose boolean for clarity drm/panic: allow verbose version check
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
Thomas Zimmermann (5):
drm/fbdev-helper: Move color-mode lookup into 4CC format helper drm/fbdev: Add memory-agnostic fbdev client
drm: Add client-agnostic setup helper
drm/fbdev-ttm: Support struct drm_driver.fbdev_probe drm/nouveau: Run DRM default client setup
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
Ville Syrjälä (2):
drm/i915/color: Extract intel_color_modeset() drm/i915: Plumb 'dsb' all way to the plane hooks
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()
Xi Ruoyao (1):
x86/mm: Don't disable PCID when INVLPG has been fixed by microcode
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
maintainer.clippy.toml new file +9 -0
@@ -0,0 +1,9 @@ +# SPDX-License-Identifier: GPL-2.0 + +check-private-items = true + +disallowed-macros = [ + # The `clippy::dbg_macro` lint only works with `std::dbg!`, thus we simulate + # it here, see: https://github.com/rust-lang/rust-clippy/issues/11303. + { path = "kernel::dbg", reason = "the `dbg!` macro is intended as a debugging tool" }, +]
.gitignore +1 -0
@@ -103,6 +103,7 @@ modules.order # We don't want to ignore the following even if they are dot-files # !.clang-format +!.clippy.toml !.cocciconfig !.editorconfig !.get_maintainer.ignore
Documentation/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/rust/coding-guidelines.rst +146 -0
149 lines not on this page · raw message
MAINTAINERS +8 -0
@@ -20175,6 +20175,7 @@ B: https://github.com/Rust-for-Linux/linux/issues C: zulip://rust-for-linux.zulipchat.com P: https://rust-for-linux.com/contributing T: git https://github.com/Rust-for-Linux/linux.git rust-next +F: .clippy.toml F: Documentation/rust/ F: rust/ F: samples/rust/
@@ -20182,6 +20183,13 @@ F: scripts/*rust* F: tools/testing/selftests/rust/ K: \b(?i:rust)\b +RUST [ALLOC] +M: Danilo Krummrich <[email protected]> +L: [email protected] +S: Maintained +F: rust/kernel/alloc.rs +F: rust/kernel/alloc/ + RXRPC SOCKETS (AF_RXRPC) M: David Howells <[email protected]> M: Marc Dionne <[email protected]>
Makefile +17 -5
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 12 -SUBLEVEL = 18 +SUBLEVEL = 19 EXTRAVERSION = NAME = Baby Opossum Posse
@@ -446,19 +446,23 @@ KBUILD_USERLDFLAGS := $(USERLDFLAGS) export rust_common_flags := --edition=2021 \ -Zbinary_dep_depinfo=y \ -Astable_features \ - -Dunsafe_op_in_unsafe_fn \ -Dnon_ascii_idents \ + -Dunsafe_op_in_unsafe_fn \ + -Wmissing_docs \ -Wrust_2018_idioms \ -Wunreachable_pub \ - -Wmissing_docs \ - -Wrustdoc::missing_crate_level_docs \ -Wclippy::all \ + -Wclippy::ignored_unit_patterns \ -Wclippy::mut_mut \ -Wclippy::needless_bitwise_bool \ -Wclippy::needless_continue \ -Aclippy::needless_lifetimes \ -Wclippy::no_mangle_with_rust_abi \ - -Wclippy::dbg_macro + -Wclippy::undocumented_unsafe_blocks \ + -Wclippy::unnecessary_safety_comment \ + -Wclippy::unnecessary_safety_doc \ + -Wrustdoc::missing_crate_level_docs \ + -Wrustdoc::unescaped_backticks KBUILD_HOSTCFLAGS := $(KBUILD_USERHOSTCFLAGS) $(HOST_LFS_CFLAGS) \ $(HOSTCFLAGS) -I $(srctree)/scripts/include
@@ -583,6 +587,9 @@ endif # Allows the usage of unstable features in stable compilers. export RUSTC_BOOTSTRAP := 1 +# Allows finding `.clippy.toml` in out-of-srctree builds. +export CLIPPY_CONF_DIR := $(srctree) + export ARCH SRCARCH CONFIG_SHELL BASH HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE LD CC HOSTPKG_CONFIG export RUSTC RUSTDOC RUSTFMT RUSTC_OR_CLIPPY_QUIET RUSTC_OR_CLIPPY BINDGEN export HOSTRUSTC KBUILD_HOSTRUSTFLAGS
@@ -1060,6 +1067,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/arm64/include/asm/hugetlb.h +2 -2
@@ -34,8 +34,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
@@ -41,7 +41,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);
@@ -56,8 +57,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
@@ -624,6 +624,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
@@ -297,6 +297,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
@@ -46,7 +46,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/mips/include/asm/hugetlb.h +4 -2
@@ -32,7 +32,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;
@@ -47,13 +48,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);/* * If the arch doesn't supply something else, assume that hugepage
arch/parisc/mm/hugetlbpage.c +1 -1
@@ -147,7 +147,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/powerpc/kvm/e500_mmu_host.c +12 -7
@@ -242,7 +242,7 @@ static inline int tlbe_is_writable(struct kvm_book3e_206_tlb_entry *tlbe)return tlbe->mas7_3 & (MAS3_SW |MAS3_UW ); } -static inline bool kvmppc_e500_ref_setup (struct tlbe_ref *ref, +static inline void kvmppc_e500_ref_setup (struct tlbe_ref *ref,struct kvm_book3e_206_tlb_entry *gtlbe,kvm_pfn_t pfn,unsigned int wimg) {
@@ -252,7 +252,11 @@ static inline bool kvmppc_e500_ref_setup(struct tlbe_ref *ref,/* Use guest supplied MAS2_G and MAS2_E */ ref->flags |= (gtlbe->mas2 &MAS2_ATTRIB_MASK ) | wimg; -return tlbe_is_writable (gtlbe); +/* Mark the page accessed */ +kvm_set_pfn_accessed (pfn); + +if (tlbe_is_writable (gtlbe)) +kvm_set_pfn_dirty (pfn); }static inline void kvmppc_e500_ref_release (struct tlbe_ref *ref)
@@ -322,7 +326,6 @@ static inline int kvmppc_e500_shadow_map(struct kvmppc_vcpu_e500 *vcpu_e500, {struct kvm_memory_slot *slot;unsigned long pfn =0 ;/* silence GCC warning */ -struct page *page =NULL ;unsigned long hva;int pfnmap =0 ;int tsize =BOOK3E_PAGESZ_4K ;
@@ -334,7 +337,6 @@ static inline int kvmppc_e500_shadow_map(struct kvmppc_vcpu_e500 *vcpu_e500,unsigned int wimg =0 ;pgd_t *pgdir;unsigned long flags; -bool writable = false;/* used to check for invalidations in progress */ mmu_seq = kvm->mmu_invalidate_seq;
@@ -444,7 +446,7 @@ static inline int kvmppc_e500_shadow_map(struct kvmppc_vcpu_e500 *vcpu_e500,if (likely (!pfnmap)) { tsize_pages =1UL << (tsize +10 -PAGE_SHIFT ); - pfn =__kvm_faultin_pfn (slot, gfn,FOLL_WRITE ,NULL , &page); + pfn =gfn_to_pfn_memslot (slot, gfn);if (is_error_noslot_pfn (pfn)) {if (printk_ratelimit ()) pr_err("%s: real page not found for gfn %lx\n",
@@ -489,7 +491,7 @@ static inline int kvmppc_e500_shadow_map(struct kvmppc_vcpu_e500 *vcpu_e500, }local_irq_restore (flags); - writable =kvmppc_e500_ref_setup (ref, gtlbe, pfn, wimg); +kvmppc_e500_ref_setup (ref, gtlbe, pfn, wimg);kvmppc_e500_setup_stlbe (&vcpu_e500->vcpu, gtlbe, tsize, ref, gvaddr, stlbe);
@@ -497,8 +499,11 @@ static inline int kvmppc_e500_shadow_map(struct kvmppc_vcpu_e500 *vcpu_e500,kvmppc_mmu_flush_icache (pfn); out: -kvm_release_faultin_page (kvm, page, !!ret, writable);spin_unlock (&kvm->mmu_lock); + +/* Drop refcount on page, so that mmu notifiers can clear it */ +kvm_release_pfn_clean (pfn); +return ret; }
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 +12 -5
@@ -20,8 +20,15 @@ void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,void __set_huge_pte_at (struct mm_struct *mm,unsigned long addr,pte_t *ptep,pte_t pte);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); +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); +}/* * If the arch doesn't supply something else, assume that hugepage
@@ -57,7 +64,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); } static inline int huge_ptep_set_access_flags(struct vm_area_struct *vma,
@@ -66,7 +73,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;
@@ -75,7 +82,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
@@ -284,10 +284,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
@@ -174,8 +174,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
@@ -368,7 +368,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
@@ -1387,7 +1387,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
@@ -4579,6 +4579,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:
@@ -4602,10 +4604,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
@@ -1515,16 +1515,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)
@@ -7454,8 +7450,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
@@ -339,8 +339,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
@@ -10964,6 +10964,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 (;;) {
arch/x86/mm/init.c +14 -9
@@ -263,28 +263,33 @@ static void __init probe_page_size_mask(void) }/* -* INVLPG may not properly flush Global entries -* on these CPUs when PCIDs are enabled. +* INVLPG may not properly flush Global entries on +* these CPUs. New microcode fixes the issue. */ static const struct x86_cpu_id invlpg_miss_ids[] = { -X86_MATCH_VFM (INTEL_ALDERLAKE ,0 ), -X86_MATCH_VFM (INTEL_ALDERLAKE_L ,0 ), -X86_MATCH_VFM (INTEL_ATOM_GRACEMONT ,0 ), -X86_MATCH_VFM (INTEL_RAPTORLAKE ,0 ), -X86_MATCH_VFM (INTEL_RAPTORLAKE_P ,0 ), -X86_MATCH_VFM (INTEL_RAPTORLAKE_S ,0 ), +X86_MATCH_VFM (INTEL_ALDERLAKE ,0x2e ), +X86_MATCH_VFM (INTEL_ALDERLAKE_L ,0x42c ), +X86_MATCH_VFM (INTEL_ATOM_GRACEMONT ,0x11 ), +X86_MATCH_VFM (INTEL_RAPTORLAKE ,0x118 ), +X86_MATCH_VFM (INTEL_RAPTORLAKE_P ,0x4117 ), +X86_MATCH_VFM (INTEL_RAPTORLAKE_S ,0x2e ), {} };static void setup_pcid (void ) { +const struct x86_cpu_id *invlpg_miss_match; +if (!IS_ENABLED (CONFIG_X86_64 ))return ;if (!boot_cpu_has (X86_FEATURE_PCID ))return ; -if (x86_match_cpu (invlpg_miss_ids)) { + invlpg_miss_match =x86_match_cpu (invlpg_miss_ids); + +if (invlpg_miss_match && + boot_cpu_data.microcode < invlpg_miss_match->driver_data) {pr_info ("Incomplete global flushes, disabling PCID" );setup_clear_cpu_cap (X86_FEATURE_PCID );return ;
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/rnull.rs +2 -2
@@ -32,7 +32,7 @@ }struct NullBlkModule { - _disk:Pin <Box <Mutex <GenDisk <NullBlkDevice >>>>, + _disk:Pin <KBox <Mutex <GenDisk <NullBlkDevice >>>>, }impl kernel::Module for NullBlkModule {
@@ -47,7 +47,7 @@ fn init(_module: &'static ThisModule) -> Result<Self> { .rotational(false) .build (format_args! ("rnullb{}" ,0 ), tagset)?; -let disk =Box ::pin_init (new_mutex! (disk,"nullb:disk" ), flags::GFP_KERNEL )?; +let disk =KBox ::pin_init (new_mutex! (disk,"nullb:disk" ), flags::GFP_KERNEL )?;Ok (Self { _disk: disk }) }
drivers/block/ublk_drv.c +5 -2
@@ -2665,9 +2665,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
@@ -3644,6 +3644,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
@@ -121,10 +121,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 );
@@ -163,6 +168,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:
@@ -177,6 +183,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; }
@@ -205,13 +213,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/gpio/gpio-vf610.c +7 -4
@@ -15,10 +15,9 @@#include <linux/io.h> #include <linux/ioport.h> #include <linux/irq.h> -#include <linux/platform_device.h> -#include <linux/of.h> -#include <linux/of_irq.h> #include <linux/pinctrl/consumer.h> +#include <linux/platform_device.h> +#include <linux/property.h> #define VF610_GPIO_PER_PORT 32
@@ -37,6 +36,7 @@ struct vf610_gpio_port {struct clk *clk_port;struct clk *clk_gpio;int irq; +spinlock_t lock;/* protect gpio direction registers */ };#define GPIO_PDOR 0x00
@@ -125,6 +125,7 @@ static int vf610_gpio_direction_input(struct gpio_chip *chip, unsigned int gpio)u32 val;if (port->sdata->have_paddr) { +guard (spinlock_irqsave)(&port->lock); val =vf610_gpio_readl (port->gpio_base +GPIO_PDDR ); val &= ~mask;vf610_gpio_writel (val, port->gpio_base +GPIO_PDDR );
@@ -143,6 +144,7 @@ static int vf610_gpio_direction_output(struct gpio_chip *chip, unsigned int gpiovf610_gpio_set (chip, gpio, value);if (port->sdata->have_paddr) { +guard (spinlock_irqsave)(&port->lock); val =vf610_gpio_readl (port->gpio_base +GPIO_PDDR ); val |= mask;vf610_gpio_writel (val, port->gpio_base +GPIO_PDDR );
@@ -297,7 +299,8 @@ static int vf610_gpio_probe(struct platform_device *pdev)if (!port)return -ENOMEM ; - port->sdata =of_device_get_match_data (dev); + port->sdata =device_get_match_data (dev); +spin_lock_init (&port->lock); dual_base = port->sdata->have_dual_base;
drivers/gpu/drm/Kconfig +12 -0
@@ -211,6 +211,18 @@ config DRM_DEBUG_MODESET_LOCK If in doubt, say "N". +config DRM_CLIENT_SELECTION + bool + depends on DRM + select DRM_CLIENT_SETUP if DRM_FBDEV_EMULATION + help + Drivers that support in-kernel DRM clients have to select this + option. + +config DRM_CLIENT_SETUP + bool + depends on DRM_CLIENT_SELECTION + config DRM_FBDEV_EMULATION bool "Enable legacy fbdev support for your modesetting driver" depends on DRM
drivers/gpu/drm/Makefile +5 -1
@@ -144,8 +144,12 @@ drm_kms_helper-y := \ drm_rect.o \ drm_self_refresh_helper.o \ drm_simple_kms_helper.o +drm_kms_helper-$(CONFIG_DRM_CLIENT_SETUP) += \ + drm_client_setup.o drm_kms_helper-$(CONFIG_DRM_PANEL_BRIDGE) += bridge/panel.o -drm_kms_helper-$(CONFIG_DRM_FBDEV_EMULATION) += drm_fb_helper.o +drm_kms_helper-$(CONFIG_DRM_FBDEV_EMULATION) += \ + drm_fbdev_client.o \ + drm_fb_helper.o obj-$(CONFIG_DRM_KMS_HELPER) += drm_kms_helper.o #
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
@@ -1883,16 +1883,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 ;
@@ -1904,7 +1894,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/drm_client_setup.c new file +66 -0
66 lines not on this page · raw message
drivers/gpu/drm/drm_fb_helper.c +24 -61
147 lines not on this page · raw message
drivers/gpu/drm/drm_fbdev_client.c new file +141 -0
141 lines not on this page · raw message
drivers/gpu/drm/drm_fbdev_ttm.c +77 -65
154 lines not on this page · raw message
drivers/gpu/drm/drm_fourcc.c +29 -1
@@ -36,7 +36,6 @@* @depth: bit depth per pixel * * Computes a drm fourcc pixel format code for the given @bpp/@depth values. -* Useful in fbdev emulation code, since that deals in those values. */ uint32_t drm_mode_legacy_fb_format (uint32_t bpp,uint32_t depth) {
@@ -140,6 +139,35 @@ uint32_t drm_driver_legacy_fb_format(struct drm_device *dev, }EXPORT_SYMBOL (drm_driver_legacy_fb_format); +/** +* drm_driver_color_mode_format - Compute DRM 4CC code from color mode +* @dev: DRM device +* @color_mode: command-line color mode +* +* Computes a DRM 4CC pixel format code for the given color mode using +* drm_driver_color_mode(). The color mode is in the format used and the +* kernel command line. It specifies the number of bits per pixel +* and color depth in a single value. +* +* Useful in fbdev emulation code, since that deals in those values. The +* helper does not consider YUV or other complicated formats. This means +* only legacy formats are supported (fmt->depth is a legacy field), but +* the framebuffer emulation can only deal with such formats, specifically +* RGB/BGA formats. +*/ +uint32_t drm_driver_color_mode_format (struct drm_device *dev,unsigned int color_mode) +{ +switch (color_mode) { +case 15 : +return drm_driver_legacy_fb_format (dev,16 ,15 ); +case 32 : +return drm_driver_legacy_fb_format (dev,32 ,24 ); +default : +return drm_driver_legacy_fb_format (dev, color_mode, color_mode); + } +} +EXPORT_SYMBOL (drm_driver_color_mode_format); +/* * Internal function to query information for a given format. See * drm_format_info() for the public API.
drivers/gpu/drm/drm_panic_qr.rs +13 -12
@@ -209,12 +209,9 @@impl Version {/// Returns the smallest QR version than can hold these segments. fn from_segments (segments: &[&Segment <'_>]) ->Option <Version > { -for vin (1 ..=40 ).map (|k|Version (k)) { -if v.max_data () *8 >= segments.iter ().map (|s| s.total_size_bits (v)).sum () { -return Some (v); - } - } -None + (1 ..=40 ) + .map (Version ) + .find (|&v| v.max_data () *8 >= segments.iter ().map (|s| s.total_size_bits (v)).sum ()) }fn width (&self) ->u8 {
@@ -242,7 +239,7 @@ fn g1_blk_size(&self) -> usize { }fn alignment_pattern (&self) -> &'static [u8 ] { - &ALIGNMENT_PATTERNS [self.0 -1 ] +ALIGNMENT_PATTERNS [self.0 -1 ] }fn poly (&self) -> &'static [u8 ] {
@@ -479,7 +476,7 @@ struct EncodedMsg<'a> {/// Data to be put in the QR code, with correct segment encoding, padding, and /// Error Code Correction. impl EncodedMsg <'_> { -fn new <'a, 'b>(segments: &[&Segment <'b>], data: &'amut [u8 ]) ->Option <EncodedMsg <'a>> { +fn new <'a>(segments: &[&Segment <'_>], data: &'amut [u8 ]) ->Option <EncodedMsg <'a>> {let version =Version ::from_segments (segments)?;let ec_size = version.ec_size ();let g1_blocks = version.g1_blocks ();
@@ -492,7 +489,7 @@ fn new<'a, 'b>(segments: &[&Segment<'b>], data: &'a mut [u8]) -> Option<EncodedM data.fill (0 );let mut em =EncodedMsg { - data: data, + data, ec_size, g1_blocks, g2_blocks,
@@ -722,7 +719,10 @@ fn draw_finders(&mut self) {fn is_finder (&self, x:u8 , y:u8 ) ->bool {let end = self.width -8 ; - (x <8 && y <8 ) || (x <8 && y >= end) || (x >= end && y <8 ) +#[expect(clippy::nonminimal_bool)] + { + (x <8 && y <8 ) || (x <8 && y >= end) || (x >= end && y <8 ) + } }// Alignment pattern: 5x5 squares in a grid.
@@ -931,7 +931,7 @@ fn draw_all(&mut self, data: impl Iterator<Item = u8>) {/// They must remain valid for the duration of the function call. #[no_mangle] pub unsafe extern "C" fn drm_panic_qr_generate ( - url: *const i8 , + url: *const kernel::ffi::c_char , data: *mut u8 , data_len:usize , data_size: usize,
@@ -978,10 +978,11 @@ fn draw_all(&mut self, data: impl Iterator<Item = u8>) {/// * `url_len`: Length of the URL. /// /// * If `url_len` > 0, remove the 2 segments header/length and also count the -/// conversion to numeric segments. +/// conversion to numeric segments. /// * If `url_len` = 0, only removes 3 bytes for 1 binary segment. #[no_mangle] pub extern "C" fn drm_panic_qr_max_data_size (version:u8 , url_len:usize ) ->usize { +#[expect(clippy::manual_range_contains)] if version <1 || version >40 {return 0 ; }
drivers/gpu/drm/i915/display/i9xx_plane.c +14 -8
@@ -416,7 +416,8 @@ static int i9xx_plane_min_cdclk(const struct intel_crtc_state *crtc_state,return DIV_ROUND_UP (pixel_rate * num, den); } -static void i9xx_plane_update_noarm (struct intel_plane *plane, +static void i9xx_plane_update_noarm (struct intel_dsb *dsb, +struct intel_plane *plane,const struct intel_crtc_state *crtc_state,const struct intel_plane_state *plane_state) {
@@ -444,7 +445,8 @@ static void i9xx_plane_update_noarm(struct intel_plane *plane, } } -static void i9xx_plane_update_arm (struct intel_plane *plane, +static void i9xx_plane_update_arm (struct intel_dsb *dsb, +struct intel_plane *plane,const struct intel_crtc_state *crtc_state,const struct intel_plane_state *plane_state) {
@@ -507,7 +509,8 @@ static void i9xx_plane_update_arm(struct intel_plane *plane, intel_plane_ggtt_offset(plane_state) + dspaddr_offset); } -static void i830_plane_update_arm (struct intel_plane *plane, +static void i830_plane_update_arm (struct intel_dsb *dsb, +struct intel_plane *plane,const struct intel_crtc_state *crtc_state,const struct intel_plane_state *plane_state) {
@@ -517,11 +520,12 @@ static void i830_plane_update_arm(struct intel_plane *plane,* Additional breakage on i830 causes register reads to return * the last latched value instead of the last written value [ALM026]. */ -i9xx_plane_update_noarm (plane, crtc_state, plane_state); -i9xx_plane_update_arm (plane, crtc_state, plane_state); +i9xx_plane_update_noarm (dsb, plane, crtc_state, plane_state); +i9xx_plane_update_arm (dsb, plane, crtc_state, plane_state); } -static void i9xx_plane_disable_arm (struct intel_plane *plane, +static void i9xx_plane_disable_arm (struct intel_dsb *dsb, +struct intel_plane *plane,const struct intel_crtc_state *crtc_state) {struct drm_i915_private *dev_priv =to_i915 (plane->base.dev);
@@ -549,7 +553,8 @@ static void i9xx_plane_disable_arm(struct intel_plane *plane, }static void -g4x_primary_async_flip (struct intel_plane *plane, +g4x_primary_async_flip (struct intel_dsb *dsb, +struct intel_plane *plane,const struct intel_crtc_state *crtc_state,const struct intel_plane_state *plane_state,bool async_flip)
@@ -569,7 +574,8 @@ g4x_primary_async_flip(struct intel_plane *plane, }static void -vlv_primary_async_flip (struct intel_plane *plane, +vlv_primary_async_flip (struct intel_dsb *dsb, +struct intel_plane *plane,const struct intel_crtc_state *crtc_state,const struct intel_plane_state *plane_state,bool async_flip)
drivers/gpu/drm/i915/display/icl_dsi.c +226 -222
777 lines not on this page · raw message
drivers/gpu/drm/i915/display/intel_atomic_plane.c +29 -20
49 lines not on this page · raw message
drivers/gpu/drm/i915/display/intel_atomic_plane.h +13 -6
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/i915/display/intel_color.c +17 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/i915/display/intel_color.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/i915/display/intel_cursor.c +54 -47
101 lines not on this page · raw message
drivers/gpu/drm/i915/display/intel_ddi.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/i915/display/intel_de.h +11 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/i915/display/intel_display.c +18 -40
58 lines not on this page · raw message
drivers/gpu/drm/i915/display/intel_display_types.h +12 -4
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/i915/display/intel_sprite.c +18 -9
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/i915/display/skl_universal_plane.c +167 -140
307 lines not on this page · raw message
drivers/gpu/drm/imagination/pvr_fw_meta.c +4 -2
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/imagination/pvr_fw_trace.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/imagination/pvr_queue.c +14 -4
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/imagination/pvr_queue.h +4 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/imagination/pvr_vm.c +108 -26
134 lines not on this page · raw message
drivers/gpu/drm/scheduler/gpu_scheduler_trace.h +2 -2
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/xe/display/xe_plane_initial.c +0 -10
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/xe/xe_hmm.c +140 -48
188 lines not on this page · raw message
drivers/gpu/drm/xe/xe_pt.c +49 -47
96 lines not on this page · raw message
drivers/gpu/drm/xe/xe_vm.c +70 -30
100 lines not on this page · raw message
drivers/hid/intel-ish-hid/ishtp-hid-client.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/hwmon/ntc_thermistor.c +33 -33
66 lines not on this page · raw message
drivers/iio/adc/at91-sama5d2_adc.c +40 -28
68 lines not on this page · 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/iwl-drv.c +1 -1
Lines of this file are not shown. View the 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/pci.c +131 -16
147 lines not on this page · 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.
include/drm/drm_client_setup.h new file +26 -0
Lines of this file are not shown. View the raw message.
include/drm/drm_fbdev_client.h new file +19 -0
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
rust/Makefile +49 -43
92 lines not on this page · raw message
rust/ffi.rs new file +48 -0
48 lines not on this page · raw message
rust/kernel/alloc.rs +143 -7
150 lines not on this page · raw message
rust/kernel/alloc/allocator.rs +161 -47
208 lines not on this page · raw message
rust/kernel/alloc/allocator_test.rs new file +95 -0
95 lines not on this page · raw message
rust/kernel/alloc/box_ext.rs deleted +0 -89
89 lines not on this page · raw message
rust/kernel/alloc/kbox.rs new file +456 -0
456 lines not on this page · raw message
rust/kernel/alloc/kvec.rs new file +913 -0
913 lines not on this page · raw message
rust/kernel/alloc/layout.rs new file +91 -0
91 lines not on this page · raw message
rust/kernel/alloc/vec_ext.rs deleted +0 -185
185 lines not on this page · raw message
rust/kernel/error.rs +48 -34
82 lines not on this page · raw message
rust/kernel/init.rs +43 -84
127 lines not on this page · raw message
rust/kernel/rbtree.rs +27 -22
49 lines not on this page · raw message
rust/kernel/str.rs +33 -13
46 lines not on this page · raw message
rust/kernel/types.rs +48 -92
140 lines not on this page · raw message
rust/kernel/uaccess.rs +16 -32
48 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/bpf/benchs/bench_trigger.c +2 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/map_tests/task_storage_map.c +2 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/prog_tests/bpf_cookie.c +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/prog_tests/bpf_iter.c +3 -3
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/prog_tests/cgrp_local_storage.c +5 -5
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/prog_tests/core_reloc.c +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/prog_tests/linked_funcs.c +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/prog_tests/ns_current_pid_tgid.c +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/prog_tests/rcu_read_lock.c +2 -2
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/prog_tests/task_local_storage.c +4 -4
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/prog_tests/uprobe_multi_test.c +1 -1
Lines of this file are not shown. View the 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.