Linux 5.15.103
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.15.103 kernel.
All users of the 5.15 kernel series must upgrade.
The updated 5.15.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.15.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/kernel-parameters.txt | 51 +- Documentation/trace/ftrace.rst | 2 Makefile | 3 arch/alpha/kernel/module.c | 4 arch/arm64/include/asm/efi.h | 6 arch/arm64/kernel/efi.c | 2 arch/mips/include/asm/mach-rc32434/pci.h | 2 arch/powerpc/boot/dts/fsl/t1040rdb-rev-a.dts | 1 arch/powerpc/kernel/iommu.c | 4 arch/powerpc/kernel/time.c | 4 arch/powerpc/kernel/vmlinux.lds.S | 6 arch/riscv/include/asm/ftrace.h | 2 arch/riscv/include/asm/parse_asm.h | 5 arch/riscv/include/asm/patch.h | 2 arch/riscv/kernel/ftrace.c | 14 arch/riscv/kernel/patch.c | 28 + arch/riscv/kernel/stacktrace.c | 2 arch/riscv/kernel/traps.c | 14 arch/s390/kernel/ftrace.c | 86 --- arch/s390/kernel/vmlinux.lds.S | 2 arch/sh/kernel/vmlinux.lds.S | 1 arch/um/kernel/vmlinux.lds.S | 2 arch/x86/kernel/cpu/amd.c | 9 arch/x86/kvm/lapic.c | 1 arch/x86/kvm/svm/avic.c | 28 - arch/x86/kvm/vmx/evmcs.h | 11 arch/x86/kvm/vmx/vmx.c | 44 + drivers/block/brd.c | 10 drivers/block/nbd.c | 14 drivers/char/ipmi/ipmi_ssif.c | 34 + drivers/char/tpm/eventlog/acpi.c | 6 drivers/gpu/drm/amd/amdgpu/soc15.c | 5 drivers/gpu/drm/drm_atomic.c | 1 drivers/gpu/drm/msm/adreno/a5xx_gpu.c | 6 drivers/gpu/drm/msm/adreno/a5xx_preempt.c | 4 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c | 6 drivers/gpu/drm/msm/msm_gem_submit.c | 5 drivers/gpu/drm/nouveau/dispnv50/disp.c | 16 drivers/gpu/drm/nouveau/dispnv50/wndw.c | 12 drivers/gpu/drm/nouveau/dispnv50/wndw.h | 7 drivers/iommu/amd/init.c | 105 +++- drivers/iommu/intel/pasid.c | 7 drivers/macintosh/windfarm_lm75_sensor.c | 4 drivers/macintosh/windfarm_smu_sensors.c | 4 drivers/media/i2c/ov5640.c | 2 drivers/media/rc/gpio-ir-recv.c | 18 drivers/net/dsa/mt7530.c | 35 - drivers/net/ethernet/broadcom/bgmac.c | 8 drivers/net/ethernet/broadcom/bgmac.h | 2 drivers/net/ethernet/broadcom/bnxt/bnxt.c | 23 - drivers/net/ethernet/intel/ice/ice_ethtool.c | 6 drivers/net/ethernet/marvell/octeontx2/af/rvu.h | 5 drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c | 7 drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c | 16 drivers/net/ethernet/marvell/octeontx2/af/rvu_npa.c | 58 ++ drivers/net/ethernet/marvell/octeontx2/af/rvu_reg.h | 3 drivers/net/ethernet/mediatek/mtk_eth_soc.c | 3 drivers/net/ethernet/mediatek/mtk_eth_soc.h | 1 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 1 drivers/net/phy/microchip.c | 32 + drivers/net/phy/phy_device.c | 8 drivers/net/phy/smsc.c | 20 drivers/net/usb/lan78xx.c | 27 - drivers/nfc/fdp/i2c.c | 4 drivers/platform/x86/Kconfig | 3 drivers/regulator/core.c | 27 + drivers/scsi/hosts.c | 2 drivers/scsi/megaraid/megaraid_sas.h | 2 drivers/scsi/megaraid/megaraid_sas_fp.c | 2 drivers/staging/rtl8723bs/core/rtw_ap.c | 20 drivers/staging/rtl8723bs/core/rtw_cmd.c | 96 ++-- drivers/staging/rtl8723bs/core/rtw_ioctl_set.c | 4 drivers/staging/rtl8723bs/core/rtw_mlme.c | 6 drivers/staging/rtl8723bs/core/rtw_mlme_ext.c | 56 +- drivers/staging/rtl8723bs/core/rtw_security.c | 6 drivers/staging/rtl8723bs/include/rtw_security.h | 8 drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c | 355 +++++----------- drivers/staging/rtl8723bs/os_dep/ioctl_linux.c | 51 +- drivers/staging/rtl8723bs/os_dep/os_intfs.c | 4 fs/attr.c | 72 +++ fs/btrfs/block-group.c | 3 fs/dlm/lockspace.c | 21 fs/dlm/lowcomms.c | 16 fs/dlm/lowcomms.h | 1 fs/dlm/main.c | 7 fs/dlm/midcomms.c | 17 fs/dlm/midcomms.h | 3 fs/ext4/block_validity.c | 26 - fs/ext4/ext4.h | 3 fs/ext4/fsmap.c | 2 fs/ext4/inline.c | 1 fs/ext4/inode.c | 7 fs/ext4/ioctl.c | 1 fs/ext4/mballoc.c | 205 +++++---- fs/ext4/namei.c | 36 + fs/ext4/page-io.c | 11 fs/ext4/xattr.c | 3 fs/f2fs/checkpoint.c | 2 fs/f2fs/compress.c | 2 fs/f2fs/data.c | 8 fs/f2fs/f2fs.h | 2 fs/f2fs/file.c | 2 fs/f2fs/gc.c | 6 fs/f2fs/inline.c | 4 fs/f2fs/inode.c | 14 fs/f2fs/node.c | 23 - fs/f2fs/recovery.c | 2 fs/f2fs/segment.c | 2 fs/file.c | 1 fs/fuse/file.c | 2 fs/inode.c | 90 ++-- fs/internal.h | 10 fs/locks.c | 3 fs/namei.c | 82 +++ fs/namespace.c | 29 - fs/ocfs2/file.c | 4 fs/ocfs2/namei.c | 1 fs/open.c | 8 fs/udf/inode.c | 2 fs/xfs/xfs_bmap_util.c | 9 fs/xfs/xfs_file.c | 24 - fs/xfs/xfs_iops.c | 56 -- fs/xfs/xfs_iops.h | 1 fs/xfs/xfs_pnfs.c | 9 include/asm-generic/vmlinux.lds.h | 5 include/linux/fs.h | 6 include/linux/pci_ids.h | 2 include/net/netfilter/nf_tproxy.h | 7 kernel/bpf/btf.c | 1 kernel/fork.c | 2 kernel/irq/irqdomain.c | 152 ++++-- kernel/watch_queue.c | 1 net/caif/caif_usb.c | 3 net/ipv4/netfilter/nf_tproxy_ipv4.c | 2 net/ipv4/tcp_bpf.c | 6 net/ipv4/udp_bpf.c | 3 net/ipv6/ila/ila_xlat.c | 1 net/ipv6/netfilter/nf_tproxy_ipv6.c | 2 net/netfilter/nf_conntrack_core.c | 4 net/netfilter/nf_conntrack_netlink.c | 14 net/nfc/netlink.c | 2 net/smc/af_smc.c | 13 net/sunrpc/svc.c | 6 net/unix/af_unix.c | 16 net/unix/unix_bpf.c | 3 scripts/checkkconfigsymbols.py | 13 scripts/clang-tools/run-clang-tools.py | 21 scripts/diffconfig | 16 tools/bpf/Makefile | 5 tools/bpf/bpf_jit_disasm.c | 5 tools/bpf/bpftool/Makefile | 5 tools/bpf/bpftool/jit_disasm.c | 42 + tools/build/Makefile.feature | 1 tools/build/feature/Makefile | 4 tools/build/feature/test-all.c | 4 tools/build/feature/test-disassembler-init-styled.c | 13 tools/include/tools/dis-asm-compat.h | 55 ++ tools/perf/Makefile.config | 8 tools/perf/builtin-inject.c | 1 tools/perf/builtin-stat.c | 15 tools/perf/util/annotate.c | 7 tools/perf/util/stat.c | 6 tools/perf/util/stat.h | 1 tools/perf/util/target.h | 12 tools/testing/selftests/netfilter/nft_nat.sh | 2 virt/kvm/kvm_main.c | 145 ++++-- 166 files changed, 1779 insertions(+), 1189 deletions(-)
Alex Deucher (1):
drm/amdgpu: fix error checking in amdgpu_read_mm_registers for soc15
Alexander Aring (3):
fs: dlm: fix log of lowcomms vs midcomms
fs: dlm: add midcomms init/start functions
fs: dlm: start midcomms before scand
Alexandre Ghiti (1):
riscv: Use READ_ONCE_NOCHECK in imprecise unwinding stack mode
Alexandru Matei (1):
KVM: VMX: Fix crash due to uninitialized current_vmcs
Alvaro Karsz (1):
PCI: Add SolidRun vendor ID
Andres Freund (5):
tools build: Add feature test for init_disassemble_info API changes tools include: add dis-asm-compat.h to handle version differences tools perf: Fix compilation error with new binutils tools bpf_jit_disasm: Fix compilation error with new binutils tools bpftool: Fix compilation error with new binutils
Andrew Cooper (1):
x86/CPU/AMD: Disable XSAVES on AMD family 0x17
Bart Van Assche (1):
scsi: core: Remove the /proc/scsi/${proc_name} directory earlierBen Skeggs (1):
drm/nouveau/kms/nv50-: remove unused functions
Benjamin Coddington (1):
SUNRPC: Fix a server shutdown leak
Chandrakanth Patil (1):
scsi: megaraid_sas: Update max supported LD IDs to 240
Changbin Du (1):
perf stat: Fix counting when initial delay configured
Christian Brauner (6):
attr: add in_group_or_capable()
fs: move should_remove_suid()
attr: add setattr_should_drop_sgid()
attr: use consistent sgid stripping checks
fs: use consistent setgid checks in is_sxid()
fs: hold writers when changing mount's idmapping
Christian Kohlschütter (1):
regulator: core: Fix off-on-delay-us for always-on/boot-on regulators
Christoph Hellwig (1):
nbd: use the correct block_device in nbd_bdev_reset
Conor Dooley (1):
RISC-V: Don't check text_mutex during stop_machine
Corey Minyard (2):
ipmi:ssif: Increase the message retry time ipmi:ssif: Add a timer between request retries
D. Wythe (1):
net/smc: fix fallback failed while sendmsg with fastopen
Daniel Golle (1):
net: ethernet: mtk_eth_soc: fix RX data corruption issue
Darrick J. Wong (2):
ext4: fix another off-by-one fsmap error on 1k block filesystems
xfs: use setattr_copy to set vfs inode attributes
Dave Chinner (3):
xfs: remove XFS_PREALLOC_SYNC
xfs: fallocate() should call file_modified()
xfs: set prealloc flag in xfs_alloc_file_space()
David Disseldorp (1):
watch_queue: fix IOC_WATCH_QUEUE_SET_SIZE alloc error paths
Dmitry Baryshkov (5):
drm/msm/a5xx: fix setting of the CP_PREEMPT_ENABLE_LOCAL register drm/msm/a5xx: fix highest bank bit for a530 drm/msm/a5xx: fix the emptyness check in the preempt code drm/msm/a5xx: fix context faults during ring switch drm/msm/dpu: fix len of sc7180 ctl blocks
Edward Humes (1):
alpha: fix R_ALPHA_LITERAL reloc for large modules
Eric Biggers (1):
ext4: fix cgroup writeback accounting with fs-layer encryption
Eric Dumazet (3):
ila: do not generate empty messages in ila_xlat_nl_cmd_get_mapping()
netfilter: conntrack: adopt safer max chain length
af_unix: fix struct pid leaks in OOB support
Eric Whitney (1):
ext4: fix RENAME_WHITEOUT handling for inline directories
Fedor Pchelkin (1):
nfc: change order inside nfc_se_io error path
Florian Westphal (1):
netfilter: tproxy: fix deadlock due to missing BH disable
Gaosheng Cui (1):
xfs: remove xfs_setattr_time() declaration
Gavrilov Ilia (1):
iommu/amd: Add a length limitation for the ivrs_acpihid command-line parameter
Greg Kroah-Hartman (2):
powerpc/iommu: fix memory leak with using debugfs_lookup() Linux 5.15.103
Hangbin Liu (1):
selftests: nft_nat: ensuring the listening side is up before starting the client
Hannes Braun (1):
staging: rtl8723bs: fix placement of braces
Hans de Goede (2):
staging: rtl8723bs: Pass correct parameters to cfg80211_get_bss()
staging: rtl8723bs: Fix key-store index handling
Harry Wentland (1):
drm/connector: print max_requested_bpc in state debugfs
Heiko Carstens (1):
s390/ftrace: remove dead code
Heiner Kallweit (1):
net: phy: smsc: fix link up detection in forced irq mode
Ivan Delalande (1):
netfilter: ctnetlink: revert to dumping mark regardless of event type
Jacob Pan (1):
iommu/vt-d: Fix PASID directory pointer coherency
Jaegeuk Kim (3):
f2fs: avoid down_write on nat_tree_lock during checkpoint
f2fs: do not bother checkpoint by f2fs_get_node_info
f2fs: retry to update the inode page given data corruption
Jagath Jog J (1):
Staging: rtl8723bs: Placing opening { braces in previous line
Jan Kara (3):
udf: Fix off-by-one error when discarding preallocation
ext4: Fix possible corruption when moving a directory
ext4: Fix deadlock during directory rename
Jens Axboe (1):
brd: mark as nowait compatible
Jiri Slaby (SUSE) (1):
drm/nouveau/kms/nv50: fix nv50_wndw_new_ prototype
Johan Hovold (2):
irqdomain: Refactor __irq_domain_alloc_irqs()
irqdomain: Fix mapping-creation race
Johannes Thumshirn (1):
btrfs: fix percent calculation for bg reclaim message
Kang Chen (1):
nfc: fdp: add null check of devm_kmalloc_array in fdp_nci_i2c_read_device_properties
Kim Phillips (1):
iommu/amd: Fix ill-formed ivrs_ioapic, ivrs_hpet and ivrs_acpihid options
Kuniyuki Iwashima (1):
af_unix: Remove unnecessary brackets around CONFIG_AF_UNIX_OOB.
Li Jun (1):
media: rc: gpio-ir-recv: add remove function
Liao Chang (1):
riscv: Add header include guards to insn.h
Liu Jian (1):
bpf, sockmap: Fix an infinite loop error when len is 0 in tcp_bpf_recvmsg_parser()
Lorenz Bauer (1):
btf: fix resolving BTF_KIND_VAR after ARRAY, STRUCT, UNION, PTR
Luis Chamberlain (1):
block/brd: add error handling support for add_disk()
Lukas Czerner (1):
ext4: block range must be validated before use in ext4_mb_clear_bb()
Lukas Wunner (1):
net: phy: smsc: Cache interrupt mask
Mark Brown (1):
regulator: Flag uncontrollable regulators as always_on
Masahiro Yamada (4):
scripts: handle BrokenPipeError for python scripts
arch: fix broken BuildID for arm64 and riscv
s390: define RUNTIME_DISCARD_EXIT to fix link error with GNU ld < 2.36
UML: define RUNTIME_DISCARD_EXIT
Matthias Kaehlcke (1):
regulator: core: Use ktime_get_boottime() to determine how long a regulator was off
Mattias Nissler (1):
riscv: Avoid enabling interrupts in die()
Miaohe Lin (1):
KVM: fix memoryleak in kvm_init()
Michael Chan (1):
bnxt_en: Avoid order-5 memory allocation for TPA data
Michael Ellerman (2):
powerpc/vmlinux.lds: Define RUNTIME_DISCARD_EXIT powerpc/vmlinux.lds: Don't discard .rela* for relocatable builds
Michael Straube (1):
staging: rtl8723bs: clean up comparsions to NULL
Morten Linderud (1):
tpm/eventlog: Don't abort tpm_read_log on faulty ACPI address
Namhyung Kim (1):
perf inject: Fix --buildid-all not to eat up MMAP2
Nathan Chancellor (1):
macintosh: windfarm: Use unsigned type for 1-bit bitfields
Nick Desaulniers (1):
Makefile: use -gdwarf-{4|5} for assembler for DEBUG_INFO_DWARF{4|5}Palmer Dabbelt (1):
RISC-V: Avoid dereferening NULL regs in die()
Paul Elder (1):
media: ov5640: Fix analogue gain control
Petr Oros (1):
ice: copy last block omitted in ice_get_module_eeprom()
Pierre Gondois (1):
arm64: efi: Make efi_rt_lock a raw_spinlock
Rafał Miłecki (1):
bgmac: fix *initial* chip reset to support BCM5358
Randy Dunlap (1):
platform: x86: MLX_PLATFORM: select REGMAP instead of depending on it
Ritesh Harjani (3):
ext4: refactor ext4_free_blocks() to pull out ext4_mb_clear_bb()
ext4: add ext4_sb_block_valid() refactored out of ext4_inode_block_valid()
ext4: add strict range checks while freeing blocks
Rob Clark (1):
drm/msm: Fix potential invalid ptr free
Rohan McLure (1):
powerpc/kcsan: Exclude udelay to prevent recursive instrumentation
Rongguang Wei (1):
net: stmmac: add to set device wake up flag when stmmac init phy
Russell King (Oracle) (1):
net: phylib: get rid of unnecessary locking
Sean Christopherson (3):
KVM: Register /dev/kvm as the _very_ last thing during initialization
KVM: SVM: Don't rewrite guest ICR on AVIC IPI virtualization failure
KVM: SVM: Process ICR on AVIC IPI delivery failure due to invalid target
Seth Forshee (1):
filelocks: use mount idmapping for setlease permission check
Shigeru Yoshida (1):
net: caif: Fix use-after-free in cfusbl_device_notify()
Suman Ghosh (1):
octeontx2-af: Unlock contexts in the queue context cache in case of fault detection
Suravee Suthikulpanit (1):
iommu/amd: Add PCI segment support for ivrs_[ioapic/hpet/acpihid] commands
Theodore Ts'o (1):
fs: prevent out-of-bounds array speculation when closing a file descriptor
Tobias Klauser (1):
fork: allow CLONE_NEWTIME in clone3 flags
Tom Saeger (1):
sh: define RUNTIME_DISCARD_EXIT
Vitaly Kuznetsov (4):
KVM: Optimize kvm_make_vcpus_request_mask() a bit
KVM: Pre-allocate cpumasks for kvm_make_all_cpus_request_except()
KVM: nVMX: Don't use Enlightened MSR Bitmap for L3
KVM: VMX: Introduce vmx_msr_bitmap_l01_changed() helper
Vladimir Oltean (2):
powerpc: dts: t1040rdb: fix compatible string for Rev A boards
net: dsa: mt7530: permit port 5 to work without port 6 on MT7621 SoC
Yang Xu (2):
fs: add mode_strip_sgid() helper
fs: move S_ISGID stripping into the vfs_*() helpers
Ye Bin (2):
ext4: move where set the MAY_INLINE_DATA flag is set
ext4: fix WARNING in ext4_update_inline_data
Yuiko Oshino (1):
net: lan78xx: fix accessing the LAN7800's internal phy specific registers from the MAC driver
Zhihao Cheng (1):
ext4: zero i_disksize when initializing the bootloader inode
xurui (1):
MIPS: Fix a compilation issue
Greg Kroah-Hartman
maintainerDocumentation/admin-guide/kernel-parameters.txt +42 -9
@@ -2200,24 +2200,57 @@ ivrs_ioapic [HW,X86-64] Provide an override to the IOAPIC-ID<->DEVICE-ID - mapping provided in the IVRS ACPI table. For - example, to map IOAPIC-ID decimal 10 to - PCI device 00:14.0 write the parameter as: + mapping provided in the IVRS ACPI table. + By default, PCI segment is 0, and can be omitted. + + For example, to map IOAPIC-ID decimal 10 to + PCI segment 0x1 and PCI device 00:14.0, + write the parameter as: + ivrs_ioapic=10@0001:00:14.0 + + Deprecated formats: + * To map IOAPIC-ID decimal 10 to PCI device 00:14.0 + write the parameter as: ivrs_ioapic[10]=00:14.0 + * To map IOAPIC-ID decimal 10 to PCI segment 0x1 and + PCI device 00:14.0 write the parameter as: + ivrs_ioapic[10]=0001:00:14.0 ivrs_hpet [HW,X86-64] Provide an override to the HPET-ID<->DEVICE-ID - mapping provided in the IVRS ACPI table. For - example, to map HPET-ID decimal 0 to - PCI device 00:14.0 write the parameter as: + mapping provided in the IVRS ACPI table. + By default, PCI segment is 0, and can be omitted. + + For example, to map HPET-ID decimal 10 to + PCI segment 0x1 and PCI device 00:14.0, + write the parameter as: + ivrs_hpet=10@0001:00:14.0 + + Deprecated formats: + * To map HPET-ID decimal 0 to PCI device 00:14.0 + write the parameter as: ivrs_hpet[0]=00:14.0 + * To map HPET-ID decimal 10 to PCI segment 0x1 and + PCI device 00:14.0 write the parameter as: + ivrs_ioapic[10]=0001:00:14.0 ivrs_acpihid [HW,X86-64] Provide an override to the ACPI-HID:UID<->DEVICE-ID - mapping provided in the IVRS ACPI table. For - example, to map UART-HID:UID AMD0020:0 to - PCI device 00:14.5 write the parameter as: + mapping provided in the IVRS ACPI table. + By default, PCI segment is 0, and can be omitted. + + For example, to map UART-HID:UID AMD0020:0 to + PCI segment 0x1 and PCI device ID 00:14.5, + write the parameter as: + ivrs_acpihid=AMD0020:0@0001:00:14.5 + + Deprecated formats: + * To map UART-HID:UID AMD0020:0 to PCI segment is 0, + PCI device ID 00:14.5, write the parameter as: ivrs_acpihid[00:14.5]=AMD0020:0 + * To map UART-HID:UID AMD0020:0 to PCI segment 0x1 and + PCI device ID 00:14.5, write the parameter as: + ivrs_acpihid[0001:00:14.5]=AMD0020:0 js= [HW,JOY] Analog joystick See Documentation/input/joydev/joystick.rst.
Documentation/trace/ftrace.rst +1 -1
@@ -2929,7 +2929,7 @@ Produces:: bash-1994 [000] .... 4342.324898: ima_get_action <-process_measurement bash-1994 [000] .... 4342.324898: ima_match_policy <-ima_get_action bash-1994 [000] .... 4342.324899: do_truncate <-do_last - bash-1994 [000] .... 4342.324899: should_remove_suid <-do_truncate + bash-1994 [000] .... 4342.324899: setattr_should_drop_suidgid <-do_truncate bash-1994 [000] .... 4342.324899: notify_change <-do_truncate bash-1994 [000] .... 4342.324900: current_fs_time <-notify_change bash-1994 [000] .... 4342.324900: current_kernel_time <-current_fs_time
Makefile +2 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 15 -SUBLEVEL = 102 +SUBLEVEL = 103 EXTRAVERSION = NAME = Trick or Treat
@@ -888,6 +888,7 @@ ifndef CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT dwarf-version-$(CONFIG_DEBUG_INFO_DWARF4) := 4 dwarf-version-$(CONFIG_DEBUG_INFO_DWARF5) := 5 DEBUG_CFLAGS += -gdwarf-$(dwarf-version-y) +KBUILD_AFLAGS += -gdwarf-$(dwarf-version-y) endif ifdef CONFIG_DEBUG_INFO_REDUCED
arch/alpha/kernel/module.c +1 -3
@@ -146,10 +146,8 @@ apply_relocate_add(Elf64_Shdr *sechdrs, const char *strtab, base = (void *)sechdrs[sechdrs[relsec].sh_info].sh_addr; symtab = (Elf64_Sym *)sechdrs[symindex].sh_addr; -/* The small sections were sorted to the end of the segment. -The following should definitely cover them. */ - gp = (u64 )me->core_layout.base + me->core_layout.size -0x8000 ; got = sechdrs[me->arch.gotsecindex].sh_addr; + gp = got +0x8000 ;for (i =0 ; i < n; i++) {unsigned long r_sym =ELF64_R_SYM (rela[i].r_info);
arch/arm64/include/asm/efi.h +3 -3
@@ -25,7 +25,7 @@ int efi_set_mapping_permissions(struct mm_struct *mm, efi_memory_desc_t *md); ({ \efi_virtmap_load (); \__efi_fpsimd_begin (); \ -spin_lock (&efi_rt_lock); \ +raw_spin_lock (&efi_rt_lock); \ }) #define arch_efi_call_virt(p, f, args...) \
@@ -37,12 +37,12 @@ int efi_set_mapping_permissions(struct mm_struct *mm, efi_memory_desc_t *md);#define arch_efi_call_virt_teardown () \ ({ \ - spin_unlock(&efi_rt_lock); \ + raw_spin_unlock(&efi_rt_lock); \ __efi_fpsimd_end(); \ efi_virtmap_unload(); \ }) -extern spinlock_t efi_rt_lock; +extern raw_spinlock_t efi_rt_lock;efi_status_t __efi_rt_asm_wrapper (void *,const char *, ...);#define ARCH_EFI_IRQ_FLAGS_MASK (PSR_D_BIT | PSR_A_BIT | PSR_I_BIT | PSR_F_BIT)
arch/arm64/kernel/efi.c +1 -1
@@ -145,7 +145,7 @@ asmlinkage efi_status_t efi_handle_corrupted_x18(efi_status_t s, const char *f)return s; } -DEFINE_SPINLOCK (efi_rt_lock); +DEFINE_RAW_SPINLOCK (efi_rt_lock); asmlinkage u64 *efi_rt_stack_top __ro_after_init;
arch/mips/include/asm/mach-rc32434/pci.h +1 -1
@@ -374,7 +374,7 @@ struct pci_msu { PCI_CFG04_STAT_SSE | \ PCI_CFG04_STAT_PE) -#define KORINA_CNFG1 ((KORINA_STAT<<16)|KORINA_CMD) +#define KORINA_CNFG1 (KORINA_STAT | KORINA_CMD)#define KORINA_REVID 0#define KORINA_CLASS_CODE 0
arch/powerpc/boot/dts/fsl/t1040rdb-rev-a.dts +0 -1
@@ -10,7 +10,6 @@ / { model = "fsl,T1040RDB-REV-A"; - compatible = "fsl,T1040RDB-REV-A"; }; &seville_port0 {
arch/powerpc/kernel/iommu.c +1 -3
@@ -68,11 +68,9 @@ static void iommu_debugfs_add(struct iommu_table *tbl)static void iommu_debugfs_del (struct iommu_table *tbl) {char name[10 ]; -struct dentry *liobn_entry;sprintf (name,"%08lx" , tbl->it_index); - liobn_entry =debugfs_lookup (name, iommu_debugfs_dir); -debugfs_remove (liobn_entry); +debugfs_lookup_and_remove (name, iommu_debugfs_dir); }#else static void iommu_debugfs_add (struct iommu_table *tbl){}
arch/powerpc/kernel/time.c +2 -2
@@ -450,7 +450,7 @@ void vtime_flush(struct task_struct *tsk)#define calc_cputime_factors ()#endif -void __delay (unsigned long loops) +void __no_kcsan __delay(unsigned long loops) {unsigned long start;
@@ -471,7 +471,7 @@ void __delay(unsigned long loops) }EXPORT_SYMBOL (__delay); -void udelay (unsigned long usecs) +void __no_kcsan udelay(unsigned long usecs) {__delay (tb_ticks_per_usec * usecs); }
arch/powerpc/kernel/vmlinux.lds.S +5 -1
@@ -8,6 +8,7 @@ #define BSS_FIRST_SECTIONS *(.bss.prominit) #define EMITS_PT_NOTE #define RO_EXCEPTION_TABLE_ALIGN 0 +#define RUNTIME_DISCARD_EXIT #define SOFT_MASK_TABLE(align) \ . = ALIGN(align); \
@@ -407,9 +408,12 @@ SECTIONS DISCARDS /DISCARD/ : { *(*.EMB.apuinfo) - *(.glink .iplt .plt .rela* .comment) + *(.glink .iplt .plt .comment) *(.gnu.version*) *(.gnu.attributes) *(.eh_frame) +#ifndef CONFIG_RELOCATABLE + *(.rela*) +#endif } }
arch/riscv/include/asm/ftrace.h +1 -1
@@ -109,6 +109,6 @@ int ftrace_init_nop(struct module *mod, struct dyn_ftrace *rec);#define ftrace_init_nop ftrace_init_nop#endif -#endif +#endif /* CONFIG_DYNAMIC_FTRACE */ #endif /* _ASM_RISCV_FTRACE_H */
arch/riscv/include/asm/parse_asm.h +5 -0
@@ -3,6 +3,9 @@* Copyright (C) 2020 SiFive */ +#ifndef _ASM_RISCV_INSN_H +#define _ASM_RISCV_INSN_H +#include <linux/bits.h> /* The bit field of immediate value in I-type instruction */
@@ -217,3 +220,5 @@ static inline bool is_ ## INSN_NAME ## _insn(long insn) \ (RVC_X (x_,RVC_B_IMM_5_OPOFF ,RVC_B_IMM_5_MASK ) <<RVC_B_IMM_5_OFF ) | \ (RVC_X (x_,RVC_B_IMM_7_6_OPOFF ,RVC_B_IMM_7_6_MASK ) <<RVC_B_IMM_7_6_OFF ) | \ (RVC_IMM_SIGN(x_) << RVC_B_IMM_SIGN_OFF); }) + +#endif /* _ASM_RISCV_INSN_H */
arch/riscv/include/asm/patch.h +2 -0
@@ -9,4 +9,6 @@int patch_text_nosync (void *addr,const void *insns,size_t len);int patch_text (void *addr,u32 insn); +extern int riscv_patch_in_stop_machine; +#endif /* _ASM_RISCV_PATCH_H */
arch/riscv/kernel/ftrace.c +12 -2
@@ -15,11 +15,21 @@ int ftrace_arch_code_modify_prepare(void) __acquires(&text_mutex) {mutex_lock (&text_mutex); + +/* +* The code sequences we use for ftrace can't be patched while the +* kernel is running, so we need to use stop_machine() to modify them +* for now. This doesn't play nice with text_mutex, we use this flag +* to elide the check. +*/ + riscv_patch_in_stop_machine = true; +return 0 ; } int ftrace_arch_code_modify_post_process(void) __releases(&text_mutex) { + riscv_patch_in_stop_machine = false;mutex_unlock (&text_mutex);return 0 ; }
@@ -109,9 +119,9 @@ int ftrace_init_nop(struct module *mod, struct dyn_ftrace *rec) {int out; -ftrace_arch_code_modify_prepare (); +mutex_lock (&text_mutex); out =ftrace_make_nop (mod, rec,MCOUNT_ADDR ); -ftrace_arch_code_modify_post_process (); +mutex_unlock (&text_mutex);return out; }
arch/riscv/kernel/patch.c +25 -3
@@ -11,6 +11,7 @@#include <asm/kprobes.h> #include <asm/cacheflush.h> #include <asm/fixmap.h> +#include <asm/ftrace.h> #include <asm/patch.h> struct patch_insn {
@@ -19,6 +20,8 @@ struct patch_insn {atomic_t cpu_count; }; +int riscv_patch_in_stop_machine = false; +#ifdef CONFIG_MMU /* * The fix_to_virt(, idx) needs a const value (not a dynamic variable of
@@ -59,8 +62,15 @@ static int patch_insn_write(void *addr, const void *insn, size_t len)* Before reaching here, it was expected to lock the text_mutex * already, so we don't need to give another lock here and could * ensure that it was safe between each cores. +* +* We're currently using stop_machine() for ftrace & kprobes, and while +* that ensures text_mutex is held before installing the mappings it +* does not ensure text_mutex is held by the calling thread. That's +* safe but triggers a lockdep failure, so just elide it for that +* specific case. */ -lockdep_assert_held (&text_mutex); +if (!riscv_patch_in_stop_machine) +lockdep_assert_held (&text_mutex);if (across_pages)patch_map (addr + len,FIX_TEXT_POKE1 );
@@ -121,13 +131,25 @@ NOKPROBE_SYMBOL(patch_text_cb);int patch_text (void *addr,u32 insn) { +int ret;struct patch_insn patch = { .addr = addr, .insn = insn, .cpu_count =ATOMIC_INIT (0 ), }; -return stop_machine_cpuslocked (patch_text_cb, - &patch, cpu_online_mask); +/* +* kprobes takes text_mutex, before calling patch_text(), but as we call +* calls stop_machine(), the lockdep assertion in patch_insn_write() +* gets confused by the context in which the lock is taken. +* Instead, ensure the lock is held before calling stop_machine(), and +* set riscv_patch_in_stop_machine to skip the check in +* patch_insn_write(). +*/ +lockdep_assert_held (&text_mutex); + riscv_patch_in_stop_machine = true; + ret =stop_machine_cpuslocked (patch_text_cb, &patch, cpu_online_mask); + riscv_patch_in_stop_machine = false; +return ret; }NOKPROBE_SYMBOL (patch_text);
arch/riscv/kernel/stacktrace.c +1 -1
@@ -94,7 +94,7 @@ void notrace walk_stackframe(struct task_struct *task,while (!kstack_end (ksp)) {if (__kernel_text_address (pc) &&unlikely (!fn (arg, pc)))break ; - pc = (*ksp++) -0x4 ; + pc =READ_ONCE_NOCHECK (*ksp++) -0x4 ; } }
arch/riscv/kernel/traps.c +9 -5
@@ -33,25 +33,29 @@ void die(struct pt_regs *regs, const char *str) {static int die_counter;int ret; +long cause; +unsigned long flags;oops_enter (); -spin_lock_irq (&die_lock); +spin_lock_irqsave (&die_lock, flags);console_verbose ();bust_spinlocks (1 );pr_emerg ("%s [#%d]\n" , str, ++die_counter);print_modules (); -show_regs (regs); +if (regs) +show_regs (regs); - ret =notify_die (DIE_OOPS , str, regs,0 , regs->cause,SIGSEGV ); + cause = regs ? regs->cause :-1 ; + ret =notify_die (DIE_OOPS , str, regs,0 , cause,SIGSEGV ); -if (regs &&kexec_should_crash (current)) +if (kexec_should_crash (current))crash_kexec (regs);bust_spinlocks (0 );add_taint (TAINT_DIE ,LOCKDEP_NOW_UNRELIABLE ); -spin_unlock_irq (&die_lock); +spin_unlock_irqrestore (&die_lock, flags);oops_exit ();if (in_interrupt ())
arch/s390/kernel/ftrace.c +6 -80
134 lines not on this page · raw message
arch/s390/kernel/vmlinux.lds.S +2 -0
@@ -17,6 +17,8 @@ /* Handle ro_after_init data on our own. */ #define RO_AFTER_INIT_DATA +#define RUNTIME_DISCARD_EXIT + #define EMITS_PT_NOTE #include <asm-generic/vmlinux.lds.h>
arch/sh/kernel/vmlinux.lds.S +1 -0
@@ -4,6 +4,7 @@ * Written by Niibe Yutaka and Paul Mundt */ OUTPUT_ARCH(sh) +#define RUNTIME_DISCARD_EXIT #include <asm/thread_info.h> #include <asm/cache.h> #include <asm/vmlinux.lds.h>
arch/um/kernel/vmlinux.lds.S +1 -1
@@ -1,4 +1,4 @@ - +#define RUNTIME_DISCARD_EXIT KERNEL_STACK_SIZE = 4096 * (1 << CONFIG_KERNEL_STACK_ORDER); #ifdef CONFIG_LD_SCRIPT_STATIC
arch/x86/kernel/cpu/amd.c +9 -0
@@ -904,6 +904,15 @@ void init_spectral_chicken(struct cpuinfo_x86 *c) } }#endif +/* +* Work around Erratum 1386. The XSAVES instruction malfunctions in +* certain circumstances on Zen1/2 uarch, and not all parts have had +* updated microcode at the time of writing (March 2023). +* +* Affected parts all have no supervisor XSAVE states, meaning that +* the XSAVEC instruction (which works fine) is equivalent. +*/ +clear_cpu_cap (c,X86_FEATURE_XSAVES ); }static void init_amd_zn (struct cpuinfo_x86 *c)
arch/x86/kvm/lapic.c +1 -0
@@ -1295,6 +1295,7 @@ void kvm_apic_send_ipi(struct kvm_lapic *apic, u32 icr_low, u32 icr_high)kvm_irq_delivery_to_apic (apic->vcpu->kvm, apic, &irq,NULL ); } +EXPORT_SYMBOL_GPL (kvm_apic_send_ipi);static u32 apic_get_tmcct (struct kvm_lapic *apic) {
arch/x86/kvm/svm/avic.c +15 -13
@@ -318,20 +318,24 @@ int avic_incomplete_ipi_interception(struct kvm_vcpu *vcpu)trace_kvm_avic_incomplete_ipi (vcpu->vcpu_id, icrh, icrl, id, index);switch (id) { +case AVIC_IPI_FAILURE_INVALID_TARGET :case AVIC_IPI_FAILURE_INVALID_INT_TYPE :/* -* AVIC hardware handles the generation of -* IPIs when the specified Message Type is Fixed -* (also known as fixed delivery mode) and -* the Trigger Mode is edge-triggered. The hardware -* also supports self and broadcast delivery modes -* specified via the Destination Shorthand(DSH) -* field of the ICRL. Logical and physical APIC ID -* formats are supported. All other IPI types cause -* a #VMEXIT, which needs to emulated. +* Emulate IPIs that are not handled by AVIC hardware, which +* only virtualizes Fixed, Edge-Triggered INTRs, and falls over +* if _any_ targets are invalid, e.g. if the logical mode mask +* is a superset of running vCPUs. +* +* The exit is a trap, e.g. ICR holds the correct value and RIP +* has been advanced, KVM is responsible only for emulating the +* IPI. Sadly, hardware may sometimes leave the BUSY flag set, +* in which case KVM needs to emulate the ICR write as well in +* order to clear the BUSY flag. */ -kvm_lapic_reg_write (apic,APIC_ICR2 , icrh); -kvm_lapic_reg_write (apic,APIC_ICR , icrl); +if (icrl &APIC_ICR_BUSY ) +kvm_apic_write_nodecode (vcpu,APIC_ICR ); +else +kvm_apic_send_ipi (apic, icrl, icrh);break ;case AVIC_IPI_FAILURE_TARGET_NOT_RUNNING :/*
@@ -341,8 +345,6 @@ int avic_incomplete_ipi_interception(struct kvm_vcpu *vcpu)*/ avic_kick_target_vcpus (vcpu->kvm, apic, icrl, icrh);break ; -case AVIC_IPI_FAILURE_INVALID_TARGET : -break ;case AVIC_IPI_FAILURE_INVALID_BACKING_PAGE :WARN_ONCE (1 ,"Invalid backing page\n" );break ;
arch/x86/kvm/vmx/evmcs.h +0 -11
@@ -162,16 +162,6 @@ static inline u16 evmcs_read16(unsigned long field)return *(u16 *)((char *)current_evmcs + offset); } -static inline void evmcs_touch_msr_bitmap (void ) -{ -if (unlikely (!current_evmcs)) -return ; - -if (current_evmcs->hv_enlightenments_control.msr_bitmap) - current_evmcs->hv_clean_fields &= - ~HV_VMX_ENLIGHTENED_CLEAN_FIELD_MSR_BITMAP ; -} -static inline void evmcs_load (u64 phys_addr) { struct hv_vp_assist_page *vp_ap =
@@ -192,7 +182,6 @@ static inline u64 evmcs_read64(unsigned long field) { return 0; }static inline u32 evmcs_read32 (unsigned long field) {return 0 ; }static inline u16 evmcs_read16 (unsigned long field) {return 0 ; }static inline void evmcs_load (u64 phys_addr) {} -static inline void evmcs_touch_msr_bitmap (void ) {}#endif /* IS_ENABLED(CONFIG_HYPERV) */ #define EVMPTR_INVALID (-1ULL)
arch/x86/kvm/vmx/vmx.c +31 -13
74 lines not on this page · raw message
drivers/block/brd.c +8 -2
@@ -370,6 +370,7 @@ static int brd_alloc(int i)struct brd_device *brd;struct gendisk *disk;char buf[DISK_NAME_LEN ]; +int err = -ENOMEM ;mutex_lock (&brd_devices_mutex);list_for_each_entry (brd, &brd_devices, brd_list) {
@@ -420,16 +421,21 @@ static int brd_alloc(int i)/* Tell the block layer that this is not a rotational device */ blk_queue_flag_set (QUEUE_FLAG_NONROT , disk->queue);blk_queue_flag_clear (QUEUE_FLAG_ADD_RANDOM , disk->queue); -add_disk (disk); +blk_queue_flag_set (QUEUE_FLAG_NOWAIT , disk->queue); + err =add_disk (disk); +if (err) + goto out_cleanup_disk;return 0 ; +out_cleanup_disk: +blk_cleanup_disk (disk); out_free_dev:mutex_lock (&brd_devices_mutex);list_del (&brd->brd_list);mutex_unlock (&brd_devices_mutex);kfree (brd); -return -ENOMEM ; +return err; }static void brd_probe (dev_t dev)
drivers/block/nbd.c +7 -7
@@ -1167,11 +1167,11 @@ static int nbd_reconnect_socket(struct nbd_device *nbd, unsigned long arg)return -ENOSPC ; } -static void nbd_bdev_reset (struct block_device *bdev) +static void nbd_bdev_reset (struct nbd_device *nbd) { -if (bdev->bd_openers >1 ) +if (nbd->disk->part0->bd_openers >1 )return ; -set_capacity (bdev->bd_disk,0 ); +set_capacity (nbd->disk,0 ); }static void nbd_parse_flags (struct nbd_device *nbd)
@@ -1337,7 +1337,7 @@ static int nbd_start_device(struct nbd_device *nbd)return nbd_set_size (nbd, config->bytesize,nbd_blksize (config)); } -static int nbd_start_device_ioctl (struct nbd_device *nbd,struct block_device *bdev) +static int nbd_start_device_ioctl (struct nbd_device *nbd) {struct nbd_config *config = nbd->config;int ret;
@@ -1358,7 +1358,7 @@ static int nbd_start_device_ioctl(struct nbd_device *nbd, struct block_device *bflush_workqueue (nbd->recv_workq);mutex_lock (&nbd->config_lock); -nbd_bdev_reset (bdev); +nbd_bdev_reset (nbd);/* user requested, ignore socket errors */ if (test_bit (NBD_RT_DISCONNECT_REQUESTED , &config->runtime_flags)) ret =0 ;
@@ -1372,7 +1372,7 @@ static void nbd_clear_sock_ioctl(struct nbd_device *nbd, {nbd_clear_sock (nbd);__invalidate_device (bdev, true); -nbd_bdev_reset (bdev); +nbd_bdev_reset (nbd);if (test_and_clear_bit (NBD_RT_HAS_CONFIG_REF , &nbd->config->runtime_flags))nbd_config_put (nbd);
@@ -1418,7 +1418,7 @@ static int __nbd_ioctl(struct block_device *bdev, struct nbd_device *nbd, config->flags = arg;return 0 ;case NBD_DO_IT : -return nbd_start_device_ioctl (nbd, bdev); +return nbd_start_device_ioctl (nbd);case NBD_CLEAR_QUE :/* * This is for compatibility only. The queue is always cleared
drivers/char/ipmi/ipmi_ssif.c +27 -7
@@ -74,7 +74,8 @@/* * Timer values */ -#define SSIF_MSG_USEC 20000/* 20ms between message tries. */ +#define SSIF_MSG_USEC 60000/* 60ms between message tries (T3). */ +#define SSIF_REQ_RETRY_USEC 60000/* 60ms between send retries (T6). */ #define SSIF_MSG_PART_USEC 5000/* 5ms for a message part */ /* How many times to we retry sending/receiving the message. */
@@ -82,7 +83,9 @@#define SSIF_RECV_RETRIES 250#define SSIF_MSG_MSEC (SSIF_MSG_USEC / 1000) +#define SSIF_REQ_RETRY_MSEC (SSIF_REQ_RETRY_USEC / 1000)#define SSIF_MSG_JIFFIES ((SSIF_MSG_USEC * 1000) / TICK_NSEC) +#define SSIF_REQ_RETRY_JIFFIES ((SSIF_REQ_RETRY_USEC * 1000) / TICK_NSEC)#define SSIF_MSG_PART_JIFFIES ((SSIF_MSG_PART_USEC * 1000) / TICK_NSEC)/*
@@ -229,6 +232,9 @@ struct ssif_info {bool got_alert;bool waiting_alert; +/* Used to inform the timeout that it should do a resend. */ +bool do_resend; +/* * If set to true, this will request events the next time the * state machine is idle.
@@ -538,22 +544,28 @@ static void start_get(struct ssif_info *ssif_info) ssif_info->recv, I2C_SMBUS_BLOCK_DATA); } +static void start_resend (struct ssif_info *ssif_info); +static void retry_timeout (struct timer_list *t) {struct ssif_info *ssif_info =from_timer (ssif_info, t, retry_timer);unsigned long oflags, *flags; -bool waiting; +bool waiting, resend;if (ssif_info->stopping)return ; flags =ipmi_ssif_lock_cond (ssif_info, &oflags); + resend = ssif_info->do_resend; + ssif_info->do_resend = false; waiting = ssif_info->waiting_alert; ssif_info->waiting_alert = false;ipmi_ssif_unlock_cond (ssif_info, flags);if (waiting)start_get (ssif_info); +if (resend) +start_resend (ssif_info); }static void watch_timeout (struct timer_list *t)
@@ -602,8 +614,6 @@ static void ssif_alert(struct i2c_client *client, enum i2c_alert_protocol type,start_get (ssif_info); } -static void start_resend (struct ssif_info *ssif_info); -static void msg_done_handler (struct ssif_info *ssif_info,int result,unsigned char *data,unsigned int len) {
@@ -909,7 +919,13 @@ static void msg_written_handler(struct ssif_info *ssif_info, int result,if (result <0 ) { ssif_info->retries_left--;if (ssif_info->retries_left >0 ) { -start_resend (ssif_info); +/* +* Wait the retry timeout time per the spec, +* then redo the send. +*/ + ssif_info->do_resend = true; +mod_timer (&ssif_info->retry_timer, + jiffies +SSIF_REQ_RETRY_JIFFIES );return ; }
@@ -1322,8 +1338,10 @@ static int do_cmd(struct i2c_client *client, int len, unsigned char *msg, ret =i2c_smbus_write_block_data (client,SSIF_IPMI_REQUEST , len, msg);if (ret) { retry_cnt--; -if (retry_cnt >0 ) +if (retry_cnt >0 ) { +msleep (SSIF_REQ_RETRY_MSEC ); goto retry1; + }return -ENODEV ; }
@@ -1464,8 +1482,10 @@ static int start_multipart_test(struct i2c_client *client, 32, msg);if (ret) { retry_cnt--; -if (retry_cnt >0 ) +if (retry_cnt >0 ) { +msleep (SSIF_REQ_RETRY_MSEC ); goto retry_write; + }dev_err (&client->dev,"Could not write multi-part start, though the BMC said it could handle it. Just limit sends to one part.\n" );return ret; }
drivers/char/tpm/eventlog/acpi.c +5 -1
@@ -143,8 +143,12 @@ int tpm_read_log_acpi(struct tpm_chip *chip) ret = -EIO ; virt =acpi_os_map_iomem (start, len); -if (!virt) +if (!virt) { +dev_warn (&chip->dev,"%s: Failed to map ACPI memory\n" , __func__); +/* try EFI log next */ + ret = -ENODEV ; goto err; + }memcpy_fromio (log->bios_event_log, virt, len);
drivers/gpu/drm/amd/amdgpu/soc15.c +3 -2
@@ -461,8 +461,9 @@ static int soc15_read_register(struct amdgpu_device *adev, u32 se_num, *value =0 ;for (i =0 ; i <ARRAY_SIZE (soc15_allowed_read_registers); i++) { en = &soc15_allowed_read_registers[i]; -if (adev->reg_offset[en->hwip][en->inst] && - reg_offset != (adev->reg_offset[en->hwip][en->inst][en->seg] +if (!adev->reg_offset[en->hwip][en->inst]) +continue ; +else if (reg_offset != (adev->reg_offset[en->hwip][en->inst][en->seg] + en->reg_offset))continue ;
drivers/gpu/drm/drm_atomic.c +1 -0
@@ -1052,6 +1052,7 @@ static void drm_atomic_connector_print_state(struct drm_printer *p,drm_printf (p,"connector[%u]: %s\n" , connector->base.id, connector->name);drm_printf (p,"\tcrtc=%s\n" , state->crtc ? state->crtc->name :"(null)" );drm_printf (p,"\tself_refresh_aware=%d\n" , state->self_refresh_aware); +drm_printf (p,"\tmax_requested_bpc=%d\n" , state->max_requested_bpc);if (connector->connector_type ==DRM_MODE_CONNECTOR_WRITEBACK )if (state->writeback_job && state->writeback_job->fb)
drivers/gpu/drm/msm/adreno/a5xx_gpu.c +3 -3
@@ -153,8 +153,8 @@ static void a5xx_submit(struct msm_gpu *gpu, struct msm_gem_submit *submit)OUT_RING (ring,1 );/* Enable local preemption for finegrain preemption */ -OUT_PKT7 (ring,CP_PREEMPT_ENABLE_GLOBAL ,1 ); -OUT_RING (ring,0x02 ); +OUT_PKT7 (ring,CP_PREEMPT_ENABLE_LOCAL ,1 ); +OUT_RING (ring,0x1 );/* Allow CP_CONTEXT_SWITCH_YIELD packets in the IB2 */ OUT_PKT7 (ring,CP_YIELD_ENABLE ,1 );
@@ -801,7 +801,7 @@ static int a5xx_hw_init(struct msm_gpu *gpu)gpu_write (gpu,REG_A5XX_RBBM_AHB_CNTL2 ,0x0000003F );/* Set the highest bank bit */ -if (adreno_is_a540 (adreno_gpu)) +if (adreno_is_a540 (adreno_gpu) ||adreno_is_a530 (adreno_gpu)) regbit =2 ;else regbit =1 ;
drivers/gpu/drm/msm/adreno/a5xx_preempt.c +2 -2
@@ -63,7 +63,7 @@ static struct msm_ringbuffer *get_next_ring(struct msm_gpu *gpu)struct msm_ringbuffer *ring = gpu->rb[i];spin_lock_irqsave (&ring->preempt_lock, flags); - empty = (get_wptr (ring) == ring->memptrs->rptr); + empty = (get_wptr (ring) == gpu->funcs->get_rptr (gpu, ring));spin_unlock_irqrestore (&ring->preempt_lock, flags);if (!empty)
@@ -208,6 +208,7 @@ void a5xx_preempt_hw_init(struct msm_gpu *gpu) a5xx_gpu->preempt[i]->wptr =0 ; a5xx_gpu->preempt[i]->rptr =0 ; a5xx_gpu->preempt[i]->rbase = gpu->rb[i]->iova; + a5xx_gpu->preempt[i]->rptr_addr =shadowptr (a5xx_gpu, gpu->rb[i]); }/* Write a 0 to signal that we aren't switching pagetables */
@@ -259,7 +260,6 @@ static int preempt_init_ring(struct a5xx_gpu *a5xx_gpu, ptr->data =0 ; ptr->cntl =MSM_GPU_RB_CNTL_DEFAULT |AXXX_CP_RB_CNTL_NO_UPDATE ; - ptr->rptr_addr =shadowptr (a5xx_gpu, ring); ptr->counter = counters_iova;return 0 ;
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c +3 -3
@@ -375,19 +375,19 @@ static const struct dpu_ctl_cfg sdm845_ctl[] = {static const struct dpu_ctl_cfg sc7180_ctl[] = { { .name ="ctl_0" , .id =CTL_0 , - .base =0x1000 , .len =0xE4 , + .base =0x1000 , .len =0x1dc , .features =BIT (DPU_CTL_ACTIVE_CFG ), .intr_start =DPU_IRQ_IDX (MDP_SSPP_TOP0_INTR2 ,9 ), }, { .name ="ctl_1" , .id =CTL_1 , - .base =0x1200 , .len =0xE4 , + .base =0x1200 , .len =0x1dc , .features =BIT (DPU_CTL_ACTIVE_CFG ), .intr_start =DPU_IRQ_IDX (MDP_SSPP_TOP0_INTR2 ,10 ), }, { .name ="ctl_2" , .id =CTL_2 , - .base =0x1400 , .len =0xE4 , + .base =0x1400 , .len =0x1dc , .features =BIT (DPU_CTL_ACTIVE_CFG ), .intr_start =DPU_IRQ_IDX (MDP_SSPP_TOP0_INTR2 ,11 ), },
drivers/gpu/drm/msm/msm_gem_submit.c +2 -3
@@ -640,8 +640,8 @@ static struct msm_submit_post_dep *msm_parse_post_deps(struct drm_device *dev,int ret =0 ;uint32_t i, j; - post_deps =kmalloc_array (nr_syncobjs,sizeof (*post_deps), -GFP_KERNEL | __GFP_NOWARN | __GFP_NORETRY); + post_deps =kcalloc (nr_syncobjs,sizeof (*post_deps), +GFP_KERNEL | __GFP_NOWARN | __GFP_NORETRY);if (!post_deps)return ERR_PTR (-ENOMEM );
@@ -656,7 +656,6 @@ static struct msm_submit_post_dep *msm_parse_post_deps(struct drm_device *dev, } post_deps[i].point = syncobj_desc.point; - post_deps[i].chain =NULL ;if (syncobj_desc.flags) { ret = -EINVAL ;
drivers/gpu/drm/nouveau/dispnv50/disp.c +0 -16
@@ -2622,14 +2622,6 @@ nv50_display_fini(struct drm_device *dev, bool runtime, bool suspend) {struct nouveau_drm *drm =nouveau_drm (dev);struct drm_encoder *encoder; -struct drm_plane *plane; - -drm_for_each_plane (plane, dev) { -struct nv50_wndw *wndw =nv50_wndw (plane); -if (plane->funcs != &nv50_wndw) -continue ; -nv50_wndw_fini (wndw); - }list_for_each_entry (encoder, &dev->mode_config.encoder_list, head) {if (encoder->encoder_type !=DRM_MODE_ENCODER_DPMST )
@@ -2645,7 +2637,6 @@ nv50_display_init(struct drm_device *dev, bool resume, bool runtime) {struct nv50_core *core =nv50_disp (dev)->core;struct drm_encoder *encoder; -struct drm_plane *plane;if (resume || runtime) core->func->init (core);
@@ -2658,13 +2649,6 @@ nv50_display_init(struct drm_device *dev, bool resume, bool runtime) } } -drm_for_each_plane (plane, dev) { -struct nv50_wndw *wndw =nv50_wndw (plane); -if (plane->funcs != &nv50_wndw) -continue ; -nv50_wndw_init (wndw); - } -return 0 ; }
drivers/gpu/drm/nouveau/dispnv50/wndw.c +0 -12
@@ -694,18 +694,6 @@ nv50_wndw_notify(struct nvif_notify *notify)return NVIF_NOTIFY_KEEP ; } -void -nv50_wndw_fini (struct nv50_wndw *wndw) -{ -nvif_notify_put (&wndw->notify); -} - -void -nv50_wndw_init (struct nv50_wndw *wndw) -{ -nvif_notify_get (&wndw->notify); -} -static const u64 nv50_cursor_format_modifiers[] = {DRM_FORMAT_MOD_LINEAR ,DRM_FORMAT_MOD_INVALID ,
drivers/gpu/drm/nouveau/dispnv50/wndw.h +3 -4
@@ -38,10 +38,9 @@ struct nv50_wndw {int nv50_wndw_new_ (const struct nv50_wndw_func *,struct drm_device *,enum drm_plane_type ,const char *name,int index, -const u32 *format,enum nv50_disp_interlock_type , -u32 interlock_data,u32 heads,struct nv50_wndw **); -void nv50_wndw_init (struct nv50_wndw *); -void nv50_wndw_fini (struct nv50_wndw *); +const u32 *format,u32 heads, +enum nv50_disp_interlock_type ,u32 interlock_data, +struct nv50_wndw **);void nv50_wndw_flush_set (struct nv50_wndw *,u32 *interlock,struct nv50_wndw_atom *); void nv50_wndw_flush_clr(struct nv50_wndw *, u32 *interlock, bool flush,
drivers/iommu/amd/init.c +79 -26
160 lines not on this page · raw message
drivers/iommu/intel/pasid.c +7 -0
@@ -186,6 +186,9 @@ int intel_pasid_alloc_table(struct device *dev) attach_out:device_attach_pasid_table (info, pasid_table); +if (!ecap_coherent (info->iommu->ecap)) +clflush_cache_range (pasid_table->table, size); +return 0 ; }
@@ -276,6 +279,10 @@ static struct pasid_entry *intel_pasid_get_entry(struct device *dev, u32 pasid)free_pgtable_page (entries); goto retry; } +if (!ecap_coherent (info->iommu->ecap)) { +clflush_cache_range (entries,VTD_PAGE_SIZE ); +clflush_cache_range (&dir[dir_index].val,sizeof (*dir)); + } }return &entries[index];
drivers/macintosh/windfarm_lm75_sensor.c +2 -2
@@ -34,8 +34,8 @@#endif struct wf_lm75_sensor { -int ds1775 :1 ; -int inited :1 ; +unsigned int ds1775 :1 ; +unsigned int inited :1 ;struct i2c_client *i2c;struct wf_sensor sens; };
drivers/macintosh/windfarm_smu_sensors.c +2 -2
@@ -273,8 +273,8 @@ struct smu_cpu_power_sensor {struct list_head link;struct wf_sensor *volts;struct wf_sensor *amps; - int fake_volts : 1; - int quadratic : 1; + unsigned int fake_volts : 1; + unsigned int quadratic : 1;struct wf_sensor sens; };#define to_smu_cpu_power (c) container_of(c, struct smu_cpu_power_sensor, sens)
drivers/media/i2c/ov5640.c +1 -1
@@ -2776,7 +2776,7 @@ static int ov5640_init_controls(struct ov5640_dev *sensor)/* Auto/manual gain */ ctrls->auto_gain =v4l2_ctrl_new_std (hdl, ops,V4L2_CID_AUTOGAIN ,0 ,1 ,1 ,1 ); - ctrls->gain =v4l2_ctrl_new_std (hdl, ops,V4L2_CID_GAIN , + ctrls->gain =v4l2_ctrl_new_std (hdl, ops,V4L2_CID_ANALOGUE_GAIN ,0 ,1023 ,1 ,0 ); ctrls->saturation = v4l2_ctrl_new_std(hdl, ops, V4L2_CID_SATURATION,
drivers/media/rc/gpio-ir-recv.c +18 -0
@@ -130,6 +130,23 @@ static int gpio_ir_recv_probe(struct platform_device *pdev) "gpio-ir-recv-irq", gpio_dev); } +static int gpio_ir_recv_remove (struct platform_device *pdev) +{ +struct gpio_rc_dev *gpio_dev =platform_get_drvdata (pdev); +struct device *pmdev = gpio_dev->pmdev; + +if (pmdev) { +pm_runtime_get_sync (pmdev); +cpu_latency_qos_remove_request (&gpio_dev->qos); + +pm_runtime_disable (pmdev); +pm_runtime_put_noidle (pmdev); +pm_runtime_set_suspended (pmdev); + } + +return 0 ; +} +#ifdef CONFIG_PM static int gpio_ir_recv_suspend (struct device *dev) {
@@ -189,6 +206,7 @@ MODULE_DEVICE_TABLE(of, gpio_ir_recv_of_match);static struct platform_driver gpio_ir_recv_driver = { .probe = gpio_ir_recv_probe, + .remove = gpio_ir_recv_remove, .driver = { .name =KBUILD_MODNAME , .of_match_table =of_match_ptr (gpio_ir_recv_of_match),
drivers/net/dsa/mt7530.c +20 -15
@@ -388,6 +388,24 @@ mt7530_fdb_write(struct mt7530_priv *priv, u16 vid,mt7530_write (priv,MT7530_ATA1 + (i *4 ), reg[i]); } +/* Set up switch core clock for MT7530 */ +static void mt7530_pll_setup (struct mt7530_priv *priv) +{ +/* Disable PLL */ +core_write (priv,CORE_GSWPLL_GRP1 ,0 ); + +/* Set core clock into 500Mhz */ +core_write (priv,CORE_GSWPLL_GRP2 , +RG_GSWPLL_POSDIV_500M (1 ) | +RG_GSWPLL_FBKDIV_500M (25 )); + +/* Enable PLL */ +core_write (priv,CORE_GSWPLL_GRP1 , +RG_GSWPLL_EN_PRE | +RG_GSWPLL_POSDIV_200M (2 ) | +RG_GSWPLL_FBKDIV_200M (32 )); +} +/* Setup TX circuit including relevant PAD and driving */ static int mt7530_pad_clk_setup (struct dsa_switch *ds,phy_interface_t interface)
@@ -448,21 +466,6 @@ mt7530_pad_clk_setup(struct dsa_switch *ds, phy_interface_t interface)core_clear (priv,CORE_TRGMII_GSW_CLK_CG ,REG_GSWCK_EN |REG_TRGMIICK_EN ); -/* Setup core clock for MT7530 */ -/* Disable PLL */ -core_write (priv,CORE_GSWPLL_GRP1 ,0 ); - -/* Set core clock into 500Mhz */ -core_write (priv,CORE_GSWPLL_GRP2 , -RG_GSWPLL_POSDIV_500M (1 ) | -RG_GSWPLL_FBKDIV_500M (25 )); - -/* Enable PLL */ -core_write (priv,CORE_GSWPLL_GRP1 , -RG_GSWPLL_EN_PRE | -RG_GSWPLL_POSDIV_200M (2 ) | -RG_GSWPLL_FBKDIV_200M (32 )); -/* Setup the MT7530 TRGMII Tx Clock */ core_write (priv,CORE_PLL_GROUP5 ,RG_LCDDS_PCW_NCPO1 (ncpo1));core_write (priv,CORE_PLL_GROUP6 ,RG_LCDDS_PCW_NCPO0 (0 ));
@@ -2163,6 +2166,8 @@ mt7530_setup(struct dsa_switch *ds)SYS_CTRL_PHY_RST |SYS_CTRL_SW_RST | SYS_CTRL_REG_RST); +mt7530_pll_setup (priv); +/* Enable Port 6 only; P5 as GMAC5 which currently is not supported */ val =mt7530_read (priv,MT7530_MHWTRAP ); val &= ~MHWTRAP_P6_DIS & ~MHWTRAP_PHY_ACCESS ;
drivers/net/ethernet/broadcom/bgmac.c +6 -2
@@ -890,13 +890,13 @@ static void bgmac_chip_reset_idm_config(struct bgmac *bgmac)if (iost &BGMAC_BCMA_IOST_ATTACHED ) { flags =BGMAC_BCMA_IOCTL_SW_CLKEN ; -if (!bgmac->has_robosw) +if (bgmac->in_init || !bgmac->has_robosw) flags |=BGMAC_BCMA_IOCTL_SW_RESET ; }bgmac_clk_enable (bgmac, flags); } -if (iost &BGMAC_BCMA_IOST_ATTACHED && !bgmac->has_robosw) +if (iost &BGMAC_BCMA_IOST_ATTACHED && (bgmac->in_init || !bgmac->has_robosw))bgmac_idm_write (bgmac,BCMA_IOCTL ,bgmac_idm_read (bgmac,BCMA_IOCTL ) & ~BGMAC_BCMA_IOCTL_SW_RESET );
@@ -1490,6 +1490,8 @@ int bgmac_enet_probe(struct bgmac *bgmac)struct net_device *net_dev = bgmac->net_dev;int err; + bgmac->in_init = true; +bgmac_chip_intrs_off (bgmac); net_dev->irq = bgmac->irq;
@@ -1542,6 +1544,8 @@ int bgmac_enet_probe(struct bgmac *bgmac)/* Omit FCS from max MTU size */ net_dev->max_mtu =BGMAC_RX_MAX_FRAME_SIZE -ETH_FCS_LEN ; + bgmac->in_init = false; + err =register_netdev (bgmac->net_dev);if (err) {dev_err (bgmac->dev,"Cannot register net device\n" );
drivers/net/ethernet/broadcom/bgmac.h +2 -0
@@ -474,6 +474,8 @@ struct bgmac {int irq;u32 int_mask; +bool in_init; +/* Current MAC state */ int mac_speed;int mac_duplex;
drivers/net/ethernet/broadcom/bnxt/bnxt.c +12 -11
@@ -2999,7 +2999,7 @@ static int bnxt_alloc_ring(struct bnxt *bp, struct bnxt_ring_mem_info *rmem)static void bnxt_free_tpa_info (struct bnxt *bp) { -int i; +int i, j;for (i =0 ; i < bp->rx_nr_rings; i++) {struct bnxt_rx_ring_info *rxr = &bp->rx_ring[i];
@@ -3007,8 +3007,10 @@ static void bnxt_free_tpa_info(struct bnxt *bp)kfree (rxr->rx_tpa_idx_map); rxr->rx_tpa_idx_map =NULL ;if (rxr->rx_tpa) { -kfree (rxr->rx_tpa[0 ].agg_arr); - rxr->rx_tpa[0 ].agg_arr =NULL ; +for (j =0 ; j < bp->max_tpa; j++) { +kfree (rxr->rx_tpa[j].agg_arr); + rxr->rx_tpa[j].agg_arr =NULL ; + } }kfree (rxr->rx_tpa); rxr->rx_tpa =NULL ;
@@ -3017,14 +3019,13 @@ static void bnxt_free_tpa_info(struct bnxt *bp)static int bnxt_alloc_tpa_info (struct bnxt *bp) { -int i, j, total_aggs =0 ; +int i, j; bp->max_tpa =MAX_TPA ;if (bp->flags &BNXT_FLAG_CHIP_P5 ) {if (!bp->max_tpa_v2)return 0 ; bp->max_tpa =max_t (u16, bp->max_tpa_v2,MAX_TPA_P5 ); - total_aggs = bp->max_tpa *MAX_SKB_FRAGS ; }for (i =0 ; i < bp->rx_nr_rings; i++) {
@@ -3038,12 +3039,12 @@ static int bnxt_alloc_tpa_info(struct bnxt *bp)if (!(bp->flags &BNXT_FLAG_CHIP_P5 ))continue ; - agg =kcalloc (total_aggs,sizeof (*agg),GFP_KERNEL ); - rxr->rx_tpa[0 ].agg_arr = agg; -if (!agg) -return -ENOMEM ; -for (j =1 ; j < bp->max_tpa; j++) - rxr->rx_tpa[j].agg_arr = agg + j *MAX_SKB_FRAGS ; +for (j =0 ; j < bp->max_tpa; j++) { + agg =kcalloc (MAX_SKB_FRAGS ,sizeof (*agg),GFP_KERNEL ); +if (!agg) +return -ENOMEM ; + rxr->rx_tpa[j].agg_arr = agg; + } rxr->rx_tpa_idx_map =kzalloc (sizeof (*rxr->rx_tpa_idx_map),GFP_KERNEL );if (!rxr->rx_tpa_idx_map)
drivers/net/ethernet/intel/ice/ice_ethtool.c +4 -2
@@ -3998,6 +3998,8 @@ ice_get_module_eeprom(struct net_device *netdev,* SFP modules only ever use page 0. */ if (page ==0 || !(data[0x2 ] &0x4 )) { +u32 copy_len; +/* If i2c bus is busy due to slow page change or * link management access, call can fail. This is normal. * So we retry this a few times.
@@ -4021,8 +4023,8 @@ ice_get_module_eeprom(struct net_device *netdev, }/* Make sure we have enough room for the new block */ -if ((i +SFF_READ_BLOCK_SIZE ) < ee->len) -memcpy (data + i, value,SFF_READ_BLOCK_SIZE ); + copy_len =min_t (u32,SFF_READ_BLOCK_SIZE , ee->len - i); +memcpy (data + i, value, copy_len); } }return 0 ;
drivers/net/ethernet/marvell/octeontx2/af/rvu.h +5 -0
@@ -811,6 +811,9 @@ bool is_mcam_entry_enabled(struct rvu *rvu, struct npc_mcam *mcam, int blkaddr,/* CPT APIs */ int rvu_cpt_lf_teardown (struct rvu *rvu,u16 pcifunc,int lf,int slot); +#define NDC_AF_BANK_MASK GENMASK_ULL(7, 0) +#define NDC_AF_BANK_LINE_MASK GENMASK_ULL(31, 16) +/* CN10K RVU */ int rvu_set_channels_base (struct rvu *rvu);void rvu_program_channels (struct rvu *rvu);
@@ -826,6 +829,8 @@ static inline void rvu_dbg_init(struct rvu *rvu) {}static inline void rvu_dbg_exit (struct rvu *rvu) {}#endif +int rvu_ndc_fix_locked_cacheline (struct rvu *rvu,int blkaddr); +/* RVU Switch */ void rvu_switch_enable (struct rvu *rvu);void rvu_switch_disable (struct rvu *rvu);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c +3 -4
@@ -196,9 +196,6 @@ enum cpt_eng_type { CPT_IE_TYPE = 3, }; -#define NDC_MAX_BANK (rvu, blk_addr) (rvu_read64(rvu, \ - blk_addr, NDC_AF_CONST) & 0xFF) -#define rvu_dbg_NULL NULL#define rvu_dbg_open_NULL NULL
@@ -1009,6 +1006,7 @@ static int ndc_blk_hits_miss_stats(struct seq_file *s, int idx, int blk_addr)struct nix_hw *nix_hw;struct rvu *rvu;int bank, max_bank; +u64 ndc_af_const;if (blk_addr ==BLKADDR_NDC_NPA0 ) { rvu = s->private;
@@ -1017,7 +1015,8 @@ static int ndc_blk_hits_miss_stats(struct seq_file *s, int idx, int blk_addr) rvu = nix_hw->rvu; } - max_bank =NDC_MAX_BANK (rvu, blk_addr); + ndc_af_const =rvu_read64 (rvu, blk_addr,NDC_AF_CONST ); + max_bank =FIELD_GET (NDC_AF_BANK_MASK , ndc_af_const);for (bank =0 ; bank < max_bank; bank++) {seq_printf (s,"BANK:%d\n" , bank); seq_printf(s, "\tHits:\t%lld\n",
drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c +15 -1
@@ -797,6 +797,7 @@ static int nix_aq_enqueue_wait(struct rvu *rvu, struct rvu_block *block,struct nix_aq_res_s *result;int timeout =1000 ;u64 reg, head; +int ret; result = (struct nix_aq_res_s *)aq->res->base;
@@ -820,9 +821,22 @@ static int nix_aq_enqueue_wait(struct rvu *rvu, struct rvu_block *block,return -EBUSY ; } -if (result->compcode !=NIX_AQ_COMP_GOOD ) +if (result->compcode !=NIX_AQ_COMP_GOOD ) {/* TODO: Replace this with some error code */ +if (result->compcode ==NIX_AQ_COMP_CTX_FAULT || + result->compcode ==NIX_AQ_COMP_LOCKERR || + result->compcode ==NIX_AQ_COMP_CTX_POISON ) { + ret =rvu_ndc_fix_locked_cacheline (rvu,BLKADDR_NDC_NIX0_RX ); + ret |=rvu_ndc_fix_locked_cacheline (rvu,BLKADDR_NDC_NIX0_TX ); + ret |=rvu_ndc_fix_locked_cacheline (rvu,BLKADDR_NDC_NIX1_RX ); + ret |=rvu_ndc_fix_locked_cacheline (rvu,BLKADDR_NDC_NIX1_TX ); +if (ret) +dev_err (rvu->dev, +"%s: Not able to unlock cachelines\n" , __func__); + } +return -EBUSY ; + }return 0 ; }
drivers/net/ethernet/marvell/octeontx2/af/rvu_npa.c +56 -2
75 lines not on this page · raw message
drivers/net/ethernet/marvell/octeontx2/af/rvu_reg.h +3 -0
@@ -670,6 +670,7 @@#define NDC_AF_INTR_ENA_W1S (0x00068)#define NDC_AF_INTR_ENA_W1C (0x00070)#define NDC_AF_ACTIVE_PC (0x00078) +#define NDC_AF_CAMS_RD_INTERVAL (0x00080)#define NDC_AF_BP_TEST_ENABLE (0x001F8)#define NDC_AF_BP_TEST (a) (0x00200 | (a) << 3)#define NDC_AF_BLK_RST (0x002F0)
@@ -685,6 +686,8 @@ (0x00F00 | (a) << 5 | (b) << 4)#define NDC_AF_BANKX_HIT_PC (a) (0x01000 | (a) << 3)#define NDC_AF_BANKX_MISS_PC (a) (0x01100 | (a) << 3) +#define NDC_AF_BANKX_LINEX_METADATA (a, b) \ + (0x10000 | (a) << 12 | (b) << 3)/* LBK */ #define LBK_CONST (0x10ull)
drivers/net/ethernet/mediatek/mtk_eth_soc.c +2 -1
@@ -363,7 +363,8 @@ static void mtk_mac_config(struct phylink_config *config, unsigned int mode, mcr_cur =mtk_r32 (mac->hw,MTK_MAC_MCR (mac->id)); mcr_new = mcr_cur; mcr_new |=MAC_MCR_IPG_CFG |MAC_MCR_FORCE_MODE | -MAC_MCR_BACKOFF_EN |MAC_MCR_BACKPR_EN |MAC_MCR_FORCE_LINK ; +MAC_MCR_BACKOFF_EN |MAC_MCR_BACKPR_EN |MAC_MCR_FORCE_LINK | +MAC_MCR_RX_FIFO_CLR_DIS ;/* Only update control register when needed! */ if (mcr_new != mcr_cur)
drivers/net/ethernet/mediatek/mtk_eth_soc.h +1 -0
@@ -369,6 +369,7 @@#define MAC_MCR_FORCE_MODE BIT(15)#define MAC_MCR_TX_EN BIT(14)#define MAC_MCR_RX_EN BIT(13) +#define MAC_MCR_RX_FIFO_CLR_DIS BIT(12)#define MAC_MCR_BACKOFF_EN BIT(9)#define MAC_MCR_BACKPR_EN BIT(8)#define MAC_MCR_FORCE_RX_FC BIT(5)
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +1 -0
@@ -1262,6 +1262,7 @@ static int stmmac_init_phy(struct net_device *dev)phylink_ethtool_get_wol (priv->phylink, &wol);device_set_wakeup_capable (priv->device, !!wol.supported); +device_set_wakeup_enable (priv->device, !!wol.wolopts); }return ret;
drivers/net/phy/microchip.c +32 -0
@@ -342,6 +342,37 @@ static int lan88xx_config_aneg(struct phy_device *phydev)return genphy_config_aneg (phydev); } +static void lan88xx_link_change_notify (struct phy_device *phydev) +{ +int temp; + +/* At forced 100 F/H mode, chip may fail to set mode correctly +* when cable is switched between long(~50+m) and short one. +* As workaround, set to 10 before setting to 100 +* at forced 100 F/H mode. +*/ +if (!phydev->autoneg && phydev->speed ==100 ) { +/* disable phy interrupt */ + temp =phy_read (phydev,LAN88XX_INT_MASK ); + temp &= ~LAN88XX_INT_MASK_MDINTPIN_EN_ ; +phy_write (phydev,LAN88XX_INT_MASK , temp); + + temp =phy_read (phydev,MII_BMCR ); + temp &= ~(BMCR_SPEED100 |BMCR_SPEED1000 ); +phy_write (phydev,MII_BMCR , temp);/* set to 10 first */ + temp |=BMCR_SPEED100 ; +phy_write (phydev,MII_BMCR , temp);/* set to 100 later */ + +/* clear pending interrupt generated while workaround */ + temp =phy_read (phydev,LAN88XX_INT_STS ); + +/* enable phy interrupt back */ + temp =phy_read (phydev,LAN88XX_INT_MASK ); + temp |=LAN88XX_INT_MASK_MDINTPIN_EN_ ; +phy_write (phydev,LAN88XX_INT_MASK , temp); + } +} +static struct phy_driver microchip_phy_driver[] = { { .phy_id =0x0007c130 ,
@@ -355,6 +386,7 @@ static struct phy_driver microchip_phy_driver[] = { .config_init = lan88xx_config_init, .config_aneg = lan88xx_config_aneg, + .link_change_notify = lan88xx_link_change_notify, .config_intr = lan88xx_phy_config_intr, .handle_interrupt = lan88xx_handle_interrupt,
drivers/net/phy/phy_device.c +1 -7
@@ -3052,8 +3052,6 @@ static int phy_probe(struct device *dev)if (phydrv->flags &PHY_IS_INTERNAL ) phydev->is_internal = true; -mutex_lock (&phydev->lock); -/* Deassert the reset signal */ phy_device_reset (phydev,0 );
@@ -3121,12 +3119,10 @@ static int phy_probe(struct device *dev) phydev->state =PHY_READY ; out: -/* Assert the reset signal */ +/* Re-assert the reset signal on error */ if (err)phy_device_reset (phydev,1 ); -mutex_unlock (&phydev->lock); -return err; }
@@ -3136,9 +3132,7 @@ static int phy_remove(struct device *dev)cancel_delayed_work_sync (&phydev->state_queue); -mutex_lock (&phydev->lock); phydev->state =PHY_DOWN ; -mutex_unlock (&phydev->lock);sfp_bus_del_upstream (phydev->sfp_bus); phydev->sfp_bus =NULL ;
drivers/net/phy/smsc.c +5 -15
@@ -57,8 +57,6 @@ static int smsc_phy_ack_interrupt(struct phy_device *phydev)static int smsc_phy_config_intr (struct phy_device *phydev) { -struct smsc_phy_priv *priv = phydev->priv; -u16 intmask =0 ;int rc;if (phydev->interrupts ==PHY_INTERRUPT_ENABLED ) {
@@ -66,12 +64,10 @@ static int smsc_phy_config_intr(struct phy_device *phydev)if (rc)return rc; - intmask =MII_LAN83C185_ISF_INT4 |MII_LAN83C185_ISF_INT6 ; -if (priv->energy_enable) - intmask |=MII_LAN83C185_ISF_INT7 ; - rc =phy_write (phydev,MII_LAN83C185_IM , intmask); + rc =phy_write (phydev,MII_LAN83C185_IM , +MII_LAN83C185_ISF_INT_PHYLIB_EVENTS ); }else { - rc =phy_write (phydev,MII_LAN83C185_IM , intmask); + rc =phy_write (phydev,MII_LAN83C185_IM ,0 );if (rc)return rc;
@@ -83,13 +79,7 @@ static int smsc_phy_config_intr(struct phy_device *phydev)static irqreturn_t smsc_phy_handle_interrupt (struct phy_device *phydev) { -int irq_status, irq_enabled; - - irq_enabled =phy_read (phydev,MII_LAN83C185_IM ); -if (irq_enabled <0 ) { -phy_error (phydev); -return IRQ_NONE ; - } +int irq_status; irq_status =phy_read (phydev,MII_LAN83C185_ISF );if (irq_status <0 ) {
@@ -97,7 +87,7 @@ static irqreturn_t smsc_phy_handle_interrupt(struct phy_device *phydev)return IRQ_NONE ; } -if (!(irq_status & irq_enabled)) +if (!(irq_status &MII_LAN83C185_ISF_INT_PHYLIB_EVENTS ))return IRQ_NONE ;phy_trigger_machine (phydev);
drivers/net/usb/lan78xx.c +1 -26
@@ -1950,33 +1950,8 @@ static void lan78xx_remove_mdio(struct lan78xx_net *dev)static void lan78xx_link_status_change (struct net_device *net) {struct phy_device *phydev = net->phydev; -int temp; - -/* At forced 100 F/H mode, chip may fail to set mode correctly -* when cable is switched between long(~50+m) and short one. -* As workaround, set to 10 before setting to 100 -* at forced 100 F/H mode. -*/ -if (!phydev->autoneg && (phydev->speed ==100 )) { -/* disable phy interrupt */ - temp =phy_read (phydev,LAN88XX_INT_MASK ); - temp &= ~LAN88XX_INT_MASK_MDINTPIN_EN_ ; -phy_write (phydev,LAN88XX_INT_MASK , temp); - temp =phy_read (phydev,MII_BMCR ); - temp &= ~(BMCR_SPEED100 |BMCR_SPEED1000 ); -phy_write (phydev,MII_BMCR , temp);/* set to 10 first */ - temp |=BMCR_SPEED100 ; -phy_write (phydev,MII_BMCR , temp);/* set to 100 later */ - -/* clear pending interrupt generated while workaround */ - temp =phy_read (phydev,LAN88XX_INT_STS ); - -/* enable phy interrupt back */ - temp =phy_read (phydev,LAN88XX_INT_MASK ); - temp |=LAN88XX_INT_MASK_MDINTPIN_EN_ ; -phy_write (phydev,LAN88XX_INT_MASK , temp); - } +phy_print_status (phydev); } static int irq_map(struct irq_domain *d, unsigned int irq,
drivers/nfc/fdp/i2c.c +4 -0
@@ -249,6 +249,9 @@ static void fdp_nci_i2c_read_device_properties(struct device *dev, len,sizeof (**fw_vsc_cfg), GFP_KERNEL); +if (!*fw_vsc_cfg) + goto alloc_err; + r =device_property_read_u8_array (dev,FDP_DP_FW_VSC_CFG_NAME , *fw_vsc_cfg, len);
@@ -262,6 +265,7 @@ static void fdp_nci_i2c_read_device_properties(struct device *dev, *fw_vsc_cfg =NULL ; } +alloc_err:dev_dbg (dev,"Clock type: %d, clock frequency: %d, VSC: %s" , *clock_type, *clock_freq, *fw_vsc_cfg !=NULL ?"yes" :"no" ); }
drivers/platform/x86/Kconfig +2 -1
@@ -943,7 +943,8 @@ config I2C_MULTI_INSTANTIATE config MLX_PLATFORM tristate "Mellanox Technologies platform support" - depends on I2C && REGMAP + depends on I2C + select REGMAP help This option enables system support for the Mellanox Technologies platform. The Mellanox systems provide data center networking
drivers/regulator/core.c +23 -4
@@ -1521,6 +1521,27 @@ static int set_machine_constraints(struct regulator_dev *rdev) } } +/* +* If there is no mechanism for controlling the regulator then +* flag it as always_on so we don't end up duplicating checks +* for this so much. Note that we could control the state of +* a supply to control the output on a regulator that has no +* direct control. +*/ +if (!rdev->ena_pin && !ops->enable) { +if (rdev->supply_name && !rdev->supply) +return -EPROBE_DEFER ; + +if (rdev->supply) + rdev->constraints->always_on = + rdev->supply->rdev->constraints->always_on; +else + rdev->constraints->always_on = true; + } + +if (rdev->desc->off_on_delay) + rdev->last_off =ktime_get_boottime (); +/* If the constraints say the regulator should be on at this point * and we have control then make sure it is enabled. */
@@ -1554,8 +1575,6 @@ static int set_machine_constraints(struct regulator_dev *rdev)if (rdev->constraints->always_on) rdev->use_count++; - }else if (rdev->desc->off_on_delay) { - rdev->last_off =ktime_get (); }print_constraints (rdev);
@@ -2610,7 +2629,7 @@ static int _regulator_do_enable(struct regulator_dev *rdev)* this regulator was disabled. */ ktime_t end =ktime_add_us (rdev->last_off, rdev->desc->off_on_delay); -s64 remaining =ktime_us_delta (end,ktime_get ()); +s64 remaining =ktime_us_delta (end,ktime_get_boottime ());if (remaining >0 )_regulator_enable_delay (remaining);
@@ -2849,7 +2868,7 @@ static int _regulator_do_disable(struct regulator_dev *rdev) }if (rdev->desc->off_on_delay) - rdev->last_off =ktime_get (); + rdev->last_off =ktime_get_boottime ();trace_regulator_disable_complete (rdev_get_name (rdev));
drivers/scsi/hosts.c +2 -0
@@ -180,6 +180,7 @@ void scsi_remove_host(struct Scsi_Host *shost)scsi_forget_host (shost);mutex_unlock (&shost->scan_mutex);scsi_proc_host_rm (shost); +scsi_proc_hostdir_rm (shost->hostt);spin_lock_irqsave (shost->host_lock, flags);if (scsi_host_set_state (shost,SHOST_DEL ))
@@ -321,6 +322,7 @@ static void scsi_host_dev_release(struct device *dev)struct Scsi_Host *shost =dev_to_shost (dev);struct device *parent = dev->parent; +/* In case scsi_remove_host() has not been called. */ scsi_proc_hostdir_rm (shost->hostt);/* Wait for functions invoked through call_rcu(&scmd->rcu, ...) */
drivers/scsi/megaraid/megaraid_sas.h +2 -0
@@ -1517,6 +1517,8 @@ struct megasas_ctrl_info {#define MEGASAS_MAX_LD_IDS (MEGASAS_MAX_LD_CHANNELS * \ MEGASAS_MAX_DEV_PER_CHANNEL) +#define MEGASAS_MAX_SUPPORTED_LD_IDS 240 +#define MEGASAS_MAX_SECTORS (2*1024)#define MEGASAS_MAX_SECTORS_IEEE (2*128)#define MEGASAS_DBG_LVL 1
drivers/scsi/megaraid/megaraid_sas_fp.c +1 -1
@@ -358,7 +358,7 @@ u8 MR_ValidateMapInfo(struct megasas_instance *instance, u64 map_id) ld =MR_TargetIdToLdGet (i, drv_map);/* For non existing VDs, iterate to next VD*/ -if (ld >= (MAX_LOGICAL_DRIVES_EXT -1 )) +if (ld >=MEGASAS_MAX_SUPPORTED_LD_IDS )continue ; raid =MR_LdRaidGet (ld, drv_map);
drivers/staging/rtl8723bs/core/rtw_ap.c +10 -10
@@ -891,7 +891,7 @@ int rtw_check_beacon_data(struct adapter *padapter, u8 *pbuf, int len) &ie_len, (pbss_network->ie_length - _BEACON_IE_OFFSET_) ); -if (p !=NULL ) { +if (p) {memcpy (supportRate, p +2 , ie_len); supportRateNum = ie_len; }
@@ -903,7 +903,7 @@ int rtw_check_beacon_data(struct adapter *padapter, u8 *pbuf, int len) &ie_len, pbss_network->ie_length - _BEACON_IE_OFFSET_ ); -if (p !=NULL ) { +if (p) {memcpy (supportRate + supportRateNum, p +2 , ie_len); supportRateNum += ie_len; }
@@ -991,7 +991,7 @@ int rtw_check_beacon_data(struct adapter *padapter, u8 *pbuf, int len)break ; } -if ((p ==NULL ) || (ie_len ==0 )) +if (!p || ie_len ==0 )break ; }
@@ -1021,7 +1021,7 @@ int rtw_check_beacon_data(struct adapter *padapter, u8 *pbuf, int len)break ; } -if ((p ==NULL ) || (ie_len ==0 )) +if (!p || ie_len ==0 )break ; } }
@@ -1145,7 +1145,7 @@ int rtw_check_beacon_data(struct adapter *padapter, u8 *pbuf, int len) psta =rtw_get_stainfo (&padapter->stapriv, pbss_network->mac_address);if (!psta) { psta =rtw_alloc_stainfo (&padapter->stapriv, pbss_network->mac_address); -if (psta ==NULL ) +if (!psta)return _FAIL; }
@@ -1275,7 +1275,7 @@ u8 rtw_ap_set_pairwise_key(struct adapter *padapter, struct sta_info *psta) } psetstakey_para =rtw_zmalloc (sizeof (struct set_stakey_parm )); -if (psetstakey_para ==NULL ) { +if (!psetstakey_para) {kfree (ph2c); res = _FAIL; goto exit;
@@ -1311,12 +1311,12 @@ static int rtw_ap_set_key(int res = _SUCCESS; pcmd =rtw_zmalloc (sizeof (struct cmd_obj )); -if (pcmd ==NULL ) { +if (!pcmd) { res = _FAIL; goto exit; } psetkeyparm =rtw_zmalloc (sizeof (struct setkey_parm )); -if (psetkeyparm ==NULL ) { +if (!psetkeyparm) {kfree (pcmd); res = _FAIL; goto exit;
@@ -1474,11 +1474,11 @@ static void update_bcn_wps_ie(struct adapter *padapter) &wps_ielen ); -if (pwps_ie ==NULL || wps_ielen ==0 ) +if (!pwps_ie || wps_ielen ==0 )return ; pwps_ie_src = pmlmepriv->wps_beacon_ie; -if (pwps_ie_src ==NULL ) +if (!pwps_ie_src)return ; wps_offset = (uint)(pwps_ie - ie);
drivers/staging/rtl8723bs/core/rtw_cmd.c +48 -48
363 lines not on this page · raw message
drivers/staging/rtl8723bs/core/rtw_ioctl_set.c +2 -2
@@ -370,7 +370,7 @@ u8 rtw_set_802_11_bssid_list_scan(struct adapter *padapter, struct ndis_802_11_sstruct mlme_priv *pmlmepriv = &padapter->mlmepriv;u8 res = true; -if (padapter ==NULL ) { +if (!padapter) { res = false; goto exit; }
@@ -481,7 +481,7 @@ u16 rtw_get_cur_max_rate(struct adapter *adapter)return 0 ; psta =rtw_get_stainfo (&adapter->stapriv,get_bssid (pmlmepriv)); -if (psta ==NULL ) +if (!psta)return 0 ; short_GI =query_ra_short_GI (psta);
drivers/staging/rtl8723bs/core/rtw_mlme.c +3 -3
@@ -439,7 +439,7 @@ struct wlan_network *rtw_get_oldest_wlan_network(struct __queue *scanned_queue) pwlan = list_entry(plist, struct wlan_network, list);if (!pwlan->fixed) { -if (oldest ==NULL ||time_after (oldest->last_scanned, pwlan->last_scanned)) +if (!oldest ||time_after (oldest->last_scanned, pwlan->last_scanned)) oldest = pwlan; } }
@@ -542,7 +542,7 @@ void rtw_update_scanned_network(struct adapter *adapter, struct wlan_bssid_ex *t/* TODO: don't select network in the same ess as oldest if it's new enough*/ } -if (oldest ==NULL ||time_after (oldest->last_scanned, pnetwork->last_scanned)) +if (!oldest ||time_after (oldest->last_scanned, pnetwork->last_scanned)) oldest = pnetwork; }
@@ -1816,7 +1816,7 @@ static int rtw_check_join_candidate(struct mlme_priv *mlme goto exit; } -if (*candidate ==NULL || (*candidate)->network.rssi < competitor->network.rssi) { +if (!*candidate || (*candidate)->network.rssi < competitor->network.rssi) { *candidate = competitor; updated = true; }
drivers/staging/rtl8723bs/core/rtw_mlme_ext.c +28 -28
215 lines not on this page · raw message
drivers/staging/rtl8723bs/core/rtw_security.c +3 -3
@@ -51,7 +51,7 @@ void rtw_wep_encrypt(struct adapter *padapter, u8 *pxmitframe)struct xmit_priv *pxmitpriv = &padapter->xmitpriv;struct arc4_ctx *ctx = &psecuritypriv->xmit_arc4_ctx; -if (((struct xmit_frame *)pxmitframe)->buf_addr ==NULL ) +if (!((struct xmit_frame *)pxmitframe)->buf_addr)return ; hw_hdr_offset =TXDESC_OFFSET ;
@@ -476,7 +476,7 @@ u32 rtw_tkip_encrypt(struct adapter *padapter, u8 *pxmitframe)struct arc4_ctx *ctx = &psecuritypriv->xmit_arc4_ctx;u32 res = _SUCCESS; -if (((struct xmit_frame *)pxmitframe)->buf_addr ==NULL ) +if (!((struct xmit_frame *)pxmitframe)->buf_addr)return _FAIL; hw_hdr_offset =TXDESC_OFFSET ;
@@ -1043,7 +1043,7 @@ u32 rtw_aes_encrypt(struct adapter *padapter, u8 *pxmitframe)u32 res = _SUCCESS; -if (((struct xmit_frame *)pxmitframe)->buf_addr ==NULL ) +if (!((struct xmit_frame *)pxmitframe)->buf_addr)return _FAIL; hw_hdr_offset =TXDESC_OFFSET ;
drivers/staging/rtl8723bs/include/rtw_security.h +4 -4
@@ -107,13 +107,13 @@ struct security_priv {u32 dot118021XGrpPrivacy;/* This specify the privacy algthm. used for Grp key */ u32 dot118021XGrpKeyid;/* key id used for Grp Key (tx key index) */ -union Keytype dot118021XGrpKey[BIP_MAX_KEYID ];/* 802.1x Group Key, for inx0 and inx1 */ -union Keytype dot118021XGrptxmickey[BIP_MAX_KEYID ]; -union Keytype dot118021XGrprxmickey[BIP_MAX_KEYID ]; +union Keytype dot118021XGrpKey[BIP_MAX_KEYID +1 ];/* 802.1x Group Key, for inx0 and inx1 */ +union Keytype dot118021XGrptxmickey[BIP_MAX_KEYID +1 ]; +union Keytype dot118021XGrprxmickey[BIP_MAX_KEYID +1 ];union pn48 dot11Grptxpn;/* PN48 used for Grp Key xmit. */ union pn48 dot11Grprxpn;/* PN48 used for Grp Key recv. */ u32 dot11wBIPKeyid;/* key id used for BIP Key (tx key index) */ -union Keytype dot11wBIPKey[6 ];/* BIP Key, for index4 and index5 */ +union Keytype dot11wBIPKey[BIP_MAX_KEYID +1 ];/* BIP Key, for index4 and index5 */ union pn48 dot11wBIPtxpn;/* PN48 used for Grp Key xmit. */ union pn48 dot11wBIPrxpn;/* PN48 used for Grp Key recv. */
drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c +116 -239
403 lines not on this page · raw message
drivers/staging/rtl8723bs/os_dep/ioctl_linux.c +26 -25
51 lines not on this page · raw message
drivers/staging/rtl8723bs/os_dep/os_intfs.c +2 -2
Lines of this file are not shown. View the raw message.
fs/attr.c +67 -5
72 lines not on this page · raw message
fs/ext4/mballoc.c +119 -86
205 lines not on this page · raw message
fs/inode.c +54 -36
90 lines not on this page · raw message
fs/namei.c +69 -13
82 lines not on this page · raw message
fs/xfs/xfs_iops.c +3 -53
56 lines not on this page · raw message
kernel/irq/irqdomain.c +94 -58
152 lines not on this page · raw message
scripts/clang-tools/run-clang-tools.py +14 -7
Lines of this file are not shown. View the raw message.
tools/bpf/bpftool/jit_disasm.c +34 -8
42 lines not on this page · raw message
tools/build/feature/test-disassembler-init-styled.c new file +13 -0
Lines of this file are not shown. View the raw message.
tools/include/tools/dis-asm-compat.h new file +55 -0
55 lines not on this page · raw message
tools/testing/selftests/netfilter/nft_nat.sh +2 -0
Lines of this file are not shown. View the raw message.
virt/kvm/kvm_main.c +96 -49
145 lines not on this page · 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.
Quoted 10 lines · Greg Kroah-Hartman
I'm announcing the release of the 5.15.103 kernel.
[...]
Vitaly Kuznetsov (4):
KVM: Optimizekvm_make_vcpus_request_mask()a bit
KVM: Pre-allocate cpumasks forkvm_make_all_cpus_request_except()
KVM: nVMX: Don't use Enlightened MSR Bitmap for L3
KVM: VMX: Introducevmx_msr_bitmap_l01_changed()helper
That list is missing commit 6470accc7ba9 ("KVM: x86: hyper-v: Avoid calling kvm_make_vcpus_request_mask() with vcpu_mask==NULL") to fulfill the prerequisite of "KVM: Optimize kvm_make_vcpus_request_mask() a bit".
Right now the kvm selftests trigger a kernel NULL deref for the hyperv test, making the system hang.
Please consider applying commit 6470accc7ba9 for the next v5.15.x release.
Thanks,
Mathias
Greg Kroah-Hartman
maintainerQuoted 12 lines · Mathias Krause
Quoted 10 lines · Greg Kroah-Hartman
I'm announcing the release of the 5.15.103 kernel.
[...]
Vitaly Kuznetsov (4):
KVM: Optimizekvm_make_vcpus_request_mask()a bit
KVM: Pre-allocate cpumasks forkvm_make_all_cpus_request_except()
KVM: nVMX: Don't use Enlightened MSR Bitmap for L3
KVM: VMX: Introducevmx_msr_bitmap_l01_changed()helper
Quoted 8 lines
That list is missing commit
6470accc7ba9("KVM: x86: hyper-v: Avoid callingkvm_make_vcpus_request_mask()with vcpu_mask==NULL") to fulfill the prerequisite of "KVM: Optimizekvm_make_vcpus_request_mask()a bit".Right now the kvm selftests trigger a kernel NULL deref for the hyperv test, making the system hang.
Please consider applying commit
6470accc7ba9for the next v5.15.x release.
It wasn't tagged for the stable kernels, so we didn't pick it up :(
Have now done so, thanks.
greg k-h
Quoted 17 lines · Greg Kroah-Hartman
Quoted 16 lines · Mathias Krause
Quoted 10 lines · Greg Kroah-Hartman
I'm announcing the release of the 5.15.103 kernel.
[...]
Vitaly Kuznetsov (4):
KVM: Optimizekvm_make_vcpus_request_mask()a bit
KVM: Pre-allocate cpumasks forkvm_make_all_cpus_request_except()
KVM: nVMX: Don't use Enlightened MSR Bitmap for L3
KVM: VMX: Introducevmx_msr_bitmap_l01_changed()helperThat list is missing commit
6470accc7ba9("KVM: x86: hyper-v: Avoid callingkvm_make_vcpus_request_mask()with vcpu_mask==NULL") to fulfill the prerequisite of "KVM: Optimizekvm_make_vcpus_request_mask()a bit".
Quoted 6 lines
Quoted 4 lines
Right now the kvm selftests trigger a kernel NULL deref for the hyperv test, making the system hang.
Please consider applying commit
6470accc7ba9for the next v5.15.x release.It wasn't tagged for the stable kernels, so we didn't pick it up :(
Neither were any of the above commits. o.O
Commit 3e48a6349d29 ("KVM: Optimize kvm_make_vcpus_request_mask() a bit") has this tag, though:
Stable-dep-of: 2b0128127373 ("KVM: Register /dev/kvm as the _very_ last thing during initialization")
I don't know why, though. These two commits have little in common. Maybe Sasha knows why?
Quoted 2 lines
Have now done so, thanks.
Thanks!
Mathias
Sasha Levin
maintainerQuoted 27 lines · Mathias Krause
Quoted 17 lines · Greg Kroah-Hartman
Quoted 16 lines · Mathias Krause
Quoted 10 lines · Greg Kroah-Hartman
I'm announcing the release of the 5.15.103 kernel.
[...]
Vitaly Kuznetsov (4):
KVM: Optimizekvm_make_vcpus_request_mask()a bit
KVM: Pre-allocate cpumasks forkvm_make_all_cpus_request_except()
KVM: nVMX: Don't use Enlightened MSR Bitmap for L3
KVM: VMX: Introducevmx_msr_bitmap_l01_changed()helperThat list is missing commit
6470accc7ba9("KVM: x86: hyper-v: Avoid callingkvm_make_vcpus_request_mask()with vcpu_mask==NULL") to fulfill the prerequisite of "KVM: Optimizekvm_make_vcpus_request_mask()a bit".Quoted 6 lines
Quoted 4 lines
Right now the kvm selftests trigger a kernel NULL deref for the hyperv test, making the system hang.
Please consider applying commit
6470accc7ba9for the next v5.15.x release.It wasn't tagged for the stable kernels, so we didn't pick it up :(
Neither were any of the above commits. o.O
Quoted 8 lines
Commit
3e48a6349d29("KVM: Optimizekvm_make_vcpus_request_mask()a bit") has this tag, though:Stable-dep-of:
2b0128127373("KVM: Register/dev/kvmas the _very_ last thing during initialization")I don't know why, though. These two commits have little in common. Maybe Sasha knows why?
Because you've skipped the commit in the middle of the two you've pointed out :)
3e48a6349d29 is needed by 0a0ecaf0988b ("KVM: Pre-allocate cpumasks for kvm_make_all_cpus_request_except()"), which in turn is needed by 2b0128127373.
Signature · 2 lines
Thanks, Sasha
Quoted 40 lines · Sasha Levin
Quoted 30 lines · Mathias Krause
Quoted 19 lines · Greg Kroah-Hartman
Quoted 18 lines · Mathias Krause
Quoted 11 lines · Greg Kroah-Hartman
I'm announcing the release of the 5.15.103 kernel.
[...]
Vitaly Kuznetsov (4):
KVM: Optimizekvm_make_vcpus_request_mask()a bit
KVM: Pre-allocate cpumasks forkvm_make_all_cpus_request_except()
KVM: nVMX: Don't use Enlightened MSR Bitmap for L3
KVM: VMX: Introducevmx_msr_bitmap_l01_changed()helperThat list is missing commit
6470accc7ba9("KVM: x86: hyper-v: Avoid callingkvm_make_vcpus_request_mask()with vcpu_mask==NULL") to fulfill the prerequisite of "KVM: Optimizekvm_make_vcpus_request_mask()a bit".Quoted 7 lines
Quoted 5 lines
Right now the kvm selftests trigger a kernel NULL deref for the hyperv test, making the system hang.
Please consider applying commit
6470accc7ba9for the next v5.15.x release.It wasn't tagged for the stable kernels, so we didn't pick it up :(
Neither were any of the above commits. o.O
Quoted 8 lines
Commit
3e48a6349d29("KVM: Optimizekvm_make_vcpus_request_mask()a bit") has this tag, though:Stable-dep-of:
2b0128127373("KVM: Register/dev/kvmas the _very_ last thing during initialization")I don't know why, though. These two commits have little in common. Maybe Sasha knows why?
Quoted 6 lines
Because you've skipped the commit in the middle of the two you've pointed out :)
3e48a6349d29is needed by0a0ecaf0988b("KVM: Pre-allocate cpumasks forkvm_make_all_cpus_request_except()"), which in turn is needed by2b0128127373.
I see, 0a0ecaf0988b is "needed" by 2b0128127373 to make it apply clean. However, there is no functional dependency for 2b0128127373, as it simply moves device registration around. By picking all the "required" commits to make it apply clean, still functional required commits were missed. :(
A simple backport would probably had been the better solution to the failed cherry-pick, but I see the original author didn't provide one, so some kind off fall-back process kicked in to pick up dependent commits. If these would have been announced more visible than by simply adding them to the queue, it might had been noticed earlier that a commit is missing still.
This is probably just another example of maintainer's time being such a scarce resource problem, but the fallback process isn't working flawless either :/
Thanks,
Mathias