Skip to contentSkip to conversation

Linux 5.15.35

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.15.35 kernel.

All users of the 5.15 kernel series must upgrade.

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

thanks,

greg k-h

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

 Documentation/devicetree/bindings/net/qcom,ipa.yaml           |    6 
 Documentation/devicetree/bindings/net/snps,dwmac.yaml         |    6 
 Makefile                                                      |    2 
 arch/arm/mach-davinci/board-da850-evm.c                       |    4 
 arch/arm64/kernel/alternative.c                               |    6 
 arch/arm64/kernel/cpuidle.c                                   |    6 
 arch/x86/include/asm/kvm_host.h                               |    5 
 arch/x86/include/asm/msr-index.h                              |    4 
 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 +
 block/bio.c                                                   |    2 
 drivers/acpi/processor_idle.c                                 |   23 +
 drivers/ata/libata-core.c                                     |    3 
 drivers/base/dd.c                                             |    1 
 drivers/block/drbd/drbd_main.c                                |    1 
 drivers/cpufreq/intel_pstate.c                                |   10 
 drivers/firmware/arm_scmi/clock.c                             |    3 
 drivers/firmware/arm_scmi/driver.c                            |    3 
 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                       |    2 
 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           |   63 +++
 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/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/ring_buffer.c                                      |   11 
 drivers/hv/vmbus_drv.c                                        |   18 -
 drivers/i2c/busses/i2c-pasemi.c                               |    6 
 drivers/i2c/i2c-dev.c                                         |   15 
 drivers/md/dm-integrity.c                                     |    7 
 drivers/md/dm-ps-historical-service-time.c                    |   10 
 drivers/media/platform/rockchip/rga/rga.c                     |    2 
 drivers/memory/atmel-ebi.c                                    |   23 +
 drivers/memory/renesas-rpc-if.c                               |   10 
 drivers/net/dsa/ocelot/felix_vsc9959.c                        |    2 
 drivers/net/ethernet/broadcom/genet/bcmgenet.c                |    4 
 drivers/net/ethernet/faraday/ftgmac100.c                      |   10 
 drivers/net/ethernet/mellanox/mlxsw/i2c.c                     |    1 
 drivers/net/ethernet/micrel/Kconfig                           |    1 
 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/hamradio/6pack.c                                  |    5 
 drivers/net/ipa/Kconfig                                       |    1 
 drivers/net/ipa/ipa_power.c                                   |   52 +++
 drivers/net/ipa/ipa_power.h                                   |    7 
 drivers/net/ipa/ipa_uc.c                                      |    5 
 drivers/net/macvlan.c                                         |    8 
 drivers/net/mdio/fwnode_mdio.c                                |    5 
 drivers/net/slip/slip.c                                       |    2 
 drivers/net/usb/aqc111.c                                      |    9 
 drivers/net/veth.c                                            |    2 
 drivers/net/wireless/ath/ath11k/mac.c                         |   21 -
 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_init.c                                 |    2 
 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/soc/qcom/qcom_aoss.c                                  |   58 +++
 drivers/spi/spi-cadence-quadspi.c                             |   46 --
 drivers/target/target_core_user.c                             |    3 
 drivers/vfio/pci/vfio_pci_core.c                              |  124 ++++---
 fs/btrfs/block-group.c                                        |    4 
 fs/btrfs/compression.c                                        |    2 
 fs/btrfs/disk-io.c                                            |    5 
 fs/btrfs/extent_io.c                                          |    5 
 fs/btrfs/file.c                                               |   13 
 fs/btrfs/inode.c                                              |    7 
 fs/btrfs/volumes.c                                            |    2 
 fs/cifs/cifsfs.c                                              |   28 -
 fs/cifs/link.c                                                |    3 
 fs/io_uring.c                                                 |   24 -
 include/asm-generic/tlb.h                                     |   10 
 include/linux/soc/qcom/qcom_aoss.h                            |   38 ++
 include/linux/sunrpc/svc.h                                    |    1 
 include/linux/vfio_pci_core.h                                 |    2 
 include/net/ax25.h                                            |   12 
 include/net/flow_dissector.h                                  |    2 
 include/scsi/scsi_transport_iscsi.h                           |    2 
 include/sound/core.h                                          |    1 
 include/trace/events/sunrpc.h                                 |    7 
 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/kmemleak.c                                                 |    8 
 mm/page_alloc.c                                               |    2 
 mm/page_io.c                                                  |   54 ---
 mm/secretmem.c                                                |   17 +
 net/ax25/af_ax25.c                                            |   38 +-
 net/ax25/ax25_dev.c                                           |   28 +
 net/ax25/ax25_route.c                                         |   13 
 net/ax25/ax25_subr.c                                          |   20 -
 net/core/flow_dissector.c                                     |    1 
 net/ipv6/ip6_output.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/socket.c                                             |    2 
 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/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/mqueue/mq_perf_tests.c                |   25 +
 201 files changed, 1644 insertions(+), 651 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

Alex Elder (3):
dt-bindings: net: qcom,ipa: add optional qcom,qmp property
net: ipa: request IPA register values be retained
net: ipa: fix a build dependency

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

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

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 (1):
netfilter: nf_tables: nft_parse_register can return a negative value

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

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

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

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

Deepak Kumar Singh (1):
soc: qcom: aoss: Expose send for generic usecase

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 (9):
drivers: net: slip: fix NPD bug in sl_tx_timeout()
ax25: add refcount in ax25_dev to avoid UAF bugs
ax25: fix reference count leaks of ax25_dev
ax25: fix UAF bugs of net_device caused by rebinding operation
ax25: Fix refcount leaks caused by ax25_cb_del()
ax25: fix UAF bug in ax25_send_control()
ax25: fix NPD bug in ax25_disconnect
ax25: Fix NULL pointer dereferences in ax25 timers
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.15.35

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

James Smart (1):
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

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()

Karsten Graul (1):
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 (3):
hamradio: defer 6pack kfree after unregister_netdev
hamradio: remove needs_free_netdev to avoid UAF
nfc: nci: add flush_workqueue to prevent uaf

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

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

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

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 (2):
memory: atmel-ebi: Fix missing of_node_put in atmel_ebi_probe
soc: qcom: aoss: Fix missing put_device call in qmp_get

Michael Kelley (2):
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

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 (1):
block: fix offset/size check in bio_trim()

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

Naohiro Aota (2):
btrfs: release correct delalloc amount in direct IO write path
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

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 (2):
io_uring: zero tag on rsrc removal
io_uring: use nospec annotation for more indexes

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

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

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

Qu Wenruo (1):
btrfs: remove unused parameter nr_pages in add_ra_bio_pages()

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

Richard Gong (1):
ACPI: processor idle: Allow playing dead in C3 state

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

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

Srinivas Pandruvada (1):
cpufreq: intel_pstate: ITMT support for overclocked system

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

Takashi Iwai (44):
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: 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

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 (1):
net: mdio: don't defer probe forever if PHY IRQ provider is missing

Woody Suwalski (1):
ACPI: processor: idle: fix lockup regression on 32-bit ThinkPad T40

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

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

author maintainer
#1 lore raw
Documentation/devicetree/bindings/net/qcom,ipa.yaml +6 -0
index b8a0b392b24e..c52ec1ee7df6 100644
@@ -106,6 +106,10 @@ properties:
           - const: imem
           - const: config
 
+  qcom,qmp:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description: phandle to the AOSS side-channel message RAM
+
   qcom,smem-states:
     $ref: /schemas/types.yaml#/definitions/phandle-array
     description: State bits used in by the AP to signal the modem.
@@ -221,6 +225,8 @@ examples:
                                      "imem",
                                      "config";
 
+                qcom,qmp = <&aoss_qmp>;
+
                 qcom,smem-states = <&ipa_smp2p_out 0>,
                                    <&ipa_smp2p_out 1>;
                 qcom,smem-state-names = "ipa-clock-enabled-valid",
Documentation/devicetree/bindings/net/snps,dwmac.yaml +2 -4
index c115c95ee584..5b8db76b6cdd 100644
@@ -53,20 +53,18 @@ properties:
         - allwinner,sun8i-r40-emac
         - 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 b6920025dfa3..e5440c513f5a 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 5
 PATCHLEVEL = 15
-SUBLEVEL = 34
+SUBLEVEL = 35
 EXTRAVERSION =
 NAME = Trick or Treat
 
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/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/x86/include/asm/kvm_host.h +3 -2
index d9bb5cdb5db2..49d814b2a341 100644
@@ -1559,8 +1559,9 @@ static inline int kvm_arch_flush_remote_tlb(struct kvm *kvm)
 		return -ENOTSUPP;
 }
 
-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 a7c413432b33..66ae309840fe 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/kernel/cpu/common.c +2 -0
index 58b1416c05da..ec7d3ff5c662 100644
@@ -1714,6 +1714,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 d6579bae25ca..34e828badc51 100644
@@ -6105,12 +6105,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
@@ -6182,7 +6194,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 5e2983959f23..5b1d2f656b45 100644
@@ -8562,7 +8562,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;
 
@@ -8612,7 +8612,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);
 	kmem_cache_destroy(x86_fpu_cache);
@@ -12618,3 +12618,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);
block/bio.c +1 -1
index 25f1ed261100..8906c9856a7d 100644
@@ -1552,7 +1552,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 +17 -6
index f37fba9e5ba0..1fd6a4a34c15 100644
@@ -95,6 +95,11 @@ static const struct dmi_system_id processor_power_dmi_table[] = {
 	  DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer Inc."),
 	  DMI_MATCH(DMI_PRODUCT_NAME,"L8400B series Notebook PC")},
 	 (void *)1},
+	/* T40 can not handle C3 idle state */
+	{ set_max_cstate, "IBM ThinkPad T40", {
+	  DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
+	  DMI_MATCH(DMI_PRODUCT_NAME, "23737CU")},
+	 (void *)2},
 	{},
 };
 
@@ -789,7 +794,8 @@ static int acpi_processor_setup_cstates(struct acpi_processor *pr)
 		state->enter = acpi_idle_enter;
 
 		state->flags = 0;
-		if (cx->type == ACPI_STATE_C1 || cx->type == ACPI_STATE_C2) {
+		if (cx->type == ACPI_STATE_C1 || cx->type == ACPI_STATE_C2 ||
+		    cx->type == ACPI_STATE_C3) {
 			state->enter_dead = acpi_idle_play_dead;
 			drv->safe_state_index = count;
 		}
@@ -1075,6 +1081,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;
@@ -1083,6 +1094,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;
 
@@ -1134,11 +1150,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 24b67d78cb83..a0343b7c9add 100644
@@ -3999,6 +3999,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 64ce42b6c6b6..95ae347df137 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 55234a558e98..548e0dd53528 100644
@@ -2737,6 +2737,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/cpufreq/intel_pstate.c +10 -0
index e15c3bc17a55..8a2c6b58b652 100644
@@ -335,6 +335,8 @@ static void intel_pstste_sched_itmt_work_fn(struct work_struct *work)
 
 static DECLARE_WORK(sched_itmt_work, intel_pstste_sched_itmt_work_fn);
 
+#define CPPC_MAX_PERF	U8_MAX
+
 static void intel_pstate_set_itmt_prio(int cpu)
 {
 	struct cppc_perf_caps cppc_perf;
@@ -345,6 +347,14 @@ static void intel_pstate_set_itmt_prio(int cpu)
 	if (ret)
 		return;
 
+	/*
+	 * On some systems with overclocking enabled, CPPC.highest_perf is hardcoded to 0xff.
+	 * In this case we can't use CPPC.highest_perf to enable ITMT.
+	 * In this case we can look at MSR_HWP_CAPABILITIES bits [8:0] to decide.
+	 */
+	if (cppc_perf.highest_perf == CPPC_MAX_PERF)
+		cppc_perf.highest_perf = HWP_HIGHEST_PERF(READ_ONCE(all_cpu_data[cpu]->hwp_cap_cached));
+
 	/*
 	 * The priorities can be set regardless of whether or not
 	 * sched_set_itmt_support(true) has been called and it is valid to
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/gpiolib-acpi.c +2 -2
index 4c2e32c38acc..53be0bdf2bc3 100644
@@ -392,8 +392,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 33026b3eafd2..2f2ae26a8068 100644
@@ -5625,7 +5625,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)
@@ -5641,7 +5641,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 +1 -1
index 5a7fef324c82..b517b76e96a1 100644
@@ -680,7 +680,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))");
drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +2 -0
index c39e53a41f13..db27fcf87cd0 100644
@@ -1272,6 +1272,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 3c01be661014..93a4da4284ed 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 0a50fdaced7e..63c47f61d0df 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 63b890f1e8af..bef9610084f1 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 c67e21244342..0e731016921b 100644
@@ -1387,7 +1387,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 =
@@ -1652,7 +1652,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 54b405fc600d..6e56bef4fdf8 100644
@@ -1508,8 +1508,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 88c483f69989..660eb7097cfc 100644
@@ -834,15 +834,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 3eea4edee355..b8bdd796cd91 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 7e9e2eb85eca..ec75613618b1 100644
@@ -2296,7 +2296,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 108f3854cd2a..82f1f27baaf3 100644
@@ -1626,8 +1626,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 3af49cdf89eb..93f31e4aeecb 100644
@@ -1052,9 +1052,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)
@@ -1063,8 +1067,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();
 		}
 	}
@@ -1435,6 +1439,9 @@ void dcn10_init_hw(struct dc *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.
@@ -1487,8 +1494,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);
@@ -2455,14 +2460,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 a47ba1d45be9..9f8d7f92300b 100644
@@ -2297,14 +2297,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 0950784bafa4..f83457375811 100644
@@ -570,6 +570,9 @@ void dcn30_init_hw(struct dc *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.
@@ -647,8 +650,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 +63 -0

86 lines not on this page · raw message

drivers/gpu/drm/amd/display/dc/dcn31/dcn31_hwseq.c +3 -2
index 3afa1159a5f7..b72d080b302a 100644
@@ -204,6 +204,9 @@ void dcn31_init_hw(struct dc *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.
@@ -287,8 +290,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 d4fe5352421f..a5ef9d5e7685 100644
@@ -940,7 +940,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/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 bed496a0ddf1..28e07040cf47 100644
@@ -66,7 +66,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 f54bfdb1ebff..9b41e2f82fc2 100644
@@ -1711,7 +1711,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 d5198b435638..a133f7e154e7 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 5f23e6f09199..982f5e8c3546 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 fa4c396df6a9..6e43672f5807 100644
@@ -643,7 +643,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 cb52ac01e512..d280dd64744d 100644
@@ -937,6 +937,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/ring_buffer.c +10 -1
index 314015d9e912..f4091143213b 100644
@@ -408,7 +408,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 +12 -6
index a939ca1a8d54..aea8125a4db8 100644
@@ -76,8 +76,8 @@ static int hyperv_panic_event(struct notifier_block *nb, unsigned long val,
 
 	/*
 	 * Hyper-V should be notified only once about a panic.  If we will be
-	 * doing hyperv_report_panic_msg() later with kmsg data, don't do
-	 * the notification here.
+	 * doing hv_kmsg_dump() with kmsg data later, don't do the notification
+	 * here.
 	 */
 	if (ms_hyperv.misc_features & HV_FEATURE_GUEST_CRASH_MSR_AVAILABLE
 	    && hyperv_report_reg()) {
@@ -99,8 +99,8 @@ static int hyperv_die_event(struct notifier_block *nb, unsigned long val,
 
 	/*
 	 * Hyper-V should be notified only once about a panic.  If we will be
-	 * doing hyperv_report_panic_msg() later with kmsg data, don't do
-	 * the notification here.
+	 * doing hv_kmsg_dump() with kmsg data later, don't do the notification
+	 * here.
 	 */
 	if (hyperv_report_reg())
 		hyperv_report_panic(regs, val, true);
@@ -1545,14 +1545,20 @@ static int vmbus_bus_init(void)
 	if (ret)
 		goto err_connect;
 
+	if (hv_is_isolation_supported())
+		sysctl_record_panic_msg = 0;
+
 	/*
 	 * Only register if the crash MSRs are available
 	 */
 	if (ms_hyperv.misc_features & HV_FEATURE_GUEST_CRASH_MSR_AVAILABLE) {
 		u64 hyperv_crash_ctl;
 		/*
-		 * Sysctl registration is not fatal, since by default
-		 * reporting is enabled.
+		 * Panic message recording (sysctl_record_panic_msg)
+		 * is enabled by default in non-isolated guests and
+		 * disabled by default in isolated guests; the panic
+		 * message recording won't be available in isolated
+		 * guests should the following registration fail.
 		 */
 		hv_ctl_table_hdr = register_sysctl_table(hv_root_table);
 		if (!hv_ctl_table_hdr)
drivers/i2c/busses/i2c-pasemi.c +6 -0
index 20f2772c0e79..2c909522f0f3 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 32b9125337fb..e2a51c184a25 100644
@@ -4383,6 +4383,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";
@@ -4396,8 +4397,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 -5
index 1856a1b125cc..82f2a06153dc 100644
@@ -432,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;
 
@@ -473,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
@@ -482,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 6759091b15e0..d99ea8973b67 100644
@@ -895,7 +895,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/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 861870223300..2a4c1f94bfa0 100644
@@ -579,6 +579,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) {
@@ -602,7 +603,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_vsc9959.c +1 -1
index e53ad283e259..a9c7ada890d8 100644
@@ -1455,7 +1455,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/ethernet/broadcom/genet/bcmgenet.c +2 -2
index 510e0cf64fa9..b4f99dd284e5 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 ff76e401a014..e1df2dc810a2 100644
@@ -1817,11 +1817,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);
@@ -1893,6 +1888,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/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/myricom/myri10ge/myri10ge.c +2 -4
index c1a75b08ced7..052696ce5096 100644
@@ -2900,11 +2900,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 80637ffcca93..fbbbcfe0e891 100644
@@ -2127,15 +2127,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/hamradio/6pack.c +3 -2
index 4650ca28a516..36a9fbb70402 100644
@@ -306,7 +306,6 @@ static void sp_setup(struct net_device *dev)
 {
 	/* Finish setting up the DEVICE info. */
 	dev->netdev_ops		= &sp_netdev_ops;
-	dev->needs_free_netdev	= true;
 	dev->mtu		= SIXP_MTU;
 	dev->hard_header_len	= AX25_MAX_HEADER_LEN;
 	dev->header_ops 	= &ax25_header_ops;
@@ -674,9 +673,11 @@ static void sixpack_close(struct tty_struct *tty)
 	del_timer_sync(&sp->tx_t);
 	del_timer_sync(&sp->resync_t);
 
-	/* Free all 6pack frame buffers. */
+	/* Free all 6pack frame buffers after unreg. */
 	kfree(sp->rbuff);
 	kfree(sp->xbuff);
+
+	free_netdev(sp->dev);
 }
 
 /* Perform I/O control on an active 6pack channel. */
drivers/net/ipa/Kconfig +1 -0
index 3e0da1e76471..6782c2cbf542 100644
@@ -4,6 +4,7 @@ config QCOM_IPA
 	depends on ARCH_QCOM || COMPILE_TEST
 	depends on INTERCONNECT
 	depends on QCOM_RPROC_COMMON || (QCOM_RPROC_COMMON=n && COMPILE_TEST)
+	depends on QCOM_AOSS_QMP || QCOM_AOSS_QMP=n
 	select QCOM_MDT_LOADER if ARCH_QCOM
 	select QCOM_SCM
 	select QCOM_QMI_HELPERS
drivers/net/ipa/ipa_power.c +52 -0

94 lines not on this page · raw message

drivers/net/ipa/ipa_power.h +7 -0
index 2151805d7fbb..6f84f057a209 100644
@@ -40,6 +40,13 @@ void ipa_power_modem_queue_wake(struct ipa *ipa);
  */
 void ipa_power_modem_queue_active(struct ipa *ipa);
 
+/**
+ * ipa_power_retention() - Control register retention on power collapse
+ * @ipa:	IPA pointer
+ * @enable:	Whether retention should be enabled or disabled
+ */
+void ipa_power_retention(struct ipa *ipa, bool enable);
+
 /**
  * ipa_power_setup() - Set up IPA power management
  * @ipa:	IPA pointer
drivers/net/ipa/ipa_uc.c +5 -0
index 856e55a080a7..fe11910518d9 100644
@@ -11,6 +11,7 @@
 
 #include "ipa.h"
 #include "ipa_uc.h"
+#include "ipa_power.h"
 
 /**
  * DOC:  The IPA embedded microcontroller
@@ -154,6 +155,7 @@ static void ipa_uc_response_hdlr(struct ipa *ipa, enum ipa_irq_id irq_id)
 	case IPA_UC_RESPONSE_INIT_COMPLETED:
 		if (ipa->uc_powered) {
 			ipa->uc_loaded = true;
+			ipa_power_retention(ipa, true);
 			pm_runtime_mark_last_busy(dev);
 			(void)pm_runtime_put_autosuspend(dev);
 			ipa->uc_powered = false;
@@ -184,6 +186,9 @@ void ipa_uc_deconfig(struct ipa *ipa)
 
 	ipa_interrupt_remove(ipa->interrupt, IPA_IRQ_UC_1);
 	ipa_interrupt_remove(ipa->interrupt, IPA_IRQ_UC_0);
+	if (ipa->uc_loaded)
+		ipa_power_retention(ipa, false);
+
 	if (!ipa->uc_powered)
 		return;
 
drivers/net/macvlan.c +6 -2
index 35f46ad040b0..a9a515cf5a46 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 5435b5689ce6..2a3892528ec3 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/usb/aqc111.c +7 -2
index 73b97f4cc1ec..e8d49886d695 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 f478fe7e2b82..64fa8e9c0a22 100644
@@ -327,7 +327,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 +13 -8
index 3834be158705..07004564a3ec 100644
@@ -2156,6 +2156,19 @@ static void ath11k_mac_op_bss_info_changed(struct ieee80211_hw *hw,
 		if (ret)
 			ath11k_warn(ar->ab, "failed to update bcn template: %d\n",
 				    ret);
+		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)) {
@@ -2191,14 +2204,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 5691bd6eb82c..6555abf02f18 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)
@@ -2501,6 +2501,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)
@@ -2512,6 +2522,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;
 
@@ -2526,6 +2538,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) {
 		/*
@@ -2547,16 +2566,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 9dd4502d32a4..5b156c563e3a 100644
@@ -3148,6 +3148,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 10b6c6daaacd..d43bb18f58fd 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_init.c +2 -0
index 3eebcae52784..16246526e4c1 100644
@@ -15105,6 +15105,8 @@ lpfc_io_slot_reset_s4(struct pci_dev *pdev)
 	psli->sli_flag &= ~LPFC_SLI_ACTIVE;
 	spin_unlock_irq(&phba->hbalock);
 
+	/* Init cpu_map array */
+	lpfc_cpu_map_array_init(phba);
 	/* Configure and enable interrupt */
 	intr_mode = lpfc_sli4_enable_intr(phba, phba->intr_mode);
 	if (intr_mode == LPFC_INTR_ERROR) {
drivers/scsi/megaraid/megaraid_sas.h +3 -0
index 7af2c23652b0..650210d2abb4 100644
@@ -2558,6 +2558,9 @@ struct megasas_instance_template {
 #define MEGASAS_IS_LOGICAL(sdev)					\
 	((sdev->channel < MEGASAS_MAX_PD_CHANNELS) ? 0 : 1)
 
+#define MEGASAS_IS_LUN_VALID(sdev)					\
+	(((sdev)->lun == 0) ? 1 : 0)
+
 #define MEGASAS_DEV_INDEX(scp)						\
 	(((scp->device->channel % 2) * MEGASAS_MAX_DEV_PER_CHANNEL) +	\
 	scp->device->id)
drivers/scsi/megaraid/megaraid_sas_base.c +7 -0
index 39d8754e63ac..bb3f78013a13 100644
@@ -2126,6 +2126,9 @@ static int megasas_slave_alloc(struct scsi_device *sdev)
 			goto scan_target;
 		}
 		return -ENXIO;
+	} else if (!MEGASAS_IS_LUN_VALID(sdev)) {
+		sdev_printk(KERN_INFO, sdev, "%s: invalid LUN\n", __func__);
+		return -ENXIO;
 	}
 
 scan_target:
@@ -2156,6 +2159,10 @@ static void megasas_slave_destroy(struct scsi_device *sdev)
 	instance = megasas_lookup_instance(sdev->host->host_no);
 
 	if (MEGASAS_IS_LOGICAL(sdev)) {
+		if (!MEGASAS_IS_LUN_VALID(sdev)) {
+			sdev_printk(KERN_INFO, sdev, "%s: invalid LUN\n", __func__);
+			return;
+		}
 		ld_tgt_id = MEGASAS_TARGET_ID(sdev);
 		instance->ld_tgtid_status[ld_tgt_id] = LD_TARGET_ID_DELETED;
 		if (megasas_dbg_lvl & LD_PD_DEBUG)
drivers/scsi/mpt3sas/mpt3sas_config.c +6 -3
index 0563078227de..a8dd14c91efd 100644
@@ -394,10 +394,13 @@ _config_request(struct MPT3SAS_ADAPTER *ioc, Mpi2ConfigRequest_t
 		retry_count++;
 		if (ioc->config_cmds.smid == smid)
 			mpt3sas_base_free_smid(ioc, smid);
-		if ((ioc->shost_recovery) || (ioc->config_cmds.status &
-		    MPT3_CMD_RESET) || ioc->pci_error_recovery)
+		if (ioc->config_cmds.status & MPT3_CMD_RESET)
 			goto retry_config;
-		issue_host_reset = 1;
+		if (ioc->shost_recovery || ioc->pci_error_recovery) {
+			issue_host_reset = 0;
+			r = -EFAULT;
+		} else
+			issue_host_reset = 1;
 		goto free_mem;
 	}
 
drivers/scsi/mvsas/mv_init.c +1 -0
index 787cf439ba57..f6f8ca3c8c7f 100644
@@ -646,6 +646,7 @@ static struct pci_device_id mvs_pci_table[] = {
 	{ PCI_VDEVICE(ARECA, PCI_DEVICE_ID_ARECA_1300), chip_1300 },
 	{ PCI_VDEVICE(ARECA, PCI_DEVICE_ID_ARECA_1320), chip_1320 },
 	{ PCI_VDEVICE(ADAPTEC2, 0x0450), chip_6440 },
+	{ PCI_VDEVICE(TTI, 0x2640), chip_6440 },
 	{ PCI_VDEVICE(TTI, 0x2710), chip_9480 },
 	{ PCI_VDEVICE(TTI, 0x2720), chip_9480 },
 	{ PCI_VDEVICE(TTI, 0x2721), chip_9480 },
drivers/scsi/pm8001/pm80xx_hwi.c +24 -9
index 5561057109de..04746df26c6c 100644
@@ -765,6 +765,10 @@ static void init_default_table_values(struct pm8001_hba_info *pm8001_ha)
 	pm8001_ha->main_cfg_tbl.pm80xx_tbl.pcs_event_log_severity	= 0x01;
 	pm8001_ha->main_cfg_tbl.pm80xx_tbl.fatal_err_interrupt		= 0x01;
 
+	/* Enable higher IQs and OQs, 32 to 63, bit 16 */
+	if (pm8001_ha->max_q_num > 32)
+		pm8001_ha->main_cfg_tbl.pm80xx_tbl.fatal_err_interrupt |=
+							1 << 16;
 	/* Disable end to end CRC checking */
 	pm8001_ha->main_cfg_tbl.pm80xx_tbl.crc_core_dump = (0x1 << 16);
 
@@ -1026,6 +1030,13 @@ static int mpi_init_check(struct pm8001_hba_info *pm8001_ha)
 	if (0x0000 != gst_len_mpistate)
 		return -EBUSY;
 
+	/*
+	 *  As per controller datasheet, after successful MPI
+	 *  initialization minimum 500ms delay is required before
+	 *  issuing commands.
+	 */
+	msleep(500);
+
 	return 0;
 }
 
@@ -1733,10 +1744,11 @@ static void
 pm80xx_chip_interrupt_enable(struct pm8001_hba_info *pm8001_ha, u8 vec)
 {
 #ifdef PM8001_USE_MSIX
-	u32 mask;
-	mask = (u32)(1 << vec);
-
-	pm8001_cw32(pm8001_ha, 0, MSGU_ODMR_CLR, (u32)(mask & 0xFFFFFFFF));
+	if (vec < 32)
+		pm8001_cw32(pm8001_ha, 0, MSGU_ODMR_CLR, 1U << vec);
+	else
+		pm8001_cw32(pm8001_ha, 0, MSGU_ODMR_CLR_U,
+			    1U << (vec - 32));
 	return;
 #endif
 	pm80xx_chip_intx_interrupt_enable(pm8001_ha);
@@ -1752,12 +1764,15 @@ static void
 pm80xx_chip_interrupt_disable(struct pm8001_hba_info *pm8001_ha, u8 vec)
 {
 #ifdef PM8001_USE_MSIX
-	u32 mask;
-	if (vec == 0xFF)
-		mask = 0xFFFFFFFF;
+	if (vec == 0xFF) {
+		/* disable all vectors 0-31, 32-63 */
+		pm8001_cw32(pm8001_ha, 0, MSGU_ODMR, 0xFFFFFFFF);
+		pm8001_cw32(pm8001_ha, 0, MSGU_ODMR_U, 0xFFFFFFFF);
+	} else if (vec < 32)
+		pm8001_cw32(pm8001_ha, 0, MSGU_ODMR, 1U << vec);
 	else
-		mask = (u32)(1 << vec);
-	pm8001_cw32(pm8001_ha, 0, MSGU_ODMR, (u32)(mask & 0xFFFFFFFF));
+		pm8001_cw32(pm8001_ha, 0, MSGU_ODMR_U,
+			    1U << (vec - 32));
 	return;
 #endif
 	pm80xx_chip_intx_interrupt_disable(pm8001_ha);
drivers/scsi/scsi_transport_iscsi.c +105 -63

281 lines not on this page · raw message

drivers/soc/qcom/qcom_aoss.c +57 -1

96 lines not on this page · raw message

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

90 lines not on this page · raw message

drivers/target/target_core_user.c +2 -1
index 9f552f48084c..0ca5ec14d3db 100644
@@ -1821,6 +1821,7 @@ static struct page *tcmu_try_get_data_page(struct tcmu_dev *udev, uint32_t dpi)
 	mutex_lock(&udev->cmdr_lock);
 	page = xa_load(&udev->data_pages, dpi);
 	if (likely(page)) {
+		get_page(page);
 		mutex_unlock(&udev->cmdr_lock);
 		return page;
 	}
@@ -1877,6 +1878,7 @@ static vm_fault_t tcmu_vma_fault(struct vm_fault *vmf)
 		/* For the vmalloc()ed cmd area pages */
 		addr = (void *)(unsigned long)info->mem[mi].addr + offset;
 		page = vmalloc_to_page(addr);
+		get_page(page);
 	} else {
 		uint32_t dpi;
 
@@ -1887,7 +1889,6 @@ static vm_fault_t tcmu_vma_fault(struct vm_fault *vmf)
 			return VM_FAULT_SIGBUS;
 	}
 
-	get_page(page);
 	vmf->page = page;
 	return 0;
 }
drivers/vfio/pci/vfio_pci_core.c +74 -50

202 lines not on this page · raw message

fs/btrfs/block-group.c +0 -4
index 53ff3db9640e..37418b183b07 100644
@@ -2882,7 +2882,6 @@ int btrfs_start_dirty_block_groups(struct btrfs_trans_handle *trans)
 	struct btrfs_path *path = NULL;
 	LIST_HEAD(dirty);
 	struct list_head *io = &cur_trans->io_bgs;
-	int num_started = 0;
 	int loops = 0;
 
 	spin_lock(&cur_trans->dirty_bgs_lock);
@@ -2948,7 +2947,6 @@ int btrfs_start_dirty_block_groups(struct btrfs_trans_handle *trans)
 			cache->io_ctl.inode = NULL;
 			ret = btrfs_write_out_cache(trans, cache, path);
 			if (ret == 0 && cache->io_ctl.inode) {
-				num_started++;
 				should_put = 0;
 
 				/*
@@ -3049,7 +3047,6 @@ int btrfs_write_dirty_block_groups(struct btrfs_trans_handle *trans)
 	int should_put;
 	struct btrfs_path *path;
 	struct list_head *io = &cur_trans->io_bgs;
-	int num_started = 0;
 
 	path = btrfs_alloc_path();
 	if (!path)
@@ -3107,7 +3104,6 @@ int btrfs_write_dirty_block_groups(struct btrfs_trans_handle *trans)
 			cache->io_ctl.inode = NULL;
 			ret = btrfs_write_out_cache(trans, cache, path);
 			if (ret == 0 && cache->io_ctl.inode) {
-				num_started++;
 				should_put = 0;
 				list_add_tail(&cache->io_list, io);
 			} else {
fs/btrfs/compression.c +0 -2
index 0913ee50e6c3..701fbd1b5676 100644
@@ -550,7 +550,6 @@ static noinline int add_ra_bio_pages(struct inode *inode,
 	u64 isize = i_size_read(inode);
 	int ret;
 	struct page *page;
-	unsigned long nr_pages = 0;
 	struct extent_map *em;
 	struct address_space *mapping = inode->i_mapping;
 	struct extent_map_tree *em_tree;
@@ -646,7 +645,6 @@ static noinline int add_ra_bio_pages(struct inode *inode,
 				   PAGE_SIZE, 0);
 
 		if (ret == PAGE_SIZE) {
-			nr_pages++;
 			put_page(page);
 		} else {
 			unlock_extent(tree, last_offset, end);
fs/btrfs/disk-io.c +3 -2
index aed1f26ca2b8..f1f7dbfa6ecd 100644
@@ -1738,9 +1738,10 @@ static struct btrfs_root *btrfs_get_root_ref(struct btrfs_fs_info *fs_info,
 
 	ret = btrfs_insert_fs_root(fs_info, root);
 	if (ret) {
-		btrfs_put_root(root);
-		if (ret == -EEXIST)
+		if (ret == -EEXIST) {
+			btrfs_put_root(root);
 			goto again;
+		}
 		goto fail;
 	}
 	return root;
fs/btrfs/extent_io.c +1 -4
index 50a5cc4fd25b..96aeb16bd65c 100644
@@ -3561,7 +3561,6 @@ int btrfs_do_readpage(struct page *page, struct extent_map **em_cached,
 	u64 cur_end;
 	struct extent_map *em;
 	int ret = 0;
-	int nr = 0;
 	size_t pg_offset = 0;
 	size_t iosize;
 	size_t blocksize = inode->i_sb->s_blocksize;
@@ -3727,9 +3726,7 @@ int btrfs_do_readpage(struct page *page, struct extent_map **em_cached,
 					 end_bio_extent_readpage, 0,
 					 this_bio_flag,
 					 force_bio_submit);
-		if (!ret) {
-			nr++;
-		} else {
+		if (ret) {
 			unlock_extent(tree, cur, cur + iosize - 1);
 			end_page_read(page, false, cur, iosize);
 			goto out;
fs/btrfs/file.c +11 -2
index a1762363f61f..dc1e4d1b7291 100644
@@ -2878,8 +2878,9 @@ int btrfs_replace_file_extents(struct btrfs_inode *inode,
 	return ret;
 }
 
-static int btrfs_punch_hole(struct inode *inode, loff_t offset, loff_t len)
+static int btrfs_punch_hole(struct file *file, loff_t offset, loff_t len)
 {
+	struct inode *inode = file_inode(file);
 	struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
 	struct btrfs_root *root = BTRFS_I(inode)->root;
 	struct extent_state *cached_state = NULL;
@@ -2911,6 +2912,10 @@ static int btrfs_punch_hole(struct inode *inode, loff_t offset, loff_t len)
 		goto out_only_mutex;
 	}
 
+	ret = file_modified(file);
+	if (ret)
+		goto out_only_mutex;
+
 	lockstart = round_up(offset, btrfs_inode_sectorsize(BTRFS_I(inode)));
 	lockend = round_down(offset + len,
 			     btrfs_inode_sectorsize(BTRFS_I(inode))) - 1;
@@ -3351,7 +3356,7 @@ static long btrfs_fallocate(struct file *file, int mode,
 		return -EOPNOTSUPP;
 
 	if (mode & FALLOC_FL_PUNCH_HOLE)
-		return btrfs_punch_hole(inode, offset, len);
+		return btrfs_punch_hole(file, offset, len);
 
 	/*
 	 * Only trigger disk allocation, don't trigger qgroup reserve
@@ -3373,6 +3378,10 @@ static long btrfs_fallocate(struct file *file, int mode,
 			goto out;
 	}
 
+	ret = file_modified(file);
+	if (ret)
+		goto out;
+
 	/*
 	 * TODO: Move these two operations after we have checked
 	 * accurate reserved space, or fallocate can still fail but
fs/btrfs/inode.c +3 -4
index e478fd916216..6266a706bff7 100644
@@ -1075,7 +1075,6 @@ static noinline int cow_file_range(struct btrfs_inode *inode,
 	int ret = 0;
 
 	if (btrfs_is_free_space_inode(inode)) {
-		WARN_ON_ONCE(1);
 		ret = -EINVAL;
 		goto out_unlock;
 	}
@@ -7772,6 +7771,7 @@ static int btrfs_get_blocks_direct_write(struct extent_map **map,
 	u64 block_start, orig_start, orig_block_len, ram_bytes;
 	bool can_nocow = false;
 	bool space_reserved = false;
+	u64 prev_len;
 	int ret = 0;
 
 	/*
@@ -7799,6 +7799,7 @@ static int btrfs_get_blocks_direct_write(struct extent_map **map,
 			can_nocow = true;
 	}
 
+	prev_len = len;
 	if (can_nocow) {
 		struct extent_map *em2;
 
@@ -7828,8 +7829,6 @@ static int btrfs_get_blocks_direct_write(struct extent_map **map,
 			goto out;
 		}
 	} else {
-		const u64 prev_len = len;
-
 		/* Our caller expects us to free the input extent map. */
 		free_extent_map(em);
 		*map = NULL;
@@ -7860,7 +7859,7 @@ static int btrfs_get_blocks_direct_write(struct extent_map **map,
 	 * We have created our ordered extent, so we can now release our reservation
 	 * for an outstanding extent.
 	 */
-	btrfs_delalloc_release_extents(BTRFS_I(inode), len);
+	btrfs_delalloc_release_extents(BTRFS_I(inode), prev_len);
 
 	/*
 	 * Need to update the i_size under the extent lock so buffered
fs/btrfs/volumes.c +2 -0
index f6d6825f218a..471cc4706a07 100644
@@ -4389,10 +4389,12 @@ static int balance_kthread(void *data)
 	struct btrfs_fs_info *fs_info = data;
 	int ret = 0;
 
+	sb_start_write(fs_info->sb);
 	mutex_lock(&fs_info->balance_mutex);
 	if (fs_info->balance_ctl)
 		ret = btrfs_balance(fs_info, fs_info->balance_ctl, NULL);
 	mutex_unlock(&fs_info->balance_mutex);
+	sb_end_write(fs_info->sb);
 
 	return ret;
 }
fs/cifs/cifsfs.c +15 -13
index ed220daca3e1..29a019cf1d5f 100644
@@ -266,22 +266,24 @@ static void cifs_kill_sb(struct super_block *sb)
 	 * before we kill the sb.
 	 */
 	if (cifs_sb->root) {
+		for (node = rb_first(root); node; node = rb_next(node)) {
+			tlink = rb_entry(node, struct tcon_link, tl_rbnode);
+			tcon = tlink_tcon(tlink);
+			if (IS_ERR(tcon))
+				continue;
+			cfid = &tcon->crfid;
+			mutex_lock(&cfid->fid_mutex);
+			if (cfid->dentry) {
+				dput(cfid->dentry);
+				cfid->dentry = NULL;
+			}
+			mutex_unlock(&cfid->fid_mutex);
+		}
+
+		/* finally release root dentry */
 		dput(cifs_sb->root);
 		cifs_sb->root = NULL;
 	}
-	node = rb_first(root);
-	while (node != NULL) {
-		tlink = rb_entry(node, struct tcon_link, tl_rbnode);
-		tcon = tlink_tcon(tlink);
-		cfid = &tcon->crfid;
-		mutex_lock(&cfid->fid_mutex);
-		if (cfid->dentry) {
-			dput(cfid->dentry);
-			cfid->dentry = NULL;
-		}
-		mutex_unlock(&cfid->fid_mutex);
-		node = rb_next(node);
-	}
 
 	kill_anon_super(sb);
 	cifs_umount(cifs_sb);
fs/cifs/link.c +3 -0
index 852e54ee82c2..bbdf3281559c 100644
@@ -85,6 +85,9 @@ parse_mf_symlink(const u8 *buf, unsigned int buf_len, unsigned int *_link_len,
 	if (rc != 1)
 		return -EINVAL;
 
+	if (link_len > CIFS_MF_SYMLINK_LINK_MAXLEN)
+		return -EINVAL;
+
 	rc = symlink_hash(link_len, link_str, md5_hash);
 	if (rc) {
 		cifs_dbg(FYI, "%s: MD5 hash failure: %d\n", __func__, rc);
fs/io_uring.c +14 -10
index 3d44d48b35ea..1bf1ea2cd8b0 100644
@@ -6403,6 +6403,7 @@ static int io_files_update(struct io_kiocb *req, unsigned int issue_flags)
 	up.nr = 0;
 	up.tags = 0;
 	up.resv = 0;
+	up.resv2 = 0;
 
 	io_ring_submit_lock(ctx, !(issue_flags & IO_URING_F_NONBLOCK));
 	ret = __io_register_rsrc_update(ctx, IORING_RSRC_FILE,
@@ -8412,13 +8413,15 @@ static int io_sqe_file_register(struct io_ring_ctx *ctx, struct file *file,
 static int io_queue_rsrc_removal(struct io_rsrc_data *data, unsigned idx,
 				 struct io_rsrc_node *node, void *rsrc)
 {
+	u64 *tag_slot = io_get_tag_slot(data, idx);
 	struct io_rsrc_put *prsrc;
 
 	prsrc = kzalloc(sizeof(*prsrc), GFP_KERNEL);
 	if (!prsrc)
 		return -ENOMEM;
 
-	prsrc->tag = *io_get_tag_slot(data, idx);
+	prsrc->tag = *tag_slot;
+	*tag_slot = 0;
 	prsrc->rsrc = rsrc;
 	list_add(&prsrc->list, &node->rsrc_list);
 	return 0;
@@ -8486,7 +8489,7 @@ static int io_close_fixed(struct io_kiocb *req, unsigned int issue_flags)
 	struct io_ring_ctx *ctx = req->ctx;
 	struct io_fixed_file *file_slot;
 	struct file *file;
-	int ret, i;
+	int ret;
 
 	io_ring_submit_lock(ctx, !(issue_flags & IO_URING_F_NONBLOCK));
 	ret = -ENXIO;
@@ -8499,8 +8502,8 @@ static int io_close_fixed(struct io_kiocb *req, unsigned int issue_flags)
 	if (ret)
 		goto out;
 
-	i = array_index_nospec(offset, ctx->nr_user_files);
-	file_slot = io_fixed_file_slot(&ctx->file_table, i);
+	offset = array_index_nospec(offset, ctx->nr_user_files);
+	file_slot = io_fixed_file_slot(&ctx->file_table, offset);
 	ret = -EBADF;
 	if (!file_slot->file_ptr)
 		goto out;
@@ -8556,8 +8559,7 @@ static int __io_sqe_files_update(struct io_ring_ctx *ctx,
 
 		if (file_slot->file_ptr) {
 			file = (struct file *)(file_slot->file_ptr & FFS_MASK);
-			err = io_queue_rsrc_removal(data, up->offset + done,
-						    ctx->rsrc_node, file);
+			err = io_queue_rsrc_removal(data, i, ctx->rsrc_node, file);
 			if (err)
 				break;
 			file_slot->file_ptr = 0;
@@ -9226,7 +9228,7 @@ static int __io_sqe_buffers_update(struct io_ring_ctx *ctx,
 
 		i = array_index_nospec(offset, ctx->nr_user_bufs);
 		if (ctx->user_bufs[i] != ctx->dummy_ubuf) {
-			err = io_queue_rsrc_removal(ctx->buf_data, offset,
+			err = io_queue_rsrc_removal(ctx->buf_data, i,
 						    ctx->rsrc_node, ctx->user_bufs[i]);
 			if (unlikely(err)) {
 				io_buffer_unmap(ctx, &imu);
@@ -9980,6 +9982,8 @@ static int io_get_ext_arg(unsigned flags, const void __user *argp, size_t *argsz
 		return -EINVAL;
 	if (copy_from_user(&arg, argp, sizeof(arg)))
 		return -EFAULT;
+	if (arg.pad)
+		return -EINVAL;
 	*sig = u64_to_user_ptr(arg.sigmask);
 	*argsz = arg.sigmask_sz;
 	*ts = u64_to_user_ptr(arg.ts);
@@ -10595,8 +10599,6 @@ static int __io_register_rsrc_update(struct io_ring_ctx *ctx, unsigned type,
 	__u32 tmp;
 	int err;
 
-	if (up->resv)
-		return -EINVAL;
 	if (check_add_overflow(up->offset, nr_args, &tmp))
 		return -EOVERFLOW;
 	err = io_rsrc_node_switch_start(ctx);
@@ -10622,6 +10624,8 @@ static int io_register_files_update(struct io_ring_ctx *ctx, void __user *arg,
 	memset(&up, 0, sizeof(up));
 	if (copy_from_user(&up, arg, sizeof(struct io_uring_rsrc_update)))
 		return -EFAULT;
+	if (up.resv || up.resv2)
+		return -EINVAL;
 	return __io_register_rsrc_update(ctx, IORING_RSRC_FILE, &up, nr_args);
 }
 
@@ -10634,7 +10638,7 @@ static int io_register_rsrc_update(struct io_ring_ctx *ctx, void __user *arg,
 		return -EINVAL;
 	if (copy_from_user(&up, arg, sizeof(up)))
 		return -EFAULT;
-	if (!up.nr || up.resv)
+	if (!up.nr || up.resv || up.resv2)
 		return -EINVAL;
 	return __io_register_rsrc_update(ctx, type, &up, up.nr);
 }
include/asm-generic/tlb.h +7 -3
index 2c68a545ffa7..71942a1c642d 100644
@@ -565,10 +565,14 @@ static inline void tlb_flush_p4d_range(struct mmu_gather *tlb,
 #define tlb_remove_huge_tlb_entry(h, tlb, ptep, address)	\
 	do {							\
 		unsigned long _sz = huge_page_size(h);		\
-		if (_sz == PMD_SIZE)				\
-			tlb_flush_pmd_range(tlb, address, _sz);	\
-		else if (_sz == PUD_SIZE)			\
+		if (_sz >= P4D_SIZE)				\
+			tlb_flush_p4d_range(tlb, address, _sz);	\
+		else if (_sz >= PUD_SIZE)			\
 			tlb_flush_pud_range(tlb, address, _sz);	\
+		else if (_sz >= PMD_SIZE)			\
+			tlb_flush_pmd_range(tlb, address, _sz);	\
+		else						\
+			tlb_flush_pte_range(tlb, address, _sz);	\
 		__tlb_remove_tlb_entry(tlb, ptep, address);	\
 	} while (0)
 
include/linux/soc/qcom/qcom_aoss.h new file +38 -0
new file mode 100644
index 000000000000..3c2a82e606f8
@@ -0,0 +1,38 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (c) 2021, The Linux Foundation. All rights reserved.
+ */
+
+#ifndef __QCOM_AOSS_H__
+#define __QCOM_AOSS_H__
+
+#include <linux/err.h>
+#include <linux/device.h>
+
+struct qmp;
+
+#if IS_ENABLED(CONFIG_QCOM_AOSS_QMP)
+
+int qmp_send(struct qmp *qmp, const void *data, size_t len);
+struct qmp *qmp_get(struct device *dev);
+void qmp_put(struct qmp *qmp);
+
+#else
+
+static inline int qmp_send(struct qmp *qmp, const void *data, size_t len)
+{
+	return -ENODEV;
+}
+
+static inline struct qmp *qmp_get(struct device *dev)
+{
+	return ERR_PTR(-ENODEV);
+}
+
+static inline void qmp_put(struct qmp *qmp)
+{
+}
+
+#endif
+
+#endif
include/linux/sunrpc/svc.h +1 -0
index 6263410c948a..01f09adccc63 100644
@@ -384,6 +384,7 @@ struct svc_deferred_req {
 	size_t			addrlen;
 	struct sockaddr_storage	daddr;	/* where reply must come from */
[… more lines in the raw message]

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/ax25.h +12 -0
index 8b7eb46ad72d..aadff553e4b7 100644

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

include/net/flow_dissector.h +2 -0
index ffd386ea0dbb..c8d1c5e187e4 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/trace/events/sunrpc.h +4 -3
index 7c48613c1830..6bcb8c7a3175 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 f43ede0ab183..b68d63e965db 100644

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

kernel/time/tick-sched.c +1 -1
index 6bffe5af8cb1..19e6b861de97 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/kmemleak.c +4 -4
index b78861b8e013..859303aae180 100644

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

mm/page_alloc.c +1 -1
index a4b0d7c1da56..a373cd6326b0 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.

net/ax25/af_ax25.c +30 -8
index 735f29512163..7b69503dc46a 100644

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

net/ax25/ax25_dev.c +23 -5
index 4ac2e0847652..d2e0cc67d91a 100644

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

net/ax25/ax25_route.c +11 -2
index d0b2e094bd55..9751207f7757 100644

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

net/ax25/ax25_subr.c +14 -6
index 15ab812c4fe4..3a476e4f6cd0 100644

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

net/core/flow_dissector.c +1 -0
index edffdaa875f1..bc50bd331d5b 100644

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

net/ipv6/ip6_output.c +1 -1
index 8aaf9cf3d74a..04c3cb4c5fec 100644

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

net/netfilter/nf_tables_api.c +1 -1
index 3e7f97a70721..2feb88ffcd81 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 e41e2e9e5498..189c9f428a3c 100644

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

net/sched/cls_api.c +1 -1
index cd44cac7fbcf..4b552c10e7b9 100644

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

net/sched/cls_flower.c +13 -5
index 709348262410..32b03a13f9b2 100644

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

net/sched/sch_taprio.c +2 -1
index a66398fb2d6d..474ba4db5de2 100644

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

net/sctp/socket.c +1 -1
index 6b3c32264cbc..5f6e6a6e91b3 100644

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

net/smc/smc_pnet.c +3 -2
index 707615809e5a..79ee0618d919 100644

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

net/sunrpc/svc_xprt.c +3 -0
index d4b663401be1..935bba065636 100644

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

net/sunrpc/xprtrdma/svc_rdma_recvfrom.c +1 -1
index 6be23ce7a93d..387a5da09daf 100644

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

net/wireless/nl80211.c +2 -1
index 2f9ead98a9da..fe9cade6b4fb 100644

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

net/wireless/scan.c +2 -0
index 8e1e578d64bc..1a8b76c9dd56 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 ac335f5906c6..362588e3a275 100644

Lines of this file are not shown. View the 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 dc4232bac749..42fcbed9220c 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 f6e5ed34dd09..5ae20cbbd5c0 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 2e51fb031ae0..729e26f5ac4c 100644

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

sound/x86/intel_hdmi_audio.c +6 -1
index 7aa947274900..42add5df37fd 100644

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

tools/arch/x86/include/asm/msr-index.h +2 -2
index a7c413432b33..66ae309840fe 100644

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

tools/perf/util/parse-events.c +3 -2
index 51a2219df601..3bfe099d8643 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.