Skip to contentSkip to conversation

Linux 5.17.4

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Apr 20, 2022 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 5.17.4 kernel.

All users of the 5.17 kernel series must upgrade.

The updated 5.17.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.17.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary

thanks,

greg k-h

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

 Documentation/devicetree/bindings/memory-controllers/synopsys,ddrc-ecc.yaml |    6 
 Documentation/devicetree/bindings/net/snps,dwmac.yaml                       |    6 
 Makefile                                                                    |    2 
 arch/arm/mach-davinci/board-da850-evm.c                                     |    4 
 arch/arm/mach-ep93xx/clock.c                                                |    4 
 arch/arm64/include/asm/kvm_emulate.h                                        |   27 +
 arch/arm64/include/asm/kvm_host.h                                           |   25 +
 arch/arm64/kernel/alternative.c                                             |    6 
 arch/arm64/kernel/cpuidle.c                                                 |    6 
 arch/arm64/kvm/arm.c                                                        |    7 
 arch/arm64/kvm/mmio.c                                                       |    3 
 arch/arm64/kvm/pmu-emul.c                                                   |    2 
 arch/arm64/kvm/reset.c                                                      |   65 ++-
 arch/powerpc/include/asm/static_call.h                                      |    1 
 arch/powerpc/kvm/book3s_hv.c                                                |   41 +-
 arch/riscv/kvm/vcpu.c                                                       |    2 
 arch/riscv/kvm/vcpu_fp.c                                                    |    1 
 arch/x86/include/asm/kvm_host.h                                             |    5 
 arch/x86/include/asm/msr-index.h                                            |    4 
 arch/x86/include/asm/static_call.h                                          |    2 
 arch/x86/kernel/cpu/common.c                                                |    2 
 arch/x86/kernel/cpu/cpu.h                                                   |    5 
 arch/x86/kernel/cpu/intel.c                                                 |    7 
 arch/x86/kernel/cpu/tsx.c                                                   |  104 +++++-
 arch/x86/kvm/mmu/mmu.c                                                      |   20 -
 arch/x86/kvm/x86.c                                                          |   20 +
 arch/x86/net/bpf_jit_comp.c                                                 |    1 
 block/bio.c                                                                 |    2 
 drivers/acpi/processor_idle.c                                               |   15 
 drivers/ata/libata-core.c                                                   |    3 
 drivers/base/dd.c                                                           |    1 
 drivers/block/drbd/drbd_main.c                                              |    1 
 drivers/block/null_blk/main.c                                               |    2 
 drivers/firmware/arm_scmi/clock.c                                           |    3 
 drivers/firmware/arm_scmi/driver.c                                          |    3 
 drivers/gpio/gpio-sim.c                                                     |    4 
 drivers/gpio/gpiolib-acpi.c                                                 |    4 
 drivers/gpu/drm/amd/amdgpu/ObjectID.h                                       |    1 
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c                                  |    4 
 drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c                                     |   20 -
 drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c                                       |    2 
 drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c                                      |    2 
 drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c                                       |    5 
 drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c                                       |    2 
 drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c                                       |    4 
 drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c                                       |    3 
 drivers/gpu/drm/amd/amdkfd/kfd_device.c                                     |   11 
 drivers/gpu/drm/amd/amdkfd/kfd_events.c                                     |    2 
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c                           |    3 
 drivers/gpu/drm/amd/display/dc/core/dc_resource.c                           |    4 
 drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hubbub.c                         |    1 
 drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c                   |   29 +
 drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c                          |   14 
 drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hubbub.c                         |    1 
 drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hwseq.c                          |    5 
 drivers/gpu/drm/amd/display/dc/dcn301/dcn301_hubbub.c                       |    1 
 drivers/gpu/drm/amd/display/dc/dcn31/dcn31_hubbub.c                         |   62 +++
 drivers/gpu/drm/amd/display/dc/dcn31/dcn31_hwseq.c                          |    5 
 drivers/gpu/drm/amd/display/dc/dcn31/dcn31_resource.c                       |    2 
 drivers/gpu/drm/amd/display/dc/dsc/dc_dsc.c                                 |    4 
 drivers/gpu/drm/amd/display/dc/inc/hw/dchubbub.h                            |    2 
 drivers/gpu/drm/amd/display/modules/info_packet/info_packet.c               |    5 
 drivers/gpu/drm/i915/gem/i915_gem_mman.c                                    |    2 
 drivers/gpu/drm/msm/adreno/a6xx_gpu.c                                       |    2 
 drivers/gpu/drm/msm/dp/dp_display.c                                         |    6 
 drivers/gpu/drm/msm/dp/dp_panel.c                                           |   20 -
 drivers/gpu/drm/msm/dp/dp_panel.h                                           |    1 
 drivers/gpu/drm/msm/dsi/dsi_manager.c                                       |    2 
 drivers/gpu/drm/msm/msm_gem.c                                               |    1 
 drivers/gpu/ipu-v3/ipu-di.c                                                 |    5 
 drivers/hv/hv_balloon.c                                                     |   36 ++
 drivers/hv/hv_common.c                                                      |   11 
 drivers/hv/ring_buffer.c                                                    |   11 
 drivers/hv/vmbus_drv.c                                                      |   49 ++
 drivers/i2c/busses/i2c-pasemi-core.c                                        |    6 
 drivers/i2c/i2c-dev.c                                                       |   15 
 drivers/md/dm-integrity.c                                                   |    7 
 drivers/md/dm-ps-historical-service-time.c                                  |   11 
 drivers/media/platform/rockchip/rga/rga.c                                   |    2 
 drivers/media/tuners/si2157.c                                               |   22 -
 drivers/memory/atmel-ebi.c                                                  |   23 +
 drivers/memory/renesas-rpc-if.c                                             |   10 
 drivers/net/dsa/ocelot/felix.c                                              |   23 +
 drivers/net/dsa/ocelot/felix_vsc9959.c                                      |    2 
 drivers/net/dsa/realtek/Kconfig                                             |    1 
 drivers/net/dsa/realtek/realtek-smi-core.c                                  |   48 ++
 drivers/net/dsa/realtek/realtek-smi-core.h                                  |    2 
 drivers/net/dsa/realtek/rtl8365mb.c                                         |   54 +--
 drivers/net/ethernet/broadcom/genet/bcmgenet.c                              |    4 
 drivers/net/ethernet/faraday/ftgmac100.c                                    |   10 
 drivers/net/ethernet/intel/iavf/iavf_main.c                                 |    7 
 drivers/net/ethernet/intel/ice/ice_arfs.c                                   |    9 
 drivers/net/ethernet/intel/ice/ice_lib.c                                    |    5 
 drivers/net/ethernet/intel/ice/ice_main.c                                   |   18 -
 drivers/net/ethernet/mellanox/mlxsw/i2c.c                                   |    1 
 drivers/net/ethernet/micrel/Kconfig                                         |    1 
 drivers/net/ethernet/microchip/lan966x/lan966x_mac.c                        |    6 
 drivers/net/ethernet/microchip/lan966x/lan966x_switchdev.c                  |    3 
 drivers/net/ethernet/myricom/myri10ge/myri10ge.c                            |    6 
 drivers/net/ethernet/stmicro/stmmac/altr_tse_pcs.c                          |    8 
 drivers/net/ethernet/stmicro/stmmac/altr_tse_pcs.h                          |    4 
 drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c                         |   13 
 drivers/net/ethernet/xilinx/xilinx_axienet_main.c                           |   13 
 drivers/net/macvlan.c                                                       |    8 
 drivers/net/mdio/fwnode_mdio.c                                              |    5 
 drivers/net/slip/slip.c                                                     |    2 
 drivers/net/tun.c                                                           |    2 
 drivers/net/usb/aqc111.c                                                    |    9 
 drivers/net/veth.c                                                          |    2 
 drivers/net/wireless/ath/ath11k/mac.c                                       |   22 -
 drivers/net/wireless/ath/ath9k/main.c                                       |    2 
 drivers/net/wireless/ath/ath9k/xmit.c                                       |   33 +
 drivers/pci/controller/pci-hyperv.c                                         |    9 
 drivers/perf/fsl_imx8_ddr_perf.c                                            |    2 
 drivers/regulator/wm8994-regulator.c                                        |   42 ++
 drivers/scsi/ibmvscsi_tgt/ibmvscsi_tgt.c                                    |    2 
 drivers/scsi/lpfc/lpfc.h                                                    |    7 
 drivers/scsi/lpfc/lpfc_crtn.h                                               |    3 
 drivers/scsi/lpfc/lpfc_hbadisc.c                                            |  120 +++++--
 drivers/scsi/lpfc/lpfc_init.c                                               |   88 +++--
 drivers/scsi/lpfc/lpfc_nvme.c                                               |   27 +
 drivers/scsi/lpfc/lpfc_sli.c                                                |   65 ++-
 drivers/scsi/megaraid/megaraid_sas.h                                        |    3 
 drivers/scsi/megaraid/megaraid_sas_base.c                                   |    7 
 drivers/scsi/mpt3sas/mpt3sas_config.c                                       |    9 
 drivers/scsi/mvsas/mv_init.c                                                |    1 
 drivers/scsi/pm8001/pm80xx_hwi.c                                            |   33 +
 drivers/scsi/scsi_transport_iscsi.c                                         |  168 ++++++----
 drivers/spi/spi-cadence-quadspi.c                                           |   46 --
 drivers/target/target_core_user.c                                           |    3 
 drivers/vfio/pci/vfio_pci_core.c                                            |  124 ++++---
 fs/binfmt_elf.c                                                             |    4 
 fs/btrfs/block-group.c                                                      |   40 +-
 fs/btrfs/block-group.h                                                      |    4 
 fs/btrfs/compression.c                                                      |    8 
 fs/btrfs/disk-io.c                                                          |    5 
 fs/btrfs/extent-tree.c                                                      |    2 
 fs/btrfs/extent_io.c                                                        |    5 
 fs/btrfs/file.c                                                             |   13 
 fs/btrfs/inode.c                                                            |    7 
 fs/btrfs/volumes.c                                                          |    2 
 fs/cachefiles/namei.c                                                       |   33 +
 fs/cachefiles/xattr.c                                                       |    2 
 fs/cifs/cifsfs.c                                                            |   28 -
 fs/cifs/link.c                                                              |    3 
 fs/io-wq.h                                                                  |    1 
 fs/io_uring.c                                                               |   66 ++-
 fs/nfsd/filecache.c                                                         |   18 -
 include/asm-generic/mshyperv.h                                              |    1 
 include/asm-generic/tlb.h                                                   |   10 
 include/linux/kfence.h                                                      |   24 +
 include/linux/static_call.h                                                 |   20 +
 include/linux/sunrpc/svc.h                                                  |    1 
 include/linux/vfio_pci_core.h                                               |    2 
 include/net/flow_dissector.h                                                |    2 
 include/scsi/scsi_transport_iscsi.h                                         |    2 
 include/sound/core.h                                                        |    1 
 include/sound/memalloc.h                                                    |    5 
 include/trace/events/sunrpc.h                                               |    7 
 include/uapi/linux/io_uring.h                                               |    1 
 include/uapi/linux/stddef.h                                                 |    4 
 kernel/cpu.c                                                                |   36 +-
 kernel/dma/direct.h                                                         |    3 
 kernel/irq/affinity.c                                                       |    5 
 kernel/smp.c                                                                |    2 
 kernel/time/tick-sched.c                                                    |    2 
 kernel/time/timer.c                                                         |   11 
 mm/hugetlb.c                                                                |   17 -
 mm/kfence/core.c                                                            |   21 -
 mm/kfence/kfence.h                                                          |   21 +
 mm/kfence/report.c                                                          |   47 ++
 mm/kmemleak.c                                                               |    8 
 mm/page_alloc.c                                                             |    2 
 mm/page_io.c                                                                |   54 ---
 mm/secretmem.c                                                              |   17 +
 mm/slab.c                                                                   |    2 
 mm/slab.h                                                                   |    2 
 mm/slab_common.c                                                            |    9 
 mm/slob.c                                                                   |    2 
 mm/slub.c                                                                   |    2 
 net/ax25/af_ax25.c                                                          |    5 
 net/core/flow_dissector.c                                                   |    1 
 net/dsa/dsa2.c                                                              |   23 -
 net/ipv6/ip6_output.c                                                       |    2 
 net/mac80211/debugfs_sta.c                                                  |    2 
 net/netfilter/nf_tables_api.c                                               |    2 
 net/netfilter/nft_socket.c                                                  |    7 
 net/nfc/nci/core.c                                                          |    4 
 net/sched/cls_api.c                                                         |    2 
 net/sched/cls_flower.c                                                      |   18 -
 net/sched/sch_taprio.c                                                      |    3 
 net/sctp/sm_statefuns.c                                                     |    6 
 net/sctp/socket.c                                                           |    2 
 net/smc/smc_clc.c                                                           |    6 
 net/smc/smc_pnet.c                                                          |    5 
 net/sunrpc/svc_xprt.c                                                       |    3 
 net/sunrpc/xprtrdma/svc_rdma_recvfrom.c                                     |    2 
 net/wireless/nl80211.c                                                      |    3 
 net/wireless/scan.c                                                         |    2 
 scripts/gcc-plugins/latent_entropy_plugin.c                                 |   44 +-
 sound/core/init.c                                                           |   28 +
 sound/core/memalloc.c                                                       |  111 ++++++
 sound/core/pcm_misc.c                                                       |    2 
 sound/drivers/mtpav.c                                                       |    4 
 sound/isa/galaxy/galaxy.c                                                   |    7 
 sound/isa/sc6000.c                                                          |    7 
 sound/pci/ad1889.c                                                          |   10 
 sound/pci/ali5451/ali5451.c                                                 |   10 
 sound/pci/als300.c                                                          |    8 
 sound/pci/als4000.c                                                         |   10 
 sound/pci/atiixp.c                                                          |   10 
 sound/pci/atiixp_modem.c                                                    |   10 
 sound/pci/au88x0/au88x0.c                                                   |    8 
 sound/pci/aw2/aw2-alsa.c                                                    |    8 
 sound/pci/azt3328.c                                                         |    8 
 sound/pci/bt87x.c                                                           |   10 
 sound/pci/ca0106/ca0106_main.c                                              |   10 
 sound/pci/cmipci.c                                                          |    8 
 sound/pci/cs4281.c                                                          |   10 
 sound/pci/cs5535audio/cs5535audio.c                                         |   10 
 sound/pci/echoaudio/echoaudio.c                                             |    9 
 sound/pci/emu10k1/emu10k1x.c                                                |   10 
 sound/pci/ens1370.c                                                         |   10 
 sound/pci/es1938.c                                                          |   10 
 sound/pci/es1968.c                                                          |   10 
 sound/pci/fm801.c                                                           |   10 
 sound/pci/hda/patch_realtek.c                                               |    2 
 sound/pci/ice1712/ice1724.c                                                 |   10 
 sound/pci/intel8x0.c                                                        |   10 
 sound/pci/intel8x0m.c                                                       |   10 
 sound/pci/korg1212/korg1212.c                                               |    8 
 sound/pci/lola/lola.c                                                       |   10 
 sound/pci/lx6464es/lx6464es.c                                               |    8 
 sound/pci/maestro3.c                                                        |    8 
 sound/pci/nm256/nm256.c                                                     |    2 
 sound/pci/oxygen/oxygen_lib.c                                               |   12 
 sound/pci/riptide/riptide.c                                                 |    8 
 sound/pci/rme32.c                                                           |    8 
 sound/pci/rme96.c                                                           |   10 
 sound/pci/rme9652/hdsp.c                                                    |    8 
 sound/pci/rme9652/hdspm.c                                                   |    8 
 sound/pci/rme9652/rme9652.c                                                 |    8 
 sound/pci/sis7019.c                                                         |   14 
 sound/pci/sonicvibes.c                                                      |   10 
 sound/pci/via82xx.c                                                         |   10 
 sound/pci/via82xx_modem.c                                                   |   10 
 sound/usb/pcm.c                                                             |   16 
 sound/x86/intel_hdmi_audio.c                                                |    7 
 tools/arch/x86/include/asm/msr-index.h                                      |    4 
 tools/perf/util/parse-events.c                                              |    5 
 tools/testing/selftests/kvm/include/riscv/processor.h                       |    4 
 tools/testing/selftests/kvm/lib/riscv/processor.c                           |    2 
 tools/testing/selftests/mqueue/mq_perf_tests.c                              |   25 +
 253 files changed, 2315 insertions(+), 930 deletions(-)

Adrian Hunter (1):
perf tools: Fix misleading add event PMU debug message

Ajish Koshy (2):

      scsi: pm80xx: Mask and unmask upper interrupt vectors 32-63
      scsi: pm80xx: Enable upper inbound, outbound queues

Alex Deucher (1):
drm/amdgpu/gmc: use PCI BARs for APUs in passthrough

Alexander Lobakin (1):
ice: arfs: fix use-after-free when freeing @rx_cpu_rmap

Alexander Sverdlin (1):
ep93xx: clock: Fix UAF in ep93xx_clk_register_gate()

Alexey Galakhov (1):
scsi: mvsas: Add PCI ID of RocketRaid 2640

Alvin Šipraga (3):
net: dsa: realtek: allow subdrivers to externally lock regmap
net: dsa: realtek: rtl8365mb: serialize indirect PHY register access
net: dsa: realtek: make interface drivers depend on OF

Andrea Parri (Microsoft) (1):
Drivers: hv: vmbus: Deactivate sysctl_record_panic_msg by default in isolated guests

Andrew Morton (2):
revert "fs/binfmt_elf: fix PT_LOAD p_align values for loaders" revert "fs/binfmt_elf: use PT_LOAD p_align values for static PIE"

Andy Chiu (1):
net: axienet: setup mdio unconditionally

Andy Shevchenko (1):
i2c: dev: check return value when calling dev_set_name()

Anilkumar Kolli (1):
Revert "ath11k: mesh: add support for 256 bitmap in blockack frames in 11ax"

Anna-Maria Behnsen (1):
timers: Fix warning condition in __run_timers()

Antoine Tenart (2):
netfilter: nf_tables: nft_parse_register can return a negative value
tun: annotate access to queue->trans_start

Anup Patel (3):
RISC-V: KVM: Don't clear hgatp CSR in kvm_arch_vcpu_put()
KVM: selftests: riscv: Set PTE A and D bits in VS-stage page table
KVM: selftests: riscv: Fix alignment of the guest_hang() function

Athira Rajeev (1):
testing/selftests/mqueue: Fix mq_perf_tests to free the allocated cpu set

Aurabindo Pillai (1):
drm/amd: Add USBC connector ID

Axel Rasmussen (1):
mm/secretmem: fix panic when growing a memfd_secret

Bartosz Golaszewski (1):
gpio: sim: fix setting and getting multiple lines

Ben Greear (1):
mac80211: fix ht_capa printout in debugfs

Benedikt Spranger (1):
net/sched: taprio: Check if socket flags are valid

Boqun Feng (1):
Drivers: hv: balloon: Disable balloon and hot-add accordingly

Borislav Petkov (1):
perf/imx_ddr: Fix undefined behavior due to shift overflowing the constant

Chandrakanth patil (1):
scsi: megaraid_sas: Target with invalid LUN ID is deleted during scan

Chao Gao (1):
dma-direct: avoid redundant memory sync for swiotlb

Charlene Liu (1):
drm/amd/display: fix audio format not updated after edid updated

Chiawen Huang (1):
drm/amd/display: FEC check in timing validation

Chris Park (1):
drm/amd/display: Correct Slice reset calculation

Christian Lamparter (1):
ata: libata-core: Disable READ LOG DMA EXT for Samsung 840 EVOs

Christoph Böhmwalder (1):
drbd: set QUEUE_FLAG_STABLE_WRITES

Christophe Leroy (1):
static_call: Properly initialise DEFINE_STATIC_CALL_RET0()

Chuck Lever (2):
SUNRPC: Fix the svc_deferred_event trace class
SUNRPC: Fix NFSD's request deferral on RDMA transports

Cristian Marussi (2):
firmware: arm_scmi: Remove clear channel call on the TX channel
firmware: arm_scmi: Fix sorting of retrieved clock rates

Darrick J. Wong (1):
btrfs: fix fallocate to use file_modified to update permissions consistently

Dave Wysochanski (1):
cachefiles: Fix KASAN slab-out-of-bounds in cachefiles_set_volume_xattr

Dennis Zhou (1):
btrfs: fix btrfs_submit_compressed_write cgroup attribution

Dinh Nguyen (1):
net: ethernet: stmmac: fix altr_tse_pcs function when using a fixed-link

Dongjin Yang (1):
dt-bindings: net: snps: remove duplicate name

Duoming Zhou (2):
drivers: net: slip: fix NPD bug in sl_tx_timeout()
ax25: Fix UAF bugs in ax25 timers

Dylan Hung (1):
net: ftgmac100: access hardware register after clock ready

Dylan Yudaken (3):
io_uring: move io_uring_rsrc_update2 validation
io_uring: verify that resv2 is 0 in io_uring_rsrc_update2
io_uring: verify pad field is 0 in io_get_ext_arg

Fabio M. De Francesco (1):
ALSA: pcm: Test for "silence" field in struct "pcm_format_data"

Filipe Manana (1):
btrfs: remove no longer used counter when reading data page

Florian Westphal (1):
netfilter: nft_socket: make cgroup match work in input too

Greg Kroah-Hartman (1):

      Linux 5.17.4

Guchun Chen (1):
drm/amdgpu: conduct a proper cleanup of PDB bo

Guillaume Nault (1):
veth: Ensure eth header is in skb's linear part

Harshit Mogalapalli (1):
cifs: potential buffer overflow in handling symlinks

Heiko Stuebner (1):
RISC-V: KVM: include missing hwcap.h into vcpu_fp

Horatiu Vultur (2):
net: lan966x: Fix when a port's upper is changed.
net: lan966x: Stop processing the MAC entry is port is wrong.

James Smart (3):
scsi: lpfc: Improve PCI EEH Error and Recovery Handling
scsi: lpfc: Fix unload hang after back to back PCI EEH faults
scsi: lpfc: Fix queue failures when recovering from PCI parity error

Jason A. Donenfeld (1):
gcc-plugins: latent_entropy: use /dev/urandom

Jason Gunthorpe (1):
vfio/pci: Fix vf_token mechanism when device-specific VF drivers are used

Jeffle Xu (1):
cachefiles: unmark inode in use in error path

Jens Axboe (3):
io_uring: flag the fact that linked file assignment is sane
io_uring: stop using io_wq_work as an fd placeholder
io_uring: abort file assignment prior to assigning creds

Jeremy Linton (1):
net: bcmgenet: Revert "Use stronger register read/writes to assure ordering"

Jia-Ju Bai (1):
btrfs: fix root ref counts in error handling in btrfs_get_root_ref

Joey Gouly (1):
arm64: alternatives: mark patch_alternative() as noinstr

Johan Hovold (1):
memory: renesas-rpc-if: fix platform-device leak in error path

Johannes Berg (1):

      nl80211: correctly check NL80211_ATTR_REG_ALPHA2 size

Jonathan Bakker (1):
regulator: wm8994: Add an off-on delay for WM8994 variant

Josef Bacik (1):
btrfs: do not warn for free space inode in cow_file_range

Juergen Gross (1):
mm, page_alloc: fix build_zonerefs_node()

Kai-Heng Feng (1):
drm/amdgpu: Ensure HDA function is suspended before ASIC reset

Karsten Graul (2):
net/smc: use memcpy instead of snprintf to avoid out of bounds read net/smc: Fix NULL pointer dereference in smc_pnet_find_ib()

Khazhismel Kumykov (1):
dm mpath: only use ktime_get_ns() in historical selector

Kuogee Hsieh (1):
drm/msm/dp: add fail safe mode outside of event_mutex context

Kyle Copperfield (1):
media: rockchip/rga: do proper error checking in probe

Leo (Hanghong) Ma (1):
drm/amd/display: Update VTEM Infopacket definition

Leo Ruan (1):
gpu: ipu-v3: Fix dev_dbg frequency output

Lin Ma (1):
nfc: nci: add flush_workqueue to prevent uaf

Linus Torvalds (1):
gpiolib: acpi: use correct format characters

Marc Zyngier (1):
KVM: arm64: Generalise VM features into a set of flags

Marcelo Ricardo Leitner (1):
net/sched: fix initialization order when updating chain 0 head

Marcin Kozlowski (1):
net: usb: aqc111: Fix out-of-bounds accesses in RX fixup

Marco Elver (1):
mm, kfence: support kmem_dump_obj() for KFENCE objects

Mario Limonciello (2):
cpuidle: PSCI: Move the has_lpi check to the beginning of the function
ACPI: processor idle: Check for architectural support for LPI

Martin Leung (1):
drm/amd/display: Revert FEC check in validation

Martin Povišer (1):
i2c: pasemi: Wait for write xfers to finish

Martin Willi (1):
macvlan: Fix leaking skb in source mode with nodst option

Mateusz Palczewski (1):
Revert "iavf: Fix deadlock occurrence during resetting VF interface"

Matt Roper (1):
drm/i915: Sunset igpu legacy mmap support based on GRAPHICS_VER_FULL

Matthias Schiffer (1):
spi: cadence-quadspi: fix protocol setup for non-1-1-X operations

Melissa Wen (1):
drm/amd/display: don't ignore alpha property on pre-multiplied mode

Miaoqian Lin (1):
memory: atmel-ebi: Fix missing of_node_put in atmel_ebi_probe

Michael Kelley (3):
Drivers: hv: vmbus: Propagate VMbus coherence to each VMbus device
PCI: hv: Propagate coherence from VMbus device to PCI device
Drivers: hv: vmbus: Prevent load re-ordering when reading ring buffer

Michael Walle (1):
net: dsa: felix: suppress -EPROBE_DEFER errors

Mike Christie (5):
scsi: iscsi: Move iscsi_ep_disconnect()
scsi: iscsi: Fix offload conn cleanup when iscsid restarts
scsi: iscsi: Fix endpoint reuse regression
scsi: iscsi: Fix conn cleanup and stop race during iscsid restart
scsi: iscsi: Fix unbound endpoint error handling

Mike Kravetz (1):
hugetlb: do not demote poisoned hugetlb pages

Mikulas Patocka (1):
dm integrity: fix memory corruption when tag_size is less than digest size

Minchan Kim (1):
mm: fix unexpected zeroed page mapping with zram swap

Ming Lei (2):
block: fix offset/size check in bio_trim()
block: null_blk: end timed out poll request

Nadav Amit (1):
smp: Fix offline cpu check in flush_smp_call_function_queue()

Naohiro Aota (4):
btrfs: release correct delalloc amount in direct IO write path
btrfs: return allocated block group from do_chunk_alloc()
btrfs: zoned: activate block group only for extent allocation
btrfs: mark resumed async balance as writing

Nathan Chancellor (2):
btrfs: remove unused variable in btrfs_{start,write}_dirty_block_groups()
ARM: davinci: da850-evm: Avoid NULL pointer dereference

Nicholas Kazlauskas (2):
drm/amd/display: Add pstate verification and recovery for DCN31 drm/amd/display: Fix p-state allow debug index on dcn31

Nicholas Piggin (1):
KVM: PPC: Book3S HV P9: Fix "lost kick" race

Nicolas Dichtel (1):
ipv6: fix panic when forwarding a pkt with no in6 dev

Patrick Wang (1):
mm: kmemleak: take a full lowmem check in kmemleak_*_phys()

Paul Gortmaker (1):
tick/nohz: Use WARN_ON_ONCE() to prevent console saturation

Pavel Begunkov (6):
io_uring: fix assign file locking issue
io_uring: zero tag on rsrc removal
io_uring: use nospec annotation for more indexes
io_uring: use right issue_flags for splice/tee
io_uring: fix poll file assign deadlock
io_uring: fix poll error reporting

Pawan Gupta (2):
x86/tsx: Use MSR_TSX_CTRL to clear CPUID bits x86/tsx: Disable TSX development mode at boot

Peter Zijlstra (1):
x86,bpf: Avoid IBT objtool warning

Petr Malat (1):
sctp: Initialize daddr on peeled off socket

Piotr Chmura (1):

      media: si2157: unknown chip version Si2147-A30 ROM 0x50

QintaoShen (1):
drm/amdkfd: Check for potential null return of kmalloc_array()

Rameshkumar Sundaram (1):
cfg80211: hold bss_lock while updating nontrans_list

Randy Dunlap (1):
net: micrel: fix KS8851_MLL Kconfig

Rei Yamamoto (1):
genirq/affinity: Consider that CPUs on nodes can be unbalanced

Reiji Watanabe (1):
KVM: arm64: mixed-width check should be skipped for uninitialized vCPUs

Rob Clark (2):
drm/msm: Add missing put_task_struct() in debugfs path drm/msm: Fix range size vs end confusion

Roman Li (2):
drm/amd/display: Enable power gating before init_pipes drm/amd/display: Fix allocate_mst_payload assert on resume

Ronnie Sahlberg (1):
cifs: verify that tcon is valid before dereference in cifs_kill_sb

Sean Christopherson (1):
KVM: x86/mmu: Resolve nx_huge_pages when kvm.ko is loaded

Sherry Sun (1):
dt-bindings: memory: snps,ddrc-3.80a compatible also need interrupts

Shyam Prasad N (1):
cifs: release cached dentries only if mount is complete

Sreekanth Reddy (1):
scsi: mpt3sas: Fail reset operation if config request timed out

Stephen Boyd (1):
drm/msm/dsi: Use connector directly in msm_dsi_manager_connector_init()

Steve Capper (1):
tlb: hugetlb: Add more sizes to tlb_remove_huge_tlb_entry

Steven Price (1):
cpu/hotplug: Remove the 'cpu' member of cpuhp_cpu_state

Tadeusz Struk (1):
uapi/linux/stddef.h: Add include guards

Takashi Iwai (45):
ALSA: core: Add snd_card_free_on_error() helper
ALSA: sis7019: Fix the missing error handling
ALSA: ali5451: Fix the missing snd_card_free() call at probe error
ALSA: als300: Fix the missing snd_card_free() call at probe error
ALSA: als4000: Fix the missing snd_card_free() call at probe error
ALSA: atiixp: Fix the missing snd_card_free() call at probe error
ALSA: au88x0: Fix the missing snd_card_free() call at probe error
ALSA: aw2: Fix the missing snd_card_free() call at probe error
ALSA: azt3328: Fix the missing snd_card_free() call at probe error
ALSA: bt87x: Fix the missing snd_card_free() call at probe error
ALSA: ca0106: Fix the missing snd_card_free() call at probe error
ALSA: cmipci: Fix the missing snd_card_free() call at probe error
ALSA: cs4281: Fix the missing snd_card_free() call at probe error
ALSA: cs5535audio: Fix the missing snd_card_free() call at probe error
ALSA: echoaudio: Fix the missing snd_card_free() call at probe error
ALSA: emu10k1x: Fix the missing snd_card_free() call at probe error
ALSA: ens137x: Fix the missing snd_card_free() call at probe error
ALSA: es1938: Fix the missing snd_card_free() call at probe error
ALSA: es1968: Fix the missing snd_card_free() call at probe error
ALSA: fm801: Fix the missing snd_card_free() call at probe error
ALSA: galaxy: Fix the missing snd_card_free() call at probe error
ALSA: hdsp: Fix the missing snd_card_free() call at probe error
ALSA: hdspm: Fix the missing snd_card_free() call at probe error
ALSA: ice1724: Fix the missing snd_card_free() call at probe error
ALSA: intel8x0: Fix the missing snd_card_free() call at probe error
ALSA: intel_hdmi: Fix the missing snd_card_free() call at probe error
ALSA: korg1212: Fix the missing snd_card_free() call at probe error
ALSA: lola: Fix the missing snd_card_free() call at probe error
ALSA: lx6464es: Fix the missing snd_card_free() call at probe error
ALSA: maestro3: Fix the missing snd_card_free() call at probe error
ALSA: oxygen: Fix the missing snd_card_free() call at probe error
ALSA: riptide: Fix the missing snd_card_free() call at probe error
ALSA: rme32: Fix the missing snd_card_free() call at probe error
ALSA: rme9652: Fix the missing snd_card_free() call at probe error
ALSA: rme96: Fix the missing snd_card_free() call at probe error
ALSA: sc6000: Fix the missing snd_card_free() call at probe error
ALSA: sonicvibes: Fix the missing snd_card_free() call at probe error
ALSA: via82xx: Fix the missing snd_card_free() call at probe error
ALSA: usb-audio: Cap upper limits of buffer/period bytes for implicit fb
ALSA: memalloc: Add fallback SG-buffer allocations for x86
ALSA: nm256: Don't call card private_free at probe error path
ALSA: ad1889: Fix the missing snd_card_free() call at probe error
ALSA: mtpav: Don't call card private_free at probe error path
ALSA: usb-audio: Increase max buffer size
ALSA: usb-audio: Limit max buffer and period sizes per time

Tao Jin (1):
ALSA: hda/realtek: add quirk for Lenovo Thinkpad X12 speakers

Tianci Yin (1):
drm/amdgpu/vcn: improve vcn dpg stop procedure

Tim Crawford (1):
ALSA: hda/realtek: Add quirk for Clevo PD50PNT

Toke Høiland-Jørgensen (2):
ath9k: Properly clear TX status area before reporting to mac80211
ath9k: Fix usage of driver-private space in tx_info

Tomasz Moń (1):
drm/amdgpu: Enable gfxoff quirk on MacBook Pro

Trond Myklebust (1):
nfsd: Fix a write performance regression

Tushar Patel (1):
drm/amdkfd: Fix Incorrect VMIDs passed to HWS

Tyrel Datwyler (1):
scsi: ibmvscsis: Increase INITIAL_SRP_LIMIT to 1024

Vadim Pasternak (1):
mlxsw: i2c: Fix initialization error flow

Vlad Buslov (1):
net/sched: flower: fix parsing of ethertype following VLAN header

Vladimir Oltean (3):
net: mdio: don't defer probe forever if PHY IRQ provider is missing
net: dsa: felix: fix tagging protocol changes with multiple CPU ports Revert "net: dsa: setup master before ports"

Xiaoguang Wang (1):
scsi: target: tcmu: Fix possible page UAF

Xiaomeng Tong (1):
myri10ge: fix an incorrect free for skb in myri10ge_sw_tso

Xin Long (1):
sctp: use the correct skb for security_sctp_assoc_request

author maintainer
#1 lore raw
Documentation/devicetree/bindings/memory-controllers/synopsys,ddrc-ecc.yaml +4 -2
index fb7ae38a9c86..e3bc6ebce090 100644
@@ -24,9 +24,9 @@ description: |
 properties:
   compatible:
     enum:
+      - snps,ddrc-3.80a
       - xlnx,zynq-ddrc-a05
       - xlnx,zynqmp-ddrc-2.40a
-      - snps,ddrc-3.80a
 
   interrupts:
     maxItems: 1
@@ -43,7 +43,9 @@ allOf:
       properties:
         compatible:
           contains:
-            const: xlnx,zynqmp-ddrc-2.40a
+            enum:
+              - snps,ddrc-3.80a
+              - xlnx,zynqmp-ddrc-2.40a
     then:
       required:
         - interrupts
Documentation/devicetree/bindings/net/snps,dwmac.yaml +2 -4
index 7eb43707e601..c421e4e306a1 100644
@@ -53,20 +53,18 @@ properties:
         - allwinner,sun8i-r40-gmac
         - allwinner,sun8i-v3s-emac
         - allwinner,sun50i-a64-emac
-        - loongson,ls2k-dwmac
-        - loongson,ls7a-dwmac
         - amlogic,meson6-dwmac
         - amlogic,meson8b-dwmac
         - amlogic,meson8m2-dwmac
         - amlogic,meson-gxbb-dwmac
         - amlogic,meson-axg-dwmac
-        - loongson,ls2k-dwmac
-        - loongson,ls7a-dwmac
         - ingenic,jz4775-mac
         - ingenic,x1000-mac
         - ingenic,x1600-mac
         - ingenic,x1830-mac
         - ingenic,x2000-mac
+        - loongson,ls2k-dwmac
+        - loongson,ls7a-dwmac
         - rockchip,px30-gmac
         - rockchip,rk3128-gmac
         - rockchip,rk3228-gmac
Makefile +1 -1
index 02fbef1a0213..d7747e4c216e 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 5
 PATCHLEVEL = 17
-SUBLEVEL = 3
+SUBLEVEL = 4
 EXTRAVERSION =
 NAME = Superb Owl
 
arch/arm/mach-davinci/board-da850-evm.c +3 -1
index 428012687a80..7f7f6bae21c2 100644
@@ -1101,11 +1101,13 @@ static int __init da850_evm_config_emac(void)
 	int ret;
 	u32 val;
 	struct davinci_soc_info *soc_info = &davinci_soc_info;
-	u8 rmii_en = soc_info->emac_pdata->rmii_en;
+	u8 rmii_en;
 
 	if (!machine_is_davinci_da850_evm())
 		return 0;
 
+	rmii_en = soc_info->emac_pdata->rmii_en;
+
 	cfg_chip3_base = DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP3_REG);
 
 	val = __raw_readl(cfg_chip3_base);
arch/arm/mach-ep93xx/clock.c +3 -1
index cc75087134d3..28e0ae6e890e 100644
@@ -148,8 +148,10 @@ static struct clk_hw *ep93xx_clk_register_gate(const char *name,
 	psc->lock = &clk_lock;
 
 	clk = clk_register(NULL, &psc->hw);
-	if (IS_ERR(clk))
+	if (IS_ERR(clk)) {
 		kfree(psc);
+		return ERR_CAST(clk);
+	}
 
 	return &psc->hw;
 }
arch/arm64/include/asm/kvm_emulate.h +19 -8
index d62405ce3e6d..7496deab025a 100644
@@ -43,10 +43,22 @@ void kvm_inject_pabt(struct kvm_vcpu *vcpu, unsigned long addr);
 
 void kvm_vcpu_wfi(struct kvm_vcpu *vcpu);
 
+#if defined(__KVM_VHE_HYPERVISOR__) || defined(__KVM_NVHE_HYPERVISOR__)
 static __always_inline bool vcpu_el1_is_32bit(struct kvm_vcpu *vcpu)
 {
 	return !(vcpu->arch.hcr_el2 & HCR_RW);
 }
+#else
+static __always_inline bool vcpu_el1_is_32bit(struct kvm_vcpu *vcpu)
+{
+	struct kvm *kvm = vcpu->kvm;
+
+	WARN_ON_ONCE(!test_bit(KVM_ARCH_FLAG_REG_WIDTH_CONFIGURED,
+			       &kvm->arch.flags));
+
+	return test_bit(KVM_ARCH_FLAG_EL1_32BIT, &kvm->arch.flags);
+}
+#endif
 
 static inline void vcpu_reset_hcr(struct kvm_vcpu *vcpu)
 {
@@ -72,15 +84,14 @@ static inline void vcpu_reset_hcr(struct kvm_vcpu *vcpu)
 		vcpu->arch.hcr_el2 |= HCR_TVM;
 	}
 
-	if (test_bit(KVM_ARM_VCPU_EL1_32BIT, vcpu->arch.features))
+	if (vcpu_el1_is_32bit(vcpu))
 		vcpu->arch.hcr_el2 &= ~HCR_RW;
-
-	/*
-	 * TID3: trap feature register accesses that we virtualise.
-	 * For now this is conditional, since no AArch32 feature regs
-	 * are currently virtualised.
-	 */
-	if (!vcpu_el1_is_32bit(vcpu))
+	else
+		/*
+		 * TID3: trap feature register accesses that we virtualise.
+		 * For now this is conditional, since no AArch32 feature regs
+		 * are currently virtualised.
+		 */
 		vcpu->arch.hcr_el2 |= HCR_TID3;
 
 	if (cpus_have_const_cap(ARM64_MISMATCHED_CACHE_TYPE) ||
arch/arm64/include/asm/kvm_host.h +19 -6
index 8234626a945a..b5ae92f77c61 100644
@@ -122,7 +122,22 @@ struct kvm_arch {
 	 * should) opt in to this feature if KVM_CAP_ARM_NISV_TO_USER is
 	 * supported.
 	 */
-	bool return_nisv_io_abort_to_user;
+#define KVM_ARCH_FLAG_RETURN_NISV_IO_ABORT_TO_USER	0
+	/* Memory Tagging Extension enabled for the guest */
+#define KVM_ARCH_FLAG_MTE_ENABLED			1
+	/* At least one vCPU has ran in the VM */
+#define KVM_ARCH_FLAG_HAS_RAN_ONCE			2
+	/*
+	 * The following two bits are used to indicate the guest's EL1
+	 * register width configuration. A value of KVM_ARCH_FLAG_EL1_32BIT
+	 * bit is valid only when KVM_ARCH_FLAG_REG_WIDTH_CONFIGURED is set.
+	 * Otherwise, the guest's EL1 register width has not yet been
+	 * determined yet.
+	 */
+#define KVM_ARCH_FLAG_REG_WIDTH_CONFIGURED		3
+#define KVM_ARCH_FLAG_EL1_32BIT				4
+
+	unsigned long flags;
 
 	/*
 	 * VM-wide PMU filter, implemented as a bitmap and big enough for
@@ -133,10 +148,6 @@ struct kvm_arch {
 
 	u8 pfr0_csv2;
 	u8 pfr0_csv3;
-
-	/* Memory Tagging Extension enabled for the guest */
-	bool mte_enabled;
-	bool ran_once;
 };
 
 struct kvm_vcpu_fault_info {
@@ -792,7 +803,9 @@ bool kvm_arm_vcpu_is_finalized(struct kvm_vcpu *vcpu);
 #define kvm_arm_vcpu_sve_finalized(vcpu) \
 	((vcpu)->arch.flags & KVM_ARM64_VCPU_SVE_FINALIZED)
 
-#define kvm_has_mte(kvm) (system_supports_mte() && (kvm)->arch.mte_enabled)
+#define kvm_has_mte(kvm)					\
+	(system_supports_mte() &&				\
+	 test_bit(KVM_ARCH_FLAG_MTE_ENABLED, &(kvm)->arch.flags))
 #define kvm_vcpu_has_pmu(vcpu)					\
 	(test_bit(KVM_ARM_VCPU_PMU_V3, (vcpu)->arch.features))
 
arch/arm64/kernel/alternative.c +3 -3
index 3fb79b76e9d9..7bbf5104b7b7 100644
@@ -42,7 +42,7 @@ bool alternative_is_applied(u16 cpufeature)
 /*
  * Check if the target PC is within an alternative block.
  */
-static bool branch_insn_requires_update(struct alt_instr *alt, unsigned long pc)
+static __always_inline bool branch_insn_requires_update(struct alt_instr *alt, unsigned long pc)
 {
 	unsigned long replptr = (unsigned long)ALT_REPL_PTR(alt);
 	return !(pc >= replptr && pc <= (replptr + alt->alt_len));
@@ -50,7 +50,7 @@ static bool branch_insn_requires_update(struct alt_instr *alt, unsigned long pc)
 
 #define align_down(x, a)	((unsigned long)(x) & ~(((unsigned long)(a)) - 1))
 
-static u32 get_alt_insn(struct alt_instr *alt, __le32 *insnptr, __le32 *altinsnptr)
+static __always_inline u32 get_alt_insn(struct alt_instr *alt, __le32 *insnptr, __le32 *altinsnptr)
 {
 	u32 insn;
 
@@ -95,7 +95,7 @@ static u32 get_alt_insn(struct alt_instr *alt, __le32 *insnptr, __le32 *altinsnp
 	return insn;
 }
 
-static void patch_alternative(struct alt_instr *alt,
+static noinstr void patch_alternative(struct alt_instr *alt,
 			      __le32 *origptr, __le32 *updptr, int nr_inst)
 {
 	__le32 *replptr;
arch/arm64/kernel/cpuidle.c +3 -3
index 03991eeff643..3006f4324808 100644
@@ -54,6 +54,9 @@ static int psci_acpi_cpu_init_idle(unsigned int cpu)
 	struct acpi_lpi_state *lpi;
 	struct acpi_processor *pr = per_cpu(processors, cpu);
 
+	if (unlikely(!pr || !pr->flags.has_lpi))
+		return -EINVAL;
+
 	/*
 	 * If the PSCI cpu_suspend function hook has not been initialized
 	 * idle states must not be enabled, so bail out
@@ -61,9 +64,6 @@ static int psci_acpi_cpu_init_idle(unsigned int cpu)
 	if (!psci_ops.cpu_suspend)
 		return -EOPNOTSUPP;
 
-	if (unlikely(!pr || !pr->flags.has_lpi))
-		return -EINVAL;
-
 	count = pr->power.count - 1;
 	if (count <= 0)
 		return -ENODEV;
arch/arm64/kvm/arm.c +4 -3
index 85a2a75f4498..25d8aff273a1 100644
@@ -89,7 +89,8 @@ int kvm_vm_ioctl_enable_cap(struct kvm *kvm,
 	switch (cap->cap) {
 	case KVM_CAP_ARM_NISV_TO_USER:
 		r = 0;
-		kvm->arch.return_nisv_io_abort_to_user = true;
+		set_bit(KVM_ARCH_FLAG_RETURN_NISV_IO_ABORT_TO_USER,
+			&kvm->arch.flags);
 		break;
 	case KVM_CAP_ARM_MTE:
 		mutex_lock(&kvm->lock);
@@ -97,7 +98,7 @@ int kvm_vm_ioctl_enable_cap(struct kvm *kvm,
 			r = -EINVAL;
 		} else {
 			r = 0;
-			kvm->arch.mte_enabled = true;
+			set_bit(KVM_ARCH_FLAG_MTE_ENABLED, &kvm->arch.flags);
 		}
 		mutex_unlock(&kvm->lock);
 		break;
@@ -635,7 +636,7 @@ int kvm_arch_vcpu_run_pid_change(struct kvm_vcpu *vcpu)
 		kvm_call_hyp_nvhe(__pkvm_vcpu_init_traps, vcpu);
 
 	mutex_lock(&kvm->lock);
-	kvm->arch.ran_once = true;
+	set_bit(KVM_ARCH_FLAG_HAS_RAN_ONCE, &kvm->arch.flags);
 	mutex_unlock(&kvm->lock);
 
 	return ret;
arch/arm64/kvm/mmio.c +2 -1
index 3e2d8ba11a02..3dd38a151d2a 100644
@@ -135,7 +135,8 @@ int io_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa)
 	 * volunteered to do so, and bail out otherwise.
 	 */
 	if (!kvm_vcpu_dabt_isvalid(vcpu)) {
-		if (vcpu->kvm->arch.return_nisv_io_abort_to_user) {
+		if (test_bit(KVM_ARCH_FLAG_RETURN_NISV_IO_ABORT_TO_USER,
+			     &vcpu->kvm->arch.flags)) {
 			run->exit_reason = KVM_EXIT_ARM_NISV;
 			run->arm_nisv.esr_iss = kvm_vcpu_dabt_iss_nisv_sanitized(vcpu);
 			run->arm_nisv.fault_ipa = fault_ipa;
arch/arm64/kvm/pmu-emul.c +1 -1
index bc771bc1a041..fc6ee6f02fec 100644
@@ -982,7 +982,7 @@ int kvm_arm_pmu_v3_set_attr(struct kvm_vcpu *vcpu, struct kvm_device_attr *attr)
 
 		mutex_lock(&kvm->lock);
 
-		if (kvm->arch.ran_once) {
+		if (test_bit(KVM_ARCH_FLAG_HAS_RAN_ONCE, &kvm->arch.flags)) {
 			mutex_unlock(&kvm->lock);
 			return -EBUSY;
 		}
arch/arm64/kvm/reset.c +45 -20

96 lines not on this page · raw message

arch/powerpc/include/asm/static_call.h +1 -0
index 0a0bc79bd1fa..de1018cc522b 100644
@@ -24,5 +24,6 @@
 
 #define ARCH_DEFINE_STATIC_CALL_TRAMP(name, func)	__PPC_SCT(name, "b " #func)
 #define ARCH_DEFINE_STATIC_CALL_NULL_TRAMP(name)	__PPC_SCT(name, "blr")
+#define ARCH_DEFINE_STATIC_CALL_RET0_TRAMP(name)	__PPC_SCT(name, "b .+20")
 
 #endif /* _ASM_POWERPC_STATIC_CALL_H */
arch/powerpc/kvm/book3s_hv.c +33 -8

77 lines not on this page · raw message

arch/riscv/kvm/vcpu.c +0 -2
index 624166004e36..6785aef4cbd4 100644
@@ -653,8 +653,6 @@ void kvm_arch_vcpu_put(struct kvm_vcpu *vcpu)
 				     vcpu->arch.isa);
 	kvm_riscv_vcpu_host_fp_restore(&vcpu->arch.host_context);
 
-	csr_write(CSR_HGATP, 0);
-
 	csr->vsstatus = csr_read(CSR_VSSTATUS);
 	csr->vsie = csr_read(CSR_VSIE);
 	csr->vstvec = csr_read(CSR_VSTVEC);
arch/riscv/kvm/vcpu_fp.c +1 -0
index 4449a976e5a6..d4308c512007 100644
@@ -11,6 +11,7 @@
 #include <linux/err.h>
 #include <linux/kvm_host.h>
 #include <linux/uaccess.h>
+#include <asm/hwcap.h>
 
 #ifdef CONFIG_FPU
 void kvm_riscv_vcpu_fp_reset(struct kvm_vcpu *vcpu)
arch/x86/include/asm/kvm_host.h +3 -2
index 17b4e1808b8e..85ee96abba80 100644
@@ -1574,8 +1574,9 @@ static inline int kvm_arch_flush_remote_tlb(struct kvm *kvm)
 #define kvm_arch_pmi_in_guest(vcpu) \
 	((vcpu) && (vcpu)->arch.handling_intr_from_guest)
 
-int kvm_mmu_module_init(void);
-void kvm_mmu_module_exit(void);
+void kvm_mmu_x86_module_init(void);
+int kvm_mmu_vendor_module_init(void);
+void kvm_mmu_vendor_module_exit(void);
 
 void kvm_mmu_destroy(struct kvm_vcpu *vcpu);
 int kvm_mmu_create(struct kvm_vcpu *vcpu);
arch/x86/include/asm/msr-index.h +2 -2
index a4a39c3e0f19..0c2610cde6ea 100644
@@ -128,9 +128,9 @@
 #define TSX_CTRL_RTM_DISABLE		BIT(0)	/* Disable RTM feature */
 #define TSX_CTRL_CPUID_CLEAR		BIT(1)	/* Disable TSX enumeration */
 
-/* SRBDS support */
 #define MSR_IA32_MCU_OPT_CTRL		0x00000123
-#define RNGDS_MITG_DIS			BIT(0)
+#define RNGDS_MITG_DIS			BIT(0)	/* SRBDS support */
+#define RTM_ALLOW			BIT(1)	/* TSX development mode */
 
 #define MSR_IA32_SYSENTER_CS		0x00000174
 #define MSR_IA32_SYSENTER_ESP		0x00000175
arch/x86/include/asm/static_call.h +2 -0
index ed4f8bb6c2d9..2455d721503e 100644
@@ -38,6 +38,8 @@
 #define ARCH_DEFINE_STATIC_CALL_NULL_TRAMP(name)			\
 	__ARCH_DEFINE_STATIC_CALL_TRAMP(name, "ret; int3; nop; nop; nop")
 
+#define ARCH_DEFINE_STATIC_CALL_RET0_TRAMP(name)			\
+	ARCH_DEFINE_STATIC_CALL_TRAMP(name, __static_call_return0)
 
 #define ARCH_ADD_TRAMP_KEY(name)					\
 	asm(".pushsection .static_call_tramp_key, \"a\"		\n"	\
arch/x86/kernel/cpu/common.c +2 -0
index 7b8382c11788..bd6c690a9fb9 100644
@@ -1719,6 +1719,8 @@ void identify_secondary_cpu(struct cpuinfo_x86 *c)
 	validate_apic_and_package_id(c);
 	x86_spec_ctrl_setup_ap();
 	update_srbds_msr();
+
+	tsx_ap_init();
 }
 
 static __init int setup_noclflush(char *arg)
arch/x86/kernel/cpu/cpu.h +2 -3
index ee6f23f7587d..2a8e584fc991 100644
@@ -55,11 +55,10 @@ enum tsx_ctrl_states {
 extern __ro_after_init enum tsx_ctrl_states tsx_ctrl_state;
 
 extern void __init tsx_init(void);
-extern void tsx_enable(void);
-extern void tsx_disable(void);
-extern void tsx_clear_cpuid(void);
+void tsx_ap_init(void);
 #else
 static inline void tsx_init(void) { }
+static inline void tsx_ap_init(void) { }
 #endif /* CONFIG_CPU_SUP_INTEL */
 
 extern void get_cpu_cap(struct cpuinfo_x86 *c);
arch/x86/kernel/cpu/intel.c +0 -7
index 8321c43554a1..f7a5370a9b3b 100644
@@ -717,13 +717,6 @@ static void init_intel(struct cpuinfo_x86 *c)
 
 	init_intel_misc_features(c);
 
-	if (tsx_ctrl_state == TSX_CTRL_ENABLE)
-		tsx_enable();
-	else if (tsx_ctrl_state == TSX_CTRL_DISABLE)
-		tsx_disable();
-	else if (tsx_ctrl_state == TSX_CTRL_RTM_ALWAYS_ABORT)
-		tsx_clear_cpuid();
-
 	split_lock_init();
 	bus_lock_init();
 
arch/x86/kernel/cpu/tsx.c +94 -10

145 lines not on this page · raw message

arch/x86/kvm/mmu/mmu.c +16 -4
index 5628d0ba637e..7f009ebb319a 100644
@@ -6144,12 +6144,24 @@ static int set_nx_huge_pages(const char *val, const struct kernel_param *kp)
 	return 0;
 }
 
-int kvm_mmu_module_init(void)
+/*
+ * nx_huge_pages needs to be resolved to true/false when kvm.ko is loaded, as
+ * its default value of -1 is technically undefined behavior for a boolean.
+ */
+void kvm_mmu_x86_module_init(void)
 {
-	int ret = -ENOMEM;
-
 	if (nx_huge_pages == -1)
 		__set_nx_huge_pages(get_nx_auto_mode());
+}
+
+/*
+ * The bulk of the MMU initialization is deferred until the vendor module is
+ * loaded as many of the masks/values may be modified by VMX or SVM, i.e. need
+ * to be reset when a potentially different vendor module is loaded.
+ */
+int kvm_mmu_vendor_module_init(void)
+{
+	int ret = -ENOMEM;
 
 	/*
 	 * MMU roles use union aliasing which is, generally speaking, an
@@ -6197,7 +6209,7 @@ void kvm_mmu_destroy(struct kvm_vcpu *vcpu)
 	mmu_free_memory_caches(vcpu);
 }
 
-void kvm_mmu_module_exit(void)
+void kvm_mmu_vendor_module_exit(void)
 {
 	mmu_destroy_caches();
 	percpu_counter_destroy(&kvm_total_used_mmu_pages);
arch/x86/kvm/x86.c +18 -2
index c81ec70197fb..05128162ebd5 100644
@@ -8846,7 +8846,7 @@ int kvm_arch_init(void *opaque)
 	}
 	kvm_nr_uret_msrs = 0;
 
-	r = kvm_mmu_module_init();
+	r = kvm_mmu_vendor_module_init();
 	if (r)
 		goto out_free_percpu;
 
@@ -8894,7 +8894,7 @@ void kvm_arch_exit(void)
 	cancel_work_sync(&pvclock_gtod_work);
 #endif
 	kvm_x86_ops.hardware_enable = NULL;
-	kvm_mmu_module_exit();
+	kvm_mmu_vendor_module_exit();
 	free_percpu(user_return_msrs);
 	kmem_cache_destroy(x86_emulator_cache);
 #ifdef CONFIG_KVM_XEN
@@ -12887,3 +12887,19 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_vmgexit_enter);
 EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_vmgexit_exit);
 EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_vmgexit_msr_protocol_enter);
 EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_vmgexit_msr_protocol_exit);
+
+static int __init kvm_x86_init(void)
+{
+	kvm_mmu_x86_module_init();
+	return 0;
+}
+module_init(kvm_x86_init);
+
+static void __exit kvm_x86_exit(void)
+{
+	/*
+	 * If module_init() is implemented, module_exit() must also be
+	 * implemented to allow module unload.
+	 */
+}
+module_exit(kvm_x86_exit);
arch/x86/net/bpf_jit_comp.c +1 -0
index 0ecb140864b2..b272e963388c 100644
@@ -398,6 +398,7 @@ static void emit_indirect_jump(u8 **pprog, int reg, u8 *ip)
 		EMIT_LFENCE();
 		EMIT2(0xFF, 0xE0 + reg);
 	} else if (cpu_feature_enabled(X86_FEATURE_RETPOLINE)) {
+		OPTIMIZER_HIDE_VAR(reg);
 		emit_jump(&prog, &__x86_indirect_thunk_array[reg], ip);
 	} else
 #endif
block/bio.c +1 -1
index 1be1e360967d..342b1cf5d713 100644
@@ -1570,7 +1570,7 @@ EXPORT_SYMBOL(bio_split);
 void bio_trim(struct bio *bio, sector_t offset, sector_t size)
 {
 	if (WARN_ON_ONCE(offset > BIO_MAX_SECTORS || size > BIO_MAX_SECTORS ||
-			 offset + size > bio->bi_iter.bi_size))
+			 offset + size > bio_sectors(bio)))
 		return;
 
 	size <<= 9;
drivers/acpi/processor_idle.c +10 -5
index 05b3985a1984..4556c86c3465 100644
@@ -1079,6 +1079,11 @@ static int flatten_lpi_states(struct acpi_processor *pr,
 	return 0;
 }
 
+int __weak acpi_processor_ffh_lpi_probe(unsigned int cpu)
+{
+	return -EOPNOTSUPP;
+}
+
 static int acpi_processor_get_lpi_info(struct acpi_processor *pr)
 {
 	int ret, i;
@@ -1087,6 +1092,11 @@ static int acpi_processor_get_lpi_info(struct acpi_processor *pr)
 	struct acpi_device *d = NULL;
 	struct acpi_lpi_states_array info[2], *tmp, *prev, *curr;
 
+	/* make sure our architecture has support */
+	ret = acpi_processor_ffh_lpi_probe(pr->id);
+	if (ret == -EOPNOTSUPP)
+		return ret;
+
 	if (!osc_pc_lpi_support_confirmed)
 		return -EOPNOTSUPP;
 
@@ -1138,11 +1148,6 @@ static int acpi_processor_get_lpi_info(struct acpi_processor *pr)
 	return 0;
 }
 
-int __weak acpi_processor_ffh_lpi_probe(unsigned int cpu)
-{
-	return -ENODEV;
-}
-
 int __weak acpi_processor_ffh_lpi_enter(struct acpi_lpi_state *lpi)
 {
 	return -ENODEV;
drivers/ata/libata-core.c +3 -0
index 0c854aebfe0b..760c0d81d148 100644
@@ -4014,6 +4014,9 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = {
 						ATA_HORKAGE_ZERO_AFTER_TRIM, },
 	{ "Crucial_CT*MX100*",		"MU01",	ATA_HORKAGE_NO_NCQ_TRIM |
 						ATA_HORKAGE_ZERO_AFTER_TRIM, },
+	{ "Samsung SSD 840 EVO*",	NULL,	ATA_HORKAGE_NO_NCQ_TRIM |
+						ATA_HORKAGE_NO_DMA_LOG |
+						ATA_HORKAGE_ZERO_AFTER_TRIM, },
 	{ "Samsung SSD 840*",		NULL,	ATA_HORKAGE_NO_NCQ_TRIM |
 						ATA_HORKAGE_ZERO_AFTER_TRIM, },
 	{ "Samsung SSD 850*",		NULL,	ATA_HORKAGE_NO_NCQ_TRIM |
drivers/base/dd.c +1 -0
index 752a11d16e26..7e079fa3795b 100644
@@ -296,6 +296,7 @@ int driver_deferred_probe_check_state(struct device *dev)
 
 	return -EPROBE_DEFER;
 }
+EXPORT_SYMBOL_GPL(driver_deferred_probe_check_state);
 
 static void deferred_probe_timeout_work_func(struct work_struct *work)
 {
drivers/block/drbd/drbd_main.c +1 -0
index 5d5beeba3ed4..478ba959362c 100644
@@ -2739,6 +2739,7 @@ enum drbd_ret_code drbd_create_device(struct drbd_config_context *adm_ctx, unsig
 	sprintf(disk->disk_name, "drbd%d", minor);
 	disk->private_data = device;
 
+	blk_queue_flag_set(QUEUE_FLAG_STABLE_WRITES, disk->queue);
 	blk_queue_write_cache(disk->queue, true, true);
 	/* Setting the max_hw_sectors to an odd value of 8kibyte here
 	   This triggers a max_bio_size message upon first attach or connect */
drivers/block/null_blk/main.c +1 -1
index 13004beb48ca..233577b14141 100644
@@ -1606,7 +1606,7 @@ static enum blk_eh_timer_return null_timeout_rq(struct request *rq, bool res)
 	 * Only fake timeouts need to execute blk_mq_complete_request() here.
 	 */
 	cmd->error = BLK_STS_TIMEOUT;
-	if (cmd->fake_timeout)
+	if (cmd->fake_timeout || hctx->type == HCTX_TYPE_POLL)
 		blk_mq_complete_request(rq);
 	return BLK_EH_DONE;
 }
drivers/firmware/arm_scmi/clock.c +2 -1
index 35b56c8ba0c0..492f3a9197ec 100644
@@ -204,7 +204,8 @@ scmi_clock_describe_rates_get(const struct scmi_protocol_handle *ph, u32 clk_id,
 
 	if (rate_discrete && rate) {
 		clk->list.num_rates = tot_rate_cnt;
-		sort(rate, tot_rate_cnt, sizeof(*rate), rate_cmp_func, NULL);
+		sort(clk->list.rates, tot_rate_cnt, sizeof(*rate),
+		     rate_cmp_func, NULL);
 	}
 
 	clk->rate_discrete = rate_discrete;
drivers/firmware/arm_scmi/driver.c +2 -1
index d76bab3aaac4..e815b8f98739 100644
@@ -652,7 +652,8 @@ static void scmi_handle_response(struct scmi_chan_info *cinfo,
 
 	xfer = scmi_xfer_command_acquire(cinfo, msg_hdr);
 	if (IS_ERR(xfer)) {
-		scmi_clear_channel(info, cinfo);
+		if (MSG_XTRACT_TYPE(msg_hdr) == MSG_TYPE_DELAYED_RESP)
+			scmi_clear_channel(info, cinfo);
 		return;
 	}
 
drivers/gpio/gpio-sim.c +2 -2
index 8e5d87984a48..41c31b10ae84 100644
@@ -134,7 +134,7 @@ static int gpio_sim_get_multiple(struct gpio_chip *gc,
 	struct gpio_sim_chip *chip = gpiochip_get_data(gc);
 
 	mutex_lock(&chip->lock);
-	bitmap_copy(bits, chip->value_map, gc->ngpio);
+	bitmap_replace(bits, bits, chip->value_map, mask, gc->ngpio);
 	mutex_unlock(&chip->lock);
 
 	return 0;
@@ -146,7 +146,7 @@ static void gpio_sim_set_multiple(struct gpio_chip *gc,
 	struct gpio_sim_chip *chip = gpiochip_get_data(gc);
 
 	mutex_lock(&chip->lock);
-	bitmap_copy(chip->value_map, bits, gc->ngpio);
+	bitmap_replace(chip->value_map, chip->value_map, bits, mask, gc->ngpio);
 	mutex_unlock(&chip->lock);
 }
 
drivers/gpio/gpiolib-acpi.c +2 -2
index a5495ad31c9c..b7c2f2af1dee 100644
@@ -387,8 +387,8 @@ static acpi_status acpi_gpiochip_alloc_event(struct acpi_resource *ares,
 	pin = agpio->pin_table[0];
 
 	if (pin <= 255) {
-		char ev_name[5];
-		sprintf(ev_name, "_%c%02hhX",
+		char ev_name[8];
+		sprintf(ev_name, "_%c%02X",
 			agpio->triggering == ACPI_EDGE_SENSITIVE ? 'E' : 'L',
 			pin);
 		if (ACPI_SUCCESS(acpi_get_handle(handle, ev_name, &evt_handle)))
drivers/gpu/drm/amd/amdgpu/ObjectID.h +1 -0
index 5b393622f592..a0f0a17e224f 100644
@@ -119,6 +119,7 @@
 #define CONNECTOR_OBJECT_ID_eDP                   0x14
 #define CONNECTOR_OBJECT_ID_MXM                   0x15
 #define CONNECTOR_OBJECT_ID_LVDS_eDP              0x16
+#define CONNECTOR_OBJECT_ID_USBC                  0x17
 
 /* deleted */
 
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +2 -2
index b87dca6d09fa..052816f0efed 100644
@@ -5678,7 +5678,7 @@ void amdgpu_device_flush_hdp(struct amdgpu_device *adev,
 		struct amdgpu_ring *ring)
 {
 #ifdef CONFIG_X86_64
-	if (adev->flags & AMD_IS_APU)
+	if ((adev->flags & AMD_IS_APU) && !amdgpu_passthrough(adev))
 		return;
 #endif
 	if (adev->gmc.xgmi.connected_to_cpu)
@@ -5694,7 +5694,7 @@ void amdgpu_device_invalidate_hdp(struct amdgpu_device *adev,
 		struct amdgpu_ring *ring)
 {
 #ifdef CONFIG_X86_64
-	if (adev->flags & AMD_IS_APU)
+	if ((adev->flags & AMD_IS_APU) && !amdgpu_passthrough(adev))
 		return;
 #endif
 	if (adev->gmc.xgmi.connected_to_cpu)
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +13 -7
index 0ead08ba58c2..c853266957ce 100644
@@ -686,7 +686,7 @@ MODULE_PARM_DESC(sched_policy,
  * Maximum number of processes that HWS can schedule concurrently. The maximum is the
  * number of VMIDs assigned to the HWS, which is also the default.
  */
-int hws_max_conc_proc = 8;
+int hws_max_conc_proc = -1;
 module_param(hws_max_conc_proc, int, 0444);
 MODULE_PARM_DESC(hws_max_conc_proc,
 	"Max # processes HWS can execute concurrently when sched_policy=0 (0 = no concurrency, #VMIDs for KFD = Maximum(default))");
@@ -2276,18 +2276,23 @@ static int amdgpu_pmops_suspend(struct device *dev)
 {
 	struct drm_device *drm_dev = dev_get_drvdata(dev);
 	struct amdgpu_device *adev = drm_to_adev(drm_dev);
-	int r;
 
 	if (amdgpu_acpi_is_s0ix_active(adev))
 		adev->in_s0ix = true;
 	else
 		adev->in_s3 = true;
-	r = amdgpu_device_suspend(drm_dev, true);
-	if (r)
-		return r;
+	return amdgpu_device_suspend(drm_dev, true);
+}
+
+static int amdgpu_pmops_suspend_noirq(struct device *dev)
+{
+	struct drm_device *drm_dev = dev_get_drvdata(dev);
+	struct amdgpu_device *adev = drm_to_adev(drm_dev);
+
 	if (!adev->in_s0ix)
-		r = amdgpu_asic_reset(adev);
-	return r;
+		return amdgpu_asic_reset(adev);
+
+	return 0;
 }
 
 static int amdgpu_pmops_resume(struct device *dev)
@@ -2528,6 +2533,7 @@ static const struct dev_pm_ops amdgpu_pm_ops = {
 	.prepare = amdgpu_pmops_prepare,
 	.complete = amdgpu_pmops_complete,
 	.suspend = amdgpu_pmops_suspend,
+	.suspend_noirq = amdgpu_pmops_suspend_noirq,
 	.resume = amdgpu_pmops_resume,
 	.freeze = amdgpu_pmops_freeze,
 	.thaw = amdgpu_pmops_thaw,
drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +2 -0
index 9189fb85a4dd..5831aa40b1e8 100644
@@ -1334,6 +1334,8 @@ static const struct amdgpu_gfxoff_quirk amdgpu_gfxoff_quirk_list[] = {
 	{ 0x1002, 0x15dd, 0x103c, 0x83e7, 0xd3 },
 	/* GFXOFF is unstable on C6 parts with a VBIOS 113-RAVEN-114 */
 	{ 0x1002, 0x15dd, 0x1002, 0x15dd, 0xc6 },
+	/* Apple MacBook Pro (15-inch, 2019) Radeon Pro Vega 20 4 GB */
+	{ 0x1002, 0x69af, 0x106b, 0x019a, 0xc0 },
 	{ 0, 0, 0, 0, 0 },
 };
 
drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c +1 -1
index a2f8ed0e6a64..f1b794d5d87d 100644
@@ -788,7 +788,7 @@ static int gmc_v10_0_mc_init(struct amdgpu_device *adev)
 	adev->gmc.aper_size = pci_resource_len(adev->pdev, 0);
 
 #ifdef CONFIG_X86_64
-	if (adev->flags & AMD_IS_APU) {
+	if ((adev->flags & AMD_IS_APU) && !amdgpu_passthrough(adev)) {
 		adev->gmc.aper_base = adev->gfxhub.funcs->get_mc_fb_offset(adev);
 		adev->gmc.aper_size = adev->gmc.real_vram_size;
 	}
drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c +3 -2
index ab8adbff9e2d..5206e2da334a 100644
@@ -381,8 +381,9 @@ static int gmc_v7_0_mc_init(struct amdgpu_device *adev)
 	adev->gmc.aper_size = pci_resource_len(adev->pdev, 0);
 
 #ifdef CONFIG_X86_64
-	if (adev->flags & AMD_IS_APU &&
-	    adev->gmc.real_vram_size > adev->gmc.aper_size) {
+	if ((adev->flags & AMD_IS_APU) &&
+	    adev->gmc.real_vram_size > adev->gmc.aper_size &&
+	    !amdgpu_passthrough(adev)) {
 		adev->gmc.aper_base = ((u64)RREG32(mmMC_VM_FB_OFFSET)) << 22;
 		adev->gmc.aper_size = adev->gmc.real_vram_size;
 	}
drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c +1 -1
index 054733838292..d07d36786836 100644
@@ -581,7 +581,7 @@ static int gmc_v8_0_mc_init(struct amdgpu_device *adev)
 	adev->gmc.aper_size = pci_resource_len(adev->pdev, 0);
 
 #ifdef CONFIG_X86_64
-	if (adev->flags & AMD_IS_APU) {
+	if ((adev->flags & AMD_IS_APU) && !amdgpu_passthrough(adev)) {
 		adev->gmc.aper_base = ((u64)RREG32(mmMC_VM_FB_OFFSET)) << 22;
 		adev->gmc.aper_size = adev->gmc.real_vram_size;
 	}
drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c +2 -2
index 88c1eb9ad068..2fb24178eaef 100644
@@ -1420,7 +1420,7 @@ static int gmc_v9_0_mc_init(struct amdgpu_device *adev)
 	 */
 
 	/* check whether both host-gpu and gpu-gpu xgmi links exist */
-	if ((adev->flags & AMD_IS_APU) ||
+	if (((adev->flags & AMD_IS_APU) && !amdgpu_passthrough(adev)) ||
 	    (adev->gmc.xgmi.supported &&
 	     adev->gmc.xgmi.connected_to_cpu)) {
 		adev->gmc.aper_base =
@@ -1684,7 +1684,7 @@ static int gmc_v9_0_sw_fini(void *handle)
 	amdgpu_gem_force_release(adev);
 	amdgpu_vm_manager_fini(adev);
 	amdgpu_gart_table_vram_free(adev);
-	amdgpu_bo_unref(&adev->gmc.pdb0_bo);
+	amdgpu_bo_free_kernel(&adev->gmc.pdb0_bo, NULL, &adev->gmc.ptr_pdb0);
 	amdgpu_bo_fini(adev);
 
 	return 0;
drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c +3 -0
index 0ce2a7aa400b..ad9bfc772bdf 100644
@@ -1474,8 +1474,11 @@ static int vcn_v3_0_start_sriov(struct amdgpu_device *adev)
 
 static int vcn_v3_0_stop_dpg_mode(struct amdgpu_device *adev, int inst_idx)
 {
+	struct dpg_pause_state state = {.fw_based = VCN_DPG_STATE__UNPAUSE};
 	uint32_t tmp;
 
+	vcn_v3_0_pause_dpg_mode(adev, 0, &state);
+
 	/* Wait for power status to be 1 */
 	SOC15_WAIT_ON_RREG(VCN, inst_idx, mmUVD_POWER_STATUS, 1,
 		UVD_POWER_STATUS__UVD_POWER_STATUS_MASK);
drivers/gpu/drm/amd/amdkfd/kfd_device.c +3 -8
index 2b65d0acae2c..2fdbe2f475e4 100644
@@ -480,15 +480,10 @@ bool kgd2kfd_device_init(struct kfd_dev *kfd,
 	}
 
 	/* Verify module parameters regarding mapped process number*/
-	if ((hws_max_conc_proc < 0)
-			|| (hws_max_conc_proc > kfd->vm_info.vmid_num_kfd)) {
-		dev_err(kfd_device,
-			"hws_max_conc_proc %d must be between 0 and %d, use %d instead\n",
-			hws_max_conc_proc, kfd->vm_info.vmid_num_kfd,
-			kfd->vm_info.vmid_num_kfd);
+	if (hws_max_conc_proc >= 0)
+		kfd->max_proc_per_quantum = min((u32)hws_max_conc_proc, kfd->vm_info.vmid_num_kfd);
+	else
 		kfd->max_proc_per_quantum = kfd->vm_info.vmid_num_kfd;
-	} else
-		kfd->max_proc_per_quantum = hws_max_conc_proc;
 
 	/* calculate max size of mqds needed for queues */
 	size = max_num_of_queues_per_device *
drivers/gpu/drm/amd/amdkfd/kfd_events.c +2 -0
index afe72dd11325..6ca7e12bdab8 100644
@@ -531,6 +531,8 @@ static struct kfd_event_waiter *alloc_event_waiters(uint32_t num_events)
 	event_waiters = kmalloc_array(num_events,
 					sizeof(struct kfd_event_waiter),
 					GFP_KERNEL);
+	if (!event_waiters)
+		return NULL;
 
 	for (i = 0; (event_waiters) && (i < num_events) ; i++) {
 		init_wait(&event_waiters[i].wait);
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +2 -1
index 90c017859ad4..24db2297857b 100644
@@ -2693,7 +2693,8 @@ static int dm_resume(void *handle)
 		 * this is the case when traversing through already created
 		 * MST connectors, should be skipped
 		 */
-		if (aconnector->mst_port)
+		if (aconnector->dc_link &&
+		    aconnector->dc_link->type == dc_connection_mst_branch)
 			continue;
 
 		mutex_lock(&aconnector->hpd_lock);
drivers/gpu/drm/amd/display/dc/core/dc_resource.c +2 -2
index ac3071e38e4a..f0a97b82c33a 100644
@@ -1667,8 +1667,8 @@ bool dc_is_stream_unchanged(
 	if (old_stream->ignore_msa_timing_param != stream->ignore_msa_timing_param)
 		return false;
 
-	// Only Have Audio left to check whether it is same or not. This is a corner case for Tiled sinks
-	if (old_stream->audio_info.mode_count != stream->audio_info.mode_count)
+	/*compare audio info*/
+	if (memcmp(&old_stream->audio_info, &stream->audio_info, sizeof(stream->audio_info)) != 0)
 		return false;
 
 	return true;
drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hubbub.c +1 -0
index f4f423d0b8c3..80595d7f060c 100644
@@ -940,6 +940,7 @@ static const struct hubbub_funcs hubbub1_funcs = {
 	.program_watermarks = hubbub1_program_watermarks,
 	.is_allow_self_refresh_enabled = hubbub1_is_allow_self_refresh_enabled,
 	.allow_self_refresh_control = hubbub1_allow_self_refresh_control,
+	.verify_allow_pstate_change_high = hubbub1_verify_allow_pstate_change_high,
 };
 
 void hubbub1_construct(struct hubbub *hubbub,
drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c +19 -10
index 2cefdd96d0cb..8ca4c06ac560 100644
@@ -1112,9 +1112,13 @@ static bool dcn10_hw_wa_force_recovery(struct dc *dc)
 
 void dcn10_verify_allow_pstate_change_high(struct dc *dc)
 {
+	struct hubbub *hubbub = dc->res_pool->hubbub;
 	static bool should_log_hw_state; /* prevent hw state log by default */
 
-	if (!hubbub1_verify_allow_pstate_change_high(dc->res_pool->hubbub)) {
+	if (!hubbub->funcs->verify_allow_pstate_change_high)
+		return;
+
+	if (!hubbub->funcs->verify_allow_pstate_change_high(hubbub)) {
 		int i = 0;
 
 		if (should_log_hw_state)
@@ -1123,8 +1127,8 @@ void dcn10_verify_allow_pstate_change_high(struct dc *dc)
 		TRACE_DC_PIPE_STATE(pipe_ctx, i, MAX_PIPES);
 		BREAK_TO_DEBUGGER();
 		if (dcn10_hw_wa_force_recovery(dc)) {
-		/*check again*/
-			if (!hubbub1_verify_allow_pstate_change_high(dc->res_pool->hubbub))
+			/*check again*/
+			if (!hubbub->funcs->verify_allow_pstate_change_high(hubbub))
 				BREAK_TO_DEBUGGER();
 		}
 	}
@@ -1497,6 +1501,9 @@ void dcn10_init_hw(struct dc *dc)
 	if (dc->config.power_down_display_on_boot)
 		dc_link_blank_all_dp_displays(dc);
 
+	if (hws->funcs.enable_power_gating_plane)
+		hws->funcs.enable_power_gating_plane(dc->hwseq, true);
+
 	/* If taking control over from VBIOS, we may want to optimize our first
 	 * mode set, so we need to skip powering down pipes until we know which
 	 * pipes we want to use.
@@ -1549,8 +1556,6 @@ void dcn10_init_hw(struct dc *dc)
 
 		REG_UPDATE(DCFCLK_CNTL, DCFCLK_GATE_DIS, 0);
 	}
-	if (hws->funcs.enable_power_gating_plane)
-		hws->funcs.enable_power_gating_plane(dc->hwseq, true);
 
 	if (dc->clk_mgr->funcs->notify_wm_ranges)
 		dc->clk_mgr->funcs->notify_wm_ranges(dc->clk_mgr);
@@ -2515,14 +2520,18 @@ void dcn10_update_mpcc(struct dc *dc, struct pipe_ctx *pipe_ctx)
 	struct mpc *mpc = dc->res_pool->mpc;
 	struct mpc_tree *mpc_tree_params = &(pipe_ctx->stream_res.opp->mpc_tree_params);
 
-	if (per_pixel_alpha)
-		blnd_cfg.alpha_mode = MPCC_ALPHA_BLEND_MODE_PER_PIXEL_ALPHA;
-	else
-		blnd_cfg.alpha_mode = MPCC_ALPHA_BLEND_MODE_GLOBAL_ALPHA;
-
 	blnd_cfg.overlap_only = false;
 	blnd_cfg.global_gain = 0xff;
 
+	if (per_pixel_alpha && pipe_ctx->plane_state->global_alpha) {
+		blnd_cfg.alpha_mode = MPCC_ALPHA_BLEND_MODE_PER_PIXEL_ALPHA_COMBINED_GLOBAL_GAIN;
+		blnd_cfg.global_gain = pipe_ctx->plane_state->global_alpha_value;
+	} else if (per_pixel_alpha) {
+		blnd_cfg.alpha_mode = MPCC_ALPHA_BLEND_MODE_PER_PIXEL_ALPHA;
+	} else {
+		blnd_cfg.alpha_mode = MPCC_ALPHA_BLEND_MODE_GLOBAL_ALPHA;
+	}
+
 	if (pipe_ctx->plane_state->global_alpha)
 		blnd_cfg.global_alpha = pipe_ctx->plane_state->global_alpha_value;
 	else
drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c +9 -5
index 4991e93e5308..8a72b7007b9d 100644
@@ -2313,14 +2313,18 @@ void dcn20_update_mpcc(struct dc *dc, struct pipe_ctx *pipe_ctx)
 	struct mpc *mpc = dc->res_pool->mpc;
 	struct mpc_tree *mpc_tree_params = &(pipe_ctx->stream_res.opp->mpc_tree_params);
 
-	if (per_pixel_alpha)
-		blnd_cfg.alpha_mode = MPCC_ALPHA_BLEND_MODE_PER_PIXEL_ALPHA;
-	else
-		blnd_cfg.alpha_mode = MPCC_ALPHA_BLEND_MODE_GLOBAL_ALPHA;
-
 	blnd_cfg.overlap_only = false;
 	blnd_cfg.global_gain = 0xff;
 
+	if (per_pixel_alpha && pipe_ctx->plane_state->global_alpha) {
+		blnd_cfg.alpha_mode = MPCC_ALPHA_BLEND_MODE_PER_PIXEL_ALPHA_COMBINED_GLOBAL_GAIN;
+		blnd_cfg.global_gain = pipe_ctx->plane_state->global_alpha_value;
+	} else if (per_pixel_alpha) {
+		blnd_cfg.alpha_mode = MPCC_ALPHA_BLEND_MODE_PER_PIXEL_ALPHA;
+	} else {
+		blnd_cfg.alpha_mode = MPCC_ALPHA_BLEND_MODE_GLOBAL_ALPHA;
+	}
+
 	if (pipe_ctx->plane_state->global_alpha)
 		blnd_cfg.global_alpha = pipe_ctx->plane_state->global_alpha_value;
 	else
drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hubbub.c +1 -0
index f4414de96acc..152c9c5733f1 100644
@@ -448,6 +448,7 @@ static const struct hubbub_funcs hubbub30_funcs = {
 	.program_watermarks = hubbub3_program_watermarks,
 	.allow_self_refresh_control = hubbub1_allow_self_refresh_control,
 	.is_allow_self_refresh_enabled = hubbub1_is_allow_self_refresh_enabled,
+	.verify_allow_pstate_change_high = hubbub1_verify_allow_pstate_change_high,
 	.force_wm_propagate_to_pipes = hubbub3_force_wm_propagate_to_pipes,
 	.force_pstate_change_control = hubbub3_force_pstate_change_control,
 	.init_watermarks = hubbub3_init_watermarks,
drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hwseq.c +3 -2
index 1db1ca19411d..05dc0a3ae2a3 100644
@@ -548,6 +548,9 @@ void dcn30_init_hw(struct dc *dc)
 	if (dc->config.power_down_display_on_boot)
 		dc_link_blank_all_dp_displays(dc);
 
+	if (hws->funcs.enable_power_gating_plane)
+		hws->funcs.enable_power_gating_plane(dc->hwseq, true);
+
 	/* If taking control over from VBIOS, we may want to optimize our first
 	 * mode set, so we need to skip powering down pipes until we know which
 	 * pipes we want to use.
@@ -625,8 +628,6 @@ void dcn30_init_hw(struct dc *dc)
 
 		REG_UPDATE(DCFCLK_CNTL, DCFCLK_GATE_DIS, 0);
 	}
-	if (hws->funcs.enable_power_gating_plane)
-		hws->funcs.enable_power_gating_plane(dc->hwseq, true);
 
 	if (!dcb->funcs->is_accelerated_mode(dcb) && dc->res_pool->hubbub->funcs->init_watermarks)
 		dc->res_pool->hubbub->funcs->init_watermarks(dc->res_pool->hubbub);
drivers/gpu/drm/amd/display/dc/dcn301/dcn301_hubbub.c +1 -0
index 1e3bd2e9cdcc..a046664e2031 100644
@@ -60,6 +60,7 @@ static const struct hubbub_funcs hubbub301_funcs = {
 	.program_watermarks = hubbub3_program_watermarks,
 	.allow_self_refresh_control = hubbub1_allow_self_refresh_control,
 	.is_allow_self_refresh_enabled = hubbub1_is_allow_self_refresh_enabled,
+	.verify_allow_pstate_change_high = hubbub1_verify_allow_pstate_change_high,
 	.force_wm_propagate_to_pipes = hubbub3_force_wm_propagate_to_pipes,
 	.force_pstate_change_control = hubbub3_force_pstate_change_control,
 	.hubbub_read_state = hubbub2_read_state,
drivers/gpu/drm/amd/display/dc/dcn31/dcn31_hubbub.c +62 -0

79 lines not on this page · raw message

drivers/gpu/drm/amd/display/dc/dcn31/dcn31_hwseq.c +3 -2
index 1e156f398065..bdc4467b40d7 100644
@@ -200,6 +200,9 @@ void dcn31_init_hw(struct dc *dc)
 	if (dc->config.power_down_display_on_boot)
 		dc_link_blank_all_dp_displays(dc);
 
+	if (hws->funcs.enable_power_gating_plane)
+		hws->funcs.enable_power_gating_plane(dc->hwseq, true);
+
 	/* If taking control over from VBIOS, we may want to optimize our first
 	 * mode set, so we need to skip powering down pipes until we know which
 	 * pipes we want to use.
@@ -249,8 +252,6 @@ void dcn31_init_hw(struct dc *dc)
 
 		REG_UPDATE(DCFCLK_CNTL, DCFCLK_GATE_DIS, 0);
 	}
-	if (hws->funcs.enable_power_gating_plane)
-		hws->funcs.enable_power_gating_plane(dc->hwseq, true);
 
 	if (!dcb->funcs->is_accelerated_mode(dcb) && dc->res_pool->hubbub->funcs->init_watermarks)
 		dc->res_pool->hubbub->funcs->init_watermarks(dc->res_pool->hubbub);
drivers/gpu/drm/amd/display/dc/dcn31/dcn31_resource.c +1 -1
index 0e11285035b6..f3933c9f5746 100644
@@ -1011,7 +1011,7 @@ static const struct dc_debug_options debug_defaults_drv = {
 	.max_downscale_src_width = 4096,/*upto true 4K*/
 	.disable_pplib_wm_range = false,
 	.scl_reset_length10 = true,
-	.sanity_checks = false,
+	.sanity_checks = true,
 	.underflow_assert_delay_us = 0xFFFFFFFF,
 	.dwb_fi_phase = -1, // -1 = disable,
 	.dmub_command_table = true,
drivers/gpu/drm/amd/display/dc/dsc/dc_dsc.c +2 -2
index 9c74564cbd8d..8973d3a38f9c 100644
@@ -864,11 +864,11 @@ static bool setup_dsc_config(
 		min_slices_h = inc_num_slices(dsc_common_caps.slice_caps, min_slices_h);
 	}
 
+	is_dsc_possible = (min_slices_h <= max_slices_h);
+
 	if (pic_width % min_slices_h != 0)
 		min_slices_h = 0; // DSC TODO: Maybe try increasing the number of slices first?
 
-	is_dsc_possible = (min_slices_h <= max_slices_h);
-
 	if (min_slices_h == 0 && max_slices_h == 0)
 		is_dsc_possible = false;
 
drivers/gpu/drm/amd/display/dc/inc/hw/dchubbub.h +2 -0
index 713f5558f5e1..9195dec294c2 100644
@@ -154,6 +154,8 @@ struct hubbub_funcs {
 	bool (*is_allow_self_refresh_enabled)(struct hubbub *hubbub);
 	void (*allow_self_refresh_control)(struct hubbub *hubbub, bool allow);
 
+	bool (*verify_allow_pstate_change_high)(struct hubbub *hubbub);
+
 	void (*apply_DEDCN21_147_wa)(struct hubbub *hubbub);
 
 	void (*force_wm_propagate_to_pipes)(struct hubbub *hubbub);
drivers/gpu/drm/amd/display/modules/info_packet/info_packet.c +3 -2
index 57f198de5e2c..4e075b01d48b 100644
@@ -100,7 +100,8 @@ enum vsc_packet_revision {
 //PB7 = MD0
 #define MASK_VTEM_MD0__VRR_EN         0x01
 #define MASK_VTEM_MD0__M_CONST        0x02
-#define MASK_VTEM_MD0__RESERVED2      0x0C
+#define MASK_VTEM_MD0__QMS_EN         0x04
+#define MASK_VTEM_MD0__RESERVED2      0x08
 #define MASK_VTEM_MD0__FVA_FACTOR_M1  0xF0
 
 //MD1
@@ -109,7 +110,7 @@ enum vsc_packet_revision {
 //MD2
 #define MASK_VTEM_MD2__BASE_REFRESH_RATE_98  0x03
 #define MASK_VTEM_MD2__RB                    0x04
-#define MASK_VTEM_MD2__RESERVED3             0xF8
+#define MASK_VTEM_MD2__NEXT_TFR              0xF8
 
 //MD3
 #define MASK_VTEM_MD3__BASE_REFRESH_RATE_07  0xFF
drivers/gpu/drm/i915/gem/i915_gem_mman.c +1 -1
index 936a257b511c..d270d9a918e8 100644
@@ -67,7 +67,7 @@ i915_gem_mmap_ioctl(struct drm_device *dev, void *data,
 	 * mmap ioctl is disallowed for all discrete platforms,
 	 * and for all platforms with GRAPHICS_VER > 12.
 	 */
-	if (IS_DGFX(i915) || GRAPHICS_VER(i915) > 12)
+	if (IS_DGFX(i915) || GRAPHICS_VER_FULL(i915) > IP_VER(12, 0))
 		return -EOPNOTSUPP;
 
 	if (args->flags & ~(I915_MMAP_WC))
drivers/gpu/drm/msm/adreno/a6xx_gpu.c +1 -1
index 616be7265da4..19622fb1fa35 100644
@@ -1714,7 +1714,7 @@ a6xx_create_private_address_space(struct msm_gpu *gpu)
 		return ERR_CAST(mmu);
 
 	return msm_gem_address_space_create(mmu,
-		"gpu", 0x100000000ULL, 0x1ffffffffULL);
+		"gpu", 0x100000000ULL, SZ_4G);
 }
 
 static uint32_t a6xx_get_rptr(struct msm_gpu *gpu, struct msm_ringbuffer *ring)
drivers/gpu/drm/msm/dp/dp_display.c +6 -0
index 1d7f82e6eafe..af9c09c30860 100644
@@ -551,6 +551,12 @@ static int dp_hpd_plug_handle(struct dp_display_private *dp, u32 data)
 
 	mutex_unlock(&dp->event_mutex);
 
+	/*
+	 * add fail safe mode outside event_mutex scope
+	 * to avoid potiential circular lock with drm thread
+	 */
+	dp_panel_add_fail_safe_mode(dp->dp_display.connector);
+
 	/* uevent will complete connection part */
 	return 0;
 };
drivers/gpu/drm/msm/dp/dp_panel.c +10 -10
index f1418722c549..26c3653c99ec 100644
@@ -151,6 +151,15 @@ static int dp_panel_update_modes(struct drm_connector *connector,
 	return rc;
 }
 
+void dp_panel_add_fail_safe_mode(struct drm_connector *connector)
+{
+	/* fail safe edid */
+	mutex_lock(&connector->dev->mode_config.mutex);
+	if (drm_add_modes_noedid(connector, 640, 480))
+		drm_set_preferred_mode(connector, 640, 480);
+	mutex_unlock(&connector->dev->mode_config.mutex);
+}
+
 int dp_panel_read_sink_caps(struct dp_panel *dp_panel,
 	struct drm_connector *connector)
 {
@@ -207,16 +216,7 @@ int dp_panel_read_sink_caps(struct dp_panel *dp_panel,
 			goto end;
 		}
 
-		/* fail safe edid */
-		mutex_lock(&connector->dev->mode_config.mutex);
-		if (drm_add_modes_noedid(connector, 640, 480))
-			drm_set_preferred_mode(connector, 640, 480);
-		mutex_unlock(&connector->dev->mode_config.mutex);
-	} else {
-		/* always add fail-safe mode as backup mode */
-		mutex_lock(&connector->dev->mode_config.mutex);
-		drm_add_modes_noedid(connector, 640, 480);
-		mutex_unlock(&connector->dev->mode_config.mutex);
+		dp_panel_add_fail_safe_mode(connector);
 	}
 
 	if (panel->aux_cfg_update_done) {
drivers/gpu/drm/msm/dp/dp_panel.h +1 -0
index 9023e5bb4b8b..99739ea679a7 100644
@@ -59,6 +59,7 @@ int dp_panel_init_panel_info(struct dp_panel *dp_panel);
 int dp_panel_deinit(struct dp_panel *dp_panel);
 int dp_panel_timing_cfg(struct dp_panel *dp_panel);
 void dp_panel_dump_regs(struct dp_panel *dp_panel);
+void dp_panel_add_fail_safe_mode(struct drm_connector *connector);
 int dp_panel_read_sink_caps(struct dp_panel *dp_panel,
 		struct drm_connector *connector);
 u32 dp_panel_get_mode_bpp(struct dp_panel *dp_panel, u32 mode_max_bpp,
drivers/gpu/drm/msm/dsi/dsi_manager.c +1 -1
index f19bae475c96..cd7b41b7d518 100644
@@ -641,7 +641,7 @@ struct drm_connector *msm_dsi_manager_connector_init(u8 id)
 	return connector;
 
 fail:
-	connector->funcs->destroy(msm_dsi->connector);
+	connector->funcs->destroy(connector);
 	return ERR_PTR(ret);
 }
 
drivers/gpu/drm/msm/msm_gem.c +1 -0
index 02b9ae65a96a..a4f61972667b 100644
@@ -926,6 +926,7 @@ void msm_gem_describe(struct drm_gem_object *obj, struct seq_file *m,
 					get_pid_task(aspace->pid, PIDTYPE_PID);
 				if (task) {
 					comm = kstrdup(task->comm, GFP_KERNEL);
+					put_task_struct(task);
 				} else {
 					comm = NULL;
 				}
drivers/gpu/ipu-v3/ipu-di.c +3 -2
index 666223c6bec4..0a34e0ab4fe6 100644
@@ -447,8 +447,9 @@ static void ipu_di_config_clock(struct ipu_di *di,
 
 		error = rate / (sig->mode.pixelclock / 1000);
 
-		dev_dbg(di->ipu->dev, "  IPU clock can give %lu with divider %u, error %d.%u%%\n",
-			rate, div, (signed)(error - 1000) / 10, error % 10);
+		dev_dbg(di->ipu->dev, "  IPU clock can give %lu with divider %u, error %c%d.%d%%\n",
+			rate, div, error < 1000 ? '-' : '+',
+			abs(error - 1000) / 10, abs(error - 1000) % 10);
 
 		/* Allow a 1% error */
 		if (error < 1010 && error >= 990) {
drivers/hv/hv_balloon.c +34 -2
index 439f99b8b5de..3cf334c46c31 100644
@@ -1653,6 +1653,38 @@ static void disable_page_reporting(void)
 	}
 }
 
+static int ballooning_enabled(void)
+{
+	/*
+	 * Disable ballooning if the page size is not 4k (HV_HYP_PAGE_SIZE),
+	 * since currently it's unclear to us whether an unballoon request can
+	 * make sure all page ranges are guest page size aligned.
+	 */
+	if (PAGE_SIZE != HV_HYP_PAGE_SIZE) {
+		pr_info("Ballooning disabled because page size is not 4096 bytes\n");
+		return 0;
+	}
+
+	return 1;
+}
+
+static int hot_add_enabled(void)
+{
+	/*
+	 * Disable hot add on ARM64, because we currently rely on
+	 * memory_add_physaddr_to_nid() to get a node id of a hot add range,
+	 * however ARM64's memory_add_physaddr_to_nid() always return 0 and
+	 * DM_MEM_HOT_ADD_REQUEST doesn't have the NUMA node information for
+	 * add_memory().
+	 */
+	if (IS_ENABLED(CONFIG_ARM64)) {
+		pr_info("Memory hot add disabled on ARM64\n");
+		return 0;
+	}
+
+	return 1;
+}
+
 static int balloon_connect_vsp(struct hv_device *dev)
 {
 	struct dm_version_request version_req;
@@ -1724,8 +1756,8 @@ static int balloon_connect_vsp(struct hv_device *dev)
 	 * currently still requires the bits to be set, so we have to add code
 	 * to fail the host's hot-add and balloon up/down requests, if any.
 	 */
-	cap_msg.caps.cap_bits.balloon = 1;
-	cap_msg.caps.cap_bits.hot_add = 1;
+	cap_msg.caps.cap_bits.balloon = ballooning_enabled();
+	cap_msg.caps.cap_bits.hot_add = hot_add_enabled();
 
 	/*
 	 * Specify our alignment requirements as it relates
drivers/hv/hv_common.c +11 -0
index 181d16bbf49d..820e81406251 100644
@@ -20,6 +20,7 @@
 #include <linux/panic_notifier.h>
 #include <linux/ptrace.h>
 #include <linux/slab.h>
+#include <linux/dma-map-ops.h>
 #include <asm/hyperv-tlfs.h>
 #include <asm/mshyperv.h>
 
@@ -216,6 +217,16 @@ bool hv_query_ext_cap(u64 cap_query)
 }
 EXPORT_SYMBOL_GPL(hv_query_ext_cap);
 
+void hv_setup_dma_ops(struct device *dev, bool coherent)
+{
+	/*
+	 * Hyper-V does not offer a vIOMMU in the guest
+	 * VM, so pass 0/NULL for the IOMMU settings
+	 */
+	arch_setup_dma_ops(dev, 0, 0, NULL, coherent);
+}
+EXPORT_SYMBOL_GPL(hv_setup_dma_ops);
+
 bool hv_is_hibernation_supported(void)
 {
 	return !hv_root_partition && acpi_sleep_state_supported(ACPI_STATE_S4);
drivers/hv/ring_buffer.c +10 -1
index 71efacb90965..3d215d9dec43 100644
@@ -439,7 +439,16 @@ int hv_ringbuffer_read(struct vmbus_channel *channel,
 static u32 hv_pkt_iter_avail(const struct hv_ring_buffer_info *rbi)
 {
 	u32 priv_read_loc = rbi->priv_read_index;
-	u32 write_loc = READ_ONCE(rbi->ring_buffer->write_index);
+	u32 write_loc;
+
+	/*
+	 * The Hyper-V host writes the packet data, then uses
+	 * store_release() to update the write_index.  Use load_acquire()
+	 * here to prevent loads of the packet data from being re-ordered
+	 * before the read of the write_index and potentially getting
+	 * stale data.
+	 */
+	write_loc = virt_load_acquire(&rbi->ring_buffer->write_index);
 
 	if (write_loc >= priv_read_loc)
 		return write_loc - priv_read_loc;
drivers/hv/vmbus_drv.c +43 -6

91 lines not on this page · raw message

drivers/i2c/busses/i2c-pasemi-core.c +6 -0
index 7728c8460dc0..9028ffb58cc0 100644
@@ -137,6 +137,12 @@ static int pasemi_i2c_xfer_msg(struct i2c_adapter *adapter,
 
 		TXFIFO_WR(smbus, msg->buf[msg->len-1] |
 			  (stop ? MTXFIFO_STOP : 0));
+
+		if (stop) {
+			err = pasemi_smb_waitready(smbus);
+			if (err)
+				goto reset_out;
+		}
 	}
 
 	return 0;
drivers/i2c/i2c-dev.c +10 -5
index cf5d049342ea..6fd2b6718b08 100644
@@ -668,16 +668,21 @@ static int i2cdev_attach_adapter(struct device *dev, void *dummy)
 	i2c_dev->dev.class = i2c_dev_class;
 	i2c_dev->dev.parent = &adap->dev;
 	i2c_dev->dev.release = i2cdev_dev_release;
-	dev_set_name(&i2c_dev->dev, "i2c-%d", adap->nr);
+
+	res = dev_set_name(&i2c_dev->dev, "i2c-%d", adap->nr);
+	if (res)
+		goto err_put_i2c_dev;
 
 	res = cdev_device_add(&i2c_dev->cdev, &i2c_dev->dev);
-	if (res) {
-		put_i2c_dev(i2c_dev, false);
-		return res;
-	}
+	if (res)
+		goto err_put_i2c_dev;
 
 	pr_debug("adapter [%s] registered as minor %d\n", adap->name, adap->nr);
 	return 0;
+
+err_put_i2c_dev:
+	put_i2c_dev(i2c_dev, false);
+	return res;
 }
 
 static int i2cdev_detach_adapter(struct device *dev, void *dummy)
drivers/md/dm-integrity.c +5 -2
index 9399006dbc54..ffe50be8b687 100644
@@ -4400,6 +4400,7 @@ static int dm_integrity_ctr(struct dm_target *ti, unsigned argc, char **argv)
 	}
 
 	if (ic->internal_hash) {
+		size_t recalc_tags_size;
 		ic->recalc_wq = alloc_workqueue("dm-integrity-recalc", WQ_MEM_RECLAIM, 1);
 		if (!ic->recalc_wq ) {
 			ti->error = "Cannot allocate workqueue";
@@ -4413,8 +4414,10 @@ static int dm_integrity_ctr(struct dm_target *ti, unsigned argc, char **argv)
 			r = -ENOMEM;
 			goto bad;
 		}
-		ic->recalc_tags = kvmalloc_array(RECALC_SECTORS >> ic->sb->log2_sectors_per_block,
-						 ic->tag_size, GFP_KERNEL);
+		recalc_tags_size = (RECALC_SECTORS >> ic->sb->log2_sectors_per_block) * ic->tag_size;
+		if (crypto_shash_digestsize(ic->internal_hash) > ic->tag_size)
+			recalc_tags_size += crypto_shash_digestsize(ic->internal_hash) - ic->tag_size;
+		ic->recalc_tags = kvmalloc(recalc_tags_size, GFP_KERNEL);
 		if (!ic->recalc_tags) {
 			ti->error = "Cannot allocate tags for recalculating";
 			r = -ENOMEM;
drivers/md/dm-ps-historical-service-time.c +5 -6
index 875bca30a0dd..82f2a06153dc 100644
@@ -27,7 +27,6 @@
 #include <linux/blkdev.h>
 #include <linux/slab.h>
 #include <linux/module.h>
-#include <linux/sched/clock.h>
 
 
 #define DM_MSG_PREFIX	"multipath historical-service-time"
@@ -433,7 +432,7 @@ static struct dm_path *hst_select_path(struct path_selector *ps,
 {
 	struct selector *s = ps->context;
 	struct path_info *pi = NULL, *best = NULL;
-	u64 time_now = sched_clock();
+	u64 time_now = ktime_get_ns();
 	struct dm_path *ret = NULL;
 	unsigned long flags;
 
@@ -474,7 +473,7 @@ static int hst_start_io(struct path_selector *ps, struct dm_path *path,
 
 static u64 path_service_time(struct path_info *pi, u64 start_time)
 {
-	u64 sched_now = ktime_get_ns();
+	u64 now = ktime_get_ns();
 
 	/* if a previous disk request has finished after this IO was
 	 * sent to the hardware, pretend the submission happened
@@ -483,11 +482,11 @@ static u64 path_service_time(struct path_info *pi, u64 start_time)
 	if (time_after64(pi->last_finish, start_time))
 		start_time = pi->last_finish;
 
-	pi->last_finish = sched_now;
-	if (time_before64(sched_now, start_time))
+	pi->last_finish = now;
+	if (time_before64(now, start_time))
 		return 0;
 
-	return sched_now - start_time;
+	return now - start_time;
 }
 
 static int hst_end_io(struct path_selector *ps, struct dm_path *path,
drivers/media/platform/rockchip/rga/rga.c +1 -1
index 4de5e8d2b261..3d3d1062e212 100644
@@ -892,7 +892,7 @@ static int rga_probe(struct platform_device *pdev)
 	}
 	rga->dst_mmu_pages =
 		(unsigned int *)__get_free_pages(GFP_KERNEL | __GFP_ZERO, 3);
-	if (rga->dst_mmu_pages) {
+	if (!rga->dst_mmu_pages) {
 		ret = -ENOMEM;
 		goto free_src_pages;
 	}
drivers/media/tuners/si2157.c +11 -11
index 47029746b89e..0de587b412d4 100644
@@ -77,16 +77,16 @@ static int si2157_cmd_execute(struct i2c_client *client, struct si2157_cmd *cmd)
 }
 
 static const struct si2157_tuner_info si2157_tuners[] = {
-	{ SI2141, false, 0x60, SI2141_60_FIRMWARE, SI2141_A10_FIRMWARE },
-	{ SI2141, false, 0x61, SI2141_61_FIRMWARE, SI2141_A10_FIRMWARE },
-	{ SI2146, false, 0x11, SI2146_11_FIRMWARE, NULL },
-	{ SI2147, false, 0x50, SI2147_50_FIRMWARE, NULL },
-	{ SI2148, true,  0x32, SI2148_32_FIRMWARE, SI2158_A20_FIRMWARE },
-	{ SI2148, true,  0x33, SI2148_33_FIRMWARE, SI2158_A20_FIRMWARE },
-	{ SI2157, false, 0x50, SI2157_50_FIRMWARE, SI2157_A30_FIRMWARE },
-	{ SI2158, false, 0x50, SI2158_50_FIRMWARE, SI2158_A20_FIRMWARE },
-	{ SI2158, false, 0x51, SI2158_51_FIRMWARE, SI2158_A20_FIRMWARE },
-	{ SI2177, false, 0x50, SI2177_50_FIRMWARE, SI2157_A30_FIRMWARE },
+	{ SI2141, 0x60, false, SI2141_60_FIRMWARE, SI2141_A10_FIRMWARE },
+	{ SI2141, 0x61, false, SI2141_61_FIRMWARE, SI2141_A10_FIRMWARE },
+	{ SI2146, 0x11, false, SI2146_11_FIRMWARE, NULL },
+	{ SI2147, 0x50, false, SI2147_50_FIRMWARE, NULL },
+	{ SI2148, 0x32, true,  SI2148_32_FIRMWARE, SI2158_A20_FIRMWARE },
+	{ SI2148, 0x33, true,  SI2148_33_FIRMWARE, SI2158_A20_FIRMWARE },
+	{ SI2157, 0x50, false, SI2157_50_FIRMWARE, SI2157_A30_FIRMWARE },
+	{ SI2158, 0x50, false, SI2158_50_FIRMWARE, SI2158_A20_FIRMWARE },
+	{ SI2158, 0x51, false, SI2158_51_FIRMWARE, SI2158_A20_FIRMWARE },
+	{ SI2177, 0x50, false, SI2177_50_FIRMWARE, SI2157_A30_FIRMWARE },
 };
 
 static int si2157_load_firmware(struct dvb_frontend *fe,
@@ -178,7 +178,7 @@ static int si2157_find_and_load_firmware(struct dvb_frontend *fe)
 		}
 	}
 
-	if (!fw_name && !fw_alt_name) {
+	if (required && !fw_name && !fw_alt_name) {
 		dev_err(&client->dev,
 			"unknown chip version Si21%d-%c%c%c ROM 0x%02x\n",
 			part_id, cmd.args[1], cmd.args[3], cmd.args[4], rom_id);
drivers/memory/atmel-ebi.c +17 -6
index c267283b01fd..e749dcb3ddea 100644
@@ -544,20 +544,27 @@ static int atmel_ebi_probe(struct platform_device *pdev)
 	smc_np = of_parse_phandle(dev->of_node, "atmel,smc", 0);
 
 	ebi->smc.regmap = syscon_node_to_regmap(smc_np);
-	if (IS_ERR(ebi->smc.regmap))
-		return PTR_ERR(ebi->smc.regmap);
+	if (IS_ERR(ebi->smc.regmap)) {
+		ret = PTR_ERR(ebi->smc.regmap);
+		goto put_node;
+	}
 
 	ebi->smc.layout = atmel_hsmc_get_reg_layout(smc_np);
-	if (IS_ERR(ebi->smc.layout))
-		return PTR_ERR(ebi->smc.layout);
+	if (IS_ERR(ebi->smc.layout)) {
+		ret = PTR_ERR(ebi->smc.layout);
+		goto put_node;
+	}
 
 	ebi->smc.clk = of_clk_get(smc_np, 0);
 	if (IS_ERR(ebi->smc.clk)) {
-		if (PTR_ERR(ebi->smc.clk) != -ENOENT)
-			return PTR_ERR(ebi->smc.clk);
+		if (PTR_ERR(ebi->smc.clk) != -ENOENT) {
+			ret = PTR_ERR(ebi->smc.clk);
+			goto put_node;
+		}
 
 		ebi->smc.clk = NULL;
 	}
+	of_node_put(smc_np);
 	ret = clk_prepare_enable(ebi->smc.clk);
 	if (ret)
 		return ret;
@@ -608,6 +615,10 @@ static int atmel_ebi_probe(struct platform_device *pdev)
 	}
 
 	return of_platform_populate(np, NULL, NULL, dev);
+
+put_node:
+	of_node_put(smc_np);
+	return ret;
 }
 
 static __maybe_unused int atmel_ebi_resume(struct device *dev)
drivers/memory/renesas-rpc-if.c +9 -1
index e4cc64f56019..2e545f473cc6 100644
@@ -651,6 +651,7 @@ static int rpcif_probe(struct platform_device *pdev)
 	struct platform_device *vdev;
 	struct device_node *flash;
 	const char *name;
+	int ret;
 
 	flash = of_get_next_child(pdev->dev.of_node, NULL);
 	if (!flash) {
@@ -674,7 +675,14 @@ static int rpcif_probe(struct platform_device *pdev)
 		return -ENOMEM;
 	vdev->dev.parent = &pdev->dev;
 	platform_set_drvdata(pdev, vdev);
-	return platform_device_add(vdev);
+
+	ret = platform_device_add(vdev);
+	if (ret) {
+		platform_device_put(vdev);
+		return ret;
+	}
+
+	return 0;
 }
 
 static int rpcif_remove(struct platform_device *pdev)
drivers/net/dsa/ocelot/felix.c +23 -0
index 9957772201d5..c414d9e9d7c0 100644
@@ -599,6 +599,8 @@ static int felix_change_tag_protocol(struct dsa_switch *ds, int cpu,
 	struct ocelot *ocelot = ds->priv;
 	struct felix *felix = ocelot_to_felix(ocelot);
 	enum dsa_tag_protocol old_proto = felix->tag_proto;
+	bool cpu_port_active = false;
+	struct dsa_port *dp;
 	int err;
 
 	if (proto != DSA_TAG_PROTO_SEVILLE &&
@@ -606,6 +608,27 @@ static int felix_change_tag_protocol(struct dsa_switch *ds, int cpu,
 	    proto != DSA_TAG_PROTO_OCELOT_8021Q)
 		return -EPROTONOSUPPORT;
 
+	/* We don't support multiple CPU ports, yet the DT blob may have
+	 * multiple CPU ports defined. The first CPU port is the active one,
+	 * the others are inactive. In this case, DSA will call
+	 * ->change_tag_protocol() multiple times, once per CPU port.
+	 * Since we implement the tagging protocol change towards "ocelot" or
+	 * "seville" as effectively initializing the NPI port, what we are
+	 * doing is effectively changing who the NPI port is to the last @cpu
+	 * argument passed, which is an unused DSA CPU port and not the one
+	 * that should actively pass traffic.
+	 * Suppress DSA's calls on CPU ports that are inactive.
+	 */
+	dsa_switch_for_each_user_port(dp, ds) {
+		if (dp->cpu_dp->index == cpu) {
+			cpu_port_active = true;
+			break;
+		}
+	}
+
+	if (!cpu_port_active)
+		return 0;
+
 	felix_del_tag_protocol(ds, cpu, old_proto);
 
 	err = felix_set_tag_protocol(ds, cpu, proto);
drivers/net/dsa/ocelot/felix_vsc9959.c +1 -1
index 2875b5250856..443d34ce2853 100644
@@ -2328,7 +2328,7 @@ static int felix_pci_probe(struct pci_dev *pdev,
 
 	err = dsa_register_switch(ds);
 	if (err) {
-		dev_err(&pdev->dev, "Failed to register DSA switch: %d\n", err);
+		dev_err_probe(&pdev->dev, err, "Failed to register DSA switch\n");
 		goto err_register_ds;
 	}
 
drivers/net/dsa/realtek/Kconfig +1 -0
index 1c62212fb0ec..1315896ed6e2 100644
@@ -14,6 +14,7 @@ menuconfig NET_DSA_REALTEK
 config NET_DSA_REALTEK_SMI
 	tristate "Realtek SMI connected switch driver"
 	depends on NET_DSA_REALTEK
+	depends on OF
 	default y
 	help
 	  Select to enable support for registering switches connected
drivers/net/dsa/realtek/realtek-smi-core.c +45 -3

78 lines not on this page · raw message

drivers/net/dsa/realtek/realtek-smi-core.h +2 -0
index faed387d8db3..5fcad51e1984 100644
@@ -49,6 +49,8 @@ struct realtek_smi {
 	struct gpio_desc	*mdc;
 	struct gpio_desc	*mdio;
 	struct regmap		*map;
+	struct regmap		*map_nolock;
+	struct mutex		map_lock;
 	struct mii_bus		*slave_mii_bus;
 
 	unsigned int		clk_delay;
drivers/net/dsa/realtek/rtl8365mb.c +33 -21

123 lines not on this page · raw message

drivers/net/ethernet/broadcom/genet/bcmgenet.c +2 -2
index bd5998012a87..2da804f84b48 100644
@@ -76,7 +76,7 @@ static inline void bcmgenet_writel(u32 value, void __iomem *offset)
 	if (IS_ENABLED(CONFIG_MIPS) && IS_ENABLED(CONFIG_CPU_BIG_ENDIAN))
 		__raw_writel(value, offset);
 	else
-		writel(value, offset);
+		writel_relaxed(value, offset);
 }
 
 static inline u32 bcmgenet_readl(void __iomem *offset)
@@ -84,7 +84,7 @@ static inline u32 bcmgenet_readl(void __iomem *offset)
 	if (IS_ENABLED(CONFIG_MIPS) && IS_ENABLED(CONFIG_CPU_BIG_ENDIAN))
 		return __raw_readl(offset);
 	else
-		return readl(offset);
+		return readl_relaxed(offset);
 }
 
 static inline void dmadesc_set_length_status(struct bcmgenet_priv *priv,
drivers/net/ethernet/faraday/ftgmac100.c +5 -5
index d5356db7539a..caf48023f8ea 100644
@@ -1835,11 +1835,6 @@ static int ftgmac100_probe(struct platform_device *pdev)
 		priv->rxdes0_edorr_mask = BIT(30);
 		priv->txdes0_edotr_mask = BIT(30);
 		priv->is_aspeed = true;
-		/* Disable ast2600 problematic HW arbitration */
-		if (of_device_is_compatible(np, "aspeed,ast2600-mac")) {
-			iowrite32(FTGMAC100_TM_DEFAULT,
-				  priv->base + FTGMAC100_OFFSET_TM);
-		}
 	} else {
 		priv->rxdes0_edorr_mask = BIT(15);
 		priv->txdes0_edotr_mask = BIT(15);
@@ -1911,6 +1906,11 @@ static int ftgmac100_probe(struct platform_device *pdev)
 		err = ftgmac100_setup_clk(priv);
 		if (err)
 			goto err_phy_connect;
+
+		/* Disable ast2600 problematic HW arbitration */
+		if (of_device_is_compatible(np, "aspeed,ast2600-mac"))
+			iowrite32(FTGMAC100_TM_DEFAULT,
+				  priv->base + FTGMAC100_OFFSET_TM);
 	}
 
 	/* Default ring sizes */
drivers/net/ethernet/intel/iavf/iavf_main.c +2 -5
index d10e9a8e8011..f55ecb672768 100644
@@ -2817,7 +2817,6 @@ static void iavf_reset_task(struct work_struct *work)
 	running = adapter->state == __IAVF_RUNNING;
 
 	if (running) {
-		netdev->flags &= ~IFF_UP;
 		netif_carrier_off(netdev);
 		netif_tx_stop_all_queues(netdev);
 		adapter->link_up = false;
@@ -2934,7 +2933,7 @@ static void iavf_reset_task(struct work_struct *work)
 		 * to __IAVF_RUNNING
 		 */
 		iavf_up_complete(adapter);
-		netdev->flags |= IFF_UP;
+
 		iavf_irq_enable(adapter, true);
 	} else {
 		iavf_change_state(adapter, __IAVF_DOWN);
@@ -2950,10 +2949,8 @@ static void iavf_reset_task(struct work_struct *work)
 reset_err:
 	mutex_unlock(&adapter->client_lock);
 	mutex_unlock(&adapter->crit_lock);
-	if (running) {
+	if (running)
 		iavf_change_state(adapter, __IAVF_RUNNING);
-		netdev->flags |= IFF_UP;
-	}
 	dev_err(&adapter->pdev->dev, "failed to allocate resources during reinit\n");
 	iavf_close(netdev);
 }
drivers/net/ethernet/intel/ice/ice_arfs.c +2 -7
index 5daade32ea62..fba178e07600 100644
@@ -577,7 +577,7 @@ void ice_free_cpu_rx_rmap(struct ice_vsi *vsi)
 {
 	struct net_device *netdev;
 
-	if (!vsi || vsi->type != ICE_VSI_PF || !vsi->arfs_fltr_list)
+	if (!vsi || vsi->type != ICE_VSI_PF)
 		return;
 
 	netdev = vsi->netdev;
@@ -599,7 +599,7 @@ int ice_set_cpu_rx_rmap(struct ice_vsi *vsi)
 	int base_idx, i;
 
 	if (!vsi || vsi->type != ICE_VSI_PF)
-		return -EINVAL;
+		return 0;
 
 	pf = vsi->back;
 	netdev = vsi->netdev;
@@ -636,7 +636,6 @@ void ice_remove_arfs(struct ice_pf *pf)
 	if (!pf_vsi)
 		return;
 
-	ice_free_cpu_rx_rmap(pf_vsi);
 	ice_clear_arfs(pf_vsi);
 }
 
@@ -653,9 +652,5 @@ void ice_rebuild_arfs(struct ice_pf *pf)
 		return;
 
 	ice_remove_arfs(pf);
-	if (ice_set_cpu_rx_rmap(pf_vsi)) {
-		dev_err(ice_pf_to_dev(pf), "Failed to rebuild aRFS\n");
-		return;
-	}
 	ice_init_arfs(pf_vsi);
 }
drivers/net/ethernet/intel/ice/ice_lib.c +4 -1
index 5fd2bbeab2d1..15bb6f001a04 100644
@@ -2869,6 +2869,8 @@ void ice_vsi_free_irq(struct ice_vsi *vsi)
 		return;
 
 	vsi->irqs_ready = false;
+	ice_free_cpu_rx_rmap(vsi);
+
 	ice_for_each_q_vector(vsi, i) {
 		u16 vector = i + base;
 		int irq_num;
@@ -2882,7 +2884,8 @@ void ice_vsi_free_irq(struct ice_vsi *vsi)
 			continue;
 
 		/* clear the affinity notifier in the IRQ descriptor */
-		irq_set_affinity_notifier(irq_num, NULL);
+		if (!IS_ENABLED(CONFIG_RFS_ACCEL))
+			irq_set_affinity_notifier(irq_num, NULL);
 
 		/* clear the affinity_mask in the IRQ descriptor */
 		irq_set_affinity_hint(irq_num, NULL);
drivers/net/ethernet/intel/ice/ice_main.c +8 -10
index db2e02e673a7..2de2bbbca1e9 100644
@@ -2494,6 +2494,13 @@ static int ice_vsi_req_irq_msix(struct ice_vsi *vsi, char *basename)
 		irq_set_affinity_hint(irq_num, &q_vector->affinity_mask);
 	}
 
+	err = ice_set_cpu_rx_rmap(vsi);
+	if (err) {
+		netdev_err(vsi->netdev, "Failed to setup CPU RMAP on VSI %u: %pe\n",
+			   vsi->vsi_num, ERR_PTR(err));
+		goto free_q_irqs;
+	}
+
 	vsi->irqs_ready = true;
 	return 0;
 
@@ -3605,20 +3612,12 @@ static int ice_setup_pf_sw(struct ice_pf *pf)
 	 */
 	ice_napi_add(vsi);
 
-	status = ice_set_cpu_rx_rmap(vsi);
-	if (status) {
-		dev_err(dev, "Failed to set CPU Rx map VSI %d error %d\n",
-			vsi->vsi_num, status);
-		goto unroll_napi_add;
-	}
 	status = ice_init_mac_fltr(pf);
 	if (status)
-		goto free_cpu_rx_map;
+		goto unroll_napi_add;
 
 	return 0;
 
-free_cpu_rx_map:
-	ice_free_cpu_rx_rmap(vsi);
 unroll_napi_add:
 	ice_tc_indir_block_unregister(vsi);
 unroll_cfg_netdev:
@@ -5076,7 +5075,6 @@ static int __maybe_unused ice_suspend(struct device *dev)
 			continue;
 		ice_vsi_free_q_vectors(pf->vsi[v]);
 	}
-	ice_free_cpu_rx_rmap(ice_get_main_vsi(pf));
 	ice_clear_interrupt_scheme(pf);
 
 	pci_save_state(pdev);
drivers/net/ethernet/mellanox/mlxsw/i2c.c +1 -0
index 939b692ffc33..ce843ea91464 100644
@@ -650,6 +650,7 @@ static int mlxsw_i2c_probe(struct i2c_client *client,
 	return 0;
 
 errout:
+	mutex_destroy(&mlxsw_i2c->cmd.lock);
 	i2c_set_clientdata(client, NULL);
 
 	return err;
drivers/net/ethernet/micrel/Kconfig +1 -0
index 93df3049cdc0..1b632cdd7630 100644
@@ -39,6 +39,7 @@ config KS8851
 config KS8851_MLL
 	tristate "Micrel KS8851 MLL"
 	depends on HAS_IOMEM
+	depends on PTP_1588_CLOCK_OPTIONAL
 	select MII
 	select CRC32
 	select EEPROM_93CX6
drivers/net/ethernet/microchip/lan966x/lan966x_mac.c +4 -2
index ce5970bdcc6a..2679111ef669 100644
@@ -346,7 +346,8 @@ static void lan966x_mac_irq_process(struct lan966x *lan966x, u32 row,
 
 			lan966x_mac_process_raw_entry(&raw_entries[column],
 						      mac, &vid, &dest_idx);
-			WARN_ON(dest_idx > lan966x->num_phys_ports);
+			if (WARN_ON(dest_idx > lan966x->num_phys_ports))
+				continue;
 
 			/* If the entry in SW is found, then there is nothing
 			 * to do
@@ -392,7 +393,8 @@ static void lan966x_mac_irq_process(struct lan966x *lan966x, u32 row,
 
 		lan966x_mac_process_raw_entry(&raw_entries[column],
 					      mac, &vid, &dest_idx);
-		WARN_ON(dest_idx > lan966x->num_phys_ports);
+		if (WARN_ON(dest_idx > lan966x->num_phys_ports))
+			continue;
 
 		mac_entry = lan966x_mac_alloc_entry(mac, vid, dest_idx);
 		if (!mac_entry)
drivers/net/ethernet/microchip/lan966x/lan966x_switchdev.c +1 -2
index 7de55f6a4da8..3c987fd6b9e2 100644
@@ -261,8 +261,7 @@ static int lan966x_port_prechangeupper(struct net_device *dev,
 
 	if (netif_is_bridge_master(info->upper_dev) && !info->linking)
 		switchdev_bridge_port_unoffload(port->dev, port,
-						&lan966x_switchdev_nb,
-						&lan966x_switchdev_blocking_nb);
+						NULL, NULL);
 
 	return NOTIFY_DONE;
 }
drivers/net/ethernet/myricom/myri10ge/myri10ge.c +2 -4
index 50ac3ee2577a..21d2645885ce 100644
@@ -2903,11 +2903,9 @@ static netdev_tx_t myri10ge_sw_tso(struct sk_buff *skb,
 		status = myri10ge_xmit(curr, dev);
 		if (status != 0) {
 			dev_kfree_skb_any(curr);
-			if (segs != NULL) {
-				curr = segs;
-				segs = next;
+			skb_list_walk_safe(next, curr, next) {
 				curr->next = NULL;
-				dev_kfree_skb_any(segs);
+				dev_kfree_skb_any(curr);
 			}
 			goto drop;
 		}
drivers/net/ethernet/stmicro/stmmac/altr_tse_pcs.c +0 -8
index cd478d2cd871..00f6d347eaf7 100644
@@ -57,10 +57,6 @@
 #define TSE_PCS_USE_SGMII_ENA				BIT(0)
 #define TSE_PCS_IF_USE_SGMII				0x03
 
-#define SGMII_ADAPTER_CTRL_REG				0x00
-#define SGMII_ADAPTER_DISABLE				0x0001
-#define SGMII_ADAPTER_ENABLE				0x0000
-
 #define AUTONEGO_LINK_TIMER				20
 
 static int tse_pcs_reset(void __iomem *base, struct tse_pcs *pcs)
@@ -202,12 +198,8 @@ void tse_pcs_fix_mac_speed(struct tse_pcs *pcs, struct phy_device *phy_dev,
 			   unsigned int speed)
 {
 	void __iomem *tse_pcs_base = pcs->tse_pcs_base;
-	void __iomem *sgmii_adapter_base = pcs->sgmii_adapter_base;
 	u32 val;
 
-	writew(SGMII_ADAPTER_ENABLE,
-	       sgmii_adapter_base + SGMII_ADAPTER_CTRL_REG);
-
 	pcs->autoneg = phy_dev->autoneg;
 
 	if (phy_dev->autoneg == AUTONEG_ENABLE) {
drivers/net/ethernet/stmicro/stmmac/altr_tse_pcs.h +4 -0
index 442812c0a4bd..694ac25ef426 100644
@@ -10,6 +10,10 @@
 #include <linux/phy.h>
 #include <linux/timer.h>
 
+#define SGMII_ADAPTER_CTRL_REG		0x00
+#define SGMII_ADAPTER_ENABLE		0x0000
+#define SGMII_ADAPTER_DISABLE		0x0001
+
 struct tse_pcs {
 	struct device *dev;
 	void __iomem *tse_pcs_base;
drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c +5 -8
index b7c2579c963b..ac9e6c7a33b5 100644
@@ -18,9 +18,6 @@
 
 #include "altr_tse_pcs.h"
 
-#define SGMII_ADAPTER_CTRL_REG                          0x00
-#define SGMII_ADAPTER_DISABLE                           0x0001
-
 #define SYSMGR_EMACGRP_CTRL_PHYSEL_ENUM_GMII_MII 0x0
 #define SYSMGR_EMACGRP_CTRL_PHYSEL_ENUM_RGMII 0x1
 #define SYSMGR_EMACGRP_CTRL_PHYSEL_ENUM_RMII 0x2
@@ -62,16 +59,14 @@ static void socfpga_dwmac_fix_mac_speed(void *priv, unsigned int speed)
 {
 	struct socfpga_dwmac *dwmac = (struct socfpga_dwmac *)priv;
 	void __iomem *splitter_base = dwmac->splitter_base;
-	void __iomem *tse_pcs_base = dwmac->pcs.tse_pcs_base;
 	void __iomem *sgmii_adapter_base = dwmac->pcs.sgmii_adapter_base;
 	struct device *dev = dwmac->dev;
 	struct net_device *ndev = dev_get_drvdata(dev);
 	struct phy_device *phy_dev = ndev->phydev;
 	u32 val;
 
-	if ((tse_pcs_base) && (sgmii_adapter_base))
-		writew(SGMII_ADAPTER_DISABLE,
-		       sgmii_adapter_base + SGMII_ADAPTER_CTRL_REG);
+	writew(SGMII_ADAPTER_DISABLE,
+	       sgmii_adapter_base + SGMII_ADAPTER_CTRL_REG);
 
 	if (splitter_base) {
 		val = readl(splitter_base + EMAC_SPLITTER_CTRL_REG);
@@ -93,7 +88,9 @@ static void socfpga_dwmac_fix_mac_speed(void *priv, unsigned int speed)
 		writel(val, splitter_base + EMAC_SPLITTER_CTRL_REG);
 	}
 
-	if (tse_pcs_base && sgmii_adapter_base)
+	writew(SGMII_ADAPTER_ENABLE,
+	       sgmii_adapter_base + SGMII_ADAPTER_CTRL_REG);
+	if (phy_dev)
 		tse_pcs_fix_mac_speed(&dwmac->pcs, phy_dev, speed);
 }
 
drivers/net/ethernet/xilinx/xilinx_axienet_main.c +6 -7
index 90d96eb79984..a960227f61da 100644
@@ -2072,15 +2072,14 @@ static int axienet_probe(struct platform_device *pdev)
 	if (ret)
 		goto cleanup_clk;
 
-	lp->phy_node = of_parse_phandle(pdev->dev.of_node, "phy-handle", 0);
-	if (lp->phy_node) {
-		ret = axienet_mdio_setup(lp);
-		if (ret)
-			dev_warn(&pdev->dev,
-				 "error registering MDIO bus: %d\n", ret);
-	}
+	ret = axienet_mdio_setup(lp);
+	if (ret)
+		dev_warn(&pdev->dev,
+			 "error registering MDIO bus: %d\n", ret);
+
 	if (lp->phy_mode == PHY_INTERFACE_MODE_SGMII ||
 	    lp->phy_mode == PHY_INTERFACE_MODE_1000BASEX) {
+		lp->phy_node = of_parse_phandle(pdev->dev.of_node, "phy-handle", 0);
 		if (!lp->phy_node) {
 			dev_err(&pdev->dev, "phy-handle required for 1000BaseX/SGMII\n");
 			ret = -EINVAL;
drivers/net/macvlan.c +6 -2
index 6ef5f77be4d0..c83664b28d89 100644
@@ -460,8 +460,10 @@ static rx_handler_result_t macvlan_handle_frame(struct sk_buff **pskb)
 			return RX_HANDLER_CONSUMED;
 		*pskb = skb;
 		eth = eth_hdr(skb);
-		if (macvlan_forward_source(skb, port, eth->h_source))
+		if (macvlan_forward_source(skb, port, eth->h_source)) {
+			kfree_skb(skb);
 			return RX_HANDLER_CONSUMED;
+		}
 		src = macvlan_hash_lookup(port, eth->h_source);
 		if (src && src->mode != MACVLAN_MODE_VEPA &&
 		    src->mode != MACVLAN_MODE_BRIDGE) {
@@ -480,8 +482,10 @@ static rx_handler_result_t macvlan_handle_frame(struct sk_buff **pskb)
 		return RX_HANDLER_PASS;
 	}
 
-	if (macvlan_forward_source(skb, port, eth->h_source))
+	if (macvlan_forward_source(skb, port, eth->h_source)) {
+		kfree_skb(skb);
 		return RX_HANDLER_CONSUMED;
+	}
 	if (macvlan_passthru(port))
 		vlan = list_first_or_null_rcu(&port->vlans,
 					      struct macvlan_dev, list);
drivers/net/mdio/fwnode_mdio.c +5 -0
index 1becb1a731f6..1c1584fca632 100644
@@ -43,6 +43,11 @@ int fwnode_mdiobus_phy_device_register(struct mii_bus *mdio,
 	int rc;
 
 	rc = fwnode_irq_get(child, 0);
+	/* Don't wait forever if the IRQ provider doesn't become available,
+	 * just fall back to poll mode
+	 */
+	if (rc == -EPROBE_DEFER)
+		rc = driver_deferred_probe_check_state(&phy->mdio.dev);
 	if (rc == -EPROBE_DEFER)
 		return rc;
 
drivers/net/slip/slip.c +1 -1
index 98f586f910fb..8ed4fcf70b9b 100644
@@ -469,7 +469,7 @@ static void sl_tx_timeout(struct net_device *dev, unsigned int txqueue)
 	spin_lock(&sl->lock);
 
 	if (netif_queue_stopped(dev)) {
-		if (!netif_running(dev))
+		if (!netif_running(dev) || !sl->tty)
 			goto out;
 
 		/* May be we must check transmitter timeout here ?
drivers/net/tun.c +1 -1
index de999e0fedbc..aa78d7e00289 100644
@@ -1106,7 +1106,7 @@ static netdev_tx_t tun_net_xmit(struct sk_buff *skb, struct net_device *dev)
 
 	/* NETIF_F_LLTX requires to do our own update of trans_start */
 	queue = netdev_get_tx_queue(dev, txq);
-	queue->trans_start = jiffies;
+	txq_trans_cond_update(queue);
 
 	/* Notify and wake up reader process */
 	if (tfile->flags & TUN_FASYNC)
drivers/net/usb/aqc111.c +7 -2
index ea06d10e1c21..ca409d450a29 100644
@@ -1102,10 +1102,15 @@ static int aqc111_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
 	if (start_of_descs != desc_offset)
 		goto err;
 
-	/* self check desc_offset from header*/
-	if (desc_offset >= skb_len)
+	/* self check desc_offset from header and make sure that the
+	 * bounds of the metadata array are inside the SKB
+	 */
+	if (pkt_count * 2 + desc_offset >= skb_len)
 		goto err;
 
+	/* Packets must not overlap the metadata array */
+	skb_trim(skb, desc_offset);
+
 	if (pkt_count == 0)
 		goto err;
 
drivers/net/veth.c +1 -1
index d29fb9759cc9..6c8f4f4dfc8a 100644
@@ -320,7 +320,7 @@ static netdev_tx_t veth_xmit(struct sk_buff *skb, struct net_device *dev)
 
 	rcu_read_lock();
 	rcv = rcu_dereference(priv->peer);
-	if (unlikely(!rcv)) {
+	if (unlikely(!rcv) || !pskb_may_pull(skb, ETH_HLEN)) {
 		kfree_skb(skb);
 		goto drop;
 	}
drivers/net/wireless/ath/ath11k/mac.c +14 -8
index 28de877ad6c4..f54d5819477a 100644
@@ -3131,6 +3131,20 @@ static void ath11k_mac_op_bss_info_changed(struct ieee80211_hw *hw,
 			arvif->do_not_send_tmpl = true;
 		else
 			arvif->do_not_send_tmpl = false;
+
+		if (vif->bss_conf.he_support) {
+			ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id,
+							    WMI_VDEV_PARAM_BA_MODE,
+							    WMI_BA_MODE_BUFFER_SIZE_256);
+			if (ret)
+				ath11k_warn(ar->ab,
+					    "failed to set BA BUFFER SIZE 256 for vdev: %d\n",
+					    arvif->vdev_id);
+			else
+				ath11k_dbg(ar->ab, ATH11K_DBG_MAC,
+					   "Set BA BUFFER SIZE 256 for VDEV: %d\n",
+					   arvif->vdev_id);
+		}
 	}
 
 	if (changed & (BSS_CHANGED_BEACON_INFO | BSS_CHANGED_BEACON)) {
@@ -3166,14 +3180,6 @@ static void ath11k_mac_op_bss_info_changed(struct ieee80211_hw *hw,
 
 		if (arvif->is_up && vif->bss_conf.he_support &&
 		    vif->bss_conf.he_oper.params) {
-			ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id,
-							    WMI_VDEV_PARAM_BA_MODE,
-							    WMI_BA_MODE_BUFFER_SIZE_256);
-			if (ret)
-				ath11k_warn(ar->ab,
-					    "failed to set BA BUFFER SIZE 256 for vdev: %d\n",
-					    arvif->vdev_id);
-
 			param_id = WMI_VDEV_PARAM_HEOPS_0_31;
 			param_value = vif->bss_conf.he_oper.params;
 			ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id,
drivers/net/wireless/ath/ath9k/main.c +1 -1
index 98090e40e1cf..e2791d45f5f5 100644
@@ -839,7 +839,7 @@ static bool ath9k_txq_list_has_key(struct list_head *txq_list, u32 keyix)
 			continue;
 
 		txinfo = IEEE80211_SKB_CB(bf->bf_mpdu);
-		fi = (struct ath_frame_info *)&txinfo->rate_driver_data[0];
+		fi = (struct ath_frame_info *)&txinfo->status.status_driver_data[0];
 		if (fi->keyix == keyix)
 			return true;
 	}
drivers/net/wireless/ath/ath9k/xmit.c +21 -12
index d0caf1de2bde..db83cc4ba810 100644
@@ -141,8 +141,8 @@ static struct ath_frame_info *get_frame_info(struct sk_buff *skb)
 {
 	struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb);
 	BUILD_BUG_ON(sizeof(struct ath_frame_info) >
-		     sizeof(tx_info->rate_driver_data));
-	return (struct ath_frame_info *) &tx_info->rate_driver_data[0];
+		     sizeof(tx_info->status.status_driver_data));
+	return (struct ath_frame_info *) &tx_info->status.status_driver_data[0];
 }
 
 static void ath_send_bar(struct ath_atx_tid *tid, u16 seqno)
@@ -2542,6 +2542,16 @@ static void ath_tx_complete_buf(struct ath_softc *sc, struct ath_buf *bf,
 	spin_unlock_irqrestore(&sc->tx.txbuflock, flags);
 }
 
+static void ath_clear_tx_status(struct ieee80211_tx_info *tx_info)
+{
+	void *ptr = &tx_info->status;
+
+	memset(ptr + sizeof(tx_info->status.rates), 0,
+	       sizeof(tx_info->status) -
+	       sizeof(tx_info->status.rates) -
+	       sizeof(tx_info->status.status_driver_data));
+}
+
 static void ath_tx_rc_status(struct ath_softc *sc, struct ath_buf *bf,
 			     struct ath_tx_status *ts, int nframes, int nbad,
 			     int txok)
@@ -2553,6 +2563,8 @@ static void ath_tx_rc_status(struct ath_softc *sc, struct ath_buf *bf,
 	struct ath_hw *ah = sc->sc_ah;
 	u8 i, tx_rateindex;
 
+	ath_clear_tx_status(tx_info);
+
 	if (txok)
 		tx_info->status.ack_signal = ts->ts_rssi;
 
@@ -2567,6 +2579,13 @@ static void ath_tx_rc_status(struct ath_softc *sc, struct ath_buf *bf,
 	tx_info->status.ampdu_len = nframes;
 	tx_info->status.ampdu_ack_len = nframes - nbad;
 
+	tx_info->status.rates[tx_rateindex].count = ts->ts_longretry + 1;
+
+	for (i = tx_rateindex + 1; i < hw->max_rates; i++) {
+		tx_info->status.rates[i].count = 0;
+		tx_info->status.rates[i].idx = -1;
+	}
+
 	if ((ts->ts_status & ATH9K_TXERR_FILT) == 0 &&
 	    (tx_info->flags & IEEE80211_TX_CTL_NO_ACK) == 0) {
 		/*
@@ -2588,16 +2607,6 @@ static void ath_tx_rc_status(struct ath_softc *sc, struct ath_buf *bf,
 			tx_info->status.rates[tx_rateindex].count =
 				hw->max_rate_tries;
 	}
-
-	for (i = tx_rateindex + 1; i < hw->max_rates; i++) {
-		tx_info->status.rates[i].count = 0;
-		tx_info->status.rates[i].idx = -1;
-	}
-
-	tx_info->status.rates[tx_rateindex].count = ts->ts_longretry + 1;
-
-	/* we report airtime in ath_tx_count_airtime(), don't report twice */
-	tx_info->status.tx_time = 0;
 }
 
 static void ath_tx_processq(struct ath_softc *sc, struct ath_txq *txq)
drivers/pci/controller/pci-hyperv.c +9 -0
index ae0bc2fee4ca..88b3b56d0522 100644
@@ -3404,6 +3404,15 @@ static int hv_pci_probe(struct hv_device *hdev,
 	hbus->bridge->domain_nr = dom;
 #ifdef CONFIG_X86
 	hbus->sysdata.domain = dom;
+#elif defined(CONFIG_ARM64)
+	/*
+	 * Set the PCI bus parent to be the corresponding VMbus
+	 * device. Then the VMbus device will be assigned as the
+	 * ACPI companion in pcibios_root_bridge_prepare() and
+	 * pci_dma_configure() will propagate device coherence
+	 * information to devices created on the bus.
+	 */
+	hbus->sysdata.parent = hdev->device.parent;
 #endif
 
 	hbus->hdev = hdev;
drivers/perf/fsl_imx8_ddr_perf.c +1 -1
index 94ebc1ecace7..b1b2a55de77f 100644
@@ -29,7 +29,7 @@
 #define CNTL_OVER_MASK		0xFFFFFFFE
 
 #define CNTL_CSV_SHIFT		24
-#define CNTL_CSV_MASK		(0xFF << CNTL_CSV_SHIFT)
+#define CNTL_CSV_MASK		(0xFFU << CNTL_CSV_SHIFT)
 
 #define EVENT_CYCLES_ID		0
 #define EVENT_CYCLES_COUNTER	0
drivers/regulator/wm8994-regulator.c +39 -3

54 lines not on this page · raw message

drivers/scsi/ibmvscsi_tgt/ibmvscsi_tgt.c +1 -1
index 61f06f6885a5..89b9fbce7488 100644
@@ -36,7 +36,7 @@
 
 #define IBMVSCSIS_VERSION	"v0.2"
 
-#define	INITIAL_SRP_LIMIT	800
+#define	INITIAL_SRP_LIMIT	1024
 #define	DEFAULT_MAX_SECTORS	256
 #define MAX_TXU			1024 * 1024
 
drivers/scsi/lpfc/lpfc.h +5 -2
index 98cabe09c040..8748c5996478 100644
@@ -897,6 +897,11 @@ enum lpfc_irq_chann_mode {
 	NHT_MODE,
 };
 
+enum lpfc_hba_bit_flags {
+	FABRIC_COMANDS_BLOCKED,
+	HBA_PCI_ERR,
+};
+
 struct lpfc_hba {
 	/* SCSI interface function jump table entries */
 	struct lpfc_io_buf * (*lpfc_get_scsi_buf)
@@ -1025,7 +1030,6 @@ struct lpfc_hba {
 					 * Firmware supports Forced Link Speed
 					 * capability
 					 */
-#define HBA_PCI_ERR		0x80000 /* The PCI slot is offline */
 #define HBA_FLOGI_ISSUED	0x100000 /* FLOGI was issued */
 #define HBA_SHORT_CMF		0x200000 /* shorter CMF timer routine */
 #define HBA_CGN_DAY_WRAP	0x400000 /* HBA Congestion info day wraps */
@@ -1335,7 +1339,6 @@ struct lpfc_hba {
 	atomic_t fabric_iocb_count;
 	struct timer_list fabric_block_timer;
 	unsigned long bit_flags;
-#define	FABRIC_COMANDS_BLOCKED	0
 	atomic_t num_rsrc_err;
 	atomic_t num_cmd_success;
 	unsigned long last_rsrc_error_time;
drivers/scsi/lpfc/lpfc_crtn.h +3 -0
index 89e36bf14d8f..d4340e5a3aac 100644
@@ -652,3 +652,6 @@ struct lpfc_vmid *lpfc_get_vmid_from_hashtable(struct lpfc_vport *vport,
 					      uint32_t hash, uint8_t *buf);
 void lpfc_vmid_vport_cleanup(struct lpfc_vport *vport);
 int lpfc_issue_els_qfpa(struct lpfc_vport *vport);
+
+void lpfc_sli_rpi_release(struct lpfc_vport *vport,
+			  struct lpfc_nodelist *ndlp);
drivers/scsi/lpfc/lpfc_hbadisc.c +97 -23

251 lines not on this page · raw message

drivers/scsi/lpfc/lpfc_init.c +63 -25

141 lines not on this page · raw message

drivers/scsi/lpfc/lpfc_nvme.c +18 -9
index 9601edd838e1..df73abb59407 100644

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

drivers/scsi/lpfc/lpfc_sli.c +45 -20

65 lines not on this page · raw message

drivers/scsi/megaraid/megaraid_sas.h +3 -0
index 2c9d1b796475..ae2aef9ba8cf 100644

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

drivers/scsi/megaraid/megaraid_sas_base.c +7 -0
index 82e1e24257bc..ca563498dcdb 100644

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

drivers/scsi/mpt3sas/mpt3sas_config.c +6 -3
index 0563078227de..a8dd14c91efd 100644

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

drivers/scsi/mvsas/mv_init.c +1 -0
index 44df7c03aab8..605a8eb7344a 100644

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

drivers/scsi/pm8001/pm80xx_hwi.c +24 -9
index 55163469030d..5853b3c0d76d 100644

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

drivers/scsi/scsi_transport_iscsi.c +105 -63

168 lines not on this page · raw message

drivers/spi/spi-cadence-quadspi.c +12 -34

46 lines not on this page · raw message

drivers/target/target_core_user.c +2 -1
index 7b2a89a67cdb..06a5c4086551 100644

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

drivers/vfio/pci/vfio_pci_core.c +74 -50

124 lines not on this page · raw message

fs/binfmt_elf.c +2 -2
index 11273b70271d..15b3fa639081 100644

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

fs/btrfs/block-group.c +27 -13
index a0aa6c7e2335..18e5ad5decde 100644

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

fs/btrfs/block-group.h +4 -0
index 5878b7ce3b78..faa7f1d6782a 100644

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

fs/btrfs/compression.c +8 -0
index 6158b870a269..93f704ba877e 100644

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

fs/btrfs/disk-io.c +3 -2
index 117afcda5aff..b43f80c3bffd 100644

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

fs/btrfs/extent-tree.c +1 -1
index 96427b1ecac3..e5b832d77df9 100644

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

fs/btrfs/extent_io.c +1 -4
index 99028984340a..e93526d86a92 100644

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

fs/btrfs/file.c +11 -2
index a0179cc62913..28ddd9cf2069 100644

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

fs/btrfs/inode.c +3 -4
index ec4950cfe1ea..9547088a9306 100644

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

fs/btrfs/volumes.c +2 -0
index f5688a25fca3..b0dfcc7a4225 100644

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

fs/cachefiles/namei.c +24 -9
index f256c8aff7bb..ca9f3e4ec4b3 100644

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

fs/cachefiles/xattr.c +1 -1
index 35465109d9c4..00b087c14995 100644

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

fs/cifs/cifsfs.c +15 -13
index 6e5246122ee2..792fdcfdc6ad 100644

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

fs/cifs/link.c +3 -0
index 852e54ee82c2..bbdf3281559c 100644

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

fs/io-wq.h +0 -1
index 04d374e65e54..dbecd27656c7 100644

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

fs/io_uring.c +39 -27

66 lines not on this page · raw message

fs/nfsd/filecache.c +15 -3
index cc2831cec669..496f7b3f7523 100644

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

include/asm-generic/mshyperv.h +1 -0
index c08758b6b364..c05d2ce9b6cd 100644

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

include/asm-generic/tlb.h +7 -3
index 2c68a545ffa7..71942a1c642d 100644

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

include/linux/kfence.h +24 -0
index f49e64222628..726857a4b680 100644

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

include/linux/static_call.h +17 -3
index fcc5b48989b3..3c50b0fdda16 100644

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

include/linux/sunrpc/svc.h +1 -0
index f35c22b3355f..66b49afb9e69 100644

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

include/linux/vfio_pci_core.h +2 -0
index ae6f4838ab75..6e5db4edc335 100644

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

include/net/flow_dissector.h +2 -0
index aa33e1092e2c..9f65f1bfbd24 100644

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

include/scsi/scsi_transport_iscsi.h +2 -0
index c5d7810fd792..037c77fb5dc5 100644

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

include/sound/core.h +1 -0
index b7e9b58d3c78..6d4cc49584c6 100644

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

include/sound/memalloc.h +5 -0
index 653dfffb3ac8..8d79cebf95f3 100644

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

include/trace/events/sunrpc.h +4 -3
index 5be3faf88c1a..06fe47fb3686 100644

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

include/uapi/linux/io_uring.h +1 -0
index 787f491f0d2a..1e45368ad33f 100644

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

include/uapi/linux/stddef.h +4 -0
index 3021ea25a284..7837ba4fe728 100644

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

kernel/cpu.c +18 -18
index 407a2568f35e..5601216eb51b 100644

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

kernel/dma/direct.h +2 -1
index 4632b0f4f72e..8a6cd53dbe8c 100644

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

kernel/irq/affinity.c +3 -2
index f7ff8919dc9b..fdf170404650 100644

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

kernel/smp.c +1 -1
index 01a7c1706a58..65a630f62363 100644

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

kernel/time/tick-sched.c +1 -1
index 17a283ce2b20..5e80ee44c32a 100644

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

kernel/time/timer.c +7 -4
index 85f1021ad459..9dd2a39cb3b0 100644

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

mm/hugetlb.c +10 -7
index f294db835f4b..a1da8757cc9c 100644

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

mm/kfence/core.c +0 -21
index d4c7978cd75e..af82c6f7d723 100644

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

mm/kfence/kfence.h +21 -0
index 9a6c4b1b12a8..600f2e2431d6 100644

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

mm/kfence/report.c +47 -0

47 lines not on this page · raw message

mm/kmemleak.c +4 -4
index acd7cbb82e16..a182f5ddaf68 100644

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

mm/page_alloc.c +1 -1
index a1fbf656e7db..e6f211dcf82e 100644

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

mm/page_io.c +0 -54

54 lines not on this page · raw message

mm/secretmem.c +17 -0
index 22b310adb53d..5a62ef3bcfcf 100644

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

mm/slab.c +1 -1
index a36af26e1521..f4b3eebc1e2c 100644

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

mm/slab.h +1 -1
index c7f2abc2b154..506dab2a6735 100644

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

mm/slab_common.c +9 -0
index 23f2ab0713b7..a9a7d79daa10 100644

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

mm/slob.c +1 -1
index 60c5842215f1..fd9c643facbc 100644

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

mm/slub.c +1 -1
index 261474092e43..e3277e33ea6e 100644

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

net/ax25/af_ax25.c +5 -0
index f5686c463bc0..363d47f94532 100644

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

net/core/flow_dissector.c +1 -0
index 15833e1d6ea1..544d2028ccf5 100644

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

net/dsa/dsa2.c +10 -13
index a39bbed77f87..d3ce6113e6c3 100644

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

net/ipv6/ip6_output.c +1 -1
index 194832663d85..9d83c11ba1e7 100644

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

net/mac80211/debugfs_sta.c +1 -1
index 9479f2787ea7..88d9cc945a21 100644

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

net/netfilter/nf_tables_api.c +1 -1
index 1f5a0eece0d1..30d29d038d09 100644

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

net/netfilter/nft_socket.c +3 -4
index d601974c9d2e..b8f011145765 100644

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

net/nfc/nci/core.c +4 -0
index d2537383a3e8..6a193cce2a75 100644

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

net/sched/cls_api.c +1 -1
index 5ce1208a6ea3..130b5fda9c51 100644

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

net/sched/cls_flower.c +13 -5
index 1a9b1f140f9e..ef5b3452254a 100644

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

net/sched/sch_taprio.c +2 -1
index 377f896bdedc..b9c71a304d39 100644

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

net/sctp/sm_statefuns.c +3 -3
index 7f342bc12735..52edee1322fc 100644

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

net/sctp/socket.c +1 -1
index 3e1a9600be5e..7b0427658056 100644

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

net/smc/smc_clc.c +4 -2
index ce27399b38b1..f9f3f59c79de 100644

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

net/smc/smc_pnet.c +3 -2
index 29f0a559d884..4769f76505af 100644

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

net/sunrpc/svc_xprt.c +3 -0
index b21ad7994147..4a423e481a28 100644

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

net/sunrpc/xprtrdma/svc_rdma_recvfrom.c +1 -1
index cf76a6ad127b..864131a9fc6e 100644

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

net/wireless/nl80211.c +2 -1
index c01fbcc848e8..dc171ca0d1b1 100644

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

net/wireless/scan.c +2 -0
index b2fdac96bab0..4a6d86432910 100644

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

scripts/gcc-plugins/latent_entropy_plugin.c +27 -17

44 lines not on this page · raw message

sound/core/init.c +28 -0
index 31ba7024e3ad..726a8353201f 100644

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

sound/core/memalloc.c +110 -1

111 lines not on this page · raw message

sound/core/pcm_misc.c +1 -1
index 4866aed97aac..5588b6a1ee8b 100644

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

sound/drivers/mtpav.c +2 -2
index 11235baaf6fa..f212f233ea61 100644

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

sound/isa/galaxy/galaxy.c +6 -1
index ea001c80149d..3164eb8510fa 100644

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

sound/isa/sc6000.c +6 -1
index 26ab7ff80768..60398fced046 100644

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

sound/pci/ad1889.c +8 -2
index bba4dae8dcc7..50e30704bf6f 100644

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

sound/pci/ali5451/ali5451.c +8 -2
index 92eb59db106d..2378a39abaeb 100644

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

sound/pci/als300.c +6 -2
index b86565dcdbe4..c70aff060120 100644

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

sound/pci/als4000.c +8 -2
index 535eccd124be..f33aeb692a11 100644

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

sound/pci/atiixp.c +8 -2
index b8e035d5930d..43d01f1847ed 100644

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

sound/pci/atiixp_modem.c +8 -2
index 178dce8ef1e9..8864c4c3c7e1 100644

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

sound/pci/au88x0/au88x0.c +7 -1
index 342ef2a6655e..eb234153691b 100644

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

sound/pci/aw2/aw2-alsa.c +6 -2
index d56f126d6fdd..29a4bcdec237 100644

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

sound/pci/azt3328.c +7 -1
index 089050470ff2..7f329dfc5404 100644

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

sound/pci/bt87x.c +8 -2
index d23f93163841..621985bfee5d 100644

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

sound/pci/ca0106/ca0106_main.c +8 -2
index 36fb150b72fb..f4cc112bddf3 100644

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

sound/pci/cmipci.c +6 -2
index dab801d9d3b4..727db6d43391 100644

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

sound/pci/cs4281.c +8 -2
index e7367402b84a..0c9cadf7b3b8 100644

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

sound/pci/cs5535audio/cs5535audio.c +8 -2
index 499fa0148f9a..440b8f9b40c9 100644

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

sound/pci/echoaudio/echoaudio.c +7 -2
index 25b012ef5c3e..c70c3ac4e99a 100644

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

sound/pci/emu10k1/emu10k1x.c +8 -2
index c49c44dc1082..89043392f3ec 100644

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

sound/pci/ens1370.c +8 -2
index 2651f0c64c06..94efe347a97a 100644

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

sound/pci/es1938.c +8 -2
index 00b976f42a3d..e34ec6f89e7e 100644

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

sound/pci/es1968.c +8 -2
index 6a8a02a9ecf4..4a7e20bb11bc 100644

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

sound/pci/fm801.c +8 -2
index 9c22ff19e56d..62b3cb126c6d 100644

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

sound/pci/hda/patch_realtek.c +2 -0
index 16e90524a497..ca40c2bd8ba6 100644

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

sound/pci/ice1712/ice1724.c +8 -2
index f6275868877a..6fab2ad85bbe 100644

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

sound/pci/intel8x0.c +8 -2
index a51032b3ac4d..ae285c0a629c 100644

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

sound/pci/intel8x0m.c +8 -2
index 7de3cb2f17b5..2845cc006d0c 100644

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

sound/pci/korg1212/korg1212.c +6 -2
index 5c9e240ff6a9..33b4f95d65b3 100644

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

sound/pci/lola/lola.c +8 -2
index 5269a1d396a5..1aa30e90b86a 100644

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

sound/pci/lx6464es/lx6464es.c +6 -2
index 168a1084f730..bd9b6148dd6f 100644

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

sound/pci/maestro3.c +7 -1
index 056838ead21d..261850775c80 100644

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

sound/pci/nm256/nm256.c +1 -1
index c9c178504959..f99a1e96e923 100644

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

sound/pci/oxygen/oxygen_lib.c +11 -1
index 4fb3f2484fdb..92ffe9dc20c5 100644

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

sound/pci/riptide/riptide.c +7 -1
index 5a987c683c41..b37c877c2c16 100644

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

sound/pci/rme32.c +7 -1
index 5b6bd9f0b2f7..9c0ac025e143 100644

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

sound/pci/rme96.c +8 -2
index 8fc811504920..bccb7e0d3d11 100644

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

sound/pci/rme9652/hdsp.c +6 -2
index 96c12dfb24cf..3db641318d3a 100644

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

sound/pci/rme9652/hdspm.c +6 -2
index ff06ee82607c..fa1812e7a49d 100644

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

sound/pci/rme9652/rme9652.c +6 -2
index 7755e19aa776..1d614fe89a6a 100644

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

sound/pci/sis7019.c +10 -4
index 0b722b0e0604..fabe393607f8 100644

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

sound/pci/sonicvibes.c +8 -2
index c8c49881008f..f91cbf6eeca0 100644

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

sound/pci/via82xx.c +8 -2
index 65514f7e42d7..361b83fd721e 100644

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

sound/pci/via82xx_modem.c +8 -2
index 234f7fbed236..ca7f024bf8ec 100644

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

sound/usb/pcm.c +14 -2
index cec6e91afea2..6d699065e81a 100644

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

sound/x86/intel_hdmi_audio.c +6 -1
index 4a3ff6468aa7..fa664cf03c32 100644

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

tools/arch/x86/include/asm/msr-index.h +2 -2
index a4a39c3e0f19..0c2610cde6ea 100644

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

tools/perf/util/parse-events.c +3 -2
index 24997925ae00..dd84fed698a3 100644

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

tools/testing/selftests/kvm/include/riscv/processor.h +3 -1
index dc284c6bdbc3..eca5c622efd2 100644

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

tools/testing/selftests/kvm/lib/riscv/processor.c +1 -1
index d377f2603d98..3961487a4870 100644

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

tools/testing/selftests/mqueue/mq_perf_tests.c +17 -8
index b019e0b8221c..84fda3b49073 100644

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

The rest of this diff is not shown. View the raw message.

Part of the diff is not shown here. View the raw message.