Linux 5.4.73
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.4.73 kernel.
All users of the 5.4 kernel series must upgrade.
The updated 5.4.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.4.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/admin-guide/kernel-parameters.txt | 2 Documentation/networking/ip-sysctl.txt | 4 Makefile | 2 arch/arc/plat-hsdk/Kconfig | 1 arch/arm/boot/dts/imx6sl.dtsi | 2 arch/arm/boot/dts/meson8.dtsi | 2 arch/arm/boot/dts/owl-s500.dtsi | 6 arch/arm/boot/dts/sun8i-r40-bananapi-m2-ultra.dts | 10 arch/arm/mach-at91/pm.c | 1 arch/arm/mach-omap2/cpuidle44xx.c | 4 arch/arm/mach-s3c24xx/mach-at2440evb.c | 2 arch/arm/mach-s3c24xx/mach-h1940.c | 4 arch/arm/mach-s3c24xx/mach-mini2440.c | 4 arch/arm/mach-s3c24xx/mach-n30.c | 4 arch/arm/mach-s3c24xx/mach-rx1950.c | 4 arch/arm/mm/cache-l2x0.c | 16 arch/arm64/boot/dts/actions/s700.dtsi | 2 arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi | 6 arch/arm64/boot/dts/amlogic/meson-khadas-vim3.dtsi | 4 arch/arm64/boot/dts/freescale/imx8mq.dtsi | 1 arch/arm64/boot/dts/qcom/msm8916.dtsi | 10 arch/arm64/boot/dts/qcom/pm8916.dtsi | 2 arch/arm64/boot/dts/renesas/r8a774c0.dtsi | 5 arch/arm64/boot/dts/renesas/r8a77990.dtsi | 5 arch/arm64/boot/dts/xilinx/zynqmp.dtsi | 4 arch/powerpc/include/asm/book3s/64/hash-4k.h | 13 arch/powerpc/include/asm/drmem.h | 39 - arch/powerpc/include/asm/reg.h | 2 arch/powerpc/include/asm/tlb.h | 13 arch/powerpc/kernel/tau_6xx.c | 147 ++--- arch/powerpc/mm/book3s64/radix_tlb.c | 23 arch/powerpc/mm/drmem.c | 6 arch/powerpc/perf/hv-gpci-requests.h | 6 arch/powerpc/perf/isa207-common.c | 10 arch/powerpc/platforms/Kconfig | 14 arch/powerpc/platforms/powernv/opal-dump.c | 41 + arch/powerpc/platforms/pseries/hotplug-memory.c | 24 arch/powerpc/platforms/pseries/ras.c | 118 ++-- arch/powerpc/platforms/pseries/rng.c | 1 arch/powerpc/sysdev/xics/icp-hv.c | 1 arch/x86/boot/compressed/pgtable_64.c | 9 arch/x86/events/amd/iommu.c | 2 arch/x86/events/intel/ds.c | 32 - arch/x86/events/intel/uncore_snb.c | 31 - arch/x86/include/asm/special_insns.h | 28 - arch/x86/kernel/cpu/common.c | 4 arch/x86/kernel/cpu/mce/core.c | 72 ++ arch/x86/kernel/cpu/mce/internal.h | 10 arch/x86/kernel/cpu/mce/severity.c | 28 - arch/x86/kernel/fpu/init.c | 30 - arch/x86/kernel/nmi.c | 5 arch/x86/kvm/emulate.c | 2 arch/x86/kvm/mmu.c | 1 arch/x86/kvm/svm.c | 1 arch/x86/kvm/vmx/nested.c | 6 block/blk-core.c | 9 block/blk-mq-sysfs.c | 2 block/blk-sysfs.c | 9 crypto/algif_aead.c | 7 crypto/algif_skcipher.c | 2 drivers/android/binder.c | 37 - drivers/bluetooth/btusb.c | 1 drivers/bluetooth/hci_ldisc.c | 1 drivers/bluetooth/hci_serdev.c | 2 drivers/char/ipmi/ipmi_si_intf.c | 2 drivers/clk/at91/clk-main.c | 11 drivers/clk/bcm/clk-bcm2835.c | 4 drivers/clk/imx/clk-imx8mq.c | 4 drivers/clk/keystone/sci-clk.c | 2 drivers/clk/mediatek/clk-mt6779.c | 2 drivers/clk/meson/g12a.c | 11 drivers/clk/qcom/gcc-sdm660.c | 2 drivers/clk/rockchip/clk-half-divider.c | 2 drivers/cpufreq/armada-37xx-cpufreq.c | 6 drivers/cpufreq/powernv-cpufreq.c | 9 drivers/crypto/caam/Kconfig | 1 drivers/crypto/caam/caamalg_qi.c | 70 ++ drivers/crypto/ccp/ccp-ops.c | 2 drivers/crypto/chelsio/chtls/chtls_cm.c | 3 drivers/crypto/chelsio/chtls/chtls_io.c | 5 drivers/crypto/ixp4xx_crypto.c | 2 drivers/crypto/mediatek/mtk-platform.c | 8 drivers/crypto/omap-sham.c | 3 drivers/crypto/picoxcell_crypto.c | 9 drivers/dma/dmatest.c | 5 drivers/dma/dw/core.c | 4 drivers/dma/dw/dw.c | 2 drivers/dma/dw/of.c | 7 drivers/edac/aspeed_edac.c | 4 drivers/edac/i5100_edac.c | 11 drivers/edac/ti_edac.c | 3 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 3 drivers/gpu/drm/drm_debugfs_crc.c | 4 drivers/gpu/drm/gma500/cdv_intel_dp.c | 2 drivers/gpu/drm/msm/adreno/a6xx_gpu_state.c | 2 drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 8 drivers/gpu/drm/mxsfb/mxsfb_drv.c | 21 drivers/gpu/drm/panel/panel-simple.c | 4 drivers/gpu/drm/panfrost/panfrost_gpu.c | 14 drivers/gpu/drm/panfrost/panfrost_gpu.h | 2 drivers/gpu/drm/panfrost/panfrost_regs.h | 4 drivers/gpu/drm/virtio/virtgpu_kms.c | 2 drivers/gpu/drm/virtio/virtgpu_vq.c | 10 drivers/gpu/drm/vkms/vkms_composer.c | 2 drivers/hid/hid-ids.h | 1 drivers/hid/hid-input.c | 4 drivers/hid/hid-ite.c | 4 drivers/hid/hid-roccat-kone.c | 23 drivers/hwmon/pmbus/max34440.c | 3 drivers/hwtracing/coresight/coresight-etm-perf.c | 14 drivers/i2c/busses/Kconfig | 1 drivers/i2c/i2c-core-acpi.c | 11 drivers/i3c/master.c | 19 drivers/i3c/master/i3c-master-cdns.c | 4 drivers/iio/adc/stm32-adc-core.c | 9 drivers/infiniband/core/cma.c | 84 +-- drivers/infiniband/core/ucma.c | 6 drivers/infiniband/core/umem.c | 15 drivers/infiniband/hw/hns/hns_roce_hw_v1.c | 1 drivers/infiniband/hw/hns/hns_roce_hw_v2.c | 5 drivers/infiniband/hw/hns/hns_roce_qp.c | 6 drivers/infiniband/hw/i40iw/i40iw.h | 9 drivers/infiniband/hw/i40iw/i40iw_cm.c | 10 drivers/infiniband/hw/i40iw/i40iw_hw.c | 4 drivers/infiniband/hw/i40iw/i40iw_utils.c | 59 -- drivers/infiniband/hw/i40iw/i40iw_verbs.c | 31 - drivers/infiniband/hw/i40iw/i40iw_verbs.h | 3 drivers/infiniband/hw/mlx4/cm.c | 3 drivers/infiniband/hw/mlx4/mad.c | 34 + drivers/infiniband/hw/mlx4/mlx4_ib.h | 2 drivers/infiniband/hw/mlx5/cq.c | 5 drivers/infiniband/hw/mlx5/main.c | 4 drivers/infiniband/hw/qedr/main.c | 2 drivers/infiniband/hw/qedr/qedr_iw_cm.c | 6 drivers/infiniband/hw/qedr/verbs.c | 4 drivers/infiniband/sw/rdmavt/vt.c | 4 drivers/infiniband/sw/rxe/rxe_recv.c | 20 drivers/infiniband/ulp/ipoib/ipoib_main.c | 2 drivers/infiniband/ulp/ipoib/ipoib_netlink.c | 11 drivers/infiniband/ulp/ipoib/ipoib_vlan.c | 2 drivers/input/keyboard/ep93xx_keypad.c | 4 drivers/input/keyboard/omap4-keypad.c | 6 drivers/input/keyboard/twl4030_keypad.c | 8 drivers/input/serio/sun4i-ps2.c | 9 drivers/input/touchscreen/imx6ul_tsc.c | 27 drivers/input/touchscreen/stmfts.c | 2 drivers/lightnvm/core.c | 5 drivers/mailbox/mailbox.c | 12 drivers/mailbox/mtk-cmdq-mailbox.c | 8 drivers/md/md-bitmap.c | 3 drivers/md/md-cluster.c | 1 drivers/media/firewire/firedtv-fw.c | 6 drivers/media/i2c/m5mols/m5mols_core.c | 3 drivers/media/i2c/ov5640.c | 196 +++---- drivers/media/i2c/tc358743.c | 14 drivers/media/pci/bt8xx/bttv-driver.c | 13 drivers/media/pci/saa7134/saa7134-tvaudio.c | 3 drivers/media/platform/exynos4-is/fimc-isp.c | 4 drivers/media/platform/exynos4-is/fimc-lite.c | 2 drivers/media/platform/exynos4-is/media-dev.c | 8 drivers/media/platform/exynos4-is/mipi-csis.c | 4 drivers/media/platform/mx2_emmaprp.c | 7 drivers/media/platform/omap3isp/isp.c | 6 drivers/media/platform/qcom/camss/camss-csiphy.c | 4 drivers/media/platform/qcom/venus/core.c | 5 drivers/media/platform/qcom/venus/vdec.c | 10 drivers/media/platform/rcar-fcp.c | 4 drivers/media/platform/rcar-vin/rcar-csi2.c | 24 drivers/media/platform/rcar-vin/rcar-dma.c | 4 drivers/media/platform/rcar_drif.c | 30 - drivers/media/platform/rockchip/rga/rga-buf.c | 1 drivers/media/platform/s3c-camif/camif-core.c | 5 drivers/media/platform/s5p-mfc/s5p_mfc_pm.c | 4 drivers/media/platform/sti/bdisp/bdisp-v4l2.c | 3 drivers/media/platform/sti/delta/delta-v4l2.c | 4 drivers/media/platform/sti/hva/hva-hw.c | 4 drivers/media/platform/stm32/stm32-dcmi.c | 4 drivers/media/platform/ti-vpe/vpe.c | 2 drivers/media/platform/vsp1/vsp1_drv.c | 11 drivers/media/rc/ati_remote.c | 4 drivers/media/tuners/tuner-simple.c | 5 drivers/media/usb/uvc/uvc_ctrl.c | 6 drivers/media/usb/uvc/uvc_entity.c | 35 + drivers/media/usb/uvc/uvc_v4l2.c | 30 + drivers/memory/fsl-corenet-cf.c | 6 drivers/memory/omap-gpmc.c | 8 drivers/mfd/sm501.c | 8 drivers/misc/cardreader/rtsx_pcr.c | 4 drivers/misc/eeprom/at25.c | 2 drivers/misc/mic/scif/scif_rma.c | 4 drivers/misc/mic/vop/vop_main.c | 2 drivers/misc/mic/vop/vop_vringh.c | 24 drivers/misc/vmw_vmci/vmci_queue_pair.c | 10 drivers/mmc/core/sdio_cis.c | 3 drivers/mtd/lpddr/lpddr2_nvm.c | 35 - drivers/mtd/mtdoops.c | 11 drivers/mtd/nand/raw/vf610_nfc.c | 6 drivers/mtd/nand/spi/gigadevice.c | 14 drivers/net/can/flexcan.c | 34 + drivers/net/can/m_can/m_can_platform.c | 2 drivers/net/dsa/realtek-smi-core.h | 4 drivers/net/dsa/rtl8366.c | 280 +++++----- drivers/net/dsa/rtl8366rb.c | 2 drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c | 175 +++++- drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.h | 15 drivers/net/ethernet/cisco/enic/enic.h | 1 drivers/net/ethernet/cisco/enic/enic_api.c | 6 drivers/net/ethernet/cisco/enic/enic_main.c | 27 drivers/net/ethernet/faraday/ftgmac100.c | 5 drivers/net/ethernet/faraday/ftgmac100.h | 8 drivers/net/ethernet/freescale/fec_main.c | 35 + drivers/net/ethernet/ibm/ibmveth.c | 19 drivers/net/ethernet/ibm/ibmvnic.c | 10 drivers/net/ethernet/ibm/ibmvnic.h | 2 drivers/net/ethernet/korina.c | 3 drivers/net/ethernet/mellanox/mlx4/en_rx.c | 3 drivers/net/ethernet/mellanox/mlx4/en_tx.c | 2 drivers/net/ethernet/mellanox/mlx5/core/lib/clock.c | 5 drivers/net/ethernet/realtek/r8169_main.c | 12 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 33 - drivers/net/usb/qmi_wwan.c | 1 drivers/net/wan/hdlc.c | 10 drivers/net/wan/hdlc_raw_eth.c | 1 drivers/net/wireless/ath/ath10k/ce.c | 2 drivers/net/wireless/ath/ath10k/htt_rx.c | 8 drivers/net/wireless/ath/ath10k/mac.c | 2 drivers/net/wireless/ath/ath6kl/main.c | 3 drivers/net/wireless/ath/ath6kl/wmi.c | 5 drivers/net/wireless/ath/ath9k/hif_usb.c | 19 drivers/net/wireless/ath/ath9k/htc_hst.c | 2 drivers/net/wireless/ath/wcn36xx/main.c | 2 drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | 2 drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c | 2 drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy/phy_lcn.c | 4 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c | 9 drivers/net/wireless/marvell/mwifiex/scan.c | 2 drivers/net/wireless/marvell/mwifiex/sdio.c | 2 drivers/net/wireless/marvell/mwifiex/usb.c | 3 drivers/net/wireless/quantenna/qtnfmac/commands.c | 2 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 10 drivers/net/wireless/realtek/rtw88/pci.h | 4 drivers/ntb/hw/amd/ntb_hw_amd.c | 1 drivers/nvme/host/pci.c | 3 drivers/nvme/target/core.c | 3 drivers/nvmem/core.c | 33 - drivers/opp/core.c | 6 drivers/pci/controller/pci-aardvark.c | 11 drivers/pci/controller/pcie-iproc-msi.c | 13 drivers/pci/iov.c | 1 drivers/perf/thunderx2_pmu.c | 7 drivers/perf/xgene_pmu.c | 32 - drivers/pinctrl/bcm/Kconfig | 1 drivers/pinctrl/pinctrl-mcp23s08.c | 24 drivers/platform/x86/mlx-platform.c | 15 drivers/pwm/pwm-img.c | 3 drivers/pwm/pwm-lpss.c | 7 drivers/rapidio/devices/rio_mport_cdev.c | 18 drivers/regulator/core.c | 21 drivers/rpmsg/qcom_smd.c | 32 - drivers/s390/net/qeth_l2_main.c | 6 drivers/scsi/be2iscsi/be_main.c | 4 drivers/scsi/bfa/bfad.c | 1 drivers/scsi/csiostor/csio_hw.c | 2 drivers/scsi/ibmvscsi/ibmvfc.c | 1 drivers/scsi/mpt3sas/mpt3sas_base.c | 14 drivers/scsi/mvumi.c | 1 drivers/scsi/qedf/qedf_main.c | 2 drivers/scsi/qedi/qedi_fw.c | 23 drivers/scsi/qedi/qedi_iscsi.c | 2 drivers/scsi/qla2xxx/qla_init.c | 10 drivers/scsi/qla2xxx/qla_inline.h | 5 drivers/scsi/qla2xxx/qla_nvme.c | 2 drivers/scsi/qla2xxx/qla_target.c | 2 drivers/scsi/qla4xxx/ql4_os.c | 2 drivers/scsi/smartpqi/smartpqi.h | 2 drivers/scsi/smartpqi/smartpqi_init.c | 101 ++- drivers/scsi/ufs/ufs-qcom.c | 5 drivers/slimbus/core.c | 6 drivers/slimbus/qcom-ngd-ctrl.c | 4 drivers/soc/fsl/qbman/bman.c | 2 drivers/spi/spi-omap2-mcspi.c | 17 drivers/spi/spi-s3c64xx.c | 52 + drivers/staging/emxx_udc/emxx_udc.c | 4 drivers/staging/media/ipu3/ipu3-css-params.c | 2 drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c | 2 drivers/staging/wilc1000/wilc_mon.c | 3 drivers/target/target_core_user.c | 2 drivers/tty/hvc/hvcs.c | 14 drivers/tty/ipwireless/network.c | 4 drivers/tty/ipwireless/tty.c | 2 drivers/tty/pty.c | 2 drivers/tty/serial/Kconfig | 1 drivers/tty/serial/fsl_lpuart.c | 16 drivers/usb/cdns3/gadget.c | 2 drivers/usb/class/cdc-acm.c | 23 drivers/usb/class/cdc-wdm.c | 72 +- drivers/usb/core/urb.c | 89 +-- drivers/usb/dwc2/gadget.c | 40 + drivers/usb/dwc2/params.c | 2 drivers/usb/dwc3/core.c | 25 drivers/usb/dwc3/core.h | 7 drivers/usb/dwc3/dwc3-of-simple.c | 1 drivers/usb/gadget/function/f_ncm.c | 8 drivers/usb/gadget/function/f_printer.c | 16 drivers/usb/gadget/function/u_ether.c | 2 drivers/usb/host/ohci-hcd.c | 16 drivers/usb/host/xhci.c | 3 drivers/vfio/pci/vfio_pci_config.c | 24 drivers/vfio/pci/vfio_pci_intrs.c | 4 drivers/vfio/vfio_iommu_type1.c | 3 drivers/video/backlight/sky81452-backlight.c | 1 drivers/video/fbdev/aty/radeon_base.c | 2 drivers/video/fbdev/core/fbmem.c | 4 drivers/video/fbdev/sis/init.c | 11 drivers/video/fbdev/vga16fb.c | 14 drivers/virt/fsl_hypervisor.c | 17 drivers/watchdog/sp5100_tco.h | 2 drivers/watchdog/watchdog_dev.c | 6 fs/cifs/asn1.c | 16 fs/cifs/smb2ops.c | 14 fs/d_path.c | 6 fs/dlm/config.c | 3 fs/ext4/fsmap.c | 3 fs/f2fs/sysfs.c | 1 fs/iomap/buffered-io.c | 1 fs/iomap/direct-io.c | 10 fs/ntfs/inode.c | 6 fs/proc/base.c | 3 fs/quota/quota_v2.c | 1 fs/ramfs/file-nommu.c | 2 fs/reiserfs/inode.c | 3 fs/reiserfs/super.c | 8 fs/udf/inode.c | 25 fs/udf/super.c | 6 fs/xfs/libxfs/xfs_rtbitmap.c | 11 fs/xfs/xfs_fsmap.c | 48 + fs/xfs/xfs_fsmap.h | 6 fs/xfs/xfs_ioctl.c | 144 +++-- fs/xfs/xfs_rtalloc.c | 11 include/linux/bpf_verifier.h | 1 include/linux/oom.h | 1 include/linux/overflow.h | 1 include/linux/page_owner.h | 6 include/linux/pci.h | 1 include/linux/platform_data/dma-dw.h | 2 include/linux/sched/coredump.h | 1 include/net/ip.h | 6 include/net/netfilter/nf_log.h | 1 include/rdma/ib_umem.h | 9 include/scsi/scsi_common.h | 7 include/sound/hda_codec.h | 1 include/trace/events/target.h | 12 include/uapi/linux/perf_event.h | 2 kernel/bpf/verifier.c | 29 + kernel/debug/kdb/kdb_io.c | 8 kernel/fork.c | 21 kernel/module.c | 13 kernel/power/hibernate.c | 11 kernel/sched/core.c | 2 kernel/sched/fair.c | 9 kernel/sched/sched.h | 13 lib/crc32.c | 2 lib/idr.c | 1 mm/filemap.c | 8 mm/huge_memory.c | 2 mm/memcontrol.c | 5 mm/oom_kill.c | 2 mm/page_alloc.c | 4 mm/page_owner.c | 4 mm/swapfile.c | 4 net/bluetooth/l2cap_sock.c | 7 net/bridge/netfilter/ebt_dnat.c | 2 net/bridge/netfilter/ebt_redirect.c | 2 net/bridge/netfilter/ebt_snat.c | 2 net/can/j1939/transport.c | 2 net/core/filter.c | 3 net/core/sock.c | 12 net/ipv4/icmp.c | 7 net/ipv4/ip_gre.c | 15 net/ipv4/netfilter/nf_log_arp.c | 19 net/ipv4/netfilter/nf_log_ipv4.c | 6 net/ipv4/nexthop.c | 2 net/ipv4/route.c | 4 net/ipv4/tcp_input.c | 2 net/ipv6/ip6_fib.c | 4 net/ipv6/netfilter/nf_log_ipv6.c | 8 net/mac80211/cfg.c | 3 net/mac80211/sta_info.c | 4 net/netfilter/ipvs/ip_vs_ctl.c | 7 net/netfilter/ipvs/ip_vs_xmit.c | 6 net/netfilter/nf_conntrack_proto_tcp.c | 19 net/netfilter/nf_dup_netdev.c | 1 net/netfilter/nf_log_common.c | 12 net/netfilter/nft_fwd_netdev.c | 1 net/nfc/netlink.c | 2 net/sched/act_api.c | 14 net/sched/act_tunnel_key.c | 2 net/smc/smc_core.c | 2 net/sunrpc/auth_gss/svcauth_gss.c | 27 net/sunrpc/xprtrdma/svc_rdma_sendto.c | 3 net/tipc/msg.c | 3 net/tls/tls_device.c | 11 net/wireless/nl80211.c | 21 samples/mic/mpssd/mpssd.c | 4 security/integrity/ima/ima_crypto.c | 2 sound/core/seq/oss/seq_oss.c | 7 sound/firewire/bebob/bebob_hwdep.c | 3 sound/pci/hda/hda_intel.c | 14 sound/pci/hda/patch_ca0132.c | 24 sound/pci/hda/patch_hdmi.c | 20 sound/pci/hda/patch_realtek.c | 56 ++ sound/soc/codecs/tlv320aic32x4.c | 9 sound/soc/fsl/fsl_sai.c | 19 sound/soc/fsl/fsl_sai.h | 1 sound/soc/fsl/imx-es8328.c | 12 sound/soc/qcom/lpass-cpu.c | 16 sound/soc/qcom/lpass-platform.c | 3 tools/perf/builtin-stat.c | 4 tools/perf/util/intel-pt.c | 8 tools/testing/radix-tree/idr-test.c | 29 + tools/testing/selftests/bpf/progs/test_sysctl_loop1.c | 4 tools/testing/selftests/bpf/progs/test_sysctl_loop2.c | 4 tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-inter-event-combined-hist.tc | 8 tools/testing/selftests/net/config | 1 tools/testing/selftests/net/forwarding/vxlan_asymmetric.sh | 10 tools/testing/selftests/net/forwarding/vxlan_symmetric.sh | 10 tools/testing/selftests/net/rtnetlink.sh | 5 tools/testing/selftests/powerpc/eeh/eeh-basic.sh | 9 428 files changed, 3304 insertions(+), 1731 deletions(-)
Abel Vesa (1):
clk: imx8mq: Fix usdhc parents order
Abhishek Pandit-Subedi (1):
Bluetooth: Only mark socket zapped after unlocking
Adam Goode (1):
media: uvcvideo: Ensure all probed info is returned to v4l2
Aditya Pakki (1):
media: st-delta: Fix reference count leak in delta_run_work
Adrian Hunter (1):
perf intel-pt: Fix "context_switch event has no tid" error
Al Grant (1):
perf: correct SNOOPX field offset
Alex Dewar (2):
staging: emxx_udc: Fix passing of NULL to dma_alloc_coherent()
VMCI: check return value of get_user_pages_fast() for errors
Alex Williamson (1):
vfio/pci: Clear token on bypass registration failure
Alexander Aring (1):
fs: dlm: fix configfs memory leak
Alexei Starovoitov (1):
mm/error_inject: Fix allow_error_inject function signatures.
Amit Singh Tomar (1):
arm64: dts: actions: limit address range for pinctrl node
Andrei Botila (1):
crypto: caam/qi - add fallback for XTS with more than 8B IV
Andrii Nakryiko (1):
fs: fix NULL dereference due to data race in prepend_path()
Andy Shevchenko (1):
dmaengine: dmatest: Check list for emptiness before access its last entry
Aneesh Kumar K.V (1):
powerpc/book3s64/hash/4k: Support large linear mapping range with 4K
Arnd Bergmann (2):
mtd: lpddr: fix excessive stack usage with clang
ARM: s3c24xx: fix mmc gpio lookup tables
Artem Savkov (1):
pty: do tty_flip_buffer_push without port->lock in pty_write
Arvind Sankar (2):
x86/fpu: Allow multiple bits in clearcpuid= parameter x86/asm: Replace __force_order with a memory clobber
Aswath Govindraju (1):
spi: omap2-mcspi: Improve performance waiting for CHSTAT
Athira Rajeev (1):
powerpc/perf: Exclude pmc5/6 from the irrelevant PMU group constraints
Bob Pearson (2):
RDMA/rxe: Fix skb lifetime in rxe_rcv_mcast_pkt() RDMA/rxe: Handle skb_clone() failure in rxe_recv.c
Borislav Petkov (2):
x86/mce: Add Skylake quirk for patrol scrub reported errors x86/mce: Make mce_rdmsrl() panic on an inaccessible MSR
Brooke Basile (1):
ath9k: hif_usb: fix race condition between usb_get_urb() and usb_kill_anchored_urbs()
Bryan O'Donoghue (1):
wcn36xx: Fix reported 802.11n rx_highest rate wcn3660/wcn3680
Can Guo (1):
scsi: ufs: ufs-qcom: Fix race conditions caused by ufs_qcom_testbus_config()
Chris Chiu (1):
rtl8xxxu: prevent potential memory leak
Christian Eggers (2):
socket: fix option SO_TIMESTAMPING_NEW
eeprom: at25: set minimum read/write access stride to 1
Christoph Hellwig (1):
PM: hibernate: remove the bogus call to get_gendisk() in software_resume()
Christophe JAILLET (6):
crypto: ixp4xx - Fix the size used in a 'dma_free_coherent()' call
media: staging/intel-ipu3: css: Correctly reset some memory
ath10k: Fix the size used in a 'dma_free_coherent()' call in an error handling path
mwifiex: Do not use GFP_KERNEL in atomic context
staging: rtl8192u: Do not use GFP_KERNEL in atomic context
scsi: qla4xxx: Fix an error handling path in 'qla4xxx_get_host_stats()'
Claudiu Beznea (2):
clk: at91: clk-main: update key before writing AT91_CKGR_MOR
ARM: at91: pm: of_node_put() after its usage
Colin Ian King (5):
x86/events/amd/iommu: Fix sizeof mismatch
video: fbdev: vga16fb: fix setting of pixclock because a pass-by-value error
qtnfmac: fix resource leaks on unsupported iftype error return path IB/rdmavt: Fix sizeof mismatch
lightnvm: fix out-of-bounds write to array devices->info[]
Cong Wang (4):
tipc: fix the skb_unshare() in tipc_buf_append()
can: j1935: j1939_tp_tx_dat_new(): fix missing initialization of skbcnt
net_sched: remove a redundant goto chain check
ip_gre: set dev->hard_header_len and dev->needed_headroom properly
Connor McAdams (2):
ALSA: hda/ca0132 - Add AE-7 microphone selection commands.
ALSA: hda/ca0132 - Add new quirk ID for SoundBlaster AE-7.
Cristian Ciocaltea (1):
ARM: dts: owl-s500: Fix incorrect PPI interrupt specifiers
Dan Aloni (1):
svcrdma: fix bounce buffers for unaligned offsets and multiple pages
Dan Carpenter (11):
ALSA: bebob: potential info leak in hwdep_read()
cifs: remove bogus debug code
ath6kl: prevent potential array overflow in ath6kl_add_new_sta()
ath9k: Fix potential out of bounds in ath9k_htc_txcompletion_cb()
HID: roccat: add bounds checking in kone_sysfs_write_settings()
ath6kl: wmi: prevent a shift wrapping bug in ath6kl_wmi_delete_pstream_cmd()
mfd: sm501: Fix leaks in probe()
scsi: be2iscsi: Fix a theoretical leak in beiscsi_create_eqs()
rpmsg: smd: Fix a kobj leak in in qcom_smd_parse_edge()
Input: imx6ul_tsc - clean up some errors in imx6ul_tsc_resume()
memory: omap-gpmc: Fix a couple off by ones
Daniel Jordan (1):
module: statically initialize init section freeing data
Daniel Thompson (1):
kdb: Fix pager search for multi-line strings
Daniel Wagner (1):
scsi: qla2xxx: Warn if done() or free() are called on an already freed srb
Darrick J. Wong (5):
xfs: limit entries returned when counting fsmap records
xfs: fix deadlock and streamline xfs_getfsmap performance
xfs: fix high key handling in the rt allocator's query_range function
ext4: limit entries returned when counting fsmap records
xfs: make sure the rt allocator doesn't run off the end
David Ahern (1):
ipv4: Restore flowi4_oif update before call to xfrm_lookup_route
David Milburn (1):
nvme-pci: disable the write zeros command for Intel 600P/P3100
David Wilder (2):
ibmveth: Switch order of ibmveth_helper calls.
ibmveth: Identify ingress large send packets.
Davide Caratti (1):
net/sched: act_tunnel_key: fix OOB write in case of IPv6 ERSPAN tunnels
Defang Bo (1):
nfc: Ensure presence of NFC_ATTR_FIRMWARE_NAME attribute in nfc_genl_fw_download()
Dinghao Liu (13):
EDAC/i5100: Fix error handling order in i5100_init_one()
media: omap3isp: Fix memleak in isp_probe
media: mx2_emmaprp: Fix memleak in emmaprp_probe drm/crc-debugfs: Fix memleak in crc_control_write
video: fbdev: radeon: Fix memleak in radeonfb_pci_register
watchdog: Fix memleak in watchdog_cdev_register
watchdog: Use put_device on error
media: vsp1: Fix runtime PM imbalance on error
media: platform: s3c-camif: Fix runtime PM imbalance on error
media: platform: sti: hva: Fix runtime PM imbalance on error
media: bdisp: Fix runtime PM imbalance on error
media: venus: core: Fix runtime PM imbalance in venus_probe
Bluetooth: btusb: Fix memleak in btusb_mtk_submit_wmt_recv_urb
Dirk Behme (1):
i2c: rcar: Auto select RESET_CONTROLLER
Dmitry Torokhov (1):
HID: hid-input: fix stylus battery reporting
Doug Horn (1):
Fix use after free in get_capset_info callback.
Dylan Hung (1):
net: ftgmac100: Fix Aspeed ast2600 TX hang issue
Eli Billauer (1):
usb: core: Solve race condition in anchor cleanup functions
Emmanuel Grumbach (1):
iwlwifi: mvm: split a print to avoid a WARNING in ROC
Eran Ben Elisha (1):
net/mlx5: Don't call timecounter cyc2time directly from 1PPS flow
Eric Biggers (1):
reiserfs: only call unlock_new_inode() if I_NEW
Eric Dumazet (2):
icmp: randomize the global rate limiter
quota: clear padding in v2r1_mem2diskdqb()
Evgeny Novikov (1):
mtd: rawnand: vf610: disable clk on error handling path in probe
Fabrice Gasnier (1):
iio: adc: stm32-adc: fix runtime autosuspend delay when slow polling
Finn Thain (5):
powerpc/tau: Use appropriate temperature sample interval powerpc/tau: Convert from timer to workqueue powerpc/tau: Remove duplicated set_thresholds() call powerpc/tau: Check processor type before enabling TAU interrupt powerpc/tau: Disable TAU between measurements
Francesco Ruggeri (1):
netfilter: conntrack: connection timeout after re-register
Ganesh Goudar (1):
powerpc/pseries: Avoid using addr_to_pfn in real mode
Geert Uytterhoeven (2):
arm64: dts: renesas: r8a77990: Fix MSIOF1 DMA channels
arm64: dts: renesas: r8a774c0: Fix MSIOF1 DMA channels
George Kennedy (1):
fbmem: add margin check to fb_check_caps()
Greg Kroah-Hartman (1):
Linux 5.4.73
Guenter Roeck (2):
hwmon: (pmbus/max34440) Fix status register reads for MAX344{51,60,61}
watchdog: sp5100: Fix definition of EFCH_PM_DECODEEN3
Guillaume Tucker (1):
ARM: 9007/1: l2c: fix prefetch bits init in L2X0_AUX_CTRL using DT values
Hamish Martin (1):
usb: ohci: Default to per-port over-current protection
Hanks Chen (1):
clk: mediatek: add UART0 clock support
Hans de Goede (4):
pwm: lpss: Fix off by one error in base_unit math in pwm_lpss_prepare()
pwm: lpss: Add range limit check for the base_unit register value
i2c: core: Restore acpi_walk_dep_device_list() getting called after registering the ACPI i2c devs
HID: ite: Add USB id match for Acer One S1003 keyboard dock
Hauke Mehrtens (3):
mtd: spinand: gigadevice: Only one dummy byte in QUADIO
mtd: spinand: gigadevice: Add QE Bit
pwm: img: Fix null pointer access in probe
Heiner Kallweit (2):
r8169: fix data corruption issue on RTL8402
r8169: fix operation under forced interrupt threading
Herat Ramani (1):
cxgb4: handle 4-tuple PEDIT to NAT mode translation
Herbert Xu (2):
crypto: algif_aead - Do not set MAY_BACKLOG on the async path
crypto: algif_skcipher - EBUSY on aio should be an error
Horia Geantă (1):
ARM: dts: imx6sl: fix rng node
Huang Guobin (1):
net: wilc1000: clean up resource in error path of init mon interface
Hui Wang (1):
ALSA: hda/realtek - set mic to auto detect on a HP AIO machine
Håkon Bugge (2):
IB/mlx4: Fix starvation in paravirt mux/demux IB/mlx4: Adjust delayed work when a dup is observed
Ido Schimmel (2):
nexthop: Fix performance regression in nexthop deletion
selftests: forwarding: Add missing 'rp_filter' configuration
Jamie Iles (1):
f2fs: wait for sysfs kobject removal before freeing f2fs_sb_info
Jan Kara (3):
udf: Limit sparing table size
udf: Avoid accessing uninitialized data on failed inode read
reiserfs: Fix memory leak in reiserfs_parse_options()
Jann Horn (1):
binder: Remove bogus warning on failed same-process transaction
Jason Gunthorpe (8):
RDMA/ucma: Fix locking for ctx->events_reported
RDMA/ucma: Add missing locking around rdma_leave_multicast() RDMA/umem: Fix signature of stub ib_umem_find_best_pgsz() RDMA/umem: Fix ib_umem_find_best_pgsz() for mappings that cross a page boundary RDMA/umem: Prevent small pages from being returned by ib_umem_find_best_pgsz() RDMA/cma: Remove dead code for kernel rdmacm multicast
RDMA/cma: Consolidate the destruction of a cma_multicast in one place RDMA/mlx5: Disable IB_DEVICE_MEM_MGT_EXTENSIONS if IB_WR_REG_MR can't work
Jassi Brar (1):
mailbox: avoid timer start from callback
Jeremy Szu (1):
ALSA: hda/realtek - The front Mic on a HP machine doesn't work
Jernej Skrabec (1):
ARM: dts: sun8i: r40: bananapi-m2-ultra: Fix dcdc1 regulator
Jerome Brunet (1):
arm64: dts: meson: vim3: correct led polarity
Jian-Hong Pan (1):
ALSA: hda/realtek: Enable audio jacks of ASUS D700SA with ALC887
Jin Yao (1):
perf stat: Skip duration_time in setup_system_wide
Jing Xiangfeng (5):
i3c: master: Fix error return in cdns_i3c_master_probe()
rapidio: fix the missed put_device() for rio_mport_add_riodev
scsi: bfa: Fix error return in bfad_pci_init()
scsi: mvumi: Fix error return in mvumi_io_attach()
scsi: ibmvfc: Fix error return in ibmvfc_probe()
Joakim Zhang (1):
can: flexcan: flexcan_chip_stop(): add error handling and propagate error value
Johan Hovold (1):
USB: cdc-acm: handle broken union descriptors
Johannes Berg (1):
nl80211: fix non-split wiphy information
John Donnelly (1):
scsi: target: tcmu: Fix warning: 'page' may be used uninitialized
Jonathan Lemon (1):
mlx4: handle non-napi callers to napi_poll
Julian Anastasov (1):
ipvs: clear skb->tstamp in forwarding path
Julian Wiedmann (1):
s390/qeth: don't let HW override the configured port role
Juri Lelli (1):
sched/features: Fix !CONFIG_JUMP_LABEL case
Kai Vehmanen (2):
ALSA: hda: fix jack detection with Realtek codecs when in D3
ALSA: hda/hdmi: fix incorrect locking in hdmi_pcm_close
Kaige Li (1):
NTB: hw: amd: fix an issue about leak system resources
Kajol Jain (1):
powerpc/perf/hv-gpci: Fix starting index value
Kamal Heib (1):
RDMA/ipoib: Set rtnl_link_ops for ipoib interfaces
Kan Liang (3):
perf/x86/intel/ds: Fix x86_pmu_stop warning for large PEBS perf/x86/intel/uncore: Update Ice Lake uncore units perf/x86/intel/uncore: Reduce the number of CBOX counters
Karsten Graul (1):
net/smc: fix valid DMBE buffer sizes
Ke Li (1):
net: Properly typecast int values to set sk_max_pacing_rate
Keita Suzuki (2):
misc: rtsx: Fix memory leak in rtsx_pci_probe
brcmsmac: fix memory leak in wlc_phy_attach_lcnphy
Kevin Barnett (1):
scsi: smartpqi: Avoid crashing kernel for controller issues
Konrad Dybcio (1):
clk: qcom: gcc-sdm660: Fix wrong parent_map
Krzysztof Kozlowski (10):
EDAC/aspeed: Fix handling of platform_get_irq() error EDAC/ti: Fix handling of platform_get_irq() error
maiblox: mediatek: Fix handling of platform_get_irq() error
Input: ep93xx_keypad - fix handling of platform_get_irq() error
Input: omap4-keypad - fix handling of platform_get_irq() error
Input: twl4030_keypad - fix handling of platform_get_irq() error
Input: sun4i-ps2 - fix handling of platform_get_irq() error
memory: fsl-corenet-cf: Fix handling of platform_get_irq() error
arm64: dts: imx8mq: Add missing interrupts to GPC
soc: fsl: qbman: Fix return value on success
Lad Prabhakar (3):
media: i2c: ov5640: Remain in power down for DVP mode unless streaming
media: i2c: ov5640: Separate out mipi configuration from s_power
media: i2c: ov5640: Enable data pins on poweron for DVP mode
Lang Cheng (1):
RDMA/hns: Add a check for current state before modifying QP
Laurent Pinchart (7):
media: uvcvideo: Set media controller entity functions
media: uvcvideo: Silence shift-out-of-bounds warning
media: rcar_drif: Fix fwnode reference leak when parsing DT
media: rcar_drif: Allocate v4l2_async_subdev dynamically
media: rcar-csi2: Allocate v4l2_async_subdev dynamically
drm: panel: Fix bus format for OrtusTech COM43H4M85ULC panel
drm: panel: Fix bpc for OrtusTech COM43H4M85ULC panel
Leon Romanovsky (2):
RDMA/mlx5: Fix potential race between destroy and CQE poll
overflow: Include header file with SIZE_MAX declaration
Libing Zhou (1):
x86/nmi: Fix nmi_handle() duration miscalculation
Lijun Ou (1):
RDMA/hns: Set the unsupported wr opcode
Lijun Pan (2):
ibmvnic: save changed mac address to adapter->mac_addr
ibmvnic: set up 200GBPS speed
Linus Walleij (4):
net: dsa: rtl8366: Check validity of passed VLANs
net: dsa: rtl8366: Refactor VLAN/PVID init
net: dsa: rtl8366: Skip PVID setting if not requested
net: dsa: rtl8366rb: Support all 4096 VLANs
Lorenzo Colitti (3):
usb: gadget: f_ncm: fix ncm_bitrate for SuperSpeed and above.
usb: gadget: u_ether: enable qmult on SuperSpeed Plus as well
usb: gadget: f_ncm: allow using NCM in SuperSpeed Plus gadgets.
Lucas Stach (1):
can: m_can_platform: don't call m_can_class_suspend in runtime suspend
Maciej Fijalkowski (1):
bpf: Limit caller's stack depth 256 for subprogs with tailcalls
Maciej Żenczykowski (1):
net/ipv4: always honour route mtu during forwarding
Madhuparna Bhowmik (1):
crypto: picoxcell - Fix potential race condition bug
Marc Kleine-Budde (1):
net: j1939: j1939_session_fresh_new(): fix missing initialization of skbcnt
Marek Vasut (2):
net: fec: Fix phy_device lookup for phy_reset_after_clk_enable()
net: fec: Fix PHY init after phy_reset_after_clk_enable()
Mark Salter (2):
drivers/perf: xgene_pmu: Fix uninitialized resource struct drivers/perf: thunderx2_pmu: Fix memory resource error handling
Mark Tomlinson (2):
mtd: mtdoops: Don't write panic data twice
PCI: iproc: Set affinity mask on MSI interrupts
Martijn de Gouw (1):
SUNRPC: fix copying of multiple pages in gss_read_proxy_verf()
Martin Blumenstingl (1):
ARM: dts: meson8: remove two invalid interrupt lines from the GPU node
Mathias Nyman (1):
xhci: don't create endpoint debugfs entry before ring buffer is set.
Matthew Rosato (2):
PCI/IOV: Mark VFs as not implementing PCI_COMMAND_MEMORY vfio/pci: Decouple PCI_COMMAND_MEMORY bit checks from is_virtfn
Matthew Wilcox (Oracle) (4):
iomap: Clear page error before beginning a write
ida: Free allocated bitmap in error path mm/page_owner: change split_page_owner to take a count
ramfs: fix nommu mmap with gaps in the page cache
Mauro Carvalho Chehab (2):
media: saa7134: avoid a shift overflow
usb: dwc3: simple: add support for Hikey 970
Melissa Wen (1):
drm/vkms: fix xrgb on compute crc
Miaohe Lin (1):
mm/swapfile.c: fix potential memory leak in sys_swapon
Michal Kalderon (4):
RDMA/qedr: Fix qp structure memory leak
RDMA/qedr: Fix use of uninitialized field
RDMA/qedr: Fix return code if accept is called on a destroyed qp RDMA/qedr: Fix inline size returned for iWARP
Michal Simek (1):
arm64: dts: zynqmp: Remove additional compatible string for i2c IPs
Michał Mirosław (1):
regulator: resolve supply after creating regulator
Minas Harutyunyan (1):
usb: dwc2: Fix INTR OUT transfers in DDMA mode.
Miquel Raynal (1):
ASoC: tlv320aic32x4: Fix bdiv clock rate derivation
Nathan Chancellor (1):
usb: dwc2: Fix parameter type in function pointer prototype
Nathan Lynch (1):
powerpc/pseries: explicitly reschedule during drmem_lmb list traversal
Navid Emamdoost (1):
clk: bcm2835: add missing release if devm_clk_hw_register fails
Neal Cardwell (1):
tcp: fix to update snd_wl1 in bulk receiver fast path
Necip Fazil Yildiran (2):
pinctrl: bcm: fix kconfig dependency warning when !GPIOLIB
arc: plat-hsdk: fix kconfig dependency warning when !RESET_CONTROLLER
Neil Armstrong (1):
drm/panfrost: add amlogic reset quirk callback
Nicholas Mc Guire (2):
powerpc/pseries: Fix missing of_node_put() in rng_init() powerpc/icp-hv: Fix missing of_node_put() in success path
Nicholas Piggin (1):
powerpc/64s/radix: Fix mm_cpumask trimming race vs kthread_use_mm
Nilesh Javali (2):
scsi: qedi: Protect active command list to avoid list corruption
scsi: qedi: Fix list_del corruption while removing active I/O
Oliver Neukum (2):
media: ati_remote: sanity check for both endpoints
USB: cdc-wdm: Make wdm_flush() interruptible and add wdm_fsync().
Oliver O'Halloran (1):
selftests/powerpc: Fix eeh-basic.sh exit codes
Ong Boon Leong (1):
net: stmmac: use netif_tx_start|stop_all_queues() function
Pablo Neira Ayuso (2):
netfilter: nf_log: missing vlan offload tag and proto
netfilter: nf_fwd_netdev: clear timestamp in forwarding path
Pali Rohár (3):
cpufreq: armada-37xx: Add missing MODULE_DEVICE_TABLE
PCI: aardvark: Check for errors from pci_bridge_emul_init() call
mmc: sdio: Check for CISTPL_VERS_1 buffer size
Parshuram Thombare (1):
i3c: master add i3c_master_attach_boardinfo to preserve boardinfo
Paul Kocialkowski (1):
media: ov5640: Correct Bit Div register in clock tree diagram
Pavel Machek (2):
crypto: ccp - fix error handling
media: firewire: fix memory leak
Peilin Ye (1):
ipvs: Fix uninit-value in do_ip_vs_set_ctl()
Peng Fan (2):
tty: serial: lpuart: fix lpuart32_write usage
tty: serial: fsl_lpuart: fix lpuart32_poll_get_char
Peter Chen (1):
usb: cdns3: gadget: free interrupt after gadget has deleted
Po-Hsu Lin (1):
selftests: rtnetlink: load fou module for kci_test_encap_fou() test
Qian Cai (1):
iomap: fix WARN_ON_ONCE() from unprivileged users
Qiang Yu (1):
arm64: dts: allwinner: h5: remove Mali GPU PMU module
Qiu Wenbo (1):
ALSA: hda/realtek - Add mute Led support for HP Elitebook 845 G7
Qiushi Wu (11):
media: rcar-vin: Fix a reference count leak.
media: rockchip/rga: Fix a reference count leak.
media: platform: fcp: Fix a reference count leak.
media: camss: Fix a reference count leak.
media: s5p-mfc: Fix a reference count leak
media: stm32-dcmi: Fix a reference count leak
media: ti-vpe: Fix a missing check and reference count leak
media: sti: Fix reference count leaks
media: exynos4-is: Fix several reference count leaks due to pm_runtime_get_sync
media: exynos4-is: Fix a reference count leak due to pm_runtime_get_sync
media: exynos4-is: Fix a reference count leak
Rajkumar Manoharan (1):
nl80211: fix OBSS PD min and max offset validation
Ralph Campbell (1):
mm/memcg: fix device private memcg accounting
Robert Hoo (1):
KVM: x86: emulating RDPID failure shall return #UD rather than #GP
Roberto Sassu (1):
ima: Don't ignore errors from crypto_shash_update()
Rohit Maheshwari (1):
net/tls: sendfile fails with ktls offload
Rohit kumar (2):
ASoC: qcom: lpass-platform: fix memory leak
ASoC: qcom: lpass-cpu: fix concurrency issue
Rohith Surabattula (1):
SMB3: Resolve data corruption of TCP server info fields
Roman Bolshakov (1):
scsi: target: core: Add CONTROL field for trace events
Rustam Kovhaev (1):
ntfs: add check for mft record size in superblock
Samuel Holland (1):
Bluetooth: hci_uart: Cancel init work before unregistering
Saurav Kashyap (1):
scsi: qedf: Return SUCCESS if stale rport is encountered
Scott Cheloha (1):
pseries/drmem: don't cache node id in drmem_lmb struct
Sean Christopherson (3):
KVM: nVMX: Reset the segment cache when stuffing guest segs
KVM: nVMX: Reload vmcs01 if getting vmcs12's pages fails
KVM: x86/mmu: Commit zap of remaining invalid pages when recovering lpages
Serge Semin (2):
dmaengine: dw: Add DMA-channels mask cell support
dmaengine: dw: Activate FIFO-mode for memory peripherals only
Shengjiu Wang (1):
ASoC: fsl_sai: Instantiate snd_soc_dai_driver
Sherry Sun (2):
mic: vop: copy data to kernel space then write to io memory
misc: vop: add round_up(x,4) for vring_size to avoid kernel panic
Shyam Prasad N (1):
cifs: Return the error from crypt_message when enc/dec key not found.
Sindhu, Devale (1):
i40iw: Add support to make destroy QP synchronous
Souptick Joarder (3):
drivers/virt/fsl_hypervisor: Fix error handling path
misc: mic: scif: Fix error handling path
rapidio: fix error handling path
Srikar Dronamraju (1):
cpufreq: powernv: Fix frame-size-overflow in powernv_cpufreq_reboot_notifier
Srinivas Kandagatla (3):
slimbus: core: check get_addr before removing laddr ida
slimbus: core: do not enter to clock pause mode in core
slimbus: qcom-ngd-ctrl: disable ngd in qmi server down callback
Stefan Agner (2):
drm: mxsfb: check framebuffer pitch
clk: meson: g12a: mark fclk_div2 as critical
Stephan Gerhold (3):
arm64: dts: qcom: msm8916: Remove one more thermal trip point unit name
arm64: dts: qcom: pm8916: Remove invalid reg size from wcd_codec
arm64: dts: qcom: msm8916: Fix MDP/DSI interrupts
Stephen Boyd (2):
drm/msm: Avoid div-by-zero in dpu_crtc_atomic_check()
clk: rockchip: Initialize hw to error to avoid undefined behavior
Steven Price (1):
drm/panfrost: Ensure GPU quirks are always initialised
Suravee Suthikulpanit (1):
KVM: SVM: Initialize prev_ga_tag before use
Suren Baghdasaryan (1):
mm, oom_adj: don't loop through tasks in __set_oom_adj when not necessary
Suzuki K Poulose (1):
coresight: etm4x: Handle unreachable sink in perf mode
Sylwester Nawrocki (1):
media: Revert "media: exynos4-is: Add missed check for pinctrl_lookup_state()"
Takashi Iwai (1):
ALSA: seq: oss: Avoid mutex lock for a long-time ioctl
Tero Kristo (2):
crypto: omap-sham - fix digcnt register handling with export/import
clk: keystone: sci-clk: fix parsing assigned-clock data during probe
Tetsuo Handa (2):
block: ratelimit handle_bad_sector() message
mwifiex: don't call del_timer_sync() on uninitialized timer
Thomas Gleixner (1):
net: enic: Cure the enic api locking trainwreck
Thomas Pedersen (1):
mac80211: handle lack of sband->bitrates in rates
Thomas Preston (2):
pinctrl: mcp23s08: Fix mcp23x17_regmap initialiser
pinctrl: mcp23s08: Fix mcp23x17 precious range
Tianjia Zhang (6):
crypto: mediatek - Fix wrong return value in mtk_desc_ring_alloc() drm/amd/display: Fix wrong return value in dm_update_plane_state()
scsi: qla2xxx: Fix wrong return value in qlt_chk_unresolv_exchg()
scsi: qla2xxx: Fix wrong return value in qla_nvme_register_hba()
scsi: csiostor: Fix wrong return value in csio_hw_prep_fw()
ipmi_si: Fix wrong return value in try_smi_init()
Timothée COCAULT (1):
netfilter: ebtables: Fixes dropping of small packets in bridge nat
Tingwei Zhang (1):
coresight: etm: perf: Fix warning caused by etm_setup_aux failure
Tobias Jordan (1):
lib/crc32.c: fix trivial typo in preprocessor condition
Todd Kjos (1):
binder: fix UAF when releasing todo list
Tom Rix (8):
media: tuner-simple: fix regression in simple_set_radio_freq
media: m5mols: Check function pointer in m5mols_sensor_power
media: tc358743: initialize variable
media: tc358743: cleanup tc358743_cec_isr
brcmfmac: check ndev pointer
drm/gma500: fix error check
video: fbdev: sis: fix null ptr dereference
mwifiex: fix double free
Tom Zanussi (1):
selftests/ftrace: Change synthetic event name for inter-event-combined test
Tomas Henzl (1):
scsi: mpt3sas: Fix sync irqs
Tong Zhang (2):
tty: serial: earlycon dependency
tty: ipwireless: fix error handling
Tony Lindgren (1):
ARM: OMAP2+: Restore MPU power domain if cpu_cluster_pm_enter() fails
Tyrel Datwyler (1):
tty: hvcs: Don't NULL tty->driver_data until hvcs_cleanup()
Tzu-En Huang (1):
rtw88: increse the size of rx buffer size
Vadim Pasternak (1):
platform/x86: mlx-platform: Remove PSU EEPROM configuration
Vadym Kochan (1):
nvmem: core: fix possibly memleak when use nvmem_cell_info_to_nvmem_cell()
Valentin Vidic (2):
net: korina: fix kfree of rx/tx descriptor array
net: korina: cast KSEG0 address to pointer in kfree
Vasant Hegde (1):
powerpc/powernv/dump: Fix race while processing OPAL dump
Venkateswara Naralasetty (1):
ath10k: provide survey info as accumulated data
Vikash Garodia (1):
media: venus: fixes for list corruption
Vinay Kumar Yadav (3):
chelsio/chtls: fix socket lock chelsio/chtls: correct netdevice for vlan interface chelsio/chtls: correct function return and return type
Vincent Mailhol (1):
usb: cdc-acm: add quirk to blacklist ETAS ES58X devices
Viresh Kumar (1):
opp: Prevent memory leak in dev_pm_opp_attach_genpd()
Wang Yufen (1):
brcm80211: fix possible memleak in brcmf_proto_msgbuf_attach
Weihang Li (1):
RDMA/hns: Fix missing sq_sig_type when querying QP
Wenpeng Liang (1):
RDMA/hns: Fix the wrong value of rnr_retry when querying qp
Wilken Gottwalt (1):
net: usb: qmi_wwan: add Cellient MPL200 card
Xiaoliang Pang (1):
cypto: mediatek - fix leaks in mtk_desc_ring_alloc
Xiaolong Huang (1):
media: media/pci: prevent memory leak in bttv_probe
Xiaoyang Xu (1):
vfio iommu type1: Fix memory leak in vfio_iommu_type1_pin_pages
Xie He (2):
net: hdlc: In hdlc_rcv, check to make sure dev is an HDLC device
net: hdlc_raw_eth: Clear the IFF_TX_SKB_SHARING flag after calling ether_setup
Xunlei Pang (1):
sched/fair: Fix wrong cpu selecting from isolated domain
Yang Yang (1):
blk-mq: move cancel of hctx->run_work to the front of blk_exit_queue
Yonghong Song (2):
net: fix pos incrementment in ipv6_route_seq_next selftests/bpf: Fix test_sysctl_loop{1, 2} failure due to clang change
Yu Chen (1):
usb: dwc3: Add splitdisable quirk for Hisilicon Kirin Soc
Yu Kuai (1):
ASoC: fsl: imx-es8328: add missing put_device() call in imx_es8328_probe()
YueHaibing (2):
Input: stmfts - fix a & vs && typo
memory: omap-gpmc: Fix build error without CONFIG_OF
Zekun Shen (1):
ath10k: check idx validity in __ath10k_htt_rx_ring_fill_n()
Zhao Heming (1):
md/bitmap: fix memory leak of temporary bitmap
Zhenzhong Duan (1):
drm/msm/a6xx: fix a potential overflow issue
Zqiang (1):
usb: gadget: function: printer: fix use-after-free in __lock_acquire
[email protected] (1):
backlight: sky81452-backlight: Fix refcount imbalance on error
zhenwei pi (1):
nvmet: fix uninitialized work for zero kato
Łukasz Stelmach (2):
spi: spi-s3c64xx: swap s3c64xx_spi_set_cs() and s3c64xx_enable_datapath()
spi: spi-s3c64xx: Check return values
Greg Kroah-Hartman
maintainerDocumentation/admin-guide/kernel-parameters.txt +1 -1
@@ -567,7 +567,7 @@ loops can be debugged more effectively on production systems. - clearcpuid=BITNUM [X86] + clearcpuid=BITNUM[,BITNUM...] [X86] Disable CPUID feature X for the kernel. See arch/x86/include/asm/cpufeatures.h for the valid bit numbers. Note the Linux specific bits are not necessarily
Documentation/networking/ip-sysctl.txt +3 -1
@@ -1000,12 +1000,14 @@ icmp_ratelimit - INTEGER icmp_msgs_per_sec - INTEGER Limit maximal number of ICMP packets sent per second from this host. Only messages whose type matches icmp_ratemask (see below) are - controlled by this limit. + controlled by this limit. For security reasons, the precise count + of messages per second is randomized. Default: 1000 icmp_msgs_burst - INTEGER icmp_msgs_per_sec controls number of ICMP packets sent per second, while icmp_msgs_burst controls the burst size of these packets. + For security reasons, the precise burst size is randomized. Default: 50 icmp_ratemask - INTEGER
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 4 -SUBLEVEL = 72 +SUBLEVEL = 73 EXTRAVERSION = NAME = Kleptomaniac Octopus
arch/arc/plat-hsdk/Kconfig +1 -0
@@ -8,5 +8,6 @@ menuconfig ARC_SOC_HSDK select ARC_HAS_ACCL_REGS select ARC_IRQ_NO_AUTOSAVE select CLK_HSDK + select RESET_CONTROLLER select RESET_HSDK select HAVE_PCI
arch/arm/boot/dts/imx6sl.dtsi +2 -0
@@ -936,8 +936,10 @@ }; rngb: rngb@21b4000 { + compatible = "fsl,imx6sl-rngb", "fsl,imx25-rngb"; reg = <0x021b4000 0x4000>; interrupts = <0 5 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&clks IMX6SL_CLK_DUMMY>; }; weim: weim@21b8000 {
arch/arm/boot/dts/meson8.dtsi +0 -2
@@ -230,8 +230,6 @@ <GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 170 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 171 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 172 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 173 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>,
arch/arm/boot/dts/owl-s500.dtsi +3 -3
@@ -84,21 +84,21 @@ global_timer: timer@b0020200 { compatible = "arm,cortex-a9-global-timer"; reg = <0xb0020200 0x100>; - interrupts = <GIC_PPI 0 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_EDGE_RISING)>; + interrupts = <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_EDGE_RISING)>; status = "disabled"; }; twd_timer: timer@b0020600 { compatible = "arm,cortex-a9-twd-timer"; reg = <0xb0020600 0x20>; - interrupts = <GIC_PPI 2 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_EDGE_RISING)>; + interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_EDGE_RISING)>; status = "disabled"; }; twd_wdt: wdt@b0020620 { compatible = "arm,cortex-a9-twd-wdt"; reg = <0xb0020620 0xe0>; - interrupts = <GIC_PPI 3 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_EDGE_RISING)>; + interrupts = <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_EDGE_RISING)>; status = "disabled"; };
arch/arm/boot/dts/sun8i-r40-bananapi-m2-ultra.dts +5 -5
@@ -223,16 +223,16 @@ }; ®_dc1sw { - regulator-min-microvolt = <3000000>; - regulator-max-microvolt = <3000000>; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; regulator-name = "vcc-gmac-phy"; }; ®_dcdc1 { regulator-always-on; - regulator-min-microvolt = <3000000>; - regulator-max-microvolt = <3000000>; - regulator-name = "vcc-3v0"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-name = "vcc-3v3"; }; ®_dcdc2 {
arch/arm/mach-at91/pm.c +1 -0
@@ -777,6 +777,7 @@ static void __init at91_pm_init(void (*pm_idle)(void)) pmc_np =of_find_matching_node_and_match (NULL , atmel_pmc_ids, &of_id); soc_pm.data.pmc =of_iomap (pmc_np,0 ); +of_node_put (pmc_np);if (!soc_pm.data.pmc) {pr_err ("AT91: PM not supported, PMC not found\n" );return ;
arch/arm/mach-omap2/cpuidle44xx.c +3 -1
@@ -174,8 +174,10 @@ static int omap_enter_idle_coupled(struct cpuidle_device *dev,*/ if (mpuss_can_lose_context) { error =cpu_cluster_pm_enter (); -if (error) +if (error) { +omap_set_pwrdm_state (mpu_pd,PWRDM_POWER_ON ); goto cpu_cluster_pm_out; + } } }
arch/arm/mach-s3c24xx/mach-at2440evb.c +1 -1
@@ -143,7 +143,7 @@ static struct gpiod_lookup_table at2440evb_mci_gpio_table = { .dev_id = "s3c2410-sdi", .table = {/* Card detect S3C2410_GPG(10) */ - GPIO_LOOKUP("GPG", 10, "cd", GPIO_ACTIVE_LOW), + GPIO_LOOKUP("GPIOG", 10, "cd", GPIO_ACTIVE_LOW), { }, }, };
arch/arm/mach-s3c24xx/mach-h1940.c +2 -2
@@ -468,9 +468,9 @@ static struct gpiod_lookup_table h1940_mmc_gpio_table = { .dev_id = "s3c2410-sdi", .table = {/* Card detect S3C2410_GPF(5) */ -GPIO_LOOKUP ("GPF" ,5 ,"cd" ,GPIO_ACTIVE_LOW ), +GPIO_LOOKUP ("GPIOF" ,5 ,"cd" ,GPIO_ACTIVE_LOW ),/* Write protect S3C2410_GPH(8) */ - GPIO_LOOKUP("GPH", 8, "wp", GPIO_ACTIVE_LOW), + GPIO_LOOKUP("GPIOH", 8, "wp", GPIO_ACTIVE_LOW), { }, }, };
arch/arm/mach-s3c24xx/mach-mini2440.c +2 -2
@@ -244,9 +244,9 @@ static struct gpiod_lookup_table mini2440_mmc_gpio_table = { .dev_id = "s3c2410-sdi", .table = {/* Card detect S3C2410_GPG(8) */ -GPIO_LOOKUP ("GPG" ,8 ,"cd" ,GPIO_ACTIVE_LOW ), +GPIO_LOOKUP ("GPIOG" ,8 ,"cd" ,GPIO_ACTIVE_LOW ),/* Write protect S3C2410_GPH(8) */ - GPIO_LOOKUP("GPH", 8, "wp", GPIO_ACTIVE_HIGH), + GPIO_LOOKUP("GPIOH", 8, "wp", GPIO_ACTIVE_HIGH), { }, }, };
arch/arm/mach-s3c24xx/mach-n30.c +2 -2
@@ -359,9 +359,9 @@ static struct gpiod_lookup_table n30_mci_gpio_table = { .dev_id = "s3c2410-sdi", .table = {/* Card detect S3C2410_GPF(1) */ -GPIO_LOOKUP ("GPF" ,1 ,"cd" ,GPIO_ACTIVE_LOW ), +GPIO_LOOKUP ("GPIOF" ,1 ,"cd" ,GPIO_ACTIVE_LOW ),/* Write protect S3C2410_GPG(10) */ - GPIO_LOOKUP("GPG", 10, "wp", GPIO_ACTIVE_LOW), + GPIO_LOOKUP("GPIOG", 10, "wp", GPIO_ACTIVE_LOW), { }, }, };
arch/arm/mach-s3c24xx/mach-rx1950.c +2 -2
@@ -567,9 +567,9 @@ static struct gpiod_lookup_table rx1950_mmc_gpio_table = { .dev_id = "s3c2410-sdi", .table = {/* Card detect S3C2410_GPF(5) */ -GPIO_LOOKUP ("GPF" ,5 ,"cd" ,GPIO_ACTIVE_LOW ), +GPIO_LOOKUP ("GPIOF" ,5 ,"cd" ,GPIO_ACTIVE_LOW ),/* Write protect S3C2410_GPH(8) */ - GPIO_LOOKUP("GPH", 8, "wp", GPIO_ACTIVE_LOW), + GPIO_LOOKUP("GPIOH", 8, "wp", GPIO_ACTIVE_LOW), { }, }, };
arch/arm/mm/cache-l2x0.c +12 -4
@@ -1249,20 +1249,28 @@ static void __init l2c310_of_parse(const struct device_node *np, ret =of_property_read_u32 (np,"prefetch-data" , &val);if (ret ==0 ) { -if (val) +if (val) { prefetch |=L310_PREFETCH_CTRL_DATA_PREFETCH ; -else + *aux_val |=L310_PREFETCH_CTRL_DATA_PREFETCH ; + }else { prefetch &= ~L310_PREFETCH_CTRL_DATA_PREFETCH ; + *aux_val &= ~L310_PREFETCH_CTRL_DATA_PREFETCH ; + } + *aux_mask &= ~L310_PREFETCH_CTRL_DATA_PREFETCH ; }else if (ret != -EINVAL ) {pr_err ("L2C-310 OF prefetch-data property value is missing\n" ); } ret =of_property_read_u32 (np,"prefetch-instr" , &val);if (ret ==0 ) { -if (val) +if (val) { prefetch |=L310_PREFETCH_CTRL_INSTR_PREFETCH ; -else + *aux_val |=L310_PREFETCH_CTRL_INSTR_PREFETCH ; + }else { prefetch &= ~L310_PREFETCH_CTRL_INSTR_PREFETCH ; + *aux_val &= ~L310_PREFETCH_CTRL_INSTR_PREFETCH ; + } + *aux_mask &= ~L310_PREFETCH_CTRL_INSTR_PREFETCH ; }else if (ret != -EINVAL ) {pr_err ("L2C-310 OF prefetch-instr property value is missing\n" ); }
arch/arm64/boot/dts/actions/s700.dtsi +1 -1
@@ -231,7 +231,7 @@ pinctrl: pinctrl@e01b0000 { compatible = "actions,s700-pinctrl"; - reg = <0x0 0xe01b0000 0x0 0x1000>; + reg = <0x0 0xe01b0000 0x0 0x100>; clocks = <&cmu CLK_GPIO>; gpio-controller; gpio-ranges = <&pinctrl 0 0 136>;
arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi +2 -4
@@ -155,8 +155,7 @@ <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>; + <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "gp", "gpmmu", "pp",
@@ -167,8 +166,7 @@ "pp2", "ppmmu2", "pp3", - "ppmmu3", - "pmu"; + "ppmmu3"; clocks = <&ccu CLK_BUS_GPU>, <&ccu CLK_GPU>; clock-names = "bus", "core"; resets = <&ccu RST_BUS_GPU>;
arch/arm64/boot/dts/amlogic/meson-khadas-vim3.dtsi +2 -2
@@ -43,13 +43,13 @@ white { label = "vim3:white:sys"; - gpios = <&gpio_ao GPIOAO_4 GPIO_ACTIVE_LOW>; + gpios = <&gpio_ao GPIOAO_4 GPIO_ACTIVE_HIGH>; linux,default-trigger = "heartbeat"; }; red { label = "vim3:red"; - gpios = <&gpio_expander 5 GPIO_ACTIVE_LOW>; + gpios = <&gpio_expander 5 GPIO_ACTIVE_HIGH>; }; };
arch/arm64/boot/dts/freescale/imx8mq.dtsi +1 -0
@@ -516,6 +516,7 @@ gpc: gpc@303a0000 { compatible = "fsl,imx8mq-gpc"; reg = <0x303a0000 0x10000>; + interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>; interrupt-parent = <&gic>; interrupt-controller; #interrupt-cells = <3>;
arch/arm64/boot/dts/qcom/msm8916.dtsi +5 -5
@@ -175,14 +175,14 @@ }; thermal-zones { - cpu0_1-thermal { + cpu0-1-thermal { polling-delay-passive = <250>; polling-delay = <1000>; thermal-sensors = <&tsens 4>; trips { - cpu0_1_alert0: trip-point@0 { + cpu0_1_alert0: trip-point0 { temperature = <75000>; hysteresis = <2000>; type = "passive";
@@ -205,7 +205,7 @@ }; }; - cpu2_3-thermal { + cpu2-3-thermal { polling-delay-passive = <250>; polling-delay = <1000>;
@@ -934,7 +934,7 @@ reg-names = "mdp_phys"; interrupt-parent = <&mdss>; - interrupts = <0 0>; + interrupts = <0>; clocks = <&gcc GCC_MDSS_AHB_CLK>, <&gcc GCC_MDSS_AXI_CLK>,
@@ -966,7 +966,7 @@ reg-names = "dsi_ctrl"; interrupt-parent = <&mdss>; - interrupts = <4 0>; + interrupts = <4>; assigned-clocks = <&gcc BYTE0_CLK_SRC>, <&gcc PCLK0_CLK_SRC>;
arch/arm64/boot/dts/qcom/pm8916.dtsi +1 -1
@@ -113,7 +113,7 @@ wcd_codec: codec@f000 { compatible = "qcom,pm8916-wcd-analog-codec"; - reg = <0xf000 0x200>; + reg = <0xf000>; reg-names = "pmic-codec-core"; clocks = <&gcc GCC_CODEC_DIGCODEC_CLK>; clock-names = "mclk";
arch/arm64/boot/dts/renesas/r8a774c0.dtsi +2 -3
@@ -1212,9 +1212,8 @@ reg = <0 0xe6ea0000 0 0x0064>; interrupts = <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>; clocks = <&cpg CPG_MOD 210>; - dmas = <&dmac1 0x43>, <&dmac1 0x42>, - <&dmac2 0x43>, <&dmac2 0x42>; - dma-names = "tx", "rx", "tx", "rx"; + dmas = <&dmac0 0x43>, <&dmac0 0x42>; + dma-names = "tx", "rx"; power-domains = <&sysc R8A774C0_PD_ALWAYS_ON>; resets = <&cpg 210>; #address-cells = <1>;
arch/arm64/boot/dts/renesas/r8a77990.dtsi +2 -3
@@ -1168,9 +1168,8 @@ reg = <0 0xe6ea0000 0 0x0064>; interrupts = <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>; clocks = <&cpg CPG_MOD 210>; - dmas = <&dmac1 0x43>, <&dmac1 0x42>, - <&dmac2 0x43>, <&dmac2 0x42>; - dma-names = "tx", "rx", "tx", "rx"; + dmas = <&dmac0 0x43>, <&dmac0 0x42>; + dma-names = "tx", "rx"; power-domains = <&sysc R8A77990_PD_ALWAYS_ON>; resets = <&cpg 210>; #address-cells = <1>;
arch/arm64/boot/dts/xilinx/zynqmp.dtsi +2 -2
@@ -419,7 +419,7 @@ }; i2c0: i2c@ff020000 { - compatible = "cdns,i2c-r1p14", "cdns,i2c-r1p10"; + compatible = "cdns,i2c-r1p14"; status = "disabled"; interrupt-parent = <&gic>; interrupts = <0 17 4>;
@@ -429,7 +429,7 @@ }; i2c1: i2c@ff030000 { - compatible = "cdns,i2c-r1p14", "cdns,i2c-r1p10"; + compatible = "cdns,i2c-r1p14"; status = "disabled"; interrupt-parent = <&gic>; interrupts = <0 18 4>;
arch/powerpc/include/asm/book3s/64/hash-4k.h +6 -7
@@ -13,20 +13,19 @@*/ #define MAX_EA_BITS_PER_CONTEXT 46 -#define REGION_SHIFT (MAX_EA_BITS_PER_CONTEXT - 2)/* -* Our page table limit us to 64TB. Hence for the kernel mapping, -* each MAP area is limited to 16 TB. -* The four map areas are: linear mapping, vmap, IO and vmemmap +* Our page table limit us to 64TB. For 64TB physical memory, we only need 64GB +* of vmemmap space. To better support sparse memory layout, we use 61TB +* linear map range, 1TB of vmalloc, 1TB of I/O and 1TB of vmememmap. */ +#define REGION_SHIFT (40)#define H_KERN_MAP_SIZE (ASM_CONST(1) << REGION_SHIFT)/* -* Define the address range of the kernel non-linear virtual area -* 16TB +* Define the address range of the kernel non-linear virtual area (61TB) */ -#define H_KERN_VIRT_START ASM_CONST(0xc000100000000000) +#define H_KERN_VIRT_START ASM_CONST(0xc0003d0000000000)#ifndef __ASSEMBLY__#define H_PTE_TABLE_SIZE (sizeof(pte_t) << H_PTE_INDEX_SIZE)
arch/powerpc/include/asm/drmem.h +17 -22
@@ -8,14 +8,13 @@#ifndef _ASM_POWERPC_LMB_H#define _ASM_POWERPC_LMB_H +#include <linux/sched.h> +struct drmem_lmb {u64 base_addr;u32 drc_index;u32 aa_index;u32 flags; -#ifdef CONFIG_MEMORY_HOTPLUG -int nid; -#endif }; struct drmem_lmb_info {
@@ -26,8 +25,22 @@ struct drmem_lmb_info {extern struct drmem_lmb_info *drmem_info; +static inline struct drmem_lmb *drmem_lmb_next (struct drmem_lmb *lmb, +const struct drmem_lmb *start) +{ +/* +* DLPAR code paths can take several milliseconds per element +* when interacting with firmware. Ensure that we don't +* unfairly monopolize the CPU. +*/ +if (((++lmb - start) %16 ) ==0 ) +cond_resched (); + +return lmb; +} +#define for_each_drmem_lmb_in_range (lmb, start, end) \ - for ((lmb) = (start); (lmb) < (end); (lmb)++) + for ((lmb) = (start); (lmb) < (end); lmb = drmem_lmb_next(lmb, start))#define for_each_drmem_lmb (lmb) \ for_each_drmem_lmb_in_range((lmb), \
@@ -103,22 +116,4 @@ static inline void invalidate_lmb_associativity_index(struct drmem_lmb *lmb) lmb->aa_index = 0xffffffff; } -#ifdef CONFIG_MEMORY_HOTPLUG -static inline void lmb_set_nid (struct drmem_lmb *lmb) -{ - lmb->nid =memory_add_physaddr_to_nid (lmb->base_addr); -} -static inline void lmb_clear_nid (struct drmem_lmb *lmb) -{ - lmb->nid =-1 ; -} -#else -static inline void lmb_set_nid (struct drmem_lmb *lmb) -{ -} -static inline void lmb_clear_nid (struct drmem_lmb *lmb) -{ -} -#endif -#endif /* _ASM_POWERPC_LMB_H */
arch/powerpc/include/asm/reg.h +1 -1
@@ -796,7 +796,7 @@#define THRM1_TIN (1 << 31)#define THRM1_TIV (1 << 30)#define THRM1_THRES (x) ((x&0x7f)<<23) -#define THRM3_SITV (x) ((x&0x3fff)<<1) +#define THRM3_SITV (x) ((x & 0x1fff) << 1)#define THRM1_TID (1<<2)#define THRM1_TIE (1<<1)#define THRM1_V (1<<0)
arch/powerpc/include/asm/tlb.h +0 -13
@@ -67,19 +67,6 @@ static inline int mm_is_thread_local(struct mm_struct *mm)return false; return cpumask_test_cpu(smp_processor_id(), mm_cpumask(mm)); } -static inline void mm_reset_thread_local (struct mm_struct *mm) -{ -WARN_ON (atomic_read (&mm->context.copros) >0 ); -/* -* It's possible for mm_access to take a reference on mm_users to -* access the remote mm from another thread, but it's not allowed -* to set mm_cpumask, so mm_users may be > 1 here. -*/ -WARN_ON (current->mm != mm); -atomic_set (&mm->context.active_cpus,1 ); -cpumask_clear (mm_cpumask (mm)); -cpumask_set_cpu (smp_processor_id (),mm_cpumask (mm)); -}#else /* CONFIG_PPC_BOOK3S_64 */ static inline int mm_is_thread_local (struct mm_struct *mm) {
arch/powerpc/kernel/tau_6xx.c +57 -90
221 lines not on this page · raw message
arch/powerpc/mm/book3s64/radix_tlb.c +16 -7
@@ -639,19 +639,29 @@ static void do_exit_flush_lazy_tlb(void *arg)struct mm_struct *mm = arg;unsigned long pid = mm->context.id; +/* +* A kthread could have done a mmget_not_zero() after the flushing CPU +* checked mm_is_singlethreaded, and be in the process of +* kthread_use_mm when interrupted here. In that case, current->mm will +* be set to mm, because kthread_use_mm() setting ->mm and switching to +* the mm is done with interrupts off. +*/ if (current->mm == mm) -return ;/* Local CPU */ + goto out_flush;if (current->active_mm == mm) { -/* -* Must be a kernel thread because sender is single-threaded. -*/ -BUG_ON (current->mm); +WARN_ON_ONCE (current->mm !=NULL ); +/* Is a kernel thread and is using mm as the lazy tlb */ mmgrab (&init_mm); -switch_mm (mm, &init_mm, current); current->active_mm = &init_mm; +switch_mm_irqs_off (mm, &init_mm, current);mmdrop (mm); } + +atomic_dec (&mm->context.active_cpus); +cpumask_clear_cpu (smp_processor_id (),mm_cpumask (mm)); + +out_flush:_tlbiel_pid (pid,RIC_FLUSH_ALL ); }
@@ -666,7 +676,6 @@ static void exit_flush_lazy_tlbs(struct mm_struct *mm)*/ smp_call_function_many (mm_cpumask (mm), do_exit_flush_lazy_tlb, (void *)mm,1 ); -mm_reset_thread_local (mm); }void radix__flush_tlb_mm (struct mm_struct *mm)
arch/powerpc/mm/drmem.c +1 -5
@@ -362,10 +362,8 @@ static void __init init_drmem_v1_lmbs(const __be32 *prop)if (!drmem_info->lmbs)return ; -for_each_drmem_lmb (lmb) { +for_each_drmem_lmb (lmb)read_drconf_v1_cell (lmb, &prop); -lmb_set_nid (lmb); - } }static void __init init_drmem_v2_lmbs (const __be32 *prop)
@@ -410,8 +408,6 @@ static void __init init_drmem_v2_lmbs(const __be32 *prop) lmb->aa_index = dr_cell.aa_index; lmb->flags = dr_cell.flags; - -lmb_set_nid (lmb); } } }
arch/powerpc/perf/hv-gpci-requests.h +3 -3
@@ -95,7 +95,7 @@ REQUEST(__field(0, 8, partition_id)#define REQUEST_NAME system_performance_capabilities#define REQUEST_NUM 0x40 -#define REQUEST_IDX_KIND "starting_index=0xffffffffffffffff" +#define REQUEST_IDX_KIND "starting_index=0xffffffff"#include I (REQUEST_BEGIN ) REQUEST(__field(0, 1, perf_collect_privileged) __field(0x1, 1, capability_mask)
@@ -223,7 +223,7 @@ REQUEST(__field(0, 2, partition_id)#define REQUEST_NAME system_hypervisor_times#define REQUEST_NUM 0xF0 -#define REQUEST_IDX_KIND "starting_index=0xffffffffffffffff" +#define REQUEST_IDX_KIND "starting_index=0xffffffff"#include I (REQUEST_BEGIN ) REQUEST(__count(0, 8, time_spent_to_dispatch_virtual_processors) __count(0x8, 8, time_spent_processing_virtual_processor_timers)
@@ -234,7 +234,7 @@ REQUEST(__count(0, 8, time_spent_to_dispatch_virtual_processors)#define REQUEST_NAME system_tlbie_count_and_time#define REQUEST_NUM 0xF4 -#define REQUEST_IDX_KIND "starting_index=0xffffffffffffffff" +#define REQUEST_IDX_KIND "starting_index=0xffffffff"#include I (REQUEST_BEGIN )REQUEST (__count (0 ,8 , tlbie_instructions_issued)/*
arch/powerpc/perf/isa207-common.c +10 -0
@@ -269,6 +269,15 @@ int isa207_get_constraint(u64 event, unsigned long *maskp, unsigned long *valp) mask |=CNST_PMC_MASK (pmc); value |=CNST_PMC_VAL (pmc); + +/* +* PMC5 and PMC6 are used to count cycles and instructions and +* they do not support most of the constraint bits. Add a check +* to exclude PMC5/6 from most of the constraints except for +* EBB/BHRB. +*/ +if (pmc >=5 ) + goto ebb_bhrb; }if (pmc <=4 ) {
@@ -335,6 +344,7 @@ int isa207_get_constraint(u64 event, unsigned long *maskp, unsigned long *valp) } } +ebb_bhrb:if (!pmc && ebb)/* EBB events must specify the PMC */ return -1 ;
arch/powerpc/platforms/Kconfig +4 -10
@@ -219,12 +219,11 @@ config TAU temperature within 2-4 degrees Celsius. This option shows the current on-die temperature in /proc/cpuinfo if the cpu supports it. - Unfortunately, on some chip revisions, this sensor is very inaccurate - and in many cases, does not work at all, so don't assume the cpu - temp is actually what /proc/cpuinfo says it is. + Unfortunately, this sensor is very inaccurate when uncalibrated, so + don't assume the cpu temp is actually what /proc/cpuinfo says it is. config TAU_INT - bool "Interrupt driven TAU driver (DANGEROUS)" + bool "Interrupt driven TAU driver (EXPERIMENTAL)" depends on TAU ---help--- The TAU supports an interrupt driven mode which causes an interrupt
@@ -232,12 +231,7 @@ config TAU_INT to get notified the temp has exceeded a range. With this option off, a timer is used to re-check the temperature periodically. - However, on some cpus it appears that the TAU interrupt hardware - is buggy and can cause a situation which would lead unexplained hard - lockups. - - Unless you are extending the TAU driver, or enjoy kernel/hardware - debugging, leave this option off. + If in doubt, say N here. config TAU_AVERAGE bool "Average high and low temp"
arch/powerpc/platforms/powernv/opal-dump.c +29 -12
65 lines not on this page · raw message
arch/powerpc/platforms/pseries/hotplug-memory.c +16 -8
@@ -376,25 +376,32 @@ static int dlpar_add_lmb(struct drmem_lmb *);static int dlpar_remove_lmb (struct drmem_lmb *lmb) { +struct memory_block *mem_block;unsigned long block_sz;int rc;if (!lmb_is_removable (lmb))return -EINVAL ; + mem_block =lmb_to_memblock (lmb); +if (mem_block ==NULL ) +return -EINVAL ; + rc =dlpar_offline_lmb (lmb); -if (rc) +if (rc) { +put_device (&mem_block->dev);return rc; + } block_sz =pseries_memory_block_size (); -__remove_memory (lmb->nid, lmb->base_addr, block_sz); +__remove_memory (mem_block->nid, lmb->base_addr, block_sz); +put_device (&mem_block->dev);/* Update memory regions for memory remove */ memblock_remove (lmb->base_addr, block_sz);invalidate_lmb_associativity_index (lmb); -lmb_clear_nid (lmb); lmb->flags &= ~DRCONF_MEM_ASSIGNED ;return 0 ;
@@ -651,7 +658,7 @@ static int dlpar_memory_remove_by_ic(u32 lmbs_to_remove, u32 drc_index)static int dlpar_add_lmb (struct drmem_lmb *lmb) {unsigned long block_sz; -int rc; +int nid, rc;if (lmb->flags &DRCONF_MEM_ASSIGNED )return -EINVAL ;
@@ -662,11 +669,13 @@ static int dlpar_add_lmb(struct drmem_lmb *lmb)return rc; } -lmb_set_nid (lmb); block_sz =memory_block_size_bytes (); +/* Find the node id for this address. */ + nid =memory_add_physaddr_to_nid (lmb->base_addr); +/* Add the memory */ - rc =__add_memory (lmb->nid, lmb->base_addr, block_sz); + rc =__add_memory (nid, lmb->base_addr, block_sz);if (rc) {invalidate_lmb_associativity_index (lmb);return rc;
@@ -674,9 +683,8 @@ static int dlpar_add_lmb(struct drmem_lmb *lmb) rc =dlpar_online_lmb (lmb);if (rc) { -__remove_memory (lmb->nid, lmb->base_addr, block_sz); +__remove_memory (nid, lmb->base_addr, block_sz);invalidate_lmb_associativity_index (lmb); -lmb_clear_nid (lmb); }else { lmb->flags |=DRCONF_MEM_ASSIGNED ; }
arch/powerpc/platforms/pseries/ras.c +69 -49
152 lines not on this page · raw message
arch/powerpc/platforms/pseries/rng.c +1 -0
@@ -36,6 +36,7 @@ static __init int rng_init(void) ppc_md.get_random_seed = pseries_get_random_long; +of_node_put (dn);return 0 ; }machine_subsys_initcall (pseries, rng_init);
arch/powerpc/sysdev/xics/icp-hv.c +1 -0
@@ -174,6 +174,7 @@ int icp_hv_init(void) icp_ops = &icp_hv_ops; +of_node_put (np);return 0 ; }
arch/x86/boot/compressed/pgtable_64.c +0 -9
@@ -5,15 +5,6 @@#include "pgtable.h" #include "../string.h" -/* -* __force_order is used by special_insns.h asm code to force instruction -* serialization. -* -* It is not referenced from the code, but GCC < 5 with -fPIE would fail -* due to an undefined symbol. Define it to make these ancient GCCs work. -*/ -unsigned long __force_order; -#define BIOS_START_MIN 0x20000U/* 128K, less than this is insane */ #define BIOS_START_MAX 0x9f000U/* 640K, absolute maximum */
arch/x86/events/amd/iommu.c +1 -1
@@ -379,7 +379,7 @@ static __init int _init_events_attrs(void)while (amd_iommu_v2_event_descs[i].attr.attr.name) i++; - attrs =kcalloc (i +1 ,sizeof (struct attribute **),GFP_KERNEL ); + attrs =kcalloc (i +1 ,sizeof (*attrs),GFP_KERNEL );if (!attrs)return -ENOMEM ;
arch/x86/events/intel/ds.c +20 -12
@@ -669,9 +669,7 @@ int intel_pmu_drain_bts_buffer(void)static inline void intel_pmu_drain_pebs_buffer (void ) { -struct pt_regs regs; - - x86_pmu.drain_pebs (®s); + x86_pmu.drain_pebs (NULL ); }/*
@@ -1736,6 +1734,7 @@ static void __intel_pmu_pebs_event(struct perf_event *event,struct x86_perf_regs perf_regs;struct pt_regs *regs = &perf_regs.regs;void *at =get_next_pebs_record_by_bit (base, top, bit); +struct pt_regs dummy_iregs;if (hwc->flags &PERF_X86_EVENT_AUTO_RELOAD ) {/*
@@ -1748,6 +1747,9 @@ static void __intel_pmu_pebs_event(struct perf_event *event, }else if (!intel_pmu_save_and_restart (event))return ; +if (!iregs) + iregs = &dummy_iregs; +while (count >1 ) {setup_sample (event, iregs, at, &data, regs);perf_event_output (event, &data, regs);
@@ -1757,16 +1759,22 @@ static void __intel_pmu_pebs_event(struct perf_event *event, }setup_sample (event, iregs, at, &data, regs); - -/* -* All but the last records are processed. -* The last one is left to be able to call the overflow handler. -*/ -if (perf_event_overflow (event, &data, regs)) { -x86_pmu_stop (event,0 ); -return ; +if (iregs == &dummy_iregs) { +/* +* The PEBS records may be drained in the non-overflow context, +* e.g., large PEBS + context switch. Perf should treat the +* last record the same as other PEBS records, and doesn't +* invoke the generic overflow handler. +*/ +perf_event_output (event, &data, regs); + }else { +/* +* All but the last records are processed. +* The last one is left to be able to call the overflow handler. +*/ +if (perf_event_overflow (event, &data, regs)) +x86_pmu_stop (event,0 ); } - }static void intel_pmu_drain_pebs_core (struct pt_regs *iregs)
arch/x86/events/intel/uncore_snb.c +26 -5
@@ -110,6 +110,10 @@#define ICL_UNC_CBO_0_PER_CTR0 0x702#define ICL_UNC_CBO_MSR_OFFSET 0x8 +/* ICL ARB register */ +#define ICL_UNC_ARB_PER_CTR 0x3b1 +#define ICL_UNC_ARB_PERFEVTSEL 0x3b3 +DEFINE_UNCORE_FORMAT_ATTR (event, event,"config:0-7" );DEFINE_UNCORE_FORMAT_ATTR (umask, umask,"config:8-15" );DEFINE_UNCORE_FORMAT_ATTR (edge, edge,"config:18" );
@@ -297,15 +301,21 @@ void skl_uncore_cpu_init(void) snb_uncore_arb.ops = &skl_uncore_msr_ops; } +static struct intel_uncore_ops icl_uncore_msr_ops = { + .disable_event = snb_uncore_msr_disable_event, + .enable_event = snb_uncore_msr_enable_event, + .read_counter = uncore_msr_read_counter, +}; +static struct intel_uncore_type icl_uncore_cbox = { .name ="cbox" , - .num_counters =4 , + .num_counters =2 , .perf_ctr_bits =44 , .perf_ctr =ICL_UNC_CBO_0_PER_CTR0 , .event_ctl =SNB_UNC_CBO_0_PERFEVTSEL0 , .event_mask =SNB_UNC_RAW_EVENT_MASK , .msr_offset =ICL_UNC_CBO_MSR_OFFSET , - .ops = &skl_uncore_msr_ops, + .ops = &icl_uncore_msr_ops, .format_group = &snb_uncore_format_group, };
@@ -334,13 +344,25 @@ static struct intel_uncore_type icl_uncore_clockbox = { .single_fixed = 1, .event_mask = SNB_UNC_CTL_EV_SEL_MASK, .format_group = &icl_uncore_clock_format_group, - .ops = &skl_uncore_msr_ops, + .ops = &icl_uncore_msr_ops, .event_descs = icl_uncore_events, }; +static struct intel_uncore_type icl_uncore_arb = { + .name ="arb" , + .num_counters =1 , + .num_boxes =1 , + .perf_ctr_bits =44 , + .perf_ctr =ICL_UNC_ARB_PER_CTR , + .event_ctl =ICL_UNC_ARB_PERFEVTSEL , + .event_mask =SNB_UNC_RAW_EVENT_MASK , + .ops = &icl_uncore_msr_ops, + .format_group = &snb_uncore_format_group, +}; +static struct intel_uncore_type *icl_msr_uncores[] = { &icl_uncore_cbox, - &snb_uncore_arb, + &icl_uncore_arb, &icl_uncore_clockbox,NULL , };
@@ -358,7 +380,6 @@ void icl_uncore_cpu_init(void) { uncore_msr_uncores = icl_msr_uncores; icl_uncore_cbox.num_boxes =icl_get_cbox_num (); - snb_uncore_arb.ops = &skl_uncore_msr_ops; }enum {
arch/x86/include/asm/special_insns.h +15 -13
@@ -10,45 +10,47 @@#include <linux/jump_label.h> /* -* Volatile isn't enough to prevent the compiler from reordering the -* read/write functions for the control registers and messing everything up. -* A memory clobber would solve the problem, but would prevent reordering of -* all loads stores around it, which can hurt performance. Solution is to -* use a variable and mimic reads and writes to it to enforce serialization +* The compiler should not reorder volatile asm statements with respect to each +* other: they should execute in program order. However GCC 4.9.x and 5.x have +* a bug (which was fixed in 8.1, 7.3 and 6.5) where they might reorder +* volatile asm. The write functions are not affected since they have memory +* clobbers preventing reordering. To prevent reads from being reordered with +* respect to writes, use a dummy memory operand. */ -extern unsigned long __force_order; + +#define __FORCE_ORDER "m"(*(unsigned int *)0x1000UL)void native_write_cr0 (unsigned long val);static inline unsigned long native_read_cr0 (void ) {unsigned long val; - asmvolatile ("mov %%cr0,%0\n\t" :"=r" (val),"=m" (__force_order)); + asm volatile("mov %%cr0,%0\n\t" : "=r" (val) : __FORCE_ORDER);return val; }static inline unsigned long native_read_cr2 (void ) {unsigned long val; - asmvolatile ("mov %%cr2,%0\n\t" :"=r" (val),"=m" (__force_order)); + asm volatile("mov %%cr2,%0\n\t" : "=r" (val) : __FORCE_ORDER);return val; }static inline void native_write_cr2 (unsigned long val) { - asmvolatile ("mov %0,%%cr2" : :"r" (val),"m" (__force_order)); + asmvolatile ("mov %0,%%cr2" : :"r" (val) :"memory" ); }static inline unsigned long __native_read_cr3 (void ) {unsigned long val; - asmvolatile ("mov %%cr3,%0\n\t" :"=r" (val),"=m" (__force_order)); + asm volatile("mov %%cr3,%0\n\t" : "=r" (val) : __FORCE_ORDER);return val; }static inline void native_write_cr3 (unsigned long val) { - asmvolatile ("mov %0,%%cr3" : :"r" (val),"m" (__force_order)); + asmvolatile ("mov %0,%%cr3" : :"r" (val) :"memory" ); }static inline unsigned long native_read_cr4 (void )
@@ -63,10 +65,10 @@ static inline unsigned long native_read_cr4(void) asm volatile("1: mov %%cr4, %0\n" "2:\n" _ASM_EXTABLE(1b, 2b) - : "=r" (val), "=m" (__force_order) : "0" (0)); + : "=r" (val) : "0" (0), __FORCE_ORDER); #else/* CR4 always exists on x86_64. */ - asmvolatile ("mov %%cr4,%0\n\t" :"=r" (val),"=m" (__force_order)); + asm volatile("mov %%cr4,%0\n\t" : "=r" (val) : __FORCE_ORDER);#endif return val; }
arch/x86/kernel/cpu/common.c +2 -2
@@ -377,7 +377,7 @@ void native_write_cr0(unsigned long val)unsigned long bits_missing =0 ; set_register: - asmvolatile ("mov %0,%%cr0" :"+r" (val),"+m" (__force_order)); + asmvolatile ("mov %0,%%cr0" :"+r" (val) : :"memory" );if (static_branch_likely (&cr_pinning)) {if (unlikely ((val &X86_CR0_WP ) !=X86_CR0_WP )) {
@@ -396,7 +396,7 @@ void native_write_cr4(unsigned long val)unsigned long bits_changed =0 ; set_register: - asmvolatile ("mov %0,%%cr4" :"+r" (val),"+m" (cr4_pinned_bits)); + asmvolatile ("mov %0,%%cr4" :"+r" (val) : :"memory" );if (static_branch_likely (&cr_pinning)) {if (unlikely ((val & cr4_pinned_mask) != cr4_pinned_bits)) {
arch/x86/kernel/cpu/mce/core.c +60 -12
98 lines not on this page · raw message
arch/x86/kernel/cpu/mce/internal.h +10 -0
@@ -172,4 +172,14 @@ extern bool amd_filter_mce(struct mce *m);static inline bool amd_filter_mce (struct mce *m) {return false; };#endif +__visible bool ex_handler_rdmsr_fault(const struct exception_table_entry *fixup, +struct pt_regs *regs,int trapnr, +unsigned long error_code, +unsigned long fault_addr); + +__visible bool ex_handler_wrmsr_fault(const struct exception_table_entry *fixup, +struct pt_regs *regs,int trapnr, +unsigned long error_code, +unsigned long fault_addr); +#endif /* __X86_MCE_INTERNAL_H__ */
arch/x86/kernel/cpu/mce/severity.c +26 -2
@@ -9,9 +9,11 @@#include <linux/seq_file.h> #include <linux/init.h> #include <linux/debugfs.h> -#include <asm/mce.h> #include <linux/uaccess.h> +#include <asm/mce.h> +#include <asm/intel-family.h> +#include "internal.h" /*
@@ -40,9 +42,14 @@ static struct severity {unsigned char context;unsigned char excp;unsigned char covered; +unsigned char cpu_model; +unsigned char cpu_minstepping; +unsigned char bank_lo, bank_hi;char *msg; } severities[] = { #define MCESEV(s, m, c...) { .sev = MCE_ ## s ## _SEVERITY, .msg = m, ## c } +#define BANK_RANGE (l, h) .bank_lo = l, .bank_hi = h +#define MODEL_STEPPING (m, s) .cpu_model = m, .cpu_minstepping = s#define KERNEL .context = IN_KERNEL#define USER .context = IN_USER#define KERNEL_RECOV .context = IN_KERNEL_RECOV
@@ -97,7 +104,6 @@ static struct severity {KEEP ,"Corrected error" ,NOSER ,BITCLR (MCI_STATUS_UC ) ), -/* * known AO MCACODs reported via MCE or CMC: *
@@ -113,6 +119,18 @@ static struct severity { AO, "Action optional: last level cache writeback error", SER, MASK(MCI_UC_AR|MCACOD, MCI_STATUS_UC|MCACOD_L3WB) ), +/* +* Quirk for Skylake/Cascade Lake. Patrol scrubber may be configured +* to report uncorrected errors using CMCI with a special signature. +* UC=0, MSCOD=0x0010, MCACOD=binary(000X 0000 1100 XXXX) reported +* in one of the memory controller banks. +* Set severity to "AO" for same action as normal patrol scrub error. +*/ +MCESEV ( +AO ,"Uncorrected Patrol Scrub Error" , +SER ,MASK (MCI_STATUS_UC |MCI_ADDR |0xffffeff0 ,MCI_ADDR |0x001000c0 ), +MODEL_STEPPING (INTEL_FAM6_SKYLAKE_X ,4 ),BANK_RANGE (13 ,18 ) + ),/* ignore OVER for UCNA */ MCESEV(
@@ -320,6 +338,12 @@ static int mce_severity_intel(struct mce *m, int tolerant, char **msg, bool is_econtinue ;if (s->excp && excp != s->excp)continue ; +if (s->cpu_model && boot_cpu_data.x86_model != s->cpu_model) +continue ; +if (s->cpu_minstepping && boot_cpu_data.x86_stepping < s->cpu_minstepping) +continue ; +if (s->bank_lo && (m->bank < s->bank_lo || m->bank > s->bank_hi)) +continue ;if (msg) *msg = s->msg; s->covered =1 ;
arch/x86/kernel/fpu/init.c +22 -8
@@ -242,9 +242,9 @@ static void __init fpu__init_system_ctx_switch(void)*/ static void __init fpu__init_parse_early_param (void ) { -char arg[32 ]; +char arg[128 ];char *argptr = arg; -int bit; +int arglen, res, bit;#ifdef CONFIG_X86_32 if (cmdline_find_option_bool (boot_command_line,"no387" ))
@@ -267,12 +267,26 @@ static void __init fpu__init_parse_early_param(void)if (cmdline_find_option_bool (boot_command_line,"noxsaves" ))setup_clear_cpu_cap (X86_FEATURE_XSAVES ); -if (cmdline_find_option (boot_command_line,"clearcpuid" , arg, -sizeof (arg)) && -get_option (&argptr, &bit) && - bit >=0 && - bit <NCAPINTS *32 ) -setup_clear_cpu_cap (bit); + arglen =cmdline_find_option (boot_command_line,"clearcpuid" , arg,sizeof (arg)); +if (arglen <=0 ) +return ; + +pr_info ("Clearing CPUID bits:" ); +do { + res =get_option (&argptr, &bit); +if (res ==0 || res ==3 ) +break ; + +/* If the argument was too long, the last bit may be cut off */ +if (res ==1 && arglen >=sizeof (arg)) +break ; + +if (bit >=0 && bit <NCAPINTS *32 ) { +pr_cont (" " X86_CAP_FMT ,x86_cap_flag (bit)); +setup_clear_cpu_cap (bit); + } + }while (res ==2 ); +pr_cont ("\n" ); }/*
arch/x86/kernel/nmi.c +2 -3
@@ -106,7 +106,6 @@ fs_initcall(nmi_warning_debugfs);static void nmi_check_duration (struct nmiaction *action,u64 duration) { -u64 whole_msecs =READ_ONCE (action->max_duration);int remainder_ns, decimal_msecs;if (duration < nmi_longest_ns || duration < action->max_duration)
@@ -114,12 +113,12 @@ static void nmi_check_duration(struct nmiaction *action, u64 duration) action->max_duration = duration; - remainder_ns =do_div (whole_msecs, (1000 *1000 )); + remainder_ns =do_div (duration, (1000 *1000 )); decimal_msecs = remainder_ns /1000 ;printk_ratelimited (KERN_INFO "INFO: NMI handler (%ps) took too long to run: %lld.%03d msecs\n" , - action->handler, whole_msecs, decimal_msecs); + action->handler, duration, decimal_msecs); }static int nmi_handle (unsigned int type,struct pt_regs *regs)
arch/x86/kvm/emulate.c +1 -1
@@ -3617,7 +3617,7 @@ static int em_rdpid(struct x86_emulate_ctxt *ctxt)u64 tsc_aux =0 ;if (ctxt->ops->get_msr (ctxt,MSR_TSC_AUX , &tsc_aux)) -return emulate_gp (ctxt,0 ); +return emulate_ud (ctxt); ctxt->dst.val = tsc_aux;return X86EMUL_CONTINUE ; }
arch/x86/kvm/mmu.c +1 -0
@@ -6453,6 +6453,7 @@ static void kvm_recover_nx_lpages(struct kvm *kvm)cond_resched_lock (&kvm->mmu_lock); } } +kvm_mmu_commit_zap_page (kvm, &invalid_list);spin_unlock (&kvm->mmu_lock);srcu_read_unlock (&kvm->srcu, rcu_idx);
arch/x86/kvm/svm.c +1 -0
@@ -5383,6 +5383,7 @@ static int svm_update_pi_irte(struct kvm *kvm, unsigned int host_irq,* - Tell IOMMU to use legacy mode for this interrupt. * - Retrieve ga_tag of prior interrupt remapping data. */ + pi.prev_ga_tag =0 ; pi.is_guest_mode = false; ret =irq_set_vcpu_affinity (host_irq, &pi);
arch/x86/kvm/vmx/nested.c +5 -1
@@ -2231,6 +2231,8 @@ static void prepare_vmcs02_rare(struct vcpu_vmx *vmx, struct vmcs12 *vmcs12)vmcs_writel (GUEST_TR_BASE , vmcs12->guest_tr_base);vmcs_writel (GUEST_GDTR_BASE , vmcs12->guest_gdtr_base);vmcs_writel (GUEST_IDTR_BASE , vmcs12->guest_idtr_base); + + vmx->segment_cache.bitmask =0 ; } if (!hv_evmcs || !(hv_evmcs->hv_clean_fields &
@@ -3094,8 +3096,10 @@ enum nvmx_vmentry_status nested_vmx_enter_non_root_mode(struct kvm_vcpu *vcpu,prepare_vmcs02_early (vmx, vmcs12);if (from_vmentry) { -if (unlikely (!nested_get_vmcs12_pages (vcpu))) +if (unlikely (!nested_get_vmcs12_pages (vcpu))) { +vmx_switch_vmcs (vcpu, &vmx->vmcs01);return NVMX_VMENTRY_KVM_INTERNAL_ERROR ; + }if (nested_vmx_check_vmentry_hw (vcpu)) {vmx_switch_vmcs (vcpu, &vmx->vmcs01);
block/blk-core.c +4 -5
@@ -743,11 +743,10 @@ static void handle_bad_sector(struct bio *bio, sector_t maxsector) {char b[BDEVNAME_SIZE ]; -printk (KERN_INFO "attempt to access beyond end of device\n" ); -printk (KERN_INFO "%s: rw=%d, want=%Lu, limit=%Lu\n" , -bio_devname (bio, b), bio->bi_opf, - (unsigned long long )bio_end_sector (bio), - (long long )maxsector); +pr_info_ratelimited ("attempt to access beyond end of device\n" +"%s: rw=%d, want=%llu, limit=%llu\n" , +bio_devname (bio, b), bio->bi_opf, +bio_end_sector (bio), maxsector); }#ifdef CONFIG_FAIL_MAKE_REQUEST
block/blk-mq-sysfs.c +0 -2
@@ -36,8 +36,6 @@ static void blk_mq_hw_sysfs_release(struct kobject *kobj) struct blk_mq_hw_ctx *hctx = container_of(kobj, struct blk_mq_hw_ctx, kobj); -cancel_delayed_work_sync (&hctx->run_work); -if (hctx->flags &BLK_MQ_F_BLOCKING )cleanup_srcu_struct (hctx->srcu);blk_free_flush_queue (hctx->fq);
block/blk-sysfs.c +8 -1
@@ -891,9 +891,16 @@ static void __blk_release_queue(struct work_struct *work)blk_free_queue_stats (q->stats); -if (queue_is_mq (q)) +if (queue_is_mq (q)) { +struct blk_mq_hw_ctx *hctx; +int i; +cancel_delayed_work_sync (&q->requeue_work); +queue_for_each_hw_ctx (q, hctx, i) +cancel_delayed_work_sync (&hctx->run_work); + } +blk_exit_queue (q);blk_queue_free_zone_bitmaps (q);
crypto/algif_aead.c +4 -3
@@ -78,7 +78,7 @@ static int crypto_aead_copy_sgl(struct crypto_sync_skcipher *null_tfm,SYNC_SKCIPHER_REQUEST_ON_STACK (skreq, null_tfm);skcipher_request_set_sync_tfm (skreq, null_tfm); -skcipher_request_set_callback (skreq,CRYPTO_TFM_REQ_MAY_BACKLOG , +skcipher_request_set_callback (skreq,CRYPTO_TFM_REQ_MAY_SLEEP ,NULL ,NULL );skcipher_request_set_crypt (skreq, src, dst, len,NULL );
@@ -291,19 +291,20 @@ static int _aead_recvmsg(struct socket *sock, struct msghdr *msg, areq->outlen = outlen;aead_request_set_callback (&areq->cra_u.aead_req, -CRYPTO_TFM_REQ_MAY_BACKLOG , +CRYPTO_TFM_REQ_MAY_SLEEP , af_alg_async_cb, areq); err = ctx->enc ?crypto_aead_encrypt (&areq->cra_u.aead_req) :crypto_aead_decrypt (&areq->cra_u.aead_req);/* AIO operation in progress */ -if (err == -EINPROGRESS || err == -EBUSY ) +if (err == -EINPROGRESS )return -EIOCBQUEUED ;sock_put (sk); }else {/* Synchronous operation */ aead_request_set_callback (&areq->cra_u.aead_req, +CRYPTO_TFM_REQ_MAY_SLEEP |CRYPTO_TFM_REQ_MAY_BACKLOG , crypto_req_done, &ctx->wait); err = crypto_wait_req(ctx->enc ?
crypto/algif_skcipher.c +1 -1
@@ -123,7 +123,7 @@ static int _skcipher_recvmsg(struct socket *sock, struct msghdr *msg,crypto_skcipher_decrypt (&areq->cra_u.skcipher_req);/* AIO operation in progress */ -if (err == -EINPROGRESS || err == -EBUSY ) +if (err == -EINPROGRESS )return -EIOCBQUEUED ;sock_put (sk);
drivers/android/binder.c +10 -27
@@ -227,7 +227,7 @@ static struct binder_transaction_log_entry *binder_transaction_log_add(struct binder_work {struct list_head entry; -enum { +enum binder_work_type {BINDER_WORK_TRANSACTION =1 ,BINDER_WORK_TRANSACTION_COMPLETE ,BINDER_WORK_RETURN_ERROR ,
@@ -889,27 +889,6 @@ static struct binder_work *binder_dequeue_work_head_ilocked(return w; } -/** -* binder_dequeue_work_head() - Dequeues the item at head of list -* @proc: binder_proc associated with list -* @list: list to dequeue head -* -* Removes the head of the list if there are items on the list -* -* Return: pointer dequeued binder_work, NULL if list was empty -*/ -static struct binder_work *binder_dequeue_work_head ( -struct binder_proc *proc, -struct list_head *list) -{ -struct binder_work *w; - -binder_inner_proc_lock (proc); - w =binder_dequeue_work_head_ilocked (list); -binder_inner_proc_unlock (proc); -return w; -} -static void binder_defer_work (struct binder_proc *proc,enum binder_deferred_state defer);static void binder_free_thread (struct binder_thread *thread);
@@ -2347,8 +2326,6 @@ static void binder_transaction_buffer_release(struct binder_proc *proc,* file is done when the transaction is torn * down. */ -WARN_ON (failed_at && - proc->tsk == current->group_leader); }break ;case BINDER_TYPE_PTR :/*
@@ -4591,13 +4568,17 @@ static void binder_release_work(struct binder_proc *proc, struct list_head *list) {struct binder_work *w; +enum binder_work_type wtype;while (1 ) { - w =binder_dequeue_work_head (proc, list); +binder_inner_proc_lock (proc); + w =binder_dequeue_work_head_ilocked (list); + wtype = w ? w->type :0 ; +binder_inner_proc_unlock (proc);if (!w)return ; -switch (w->type) { +switch (wtype) {case BINDER_WORK_TRANSACTION : {struct binder_transaction *t;
@@ -4631,9 +4612,11 @@ static void binder_release_work(struct binder_proc *proc,kfree (death);binder_stats_deleted (BINDER_STAT_DEATH ); }break ; +case BINDER_WORK_NODE : +break ;default :pr_err ("unexpected work type, %d, not freed\n" , - w->type); + wtype);break ; } }
drivers/bluetooth/btusb.c +1 -0
@@ -2664,6 +2664,7 @@ static int btusb_mtk_submit_wmt_recv_urb(struct hci_dev *hdev) buf =kmalloc (size,GFP_KERNEL );if (!buf) {kfree (dr); +usb_free_urb (urb);return -ENOMEM ; }
drivers/bluetooth/hci_ldisc.c +1 -0
@@ -538,6 +538,7 @@ static void hci_uart_tty_close(struct tty_struct *tty)clear_bit (HCI_UART_PROTO_READY , &hu->flags);percpu_up_write (&hu->proto_lock); +cancel_work_sync (&hu->init_ready);cancel_work_sync (&hu->write_work);if (hdev) {
drivers/bluetooth/hci_serdev.c +2 -0
@@ -357,6 +357,8 @@ void hci_uart_unregister_device(struct hci_uart *hu)struct hci_dev *hdev = hu->hdev;clear_bit (HCI_UART_PROTO_READY , &hu->flags); + +cancel_work_sync (&hu->init_ready);if (test_bit (HCI_UART_REGISTERED , &hu->flags))hci_unregister_dev (hdev);hci_free_dev (hdev);
drivers/char/ipmi/ipmi_si_intf.c +1 -1
@@ -1977,7 +1977,7 @@ static int try_smi_init(struct smi_info *new_smi)/* Do this early so it's available for logs. */ if (!new_smi->io.dev) {pr_err ("IPMI interface added with no device\n" ); - rv =EIO ; + rv = -EIO ; goto out_err; }
drivers/clk/at91/clk-main.c +8 -3
@@ -437,12 +437,17 @@ static int clk_sam9x5_main_set_parent(struct clk_hw *hw, u8 index)return -EINVAL ;regmap_read (regmap,AT91_CKGR_MOR , &tmp); - tmp &= ~MOR_KEY_MASK ;if (index && !(tmp &AT91_PMC_MOSCSEL )) -regmap_write (regmap,AT91_CKGR_MOR , tmp |AT91_PMC_MOSCSEL ); + tmp =AT91_PMC_MOSCSEL ;else if (!index && (tmp &AT91_PMC_MOSCSEL )) -regmap_write (regmap,AT91_CKGR_MOR , tmp & ~AT91_PMC_MOSCSEL ); + tmp =0 ; +else +return 0 ; + +regmap_update_bits (regmap,AT91_CKGR_MOR , +AT91_PMC_MOSCSEL |MOR_KEY_MASK , + tmp |AT91_PMC_KEY );while (!clk_sam9x5_main_ready (regmap))cpu_relax ();
drivers/clk/bcm/clk-bcm2835.c +3 -1
@@ -1336,8 +1336,10 @@ static struct clk_hw *bcm2835_register_pll(struct bcm2835_cprman *cprman, pll->hw.init = &init; ret =devm_clk_hw_register (cprman->dev, &pll->hw); -if (ret) +if (ret) { +kfree (pll);return NULL ; + }return &pll->hw; }
drivers/clk/imx/clk-imx8mq.c +2 -2
@@ -157,10 +157,10 @@ static const char * const imx8mq_qspi_sels[] = {"osc_25m", "sys1_pll_400m", "sys "audio_pll2_out", "sys1_pll_266m", "sys3_pll_out", "sys1_pll_100m", };static const char *const imx8mq_usdhc1_sels[] = {"osc_25m" ,"sys1_pll_400m" ,"sys1_pll_800m" ,"sys2_pll_500m" , -"audio_pll2_out" ,"sys1_pll_266m" ,"sys3_pll_out" ,"sys1_pll_100m" , }; +"sys3_pll_out" ,"sys1_pll_266m" ,"audio_pll2_out" ,"sys1_pll_100m" , };static const char *const imx8mq_usdhc2_sels[] = {"osc_25m" ,"sys1_pll_400m" ,"sys1_pll_800m" ,"sys2_pll_500m" , -"audio_pll2_out" ,"sys1_pll_266m" ,"sys3_pll_out" ,"sys1_pll_100m" , }; +"sys3_pll_out" ,"sys1_pll_266m" ,"audio_pll2_out" ,"sys1_pll_100m" , };static const char *const imx8mq_i2c1_sels[] = {"osc_25m" ,"sys1_pll_160m" ,"sys2_pll_50m" ,"sys3_pll_out" ,"audio_pll1_out" ,"video_pll1_out" ,"audio_pll2_out" ,"sys1_pll_133m" , };
drivers/clk/keystone/sci-clk.c +1 -1
@@ -522,7 +522,7 @@ static int ti_sci_scan_clocks_from_dt(struct sci_clk_provider *provider) np =of_find_node_with_property (np, *clk_name);if (!np) { clk_name++; -break ; +continue ; }if (!of_device_is_available (np))
drivers/clk/mediatek/clk-mt6779.c +2 -0
@@ -919,6 +919,8 @@ static const struct mtk_gate infra_clks[] = { "pwm_sel", 19),GATE_INFRA0 (CLK_INFRA_PWM ,"infra_pwm" ,"pwm_sel" ,21 ), +GATE_INFRA0 (CLK_INFRA_UART0 ,"infra_uart0" , +"uart_sel" ,22 ),GATE_INFRA0 (CLK_INFRA_UART1 ,"infra_uart1" ,"uart_sel" ,23 ), GATE_INFRA0(CLK_INFRA_UART2, "infra_uart2",
drivers/clk/meson/g12a.c +11 -0
@@ -298,6 +298,17 @@ static struct clk_regmap g12a_fclk_div2 = { &g12a_fclk_div2_div.hw }, .num_parents = 1, +/* +* Similar to fclk_div3, it seems that this clock is used by +* the resident firmware and is required by the platform to +* operate correctly. +* Until the following condition are met, we need this clock to +* be marked as critical: +* a) Mark the clock used by a firmware resource, if possible +* b) CCF has a clock hand-off mechanism to make the sure the +* clock stays on until the proper driver comes along +*/ + .flags = CLK_IS_CRITICAL, }, };
drivers/clk/qcom/gcc-sdm660.c +1 -1
@@ -666,7 +666,7 @@ static struct clk_rcg2 hmss_rbcpr_clk_src = { .cmd_rcgr = 0x48044, .mnd_width = 0, .hid_width = 5, - .parent_map = gcc_parent_map_xo_gpll0_gpll0_early_div, + .parent_map = gcc_parent_map_xo_gpll0, .freq_tbl = ftbl_hmss_rbcpr_clk_src, .clkr.hw.init = &(struct clk_init_data ){ .name ="hmss_rbcpr_clk_src" ,
drivers/clk/rockchip/clk-half-divider.c +1 -1
@@ -167,7 +167,7 @@ struct clk *rockchip_clk_register_halfdiv(const char *name,unsigned long flags, spinlock_t *lock) { - struct clk *clk; + struct clk *clk = ERR_PTR(-ENOMEM);struct clk_mux *mux =NULL ;struct clk_gate *gate =NULL ;struct clk_divider *div =NULL ;
drivers/cpufreq/armada-37xx-cpufreq.c +6 -0
@@ -484,6 +484,12 @@ static int __init armada37xx_cpufreq_driver_init(void)/* late_initcall, to guarantee the driver is loaded after A37xx clock driver */ late_initcall (armada37xx_cpufreq_driver_init); +static const struct of_device_id __maybe_unused armada37xx_cpufreq_of_match[] = { + { .compatible ="marvell,armada-3700-nb-pm" }, + { }, +}; +MODULE_DEVICE_TABLE (of, armada37xx_cpufreq_of_match); +MODULE_AUTHOR ("Gregory CLEMENT <[email protected]>" );MODULE_DESCRIPTION ("Armada 37xx cpufreq driver" );MODULE_LICENSE ("GPL" );
drivers/cpufreq/powernv-cpufreq.c +6 -3
@@ -884,12 +884,15 @@ static int powernv_cpufreq_reboot_notifier(struct notifier_block *nb, unsigned long action, void *unused) { int cpu; -struct cpufreq_policy cpu_policy; +struct cpufreq_policy *cpu_policy; rebooting = true;for_each_online_cpu (cpu) { -cpufreq_get_policy (&cpu_policy, cpu); -powernv_cpufreq_target_index (&cpu_policy,get_nominal_index ()); + cpu_policy =cpufreq_cpu_get (cpu); +if (!cpu_policy) +continue ; +powernv_cpufreq_target_index (cpu_policy,get_nominal_index ()); +cpufreq_cpu_put (cpu_policy); }return NOTIFY_DONE ;
drivers/crypto/caam/Kconfig +1 -0
@@ -112,6 +112,7 @@ config CRYPTO_DEV_FSL_CAAM_CRYPTO_API_QI select CRYPTO_AUTHENC select CRYPTO_BLKCIPHER select CRYPTO_DES + select CRYPTO_XTS help Selecting this will use CAAM Queue Interface (QI) for sending & receiving crypto jobs to/from CAAM. This gives better performance
drivers/crypto/caam/caamalg_qi.c +66 -4
131 lines not on this page · raw message
drivers/crypto/ccp/ccp-ops.c +1 -1
@@ -1746,7 +1746,7 @@ ccp_run_sha_cmd(struct ccp_cmd_queue *cmd_q, struct ccp_cmd *cmd)break ;default : ret = -EINVAL ; - goto e_ctx; + goto e_data; } }else {/* Stash the context */
drivers/crypto/chelsio/chtls/chtls_cm.c +3 -0
@@ -1053,6 +1053,9 @@ static struct sock *chtls_recv_sock(struct sock *lsk, ndev = n->dev;if (!ndev) goto free_dst; +if (is_vlan_dev (ndev)) + ndev =vlan_dev_real_dev (ndev); + port_id =cxgb4_port_idx (ndev); csk =chtls_sock_create (cdev);
drivers/crypto/chelsio/chtls/chtls_io.c +3 -2
@@ -910,9 +910,9 @@ static int tls_header_read(struct tls_hdr *thdr, struct iov_iter *from)return (__force int )cpu_to_be16 (thdr->length); } -static int csk_mem_free (struct chtls_dev *cdev,struct sock *sk) +static bool csk_mem_free (struct chtls_dev *cdev,struct sock *sk) { -return (cdev->max_host_sndbuf - sk->sk_wmem_queued); +return (cdev->max_host_sndbuf - sk->sk_wmem_queued >0 ); } static int csk_wait_memory(struct chtls_dev *cdev,
@@ -1210,6 +1210,7 @@ int chtls_sendpage(struct sock *sk, struct page *page, copied =0 ; csk =rcu_dereference_sk_user_data (sk); cdev = csk->cdev; +lock_sock (sk); timeo =sock_sndtimeo (sk, flags &MSG_DONTWAIT ); err =sk_stream_wait_connect (sk, &timeo);
drivers/crypto/ixp4xx_crypto.c +1 -1
@@ -527,7 +527,7 @@ static void release_ixp_crypto(struct device *dev)if (crypt_virt) {dma_free_coherent (dev, -NPE_QLEN_TOTAL *sizeof (struct crypt_ctl ), +NPE_QLEN *sizeof (struct crypt_ctl ), crypt_virt, crypt_phys); } }
drivers/crypto/mediatek/mtk-platform.c +4 -4
@@ -442,7 +442,7 @@ static void mtk_desc_dma_free(struct mtk_cryp *cryp)static int mtk_desc_ring_alloc (struct mtk_cryp *cryp) {struct mtk_ring **ring = cryp->ring; -int i, err =ENOMEM ; +int i;for (i =0 ; i <MTK_RING_MAX ; i++) { ring[i] =kzalloc (sizeof (**ring),GFP_KERNEL );
@@ -469,14 +469,14 @@ static int mtk_desc_ring_alloc(struct mtk_cryp *cryp)return 0 ; err_cleanup: -for (; i--; ) { +do {dma_free_coherent (cryp->dev,MTK_DESC_RING_SZ , ring[i]->res_base, ring[i]->res_dma);dma_free_coherent (cryp->dev,MTK_DESC_RING_SZ , ring[i]->cmd_base, ring[i]->cmd_dma);kfree (ring[i]); - } -return err; + }while (i--); +return -ENOMEM ; }static int mtk_crypto_probe (struct platform_device *pdev)
drivers/crypto/omap-sham.c +3 -0
@@ -453,6 +453,9 @@ static void omap_sham_write_ctrl_omap4(struct omap_sham_dev *dd, size_t length,struct omap_sham_reqctx *ctx =ahash_request_ctx (dd->req);u32 val, mask; +if (likely (ctx->digcnt)) +omap_sham_write (dd,SHA_REG_DIGCNT (dd), ctx->digcnt); +/* * Setting ALGO_CONST only for the first iteration and * CLOSE_HASH only for the last one. Note that flags mode bits
drivers/crypto/picoxcell_crypto.c +4 -5
@@ -1697,11 +1697,6 @@ static int spacc_probe(struct platform_device *pdev) goto err_clk_put; } - ret =device_create_file (&pdev->dev, &dev_attr_stat_irq_thresh); -if (ret) - goto err_clk_disable; - -/* * Use an IRQ threshold of 50% as a default. This seems to be a * reasonable trade off of latency against throughput but can be
@@ -1709,6 +1704,10 @@ static int spacc_probe(struct platform_device *pdev)*/ engine->stat_irq_thresh = (engine->fifo_sz /2 ); + ret =device_create_file (&pdev->dev, &dev_attr_stat_irq_thresh); +if (ret) + goto err_clk_disable; +/* * Configure the interrupts. We only use the STAT_CNT interrupt as we * only submit a new packet for processing when we complete another in
drivers/dma/dmatest.c +2 -3
@@ -1218,15 +1218,14 @@ static int dmatest_chan_set(const char *val, const struct kernel_param *kp)add_threaded_test (info);/* Check if channel was added successfully */ - dtc = list_last_entry(&info->channels, struct dmatest_chan, node); - -if (dtc->chan) { +if (!list_empty (&info->channels)) {/* * if new channel was not successfully added, revert the * "test_channel" string to the name of the last successfully * added channel. exception for when users issues empty string * to channel parameter. */ + dtc = list_last_entry(&info->channels, struct dmatest_chan, node);if ((strcmp (dma_chan_name (dtc->chan),strim (test_channel)) !=0 ) && (strcmp ("" ,strim (test_channel)) !=0 )) { ret = -EINVAL ;
drivers/dma/dw/core.c +4 -0
@@ -772,6 +772,10 @@ bool dw_dma_filter(struct dma_chan *chan, void *param)if (dws->dma_dev != chan->device->dev)return false; +/* permit channels in accordance with the channels mask */ +if (dws->channels && !(dws->channels & dwc->mask)) +return false; +/* We have to copy data since dws can be temporary storage */ memcpy (&dwc->dws, dws,sizeof (struct dw_dma_slave ));
drivers/dma/dw/dw.c +1 -1
@@ -14,7 +14,7 @@static void dw_dma_initialize_chan (struct dw_dma_chan *dwc) {struct dw_dma *dw =to_dw_dma (dwc->chan.device); -u32 cfghi =DWC_CFGH_FIFO_MODE ; +u32 cfghi =is_slave_direction (dwc->direction) ?0 :DWC_CFGH_FIFO_MODE ;u32 cfglo =DWC_CFGL_CH_PRIOR (dwc->priority);bool hs_polarity = dwc->dws.hs_polarity;
drivers/dma/dw/of.c +5 -2
@@ -22,18 +22,21 @@ static struct dma_chan *dw_dma_of_xlate(struct of_phandle_args *dma_spec, };dma_cap_mask_t cap; -if (dma_spec->args_count !=3 ) +if (dma_spec->args_count <3 || dma_spec->args_count >4 )return NULL ; slave.src_id = dma_spec->args[0 ]; slave.dst_id = dma_spec->args[0 ]; slave.m_master = dma_spec->args[1 ]; slave.p_master = dma_spec->args[2 ]; +if (dma_spec->args_count >=4 ) + slave.channels = dma_spec->args[3 ];if (WARN_ON (slave.src_id >=DW_DMA_MAX_NR_REQUESTS || slave.dst_id >=DW_DMA_MAX_NR_REQUESTS || slave.m_master >= dw->pdata->nr_masters || - slave.p_master >= dw->pdata->nr_masters)) + slave.p_master >= dw->pdata->nr_masters || + slave.channels >=BIT (dw->pdata->nr_channels)))return NULL ;dma_cap_zero (cap);
drivers/edac/aspeed_edac.c +2 -2
@@ -209,8 +209,8 @@ static int config_irq(void *ctx, struct platform_device *pdev)/* register interrupt handler */ irq =platform_get_irq (pdev,0 );dev_dbg (&pdev->dev,"got irq %d\n" , irq); -if (!irq) -return -ENODEV ; +if (irq <0 ) +return irq; rc =devm_request_irq (&pdev->dev, irq, mcr_isr,IRQF_TRIGGER_HIGH ,DRV_NAME , ctx);
drivers/edac/i5100_edac.c +5 -6
@@ -1074,16 +1074,15 @@ static int i5100_init_one(struct pci_dev *pdev, const struct pci_device_id *id) PCI_DEVICE_ID_INTEL_5100_19, 0);if (!einj) { ret = -ENODEV ; - goto bail_einj; + goto bail_mc_free; } rc =pci_enable_device (einj);if (rc <0 ) { ret = rc; - goto bail_disable_einj; + goto bail_einj; } - mci->pdev = &pdev->dev; priv = mci->pvt_info;
@@ -1149,14 +1148,14 @@ static int i5100_init_one(struct pci_dev *pdev, const struct pci_device_id *id) bail_scrub: priv->scrub_enable =0 ;cancel_delayed_work_sync (&(priv->i5100_scrubbing)); -edac_mc_free (mci); - -bail_disable_einj:pci_disable_device (einj); bail_einj:pci_dev_put (einj); +bail_mc_free: +edac_mc_free (mci); + bail_disable_ch1:pci_disable_device (ch1mm);
drivers/edac/ti_edac.c +2 -1
@@ -278,7 +278,8 @@ static int ti_edac_probe(struct platform_device *pdev)/* add EMIF ECC error handler */ error_irq =platform_get_irq (pdev,0 ); -if (!error_irq) { +if (error_irq <0 ) { + ret = error_irq;edac_printk (KERN_ERR ,EDAC_MOD_NAME ,"EMIF irq number not defined.\n" ); goto err;
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +1 -2
@@ -6984,8 +6984,7 @@ static int dm_update_plane_state(struct dc *dc, dm_old_plane_state->dc_state, dm_state->context)) { - ret =EINVAL ; -return ret; +return -EINVAL ; }
drivers/gpu/drm/drm_debugfs_crc.c +3 -1
@@ -144,8 +144,10 @@ static ssize_t crc_control_write(struct file *file, const char __user *ubuf, source[len -1 ] ='\0' ; ret = crtc->funcs->verify_crc_source (crtc, source, &values_cnt); -if (ret) +if (ret) { +kfree (source);return ret; + }spin_lock_irq (&crc->lock);
drivers/gpu/drm/gma500/cdv_intel_dp.c +1 -1
@@ -2120,7 +2120,7 @@ cdv_intel_dp_init(struct drm_device *dev, struct psb_intel_mode_device *mode_dev intel_dp->dpcd, sizeof(intel_dp->dpcd));cdv_intel_edp_panel_vdd_off (gma_encoder); -if (ret ==0 ) { +if (ret <=0 ) {/* if this fails, presume the device is a ghost */ DRM_INFO ("failed to retrieve link info, disabling eDP\n" );cdv_intel_dp_encoder_destroy (encoder);
drivers/gpu/drm/msm/adreno/a6xx_gpu_state.c +1 -1
@@ -834,7 +834,7 @@ static void a6xx_get_indexed_registers(struct msm_gpu *gpu,int i; a6xx_state->indexed_regs =state_kcalloc (a6xx_state, count, -sizeof (a6xx_state->indexed_regs)); +sizeof (*a6xx_state->indexed_regs));if (!a6xx_state->indexed_regs)return ;
drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c +5 -3
@@ -819,7 +819,7 @@ static int dpu_crtc_atomic_check(struct drm_crtc *crtc,struct drm_plane *plane;struct drm_display_mode *mode; -int cnt =0 , rc =0 , mixer_width, i, z_pos; +int cnt =0 , rc =0 , mixer_width =0 , i, z_pos;struct dpu_multirect_plane_states multirect_plane[DPU_STAGE_MAX *2 ];int multirect_count =0 ;
@@ -852,9 +852,11 @@ static int dpu_crtc_atomic_check(struct drm_crtc *crtc,memset (pipe_staged,0 ,sizeof (pipe_staged)); - mixer_width = mode->hdisplay / cstate->num_mixers; +if (cstate->num_mixers) { + mixer_width = mode->hdisplay / cstate->num_mixers; -_dpu_crtc_setup_lm_bounds (crtc, state); +_dpu_crtc_setup_lm_bounds (crtc, state); + } crtc_rect.x2 = mode->hdisplay; crtc_rect.y2 = mode->vdisplay;
drivers/gpu/drm/mxsfb/mxsfb_drv.c +20 -1
@@ -26,6 +26,7 @@#include <drm/drm_drv.h> #include <drm/drm_fb_cma_helper.h> #include <drm/drm_fb_helper.h> +#include <drm/drm_fourcc.h> #include <drm/drm_gem_cma_helper.h> #include <drm/drm_gem_framebuffer_helper.h> #include <drm/drm_irq.h>
@@ -87,8 +88,26 @@ void mxsfb_disable_axi_clk(struct mxsfb_drm_private *mxsfb)clk_disable_unprepare (mxsfb->clk_axi); } +static struct drm_framebuffer * +mxsfb_fb_create (struct drm_device *dev,struct drm_file *file_priv, +const struct drm_mode_fb_cmd2 *mode_cmd) +{ +const struct drm_format_info *info; + + info =drm_get_format_info (dev, mode_cmd); +if (!info) +return ERR_PTR (-EINVAL ); + +if (mode_cmd->width * info->cpp[0 ] != mode_cmd->pitches[0 ]) { +dev_dbg (dev->dev,"Invalid pitch: fb width must match pitch\n" ); +return ERR_PTR (-EINVAL ); + } + +return drm_gem_fb_create (dev, file_priv, mode_cmd); +} +static const struct drm_mode_config_funcs mxsfb_mode_config_funcs = { - .fb_create = drm_gem_fb_create, + .fb_create = mxsfb_fb_create, .atomic_check = drm_atomic_helper_check, .atomic_commit = drm_atomic_helper_commit, };
drivers/gpu/drm/panel/panel-simple.c +2 -2
@@ -2382,12 +2382,12 @@ static const struct drm_display_mode ortustech_com43h4m85ulc_mode = {static const struct panel_desc ortustech_com43h4m85ulc = { .modes = &ortustech_com43h4m85ulc_mode, .num_modes =1 , - .bpc =8 , + .bpc =6 , .size = { .width =56 , .height =93 , }, - .bus_format =MEDIA_BUS_FMT_RGB888_1X24 , + .bus_format =MEDIA_BUS_FMT_RGB666_1X18 , .bus_flags =DRM_BUS_FLAG_DE_HIGH |DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE , };
drivers/gpu/drm/panfrost/panfrost_gpu.c +13 -1
@@ -75,6 +75,17 @@ int panfrost_gpu_soft_reset(struct panfrost_device *pfdev)return 0 ; } +void panfrost_gpu_amlogic_quirk (struct panfrost_device *pfdev) +{ +/* +* The Amlogic integrated Mali-T820, Mali-G31 & Mali-G52 needs +* these undocumented bits in GPU_PWR_OVERRIDE1 to be set in order +* to operate correctly. +*/ +gpu_write (pfdev,GPU_PWR_KEY ,GPU_PWR_KEY_UNLOCK ); +gpu_write (pfdev,GPU_PWR_OVERRIDE1 ,0xfff | (0x20 <<16 )); +} +static void panfrost_gpu_init_quirks (struct panfrost_device *pfdev) {u32 quirks =0 ;
@@ -304,6 +315,8 @@ void panfrost_gpu_power_on(struct panfrost_device *pfdev)int ret;u32 val; +panfrost_gpu_init_quirks (pfdev); +/* Just turn on everything for now */ gpu_write (pfdev,L2_PWRON_LO , pfdev->features.l2_present); ret = readl_relaxed_poll_timeout(pfdev->iomem + L2_READY_LO,
@@ -357,7 +370,6 @@ int panfrost_gpu_init(struct panfrost_device *pfdev)return err; } -panfrost_gpu_init_quirks (pfdev);panfrost_gpu_power_on (pfdev);return 0 ;
drivers/gpu/drm/panfrost/panfrost_gpu.h +2 -0
@@ -16,4 +16,6 @@ int panfrost_gpu_soft_reset(struct panfrost_device *pfdev);void panfrost_gpu_power_on (struct panfrost_device *pfdev);void panfrost_gpu_power_off (struct panfrost_device *pfdev); +void panfrost_gpu_amlogic_quirk (struct panfrost_device *pfdev); +#endif
drivers/gpu/drm/panfrost/panfrost_regs.h +4 -0
@@ -51,6 +51,10 @@#define GPU_STATUS 0x34#define GPU_STATUS_PRFCNT_ACTIVE BIT(2)#define GPU_LATEST_FLUSH_ID 0x38 +#define GPU_PWR_KEY 0x50/* (WO) Power manager key register */ +#define GPU_PWR_KEY_UNLOCK 0x2968A819 +#define GPU_PWR_OVERRIDE0 0x54/* (RW) Power manager override settings */ +#define GPU_PWR_OVERRIDE1 0x58/* (RW) Power manager override settings */ #define GPU_FAULT_STATUS 0x3C#define GPU_FAULT_ADDRESS_LO 0x40#define GPU_FAULT_ADDRESS_HI 0x44
drivers/gpu/drm/virtio/virtgpu_kms.c +2 -0
@@ -96,8 +96,10 @@ static void virtio_gpu_get_capsets(struct virtio_gpu_device *vgdev, vgdev->capsets[i].id > 0, 5 * HZ);if (ret ==0 ) {DRM_ERROR ("timed out waiting for cap set %d\n" , i); +spin_lock (&vgdev->display_info_lock);kfree (vgdev->capsets); vgdev->capsets =NULL ; +spin_unlock (&vgdev->display_info_lock);return ; } DRM_INFO("cap set %d: id %d, max-version %d, max-size %d\n",
drivers/gpu/drm/virtio/virtgpu_vq.c +7 -3
@@ -572,9 +572,13 @@ static void virtio_gpu_cmd_get_capset_info_cb(struct virtio_gpu_device *vgdev,int i =le32_to_cpu (cmd->capset_index);spin_lock (&vgdev->display_info_lock); - vgdev->capsets[i].id =le32_to_cpu (resp->capset_id); - vgdev->capsets[i].max_version =le32_to_cpu (resp->capset_max_version); - vgdev->capsets[i].max_size =le32_to_cpu (resp->capset_max_size); +if (vgdev->capsets) { + vgdev->capsets[i].id =le32_to_cpu (resp->capset_id); + vgdev->capsets[i].max_version =le32_to_cpu (resp->capset_max_version); + vgdev->capsets[i].max_size =le32_to_cpu (resp->capset_max_size); + }else { +DRM_ERROR ("invalid capset memory." ); + }spin_unlock (&vgdev->display_info_lock);wake_up (&vgdev->resp_wq); }
drivers/gpu/drm/vkms/vkms_composer.c +1 -1
@@ -33,7 +33,7 @@ static uint32_t compute_crc(void *vaddr_out, struct vkms_composer *composer) + (i * composer->pitch) + (j * composer->cpp);/* XRGB format ignores Alpha channel */ -memset (vaddr_out + src_offset +24 ,0 ,8 ); +bitmap_clear (vaddr_out + src_offset,24 ,8 ); crc =crc32_le (crc, vaddr_out + src_offset,sizeof (u32)); }
drivers/hid/hid-ids.h +1 -0
@@ -1119,6 +1119,7 @@#define USB_DEVICE_ID_SYNAPTICS_DELL_K12A 0x2819#define USB_DEVICE_ID_SYNAPTICS_ACER_SWITCH5_012 0x2968#define USB_DEVICE_ID_SYNAPTICS_TP_V103 0x5710 +#define USB_DEVICE_ID_SYNAPTICS_ACER_ONE_S1003 0x73f5#define USB_DEVICE_ID_SYNAPTICS_ACER_SWITCH5 0x81a7#define USB_VENDOR_ID_TEXAS_INSTRUMENTS 0x2047
drivers/hid/hid-input.c +2 -2
@@ -797,7 +797,7 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fielcase 0x3b :/* Battery Strength */ hidinput_setup_battery (device,HID_INPUT_REPORT , field); usage->type =EV_PWR ; - goto ignore; +return ;case 0x3c :/* Invert */ map_key_clear (BTN_TOOL_RUBBER );
@@ -1059,7 +1059,7 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fielcase HID_DC_BATTERYSTRENGTH :hidinput_setup_battery (device,HID_INPUT_REPORT , field); usage->type =EV_PWR ; - goto ignore; +return ; } goto unknown;
drivers/hid/hid-ite.c +4 -0
@@ -44,6 +44,10 @@ static const struct hid_device_id ite_devices[] = { {HID_DEVICE (BUS_USB ,HID_GROUP_GENERIC ,USB_VENDOR_ID_SYNAPTICS , USB_DEVICE_ID_SYNAPTICS_ACER_SWITCH5_012) }, +/* ITE8910 USB kbd ctlr, with Synaptics touchpad connected to it. */ + { HID_DEVICE(BUS_USB, HID_GROUP_GENERIC, +USB_VENDOR_ID_SYNAPTICS , + USB_DEVICE_ID_SYNAPTICS_ACER_ONE_S1003) }, { } };MODULE_DEVICE_TABLE (hid, ite_devices);
drivers/hid/hid-roccat-kone.c +16 -7
@@ -294,31 +294,40 @@ static ssize_t kone_sysfs_write_settings(struct file *fp, struct kobject *kobj,struct kone_device *kone =hid_get_drvdata (dev_get_drvdata (dev));struct usb_device *usb_dev =interface_to_usbdev (to_usb_interface (dev));int retval =0 , difference, old_profile; +struct kone_settings *settings = (struct kone_settings *)buf;/* I need to get my data in one piece */ if (off !=0 || count !=sizeof (struct kone_settings ))return -EINVAL ;mutex_lock (&kone->kone_lock); - difference =memcmp (buf, &kone->settings,sizeof (struct kone_settings )); + difference =memcmp (settings, &kone->settings, +sizeof (struct kone_settings ));if (difference) { - retval =kone_set_settings (usb_dev, - (struct kone_settings const *)buf); -if (retval) { -mutex_unlock (&kone->kone_lock); -return retval; +if (settings->startup_profile <1 || + settings->startup_profile >5 ) { + retval = -EINVAL ; + goto unlock; } + retval =kone_set_settings (usb_dev, settings); +if (retval) + goto unlock; + old_profile = kone->settings.startup_profile; -memcpy (&kone->settings, buf,sizeof (struct kone_settings )); +memcpy (&kone->settings, settings,sizeof (struct kone_settings ));kone_profile_activated (kone, kone->settings.startup_profile);if (kone->settings.startup_profile != old_profile)kone_profile_report (kone, kone->settings.startup_profile); } +unlock:mutex_unlock (&kone->kone_lock); +if (retval) +return retval; +return sizeof (struct kone_settings ); } static BIN_ATTR(settings, 0660, kone_sysfs_read_settings,
drivers/hwmon/pmbus/max34440.c +0 -3
@@ -387,7 +387,6 @@ static struct pmbus_driver_info max34440_info[] = { .func[18] = PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP, .func[19] = PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP, .func[20] = PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP, - .read_byte_data = max34440_read_byte_data, .read_word_data = max34440_read_word_data, .write_word_data = max34440_write_word_data, },
@@ -418,7 +417,6 @@ static struct pmbus_driver_info max34440_info[] = { .func[15] = PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP, .func[16] = PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP, .func[17] = PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP, - .read_byte_data = max34440_read_byte_data, .read_word_data = max34440_read_word_data, .write_word_data = max34440_write_word_data, },
@@ -454,7 +452,6 @@ static struct pmbus_driver_info max34440_info[] = { .func[19] = PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP, .func[20] = PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP, .func[21] = PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP, - .read_byte_data = max34440_read_byte_data, .read_word_data = max34440_read_word_data, .write_word_data = max34440_write_word_data, },
drivers/hwtracing/coresight/coresight-etm-perf.c +12 -2
@@ -126,10 +126,10 @@ static void free_sink_buffer(struct etm_event_data *event_data)cpumask_t *mask = &event_data->mask;struct coresight_device *sink; -if (WARN_ON (cpumask_empty (mask))) +if (!event_data->snk_config)return ; -if (!event_data->snk_config) +if (WARN_ON (cpumask_empty (mask)))return ; cpu =cpumask_first (mask);
@@ -310,6 +310,16 @@ static void etm_event_start(struct perf_event *event, int flags)if (!event_data) goto fail; +/* +* Check if this ETM is allowed to trace, as decided +* at etm_setup_aux(). This could be due to an unreachable +* sink from this ETM. We can't do much in this case if +* the sink was specified or hinted to the driver. For +* now, simply don't record anything on this ETM. +*/ +if (!cpumask_test_cpu (cpu, &event_data->mask)) + goto fail_end_stop; + path =etm_event_cpu_path (event_data, cpu);/* We need a sink, no need to continue without one */ sink =coresight_get_sink (path);
drivers/i2c/busses/Kconfig +1 -0
@@ -1162,6 +1162,7 @@ config I2C_RCAR tristate "Renesas R-Car I2C Controller" depends on ARCH_RENESAS || COMPILE_TEST select I2C_SLAVE + select RESET_CONTROLLER if ARCH_RCAR_GEN3 help If you say yes to this option, support will be included for the R-Car I2C controller.
drivers/i2c/i2c-core-acpi.c +10 -1
@@ -264,6 +264,7 @@ static acpi_status i2c_acpi_add_device(acpi_handle handle, u32 level,void i2c_acpi_register_devices (struct i2c_adapter *adap) {acpi_status status; +acpi_handle handle;if (!has_acpi_companion (&adap->dev))return ;
@@ -274,6 +275,15 @@ void i2c_acpi_register_devices(struct i2c_adapter *adap) adap, NULL);if (ACPI_FAILURE (status))dev_warn (&adap->dev,"failed to enumerate I2C slaves\n" ); + +if (!adap->dev.parent) +return ; + + handle =ACPI_HANDLE (adap->dev.parent); +if (!handle) +return ; + +acpi_walk_dep_device_list (handle); } const struct acpi_device_id *
@@ -737,7 +747,6 @@ int i2c_acpi_install_space_handler(struct i2c_adapter *adapter)return -ENOMEM ; } -acpi_walk_dep_device_list (handle);return 0 ; }
drivers/i3c/master.c +17 -2
@@ -1760,6 +1760,21 @@ static void i3c_master_bus_cleanup(struct i3c_master_controller *master)i3c_master_detach_free_devs (master); } +static void i3c_master_attach_boardinfo (struct i3c_dev_desc *i3cdev) +{ +struct i3c_master_controller *master = i3cdev->common.master; +struct i3c_dev_boardinfo *i3cboardinfo; + +list_for_each_entry (i3cboardinfo, &master->boardinfo.i3c, node) { +if (i3cdev->info.pid != i3cboardinfo->pid) +continue ; + + i3cdev->boardinfo = i3cboardinfo; + i3cdev->info.static_addr = i3cboardinfo->static_addr; +return ; + } +} +static struct i3c_dev_desc *i3c_master_search_i3c_dev_duplicate (struct i3c_dev_desc *refdev) {
@@ -1815,10 +1830,10 @@ int i3c_master_add_i3c_dev_locked(struct i3c_master_controller *master,if (ret) goto err_detach_dev; +i3c_master_attach_boardinfo (newdev); + olddev =i3c_master_search_i3c_dev_duplicate (newdev);if (olddev) { - newdev->boardinfo = olddev->boardinfo; - newdev->info.static_addr = olddev->info.static_addr; newdev->dev = olddev->dev;if (newdev->dev) newdev->dev->desc = newdev;
drivers/i3c/master/i3c-master-cdns.c +3 -1
@@ -1593,8 +1593,10 @@ static int cdns_i3c_master_probe(struct platform_device *pdev) master->ibi.slots =devm_kcalloc (&pdev->dev, master->ibi.num_slots,sizeof (*master->ibi.slots),GFP_KERNEL ); -if (!master->ibi.slots) +if (!master->ibi.slots) { + ret = -ENOMEM ; goto err_disable_sysclk; + }writel (IBIR_THR (1 ), master->regs +CMD_IBI_THR_CTRL );writel (MST_INT_IBIR_THR , master->regs +MST_IER );
drivers/iio/adc/stm32-adc-core.c +8 -1
@@ -780,6 +780,13 @@ static int stm32_adc_core_runtime_resume(struct device *dev) {return stm32_adc_core_hw_start (dev); } + +static int stm32_adc_core_runtime_idle (struct device *dev) +{ +pm_runtime_mark_last_busy (dev); + +return 0 ; +}#endif static const struct dev_pm_ops stm32_adc_core_pm_ops = {
@@ -787,7 +794,7 @@ static const struct dev_pm_ops stm32_adc_core_pm_ops = { pm_runtime_force_resume) SET_RUNTIME_PM_OPS(stm32_adc_core_runtime_suspend, stm32_adc_core_runtime_resume, - NULL) + stm32_adc_core_runtime_idle) }; static const struct stm32_adc_priv_cfg stm32f4_adc_priv_cfg = {
drivers/infiniband/core/cma.c +36 -48
118 lines not on this page · raw message
drivers/infiniband/core/ucma.c +5 -1
@@ -581,6 +581,7 @@ static int ucma_free_ctx(struct ucma_context *ctx)list_move_tail (&uevent->list, &list); }list_del (&ctx->list); + events_reported = ctx->events_reported;mutex_unlock (&ctx->file->mut);list_for_each_entry_safe (uevent, tmp, &list, list) {
@@ -590,7 +591,6 @@ static int ucma_free_ctx(struct ucma_context *ctx)kfree (uevent); } - events_reported = ctx->events_reported;mutex_destroy (&ctx->mutex);kfree (ctx);return events_reported;
@@ -1473,7 +1473,9 @@ static ssize_t ucma_process_join(struct ucma_file *file,return 0 ; err3: +mutex_lock (&ctx->mutex);rdma_leave_multicast (ctx->cm_id, (struct sockaddr *) &mc->addr); +mutex_unlock (&ctx->mutex);ucma_cleanup_mc_events (mc); err2:xa_erase (&multicast_table, mc->id);
@@ -1639,7 +1641,9 @@ static ssize_t ucma_migrate_id(struct ucma_file *new_file, cur_file = ctx->file;if (cur_file == new_file) { +mutex_lock (&cur_file->mut); resp.events_reported = ctx->events_reported; +mutex_unlock (&cur_file->mut); goto response; }
drivers/infiniband/core/umem.c +13 -2
@@ -151,13 +151,24 @@ unsigned long ib_umem_find_best_pgsz(struct ib_umem *umem,dma_addr_t mask;int i; +/* rdma_for_each_block() has a bug if the page size is smaller than the +* page size used to build the umem. For now prevent smaller page sizes +* from being returned. +*/ + pgsz_bitmap &=GENMASK (BITS_PER_LONG -1 ,PAGE_SHIFT ); +/* At minimum, drivers must support PAGE_SIZE or smaller */ if (WARN_ON (!(pgsz_bitmap &GENMASK (PAGE_SHIFT ,0 ))))return 0 ; va = virt; -/* max page size not to exceed MR length */ - mask =roundup_pow_of_two (umem->length); +/* The best result is the smallest page size that results in the minimum +* number of required pages. Compute the largest page size that could +* work based on VA address bits that don't change. +*/ + mask = pgsz_bitmap & +GENMASK (BITS_PER_LONG -1 , +bits_per ((umem->length -1 + virt) ^ virt));/* offset into first SGL */ pgoff = umem->address & ~PAGE_MASK ;
drivers/infiniband/hw/hns/hns_roce_hw_v1.c +0 -1
@@ -271,7 +271,6 @@ static int hns_roce_v1_post_send(struct ib_qp *ibqp, ps_opcode =HNS_ROCE_WQE_OPCODE_SEND ;break ;case IB_WR_LOCAL_INV : -break ;case IB_WR_ATOMIC_CMP_AND_SWP :case IB_WR_ATOMIC_FETCH_AND_ADD :case IB_WR_LSO :
drivers/infiniband/hw/hns/hns_roce_hw_v2.c +4 -1
@@ -4616,7 +4616,9 @@ static int hns_roce_v2_query_qp(struct ib_qp *ibqp, struct ib_qp_attr *qp_attr, qp_attr->retry_cnt =roce_get_field (context.byte_212_lsn,V2_QPC_BYTE_212_RETRY_CNT_M ,V2_QPC_BYTE_212_RETRY_CNT_S ); - qp_attr->rnr_retry =le32_to_cpu (context.rq_rnr_timer); + qp_attr->rnr_retry =roce_get_field (context.byte_244_rnr_rxack, +V2_QPC_BYTE_244_RNR_CNT_M , +V2_QPC_BYTE_244_RNR_CNT_S ); done: qp_attr->cur_qp_state = qp_attr->qp_state;
@@ -4632,6 +4634,7 @@ static int hns_roce_v2_query_qp(struct ib_qp *ibqp, struct ib_qp_attr *qp_attr, } qp_init_attr->cap = qp_attr->cap; + qp_init_attr->sq_sig_type = hr_qp->sq_signal_bits; out:mutex_unlock (&hr_qp->mutex);
drivers/infiniband/hw/hns/hns_roce_qp.c +4 -2
@@ -1181,8 +1181,10 @@ int hns_roce_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr,mutex_lock (&hr_qp->mutex); - cur_state = attr_mask &IB_QP_CUR_STATE ? - attr->cur_qp_state : (enum ib_qp_state )hr_qp->state; +if (attr_mask &IB_QP_CUR_STATE && attr->cur_qp_state != hr_qp->state) + goto out; + + cur_state = hr_qp->state; new_state = attr_mask &IB_QP_STATE ? attr->qp_state : cur_state; if (ibqp->uobject &&
drivers/infiniband/hw/i40iw/i40iw.h +4 -5
@@ -398,8 +398,8 @@ static inline struct i40iw_qp *to_iwqp(struct ib_qp *ibqp) }/* i40iw.c */ -void i40iw_add_ref (struct ib_qp *); -void i40iw_rem_ref (struct ib_qp *); +void i40iw_qp_add_ref (struct ib_qp *ibqp); +void i40iw_qp_rem_ref (struct ib_qp *ibqp);struct ib_qp *i40iw_get_qp (struct ib_device *,int ); void i40iw_flush_wqes(struct i40iw_device *iwdev,
@@ -543,9 +543,8 @@ enum i40iw_status_code i40iw_manage_qhash(struct i40iw_device *iwdev, bool wait);void i40iw_receive_ilq (struct i40iw_sc_vsi *vsi,struct i40iw_puda_buf *rbuf);void i40iw_free_sqbuf (struct i40iw_sc_vsi *vsi,void *bufp); -void i40iw_free_qp_resources (struct i40iw_device *iwdev, -struct i40iw_qp *iwqp, -u32 qp_num); +void i40iw_free_qp_resources (struct i40iw_qp *iwqp); +enum i40iw_status_code i40iw_obj_aligned_mem (struct i40iw_device *iwdev,struct i40iw_dma_mem *memptr,u32 size,u32 mask);
drivers/infiniband/hw/i40iw/i40iw_cm.c +5 -5
@@ -2322,7 +2322,7 @@ static void i40iw_rem_ref_cm_node(struct i40iw_cm_node *cm_node) iwqp = cm_node->iwqp;if (iwqp) { iwqp->cm_node =NULL ; -i40iw_rem_ref (&iwqp->ibqp); +i40iw_qp_rem_ref (&iwqp->ibqp); cm_node->iwqp =NULL ; }else if (cm_node->qhash_set) {i40iw_get_addr_info (cm_node, &nfo);
@@ -3452,7 +3452,7 @@ void i40iw_cm_disconn(struct i40iw_qp *iwqp)kfree (work);return ; } -i40iw_add_ref (&iwqp->ibqp); +i40iw_qp_add_ref (&iwqp->ibqp);spin_unlock_irqrestore (&iwdev->qptable_lock, flags); work->iwqp = iwqp;
@@ -3623,7 +3623,7 @@ static void i40iw_disconnect_worker(struct work_struct *work)kfree (dwork);i40iw_cm_disconn_true (iwqp); -i40iw_rem_ref (&iwqp->ibqp); +i40iw_qp_rem_ref (&iwqp->ibqp); }/**
@@ -3745,7 +3745,7 @@ int i40iw_accept(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param) cm_node->lsmm_size = accept.size + conn_param->private_data_len;i40iw_cm_init_tsa_conn (iwqp, cm_node); cm_id->add_ref (cm_id); -i40iw_add_ref (&iwqp->ibqp); +i40iw_qp_add_ref (&iwqp->ibqp); attr.qp_state =IB_QPS_RTS ; cm_node->qhash_set = false;
@@ -3908,7 +3908,7 @@ int i40iw_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param) iwqp->cm_node = cm_node; cm_node->iwqp = iwqp; iwqp->cm_id = cm_id; -i40iw_add_ref (&iwqp->ibqp); +i40iw_qp_add_ref (&iwqp->ibqp);if (cm_node->state !=I40IW_CM_STATE_OFFLOADED ) { cm_node->state =I40IW_CM_STATE_SYN_SENT ;
drivers/infiniband/hw/i40iw/i40iw_hw.c +2 -2
@@ -313,7 +313,7 @@ void i40iw_process_aeq(struct i40iw_device *iwdev) __func__, info->qp_cq_id);continue ; } -i40iw_add_ref (&iwqp->ibqp); +i40iw_qp_add_ref (&iwqp->ibqp);spin_unlock_irqrestore (&iwdev->qptable_lock, flags); qp = &iwqp->sc_qp;spin_lock_irqsave (&iwqp->lock, flags);
@@ -427,7 +427,7 @@ void i40iw_process_aeq(struct i40iw_device *iwdev)break ; }if (info->qp) -i40iw_rem_ref (&iwqp->ibqp); +i40iw_qp_rem_ref (&iwqp->ibqp); }while (1 );if (aeqcnt)
drivers/infiniband/hw/i40iw/i40iw_utils.c +10 -49
24 lines not on this page · raw message
drivers/infiniband/hw/i40iw/i40iw_verbs.c +22 -9
Lines of this file are not shown. View the raw message.
drivers/infiniband/hw/i40iw/i40iw_verbs.h +2 -1
Lines of this file are not shown. View the raw message.
drivers/infiniband/hw/qedr/qedr_iw_cm.c +4 -2
Lines of this file are not shown. View the raw message.
drivers/infiniband/ulp/ipoib/ipoib_main.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/infiniband/ulp/ipoib/ipoib_netlink.c +11 -0
Lines of this file are not shown. View the raw message.
drivers/infiniband/ulp/ipoib/ipoib_vlan.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/input/keyboard/twl4030_keypad.c +3 -5
Lines of this file are not shown. View the raw message.
drivers/input/touchscreen/imx6ul_tsc.c +16 -11
Lines of this file are not shown. View the raw message.
drivers/media/i2c/ov5640.c +110 -86
196 lines not on this page · raw message
drivers/media/pci/saa7134/saa7134-tvaudio.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/media/platform/exynos4-is/fimc-isp.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/media/platform/exynos4-is/fimc-lite.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/media/platform/exynos4-is/media-dev.c +4 -4
Lines of this file are not shown. View the raw message.
drivers/media/platform/exynos4-is/mipi-csis.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/media/platform/qcom/camss/camss-csiphy.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/media/platform/qcom/venus/core.c +4 -1
Lines of this file are not shown. View the raw message.
drivers/media/platform/qcom/venus/vdec.c +8 -2
Lines of this file are not shown. View the raw message.
drivers/media/platform/rcar-vin/rcar-csi2.c +10 -14
Lines of this file are not shown. View the raw message.
drivers/media/platform/rcar-vin/rcar-dma.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/media/platform/rockchip/rga/rga-buf.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/media/platform/s3c-camif/camif-core.c +2 -3
Lines of this file are not shown. View the raw message.
drivers/media/platform/s5p-mfc/s5p_mfc_pm.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/media/platform/sti/bdisp/bdisp-v4l2.c +1 -2
Lines of this file are not shown. View the raw message.
drivers/media/platform/sti/delta/delta-v4l2.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/media/platform/sti/hva/hva-hw.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/media/platform/stm32/stm32-dcmi.c +1 -3
Lines of this file are not shown. View the raw message.
drivers/misc/vmw_vmci/vmci_queue_pair.c +6 -4
Lines of this file are not shown. View the raw message.
drivers/net/dsa/rtl8366.c +151 -129
280 lines not on this page · raw message
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c +162 -13
175 lines not on this page · raw message
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.h +15 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/cisco/enic/enic_api.c +6 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/cisco/enic/enic_main.c +21 -6
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/faraday/ftgmac100.c +5 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/faraday/ftgmac100.h +8 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/freescale/fec_main.c +28 -7
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx4/en_rx.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx4/en_tx.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/lib/clock.c +3 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/realtek/r8169_main.c +8 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +1 -32
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/ath10k/htt_rx.c +8 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/ath9k/hif_usb.c +19 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/ath9k/htc_hst.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/wcn36xx/main.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy/phy_lcn.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c +6 -3
Lines of this file are not shown. View the raw message.
drivers/net/wireless/marvell/mwifiex/scan.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/marvell/mwifiex/sdio.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/marvell/mwifiex/usb.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/quantenna/qtnfmac/commands.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c +9 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtw88/pci.h +2 -2
Lines of this file are not shown. View the raw message.
drivers/pci/controller/pcie-iproc-msi.c +9 -4
Lines of this file are not shown. View the raw message.
drivers/rapidio/devices/rio_mport_cdev.c +11 -7
Lines of this file are not shown. View the raw message.
drivers/scsi/smartpqi/smartpqi_init.c +67 -34
101 lines not on this page · raw message
drivers/spi/spi-s3c64xx.c +42 -10
52 lines not on this page · raw message
drivers/staging/media/ipu3/ipu3-css-params.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/usb/class/cdc-wdm.c +55 -17
72 lines not on this page · raw message
drivers/usb/core/urb.c +54 -35
89 lines not on this page · raw message
drivers/usb/gadget/function/f_printer.c +14 -2
Lines of this file are not shown. View the raw message.
drivers/video/backlight/sky81452-backlight.c +1 -0
Lines of this file are not shown. View the raw message.
fs/xfs/xfs_fsmap.c +28 -20
48 lines not on this page · raw message
fs/xfs/xfs_ioctl.c +98 -46
144 lines not on this page · raw message
net/netfilter/nf_conntrack_proto_tcp.c +13 -6
Lines of this file are not shown. View the raw message.
sound/pci/hda/patch_realtek.c +56 -0
56 lines not on this page · raw message
tools/testing/selftests/bpf/progs/test_sysctl_loop1.c +2 -2
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/progs/test_sysctl_loop2.c +2 -2
Lines of this file are not shown. View the raw message.
tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-inter-event-combined-hist.tc +4 -4
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/forwarding/vxlan_asymmetric.sh +10 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/forwarding/vxlan_symmetric.sh +10 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/rtnetlink.sh +5 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/powerpc/eeh/eeh-basic.sh +6 -3
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.