Skip to contentSkip to conversation

Linux 6.2.7

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Mar 17, 2023 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 6.2.7 kernel.

All users of the 6.2 kernel series must upgrade.

The updated 6.2.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.2.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

------------

 Makefile                                                             |    2 
 arch/alpha/kernel/module.c                                           |    4 
 arch/m68k/kernel/setup_mm.c                                          |   10 
 arch/mips/include/asm/mach-rc32434/pci.h                             |    2 
 arch/powerpc/boot/dts/fsl/t1040rdb-rev-a.dts                         |    1 
 arch/powerpc/include/asm/hw_irq.h                                    |    6 
 arch/powerpc/include/asm/paca.h                                      |    1 
 arch/powerpc/include/asm/smp.h                                       |    1 
 arch/powerpc/kernel/iommu.c                                          |    4 
 arch/powerpc/kernel/irq_64.c                                         |  101 +++++---
 arch/powerpc/kernel/process.c                                        |    3 
 arch/powerpc/kernel/prom.c                                           |   12 
 arch/powerpc/kernel/setup-common.c                                   |    4 
 arch/powerpc/kernel/setup_64.c                                       |   16 -
 arch/powerpc/kernel/time.c                                           |    4 
 arch/powerpc/net/bpf_jit_comp32.c                                    |   20 +
 arch/riscv/Makefile                                                  |    7 
 arch/riscv/errata/sifive/errata.c                                    |    3 
 arch/riscv/errata/thead/errata.c                                     |    8 
 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/compat_vdso/Makefile                               |    4 
 arch/riscv/kernel/cpufeature.c                                       |    6 
 arch/riscv/kernel/ftrace.c                                           |   13 -
 arch/riscv/kernel/patch.c                                            |   28 +-
 arch/riscv/kernel/stacktrace.c                                       |    2 
 arch/um/kernel/vmlinux.lds.S                                         |    2 
 arch/x86/include/asm/kvm_host.h                                      |    3 
 arch/x86/kernel/cpu/amd.c                                            |    9 
 arch/x86/kvm/svm/svm.c                                               |   23 +
 arch/x86/kvm/vmx/vmx.c                                               |   91 ++++---
 arch/x86/kvm/x86.c                                                   |   15 +
 block/blk.h                                                          |    2 
 block/genhd.c                                                        |   37 ++
 block/ioctl.c                                                        |   13 -
 drivers/bus/mhi/ep/main.c                                            |   41 ---
 drivers/bus/mhi/ep/sm.c                                              |   42 +--
 drivers/char/tpm/eventlog/acpi.c                                     |    6 
 drivers/clk/renesas/Kconfig                                          |    2 
 drivers/clk/renesas/r8a7795-cpg-mssr.c                               |  126 ----------
 drivers/clk/renesas/rcar-gen3-cpg.c                                  |   17 -
 drivers/clk/renesas/renesas-cpg-mssr.c                               |   27 --
 drivers/clk/renesas/renesas-cpg-mssr.h                               |   14 -
 drivers/gpu/drm/amd/amdgpu/nv.c                                      |    7 
 drivers/gpu/drm/amd/amdgpu/soc15.c                                   |    5 
 drivers/gpu/drm/amd/amdgpu/soc21.c                                   |   69 ++++-
 drivers/gpu/drm/amd/amdkfd/kfd_doorbell.c                            |    2 
 drivers/gpu/drm/amd/display/dc/dcn32/dcn32_resource.c                |   62 ++++
 drivers/gpu/drm/amd/display/dc/dcn32/dcn32_resource.h                |    4 
 drivers/gpu/drm/amd/display/dc/dcn321/dcn321_resource.c              |    9 
 drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c                 |   36 ++
 drivers/gpu/drm/amd/display/dc/dml/dcn321/dcn321_fpu.c               |    5 
 drivers/gpu/drm/display/drm_hdmi_helper.c                            |    6 
 drivers/gpu/drm/drm_atomic.c                                         |    1 
 drivers/gpu/drm/i915/display/icl_dsi.c                               |    3 
 drivers/gpu/drm/i915/display/intel_bios.c                            |   71 ++++-
 drivers/gpu/drm/i915/display/intel_bios.h                            |   11 
 drivers/gpu/drm/i915/display/intel_connector.c                       |    2 
 drivers/gpu/drm/i915/display/intel_display_types.h                   |    2 
 drivers/gpu/drm/i915/display/intel_dp.c                              |    7 
 drivers/gpu/drm/i915/display/intel_lvds.c                            |    4 
 drivers/gpu/drm/i915/display/intel_panel.c                           |    8 
 drivers/gpu/drm/i915/display/intel_panel.h                           |    1 
 drivers/gpu/drm/i915/display/intel_sdvo.c                            |    2 
 drivers/gpu/drm/i915/display/vlv_dsi.c                               |    2 
 drivers/gpu/drm/msm/adreno/a5xx_gpu.c                                |    6 
 drivers/gpu/drm/msm/adreno/a5xx_preempt.c                            |    4 
 drivers/gpu/drm/msm/adreno/adreno_device.c                           |    3 
 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c                       |   60 ++--
 drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c                               |    2 
 drivers/gpu/drm/msm/msm_gem_submit.c                                 |    5 
 drivers/gpu/drm/nouveau/dispnv50/wndw.h                              |    5 
 drivers/gpu/drm/nouveau/include/nvkm/subdev/fb.h                     |    3 
 drivers/gpu/drm/nouveau/nvkm/subdev/fb/base.c                        |    8 
 drivers/gpu/drm/nouveau/nvkm/subdev/fb/ga100.c                       |    2 
 drivers/gpu/drm/nouveau/nvkm/subdev/fb/ga102.c                       |   21 -
 drivers/gpu/drm/nouveau/nvkm/subdev/fb/gp102.c                       |   41 +--
 drivers/gpu/drm/nouveau/nvkm/subdev/fb/gv100.c                       |    4 
 drivers/gpu/drm/nouveau/nvkm/subdev/fb/priv.h                        |    3 
 drivers/gpu/drm/nouveau/nvkm/subdev/fb/tu102.c                       |    4 
 drivers/hid/hid-core.c                                               |   32 +-
 drivers/hid/uhid.c                                                   |    1 
 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_dcb.c                             |    2 
 drivers/net/ethernet/intel/ice/ice_ethtool.c                         |    6 
 drivers/net/ethernet/intel/ice/ice_tc_lib.c                          |    8 
 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/microchip/lan966x/lan966x_police.c              |    2 
 drivers/net/ethernet/netronome/nfp/nfd3/dp.c                         |    7 
 drivers/net/ethernet/netronome/nfp/nfd3/ipsec.c                      |   25 +
 drivers/net/ethernet/netronome/nfp/nfp_net_common.c                  |    4 
 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                                               |   14 -
 drivers/net/usb/lan78xx.c                                            |   27 --
 drivers/nfc/fdp/i2c.c                                                |    4 
 drivers/platform/mellanox/Kconfig                                    |    9 
 drivers/platform/x86/Kconfig                                         |    3 
 drivers/platform/x86/dell/dell-wmi-ddv.c                             |   21 +
 drivers/scsi/hosts.c                                                 |    2 
 drivers/scsi/megaraid/megaraid_sas.h                                 |    2 
 drivers/scsi/megaraid/megaraid_sas_fp.c                              |    2 
 drivers/scsi/sd.c                                                    |    7 
 drivers/scsi/sd_zbc.c                                                |    8 
 drivers/staging/rtl8723bs/include/rtw_security.h                     |    8 
 drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c                    |   32 +-
 drivers/staging/rtl8723bs/os_dep/ioctl_linux.c                       |   33 +-
 drivers/thermal/intel/int340x_thermal/processor_thermal_device_pci.c |    5 
 fs/btrfs/bio.c                                                       |    2 
 fs/btrfs/block-group.c                                               |   16 +
 fs/btrfs/extent_map.c                                                |    7 
 fs/erofs/decompressor_lzma.c                                         |    2 
 fs/erofs/zdata.c                                                     |   12 
 fs/ext4/fsmap.c                                                      |    2 
 fs/ext4/inline.c                                                     |    1 
 fs/ext4/inode.c                                                      |    7 
 fs/ext4/ioctl.c                                                      |    1 
 fs/ext4/namei.c                                                      |   36 ++
 fs/ext4/page-io.c                                                    |   11 
 fs/ext4/xattr.c                                                      |    3 
 fs/file.c                                                            |    1 
 fs/locks.c                                                           |    3 
 fs/nfsd/vfs.c                                                        |    2 
 fs/udf/inode.c                                                       |    2 
 include/linux/hid.h                                                  |    3 
 include/linux/mhi_ep.h                                               |    4 
 include/linux/pci_ids.h                                              |    2 
 include/net/netfilter/nf_tproxy.h                                    |    7 
 io_uring/uring_cmd.c                                                 |    4 
 kernel/bpf/btf.c                                                     |    1 
 kernel/fork.c                                                        |    2 
 kernel/watch_queue.c                                                 |    1 
 net/caif/caif_usb.c                                                  |    3 
 net/core/sock.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/netfilter/nft_last.c                                             |    4 
 net/netfilter/nft_quota.c                                            |    6 
 net/nfc/netlink.c                                                    |    2 
 net/smc/af_smc.c                                                     |   13 -
 net/sunrpc/svc.c                                                     |    6 
 net/tls/tls_device.c                                                 |    2 
 net/tls/tls_main.c                                                   |   23 -
 net/tls/tls_sw.c                                                     |    2 
 net/unix/af_unix.c                                                   |   10 
 net/unix/unix_bpf.c                                                  |    3 
 scripts/checkkconfigsymbols.py                                       |   13 -
 scripts/clang-tools/run-clang-tools.py                               |   21 +
 scripts/diffconfig                                                   |   16 +
 tools/perf/builtin-inject.c                                          |    1 
 tools/perf/builtin-stat.c                                            |   15 -
 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 
 175 files changed, 1275 insertions(+), 778 deletions(-)

Alex Deucher (4):
drm/amdgpu: fix error checking in amdgpu_read_mm_registers for soc15 drm/amdgpu: fix error checking in amdgpu_read_mm_registers for soc21 drm/amdgpu: fix error checking in amdgpu_read_mm_registers for nv drm/amdgpu/soc21: don't expose AV1 if VCN0 is harvested

Alexander Lobakin (1):
bpf, test_run: fix &xdp_frame misplacement for LIVE_FRAMES

Alexandre Ghiti (1):
riscv: Use READ_ONCE_NOCHECK in imprecise unwinding stack mode

Alvaro Karsz (1):
PCI: Add SolidRun vendor ID

Alvin Lee (1):

      drm/amd/display: Allow subvp on vactive pipes that are 2560x1440@60

Andrew Cooper (1):

      x86/CPU/AMD: Disable XSAVES on AMD family 0x17

Armin Wolf (2):
platform/x86: dell-ddv: Return error if buffer is empty platform/x86: dell-ddv: Fix temperature scaling

Arnd Bergmann (1):
ethernet: ice: avoid gcc-9 integer overflow warning

Bart Van Assche (1):

      scsi: core: Remove the /proc/scsi/${proc_name} directory earlier

Ben Skeggs (1):
drm/nouveau/fb/gp102-: cache scrubber binary on first load

Benjamin Coddington (1):
SUNRPC: Fix a server shutdown leak

Brian Vazquez (1):
net: use indirect calls helpers for sk_exit_memory_pressure()

Chandrakanth Patil (1):
scsi: megaraid_sas: Update max supported LD IDs to 240

Changbin Du (1):
perf stat: Fix counting when initial delay configured

Christophe Leroy (2):
powerpc: Remove __kernel_text_address() in show_instructions() powerpc/bpf/32: Only set a stack frame when necessary

Chuck Lever (1):
NFSD: Protect against filesystem freezing

Conor Dooley (3):
RISC-V: Don't check text_mutex during stop_machine
RISC-V: take text_mutex during alternative patching
RISC-V: fix taking the text_mutex twice during sifive errata patching

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 (1):
ext4: fix another off-by-one fsmap error on 1k block filesystems

Dave Ertman (1):
ice: Fix DSCP PFC TLV creation

David Disseldorp (1):
watch_queue: fix IOC_WATCH_QUEUE_SET_SIZE alloc error paths

Dmitry Baryshkov (11):
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: disable features unsupported by QCM2290 drm/msm/dpu: fix len of sc7180 ctl blocks
drm/msm/dpu: fix sm6115 and qcm2290 mixer width limits drm/msm/dpu: correct sm8250 and sm8350 scaler drm/msm/dpu: correct sm6115 scaler
drm/msm/dpu: drop DPU_DIM_LAYER from MIXER_MSM8998_MASK drm/msm/dpu: fix clocks settings for msm8998 SSPP 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

Filipe Manana (2):
btrfs: fix block group item corruption after inserting new block group
btrfs: fix extent map logging bit not cleared for split maps after dropping range

Florian Westphal (1):
netfilter: tproxy: fix deadlock due to missing BH disable

Gao Xiang (2):
erofs: fix wrong kunmap when using LZMA on HIGHMEM platforms
erofs: Revert "erofs: fix kvcalloc() misuse with __GFP_NOFAIL"

Geert Uytterhoeven (1):
m68k: mm: Move initrd phys_to_virt handling after paging_init()

Greg Kroah-Hartman (2):
powerpc/iommu: fix memory leak with using debugfs_lookup() Linux 6.2.7

Hangbin Liu (1):
selftests: nft_nat: ensuring the listening side is up before starting the client

Hangyu Hua (1):
net: tls: fix possible race condition between do_tls_getsockopt_conf() and do_tls_setsockopt_conf()

Hans de Goede (2):
staging: rtl8723bs: Fix key-store index handling
staging: rtl8723bs: Pass correct parameters to cfg80211_get_bss()

Harry Wentland (2):
drm/display: Don't block HDR_OUTPUT_METADATA on unknown EOTF drm/connector: print max_requested_bpc in state debugfs

Heiner Kallweit (1):
net: phy: smsc: fix link up detection in forced irq mode

Horatiu Vultur (1):
net: lan966x: Fix port police support using tc-matchall

Huanhuan Wang (2):
nfp: fix incorrectly set csum flag for nfd3 path
nfp: fix esp-tx-csum-offload doesn't take effect

Ivan Delalande (1):
netfilter: ctnetlink: revert to dumping mark regardless of event type

Jakub Kicinski (2):
tls: rx: fix return value for async crypto
net: tls: fix device-offloaded sendpage straddling records

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):
io_uring/uring_cmd: ensure that device supports IOPOLL

Jiri Slaby (SUSE) (1):
drm/nouveau/kms/nv50: fix nv50_wndw_new_ prototype

Johan Hovold (1):
drm/msm/adreno: fix runtime PM imbalance at unbind

Johannes Thumshirn (1):
btrfs: fix percent calculation for bg reclaim message

Kalyan Thota (1):
drm/msm/dpu: clear DSPP reservations in rm release

Kang Chen (1):
nfc: fdp: add null check of devm_kmalloc_array in fdp_nci_i2c_read_device_properties

Kuogee Hsieh (1):
drm/msm/disp/dpu: fix sc7280_pp base offset

Lee Jones (2):
HID: core: Provide new max_buffer_size attribute to over-ride the default
HID: uhid: Over-ride the default maximum data buffer value with our own

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

Manivannan Sadhasivam (2):
bus: mhi: ep: Power up/down MHI stack during MHI RESET
bus: mhi: ep: Change state_lock to mutex

Martin KaFai Lau (1):
Revert "bpf, test_run: fix &xdp_frame misplacement for LIVE_FRAMES"

Masahiro Yamada (2):
scripts: handle BrokenPipeError for python scripts
UML: define RUNTIME_DISCARD_EXIT

Michael Chan (1):
bnxt_en: Avoid order-5 memory allocation for TPA data

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

Naohiro Aota (1):
btrfs: fix unnecessary increment of read error stat on write error

Nathan Chancellor (1):
macintosh: windfarm: Use unsigned type for 1-bit bitfields

Nicholas Piggin (3):
powerpc/64: Don't recurse irq replay
powerpc/64: Fix task_cpu in early boot when booting non-zero cpuid powerpc/64: Move paca allocation to early_setup()

Pablo Neira Ayuso (2):
netfilter: nft_last: copy content when cloning expression
netfilter: nft_quota: copy content when cloning expression

Palmer Dabbelt (1):
RISC-V: Stop emitting attributes

Paul Elder (1):
media: ov5640: Fix analogue gain control

Petr Oros (1):
ice: copy last block omitted in ice_get_module_eeprom()

Rafał Miłecki (1):
bgmac: fix *initial* chip reset to support BCM5358

Randy Dunlap (2):
platform: mellanox: select REGMAP instead of depending on it
platform: x86: MLX_PLATFORM: select REGMAP instead of depending on it

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

Samson Tam (1):
drm/amd/display: adjust MALL size available for DCN32 and DCN321

Sean Christopherson (4):
KVM: VMX: Reset eVMCS controls in VP assist page during hardware disabling
KVM: VMX: Don't bother disabling eVMCS static key on module exit
KVM: x86: Move guts of kvm_arch_init() to standalone helper
KVM: VMX: Do _all_ initialization before exposing /dev/kvm to userspace

Seth Forshee (1):
filelocks: use mount idmapping for setlease permission check

Shashank Sharma (1):
drm/amdgpu: fix return value check in kfd

Shigeru Yoshida (1):
net: caif: Fix use-after-free in cfusbl_device_notify()

Shin'ichiro Kawasaki (1):
scsi: sd: Fix wrong zone_write_granularity value during revalidate

Srinivas Pandruvada (1):

      thermal: intel: int340x: processor_thermal: Fix deadlock

Suman Ghosh (1):
octeontx2-af: Unlock contexts in the queue context cache in case of fault detection

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

Veerabadhran Gopalakrishnan (1):
drm/amdgpu/soc21: Add video cap query support for VCN_4_0_4

Ville Syrjälä (3):
drm/i915: Introduce intel_panel_init_alloc()
drm/i915: Do panel VBT init early if the VBT declares an explicit panel type drm/i915: Populate encoder->devdata for DSI on icl+

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

Wolfram Sang (1):
clk: renesas: rcar-gen3: Disable R-Car H3 ES1.*

Ye Bin (2):
ext4: move where set the MAY_INLINE_DATA flag is set
ext4: fix WARNING in ext4_update_inline_data

Yu Kuai (3):
block: Revert "block: Do not reread partition table on exclusively open device"
block: fix scan partition for exclusively open device again
block: fix wrong mode for blkdev_put() from disk_scan_partitions()

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

author maintainer
#1 lore raw
Makefile +1 -1
index 70e66e771608..43cf2c785cb1 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 6
 PATCHLEVEL = 2
-SUBLEVEL = 6
+SUBLEVEL = 7
 EXTRAVERSION =
 NAME = Hurr durr I'ma ninja sloth
 
arch/alpha/kernel/module.c +1 -3
index 5b60c248de9e..cbefa5a77384 100644
@@ -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/m68k/kernel/setup_mm.c +5 -5
index 3a2bb2e8fdad..fbff1cea62ca 100644
@@ -326,16 +326,16 @@ void __init setup_arch(char **cmdline_p)
 		panic("No configuration setup");
 	}
 
-#ifdef CONFIG_BLK_DEV_INITRD
-	if (m68k_ramdisk.size) {
+	if (IS_ENABLED(CONFIG_BLK_DEV_INITRD) && m68k_ramdisk.size)
 		memblock_reserve(m68k_ramdisk.addr, m68k_ramdisk.size);
+
+	paging_init();
+
+	if (IS_ENABLED(CONFIG_BLK_DEV_INITRD) && m68k_ramdisk.size) {
 		initrd_start = (unsigned long)phys_to_virt(m68k_ramdisk.addr);
 		initrd_end = initrd_start + m68k_ramdisk.size;
 		pr_info("initrd: %08lx - %08lx\n", initrd_start, initrd_end);
 	}
-#endif
-
-	paging_init();
 
 #ifdef CONFIG_NATFEAT
 	nf_init();
arch/mips/include/asm/mach-rc32434/pci.h +1 -1
index 9a6eefd12757..3eb767c8a4ee 100644
@@ -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
index 73f8c998c64d..d4f5f159d6f2 100644
@@ -10,7 +10,6 @@
 
 / {
 	model = "fsl,T1040RDB-REV-A";
-	compatible = "fsl,T1040RDB-REV-A";
 };
 
 &seville_port0 {
arch/powerpc/include/asm/hw_irq.h +4 -2
index eb6d094083fd..317659fdeacf 100644
@@ -36,15 +36,17 @@
 #define PACA_IRQ_DEC		0x08 /* Or FIT */
 #define PACA_IRQ_HMI		0x10
 #define PACA_IRQ_PMI		0x20
+#define PACA_IRQ_REPLAYING	0x40
 
 /*
  * Some soft-masked interrupts must be hard masked until they are replayed
  * (e.g., because the soft-masked handler does not clear the exception).
+ * Interrupt replay itself must remain hard masked too.
  */
 #ifdef CONFIG_PPC_BOOK3S
-#define PACA_IRQ_MUST_HARD_MASK	(PACA_IRQ_EE|PACA_IRQ_PMI)
+#define PACA_IRQ_MUST_HARD_MASK	(PACA_IRQ_EE|PACA_IRQ_PMI|PACA_IRQ_REPLAYING)
 #else
-#define PACA_IRQ_MUST_HARD_MASK	(PACA_IRQ_EE)
+#define PACA_IRQ_MUST_HARD_MASK	(PACA_IRQ_EE|PACA_IRQ_REPLAYING)
 #endif
 
 #endif /* CONFIG_PPC64 */
arch/powerpc/include/asm/paca.h +0 -1
index 09f1790d0ae1..0ab3511a47d7 100644
@@ -295,7 +295,6 @@ extern void free_unused_pacas(void);
 
 #else /* CONFIG_PPC64 */
 
-static inline void allocate_paca_ptrs(void) { }
 static inline void allocate_paca(int cpu) { }
 static inline void free_unused_pacas(void) { }
 
arch/powerpc/include/asm/smp.h +1 -0
index f63505d74932..6c6cb53d7045 100644
@@ -26,6 +26,7 @@
 #include <asm/percpu.h>
 
 extern int boot_cpuid;
+extern int boot_cpu_hwid; /* PPC64 only */
 extern int spinning_secondaries;
 extern u32 *cpu_to_phys_id;
 extern bool coregroup_enabled;
arch/powerpc/kernel/iommu.c +1 -3
index caebe1431596..ee95937bdaf1 100644
@@ -67,11 +67,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/irq_64.c +66 -35

182 lines not on this page · raw message

arch/powerpc/kernel/process.c +1 -2
index c22cc234672f..effe9697905d 100644
@@ -1405,8 +1405,7 @@ static void show_instructions(struct pt_regs *regs)
 	for (i = 0; i < NR_INSN_TO_PRINT; i++) {
 		int instr;
 
-		if (!__kernel_text_address(pc) ||
-		    get_kernel_nofault(instr, (const void *)pc)) {
+		if (get_kernel_nofault(instr, (const void *)pc)) {
 			pr_cont("XXXXXXXX ");
 		} else {
 			if (nip == pc)
arch/powerpc/kernel/prom.c +3 -9
index 4f1c920aa13e..f318e8e1f3fe 100644
@@ -370,8 +370,8 @@ static int __init early_init_dt_scan_cpus(unsigned long node,
 	    be32_to_cpu(intserv[found_thread]));
 	boot_cpuid = found;
 
-	// Pass the boot CPU's hard CPU id back to our caller
-	*((u32 *)data) = be32_to_cpu(intserv[found_thread]);
+	if (IS_ENABLED(CONFIG_PPC64))
+		boot_cpu_hwid = be32_to_cpu(intserv[found_thread]);
 
 	/*
 	 * PAPR defines "logical" PVR values for cpus that
@@ -755,7 +755,6 @@ static inline void save_fscr_to_task(void) {}
 
 void __init early_init_devtree(void *params)
 {
-	u32 boot_cpu_hwid;
 	phys_addr_t limit;
 
 	DBG(" -> early_init_devtree(%px)\n", params);
@@ -851,7 +850,7 @@ void __init early_init_devtree(void *params)
 	/* Retrieve CPU related informations from the flat tree
 	 * (altivec support, boot CPU ID, ...)
 	 */
-	of_scan_flat_dt(early_init_dt_scan_cpus, &boot_cpu_hwid);
+	of_scan_flat_dt(early_init_dt_scan_cpus, NULL);
 	if (boot_cpuid < 0) {
 		printk("Failed to identify boot CPU !\n");
 		BUG();
@@ -868,11 +867,6 @@ void __init early_init_devtree(void *params)
 
 	mmu_early_init_devtree();
 
-	// NB. paca is not installed until later in early_setup()
-	allocate_paca_ptrs();
-	allocate_paca(boot_cpuid);
-	set_hard_smp_processor_id(boot_cpuid, boot_cpu_hwid);
-
 #ifdef CONFIG_PPC_POWERNV
 	/* Scan and build the list of machine check recoverable ranges */
 	of_scan_flat_dt(early_init_dt_scan_recoverable_ranges, NULL);
arch/powerpc/kernel/setup-common.c +4 -0
index 9b10e57040c6..e77734e5a127 100644
@@ -87,6 +87,10 @@ EXPORT_SYMBOL(machine_id);
 int boot_cpuid = -1;
 EXPORT_SYMBOL_GPL(boot_cpuid);
 
+#ifdef CONFIG_PPC64
+int boot_cpu_hwid = -1;
+#endif
+
 /*
  * These are used in binfmt_elf.c to put aux entries on the stack
  * for each elf executable being started.
arch/powerpc/kernel/setup_64.c +10 -6
index a0dee7354fe6..b2e0d3ce4261 100644
@@ -385,17 +385,21 @@ void __init early_setup(unsigned long dt_ptr)
 	/*
 	 * Do early initialization using the flattened device
 	 * tree, such as retrieving the physical memory map or
-	 * calculating/retrieving the hash table size.
+	 * calculating/retrieving the hash table size, discover
+	 * boot_cpuid and boot_cpu_hwid.
 	 */
 	early_init_devtree(__va(dt_ptr));
 
-	/* Now we know the logical id of our boot cpu, setup the paca. */
-	if (boot_cpuid != 0) {
-		/* Poison paca_ptrs[0] again if it's not the boot cpu */
-		memset(&paca_ptrs[0], 0x88, sizeof(paca_ptrs[0]));
-	}
+	allocate_paca_ptrs();
+	allocate_paca(boot_cpuid);
+	set_hard_smp_processor_id(boot_cpuid, boot_cpu_hwid);
 	fixup_boot_paca(paca_ptrs[boot_cpuid]);
 	setup_paca(paca_ptrs[boot_cpuid]); /* install the paca into registers */
+	// smp_processor_id() now reports boot_cpuid
+
+#ifdef CONFIG_SMP
+	task_thread_info(current)->cpu = boot_cpuid; // fix task_cpu(current)
+#endif
 
 	/*
 	 * Configure exception handlers. This include setting up trampolines
arch/powerpc/kernel/time.c +2 -2
index e26eb6618ae5..9d8665910350 100644
@@ -356,7 +356,7 @@ void vtime_flush(struct task_struct *tsk)
 }
 #endif /* CONFIG_VIRT_CPU_ACCOUNTING_NATIVE */
 
-void __delay(unsigned long loops)
+void __no_kcsan __delay(unsigned long loops)
 {
 	unsigned long start;
 
@@ -377,7 +377,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/net/bpf_jit_comp32.c +18 -2
index a379b0ce19ff..8643b2c8b76e 100644
@@ -79,6 +79,20 @@ static int bpf_jit_stack_offsetof(struct codegen_context *ctx, int reg)
 #define SEEN_NVREG_FULL_MASK	0x0003ffff /* Non volatile registers r14-r31 */
 #define SEEN_NVREG_TEMP_MASK	0x00001e01 /* BPF_REG_5, BPF_REG_AX, TMP_REG */
 
+static inline bool bpf_has_stack_frame(struct codegen_context *ctx)
+{
+	/*
+	 * We only need a stack frame if:
+	 * - we call other functions (kernel helpers), or
+	 * - we use non volatile registers, or
+	 * - we use tail call counter
+	 * - the bpf program uses its stack area
+	 * The latter condition is deduced from the usage of BPF_REG_FP
+	 */
+	return ctx->seen & (SEEN_FUNC | SEEN_TAILCALL | SEEN_NVREG_FULL_MASK) ||
+	       bpf_is_seen_register(ctx, bpf_to_ppc(BPF_REG_FP));
+}
+
 void bpf_jit_realloc_regs(struct codegen_context *ctx)
 {
 	unsigned int nvreg_mask;
@@ -118,7 +132,8 @@ void bpf_jit_build_prologue(u32 *image, struct codegen_context *ctx)
 
 #define BPF_TAILCALL_PROLOGUE_SIZE	4
 
-	EMIT(PPC_RAW_STWU(_R1, _R1, -BPF_PPC_STACKFRAME(ctx)));
+	if (bpf_has_stack_frame(ctx))
+		EMIT(PPC_RAW_STWU(_R1, _R1, -BPF_PPC_STACKFRAME(ctx)));
 
 	if (ctx->seen & SEEN_TAILCALL)
 		EMIT(PPC_RAW_STW(_R4, _R1, bpf_jit_stack_offsetof(ctx, BPF_PPC_TC)));
@@ -171,7 +186,8 @@ static void bpf_jit_emit_common_epilogue(u32 *image, struct codegen_context *ctx
 		EMIT(PPC_RAW_LWZ(_R0, _R1, BPF_PPC_STACKFRAME(ctx) + PPC_LR_STKOFF));
 
 	/* Tear down our stack frame */
-	EMIT(PPC_RAW_ADDI(_R1, _R1, BPF_PPC_STACKFRAME(ctx)));
+	if (bpf_has_stack_frame(ctx))
+		EMIT(PPC_RAW_ADDI(_R1, _R1, BPF_PPC_STACKFRAME(ctx)));
 
 	if (ctx->seen & SEEN_FUNC)
 		EMIT(PPC_RAW_MTLR(_R0));
arch/riscv/Makefile +7 -0
index 56b921998166..5931a0ff3c81 100644
@@ -87,6 +87,13 @@ endif
 # Avoid generating .eh_frame sections.
 KBUILD_CFLAGS += -fno-asynchronous-unwind-tables -fno-unwind-tables
 
+# The RISC-V attributes frequently cause compatibility issues and provide no
+# information, so just turn them off.
+KBUILD_CFLAGS += $(call cc-option,-mno-riscv-attribute)
+KBUILD_AFLAGS += $(call cc-option,-mno-riscv-attribute)
+KBUILD_CFLAGS += $(call as-option,-Wa$(comma)-mno-arch-attr)
+KBUILD_AFLAGS += $(call as-option,-Wa$(comma)-mno-arch-attr)
+
 KBUILD_CFLAGS_MODULE += $(call cc-option,-mno-relax)
 KBUILD_AFLAGS_MODULE += $(call as-option,-Wa$(comma)-mno-relax)
 
arch/riscv/errata/sifive/errata.c +3 -0
index 1031038423e7..c24a349dd026 100644
@@ -4,6 +4,7 @@
  */
 
 #include <linux/kernel.h>
+#include <linux/memory.h>
 #include <linux/module.h>
 #include <linux/string.h>
 #include <linux/bug.h>
@@ -107,7 +108,9 @@ void __init_or_module sifive_errata_patch_func(struct alt_entry *begin,
 
 		tmp = (1U << alt->errata_id);
 		if (cpu_req_errata & tmp) {
+			mutex_lock(&text_mutex);
 			patch_text_nosync(alt->old_ptr, alt->alt_ptr, alt->alt_len);
+			mutex_unlock(&text_mutex);
 			cpu_apply_errata |= tmp;
 		}
 	}
arch/riscv/errata/thead/errata.c +6 -2
index fac5742d1c1e..9d71fe3d35c7 100644
@@ -5,6 +5,7 @@
 
 #include <linux/bug.h>
 #include <linux/kernel.h>
+#include <linux/memory.h>
 #include <linux/module.h>
 #include <linux/string.h>
 #include <linux/uaccess.h>
@@ -97,11 +98,14 @@ void __init_or_module thead_errata_patch_func(struct alt_entry *begin, struct al
 		tmp = (1U << alt->errata_id);
 		if (cpu_req_errata & tmp) {
 			/* On vm-alternatives, the mmu isn't running yet */
-			if (stage == RISCV_ALTERNATIVES_EARLY_BOOT)
+			if (stage == RISCV_ALTERNATIVES_EARLY_BOOT) {
 				memcpy((void *)__pa_symbol(alt->old_ptr),
 				       (void *)__pa_symbol(alt->alt_ptr), alt->alt_len);
-			else
+			} else {
+				mutex_lock(&text_mutex);
 				patch_text_nosync(alt->old_ptr, alt->alt_ptr, alt->alt_len);
+				mutex_unlock(&text_mutex);
+			}
 		}
 	}
 
arch/riscv/include/asm/ftrace.h +1 -1
index 9e73922e1e2e..d47d87c2d7e3 100644
@@ -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
index f36368de839f..3cd00332d70f 100644
@@ -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
index 9a7d7346001e..98d9de07cba1 100644
@@ -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/compat_vdso/Makefile +4 -0
index 260daf3236d3..7f34f3c7c882 100644
@@ -14,6 +14,10 @@ COMPAT_LD := $(LD)
 COMPAT_CC_FLAGS := -march=rv32g -mabi=ilp32
 COMPAT_LD_FLAGS := -melf32lriscv
 
+# Disable attributes, as they're useless and break the build.
+COMPAT_CC_FLAGS += $(call cc-option,-mno-riscv-attribute)
+COMPAT_CC_FLAGS += $(call as-option,-Wa$(comma)-mno-arch-attr)
+
 # Files to link into the compat_vdso
 obj-compat_vdso = $(patsubst %, %.o, $(compat_vdso-syms)) note.o
 
arch/riscv/kernel/cpufeature.c +5 -1
index 93e45560af30..5a82d5520a1f 100644
@@ -10,6 +10,7 @@
 #include <linux/ctype.h>
 #include <linux/libfdt.h>
 #include <linux/log2.h>
+#include <linux/memory.h>
 #include <linux/module.h>
 #include <linux/of.h>
 #include <asm/alternative.h>
@@ -339,8 +340,11 @@ void __init_or_module riscv_cpufeature_patch_func(struct alt_entry *begin,
 		}
 
 		tmp = (1U << alt->errata_id);
-		if (cpu_req_feature & tmp)
+		if (cpu_req_feature & tmp) {
+			mutex_lock(&text_mutex);
 			patch_text_nosync(alt->old_ptr, alt->alt_ptr, alt->alt_len);
+			mutex_unlock(&text_mutex);
+		}
 	}
 }
 #endif
arch/riscv/kernel/ftrace.c +11 -2
index 5bff37af4770..03a6434a8cdd 100644
@@ -15,10 +15,19 @@
 void 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;
 }
 
 void ftrace_arch_code_modify_post_process(void) __releases(&text_mutex)
 {
+	riscv_patch_in_stop_machine = false;
 	mutex_unlock(&text_mutex);
 }
 
@@ -107,9 +116,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
index 765004b60513..e099961453cc 100644
@@ -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
index f9a5a7c90ff0..64a9c093aef9 100644
@@ -101,7 +101,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/um/kernel/vmlinux.lds.S +1 -1
index 16e49bfa2b42..53d719c04ba9 100644
@@ -1,4 +1,4 @@
-
+#define RUNTIME_DISCARD_EXIT
 KERNEL_STACK_SIZE = 4096 * (1 << CONFIG_KERNEL_STACK_ORDER);
 
 #ifdef CONFIG_LD_SCRIPT_STATIC
arch/x86/include/asm/kvm_host.h +3 -0
index 6aaae18f1854..24480b4f1c57 100644
@@ -1760,6 +1760,9 @@ extern struct kvm_x86_ops kvm_x86_ops;
 #define KVM_X86_OP_OPTIONAL_RET0 KVM_X86_OP
 #include <asm/kvm-x86-ops.h>
 
+int kvm_x86_vendor_init(struct kvm_x86_init_ops *ops);
+void kvm_x86_vendor_exit(void);
+
 #define __KVM_HAVE_ARCH_VM_ALLOC
 static inline struct kvm *kvm_arch_alloc_vm(void)
 {
arch/x86/kernel/cpu/amd.c +9 -0
index f769d6d08b43..06f2ede1544f 100644
@@ -880,6 +880,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/svm/svm.c +21 -2
index 22d054ba5939..f03bdaf79c88 100644
@@ -5097,15 +5097,34 @@ static struct kvm_x86_init_ops svm_init_ops __initdata = {
 
 static int __init svm_init(void)
 {
+	int r;
+
 	__unused_size_checks();
 
-	return kvm_init(&svm_init_ops, sizeof(struct vcpu_svm),
-			__alignof__(struct vcpu_svm), THIS_MODULE);
+	r = kvm_x86_vendor_init(&svm_init_ops);
+	if (r)
+		return r;
+
+	/*
+	 * Common KVM initialization _must_ come last, after this, /dev/kvm is
+	 * exposed to userspace!
+	 */
+	r = kvm_init(&svm_init_ops, sizeof(struct vcpu_svm),
+		     __alignof__(struct vcpu_svm), THIS_MODULE);
+	if (r)
+		goto err_kvm_init;
+
+	return 0;
+
+err_kvm_init:
+	kvm_x86_vendor_exit();
+	return r;
 }
 
 static void __exit svm_exit(void)
 {
 	kvm_exit();
+	kvm_x86_vendor_exit();
 }
 
 module_init(svm_init)
arch/x86/kvm/vmx/vmx.c +57 -34

139 lines not on this page · raw message

arch/x86/kvm/x86.c +13 -2
index a2c299d47e69..0ec7a0cb5da8 100644
@@ -9292,7 +9292,16 @@ static struct notifier_block pvclock_gtod_notifier = {
 
 int kvm_arch_init(void *opaque)
 {
-	struct kvm_x86_init_ops *ops = opaque;
+	return 0;
+}
+
+void kvm_arch_exit(void)
+{
+
+}
+
+int kvm_x86_vendor_init(struct kvm_x86_init_ops *ops)
+{
 	u64 host_pat;
 	int r;
 
@@ -9382,8 +9391,9 @@ int kvm_arch_init(void *opaque)
 	kmem_cache_destroy(x86_emulator_cache);
 	return r;
 }
+EXPORT_SYMBOL_GPL(kvm_x86_vendor_init);
 
-void kvm_arch_exit(void)
+void kvm_x86_vendor_exit(void)
 {
 #ifdef CONFIG_X86_64
 	if (hypervisor_is_type(X86_HYPER_MS_HYPERV))
@@ -9410,6 +9420,7 @@ void kvm_arch_exit(void)
 	WARN_ON(static_branch_unlikely(&kvm_xen_enabled.key));
 #endif
 }
+EXPORT_SYMBOL_GPL(kvm_x86_vendor_exit);
 
 static int __kvm_emulate_halt(struct kvm_vcpu *vcpu, int state, int reason)
 {
block/blk.h +1 -1
index 4c3b3325219a..e835f21d48af 100644
@@ -427,7 +427,7 @@ int bio_add_hw_page(struct request_queue *q, struct bio *bio,
 
 struct request_queue *blk_alloc_queue(int node_id);
 
-int disk_scan_partitions(struct gendisk *disk, fmode_t mode, void *owner);
+int disk_scan_partitions(struct gendisk *disk, fmode_t mode);
 
 int disk_alloc_events(struct gendisk *disk);
 void disk_add_events(struct gendisk *disk);
block/genhd.c +28 -9
index 23cf83b3331c..9c4c9aa559ab 100644
@@ -356,9 +356,10 @@ void disk_uevent(struct gendisk *disk, enum kobject_action action)
 }
 EXPORT_SYMBOL_GPL(disk_uevent);
 
-int disk_scan_partitions(struct gendisk *disk, fmode_t mode, void *owner)
+int disk_scan_partitions(struct gendisk *disk, fmode_t mode)
 {
 	struct block_device *bdev;
+	int ret = 0;
 
 	if (disk->flags & (GENHD_FL_NO_PART | GENHD_FL_HIDDEN))
 		return -EINVAL;
@@ -366,16 +367,29 @@ int disk_scan_partitions(struct gendisk *disk, fmode_t mode, void *owner)
 		return -EINVAL;
 	if (disk->open_partitions)
 		return -EBUSY;
-	/* Someone else has bdev exclusively open? */
-	if (disk->part0->bd_holder && disk->part0->bd_holder != owner)
-		return -EBUSY;
 
 	set_bit(GD_NEED_PART_SCAN, &disk->state);
-	bdev = blkdev_get_by_dev(disk_devt(disk), mode, NULL);
+	/*
+	 * If the device is opened exclusively by current thread already, it's
+	 * safe to scan partitons, otherwise, use bd_prepare_to_claim() to
+	 * synchronize with other exclusive openers and other partition
+	 * scanners.
+	 */
+	if (!(mode & FMODE_EXCL)) {
+		ret = bd_prepare_to_claim(disk->part0, disk_scan_partitions);
+		if (ret)
+			return ret;
+	}
+
+	bdev = blkdev_get_by_dev(disk_devt(disk), mode & ~FMODE_EXCL, NULL);
 	if (IS_ERR(bdev))
-		return PTR_ERR(bdev);
-	blkdev_put(bdev, mode);
-	return 0;
+		ret =  PTR_ERR(bdev);
+	else
+		blkdev_put(bdev, mode & ~FMODE_EXCL);
+
+	if (!(mode & FMODE_EXCL))
+		bd_abort_claiming(disk->part0, disk_scan_partitions);
+	return ret;
 }
 
 /**
@@ -497,9 +511,14 @@ int __must_check device_add_disk(struct device *parent, struct gendisk *disk,
 		if (ret)
 			goto out_unregister_bdi;
 
+		/* Make sure the first partition scan will be proceed */
+		if (get_capacity(disk) && !(disk->flags & GENHD_FL_NO_PART) &&
+		    !test_bit(GD_SUPPRESS_PART_SCAN, &disk->state))
+			set_bit(GD_NEED_PART_SCAN, &disk->state);
+
 		bdev_add(disk->part0, ddev->devt);
 		if (get_capacity(disk))
-			disk_scan_partitions(disk, FMODE_READ, NULL);
+			disk_scan_partitions(disk, FMODE_READ);
 
 		/*
 		 * Announce the disk and partitions after all partitions are
block/ioctl.c +6 -7
index 96617512982e..9c5f637ff153 100644
@@ -467,10 +467,10 @@ static int blkdev_bszset(struct block_device *bdev, fmode_t mode,
  * user space. Note the separate arg/argp parameters that are needed
  * to deal with the compat_ptr() conversion.
  */
-static int blkdev_common_ioctl(struct file *file, fmode_t mode, unsigned cmd,
-			       unsigned long arg, void __user *argp)
+static int blkdev_common_ioctl(struct block_device *bdev, fmode_t mode,
+			       unsigned int cmd, unsigned long arg,
+			       void __user *argp)
 {
-	struct block_device *bdev = I_BDEV(file->f_mapping->host);
 	unsigned int max_sectors;
 
 	switch (cmd) {
@@ -528,8 +528,7 @@ static int blkdev_common_ioctl(struct file *file, fmode_t mode, unsigned cmd,
 			return -EACCES;
 		if (bdev_is_partition(bdev))
 			return -EINVAL;
-		return disk_scan_partitions(bdev->bd_disk, mode & ~FMODE_EXCL,
-					    file);
+		return disk_scan_partitions(bdev->bd_disk, mode);
 	case BLKTRACESTART:
 	case BLKTRACESTOP:
 	case BLKTRACETEARDOWN:
@@ -607,7 +606,7 @@ long blkdev_ioctl(struct file *file, unsigned cmd, unsigned long arg)
 		break;
 	}
 
-	ret = blkdev_common_ioctl(file, mode, cmd, arg, argp);
+	ret = blkdev_common_ioctl(bdev, mode, cmd, arg, argp);
 	if (ret != -ENOIOCTLCMD)
 		return ret;
 
@@ -676,7 +675,7 @@ long compat_blkdev_ioctl(struct file *file, unsigned cmd, unsigned long arg)
 		break;
 	}
 
-	ret = blkdev_common_ioctl(file, mode, cmd, arg, argp);
+	ret = blkdev_common_ioctl(bdev, mode, cmd, arg, argp);
 	if (ret == -ENOIOCTLCMD && disk->fops->compat_ioctl)
 		ret = disk->fops->compat_ioctl(bdev, mode, cmd, arg);
 
drivers/bus/mhi/ep/main.c +11 -30

74 lines not on this page · raw message

drivers/bus/mhi/ep/sm.c +24 -18

104 lines not on this page · raw message

drivers/char/tpm/eventlog/acpi.c +5 -1
index 0913d3eb8d51..cd266021d010 100644
@@ -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/clk/renesas/Kconfig +1 -1
index cacaf9b87d26..37632a0659d8 100644
@@ -22,7 +22,7 @@ config CLK_RENESAS
 	select CLK_R8A7791 if ARCH_R8A7791 || ARCH_R8A7793
 	select CLK_R8A7792 if ARCH_R8A7792
 	select CLK_R8A7794 if ARCH_R8A7794
-	select CLK_R8A7795 if ARCH_R8A77950 || ARCH_R8A77951
+	select CLK_R8A7795 if ARCH_R8A77951
 	select CLK_R8A77960 if ARCH_R8A77960
 	select CLK_R8A77961 if ARCH_R8A77961
 	select CLK_R8A77965 if ARCH_R8A77965
drivers/clk/renesas/r8a7795-cpg-mssr.c +10 -116

187 lines not on this page · raw message

drivers/clk/renesas/rcar-gen3-cpg.c +2 -15
index e668f23c75e7..b3ef62fa612e 100644
@@ -310,19 +310,10 @@ static unsigned int cpg_clk_extalr __initdata;
 static u32 cpg_mode __initdata;
 static u32 cpg_quirks __initdata;
 
-#define PLL_ERRATA	BIT(0)		/* Missing PLL0/2/4 post-divider */
 #define RCKCR_CKSEL	BIT(1)		/* Manual RCLK parent selection */
 
 
 static const struct soc_device_attribute cpg_quirks_match[] __initconst = {
-	{
-		.soc_id = "r8a7795", .revision = "ES1.0",
-		.data = (void *)(PLL_ERRATA | RCKCR_CKSEL),
-	},
-	{
-		.soc_id = "r8a7795", .revision = "ES1.*",
-		.data = (void *)(RCKCR_CKSEL),
-	},
 	{
 		.soc_id = "r8a7796", .revision = "ES1.0",
 		.data = (void *)(RCKCR_CKSEL),
@@ -355,9 +346,8 @@ struct clk * __init rcar_gen3_cpg_clk_register(struct device *dev,
 		 * multiplier when cpufreq changes between normal and boost
 		 * modes.
 		 */
-		mult = (cpg_quirks & PLL_ERRATA) ? 4 : 2;
 		return cpg_pll_clk_register(core->name, __clk_get_name(parent),
-					    base, mult, CPG_PLL0CR, 0);
+					    base, 2, CPG_PLL0CR, 0);
 
 	case CLK_TYPE_GEN3_PLL1:
 		mult = cpg_pll_config->pll1_mult;
@@ -370,9 +360,8 @@ struct clk * __init rcar_gen3_cpg_clk_register(struct device *dev,
 		 * multiplier when cpufreq changes between normal and boost
 		 * modes.
 		 */
-		mult = (cpg_quirks & PLL_ERRATA) ? 4 : 2;
 		return cpg_pll_clk_register(core->name, __clk_get_name(parent),
-					    base, mult, CPG_PLL2CR, 2);
+					    base, 2, CPG_PLL2CR, 2);
 
 	case CLK_TYPE_GEN3_PLL3:
 		mult = cpg_pll_config->pll3_mult;
@@ -388,8 +377,6 @@ struct clk * __init rcar_gen3_cpg_clk_register(struct device *dev,
 		 */
 		value = readl(base + CPG_PLL4CR);
 		mult = (((value >> 24) & 0x7f) + 1) * 2;
-		if (cpg_quirks & PLL_ERRATA)
-			mult *= 2;
 		break;
 
 	case CLK_TYPE_GEN3_SDH:
drivers/clk/renesas/renesas-cpg-mssr.c +0 -27
index 1a0cdf001b2f..523fd4523157 100644
@@ -1113,19 +1113,6 @@ static int __init cpg_mssr_init(void)
 
 subsys_initcall(cpg_mssr_init);
 
-void __init cpg_core_nullify_range(struct cpg_core_clk *core_clks,
-				   unsigned int num_core_clks,
-				   unsigned int first_clk,
-				   unsigned int last_clk)
-{
-	unsigned int i;
-
-	for (i = 0; i < num_core_clks; i++)
-		if (core_clks[i].id >= first_clk &&
-		    core_clks[i].id <= last_clk)
-			core_clks[i].name = NULL;
-}
-
 void __init mssr_mod_nullify(struct mssr_mod_clk *mod_clks,
 			     unsigned int num_mod_clks,
 			     const unsigned int *clks, unsigned int n)
@@ -1139,19 +1126,5 @@ void __init mssr_mod_nullify(struct mssr_mod_clk *mod_clks,
 		}
 }
 
-void __init mssr_mod_reparent(struct mssr_mod_clk *mod_clks,
-			      unsigned int num_mod_clks,
-			      const struct mssr_mod_reparent *clks,
-			      unsigned int n)
-{
-	unsigned int i, j;
-
-	for (i = 0, j = 0; i < num_mod_clks && j < n; i++)
-		if (mod_clks[i].id == clks[j].clk) {
-			mod_clks[i].parent = clks[j].parent;
-			j++;
-		}
-}
-
 MODULE_DESCRIPTION("Renesas CPG/MSSR Driver");
 MODULE_LICENSE("GPL v2");
drivers/clk/renesas/renesas-cpg-mssr.h +0 -14
index 1c3c057d17f5..80c5b462924a 100644
@@ -187,21 +187,7 @@ void __init cpg_mssr_early_init(struct device_node *np,
     /*
      * Helpers for fixing up clock tables depending on SoC revision
      */
-
-struct mssr_mod_reparent {
-	unsigned int clk, parent;
-};
-
-
-extern void cpg_core_nullify_range(struct cpg_core_clk *core_clks,
-				   unsigned int num_core_clks,
-				   unsigned int first_clk,
-				   unsigned int last_clk);
 extern void mssr_mod_nullify(struct mssr_mod_clk *mod_clks,
 			     unsigned int num_mod_clks,
 			     const unsigned int *clks, unsigned int n);
-extern void mssr_mod_reparent(struct mssr_mod_clk *mod_clks,
-			      unsigned int num_mod_clks,
-			      const struct mssr_mod_reparent *clks,
-			      unsigned int n);
 #endif
drivers/gpu/drm/amd/amdgpu/nv.c +4 -3
index 6853b93ac82e..df3388e8dec0 100644
@@ -393,9 +393,10 @@ static int nv_read_register(struct amdgpu_device *adev, u32 se_num,
 	*value = 0;
 	for (i = 0; i < ARRAY_SIZE(nv_allowed_read_registers); i++) {
 		en = &nv_allowed_read_registers[i];
-		if (adev->reg_offset[en->hwip][en->inst] &&
-		    reg_offset != (adev->reg_offset[en->hwip][en->inst][en->seg]
-				   + en->reg_offset))
+		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;
 
 		*value = nv_get_register_value(adev,
drivers/gpu/drm/amd/amdgpu/soc15.c +3 -2
index 7cd17dda32ce..2eddd7f6cd41 100644
@@ -439,8 +439,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/amd/amdgpu/soc21.c +53 -16

104 lines not on this page · raw message

drivers/gpu/drm/amd/amdkfd/kfd_doorbell.c +1 -1
index cd4e61bf0493..3ac599f74fea 100644
@@ -280,7 +280,7 @@ phys_addr_t kfd_get_process_doorbells(struct kfd_process_device *pdd)
 	if (!pdd->doorbell_index) {
 		int r = kfd_alloc_process_doorbells(pdd->dev,
 						    &pdd->doorbell_index);
-		if (r)
+		if (r < 0)
 			return 0;
 	}
 
drivers/gpu/drm/amd/display/dc/dcn32/dcn32_resource.c +60 -2

76 lines not on this page · raw message

drivers/gpu/drm/amd/display/dc/dcn32/dcn32_resource.h +4 -0
index 13fbc574910b..434b743fa4cb 100644
@@ -134,6 +134,10 @@ void dcn32_restore_mall_state(struct dc *dc,
 		struct dc_state *context,
 		struct mall_temp_config *temp_config);
 
+bool dcn32_allow_subvp_with_active_margin(struct pipe_ctx *pipe);
+
+unsigned int dcn32_calc_num_avail_chans_for_mall(struct dc *dc, int num_chans);
+
 /* definitions for run time init of reg offsets */
 
 /* CLK SRC */
drivers/gpu/drm/amd/display/dc/dcn321/dcn321_resource.c +8 -1
index d1f36df03c2e..1709b6edb89c 100644
@@ -1702,11 +1702,18 @@ static bool dcn321_resource_construct(
 	dc->caps.max_cursor_size = 64;
 	dc->caps.min_horizontal_blanking_period = 80;
 	dc->caps.dmdata_alloc_size = 2048;
-	dc->caps.mall_size_per_mem_channel = 0;
+	dc->caps.mall_size_per_mem_channel = 4;
 	dc->caps.mall_size_total = 0;
 	dc->caps.cursor_cache_size = dc->caps.max_cursor_size * dc->caps.max_cursor_size * 8;
 	dc->caps.cache_line_size = 64;
 	dc->caps.cache_num_ways = 16;
+
+	/* Calculate the available MALL space */
+	dc->caps.max_cab_allocation_bytes = dcn32_calc_num_avail_chans_for_mall(
+		dc, dc->ctx->dc_bios->vram_info.num_chans) *
+		dc->caps.mall_size_per_mem_channel * 1024 * 1024;
+	dc->caps.mall_size_total = dc->caps.max_cab_allocation_bytes;
+
 	dc->caps.max_cab_allocation_bytes = 33554432; // 32MB = 1024 * 1024 * 32
 	dc->caps.subvp_fw_processing_delay_us = 15;
 	dc->caps.subvp_drr_max_vblank_margin_us = 40;
drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c +34 -2
index 69e205ac58b2..3b6194f0fe51 100644
@@ -693,7 +693,9 @@ static bool dcn32_assign_subvp_pipe(struct dc *dc,
 		 */
 		if (pipe->plane_state && !pipe->top_pipe &&
 				pipe->stream->mall_stream_config.type == SUBVP_NONE && refresh_rate < 120 && !pipe->plane_state->address.tmz_surface &&
-				vba->ActiveDRAMClockChangeLatencyMarginPerState[vba->VoltageLevel][vba->maxMpcComb][vba->pipe_plane[pipe_idx]] <= 0) {
+				(vba->ActiveDRAMClockChangeLatencyMarginPerState[vba->VoltageLevel][vba->maxMpcComb][vba->pipe_plane[pipe_idx]] <= 0 ||
+				(vba->ActiveDRAMClockChangeLatencyMarginPerState[vba->VoltageLevel][vba->maxMpcComb][vba->pipe_plane[pipe_idx]] > 0 &&
+						dcn32_allow_subvp_with_active_margin(pipe)))) {
 			while (pipe) {
 				num_pipes++;
 				pipe = pipe->bottom_pipe;
@@ -2451,8 +2453,11 @@ void dcn32_update_bw_bounding_box_fpu(struct dc *dc, struct clk_bw_params *bw_pa
 		}
 
 		/* Override from VBIOS for num_chan */
-		if (dc->ctx->dc_bios->vram_info.num_chans)
+		if (dc->ctx->dc_bios->vram_info.num_chans) {
 			dcn3_2_soc.num_chans = dc->ctx->dc_bios->vram_info.num_chans;
+			dcn3_2_soc.mall_allocated_for_dcn_mbytes = (double)(dcn32_calc_num_avail_chans_for_mall(dc,
+				dc->ctx->dc_bios->vram_info.num_chans) * dc->caps.mall_size_per_mem_channel);
+		}
 
 		if (dc->ctx->dc_bios->vram_info.dram_channel_width_bytes)
 			dcn3_2_soc.dram_channel_width_bytes = dc->ctx->dc_bios->vram_info.dram_channel_width_bytes;
@@ -2630,3 +2635,30 @@ void dcn32_zero_pipe_dcc_fraction(display_e2e_pipe_params_st *pipes,
 	pipes[pipe_cnt].pipe.src.dcc_fraction_of_zs_req_luma = 0;
 	pipes[pipe_cnt].pipe.src.dcc_fraction_of_zs_req_chroma = 0;
 }
+
+bool dcn32_allow_subvp_with_active_margin(struct pipe_ctx *pipe)
+{
+	bool allow = false;
+	uint32_t refresh_rate = 0;
+
+	/* Allow subvp on displays that have active margin for 2560x1440@60hz displays
+	 * only for now. There must be no scaling as well.
+	 *
+	 * For now we only enable on 2560x1440@60hz displays to enable 4K60 + 1440p60 configs
+	 * for p-state switching.
+	 */
+	if (pipe->stream && pipe->plane_state) {
+		refresh_rate = (pipe->stream->timing.pix_clk_100hz * 100 +
+						pipe->stream->timing.v_total * pipe->stream->timing.h_total - 1)
+						/ (double)(pipe->stream->timing.v_total * pipe->stream->timing.h_total);
+		if (pipe->stream->timing.v_addressable == 1440 &&
+				pipe->stream->timing.h_addressable == 2560 &&
+				refresh_rate >= 55 && refresh_rate <= 65 &&
+				pipe->plane_state->src_rect.height == 1440 &&
+				pipe->plane_state->src_rect.width == 2560 &&
+				pipe->plane_state->dst_rect.height == 1440 &&
+				pipe->plane_state->dst_rect.width == 2560)
+			allow = true;
+	}
+	return allow;
+}
drivers/gpu/drm/amd/display/dc/dml/dcn321/dcn321_fpu.c +4 -1
index 0ea406145c1d..b80cef70fa60 100644
@@ -534,8 +534,11 @@ void dcn321_update_bw_bounding_box_fpu(struct dc *dc, struct clk_bw_params *bw_p
 		}
 
 		/* Override from VBIOS for num_chan */
-		if (dc->ctx->dc_bios->vram_info.num_chans)
+		if (dc->ctx->dc_bios->vram_info.num_chans) {
 			dcn3_21_soc.num_chans = dc->ctx->dc_bios->vram_info.num_chans;
+			dcn3_21_soc.mall_allocated_for_dcn_mbytes = (double)(dcn32_calc_num_avail_chans_for_mall(dc,
+				dc->ctx->dc_bios->vram_info.num_chans) * dc->caps.mall_size_per_mem_channel);
+		}
 
 		if (dc->ctx->dc_bios->vram_info.dram_channel_width_bytes)
 			dcn3_21_soc.dram_channel_width_bytes = dc->ctx->dc_bios->vram_info.dram_channel_width_bytes;
drivers/gpu/drm/display/drm_hdmi_helper.c +2 -4
index 0264abe55278..faf5e9efa7d3 100644
@@ -44,10 +44,8 @@ int drm_hdmi_infoframe_set_hdr_metadata(struct hdmi_drm_infoframe *frame,
 
 	/* Sink EOTF is Bit map while infoframe is absolute values */
 	if (!is_eotf_supported(hdr_metadata->hdmi_metadata_type1.eotf,
-	    connector->hdr_sink_metadata.hdmi_type1.eotf)) {
-		DRM_DEBUG_KMS("EOTF Not Supported\n");
-		return -EINVAL;
-	}
+	    connector->hdr_sink_metadata.hdmi_type1.eotf))
+		DRM_DEBUG_KMS("Unknown EOTF %d\n", hdr_metadata->hdmi_metadata_type1.eotf);
 
 	err = hdmi_drm_infoframe_init(frame);
 	if (err < 0)
drivers/gpu/drm/drm_atomic.c +1 -0
index f197f59f6d99..c0dc5858a723 100644
@@ -1070,6 +1070,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/i915/display/icl_dsi.c +2 -1
index d16b30a2dded..cf5d2f8885f0 100644
@@ -2043,7 +2043,8 @@ void icl_dsi_init(struct drm_i915_private *dev_priv)
 	/* attach connector to encoder */
 	intel_connector_attach_encoder(intel_connector, encoder);
 
-	intel_bios_init_panel(dev_priv, &intel_connector->panel, NULL, NULL);
+	encoder->devdata = intel_bios_encoder_data_lookup(dev_priv, port);
+	intel_bios_init_panel_late(dev_priv, &intel_connector->panel, encoder->devdata, NULL);
 
 	mutex_lock(&dev_priv->drm.mode_config.mutex);
 	intel_panel_add_vbt_lfp_fixed_mode(intel_connector);
drivers/gpu/drm/i915/display/intel_bios.c +54 -17

156 lines not on this page · raw message

drivers/gpu/drm/i915/display/intel_bios.h +7 -4
index e375405a7828..ff1fdd2e0c1c 100644
@@ -232,10 +232,13 @@ struct mipi_pps_data {
 } __packed;
 
 void intel_bios_init(struct drm_i915_private *dev_priv);
-void intel_bios_init_panel(struct drm_i915_private *dev_priv,
-			   struct intel_panel *panel,
-			   const struct intel_bios_encoder_data *devdata,
-			   const struct edid *edid);
+void intel_bios_init_panel_early(struct drm_i915_private *dev_priv,
+				 struct intel_panel *panel,
+				 const struct intel_bios_encoder_data *devdata);
+void intel_bios_init_panel_late(struct drm_i915_private *dev_priv,
+				struct intel_panel *panel,
+				const struct intel_bios_encoder_data *devdata,
+				const struct edid *edid);
 void intel_bios_fini_panel(struct intel_panel *panel);
 void intel_bios_driver_remove(struct drm_i915_private *dev_priv);
 bool intel_bios_is_valid_vbt(const void *buf, size_t size);
drivers/gpu/drm/i915/display/intel_connector.c +1 -1
index 6205ddd3ded0..562da3b741e2 100644
@@ -54,7 +54,7 @@ int intel_connector_init(struct intel_connector *connector)
 	__drm_atomic_helper_connector_reset(&connector->base,
 					    &conn_state->base);
 
-	INIT_LIST_HEAD(&connector->panel.fixed_modes);
+	intel_panel_init_alloc(connector);
 
 	return 0;
 }
drivers/gpu/drm/i915/display/intel_display_types.h +1 -1
index f07395065a69..1b6989001ee2 100644
@@ -291,7 +291,7 @@ struct intel_vbt_panel_data {
 	struct drm_display_mode *sdvo_lvds_vbt_mode; /* if any */
 
 	/* Feature bits */
-	unsigned int panel_type:4;
+	int panel_type;
 	unsigned int lvds_dither:1;
 	unsigned int bios_lvds_val; /* initial [PCH_]LVDS reg val in VBIOS */
 
drivers/gpu/drm/i915/display/intel_dp.c +5 -2
index 75070eb07d4b..1edb21f69808 100644
@@ -5202,6 +5202,9 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp,
 		return false;
 	}
 
+	intel_bios_init_panel_early(dev_priv, &intel_connector->panel,
+				    encoder->devdata);
+
 	intel_pps_init(intel_dp);
 
 	/* Cache DPCD and EDID for edp. */
@@ -5237,8 +5240,8 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp,
 	}
 	intel_connector->edid = edid;
 
-	intel_bios_init_panel(dev_priv, &intel_connector->panel,
-			      encoder->devdata, IS_ERR(edid) ? NULL : edid);
+	intel_bios_init_panel_late(dev_priv, &intel_connector->panel,
+				   encoder->devdata, IS_ERR(edid) ? NULL : edid);
 
 	intel_panel_add_edid_fixed_modes(intel_connector, true);
 
drivers/gpu/drm/i915/display/intel_lvds.c +2 -2
index 7bf1bdfd03ec..aecec992cd0d 100644
@@ -964,8 +964,8 @@ void intel_lvds_init(struct drm_i915_private *dev_priv)
 	}
 	intel_connector->edid = edid;
 
-	intel_bios_init_panel(dev_priv, &intel_connector->panel, NULL,
-			      IS_ERR(edid) ? NULL : edid);
+	intel_bios_init_panel_late(dev_priv, &intel_connector->panel, NULL,
+				   IS_ERR(edid) ? NULL : edid);
 
 	/* Try EDID first */
 	intel_panel_add_edid_fixed_modes(intel_connector, true);
drivers/gpu/drm/i915/display/intel_panel.c +8 -0
index 1640726bfbf6..609fcdbd7d58 100644
@@ -661,6 +661,14 @@ intel_panel_mode_valid(struct intel_connector *connector,
 	return MODE_OK;
 }
 
+void intel_panel_init_alloc(struct intel_connector *connector)
+{
+	struct intel_panel *panel = &connector->panel;
+
+	connector->panel.vbt.panel_type = -1;
+	INIT_LIST_HEAD(&panel->fixed_modes);
+}
+
 int intel_panel_init(struct intel_connector *connector)
 {
 	struct intel_panel *panel = &connector->panel;
drivers/gpu/drm/i915/display/intel_panel.h +1 -0
index 5c5b5b7f95b6..4b51e1c51da6 100644
@@ -18,6 +18,7 @@ struct intel_connector;
 struct intel_crtc_state;
 struct intel_encoder;
 
+void intel_panel_init_alloc(struct intel_connector *connector);
 int intel_panel_init(struct intel_connector *connector);
 void intel_panel_fini(struct intel_connector *connector);
 enum drm_connector_status
drivers/gpu/drm/i915/display/intel_sdvo.c +1 -1
index 329b9d9af667..21805c15d5eb 100644
@@ -2886,7 +2886,7 @@ intel_sdvo_lvds_init(struct intel_sdvo *intel_sdvo, u16 type)
 	if (!intel_sdvo_create_enhance_property(intel_sdvo, intel_sdvo_connector))
 		goto err;
 
-	intel_bios_init_panel(i915, &intel_connector->panel, NULL, NULL);
+	intel_bios_init_panel_late(i915, &intel_connector->panel, NULL, NULL);
 
 	/*
 	 * Fetch modes from VBT. For SDVO prefer the VBT mode since some
drivers/gpu/drm/i915/display/vlv_dsi.c +1 -1
index 84481030883a..662bdb656aa3 100644
@@ -1916,7 +1916,7 @@ void vlv_dsi_init(struct drm_i915_private *dev_priv)
 
 	intel_dsi->panel_power_off_time = ktime_get_boottime();
 
-	intel_bios_init_panel(dev_priv, &intel_connector->panel, NULL, NULL);
+	intel_bios_init_panel_late(dev_priv, &intel_connector->panel, NULL, NULL);
 
 	if (intel_connector->panel.vbt.dsi.config->dual_link)
 		intel_dsi->ports = BIT(PORT_A) | BIT(PORT_C);
drivers/gpu/drm/msm/adreno/a5xx_gpu.c +3 -3
index 660ba0db8900..047c5e8c87ff 100644
@@ -151,8 +151,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);
@@ -806,7 +806,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
index 7658e89844b4..f58dd564d122 100644
@@ -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)
@@ -207,6 +207,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 */
@@ -257,7 +258,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/adreno/adreno_device.c +2 -1
index 36f062c7582f..c5c4c93b3689 100644
@@ -558,7 +558,8 @@ static void adreno_unbind(struct device *dev, struct device *master,
 	struct msm_drm_private *priv = dev_get_drvdata(master);
 	struct msm_gpu *gpu = dev_to_gpu(dev);
 
-	WARN_ON_ONCE(adreno_system_suspend(dev));
+	if (pm_runtime_enabled(dev))
+		WARN_ON_ONCE(adreno_system_suspend(dev));
 	gpu->funcs->destroy(gpu);
 
 	priv->gpu_pdev = NULL;
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c +29 -31

165 lines not on this page · raw message

drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c +2 -0
index 7ada957adbbb..58abf5fe97e2 100644
@@ -572,6 +572,8 @@ void dpu_rm_release(struct dpu_global_state *global_state,
 		ARRAY_SIZE(global_state->ctl_to_enc_id), enc->base.id);
 	_dpu_rm_clear_mapping(global_state->dsc_to_enc_id,
 		ARRAY_SIZE(global_state->dsc_to_enc_id), enc->base.id);
+	_dpu_rm_clear_mapping(global_state->dspp_to_enc_id,
+		ARRAY_SIZE(global_state->dspp_to_enc_id), enc->base.id);
 }
 
 int dpu_rm_reserve(
drivers/gpu/drm/msm/msm_gem_submit.c +2 -3
index 1c4be193fd23..8ac1cd27746a 100644
@@ -626,8 +626,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);
 
@@ -642,7 +642,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/wndw.h +3 -2
index 591c852f326b..76a6ae5d5652 100644
@@ -35,8 +35,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 **);
+		   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/gpu/drm/nouveau/include/nvkm/subdev/fb.h +2 -1
index c5a4f49ee206..01a22a13b452 100644
@@ -2,6 +2,7 @@
 #ifndef __NVKM_FB_H__
 #define __NVKM_FB_H__
 #include <core/subdev.h>
+#include <core/falcon.h>
 #include <core/mm.h>
 
 /* memory type/access flags, do not match hardware values */
@@ -33,7 +34,7 @@ struct nvkm_fb {
 	const struct nvkm_fb_func *func;
 	struct nvkm_subdev subdev;
 
-	struct nvkm_blob vpr_scrubber;
+	struct nvkm_falcon_fw vpr_scrubber;
 
 	struct {
 		struct page *flush_page;
drivers/gpu/drm/nouveau/nvkm/subdev/fb/base.c +6 -2
index bac7dcc4c2c1..0955340cc421 100644
@@ -143,6 +143,10 @@ nvkm_fb_mem_unlock(struct nvkm_fb *fb)
 	if (!fb->func->vpr.scrub_required)
 		return 0;
 
+	ret = nvkm_subdev_oneinit(subdev);
+	if (ret)
+		return ret;
+
 	if (!fb->func->vpr.scrub_required(fb)) {
 		nvkm_debug(subdev, "VPR not locked\n");
 		return 0;
@@ -150,7 +154,7 @@ nvkm_fb_mem_unlock(struct nvkm_fb *fb)
 
 	nvkm_debug(subdev, "VPR locked, running scrubber binary\n");
 
-	if (!fb->vpr_scrubber.size) {
+	if (!fb->vpr_scrubber.fw.img) {
 		nvkm_warn(subdev, "VPR locked, but no scrubber binary!\n");
 		return 0;
 	}
@@ -229,7 +233,7 @@ nvkm_fb_dtor(struct nvkm_subdev *subdev)
 
 	nvkm_ram_del(&fb->ram);
 
-	nvkm_blob_dtor(&fb->vpr_scrubber);
+	nvkm_falcon_fw_dtor(&fb->vpr_scrubber);
 
 	if (fb->sysmem.flush_page) {
 		dma_unmap_page(subdev->device->dev, fb->sysmem.flush_page_addr,
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ga100.c +1 -1
index 5098f219e3e6..a7456e786463 100644
@@ -37,5 +37,5 @@ ga100_fb = {
 int
 ga100_fb_new(struct nvkm_device *device, enum nvkm_subdev_type type, int inst, struct nvkm_fb **pfb)
 {
-	return gp102_fb_new_(&ga100_fb, device, type, inst, pfb);
+	return gf100_fb_new_(&ga100_fb, device, type, inst, pfb);
 }
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ga102.c +8 -13
index 5a21b0ae4595..dd476e079fe1 100644
@@ -25,25 +25,20 @@
 #include <engine/nvdec.h>
 
 static int
-ga102_fb_vpr_scrub(struct nvkm_fb *fb)
+ga102_fb_oneinit(struct nvkm_fb *fb)
 {
-	struct nvkm_falcon_fw fw = {};
-	int ret;
+	struct nvkm_subdev *subdev = &fb->subdev;
 
-	ret = nvkm_falcon_fw_ctor_hs_v2(&ga102_flcn_fw, "mem-unlock", &fb->subdev, "nvdec/scrubber",
-					0, &fb->subdev.device->nvdec[0]->falcon, &fw);
-	if (ret)
-		return ret;
+	nvkm_falcon_fw_ctor_hs_v2(&ga102_flcn_fw, "mem-unlock", subdev, "nvdec/scrubber",
+				  0, &subdev->device->nvdec[0]->falcon, &fb->vpr_scrubber);
 
-	ret = nvkm_falcon_fw_boot(&fw, &fb->subdev, true, NULL, NULL, 0, 0);
-	nvkm_falcon_fw_dtor(&fw);
-	return ret;
+	return gf100_fb_oneinit(fb);
 }
 
 static const struct nvkm_fb_func
 ga102_fb = {
 	.dtor = gf100_fb_dtor,
-	.oneinit = gf100_fb_oneinit,
+	.oneinit = ga102_fb_oneinit,
 	.init = gm200_fb_init,
 	.init_page = gv100_fb_init_page,
 	.init_unkn = gp100_fb_init_unkn,
@@ -51,13 +46,13 @@ ga102_fb = {
 	.ram_new = ga102_ram_new,
 	.default_bigpage = 16,
 	.vpr.scrub_required = tu102_fb_vpr_scrub_required,
-	.vpr.scrub = ga102_fb_vpr_scrub,
+	.vpr.scrub = gp102_fb_vpr_scrub,
 };
 
 int
 ga102_fb_new(struct nvkm_device *device, enum nvkm_subdev_type type, int inst, struct nvkm_fb **pfb)
 {
-	return gp102_fb_new_(&ga102_fb, device, type, inst, pfb);
+	return gf100_fb_new_(&ga102_fb, device, type, inst, pfb);
 }
 
 MODULE_FIRMWARE("nvidia/ga102/nvdec/scrubber.bin");
drivers/gpu/drm/nouveau/nvkm/subdev/fb/gp102.c +14 -27

65 lines not on this page · raw message

drivers/gpu/drm/nouveau/nvkm/subdev/fb/gv100.c +2 -2
index 0e3c0a8f5d71..4d8a286a7a34 100644
@@ -31,7 +31,7 @@ gv100_fb_init_page(struct nvkm_fb *fb)
 static const struct nvkm_fb_func
 gv100_fb = {
 	.dtor = gf100_fb_dtor,
-	.oneinit = gf100_fb_oneinit,
+	.oneinit = gp102_fb_oneinit,
 	.init = gm200_fb_init,
 	.init_page = gv100_fb_init_page,
 	.init_unkn = gp100_fb_init_unkn,
@@ -45,7 +45,7 @@ gv100_fb = {
 int
 gv100_fb_new(struct nvkm_device *device, enum nvkm_subdev_type type, int inst, struct nvkm_fb **pfb)
 {
-	return gp102_fb_new_(&gv100_fb, device, type, inst, pfb);
+	return gf100_fb_new_(&gv100_fb, device, type, inst, pfb);
 }
 
 MODULE_FIRMWARE("nvidia/gv100/nvdec/scrubber.bin");
drivers/gpu/drm/nouveau/nvkm/subdev/fb/priv.h +1 -2
index f517751f94ac..726c30c8bf95 100644
@@ -83,8 +83,7 @@ int gm200_fb_init_page(struct nvkm_fb *);
 void gp100_fb_init_remapper(struct nvkm_fb *);
 void gp100_fb_init_unkn(struct nvkm_fb *);
 
-int gp102_fb_new_(const struct nvkm_fb_func *, struct nvkm_device *, enum nvkm_subdev_type, int,
-		  struct nvkm_fb **);
+int gp102_fb_oneinit(struct nvkm_fb *);
 bool gp102_fb_vpr_scrub_required(struct nvkm_fb *);
 int gp102_fb_vpr_scrub(struct nvkm_fb *);
 
drivers/gpu/drm/nouveau/nvkm/subdev/fb/tu102.c +2 -2
index be82af0364ee..b8803c124c3b 100644
@@ -31,7 +31,7 @@ tu102_fb_vpr_scrub_required(struct nvkm_fb *fb)
 static const struct nvkm_fb_func
 tu102_fb = {
 	.dtor = gf100_fb_dtor,
-	.oneinit = gf100_fb_oneinit,
+	.oneinit = gp102_fb_oneinit,
 	.init = gm200_fb_init,
 	.init_page = gv100_fb_init_page,
 	.init_unkn = gp100_fb_init_unkn,
@@ -45,7 +45,7 @@ tu102_fb = {
 int
 tu102_fb_new(struct nvkm_device *device, enum nvkm_subdev_type type, int inst, struct nvkm_fb **pfb)
 {
-	return gp102_fb_new_(&tu102_fb, device, type, inst, pfb);
+	return gf100_fb_new_(&tu102_fb, device, type, inst, pfb);
 }
 
 MODULE_FIRMWARE("nvidia/tu102/nvdec/scrubber.bin");
drivers/hid/hid-core.c +25 -7
index 5c72aef3d3dd..799a3086dbb0 100644
@@ -261,6 +261,7 @@ static int hid_add_field(struct hid_parser *parser, unsigned report_type, unsign
 {
 	struct hid_report *report;
 	struct hid_field *field;
+	unsigned int max_buffer_size = HID_MAX_BUFFER_SIZE;
 	unsigned int usages;
 	unsigned int offset;
 	unsigned int i;
@@ -291,8 +292,11 @@ static int hid_add_field(struct hid_parser *parser, unsigned report_type, unsign
 	offset = report->size;
 	report->size += parser->global.report_size * parser->global.report_count;
 
+	if (parser->device->ll_driver->max_buffer_size)
+		max_buffer_size = parser->device->ll_driver->max_buffer_size;
+
 	/* Total size check: Allow for possible report index byte */
-	if (report->size > (HID_MAX_BUFFER_SIZE - 1) << 3) {
+	if (report->size > (max_buffer_size - 1) << 3) {
 		hid_err(parser->device, "report is too long\n");
 		return -1;
 	}
@@ -1966,6 +1970,7 @@ int hid_report_raw_event(struct hid_device *hid, enum hid_report_type type, u8 *
 	struct hid_report_enum *report_enum = hid->report_enum + type;
 	struct hid_report *report;
 	struct hid_driver *hdrv;
+	int max_buffer_size = HID_MAX_BUFFER_SIZE;
 	u32 rsize, csize = size;
 	u8 *cdata = data;
 	int ret = 0;
@@ -1981,10 +1986,13 @@ int hid_report_raw_event(struct hid_device *hid, enum hid_report_type type, u8 *
 
 	rsize = hid_compute_report_size(report);
 
-	if (report_enum->numbered && rsize >= HID_MAX_BUFFER_SIZE)
-		rsize = HID_MAX_BUFFER_SIZE - 1;
-	else if (rsize > HID_MAX_BUFFER_SIZE)
-		rsize = HID_MAX_BUFFER_SIZE;
+	if (hid->ll_driver->max_buffer_size)
+		max_buffer_size = hid->ll_driver->max_buffer_size;
+
+	if (report_enum->numbered && rsize >= max_buffer_size)
+		rsize = max_buffer_size - 1;
+	else if (rsize > max_buffer_size)
+		rsize = max_buffer_size;
 
 	if (csize < rsize) {
 		dbg_hid("report %d is too short, (%d < %d)\n", report->id,
@@ -2387,7 +2395,12 @@ int hid_hw_raw_request(struct hid_device *hdev,
 		       unsigned char reportnum, __u8 *buf,
 		       size_t len, enum hid_report_type rtype, enum hid_class_request reqtype)
 {
-	if (len < 1 || len > HID_MAX_BUFFER_SIZE || !buf)
+	unsigned int max_buffer_size = HID_MAX_BUFFER_SIZE;
+
+	if (hdev->ll_driver->max_buffer_size)
+		max_buffer_size = hdev->ll_driver->max_buffer_size;
+
+	if (len < 1 || len > max_buffer_size || !buf)
 		return -EINVAL;
 
 	return hdev->ll_driver->raw_request(hdev, reportnum, buf, len,
@@ -2406,7 +2419,12 @@ EXPORT_SYMBOL_GPL(hid_hw_raw_request);
  */
 int hid_hw_output_report(struct hid_device *hdev, __u8 *buf, size_t len)
 {
-	if (len < 1 || len > HID_MAX_BUFFER_SIZE || !buf)
+	unsigned int max_buffer_size = HID_MAX_BUFFER_SIZE;
+
+	if (hdev->ll_driver->max_buffer_size)
+		max_buffer_size = hdev->ll_driver->max_buffer_size;
+
+	if (len < 1 || len > max_buffer_size || !buf)
 		return -EINVAL;
 
 	if (hdev->ll_driver->output_report)
drivers/hid/uhid.c +1 -0
index 2a918aeb0af1..59ac757c1d47 100644
@@ -395,6 +395,7 @@ struct hid_ll_driver uhid_hid_driver = {
 	.parse = uhid_hid_parse,
 	.raw_request = uhid_hid_raw_request,
 	.output_report = uhid_hid_output_report,
+	.max_buffer_size = UHID_DATA_MAX,
 };
 EXPORT_SYMBOL_GPL(uhid_hid_driver);
 
drivers/macintosh/windfarm_lm75_sensor.c +2 -2
index 24f0a444d312..9c6febce2376 100644
@@ -33,8 +33,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
index 00c6fe25fcba..2bdb73b34d29 100644
@@ -274,8 +274,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
index c159f297ab92..16ca9dbf1544 100644
@@ -3482,7 +3482,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
index 8f1fff7af6c9..8dbe780dae4e 100644
@@ -126,6 +126,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)
 {
@@ -185,6 +202,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
index 338f238f2043..003672d71a3b 100644
@@ -393,6 +393,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)
@@ -453,21 +471,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));
@@ -2201,6 +2204,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
index 3038386a5afd..1761df8fb7f9 100644
@@ -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
index e05ac92c0650..d73ef262991d 100644
@@ -472,6 +472,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
index 6c32f5c427b5..25d1642c10c3 100644
@@ -3146,7 +3146,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];
@@ -3154,8 +3154,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;
@@ -3164,14 +3166,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++) {
@@ -3185,12 +3186,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_dcb.c +1 -1
index 6be02f9b0b8c..789b99963910 100644
@@ -1372,7 +1372,7 @@ ice_add_dscp_pfc_tlv(struct ice_lldp_org_tlv *tlv, struct ice_dcbx_cfg *dcbcfg)
 	tlv->ouisubtype = htonl(ouisubtype);
 
 	buf[0] = dcbcfg->pfc.pfccap & 0xF;
-	buf[1] = dcbcfg->pfc.pfcena & 0xF;
+	buf[1] = dcbcfg->pfc.pfcena;
 }
 
 /**
drivers/net/ethernet/intel/ice/ice_ethtool.c +4 -2
index a359f1610fc1..8ca61610cec2 100644
@@ -4314,6 +4314,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.
@@ -4337,8 +4339,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/intel/ice/ice_tc_lib.c +4 -4
index 95f392ab9670..ce72d512eddf 100644
@@ -1448,8 +1448,8 @@ ice_parse_cls_flower(struct net_device *filter_dev, struct ice_vsi *vsi,
 		if (match.mask->vlan_priority) {
 			fltr->flags |= ICE_TC_FLWR_FIELD_VLAN_PRIO;
 			headers->vlan_hdr.vlan_prio =
-				cpu_to_be16((match.key->vlan_priority <<
-					     VLAN_PRIO_SHIFT) & VLAN_PRIO_MASK);
+				be16_encode_bits(match.key->vlan_priority,
+						 VLAN_PRIO_MASK);
 		}
 
 		if (match.mask->vlan_tpid)
@@ -1482,8 +1482,8 @@ ice_parse_cls_flower(struct net_device *filter_dev, struct ice_vsi *vsi,
 		if (match.mask->vlan_priority) {
 			fltr->flags |= ICE_TC_FLWR_FIELD_CVLAN_PRIO;
 			headers->cvlan_hdr.vlan_prio =
-				cpu_to_be16((match.key->vlan_priority <<
-					     VLAN_PRIO_SHIFT) & VLAN_PRIO_MASK);
+				be16_encode_bits(match.key->vlan_priority,
+						 VLAN_PRIO_MASK);
 		}
 	}
 
drivers/net/ethernet/marvell/octeontx2/af/rvu.h +5 -0
index 7f0a64731c67..f6c45cf27caf 100644
@@ -866,6 +866,9 @@ int rvu_cpt_lf_teardown(struct rvu *rvu, u16 pcifunc, int blkaddr, int lf,
 			int slot);
 int rvu_cpt_ctx_flush(struct rvu *rvu, u16 pcifunc);
 
+#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);
@@ -881,6 +884,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
index fa280ebd3052..26cfa501f1a1 100644
@@ -198,9 +198,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
 
@@ -1448,6 +1445,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;
@@ -1456,7 +1454,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
index 6b8747ebc08c..bcce42cd1c24 100644
@@ -790,6 +790,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;
 
@@ -813,9 +814,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
index 0e0d536645ac..39f7a7cb2755 100644
@@ -690,6 +690,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)
@@ -705,6 +706,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
index e3123723522e..332329cb1ee0 100644
@@ -566,7 +566,8 @@ static int mtk_mac_finish(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
index 2d9186d32bc0..b481d0d46bb1 100644
@@ -383,6 +383,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/microchip/lan966x/lan966x_police.c +1 -1
index a9aec900d608..7d66fe75cd3b 100644

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

drivers/net/ethernet/netronome/nfp/nfd3/dp.c +4 -3
index 861082c5dbff..ee2e442809c6 100644

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

drivers/net/ethernet/netronome/nfp/nfd3/ipsec.c +23 -2
index e90f8c975903..51087693072c 100644

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

drivers/net/ethernet/netronome/nfp/nfp_net_common.c +4 -0
index 70d7484c82af..1182fa48a3b5 100644

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

drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +1 -0
index 1a5b8dab5e9b..01f7e19a2ca8 100644

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

drivers/net/phy/microchip.c +32 -0
index ccecee2524ce..0b88635f4fbc 100644

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

drivers/net/phy/phy_device.c +1 -7
index 607aa786c8cb..cd246615b0f9 100644

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

drivers/net/phy/smsc.c +3 -11
index ac7481ce2fc1..00d9eff91dcf 100644

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

drivers/net/usb/lan78xx.c +1 -26
index f18ab8e220db..068488890d57 100644

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

drivers/nfc/fdp/i2c.c +4 -0
index 2d53e0f88d2f..1e0f2297f9c6 100644

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

drivers/platform/mellanox/Kconfig +4 -5
index 09c7829e95c4..382793e73a60 100644

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

drivers/platform/x86/Kconfig +2 -1
index 5692385e2d26..1396a839dd8a 100644

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

drivers/platform/x86/dell/dell-wmi-ddv.c +14 -7
index 9cb6ae42dbdc..96fede24877f 100644

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

drivers/scsi/hosts.c +2 -0
index 12346e2297fd..8e34bbf44d1f 100644

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

drivers/scsi/megaraid/megaraid_sas.h +2 -0
index 4919ea54b827..2ef9d41fc6f4 100644

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

drivers/scsi/megaraid/megaraid_sas_fp.c +1 -1
index da1cad1ee123..4463a538102a 100644

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

drivers/scsi/sd.c +6 -1
index 47dafe6b8a66..797d02a6613a 100644

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

drivers/scsi/sd_zbc.c +0 -8
index 62abebbaf2e7..d33da6e1910f 100644

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

drivers/staging/rtl8723bs/include/rtw_security.h +4 -4
index a68b73858462..7587fa888527 100644

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

drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c +18 -14
index 54004f846cf0..84a9f4dd8f95 100644

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

drivers/staging/rtl8723bs/os_dep/ioctl_linux.c +17 -16
index 30374a820496..40a3157fb735 100644

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

drivers/thermal/intel/int340x_thermal/processor_thermal_device_pci.c +4 -1
index bf1b1cdfade4..acc11ad56975 100644

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

fs/btrfs/bio.c +1 -1
index 8affc88b0e0a..e775d68834ea 100644

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

fs/btrfs/block-group.c +14 -2
index 708d843daa72..d628d545ffea 100644

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

fs/btrfs/extent_map.c +6 -1
index be94030e1dfb..138afa955370 100644

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

fs/erofs/decompressor_lzma.c +1 -1
index 091fd5adf818..5cd612a8f858 100644

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

fs/erofs/zdata.c +6 -6
index 5200bb86e264..ccf7c55d477f 100644

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

fs/ext4/fsmap.c +2 -0
index 4493ef0c715e..cdf9bfe10137 100644

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

fs/ext4/inline.c +0 -1
index 2b42ececa46d..1602d74b5eeb 100644

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

fs/ext4/inode.c +6 -1
index 9d9f414f99fe..96517785a9f8 100644

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

fs/ext4/ioctl.c +1 -0
index 8067ccda34e4..8c2b1ff5e695 100644

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

fs/ext4/namei.c +27 -9
index dd28453d6ea3..7cc3918e2f18 100644

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

fs/ext4/page-io.c +6 -5
index beaec6d81074..1e4db96a04e6 100644

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

fs/ext4/xattr.c +3 -0
index 0c6b011a91b3..494994d9a332 100644

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

fs/file.c +1 -0
index c942c89ca4cd..7893ea161d77 100644

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

fs/locks.c +2 -1
index 8f01bee17715..8a881cda3dd2 100644

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

fs/nfsd/vfs.c +2 -0
index 4c3a0d84043c..bb1e85586dfd 100644

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

fs/udf/inode.c +1 -1
index a1af2c2e1c29..7faa0a5af026 100644

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

include/linux/hid.h +3 -0
index 48563dc09e17..0a1ccc68e798 100644

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

include/linux/mhi_ep.h +2 -2
index 478aece17046..f198a8ac7ee7 100644

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

include/linux/pci_ids.h +2 -0
index bc8f484cdcf3..45c3d62e616d 100644

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

include/net/netfilter/nf_tproxy.h +7 -0
index 82d0e41b76f2..faa108b1ba67 100644

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

io_uring/uring_cmd.c +3 -1
index 446a189b78b0..2e4c483075d3 100644

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

kernel/bpf/btf.c +1 -0
index 530e200fbc47..9880faa7e676 100644

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

kernel/fork.c +1 -1
index 9f7fe3541897..8dd0127ddcb8 100644

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

kernel/watch_queue.c +1 -0
index a6f9bdd956c3..f10f403104e7 100644

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

net/caif/caif_usb.c +3 -0
index ebc202ffdd8d..bf61ea4b8132 100644

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

net/core/sock.c +2 -1
index 63680f999bf6..9796a5fa6cea 100644

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

net/ipv4/netfilter/nf_tproxy_ipv4.c +1 -1
index b22b2c745c76..69e331799604 100644

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

net/ipv4/tcp_bpf.c +6 -0
index cf26d65ca389..ebf917511937 100644

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

net/ipv4/udp_bpf.c +3 -0
index e5dc91d0e079..0735d820e413 100644

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

net/ipv6/ila/ila_xlat.c +1 -0
index 47447f0241df..bee45dfeb187 100644

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

net/ipv6/netfilter/nf_tproxy_ipv6.c +1 -1
index 929502e51203..52f828bb5a83 100644

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

net/netfilter/nf_conntrack_core.c +2 -2
index ead11a9c261f..19e3afb23fda 100644

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

net/netfilter/nf_conntrack_netlink.c +7 -7
index 733bb56950c1..d095d3c1ceca 100644

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

net/netfilter/nft_last.c +4 -0
index 7f2bda6641bd..8e6d7eaf9dc8 100644

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

net/netfilter/nft_quota.c +5 -1
index 123578e28917..3ba12a7471b0 100644

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

net/nfc/netlink.c +1 -1
index 348bf561bc9f..b9264e730fd9 100644

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

net/smc/af_smc.c +8 -5
index d9413d43b104..e8018b0fb767 100644

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

net/sunrpc/svc.c +5 -1
index f06622814a95..7f9807374b0f 100644

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

net/tls/tls_device.c +2 -0
index 6c593788dc25..a7cc4f9faac2 100644

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

net/tls/tls_main.c +5 -18
index 3735cb00905d..b32c112984dd 100644

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

net/tls/tls_sw.c +1 -1
index 38dcd9b40102..992092aeebad 100644

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

net/unix/af_unix.c +8 -2
index f0c2293f1d3b..7d17601ceee7 100644

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

net/unix/unix_bpf.c +3 -0
index e9bf15513961..2f9d8271c6ec 100644

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

scripts/checkkconfigsymbols.py +12 -1
index 217d21abc86e..36c920e71313 100755

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

scripts/clang-tools/run-clang-tools.py +14 -7
index 56f2ec8f0f40..3266708a8658 100755

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

scripts/diffconfig +14 -2
index d5da5fa05d1d..43f0f3d273ae 100755

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

tools/perf/builtin-inject.c +1 -0
index f8182417b734..10bb1d494258 100644

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

tools/perf/builtin-stat.c +5 -10
index 9f3e4b257516..387dc9c9e7be 100644

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

tools/perf/util/stat.c +1 -5
index 534d36d26fc3..a07473703c6d 100644

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

tools/perf/util/stat.h +0 -1
index 499c3bf81333..eb8cf33c3ba5 100644

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

tools/perf/util/target.h +12 -0
index daec6cba500d..880f1af7f6ad 100644

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

tools/testing/selftests/netfilter/nft_nat.sh +2 -0
index 924ecb3f1f73..dd40d9f6f259 100755

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.