Skip to contentSkip to conversation

Linux 5.14.4

DISCUSSION Greg Kroah-Hartman 4 participants 10 messages Sep 15, 2021 – Sep 16, 2021

Subsystems (2)
lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 5.14.4 kernel.

All users of the 5.14 kernel series must upgrade.

The updated 5.14.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.14.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/fault-injection/provoke-crashes.rst          |    2 
 Makefile                                                   |    2 
 arch/arm/boot/dts/aspeed-bmc-ibm-everest.dts               |    2 
 arch/arm/boot/dts/aspeed-g6-pinctrl.dtsi                   |    4 
 arch/arm/boot/dts/at91-sam9x60ek.dts                       |   16 
 arch/arm/boot/dts/at91-sama5d3_xplained.dts                |   29 +
 arch/arm/boot/dts/at91-sama5d4_xplained.dts                |   19 
 arch/arm/boot/dts/meson8.dtsi                              |    5 
 arch/arm/boot/dts/meson8b-ec100.dts                        |    4 
 arch/arm/boot/dts/meson8b-mxq.dts                          |    4 
 arch/arm/boot/dts/meson8b-odroidc1.dts                     |    4 
 arch/arm64/boot/dts/exynos/exynos7.dtsi                    |    2 
 arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts     |   17 
 arch/arm64/boot/dts/marvell/armada-37xx.dtsi               |   11 
 arch/arm64/boot/dts/qcom/sc7180-trogdor-coachz.dtsi        |    2 
 arch/arm64/boot/dts/qcom/sc7280.dtsi                       |    6 
 arch/arm64/boot/dts/qcom/sm8250.dtsi                       |    2 
 arch/arm64/boot/dts/qcom/sm8350.dtsi                       |    8 
 arch/arm64/boot/dts/renesas/hihope-rzg2-ex.dtsi            |    1 
 arch/arm64/boot/dts/renesas/r8a77995-draak.dts             |    4 
 arch/arm64/kvm/arm.c                                       |    7 
 arch/arm64/kvm/vgic/vgic-v2.c                              |   36 -
 arch/arm64/kvm/vgic/vgic-v3.c                              |   36 -
 arch/arm64/kvm/vgic/vgic.c                                 |   38 +
 arch/arm64/kvm/vgic/vgic.h                                 |    2 
 arch/m68k/Kconfig.cpu                                      |    8 
 arch/m68k/coldfire/clk.c                                   |    2 
 arch/m68k/emu/nfeth.c                                      |    4 
 arch/m68k/include/asm/atomic.h                             |    4 
 arch/parisc/boot/compressed/misc.c                         |    2 
 arch/s390/include/asm/kvm_host.h                           |    1 
 arch/s390/include/asm/lowcore.h                            |    3 
 arch/s390/include/asm/processor.h                          |    2 
 arch/s390/kernel/asm-offsets.c                             |    1 
 arch/s390/kernel/debug.c                                   |  176 ++++----
 arch/s390/kernel/entry.S                                   |   11 
 arch/s390/kernel/ipl.c                                     |    3 
 arch/s390/kernel/machine_kexec.c                           |    1 
 arch/s390/kernel/setup.c                                   |    9 
 arch/s390/kernel/smp.c                                     |   31 +
 arch/s390/kvm/interrupt.c                                  |   12 
 arch/s390/kvm/kvm-s390.c                                   |    2 
 arch/s390/kvm/kvm-s390.h                                   |    2 
 arch/s390/mm/kasan_init.c                                  |   41 -
 arch/s390/pci/pci.c                                        |    7 
 arch/s390/pci/pci_clp.c                                    |   33 -
 arch/x86/crypto/aesni-intel_glue.c                         |    5 
 arch/x86/events/intel/uncore_snbep.c                       |   40 +
 arch/x86/include/asm/mce.h                                 |    1 
 arch/x86/kernel/cpu/mce/core.c                             |   11 
 arch/x86/kvm/mmu/mmu.c                                     |   19 
 arch/x86/kvm/mmu/tdp_mmu.c                                 |   20 
 arch/x86/kvm/vmx/nested.c                                  |    7 
 arch/x86/kvm/vmx/vmx.c                                     |    3 
 arch/x86/kvm/x86.c                                         |    4 
 block/bfq-iosched.c                                        |    3 
 block/bio.c                                                |   15 
 block/blk-crypto.c                                         |    2 
 block/blk-merge.c                                          |   18 
 block/blk-throttle.c                                       |   32 +
 block/blk.h                                                |    2 
 block/elevator.c                                           |    3 
 block/mq-deadline.c                                        |    2 
 certs/Makefile                                             |    8 
 crypto/ecc.h                                               |    5 
 crypto/tcrypt.c                                            |   29 -
 drivers/acpi/prmt.c                                        |   10 
 drivers/ata/libata-core.c                                  |    2 
 drivers/auxdisplay/hd44780.c                               |    2 
 drivers/base/dd.c                                          |   16 
 drivers/base/firmware_loader/main.c                        |   20 
 drivers/base/regmap/regmap.c                               |    2 
 drivers/bcma/main.c                                        |    6 
 drivers/block/nbd.c                                        |   86 +++
 drivers/bluetooth/btusb.c                                  |   18 
 drivers/char/tpm/Kconfig                                   |    1 
 drivers/char/tpm/tpm_ibmvtpm.c                             |   26 -
 drivers/char/tpm/tpm_ibmvtpm.h                             |    2 
 drivers/clk/mvebu/kirkwood.c                               |    1 
 drivers/clocksource/sh_cmt.c                               |   30 -
 drivers/counter/104-quad-8.c                               |    5 
 drivers/crypto/hisilicon/sec2/sec.h                        |    5 
 drivers/crypto/hisilicon/sec2/sec_main.c                   |   34 -
 drivers/crypto/mxs-dcp.c                                   |   45 +-
 drivers/crypto/omap-aes.c                                  |    8 
 drivers/crypto/omap-des.c                                  |    8 
 drivers/crypto/omap-sham.c                                 |   14 
 drivers/crypto/qat/qat_c3xxxvf/adf_c3xxxvf_hw_data.c       |    4 
 drivers/crypto/qat/qat_c62xvf/adf_c62xvf_hw_data.c         |    4 
 drivers/crypto/qat/qat_common/adf_common_drv.h             |    8 
 drivers/crypto/qat/qat_common/adf_init.c                   |    5 
 drivers/crypto/qat/qat_common/adf_isr.c                    |    7 
 drivers/crypto/qat/qat_common/adf_pf2vf_msg.c              |    3 
 drivers/crypto/qat/qat_common/adf_vf2pf_msg.c              |   12 
 drivers/crypto/qat/qat_common/adf_vf_isr.c                 |    7 
 drivers/crypto/qat/qat_dh895xccvf/adf_dh895xccvf_hw_data.c |    4 
 drivers/edac/i10nm_base.c                                  |    6 
 drivers/edac/mce_amd.c                                     |    3 
 drivers/firmware/raspberrypi.c                             |   10 
 drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c                    |   54 +-
 drivers/gpu/drm/amd/pm/swsmu/smu_cmn.c                     |  286 ++++++++++---
 drivers/gpu/drm/amd/pm/swsmu/smu_cmn.h                     |    3 
 drivers/gpu/drm/bridge/ite-it66121.c                       |    2 
 drivers/gpu/drm/drm_of.c                                   |    6 
 drivers/gpu/drm/exynos/exynos_drm_g2d.c                    |    3 
 drivers/gpu/drm/gma500/oaktrail_lvds.c                     |    2 
 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c                 |   10 
 drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c                   |   68 +--
 drivers/gpu/drm/msm/dp/dp_display.c                        |   31 -
 drivers/gpu/drm/msm/dsi/dsi.c                              |    6 
 drivers/gpu/drm/msm/msm_drv.c                              |    1 
 drivers/gpu/drm/mxsfb/mxsfb_drv.c                          |    3 
 drivers/gpu/drm/mxsfb/mxsfb_drv.h                          |    1 
 drivers/gpu/drm/mxsfb/mxsfb_kms.c                          |   40 +
 drivers/gpu/drm/mxsfb/mxsfb_regs.h                         |    9 
 drivers/gpu/drm/panfrost/panfrost_device.c                 |    3 
 drivers/gpu/drm/rcar-du/rcar_du_drv.c                      |    2 
 drivers/hv/hv_snapshot.c                                   |    1 
 drivers/hwmon/Makefile                                     |    1 
 drivers/hwmon/pmbus/bpa-rs600.c                            |   25 -
 drivers/i2c/busses/i2c-highlander.c                        |    2 
 drivers/i2c/busses/i2c-hix5hd2.c                           |    2 
 drivers/i2c/busses/i2c-iop3xx.c                            |    6 
 drivers/i2c/busses/i2c-mt65xx.c                            |    2 
 drivers/i2c/busses/i2c-s3c2410.c                           |    2 
 drivers/i2c/busses/i2c-synquacer.c                         |    2 
 drivers/i2c/busses/i2c-xlp9xx.c                            |    2 
 drivers/infiniband/hw/mlx5/mr.c                            |    2 
 drivers/irqchip/irq-apple-aic.c                            |    2 
 drivers/irqchip/irq-gic-v3.c                               |   23 +
 drivers/irqchip/irq-loongson-pch-pic.c                     |   19 
 drivers/leds/blink/leds-lgm-sso.c                          |   23 -
 drivers/leds/flash/leds-rt8515.c                           |    4 
 drivers/leds/leds-is31fl32xx.c                             |    1 
 drivers/leds/leds-lt3593.c                                 |    5 
 drivers/leds/trigger/ledtrig-audio.c                       |   37 +
 drivers/md/bcache/super.c                                  |   16 
 drivers/md/raid1.c                                         |   19 
 drivers/md/raid10.c                                        |   14 
 drivers/media/i2c/tda1997x.c                               |    1 
 drivers/media/platform/atmel/atmel-sama5d2-isc.c           |   17 
 drivers/media/platform/coda/coda-bit.c                     |   18 
 drivers/media/platform/omap3isp/isp.c                      |    4 
 drivers/media/platform/qcom/venus/helpers.c                |    3 
 drivers/media/platform/qcom/venus/hfi_msgs.c               |    2 
 drivers/media/platform/qcom/venus/venc.c                   |    2 
 drivers/media/platform/rcar-vin/rcar-v4l2.c                |    4 
 drivers/media/platform/rockchip/rga/rga.c                  |   27 +
 drivers/media/platform/vsp1/vsp1_entity.c                  |    4 
 drivers/media/spi/cxd2880-spi.c                            |    7 
 drivers/media/usb/dvb-usb/dvb-usb-i2c.c                    |    9 
 drivers/media/usb/dvb-usb/dvb-usb-init.c                   |    2 
 drivers/media/usb/dvb-usb/nova-t-usb2.c                    |    6 
 drivers/media/usb/dvb-usb/vp702x.c                         |   12 
 drivers/media/usb/em28xx/em28xx-input.c                    |    1 
 drivers/media/usb/go7007/go7007-driver.c                   |   26 -
 drivers/media/usb/go7007/go7007-usb.c                      |    2 
 drivers/misc/lkdtm/core.c                                  |    2 
 drivers/misc/pvpanic/pvpanic.c                             |    2 
 drivers/mmc/host/dw_mmc.c                                  |    1 
 drivers/mmc/host/moxart-mmc.c                              |    1 
 drivers/mmc/host/sdhci.c                                   |    1 
 drivers/net/dsa/b53/b53_common.c                           |   10 
 drivers/net/dsa/b53/b53_priv.h                             |    2 
 drivers/net/dsa/bcm_sf2.c                                  |    1 
 drivers/net/dsa/mt7530.c                                   |   13 
 drivers/net/dsa/mv88e6xxx/chip.c                           |   18 
 drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c       |    3 
 drivers/net/ethernet/google/gve/gve_adminq.c               |    6 
 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c         |   23 -
 drivers/net/ethernet/intel/ice/ice_main.c                  |   13 
 drivers/net/ethernet/intel/ice/ice_ptp.c                   |   55 ++
 drivers/net/ethernet/marvell/octeontx2/af/common.h         |    2 
 drivers/net/ethernet/marvell/octeontx2/af/rvu_cn10k.c      |   35 +
 drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c        |    9 
 drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c        |   22 -
 drivers/net/ethernet/marvell/octeontx2/af/rvu_reg.h        |    2 
 drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c   |   16 
 drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h   |    3 
 drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c    |    1 
 drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c       |    4 
 drivers/net/ethernet/mellanox/mlx5/core/dev.c              |    2 
 drivers/net/ethernet/mellanox/mlx5/core/devlink.c          |    1 
 drivers/net/ethernet/mellanox/mlx5/core/en/fs.h            |    6 
 drivers/net/ethernet/mellanox/mlx5/core/en/qos.c           |   15 
 drivers/net/ethernet/mellanox/mlx5/core/en/qos.h           |    4 
 drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c  |    4 
 drivers/net/ethernet/mellanox/mlx5/core/en_fs.c            |   10 
 drivers/net/ethernet/mellanox/mlx5/core/en_main.c          |   18 
 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c            |   18 
 drivers/net/ethernet/mellanox/mlx5/core/esw/indir_table.c  |    1 
 drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c |    5 
 drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c      |   18 
 drivers/net/ethernet/mellanox/mlx5/core/lag.c              |    1 
 drivers/net/ethernet/mellanox/mlx5/core/lag_mp.c           |    8 
 drivers/net/ethernet/mellanox/mlx5/core/lag_mp.h           |    2 
 drivers/net/ethernet/pensando/ionic/ionic_devlink.c        |   14 
 drivers/net/ethernet/qualcomm/qca_spi.c                    |    2 
 drivers/net/ethernet/qualcomm/qca_uart.c                   |    2 
 drivers/net/ethernet/stmicro/stmmac/dwmac4_lib.c           |    5 
 drivers/net/ethernet/ti/am65-cpsw-nuss.c                   |   47 +-
 drivers/net/ethernet/ti/am65-cpsw-nuss.h                   |    2 
 drivers/net/phy/marvell10g.c                               |    8 
 drivers/net/usb/asix_devices.c                             |    1 
 drivers/net/wireless/ath/ath6kl/wmi.c                      |    4 
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c    |    2 
 drivers/net/wireless/intel/iwlwifi/fw/acpi.c               |   14 
 drivers/net/wireless/intel/iwlwifi/pcie/drv.c              |    1 
 drivers/net/wireless/rsi/rsi_91x_hal.c                     |    4 
 drivers/net/wireless/rsi/rsi_91x_usb.c                     |    1 
 drivers/nvme/host/rdma.c                                   |    4 
 drivers/nvme/host/tcp.c                                    |    4 
 drivers/nvme/target/fabrics-cmd.c                          |    9 
 drivers/pci/pci.c                                          |   25 -
 drivers/power/supply/axp288_fuel_gauge.c                   |    4 
 drivers/power/supply/cw2015_battery.c                      |    4 
 drivers/power/supply/max17042_battery.c                    |    2 
 drivers/power/supply/smb347-charger.c                      |   10 
 drivers/regulator/tps65910-regulator.c                     |   10 
 drivers/regulator/vctrl-regulator.c                        |   73 +--
 drivers/s390/cio/css.c                                     |   17 
 drivers/s390/crypto/ap_bus.c                               |   25 -
 drivers/s390/crypto/ap_bus.h                               |   10 
 drivers/s390/crypto/ap_queue.c                             |   20 
 drivers/s390/crypto/zcrypt_ccamisc.c                       |    8 
 drivers/soc/mediatek/mt8183-mmsys.h                        |   21 
 drivers/soc/mediatek/mtk-mmsys.c                           |    7 
 drivers/soc/mediatek/mtk-mmsys.h                           |  133 ++++--
 drivers/soc/qcom/rpmhpd.c                                  |    5 
 drivers/soc/qcom/smsm.c                                    |   11 
 drivers/soc/rockchip/Kconfig                               |    4 
 drivers/spi/spi-coldfire-qspi.c                            |    2 
 drivers/spi/spi-davinci.c                                  |    8 
 drivers/spi/spi-fsl-dspi.c                                 |    1 
 drivers/spi/spi-pic32.c                                    |    1 
 drivers/spi/spi-sprd-adi.c                                 |    2 
 drivers/spi/spi-zynq-qspi.c                                |    8 
 drivers/staging/clocking-wizard/Kconfig                    |    2 
 drivers/staging/media/atomisp/i2c/atomisp-mt9m114.c        |   11 
 drivers/staging/media/tegra-video/vi.c                     |    4 
 drivers/tty/serial/fsl_lpuart.c                            |    2 
 drivers/tty/tty_io.c                                       |    4 
 drivers/usb/dwc3/dwc3-meson-g12a.c                         |    2 
 drivers/usb/dwc3/dwc3-qcom.c                               |    4 
 drivers/usb/gadget/udc/at91_udc.c                          |    4 
 drivers/usb/gadget/udc/bdc/bdc_core.c                      |   30 -
 drivers/usb/gadget/udc/mv_u3d_core.c                       |   19 
 drivers/usb/gadget/udc/renesas_usb3.c                      |   17 
 drivers/usb/gadget/udc/s3c2410_udc.c                       |    4 
 drivers/usb/host/ehci-orion.c                              |    8 
 drivers/usb/host/ohci-tmio.c                               |    3 
 drivers/usb/misc/brcmstb-usb-pinmap.c                      |    2 
 drivers/usb/phy/phy-fsl-usb.c                              |    2 
 drivers/usb/phy/phy-tahvo.c                                |    4 
 drivers/usb/phy/phy-twl6030-usb.c                          |    5 
 drivers/video/backlight/pwm_bl.c                           |   54 +-
 drivers/video/fbdev/core/fbmem.c                           |    6 
 fs/cifs/cifs_unicode.c                                     |    9 
 fs/cifs/fs_context.c                                       |   11 
 fs/cifs/readdir.c                                          |   23 +
 fs/debugfs/file.c                                          |    8 
 fs/f2fs/file.c                                             |    5 
 fs/f2fs/super.c                                            |   11 
 fs/fcntl.c                                                 |   18 
 fs/fuse/file.c                                             |   30 +
 fs/fuse/fuse_i.h                                           |   19 
 fs/fuse/inode.c                                            |   60 ++
 fs/gfs2/ops_fstype.c                                       |   43 +
 fs/gfs2/super.c                                            |   61 --
 fs/io-wq.c                                                 |  105 +++-
 fs/io_uring.c                                              |    5 
 fs/iomap/swapfile.c                                        |    6 
 fs/isofs/inode.c                                           |   27 -
 fs/isofs/isofs.h                                           |    1 
 fs/isofs/joliet.c                                          |    4 
 fs/lockd/svclock.c                                         |    2 
 fs/nfsd/nfs4state.c                                        |    4 
 fs/udf/misc.c                                              |   13 
 fs/udf/super.c                                             |   75 +--
 fs/udf/udf_sb.h                                            |    2 
 fs/udf/unicode.c                                           |    4 
 include/linux/blkdev.h                                     |   16 
 include/linux/energy_model.h                               |   16 
 include/linux/hrtimer.h                                    |    5 
 include/linux/local_lock_internal.h                        |   42 +
 include/linux/mlx5/mlx5_ifc.h                              |    3 
 include/linux/power/max17042_battery.h                     |    2 
 include/linux/sunrpc/svc.h                                 |    1 
 include/linux/time64.h                                     |    9 
 include/net/dsa.h                                          |    2 
 include/net/pkt_cls.h                                      |    3 
 include/trace/events/io_uring.h                            |    6 
 include/trace/events/sunrpc.h                              |    8 
 include/uapi/linux/bpf.h                                   |    2 
 kernel/bpf/verifier.c                                      |   31 -
 kernel/cgroup/cpuset.c                                     |   95 ++--
 kernel/cpu_pm.c                                            |   50 +-
 kernel/irq/timings.c                                       |    2 
 kernel/locking/mutex.c                                     |   15 
 kernel/power/energy_model.c                                |    4 
 kernel/rcu/tree_stall.h                                    |   26 +
 kernel/sched/core.c                                        |   25 -
 kernel/sched/deadline.c                                    |    8 
 kernel/sched/debug.c                                       |    7 
 kernel/sched/fair.c                                        |    2 
 kernel/sched/sched.h                                       |    2 
 kernel/sched/topology.c                                    |   65 ++
 kernel/time/hrtimer.c                                      |   92 +++-
 kernel/time/posix-cpu-timers.c                             |    2 
 kernel/time/tick-internal.h                                |    3 
 lib/mpi/mpiutil.c                                          |    2 
 lib/test_scanf.c                                           |    4 
 net/6lowpan/debugfs.c                                      |    3 
 net/bluetooth/cmtp/cmtp.h                                  |    2 
 net/bluetooth/hci_core.c                                   |   22 -
 net/bluetooth/mgmt.c                                       |    2 
 net/bluetooth/sco.c                                        |   11 
 net/core/devlink.c                                         |   36 +
 net/dsa/Kconfig                                            |   13 
 net/dsa/Makefile                                           |    3 
 net/dsa/dsa_priv.h                                         |    2 
 net/dsa/port.c                                             |   21 
 net/dsa/slave.c                                            |    6 
 net/dsa/tag_8021q.c                                        |    2 
 net/ipv4/route.c                                           |   48 +-
 net/ipv4/tcp_ipv4.c                                        |    5 
 net/ipv6/route.c                                           |    5 
 net/mac80211/main.c                                        |    2 
 net/mac80211/tx.c                                          |    4 
 net/netlabel/netlabel_cipso_v4.c                           |    8 
 net/qrtr/qrtr.c                                            |    8 
 net/sched/sch_cbq.c                                        |    2 
 net/sched/sch_htb.c                                        |   97 ++--
 net/sunrpc/svc.c                                           |   15 
 samples/bpf/xdp_redirect_cpu_user.c                        |    2 
 samples/pktgen/pktgen_sample04_many_flows.sh               |   12 
 samples/pktgen/pktgen_sample05_flow_per_thread.sh          |   12 
 security/integrity/ima/Kconfig                             |    1 
 security/integrity/ima/ima_mok.c                           |    2 
 sound/soc/codecs/rt5682-i2c.c                              |   15 
 sound/soc/codecs/tlv320aic32x4.c                           |    2 
 sound/soc/codecs/wcd9335.c                                 |   23 -
 sound/soc/codecs/wm_adsp.c                                 |    2 
 sound/soc/fsl/fsl_rpmsg.c                                  |   20 
 sound/soc/intel/boards/kbl_da7219_max98927.c               |   55 --
 sound/soc/intel/common/soc-acpi-intel-cml-match.c          |    2 
 sound/soc/intel/common/soc-acpi-intel-kbl-match.c          |    2 
 sound/soc/intel/skylake/skl-topology.c                     |   25 -
 sound/soc/mediatek/mt8183/mt8183-afe-pcm.c                 |   43 +
 sound/soc/mediatek/mt8192/mt8192-afe-pcm.c                 |   27 -
 sound/usb/card.c                                           |    4 
 sound/usb/pcm.c                                            |    3 
 sound/usb/usbaudio.h                                       |    1 
 tools/bootconfig/main.c                                    |    4 
 tools/bpf/bpftool/prog.c                                   |    5 
 tools/include/uapi/linux/bpf.h                             |    2 
 tools/lib/bpf/Makefile                                     |   10 
 tools/lib/bpf/libbpf.c                                     |   20 
 tools/perf/util/bpf-event.c                                |    4 
 tools/perf/util/bpf_counter.c                              |    3 
 tools/testing/selftests/bpf/prog_tests/btf.c               |    1 
 tools/testing/selftests/bpf/progs/bpf_iter_tcp4.c          |    2 
 tools/testing/selftests/bpf/progs/test_core_autosize.c     |   20 
 tools/testing/selftests/bpf/test_maps.c                    |    4 
 364 files changed, 3226 insertions(+), 1743 deletions(-)

Abhishek Naik (1):
iwlwifi: skip first element in the WTAS ACPI table

Adrian Ratiu (1):
char: tpm: Kconfig: remove bad i2c cr50 select

Ahmad Fatoum (1):
brcmfmac: pcie: fix oops on failure to resume and reprobe

Alex Elder (1):
arm64: dts: qcom: sm8350: fix IPA interconnects

Alexander Antonov (1):
perf/x86/intel/uncore: Fix IIO cleanup mapping procedure for SNR/ICX

Alexander Gordeev (2):
s390/kasan: fix large PMD pages address alignment check s390/smp: enable DAT before CPU restart callback is called

Amit Engel (1):
nvmet: pass back cntlid on successful completion

Anand Moon (3):
ARM: dts: meson8b: odroidc1: Fix the pwm regulator supply properties
ARM: dts: meson8b: mxq: Fix the pwm regulator supply properties
ARM: dts: meson8b: ec100: Fix the pwm regulator supply properties

Andrew Jeffery (1):
ARM: dts: everest: Add phase corrections for eMMC

Andrey Ignatov (1):
bpf: Fix possible out of bound write in narrow load handling

Andrii Nakryiko (1):
libbpf: Re-build libbpf.so when libbpf.map changes

Andy Duan (1):
tty: serial: fsl_lpuart: fix the wrong mapbase value

Andy Shevchenko (6):

      lib/test_scanf: Handle n_bits == 0 in random tests
      leds: lgm-sso: Put fwnode in any case during ->probe()
      leds: lgm-sso: Don't spam logs when probe is deferred
      leds: lt3593: Put fwnode in any case during ->probe()
      leds: rt8515: Put fwnode in any case during ->probe()
      leds: lgm-sso: Propagate error codes from callee to caller

Ard Biesheuvel (1):
crypto: x86/aes-ni - add missing error checks in XTS code

Aubrey Li (1):
ACPI: PRM: Find PRMT table before parsing it

Austin Kim (1):
IMA: remove -Wmissing-prototypes warning

Baokun Li (1):
nbd: add the check to prevent overflow in __nbd_ioctl()

Ben Hutchings (1):
crypto: omap - Fix inconsistent locking of device lists

Benjamin Coddington (1):
lockd: Fix invalid lockowner cast after vfs_test_lock

Biju Das (1):
arm64: dts: renesas: hihope-rzg2-ex: Add EtherAVB internal rx delay

Bjorn Andersson (1):
soc: qcom: rpmhpd: Use corner in power_off

Bob Peterson (1):
gfs2: init system threads before freeze lock

Borislav Petkov (1):
x86/mce: Defer processing of early errors

Brett Creeley (1):
ice: Only lock to update netdev dev_addr

CK Hu (1):
soc: mmsys: mediatek: add mask to mmsys routes

Cezary Rojewski (3):
ASoC: Intel: kbl_da7219_max98927: Fix format selection for max98373
ASoC: Intel: Skylake: Leave data as is when invoking TLV IPCs
ASoC: Intel: Skylake: Fix module resource and format selection

Charles Keepax (1):
ASoC: wm_adsp: Put debugfs_remove_recursive back in

Chen-Yu Tsai (3):
irqchip/gic-v3: Fix priority comparison when non-secure priorities are used
regulator: vctrl: Use locked regulator_get_voltage in probe path
regulator: vctrl: Avoid lockdep warning in enable/disable ops

Chih-Kang Chang (1):
mac80211: Fix insufficient headroom issue for AMSDU

Chris Packham (1):
hwmon: (pmbus/bpa-rs600) Don't use rated limits as warn limits

Christoph Hellwig (1):
bcache: add proper error unwinding in bcache_device_init

Christophe JAILLET (9):
spi: coldfire-qspi: Use clk_disable_unprepare in the remove function
media: cxd2880-spi: Fix an error handling path
drm/msm/dsi: Fix some reference counted resource leaks
firmware: raspberrypi: Fix a leak in 'rpi_firmware_get()'
usb: bdc: Fix an error handling path in 'bdc_probe()' when no suitable DMA config is available
usb: bdc: Fix a resource leak in the error handling path of 'bdc_probe()'
ASoC: wcd9335: Fix a double irq free in the remove function
ASoC: wcd9335: Fix a memory leak in the error handling path of the probe function
ASoC: wcd9335: Disable irq on slave ports in the remove function

Chuck Lever (1):
SUNRPC: Fix a NULL pointer deref in trace_svc_stats_latency()

Chunguang Xu (1):
blk-throtl: optimize IOPS throttle for large IO scenarios

Chunyan Zhang (1):
spi: sprd: Fix the wrong WDG_LOAD_VAL

Claudiu Beznea (1):
ARM: dts: at91: add pinctrl-{names, 0} for all gpios

Colin Ian King (4):
gfs2: Fix memory leak of object lsi on error return path 6lowpan: iphc: Fix an off-by-one check of array index
media: venus: venc: Fix potential null pointer dereference on pointer fmt
Bluetooth: increase BTNAMSIZ to 21 chars to fix potential buffer overflow

Curtis Malainey (1):
ASoC: Intel: Fix platform ID matching

Damien Le Moal (1):
libata: fix ata_host_start()

Dan Carpenter (9):
media: v4l2-subdev: fix some NULL vs IS_ERR() checks
media: rockchip/rga: fix error handling in probe
Bluetooth: sco: prevent information leak in sco_conn_defer_accept()
mac80211: remove unnecessary NULL check in ieee80211_register_hw()
rsi: fix error code in rsi_load_9116_firmware()
rsi: fix an error code in rsi_probe()
m68k: coldfire: return success for clk_enable(NULL)
ath6kl: wmi: fix an error code in ath6kl_wmi_sync_point()
net: qrtr: make checks in qrtr_endpoint_post() stricter

Daniel Thompson (1):
backlight: pwm_bl: Improve bootloader/kernel device handover

David Heidelberg (2):
drm/msm/mdp4: refactor HW revision detection into read_mdp_hw_revision drm/msm/mdp4: move HW revision detection to earlier phase

Desmond Cheong Zhi Xi (3):
fcntl: fix potential deadlocks for &fown_struct.lock
fcntl: fix potential deadlock for &fasync_struct.fa_lock
Bluetooth: fix repeated calls to sco_sock_kill

Dietmar Eggemann (1):
sched/deadline: Fix missing clock update in migrate_task_rq_dl()

Dima Chumak (1):
net/mlx5: Lag, fix multipath lag activation

Dmitry Baryshkov (2):
arm64: dts: qcom: sm8250: fix usb2 qmp phy node drm/msm/dpu: make dpu_hw_ctl_clear_all_blendstages clear necessary LMs

Dmitry Osipenko (2):
regulator: tps65910: Silence deferred probe error
power: supply: smb347-charger: Add missing pin control activation

Dmytro Linkin (1):
net/mlx5e: Use correct eswitch for stack devices with lag

Dongliang Mu (4):
media: dvb-usb: fix uninit-value in dvb_usb_adapter_dvb_init
media: dvb-usb: fix uninit-value in vp702x_read_mac_addr
media: dvb-usb: Fix error handling in dvb_usb_i2c_init
media: em28xx-input: fix refcount bug in em28xx_usb_disconnect

Douglas Anderson (2):
ASoC: rt5682: Properly turn off regulators if wrong device ID
ASoC: rt5682: Remove unused variable in rt5682_i2c_remove()

Dylan Hung (1):
ARM: dts: aspeed-g6: Fix HVI3C function-group in pinctrl dtsi

Eric Biggers (1):
blk-crypto: fix check for too-large dun_bytes

Eric Dumazet (3):
ipv6: make exception cache less predictible
ipv4: make exception cache less predictible
ipv4: fix endianness issue in inet_rtm_getroute_build_skb()

Eugen Hristev (1):
media: atmel: atmel-sama5d2-isc: fix YUYV format

Evgeny Novikov (1):
usb: ehci-orion: Handle errors of clk_prepare_enable() in probe

Frederic Weisbecker (1):
posix-cpu-timers: Force next expiration recalc after itimer reset

Geert Uytterhoeven (5):
m68k: Fix invalid RMW_INSNS on CPUs that lack CAS
m68k: Fix asm register constraints for atomic ops
soc: rockchip: ROCKCHIP_GRF should not default to y, unconditionally
arm64: dts: renesas: r8a77995: draak: Remove bogus adv7511w properties
usb: gadget: udc: renesas_usb3: Fix soc_device_match() abuse

Geetha sowjanya (2):
octeontx2-af: Check capability flag while freeing ipolicer memory
octeontx2-af: cn10k: Use FLIT0 register instead of FLIT1

Giovanni Cabiddu (4):
crypto: qat - do not ignore errors from enable_vf2pf_comms()
crypto: qat - handle both source of interrupt in VF ISR
crypto: qat - do not export adf_iov_putmsg()
crypto: qat - use proper type for vf_mask

Greg Kroah-Hartman (1):

      Linux 5.14.4

Guoqing Jiang (1):
raid1: ensure write behind bio has less than BIO_MAX_VECS sectors

Haiyue Wang (1):
gve: fix the wrong AdminQ buffer overflow check

Halil Pasic (1):

      KVM: s390: index kvm->arch.idle_mask by vcpu_idx

Hans de Goede (2):
power: supply: axp288_fuel_gauge: Report register-address on readb / writeb errors
leds: trigger: audio: Add an activate callback to ensure the initial brightness is set

Harald Freudenberger (2):
s390/zcrypt: fix wrong offset index for APKA master key valid state s390/ap: fix state machine hang after failure to enable irq

Harshvardhan Jha (1):
drm/gma500: Fix end of loop tests for list_for_each_entry

He Fengqing (1):
bpf: Fix potential memleak and UAF in the verifier.

Helge Deller (1):
parisc: Fix unaligned-access crash in bootloader

Hongbo Li (1):
lib/mpi: use kcalloc in mpi_resize

Hou Tao (1):
nbd: do del_gendisk() asynchronously for NBD_DESTROY_ON_DISCONNECT

Huacai Chen (1):
irqchip/loongson-pch-pic: Improve edge triggered interrupt support

Ilya Leoshkevich (1):
selftests/bpf: Fix test_core_autosize on big-endian machines

J. Bruce Fields (1):
nfsd4: Fix forced-expiry locking

Jacob Keller (3):
ice: fix Tx queue iteration for Tx timestamp enablement
ice: add lock around Tx timestamp tracker flush
ice: restart periodic outputs around time changes

Jaegeuk Kim (1):
f2fs: guarantee to write dirty data when enabling checkpoint back

Jan Kara (1):
udf: Check LVID earlier

Jens Axboe (4):
io-wq: remove GFP_ATOMIC allocation off schedule out path
io_uring: IORING_OP_WRITE needs hash_reg_file set
io_uring: io_uring_complete() trace should take an integer
io-wq: check max_worker limits if a worker transitions bound state

Jeongtae Park (1):
regmap: fix the offset of register error log

Jiapeng Chong (2):
leds: is31fl32xx: Fix missing error code in is31fl32xx_parse_dt() net/mlx5: Fix missing return value in mlx5_devlink_eswitch_inline_mode_set()

John Fastabend (1):
bpf, selftests: Fix test_maps now that sockmap supports UDP

Jose Blanquicet (1):
selftests/bpf: Fix bpf-iter-tcp4 test to print correctly the dest IP

Judy Hsiao (1):
arm64: dts: qcom: sc7180: Set adau wakeup delay to 80 ms

Juhee Kang (1):
samples: pktgen: add missing IPv6 option to pktgen scripts

Julia Lawall (1):
drm/of: free the right object

Julio Faracco (1):
bootconfig: Fix missing return check of xbc_node_compose_key function

Jun Miao (1):
Bluetooth: btusb: Fix a unspported condition to set available debug features

Justin M. Forbes (1):
iwlwifi Add support for ax201 in Samsung Galaxy Book Flex2 Alpha

Kai Ye (2):
crypto: hisilicon/sec - fix the abnormal exiting process
crypto: hisilicon/sec - modify the hardware endian configuration

Kai-Heng Feng (2):
drm/amdgpu/acp: Make PM domain really work
Bluetooth: Move shutdown callback before flushing tx and rx queue

Kevin Mitchell (1):
lkdtm: replace SCSI_DISPATCH_CMD with SCSI_QUEUE_RQ

Krzysztof Hałasa (1):
media: TDA1997x: enable EDID support

Krzysztof Kozlowski (1):
arm64: dts: exynos: correct GIC CPU interfaces address range on Exynos7

Kuniyuki Iwashima (1):
bpf: Fix a typo of reuseport map in bpf.h.

Kuogee Hsieh (2):
drm/msm/dp: update is_connected status base on sink count at dp_pm_resume() drm/msm/dp: replug event is converted into an unplug followed by an plug events

Lars Poeschel (1):
auxdisplay: hd44780: Fix oops on module unloading

Laurent Pinchart (1):
drm: rcar-du: Don't put reference to drm_device in rcar_du_remove()

Len Baker (1):
CIFS: Fix a potencially linear read overflow

Leon Romanovsky (5):
ionic: cleanly release devlink instance
net: ti: am65-cpsw-nuss: fix wrong devlink release order
devlink: Clear whole devlink_flash_notify struct
net/mlx5: Remove all auxiliary devices at the unregister event
devlink: Break parameter notification sequence to be before/after unload/load driver

Linus Walleij (1):
clk: kirkwood: Fix a clocking boot regression

Luben Tuikov (2):
drm/amd/pm: Fix a bug communicating with the SMU (v5) drm/amd/pm: Fix a bug in semaphore double-lock

Lukas Bulwahn (2):
clk: staging: correct reference to config IOMEM to config HAS_IOMEM
hwmon: remove amd_energy driver in Makefile

Lukas Hannen (1):
time: Handle negative seconds correctly in timespec64_to_ns()

Lukasz Luba (1):
PM: EM: Increase energy calculation precision

Mansur Alisha Shaik (1):
media: venus: helper: do not set constrained parameters for UBWC

Maor Dickman (1):
net/mlx5: E-Switch, Set vhca id valid flag when creating indir fwd group

Marc Zyngier (2):
KVM: arm64: Unregister HYP sections from kmemleak in protected mode
KVM: arm64: vgic: Resample HW pending state on deactivation

Marco Chiappero (2):
crypto: qat - fix reuse of completion variable
crypto: qat - fix naming for init/shutdown VF to PF notifications

Marek Vasut (4):
ASoC: tlv320aic32x4: Fix TAS2505/TAS2521 channel count
drm: mxsfb: Enable recovery on underflow
drm: mxsfb: Increase number of outstanding requests on V4 and newer HW
drm: mxsfb: Clear FIFO_CLEAR bit

Martin Blumenstingl (1):
ARM: dts: meson8: Use a higher default GPU clock frequency

Martin KaFai Lau (1):
tcp: seq_file: Avoid skipping sk during tcp_seek_last_pos

Martynas Pumputis (1):
libbpf: Fix removal of inner map in bpf_object__create_map

Matija Glavinic Pecotic (1):
spi: davinci: invoke chipselect callback

Matthew Cover (1):
bpf, samples: Add missing mprog-disable to xdp_redirect_cpu's optstring

Maxim Levitsky (1):
KVM: VMX: avoid running vmx_handle_exit_irqoff in case of emulation

Maxim Mikityanskiy (3):
net/mlx5e: Prohibit inner indir TIRs in IPoIB net/mlx5e: Block LRO if firmware asks for tunneled LRO
sch_htb: Fix inconsistency when leaf qdisc creation fails

Mian Yousaf Kaukab (1):
crypto: ecc - handle unaligned input buffer in ecc_swap_digits

Mihai Carabas (1):
misc/pvpanic: fix set driver data

Mika Penttilä (1):
sched/numa: Fix is_core_idle()

Miklos Szeredi (3):
fuse: truncate pagecache on atomic_o_trunc
fuse: flush extending writes
fuse: wait for writepages in syncfs

Ming Lei (1):
block: return ELEVATOR_DISCARD_MERGE if possible

Nadezda Lutovinova (1):
usb: gadget: mv_u3d: request_irq() after initializing UDC

Naveen Mamindlapalli (1):
octeontx2-pf: send correct vlan priority mask to npc_install_flow_req

Nguyen Dinh Phi (1):
tty: Fix data race between tiocsti() and flush_to_ldisc()

Niklas Schnelle (2):
s390/pci: fix misleading rc in clp_set_pci_fn() RDMA/mlx5: Fix number of allocated XLT entries

Oleksij Rempel (1):
net: usb: asix: ax88772: add missing stop

Pali Rohár (3):
udf: Fix iocharset=utf8 mount option
isofs: joliet: Fix iocharset=utf8 mount option
arm64: dts: marvell: armada-37xx: Extend PCIe MEM space

Paolo Bonzini (1):
KVM: x86: clamp host mapping level to max_level in kvm_mmu_max_mapping_level

Parav Pandit (1):
net/mlx5: Fix unpublish devlink parameters

Pavel Begunkov (3):
io_uring: limit fixed table size by RLIMIT_NOFILE
io_uring: fail links of cancelled timeouts
bio: fix page leak bio_add_hw_page failure

Pavel Skripkin (6):
m68k: emu: Fix invalid free in nfeth_cleanup()
block: nbd: add sanity check for first_minor
media: go7007: fix memory leak in go7007_usb_probe
media: go7007: remove redundant initialization
net: cipso: fix warnings in netlbl_cipsov4_add_std
Bluetooth: add timeout sanity check to hci_inquiry

Peter Oberparleiter (2):
s390/debug: keep debug data on resize
s390/debug: fix debug area life cycle

Peter Robinson (1):
power: supply: cw2015: use dev_err_probe to allow deferred probe

Peter Zijlstra (1):
locking/mutex: Fix HANDOFF condition

Philipp Zabel (1):
media: coda: fix frame_mem_ctrl for YUV420 and YVU420 formats

Phong Hoang (1):
clocksource/drivers/sh_cmt: Fix wrong setting if don't request IRQ for clock source channel

Qiuxu Zhuo (1):
EDAC/i10nm: Fix NVDIMM detection

Quanyang Wang (1):
spi: spi-zynq-qspi: use wait_for_completion_timeout to make zynq_qspi_exec_mem_op not interruptible

Quentin Monnet (2):
libbpf: Return non-null error on failures in libbpf_find_prog_btf_id()
tools: Free BTF objects at various locations

Quentin Perret (2):
sched/deadline: Fix reset_on_fork reporting of DL tasks
sched: Fix UCLAMP_FLAG_IDLE setting

Rafael J. Wysocki (2):
PCI: PM: Avoid forcing PCI_D0 for wakeup reasons inconsistently
PCI: PM: Enable PME if it can be signaled from D3cold

Robert Foss (1):
drm: bridge: it66121: Check drm_bridge_attach retval

Roi Dayan (1):
net/mlx5e: Fix possible use-after-free deleting fdb rule

Ronnie Sahlberg (1):
cifs: Do not leak EDEADLK to dgetents64 for STATUS_USER_SESSION_DELETED

Ruozhu Li (2):
nvme-tcp: don't update queue count when failing to set io queues
nvme-rdma: don't update queue count when failing to set io queues

Sean Anderson (1):
crypto: mxs-dcp - Check for DMA mapping errors

Sean Christopherson (3):
Revert "KVM: x86: mmu: Add guest physical address check in translate_gpa()"
KVM: x86/mmu: Avoid collision with !PRESENT SPTEs in TDP MMU lpage stats
KVM: nVMX: Unconditionally clear nested.pi_pending on nested VM-Enter

Sebastian Krzyszkowiak (1):

      power: supply: max17042_battery: fix typo in MAx17042_TOFF

Sergey Senozhatsky (1):
rcu/tree: Handle VM stoppage in stall detection

Sergey Shtylyov (16):
i2c: highlander: add IRQ check
usb: dwc3: meson-g12a: add IRQ check
usb: dwc3: qcom: add IRQ check
usb: gadget: udc: at91: add IRQ check
usb: gadget: udc: s3c2410: add IRQ check
usb: misc: brcmstb-usb-pinmap: add IRQ check
usb: phy: fsl-usb: add IRQ check
usb: phy: twl6030: add IRQ checks
usb: host: ohci-tmio: add IRQ check
usb: phy: tahvo: add IRQ check
i2c: synquacer: fix deferred probing
i2c: iop3xx: fix deferred probing
i2c: s3c2410: fix IRQ check
i2c: hix5hd2: fix IRQ check
i2c: mt65xx: fix IRQ check
i2c: xlp9xx: fix main IRQ check

Shengjiu Wang (1):
ASoC: fsl_rpmsg: Check -EPROBE_DEFER for getting clocks

Shuyi Cheng (1):
libbpf: Fix the possible memory leak on error

Sibi Sankar (1):
arm64: dts: qcom: sc7280: Fixup the cpufreq node

Smita Koralahalli (1):
EDAC/mce_amd: Do not load edac_mce_amd module on guests

Stefan Assmann (1):
i40e: improve locking of mac_filter_hash

Stefan Berger (2):
certs: Trigger creation of RSA module signing key if it's not an RSA key
tpm: ibmvtpm: Avoid error message when process gets signal while waiting

Stefan Wahren (1):
net: qualcomm: fix QCA7000 checksum handling

Stephan Gerhold (1):
soc: qcom: smsm: Fix missed interrupts if state changes while masked

Steve French (1):
smb3: fix posix extensions mount option

Steven Price (1):
drm/of: free the iterator object on failure

Stian Skjelstad (1):
udf_get_extendedattr() had no boundary checks.

Subbaraya Sundeep (4):
octeontx2-af: cn10k: Fix SDP base channel number
octeontx2-af: Fix loop in free and unmap counter
octeontx2-af: Fix mailbox errors in nix_rss_flowkey_cfg
octeontx2-af: Fix static code analyzer reported issues

Sudarsana Reddy Kalluru (1):
atlantic: Fix driver resume flow.

Sunil Goutham (3):
octeontx2-pf: Don't install VLAN offload rule if netdev is down
octeontx2-pf: Fix algorithm index in MCAM rules with RSS action
octeontx2-af: Set proper errorcode for IPv4 checksum errors

Sven Eckelmann (1):
debugfs: Return error during {full/open}_proxy_open() on rmmod

Sven Peter (1):
irqchip/apple-aic: Fix irq_disable from within irq handlers

THOBY Simon (1):
IMA: remove the dependency on CRYPTO_MD5

Takashi Iwai (1):
ALSA: usb-audio: Add lowlatency module option

Tedd Ho-Jeong An (1):
Bluetooth: mgmt: Fix wrong opcode in the response for add_adv cmd

Tetsuo Handa (1):
fbmem: don't allow too huge resolutions

Thomas Gleixner (3):
hrtimer: Avoid double reprogramming in __hrtimer_start_range_ns()
hrtimer: Ensure timerfd notification for HIGHRES=n locking/local_lock: Add missing owner initialization

Tianjia Zhang (1):
crypto: tcrypt - Fix missing return value check

Tony Lindgren (6):
crypto: omap-sham - clear dma flags only after omap_sham_update_dma_stop()
spi: spi-fsl-dspi: Fix issue with uninitialized dma_slave_config
spi: spi-pic32: Fix issue with uninitialized dma_slave_config
mmc: sdhci: Fix issue with uninitialized dma_slave_config
mmc: dw_mmc: Fix issue with uninitialized dma_slave_config
mmc: moxart: Fix issue with uninitialized dma_slave_config

Valentin Schneider (3):
sched/topology: Skip updating masks for non-online nodes sched/debug: Don't update sched_domain debug directories before sched_debug_init()
PM: cpu: Make notifier chain use a raw_spinlock_t

Vignesh Raghavendra (1):
net: ti: am65-cpsw-nuss: fix RX IRQ state after .ndo_stop()

Vineeth Vijayan (1):
s390/cio: add dev_busid sysfs entry for each subchannel

Vitaly Kuznetsov (1):
hv_utils: Set the maximum packet size for VSS driver to the length of the receive buffer

Vladimir Oltean (6):
net: dsa: build tag_8021q.c as part of DSA core
net: dsa: tag_sja1105: optionally build as module when switch driver is module if PTP is enabled
net: dsa: stop syncing the bridge mcast_router attribute at join time
net: dsa: mt7530: remove the .port_set_mrouter implementation
net: dsa: don't disable multicast flooding to the CPU even without an IGMP querier
net: phy: marvell10g: fix broken PHY interrupts for anyone after us in the driver probe list

Voon Weifeng (1):
net: stmmac: fix INTR TBU status affecting irq count statistic

Waiman Long (3):
cgroup/cpuset: Fix a partition bug with hotplug cgroup/cpuset: Miscellaneous code cleanup cgroup/cpuset: Fix violation of cpuset locking rule

Wei Li (1):
drm/msm: Fix error return code in msm_drm_init()

Wei Yongjun (3):
drm/panfrost: Fix missing clk_disable_unprepare() on error in panfrost_clk_init()
media: omap3isp: Fix missing unlock in isp_subdev_notifier_complete() drm/exynos: g2d: fix missing unlock on error in g2d_runqueue_worker()

William Breathitt Gray (1):
counter: 104-quad-8: Return error when invalid mode during ceiling_write

Xiao Ni (1):
md/raid10: Remove unnecessary rcu_dereference in raid10_handle_discard

Xiyu Yang (1):
net: sched: Fix qdisc_rate_table refcount leak when get tcf_block failed

Xu Yu (1):
mm/swap: consider max pages in iomap_swapfile_add_extent

Yanfei Xu (2):
rcu: Fix to include first blocked task in stall warning
rcu: Fix stall-warning deadlock due to non-release of rcu_node ->lock

Yang Yingliang (1):
octeontx2-pf: cn10k: Fix error return code in otx2_set_flowkey_cfg()

Yizhuo (1):
media: atomisp: fix the uninitialized use and rename "retvalue"

Zelin Deng (1):
KVM: x86: Update vCPU's hv_clock before back to guest when tsc_offset is adjusted

Zenghui Yu (1):
bcma: Fix memory leak for internally-handled cores

Zhang Qilong (2):
ASoC: mediatek: mt8192:Fix Unbalanced pm_runtime_enable in mt8192_afe_pcm_dev_probe
ASoC: mediatek: mt8183: Fix Unbalanced pm_runtime_enable in mt8183_afe_pcm_dev_probe

Zhen Lei (4):
genirq/timings: Fix error return code in irq_timings_test_irqs()
firmware: fix theoretical UAF race with firmware cache and resume driver core: Fix error return code in really_probe()
media: venus: hfi: fix return value check in sys_get_prop_image_version()

author maintainer
#1 lore raw
Documentation/fault-injection/provoke-crashes.rst +1 -1
index a20ba5d93932..18de17354206 100644
@@ -29,7 +29,7 @@ recur_count
 cpoint_name
 	Where in the kernel to trigger the action. It can be
 	one of INT_HARDWARE_ENTRY, INT_HW_IRQ_EN, INT_TASKLET_ENTRY,
-	FS_DEVRW, MEM_SWAPOUT, TIMERADD, SCSI_DISPATCH_CMD,
+	FS_DEVRW, MEM_SWAPOUT, TIMERADD, SCSI_QUEUE_RQ,
 	IDE_CORE_CP, or DIRECT
 
 cpoint_type
Makefile +1 -1
index 8715942fccb4..e16a1a80074c 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 5
 PATCHLEVEL = 14
-SUBLEVEL = 3
+SUBLEVEL = 4
 EXTRAVERSION =
 NAME = Opossums on Parade
 
arch/arm/boot/dts/aspeed-bmc-ibm-everest.dts +1 -1
index aa24cac8e5be..44b03a5e2416 100644
@@ -2832,7 +2832,7 @@ &pinctrl_emmc_default {
 
 &emmc {
 	status = "okay";
-	clk-phase-mmc-hs200 = <180>, <180>;
+	clk-phase-mmc-hs200 = <210>, <228>;
 };
 
 &fsim0 {
arch/arm/boot/dts/aspeed-g6-pinctrl.dtsi +2 -2
index 7e90d713f5e5..6dde51c2aed3 100644
@@ -208,12 +208,12 @@ pinctrl_gpiu7_default: gpiu7_default {
 	};
 
 	pinctrl_hvi3c3_default: hvi3c3_default {
-		function = "HVI3C3";
+		function = "I3C3";
 		groups = "HVI3C3";
 	};
 
 	pinctrl_hvi3c4_default: hvi3c4_default {
-		function = "HVI3C4";
+		function = "I3C4";
 		groups = "HVI3C4";
 	};
 
arch/arm/boot/dts/at91-sam9x60ek.dts +15 -1
index edca66c232c1..ebbc9b23aef1 100644
@@ -92,6 +92,8 @@ sw1 {
 
 	leds {
 		compatible = "gpio-leds";
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_gpio_leds>;
 		status = "okay"; /* Conflict with pwm0. */
 
 		red {
@@ -537,6 +539,10 @@ AT91_PIOA 18 AT91_PERIPH_A (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_H
 				 AT91_PIOA 19 AT91_PERIPH_A (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_HI)	/* PA19 DAT2 periph A with pullup */
 				 AT91_PIOA 20 AT91_PERIPH_A (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_HI)>;	/* PA20 DAT3 periph A with pullup */
 		};
+		pinctrl_sdmmc0_cd: sdmmc0_cd {
+			atmel,pins =
+				<AT91_PIOA 23 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
+		};
 	};
 
 	sdmmc1 {
@@ -569,6 +575,14 @@ pinctrl_usb_default: usb_default {
 				      AT91_PIOD 16 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
 		};
 	};
+
+	leds {
+		pinctrl_gpio_leds: gpio_leds {
+			atmel,pins = <AT91_PIOB 11 AT91_PERIPH_GPIO AT91_PINCTRL_NONE
+				      AT91_PIOB 12 AT91_PERIPH_GPIO AT91_PINCTRL_NONE
+				      AT91_PIOB 13 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
+		};
+	};
 }; /* pinctrl */
 
 &pwm0 {
@@ -580,7 +594,7 @@ &pwm0 {
 &sdmmc0 {
 	bus-width = <4>;
 	pinctrl-names = "default";
-	pinctrl-0 = <&pinctrl_sdmmc0_default>;
+	pinctrl-0 = <&pinctrl_sdmmc0_default &pinctrl_sdmmc0_cd>;
 	status = "okay";
 	cd-gpios = <&pioA 23 GPIO_ACTIVE_LOW>;
 	disable-wp;
arch/arm/boot/dts/at91-sama5d3_xplained.dts +29 -0
index 9c55a921263b..cc55d1684322 100644
@@ -57,6 +57,8 @@ slot@0 {
 			};
 
 			spi0: spi@f0004000 {
+				pinctrl-names = "default";
+				pinctrl-0 = <&pinctrl_spi0_cs>;
 				cs-gpios = <&pioD 13 0>, <0>, <0>, <&pioD 16 0>;
 				status = "okay";
 			};
@@ -169,6 +171,8 @@ slot@0 {
 			};
 
 			spi1: spi@f8008000 {
+				pinctrl-names = "default";
+				pinctrl-0 = <&pinctrl_spi1_cs>;
 				cs-gpios = <&pioC 25 0>;
 				status = "okay";
 			};
@@ -248,6 +252,26 @@ pinctrl_usb_default: usb_default {
 							<AT91_PIOE 3 AT91_PERIPH_GPIO AT91_PINCTRL_NONE
 							 AT91_PIOE 4 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
 					};
+
+					pinctrl_gpio_leds: gpio_leds_default {
+						atmel,pins =
+							<AT91_PIOE 23 AT91_PERIPH_GPIO AT91_PINCTRL_NONE
+							 AT91_PIOE 24 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
+					};
+
+					pinctrl_spi0_cs: spi0_cs_default {
+						atmel,pins =
+							<AT91_PIOD 13 AT91_PERIPH_GPIO AT91_PINCTRL_NONE
+							 AT91_PIOD 16 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
+					};
+
+					pinctrl_spi1_cs: spi1_cs_default {
+						atmel,pins = <AT91_PIOC 25 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
+					};
+
+					pinctrl_vcc_mmc0_reg_gpio: vcc_mmc0_reg_gpio_default {
+						atmel,pins = <AT91_PIOE 2 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
+					};
 				};
 			};
 		};
@@ -339,6 +363,8 @@ rootfs@800000 {
 
 	vcc_mmc0_reg: fixedregulator_mmc0 {
 		compatible = "regulator-fixed";
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_vcc_mmc0_reg_gpio>;
 		gpio = <&pioE 2 GPIO_ACTIVE_LOW>;
 		regulator-name = "mmc0-card-supply";
 		regulator-min-microvolt = <3300000>;
@@ -362,6 +388,9 @@ bp3 {
 
 	leds {
 		compatible = "gpio-leds";
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_gpio_leds>;
+		status = "okay";
 
 		d2 {
 			label = "d2";
arch/arm/boot/dts/at91-sama5d4_xplained.dts +19 -0
index 0b3ad1b580b8..e42dae06b582 100644
@@ -90,6 +90,8 @@ usart4: serial@fc010000 {
 			};
 
 			spi1: spi@fc018000 {
+				pinctrl-names = "default";
+				pinctrl-0 = <&pinctrl_spi0_cs>;
 				cs-gpios = <&pioB 21 0>;
 				status = "okay";
 			};
@@ -147,6 +149,19 @@ pinctrl_macb0_phy_irq: macb0_phy_irq_0 {
 						atmel,pins =
 							<AT91_PIOE 1 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
 					};
+					pinctrl_spi0_cs: spi0_cs_default {
+						atmel,pins =
+							<AT91_PIOB 21 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
+					};
+					pinctrl_gpio_leds: gpio_leds_default {
+						atmel,pins =
+							<AT91_PIOD 30 AT91_PERIPH_GPIO AT91_PINCTRL_NONE
+							 AT91_PIOE 15 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
+					};
+					pinctrl_vcc_mmc1_reg: vcc_mmc1_reg {
+						atmel,pins =
+							<AT91_PIOE 4 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
+					};
 				};
 			};
 		};
@@ -252,6 +267,8 @@ pb_user1 {
 
 	leds {
 		compatible = "gpio-leds";
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_gpio_leds>;
 		status = "okay";
 
 		d8 {
@@ -278,6 +295,8 @@ vcc_3v3_reg: fixedregulator_3v3 {
 
 	vcc_mmc1_reg: fixedregulator_mmc1 {
 		compatible = "regulator-fixed";
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_vcc_mmc1_reg>;
 		gpio = <&pioE 4 GPIO_ACTIVE_LOW>;
 		regulator-name = "VDD MCI1";
 		regulator-min-microvolt = <3300000>;
arch/arm/boot/dts/meson8.dtsi +5 -0
index 157a950a55d3..686c7b7c79d5 100644
@@ -304,8 +304,13 @@ mali: gpu@c0000 {
 					  "pp2", "ppmmu2", "pp4", "ppmmu4",
 					  "pp5", "ppmmu5", "pp6", "ppmmu6";
 			resets = <&reset RESET_MALI>;
+
 			clocks = <&clkc CLKID_CLK81>, <&clkc CLKID_MALI>;
 			clock-names = "bus", "core";
+
+			assigned-clocks = <&clkc CLKID_MALI>;
+			assigned-clock-rates = <318750000>;
+
 			operating-points-v2 = <&gpu_opp_table>;
 			#cooling-cells = <2>; /* min followed by max */
 		};
arch/arm/boot/dts/meson8b-ec100.dts +2 -2
index 8e48ccc6b634..7e8ddc6f1252 100644
@@ -148,7 +148,7 @@ vcck: regulator-vcck {
 		regulator-min-microvolt = <860000>;
 		regulator-max-microvolt = <1140000>;
 
-		vin-supply = <&vcc_5v>;
+		pwm-supply = <&vcc_5v>;
 
 		pwms = <&pwm_cd 0 1148 0>;
 		pwm-dutycycle-range = <100 0>;
@@ -232,7 +232,7 @@ vddee: regulator-vddee {
 		regulator-min-microvolt = <860000>;
 		regulator-max-microvolt = <1140000>;
 
-		vin-supply = <&vcc_5v>;
+		pwm-supply = <&vcc_5v>;
 
 		pwms = <&pwm_cd 1 1148 0>;
 		pwm-dutycycle-range = <100 0>;
arch/arm/boot/dts/meson8b-mxq.dts +3 -1
index f3937d55472d..7adedd3258c3 100644
@@ -34,6 +34,8 @@ vcck: regulator-vcck {
 		regulator-min-microvolt = <860000>;
 		regulator-max-microvolt = <1140000>;
 
+		pwm-supply = <&vcc_5v>;
+
 		pwms = <&pwm_cd 0 1148 0>;
 		pwm-dutycycle-range = <100 0>;
 
@@ -79,7 +81,7 @@ vddee: regulator-vddee {
 		regulator-min-microvolt = <860000>;
 		regulator-max-microvolt = <1140000>;
 
-		vin-supply = <&vcc_5v>;
+		pwm-supply = <&vcc_5v>;
 
 		pwms = <&pwm_cd 1 1148 0>;
 		pwm-dutycycle-range = <100 0>;
arch/arm/boot/dts/meson8b-odroidc1.dts +2 -2
index c440ef94e082..04356bc639fa 100644
@@ -131,7 +131,7 @@ vcck: regulator-vcck {
 		regulator-min-microvolt = <860000>;
 		regulator-max-microvolt = <1140000>;
 
-		vin-supply = <&p5v0>;
+		pwm-supply = <&p5v0>;
 
 		pwms = <&pwm_cd 0 12218 0>;
 		pwm-dutycycle-range = <91 0>;
@@ -163,7 +163,7 @@ vddee: regulator-vddee {
 		regulator-min-microvolt = <860000>;
 		regulator-max-microvolt = <1140000>;
 
-		vin-supply = <&p5v0>;
+		pwm-supply = <&p5v0>;
 
 		pwms = <&pwm_cd 1 12218 0>;
 		pwm-dutycycle-range = <91 0>;
arch/arm64/boot/dts/exynos/exynos7.dtsi +1 -1
index 10244e59d56d..56a0bb7eb0e6 100644
@@ -102,7 +102,7 @@ gic: interrupt-controller@11001000 {
 			#address-cells = <0>;
 			interrupt-controller;
 			reg =	<0x11001000 0x1000>,
-				<0x11002000 0x1000>,
+				<0x11002000 0x2000>,
 				<0x11004000 0x2000>,
 				<0x11006000 0x2000>;
 		};
arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts +17 -0
index a05b1ab2dd12..04da07ae4420 100644
@@ -135,6 +135,23 @@ &pcie0 {
 	pinctrl-0 = <&pcie_reset_pins &pcie_clkreq_pins>;
 	status = "okay";
 	reset-gpios = <&gpiosb 3 GPIO_ACTIVE_LOW>;
+	/*
+	 * U-Boot port for Turris Mox has a bug which always expects that "ranges" DT property
+	 * contains exactly 2 ranges with 3 (child) address cells, 2 (parent) address cells and
+	 * 2 size cells and also expects that the second range starts at 16 MB offset. If these
+	 * conditions are not met then U-Boot crashes during loading kernel DTB file. PCIe address
+	 * space is 128 MB long, so the best split between MEM and IO is to use fixed 16 MB window
+	 * for IO and the rest 112 MB (64+32+16) for MEM, despite that maximal IO size is just 64 kB.
+	 * This bug is not present in U-Boot ports for other Armada 3700 devices and is fixed in
+	 * U-Boot version 2021.07. See relevant U-Boot commits (the last one contains fix):
+	 * https://source.denx.de/u-boot/u-boot/-/commit/cb2ddb291ee6fcbddd6d8f4ff49089dfe580f5d7
+	 * https://source.denx.de/u-boot/u-boot/-/commit/c64ac3b3185aeb3846297ad7391fc6df8ecd73bf
+	 * https://source.denx.de/u-boot/u-boot/-/commit/4a82fca8e330157081fc132a591ebd99ba02ee33
+	 */
+	#address-cells = <3>;
+	#size-cells = <2>;
+	ranges = <0x81000000 0 0xe8000000   0 0xe8000000   0 0x01000000   /* Port 0 IO */
+		  0x82000000 0 0xe9000000   0 0xe9000000   0 0x07000000>; /* Port 0 MEM */
 
 	/* enabled by U-Boot if PCIe module is present */
 	status = "disabled";
arch/arm64/boot/dts/marvell/armada-37xx.dtsi +9 -2
index 5db81a416cd6..9acc5d2b5a00 100644
@@ -489,8 +489,15 @@ pcie0: pcie@d0070000 {
 			#interrupt-cells = <1>;
 			msi-parent = <&pcie0>;
 			msi-controller;
-			ranges = <0x82000000 0 0xe8000000   0 0xe8000000 0 0x1000000 /* Port 0 MEM */
-				  0x81000000 0 0xe9000000   0 0xe9000000 0 0x10000>; /* Port 0 IO*/
+			/*
+			 * The 128 MiB address range [0xe8000000-0xf0000000] is
+			 * dedicated for PCIe and can be assigned to 8 windows
+			 * with size a power of two. Use one 64 KiB window for
+			 * IO at the end and the remaining seven windows
+			 * (totaling 127 MiB) for MEM.
+			 */
+			ranges = <0x82000000 0 0xe8000000   0 0xe8000000   0 0x07f00000   /* Port 0 MEM */
+				  0x81000000 0 0xefff0000   0 0xefff0000   0 0x00010000>; /* Port 0 IO */
 			interrupt-map-mask = <0 0 0 7>;
 			interrupt-map = <0 0 0 1 &pcie_intc 0>,
 					<0 0 0 2 &pcie_intc 1>,
arch/arm64/boot/dts/qcom/sc7180-trogdor-coachz.dtsi +1 -1
index 6f9c07147551..a758e4d22612 100644
@@ -23,7 +23,7 @@ / {
 	adau7002: audio-codec-1 {
 		compatible = "adi,adau7002";
 		IOVDD-supply = <&pp1800_l15a>;
-		wakeup-delay-ms = <15>;
+		wakeup-delay-ms = <80>;
 		#sound-dai-cells = <0>;
 	};
 
arch/arm64/boot/dts/qcom/sc7280.dtsi +3 -3
index 188c5768a55a..c08f07410699 100644
@@ -1437,9 +1437,9 @@ rpmhcc: clock-controller {
 
 		cpufreq_hw: cpufreq@18591000 {
 			compatible = "qcom,cpufreq-epss";
-			reg = <0 0x18591000 0 0x1000>,
-			      <0 0x18592000 0 0x1000>,
-			      <0 0x18593000 0 0x1000>;
+			reg = <0 0x18591100 0 0x900>,
+			      <0 0x18592100 0 0x900>,
+			      <0 0x18593100 0 0x900>;
 			clocks = <&rpmhcc RPMH_CXO_CLK>, <&gcc GCC_GPLL0>;
 			clock-names = "xo", "alternate";
 			#freq-domain-cells = <1>;
arch/arm64/boot/dts/qcom/sm8250.dtsi +1 -1
index 4798368b02ef..9a6eff1813a6 100644
@@ -2210,7 +2210,7 @@ usb_2_qmpphy: phy@88eb000 {
 				 <&gcc GCC_USB3_PHY_SEC_BCR>;
 			reset-names = "phy", "common";
 
-			usb_2_ssphy: lane@88eb200 {
+			usb_2_ssphy: lanes@88eb200 {
 				reg = <0 0x088eb200 0 0x200>,
 				      <0 0x088eb400 0 0x200>,
 				      <0 0x088eb800 0 0x800>;
arch/arm64/boot/dts/qcom/sm8350.dtsi +3 -5
index 0d16392bb976..dbc174d424e2 100644
@@ -666,12 +666,10 @@ ipa: ipa@1e40000 {
 			clocks = <&rpmhcc RPMH_IPA_CLK>;
 			clock-names = "core";
 
-			interconnects = <&aggre2_noc MASTER_IPA &gem_noc SLAVE_LLCC>,
-					<&mc_virt MASTER_LLCC &mc_virt SLAVE_EBI1>,
+			interconnects = <&aggre2_noc MASTER_IPA &mc_virt SLAVE_EBI1>,
 					<&gem_noc MASTER_APPSS_PROC &config_noc SLAVE_IPA_CFG>;
-			interconnect-names = "ipa_to_llcc",
-					     "llcc_to_ebi1",
-					     "appss_to_ipa";
+			interconnect-names = "memory",
+					     "config";
 
 			qcom,smem-states = <&ipa_smp2p_out 0>,
 					   <&ipa_smp2p_out 1>;
arch/arm64/boot/dts/renesas/hihope-rzg2-ex.dtsi +1 -0
index 202c4fc88bd5..dde3a07bc417 100644
@@ -20,6 +20,7 @@ &avb {
 	pinctrl-names = "default";
 	phy-handle = <&phy0>;
 	tx-internal-delay-ps = <2000>;
+	rx-internal-delay-ps = <1800>;
 	status = "okay";
 
 	phy0: ethernet-phy@0 {
arch/arm64/boot/dts/renesas/r8a77995-draak.dts +0 -4
index 6783c3ad0856..57784341f39d 100644
@@ -277,10 +277,6 @@ hdmi-encoder@39 {
 		interrupt-parent = <&gpio1>;
 		interrupts = <28 IRQ_TYPE_LEVEL_LOW>;
 
-		/* Depends on LVDS */
-		max-clock = <135000000>;
-		min-vrefresh = <50>;
-
 		adi,input-depth = <8>;
 		adi,input-colorspace = "rgb";
 		adi,input-clock = "1x";
arch/arm64/kvm/arm.c +7 -0
index 0ca72f5cda41..5d1fc9c4bca5 100644
@@ -15,6 +15,7 @@
 #include <linux/fs.h>
 #include <linux/mman.h>
 #include <linux/sched.h>
+#include <linux/kmemleak.h>
 #include <linux/kvm.h>
 #include <linux/kvm_irqfd.h>
 #include <linux/irqbypass.h>
@@ -1986,6 +1987,12 @@ static int finalize_hyp_mode(void)
 	if (ret)
 		return ret;
 
+	/*
+	 * Exclude HYP BSS from kmemleak so that it doesn't get peeked
+	 * at, which would end badly once the section is inaccessible.
+	 * None of other sections should ever be introspected.
+	 */
+	kmemleak_free_part(__hyp_bss_start, __hyp_bss_end - __hyp_bss_start);
 	ret = pkvm_mark_hyp_section(__hyp_bss);
 	if (ret)
 		return ret;
arch/arm64/kvm/vgic/vgic-v2.c +5 -31
index 2c580204f1dc..95a18cec14a3 100644
@@ -60,6 +60,7 @@ void vgic_v2_fold_lr_state(struct kvm_vcpu *vcpu)
 		u32 val = cpuif->vgic_lr[lr];
 		u32 cpuid, intid = val & GICH_LR_VIRTUALID;
 		struct vgic_irq *irq;
+		bool deactivated;
 
 		/* Extract the source vCPU id from the LR */
 		cpuid = val & GICH_LR_PHYSID_CPUID;
@@ -75,7 +76,8 @@ void vgic_v2_fold_lr_state(struct kvm_vcpu *vcpu)
 
 		raw_spin_lock(&irq->irq_lock);
 
-		/* Always preserve the active bit */
+		/* Always preserve the active bit, note deactivation */
+		deactivated = irq->active && !(val & GICH_LR_ACTIVE_BIT);
 		irq->active = !!(val & GICH_LR_ACTIVE_BIT);
 
 		if (irq->active && vgic_irq_is_sgi(intid))
@@ -96,36 +98,8 @@ void vgic_v2_fold_lr_state(struct kvm_vcpu *vcpu)
 		if (irq->config == VGIC_CONFIG_LEVEL && !(val & GICH_LR_STATE))
 			irq->pending_latch = false;
 
-		/*
-		 * Level-triggered mapped IRQs are special because we only
-		 * observe rising edges as input to the VGIC.
-		 *
-		 * If the guest never acked the interrupt we have to sample
-		 * the physical line and set the line level, because the
-		 * device state could have changed or we simply need to
-		 * process the still pending interrupt later.
-		 *
-		 * If this causes us to lower the level, we have to also clear
-		 * the physical active state, since we will otherwise never be
-		 * told when the interrupt becomes asserted again.
-		 *
-		 * Another case is when the interrupt requires a helping hand
-		 * on deactivation (no HW deactivation, for example).
-		 */
-		if (vgic_irq_is_mapped_level(irq)) {
-			bool resample = false;
-
-			if (val & GICH_LR_PENDING_BIT) {
-				irq->line_level = vgic_get_phys_line_level(irq);
-				resample = !irq->line_level;
-			} else if (vgic_irq_needs_resampling(irq) &&
-				   !(irq->active || irq->pending_latch)) {
-				resample = true;
-			}
-
-			if (resample)
-				vgic_irq_set_phys_active(irq, false);
-		}
+		/* Handle resampling for mapped interrupts if required */
+		vgic_irq_handle_resampling(irq, deactivated, val & GICH_LR_PENDING_BIT);
 
 		raw_spin_unlock(&irq->irq_lock);
 		vgic_put_irq(vcpu->kvm, irq);
arch/arm64/kvm/vgic/vgic-v3.c +5 -31
index 66004f61cd83..21a6207fb2ee 100644
@@ -46,6 +46,7 @@ void vgic_v3_fold_lr_state(struct kvm_vcpu *vcpu)
 		u32 intid, cpuid;
 		struct vgic_irq *irq;
 		bool is_v2_sgi = false;
+		bool deactivated;
 
 		cpuid = val & GICH_LR_PHYSID_CPUID;
 		cpuid >>= GICH_LR_PHYSID_CPUID_SHIFT;
@@ -68,7 +69,8 @@ void vgic_v3_fold_lr_state(struct kvm_vcpu *vcpu)
 
 		raw_spin_lock(&irq->irq_lock);
 
-		/* Always preserve the active bit */
+		/* Always preserve the active bit, note deactivation */
+		deactivated = irq->active && !(val & ICH_LR_ACTIVE_BIT);
 		irq->active = !!(val & ICH_LR_ACTIVE_BIT);
 
 		if (irq->active && is_v2_sgi)
@@ -89,36 +91,8 @@ void vgic_v3_fold_lr_state(struct kvm_vcpu *vcpu)
 		if (irq->config == VGIC_CONFIG_LEVEL && !(val & ICH_LR_STATE))
 			irq->pending_latch = false;
 
-		/*
-		 * Level-triggered mapped IRQs are special because we only
-		 * observe rising edges as input to the VGIC.
-		 *
-		 * If the guest never acked the interrupt we have to sample
-		 * the physical line and set the line level, because the
-		 * device state could have changed or we simply need to
-		 * process the still pending interrupt later.
-		 *
-		 * If this causes us to lower the level, we have to also clear
-		 * the physical active state, since we will otherwise never be
-		 * told when the interrupt becomes asserted again.
-		 *
-		 * Another case is when the interrupt requires a helping hand
-		 * on deactivation (no HW deactivation, for example).
-		 */
-		if (vgic_irq_is_mapped_level(irq)) {
-			bool resample = false;
-
-			if (val & ICH_LR_PENDING_BIT) {
-				irq->line_level = vgic_get_phys_line_level(irq);
-				resample = !irq->line_level;
-			} else if (vgic_irq_needs_resampling(irq) &&
-				   !(irq->active || irq->pending_latch)) {
-				resample = true;
-			}
-
-			if (resample)
-				vgic_irq_set_phys_active(irq, false);
-		}
+		/* Handle resampling for mapped interrupts if required */
+		vgic_irq_handle_resampling(irq, deactivated, val & ICH_LR_PENDING_BIT);
 
 		raw_spin_unlock(&irq->irq_lock);
 		vgic_put_irq(vcpu->kvm, irq);
arch/arm64/kvm/vgic/vgic.c +38 -0
index 111bff47e471..42a6ac78fe95 100644
@@ -1022,3 +1022,41 @@ bool kvm_vgic_map_is_active(struct kvm_vcpu *vcpu, unsigned int vintid)
 
 	return map_is_active;
 }
+
+/*
+ * Level-triggered mapped IRQs are special because we only observe rising
+ * edges as input to the VGIC.
+ *
+ * If the guest never acked the interrupt we have to sample the physical
+ * line and set the line level, because the device state could have changed
+ * or we simply need to process the still pending interrupt later.
+ *
+ * We could also have entered the guest with the interrupt active+pending.
+ * On the next exit, we need to re-evaluate the pending state, as it could
+ * otherwise result in a spurious interrupt by injecting a now potentially
+ * stale pending state.
+ *
+ * If this causes us to lower the level, we have to also clear the physical
+ * active state, since we will otherwise never be told when the interrupt
+ * becomes asserted again.
+ *
+ * Another case is when the interrupt requires a helping hand on
+ * deactivation (no HW deactivation, for example).
+ */
+void vgic_irq_handle_resampling(struct vgic_irq *irq,
+				bool lr_deactivated, bool lr_pending)
+{
+	if (vgic_irq_is_mapped_level(irq)) {
+		bool resample = false;
+
+		if (unlikely(vgic_irq_needs_resampling(irq))) {
+			resample = !(irq->active || irq->pending_latch);
+		} else if (lr_pending || (lr_deactivated && irq->line_level)) {
+			irq->line_level = vgic_get_phys_line_level(irq);
+			resample = !irq->line_level;
+		}
+
+		if (resample)
+			vgic_irq_set_phys_active(irq, false);
+	}
+}
arch/arm64/kvm/vgic/vgic.h +2 -0
index dc1f3d1657ee..14a9218641f5 100644
@@ -169,6 +169,8 @@ void vgic_irq_set_phys_active(struct vgic_irq *irq, bool active);
 bool vgic_queue_irq_unlock(struct kvm *kvm, struct vgic_irq *irq,
 			   unsigned long flags);
 void vgic_kick_vcpus(struct kvm *kvm);
+void vgic_irq_handle_resampling(struct vgic_irq *irq,
+				bool lr_deactivated, bool lr_pending);
 
 int vgic_check_ioaddr(struct kvm *kvm, phys_addr_t *ioaddr,
 		      phys_addr_t addr, phys_addr_t alignment);
arch/m68k/Kconfig.cpu +7 -1
index 29e946394fdb..277d61a09463 100644
@@ -26,6 +26,7 @@ config COLDFIRE
 	bool "Coldfire CPU family support"
 	select ARCH_HAVE_CUSTOM_GPIO_H
 	select CPU_HAS_NO_BITFIELDS
+	select CPU_HAS_NO_CAS
 	select CPU_HAS_NO_MULDIV64
 	select GENERIC_CSUM
 	select GPIOLIB
@@ -39,6 +40,7 @@ config M68000
 	bool
 	depends on !MMU
 	select CPU_HAS_NO_BITFIELDS
+	select CPU_HAS_NO_CAS
 	select CPU_HAS_NO_MULDIV64
 	select CPU_HAS_NO_UNALIGNED
 	select GENERIC_CSUM
@@ -54,6 +56,7 @@ config M68000
 config MCPU32
 	bool
 	select CPU_HAS_NO_BITFIELDS
+	select CPU_HAS_NO_CAS
 	select CPU_HAS_NO_UNALIGNED
 	select CPU_NO_EFFICIENT_FFS
 	help
@@ -383,7 +386,7 @@ config ADVANCED
 
 config RMW_INSNS
 	bool "Use read-modify-write instructions"
-	depends on ADVANCED
+	depends on ADVANCED && !CPU_HAS_NO_CAS
 	help
 	  This allows to use certain instructions that work with indivisible
 	  read-modify-write bus cycles. While this is faster than the
@@ -450,6 +453,9 @@ config M68K_L2_CACHE
 config CPU_HAS_NO_BITFIELDS
 	bool
 
+config CPU_HAS_NO_CAS
+	bool
+
 config CPU_HAS_NO_MULDIV64
 	bool
 
arch/m68k/coldfire/clk.c +1 -1
index 2ed841e94111..d03b6c4aa86b 100644
@@ -78,7 +78,7 @@ int clk_enable(struct clk *clk)
 	unsigned long flags;
 
 	if (!clk)
-		return -EINVAL;
+		return 0;
 
 	spin_lock_irqsave(&clk_lock, flags);
 	if ((clk->enabled++ == 0) && clk->clk_ops)
arch/m68k/emu/nfeth.c +2 -2
index d2875e32abfc..79e55421cfb1 100644
@@ -254,8 +254,8 @@ static void __exit nfeth_cleanup(void)
 
 	for (i = 0; i < MAX_UNIT; i++) {
 		if (nfeth_dev[i]) {
-			unregister_netdev(nfeth_dev[0]);
-			free_netdev(nfeth_dev[0]);
+			unregister_netdev(nfeth_dev[i]);
+			free_netdev(nfeth_dev[i]);
 		}
 	}
 	free_irq(nfEtherIRQ, nfeth_interrupt);
arch/m68k/include/asm/atomic.h +2 -2
index 8637bf8a2f65..cfba83d230fd 100644
@@ -48,7 +48,7 @@ static inline int arch_atomic_##op##_return(int i, atomic_t *v)		\
 			"	casl %2,%1,%0\n"			\
 			"	jne 1b"					\
 			: "+m" (*v), "=&d" (t), "=&d" (tmp)		\
-			: "g" (i), "2" (arch_atomic_read(v)));		\
+			: "di" (i), "2" (arch_atomic_read(v)));		\
 	return t;							\
 }
 
@@ -63,7 +63,7 @@ static inline int arch_atomic_fetch_##op(int i, atomic_t *v)		\
 			"	casl %2,%1,%0\n"			\
 			"	jne 1b"					\
 			: "+m" (*v), "=&d" (t), "=&d" (tmp)		\
-			: "g" (i), "2" (arch_atomic_read(v)));		\
+			: "di" (i), "2" (arch_atomic_read(v)));		\
 	return tmp;							\
 }
 
arch/parisc/boot/compressed/misc.c +1 -1
index 2d395998f524..7ee49f5881d1 100644
@@ -26,7 +26,7 @@
 extern char input_data[];
 extern int input_len;
 /* output_len is inserted by the linker possibly at an unaligned address */
-extern __le32 output_len __aligned(1);
+extern char output_len;
 extern char _text, _end;
 extern char _bss, _ebss;
 extern char _startcode_end;
arch/s390/include/asm/kvm_host.h +1 -0
index 161a9e12bfb8..630eab0fa176 100644
@@ -957,6 +957,7 @@ struct kvm_arch{
 	atomic64_t cmma_dirty_pages;
 	/* subset of available cpu features enabled by user space */
 	DECLARE_BITMAP(cpu_feat, KVM_S390_VM_CPU_FEAT_NR_BITS);
+	/* indexed by vcpu_idx */
 	DECLARE_BITMAP(idle_mask, KVM_MAX_VCPUS);
 	struct kvm_s390_gisa_interrupt gisa_int;
 	struct kvm_s390_pv pv;
arch/s390/include/asm/lowcore.h +2 -1
index 47bde5a20a41..11213c8bfca5 100644
@@ -124,7 +124,8 @@ struct lowcore {
 	/* Restart function and parameter. */
 	__u64	restart_fn;			/* 0x0370 */
 	__u64	restart_data;			/* 0x0378 */
-	__u64	restart_source;			/* 0x0380 */
+	__u32	restart_source;			/* 0x0380 */
+	__u32	restart_flags;			/* 0x0384 */
 
 	/* Address space pointer. */
 	__u64	kernel_asce;			/* 0x0388 */
arch/s390/include/asm/processor.h +2 -0
index ddc7858bbce4..879b8e3f609c 100644
@@ -26,6 +26,8 @@
 #define _CIF_MCCK_GUEST		BIT(CIF_MCCK_GUEST)
 #define _CIF_DEDICATED_CPU	BIT(CIF_DEDICATED_CPU)
 
+#define RESTART_FLAG_CTLREGS	_AC(1 << 0, U)
+
 #ifndef __ASSEMBLY__
 
 #include <linux/cpumask.h>
arch/s390/kernel/asm-offsets.c +1 -0
index 77ff2130cb04..dc53b0452ce2 100644
@@ -116,6 +116,7 @@ int main(void)
 	OFFSET(__LC_RESTART_FN, lowcore, restart_fn);
 	OFFSET(__LC_RESTART_DATA, lowcore, restart_data);
 	OFFSET(__LC_RESTART_SOURCE, lowcore, restart_source);
+	OFFSET(__LC_RESTART_FLAGS, lowcore, restart_flags);
 	OFFSET(__LC_KERNEL_ASCE, lowcore, kernel_asce);
 	OFFSET(__LC_USER_ASCE, lowcore, user_asce);
 	OFFSET(__LC_LPP, lowcore, lpp);
arch/s390/kernel/debug.c +109 -67

252 lines not on this page · raw message

arch/s390/kernel/entry.S +7 -4
index 5a2f70cbd3a9..b9716a7e326d 100644
@@ -624,12 +624,15 @@ ENTRY(mcck_int_handler)
 4:	j	4b
 ENDPROC(mcck_int_handler)
 
-#
-# PSW restart interrupt handler
-#
 ENTRY(restart_int_handler)
 	ALTERNATIVE "", ".insn s,0xb2800000,_LPP_OFFSET", 40
 	stg	%r15,__LC_SAVE_AREA_RESTART
+	TSTMSK	__LC_RESTART_FLAGS,RESTART_FLAG_CTLREGS,4
+	jz	0f
+	la	%r15,4095
+	lctlg	%c0,%c15,__LC_CREGS_SAVE_AREA-4095(%r15)
+0:	larl	%r15,.Lstosm_tmp
+	stosm	0(%r15),0x04			# turn dat on, keep irqs off
 	lg	%r15,__LC_RESTART_STACK
 	xc	STACK_FRAME_OVERHEAD(__PT_SIZE,%r15),STACK_FRAME_OVERHEAD(%r15)
 	stmg	%r0,%r14,STACK_FRAME_OVERHEAD+__PT_R0(%r15)
@@ -638,7 +641,7 @@ ENTRY(restart_int_handler)
 	xc	0(STACK_FRAME_OVERHEAD,%r15),0(%r15)
 	lg	%r1,__LC_RESTART_FN		# load fn, parm & source cpu
 	lg	%r2,__LC_RESTART_DATA
-	lg	%r3,__LC_RESTART_SOURCE
+	lgf	%r3,__LC_RESTART_SOURCE
 	ltgr	%r3,%r3				# test source cpu address
 	jm	1f				# negative -> skip source stop
 0:	sigp	%r4,%r3,SIGP_SENSE		# sigp sense to source cpu
arch/s390/kernel/ipl.c +0 -3
index 50e2c21e0ec9..911cd3912351 100644
@@ -179,8 +179,6 @@ static inline int __diag308(unsigned long subcode, void *addr)
 
 int diag308(unsigned long subcode, void *addr)
 {
-	if (IS_ENABLED(CONFIG_KASAN))
-		__arch_local_irq_stosm(0x04); /* enable DAT */
 	diag_stat_inc(DIAG_STAT_X308);
 	return __diag308(subcode, addr);
 }
@@ -1843,7 +1841,6 @@ static struct kobj_attribute on_restart_attr = __ATTR_RW(on_restart);
 
 static void __do_restart(void *ignore)
 {
-	__arch_local_irq_stosm(0x04); /* enable DAT */
 	smp_send_stop();
 #ifdef CONFIG_CRASH_DUMP
 	crash_kexec(NULL);
arch/s390/kernel/machine_kexec.c +0 -1
index 1005a6935fbe..c1fbc979e0e8 100644
@@ -263,7 +263,6 @@ static void __do_machine_kexec(void *data)
  */
 static void __machine_kexec(void *data)
 {
-	__arch_local_irq_stosm(0x04); /* enable DAT */
 	pfault_fini();
 	tracing_off();
 	debug_locks_off();
arch/s390/kernel/setup.c +8 -1
index ff0f9e838916..ee23908f1b96 100644
@@ -421,7 +421,7 @@ static void __init setup_lowcore_dat_off(void)
 	lc->restart_stack = (unsigned long) restart_stack;
 	lc->restart_fn = (unsigned long) do_restart;
 	lc->restart_data = 0;
-	lc->restart_source = -1UL;
+	lc->restart_source = -1U;
 
 	mcck_stack = (unsigned long)memblock_alloc(THREAD_SIZE, THREAD_SIZE);
 	if (!mcck_stack)
@@ -450,12 +450,19 @@ static void __init setup_lowcore_dat_off(void)
 
 static void __init setup_lowcore_dat_on(void)
 {
+	struct lowcore *lc = lowcore_ptr[0];
+
 	__ctl_clear_bit(0, 28);
 	S390_lowcore.external_new_psw.mask |= PSW_MASK_DAT;
 	S390_lowcore.svc_new_psw.mask |= PSW_MASK_DAT;
 	S390_lowcore.program_new_psw.mask |= PSW_MASK_DAT;
 	S390_lowcore.io_new_psw.mask |= PSW_MASK_DAT;
+	__ctl_store(S390_lowcore.cregs_save_area, 0, 15);
 	__ctl_set_bit(0, 28);
+	mem_assign_absolute(S390_lowcore.restart_flags, RESTART_FLAG_CTLREGS);
+	mem_assign_absolute(S390_lowcore.program_new_psw, lc->program_new_psw);
+	memcpy_absolute(&S390_lowcore.cregs_save_area, lc->cregs_save_area,
+			sizeof(S390_lowcore.cregs_save_area));
 }
 
 static struct resource code_resource = {
arch/s390/kernel/smp.c +22 -9
index 8984711f72ed..8e8ace899407 100644
@@ -252,6 +252,7 @@ static void pcpu_prepare_secondary(struct pcpu *pcpu, int cpu)
 	cpumask_set_cpu(cpu, &init_mm.context.cpu_attach_mask);
 	cpumask_set_cpu(cpu, mm_cpumask(&init_mm));
 	lc->cpu_nr = cpu;
+	lc->restart_flags = RESTART_FLAG_CTLREGS;
 	lc->spinlock_lockval = arch_spin_lockval(cpu);
 	lc->spinlock_index = 0;
 	lc->percpu_offset = __per_cpu_offset[cpu];
@@ -297,7 +298,7 @@ static void pcpu_start_fn(struct pcpu *pcpu, void (*func)(void *), void *data)
 	lc->restart_stack = lc->nodat_stack;
 	lc->restart_fn = (unsigned long) func;
 	lc->restart_data = (unsigned long) data;
-	lc->restart_source = -1UL;
+	lc->restart_source = -1U;
 	pcpu_sigp_retry(pcpu, SIGP_RESTART, 0);
 }
 
@@ -311,12 +312,12 @@ static void __pcpu_delegate(pcpu_delegate_fn *func, void *data)
 	func(data);	/* should not return */
 }
 
-static void __no_sanitize_address pcpu_delegate(struct pcpu *pcpu,
-						pcpu_delegate_fn *func,
-						void *data, unsigned long stack)
+static void pcpu_delegate(struct pcpu *pcpu,
+			  pcpu_delegate_fn *func,
+			  void *data, unsigned long stack)
 {
 	struct lowcore *lc = lowcore_ptr[pcpu - pcpu_devices];
-	unsigned long source_cpu = stap();
+	unsigned int source_cpu = stap();
 
 	__load_psw_mask(PSW_KERNEL_BITS | PSW_MASK_DAT);
 	if (pcpu->address == source_cpu) {
@@ -569,6 +570,9 @@ static void smp_ctl_bit_callback(void *info)
 	__ctl_load(cregs, 0, 15);
 }
 
+static DEFINE_SPINLOCK(ctl_lock);
+static unsigned long ctlreg;
+
 /*
  * Set a bit in a control register of all cpus
  */
@@ -576,6 +580,11 @@ void smp_ctl_set_bit(int cr, int bit)
 {
 	struct ec_creg_mask_parms parms = { 1UL << bit, -1UL, cr };
 
+	spin_lock(&ctl_lock);
+	memcpy_absolute(&ctlreg, &S390_lowcore.cregs_save_area[cr], sizeof(ctlreg));
+	__set_bit(bit, &ctlreg);
+	memcpy_absolute(&S390_lowcore.cregs_save_area[cr], &ctlreg, sizeof(ctlreg));
+	spin_unlock(&ctl_lock);
 	on_each_cpu(smp_ctl_bit_callback, &parms, 1);
 }
 EXPORT_SYMBOL(smp_ctl_set_bit);
@@ -587,6 +596,11 @@ void smp_ctl_clear_bit(int cr, int bit)
 {
 	struct ec_creg_mask_parms parms = { 0, ~(1UL << bit), cr };
 
+	spin_lock(&ctl_lock);
+	memcpy_absolute(&ctlreg, &S390_lowcore.cregs_save_area[cr], sizeof(ctlreg));
+	__clear_bit(bit, &ctlreg);
+	memcpy_absolute(&S390_lowcore.cregs_save_area[cr], &ctlreg, sizeof(ctlreg));
+	spin_unlock(&ctl_lock);
 	on_each_cpu(smp_ctl_bit_callback, &parms, 1);
 }
 EXPORT_SYMBOL(smp_ctl_clear_bit);
@@ -895,14 +909,13 @@ static void smp_init_secondary(void)
 /*
  *	Activate a secondary processor.
  */
-static void __no_sanitize_address smp_start_secondary(void *cpuvoid)
+static void smp_start_secondary(void *cpuvoid)
 {
 	S390_lowcore.restart_stack = (unsigned long) restart_stack;
 	S390_lowcore.restart_fn = (unsigned long) do_restart;
 	S390_lowcore.restart_data = 0;
-	S390_lowcore.restart_source = -1UL;
-	__ctl_load(S390_lowcore.cregs_save_area, 0, 15);
-	__load_psw_mask(PSW_KERNEL_BITS | PSW_MASK_DAT);
+	S390_lowcore.restart_source = -1U;
+	S390_lowcore.restart_flags = 0;
 	call_on_stack_noreturn(smp_init_secondary, S390_lowcore.kernel_stack);
 }
 
arch/s390/kvm/interrupt.c +6 -6
index d548d60caed2..16256e17a544 100644
@@ -419,13 +419,13 @@ static unsigned long deliverable_irqs(struct kvm_vcpu *vcpu)
 static void __set_cpu_idle(struct kvm_vcpu *vcpu)
 {
 	kvm_s390_set_cpuflags(vcpu, CPUSTAT_WAIT);
-	set_bit(vcpu->vcpu_id, vcpu->kvm->arch.idle_mask);
+	set_bit(kvm_vcpu_get_idx(vcpu), vcpu->kvm->arch.idle_mask);
 }
 
 static void __unset_cpu_idle(struct kvm_vcpu *vcpu)
 {
 	kvm_s390_clear_cpuflags(vcpu, CPUSTAT_WAIT);
-	clear_bit(vcpu->vcpu_id, vcpu->kvm->arch.idle_mask);
+	clear_bit(kvm_vcpu_get_idx(vcpu), vcpu->kvm->arch.idle_mask);
 }
 
 static void __reset_intercept_indicators(struct kvm_vcpu *vcpu)
@@ -3050,18 +3050,18 @@ int kvm_s390_get_irq_state(struct kvm_vcpu *vcpu, __u8 __user *buf, int len)
 
 static void __airqs_kick_single_vcpu(struct kvm *kvm, u8 deliverable_mask)
 {
-	int vcpu_id, online_vcpus = atomic_read(&kvm->online_vcpus);
+	int vcpu_idx, online_vcpus = atomic_read(&kvm->online_vcpus);
 	struct kvm_s390_gisa_interrupt *gi = &kvm->arch.gisa_int;
 	struct kvm_vcpu *vcpu;
 
-	for_each_set_bit(vcpu_id, kvm->arch.idle_mask, online_vcpus) {
-		vcpu = kvm_get_vcpu(kvm, vcpu_id);
+	for_each_set_bit(vcpu_idx, kvm->arch.idle_mask, online_vcpus) {
+		vcpu = kvm_get_vcpu(kvm, vcpu_idx);
 		if (psw_ioint_disabled(vcpu))
 			continue;
 		deliverable_mask &= (u8)(vcpu->arch.sie_block->gcr[6] >> 24);
 		if (deliverable_mask) {
 			/* lately kicked but not yet running */
-			if (test_and_set_bit(vcpu_id, gi->kicked_mask))
+			if (test_and_set_bit(vcpu_idx, gi->kicked_mask))
 				return;
 			kvm_s390_vcpu_wakeup(vcpu);
 			return;
arch/s390/kvm/kvm-s390.c +1 -1
index 4527ac7b5961..8580543c5bc3 100644
@@ -4044,7 +4044,7 @@ static int vcpu_pre_run(struct kvm_vcpu *vcpu)
 		kvm_s390_patch_guest_per_regs(vcpu);
 	}
 
-	clear_bit(vcpu->vcpu_id, vcpu->kvm->arch.gisa_int.kicked_mask);
+	clear_bit(kvm_vcpu_get_idx(vcpu), vcpu->kvm->arch.gisa_int.kicked_mask);
 
 	vcpu->arch.sie_block->icptcode = 0;
 	cpuflags = atomic_read(&vcpu->arch.sie_block->cpuflags);
arch/s390/kvm/kvm-s390.h +1 -1
index 9fad25109b0d..ecd741ee3276 100644
@@ -79,7 +79,7 @@ static inline int is_vcpu_stopped(struct kvm_vcpu *vcpu)
 
 static inline int is_vcpu_idle(struct kvm_vcpu *vcpu)
 {
-	return test_bit(vcpu->vcpu_id, vcpu->kvm->arch.idle_mask);
+	return test_bit(kvm_vcpu_get_idx(vcpu), vcpu->kvm->arch.idle_mask);
 }
 
 static inline int kvm_is_ucontrol(struct kvm *kvm)
arch/s390/mm/kasan_init.c +20 -21

56 lines not on this page · raw message

arch/s390/pci/pci.c +4 -3
index 8fcb7ecb7225..77cd965cffef 100644
@@ -661,9 +661,10 @@ int zpci_enable_device(struct zpci_dev *zdev)
 {
 	int rc;
 
-	rc = clp_enable_fh(zdev, ZPCI_NR_DMA_SPACES);
-	if (rc)
+	if (clp_enable_fh(zdev, ZPCI_NR_DMA_SPACES)) {
+		rc = -EIO;
 		goto out;
+	}
 
 	rc = zpci_dma_init_device(zdev);
 	if (rc)
@@ -684,7 +685,7 @@ int zpci_disable_device(struct zpci_dev *zdev)
 	 * The zPCI function may already be disabled by the platform, this is
 	 * detected in clp_disable_fh() which becomes a no-op.
 	 */
-	return clp_disable_fh(zdev);
+	return clp_disable_fh(zdev) ? -EIO : 0;
 }
 
 /**
arch/s390/pci/pci_clp.c +16 -17
index d3331596ddbe..0a0e8b8293be 100644
@@ -213,15 +213,19 @@ int clp_query_pci_fn(struct zpci_dev *zdev)
 }
 
 static int clp_refresh_fh(u32 fid);
-/*
- * Enable/Disable a given PCI function and update its function handle if
- * necessary
+/**
+ * clp_set_pci_fn() - Execute a command on a PCI function
+ * @zdev: Function that will be affected
+ * @nr_dma_as: DMA address space number
+ * @command: The command code to execute
+ *
+ * Returns: 0 on success, < 0 for Linux errors (e.g. -ENOMEM), and
+ * > 0 for non-success platform responses
  */
 static int clp_set_pci_fn(struct zpci_dev *zdev, u8 nr_dma_as, u8 command)
 {
 	struct clp_req_rsp_set_pci *rrb;
 	int rc, retries = 100;
-	u32 fid = zdev->fid;
 
 	rrb = clp_alloc_block(GFP_KERNEL);
 	if (!rrb)
@@ -245,17 +249,16 @@ static int clp_set_pci_fn(struct zpci_dev *zdev, u8 nr_dma_as, u8 command)
 		}
 	} while (rrb->response.hdr.rsp == CLP_RC_SETPCIFN_BUSY);
 
-	if (rc || rrb->response.hdr.rsp != CLP_RC_OK) {
-		zpci_err("Set PCI FN:\n");
-		zpci_err_clp(rrb->response.hdr.rsp, rc);
-	}
-
 	if (!rc && rrb->response.hdr.rsp == CLP_RC_OK) {
 		zdev->fh = rrb->response.fh;
-	} else if (!rc && rrb->response.hdr.rsp == CLP_RC_SETPCIFN_ALRDY &&
-			rrb->response.fh == 0) {
+	} else if (!rc && rrb->response.hdr.rsp == CLP_RC_SETPCIFN_ALRDY) {
 		/* Function is already in desired state - update handle */
-		rc = clp_refresh_fh(fid);
+		rc = clp_refresh_fh(zdev->fid);
+	} else {
+		zpci_err("Set PCI FN:\n");
+		zpci_err_clp(rrb->response.hdr.rsp, rc);
+		if (!rc)
+			rc = rrb->response.hdr.rsp;
 	}
 	clp_free_block(rrb);
 	return rc;
@@ -301,17 +304,13 @@ int clp_enable_fh(struct zpci_dev *zdev, u8 nr_dma_as)
 
 	rc = clp_set_pci_fn(zdev, nr_dma_as, CLP_SET_ENABLE_PCI_FN);
 	zpci_dbg(3, "ena fid:%x, fh:%x, rc:%d\n", zdev->fid, zdev->fh, rc);
-	if (rc)
-		goto out;
-
-	if (zpci_use_mio(zdev)) {
+	if (!rc && zpci_use_mio(zdev)) {
 		rc = clp_set_pci_fn(zdev, nr_dma_as, CLP_SET_ENABLE_MIO);
 		zpci_dbg(3, "ena mio fid:%x, fh:%x, rc:%d\n",
 				zdev->fid, zdev->fh, rc);
 		if (rc)
 			clp_disable_fh(zdev);
 	}
-out:
 	return rc;
 }
 
arch/x86/crypto/aesni-intel_glue.c +5 -0
index 2144e54a6c89..388643ca2177 100644
@@ -849,6 +849,8 @@ static int xts_crypt(struct skcipher_request *req, bool encrypt)
 		return -EINVAL;
 
 	err = skcipher_walk_virt(&walk, req, false);
+	if (err)
+		return err;
 
 	if (unlikely(tail > 0 && walk.nbytes < walk.total)) {
 		int blocks = DIV_ROUND_UP(req->cryptlen, AES_BLOCK_SIZE) - 2;
@@ -862,7 +864,10 @@ static int xts_crypt(struct skcipher_request *req, bool encrypt)
 		skcipher_request_set_crypt(&subreq, req->src, req->dst,
 					   blocks * AES_BLOCK_SIZE, req->iv);
 		req = &subreq;
+
 		err = skcipher_walk_virt(&walk, req, false);
+		if (err)
+			return err;
 	} else {
 		tail = 0;
 	}
arch/x86/events/intel/uncore_snbep.c +28 -12
index c682b09b18fa..482a9931d1e6 100644
@@ -3838,26 +3838,32 @@ pmu_iio_set_mapping(struct intel_uncore_type *type, struct attribute_group *ag)
 	return ret;
 }
 
-static int skx_iio_set_mapping(struct intel_uncore_type *type)
-{
-	return pmu_iio_set_mapping(type, &skx_iio_mapping_group);
-}
-
-static void skx_iio_cleanup_mapping(struct intel_uncore_type *type)
+static void
+pmu_iio_cleanup_mapping(struct intel_uncore_type *type, struct attribute_group *ag)
 {
-	struct attribute **attr = skx_iio_mapping_group.attrs;
+	struct attribute **attr = ag->attrs;
 
 	if (!attr)
 		return;
 
 	for (; *attr; attr++)
 		kfree((*attr)->name);
-	kfree(attr_to_ext_attr(*skx_iio_mapping_group.attrs));
-	kfree(skx_iio_mapping_group.attrs);
-	skx_iio_mapping_group.attrs = NULL;
+	kfree(attr_to_ext_attr(*ag->attrs));
+	kfree(ag->attrs);
+	ag->attrs = NULL;
 	kfree(type->topology);
 }
 
+static int skx_iio_set_mapping(struct intel_uncore_type *type)
+{
+	return pmu_iio_set_mapping(type, &skx_iio_mapping_group);
+}
+
+static void skx_iio_cleanup_mapping(struct intel_uncore_type *type)
+{
+	pmu_iio_cleanup_mapping(type, &skx_iio_mapping_group);
+}
+
 static struct intel_uncore_type skx_uncore_iio = {
 	.name			= "iio",
 	.num_counters		= 4,
@@ -4501,6 +4507,11 @@ static int snr_iio_set_mapping(struct intel_uncore_type *type)
 	return pmu_iio_set_mapping(type, &snr_iio_mapping_group);
 }
 
+static void snr_iio_cleanup_mapping(struct intel_uncore_type *type)
+{
+	pmu_iio_cleanup_mapping(type, &snr_iio_mapping_group);
+}
+
 static struct intel_uncore_type snr_uncore_iio = {
 	.name			= "iio",
 	.num_counters		= 4,
@@ -4517,7 +4528,7 @@ static struct intel_uncore_type snr_uncore_iio = {
 	.attr_update		= snr_iio_attr_update,
 	.get_topology		= snr_iio_get_topology,
 	.set_mapping		= snr_iio_set_mapping,
-	.cleanup_mapping	= skx_iio_cleanup_mapping,
+	.cleanup_mapping	= snr_iio_cleanup_mapping,
 };
 
 static struct intel_uncore_type snr_uncore_irp = {
@@ -5092,6 +5103,11 @@ static int icx_iio_set_mapping(struct intel_uncore_type *type)
 	return pmu_iio_set_mapping(type, &icx_iio_mapping_group);
 }
 
+static void icx_iio_cleanup_mapping(struct intel_uncore_type *type)
+{
+	pmu_iio_cleanup_mapping(type, &icx_iio_mapping_group);
+}
+
 static struct intel_uncore_type icx_uncore_iio = {
 	.name			= "iio",
 	.num_counters		= 4,
@@ -5109,7 +5125,7 @@ static struct intel_uncore_type icx_uncore_iio = {
 	.attr_update		= icx_iio_attr_update,
 	.get_topology		= icx_iio_get_topology,
 	.set_mapping		= icx_iio_set_mapping,
-	.cleanup_mapping	= skx_iio_cleanup_mapping,
+	.cleanup_mapping	= icx_iio_cleanup_mapping,
 };
 
 static struct intel_uncore_type icx_uncore_irp = {
arch/x86/include/asm/mce.h +1 -0
index 0607ec4f5091..da9321548f6f 100644
@@ -265,6 +265,7 @@ enum mcp_flags {
 	MCP_TIMESTAMP	= BIT(0),	/* log time stamp */
 	MCP_UC		= BIT(1),	/* log uncorrected errors */
 	MCP_DONTLOG	= BIT(2),	/* only clear, don't log */
+	MCP_QUEUE_LOG	= BIT(3),	/* only queue to genpool */
 };
 bool machine_check_poll(enum mcp_flags flags, mce_banks_t *b);
 
arch/x86/kernel/cpu/mce/core.c +8 -3
index 22791aadc085..8cb7816d03b4 100644
@@ -817,7 +817,10 @@ bool machine_check_poll(enum mcp_flags flags, mce_banks_t *b)
 		if (mca_cfg.dont_log_ce && !mce_usable_address(&m))
 			goto clear_it;
 
-		mce_log(&m);
+		if (flags & MCP_QUEUE_LOG)
+			mce_gen_pool_add(&m);
+		else
+			mce_log(&m);
 
 clear_it:
 		/*
@@ -1639,10 +1642,12 @@ static void __mcheck_cpu_init_generic(void)
 		m_fl = MCP_DONTLOG;
 
 	/*
-	 * Log the machine checks left over from the previous reset.
+	 * Log the machine checks left over from the previous reset. Log them
+	 * only, do not start processing them. That will happen in mcheck_late_init()
+	 * when all consumers have been registered on the notifier chain.
 	 */
 	bitmap_fill(all_banks, MAX_NR_BANKS);
-	machine_check_poll(MCP_UC | m_fl, &all_banks);
+	machine_check_poll(MCP_UC | MCP_QUEUE_LOG | m_fl, &all_banks);
 
 	cr4_set_bits(X86_CR4_MCE);
 
arch/x86/kvm/mmu/mmu.c +5 -14
index 47b765270239..c268fb59f779 100644
@@ -323,12 +323,6 @@ static bool check_mmio_spte(struct kvm_vcpu *vcpu, u64 spte)
 static gpa_t translate_gpa(struct kvm_vcpu *vcpu, gpa_t gpa, u32 access,
                                   struct x86_exception *exception)
 {
-	/* Check if guest physical address doesn't exceed guest maximum */
-	if (kvm_vcpu_is_illegal_gpa(vcpu, gpa)) {
-		exception->error_code |= PFERR_RSVD_MASK;
-		return UNMAPPED_GVA;
-	}
-
         return gpa;
 }
 
@@ -2852,6 +2846,7 @@ int kvm_mmu_max_mapping_level(struct kvm *kvm,
 			      kvm_pfn_t pfn, int max_level)
 {
 	struct kvm_lpage_info *linfo;
+	int host_level;
 
 	max_level = min(max_level, max_huge_page_level);
 	for ( ; max_level > PG_LEVEL_4K; max_level--) {
@@ -2863,7 +2858,8 @@ int kvm_mmu_max_mapping_level(struct kvm *kvm,
 	if (max_level == PG_LEVEL_4K)
 		return PG_LEVEL_4K;
 
-	return host_pfn_mapping_level(kvm, gfn, pfn, slot);
+	host_level = host_pfn_mapping_level(kvm, gfn, pfn, slot);
+	return min(host_level, max_level);
 }
 
 int kvm_mmu_hugepage_adjust(struct kvm_vcpu *vcpu, gfn_t gfn,
@@ -2887,17 +2883,12 @@ int kvm_mmu_hugepage_adjust(struct kvm_vcpu *vcpu, gfn_t gfn,
 	if (!slot)
 		return PG_LEVEL_4K;
 
-	level = kvm_mmu_max_mapping_level(vcpu->kvm, slot, gfn, pfn, max_level);
-	if (level == PG_LEVEL_4K)
-		return level;
-
-	*req_level = level = min(level, max_level);
-
 	/*
 	 * Enforce the iTLB multihit workaround after capturing the requested
 	 * level, which will be used to do precise, accurate accounting.
 	 */
-	if (huge_page_disallowed)
+	*req_level = level = kvm_mmu_max_mapping_level(vcpu->kvm, slot, gfn, pfn, max_level);
+	if (level == PG_LEVEL_4K || huge_page_disallowed)
 		return PG_LEVEL_4K;
 
 	/*
arch/x86/kvm/mmu/tdp_mmu.c +13 -7
index d80cb122b5f3..0a1fa42d03aa 100644
@@ -412,6 +412,7 @@ static void __handle_changed_spte(struct kvm *kvm, int as_id, gfn_t gfn,
 	bool was_leaf = was_present && is_last_spte(old_spte, level);
 	bool is_leaf = is_present && is_last_spte(new_spte, level);
 	bool pfn_changed = spte_to_pfn(old_spte) != spte_to_pfn(new_spte);
+	bool was_large, is_large;
 
 	WARN_ON(level > PT64_ROOT_MAX_LEVEL);
 	WARN_ON(level < PG_LEVEL_4K);
@@ -445,13 +446,6 @@ static void __handle_changed_spte(struct kvm *kvm, int as_id, gfn_t gfn,
 
 	trace_kvm_tdp_mmu_spte_changed(as_id, gfn, level, old_spte, new_spte);
 
-	if (is_large_pte(old_spte) != is_large_pte(new_spte)) {
-		if (is_large_pte(old_spte))
-			atomic64_sub(1, (atomic64_t*)&kvm->stat.lpages);
-		else
-			atomic64_add(1, (atomic64_t*)&kvm->stat.lpages);
-	}
-
 	/*
 	 * The only times a SPTE should be changed from a non-present to
 	 * non-present state is when an MMIO entry is installed/modified/
@@ -477,6 +471,18 @@ static void __handle_changed_spte(struct kvm *kvm, int as_id, gfn_t gfn,
 		return;
 	}
 
+	/*
+	 * Update large page stats if a large page is being zapped, created, or
+	 * is replacing an existing shadow page.
+	 */
+	was_large = was_leaf && is_large_pte(old_spte);
+	is_large = is_leaf && is_large_pte(new_spte);
+	if (was_large != is_large) {
+		if (was_large)
+			atomic64_sub(1, (atomic64_t *)&kvm->stat.lpages);
+		else
+			atomic64_add(1, (atomic64_t *)&kvm->stat.lpages);
+	}
 
 	if (was_leaf && is_dirty_spte(old_spte) &&
 	    (!is_present || !is_dirty_spte(new_spte) || pfn_changed))
arch/x86/kvm/vmx/nested.c +3 -4
index b3f77d18eb5a..ac1803dac435 100644
@@ -2223,12 +2223,11 @@ static void prepare_vmcs02_early(struct vcpu_vmx *vmx, struct vmcs12 *vmcs12)
 			 ~PIN_BASED_VMX_PREEMPTION_TIMER);
 
 	/* Posted interrupts setting is only taken from vmcs12.  */
-	if (nested_cpu_has_posted_intr(vmcs12)) {
+	vmx->nested.pi_pending = false;
+	if (nested_cpu_has_posted_intr(vmcs12))
 		vmx->nested.posted_intr_nv = vmcs12->posted_intr_nv;
-		vmx->nested.pi_pending = false;
-	} else {
+	else
 		exec_control &= ~PIN_BASED_POSTED_INTR;
-	}
 	pin_controls_set(vmx, exec_control);
 
 	/*
arch/x86/kvm/vmx/vmx.c +3 -0
index 927a552393b9..256f8cab4b8b 100644
@@ -6368,6 +6368,9 @@ static void vmx_handle_exit_irqoff(struct kvm_vcpu *vcpu)
 {
 	struct vcpu_vmx *vmx = to_vmx(vcpu);
 
+	if (vmx->emulation_required)
+		return;
+
 	if (vmx->exit_reason.basic == EXIT_REASON_EXTERNAL_INTERRUPT)
 		handle_external_interrupt_irqoff(vcpu);
 	else if (vmx->exit_reason.basic == EXIT_REASON_EXCEPTION_NMI)
arch/x86/kvm/x86.c +4 -0
index e5d5c5ed7dd4..7ec7c2dce506 100644
@@ -3316,6 +3316,10 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
 			if (!msr_info->host_initiated) {
 				s64 adj = data - vcpu->arch.ia32_tsc_adjust_msr;
 				adjust_tsc_offset_guest(vcpu, adj);
+				/* Before back to guest, tsc_timestamp must be adjusted
+				 * as well, otherwise guest's percpu pvclock time could jump.
+				 */
+				kvm_make_request(KVM_REQ_CLOCK_UPDATE, vcpu);
 			}
 			vcpu->arch.ia32_tsc_adjust_msr = data;
 		}
block/bfq-iosched.c +3 -0
index 727955918563..673a634eadd9 100644
@@ -2361,6 +2361,9 @@ static int bfq_request_merge(struct request_queue *q, struct request **req,
 	__rq = bfq_find_rq_fmerge(bfqd, bio, q);
 	if (__rq && elv_bio_merge_ok(__rq, bio)) {
 		*req = __rq;
+
+		if (blk_discard_mergable(__rq))
+			return ELEVATOR_DISCARD_MERGE;
 		return ELEVATOR_FRONT_MERGE;
 	}
 
block/bio.c +13 -2
index 1fab762e079b..d95e3456ba0c 100644
@@ -979,6 +979,14 @@ static int bio_iov_bvec_set_append(struct bio *bio, struct iov_iter *iter)
 	return 0;
 }
 
+static void bio_put_pages(struct page **pages, size_t size, size_t off)
+{
+	size_t i, nr = DIV_ROUND_UP(size + (off & ~PAGE_MASK), PAGE_SIZE);
+
+	for (i = 0; i < nr; i++)
+		put_page(pages[i]);
+}
+
 #define PAGE_PTRS_PER_BVEC     (sizeof(struct bio_vec) / sizeof(struct page *))
 
 /**
@@ -1023,8 +1031,10 @@ static int __bio_iov_iter_get_pages(struct bio *bio, struct iov_iter *iter)
 			if (same_page)
 				put_page(page);
 		} else {
-			if (WARN_ON_ONCE(bio_full(bio, len)))
-                                return -EINVAL;
+			if (WARN_ON_ONCE(bio_full(bio, len))) {
+				bio_put_pages(pages + i, left, offset);
+				return -EINVAL;
+			}
 			__bio_add_page(bio, page, len, offset);
 		}
 		offset = 0;
@@ -1069,6 +1079,7 @@ static int __bio_iov_append_get_pages(struct bio *bio, struct iov_iter *iter)
 		len = min_t(size_t, PAGE_SIZE - offset, left);
 		if (bio_add_hw_page(q, bio, page, len, offset,
 				max_append_sectors, &same_page) != len) {
+			bio_put_pages(pages + i, left, offset);
 			ret = -EINVAL;
 			break;
 		}
block/blk-crypto.c +1 -1
index c5bdaafffa29..103c2e2d50d6 100644
@@ -332,7 +332,7 @@ int blk_crypto_init_key(struct blk_crypto_key *blk_key, const u8 *raw_key,
 	if (mode->keysize == 0)
 		return -EINVAL;
 
-	if (dun_bytes == 0 || dun_bytes > BLK_CRYPTO_MAX_IV_SIZE)
+	if (dun_bytes == 0 || dun_bytes > mode->ivsize)
 		return -EINVAL;
 
 	if (!is_power_of_2(data_unit_size))
block/blk-merge.c +2 -16
index a11b3b53717e..eeba8422ae82 100644
@@ -348,6 +348,8 @@ void __blk_queue_split(struct bio **bio, unsigned int *nr_segs)
 		trace_block_split(split, (*bio)->bi_iter.bi_sector);
 		submit_bio_noacct(*bio);
 		*bio = split;
+
+		blk_throtl_charge_bio_split(*bio);
 	}
 }
 
@@ -705,22 +707,6 @@ static void blk_account_io_merge_request(struct request *req)
 	}
 }
 
-/*
- * Two cases of handling DISCARD merge:
- * If max_discard_segments > 1, the driver takes every bio
- * as a range and send them to controller together. The ranges
- * needn't to be contiguous.
- * Otherwise, the bios/requests will be handled as same as
- * others which should be contiguous.
- */
-static inline bool blk_discard_mergable(struct request *req)
-{
-	if (req_op(req) == REQ_OP_DISCARD &&
-	    queue_max_discard_segments(req->q) > 1)
-		return true;
-	return false;
-}
-
 static enum elv_merge blk_try_req_merge(struct request *req,
 					struct request *next)
 {
block/blk-throttle.c +32 -0
index b1b22d863bdf..55c49015e533 100644
@@ -178,6 +178,9 @@ struct throtl_grp {
 	unsigned int bad_bio_cnt; /* bios exceeding latency threshold */
 	unsigned long bio_cnt_reset_time;
 
+	atomic_t io_split_cnt[2];
+	atomic_t last_io_split_cnt[2];
+
 	struct blkg_rwstat stat_bytes;
 	struct blkg_rwstat stat_ios;
 };
@@ -777,6 +780,8 @@ static inline void throtl_start_new_slice_with_credit(struct throtl_grp *tg,
 	tg->bytes_disp[rw] = 0;
 	tg->io_disp[rw] = 0;
 
+	atomic_set(&tg->io_split_cnt[rw], 0);
+
 	/*
 	 * Previous slice has expired. We must have trimmed it after last
 	 * bio dispatch. That means since start of last slice, we never used
@@ -799,6 +804,9 @@ static inline void throtl_start_new_slice(struct throtl_grp *tg, bool rw)
 	tg->io_disp[rw] = 0;
 	tg->slice_start[rw] = jiffies;
 	tg->slice_end[rw] = jiffies + tg->td->throtl_slice;
+
+	atomic_set(&tg->io_split_cnt[rw], 0);
+
 	throtl_log(&tg->service_queue,
 		   "[%c] new slice start=%lu end=%lu jiffies=%lu",
 		   rw == READ ? 'R' : 'W', tg->slice_start[rw],
@@ -1031,6 +1039,9 @@ static bool tg_may_dispatch(struct throtl_grp *tg, struct bio *bio,
 				jiffies + tg->td->throtl_slice);
 	}
 
+	if (iops_limit != UINT_MAX)
+		tg->io_disp[rw] += atomic_xchg(&tg->io_split_cnt[rw], 0);
+
 	if (tg_with_in_bps_limit(tg, bio, bps_limit, &bps_wait) &&
 	    tg_with_in_iops_limit(tg, bio, iops_limit, &iops_wait)) {
 		if (wait)
@@ -2052,12 +2063,14 @@ static void throtl_downgrade_check(struct throtl_grp *tg)
 	}
 
 	if (tg->iops[READ][LIMIT_LOW]) {
+		tg->last_io_disp[READ] += atomic_xchg(&tg->last_io_split_cnt[READ], 0);
 		iops = tg->last_io_disp[READ] * HZ / elapsed_time;
 		if (iops >= tg->iops[READ][LIMIT_LOW])
 			tg->last_low_overflow_time[READ] = now;
 	}
 
 	if (tg->iops[WRITE][LIMIT_LOW]) {
+		tg->last_io_disp[WRITE] += atomic_xchg(&tg->last_io_split_cnt[WRITE], 0);
 		iops = tg->last_io_disp[WRITE] * HZ / elapsed_time;
 		if (iops >= tg->iops[WRITE][LIMIT_LOW])
 			tg->last_low_overflow_time[WRITE] = now;
@@ -2176,6 +2189,25 @@ static inline void throtl_update_latency_buckets(struct throtl_data *td)
 }
 #endif
 
+void blk_throtl_charge_bio_split(struct bio *bio)
+{
+	struct blkcg_gq *blkg = bio->bi_blkg;
+	struct throtl_grp *parent = blkg_to_tg(blkg);
+	struct throtl_service_queue *parent_sq;
+	bool rw = bio_data_dir(bio);
+
+	do {
+		if (!parent->has_rules[rw])
+			break;
+
+		atomic_inc(&parent->io_split_cnt[rw]);
+		atomic_inc(&parent->last_io_split_cnt[rw]);
+
+		parent_sq = parent->service_queue.parent_sq;
+		parent = sq_to_tg(parent_sq);
+	} while (parent);
+}
+
 bool blk_throtl_bio(struct bio *bio)
 {
 	struct request_queue *q = bio->bi_bdev->bd_disk->queue;
block/blk.h +2 -0
index cb01429c162c..f10cc9b2c27f 100644
@@ -289,11 +289,13 @@ int create_task_io_context(struct task_struct *task, gfp_t gfp_mask, int node);
 extern int blk_throtl_init(struct request_queue *q);
 extern void blk_throtl_exit(struct request_queue *q);
 extern void blk_throtl_register_queue(struct request_queue *q);
+extern void blk_throtl_charge_bio_split(struct bio *bio);
 bool blk_throtl_bio(struct bio *bio);
 #else /* CONFIG_BLK_DEV_THROTTLING */
 static inline int blk_throtl_init(struct request_queue *q) { return 0; }
 static inline void blk_throtl_exit(struct request_queue *q) { }
 static inline void blk_throtl_register_queue(struct request_queue *q) { }
+static inline void blk_throtl_charge_bio_split(struct bio *bio) { }
 static inline bool blk_throtl_bio(struct bio *bio) { return false; }
 #endif /* CONFIG_BLK_DEV_THROTTLING */
 #ifdef CONFIG_BLK_DEV_THROTTLING_LOW
block/elevator.c +3 -0
index 52ada14cfe45..a5fe2615ec0f 100644
@@ -336,6 +336,9 @@ enum elv_merge elv_merge(struct request_queue *q, struct request **req,
 	__rq = elv_rqhash_find(q, bio->bi_iter.bi_sector);
 	if (__rq && elv_bio_merge_ok(__rq, bio)) {
 		*req = __rq;
+
+		if (blk_discard_mergable(__rq))
+			return ELEVATOR_DISCARD_MERGE;
 		return ELEVATOR_BACK_MERGE;
 	}
 
block/mq-deadline.c +2 -0
index 36920670dccc..3c3693c34f06 100644
@@ -629,6 +629,8 @@ static int dd_request_merge(struct request_queue *q, struct request **rq,
 
 		if (elv_bio_merge_ok(__rq, bio)) {
 			*rq = __rq;
+			if (blk_discard_mergable(__rq))
+				return ELEVATOR_DISCARD_MERGE;
 			return ELEVATOR_FRONT_MERGE;
 		}
 	}
certs/Makefile +8 -0
index 359239a0ee9e..f9344e52ecda 100644
@@ -57,11 +57,19 @@ endif
 redirect_openssl	= 2>&1
 quiet_redirect_openssl	= 2>&1
 silent_redirect_openssl = 2>/dev/null
+openssl_available       = $(shell openssl help 2>/dev/null && echo yes)
 
 # We do it this way rather than having a boolean option for enabling an
 # external private key, because 'make randconfig' might enable such a
 # boolean option and we unfortunately can't make it depend on !RANDCONFIG.
 ifeq ($(CONFIG_MODULE_SIG_KEY),"certs/signing_key.pem")
+
+ifeq ($(openssl_available),yes)
+X509TEXT=$(shell openssl x509 -in "certs/signing_key.pem" -text 2>/dev/null)
+
+$(if $(findstring rsaEncryption,$(X509TEXT)),,$(shell rm -f "certs/signing_key.pem"))
+endif
+
 $(obj)/signing_key.pem: $(obj)/x509.genkey
 	@$(kecho) "###"
 	@$(kecho) "### Now generating an X.509 key pair to be used for signing modules."
crypto/ecc.h +3 -2
index a006132646a4..1350e8eb6ac2 100644
@@ -27,6 +27,7 @@
 #define _CRYPTO_ECC_H
 
 #include <crypto/ecc_curve.h>
+#include <asm/unaligned.h>
 
 /* One digit is u64 qword. */
 #define ECC_CURVE_NIST_P192_DIGITS  3
@@ -46,13 +47,13 @@
  * @out:      Output array
  * @ndigits:  Number of digits to copy
  */
-static inline void ecc_swap_digits(const u64 *in, u64 *out, unsigned int ndigits)
+static inline void ecc_swap_digits(const void *in, u64 *out, unsigned int ndigits)
 {
 	const __be64 *src = (__force __be64 *)in;
 	int i;
 
 	for (i = 0; i < ndigits; i++)
-		out[i] = be64_to_cpu(src[ndigits - 1 - i]);
+		out[i] = get_unaligned_be64(&src[ndigits - 1 - i]);
 }
 
 /**
crypto/tcrypt.c +19 -10
index f8d06da78e4f..6863e57b088d 100644
@@ -290,6 +290,11 @@ static void test_mb_aead_speed(const char *algo, int enc, int secs,
 	}
 
 	ret = crypto_aead_setauthsize(tfm, authsize);
+	if (ret) {
+		pr_err("alg: aead: Failed to setauthsize for %s: %d\n", algo,
+		       ret);
+		goto out_free_tfm;
+	}
 
 	for (i = 0; i < num_mb; ++i)
 		if (testmgr_alloc_buf(data[i].xbuf)) {
@@ -315,7 +320,7 @@ static void test_mb_aead_speed(const char *algo, int enc, int secs,
 	for (i = 0; i < num_mb; ++i) {
 		data[i].req = aead_request_alloc(tfm, GFP_KERNEL);
 		if (!data[i].req) {
-			pr_err("alg: skcipher: Failed to allocate request for %s\n",
+			pr_err("alg: aead: Failed to allocate request for %s\n",
 			       algo);
 			while (i--)
 				aead_request_free(data[i].req);
@@ -567,13 +572,19 @@ static void test_aead_speed(const char *algo, int enc, unsigned int secs,
 	sgout = &sg[9];
 
 	tfm = crypto_alloc_aead(algo, 0, 0);
-
 	if (IS_ERR(tfm)) {
 		pr_err("alg: aead: Failed to load transform for %s: %ld\n", algo,
 		       PTR_ERR(tfm));
 		goto out_notfm;
 	}
 
+	ret = crypto_aead_setauthsize(tfm, authsize);
+	if (ret) {
+		pr_err("alg: aead: Failed to setauthsize for %s: %d\n", algo,
+		       ret);
+		goto out_noreq;
+	}
+
 	crypto_init_wait(&wait);
 	printk(KERN_INFO "\ntesting speed of %s (%s) %s\n", algo,
 			get_driver_name(crypto_aead, tfm), e);
@@ -611,8 +622,13 @@ static void test_aead_speed(const char *algo, int enc, unsigned int secs,
 					break;
 				}
 			}
+
 			ret = crypto_aead_setkey(tfm, key, *keysize);
-			ret = crypto_aead_setauthsize(tfm, authsize);
+			if (ret) {
+				pr_err("setkey() failed flags=%x: %d\n",
+					crypto_aead_get_flags(tfm), ret);
+				goto out;
+			}
 
 			iv_len = crypto_aead_ivsize(tfm);
 			if (iv_len)
@@ -622,15 +638,8 @@ static void test_aead_speed(const char *algo, int enc, unsigned int secs,
 			printk(KERN_INFO "test %u (%d bit key, %d byte blocks): ",
 					i, *keysize * 8, bs);
 
-
 			memset(tvmem[0], 0xff, PAGE_SIZE);
 
-			if (ret) {
-				pr_err("setkey() failed flags=%x\n",
-						crypto_aead_get_flags(tfm));
-				goto out;
-			}
-
 			sg_init_aead(sg, xbuf, bs + (enc ? 0 : authsize),
 				     assoc, aad_size);
 
drivers/acpi/prmt.c +9 -1
index 1f6007abcf18..89c22bc55057 100644
@@ -288,10 +288,18 @@ static acpi_status acpi_platformrt_space_handler(u32 function,
 
 void __init init_prmt(void)
 {
+	struct acpi_table_header *tbl;
 	acpi_status status;
-	int mc = acpi_table_parse_entries(ACPI_SIG_PRMT, sizeof(struct acpi_table_prmt) +
+	int mc;
+
+	status = acpi_get_table(ACPI_SIG_PRMT, 0, &tbl);
+	if (ACPI_FAILURE(status))
+		return;
+
+	mc = acpi_table_parse_entries(ACPI_SIG_PRMT, sizeof(struct acpi_table_prmt) +
 					  sizeof (struct acpi_table_prmt_header),
 					  0, acpi_parse_prmt, 0);
+	acpi_put_table(tbl);
 	/*
 	 * Return immediately if PRMT table is not present or no PRM module found.
 	 */
drivers/ata/libata-core.c +1 -1
index 61c762961ca8..44f434acfce0 100644
@@ -5573,7 +5573,7 @@ int ata_host_start(struct ata_host *host)
 			have_stop = 1;
 	}
 
-	if (host->ops->host_stop)
+	if (host->ops && host->ops->host_stop)
 		have_stop = 1;
 
 	if (have_stop) {
drivers/auxdisplay/hd44780.c +1 -1
index 2e5e7c993933..8b2a0eb3f32a 100644
@@ -323,8 +323,8 @@ static int hd44780_remove(struct platform_device *pdev)
 {
 	struct charlcd *lcd = platform_get_drvdata(pdev);
 
-	kfree(lcd->drvdata);
 	charlcd_unregister(lcd);
+	kfree(lcd->drvdata);
 
 	kfree(lcd);
 	return 0;
drivers/base/dd.c +10 -6
index 437cd61343b2..68ea1f949daa 100644
@@ -580,7 +580,8 @@ static int really_probe(struct device *dev, struct device_driver *drv)
 			goto probe_failed;
 	}
 
-	if (driver_sysfs_add(dev)) {
+	ret = driver_sysfs_add(dev);
+	if (ret) {
 		pr_err("%s: driver_sysfs_add(%s) failed\n",
 		       __func__, dev_name(dev));
 		goto probe_failed;
@@ -602,15 +603,18 @@ static int really_probe(struct device *dev, struct device_driver *drv)
 		goto probe_failed;
 	}
 
-	if (device_add_groups(dev, drv->dev_groups)) {
+	ret = device_add_groups(dev, drv->dev_groups);
+	if (ret) {
 		dev_err(dev, "device_add_groups() failed\n");
 		goto dev_groups_failed;
 	}
 
-	if (dev_has_sync_state(dev) &&
-	    device_create_file(dev, &dev_attr_state_synced)) {
-		dev_err(dev, "state_synced sysfs add failed\n");
-		goto dev_sysfs_state_synced_failed;
+	if (dev_has_sync_state(dev)) {
+		ret = device_create_file(dev, &dev_attr_state_synced);
+		if (ret) {
+			dev_err(dev, "state_synced sysfs add failed\n");
+			goto dev_sysfs_state_synced_failed;
+		}
 	}
 
 	if (test_remove) {
drivers/base/firmware_loader/main.c +8 -12
index 68c549d71230..bdbedc6660a8 100644
@@ -165,7 +165,7 @@ static inline int fw_state_wait(struct fw_priv *fw_priv)
 	return __fw_state_wait_common(fw_priv, MAX_SCHEDULE_TIMEOUT);
 }
 
-static int fw_cache_piggyback_on_request(const char *name);
+static void fw_cache_piggyback_on_request(struct fw_priv *fw_priv);
 
 static struct fw_priv *__allocate_fw_priv(const char *fw_name,
 					  struct firmware_cache *fwc,
@@ -707,10 +707,8 @@ int assign_fw(struct firmware *fw, struct device *device)
 	 * on request firmware.
 	 */
 	if (!(fw_priv->opt_flags & FW_OPT_NOCACHE) &&
-	    fw_priv->fwc->state == FW_LOADER_START_CACHE) {
-		if (fw_cache_piggyback_on_request(fw_priv->fw_name))
-			kref_get(&fw_priv->ref);
-	}
+	    fw_priv->fwc->state == FW_LOADER_START_CACHE)
+		fw_cache_piggyback_on_request(fw_priv);
 
 	/* pass the pages buffer to driver at the last minute */
 	fw_set_page_data(fw_priv, fw);
@@ -1259,11 +1257,11 @@ static int __fw_entry_found(const char *name)
 	return 0;
 }
 
-static int fw_cache_piggyback_on_request(const char *name)
+static void fw_cache_piggyback_on_request(struct fw_priv *fw_priv)
 {
-	struct firmware_cache *fwc = &fw_cache;
+	const char *name = fw_priv->fw_name;
+	struct firmware_cache *fwc = fw_priv->fwc;
 	struct fw_cache_entry *fce;
-	int ret = 0;
 
 	spin_lock(&fwc->name_lock);
 	if (__fw_entry_found(name))
@@ -1271,13 +1269,12 @@ static int fw_cache_piggyback_on_request(const char *name)
 
 	fce = alloc_fw_cache_entry(name);
 	if (fce) {
-		ret = 1;
 		list_add(&fce->list, &fwc->fw_names);
+		kref_get(&fw_priv->ref);
 		pr_debug("%s: fw: %s\n", __func__, name);
 	}
 found:
 	spin_unlock(&fwc->name_lock);
-	return ret;
 }
 
 static void free_fw_cache_entry(struct fw_cache_entry *fce)
@@ -1508,9 +1505,8 @@ static inline void unregister_fw_pm_ops(void)
 	unregister_pm_notifier(&fw_cache.pm_notify);
 }
 #else
-static int fw_cache_piggyback_on_request(const char *name)
+static void fw_cache_piggyback_on_request(struct fw_priv *fw_priv)
 {
-	return 0;
 }
 static inline int register_fw_pm_ops(void)
 {
drivers/base/regmap/regmap.c +1 -1
index fe3e38dd5324..2fc826e97591 100644
@@ -1667,7 +1667,7 @@ static int _regmap_raw_write_impl(struct regmap *map, unsigned int reg,
 			if (ret) {
 				dev_err(map->dev,
 					"Error in caching of register: %x ret: %d\n",
-					reg + i, ret);
+					reg + regmap_get_offset(map, i), ret);
 				return ret;
 			}
 		}
drivers/bcma/main.c +3 -3
index 6535614a7dc1..1df2b5801c3b 100644
@@ -236,6 +236,7 @@ EXPORT_SYMBOL(bcma_core_irq);
 
 void bcma_prepare_core(struct bcma_bus *bus, struct bcma_device *core)
 {
+	device_initialize(&core->dev);
 	core->dev.release = bcma_release_core_dev;
 	core->dev.bus = &bcma_bus_type;
 	dev_set_name(&core->dev, "bcma%d:%d", bus->num, core->core_index);
@@ -277,11 +278,10 @@ static void bcma_register_core(struct bcma_bus *bus, struct bcma_device *core)
 {
 	int err;
 
-	err = device_register(&core->dev);
+	err = device_add(&core->dev);
 	if (err) {
 		bcma_err(bus, "Could not register dev for core 0x%03X\n",
 			 core->id.id);
-		put_device(&core->dev);
 		return;
 	}
 	core->dev_registered = true;
@@ -372,7 +372,7 @@ void bcma_unregister_cores(struct bcma_bus *bus)
 	/* Now noone uses internally-handled cores, we can free them */
 	list_for_each_entry_safe(core, tmp, &bus->cores, list) {
 		list_del(&core->list);
-		kfree(core);
+		put_device(&core->dev);
 	}
 }
 
drivers/block/nbd.c +75 -11

165 lines not on this page · raw message

drivers/bluetooth/btusb.c +10 -8
index 0255bf243ce5..bd37d6fb88c2 100644
@@ -2921,10 +2921,11 @@ static int btusb_setup_intel_new(struct hci_dev *hdev)
 	/* Read the Intel supported features and if new exception formats
 	 * supported, need to load the additional DDC config to enable.
 	 */
-	btintel_read_debug_features(hdev, &features);
-
-	/* Set DDC mask for available debug features */
-	btintel_set_debug_features(hdev, &features);
+	err = btintel_read_debug_features(hdev, &features);
+	if (!err) {
+		/* Set DDC mask for available debug features */
+		btintel_set_debug_features(hdev, &features);
+	}
 
 	/* Read the Intel version information after loading the FW  */
 	err = btintel_read_version(hdev, &ver);
@@ -3017,10 +3018,11 @@ static int btusb_setup_intel_newgen(struct hci_dev *hdev)
 	/* Read the Intel supported features and if new exception formats
 	 * supported, need to load the additional DDC config to enable.
 	 */
-	btintel_read_debug_features(hdev, &features);
-
-	/* Set DDC mask for available debug features */
-	btintel_set_debug_features(hdev, &features);
+	err = btintel_read_debug_features(hdev, &features);
+	if (!err) {
+		/* Set DDC mask for available debug features */
+		btintel_set_debug_features(hdev, &features);
+	}
 
 	/* Read the Intel version information after loading the FW  */
 	err = btintel_read_version_tlv(hdev, &version);
drivers/char/tpm/Kconfig +0 -1
index 4308f9ca7a43..d6ba644f6b00 100644
@@ -89,7 +89,6 @@ config TCG_TIS_SYNQUACER
 config TCG_TIS_I2C_CR50
 	tristate "TPM Interface Specification 2.0 Interface (I2C - CR50)"
 	depends on I2C
-	select TCG_CR50
 	help
 	  This is a driver for the Google cr50 I2C TPM interface which is a
 	  custom microcontroller and requires a custom i2c protocol interface
drivers/char/tpm/tpm_ibmvtpm.c +15 -11
index 903604769de9..3af4c07a9342 100644
@@ -106,17 +106,12 @@ static int tpm_ibmvtpm_recv(struct tpm_chip *chip, u8 *buf, size_t count)
 {
 	struct ibmvtpm_dev *ibmvtpm = dev_get_drvdata(&chip->dev);
 	u16 len;
-	int sig;
 
 	if (!ibmvtpm->rtce_buf) {
 		dev_err(ibmvtpm->dev, "ibmvtpm device is not ready\n");
 		return 0;
 	}
 
-	sig = wait_event_interruptible(ibmvtpm->wq, !ibmvtpm->tpm_processing_cmd);
-	if (sig)
-		return -EINTR;
-
 	len = ibmvtpm->res_len;
 
 	if (count < len) {
@@ -237,7 +232,7 @@ static int tpm_ibmvtpm_send(struct tpm_chip *chip, u8 *buf, size_t count)
 	 * set the processing flag before the Hcall, since we may get the
 	 * result (interrupt) before even being able to check rc.
 	 */
-	ibmvtpm->tpm_processing_cmd = true;
+	ibmvtpm->tpm_processing_cmd = 1;
 
 again:
 	rc = ibmvtpm_send_crq(ibmvtpm->vdev,
@@ -255,7 +250,7 @@ static int tpm_ibmvtpm_send(struct tpm_chip *chip, u8 *buf, size_t count)
 			goto again;
 		}
 		dev_err(ibmvtpm->dev, "tpm_ibmvtpm_send failed rc=%d\n", rc);
-		ibmvtpm->tpm_processing_cmd = false;
+		ibmvtpm->tpm_processing_cmd = 0;
 	}
 
 	spin_unlock(&ibmvtpm->rtce_lock);
@@ -269,7 +264,9 @@ static void tpm_ibmvtpm_cancel(struct tpm_chip *chip)
 
 static u8 tpm_ibmvtpm_status(struct tpm_chip *chip)
 {
-	return 0;
+	struct ibmvtpm_dev *ibmvtpm = dev_get_drvdata(&chip->dev);
+
+	return ibmvtpm->tpm_processing_cmd;
 }
 
 /**
@@ -457,7 +454,7 @@ static const struct tpm_class_ops tpm_ibmvtpm = {
 	.send = tpm_ibmvtpm_send,
 	.cancel = tpm_ibmvtpm_cancel,
 	.status = tpm_ibmvtpm_status,
-	.req_complete_mask = 0,
+	.req_complete_mask = 1,
 	.req_complete_val = 0,
 	.req_canceled = tpm_ibmvtpm_req_canceled,
 };
@@ -550,7 +547,7 @@ static void ibmvtpm_crq_process(struct ibmvtpm_crq *crq,
 		case VTPM_TPM_COMMAND_RES:
 			/* len of the data in rtce buffer */
 			ibmvtpm->res_len = be16_to_cpu(crq->len);
-			ibmvtpm->tpm_processing_cmd = false;
+			ibmvtpm->tpm_processing_cmd = 0;
 			wake_up_interruptible(&ibmvtpm->wq);
 			return;
 		default:
@@ -688,8 +685,15 @@ static int tpm_ibmvtpm_probe(struct vio_dev *vio_dev,
 		goto init_irq_cleanup;
 	}
 
-	if (!strcmp(id->compat, "IBM,vtpm20")) {
+
+	if (!strcmp(id->compat, "IBM,vtpm20"))
 		chip->flags |= TPM_CHIP_FLAG_TPM2;
+
+	rc = tpm_get_timeouts(chip);
+	if (rc)
+		goto init_irq_cleanup;
+
+	if (chip->flags & TPM_CHIP_FLAG_TPM2) {
 		rc = tpm2_get_cc_attrs_tbl(chip);
 		if (rc)
 			goto init_irq_cleanup;
drivers/char/tpm/tpm_ibmvtpm.h +1 -1
index b92aa7d3e93e..51198b137461 100644
@@ -41,7 +41,7 @@ struct ibmvtpm_dev {
 	wait_queue_head_t wq;
 	u16 res_len;
 	u32 vtpm_version;
-	bool tpm_processing_cmd;
+	u8 tpm_processing_cmd;
 };
 
 #define CRQ_RES_BUF_SIZE	PAGE_SIZE
drivers/clk/mvebu/kirkwood.c +1 -0
index 47680237d0be..8bc893df4736 100644
@@ -265,6 +265,7 @@ static const char *powersave_parents[] = {
 static const struct clk_muxing_soc_desc kirkwood_mux_desc[] __initconst = {
 	{ "powersave", powersave_parents, ARRAY_SIZE(powersave_parents),
 		11, 1, 0 },
+	{ }
 };
 
 static struct clk *clk_muxing_get_src(
drivers/clocksource/sh_cmt.c +18 -12
index d7ed99f0001f..dd0956ad969c 100644
@@ -579,7 +579,8 @@ static int sh_cmt_start(struct sh_cmt_channel *ch, unsigned long flag)
 	ch->flags |= flag;
 
 	/* setup timeout if no clockevent */
-	if ((flag == FLAG_CLOCKSOURCE) && (!(ch->flags & FLAG_CLOCKEVENT)))
+	if (ch->cmt->num_channels == 1 &&
+	    flag == FLAG_CLOCKSOURCE && (!(ch->flags & FLAG_CLOCKEVENT)))
 		__sh_cmt_set_next(ch, ch->max_match_value);
  out:
 	raw_spin_unlock_irqrestore(&ch->lock, flags);
@@ -621,20 +622,25 @@ static struct sh_cmt_channel *cs_to_sh_cmt(struct clocksource *cs)
 static u64 sh_cmt_clocksource_read(struct clocksource *cs)
 {
 	struct sh_cmt_channel *ch = cs_to_sh_cmt(cs);
-	unsigned long flags;
 	u32 has_wrapped;
-	u64 value;
-	u32 raw;
 
-	raw_spin_lock_irqsave(&ch->lock, flags);
-	value = ch->total_cycles;
-	raw = sh_cmt_get_counter(ch, &has_wrapped);
+	if (ch->cmt->num_channels == 1) {
+		unsigned long flags;
+		u64 value;
+		u32 raw;
 
-	if (unlikely(has_wrapped))
-		raw += ch->match_value + 1;
-	raw_spin_unlock_irqrestore(&ch->lock, flags);
+		raw_spin_lock_irqsave(&ch->lock, flags);
+		value = ch->total_cycles;
+		raw = sh_cmt_get_counter(ch, &has_wrapped);
+
+		if (unlikely(has_wrapped))
+			raw += ch->match_value + 1;
+		raw_spin_unlock_irqrestore(&ch->lock, flags);
+
+		return value + raw;
+	}
 
-	return value + raw;
+	return sh_cmt_get_counter(ch, &has_wrapped);
 }
 
 static int sh_cmt_clocksource_enable(struct clocksource *cs)
@@ -697,7 +703,7 @@ static int sh_cmt_register_clocksource(struct sh_cmt_channel *ch,
 	cs->disable = sh_cmt_clocksource_disable;
 	cs->suspend = sh_cmt_clocksource_suspend;
 	cs->resume = sh_cmt_clocksource_resume;
-	cs->mask = CLOCKSOURCE_MASK(sizeof(u64) * 8);
+	cs->mask = CLOCKSOURCE_MASK(ch->cmt->info->width);
 	cs->flags = CLOCK_SOURCE_IS_CONTINUOUS;
 
 	dev_info(&ch->cmt->pdev->dev, "ch%u: used as clock source\n",
drivers/counter/104-quad-8.c +3 -2
index 09a9a77cce06..81f9642777fb 100644
@@ -715,12 +715,13 @@ static ssize_t quad8_count_ceiling_write(struct counter_device *counter,
 	case 1:
 	case 3:
 		quad8_preset_register_set(priv, count->id, ceiling);
-		break;
+		mutex_unlock(&priv->lock);
+		return len;
 	}
 
 	mutex_unlock(&priv->lock);
 
-	return len;
+	return -EINVAL;
 }
 
 static ssize_t quad8_count_preset_enable_read(struct counter_device *counter,
drivers/crypto/hisilicon/sec2/sec.h +0 -5
index 018415b9840a..d97cf02b1df7 100644
@@ -157,11 +157,6 @@ struct sec_ctx {
 	struct device *dev;
 };
 
-enum sec_endian {
-	SEC_LE = 0,
-	SEC_32BE,
-	SEC_64BE
-};
 
 enum sec_debug_file_index {
 	SEC_CLEAR_ENABLE,
drivers/crypto/hisilicon/sec2/sec_main.c +11 -23
index 490db7bccf61..a0cc46b649a3 100644
@@ -312,31 +312,20 @@ static const struct pci_device_id sec_dev_ids[] = {
 };
 MODULE_DEVICE_TABLE(pci, sec_dev_ids);
 
-static u8 sec_get_endian(struct hisi_qm *qm)
+static void sec_set_endian(struct hisi_qm *qm)
 {
 	u32 reg;
 
-	/*
-	 * As for VF, it is a wrong way to get endian setting by
-	 * reading a register of the engine
-	 */
-	if (qm->pdev->is_virtfn) {
-		dev_err_ratelimited(&qm->pdev->dev,
-				    "cannot access a register in VF!\n");
-		return SEC_LE;
-	}
 	reg = readl_relaxed(qm->io_base + SEC_CONTROL_REG);
-	/* BD little endian mode */
-	if (!(reg & BIT(0)))
-		return SEC_LE;
+	reg &= ~(BIT(1) | BIT(0));
+	if (!IS_ENABLED(CONFIG_64BIT))
+		reg |= BIT(1);
 
-	/* BD 32-bits big endian mode */
-	else if (!(reg & BIT(1)))
-		return SEC_32BE;
 
-	/* BD 64-bits big endian mode */
-	else
-		return SEC_64BE;
+	if (!IS_ENABLED(CONFIG_CPU_LITTLE_ENDIAN))
+		reg |= BIT(0);
+
+	writel_relaxed(reg, qm->io_base + SEC_CONTROL_REG);
 }
 
 static void sec_open_sva_prefetch(struct hisi_qm *qm)
@@ -429,9 +418,7 @@ static int sec_engine_init(struct hisi_qm *qm)
 		       qm->io_base + SEC_BD_ERR_CHK_EN_REG3);
 
 	/* config endian */
-	reg = readl_relaxed(qm->io_base + SEC_CONTROL_REG);
-	reg |= sec_get_endian(qm);
-	writel_relaxed(reg, qm->io_base + SEC_CONTROL_REG);
+	sec_set_endian(qm);
 
 	return 0;
 }
@@ -984,7 +971,8 @@ static int sec_probe(struct pci_dev *pdev, const struct pci_device_id *id)
 	return 0;
 
 err_alg_unregister:
-	hisi_qm_alg_unregister(qm, &sec_devices);
+	if (qm->qp_num >= ctx_q_num)
+		hisi_qm_alg_unregister(qm, &sec_devices);
 err_qm_stop:
 	sec_debugfs_exit(qm);
 	hisi_qm_stop(qm, QM_NORMAL);
drivers/crypto/mxs-dcp.c +35 -10

90 lines not on this page · raw message

drivers/crypto/omap-aes.c +4 -4
index 0dd4c6b157de..9b968ac4ee7b 100644
@@ -1175,9 +1175,9 @@ static int omap_aes_probe(struct platform_device *pdev)
 	spin_lock_init(&dd->lock);
 
 	INIT_LIST_HEAD(&dd->list);
-	spin_lock(&list_lock);
+	spin_lock_bh(&list_lock);
 	list_add_tail(&dd->list, &dev_list);
-	spin_unlock(&list_lock);
+	spin_unlock_bh(&list_lock);
 
 	/* Initialize crypto engine */
 	dd->engine = crypto_engine_alloc_init(dev, 1);
@@ -1264,9 +1264,9 @@ static int omap_aes_remove(struct platform_device *pdev)
 	if (!dd)
 		return -ENODEV;
 
-	spin_lock(&list_lock);
+	spin_lock_bh(&list_lock);
 	list_del(&dd->list);
-	spin_unlock(&list_lock);
+	spin_unlock_bh(&list_lock);
 
 	for (i = dd->pdata->algs_info_size - 1; i >= 0; i--)
 		for (j = dd->pdata->algs_info[i].registered - 1; j >= 0; j--) {
drivers/crypto/omap-des.c +4 -4
index bc8631363d72..be77656864e3 100644
@@ -1033,9 +1033,9 @@ static int omap_des_probe(struct platform_device *pdev)
 
 
 	INIT_LIST_HEAD(&dd->list);
-	spin_lock(&list_lock);
+	spin_lock_bh(&list_lock);
 	list_add_tail(&dd->list, &dev_list);
-	spin_unlock(&list_lock);
+	spin_unlock_bh(&list_lock);
 
 	/* Initialize des crypto engine */
 	dd->engine = crypto_engine_alloc_init(dev, 1);
@@ -1094,9 +1094,9 @@ static int omap_des_remove(struct platform_device *pdev)
 	if (!dd)
 		return -ENODEV;
 
-	spin_lock(&list_lock);
+	spin_lock_bh(&list_lock);
 	list_del(&dd->list);
-	spin_unlock(&list_lock);
+	spin_unlock_bh(&list_lock);
 
 	for (i = dd->pdata->algs_info_size - 1; i >= 0; i--)
 		for (j = dd->pdata->algs_info[i].registered - 1; j >= 0; j--)
drivers/crypto/omap-sham.c +7 -7
index dd53ad9987b0..63beea7cdba5 100644
@@ -1736,7 +1736,7 @@ static void omap_sham_done_task(unsigned long data)
 		if (test_and_clear_bit(FLAGS_OUTPUT_READY, &dd->flags))
 			goto finish;
 	} else if (test_bit(FLAGS_DMA_READY, &dd->flags)) {
-		if (test_and_clear_bit(FLAGS_DMA_ACTIVE, &dd->flags)) {
+		if (test_bit(FLAGS_DMA_ACTIVE, &dd->flags)) {
 			omap_sham_update_dma_stop(dd);
 			if (dd->err) {
 				err = dd->err;
@@ -2144,9 +2144,9 @@ static int omap_sham_probe(struct platform_device *pdev)
 		(rev & dd->pdata->major_mask) >> dd->pdata->major_shift,
 		(rev & dd->pdata->minor_mask) >> dd->pdata->minor_shift);
 
-	spin_lock(&sham.lock);
+	spin_lock_bh(&sham.lock);
 	list_add_tail(&dd->list, &sham.dev_list);
-	spin_unlock(&sham.lock);
+	spin_unlock_bh(&sham.lock);
 
 	dd->engine = crypto_engine_alloc_init(dev, 1);
 	if (!dd->engine) {
@@ -2194,9 +2194,9 @@ static int omap_sham_probe(struct platform_device *pdev)
 err_engine_start:
 	crypto_engine_exit(dd->engine);
 err_engine:
-	spin_lock(&sham.lock);
+	spin_lock_bh(&sham.lock);
 	list_del(&dd->list);
-	spin_unlock(&sham.lock);
+	spin_unlock_bh(&sham.lock);
 err_pm:
 	pm_runtime_disable(dev);
 	if (!dd->polling_mode)
@@ -2215,9 +2215,9 @@ static int omap_sham_remove(struct platform_device *pdev)
 	dd = platform_get_drvdata(pdev);
 	if (!dd)
 		return -ENODEV;
-	spin_lock(&sham.lock);
+	spin_lock_bh(&sham.lock);
 	list_del(&dd->list);
-	spin_unlock(&sham.lock);
+	spin_unlock_bh(&sham.lock);
 	for (i = dd->pdata->algs_info_size - 1; i >= 0; i--)
 		for (j = dd->pdata->algs_info[i].registered - 1; j >= 0; j--) {
 			crypto_unregister_ahash(
drivers/crypto/qat/qat_c3xxxvf/adf_c3xxxvf_hw_data.c +2 -2
index 15f6b9bdfb22..ddf42fb32625 100644
@@ -81,10 +81,10 @@ void adf_init_hw_data_c3xxxiov(struct adf_hw_device_data *hw_data)
 	hw_data->enable_error_correction = adf_vf_void_noop;
 	hw_data->init_admin_comms = adf_vf_int_noop;
 	hw_data->exit_admin_comms = adf_vf_void_noop;
-	hw_data->send_admin_init = adf_vf2pf_init;
+	hw_data->send_admin_init = adf_vf2pf_notify_init;
 	hw_data->init_arb = adf_vf_int_noop;
 	hw_data->exit_arb = adf_vf_void_noop;
-	hw_data->disable_iov = adf_vf2pf_shutdown;
+	hw_data->disable_iov = adf_vf2pf_notify_shutdown;
 	hw_data->get_accel_mask = get_accel_mask;
 	hw_data->get_ae_mask = get_ae_mask;
 	hw_data->get_num_accels = get_num_accels;
drivers/crypto/qat/qat_c62xvf/adf_c62xvf_hw_data.c +2 -2
index d231583428c9..7e202ef92523 100644
@@ -81,10 +81,10 @@ void adf_init_hw_data_c62xiov(struct adf_hw_device_data *hw_data)
 	hw_data->enable_error_correction = adf_vf_void_noop;
 	hw_data->init_admin_comms = adf_vf_int_noop;
 	hw_data->exit_admin_comms = adf_vf_void_noop;
-	hw_data->send_admin_init = adf_vf2pf_init;
+	hw_data->send_admin_init = adf_vf2pf_notify_init;
 	hw_data->init_arb = adf_vf_int_noop;
 	hw_data->exit_arb = adf_vf_void_noop;
-	hw_data->disable_iov = adf_vf2pf_shutdown;
+	hw_data->disable_iov = adf_vf2pf_notify_shutdown;
 	hw_data->get_accel_mask = get_accel_mask;
 	hw_data->get_ae_mask = get_ae_mask;
 	hw_data->get_num_accels = get_num_accels;
drivers/crypto/qat/qat_common/adf_common_drv.h +4 -4
index c61476553728..dd4a811b7e89 100644
@@ -198,8 +198,8 @@ void adf_enable_vf2pf_interrupts(struct adf_accel_dev *accel_dev,
 void adf_enable_pf2vf_interrupts(struct adf_accel_dev *accel_dev);
 void adf_disable_pf2vf_interrupts(struct adf_accel_dev *accel_dev);
 
-int adf_vf2pf_init(struct adf_accel_dev *accel_dev);
-void adf_vf2pf_shutdown(struct adf_accel_dev *accel_dev);
+int adf_vf2pf_notify_init(struct adf_accel_dev *accel_dev);
+void adf_vf2pf_notify_shutdown(struct adf_accel_dev *accel_dev);
 int adf_init_pf_wq(void);
 void adf_exit_pf_wq(void);
 int adf_init_vf_wq(void);
@@ -222,12 +222,12 @@ static inline void adf_disable_pf2vf_interrupts(struct adf_accel_dev *accel_dev)
 {
 }
 
-static inline int adf_vf2pf_init(struct adf_accel_dev *accel_dev)
+static inline int adf_vf2pf_notify_init(struct adf_accel_dev *accel_dev)
 {
 	return 0;
 }
 
-static inline void adf_vf2pf_shutdown(struct adf_accel_dev *accel_dev)
+static inline void adf_vf2pf_notify_shutdown(struct adf_accel_dev *accel_dev)
 {
 }
 
drivers/crypto/qat/qat_common/adf_init.c +3 -2
index 744c40351428..02864985dbb0 100644
@@ -61,6 +61,7 @@ int adf_dev_init(struct adf_accel_dev *accel_dev)
 	struct service_hndl *service;
 	struct list_head *list_itr;
 	struct adf_hw_device_data *hw_data = accel_dev->hw_device;
+	int ret;
 
 	if (!hw_data) {
 		dev_err(&GET_DEV(accel_dev),
@@ -127,9 +128,9 @@ int adf_dev_init(struct adf_accel_dev *accel_dev)
 	}
 
 	hw_data->enable_error_correction(accel_dev);
-	hw_data->enable_vf2pf_comms(accel_dev);
+	ret = hw_data->enable_vf2pf_comms(accel_dev);
 
-	return 0;
+	return ret;
 }
 EXPORT_SYMBOL_GPL(adf_dev_init);
 
drivers/crypto/qat/qat_common/adf_isr.c +4 -3
index e3ad5587be49..daab02011717 100644
@@ -15,6 +15,8 @@
 #include "adf_transport_access_macros.h"
 #include "adf_transport_internal.h"
 
+#define ADF_MAX_NUM_VFS	32
+
 static int adf_enable_msix(struct adf_accel_dev *accel_dev)
 {
 	struct adf_accel_pci *pci_dev_info = &accel_dev->accel_pci_dev;
@@ -72,7 +74,7 @@ static irqreturn_t adf_msix_isr_ae(int irq, void *dev_ptr)
 		struct adf_bar *pmisc =
 			&GET_BARS(accel_dev)[hw_data->get_misc_bar_id(hw_data)];
 		void __iomem *pmisc_bar_addr = pmisc->virt_addr;
-		u32 vf_mask;
+		unsigned long vf_mask;
 
 		/* Get the interrupt sources triggered by VFs */
 		vf_mask = ((ADF_CSR_RD(pmisc_bar_addr, ADF_ERRSOU5) &
@@ -93,8 +95,7 @@ static irqreturn_t adf_msix_isr_ae(int irq, void *dev_ptr)
 			 * unless the VF is malicious and is attempting to
 			 * flood the host OS with VF2PF interrupts.
 			 */
-			for_each_set_bit(i, (const unsigned long *)&vf_mask,
-					 (sizeof(vf_mask) * BITS_PER_BYTE)) {
+			for_each_set_bit(i, &vf_mask, ADF_MAX_NUM_VFS) {
 				vf_info = accel_dev->pf.vf_info + i;
 
 				if (!__ratelimit(&vf_info->vf2pf_ratelimit)) {
drivers/crypto/qat/qat_common/adf_pf2vf_msg.c +2 -1
index a1b77bd7a894..efa4bffb4f60 100644
@@ -186,7 +186,6 @@ int adf_iov_putmsg(struct adf_accel_dev *accel_dev, u32 msg, u8 vf_nr)
 
 	return ret;
 }
-EXPORT_SYMBOL_GPL(adf_iov_putmsg);
 
 void adf_vf2pf_req_hndl(struct adf_accel_vf_info *vf_info)
 {
@@ -316,6 +315,8 @@ static int adf_vf2pf_request_version(struct adf_accel_dev *accel_dev)
 	msg |= ADF_PFVF_COMPATIBILITY_VERSION << ADF_VF2PF_COMPAT_VER_REQ_SHIFT;
 	BUILD_BUG_ON(ADF_PFVF_COMPATIBILITY_VERSION > 255);
 
+	reinit_completion(&accel_dev->vf.iov_msg_completion);
+
 	/* Send request from VF to PF */
 	ret = adf_iov_putmsg(accel_dev, msg, 0);
 	if (ret) {
drivers/crypto/qat/qat_common/adf_vf2pf_msg.c +6 -6
index e85bd62d134a..3e25fac051b2 100644
@@ -5,14 +5,14 @@
 #include "adf_pf2vf_msg.h"
 
 /**
- * adf_vf2pf_init() - send init msg to PF
+ * adf_vf2pf_notify_init() - send init msg to PF
  * @accel_dev:  Pointer to acceleration VF device.
  *
  * Function sends an init message from the VF to a PF
  *
  * Return: 0 on success, error code otherwise.
  */
-int adf_vf2pf_init(struct adf_accel_dev *accel_dev)
+int adf_vf2pf_notify_init(struct adf_accel_dev *accel_dev)
 {
 	u32 msg = (ADF_VF2PF_MSGORIGIN_SYSTEM |
 		(ADF_VF2PF_MSGTYPE_INIT << ADF_VF2PF_MSGTYPE_SHIFT));
@@ -25,17 +25,17 @@ int adf_vf2pf_init(struct adf_accel_dev *accel_dev)
 	set_bit(ADF_STATUS_PF_RUNNING, &accel_dev->status);
 	return 0;
 }
-EXPORT_SYMBOL_GPL(adf_vf2pf_init);
+EXPORT_SYMBOL_GPL(adf_vf2pf_notify_init);
 
 /**
- * adf_vf2pf_shutdown() - send shutdown msg to PF
+ * adf_vf2pf_notify_shutdown() - send shutdown msg to PF
  * @accel_dev:  Pointer to acceleration VF device.
  *
  * Function sends a shutdown message from the VF to a PF
  *
  * Return: void
  */
-void adf_vf2pf_shutdown(struct adf_accel_dev *accel_dev)
+void adf_vf2pf_notify_shutdown(struct adf_accel_dev *accel_dev)
 {
 	u32 msg = (ADF_VF2PF_MSGORIGIN_SYSTEM |
 	    (ADF_VF2PF_MSGTYPE_SHUTDOWN << ADF_VF2PF_MSGTYPE_SHIFT));
@@ -45,4 +45,4 @@ void adf_vf2pf_shutdown(struct adf_accel_dev *accel_dev)
 			dev_err(&GET_DEV(accel_dev),
 				"Failed to send Shutdown event to PF\n");
 }
-EXPORT_SYMBOL_GPL(adf_vf2pf_shutdown);
+EXPORT_SYMBOL_GPL(adf_vf2pf_notify_shutdown);
drivers/crypto/qat/qat_common/adf_vf_isr.c +4 -3
index 888388acb6bd..3e4f64d248f9 100644
@@ -160,6 +160,7 @@ static irqreturn_t adf_isr(int irq, void *privdata)
 	struct adf_bar *pmisc =
 			&GET_BARS(accel_dev)[hw_data->get_misc_bar_id(hw_data)];
 	void __iomem *pmisc_bar_addr = pmisc->virt_addr;
+	bool handled = false;
 	u32 v_int;
 
 	/* Read VF INT source CSR to determine the source of VF interrupt */
@@ -172,7 +173,7 @@ static irqreturn_t adf_isr(int irq, void *privdata)
 
 		/* Schedule tasklet to handle interrupt BH */
 		tasklet_hi_schedule(&accel_dev->vf.pf2vf_bh_tasklet);
-		return IRQ_HANDLED;
+		handled = true;
 	}
 
 	/* Check bundle interrupt */
@@ -184,10 +185,10 @@ static irqreturn_t adf_isr(int irq, void *privdata)
 		csr_ops->write_csr_int_flag_and_col(bank->csr_addr,
 						    bank->bank_number, 0);
 		tasklet_hi_schedule(&bank->resp_handler);
-		return IRQ_HANDLED;
+		handled = true;
 	}
 
-	return IRQ_NONE;
+	return handled ? IRQ_HANDLED : IRQ_NONE;
 }
 
 static int adf_request_msi_irq(struct adf_accel_dev *accel_dev)
drivers/crypto/qat/qat_dh895xccvf/adf_dh895xccvf_hw_data.c +2 -2
index f14fb82ed6df..744734caaf7b 100644
@@ -81,10 +81,10 @@ void adf_init_hw_data_dh895xcciov(struct adf_hw_device_data *hw_data)
 	hw_data->enable_error_correction = adf_vf_void_noop;
 	hw_data->init_admin_comms = adf_vf_int_noop;
 	hw_data->exit_admin_comms = adf_vf_void_noop;
-	hw_data->send_admin_init = adf_vf2pf_init;
+	hw_data->send_admin_init = adf_vf2pf_notify_init;
 	hw_data->init_arb = adf_vf_int_noop;
 	hw_data->exit_arb = adf_vf_void_noop;
-	hw_data->disable_iov = adf_vf2pf_shutdown;
+	hw_data->disable_iov = adf_vf2pf_notify_shutdown;
 	hw_data->get_accel_mask = get_accel_mask;
 	hw_data->get_ae_mask = get_ae_mask;
 	hw_data->get_num_accels = get_num_accels;
drivers/edac/i10nm_base.c +3 -3
index 6ce0ed2ffaaf..b4a024cb8b97 100644
@@ -33,9 +33,9 @@
 #define I10NM_GET_DIMMMTR(m, i, j)	\
 	readl((m)->mbase + ((m)->hbm_mc ? 0x80c : 0x2080c) + \
 	(i) * (m)->chan_mmio_sz + (j) * 4)
-#define I10NM_GET_MCDDRTCFG(m, i, j)	\
+#define I10NM_GET_MCDDRTCFG(m, i)	\
 	readl((m)->mbase + ((m)->hbm_mc ? 0x970 : 0x20970) + \
-	(i) * (m)->chan_mmio_sz + (j) * 4)
+	(i) * (m)->chan_mmio_sz)
 #define I10NM_GET_MCMTR(m, i)		\
 	readl((m)->mbase + ((m)->hbm_mc ? 0xef8 : 0x20ef8) + \
 	(i) * (m)->chan_mmio_sz)
@@ -321,10 +321,10 @@ static int i10nm_get_dimm_config(struct mem_ctl_info *mci,
 
 		ndimms = 0;
 		amap = I10NM_GET_AMAP(imc, i);
+		mcddrtcfg = I10NM_GET_MCDDRTCFG(imc, i);
 		for (j = 0; j < imc->num_dimms; j++) {
 			dimm = edac_get_dimm(mci, i, j, 0);
 			mtr = I10NM_GET_DIMMMTR(imc, i, j);
-			mcddrtcfg = I10NM_GET_MCDDRTCFG(imc, i, j);
 			edac_dbg(1, "dimmmtr 0x%x mcddrtcfg 0x%x (mc%d ch%d dimm%d)\n",
 				 mtr, mcddrtcfg, imc->mc, i, j);
 
drivers/edac/mce_amd.c +3 -0
index 27d56920b469..67dbf4c31271 100644
@@ -1246,6 +1246,9 @@ static int __init mce_amd_init(void)
 	    c->x86_vendor != X86_VENDOR_HYGON)
 		return -ENODEV;
 
+	if (cpu_feature_enabled(X86_FEATURE_HYPERVISOR))
+		return -ENODEV;
+
 	if (boot_cpu_has(X86_FEATURE_SMCA)) {
 		xec_mask = 0x3f;
 		goto out;
drivers/firmware/raspberrypi.c +8 -2
index 250e01680742..4b8978b254f9 100644
@@ -329,12 +329,18 @@ struct rpi_firmware *rpi_firmware_get(struct device_node *firmware_node)
 
 	fw = platform_get_drvdata(pdev);
 	if (!fw)
-		return NULL;
+		goto err_put_device;
 
 	if (!kref_get_unless_zero(&fw->consumers))
-		return NULL;
+		goto err_put_device;
+
+	put_device(&pdev->dev);
 
 	return fw;
+
+err_put_device:
+	put_device(&pdev->dev);
+	return NULL;
 }
 EXPORT_SYMBOL_GPL(rpi_firmware_get);
 
drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c +26 -28

92 lines not on this page · raw message

drivers/gpu/drm/amd/pm/swsmu/smu_cmn.c +240 -46

129 lines not on this page · raw message

drivers/gpu/drm/amd/pm/swsmu/smu_cmn.h +2 -1
index 9add5f16ff56..16993daa2ae0 100644

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

drivers/gpu/drm/bridge/ite-it66121.c +2 -0
index 7149ed40af83..2f2a09adb4bc 100644

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

drivers/gpu/drm/drm_of.c +4 -2
index ca04c34e8251..997b8827fed2 100644

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

drivers/gpu/drm/exynos/exynos_drm_g2d.c +2 -1
index cab4d2c370a7..0ed665501ac4 100644

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

drivers/gpu/drm/gma500/oaktrail_lvds.c +1 -1
index 432bdcc57ac9..a1332878857b 100644

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

drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c +6 -4
index f8a74f6cdc4c..64740ddb983e 100644

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

drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c +38 -30

68 lines not on this page · raw message

drivers/gpu/drm/msm/dp/dp_display.c +19 -12
index 867388a399ad..997fd67f7379 100644

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

drivers/gpu/drm/msm/dsi/dsi.c +3 -3
index 75afc12a7b25..29d11f1cb79b 100644

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

drivers/gpu/drm/msm/msm_drv.c +1 -0
index 9b8fa2ad0d84..729ab68d0203 100644

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

drivers/gpu/drm/mxsfb/mxsfb_drv.c +3 -0
index 6da93551e2e5..c277d3f61a5e 100644

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

drivers/gpu/drm/mxsfb/mxsfb_drv.h +1 -0
index 399d23e91ed1..7c720e226fdf 100644

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

drivers/gpu/drm/mxsfb/mxsfb_kms.c +40 -0
index 300e7bab0f43..54f905ac75c0 100644

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

drivers/gpu/drm/mxsfb/mxsfb_regs.h +9 -0
index 55d28a27f912..694fea13e893 100644

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

drivers/gpu/drm/panfrost/panfrost_device.c +2 -1
index 125ed973feaa..a2a09c51eed7 100644

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

drivers/gpu/drm/rcar-du/rcar_du_drv.c +0 -2
index bfbff90588cb..c22551c2facb 100644

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

drivers/hv/hv_snapshot.c +1 -0
index 2267bd4c3472..6018b9d1b1fb 100644

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

drivers/hwmon/Makefile +0 -1
index d712c61c1f5e..0241ed84b692 100644

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

drivers/hwmon/pmbus/bpa-rs600.c +0 -25
index 2be69fedfa36..be76efe67d83 100644

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

drivers/i2c/busses/i2c-highlander.c +1 -1
index 803dad70e2a7..a2add128d084 100644

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

drivers/i2c/busses/i2c-hix5hd2.c +1 -1
index aa00ba8bcb70..61ae58f57047 100644

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

drivers/i2c/busses/i2c-iop3xx.c +2 -4
index cfecaf18ccbb..4a6ff54d87fe 100644

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

drivers/i2c/busses/i2c-mt65xx.c +1 -1
index 4ca716e09149..477480d1de6b 100644

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

drivers/i2c/busses/i2c-s3c2410.c +1 -1
index 4d82761e1585..b49a1b170bb2 100644

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

drivers/i2c/busses/i2c-synquacer.c +1 -1
index 31be1811d5e6..e4026c5416b1 100644

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

drivers/i2c/busses/i2c-xlp9xx.c +1 -1
index f2241cedf5d3..6d24dc385522 100644

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

drivers/infiniband/hw/mlx5/mr.c +1 -1
index 3f1c5a4f158b..19713cdd7b78 100644

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

drivers/irqchip/irq-apple-aic.c +1 -1
index b8c06bd8659e..6fc145aacaf0 100644

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

drivers/irqchip/irq-gic-v3.c +22 -1
index e0f4debe64e1..3e61210da04b 100644

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

drivers/irqchip/irq-loongson-pch-pic.c +18 -1
index f790ca6d78aa..a4eb8a2181c7 100644

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

drivers/leds/blink/leds-lgm-sso.c +15 -8
index 7eb2f44f16be..aa14f0ebe7a0 100644

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

drivers/leds/flash/leds-rt8515.c +3 -1
index 590bfa180d10..44904fdee3cc 100644

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

drivers/leds/leds-is31fl32xx.c +1 -0
index 3b55af9a8c58..22c092a4394a 100644

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

drivers/leds/leds-lt3593.c +2 -3
index 3bb52d3165d9..d0160fde0f94 100644

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

drivers/leds/trigger/ledtrig-audio.c +29 -8
index f76621e88482..c6b437e6369b 100644

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

drivers/md/bcache/super.c +11 -5
index 185246a0d855..d0f08e946453 100644

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

drivers/md/raid1.c +19 -0
index 3c44c4bb40fc..19598bd38939 100644

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

drivers/md/raid10.c +10 -4
index 07119d7e0fdf..aa2636582841 100644

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

drivers/media/i2c/tda1997x.c +1 -0
index 91e6db847bb5..3a191e257fad 100644

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

drivers/media/platform/atmel/atmel-sama5d2-isc.c +17 -0
index 925aa80a139b..b66f1d174e9d 100644

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

drivers/media/platform/coda/coda-bit.c +13 -5
index 2f42808c43a4..c484c008ab02 100644

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

drivers/media/platform/omap3isp/isp.c +3 -1
index 53025c8c7531..20f59c59ff8a 100644

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

drivers/media/platform/qcom/venus/helpers.c +3 -0
index 1fe6d463dc99..8012f5c7bf34 100644

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

drivers/media/platform/qcom/venus/hfi_msgs.c +1 -1
index d9fde66f6fa8..9a2bdb002edc 100644

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

drivers/media/platform/qcom/venus/venc.c +2 -0
index 8dd49d4f124c..1d62e38065d6 100644

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

drivers/media/platform/rcar-vin/rcar-v4l2.c +2 -2
index cca15a10c0b3..0d141155f0e3 100644

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

drivers/media/platform/rockchip/rga/rga.c +22 -5
index bf3fd71ec3af..6759091b15e0 100644

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

drivers/media/platform/vsp1/vsp1_entity.c +2 -2
index 6f51e5c75543..823c15facd1b 100644

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

drivers/media/spi/cxd2880-spi.c +5 -2
index e5094fff04c5..b91a1e845b97 100644

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

drivers/media/usb/dvb-usb/dvb-usb-i2c.c +7 -2
index 2e07106f4680..bc4b2abdde1a 100644

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

drivers/media/usb/dvb-usb/dvb-usb-init.c +1 -1
index 28e1fd64dd3c..61439c8f33ca 100644

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

drivers/media/usb/dvb-usb/nova-t-usb2.c +4 -2
index e7b290552b66..9c0eb0d40822 100644

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

drivers/media/usb/dvb-usb/vp702x.c +9 -3
index bf54747e2e01..a1d9e4801a2b 100644

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

drivers/media/usb/em28xx/em28xx-input.c +0 -1
index 59529cbf9cd0..0b6d77c3bec8 100644

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

drivers/media/usb/go7007/go7007-driver.c +0 -26
index f1767be9d868..6650eab913d8 100644

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

drivers/media/usb/go7007/go7007-usb.c +1 -1
index dbf0455d5d50..eeb85981e02b 100644

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

drivers/misc/lkdtm/core.c +1 -1
index 9dda87c6b54a..016cb0b150fc 100644

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

drivers/misc/pvpanic/pvpanic.c +2 -0
index 02b807c788c9..bb7aa6368538 100644

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

drivers/mmc/host/dw_mmc.c +1 -0
index c3229d8c7041..33cb70aa02aa 100644

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

drivers/mmc/host/moxart-mmc.c +1 -0
index bde298887579..6c9d38132f74 100644

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

drivers/mmc/host/sdhci.c +1 -0
index aba6e10b8605..fff6c39a343e 100644

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

drivers/net/dsa/b53/b53_common.c +0 -10
index b23e3488695b..bd1417a66cbf 100644

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

drivers/net/dsa/b53/b53_priv.h +0 -2
index 82700a5714c1..9bf8319342b0 100644

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

drivers/net/dsa/bcm_sf2.c +0 -1
index 3b018fcf4412..6ce9ec1283e0 100644

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

drivers/net/dsa/mt7530.c +0 -13
index 05bc46634b36..0cea1572f826 100644

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

drivers/net/dsa/mv88e6xxx/chip.c +0 -18
index 272b0535d946..111a6d5985da 100644

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

drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c +3 -0
index 59253846e885..f26d03735619 100644

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

drivers/net/ethernet/google/gve/gve_adminq.c +4 -2
index 5bb56b454541..f089d33dd48e 100644

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

drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c +20 -3
index eff0a30790dd..472f56b360b8 100644

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

drivers/net/ethernet/intel/ice/ice_main.c +9 -4
index fe2ded775f25..a8bd512d5b45 100644

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

drivers/net/ethernet/intel/ice/ice_ptp.c +54 -1

55 lines not on this page · raw message

drivers/net/ethernet/marvell/octeontx2/af/common.h +0 -2
index 47f5ed006a93..e0b43aad203c 100644

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

drivers/net/ethernet/marvell/octeontx2/af/rvu_cn10k.c +24 -11
index 8d48b64485c6..dbe9149a215e 100644

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

drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c +6 -3
index 4bfbbdf38770..c32195073e8a 100644

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

drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c +12 -10
index 52b255426c22..26a792407c40 100644

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

drivers/net/ethernet/marvell/octeontx2/af/rvu_reg.h +1 -1
index 8b01ef6e2c99..4215841c9f86 100644

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

drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c +15 -1
index 70fcc1fd962f..94dfd64f526f 100644

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

drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h +3 -0
index 8fd58cd07f50..8c602d27108a 100644

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

drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c +1 -0
index 4d9de525802d..fdd27c4fea86 100644

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

drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c +2 -2
index 972b202b9884..32d5c623fdfa 100644

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

drivers/net/ethernet/mellanox/mlx5/core/dev.c +1 -1
index def2156e50ee..20bb37266254 100644

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

drivers/net/ethernet/mellanox/mlx5/core/devlink.c +1 -0
index d791d351b489..be6b75bd10f1 100644

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

drivers/net/ethernet/mellanox/mlx5/core/en/fs.h +0 -6
index 1d5ce07b83f4..43b092f5565a 100644

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

drivers/net/ethernet/mellanox/mlx5/core/en/qos.c +6 -9
index 5efe3278b0f6..1fd8baf19829 100644

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

drivers/net/ethernet/mellanox/mlx5/core/en/qos.h +2 -2
index 5af7991fcd19..757682b7c0e0 100644

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

drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c +2 -2
index 2e846b741280..1c44c6c345f5 100644

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

drivers/net/ethernet/mellanox/mlx5/core/en_fs.c +5 -5
index 0b75fab41ae8..6464ac3f294e 100644

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

drivers/net/ethernet/mellanox/mlx5/core/en_main.c +16 -2
index 24f919ef9b8e..2d53eaf3b924 100644

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

drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +18 -0
index d273758255c3..6eba574c5a36 100644

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

drivers/net/ethernet/mellanox/mlx5/core/esw/indir_table.c +1 -0
index 3da7becc1069..425c91814b34 100644

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

drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c +4 -1
index 3bb71a186004..fc945945ae33 100644

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

drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c +2 -16
index 7d7ed025db0d..620d638e1e8f 100644

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

drivers/net/ethernet/mellanox/mlx5/core/lag.c +1 -0
index 5c043c5cc403..40ef60f562b4 100644

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

drivers/net/ethernet/mellanox/mlx5/core/lag_mp.c +8 -0
index c4bf8b679541..516bfc2bd797 100644

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

drivers/net/ethernet/mellanox/mlx5/core/lag_mp.h +2 -0
index 258ac7b2964e..729c839397a8 100644

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

drivers/net/ethernet/pensando/ionic/ionic_devlink.c +7 -7
index b41301a5b0df..cd520e4c5522 100644

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

drivers/net/ethernet/qualcomm/qca_spi.c +1 -1
index b64c254e00ba..8427fe1b8fd1 100644

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

drivers/net/ethernet/qualcomm/qca_uart.c +1 -1
index bcdeca7b3366..ce3f7ce31adc 100644

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

drivers/net/ethernet/stmicro/stmmac/dwmac4_lib.c +3 -2
index e63270267578..f83db62938dd 100644

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

drivers/net/ethernet/ti/am65-cpsw-nuss.c +28 -19

47 lines not on this page · raw message

drivers/net/ethernet/ti/am65-cpsw-nuss.h +2 -0
index 5d93e346f05e..048ed10143c1 100644

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

drivers/net/phy/marvell10g.c +8 -0
index 53a433442803..f4d758f8a1ee 100644

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

drivers/net/usb/asix_devices.c +1 -0
index dc87e8caf954..53c3c680c083 100644

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

drivers/net/wireless/ath/ath6kl/wmi.c +3 -1
index b137e7f34397..bd1ef6334997 100644

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

drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c +1 -1
index c49dd0c36ae4..bbd72c2db088 100644

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

drivers/net/wireless/intel/iwlwifi/fw/acpi.c +7 -7
index 34933f133a0a..66f8d949c1e6 100644

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

drivers/net/wireless/intel/iwlwifi/pcie/drv.c +1 -0
index 0b8a0cd3b652..6f49950a5f6d 100644

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

drivers/net/wireless/rsi/rsi_91x_hal.c +3 -1
index 99b21a2c8386..f4a26f16f00f 100644

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

drivers/net/wireless/rsi/rsi_91x_usb.c +1 -0
index 3fbe2a3c1455..416976f09888 100644

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

drivers/nvme/host/rdma.c +2 -2
index 7f6b3a991501..3bd9cbc80246 100644

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

drivers/nvme/host/tcp.c +2 -2
index 8cb15ee5b249..18bd68b82d78 100644

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

drivers/nvme/target/fabrics-cmd.c +5 -4
index 7d0f3523fdab..8ef564c3b32c 100644

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

drivers/pci/pci.c +18 -7
index aacf575c15cf..3f353572588d 100644

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

drivers/power/supply/axp288_fuel_gauge.c +2 -2
index 2ba2d8d6b8e6..d1bcc52e67c3 100644

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

drivers/power/supply/cw2015_battery.c +3 -1
index d110597746b0..091868e9e9e8 100644

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

drivers/power/supply/max17042_battery.c +1 -1
index ce2041b30a06..215e77d3b6d9 100644

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

drivers/power/supply/smb347-charger.c +10 -0
index df240420f2de..9d8c2fadd4d0 100644

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

drivers/regulator/tps65910-regulator.c +4 -6
index 1d5b0a1b86f7..06cbe60c990f 100644

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

drivers/regulator/vctrl-regulator.c +43 -30

73 lines not on this page · raw message

drivers/s390/cio/css.c +17 -0
index a974943c27da..9fcdb8d81eee 100644

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

drivers/s390/crypto/ap_bus.c +8 -17
index 8d3a1d84a757..9c4f3c388934 100644

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

drivers/s390/crypto/ap_bus.h +2 -8
index 8f18abdbbc2b..6dd5e8f0380c 100644

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

drivers/s390/crypto/ap_queue.c +11 -9
index 669f96fddad6..d70c4d3d0907 100644

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

drivers/s390/crypto/zcrypt_ccamisc.c +4 -4
index bc34bedf9db8..6a3c2b460965 100644

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

drivers/soc/mediatek/mt8183-mmsys.h +14 -7
index 579dfc8dc8fc..9dee485807c9 100644

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

drivers/soc/mediatek/mtk-mmsys.c +5 -2
index 080660ef11bf..0f949896fd06 100644

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

drivers/soc/mediatek/mtk-mmsys.h +93 -40

133 lines not on this page · raw message

drivers/soc/qcom/rpmhpd.c +2 -3
index 2daa17ba54a3..fa209b479ab3 100644

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

drivers/soc/qcom/smsm.c +8 -3
index 1d3d5e3ec2b0..6e9a9cd28b17 100644

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

drivers/soc/rockchip/Kconfig +2 -2
index 2c13bf4dd5db..25eb2c1e31bb 100644

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

drivers/spi/spi-coldfire-qspi.c +1 -1
index 8996115ce736..263ce9047327 100644

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

drivers/spi/spi-davinci.c +1 -7
index e114e6fe5ea5..d112c2cac042 100644

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

drivers/spi/spi-fsl-dspi.c +1 -0
index fb45e6af6638..fd004c9db9dc 100644

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

drivers/spi/spi-pic32.c +1 -0
index 104bde153efd..5eb7b61bbb4d 100644

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

drivers/spi/spi-sprd-adi.c +1 -1
index ab19068be867..98ef17389952 100644

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

drivers/spi/spi-zynq-qspi.c +4 -4
index 9262c6418463..cfa222c9bd5e 100644

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

drivers/staging/clocking-wizard/Kconfig +1 -1
index 69cf51445f08..2324b5d73788 100644

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

drivers/staging/media/atomisp/i2c/atomisp-mt9m114.c +7 -4
index 11196180a206..34bf92de2f29 100644

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

drivers/staging/media/tegra-video/vi.c +2 -2
index 89709cd06d4d..d321790b07d9 100644

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

drivers/tty/serial/fsl_lpuart.c +1 -1
index f0e5da77ed6d..460e428b7592 100644

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

drivers/tty/tty_io.c +2 -2
index 26debec26b4e..79c6cc39e5dd 100644

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

drivers/usb/dwc3/dwc3-meson-g12a.c +2 -0
index ffe301d6ea35..d0f9b7c296b0 100644

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

drivers/usb/dwc3/dwc3-qcom.c +4 -0
index 49e6ca94486d..cfbb96f6627e 100644

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

drivers/usb/gadget/udc/at91_udc.c +3 -1
index eede5cedacb4..d9ad9adf7348 100644

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

drivers/usb/gadget/udc/bdc/bdc_core.c +15 -15
index 0bef6b3f049b..fa1a3908ec3b 100644

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

drivers/usb/gadget/udc/mv_u3d_core.c +10 -9
index ce3d7a3eb7e3..a1057ddfbda3 100644

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

drivers/usb/gadget/udc/renesas_usb3.c +7 -10
index f1b35a39d1ba..57d417a7c3e0 100644

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

drivers/usb/gadget/udc/s3c2410_udc.c +4 -0
index 179777cb699f..e3931da24277 100644

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

drivers/usb/host/ehci-orion.c +6 -2
index a319b1df3011..3626758b3e2a 100644

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

drivers/usb/host/ohci-tmio.c +3 -0
index 7f857bad9e95..08ec2ab0d95a 100644

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

drivers/usb/misc/brcmstb-usb-pinmap.c +2 -0
index 336653091e3b..2b2019c19cde 100644

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

drivers/usb/phy/phy-fsl-usb.c +2 -0
index f34c9437a182..972704262b02 100644

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

drivers/usb/phy/phy-tahvo.c +3 -1
index baebb1f5a973..a3e043e3e4aa 100644

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

drivers/usb/phy/phy-twl6030-usb.c +5 -0
index 8ba6c5a91557..ab3c38a7d8ac 100644

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

drivers/video/backlight/pwm_bl.c +28 -26

54 lines not on this page · raw message

drivers/video/fbdev/core/fbmem.c +6 -0
index 1c855145711b..63e2f17f3c61 100644

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

fs/cifs/cifs_unicode.c +2 -7
index 9bd03a231032..171ad8b42107 100644

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

fs/cifs/fs_context.c +9 -2
index eed59bc1d913..727c8835b222 100644

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

fs/cifs/readdir.c +22 -1
index bfee176b901d..54d77c99e21c 100644

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

fs/debugfs/file.c +6 -2
index df00231d3ecc..7d162b0efbf0 100644

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

fs/f2fs/file.c +2 -3
index 6afd4562335f..97d48c5bdebc 100644

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

fs/f2fs/super.c +10 -1
index 8fecd3050ccd..ce703e6fdafc 100644

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

fs/fcntl.c +10 -8
index f946bec8f1f1..68added37c15 100644

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

fs/fuse/file.c +27 -3
index 97f860cfc195..2bca7edfc9f6 100644

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

fs/fuse/fuse_i.h +19 -0
index 07829ce78695..a1cd59886077 100644

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

fs/fuse/inode.c +60 -0

60 lines not on this page · raw message

fs/gfs2/ops_fstype.c +43 -0

43 lines not on this page · raw message

fs/gfs2/super.c +6 -55

61 lines not on this page · raw message

fs/io-wq.c +70 -35

105 lines not on this page · raw message

fs/io_uring.c +5 -0
index a2e20a6fbfed..14bebc62db2d 100644

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

fs/iomap/swapfile.c +6 -0
index 6250ca6a1f85..4ecf4e1f68ef 100644

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

fs/isofs/inode.c +13 -14
index 21edc423b79f..678e2c51b855 100644

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

fs/isofs/isofs.h +0 -1
index 055ec6c586f7..dcdc191ed183 100644

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

fs/isofs/joliet.c +1 -3
index be8b6a9d0b92..c0f04a1e7f69 100644

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

fs/lockd/svclock.c +1 -1
index 61d3cc2283dc..498cb70c2c0d 100644

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

fs/nfsd/nfs4state.c +2 -2
index fa67ecd5fe63..2bedc7839ec5 100644

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

fs/udf/misc.c +11 -2
index eab94527340d..1614d308d0f0 100644

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

fs/udf/super.c +35 -40

75 lines not on this page · raw message

fs/udf/udf_sb.h +0 -2
index 758efe557a19..4fa620543d30 100644

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

fs/udf/unicode.c +2 -2
index 5fcfa96463eb..622569007b53 100644

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

include/linux/blkdev.h +16 -0
index d3afea47ade6..4b0f8bb0671d 100644

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

include/linux/energy_model.h +16 -0
index 3f221dbf5f95..1834752c5617 100644

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

include/linux/hrtimer.h +0 -5
index bb5e7b0a4274..77295af72426 100644

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

include/linux/local_lock_internal.h +23 -19

42 lines not on this page · raw message

include/linux/mlx5/mlx5_ifc.h +2 -1
index b0009aa3647f..6bbae0c3bc0b 100644

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

include/linux/power/max17042_battery.h +1 -1
index d55c746ac56e..e00ad1cfb1f1 100644

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

include/linux/sunrpc/svc.h +1 -0
index e91d51ea028b..65185d1e07ea 100644

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

include/linux/time64.h +7 -2
index 5117cb5b5656..81b9686a2079 100644

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

include/net/dsa.h +0 -2
index 33f40c1ec379..048d297623c9 100644

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

include/net/pkt_cls.h +1 -2
index 298a8d10168b..fb34b66aefa7 100644

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

include/trace/events/io_uring.h +3 -3
index e4e44a2b4aa9..0dd30de00e5b 100644

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

include/trace/events/sunrpc.h +4 -4
index 861f199896c6..d323f5a049c8 100644

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

include/uapi/linux/bpf.h +1 -1
index bf9252c7381e..5cdff1631608 100644

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

kernel/bpf/verifier.c +20 -11
index 49f07e2bf23b..9d94ac6ff50c 100644

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

kernel/cgroup/cpuset.c +56 -39

95 lines not on this page · raw message

kernel/cpu_pm.c +38 -12

50 lines not on this page · raw message

kernel/irq/timings.c +2 -0
index 4d2a702d7aa9..c43e2ac2f8de 100644

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

kernel/locking/mutex.c +5 -10
index d2df5e68b503..fb30e1436dfb 100644

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

kernel/power/energy_model.c +3 -1
index 0f4530b3a8cd..a332ccd829e2 100644

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

kernel/rcu/tree_stall.h +23 -3
index 6c76988cc019..0e7a60706d1c 100644

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

kernel/sched/core.c +19 -6
index f3b27c6c5153..a2403432f3ab 100644

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

kernel/sched/deadline.c +5 -3
index aaacd6cfd42f..e94314633b39 100644

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

kernel/sched/debug.c +7 -0
index 0c5ec2776ddf..7e08e3d947c2 100644

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

kernel/sched/fair.c +1 -1
index 44c452072a1b..30a6984a58f7 100644

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

kernel/sched/sched.h +2 -0
index ddefb0419d7a..d53d19770866 100644

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

kernel/sched/topology.c +65 -0

65 lines not on this page · raw message

kernel/time/hrtimer.c +69 -23

92 lines not on this page · raw message

kernel/time/posix-cpu-timers.c +0 -2
index 517be7fd175e..a002685f688d 100644

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

kernel/time/tick-internal.h +3 -0
index 6a742a29e545..cd610faa2523 100644

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

lib/mpi/mpiutil.c +1 -1
index 9a75ca3f7edf..bc81419f400c 100644

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

lib/test_scanf.c +2 -2
index 84fe09eaf55e..abae88848972 100644

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

net/6lowpan/debugfs.c +2 -1
index 1c140af06d52..600b9563bfc5 100644

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

net/bluetooth/cmtp/cmtp.h +1 -1
index c32638dddbf9..f6b9dc4e408f 100644

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

net/bluetooth/hci_core.c +14 -8
index e1a545c8a69f..4c25bcd1ac4c 100644

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

net/bluetooth/mgmt.c +1 -1
index 3663f880df11..1e21e014efd2 100644

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

net/bluetooth/sco.c +6 -5
index d9a4e88dacbb..b5ab842c7c4a 100644

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

net/core/devlink.c +22 -14
index 85032626de24..5a85a7b0feb2 100644

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

net/dsa/Kconfig +1 -12
index 00bb89b2d86f..970906eb5b2c 100644

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

net/dsa/Makefile +1 -2
index 44bc79952b8b..67ea009f242c 100644

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

net/dsa/dsa_priv.h +0 -2
index f201c33980bf..cddf7cb0f398 100644

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

net/dsa/port.c +0 -21
index 28b45b7e66df..23e30198a90e 100644

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

net/dsa/slave.c +0 -6
index 23be8e01026b..b34116b15d43 100644

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

net/dsa/tag_8021q.c +0 -2
index 4aa29f90ecea..0d1db3e37668 100644

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

net/ipv4/route.c +31 -17

48 lines not on this page · raw message

net/ipv4/tcp_ipv4.c +3 -2
index a692626c19e4..db07c05736b2 100644

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

net/ipv6/route.c +4 -1
index c5e8ecb96426..603340302101 100644

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

net/mac80211/main.c +1 -1
index fcae76ddd586..45fb517591ee 100644

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

net/mac80211/tx.c +3 -1
index 8509778ff31f..fa09a369214d 100644

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

net/netlabel/netlabel_cipso_v4.c +4 -4
index baf235721c43..000bb3da4f77 100644

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

net/qrtr/qrtr.c +6 -2
index 0c30908628ba..bdbda61db8b9 100644

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

net/sched/sch_cbq.c +1 -1
index b79a7e27bb31..38a3a8394bbd 100644

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

net/sched/sch_htb.c +62 -35

97 lines not on this page · raw message

net/sunrpc/svc.c +15 -0
index 0de918cb3d90..a47e290b0668 100644

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

samples/bpf/xdp_redirect_cpu_user.c +1 -1
index 576411612523..c7d7d3586730 100644

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

samples/pktgen/pktgen_sample04_many_flows.sh +7 -5
index 56c5f5af350f..cff51f861506 100755

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

samples/pktgen/pktgen_sample05_flow_per_thread.sh +7 -5
index 6e0effabca59..3578d0aa4ac5 100755

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

security/integrity/ima/Kconfig +0 -1
index d0ceada99243..f3a9cc201c8c 100644

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

security/integrity/ima/ima_mok.c +1 -1
index 1e5c01916173..95cc31525c57 100644

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

sound/soc/codecs/rt5682-i2c.c +12 -3
index 4a56a52adab5..b9d5d7a0975b 100644

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

sound/soc/codecs/tlv320aic32x4.c +1 -1
index 2e9175b37dc9..254a016cb1f3 100644

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

sound/soc/codecs/wcd9335.c +21 -2
index 86c92e03ea5d..d885ced34f60 100644

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

sound/soc/codecs/wm_adsp.c +2 -0
index fe15cbc7bcaf..a4d4cbf716a1 100644

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

sound/soc/fsl/fsl_rpmsg.c +10 -10
index ea5c973e2e84..d60f4dac6c1b 100644

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

sound/soc/intel/boards/kbl_da7219_max98927.c +7 -48

55 lines not on this page · raw message

sound/soc/intel/common/soc-acpi-intel-cml-match.c +1 -1
index 42ef51c3fb4f..b591c6fd13fd 100644

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

sound/soc/intel/common/soc-acpi-intel-kbl-match.c +1 -1
index ba5ff468c265..741bf2f9e081 100644

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

sound/soc/intel/skylake/skl-topology.c +10 -15
index c0fdab39e7c2..09037d555ec4 100644

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

sound/soc/mediatek/mt8183/mt8183-afe-pcm.c +27 -16

43 lines not on this page · raw message

sound/soc/mediatek/mt8192/mt8192-afe-pcm.c +17 -10
index 7a1724f5ff4c..31c280339c50 100644

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

sound/usb/card.c +4 -0
index a1f8c3a026f5..6abfc9d079e7 100644

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

sound/usb/pcm.c +2 -1
index f5cbf61ac366..5dc9266180e3 100644

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

sound/usb/usbaudio.h +1 -0
index 538831cbd925..8b70c9ea91b9 100644

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

tools/bootconfig/main.c +3 -1
index f45fa992e01d..fd67496a947f 100644

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

tools/bpf/bpftool/prog.c +4 -1
index cc48726740ad..9d709b427665 100644

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

tools/include/uapi/linux/bpf.h +1 -1
index bf9252c7381e..5cdff1631608 100644

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

tools/lib/bpf/Makefile +5 -5
index ec14aa725bb0..74c3b73a5fbe 100644

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

tools/lib/bpf/libbpf.c +11 -9
index 6f5e2757bb3c..2234d5c33177 100644

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

tools/perf/util/bpf-event.c +2 -2
index cdecda1ddd36..17a9844e4fbf 100644

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

tools/perf/util/bpf_counter.c +2 -1
index 8150e03367bb..beca55129b0b 100644

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

tools/testing/selftests/bpf/prog_tests/btf.c +1 -0
index 857e3f26086f..68e415f4d33c 100644

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

tools/testing/selftests/bpf/progs/bpf_iter_tcp4.c +1 -1
index 2e4775c35414..92267abb462f 100644

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

tools/testing/selftests/bpf/progs/test_core_autosize.c +15 -5
index 44f5aa2e8956..9a7829c5e4a7 100644

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

tools/testing/selftests/bpf/test_maps.c +2 -2
index 30cbf5d98f7d..abdfc41f7685 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.

Acked-by Peter Zijlstra (Intel)
#2 lore raw

Regression in posix-cpu-timers.c (was Re: Linux 5.14.4)

In reply to Greg Kroah-Hartman
Quoted 1 line · Greg Kroah-Hartman

I'm announcing the release of the 5.14.4 kernel.

I'm seeing a regression in 5.14.4

Running Nextcloud (a PHP web application) with a PostgreSQL backend

All was fine with 5.14.3

With 5.14.4, Nextcloud hangs loading events/contacts, etc.

As well as the web interface hanging, running this command on the command line also errors:

# su apache -s /bin/bash -c "cd /var/www/htdocs/nextcloud/ && php occ maintenance:mode --on"
PHP Fatal error:  Maximum execution time of 0 seconds exceeded in
/var/www/htdocs/nextcloud/lib/private/Files/AppData/AppData.php on line 41
# su apache -s /bin/bash -c "cd /var/www/htdocs/nextcloud/ && php occ maintenance:mode --on"
PHP Fatal error:  Maximum execution time of 0 seconds exceeded in
/var/www/htdocs/nextcloud/3rdparty/symfony/console/Application.php on line 65
# su apache -s /bin/bash -c "cd /var/www/htdocs/nextcloud/ && php occ maintenance:mode --on"
PHP Fatal error:  Maximum execution time of 0 seconds exceeded in
/var/www/htdocs/nextcloud/lib/public/Files/SimpleFS/ISimpleRoot.php on line 68
# su apache -s /bin/bash -c "cd /var/www/htdocs/nextcloud/ && php occ maintenance:mode --on"
PHP Fatal error:  Maximum execution time of 0 seconds exceeded in
/var/www/htdocs/nextcloud/apps/theming/lib/ImageManager.php on line 313

Note that the above commands were all run immediately after each other, but showed up in different php scripts.

Similar errors appear in the Apache log.

After reverting this commit in 5.14.4, Nextcloud resumed working.

$ git revert 564005805aadec9cb7e5dc4e14071b8f87cd6b58

This commit is 406dd42bd1ba0c01babf9cde169bb319e52f6147 in Linus's tree

I'll be more than happy to help with debugging / diagnosing this

The server is running up-to-date Gentoo.

postgres (PostgreSQL) 13.3
PHP 7.4.21 (cli) (built: Jul 11 2021 06:14:49) ( ZTS ) Server version: Apache/2.4.48 (Unix) Nextcloud 21.0.3

$ git bisect bad
564005805aadec9cb7e5dc4e14071b8f87cd6b58 is the first bad commit
commit 564005805aadec9cb7e5dc4e14071b8f87cd6b58
Author: Frederic Weisbecker <[email protected]>
Date:   Mon Jul 26 14:55:10 2021 +0200

posix-cpu-timers: Force next expiration recalc after itimer reset

[ Upstream commit 406dd42bd1ba0c01babf9cde169bb319e52f6147 ]

When an itimer deactivates a previously armed expiration, it simply doesn't do anything. As a result the process wide cputime counter keeps running and the tick dependency stays set until it reaches the old ghost expiration value.

This can be reproduced with the following snippet:

void trigger_process_counter(void)
{
struct itimerval n = {};

n.it_value.tv_sec = 100; setitimer(ITIMER_VIRTUAL, &n, NULL); n.it_value.tv_sec = 0; setitimer(ITIMER_VIRTUAL, &n, NULL);
}

Fix this with resetting the relevant base expiration. This is similar to disarming a timer.

 kernel/time/posix-cpu-timers.c | 2 --
 1 file changed, 2 deletions(-)

$

$ git bisect log
git bisect start
# bad: [d6f7bb5bb29096b2935c55deeb545616dab74406] Linux 5.14.4
git bisect bad d6f7bb5bb29096b2935c55deeb545616dab74406
# good: [d27a14321366788cef927dbe69854f34460b3f7c] Linux 5.14.3
git bisect good d27a14321366788cef927dbe69854f34460b3f7c
# bad: [203baf2a84d30b468ae80868344e7685b8f4124b] net: dsa: tag_sja1105: optionally build as module when switch driver is module if PTP is enabled
git bisect bad 203baf2a84d30b468ae80868344e7685b8f4124b
# bad: [d031746f556b344d87033bc9dcee1a65dd6a56a3] drm/panfrost: Fix missing clk_disable_unprepare() on error in panfrost_clk_init()
git bisect bad d031746f556b344d87033bc9dcee1a65dd6a56a3
# bad: [115540457feae9a215e5c16e434f71b80860038f] io-wq: remove GFP_ATOMIC allocation off schedule out path
git bisect bad 115540457feae9a215e5c16e434f71b80860038f
# bad: [923c1c5ca5a81958a8bfd891bc16c319c4bb9e6d] nvme-tcp: don't update queue count when failing to set io queues
git bisect bad 923c1c5ca5a81958a8bfd891bc16c319c4bb9e6d
# good: [f02146cf84e6165cae177aea30acdea7b8d76cf3] EDAC/mce_amd: Do not load edac_mce_amd module on guests
git bisect good f02146cf84e6165cae177aea30acdea7b8d76cf3
# bad: [796c0a620178d68900fb2f4bf987cd89a9b38090] udf: Fix iocharset=utf8 mount option
git bisect bad 796c0a620178d68900fb2f4bf987cd89a9b38090
# bad: [0d7541f439be37dabb7546889503d16ac59ec29f] hrtimer: Avoid double reprogramming in __hrtimer_start_range_ns()
git bisect bad 0d7541f439be37dabb7546889503d16ac59ec29f
# bad: [564005805aadec9cb7e5dc4e14071b8f87cd6b58] posix-cpu-timers: Force next expiration recalc after itimer reset
git bisect bad 564005805aadec9cb7e5dc4e14071b8f87cd6b58
# first bad commit: [564005805aadec9cb7e5dc4e14071b8f87cd6b58] posix-cpu-timers: Force next expiration recalc after itimer reset
$
Signature · 4 lines
Alan J. Wylie                                          https://www.wylie.me.uk/

Dance like no-one's watching. / Encrypt like everyone is.
Security is inversely proportional to convenience
author maintainer
#3 lore raw

Re: Regression in posix-cpu-timers.c (was Re: Linux 5.14.4)

Quoted 35 lines · Alan J. Wylie
Quoted 1 line · Greg Kroah-Hartman

I'm announcing the release of the 5.14.4 kernel.

I'm seeing a regression in 5.14.4

Running Nextcloud (a PHP web application) with a PostgreSQL backend

All was fine with 5.14.3

With 5.14.4, Nextcloud hangs loading events/contacts, etc.

As well as the web interface hanging, running this command on the command line also errors:

# su apache -s /bin/bash -c "cd /var/www/htdocs/nextcloud/ && php occ maintenance:mode --on"
PHP Fatal error:  Maximum execution time of 0 seconds exceeded in
/var/www/htdocs/nextcloud/lib/private/Files/AppData/AppData.php on line 41
# su apache -s /bin/bash -c "cd /var/www/htdocs/nextcloud/ && php occ maintenance:mode --on"
PHP Fatal error:  Maximum execution time of 0 seconds exceeded in
/var/www/htdocs/nextcloud/3rdparty/symfony/console/Application.php on line 65
# su apache -s /bin/bash -c "cd /var/www/htdocs/nextcloud/ && php occ maintenance:mode --on"
PHP Fatal error:  Maximum execution time of 0 seconds exceeded in
/var/www/htdocs/nextcloud/lib/public/Files/SimpleFS/ISimpleRoot.php on line 68
# su apache -s /bin/bash -c "cd /var/www/htdocs/nextcloud/ && php occ maintenance:mode --on"
PHP Fatal error:  Maximum execution time of 0 seconds exceeded in
/var/www/htdocs/nextcloud/apps/theming/lib/ImageManager.php on line 313

Note that the above commands were all run immediately after each other, but showed up in different php scripts.

Quoted 7 lines

Similar errors appear in the Apache log.

After reverting this commit in 5.14.4, Nextcloud resumed working.

$ git revert 564005805aadec9cb7e5dc4e14071b8f87cd6b58

This commit is 406dd42bd1ba0c01babf9cde169bb319e52f6147 in Linus's tree

Thanks for bisecting this down.

Does 5.15-rc1 also fail in this same way, or does it work ok?

thanks,

greg k-h

#6 lore raw

Re: Regression in posix-cpu-timers.c (was Re: Linux 5.14.4)

In reply to Alan J. Wylie
Quoted 26 lines · Alan J. Wylie

564005805aadec9cb7e5dc4e14071b8f87cd6b58 is the first bad commit commit 564005805aadec9cb7e5dc4e14071b8f87cd6b58

Author: Frederic Weisbecker <[email protected]>
Date:   Mon Jul 26 14:55:10 2021 +0200

posix-cpu-timers: Force next expiration recalc after itimer reset

[ Upstream commit 406dd42bd1ba0c01babf9cde169bb319e52f6147 ]

When an itimer deactivates a previously armed expiration, it simply doesn't do anything. As a result the process wide cputime counter keeps running and the tick dependency stays set until it reaches the old ghost expiration value.

This can be reproduced with the following snippet:

void trigger_process_counter(void)
{
struct itimerval n = {};

n.it_value.tv_sec = 100; setitimer(ITIMER_VIRTUAL, &n, NULL); n.it_value.tv_sec = 0; setitimer(ITIMER_VIRTUAL, &n, NULL);
}

Quoted 9 lines

Fix this with resetting the relevant base expiration. This is similar to disarming a timer.

Right, this should fix the issue: https://lore.kernel.org/lkml/[email protected]/

Thanks!

#7 lore raw

Re: Regression in posix-cpu-timers.c (was Re: Linux 5.14.4)

Quoted 2 lines · Frederic Weisbecker

Right, this should fix the issue: https://lore.kernel.org/lkml/[email protected]/

Hmm.

Can you explain why the fix isn't just to revert that original commit?

It looks like the only real difference is that now it does *extra work* with all that tick_nohz_dep_set_signal().

Isn't it easier to just leave any old timer ticking, and not do the extra work until it expires and you notice "ok, it's not important"?

IOW, that original commit explicitly broke the only case it changed - the timer being disabled. So why isn't it just reverted? What is it that kleeps us wanting to do the extra work for the disabled timer case?

As long as it's fixed, I'm all ok with this, but I'm looking at the commit message for that broken commit, and I'm looking at the commit message for the fix, and I'm not seeing an actual _explanation_ for this churn.

Linus

#4 lore raw

Re: Regression in posix-cpu-timers.c (was Re: Linux 5.14.4)

In reply to Greg Kroah-Hartman
Quoted 1 line · at 20:09 on Wed 15-Sep-2021 Greg Kroah-Hartman ([email protected])…

Does 5.15-rc1 also fail in this same way, or does it work ok?

It fails

# uname -a
Linux bilbo 5.15.0-rc1 #1 SMP PREEMPT Wed Sep 15 19:19:48 BST 2021
x86_64 AMD FX(tm)-4300 Quad-Core Processor AuthenticAMD GNU/Linux
# su apache -s /bin/bash -c "cd /var/www/htdocs/nextcloud/ && php occ maintenance:mode --off"
PHP Fatal error: Maximum execution time of 0 seconds exceeded in
/var/www/htdocs/nextcloud/3rdparty/symfony/console/Application.php on
line 65

Regards
Alan

Signature · 4 lines
Alan J. Wylie                                          https://www.wylie.me.uk/

Dance like no-one's watching. / Encrypt like everyone is.
Security is inversely proportional to convenience
#9 lore raw

Re: Regression in posix-cpu-timers.c (was Re: Linux 5.14.4)

In reply to Frederic Weisbecker
Quoted 1 line · at 20:31 on Wed 15-Sep-2021 Frederic Weisbecker ([email protected]) wrote:

Right, this should fix the issue: https://lore.kernel.org/lkml/[email protected]/

Indeed it does.

# uname -a
Linux bilbo 5.14.4-dirty #15 SMP PREEMPT Wed Sep 15 20:10:28 BST 2021
x86_64 AMD FX(tm)-4300 Quad-Core Processor AuthenticAMD GNU/Linux
# su apache -s /bin/bash -c "cd /var/www/htdocs/nextcloud/ && php occ maintenance:mode --off"
Maintenance mode disabled
#
$ git diff
kernel/time/posix-cpu-timers.c +2 -1
index a002685f688d..8cb280237327 100644
@@ -1346,7 +1346,8 @@ void set_process_cpu_timer(struct task_struct *tsk, unsigned int clkid,
                        }
                }
 
-               *newval += now;
+               if (*newval)
+                       *newval += now;
        }
 
        /*

Thanks
Alan

Signature · 4 lines
Alan J. Wylie                                          https://www.wylie.me.uk/

Dance like no-one's watching. / Encrypt like everyone is.
Security is inversely proportional to convenience
#8 lore raw

Re: Regression in posix-cpu-timers.c (was Re: Linux 5.14.4)

In reply to Linus Torvalds
Quoted 20 lines · Linus Torvalds
Quoted 2 lines · Frederic Weisbecker

Right, this should fix the issue: https://lore.kernel.org/lkml/[email protected]/

Hmm.

Can you explain why the fix isn't just to revert that original commit?

It looks like the only real difference is that now it does *extra work* with all that tick_nohz_dep_set_signal().

Isn't it easier to just leave any old timer ticking, and not do the extra work until it expires and you notice "ok, it's not important"?

IOW, that original commit explicitly broke the only case it changed - the timer being disabled. So why isn't it just reverted? What is it that kleeps us wanting to do the extra work for the disabled timer case?

Quoted 4 lines

As long as it's fixed, I'm all ok with this, but I'm looking at the commit message for that broken commit, and I'm looking at the commit message for the fix, and I'm not seeing an actual _explanation_ for this churn.

The commit indeed failed to explain correctly the actual issue.

When a process wide posix cpu timer (eg: itimer) is elapsing, all the threads inside that process contend on their cputime updates (account_group_user_time() and account_group_system_time())

The overhead just consists in concurrent atomic64_add() calls on every tick but still... And this can remain for a very long while, until the previous value of the timer expiry is reached.

The other symptom, more of a corner case for most, is that the CPUs running any thread of that process won't be able to enter in nohz_full mode, again until the old timer expiry is reached.

author maintainer
#5 lore raw

Re: Regression in posix-cpu-timers.c (was Re: Linux 5.14.4)

In reply to Alan J. Wylie
Quoted 6 lines · Alan J. Wylie
Quoted 1 line · at 20:09 on Wed 15-Sep-2021 Greg Kroah-Hartman ([email protected])…

Does 5.15-rc1 also fail in this same way, or does it work ok?

It fails

Quoted 8 lines
# uname -a
Linux bilbo 5.15.0-rc1 #1 SMP PREEMPT Wed Sep 15 19:19:48 BST 2021
x86_64 AMD FX(tm)-4300 Quad-Core Processor AuthenticAMD GNU/Linux
# su apache -s /bin/bash -c "cd /var/www/htdocs/nextcloud/ && php occ maintenance:mode --off"
PHP Fatal error: Maximum execution time of 0 seconds exceeded in
/var/www/htdocs/nextcloud/3rdparty/symfony/console/Application.php on
line 65

Thanks for testing this and letting us know so quickly.

I'll go drop this from all of the pending stable queues, and revert it from the released stable trees and push out an update in a few hours.

thanks,

greg k-h