Skip to contentSkip to conversation

Linux 6.0.7

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Nov 3, 2022 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 6.0.7 kernel.

All users of the 6.0 kernel series must upgrade.

The updated 6.0.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.0.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/pinctrl/xlnx,zynqmp-pinctrl.yaml                    |    4 
 Makefile                                                                              |    2 
 arch/arc/include/asm/io.h                                                             |    2 
 arch/arc/include/asm/pgtable-levels.h                                                 |    2 
 arch/arc/mm/ioremap.c                                                                 |    2 
 arch/arm64/include/asm/cputype.h                                                      |    4 
 arch/arm64/kernel/proton-pack.c                                                       |    6 
 arch/powerpc/kernel/interrupt_64.S                                                    |   13 
 arch/riscv/Kconfig                                                                    |   17 
 arch/riscv/Makefile                                                                   |    6 
 arch/riscv/include/asm/cacheflush.h                                                   |    8 
 arch/riscv/include/asm/jump_label.h                                                   |    8 
 arch/riscv/include/asm/kvm_vcpu_timer.h                                               |    1 
 arch/riscv/include/asm/vdso/processor.h                                               |    2 
 arch/riscv/include/uapi/asm/kvm.h                                                     |    1 
 arch/riscv/kvm/vcpu.c                                                                 |   11 
 arch/riscv/kvm/vcpu_timer.c                                                           |   17 
 arch/riscv/mm/cacheflush.c                                                            |   38 
 arch/riscv/mm/dma-noncoherent.c                                                       |   39 
 arch/riscv/mm/kasan_init.c                                                            |    7 
 arch/s390/boot/vmlinux.lds.S                                                          |   13 
 arch/s390/include/asm/futex.h                                                         |    3 
 arch/s390/lib/uaccess.c                                                               |    6 
 arch/s390/pci/pci_mmio.c                                                              |    8 
 arch/x86/crypto/polyval-clmulni_glue.c                                                |   19 
 arch/x86/events/intel/lbr.c                                                           |    2 
 arch/x86/kernel/fpu/init.c                                                            |    8 
 arch/x86/kernel/fpu/xstate.c                                                          |   42 
 arch/x86/kernel/unwind_orc.c                                                          |    2 
 drivers/acpi/acpi_pcc.c                                                               |    2 
 drivers/base/power/domain.c                                                           |    4 
 drivers/char/random.c                                                                 |    4 
 drivers/counter/104-quad-8.c                                                          |   64 
 drivers/counter/microchip-tcb-capture.c                                               |   18 
 drivers/cpufreq/intel_pstate.c                                                        |  133 -
 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c                                      |    6 
 drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c                                               |    5 
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c                                            |   16 
 drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c                                               |   20 
 drivers/gpu/drm/amd/amdgpu/mmhub_v2_0.c                                               |   28 
 drivers/gpu/drm/amd/amdkfd/kfd_crat.c                                                 |  106 
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c                               |   50 
 drivers/gpu/drm/bridge/parade-ps8640.c                                                |   25 
 drivers/gpu/drm/i915/display/intel_dp.c                                               |    2 
 drivers/gpu/drm/i915/gt/intel_workarounds.c                                           |    4 
 drivers/gpu/drm/i915/intel_runtime_pm.c                                               |   11 
 drivers/gpu/drm/msm/adreno/a6xx_gpu_state.c                                           |    7 
 drivers/gpu/drm/msm/adreno/adreno_gpu.c                                               |    7 
 drivers/gpu/drm/msm/disp/mdp4/mdp4_lvds_connector.c                                   |    5 
 drivers/gpu/drm/msm/dp/dp_ctrl.c                                                      |   13 
 drivers/gpu/drm/msm/dp/dp_display.c                                                   |   23 
 drivers/gpu/drm/msm/dp/dp_drm.c                                                       |   34 
 drivers/gpu/drm/msm/dp/dp_parser.c                                                    |    6 
 drivers/gpu/drm/msm/dp/dp_parser.h                                                    |    5 
 drivers/gpu/drm/msm/dsi/dsi.c                                                         |    6 
 drivers/gpu/drm/msm/hdmi/hdmi.c                                                       |    7 
 drivers/gpu/drm/msm/msm_drv.c                                                         |    1 
 drivers/hwtracing/coresight/coresight-cti-core.c                                      |    5 
 drivers/iio/accel/adxl367.c                                                           |   23 
 drivers/iio/accel/adxl372.c                                                           |   23 
 drivers/iio/light/tsl2583.c                                                           |    2 
 drivers/iio/temperature/ltc2983.c                                                     |   13 
 drivers/media/i2c/ar0521.c                                                            |    8 
 drivers/media/i2c/ov8865.c                                                            |   10 
 drivers/media/platform/amphion/vpu_v4l2.c                                             |   11 
 drivers/media/platform/sunxi/sun4i-csi/Kconfig                                        |    2 
 drivers/media/platform/sunxi/sun6i-csi/Kconfig                                        |    2 
 drivers/media/platform/sunxi/sun6i-mipi-csi2/Kconfig                                  |    4 
 drivers/media/platform/sunxi/sun6i-mipi-csi2/sun6i_mipi_csi2.c                        |   20 
 drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/Kconfig                             |    2 
 drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/sun8i_a83t_mipi_csi2.c              |   23 
 drivers/media/platform/sunxi/sun8i-di/Kconfig                                         |    2 
 drivers/media/platform/sunxi/sun8i-rotate/Kconfig                                     |    2 
 drivers/media/test-drivers/vivid/vivid-core.c                                         |   38 
 drivers/media/test-drivers/vivid/vivid-core.h                                         |    2 
 drivers/media/test-drivers/vivid/vivid-vid-cap.c                                      |   27 
 drivers/media/v4l2-core/v4l2-dv-timings.c                                             |   14 
 drivers/mmc/core/block.c                                                              |   44 
 drivers/mmc/core/queue.c                                                              |    8 
 drivers/mmc/core/sdio_bus.c                                                           |    3 
 drivers/mmc/host/Kconfig                                                              |    3 
 drivers/mmc/host/sdhci-esdhc-imx.c                                                    |   14 
 drivers/mmc/host/sdhci-pci-core.c                                                     |   14 
 drivers/mtd/mtdcore.c                                                                 |    2 
 drivers/mtd/nand/raw/intel-nand-controller.c                                          |   35 
 drivers/mtd/nand/raw/marvell_nand.c                                                   |    2 
 drivers/mtd/nand/raw/tegra_nand.c                                                     |    4 
 drivers/mtd/parsers/bcm47xxpart.c                                                     |    4 
 drivers/mtd/spi-nor/core.c                                                            |    4 
 drivers/net/can/mscan/mpc5xxx_can.c                                                   |    8 
 drivers/net/can/rcar/rcar_canfd.c                                                     |   24 
 drivers/net/can/spi/mcp251x.c                                                         |    5 
 drivers/net/can/usb/kvaser_usb/kvaser_usb_hydra.c                                     |    4 
 drivers/net/can/usb/kvaser_usb/kvaser_usb_leaf.c                                      |    4 
 drivers/net/ethernet/amd/xgbe/xgbe-pci.c                                              |    5 
 drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c                                           |   19 
 drivers/net/ethernet/amd/xgbe/xgbe.h                                                  |    1 
 drivers/net/ethernet/aquantia/atlantic/aq_macsec.c                                    |   96 
 drivers/net/ethernet/aquantia/atlantic/aq_nic.h                                       |    2 
 drivers/net/ethernet/broadcom/bcm4908_enet.c                                          |   12 
 drivers/net/ethernet/broadcom/bcmsysport.c                                            |    3 
 drivers/net/ethernet/cadence/macb_main.c                                              |    1 
 drivers/net/ethernet/freescale/enetc/enetc.c                                          |    5 
 drivers/net/ethernet/freescale/fec_main.c                                             |   46 
 drivers/net/ethernet/huawei/hinic/hinic_debugfs.c                                     |   18 
 drivers/net/ethernet/huawei/hinic/hinic_hw_cmdq.c                                     |    2 
 drivers/net/ethernet/huawei/hinic/hinic_hw_dev.c                                      |    2 
 drivers/net/ethernet/huawei/hinic/hinic_sriov.c                                       |    1 
 drivers/net/ethernet/ibm/ehea/ehea_main.c                                             |    1 
 drivers/net/ethernet/intel/i40e/i40e_ethtool.c                                        |  100 
 drivers/net/ethernet/intel/i40e/i40e_type.h                                           |    4 
 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c                                    |   43 
 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h                                    |    1 
 drivers/net/ethernet/lantiq_etop.c                                                    |    1 
 drivers/net/ethernet/mellanox/mlx5/core/cmd.c                                         |   10 
 drivers/net/ethernet/mellanox/mlx5/core/en/ptp.h                                      |    9 
 drivers/net/ethernet/mellanox/mlx5/core/en/tc_priv.h                                  |    2 
 drivers/net/ethernet/mellanox/mlx5/core/en/txrx.h                                     |    6 
 drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c                              |    3 
 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c                                       |   74 
 drivers/net/ethernet/mellanox/mlx5/core/en_tx.c                                       |    6 
 drivers/net/ethernet/mellanox/mlx5/core/fw_reset.c                                    |   17 
 drivers/net/ethernet/mellanox/mlx5/core/lib/aso.c                                     |    7 
 drivers/net/ethernet/mellanox/mlx5/core/lib/mpfs.c                                    |    6 
 drivers/net/ethernet/mellanox/mlx5/core/main.c                                        |    4 
 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_rule.c                            |    3 
 drivers/net/ethernet/micrel/ksz884x.c                                                 |    2 
 drivers/net/ethernet/microchip/lan966x/lan966x_ethtool.c                              |   10 
 drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c                                 |   24 
 drivers/net/ethernet/socionext/netsec.c                                               |    2 
 drivers/net/ethernet/socionext/sni_ave.c                                              |    6 
 drivers/net/netdevsim/bus.c                                                           |    9 
 drivers/net/netdevsim/dev.c                                                           |   31 
 drivers/nfc/virtual_ncidev.c                                                          |    3 
 drivers/pinctrl/pinctrl-ingenic.c                                                     |    4 
 drivers/pinctrl/pinctrl-ocelot.c                                                      |   17 
 drivers/pinctrl/pinctrl-zynqmp.c                                                      |    9 
 drivers/pinctrl/qcom/pinctrl-msm.c                                                    |   21 
 drivers/platform/x86/amd/pmc.c                                                        |   12 
 drivers/s390/cio/css.c                                                                |    8 
 drivers/scsi/qla2xxx/qla_attr.c                                                       |   28 
 drivers/spi/spi-aspeed-smc.c                                                          |    2 
 drivers/spi/spi-qup.c                                                                 |    2 
 drivers/staging/media/atomisp/pci/sh_css_params.c                                     |    4 
 drivers/staging/media/sunxi/cedrus/Kconfig                                            |    1 
 drivers/usb/core/quirks.c                                                             |    9 
 drivers/usb/dwc3/core.c                                                               |   49 
 drivers/usb/dwc3/drd.c                                                                |   50 
 drivers/usb/dwc3/dwc3-st.c                                                            |    2 
 drivers/usb/dwc3/gadget.c                                                             |   21 
 drivers/usb/gadget/function/uvc_queue.c                                               |    8 
 drivers/usb/gadget/function/uvc_video.c                                               |   25 
 drivers/usb/gadget/udc/aspeed-vhub/dev.c                                              |    1 
 drivers/usb/gadget/udc/bdc/bdc_udc.c                                                  |    1 
 drivers/usb/host/xhci-mem.c                                                           |   20 
 drivers/usb/host/xhci-pci.c                                                           |   44 
 drivers/usb/host/xhci.c                                                               |   10 
 drivers/usb/host/xhci.h                                                               |    1 
 drivers/usb/typec/ucsi/ucsi.c                                                         |   42 
 drivers/usb/typec/ucsi/ucsi_acpi.c                                                    |   10 
 drivers/video/aperture.c                                                              |    5 
 drivers/video/fbdev/smscufx.c                                                         |   55 
 drivers/video/fbdev/stifb.c                                                           |    3 
 fs/binfmt_elf.c                                                                       |    3 
 fs/erofs/zdata.c                                                                      |    6 
 fs/erofs/zmap.c                                                                       |   17 
 fs/exec.c                                                                             |    4 
 fs/kernfs/dir.c                                                                       |    5 
 fs/squashfs/file.c                                                                    |   23 
 fs/squashfs/page_actor.c                                                              |    3 
 fs/squashfs/page_actor.h                                                              |    6 
 include/linux/mlx5/driver.h                                                           |    2 
 include/linux/perf_event.h                                                            |   19 
 include/linux/userfaultfd_k.h                                                         |    6 
 include/media/v4l2-common.h                                                           |    3 
 include/net/sock.h                                                                    |    2 
 include/sound/control.h                                                               |    1 
 include/sound/soc-acpi-intel-match.h                                                  |    2 
 include/uapi/linux/videodev2.h                                                        |    3 
 kernel/bpf/btf.c                                                                      |    5 
 kernel/events/core.c                                                                  |  151 +
 kernel/events/ring_buffer.c                                                           |    2 
 kernel/power/hibernate.c                                                              |    2 
 kernel/rcu/tree.c                                                                     |   10 
 kernel/sched/sched.h                                                                  |   18 
 mm/huge_memory.c                                                                      |   11 
 mm/kmemleak.c                                                                         |   61 
 mm/madvise.c                                                                          |   12 
 mm/migrate.c                                                                          |    7 
 mm/page_alloc.c                                                                       |    1 
 net/can/j1939/transport.c                                                             |    4 
 net/core/net_namespace.c                                                              |    7 
 net/core/skbuff.c                                                                     |    2 
 net/ethtool/eeprom.c                                                                  |    2 
 net/ieee802154/socket.c                                                               |    4 
 net/ipv4/nexthop.c                                                                    |    2 
 net/ipv4/tcp_input.c                                                                  |    3 
 net/ipv4/tcp_ipv4.c                                                                   |    4 
 net/ipv6/ip6_gre.c                                                                    |   12 
 net/ipv6/ip6_tunnel.c                                                                 |   11 
 net/ipv6/ipv6_sockglue.c                                                              |    7 
 net/ipv6/sit.c                                                                        |    8 
 net/kcm/kcmsock.c                                                                     |   25 
 net/mac802154/rx.c                                                                    |    5 
 net/mptcp/protocol.c                                                                  |    3 
 net/mptcp/protocol.h                                                                  |    1 
 net/mptcp/subflow.c                                                                   |    7 
 net/openvswitch/datapath.c                                                            |    3 
 net/tipc/topsrv.c                                                                     |   16 
 sound/aoa/soundbus/i2sbus/core.c                                                      |    7 
 sound/core/control.c                                                                  |   23 
 sound/pci/ac97/ac97_codec.c                                                           |   33 
 sound/pci/au88x0/au88x0.h                                                             |    6 
 sound/pci/au88x0/au88x0_core.c                                                        |    2 
 sound/pci/ca0106/ca0106_mixer.c                                                       |    2 
 sound/pci/emu10k1/emumixer.c                                                          |    2 
 sound/pci/hda/patch_realtek.c                                                         |    5 
 sound/pci/rme9652/hdsp.c                                                              |   26 
 sound/pci/rme9652/rme9652.c                                                           |   22 
 sound/soc/codecs/Kconfig                                                              |    1 
 sound/soc/codecs/tlv320adc3xxx.c                                                      |    2 
 sound/soc/intel/common/Makefile                                                       |    2 
 sound/soc/intel/common/soc-acpi-intel-rpl-match.c                                     |   51 
 sound/soc/qcom/lpass-cpu.c                                                            |   10 
 sound/soc/sof/intel/pci-mtl.c                                                         |    2 
 sound/soc/sof/intel/pci-tgl.c                                                         |   92 
 sound/synth/emux/emux.c                                                               |    7 
 sound/usb/implicit.c                                                                  |    2 
 sound/usb/mixer.c                                                                     |    2 
 tools/iio/iio_utils.c                                                                 |    4 
 tools/perf/pmu-events/arch/arm64/hisilicon/hip08/metrics.json                         |    6 
 tools/perf/pmu-events/arch/powerpc/power10/nest_metrics.json                          |   72 
 tools/perf/pmu-events/arch/s390/cf_z16/pai.json                                       | 1101 ----------
 tools/perf/pmu-events/arch/s390/cf_z16/pai_crypto.json                                | 1101 ++++++++++
 tools/perf/util/auxtrace.c                                                            |   10 
 tools/testing/selftests/drivers/net/bonding/Makefile                                  |    4 
 tools/testing/selftests/drivers/net/bonding/dev_addr_lists.sh                         |    2 
 tools/testing/selftests/drivers/net/bonding/net_forwarding_lib.sh                     |    1 
 tools/testing/selftests/drivers/net/dsa/test_bridge_fdb_stress.sh                     |    4 
 tools/testing/selftests/drivers/net/team/Makefile                                     |    4 
 tools/testing/selftests/drivers/net/team/dev_addr_lists.sh                            |    6 
 tools/testing/selftests/drivers/net/team/lag_lib.sh                                   |    1 
 tools/testing/selftests/drivers/net/team/net_forwarding_lib.sh                        |    1 
 tools/testing/selftests/ftrace/test.d/dynevent/test_duplicates.tc                     |    2 
 tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-synthetic-eprobe.tc |    2 
 tools/testing/selftests/kvm/memslot_modification_stress_test.c                        |    2 
 tools/testing/selftests/lib.mk                                                        |    4 
 247 files changed, 3360 insertions(+), 2158 deletions(-)

Aaron Conole (1):
openvswitch: switch from WARN to pr_warn

Adrian Hunter (1):
perf auxtrace: Fix address filter symbol name match for modules

Akhil P Oommen (1):
drm/msm/a6xx: Replace kcalloc() with kvzalloc()

Alexander Stein (1):
media: v4l2: Fix v4l2_i2c_subdev_set_name function documentation

Andrew Jones (2):
RISC-V: KVM: Provide UAPI for Zicbom block size
RISC-V: Fix compilation without RISCV_ISA_ZICBOM

Andrey Smirnov (1):

      usb: dwc3: Don't switch OTG -> peripheral if extcon is present

Ankit Nautiyal (1):
drm/i915/dp: Reset frl trained flag before restarting FRL training

Anshuman Gupta (1):
drm/i915/dgfx: Keep PCI autosuspend control 'on' by default on all dGPU

Anssi Hannula (1):
can: kvaser_usb: Fix possible completions during init_completion

Anup Patel (1):
RISC-V: KVM: Fix kvm_riscv_vcpu_timer_pending() for Sstc

Ariel Levkovich (1):
net/mlx5e: TC, Reject forwarding from internal port to internal port

Arunpravin Paneer Selvam (2):
drm/amdgpu: Fix VRAM BO swap issue
drm/amdgpu: Fix for BO move issue

Aya Levin (1):
net/mlx5e: Extend SKB room check to include PTP-SQ

Baolin Wang (1):
mm: migrate: fix return value if all subpages of THPs are migrated successfully

Benjamin Poirier (2):
selftests: net: Fix cross-tree inclusion of scripts
selftests: net: Fix netdev name mismatch in cleanup

Bernd Edlinger (1):

      exec: Copy oldsighand->action under spin-lock

Biju Das (2):
can: rcar_canfd: rcar_canfd_handle_global_receive(): fix IRQ storm on global FIFO receive
can: rcar_canfd: fix channel specific IRQ handling for RZ/G2L

Brian Norris (1):
mmc: sdhci_am654: 'select', not 'depends' REGMAP_MMIO

Chang S. Bae (4):
x86/fpu: Configure init_fpstate attributes orderly x86/fpu: Fix the init_fpstate size check with the actual size x86/fpu: Exclude dynamic states from init_fpstate x86/fpu: Fix copy_xstate_to_uabi() to copy init states correctly

Chen Zhongjin (1):
x86/unwind/orc: Fix unreliable stack dump with gcov

Chengming Gui (1):
drm/amdgpu: fix pstate setting issue

Christian A. Ehrhardt (1):
kernfs: fix use-after-free in __kernfs_remove

Christian Löhle (2):
mmc: block: Remove error check of hw_reset on reset
mmc: queue: Cancel recovery work on cleanup

Christophe JAILLET (3):
media: ov8865: Fix an error handling path in ov8865_probe()
media: sunxi: Fix some error handling path of sun8i_a83t_mipi_csi2_probe()
media: sunxi: Fix some error handling path of sun6i_mipi_csi2_probe()

Conor Dooley (2):
riscv: fix detection of toolchain Zicbom support
riscv: fix detection of toolchain Zihintpause support

Cosmin Tanislav (1):
iio: temperature: ltc2983: allocate iio channels once

Cédric Le Goater (1):
spi: aspeed: Fix window offset of CE1

D Scott Phillips (1):
arm64: Add AMPERE1 to the Spectre-BHB affected list

Dan Carpenter (1):
media: atomisp: prevent integer overflow in sh_css_set_black_frame()

Dan Vacura (2):
usb: gadget: uvc: fix dropped frame after missed isoc
usb: gadget: uvc: fix sg handling in error case

Dongliang Mu (2):
can: mscan: mpc5xxx: mpc5xxx_can_probe(): add missing put_clock() in error path
can: mcp251x: mcp251x_can_probe(): add missing unregister_candev() in error path

Douglas Anderson (2):
pinctrl: qcom: Avoid glitching lines when we first mux to output drm/bridge: ps8640: Add back the 50 ms mystery delay after HPD

Eric Dumazet (5):
kcm: annotate data-races around kcm->rx_psock
kcm: annotate data-races around kcm->rx_wait
ipv6: ensure sane device mtu in tunnels
net: do not sense pfmemalloc status in skb_append_pagefrags()
kcm: do not sense pfmemalloc status in kcm_sendpage()

Florian Fainelli (1):
net: bcmsysport: Indicate MAC is in charge of PHY PM

Gao Xiang (1):
erofs: fix up inplace decompression success rate

Gavin Shan (1):
KVM: selftests: Fix number of pages for memory slot in memslot_modification_stress_test

Geert Uytterhoeven (1):

      ASoC: codecs: tlv320adc3xxx: Wrap adc3xxx_i2c_remove() in __exit_p()

Greg Kroah-Hartman (2):
Revert "usb: gadget: uvc: limit isoc_sg to super speed gadgets" Linux 6.0.7

Hannu Hartikainen (1):
USB: add RESET_RESUME quirk for NVIDIA Jetson devices in RCM

Hans Verkuil (5):
media: vivid: s_fbuf: add more sanity checks
media: vivid: dev->bitmap_cap wasn't freed in all cases
media: v4l2-dv-timings: add sanity checks for blanking values
media: videodev2.h: V4L2_DV_BT_BLANKING_HEIGHT should check 'interlaced'
media: vivid: set num_in/outputs to 0 if not supported

Heikki Krogerus (2):
usb: typec: ucsi: Check the connection on resume
usb: typec: ucsi: acpi: Implement resume callback

Heiko Carstens (3):
s390/uaccess: add missing EX_TABLE entries to __clear_user() s390/futex: add missing EX_TABLE entry to __futex_atomic_op() s390/pci: add missing EX_TABLE entries to __pcistg_mio_inuser()/__pcilg_mio_inuser()

Helge Deller (1):
fbdev: stifb: Fall back to cfb_fillrect() on 32-bit HCRX cards

Horatiu Vultur (3):
pinctrl: ocelot: Fix incorrect trigger of the interrupt.
net: lan966x: Fix the rx drop counter
net: lan966x: Stop replacing tx dcbs and dcbs_buf when changing MTU

Hugh Dickins (1):

      mm: prep_compound_tail() clear page->private

Hyong Youb Kim (1):
net/mlx5e: Do not increment ESN when updating IPsec ESN state

Hyunwoo Kim (1):
fbdev: smscufx: Fix several use-after-free bugs

Jakub Kicinski (1):
net-memcg: avoid stalls when under memory pressure

James Clark (1):
coresight: cti: Fix hang in cti_disable_hw()

Jason A. Donenfeld (2):
ALSA: au88x0: use explicitly signed char
ALSA: rme9652: use explicitly signed char

Jean-Philippe Brucker (1):
random: use arch_get_random*_early() in random_init()

Jeff Vanhoof (1):
usb: gadget: uvc: fix sg handling during video encode

Jens Glathe (1):
usb: xhci: add XHCI_SPURIOUS_SUCCESS to ASM1042 despite being a V0.96 controller

Jesse Zhang (1):
drm/amdkfd: correct the cache info for gfx1036

Jisheng Zhang (1):
riscv: jump_label: mark arguments as const to satisfy asm constraints

Joaquín Ignacio Aramendía (1):
drm/amd/display: Revert logic for plane modifiers

Joel Stanley (1):
usb: gadget: aspeed: Fix probe regression

Johan Hovold (8):
drm/msm: fix use-after-free on probe deferral drm/msm/dsi: fix memory corruption with too many bridges drm/msm/hdmi: fix memory corruption with too many bridges drm/msm/hdmi: fix IRQ lifetime
drm/msm/dp: fix memory corruption with too many bridges drm/msm/dp: fix aux-bus EP lifetime
drm/msm/dp: fix IRQ lifetime
drm/msm/dp: fix bridge lifetime

José Roberto de Souza (1):

      drm/i915: Extend Wa_1607297627 to Alderlake-P

Juergen Borleis (1):
net: fec: limit register access on i.MX6UL

Justin Chen (1):
usb: bdc: change state when port disconnected

Kai Vehmanen (2):
ASoC: Intel: common: add ACPI matching tables for Raptor Lake
ASoC: SOF: Intel: pci-tgl: use RPL specific firmware definitions

Kajol Jain (1):
perf vendor events power10: Fix hv-24x7 metric events

Kunihiko Hayashi (1):
net: ethernet: ave: Fix MAC to be in charge of PHY PM

Kuniyuki Iwashima (1):
tcp/udp: Fix memory leak in ipv6_renew_options().

Kuogee Hsieh (2):
drm/msm/dp: add atomic_check to bridge ops
drm/msm/dp: cleared DP_DOWNSPREAD_CTRL register before start link training

Li Zetao (1):
fs/binfmt_elf: Fix memory leak in load_elf_binary()

Lijo Lazar (1):
drm/amdgpu: Remove ATC L2 access for MMHUB 2.1.x

Lin Shengwang (1):
sched/core: Fix comparison in sched_group_cookie_match()

Linus Walleij (1):
mtd: parsers: bcm47xxpart: Fix halfblock reads

Lu Wei (1):
tcp: fix a signed-integer-overflow bug in tcp_add_backlog()

Maciej S. Szmigiero (6):
ALSA: control: add snd_ctl_rename()
ALSA: hda/realtek: Use snd_ctl_rename() to rename a control
ALSA: emu10k1: Use snd_ctl_rename() to rename a control
ALSA: ac97: Use snd_ctl_rename() to rename a control
ALSA: usb-audio: Use snd_ctl_rename() to rename a control
ALSA: ca0106: Use snd_ctl_rename() to rename a control

Manank Patel (1):
ACPI: PCC: Fix unintentional integer overflow

Manish Rangankar (1):
scsi: qla2xxx: Use transport-defined speed mask for supported_speeds

Mario Limonciello (2):
xhci-pci: Set runtime PM as default policy on all xHC 1.2 or later devices
PM: hibernate: Allow hybrid sleep to work with s2idle

Martin Blumenstingl (2):
mtd: rawnand: intel: Remove unused nand_pa member from ebu_nand_cs
mtd: rawnand: intel: Use devm_platform_ioremap_resource_byname()

Mathias Nyman (2):
xhci: Add quirk to reset host back to default state at shutdown
xhci: Remove device endpoints from bandwidth list when freeing the device

Matthew Ma (1):
mmc: core: Fix kernel panic when remove non-standard SDIO card

Matti Vaittinen (3):
tools: iio: iio_utils: fix digit calculation
iio: adxl372: Fix unsafe buffer attributes
iio: adxl367: Fix unsafe buffer attributes

Maxim Levitsky (1):
perf/x86/intel/lbr: Use setup_clear_cpu_cap() instead of clear_cpu_cap()

Mel Gorman (1):
mm/huge_memory: do not clobber swp_entry_t during THP split

Michael Grzeschik (1):
usb: gadget: uvc: limit isoc_sg to super speed gadgets

Michał Mirosław (1):
fbdev/core: Avoid uninitialized read in aperture_remove_conflicting_pci_device()

Mika Westerberg (1):
mtd: spi-nor: core: Ignore -ENOTSUPP in spi_nor_init()

Ming Qian (1):
media: amphion: release m2m ctx when releasing vpu instance

Miquel Raynal (1):
mac802154: Fix LQI recording

Moshe Shemesh (1):
net/mlx5: Wait for firmware to enable CRS before pci_restore_state

Nathan Huckleberry (2):
crypto: x86/polyval - Fix crashes when keys are not 16-byte aligned drm/msm: Fix return type of mdp4_lvds_connector_mode_valid

Neal Cardwell (1):
tcp: fix indefinite deferral of RTO with SACK reneging

Nicholas Piggin (1):
powerpc/64s/interrupt: Fix clear of PACA_IRQS_HARD_DIS when returning to soft-masked context

Nicolas Dichtel (1):
nh: fix scope used to find saddr when adding non gw nh

Paolo Abeni (1):
mptcp: set msk local address earlier

Patrice Chotard (1):
usb: dwc3: st: Rely on child's compatible instead of name

Patrick Thompson (1):
mmc: sdhci-pci-core: Disable ES for ASUS BIOS on Jasper Lake

Paul Blakey (1):
net/mlx5e: Update restore chain id for slow path packets

Paul E. McKenney (1):
rcu: Keep synchronize_rcu() from enabling irqs in early boot

Paul Kocialkowski (7):
media: sun6i-mipi-csi2: Add a Kconfig dependency on RESET_CONTROLLER
media: sun8i-a83t-mipi-csi2: Add a Kconfig dependency on RESET_CONTROLLER
media: sun6i-csi: Add a Kconfig dependency on RESET_CONTROLLER
media: sun4i-csi: Add a Kconfig dependency on RESET_CONTROLLER
media: sun8i-di: Add a Kconfig dependency on RESET_CONTROLLER
media: sun8i-rotate: Add a Kconfig dependency on RESET_CONTROLLER
media: cedrus: Add a Kconfig dependency on RESET_CONTROLLER

Pavel Kozlov (1):
ARC: mm: fix leakage of memory allocated for PTE

Peter Oberparleiter (2):
s390/boot: add secure boot trailer
s390/cio: fix out-of-bounds access on cio_ignore free

Peter Xu (1):
mm/uffd: fix vma check on userfault for wp

Peter Zijlstra (1):
perf: Fix missing SIGTRAPs

Phillip Lougher (3):
squashfs: fix read regression introduced in readahead code
squashfs: fix extending readahead beyond end of file
squashfs: fix buffer release race condition in readahead code

Pierre-Louis Bossart (2):
ASoC: SOF: Intel: pci-mtl: fix firmware name
ASoC: SOF: Intel: pci-tgl: fix ADL-N descriptor

Prike Liang (2):
drm/amdgpu: disallow gfxoff until GC IP blocks complete s2idle resume drm/amdkfd: update gfx1037 Lx cache setting

Qinglin Pan (1):
riscv: mm: add missing memcpy in kasan_init

Rafael J. Wysocki (2):
cpufreq: intel_pstate: Read all MSRs on the target CPU
cpufreq: intel_pstate: hybrid: Use known scaling factor for P-cores

Rafael Mendonca (1):
drm/amdkfd: Fix memory leak in kfd_mem_dmamap_userptr()

Rafał Miłecki (2):
mtd: core: add missing of_node_get() in dynamic partitions code
net: broadcom: bcm4908_enet: update TX stats after actual transmission

Raju Rangoju (3):
amd-xgbe: Yellow carp devices do not need rrc
amd-xgbe: fix the SFP compliance codes check for DAC cables
amd-xgbe: add the bit rate quirk for Molex cables

Randy Dunlap (2):
ASoC: codec: tlv320adc3xxx: add GPIOLIB dependency
arc: iounmap() arg is volatile

Rik van Riel (1):
mm,madvise,hugetlb: fix unexpected data loss with MADV_DONTNEED on hugetlbfs

Rob Clark (1):
drm/msm/a6xx: Fix kvzalloc vs state_kcalloc usage

Robert Marko (1):
spi: qup: support using GPIO as chip select line

Rongwei Liu (1):
net/mlx5: DR, Fix matcher disconnect error flow

Roy Novich (1):
net/mlx5: Update fw fatal reporter state on PCI handlers successful recover

Saeed Mahameed (1):
net/mlx5: ASO, Create the ASO SQ with the correct timestamp format

Sai Krishna Potthuri (2):
Revert "dt-bindings: pinctrl-zynqmp: Add output-enable configuration" Revert "pinctrl: pinctrl-zynqmp: Add support for output-enable and bias-high-impedance"

Sakari Ailus (2):
media: ar0521: Fix return value check in writing initial registers
media: sun6i-mipi-csi2: Depend on PHY_SUN6I_MIPI_DPHY

Sascha Hauer (1):
mmc: sdhci-esdhc-imx: Propagate ESDHC_FLAG_HS400* only on 8bit bus

Sergiu Moga (1):
net: macb: Specify PHY PM management done by MAC

Shang XiaoJing (2):
nfc: virtual_ncidev: Fix memory leak in virtual_nci_send() perf vendor events arm64: Fix incorrect Hisi hip08 L3 metrics

Shreeya Patel (1):
iio: light: tsl2583: Fix module unloading

Shyam Sundar S K (1):
platform/x86/amd: pmc: remove CONFIG_DEBUG_FS checks

Siarhei Volkau (1):
pinctrl: Ingenic: JZ4755 bug fixes

Slawomir Laba (2):
i40e: Fix ethtool rx-flow-hash setting for X722
i40e: Fix flow-type by setting GL_HASH_INSET registers

Srinivasa Rao Mandadapu (2):
ASoC: qcom: lpass-cpu: mark HDMI TX registers as volatile
ASoC: qcom: lpass-cpu: Mark HDMI TX parity register as volatile

Stanislav Fomichev (1):
bpf: prevent decl_tag from being referenced in func_proto

Stefan Binding (1):
ALSA: hda/realtek: Add quirk for ASUS Zenbook using CS35L41

Steven Rostedt (Google) (1):
ALSA: Use del_timer_sync() before freeing timer

Sudeep Holla (1):
PM: domains: Fix handling of unavailable/disabled idle states

Suresh Devarakonda (1):
net/mlx5: Fix crash during sync firmware reset

Sven Schnelle (1):
selftests/ftrace: fix dynamic_events dependency check

Sylwester Dziedziuch (1):
i40e: Fix VF hang when reset is triggered on another VF

Takashi Iwai (3):
ALSA: usb-audio: Add quirks for M-Audio Fast Track C400/600
ALSA: hda/realtek: Add another HP ZBook G9 model quirks
ALSA: aoa: Fix I2S device accounting

Tariq Toukan (1):
net/mlx5: Fix possible use-after-free in async command interface

Thinh Nguyen (3):
usb: dwc3: gadget: Stop processing more requests on IMI
usb: dwc3: gadget: Don't set IMI for no_interrupt
usb: dwc3: gadget: Don't delay End Transfer on delayed_status

Thomas Richter (1):
perf list: Fix PMU name pai_crypto in perf list on s390

Tony O'Brien (1):
mtd: rawnand: marvell: Use correct logic for nand-keep-config

Vincent Whitchurch (1):
mmc: core: Fix WRITE_ZEROES CQE handling

Vladimir Oltean (1):
net: enetc: survive memory pressure without crashing

Waiman Long (1):
mm/kmemleak: prevent soft lockup in kmemleak_scan()'s object iteration loops

Wei Yongjun (1):
net: ieee802154: fix error return code in dgram_bind()

Wesley Cheng (1):
usb: dwc3: gadget: Force sending delayed status during soft disconnect

William Breathitt Gray (2):
counter: microchip-tcb-capture: Handle Signal1 read and Synapse
counter: 104-quad-8: Fix race getting function mode and direction

Xin Long (2):
ethtool: eeprom: fix null-deref on genl_info in dump
tipc: fix a null-ptr-deref in tipc_topsrv_accept

Yang Yingliang (8):
can: j1939: transport: j1939_session_skb_drop_old(): spin_unlock_irqrestore() before kfree_skb()
media: ar0521: fix error return code in ar0521_power_on()
mtd: rawnand: intel: Add missing of_node_put() in ebu_nand_probe()
ALSA: ac97: fix possible memory leak in snd_ac97_dev_register()
net: netsec: fix error handling in netsec_register_mdio()
net: ksz884x: fix missing pci_disable_device() on error in pcidev_init()
ALSA: aoa: i2sbus: fix possible memory leak in i2sbus_add_dev()
net: ehea: fix possible memory leak in ehea_register_port()

Yue Hu (1):
erofs: fix illegal unmapped accesses in z_erofs_fill_inode_lazy()

Zhang Changzhong (1):
net: lantiq_etop: don't free skb when returning NETDEV_TX_BUSY

Zhang Qilong (1):
mtd: rawnand: tegra: Fix PM disable depth imbalance in probe

Zhengchao Shao (8):
net: hinic: fix incorrect assignment issue in hinic_set_interrupt_cfg()
net: hinic: fix memory leak when reading function table
net: hinic: fix the issue of CMDQ memory leaks
net: hinic: fix the issue of double release MBOX callback of VF
net: fix UAF issue in nfqnl_nf_hook_drop() when ops_init() failed
netdevsim: fix memory leak in nsim_bus_dev_new()
netdevsim: fix memory leak in nsim_drv_probe() when nsim_dev_resources_register() failed
netdevsim: remove dir in nsim_dev_debugfs_init() when creating ports dir failed

Íñigo Huguet (1):
atlantic: fix deadlock at aq_nic_stop

author maintainer
#1 lore raw
Documentation/devicetree/bindings/pinctrl/xlnx,zynqmp-pinctrl.yaml +0 -4
index 1e2b9b627b12..2722dc7bb03d 100644
@@ -274,10 +274,6 @@ patternProperties:
           slew-rate:
             enum: [0, 1]
 
-          output-enable:
-            description:
-              This will internally disable the tri-state for MIO pins.
-
           drive-strength:
             description:
               Selects the drive strength for MIO pins, in mA.
Makefile +1 -1
index e6c10009d413..c2144a4bb2ef 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 6
 PATCHLEVEL = 0
-SUBLEVEL = 6
+SUBLEVEL = 7
 EXTRAVERSION =
 NAME = Hurr durr I'ma ninja sloth
 
arch/arc/include/asm/io.h +1 -1
index 8f777d6441a5..80347382a380 100644
@@ -32,7 +32,7 @@ static inline void ioport_unmap(void __iomem *addr)
 {
 }
 
-extern void iounmap(const void __iomem *addr);
+extern void iounmap(const volatile void __iomem *addr);
 
 /*
  * io{read,write}{16,32}be() macros
arch/arc/include/asm/pgtable-levels.h +1 -1
index 64ca25d199be..ef68758b69f7 100644
@@ -161,7 +161,7 @@
 #define pmd_pfn(pmd)		((pmd_val(pmd) & PAGE_MASK) >> PAGE_SHIFT)
 #define pmd_page(pmd)		virt_to_page(pmd_page_vaddr(pmd))
 #define set_pmd(pmdp, pmd)	(*(pmdp) = pmd)
-#define pmd_pgtable(pmd)	((pgtable_t) pmd_page_vaddr(pmd))
+#define pmd_pgtable(pmd)	((pgtable_t) pmd_page(pmd))
 
 /*
  * 4th level paging: pte
arch/arc/mm/ioremap.c +1 -1
index 0ee75aca6e10..712c2311daef 100644
@@ -94,7 +94,7 @@ void __iomem *ioremap_prot(phys_addr_t paddr, unsigned long size,
 EXPORT_SYMBOL(ioremap_prot);
 
 
-void iounmap(const void __iomem *addr)
+void iounmap(const volatile void __iomem *addr)
 {
 	/* weird double cast to handle phys_addr_t > 32 bits */
 	if (arc_uncached_addr_space((phys_addr_t)(u32)addr))
arch/arm64/include/asm/cputype.h +4 -0
index 8aa0d276a636..abc418650fec 100644
@@ -60,6 +60,7 @@
 #define ARM_CPU_IMP_FUJITSU		0x46
 #define ARM_CPU_IMP_HISI		0x48
 #define ARM_CPU_IMP_APPLE		0x61
+#define ARM_CPU_IMP_AMPERE		0xC0
 
 #define ARM_CPU_PART_AEM_V8		0xD0F
 #define ARM_CPU_PART_FOUNDATION		0xD00
@@ -123,6 +124,8 @@
 #define APPLE_CPU_PART_M1_ICESTORM_MAX	0x028
 #define APPLE_CPU_PART_M1_FIRESTORM_MAX	0x029
 
+#define AMPERE_CPU_PART_AMPERE1		0xAC3
+
 #define MIDR_CORTEX_A53 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A53)
 #define MIDR_CORTEX_A57 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A57)
 #define MIDR_CORTEX_A72 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A72)
@@ -172,6 +175,7 @@
 #define MIDR_APPLE_M1_FIRESTORM_PRO MIDR_CPU_MODEL(ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M1_FIRESTORM_PRO)
 #define MIDR_APPLE_M1_ICESTORM_MAX MIDR_CPU_MODEL(ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M1_ICESTORM_MAX)
 #define MIDR_APPLE_M1_FIRESTORM_MAX MIDR_CPU_MODEL(ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M1_FIRESTORM_MAX)
+#define MIDR_AMPERE1 MIDR_CPU_MODEL(ARM_CPU_IMP_AMPERE, AMPERE_CPU_PART_AMPERE1)
 
 /* Fujitsu Erratum 010001 affects A64FX 1.0 and 1.1, (v0r0 and v1r0) */
 #define MIDR_FUJITSU_ERRATUM_010001		MIDR_FUJITSU_A64FX
arch/arm64/kernel/proton-pack.c +6 -0
index 40be3a7c2c53..428cfabd11c4 100644
@@ -868,6 +868,10 @@ u8 spectre_bhb_loop_affected(int scope)
 			MIDR_ALL_VERSIONS(MIDR_NEOVERSE_N1),
 			{},
 		};
+		static const struct midr_range spectre_bhb_k11_list[] = {
+			MIDR_ALL_VERSIONS(MIDR_AMPERE1),
+			{},
+		};
 		static const struct midr_range spectre_bhb_k8_list[] = {
 			MIDR_ALL_VERSIONS(MIDR_CORTEX_A72),
 			MIDR_ALL_VERSIONS(MIDR_CORTEX_A57),
@@ -878,6 +882,8 @@ u8 spectre_bhb_loop_affected(int scope)
 			k = 32;
 		else if (is_midr_in_range_list(read_cpuid_id(), spectre_bhb_k24_list))
 			k = 24;
+		else if (is_midr_in_range_list(read_cpuid_id(), spectre_bhb_k11_list))
+			k = 11;
 		else if (is_midr_in_range_list(read_cpuid_id(), spectre_bhb_k8_list))
 			k =  8;
 
arch/powerpc/kernel/interrupt_64.S +11 -2
index 2ca1c037ea25..4d54b90f4627 100644
@@ -565,15 +565,24 @@ _ASM_NOKPROBE_SYMBOL(interrupt_return_\srr\()_kernel)
 	 * Returning to soft-disabled context.
 	 * Check if a MUST_HARD_MASK interrupt has become pending, in which
 	 * case we need to disable MSR[EE] in the return context.
+	 *
+	 * The MSR[EE] check catches among other things the short incoherency
+	 * in hard_irq_disable() between clearing MSR[EE] and setting
+	 * PACA_IRQ_HARD_DIS.
 	 */
 	ld	r12,_MSR(r1)
 	andi.	r10,r12,MSR_EE
 	beq	.Lfast_kernel_interrupt_return_\srr\() // EE already disabled
 	lbz	r11,PACAIRQHAPPENED(r13)
 	andi.	r10,r11,PACA_IRQ_MUST_HARD_MASK
-	beq	.Lfast_kernel_interrupt_return_\srr\() // No HARD_MASK pending
+	bne	1f // HARD_MASK is pending
+	// No HARD_MASK pending, clear possible HARD_DIS set by interrupt
+	andi.	r11,r11,(~PACA_IRQ_HARD_DIS)@l
+	stb	r11,PACAIRQHAPPENED(r13)
+	b	.Lfast_kernel_interrupt_return_\srr\()
+
 
-	/* Must clear MSR_EE from _MSR */
+1:	/* Must clear MSR_EE from _MSR */
 #ifdef CONFIG_PPC_BOOK3S
 	li	r10,0
 	/* Clear valid before changing _MSR */
arch/riscv/Kconfig +13 -4
index cea22ccb57cb..9d5b7fa1b622 100644
@@ -402,14 +402,16 @@ config RISCV_ISA_SVPBMT
 
 	   If you don't know what to do here, say Y.
 
-config CC_HAS_ZICBOM
+config TOOLCHAIN_HAS_ZICBOM
 	bool
-	default y if 64BIT && $(cc-option,-mabi=lp64 -march=rv64ima_zicbom)
-	default y if 32BIT && $(cc-option,-mabi=ilp32 -march=rv32ima_zicbom)
+	default y
+	depends on !64BIT || $(cc-option,-mabi=lp64 -march=rv64ima_zicbom)
+	depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32ima_zicbom)
+	depends on LLD_VERSION >= 150000 || LD_VERSION >= 23800
 
 config RISCV_ISA_ZICBOM
 	bool "Zicbom extension support for non-coherent DMA operation"
-	depends on CC_HAS_ZICBOM
+	depends on TOOLCHAIN_HAS_ZICBOM
 	depends on !XIP_KERNEL && MMU
 	select RISCV_DMA_NONCOHERENT
 	select RISCV_ALTERNATIVE
@@ -424,6 +426,13 @@ config RISCV_ISA_ZICBOM
 
 	   If you don't know what to do here, say Y.
 
+config TOOLCHAIN_HAS_ZIHINTPAUSE
+	bool
+	default y
+	depends on !64BIT || $(cc-option,-mabi=lp64 -march=rv64ima_zihintpause)
+	depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32ima_zihintpause)
+	depends on LLD_VERSION >= 150000 || LD_VERSION >= 23600
+
 config FPU
 	bool "FPU support"
 	default y
arch/riscv/Makefile +2 -4
index e7d52a2301e2..e5a608e37f45 100644
@@ -59,12 +59,10 @@ toolchain-need-zicsr-zifencei := $(call cc-option-yn, -march=$(riscv-march-y)_zi
 riscv-march-$(toolchain-need-zicsr-zifencei) := $(riscv-march-y)_zicsr_zifencei
 
 # Check if the toolchain supports Zicbom extension
-toolchain-supports-zicbom := $(call cc-option-yn, -march=$(riscv-march-y)_zicbom)
-riscv-march-$(toolchain-supports-zicbom) := $(riscv-march-y)_zicbom
+riscv-march-$(CONFIG_TOOLCHAIN_HAS_ZICBOM) := $(riscv-march-y)_zicbom
 
 # Check if the toolchain supports Zihintpause extension
-toolchain-supports-zihintpause := $(call cc-option-yn, -march=$(riscv-march-y)_zihintpause)
-riscv-march-$(toolchain-supports-zihintpause) := $(riscv-march-y)_zihintpause
+riscv-march-$(CONFIG_TOOLCHAIN_HAS_ZIHINTPAUSE) := $(riscv-march-y)_zihintpause
 
 KBUILD_CFLAGS += -march=$(subst fd,,$(riscv-march-y))
 KBUILD_AFLAGS += -march=$(riscv-march-y)
arch/riscv/include/asm/cacheflush.h +0 -8
index 273ece6b622f..1470e556cdb1 100644
@@ -42,16 +42,8 @@ void flush_icache_mm(struct mm_struct *mm, bool local);
 
 #endif /* CONFIG_SMP */
 
-/*
- * The T-Head CMO errata internally probe the CBOM block size, but otherwise
- * don't depend on Zicbom.
- */
 extern unsigned int riscv_cbom_block_size;
-#ifdef CONFIG_RISCV_ISA_ZICBOM
 void riscv_init_cbom_blocksize(void);
-#else
-static inline void riscv_init_cbom_blocksize(void) { }
-#endif
 
 #ifdef CONFIG_RISCV_DMA_NONCOHERENT
 void riscv_noncoherent_supported(void);
arch/riscv/include/asm/jump_label.h +4 -4
index 38af2ec7b9bf..6d58bbb5da46 100644
@@ -14,8 +14,8 @@
 
 #define JUMP_LABEL_NOP_SIZE 4
 
-static __always_inline bool arch_static_branch(struct static_key *key,
-					       bool branch)
+static __always_inline bool arch_static_branch(struct static_key * const key,
+					       const bool branch)
 {
 	asm_volatile_goto(
 		"	.option push				\n\t"
@@ -35,8 +35,8 @@ static __always_inline bool arch_static_branch(struct static_key *key,
 	return true;
 }
 
-static __always_inline bool arch_static_branch_jump(struct static_key *key,
-						    bool branch)
+static __always_inline bool arch_static_branch_jump(struct static_key * const key,
+						    const bool branch)
 {
 	asm_volatile_goto(
 		"	.option push				\n\t"
arch/riscv/include/asm/kvm_vcpu_timer.h +1 -0
index 0d8fdb8ec63a..82f7260301da 100644
@@ -45,6 +45,7 @@ int kvm_riscv_vcpu_timer_deinit(struct kvm_vcpu *vcpu);
 int kvm_riscv_vcpu_timer_reset(struct kvm_vcpu *vcpu);
 void kvm_riscv_vcpu_timer_restore(struct kvm_vcpu *vcpu);
 void kvm_riscv_guest_timer_init(struct kvm *kvm);
+void kvm_riscv_vcpu_timer_sync(struct kvm_vcpu *vcpu);
 void kvm_riscv_vcpu_timer_save(struct kvm_vcpu *vcpu);
 bool kvm_riscv_vcpu_timer_pending(struct kvm_vcpu *vcpu);
 
arch/riscv/include/asm/vdso/processor.h +1 -1
index 1e4f8b4aef79..fa70cfe507aa 100644
@@ -21,7 +21,7 @@ static inline void cpu_relax(void)
 		 * Reduce instruction retirement.
 		 * This assumes the PC changes.
 		 */
-#ifdef __riscv_zihintpause
+#ifdef CONFIG_TOOLCHAIN_HAS_ZIHINTPAUSE
 		__asm__ __volatile__ ("pause");
 #else
 		/* Encoding of the pause instruction */
arch/riscv/include/uapi/asm/kvm.h +1 -0
index 7351417afd62..b9a4cf36be4b 100644
@@ -48,6 +48,7 @@ struct kvm_sregs {
 /* CONFIG registers for KVM_GET_ONE_REG and KVM_SET_ONE_REG */
 struct kvm_riscv_config {
 	unsigned long isa;
+	unsigned long zicbom_block_size;
 };
 
 /* CORE registers for KVM_GET_ONE_REG and KVM_SET_ONE_REG */
arch/riscv/kvm/vcpu.c +11 -0
index d0f08d5b4282..f692c0716aa7 100644
@@ -18,6 +18,7 @@
 #include <linux/fs.h>
 #include <linux/kvm_host.h>
 #include <asm/csr.h>
+#include <asm/cacheflush.h>
 #include <asm/hwcap.h>
 
 const struct _kvm_stats_desc kvm_vcpu_stats_desc[] = {
@@ -254,6 +255,11 @@ static int kvm_riscv_vcpu_get_reg_config(struct kvm_vcpu *vcpu,
 	case KVM_REG_RISCV_CONFIG_REG(isa):
 		reg_val = vcpu->arch.isa[0] & KVM_RISCV_BASE_ISA_MASK;
 		break;
+	case KVM_REG_RISCV_CONFIG_REG(zicbom_block_size):
+		if (!riscv_isa_extension_available(vcpu->arch.isa, ZICBOM))
+			return -EINVAL;
+		reg_val = riscv_cbom_block_size;
+		break;
 	default:
 		return -EINVAL;
 	}
@@ -311,6 +317,8 @@ static int kvm_riscv_vcpu_set_reg_config(struct kvm_vcpu *vcpu,
 			return -EOPNOTSUPP;
 		}
 		break;
+	case KVM_REG_RISCV_CONFIG_REG(zicbom_block_size):
+		return -EOPNOTSUPP;
 	default:
 		return -EINVAL;
 	}
@@ -690,6 +698,9 @@ void kvm_riscv_vcpu_sync_interrupts(struct kvm_vcpu *vcpu)
 				clear_bit(IRQ_VS_SOFT, &v->irqs_pending);
 		}
 	}
+
+	/* Sync-up timer CSRs */
+	kvm_riscv_vcpu_timer_sync(vcpu);
 }
 
 int kvm_riscv_vcpu_set_interrupt(struct kvm_vcpu *vcpu, unsigned int irq)
arch/riscv/kvm/vcpu_timer.c +15 -2
index 185f2386a747..ad34519c8a13 100644
@@ -320,20 +320,33 @@ void kvm_riscv_vcpu_timer_restore(struct kvm_vcpu *vcpu)
 	kvm_riscv_vcpu_timer_unblocking(vcpu);
 }
 
-void kvm_riscv_vcpu_timer_save(struct kvm_vcpu *vcpu)
+void kvm_riscv_vcpu_timer_sync(struct kvm_vcpu *vcpu)
 {
 	struct kvm_vcpu_timer *t = &vcpu->arch.timer;
 
 	if (!t->sstc_enabled)
 		return;
 
-	t = &vcpu->arch.timer;
 #if defined(CONFIG_32BIT)
 	t->next_cycles = csr_read(CSR_VSTIMECMP);
 	t->next_cycles |= (u64)csr_read(CSR_VSTIMECMPH) << 32;
 #else
 	t->next_cycles = csr_read(CSR_VSTIMECMP);
 #endif
+}
+
+void kvm_riscv_vcpu_timer_save(struct kvm_vcpu *vcpu)
+{
+	struct kvm_vcpu_timer *t = &vcpu->arch.timer;
+
+	if (!t->sstc_enabled)
+		return;
+
+	/*
+	 * The vstimecmp CSRs are saved by kvm_riscv_vcpu_timer_sync()
+	 * upon every VM exit so no need to save here.
+	 */
+
 	/* timer should be enabled for the remaining operations */
 	if (unlikely(!t->init_done))
 		return;
arch/riscv/mm/cacheflush.c +38 -0
index 6cb7d96ad9c7..57b40a350420 100644
@@ -3,6 +3,7 @@
  * Copyright (C) 2017 SiFive
  */
 
+#include <linux/of.h>
 #include <asm/cacheflush.h>
 
 #ifdef CONFIG_SMP
@@ -86,3 +87,40 @@ void flush_icache_pte(pte_t pte)
 		flush_icache_all();
 }
 #endif /* CONFIG_MMU */
+
+unsigned int riscv_cbom_block_size;
+EXPORT_SYMBOL_GPL(riscv_cbom_block_size);
+
+void riscv_init_cbom_blocksize(void)
+{
+	struct device_node *node;
+	unsigned long cbom_hartid;
+	u32 val, probed_block_size;
+	int ret;
+
+	probed_block_size = 0;
+	for_each_of_cpu_node(node) {
+		unsigned long hartid;
+
+		ret = riscv_of_processor_hartid(node, &hartid);
+		if (ret)
+			continue;
+
+		/* set block-size for cbom extension if available */
+		ret = of_property_read_u32(node, "riscv,cbom-block-size", &val);
+		if (ret)
+			continue;
+
+		if (!probed_block_size) {
+			probed_block_size = val;
+			cbom_hartid = hartid;
+		} else {
+			if (probed_block_size != val)
+				pr_warn("cbom-block-size mismatched between harts %lu and %lu\n",
+					cbom_hartid, hartid);
+		}
+	}
+
+	if (probed_block_size)
+		riscv_cbom_block_size = probed_block_size;
+}
arch/riscv/mm/dma-noncoherent.c +0 -39
index e3f9bdf47c5f..d919efab6eba 100644
@@ -8,11 +8,8 @@
 #include <linux/dma-direct.h>
 #include <linux/dma-map-ops.h>
 #include <linux/mm.h>
-#include <linux/of.h>
-#include <linux/of_device.h>
 #include <asm/cacheflush.h>
 
-unsigned int riscv_cbom_block_size;
 static bool noncoherent_supported;
 
 void arch_sync_dma_for_device(phys_addr_t paddr, size_t size,
@@ -75,42 +72,6 @@ void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size,
 	dev->dma_coherent = coherent;
 }
 
-#ifdef CONFIG_RISCV_ISA_ZICBOM
-void riscv_init_cbom_blocksize(void)
-{
-	struct device_node *node;
-	unsigned long cbom_hartid;
-	u32 val, probed_block_size;
-	int ret;
-
-	probed_block_size = 0;
-	for_each_of_cpu_node(node) {
-		unsigned long hartid;
-
-		ret = riscv_of_processor_hartid(node, &hartid);
-		if (ret)
-			continue;
-
-		/* set block-size for cbom extension if available */
-		ret = of_property_read_u32(node, "riscv,cbom-block-size", &val);
-		if (ret)
-			continue;
-
-		if (!probed_block_size) {
-			probed_block_size = val;
-			cbom_hartid = hartid;
-		} else {
-			if (probed_block_size != val)
-				pr_warn("cbom-block-size mismatched between harts %lu and %lu\n",
-					cbom_hartid, hartid);
-		}
-	}
-
-	if (probed_block_size)
-		riscv_cbom_block_size = probed_block_size;
-}
-#endif
-
 void riscv_noncoherent_supported(void)
 {
 	WARN(!riscv_cbom_block_size,
arch/riscv/mm/kasan_init.c +6 -1
index a22e418dbd82..e1226709490f 100644
@@ -113,6 +113,8 @@ static void __init kasan_populate_pud(pgd_t *pgd,
 		base_pud = pt_ops.get_pud_virt(pfn_to_phys(_pgd_pfn(*pgd)));
 	} else if (pgd_none(*pgd)) {
 		base_pud = memblock_alloc(PTRS_PER_PUD * sizeof(pud_t), PAGE_SIZE);
+		memcpy(base_pud, (void *)kasan_early_shadow_pud,
+			sizeof(pud_t) * PTRS_PER_PUD);
 	} else {
 		base_pud = (pud_t *)pgd_page_vaddr(*pgd);
 		if (base_pud == lm_alias(kasan_early_shadow_pud)) {
@@ -173,8 +175,11 @@ static void __init kasan_populate_p4d(pgd_t *pgd,
 		base_p4d = pt_ops.get_p4d_virt(pfn_to_phys(_pgd_pfn(*pgd)));
 	} else {
 		base_p4d = (p4d_t *)pgd_page_vaddr(*pgd);
-		if (base_p4d == lm_alias(kasan_early_shadow_p4d))
+		if (base_p4d == lm_alias(kasan_early_shadow_p4d)) {
 			base_p4d = memblock_alloc(PTRS_PER_PUD * sizeof(p4d_t), PAGE_SIZE);
+			memcpy(base_p4d, (void *)kasan_early_shadow_p4d,
+				sizeof(p4d_t) * PTRS_PER_P4D);
+		}
 	}
 
 	p4dp = base_p4d + p4d_index(vaddr);
arch/s390/boot/vmlinux.lds.S +11 -2
index af5c6860e0a1..fa9d33b01b85 100644
@@ -102,8 +102,17 @@ SECTIONS
 		_compressed_start = .;
 		*(.vmlinux.bin.compressed)
 		_compressed_end = .;
-		FILL(0xff);
-		. = ALIGN(4096);
+	}
+
+#define SB_TRAILER_SIZE 32
+	/* Trailer needed for Secure Boot */
+	. += SB_TRAILER_SIZE; /* make sure .sb.trailer does not overwrite the previous section */
+	. = ALIGN(4096) - SB_TRAILER_SIZE;
+	.sb.trailer : {
+		QUAD(0)
+		QUAD(0)
+		QUAD(0)
+		QUAD(0x000000207a49504c)
 	}
 	_end = .;
 
arch/s390/include/asm/futex.h +2 -1
index e08c882dccaa..eaeaeb3ff0be 100644
@@ -17,7 +17,8 @@
 		"3: jl    1b\n"						\
 		"   lhi   %0,0\n"					\
 		"4: sacf  768\n"					\
-		EX_TABLE(0b,4b) EX_TABLE(2b,4b) EX_TABLE(3b,4b)		\
+		EX_TABLE(0b,4b) EX_TABLE(1b,4b)				\
+		EX_TABLE(2b,4b) EX_TABLE(3b,4b)				\
 		: "=d" (ret), "=&d" (oldval), "=&d" (newval),		\
 		  "=m" (*uaddr)						\
 		: "0" (-EFAULT), "d" (oparg), "a" (uaddr),		\
arch/s390/lib/uaccess.c +3 -3
index d7b3b193d108..be0f1b62c33b 100644
@@ -156,7 +156,7 @@ unsigned long __clear_user(void __user *to, unsigned long size)
 	asm volatile(
 		"   lr	  0,%[spec]\n"
 		"0: mvcos 0(%1),0(%4),%0\n"
-		"   jz	  4f\n"
+		"6: jz	  4f\n"
 		"1: algr  %0,%2\n"
 		"   slgr  %1,%2\n"
 		"   j	  0b\n"
@@ -166,11 +166,11 @@ unsigned long __clear_user(void __user *to, unsigned long size)
 		"   clgr  %0,%3\n"	/* copy crosses next page boundary? */
 		"   jnh	  5f\n"
 		"3: mvcos 0(%1),0(%4),%3\n"
-		"   slgr  %0,%3\n"
+		"7: slgr  %0,%3\n"
 		"   j	  5f\n"
 		"4: slgr  %0,%0\n"
 		"5:\n"
-		EX_TABLE(0b,2b) EX_TABLE(3b,5b)
+		EX_TABLE(0b,2b) EX_TABLE(6b,2b) EX_TABLE(3b,5b) EX_TABLE(7b,5b)
 		: "+a" (size), "+a" (to), "+a" (tmp1), "=a" (tmp2)
 		: "a" (empty_zero_page), [spec] "d" (spec.val)
 		: "cc", "memory", "0");
arch/s390/pci/pci_mmio.c +4 -4
index 080c88620723..588089332931 100644
@@ -64,7 +64,7 @@ static inline int __pcistg_mio_inuser(
 	asm volatile (
 		"       sacf    256\n"
 		"0:     llgc    %[tmp],0(%[src])\n"
-		"       sllg    %[val],%[val],8\n"
+		"4:	sllg	%[val],%[val],8\n"
 		"       aghi    %[src],1\n"
 		"       ogr     %[val],%[tmp]\n"
 		"       brctg   %[cnt],0b\n"
@@ -72,7 +72,7 @@ static inline int __pcistg_mio_inuser(
 		"2:     ipm     %[cc]\n"
 		"       srl     %[cc],28\n"
 		"3:     sacf    768\n"
-		EX_TABLE(0b, 3b) EX_TABLE(1b, 3b) EX_TABLE(2b, 3b)
+		EX_TABLE(0b, 3b) EX_TABLE(4b, 3b) EX_TABLE(1b, 3b) EX_TABLE(2b, 3b)
 		:
 		[src] "+a" (src), [cnt] "+d" (cnt),
 		[val] "+d" (val), [tmp] "=d" (tmp),
@@ -215,10 +215,10 @@ static inline int __pcilg_mio_inuser(
 		"2:     ahi     %[shift],-8\n"
 		"       srlg    %[tmp],%[val],0(%[shift])\n"
 		"3:     stc     %[tmp],0(%[dst])\n"
-		"       aghi    %[dst],1\n"
+		"5:	aghi	%[dst],1\n"
 		"       brctg   %[cnt],2b\n"
 		"4:     sacf    768\n"
-		EX_TABLE(0b, 4b) EX_TABLE(1b, 4b) EX_TABLE(3b, 4b)
+		EX_TABLE(0b, 4b) EX_TABLE(1b, 4b) EX_TABLE(3b, 4b) EX_TABLE(5b, 4b)
 		:
 		[ioaddr_len] "+&d" (ioaddr_len.pair),
 		[cc] "+d" (cc), [val] "=d" (val),
arch/x86/crypto/polyval-clmulni_glue.c +14 -5
index b7664d018851..8fa58b0f3cb3 100644
@@ -27,13 +27,17 @@
 #include <asm/cpu_device_id.h>
 #include <asm/simd.h>
 
+#define POLYVAL_ALIGN	16
+#define POLYVAL_ALIGN_ATTR __aligned(POLYVAL_ALIGN)
+#define POLYVAL_ALIGN_EXTRA ((POLYVAL_ALIGN - 1) & ~(CRYPTO_MINALIGN - 1))
+#define POLYVAL_CTX_SIZE (sizeof(struct polyval_tfm_ctx) + POLYVAL_ALIGN_EXTRA)
 #define NUM_KEY_POWERS	8
 
 struct polyval_tfm_ctx {
 	/*
 	 * These powers must be in the order h^8, ..., h^1.
 	 */
-	u8 key_powers[NUM_KEY_POWERS][POLYVAL_BLOCK_SIZE];
+	u8 key_powers[NUM_KEY_POWERS][POLYVAL_BLOCK_SIZE] POLYVAL_ALIGN_ATTR;
 };
 
 struct polyval_desc_ctx {
@@ -45,6 +49,11 @@ asmlinkage void clmul_polyval_update(const struct polyval_tfm_ctx *keys,
 	const u8 *in, size_t nblocks, u8 *accumulator);
 asmlinkage void clmul_polyval_mul(u8 *op1, const u8 *op2);
 
+static inline struct polyval_tfm_ctx *polyval_tfm_ctx(struct crypto_shash *tfm)
+{
+	return PTR_ALIGN(crypto_shash_ctx(tfm), POLYVAL_ALIGN);
+}
+
 static void internal_polyval_update(const struct polyval_tfm_ctx *keys,
 	const u8 *in, size_t nblocks, u8 *accumulator)
 {
@@ -72,7 +81,7 @@ static void internal_polyval_mul(u8 *op1, const u8 *op2)
 static int polyval_x86_setkey(struct crypto_shash *tfm,
 			const u8 *key, unsigned int keylen)
 {
-	struct polyval_tfm_ctx *tctx = crypto_shash_ctx(tfm);
+	struct polyval_tfm_ctx *tctx = polyval_tfm_ctx(tfm);
 	int i;
 
 	if (keylen != POLYVAL_BLOCK_SIZE)
@@ -102,7 +111,7 @@ static int polyval_x86_update(struct shash_desc *desc,
 			 const u8 *src, unsigned int srclen)
 {
 	struct polyval_desc_ctx *dctx = shash_desc_ctx(desc);
-	const struct polyval_tfm_ctx *tctx = crypto_shash_ctx(desc->tfm);
+	const struct polyval_tfm_ctx *tctx = polyval_tfm_ctx(desc->tfm);
 	u8 *pos;
 	unsigned int nblocks;
 	unsigned int n;
@@ -143,7 +152,7 @@ static int polyval_x86_update(struct shash_desc *desc,
 static int polyval_x86_final(struct shash_desc *desc, u8 *dst)
 {
 	struct polyval_desc_ctx *dctx = shash_desc_ctx(desc);
-	const struct polyval_tfm_ctx *tctx = crypto_shash_ctx(desc->tfm);
+	const struct polyval_tfm_ctx *tctx = polyval_tfm_ctx(desc->tfm);
 
 	if (dctx->bytes) {
 		internal_polyval_mul(dctx->buffer,
@@ -167,7 +176,7 @@ static struct shash_alg polyval_alg = {
 		.cra_driver_name	= "polyval-clmulni",
 		.cra_priority		= 200,
 		.cra_blocksize		= POLYVAL_BLOCK_SIZE,
-		.cra_ctxsize		= sizeof(struct polyval_tfm_ctx),
+		.cra_ctxsize		= POLYVAL_CTX_SIZE,
 		.cra_module		= THIS_MODULE,
 	},
 };
arch/x86/events/intel/lbr.c +1 -1
index 47fca6a7a8bc..c811cb7d632f 100644
@@ -1869,7 +1869,7 @@ void __init intel_pmu_arch_lbr_init(void)
 	return;
 
 clear_arch_lbr:
-	clear_cpu_cap(&boot_cpu_data, X86_FEATURE_ARCH_LBR);
+	setup_clear_cpu_cap(X86_FEATURE_ARCH_LBR);
 }
 
 /**
arch/x86/kernel/fpu/init.c +0 -8
index 621f4b6cac4a..8946f89761cc 100644
@@ -210,13 +210,6 @@ static void __init fpu__init_system_xstate_size_legacy(void)
 	fpstate_reset(&current->thread.fpu);
 }
 
-static void __init fpu__init_init_fpstate(void)
-{
-	/* Bring init_fpstate size and features up to date */
-	init_fpstate.size		= fpu_kernel_cfg.max_size;
-	init_fpstate.xfeatures		= fpu_kernel_cfg.max_features;
-}
-
 /*
  * Called on the boot CPU once per system bootup, to set up the initial
  * FPU state that is later cloned into all processes:
@@ -236,5 +229,4 @@ void __init fpu__init_system(struct cpuinfo_x86 *c)
 	fpu__init_system_xstate_size_legacy();
 	fpu__init_system_xstate(fpu_kernel_cfg.max_size);
 	fpu__init_task_struct_size();
-	fpu__init_init_fpstate();
 }
arch/x86/kernel/fpu/xstate.c +23 -19

72 lines not on this page · raw message

arch/x86/kernel/unwind_orc.c +1 -1
index 0ea57da92940..c059820dfaea 100644
@@ -713,7 +713,7 @@ void __unwind_start(struct unwind_state *state, struct task_struct *task,
 	/* Otherwise, skip ahead to the user-specified starting frame: */
 	while (!unwind_done(state) &&
 	       (!on_stack(&state->stack_info, first_frame, sizeof(long)) ||
-			state->sp < (unsigned long)first_frame))
+			state->sp <= (unsigned long)first_frame))
 		unwind_next_frame(state);
 
 	return;
drivers/acpi/acpi_pcc.c +1 -1
index ee4ce5ba1fb2..3e252be047b8 100644
@@ -27,7 +27,7 @@
  * Arbitrary retries in case the remote processor is slow to respond
  * to PCC commands
  */
-#define PCC_CMD_WAIT_RETRIES_NUM	500
+#define PCC_CMD_WAIT_RETRIES_NUM	500ULL
 
 struct pcc_data {
 	struct pcc_mbox_chan *pcc_chan;
drivers/base/power/domain.c +4 -0
index 55a10e6d4e2a..b7bb9df386de 100644
@@ -2950,6 +2950,10 @@ static int genpd_iterate_idle_states(struct device_node *dn,
 		np = it.node;
 		if (!of_match_node(idle_state_match, np))
 			continue;
+
+		if (!of_device_is_available(np))
+			continue;
+
 		if (states) {
 			ret = genpd_parse_state(&states[i], np);
 			if (ret) {
drivers/char/random.c +2 -2
index 46d6100fa3a7..a04098bc28c1 100644
@@ -793,13 +793,13 @@ int __init random_init(const char *command_line)
 #endif
 
 	for (i = 0, arch_bits = sizeof(entropy) * 8; i < ARRAY_SIZE(entropy);) {
-		longs = arch_get_random_seed_longs(entropy, ARRAY_SIZE(entropy) - i);
+		longs = arch_get_random_seed_longs_early(entropy, ARRAY_SIZE(entropy) - i);
 		if (longs) {
 			_mix_pool_bytes(entropy, sizeof(*entropy) * longs);
 			i += longs;
 			continue;
 		}
-		longs = arch_get_random_longs(entropy, ARRAY_SIZE(entropy) - i);
+		longs = arch_get_random_longs_early(entropy, ARRAY_SIZE(entropy) - i);
 		if (longs) {
 			_mix_pool_bytes(entropy, sizeof(*entropy) * longs);
 			i += longs;
drivers/counter/104-quad-8.c +42 -22

101 lines not on this page · raw message

drivers/counter/microchip-tcb-capture.c +14 -4
index 00844445143b..30c7813c8f43 100644
@@ -28,7 +28,6 @@ struct mchp_tc_data {
 	int qdec_mode;
 	int num_channels;
 	int channel[2];
-	bool trig_inverted;
 };
 
 static const enum counter_function mchp_tc_count_functions[] = {
@@ -153,7 +152,7 @@ static int mchp_tc_count_signal_read(struct counter_device *counter,
 
 	regmap_read(priv->regmap, ATMEL_TC_REG(priv->channel[0], SR), &sr);
 
-	if (priv->trig_inverted)
+	if (signal->id == 1)
 		sigstatus = (sr & ATMEL_TC_MTIOB);
 	else
 		sigstatus = (sr & ATMEL_TC_MTIOA);
@@ -171,6 +170,17 @@ static int mchp_tc_count_action_read(struct counter_device *counter,
 	struct mchp_tc_data *const priv = counter_priv(counter);
 	u32 cmr;
 
+	if (priv->qdec_mode) {
+		*action = COUNTER_SYNAPSE_ACTION_BOTH_EDGES;
+		return 0;
+	}
+
+	/* Only TIOA signal is evaluated in non-QDEC mode */
+	if (synapse->signal->id != 0) {
+		*action = COUNTER_SYNAPSE_ACTION_NONE;
+		return 0;
+	}
+
 	regmap_read(priv->regmap, ATMEL_TC_REG(priv->channel[0], CMR), &cmr);
 
 	switch (cmr & ATMEL_TC_ETRGEDG) {
@@ -199,8 +209,8 @@ static int mchp_tc_count_action_write(struct counter_device *counter,
 	struct mchp_tc_data *const priv = counter_priv(counter);
 	u32 edge = ATMEL_TC_ETRGEDG_NONE;
 
-	/* QDEC mode is rising edge only */
-	if (priv->qdec_mode)
+	/* QDEC mode is rising edge only; only TIOA handled in non-QDEC mode */
+	if (priv->qdec_mode || synapse->signal->id != 0)
 		return -EINVAL;
 
 	switch (action) {
drivers/cpufreq/intel_pstate.c +47 -86

292 lines not on this page · raw message

drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +3 -3
index 2170db83e41d..93ad00453f4b 100644
@@ -509,13 +509,13 @@ kfd_mem_dmamap_userptr(struct kgd_mem *mem,
 	struct ttm_tt *ttm = bo->tbo.ttm;
 	int ret;
 
+	if (WARN_ON(ttm->num_pages != src_ttm->num_pages))
+		return -EINVAL;
+
 	ttm->sg = kmalloc(sizeof(*ttm->sg), GFP_KERNEL);
 	if (unlikely(!ttm->sg))
 		return -ENOMEM;
 
-	if (WARN_ON(ttm->num_pages != src_ttm->num_pages))
-		return -EINVAL;
-
 	/* Same sequence as in amdgpu_ttm_tt_pin_userptr */
 	ret = sg_alloc_table_from_pages(ttm->sg, src_ttm->pages,
 					ttm->num_pages, 0,
drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c +4 -1
index 8ee4e8491f39..4048ba1b661e 100644
@@ -327,7 +327,10 @@ static int amdgpu_ctx_init(struct amdgpu_ctx_mgr *mgr, int32_t priority,
 	if (r)
 		return r;
 
-	ctx->stable_pstate = current_stable_pstate;
+	if (mgr->adev->pm.stable_pstate_ctx)
+		ctx->stable_pstate = mgr->adev->pm.stable_pstate_ctx->stable_pstate;
+	else
+		ctx->stable_pstate = current_stable_pstate;
 
 	return 0;
 }
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +16 -0
index 91665fe44e7c..9170aeaad93e 100644
@@ -3208,6 +3208,15 @@ static int amdgpu_device_ip_resume_phase2(struct amdgpu_device *adev)
 			return r;
 		}
 		adev->ip_blocks[i].status.hw = true;
+
+		if (adev->in_s0ix && adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_SMC) {
+			/* disable gfxoff for IP resume. The gfxoff will be re-enabled in
+			 * amdgpu_device_resume() after IP resume.
+			 */
+			amdgpu_gfx_off_ctrl(adev, false);
+			DRM_DEBUG("will disable gfxoff for re-initializing other blocks\n");
+		}
+
 	}
 
 	return 0;
@@ -4180,6 +4189,13 @@ int amdgpu_device_resume(struct drm_device *dev, bool fbcon)
 	/* Make sure IB tests flushed */
 	flush_delayed_work(&adev->delayed_init_work);
 
+	if (adev->in_s0ix) {
+		/* re-enable gfxoff after IP resume. This re-enables gfxoff after
+		 * it was disabled for IP resume in amdgpu_device_ip_resume_phase2().
+		 */
+		amdgpu_gfx_off_ctrl(adev, true);
+		DRM_DEBUG("will enable gfxoff for the mission mode\n");
+	}
 	if (fbcon)
 		drm_fb_helper_set_suspend_unlocked(adev_to_drm(adev)->fb_helper, false);
 
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +15 -5
index 134575a3893c..9e6c23266a1a 100644
@@ -424,8 +424,9 @@ static int amdgpu_move_blit(struct ttm_buffer_object *bo,
 static bool amdgpu_mem_visible(struct amdgpu_device *adev,
 			       struct ttm_resource *mem)
 {
-	uint64_t mem_size = (u64)mem->num_pages << PAGE_SHIFT;
+	u64 mem_size = (u64)mem->num_pages << PAGE_SHIFT;
 	struct amdgpu_res_cursor cursor;
+	u64 end;
 
 	if (mem->mem_type == TTM_PL_SYSTEM ||
 	    mem->mem_type == TTM_PL_TT)
@@ -434,12 +435,21 @@ static bool amdgpu_mem_visible(struct amdgpu_device *adev,
 		return false;
 
 	amdgpu_res_first(mem, 0, mem_size, &cursor);
+	end = cursor.start + cursor.size;
+	while (cursor.remaining) {
+		amdgpu_res_next(&cursor, cursor.size);
 
-	/* ttm_resource_ioremap only supports contiguous memory */
-	if (cursor.size != mem_size)
-		return false;
+		if (!cursor.remaining)
+			break;
+
+		/* ttm_resource_ioremap only supports contiguous memory */
+		if (end != cursor.start)
+			return false;
+
+		end = cursor.start + cursor.size;
+	}
 
-	return cursor.start + cursor.size <= adev->gmc.visible_vram_size;
+	return end <= adev->gmc.visible_vram_size;
 }
 
 /*
drivers/gpu/drm/amd/amdgpu/mmhub_v2_0.c +8 -20
index 4d304f22889e..998b5d17b271 100644
@@ -32,8 +32,6 @@
 #include "gc/gc_10_1_0_offset.h"
 #include "soc15_common.h"
 
-#define mmMM_ATC_L2_MISC_CG_Sienna_Cichlid                      0x064d
-#define mmMM_ATC_L2_MISC_CG_Sienna_Cichlid_BASE_IDX             0
 #define mmDAGB0_CNTL_MISC2_Sienna_Cichlid                       0x0070
 #define mmDAGB0_CNTL_MISC2_Sienna_Cichlid_BASE_IDX              0
 
@@ -574,7 +572,6 @@ static void mmhub_v2_0_update_medium_grain_clock_gating(struct amdgpu_device *ad
 	case IP_VERSION(2, 1, 0):
 	case IP_VERSION(2, 1, 1):
 	case IP_VERSION(2, 1, 2):
-		def  = data  = RREG32_SOC15(MMHUB, 0, mmMM_ATC_L2_MISC_CG_Sienna_Cichlid);
 		def1 = data1 = RREG32_SOC15(MMHUB, 0, mmDAGB0_CNTL_MISC2_Sienna_Cichlid);
 		break;
 	default:
@@ -608,8 +605,6 @@ static void mmhub_v2_0_update_medium_grain_clock_gating(struct amdgpu_device *ad
 	case IP_VERSION(2, 1, 0):
 	case IP_VERSION(2, 1, 1):
 	case IP_VERSION(2, 1, 2):
-		if (def != data)
-			WREG32_SOC15(MMHUB, 0, mmMM_ATC_L2_MISC_CG_Sienna_Cichlid, data);
 		if (def1 != data1)
 			WREG32_SOC15(MMHUB, 0, mmDAGB0_CNTL_MISC2_Sienna_Cichlid, data1);
 		break;
@@ -634,8 +629,8 @@ static void mmhub_v2_0_update_medium_grain_light_sleep(struct amdgpu_device *ade
 	case IP_VERSION(2, 1, 0):
 	case IP_VERSION(2, 1, 1):
 	case IP_VERSION(2, 1, 2):
-		def  = data  = RREG32_SOC15(MMHUB, 0, mmMM_ATC_L2_MISC_CG_Sienna_Cichlid);
-		break;
+		/* There is no ATCL2 in MMHUB for 2.1.x */
+		return;
 	default:
 		def  = data  = RREG32_SOC15(MMHUB, 0, mmMM_ATC_L2_MISC_CG);
 		break;
@@ -646,18 +641,8 @@ static void mmhub_v2_0_update_medium_grain_light_sleep(struct amdgpu_device *ade
 	else
 		data &= ~MM_ATC_L2_MISC_CG__MEM_LS_ENABLE_MASK;
 
-	if (def != data) {
-		switch (adev->ip_versions[MMHUB_HWIP][0]) {
-		case IP_VERSION(2, 1, 0):
-		case IP_VERSION(2, 1, 1):
-		case IP_VERSION(2, 1, 2):
-			WREG32_SOC15(MMHUB, 0, mmMM_ATC_L2_MISC_CG_Sienna_Cichlid, data);
-			break;
-		default:
-			WREG32_SOC15(MMHUB, 0, mmMM_ATC_L2_MISC_CG, data);
-			break;
-		}
-	}
+	if (def != data)
+		WREG32_SOC15(MMHUB, 0, mmMM_ATC_L2_MISC_CG, data);
 }
 
 static int mmhub_v2_0_set_clockgating(struct amdgpu_device *adev,
@@ -695,7 +680,10 @@ static void mmhub_v2_0_get_clockgating(struct amdgpu_device *adev, u64 *flags)
 	case IP_VERSION(2, 1, 0):
 	case IP_VERSION(2, 1, 1):
 	case IP_VERSION(2, 1, 2):
-		data  = RREG32_SOC15(MMHUB, 0, mmMM_ATC_L2_MISC_CG_Sienna_Cichlid);
+		/* There is no ATCL2 in MMHUB for 2.1.x. Keep the status
+		 * based on DAGB
+		 */
+		data = MM_ATC_L2_MISC_CG__ENABLE_MASK;
 		data1 = RREG32_SOC15(MMHUB, 0, mmDAGB0_CNTL_MISC2_Sienna_Cichlid);
 		break;
 	default:
drivers/gpu/drm/amd/amdkfd/kfd_crat.c +104 -2

121 lines not on this page · raw message

drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c +7 -43

63 lines not on this page · raw message

drivers/gpu/drm/bridge/parade-ps8640.c +23 -2
index 49107a6cdac1..0dacbdb49a30 100644
@@ -105,6 +105,7 @@ struct ps8640 {
 	struct gpio_desc *gpio_powerdown;
 	struct device_link *link;
 	bool pre_enabled;
+	bool need_post_hpd_delay;
 };
 
 static const struct regmap_config ps8640_regmap_config[] = {
@@ -173,14 +174,31 @@ static int _ps8640_wait_hpd_asserted(struct ps8640 *ps_bridge, unsigned long wai
 {
 	struct regmap *map = ps_bridge->regmap[PAGE2_TOP_CNTL];
 	int status;
+	int ret;
 
 	/*
 	 * Apparently something about the firmware in the chip signals that
 	 * HPD goes high by reporting GPIO9 as high (even though HPD isn't
 	 * actually connected to GPIO9).
 	 */
-	return regmap_read_poll_timeout(map, PAGE2_GPIO_H, status,
-					status & PS_GPIO9, wait_us / 10, wait_us);
+	ret = regmap_read_poll_timeout(map, PAGE2_GPIO_H, status,
+				       status & PS_GPIO9, wait_us / 10, wait_us);
+
+	/*
+	 * The first time we see HPD go high after a reset we delay an extra
+	 * 50 ms. The best guess is that the MCU is doing "stuff" during this
+	 * time (maybe talking to the panel) and we don't want to interrupt it.
+	 *
+	 * No locking is done around "need_post_hpd_delay". If we're here we
+	 * know we're holding a PM Runtime reference and the only other place
+	 * that touches this is PM Runtime resume.
+	 */
+	if (!ret && ps_bridge->need_post_hpd_delay) {
+		ps_bridge->need_post_hpd_delay = false;
+		msleep(50);
+	}
+
+	return ret;
 }
 
 static int ps8640_wait_hpd_asserted(struct drm_dp_aux *aux, unsigned long wait_us)
@@ -376,6 +394,9 @@ static int __maybe_unused ps8640_resume(struct device *dev)
 	usleep_range(2000, 2500);
 	gpiod_set_value(ps_bridge->gpio_reset, 0);
 
+	/* We just reset things, so we need a delay after the first HPD */
+	ps_bridge->need_post_hpd_delay = true;
+
 	/*
 	 * Mystery 200 ms delay for the "MCU to be ready". It's unclear if
 	 * this is truly necessary since the MCU will already signal that
drivers/gpu/drm/i915/display/intel_dp.c +2 -0
index 3ed7eeacc706..d4492b6d23d2 100644
@@ -3923,6 +3923,8 @@ intel_dp_handle_hdmi_link_status_change(struct intel_dp *intel_dp)
 
 		drm_dp_pcon_hdmi_frl_link_error_count(&intel_dp->aux, &intel_dp->attached_connector->base);
 
+		intel_dp->frl.is_trained = false;
+
 		/* Restart FRL training or fall back to TMDS mode */
 		intel_dp_check_frl_training(intel_dp);
 	}
drivers/gpu/drm/i915/gt/intel_workarounds.c +2 -2
index e8111fce56d0..dfa9a7c4ebc6 100644
@@ -2301,11 +2301,11 @@ rcs_engine_wa_init(struct intel_engine_cs *engine, struct i915_wa_list *wal)
 	}
 
 	if (IS_DG1_GRAPHICS_STEP(i915, STEP_A0, STEP_B0) ||
-	    IS_ROCKETLAKE(i915) || IS_TIGERLAKE(i915)) {
+	    IS_ROCKETLAKE(i915) || IS_TIGERLAKE(i915) || IS_ALDERLAKE_P(i915)) {
 		/*
 		 * Wa_1607030317:tgl
 		 * Wa_1607186500:tgl
-		 * Wa_1607297627:tgl,rkl,dg1[a0]
+		 * Wa_1607297627:tgl,rkl,dg1[a0],adlp
 		 *
 		 * On TGL and RKL there are multiple entries for this WA in the
 		 * BSpec; some indicate this is an A0-only WA, others indicate
drivers/gpu/drm/i915/intel_runtime_pm.c +9 -2
index 6ed5786bcd29..744cca507946 100644
@@ -591,8 +591,15 @@ void intel_runtime_pm_enable(struct intel_runtime_pm *rpm)
 		pm_runtime_use_autosuspend(kdev);
 	}
 
-	/* Enable by default */
-	pm_runtime_allow(kdev);
+	/*
+	 *  FIXME: Temp hammer to keep autosupend disable on lmem supported platforms.
+	 *  As per PCIe specs 5.3.1.4.1, all iomem read write request over a PCIe
+	 *  function will be unsupported in case PCIe endpoint function is in D3.
+	 *  Let's keep i915 autosuspend control 'on' till we fix all known issue
+	 *  with lmem access in D3.
+	 */
+	if (!IS_DGFX(i915))
+		pm_runtime_allow(kdev);
 
 	/*
 	 * The core calls the driver load handler with an RPM reference held.
drivers/gpu/drm/msm/adreno/a6xx_gpu_state.c +5 -2
index 55f443328d8e..730355f9e2d4 100644
@@ -91,7 +91,7 @@ struct a6xx_state_memobj {
 static void *state_kcalloc(struct a6xx_gpu_state *a6xx_state, int nr, size_t objsize)
 {
 	struct a6xx_state_memobj *obj =
-		kzalloc((nr * objsize) + sizeof(*obj), GFP_KERNEL);
+		kvzalloc((nr * objsize) + sizeof(*obj), GFP_KERNEL);
 
 	if (!obj)
 		return NULL;
@@ -1040,8 +1040,11 @@ static void a6xx_gpu_state_destroy(struct kref *kref)
 	if (a6xx_state->gmu_hfi)
 		kvfree(a6xx_state->gmu_hfi->data);
 
+	if (a6xx_state->gmu_debug)
+		kvfree(a6xx_state->gmu_debug->data);
+
 	list_for_each_entry_safe(obj, tmp, &a6xx_state->objs, node)
-		kfree(obj);
+		kvfree(obj);
 
 	adreno_gpu_state_destroy(state);
 	kfree(a6xx_state);
drivers/gpu/drm/msm/adreno/adreno_gpu.c +6 -1
index 382fb7f9e497..5a0e8491cd3a 100644
@@ -729,7 +729,12 @@ static char *adreno_gpu_ascii85_encode(u32 *src, size_t len)
 	return buf;
 }
 
-/* len is expected to be in bytes */
+/* len is expected to be in bytes
+ *
+ * WARNING: *ptr should be allocated with kvmalloc or friends.  It can be free'd
+ * with kvfree() and replaced with a newly kvmalloc'd buffer on the first call
+ * when the unencoded raw data is encoded
+ */
 void adreno_show_object(struct drm_printer *p, void **ptr, int len,
 		bool *encoded)
 {
drivers/gpu/drm/msm/disp/mdp4/mdp4_lvds_connector.c +3 -2
index 7288041dd86a..7444b75c4215 100644
@@ -56,8 +56,9 @@ static int mdp4_lvds_connector_get_modes(struct drm_connector *connector)
 	return ret;
 }
 
-static int mdp4_lvds_connector_mode_valid(struct drm_connector *connector,
-				 struct drm_display_mode *mode)
+static enum drm_mode_status
+mdp4_lvds_connector_mode_valid(struct drm_connector *connector,
+			       struct drm_display_mode *mode)
 {
 	struct mdp4_lvds_connector *mdp4_lvds_connector =
 			to_mdp4_lvds_connector(connector);
drivers/gpu/drm/msm/dp/dp_ctrl.c +5 -8
index 013ca02e17cb..3ac139a4bbe8 100644
@@ -1245,8 +1245,7 @@ static int dp_ctrl_link_train(struct dp_ctrl_private *ctrl,
 {
 	int ret = 0;
 	const u8 *dpcd = ctrl->panel->dpcd;
-	u8 encoding = DP_SET_ANSI_8B10B;
-	u8 ssc;
+	u8 encoding[] = { 0, DP_SET_ANSI_8B10B };
 	u8 assr;
 	struct dp_link_info link_info = {0};
 
@@ -1258,13 +1257,11 @@ static int dp_ctrl_link_train(struct dp_ctrl_private *ctrl,
 
 	dp_aux_link_configure(ctrl->aux, &link_info);
 
-	if (drm_dp_max_downspread(dpcd)) {
-		ssc = DP_SPREAD_AMP_0_5;
-		drm_dp_dpcd_write(ctrl->aux, DP_DOWNSPREAD_CTRL, &ssc, 1);
-	}
+	if (drm_dp_max_downspread(dpcd))
+		encoding[0] |= DP_SPREAD_AMP_0_5;
 
-	drm_dp_dpcd_write(ctrl->aux, DP_MAIN_LINK_CHANNEL_CODING_SET,
-				&encoding, 1);
+	/* config DOWNSPREAD_CTRL and MAIN_LINK_CHANNEL_CODING_SET */
+	drm_dp_dpcd_write(ctrl->aux, DP_DOWNSPREAD_CTRL, encoding, 2);
 
 	if (drm_dp_alternate_scrambler_reset_cap(dpcd)) {
 		assr = DP_ALTERNATE_SCRAMBLER_RESET_ENABLE;
drivers/gpu/drm/msm/dp/dp_display.c +20 -3
index bfd0aeff3f0d..a49f6dbbe888 100644
@@ -1249,7 +1249,7 @@ int dp_display_request_irq(struct msm_dp *dp_display)
 		return -EINVAL;
 	}
 
-	rc = devm_request_irq(&dp->pdev->dev, dp->irq,
+	rc = devm_request_irq(dp_display->drm_dev->dev, dp->irq,
 			dp_display_irq_handler,
 			IRQF_TRIGGER_HIGH, "dp_display_isr", dp);
 	if (rc < 0) {
@@ -1528,6 +1528,11 @@ void msm_dp_debugfs_init(struct msm_dp *dp_display, struct drm_minor *minor)
 	}
 }
 
+static void of_dp_aux_depopulate_bus_void(void *data)
+{
+	of_dp_aux_depopulate_bus(data);
+}
+
 static int dp_display_get_next_bridge(struct msm_dp *dp)
 {
 	int rc;
@@ -1552,10 +1557,16 @@ static int dp_display_get_next_bridge(struct msm_dp *dp)
 		 * panel driver is probed asynchronously but is the best we
 		 * can do without a bigger driver reorganization.
 		 */
-		rc = devm_of_dp_aux_populate_ep_devices(dp_priv->aux);
+		rc = of_dp_aux_populate_bus(dp_priv->aux, NULL);
 		of_node_put(aux_bus);
 		if (rc)
 			goto error;
+
+		rc = devm_add_action_or_reset(dp->drm_dev->dev,
+						of_dp_aux_depopulate_bus_void,
+						dp_priv->aux);
+		if (rc)
+			goto error;
 	} else if (dp->is_edp) {
 		DRM_ERROR("eDP aux_bus not found\n");
 		return -ENODEV;
@@ -1568,7 +1579,7 @@ static int dp_display_get_next_bridge(struct msm_dp *dp)
 	 * For DisplayPort interfaces external bridges are optional, so
 	 * silently ignore an error if one is not present (-ENODEV).
 	 */
-	rc = dp_parser_find_next_bridge(dp_priv->parser);
+	rc = devm_dp_parser_find_next_bridge(dp->drm_dev->dev, dp_priv->parser);
 	if (!dp->is_edp && rc == -ENODEV)
 		return 0;
 
@@ -1597,6 +1608,12 @@ int msm_dp_modeset_init(struct msm_dp *dp_display, struct drm_device *dev,
 		return -EINVAL;
 
 	priv = dev->dev_private;
+
+	if (priv->num_bridges == ARRAY_SIZE(priv->bridges)) {
+		DRM_DEV_ERROR(dev->dev, "too many bridges\n");
+		return -ENOSPC;
+	}
+
 	dp_display->drm_dev = dev;
 
 	dp_priv = container_of(dp_display, struct dp_display_private, dp_display);
drivers/gpu/drm/msm/dp/dp_drm.c +34 -0
index 6df25f7662e7..6db82f9b03af 100644
@@ -31,6 +31,36 @@ static enum drm_connector_status dp_bridge_detect(struct drm_bridge *bridge)
 					connector_status_disconnected;
 }
 
+static int dp_bridge_atomic_check(struct drm_bridge *bridge,
+			    struct drm_bridge_state *bridge_state,
+			    struct drm_crtc_state *crtc_state,
+			    struct drm_connector_state *conn_state)
+{
+	struct msm_dp *dp;
+
+	dp = to_dp_bridge(bridge)->dp_display;
+
+	drm_dbg_dp(dp->drm_dev, "is_connected = %s\n",
+		(dp->is_connected) ? "true" : "false");
+
+	/*
+	 * There is no protection in the DRM framework to check if the display
+	 * pipeline has been already disabled before trying to disable it again.
+	 * Hence if the sink is unplugged, the pipeline gets disabled, but the
+	 * crtc->active is still true. Any attempt to set the mode or manually
+	 * disable this encoder will result in the crash.
+	 *
+	 * TODO: add support for telling the DRM subsystem that the pipeline is
+	 * disabled by the hardware and thus all access to it should be forbidden.
+	 * After that this piece of code can be removed.
+	 */
+	if (bridge->ops & DRM_BRIDGE_OP_HPD)
+		return (dp->is_connected) ? 0 : -ENOTCONN;
+
+	return 0;
+}
+
+
 /**
  * dp_bridge_get_modes - callback to add drm modes via drm_mode_probed_add()
  * @bridge: Poiner to drm bridge
@@ -61,6 +91,9 @@ static int dp_bridge_get_modes(struct drm_bridge *bridge, struct drm_connector *
 }
 
 static const struct drm_bridge_funcs dp_bridge_ops = {
+	.atomic_duplicate_state = drm_atomic_helper_bridge_duplicate_state,
+	.atomic_destroy_state   = drm_atomic_helper_bridge_destroy_state,
+	.atomic_reset           = drm_atomic_helper_bridge_reset,
 	.enable       = dp_bridge_enable,
 	.disable      = dp_bridge_disable,
 	.post_disable = dp_bridge_post_disable,
@@ -68,6 +101,7 @@ static const struct drm_bridge_funcs dp_bridge_ops = {
 	.mode_valid   = dp_bridge_mode_valid,
 	.get_modes    = dp_bridge_get_modes,
 	.detect       = dp_bridge_detect,
+	.atomic_check = dp_bridge_atomic_check,
 };
 
 struct drm_bridge *dp_bridge_init(struct msm_dp *dp_display, struct drm_device *dev,
drivers/gpu/drm/msm/dp/dp_parser.c +3 -3
index dd732215d55b..dcbe893d66d7 100644
@@ -240,12 +240,12 @@ static int dp_parser_clock(struct dp_parser *parser)
 	return 0;
 }
 
-int dp_parser_find_next_bridge(struct dp_parser *parser)
+int devm_dp_parser_find_next_bridge(struct device *dev, struct dp_parser *parser)
 {
-	struct device *dev = &parser->pdev->dev;
+	struct platform_device *pdev = parser->pdev;
 	struct drm_bridge *bridge;
 
-	bridge = devm_drm_of_get_bridge(dev, dev->of_node, 1, 0);
+	bridge = devm_drm_of_get_bridge(dev, pdev->dev.of_node, 1, 0);
 	if (IS_ERR(bridge))
 		return PTR_ERR(bridge);
 
drivers/gpu/drm/msm/dp/dp_parser.h +3 -2
index 866c1a82bf1a..d30ab773db46 100644
@@ -138,8 +138,9 @@ struct dp_parser {
 struct dp_parser *dp_parser_get(struct platform_device *pdev);
 
 /**
- * dp_parser_find_next_bridge() - find an additional bridge to DP
+ * devm_dp_parser_find_next_bridge() - find an additional bridge to DP
  *
+ * @dev: device to tie bridge lifetime to
  * @parser: dp_parser data from client
  *
  * This function is used to find any additional bridge attached to
@@ -147,6 +148,6 @@ struct dp_parser *dp_parser_get(struct platform_device *pdev);
  *
  * Return: 0 if able to get the bridge, otherwise negative errno for failure.
  */
-int dp_parser_find_next_bridge(struct dp_parser *parser);
+int devm_dp_parser_find_next_bridge(struct device *dev, struct dp_parser *parser);
 
 #endif
drivers/gpu/drm/msm/dsi/dsi.c +6 -0
index 1625328fa430..3db85b5c0feb 100644
@@ -227,6 +227,12 @@ int msm_dsi_modeset_init(struct msm_dsi *msm_dsi, struct drm_device *dev,
 		return -EINVAL;
 
 	priv = dev->dev_private;
+
+	if (priv->num_bridges == ARRAY_SIZE(priv->bridges)) {
+		DRM_DEV_ERROR(dev->dev, "too many bridges\n");
+		return -ENOSPC;
+	}
+
 	msm_dsi->dev = dev;
 
 	ret = msm_dsi_host_modeset_init(msm_dsi->host, dev);
drivers/gpu/drm/msm/hdmi/hdmi.c +6 -1
index 93fe61b86967..f28fb21e3891 100644
@@ -300,6 +300,11 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi,
 	struct platform_device *pdev = hdmi->pdev;
 	int ret;
 
+	if (priv->num_bridges == ARRAY_SIZE(priv->bridges)) {
+		DRM_DEV_ERROR(dev->dev, "too many bridges\n");
+		return -ENOSPC;
+	}
+
 	hdmi->dev = dev;
 	hdmi->encoder = encoder;
 
@@ -339,7 +344,7 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi,
 		goto fail;
 	}
 
-	ret = devm_request_irq(&pdev->dev, hdmi->irq,
+	ret = devm_request_irq(dev->dev, hdmi->irq,
 			msm_hdmi_irq, IRQF_TRIGGER_HIGH,
 			"hdmi_isr", hdmi);
 	if (ret < 0) {
drivers/gpu/drm/msm/msm_drv.c +1 -0
index 0759e2d99f59..869ba58f0254 100644
@@ -241,6 +241,7 @@ static int msm_drm_uninit(struct device *dev)
 
 	for (i = 0; i < priv->num_bridges; i++)
 		drm_bridge_remove(priv->bridges[i]);
+	priv->num_bridges = 0;
 
 	pm_runtime_get_sync(dev);
 	msm_irq_uninstall(ddev);
drivers/hwtracing/coresight/coresight-cti-core.c +0 -5
index 8988b2ed2ea6..dcd607a0c41a 100644
@@ -90,11 +90,9 @@ void cti_write_all_hw_regs(struct cti_drvdata *drvdata)
 static int cti_enable_hw(struct cti_drvdata *drvdata)
 {
 	struct cti_config *config = &drvdata->config;
-	struct device *dev = &drvdata->csdev->dev;
 	unsigned long flags;
 	int rc = 0;
 
-	pm_runtime_get_sync(dev->parent);
 	spin_lock_irqsave(&drvdata->spinlock, flags);
 
 	/* no need to do anything if enabled or unpowered*/
@@ -119,7 +117,6 @@ static int cti_enable_hw(struct cti_drvdata *drvdata)
 	/* cannot enable due to error */
 cti_err_not_enabled:
 	spin_unlock_irqrestore(&drvdata->spinlock, flags);
-	pm_runtime_put(dev->parent);
 	return rc;
 }
 
@@ -153,7 +150,6 @@ static void cti_cpuhp_enable_hw(struct cti_drvdata *drvdata)
 static int cti_disable_hw(struct cti_drvdata *drvdata)
 {
 	struct cti_config *config = &drvdata->config;
-	struct device *dev = &drvdata->csdev->dev;
 	struct coresight_device *csdev = drvdata->csdev;
 
 	spin_lock(&drvdata->spinlock);
@@ -175,7 +171,6 @@ static int cti_disable_hw(struct cti_drvdata *drvdata)
 	coresight_disclaim_device_unlocked(csdev);
 	CS_LOCK(drvdata->base);
 	spin_unlock(&drvdata->spinlock);
-	pm_runtime_put(dev->parent);
 	return 0;
 
 	/* not disabled this call */
drivers/iio/accel/adxl367.c +18 -5
index 47feb375b70b..7c7d78040793 100644
@@ -1185,17 +1185,30 @@ static ssize_t adxl367_get_fifo_watermark(struct device *dev,
 	return sysfs_emit(buf, "%d\n", fifo_watermark);
 }
 
-static IIO_CONST_ATTR(hwfifo_watermark_min, "1");
-static IIO_CONST_ATTR(hwfifo_watermark_max,
-		      __stringify(ADXL367_FIFO_MAX_WATERMARK));
+static ssize_t hwfifo_watermark_min_show(struct device *dev,
+					 struct device_attribute *attr,
+					 char *buf)
+{
+	return sysfs_emit(buf, "%s\n", "1");
+}
+
+static ssize_t hwfifo_watermark_max_show(struct device *dev,
+					 struct device_attribute *attr,
+					 char *buf)
+{
+	return sysfs_emit(buf, "%s\n", __stringify(ADXL367_FIFO_MAX_WATERMARK));
+}
+
+static IIO_DEVICE_ATTR_RO(hwfifo_watermark_min, 0);
+static IIO_DEVICE_ATTR_RO(hwfifo_watermark_max, 0);
 static IIO_DEVICE_ATTR(hwfifo_watermark, 0444,
 		       adxl367_get_fifo_watermark, NULL, 0);
 static IIO_DEVICE_ATTR(hwfifo_enabled, 0444,
 		       adxl367_get_fifo_enabled, NULL, 0);
 
 static const struct attribute *adxl367_fifo_attributes[] = {
-	&iio_const_attr_hwfifo_watermark_min.dev_attr.attr,
-	&iio_const_attr_hwfifo_watermark_max.dev_attr.attr,
+	&iio_dev_attr_hwfifo_watermark_min.dev_attr.attr,
+	&iio_dev_attr_hwfifo_watermark_max.dev_attr.attr,
 	&iio_dev_attr_hwfifo_watermark.dev_attr.attr,
 	&iio_dev_attr_hwfifo_enabled.dev_attr.attr,
 	NULL,
drivers/iio/accel/adxl372.c +18 -5
index e3ecbaee61f7..bc53af809d5d 100644
@@ -998,17 +998,30 @@ static ssize_t adxl372_get_fifo_watermark(struct device *dev,
 	return sprintf(buf, "%d\n", st->watermark);
 }
 
-static IIO_CONST_ATTR(hwfifo_watermark_min, "1");
-static IIO_CONST_ATTR(hwfifo_watermark_max,
-		      __stringify(ADXL372_FIFO_SIZE));
+static ssize_t hwfifo_watermark_min_show(struct device *dev,
+					 struct device_attribute *attr,
+					 char *buf)
+{
+	return sysfs_emit(buf, "%s\n", "1");
+}
+
+static ssize_t hwfifo_watermark_max_show(struct device *dev,
+					 struct device_attribute *attr,
+					 char *buf)
+{
+	return sysfs_emit(buf, "%s\n", __stringify(ADXL372_FIFO_SIZE));
+}
+
+static IIO_DEVICE_ATTR_RO(hwfifo_watermark_min, 0);
+static IIO_DEVICE_ATTR_RO(hwfifo_watermark_max, 0);
 static IIO_DEVICE_ATTR(hwfifo_watermark, 0444,
 		       adxl372_get_fifo_watermark, NULL, 0);
 static IIO_DEVICE_ATTR(hwfifo_enabled, 0444,
 		       adxl372_get_fifo_enabled, NULL, 0);
 
 static const struct attribute *adxl372_fifo_attributes[] = {
-	&iio_const_attr_hwfifo_watermark_min.dev_attr.attr,
-	&iio_const_attr_hwfifo_watermark_max.dev_attr.attr,
+	&iio_dev_attr_hwfifo_watermark_min.dev_attr.attr,
+	&iio_dev_attr_hwfifo_watermark_max.dev_attr.attr,
 	&iio_dev_attr_hwfifo_watermark.dev_attr.attr,
 	&iio_dev_attr_hwfifo_enabled.dev_attr.attr,
 	NULL,
drivers/iio/light/tsl2583.c +1 -1
index 82662dab87c0..94d75ec687c3 100644
@@ -858,7 +858,7 @@ static int tsl2583_probe(struct i2c_client *clientp,
 					 TSL2583_POWER_OFF_DELAY_MS);
 	pm_runtime_use_autosuspend(&clientp->dev);
 
-	ret = devm_iio_device_register(indio_dev->dev.parent, indio_dev);
+	ret = iio_device_register(indio_dev);
 	if (ret) {
 		dev_err(&clientp->dev, "%s: iio registration failed\n",
 			__func__);
drivers/iio/temperature/ltc2983.c +6 -7
index b652d2b39bcf..a60ccf183687 100644
@@ -1385,13 +1385,6 @@ static int ltc2983_setup(struct ltc2983_data *st, bool assign_iio)
 		return ret;
 	}
 
-	st->iio_chan = devm_kzalloc(&st->spi->dev,
-				    st->iio_channels * sizeof(*st->iio_chan),
-				    GFP_KERNEL);
-
-	if (!st->iio_chan)
-		return -ENOMEM;
-
 	ret = regmap_update_bits(st->regmap, LTC2983_GLOBAL_CONFIG_REG,
 				 LTC2983_NOTCH_FREQ_MASK,
 				 LTC2983_NOTCH_FREQ(st->filter_notch_freq));
@@ -1514,6 +1507,12 @@ static int ltc2983_probe(struct spi_device *spi)
 		gpiod_set_value_cansleep(gpio, 0);
 	}
 
+	st->iio_chan = devm_kzalloc(&spi->dev,
+				    st->iio_channels * sizeof(*st->iio_chan),
+				    GFP_KERNEL);
+	if (!st->iio_chan)
+		return -ENOMEM;
+
 	ret = ltc2983_setup(st, true);
 	if (ret)
 		return ret;
drivers/media/i2c/ar0521.c +5 -3
index c7bdfc69b9be..5c9c7c52cfc4 100644
@@ -756,10 +756,12 @@ static int ar0521_power_on(struct device *dev)
 		gpiod_set_value(sensor->reset_gpio, 0);
 	usleep_range(4500, 5000); /* min 45000 clocks */
 
-	for (cnt = 0; cnt < ARRAY_SIZE(initial_regs); cnt++)
-		if (ar0521_write_regs(sensor, initial_regs[cnt].data,
-				      initial_regs[cnt].count))
+	for (cnt = 0; cnt < ARRAY_SIZE(initial_regs); cnt++) {
+		ret = ar0521_write_regs(sensor, initial_regs[cnt].data,
+					initial_regs[cnt].count);
+		if (ret)
 			goto off;
+	}
 
 	ret = ar0521_write_reg(sensor, AR0521_REG_SERIAL_FORMAT,
 			       AR0521_REG_SERIAL_FORMAT_MIPI |
drivers/media/i2c/ov8865.c +6 -4
index b8f4f0d3e33d..15d0f79231dd 100644
@@ -3034,11 +3034,13 @@ static int ov8865_probe(struct i2c_client *client)
 				       &rate);
 	if (!ret && sensor->extclk) {
 		ret = clk_set_rate(sensor->extclk, rate);
-		if (ret)
-			return dev_err_probe(dev, ret,
-					     "failed to set clock rate\n");
+		if (ret) {
+			dev_err_probe(dev, ret, "failed to set clock rate\n");
+			goto error_endpoint;
+		}
 	} else if (ret && !sensor->extclk) {
-		return dev_err_probe(dev, ret, "invalid clock config\n");
+		dev_err_probe(dev, ret, "invalid clock config\n");
+		goto error_endpoint;
 	}
 
 	sensor->extclk_rate = rate ? rate : clk_get_rate(sensor->extclk);
drivers/media/platform/amphion/vpu_v4l2.c +4 -7
index 8a3eed957ae6..b779e0ba916c 100644
@@ -603,6 +603,10 @@ static int vpu_v4l2_release(struct vpu_inst *inst)
 		inst->workqueue = NULL;
 	}
 
+	if (inst->fh.m2m_ctx) {
+		v4l2_m2m_ctx_release(inst->fh.m2m_ctx);
+		inst->fh.m2m_ctx = NULL;
+	}
 	v4l2_ctrl_handler_free(&inst->ctrl_handler);
 	mutex_destroy(&inst->lock);
 	v4l2_fh_del(&inst->fh);
@@ -685,13 +689,6 @@ int vpu_v4l2_close(struct file *file)
 
 	vpu_trace(vpu->dev, "tgid = %d, pid = %d, inst = %p\n", inst->tgid, inst->pid, inst);
 
-	vpu_inst_lock(inst);
-	if (inst->fh.m2m_ctx) {
-		v4l2_m2m_ctx_release(inst->fh.m2m_ctx);
-		inst->fh.m2m_ctx = NULL;
-	}
-	vpu_inst_unlock(inst);
-
 	call_void_vop(inst, release);
 	vpu_inst_unregister(inst);
 	vpu_inst_put(inst);
drivers/media/platform/sunxi/sun4i-csi/Kconfig +1 -1
index 7960e6836f41..60610c04d6a7 100644
@@ -3,7 +3,7 @@
 config VIDEO_SUN4I_CSI
 	tristate "Allwinner A10 CMOS Sensor Interface Support"
 	depends on V4L_PLATFORM_DRIVERS
-	depends on VIDEO_DEV && COMMON_CLK  && HAS_DMA
+	depends on VIDEO_DEV && COMMON_CLK && RESET_CONTROLLER && HAS_DMA
 	depends on ARCH_SUNXI || COMPILE_TEST
 	select MEDIA_CONTROLLER
 	select VIDEO_V4L2_SUBDEV_API
drivers/media/platform/sunxi/sun6i-csi/Kconfig +1 -1
index 0345901617d4..e5b6991ce7f0 100644
@@ -2,7 +2,7 @@
 config VIDEO_SUN6I_CSI
 	tristate "Allwinner V3s Camera Sensor Interface driver"
 	depends on V4L_PLATFORM_DRIVERS
-	depends on VIDEO_DEV && COMMON_CLK  && HAS_DMA
+	depends on VIDEO_DEV && COMMON_CLK && RESET_CONTROLLER && HAS_DMA
 	depends on ARCH_SUNXI || COMPILE_TEST
 	select MEDIA_CONTROLLER
 	select VIDEO_V4L2_SUBDEV_API
drivers/media/platform/sunxi/sun6i-mipi-csi2/Kconfig +2 -2
index eb982466abd3..08852f63692b 100644
@@ -3,11 +3,11 @@ config VIDEO_SUN6I_MIPI_CSI2
 	tristate "Allwinner A31 MIPI CSI-2 Controller Driver"
 	depends on V4L_PLATFORM_DRIVERS && VIDEO_DEV
 	depends on ARCH_SUNXI || COMPILE_TEST
-	depends on PM && COMMON_CLK
+	depends on PM && COMMON_CLK && RESET_CONTROLLER
+	depends on PHY_SUN6I_MIPI_DPHY
 	select MEDIA_CONTROLLER
 	select VIDEO_V4L2_SUBDEV_API
 	select V4L2_FWNODE
-	select PHY_SUN6I_MIPI_DPHY
 	select GENERIC_PHY_MIPI_DPHY
 	select REGMAP_MMIO
 	help
drivers/media/platform/sunxi/sun6i-mipi-csi2/sun6i_mipi_csi2.c +16 -4
index a4e3f9a6b2ff..30d6c0c5161f 100644
@@ -661,7 +661,8 @@ sun6i_mipi_csi2_resources_setup(struct sun6i_mipi_csi2_device *csi2_dev,
 	csi2_dev->reset = devm_reset_control_get_shared(dev, NULL);
 	if (IS_ERR(csi2_dev->reset)) {
 		dev_err(dev, "failed to get reset controller\n");
-		return PTR_ERR(csi2_dev->reset);
+		ret = PTR_ERR(csi2_dev->reset);
+		goto error_clock_rate_exclusive;
 	}
 
 	/* D-PHY */
@@ -669,13 +670,14 @@ sun6i_mipi_csi2_resources_setup(struct sun6i_mipi_csi2_device *csi2_dev,
 	csi2_dev->dphy = devm_phy_get(dev, "dphy");
 	if (IS_ERR(csi2_dev->dphy)) {
 		dev_err(dev, "failed to get MIPI D-PHY\n");
-		return PTR_ERR(csi2_dev->dphy);
+		ret = PTR_ERR(csi2_dev->dphy);
+		goto error_clock_rate_exclusive;
 	}
 
 	ret = phy_init(csi2_dev->dphy);
 	if (ret) {
 		dev_err(dev, "failed to initialize MIPI D-PHY\n");
-		return ret;
+		goto error_clock_rate_exclusive;
 	}
 
 	/* Runtime PM */
@@ -683,6 +685,11 @@ sun6i_mipi_csi2_resources_setup(struct sun6i_mipi_csi2_device *csi2_dev,
 	pm_runtime_enable(dev);
 
 	return 0;
+
+error_clock_rate_exclusive:
+	clk_rate_exclusive_put(csi2_dev->clock_mod);
+
+	return ret;
 }
 
 static void
@@ -712,9 +719,14 @@ static int sun6i_mipi_csi2_probe(struct platform_device *platform_dev)
 
 	ret = sun6i_mipi_csi2_bridge_setup(csi2_dev);
 	if (ret)
-		return ret;
+		goto error_resources;
 
 	return 0;
+
+error_resources:
+	sun6i_mipi_csi2_resources_cleanup(csi2_dev);
+
+	return ret;
 }
 
 static int sun6i_mipi_csi2_remove(struct platform_device *platform_dev)
drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/Kconfig +1 -1
index 789d58ee12ea..47a8c0fb7eb9 100644
@@ -3,7 +3,7 @@ config VIDEO_SUN8I_A83T_MIPI_CSI2
 	tristate "Allwinner A83T MIPI CSI-2 Controller and D-PHY Driver"
 	depends on V4L_PLATFORM_DRIVERS && VIDEO_DEV
 	depends on ARCH_SUNXI || COMPILE_TEST
-	depends on PM && COMMON_CLK
+	depends on PM && COMMON_CLK && RESET_CONTROLLER
 	select MEDIA_CONTROLLER
 	select VIDEO_V4L2_SUBDEV_API
 	select V4L2_FWNODE
drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/sun8i_a83t_mipi_csi2.c +18 -5
index d052ee77ef0a..b032ec13a683 100644
@@ -719,13 +719,15 @@ sun8i_a83t_mipi_csi2_resources_setup(struct sun8i_a83t_mipi_csi2_device *csi2_de
 	csi2_dev->clock_mipi = devm_clk_get(dev, "mipi");
 	if (IS_ERR(csi2_dev->clock_mipi)) {
 		dev_err(dev, "failed to acquire mipi clock\n");
-		return PTR_ERR(csi2_dev->clock_mipi);
+		ret = PTR_ERR(csi2_dev->clock_mipi);
+		goto error_clock_rate_exclusive;
 	}
 
 	csi2_dev->clock_misc = devm_clk_get(dev, "misc");
 	if (IS_ERR(csi2_dev->clock_misc)) {
 		dev_err(dev, "failed to acquire misc clock\n");
-		return PTR_ERR(csi2_dev->clock_misc);
+		ret = PTR_ERR(csi2_dev->clock_misc);
+		goto error_clock_rate_exclusive;
 	}
 
 	/* Reset */
@@ -733,7 +735,8 @@ sun8i_a83t_mipi_csi2_resources_setup(struct sun8i_a83t_mipi_csi2_device *csi2_de
 	csi2_dev->reset = devm_reset_control_get_shared(dev, NULL);
 	if (IS_ERR(csi2_dev->reset)) {
 		dev_err(dev, "failed to get reset controller\n");
-		return PTR_ERR(csi2_dev->reset);
+		ret = PTR_ERR(csi2_dev->reset);
+		goto error_clock_rate_exclusive;
 	}
 
 	/* D-PHY */
@@ -741,7 +744,7 @@ sun8i_a83t_mipi_csi2_resources_setup(struct sun8i_a83t_mipi_csi2_device *csi2_de
 	ret = sun8i_a83t_dphy_register(csi2_dev);
 	if (ret) {
 		dev_err(dev, "failed to initialize MIPI D-PHY\n");
-		return ret;
+		goto error_clock_rate_exclusive;
 	}
 
 	/* Runtime PM */
@@ -749,6 +752,11 @@ sun8i_a83t_mipi_csi2_resources_setup(struct sun8i_a83t_mipi_csi2_device *csi2_de
 	pm_runtime_enable(dev);
 
 	return 0;
+
+error_clock_rate_exclusive:
+	clk_rate_exclusive_put(csi2_dev->clock_mod);
+
+	return ret;
 }
 
 static void
@@ -778,9 +786,14 @@ static int sun8i_a83t_mipi_csi2_probe(struct platform_device *platform_dev)
 
 	ret = sun8i_a83t_mipi_csi2_bridge_setup(csi2_dev);
 	if (ret)
-		return ret;
+		goto error_resources;
 
 	return 0;
+
+error_resources:
+	sun8i_a83t_mipi_csi2_resources_cleanup(csi2_dev);
+
+	return ret;
 }
 
 static int sun8i_a83t_mipi_csi2_remove(struct platform_device *platform_dev)
drivers/media/platform/sunxi/sun8i-di/Kconfig +1 -1
index ff71e06ee2df..f688396913b7 100644
@@ -4,7 +4,7 @@ config VIDEO_SUN8I_DEINTERLACE
 	depends on V4L_MEM2MEM_DRIVERS
 	depends on VIDEO_DEV
 	depends on ARCH_SUNXI || COMPILE_TEST
-	depends on COMMON_CLK && OF
+	depends on COMMON_CLK && RESET_CONTROLLER && OF
 	depends on PM
 	select VIDEOBUF2_DMA_CONTIG
 	select V4L2_MEM2MEM_DEV
drivers/media/platform/sunxi/sun8i-rotate/Kconfig +1 -1
index cfba29072d75..ee2c1f248c64 100644
@@ -5,7 +5,7 @@ config VIDEO_SUN8I_ROTATE
 	depends on V4L_MEM2MEM_DRIVERS
 	depends on VIDEO_DEV
 	depends on ARCH_SUNXI || COMPILE_TEST
-	depends on COMMON_CLK && OF
+	depends on COMMON_CLK && RESET_CONTROLLER && OF
 	depends on PM
 	select VIDEOBUF2_DMA_CONTIG
 	select V4L2_MEM2MEM_DEV
drivers/media/test-drivers/vivid/vivid-core.c +34 -4
index 04b75666bad4..f28440e6c9f8 100644
@@ -339,6 +339,28 @@ static int vidioc_g_fbuf(struct file *file, void *fh, struct v4l2_framebuffer *a
 	return vivid_vid_out_g_fbuf(file, fh, a);
 }
 
+/*
+ * Only support the framebuffer of one of the vivid instances.
+ * Anything else is rejected.
+ */
+bool vivid_validate_fb(const struct v4l2_framebuffer *a)
+{
+	struct vivid_dev *dev;
+	int i;
+
+	for (i = 0; i < n_devs; i++) {
+		dev = vivid_devs[i];
+		if (!dev || !dev->video_pbase)
+			continue;
+		if ((unsigned long)a->base == dev->video_pbase &&
+		    a->fmt.width <= dev->display_width &&
+		    a->fmt.height <= dev->display_height &&
+		    a->fmt.bytesperline <= dev->display_byte_stride)
+			return true;
+	}
+	return false;
+}
+
 static int vidioc_s_fbuf(struct file *file, void *fh, const struct v4l2_framebuffer *a)
 {
 	struct video_device *vdev = video_devdata(file);
@@ -920,8 +942,12 @@ static int vivid_detect_feature_set(struct vivid_dev *dev, int inst,
 
 	/* how many inputs do we have and of what type? */
 	dev->num_inputs = num_inputs[inst];
-	if (dev->num_inputs < 1)
-		dev->num_inputs = 1;
+	if (node_type & 0x20007) {
+		if (dev->num_inputs < 1)
+			dev->num_inputs = 1;
+	} else {
+		dev->num_inputs = 0;
+	}
 	if (dev->num_inputs >= MAX_INPUTS)
 		dev->num_inputs = MAX_INPUTS;
 	for (i = 0; i < dev->num_inputs; i++) {
@@ -938,8 +964,12 @@ static int vivid_detect_feature_set(struct vivid_dev *dev, int inst,
 
 	/* how many outputs do we have and of what type? */
 	dev->num_outputs = num_outputs[inst];
-	if (dev->num_outputs < 1)
-		dev->num_outputs = 1;
+	if (node_type & 0x40300) {
+		if (dev->num_outputs < 1)
+			dev->num_outputs = 1;
+	} else {
+		dev->num_outputs = 0;
+	}
 	if (dev->num_outputs >= MAX_OUTPUTS)
 		dev->num_outputs = MAX_OUTPUTS;
 	for (i = 0; i < dev->num_outputs; i++) {
drivers/media/test-drivers/vivid/vivid-core.h +2 -0
index 176b72cb143b..5def9b2a359a 100644
@@ -610,4 +610,6 @@ static inline bool vivid_is_hdmi_out(const struct vivid_dev *dev)
 	return dev->output_type[dev->output] == HDMI;
 }
 
+bool vivid_validate_fb(const struct v4l2_framebuffer *a);
+
 #endif
drivers/media/test-drivers/vivid/vivid-vid-cap.c +21 -6
index b9caa4b26209..99139a8cd4c4 100644
@@ -452,6 +452,12 @@ void vivid_update_format_cap(struct vivid_dev *dev, bool keep_controls)
 	tpg_reset_source(&dev->tpg, dev->src_rect.width, dev->src_rect.height, dev->field_cap);
 	dev->crop_cap = dev->src_rect;
 	dev->crop_bounds_cap = dev->src_rect;
+	if (dev->bitmap_cap &&
+	    (dev->compose_cap.width != dev->crop_cap.width ||
+	     dev->compose_cap.height != dev->crop_cap.height)) {
+		vfree(dev->bitmap_cap);
+		dev->bitmap_cap = NULL;
+	}
 	dev->compose_cap = dev->crop_cap;
 	if (V4L2_FIELD_HAS_T_OR_B(dev->field_cap))
 		dev->compose_cap.height /= 2;
@@ -909,6 +915,8 @@ int vivid_vid_cap_s_selection(struct file *file, void *fh, struct v4l2_selection
 	struct vivid_dev *dev = video_drvdata(file);
 	struct v4l2_rect *crop = &dev->crop_cap;
 	struct v4l2_rect *compose = &dev->compose_cap;
+	unsigned orig_compose_w = compose->width;
+	unsigned orig_compose_h = compose->height;
 	unsigned factor = V4L2_FIELD_HAS_T_OR_B(dev->field_cap) ? 2 : 1;
 	int ret;
 
@@ -1025,17 +1033,17 @@ int vivid_vid_cap_s_selection(struct file *file, void *fh, struct v4l2_selection
 			s->r.height /= factor;
 		}
 		v4l2_rect_map_inside(&s->r, &dev->fmt_cap_rect);
-		if (dev->bitmap_cap && (compose->width != s->r.width ||
-					compose->height != s->r.height)) {
-			vfree(dev->bitmap_cap);
-			dev->bitmap_cap = NULL;
-		}
 		*compose = s->r;
 		break;
 	default:
 		return -EINVAL;
 	}
 
+	if (dev->bitmap_cap && (compose->width != orig_compose_w ||
+				compose->height != orig_compose_h)) {
+		vfree(dev->bitmap_cap);
+		dev->bitmap_cap = NULL;
+	}
 	tpg_s_crop_compose(&dev->tpg, crop, compose);
 	return 0;
 }
@@ -1272,7 +1280,14 @@ int vivid_vid_cap_s_fbuf(struct file *file, void *fh,
 		return -EINVAL;
 	if (a->fmt.bytesperline < (a->fmt.width * fmt->bit_depth[0]) / 8)
 		return -EINVAL;
-	if (a->fmt.height * a->fmt.bytesperline < a->fmt.sizeimage)
+	if (a->fmt.bytesperline > a->fmt.sizeimage / a->fmt.height)
+		return -EINVAL;
+
+	/*
+	 * Only support the framebuffer of one of the vivid instances.
+	 * Anything else is rejected.
+	 */
+	if (!vivid_validate_fb(a))
 		return -EINVAL;
 
 	dev->fb_vbase_cap = phys_to_virt((unsigned long)a->base);
drivers/media/v4l2-core/v4l2-dv-timings.c +14 -0
index af48705c704f..003c32fed3f7 100644
@@ -161,6 +161,20 @@ bool v4l2_valid_dv_timings(const struct v4l2_dv_timings *t,
 	    (bt->interlaced && !(caps & V4L2_DV_BT_CAP_INTERLACED)) ||
 	    (!bt->interlaced && !(caps & V4L2_DV_BT_CAP_PROGRESSIVE)))
 		return false;
+
+	/* sanity checks for the blanking timings */
+	if (!bt->interlaced &&
+	    (bt->il_vbackporch || bt->il_vsync || bt->il_vfrontporch))
+		return false;
+	if (bt->hfrontporch > 2 * bt->width ||
+	    bt->hsync > 1024 || bt->hbackporch > 1024)
+		return false;
+	if (bt->vfrontporch > 4096 ||
+	    bt->vsync > 128 || bt->vbackporch > 4096)
+		return false;
+	if (bt->interlaced && (bt->il_vfrontporch > 4096 ||
+	    bt->il_vsync > 128 || bt->il_vbackporch > 4096))
+		return false;
 	return fnc == NULL || fnc(t, fnc_handle);
 }
 EXPORT_SYMBOL_GPL(v4l2_valid_dv_timings);
drivers/mmc/core/block.c +26 -18

73 lines not on this page · raw message

drivers/mmc/core/queue.c +8 -0
index fefaa901b50f..b396e3900717 100644
@@ -48,6 +48,7 @@ static enum mmc_issue_type mmc_cqe_issue_type(struct mmc_host *host,
 	case REQ_OP_DRV_OUT:
 	case REQ_OP_DISCARD:
 	case REQ_OP_SECURE_ERASE:
+	case REQ_OP_WRITE_ZEROES:
 		return MMC_ISSUE_SYNC;
 	case REQ_OP_FLUSH:
 		return mmc_cqe_can_dcmd(host) ? MMC_ISSUE_DCMD : MMC_ISSUE_SYNC;
@@ -493,6 +494,13 @@ void mmc_cleanup_queue(struct mmc_queue *mq)
 	if (blk_queue_quiesced(q))
 		blk_mq_unquiesce_queue(q);
 
+	/*
+	 * If the recovery completes the last (and only remaining) request in
+	 * the queue, and the card has been removed, we could end up here with
+	 * the recovery not quite finished yet, so cancel it.
+	 */
+	cancel_work_sync(&mq->recovery_work);
+
 	blk_mq_free_tag_set(&mq->tag_set);
 
 	/*
drivers/mmc/core/sdio_bus.c +2 -1
index c6268c38c69e..babf21a0adeb 100644
@@ -291,7 +291,8 @@ static void sdio_release_func(struct device *dev)
 {
 	struct sdio_func *func = dev_to_sdio_func(dev);
 
-	sdio_free_func_cis(func);
+	if (!(func->card->quirks & MMC_QUIRK_NONSTD_SDIO))
+		sdio_free_func_cis(func);
 
 	kfree(func->info);
 	kfree(func->tmpbuf);
drivers/mmc/host/Kconfig +2 -1
index e63608834411..97a6ea4a3ac7 100644
@@ -1074,9 +1074,10 @@ config MMC_SDHCI_OMAP
 
 config MMC_SDHCI_AM654
 	tristate "Support for the SDHCI Controller in TI's AM654 SOCs"
-	depends on MMC_SDHCI_PLTFM && OF && REGMAP_MMIO
+	depends on MMC_SDHCI_PLTFM && OF
 	select MMC_SDHCI_IO_ACCESSORS
 	select MMC_CQHCI
+	select REGMAP_MMIO
 	help
 	  This selects the Secure Digital Host Controller Interface (SDHCI)
 	  support present in TI's AM654 SOCs. The controller supports
drivers/mmc/host/sdhci-esdhc-imx.c +8 -6
index 55981b0f0b10..747df79d90ee 100644
@@ -1660,6 +1660,10 @@ static int sdhci_esdhc_imx_probe(struct platform_device *pdev)
 		host->mmc_host_ops.execute_tuning = usdhc_execute_tuning;
 	}
 
+	err = sdhci_esdhc_imx_probe_dt(pdev, host, imx_data);
+	if (err)
+		goto disable_ahb_clk;
+
 	if (imx_data->socdata->flags & ESDHC_FLAG_MAN_TUNING)
 		sdhci_esdhc_ops.platform_execute_tuning =
 					esdhc_executing_tuning;
@@ -1667,13 +1671,15 @@ static int sdhci_esdhc_imx_probe(struct platform_device *pdev)
 	if (imx_data->socdata->flags & ESDHC_FLAG_ERR004536)
 		host->quirks |= SDHCI_QUIRK_BROKEN_ADMA;
 
-	if (imx_data->socdata->flags & ESDHC_FLAG_HS400)
+	if (host->caps & MMC_CAP_8_BIT_DATA &&
+	    imx_data->socdata->flags & ESDHC_FLAG_HS400)
 		host->mmc->caps2 |= MMC_CAP2_HS400;
 
 	if (imx_data->socdata->flags & ESDHC_FLAG_BROKEN_AUTO_CMD23)
 		host->quirks2 |= SDHCI_QUIRK2_ACMD23_BROKEN;
 
-	if (imx_data->socdata->flags & ESDHC_FLAG_HS400_ES) {
+	if (host->caps & MMC_CAP_8_BIT_DATA &&
+	    imx_data->socdata->flags & ESDHC_FLAG_HS400_ES) {
 		host->mmc->caps2 |= MMC_CAP2_HS400_ES;
 		host->mmc_host_ops.hs400_enhanced_strobe =
 					esdhc_hs400_enhanced_strobe;
@@ -1695,10 +1701,6 @@ static int sdhci_esdhc_imx_probe(struct platform_device *pdev)
 			goto disable_ahb_clk;
 	}
 
-	err = sdhci_esdhc_imx_probe_dt(pdev, host, imx_data);
-	if (err)
-		goto disable_ahb_clk;
-
 	sdhci_esdhc_imx_hwinit(host);
 
 	err = sdhci_add_host(host);
drivers/mmc/host/sdhci-pci-core.c +11 -3
index 622b7de96c7f..b6f4bd3d93cd 100644
@@ -893,6 +893,12 @@ static bool glk_broken_cqhci(struct sdhci_pci_slot *slot)
 		dmi_match(DMI_SYS_VENDOR, "IRBIS"));
 }
 
+static bool jsl_broken_hs400es(struct sdhci_pci_slot *slot)
+{
+	return slot->chip->pdev->device == PCI_DEVICE_ID_INTEL_JSL_EMMC &&
+			dmi_match(DMI_BIOS_VENDOR, "ASUSTeK COMPUTER INC.");
+}
+
 static int glk_emmc_probe_slot(struct sdhci_pci_slot *slot)
 {
 	int ret = byt_emmc_probe_slot(slot);
@@ -901,9 +907,11 @@ static int glk_emmc_probe_slot(struct sdhci_pci_slot *slot)
 		slot->host->mmc->caps2 |= MMC_CAP2_CQE;
 
 	if (slot->chip->pdev->device != PCI_DEVICE_ID_INTEL_GLK_EMMC) {
-		slot->host->mmc->caps2 |= MMC_CAP2_HS400_ES;
-		slot->host->mmc_host_ops.hs400_enhanced_strobe =
-						intel_hs400_enhanced_strobe;
+		if (!jsl_broken_hs400es(slot)) {
+			slot->host->mmc->caps2 |= MMC_CAP2_HS400_ES;
+			slot->host->mmc_host_ops.hs400_enhanced_strobe =
+							intel_hs400_enhanced_strobe;
+		}
 		slot->host->mmc->caps2 |= MMC_CAP2_CQE_DCMD;
 	}
 
drivers/mtd/mtdcore.c +1 -1
index a9b8be9f40dc..477707bcad97 100644
@@ -562,7 +562,7 @@ static void mtd_check_of_node(struct mtd_info *mtd)
 	if (!mtd_is_partition(mtd))
 		return;
 	parent = mtd->parent;
-	parent_dn = dev_of_node(&parent->dev);
+	parent_dn = of_node_get(dev_of_node(&parent->dev));
 	if (!parent_dn)
 		return;
 
drivers/mtd/nand/raw/intel-nand-controller.c +19 -16
index 056835fd4562..4c721704d2fd 100644
@@ -108,7 +108,6 @@
 
 struct ebu_nand_cs {
 	void __iomem *chipaddr;
-	dma_addr_t nand_pa;
 	u32 addr_sel;
 };
 
@@ -596,13 +595,11 @@ static int ebu_nand_probe(struct platform_device *pdev)
 	ebu_host->dev = dev;
 	nand_controller_init(&ebu_host->controller);
 
-	res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "ebunand");
-	ebu_host->ebu = devm_ioremap_resource(&pdev->dev, res);
+	ebu_host->ebu = devm_platform_ioremap_resource_byname(pdev, "ebunand");
 	if (IS_ERR(ebu_host->ebu))
 		return PTR_ERR(ebu_host->ebu);
 
-	res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "hsnand");
-	ebu_host->hsnand = devm_ioremap_resource(&pdev->dev, res);
+	ebu_host->hsnand = devm_platform_ioremap_resource_byname(pdev, "hsnand");
 	if (IS_ERR(ebu_host->hsnand))
 		return PTR_ERR(ebu_host->hsnand);
 
@@ -614,31 +611,35 @@ static int ebu_nand_probe(struct platform_device *pdev)
 	ret = of_property_read_u32(chip_np, "reg", &cs);
 	if (ret) {
 		dev_err(dev, "failed to get chip select: %d\n", ret);
-		return ret;
+		goto err_of_node_put;
 	}
 	if (cs >= MAX_CS) {
 		dev_err(dev, "got invalid chip select: %d\n", cs);
-		return -EINVAL;
+		ret = -EINVAL;
+		goto err_of_node_put;
 	}
 
 	ebu_host->cs_num = cs;
 
 	resname = devm_kasprintf(dev, GFP_KERNEL, "nand_cs%d", cs);
-	res = platform_get_resource_byname(pdev, IORESOURCE_MEM, resname);
-	ebu_host->cs[cs].chipaddr = devm_ioremap_resource(dev, res);
-	if (IS_ERR(ebu_host->cs[cs].chipaddr))
-		return PTR_ERR(ebu_host->cs[cs].chipaddr);
-	ebu_host->cs[cs].nand_pa = res->start;
+	ebu_host->cs[cs].chipaddr = devm_platform_ioremap_resource_byname(pdev,
+									  resname);
+	if (IS_ERR(ebu_host->cs[cs].chipaddr)) {
+		ret = PTR_ERR(ebu_host->cs[cs].chipaddr);
+		goto err_of_node_put;
+	}
 
 	ebu_host->clk = devm_clk_get(dev, NULL);
-	if (IS_ERR(ebu_host->clk))
-		return dev_err_probe(dev, PTR_ERR(ebu_host->clk),
-				     "failed to get clock\n");
+	if (IS_ERR(ebu_host->clk)) {
+		ret = dev_err_probe(dev, PTR_ERR(ebu_host->clk),
+				    "failed to get clock\n");
+		goto err_of_node_put;
+	}
 
 	ret = clk_prepare_enable(ebu_host->clk);
 	if (ret) {
 		dev_err(dev, "failed to enable clock: %d\n", ret);
-		return ret;
+		goto err_of_node_put;
 	}
 	ebu_host->clk_rate = clk_get_rate(ebu_host->clk);
 
@@ -703,6 +704,8 @@ static int ebu_nand_probe(struct platform_device *pdev)
 	ebu_dma_cleanup(ebu_host);
 err_disable_unprepare_clk:
 	clk_disable_unprepare(ebu_host->clk);
+err_of_node_put:
+	of_node_put(chip_np);
 
 	return ret;
 }
drivers/mtd/nand/raw/marvell_nand.c +1 -1
index 2455a581fd70..b248c5f657d5 100644
@@ -2672,7 +2672,7 @@ static int marvell_nand_chip_init(struct device *dev, struct marvell_nfc *nfc,
 	chip->controller = &nfc->controller;
 	nand_set_flash_node(chip, np);
 
-	if (!of_property_read_bool(np, "marvell,nand-keep-config"))
+	if (of_property_read_bool(np, "marvell,nand-keep-config"))
 		chip->options |= NAND_KEEP_TIMINGS;
 
 	mtd = nand_to_mtd(chip);
drivers/mtd/nand/raw/tegra_nand.c +3 -1
index e12f9f580a15..a9b9031ce616 100644
@@ -1181,7 +1181,7 @@ static int tegra_nand_probe(struct platform_device *pdev)
 	pm_runtime_enable(&pdev->dev);
 	err = pm_runtime_resume_and_get(&pdev->dev);
 	if (err)
-		return err;
+		goto err_dis_pm;
 
 	err = reset_control_reset(rst);
 	if (err) {
@@ -1215,6 +1215,8 @@ static int tegra_nand_probe(struct platform_device *pdev)
 err_put_pm:
 	pm_runtime_put_sync_suspend(ctrl->dev);
 	pm_runtime_force_suspend(ctrl->dev);
+err_dis_pm:
+	pm_runtime_disable(&pdev->dev);
 	return err;
 }
 
drivers/mtd/parsers/bcm47xxpart.c +2 -2
index 50fcf4c2174b..13daf9bffd08 100644
@@ -233,11 +233,11 @@ static int bcm47xxpart_parse(struct mtd_info *master,
 		}
 
 		/* Read middle of the block */
-		err = mtd_read(master, offset + 0x8000, 0x4, &bytes_read,
+		err = mtd_read(master, offset + (blocksize / 2), 0x4, &bytes_read,
 			       (uint8_t *)buf);
 		if (err && !mtd_is_bitflip(err)) {
 			pr_err("mtd_read error while parsing (offset: 0x%X): %d\n",
-			       offset + 0x8000, err);
+			       offset + (blocksize / 2), err);
 			continue;
 		}
 
drivers/mtd/spi-nor/core.c +3 -1
index f2c64006f8d7..bee8fc4c9f07 100644
@@ -2724,7 +2724,9 @@ static int spi_nor_init(struct spi_nor *nor)
 		 */
 		WARN_ONCE(nor->flags & SNOR_F_BROKEN_RESET,
 			  "enabling reset hack; may not recover from unexpected reboots\n");
-		return nor->params->set_4byte_addr_mode(nor, true);
+		err = nor->params->set_4byte_addr_mode(nor, true);
+		if (err && err != -ENOTSUPP)
+			return err;
 	}
 
 	return 0;
drivers/net/can/mscan/mpc5xxx_can.c +5 -3
index c469b2f3e57d..b0ed798ae70f 100644
@@ -322,14 +322,14 @@ static int mpc5xxx_can_probe(struct platform_device *ofdev)
 					       &mscan_clksrc);
 	if (!priv->can.clock.freq) {
 		dev_err(&ofdev->dev, "couldn't get MSCAN clock properties\n");
-		goto exit_free_mscan;
+		goto exit_put_clock;
 	}
 
 	err = register_mscandev(dev, mscan_clksrc);
 	if (err) {
 		dev_err(&ofdev->dev, "registering %s failed (err=%d)\n",
 			DRV_NAME, err);
-		goto exit_free_mscan;
+		goto exit_put_clock;
 	}
 
 	dev_info(&ofdev->dev, "MSCAN at 0x%p, irq %d, clock %d Hz\n",
@@ -337,7 +337,9 @@ static int mpc5xxx_can_probe(struct platform_device *ofdev)
 
 	return 0;
 
-exit_free_mscan:
+exit_put_clock:
+	if (data->put_clock)
+		data->put_clock(ofdev);
 	free_candev(dev);
 exit_dispose_irq:
 	irq_dispose_mapping(irq);
drivers/net/can/rcar/rcar_canfd.c +11 -13
index 27085b796e75..d77c8d6d191a 100644
@@ -1157,11 +1157,13 @@ static void rcar_canfd_handle_global_receive(struct rcar_canfd_global *gpriv, u3
 {
 	struct rcar_canfd_channel *priv = gpriv->ch[ch];
 	u32 ridx = ch + RCANFD_RFFIFO_IDX;
-	u32 sts;
+	u32 sts, cc;
 
 	/* Handle Rx interrupts */
 	sts = rcar_canfd_read(priv->base, RCANFD_RFSTS(gpriv, ridx));
-	if (likely(sts & RCANFD_RFSTS_RFIF)) {
+	cc = rcar_canfd_read(priv->base, RCANFD_RFCC(gpriv, ridx));
+	if (likely(sts & RCANFD_RFSTS_RFIF &&
+		   cc & RCANFD_RFCC_RFIE)) {
 		if (napi_schedule_prep(&priv->napi)) {
 			/* Disable Rx FIFO interrupts */
 			rcar_canfd_clear_bit(priv->base,
@@ -1244,11 +1246,9 @@ static void rcar_canfd_handle_channel_tx(struct rcar_canfd_global *gpriv, u32 ch
 
 static irqreturn_t rcar_canfd_channel_tx_interrupt(int irq, void *dev_id)
 {
-	struct rcar_canfd_global *gpriv = dev_id;
-	u32 ch;
+	struct rcar_canfd_channel *priv = dev_id;
 
-	for_each_set_bit(ch, &gpriv->channels_mask, gpriv->max_channels)
-		rcar_canfd_handle_channel_tx(gpriv, ch);
+	rcar_canfd_handle_channel_tx(priv->gpriv, priv->channel);
 
 	return IRQ_HANDLED;
 }
@@ -1276,11 +1276,9 @@ static void rcar_canfd_handle_channel_err(struct rcar_canfd_global *gpriv, u32 c
 
 static irqreturn_t rcar_canfd_channel_err_interrupt(int irq, void *dev_id)
 {
-	struct rcar_canfd_global *gpriv = dev_id;
-	u32 ch;
+	struct rcar_canfd_channel *priv = dev_id;
 
-	for_each_set_bit(ch, &gpriv->channels_mask, gpriv->max_channels)
-		rcar_canfd_handle_channel_err(gpriv, ch);
+	rcar_canfd_handle_channel_err(priv->gpriv, priv->channel);
 
 	return IRQ_HANDLED;
 }
@@ -1721,6 +1719,7 @@ static int rcar_canfd_channel_probe(struct rcar_canfd_global *gpriv, u32 ch,
 	priv->ndev = ndev;
 	priv->base = gpriv->base;
 	priv->channel = ch;
+	priv->gpriv = gpriv;
 	priv->can.clock.freq = fcan_freq;
 	dev_info(&pdev->dev, "can_clk rate is %u\n", priv->can.clock.freq);
 
@@ -1749,7 +1748,7 @@ static int rcar_canfd_channel_probe(struct rcar_canfd_global *gpriv, u32 ch,
 		}
 		err = devm_request_irq(&pdev->dev, err_irq,
 				       rcar_canfd_channel_err_interrupt, 0,
-				       irq_name, gpriv);
+				       irq_name, priv);
 		if (err) {
 			dev_err(&pdev->dev, "devm_request_irq CH Err(%d) failed, error %d\n",
 				err_irq, err);
@@ -1763,7 +1762,7 @@ static int rcar_canfd_channel_probe(struct rcar_canfd_global *gpriv, u32 ch,
 		}
 		err = devm_request_irq(&pdev->dev, tx_irq,
 				       rcar_canfd_channel_tx_interrupt, 0,
-				       irq_name, gpriv);
+				       irq_name, priv);
 		if (err) {
 			dev_err(&pdev->dev, "devm_request_irq Tx (%d) failed, error %d\n",
 				tx_irq, err);
@@ -1789,7 +1788,6 @@ static int rcar_canfd_channel_probe(struct rcar_canfd_global *gpriv, u32 ch,
 
 	priv->can.do_set_mode = rcar_canfd_do_set_mode;
 	priv->can.do_get_berr_counter = rcar_canfd_get_berr_counter;
-	priv->gpriv = gpriv;
 	SET_NETDEV_DEV(ndev, &pdev->dev);
 
 	netif_napi_add_weight(ndev, &priv->napi, rcar_canfd_rx_poll,
drivers/net/can/spi/mcp251x.c +4 -1
index c320de474f40..24883a65ca66 100644
@@ -1415,11 +1415,14 @@ static int mcp251x_can_probe(struct spi_device *spi)
 
 	ret = mcp251x_gpio_setup(priv);
 	if (ret)
-		goto error_probe;
+		goto out_unregister_candev;
 
 	netdev_info(net, "MCP%x successfully initialized.\n", priv->model);
 	return 0;
 
+out_unregister_candev:
+	unregister_candev(net);
+
 error_probe:
 	destroy_workqueue(priv->wq);
 	priv->wq = NULL;
drivers/net/can/usb/kvaser_usb/kvaser_usb_hydra.c +2 -2
index 3dcd35979e6f..3abfaa77e893 100644
@@ -1875,7 +1875,7 @@ static int kvaser_usb_hydra_start_chip(struct kvaser_usb_net_priv *priv)
 {
 	int err;
 
-	init_completion(&priv->start_comp);
+	reinit_completion(&priv->start_comp);
 
 	err = kvaser_usb_hydra_send_simple_cmd(priv->dev, CMD_START_CHIP_REQ,
 					       priv->channel);
@@ -1893,7 +1893,7 @@ static int kvaser_usb_hydra_stop_chip(struct kvaser_usb_net_priv *priv)
 {
 	int err;
 
-	init_completion(&priv->stop_comp);
+	reinit_completion(&priv->stop_comp);
 
 	/* Make sure we do not report invalid BUS_OFF from CMD_CHIP_STATE_EVENT
 	 * see comment in kvaser_usb_hydra_update_state()
drivers/net/can/usb/kvaser_usb/kvaser_usb_leaf.c +2 -2
index 50f2ac8319ff..19958037720f 100644
@@ -1320,7 +1320,7 @@ static int kvaser_usb_leaf_start_chip(struct kvaser_usb_net_priv *priv)
 {
 	int err;
 
-	init_completion(&priv->start_comp);
+	reinit_completion(&priv->start_comp);
 
 	err = kvaser_usb_leaf_send_simple_cmd(priv->dev, CMD_START_CHIP,
 					      priv->channel);
@@ -1338,7 +1338,7 @@ static int kvaser_usb_leaf_stop_chip(struct kvaser_usb_net_priv *priv)
 {
 	int err;
 
-	init_completion(&priv->stop_comp);
+	reinit_completion(&priv->stop_comp);
 
 	err = kvaser_usb_leaf_send_simple_cmd(priv->dev, CMD_STOP_CHIP,
 					      priv->channel);
drivers/net/ethernet/amd/xgbe/xgbe-pci.c +5 -0
index 2af3da4b2d05..f409d7bd1f1e 100644
@@ -285,6 +285,9 @@ static int xgbe_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
 
 		/* Yellow Carp devices do not need cdr workaround */
 		pdata->vdata->an_cdr_workaround = 0;
+
+		/* Yellow Carp devices do not need rrc */
+		pdata->vdata->enable_rrc = 0;
 	} else {
 		pdata->xpcs_window_def_reg = PCS_V2_WINDOW_DEF;
 		pdata->xpcs_window_sel_reg = PCS_V2_WINDOW_SELECT;
@@ -483,6 +486,7 @@ static struct xgbe_version_data xgbe_v2a = {
 	.tx_desc_prefetch		= 5,
 	.rx_desc_prefetch		= 5,
 	.an_cdr_workaround		= 1,
+	.enable_rrc			= 1,
 };
 
 static struct xgbe_version_data xgbe_v2b = {
@@ -498,6 +502,7 @@ static struct xgbe_version_data xgbe_v2b = {
 	.tx_desc_prefetch		= 5,
 	.rx_desc_prefetch		= 5,
 	.an_cdr_workaround		= 1,
+	.enable_rrc			= 1,
 };
 
 static const struct pci_device_id xgbe_pci_table[] = {
drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c +13 -6
index 2156600641b6..601a9f2fa9bf 100644
@@ -239,6 +239,7 @@ enum xgbe_sfp_speed {
 #define XGBE_SFP_BASE_BR_1GBE_MAX		0x0d
 #define XGBE_SFP_BASE_BR_10GBE_MIN		0x64
 #define XGBE_SFP_BASE_BR_10GBE_MAX		0x68
+#define XGBE_MOLEX_SFP_BASE_BR_10GBE_MAX	0x78
 
 #define XGBE_SFP_BASE_CU_CABLE_LEN		18
 
@@ -284,6 +285,8 @@ struct xgbe_sfp_eeprom {
 #define XGBE_BEL_FUSE_VENDOR	"BEL-FUSE        "
 #define XGBE_BEL_FUSE_PARTNO	"1GBT-SFP06      "
 
+#define XGBE_MOLEX_VENDOR	"Molex Inc.      "
+
 struct xgbe_sfp_ascii {
 	union {
 		char vendor[XGBE_SFP_BASE_VENDOR_NAME_LEN + 1];
@@ -834,7 +837,11 @@ static bool xgbe_phy_sfp_bit_rate(struct xgbe_sfp_eeprom *sfp_eeprom,
 		break;
 	case XGBE_SFP_SPEED_10000:
 		min = XGBE_SFP_BASE_BR_10GBE_MIN;
-		max = XGBE_SFP_BASE_BR_10GBE_MAX;
+		if (memcmp(&sfp_eeprom->base[XGBE_SFP_BASE_VENDOR_NAME],
+			   XGBE_MOLEX_VENDOR, XGBE_SFP_BASE_VENDOR_NAME_LEN) == 0)
+			max = XGBE_MOLEX_SFP_BASE_BR_10GBE_MAX;
+		else
+			max = XGBE_SFP_BASE_BR_10GBE_MAX;
 		break;
 	default:
 		return false;
@@ -1151,7 +1158,10 @@ static void xgbe_phy_sfp_parse_eeprom(struct xgbe_prv_data *pdata)
 	}
 
 	/* Determine the type of SFP */
-	if (sfp_base[XGBE_SFP_BASE_10GBE_CC] & XGBE_SFP_BASE_10GBE_CC_SR)
+	if (phy_data->sfp_cable == XGBE_SFP_CABLE_PASSIVE &&
+	    xgbe_phy_sfp_bit_rate(sfp_eeprom, XGBE_SFP_SPEED_10000))
+		phy_data->sfp_base = XGBE_SFP_BASE_10000_CR;
+	else if (sfp_base[XGBE_SFP_BASE_10GBE_CC] & XGBE_SFP_BASE_10GBE_CC_SR)
 		phy_data->sfp_base = XGBE_SFP_BASE_10000_SR;
 	else if (sfp_base[XGBE_SFP_BASE_10GBE_CC] & XGBE_SFP_BASE_10GBE_CC_LR)
 		phy_data->sfp_base = XGBE_SFP_BASE_10000_LR;
@@ -1167,9 +1177,6 @@ static void xgbe_phy_sfp_parse_eeprom(struct xgbe_prv_data *pdata)
 		phy_data->sfp_base = XGBE_SFP_BASE_1000_CX;
 	else if (sfp_base[XGBE_SFP_BASE_1GBE_CC] & XGBE_SFP_BASE_1GBE_CC_T)
 		phy_data->sfp_base = XGBE_SFP_BASE_1000_T;
-	else if ((phy_data->sfp_cable == XGBE_SFP_CABLE_PASSIVE) &&
-		 xgbe_phy_sfp_bit_rate(sfp_eeprom, XGBE_SFP_SPEED_10000))
-		phy_data->sfp_base = XGBE_SFP_BASE_10000_CR;
 
 	switch (phy_data->sfp_base) {
 	case XGBE_SFP_BASE_1000_T:
@@ -2640,7 +2647,7 @@ static int xgbe_phy_link_status(struct xgbe_prv_data *pdata, int *an_restart)
 	}
 
 	/* No link, attempt a receiver reset cycle */
-	if (phy_data->rrc_count++ > XGBE_RRC_FREQUENCY) {
+	if (pdata->vdata->enable_rrc && phy_data->rrc_count++ > XGBE_RRC_FREQUENCY) {
 		phy_data->rrc_count = 0;
 		xgbe_phy_rrc(pdata);
 	}
drivers/net/ethernet/amd/xgbe/xgbe.h +1 -0
index b875c430222e..49d23abce73d 100644
@@ -1013,6 +1013,7 @@ struct xgbe_version_data {
 	unsigned int tx_desc_prefetch;
 	unsigned int rx_desc_prefetch;
 	unsigned int an_cdr_workaround;
+	unsigned int enable_rrc;
 };
 
 struct xgbe_prv_data {
drivers/net/ethernet/aquantia/atlantic/aq_macsec.c +72 -24

171 lines not on this page · raw message

drivers/net/ethernet/aquantia/atlantic/aq_nic.h +2 -0
index 935ba889bd9a..ad33f8586532 100644
@@ -157,6 +157,8 @@ struct aq_nic_s {
 	struct mutex fwreq_mutex;
 #if IS_ENABLED(CONFIG_MACSEC)
 	struct aq_macsec_cfg *macsec_cfg;
+	/* mutex to protect data in macsec_cfg */
+	struct mutex macsec_mutex;
 #endif
 	/* PTP support */
 	struct aq_ptp_s *aq_ptp;
drivers/net/ethernet/broadcom/bcm4908_enet.c +8 -4
index c131d8118489..5ec429663f4c 100644
@@ -561,8 +561,6 @@ static int bcm4908_enet_start_xmit(struct sk_buff *skb, struct net_device *netde
 
 	if (++ring->write_idx == ring->length - 1)
 		ring->write_idx = 0;
-	enet->netdev->stats.tx_bytes += skb->len;
[… more lines in the raw message]

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

drivers/net/ethernet/broadcom/bcmsysport.c +3 -0
index 47fc8e6963d5..2f01d4b0a9aa 100644

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

drivers/net/ethernet/cadence/macb_main.c +1 -0
index a2897549f9c4..aa1b03f8bfe9 100644

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

drivers/net/ethernet/freescale/enetc/enetc.c +5 -0
index 9f5b921039bd..d0fd3045ce11 100644

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

drivers/net/ethernet/freescale/fec_main.c +44 -2

46 lines not on this page · raw message

drivers/net/ethernet/huawei/hinic/hinic_debugfs.c +12 -6
index 19eb839177ec..061952c6c21a 100644

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

drivers/net/ethernet/huawei/hinic/hinic_hw_cmdq.c +1 -1
index a627237f694b..afa816cfcdf4 100644

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

drivers/net/ethernet/huawei/hinic/hinic_hw_dev.c +1 -1
index 2127a48749a8..1cd812c56672 100644

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

drivers/net/ethernet/huawei/hinic/hinic_sriov.c +0 -1
index df555847afb5..61c1da0c52a0 100644

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

drivers/net/ethernet/ibm/ehea/ehea_main.c +1 -0
index 5dc302880f5f..acecf25a6041 100644

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

drivers/net/ethernet/intel/i40e/i40e_ethtool.c +60 -40

100 lines not on this page · raw message

drivers/net/ethernet/intel/i40e/i40e_type.h +4 -0
index 7b3f30beb757..388c3d36d96a 100644

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

drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c +32 -11

43 lines not on this page · raw message

drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h +1 -0
index a554d0a0b09b..358bbdb58795 100644

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

drivers/net/ethernet/lantiq_etop.c +0 -1
index 7cedbe1fdfd7..bd04d9f33349 100644

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

drivers/net/ethernet/mellanox/mlx5/core/cmd.c +5 -5
index 0377392848d9..46ba4c2faad2 100644

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

drivers/net/ethernet/mellanox/mlx5/core/en/ptp.h +9 -0
index 92dbbec472ec..f324a0c6f869 100644

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

drivers/net/ethernet/mellanox/mlx5/core/en/tc_priv.h +2 -0
index 10c9a8a79d00..2e42d7c5451e 100644

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

drivers/net/ethernet/mellanox/mlx5/core/en/txrx.h +6 -0
index c208ea307bff..ff8ca7a7e103 100644

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

drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c +0 -3
index 2a8fd7020622..a715601865d3 100644

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

drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +71 -3

74 lines not on this page · raw message

drivers/net/ethernet/mellanox/mlx5/core/en_tx.c +6 -0
index 27f791feb517..4d45150a3f8e 100644

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

drivers/net/ethernet/mellanox/mlx5/core/fw_reset.c +17 -0
index e8896f368362..07c583996c29 100644

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

drivers/net/ethernet/mellanox/mlx5/core/lib/aso.c +7 -0
index 21e14507ff5c..7cd9dda53774 100644

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

drivers/net/ethernet/mellanox/mlx5/core/lib/mpfs.c +3 -3
index 839a01da110f..8ff16318e32d 100644

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

drivers/net/ethernet/mellanox/mlx5/core/main.c +4 -0
index 89b2d9cea33f..e5e32430b6af 100644

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

drivers/net/ethernet/mellanox/mlx5/core/steering/dr_rule.c +2 -1
index ddfaf7891188..91ff19f67695 100644

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

drivers/net/ethernet/micrel/ksz884x.c +1 -1
index 2b3eb5ed8233..97839f1b456c 100644

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

drivers/net/ethernet/microchip/lan966x/lan966x_ethtool.c +9 -1
index e58a27fd8b50..fea42542be28 100644

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

drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c +3 -21
index 51f8a0816377..69f741db25b1 100644

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

drivers/net/ethernet/socionext/netsec.c +2 -0
index b0c5a44785fa..386c8640381b 100644

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

drivers/net/ethernet/socionext/sni_ave.c +6 -0
index f0c8de2c6075..db80a17a7e21 100644

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

drivers/net/netdevsim/bus.c +7 -2
index b5f4df1a07a3..0052968e881e 100644

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

drivers/net/netdevsim/dev.c +20 -11
index e88f783c297e..b17e4e94a060 100644

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

drivers/nfc/virtual_ncidev.c +3 -0
index f577449e4935..85c06dbb2c44 100644

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

drivers/pinctrl/pinctrl-ingenic.c +2 -2
index 3a9ee9c8af11..2991fe0bb0f2 100644

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

drivers/pinctrl/pinctrl-ocelot.c +13 -4
index c7df8c5fe585..105771ff82e6 100644

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

drivers/pinctrl/pinctrl-zynqmp.c +0 -9
index 7d2fbf8a02cd..c98f35ad8921 100644

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

drivers/pinctrl/qcom/pinctrl-msm.c +21 -0
index a2abfe987ab1..8bf8b21954fe 100644

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

drivers/platform/x86/amd/pmc.c +0 -12
index fc326fdf483f..6ccb9b38483c 100644

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

drivers/s390/cio/css.c +2 -6
index 913b6ddd040b..c7db95398500 100644

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

drivers/scsi/qla2xxx/qla_attr.c +26 -2
index fa1fcbfb946f..6188f6e21464 100644

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

drivers/spi/spi-aspeed-smc.c +1 -1
index 3e891bf22470..5a995b5653f1 100644

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

drivers/spi/spi-qup.c +2 -0
index 7d89510dc3f0..678dc51ef017 100644

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

drivers/staging/media/atomisp/pci/sh_css_params.c +2 -2
index 0e7c38b2bfe3..67915d76a87f 100644

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

drivers/staging/media/sunxi/cedrus/Kconfig +1 -0
index 21c13f9b6e33..621944f9907a 100644

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

drivers/usb/core/quirks.c +9 -0
index 999b7c9697fc..0722d2131305 100644

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

drivers/usb/dwc3/core.c +48 -1

49 lines not on this page · raw message

drivers/usb/dwc3/drd.c +0 -50

50 lines not on this page · raw message

drivers/usb/dwc3/dwc3-st.c +1 -1
index 6c14a79279f9..fea5290de83f 100644

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

drivers/usb/dwc3/gadget.c +19 -2
index eca945feeec3..0ed9826a4c47 100644

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

drivers/usb/gadget/function/uvc_queue.c +5 -3
index ec500ee499ee..0aa3d7e1f3cc 100644

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

drivers/usb/gadget/function/uvc_video.c +18 -7
index bb037fcc90e6..dd1c6b2ca7c6 100644

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

drivers/usb/gadget/udc/aspeed-vhub/dev.c +1 -0
index b0dfca43fbdc..4f3bc27c1c62 100644

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

drivers/usb/gadget/udc/bdc/bdc_udc.c +1 -0
index 5ac0ef88334e..53ffaf4e2e37 100644

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

drivers/usb/host/xhci-mem.c +12 -8
index 9e56aa28efcd..81ca2bc1f0be 100644

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

drivers/usb/host/xhci-pci.c +15 -29

44 lines not on this page · raw message

drivers/usb/host/xhci.c +8 -2
index a7ef675f00fd..44078a05a0fe 100644

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

drivers/usb/host/xhci.h +1 -0
index 6dfbf73ee840..a6daf37ff4bf 100644

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

drivers/usb/typec/ucsi/ucsi.c +29 -13

42 lines not on this page · raw message

drivers/usb/typec/ucsi/ucsi_acpi.c +10 -0
index 8873c1644a29..ce0c8ef80c04 100644

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

drivers/video/aperture.c +1 -4
index 9223d3d4089f..013a382bf5f4 100644

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

drivers/video/fbdev/smscufx.c +30 -25

55 lines not on this page · raw message

drivers/video/fbdev/stifb.c +2 -1
index 7753e586e65a..3feb6e40d56d 100644

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

fs/binfmt_elf.c +2 -1
index 63c7ebb0da89..6a11025e5850 100644

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

fs/erofs/zdata.c +3 -3
index 6e663275aeb1..c7511b431776 100644

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

fs/erofs/zmap.c +7 -10
index d58549ca1df9..63fd2f146026 100644

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

fs/exec.c +2 -2
index d046dbb9cbd0..6f3d6fce178f 100644

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

fs/kernfs/dir.c +4 -1
index 1cc88ba6de90..2e9313988871 100644

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

fs/squashfs/file.c +14 -9
index e56510964b22..8ba8c4c50770 100644

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

fs/squashfs/page_actor.c +3 -0
index 54b93bf4a25c..81af6c4ca115 100644

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

fs/squashfs/page_actor.h +5 -1
index 95ffbb543d91..97d4983559b1 100644

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

include/linux/mlx5/driver.h +1 -1
index c32de987fa71..454dab40baf6 100644

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

include/linux/perf_event.h +15 -4
index ee8b9ecdc03b..00df83258447 100644

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

include/linux/userfaultfd_k.h +3 -3
index e1b8a915e9e9..31d86b8c0634 100644

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

include/media/v4l2-common.h +2 -1
index b708d63995f4..2ae2be4c87e5 100644

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

include/net/sock.h +1 -1
index d08cfe190a78..8a98ea9360fb 100644

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

include/sound/control.h +1 -0
index eae443ba79ba..cc3dcc6cfb0f 100644

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

include/sound/soc-acpi-intel-match.h +2 -0
index bc7fd46ec2bc..ac750afa7bc6 100644

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

include/uapi/linux/videodev2.h +2 -1
index 01e630f2ec78..fbe40307934d 100644

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

kernel/bpf/btf.c +5 -0
index 36fd4b509294..0d23d4bcd81c 100644

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

kernel/events/core.c +113 -38

151 lines not on this page · raw message

kernel/events/ring_buffer.c +1 -1
index 726132039c38..273a0fe7910a 100644

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

kernel/power/hibernate.c +1 -1
index 89c71fce225d..537dd3beafc1 100644

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

kernel/rcu/tree.c +6 -4
index eb435941e92f..5b52727dcc1c 100644

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

kernel/sched/sched.h +9 -9
index e26688d387ae..f34b489636ff 100644

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

mm/huge_memory.c +10 -1
index f42bb51e023a..9558dbf3954c 100644

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

mm/kmemleak.c +42 -19

61 lines not on this page · raw message

mm/madvise.c +11 -1
index 9ff51650f4f0..98ed17a4471a 100644

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

mm/migrate.c +7 -0
index 6a1597c92261..524248466bb8 100644

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

mm/page_alloc.c +1 -0
index d04211f0ef0b..19749f5409e7 100644

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

net/can/j1939/transport.c +3 -1
index d7d86c944d76..55f29c9f9e08 100644

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

net/core/net_namespace.c +7 -0
index 0ec2f5906a27..f64654df71a2 100644

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

net/core/skbuff.c +1 -1
index 417463da4fac..5e1a8eeb5e32 100644

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

net/ethtool/eeprom.c +1 -1
index 1c94bb8ea03f..49c0a2a77f02 100644

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

net/ieee802154/socket.c +3 -1
index 6e55fae4c686..1fa2fe041ec0 100644

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

net/ipv4/nexthop.c +1 -1
index 853a75a8fbaf..d8ef05347fd9 100644

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

net/ipv4/tcp_input.c +2 -1
index bc2ea12221f9..0640453fce54 100644

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

net/ipv4/tcp_ipv4.c +3 -1
index 5b019ba2b9d2..fe9a6022db66 100644

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

net/ipv6/ip6_gre.c +7 -5
index 80cb50d459e4..409e8dded7c6 100644

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

net/ipv6/ip6_tunnel.c +6 -5
index 79c6a827dea9..616487b14698 100644

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

net/ipv6/ipv6_sockglue.c +7 -0
index e0dcc7a193df..b61066ac8648 100644

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

net/ipv6/sit.c +5 -3
index 6b73b7a5f175..59b2d9a6210c 100644

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

net/kcm/kcmsock.c +16 -9
index 1215c863e1c4..befc62606cdf 100644

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

net/mac802154/rx.c +3 -2
index c439125ef2b9..726b47a4611b 100644

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

net/mptcp/protocol.c +1 -2
index f8897a70c11d..b568f55998f3 100644

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

net/mptcp/protocol.h +1 -0
index 8f372b8f059c..c1eaa1685592 100644

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

net/mptcp/subflow.c +7 -0
index 07dd23d0fe04..02a54d59697b 100644

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

net/openvswitch/datapath.c +2 -1
index 93c596e3b22b..8a22574ed7ad 100644

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

net/tipc/topsrv.c +12 -4
index 14fd05fd6107..d92ec92f0b71 100644

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

sound/aoa/soundbus/i2sbus/core.c +6 -1
index faf6b03131ee..51ed2f34b276 100644

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

sound/core/control.c +23 -0
index a7271927d875..50e7ba66f187 100644

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

sound/pci/ac97/ac97_codec.c +25 -8
index cb60a07d39a8..ff685321f1a1 100644

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

sound/pci/au88x0/au88x0.h +3 -3
index 0aa7af049b1b..6cbb2bc4a048 100644

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

sound/pci/au88x0/au88x0_core.c +1 -1
index 2ed5100b8cae..f217c02dfdfa 100644

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

sound/pci/ca0106/ca0106_mixer.c +1 -1
index 05f56015ddd8..f6381c098d4f 100644

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

sound/pci/emu10k1/emumixer.c +1 -1
index e9c0fe3b8446..3c115f8ab96c 100644

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

sound/pci/hda/patch_realtek.c +4 -1
index 8f7905e0b376..6e25a0f89f6b 100644

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

sound/pci/rme9652/hdsp.c +13 -13
index dcc43a81ae0e..65add92c88aa 100644

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

sound/pci/rme9652/rme9652.c +11 -11
index 1d614fe89a6a..e7c320afefe8 100644

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

sound/soc/codecs/Kconfig +1 -0
index d16b4efb88a7..932f08549788 100644

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

sound/soc/codecs/tlv320adc3xxx.c +1 -1
index 748998e48af9..8a0965cd3e66 100644

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

sound/soc/intel/common/Makefile +1 -1
index 8ca8f872ec80..41054cf09ec9 100644

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

sound/soc/intel/common/soc-acpi-intel-rpl-match.c new file +51 -0

51 lines not on this page · raw message

sound/soc/qcom/lpass-cpu.c +10 -0
index 8a56f38dc7e8..54353842dc07 100644

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

sound/soc/sof/intel/pci-mtl.c +1 -1
index 899b00d53d64..9f39da984e9f 100644

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

sound/soc/sof/intel/pci-tgl.c +88 -4

92 lines not on this page · raw message

sound/synth/emux/emux.c +1 -6
index 5ed8e36d2e04..a870759d179e 100644

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

sound/usb/implicit.c +2 -0
index e1bf1b5da423..f3e8484b3d9c 100644

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

sound/usb/mixer.c +1 -1
index a5641956ef10..9105ec623120 100644

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

tools/iio/iio_utils.c +4 -0
index aadee6d34c74..8d35893b2fa8 100644

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

tools/perf/pmu-events/arch/arm64/hisilicon/hip08/metrics.json +3 -3
index 6970203cb247..6443a061e22a 100644

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

tools/perf/pmu-events/arch/powerpc/power10/nest_metrics.json +36 -36

72 lines not on this page · raw message

tools/perf/pmu-events/arch/s390/cf_z16/pai.json deleted +0 -1101

1,101 lines not on this page · raw message

tools/perf/pmu-events/arch/s390/cf_z16/pai_crypto.json new file +1101 -0

1,101 lines not on this page · raw message

tools/perf/util/auxtrace.c +9 -1
index 6edab8a16de6..aded2caff3a2 100644

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

tools/testing/selftests/drivers/net/bonding/Makefile +3 -1
index 1d866658e541..c61299c10e36 100644

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

tools/testing/selftests/drivers/net/bonding/dev_addr_lists.sh +1 -1
index e6fa24eded5b..5cfe7d8ebc25 100755

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

tools/testing/selftests/drivers/net/bonding/net_forwarding_lib.sh new file +1 -0
new file mode 120000
index 000000000000..39c96828c5ef

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

tools/testing/selftests/drivers/net/dsa/test_bridge_fdb_stress.sh +2 -2
index dca8be6092b9..a1f269ee84da 100755

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

tools/testing/selftests/drivers/net/team/Makefile +4 -0
index 642d8df1c137..6a86e61e8bfe 100644

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

tools/testing/selftests/drivers/net/team/dev_addr_lists.sh +3 -3
index debda7262956..33913112d5ca 100755

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

tools/testing/selftests/drivers/net/team/lag_lib.sh new file +1 -0
new file mode 120000
index 000000000000..e1347a10afde

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

tools/testing/selftests/drivers/net/team/net_forwarding_lib.sh new file +1 -0
new file mode 120000
index 000000000000..39c96828c5ef

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

tools/testing/selftests/ftrace/test.d/dynevent/test_duplicates.tc +1 -1
index db522577ff78..d3a79da215c8 100644

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

tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-synthetic-eprobe.tc +1 -1
index 914fe2e5d030..6461c375694f 100644

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

tools/testing/selftests/kvm/memslot_modification_stress_test.c +1 -1
index 6ee7e1dde404..bb1d17a1171b 100644

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

tools/testing/selftests/lib.mk +2 -2
index 9d4cb94cf437..a3ea3d4a206d 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.