Linux 5.4.22
Greg KH
maintainerI'm announcing the release of the 5.4.22 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/fb/fbcon.rst | 8 - Makefile | 2 arch/Kconfig | 3 arch/arm/Kconfig | 4 arch/arm/boot/dts/imx6qdl-zii-rdu2.dtsi | 7 arch/arm/boot/dts/r8a7779.dtsi | 8 + arch/arm/boot/dts/rk3188-bqedison2qc.dts | 3 arch/arm/boot/dts/stm32f469-disco.dts | 8 + arch/arm/boot/dts/sun8i-h3.dtsi | 15 + arch/arm/configs/exynos_defconfig | 6 arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi | 16 +- arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 10 + arch/arm64/boot/dts/qcom/msm8996.dtsi | 4 arch/arm64/boot/dts/qcom/sdm845-db845c.dts | 2 arch/arm64/boot/dts/rockchip/px30.dtsi | 6 arch/arm64/boot/dts/rockchip/rk3399-firefly.dts | 3 arch/arm64/boot/dts/rockchip/rk3399-khadas-edge.dtsi | 3 arch/arm64/boot/dts/rockchip/rk3399-nanopc-t4.dts | 27 --- arch/arm64/boot/dts/rockchip/rk3399-orangepi.dts | 3 arch/arm64/boot/dts/ti/k3-j721e-main.dtsi | 1 arch/arm64/include/asm/alternative.h | 32 ++-- arch/arm64/include/asm/atomic_lse.h | 19 ++ arch/arm64/include/asm/lse.h | 6 arch/microblaze/kernel/cpu/cache.c | 3 arch/mips/loongson64/loongson-3/platform.c | 3 arch/powerpc/Makefile.postlink | 4 arch/powerpc/kernel/eeh_driver.c | 6 arch/powerpc/kernel/pci_dn.c | 15 + arch/powerpc/kvm/emulate_loadstore.c | 5 arch/powerpc/mm/fault.c | 3 arch/powerpc/platforms/powernv/pci-ioda.c | 48 +++++- arch/powerpc/platforms/powernv/pci.c | 18 -- arch/powerpc/platforms/pseries/lparcfg.c | 4 arch/powerpc/tools/relocs_check.sh | 20 +- arch/s390/Makefile | 2 arch/s390/include/asm/pci.h | 2 arch/s390/kernel/mcount.S | 15 + arch/s390/kvm/interrupt.c | 6 arch/s390/pci/pci.c | 2 arch/s390/pci/pci_clp.c | 48 +++--- arch/s390/pci/pci_sysfs.c | 63 +++++--- arch/sh/include/cpu-sh2a/cpu/sh7269.h | 11 + arch/sparc/kernel/vmlinux.lds.S | 6 arch/x86/entry/vdso/vdso32-setup.c | 1 arch/x86/events/amd/core.c | 91 ++++++++---- arch/x86/events/perf_event.h | 2 arch/x86/include/asm/nmi.h | 1 arch/x86/kernel/fpu/signal.c | 3 arch/x86/kernel/nmi.c | 20 +- arch/x86/kernel/sysfb_simplefb.c | 2 arch/x86/lib/x86-opcode-map.txt | 2 arch/x86/mm/pageattr.c | 8 - arch/x86/platform/efi/efi.c | 41 ++--- arch/x86/platform/efi/efi_64.c | 9 - block/bfq-iosched.c | 12 + crypto/Kconfig | 4 drivers/acpi/acpica/dsfield.c | 2 drivers/acpi/acpica/dswload.c | 21 ++ drivers/acpi/button.c | 11 + drivers/atm/fore200e.c | 25 ++- drivers/base/dd.c | 5 drivers/base/platform.c | 12 - drivers/block/brd.c | 22 ++ drivers/block/nbd.c | 10 + drivers/block/rbd.c | 2 drivers/block/zram/zram_drv.c | 3 drivers/bus/ti-sysc.c | 10 + drivers/char/hpet.c | 2 drivers/char/random.c | 5 drivers/clk/at91/sam9x60.c | 1 drivers/clk/clk.c | 53 +++++-- drivers/clk/imx/clk.h | 37 ++-- drivers/clk/meson/clk-pll.c | 9 + drivers/clk/meson/meson8b.c | 11 - drivers/clk/qcom/clk-rcg2.c | 11 - drivers/clk/qcom/clk-smd-rpm.c | 3 drivers/clk/renesas/rcar-gen3-cpg.c | 6 drivers/clk/sunxi-ng/ccu-sun50i-a64.c | 28 +++ drivers/clk/ti/clk-7xx.c | 2 drivers/clk/uniphier/clk-uniphier-peri.c | 13 + drivers/clocksource/bcm2835_timer.c | 5 drivers/clocksource/timer-davinci.c | 8 - drivers/crypto/Kconfig | 2 drivers/crypto/chelsio/chtls/chtls_cm.c | 27 +-- drivers/crypto/chelsio/chtls/chtls_cm.h | 21 ++ drivers/crypto/chelsio/chtls/chtls_hw.c | 3 drivers/devfreq/Kconfig | 3 drivers/devfreq/event/Kconfig | 2 drivers/devfreq/event/exynos-ppmu.c | 13 + drivers/dma/dmaengine.c | 4 drivers/dma/fsl-qdma.c | 2 drivers/dma/imx-sdma.c | 19 +- drivers/edac/sifive_edac.c | 4 drivers/gpio/gpio-grgpio.c | 10 - drivers/gpio/gpiolib.c | 1 drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c | 19 -- drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 2 drivers/gpu/drm/amd/amdgpu/nv.c | 6 drivers/gpu/drm/amd/amdgpu/soc15_common.h | 1 drivers/gpu/drm/amd/amdkfd/kfd_debugfs.c | 2 drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c | 10 - drivers/gpu/drm/amd/display/dc/calcs/dcn_calc_math.h | 43 ----- drivers/gpu/drm/amd/display/dc/calcs/dcn_calcs.c | 34 +++- drivers/gpu/drm/amd/display/dc/core/dc.c | 17 +- drivers/gpu/drm/amd/display/dc/core/dc_link.c | 3 drivers/gpu/drm/amd/display/dc/dcn20/dcn20_optc.c | 16 +- drivers/gpu/drm/amd/display/dc/dml/dml_common_defs.c | 2 drivers/gpu/drm/amd/display/dc/dml/dml_inline_defs.h | 2 drivers/gpu/drm/amd/display/dc/inc/dcn_calc_math.h | 43 +++++ drivers/gpu/drm/amd/display/modules/freesync/freesync.c | 2 drivers/gpu/drm/amd/powerplay/hwmgr/smu10_hwmgr.c | 23 +-- drivers/gpu/drm/drm_client_modeset.c | 72 +++++++++ drivers/gpu/drm/drm_debugfs_crc.c | 4 drivers/gpu/drm/drm_mipi_dbi.c | 4 drivers/gpu/drm/gma500/framebuffer.c | 8 - drivers/gpu/drm/ingenic/ingenic-drm.c | 16 +- drivers/gpu/drm/mediatek/mtk_drm_crtc.c | 18 ++ drivers/gpu/drm/msm/adreno/a5xx_gpu.c | 11 + drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 11 + drivers/gpu/drm/nouveau/nouveau_dmem.c | 4 drivers/gpu/drm/nouveau/nouveau_fence.c | 2 drivers/gpu/drm/nouveau/nouveau_ttm.c | 4 drivers/gpu/drm/nouveau/nvkm/core/memory.c | 2 drivers/gpu/drm/nouveau/nvkm/engine/disp/channv50.c | 2 drivers/gpu/drm/nouveau/nvkm/engine/gr/gk20a.c | 21 +- drivers/gpu/drm/nouveau/nvkm/subdev/fault/base.c | 1 drivers/gpu/drm/nouveau/nvkm/subdev/secboot/gm20b.c | 5 drivers/gpu/drm/panel/panel-simple.c | 37 ++++ drivers/gpu/drm/qxl/qxl_kms.c | 2 drivers/gpu/drm/radeon/radeon_display.c | 2 drivers/gpu/drm/vmwgfx/vmwgfx_cmdbuf_res.c | 4 drivers/ide/cmd64x.c | 3 drivers/ide/serverworks.c | 6 drivers/infiniband/core/cache.c | 121 +++++++++------- drivers/infiniband/core/core_priv.h | 1 drivers/infiniband/core/device.c | 33 +--- drivers/infiniband/hw/hfi1/chip.c | 11 + drivers/infiniband/hw/hfi1/chip.h | 2 drivers/infiniband/hw/hfi1/chip_registers.h | 1 drivers/infiniband/hw/hfi1/driver.c | 1 drivers/infiniband/hw/hfi1/hfi.h | 2 drivers/infiniband/hw/hns/hns_roce_mr.c | 4 drivers/infiniband/hw/mlx5/main.c | 34 ++-- drivers/infiniband/sw/rxe/rxe_verbs.h | 2 drivers/input/touchscreen/edt-ft5x06.c | 7 drivers/iommu/amd_iommu.c | 7 drivers/iommu/amd_iommu_init.c | 19 +- drivers/iommu/amd_iommu_types.h | 2 drivers/iommu/arm-smmu-v3.c | 3 drivers/iommu/dmar.c | 1 drivers/iommu/intel-iommu.c | 3 drivers/iommu/intel-pasid.c | 12 + drivers/iommu/intel-svm.c | 9 - drivers/iommu/iova.c | 2 drivers/irqchip/irq-gic-v3-its.c | 2 drivers/irqchip/irq-gic-v3.c | 9 - drivers/irqchip/irq-mbigen.c | 1 drivers/leds/leds-pca963x.c | 8 - drivers/md/bcache/bset.h | 3 drivers/md/bcache/journal.c | 3 drivers/md/bcache/stats.c | 10 - drivers/md/bcache/super.c | 79 ++++++---- drivers/md/dm-thin.c | 18 +- drivers/media/i2c/mt9v032.c | 10 + drivers/media/i2c/ov5640.c | 2 drivers/media/pci/cx23885/cx23885-cards.c | 24 +++ drivers/media/pci/cx23885/cx23885-video.c | 3 drivers/media/pci/cx23885/cx23885.h | 1 drivers/media/platform/sti/bdisp/bdisp-hw.c | 6 drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c | 22 ++ drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.h | 4 drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c | 20 +- drivers/media/usb/uvc/uvc_driver.c | 25 +++ drivers/media/usb/uvc/uvcvideo.h | 1 drivers/misc/xilinx_sdfec.c | 10 - drivers/net/ethernet/broadcom/bnxt/bnxt.c | 1 drivers/net/ethernet/cisco/enic/enic_main.c | 2 drivers/net/ethernet/freescale/gianfar.c | 10 - drivers/net/ethernet/intel/i40e/i40e_xsk.c | 2 drivers/net/ethernet/mellanox/mlx5/core/en_stats.c | 3 drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c | 3 drivers/net/ethernet/netronome/nfp/abm/cls.c | 14 - drivers/net/ethernet/realtek/r8169_main.c | 9 + drivers/net/ethernet/xscale/ixp4xx_eth.c | 96 +++++------- drivers/net/phy/fixed_phy.c | 7 drivers/net/phy/realtek.c | 19 ++ drivers/net/wan/fsl_ucc_hdlc.c | 5 drivers/net/wan/hdlc_x25.c | 13 + drivers/net/wan/ixp4xx_hss.c | 4 drivers/net/wireless/ath/ath10k/snoc.c | 5 drivers/net/wireless/ath/ath10k/wmi-tlv.c | 5 drivers/net/wireless/ath/ath10k/wmi.c | 2 drivers/net/wireless/ath/wil6210/txrx_edma.c | 3 drivers/net/wireless/broadcom/b43legacy/main.c | 5 drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c | 3 drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 13 - drivers/net/wireless/intel/ipw2x00/ipw2100.c | 7 drivers/net/wireless/intel/ipw2x00/ipw2200.c | 5 drivers/net/wireless/intel/iwlegacy/3945-mac.c | 5 drivers/net/wireless/intel/iwlegacy/4965-mac.c | 5 drivers/net/wireless/intel/iwlegacy/common.c | 2 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c | 8 - drivers/net/wireless/intel/iwlwifi/mvm/tt.c | 4 drivers/net/wireless/intersil/hostap/hostap_ap.c | 2 drivers/net/wireless/intersil/orinoco/orinoco_usb.c | 3 drivers/net/wireless/realtek/rtlwifi/pci.c | 10 - drivers/net/wireless/realtek/rtw88/main.c | 12 - drivers/net/wireless/realtek/rtw88/pci.c | 5 drivers/nfc/port100.c | 2 drivers/nvme/host/pci.c | 23 +-- drivers/nvme/target/core.c | 6 drivers/opp/of.c | 17 +- drivers/pci/controller/pcie-iproc.c | 24 +++ drivers/pci/pci.c | 24 ++- drivers/pci/pci.h | 3 drivers/pci/quirks.c | 99 ++++++------- drivers/pci/search.c | 4 drivers/perf/fsl_imx8_ddr_perf.c | 16 +- drivers/pinctrl/intel/pinctrl-baytrail.c | 8 - drivers/pinctrl/sh-pfc/pfc-sh7264.c | 9 - drivers/pinctrl/sh-pfc/pfc-sh7269.c | 39 +++-- drivers/pwm/pwm-omap-dmtimer.c | 35 +++- drivers/pwm/pwm-pca9685.c | 4 drivers/regulator/core.c | 2 drivers/regulator/rk808-regulator.c | 2 drivers/regulator/vctrl-regulator.c | 38 +++-- drivers/remoteproc/remoteproc_core.c | 2 drivers/reset/reset-uniphier.c | 13 + drivers/rtc/Kconfig | 12 + drivers/scsi/aic7xxx/aic7xxx_core.c | 2 drivers/scsi/iscsi_tcp.c | 4 drivers/scsi/lpfc/lpfc_ct.c | 42 ++--- drivers/scsi/scsi_transport_iscsi.c | 26 +++ drivers/scsi/ufs/ufs-mediatek.c | 11 + drivers/scsi/ufs/ufs-qcom.c | 3 drivers/scsi/ufs/ufshcd.c | 32 +--- drivers/scsi/ufs/ufshcd.h | 9 - drivers/soc/tegra/fuse/tegra-apbmisc.c | 2 drivers/spi/spi-fsl-lpspi.c | 32 ++-- drivers/spi/spi-fsl-qspi.c | 2 drivers/staging/media/meson/vdec/vdec.c | 2 drivers/staging/rtl8188eu/os_dep/ioctl_linux.c | 9 - drivers/tty/synclink_gt.c | 18 +- drivers/tty/synclinkmp.c | 24 +-- drivers/uio/uio_dmem_genirq.c | 6 drivers/usb/dwc2/gadget.c | 3 drivers/usb/dwc3/host.c | 6 drivers/usb/gadget/udc/gr_udc.c | 16 +- drivers/usb/musb/omap2430.c | 2 drivers/vfio/pci/vfio_pci_nvlink2.c | 6 drivers/video/fbdev/pxa168fb.c | 6 drivers/virtio/virtio_balloon.c | 2 drivers/visorbus/visorchipset.c | 11 - drivers/vme/bridges/vme_fake.c | 30 ++- fs/btrfs/check-integrity.c | 3 fs/btrfs/ctree.h | 20 +- fs/btrfs/file-item.c | 3 fs/btrfs/inode.c | 121 ++++++++++++---- fs/btrfs/volumes.c | 44 +++++ fs/ceph/mds_client.c | 3 fs/ceph/super.c | 5 fs/cifs/cifs_dfs_ref.c | 97 +++++------- fs/cifs/connect.c | 6 fs/cifs/dfs_cache.c | 2 fs/cifs/smb2pdu.c | 3 fs/ext4/file.c | 10 - fs/ext4/readpage.c | 17 +- fs/f2fs/data.c | 13 - fs/f2fs/file.c | 50 ++++-- fs/f2fs/namei.c | 27 +-- fs/f2fs/sysfs.c | 12 + fs/fuse/file.c | 12 + fs/jbd2/checkpoint.c | 2 fs/jbd2/commit.c | 4 fs/jbd2/journal.c | 24 +-- fs/nfs/nfs42proc.c | 4 fs/nfsd/vfs.c | 19 +- fs/ocfs2/dlm/Makefile | 2 fs/ocfs2/dlm/dlmast.c | 8 - fs/ocfs2/dlm/dlmconvert.c | 8 - fs/ocfs2/dlm/dlmdebug.c | 8 - fs/ocfs2/dlm/dlmdomain.c | 8 - fs/ocfs2/dlm/dlmlock.c | 8 - fs/ocfs2/dlm/dlmmaster.c | 8 - fs/ocfs2/dlm/dlmrecovery.c | 8 - fs/ocfs2/dlm/dlmthread.c | 8 - fs/ocfs2/dlm/dlmunlock.c | 8 - fs/ocfs2/dlmfs/Makefile | 2 fs/ocfs2/dlmfs/dlmfs.c | 4 fs/ocfs2/dlmfs/userdlm.c | 6 fs/ocfs2/journal.h | 8 - fs/orangefs/orangefs-debugfs.c | 1 fs/reiserfs/stree.c | 3 fs/reiserfs/super.c | 2 fs/udf/super.c | 23 ++- include/linux/cpuhotplug.h | 1 include/linux/dmaengine.h | 2 include/linux/list_nulls.h | 8 - include/linux/pci.h | 2 include/linux/platform_data/ti-sysc.h | 1 include/linux/raid/pq.h | 3 include/linux/rculist_nulls.h | 8 - include/media/v4l2-device.h | 12 - include/rdma/ib_verbs.h | 9 - include/trace/events/rcu.h | 4 kernel/bpf/inode.c | 3 kernel/cpu.c | 13 + kernel/module.c | 20 +- kernel/padata.c | 30 ++- kernel/printk/printk.c | 4 kernel/rcu/tree.c | 11 - kernel/rcu/tree_exp.h | 2 kernel/rcu/tree_plugin.h | 22 ++ kernel/sched/core.c | 3 kernel/sched/topology.c | 39 +++++ kernel/time/alarmtimer.c | 20 +- kernel/trace/ftrace.c | 5 kernel/trace/trace_events_hist.c | 70 +++------ kernel/trace/trace_events_trigger.c | 5 kernel/trace/trace_stat.c | 31 ++-- kernel/watchdog.c | 10 - lib/debugobjects.c | 46 +++--- lib/raid6/mktables.c | 2 lib/scatterlist.c | 2 net/core/dev.c | 4 net/core/filter.c | 2 net/core/sock_map.c | 3 net/dsa/tag_qca.c | 2 net/netfilter/nft_tunnel.c | 3 net/sched/cls_flower.c | 1 net/sched/cls_matchall.c | 1 net/smc/smc_diag.c | 5 net/sunrpc/cache.c | 2 samples/bpf/Makefile | 1 scripts/Kbuild.include | 15 - scripts/Kconfig.include | 2 scripts/kconfig/confdata.c | 2 scripts/link-vmlinux.sh | 4 security/selinux/avc.c | 53 +++---- sound/core/control.c | 5 sound/pci/hda/patch_conexant.c | 1 sound/pci/hda/patch_hdmi.c | 7 sound/pci/hda/patch_realtek.c | 10 + sound/sh/aica.c | 4 sound/sh/sh_dac_audio.c | 3 sound/soc/atmel/Kconfig | 2 sound/soc/intel/boards/sof_rt5682.c | 43 +++++ sound/soc/soc-topology.c | 42 ++--- sound/soc/sof/intel/hda-dai.c | 3 sound/soc/sof/intel/hda.h | 2 sound/usb/card.c | 4 sound/usb/format.c | 3 sound/usb/pcm.c | 4 sound/usb/quirks.c | 38 +++++ sound/usb/quirks.h | 5 sound/usb/usx2y/usX2Yhwdep.c | 2 tools/arch/x86/lib/x86-opcode-map.txt | 2 tools/bpf/bpftool/cgroup.c | 56 +++++-- tools/lib/api/fs/fs.c | 4 tools/objtool/Makefile | 6 tools/testing/selftests/bpf/test_select_reuseport.c | 16 +- tools/testing/selftests/kselftest/runner.sh | 2 tools/testing/selftests/net/so_txtime.c | 84 ++++++++++- tools/testing/selftests/net/so_txtime.sh | 9 - tools/testing/selftests/powerpc/eeh/eeh-functions.sh | 10 - tools/testing/selftests/size/get_size.c | 24 ++- tools/usb/usbip/src/usbip_network.c | 40 +++-- tools/usb/usbip/src/usbip_network.h | 12 - 368 files changed, 3044 insertions(+), 1597 deletions(-)
Abel Vesa (1):
clk: imx: Add correct failure handling for clk based helpers
Adam Ford (2):
media: ov5640: Fix check for PLL1 exceeding max allowed rate drm/panel: simple: Add Logic PD Type 28 display support
Aditya Pakki (2):
fore200e: Fix incorrect checks of NULL pointer dereference
orinoco: avoid assertion in case of NULL pointer
Alex Deucher (3):
drm/amdgpu/smu10: fix smu10_get_clock_by_type_with_latency drm/amdgpu/smu10: fix smu10_get_clock_by_type_with_voltage drm/amdgpu/display: handle multiple numbers of fclks in dcn_calcs.c (v2)
Alexander Tsoy (2):
ALSA: usb-audio: Add boot quirk for MOTU M Series
ALSA: usb-audio: add implicit fb quirk for MOTU M Series
Alexandre Belloni (1):
rtc: Kconfig: select REGMAP_I2C when necessary
Alexandre Ghiti (1):
powerpc: Do not consider weak unresolved symbol relocations as bad
Alexey Kardashevskiy (1):
vfio/spapr/nvlink2: Skip unpinning pages on error exit
Amanda Liu (1):
drm/amd/display: Clear state after exiting fixed active VRR state
Amol Grover (1):
nvmet: Pass lockdep expression to RCU lists
Anand Jain (1):
btrfs: device stats, log when stats are zeroed
Andre Przywara (3):
arm64: dts: allwinner: H6: Add PMU mode
arm64: dts: allwinner: H5: Add PMU node
arm: dts: allwinner: H3: Add PMU node
Andrei Otcheretianski (2):
iwlwifi: mvm: Fix thermal zone registration
iwlwifi: mvm: Check the sta is not NULL in iwl_mvm_cfg_he_sta()
Andrey Smirnov (2):
ARM: dts: imx6: rdu2: Disable WP for USDHC2 and USDHC3
ARM: dts: imx6: rdu2: Limit USBH1 to Full Speed
Andrey Zhizhikin (1):
tools lib api fs: Fix gcc9 stringop-truncation compilation error
Ard Biesheuvel (3):
efi/x86: Map the entire EFI vendor string before copying it efi/x86: Don't panic or BUG() on non-critical error conditions x86/mm: Fix NX bit clearing issue in kernel_map_pages_in_pgd
Arnd Bergmann (7):
PM / devfreq: exynos-ppmu: Fix excessive stack usage
mlx5: work around high stack usage with gcc
staging: rtl8188: avoid excessive stack usage
wan: ixp4xx_hss: fix compile-testing on 64-bit
visorbus: fix uninitialized variable access
vme: bridges: reduce stack usage
rbd: work around -Wuninitialized warning
Arvind Sankar (1):
x86/sysfb: Fix check for bad VRAM size
Bartosz Golaszewski (1):
clocksource: davinci: only enable clockevents once tim34 is initialized
Ben Skeggs (4):
drm/nouveau/gr/gk20a,gm200-: add terminators to method lists read from fw drm/nouveau/fault/gv100-: fix memory leak on module unload drm/nouveau/mmu: fix comptag memory leak drm/nouveau/disp/nv50-: prevent oops when no channel method map provided
Benjamin Gaignard (1):
ARM: dts: stm32: Add power-supply for DSI panel on stm32f469-disco
Bibby Hsieh (1):
drm/mediatek: handle events when enabling/disabling crtc
Bjorn Andersson (1):
arm64: dts: qcom: db845c: Enable ath10k 8bit host-cap quirk
Brandon Maier (1):
remoteproc: Initialize rproc_class before use
Brendan Higgins (1):
crypto: inside-secure - add unspecified HAS_IOMEM dependency
Can Guo (1):
scsi: ufs: Complete pending requests in host reset and restore path
Cezary Rojewski (1):
ASoC: SOF: Intel: hda: Fix SKL dai count
Changbin Du (1):
x86/nmi: Remove irq_work from the long duration NMI handler
Chanwoo Choi (1):
PM / devfreq: rk3399_dmc: Add COMPILE_TEST and HAVE_ARM_SMCCC dependency
Chao Yu (1):
f2fs: fix memleak of kobject
Chen Zhou (2):
dmaengine: fsl-qdma: fix duplicated argument to &&
ASoC: atmel: fix build error with CONFIG_SND_ATMEL_SOC_DMA=m
Chen-Yu Tsai (3):
media: sun4i-csi: Deal with DRAM offset
media: sun4i-csi: Fix data sampling polarity handling
media: sun4i-csi: Fix [HV]sync polarity handling
Chris Down (1):
bpf, btf: Always output invariant hit in pahole DWARF to BTF transform
Chris Mason (1):
Btrfs: keep pages dirty when using btrfs_writepage_fixup_worker
Christian Borntraeger (1):
KVM: s390: ENOTSUPP -> EOPNOTSUPP fixups
Christoph Hellwig (2):
bcache: rework error unwinding in register_bcache
nvme-pci: remove nvmeq->tags
Christophe JAILLET (1):
pxa168fb: Fix the function used to release some memory in an error handling path
Christophe Leroy (1):
powerpc/mm: Don't log user reads to 0xffffffff
Colin Ian King (7):
wil6210: fix break that is never reached because of zero'ing of a retry counter
media: meson: add missing allocation failure check on new_buf drm/nouveau/nouveau: fix incorrect sizeof on args.src an args.dst clocksource/drivers/bcm2835_timer: Fix memory leak of timer drivers/block/zram/zram_drv.c: fix error return codes not being returned in writeback_store driver core: platform: fix u32 greater or equal to zero comparison
iwlegacy: ensure loop counter addr does not wrap and cause an infinite loop
Coly Li (5):
bcache: fix use-after-free in register_bcache()
bcache: fix memory corruption in bch_cache_accounting_clear()
bcache: explicity type cast in bset_bkey_last()
bcache: fix incorrect data type usage in btree_flush_write()
bcache: properly initialize 'path' and 'err' in register_bcache()
Dan Carpenter (5):
brcmfmac: Fix use after free in brcmf_sdio_readframes() drm/nouveau/secboot/gm20b: initialize pointer in gm20b_secboot_new()
ALSA: usb-audio: unlock on error in probe
cmd64x: potential buffer overflow in cmd64x_program_timings()
ide: serverworks: potential overflow in svwks_set_pio_mode()
Daniel Drake (2):
PCI: Add generic quirk for increasing D3hot delay
PCI: Increase D3 delay for AMD Ryzen5/7 XHCI controllers
Daniel Jordan (1):
padata: validate cpumask without removed CPU during offline
Daniel Vetter (1):
radeon: insert 10ms sleep in dce5_crtc_load_lut
David S. Miller (1):
sparc: Add .exit.data section.
David Sterba (2):
btrfs: safely advance counter when looking up bio csums
btrfs: separate definition of assertion failure handlers
Davide Caratti (2):
net/sched: matchall: add missing validation of TCA_MATCHALL_FLAGS net/sched: flower: add missing validation of TCA_FLOWER_FLAGS
Dingchen Zhang (1):
drm: remove the newline for CRC source name.
Dmitry Osipenko (1):
soc/tegra: fuse: Correct straps' address for older Tegra124 device trees
Dmitry Torokhov (2):
net: phy: fixed_phy: fix use-after-free when checking link GPIO
usb: dwc3: use proper initializers for property entries
Dor Askayo (1):
drm/amd/display: do not allocate display_mode_lib unnecessarily
Douglas Anderson (1):
clk: qcom: rcg2: Don't crash if our parent can't be found; return an error
Enric Balletbo i Serra (2):
regulator: vctrl-regulator: Avoid deadlock getting and setting the voltage
regulator: core: Fix exported symbols to the exported GPL version
Eric Biggers (1):
ext4: fix deadlock allocating bio_post_read_ctx from mempool
Eric Dumazet (1):
net/smc: fix leak of kernel memory to user space
Erik Kaneda (1):
ACPICA: Disassembler: create buffer fields in ACPI_PARSE_LOAD_PASS1
Eugen Hristev (2):
media: i2c: mt9v032: fix enum mbus codes and frame sizes
clk: at91: sam9x60: fix programmable clock prescaler
Felix Kuehling (1):
drm/amdkfd: Fix permissions of hang_hws
Firo Yang (1):
enic: prevent waking up stopped tx queues over watchdog reset
Forest Crossman (1):
media: cx23885: Add support for AVerMedia CE310B
Geert Uytterhoeven (7):
pinctrl: sh-pfc: sh7264: Fix CAN function GPIOs drm/mipi_dbi: Fix off-by-one bugs in mipi_dbi_blank()
rtc: i2c/spi: Avoid inclusion of REGMAP support when not needed
ARM: dts: r8a7779: Add device node for ARM global timer
pinctrl: sh-pfc: sh7269: Fix CAN function GPIOs
driver core: Print device when resources present in really_probe()
crypto: essiv - fix AEAD capitalization and preposition use in help text
Greg Kroah-Hartman (1):
Linux 5.4.22
Grygorii Strashko (1):
clk: ti: dra7: fix parent for gmac_clkctrl
Gustavo A. R. Silva (1):
char: hpet: Fix out-of-bounds read bug
Hans de Goede (1):
pinctrl: baytrail: Do not clear IRQ flags on direct-irq enabled pins
Harry Wentland (1):
drm/amd/display: Retrain dongles when SINK_COUNT becomes non-zero
Hechao Li (1):
bpf: Print error message for bpftool cgroup show
Heiner Kallweit (1):
r8169: check that Realtek PHY driver module is loaded
Icenowy Zheng (1):
clk: sunxi-ng: add mux and pll notifiers for A64 CPU clock
Ido Schimmel (1):
mlxsw: spectrum_dpipe: Add missing error path
Jacob Pan (3):
iommu/vt-d: Fix off-by-one in PASID allocation iommu/vt-d: Match CPU and IOMMU paging mode iommu/vt-d: Avoid sending invalid page response
Jaegeuk Kim (4):
f2fs: preallocate DIO blocks when forcing buffered_io
f2fs: call f2fs_balance_fs outside of locked page
f2fs: set I_LINKABLE early to avoid wrong access by vfs
f2fs: free sysfs kobject
Jaihind Yadav (1):
selinux: ensure we cleanup the internal AVC counters on error in avc_update()
Jakub Kicinski (1):
Revert "nfp: abm: fix memory leak in nfp_abm_u32_knode_replace"
Jakub Sitnicki (1):
bpf, sockhash: Synchronize_rcu before free'ing map
James Sewart (3):
PCI: Fix pci_add_dma_alias() bitmask size
PCI: Add nr_devfns parameter to pci_add_dma_alias()
PCI: Add DMA alias quirk for PLX PEX NTB
James Smart (1):
scsi: lpfc: Fix: Rework setting of fdmi symbolic node name registration
Jan Kara (3):
udf: Allow writing to 'Rewritable' partitions
reiserfs: Fix spurious unlock in reiserfs_fill_super() error handling
udf: Fix free space reporting for metadata and virtual partitions
Jason Ekstrand (1):
ACPI: button: Add DMI quirk for Razer Blade Stealth 13 late 2019 lid switch
Jean-Philippe Brucker (1):
brcmfmac: sdio: Fix OOB interrupt initialization on brcm43362
Jeffrey Hugo (2):
ath10k: Fix qmi init error handling
clk: qcom: smd: Add missing bimc clock
Jerome Brunet (1):
clk: actually call the clock init before any other callback of the clock
Jessica Yu (1):
module: avoid setting info->name early in case we can fall back to info->mod->name
Jia-Ju Bai (4):
gpio: gpio-grgpio: fix possible sleep-in-atomic-context bugs in grgpio_irq_map/unmap()
media: sti: bdisp: fix a possible sleep-in-atomic-context bug in bdisp_device_run()
uio: fix a sleep-in-atomic-context bug in uio_dmem_genirq_irqcontrol()
usb: gadget: udc: fix possible sleep-in-atomic-context bugs in gr_probe()
Jiewei Ke (1):
RDMA/rxe: Fix error type of mmap_offset
Johan Jonker (3):
arm64: dts: rockchip: fix dwmmc clock name for px30
arm64: dts: rockchip: add reg property to brcmf sub-nodes
ARM: dts: rockchip: add reg property to brcmf sub node for rk3188-bqedison2qc
Johannes Thumshirn (1):
btrfs: fix possible NULL-pointer dereference in integrity checks
John Garry (1):
irqchip/mbigen: Set driver .suppress_bind_attrs to avoid remove problems
John Keeping (1):
usb: dwc2: Fix IN FIFO allocation
John Ogness (1):
printk: fix exclusive_console replaying
Jonathan Lemon (1):
bnxt: Detach page from page pool before sending up the stack
Josef Bacik (1):
btrfs: do not do delalloc reservation under page lock
Jun Lei (1):
drm/amd/display: fixup DML dependencies
Kai Li (1):
jbd2: clear JBD2_ABORT flag before journal_reset to update log tail info when load journal
Kai Vehmanen (1):
ALSA: hda/hdmi - add retry logic to parse_intel_hdmi()
Kim Phillips (1):
perf/x86/amd: Constrain Large Increment per Cycle events
Krzysztof Kozlowski (1):
ARM: exynos_defconfig: Bring back explicitly wanted options
Kunihiko Hayashi (2):
reset: uniphier: Add SCSSI reset control for each channel
clk: uniphier: Add SCSSI clock gate for each channel
Leon Romanovsky (1):
RDMA/mlx5: Don't fake udata for kernel path
Leonard Crestez (1):
perf/imx_ddr: Fix cpu hotplug state cleanup
Li Guanglei (1):
sched/core: Fix size of rq::uclamp initialization
Li RongQing (1):
bpf: Return -EBADRQC for invalid map type in __bpf_tx_xdp_map
Liang Chen (1):
bcache: cached_dev_free needs to put the sb page
Linus Walleij (1):
net: ethernet: ixp4xx: Standard module init
Logan Gunthorpe (1):
dmaengine: Store module owner in dma_device struct
Lokesh Vutla (1):
arm64: dts: ti: k3-j721e-main: Add missing power-domains for smmu
Lorenz Bauer (1):
selftests: bpf: Reset global state between reuseport test runs
Lu Baolu (1):
iommu/vt-d: Remove unnecessary WARN_ON_ONCE()
Luc Van Oostenryck (1):
misc: xilinx_sdfec: fix xsdfec_poll()'s return type
Luis Henriques (1):
tracing: Fix tracing_stat return values in error handling paths
Maciej Fijalkowski (1):
i40e: Relax i40e_xsk_wakeup's return value when PF is busy
Manasi Navare (1):
drm/fbdev: Fallback to non tiled mode if all tiles not present
Manu Gautam (1):
arm64: dts: qcom: msm8996: Disable USB2 PHY suspend by core
Mao Wenan (1):
NFC: port100: Convert cpu_to_le16(le16_to_cpu(E1) + E2) to use le16_add_cpu().
Marc Zyngier (1):
irqchip/gic-v3: Only provision redistributors that are enabled in ACPI
Marco Elver (2):
rcu: Fix data-race due to atomic_t copy-by-value
debugobjects: Fix various data races
Markus Elfring (1):
drm/qxl: Complete exception handling in qxl_device_init()
Martin Blumenstingl (2):
clk: meson: meson8b: make the CCF use the glitch-free mali mux
net: phy: realtek: add logging for the RGMII TX delay configuration
Martin Schiller (1):
wan/hdlc_x25: fix skb handling
Masahiro Yamada (4):
kconfig: fix broken dependency in randconfig-generated .config
kbuild: remove *.tmp file when filechk fails
kbuild: use -S instead of -E for precise cc-option test in Kconfig
ocfs2: make local header paths relative to C files
Masami Hiramatsu (2):
modules: lockdep: Suppress suspicious RCU usage warning x86/decoder: Add TEST opcode to Group3-2
Matthieu Baerts (1):
selftests: settings: tests can be in subsubdirs
Michael Bringmann (1):
powerpc/pseries/lparcfg: Fix display of Maximum Memory
Michael S. Tsirkin (1):
virtio_balloon: prevent pfn array overflow
Michael Walle (1):
spi: spi-fsl-qspi: Ensure width is respected in spi-mem operations
Mike Marciniszyn (2):
IB/hfi1: Add software counter for ctxt0 seq drop IB/hfi1: Add RcvShortLengthErrCnt to hfi1stats
Miklos Szeredi (1):
fuse: don't overflow LLONG_MAX with end offset
Mikulas Patocka (1):
dm thin: don't allow changing data device during thin-pool reload
Miquel Raynal (1):
regulator: rk808: Lower log level on optional GPIOs being not available
Monk Liu (1):
drm/amdgpu: fix KIQ ring test fail in TDR of SRIOV
Nathan Chancellor (8):
drm/amdgpu: Ensure ret is always initialized when using SOC15_WAIT_ON_RREG
media: v4l2-device.h: Explicitly compare grp{id,mask} to zero in v4l2_device macros
ALSA: usx2y: Adjust indentation in snd_usX2Y_hwdep_dsp_status
scsi: aic7xxx: Adjust indentation in ahc_find_syncrate
tty: synclinkmp: Adjust indentation in several functions
tty: synclink_gt: Adjust indentation in several functions
hostap: Adjust indentation in prism2_hostapd_add_sta lib/scatterlist.c: adjust indentation in __sg_alloc_table
Navid Emamdoost (2):
brcmfmac: Fix memory leak in brcmf_p2p_create_p2pdev() drm/vmwgfx: prevent memory leak in vmw_cmdbuf_res_add
Neeraj Upadhyay (1):
rcu: Fix missed wakeup of exp_wq waiters
Nick Black (1):
scsi: iscsi: Don't destroy session if there are outstanding connections
Nicola Lunghi (1):
ALSA: usb-audio: add quirks for Line6 Helix devices fw>=2.82
Niklas Schnelle (2):
s390/pci: Fix possible deadlock in recover_store() s390/pci: Recover handle in clp_set_pci_fn()
Nikola Cornij (1):
drm/amd/display: Map ODM memory correctly when doing ODM combine
Nikolay Borisov (1):
btrfs: Fix split-brain handling when changing FSID to metadata uuid
Oliver O'Halloran (4):
powerpc/powernv/iov: Ensure the pdn for VFs always contains a valid PE number powerpc/iov: Move VF pdev fixup into pcibios_fixup_iov() powerpc/sriov: Remove VF eeh_dev state when disabling SR-IOV selftests/eeh: Bump EEH wait time to 60s
Paolo Valente (1):
block, bfq: do not plug I/O for bfq_queues with no proc refs
Parav Pandit (1):
IB/core: Let IB core distribute cache update events
Paul Cercueil (1):
gpu/drm: ingenic: Avoid null pointer deference in plane atomic update
Paul E. McKenney (1):
rcu: Use WRITE_ONCE() for assignments to ->pprev for hlist_nulls
Paul Kocialkowski (1):
drm/gma500: Fixup fbdev stolen size usage evaluation
Paul Moore (1):
selinux: ensure we cleanup the internal AVC counters on error in avc_insert()
Paulo Alcantara (SUSE) (1):
cifs: Fix mount options set in automount
Per Forlin (1):
net: dsa: tag_qca: Make sure there is headroom for tag
Peter Große (1):
ALSA: hda - Add docking station support for Lenovo Thinkpad T420s
Peter Rosin (1):
fbdev: fix numbering of fbcon options
Peter Zijlstra (2):
cpu/hotplug, stop_machine: Fix stop_machine vs hotplug order asm-generic/tlb: add missing CONFIG symbol
Philipp Zabel (1):
Input: edt-ft5x06 - work around first register access error
Philippe Schenker (1):
spi: fsl-lpspi: fix only one cs-gpio working
Phong Tran (4):
b43legacy: Fix -Wcast-function-type
ipw2x00: Fix -Wcast-function-type
iwlegacy: Fix -Wcast-function-type
rtlwifi: rtl_pci: Fix -Wcast-function-type
Pierre-Louis Bossart (2):
ASoC: soc-topology: fix endianness issues
ASoC: SOF: Intel: hda-dai: fix compilation warning in pcm_prepare
Ping-Ke Shih (1):
rtw88: fix rate mask for 1SS chip
Qian Cai (1):
iommu/iova: Silence warnings under memory pressure
Rakesh Pillai (1):
ath10k: Correct the DMA direction for management tx buffers
Rasmus Villemoes (1):
net/wan/fsl_ucc_hdlc: reject muram offsets above 64K
Remi Pommarel (1):
clk: meson: pll: Fix by 0 division in __pll_params_to_rate()
Ritesh Harjani (1):
ext4: fix ext4_dax_read/write inode locking sequence for IOCB_NOWAIT
Rob Clark (1):
drm/msm/adreno: fix zap vs no-zap handling
Robin Murphy (1):
arm64: dts: rockchip: Fix NanoPC-T4 cooling maps
Ronnie Sahlberg (1):
cifs: fix NULL dereference in match_prepath
Sam McNally (1):
ASoC: Intel: sof_rt5682: Ignore the speaker amp when there isn't one.
Sami Tolvanen (2):
arm64: lse: fix LSE atomics with LLVM's integrated assembler
arm64: fix alternatives with LLVM's integrated assembler
Sascha Hauer (1):
dmaengine: imx-sdma: Fix memory leak
Sathyanarayana Nujella (2):
ASoC: intel: sof_rt5682: Add quirk for number of HDMI DAI's
ASoC: intel: sof_rt5682: Add support for tgl-max98357a-rt5682
Sebastian Andrzej Siewior (1):
x86/fpu: Deactivate FPU state after failure during state load
Sergei Shtylyov (1):
clk: renesas: rcar-gen3: Allow changing the RPC[D2] clocks
Sergey Senozhatsky (1):
char/random: silence a lockdep splat with printk()
Sergey Zakharchenko (1):
media: uvcvideo: Add a quirk to force GEO GC6500 Camera bits-per-pixel value
Shile Zhang (1):
objtool: Fix ARCH=x86_64 build error
Shuah Khan (1):
usbip: Fix unsafe unaligned pointer usage
Shubhrajyoti Datta (1):
microblaze: Prevent the overflow of the start
Siddhesh Poyarekar (1):
kselftest: Minimise dependency of get_size on C library interfaces
Simon Schwartz (1):
driver core: platform: Prevent resouce overflow from causing infinite loops
Stanley Chu (2):
scsi: ufs: pass device information to apply_dev_quirks
scsi: ufs-mediatek: add apply_dev_quirks variant operation
Stefan Reiter (1):
rcu/nocb: Fix dump_tree hierarchy print always active
Stephen Boyd (4):
clk: qcom: Don't overwrite 'cfg' in clk_rcg2_dfs_populate_freq()
clk: Use parent node pointer during registration if necessary
gpiolib: Set lockdep class for hierarchical irq domains
alarmtimer: Make alarmtimer platform device child of RTC device
Steve French (2):
cifs: fix unitialized variable poential problem with network I/O cache lock patch
cifs: log warning message (once) if out of disk space
Steven Rostedt (VMware) (1):
tracing: Fix very unlikely race of registering two stat tracers
Sun Ke (1):
nbd: add a flush_workqueue in nbd_start_device
Suravee Suthikulpanit (2):
iommu/amd: Check feature support bit before accessing MSI capability registers iommu/amd: Only support x2APIC with IVHD type 11h/40h
Takashi Iwai (3):
ALSA: sh: Fix unused variable warnings
ALSA: hda/realtek - Apply mic mute LED quirk for Dell E7xx laptops, too
ALSA: sh: Fix compile warning wrt const
Takashi Sakamoto (1):
ALSA: ctl: allow TLV read operation for callback type of element in locked case
Thomas Gleixner (1):
watchdog/softlockup: Enforce that timestamp is valid on boot
Tiecheng Zhou (1):
drm/amdgpu/sriov: workaround on rev_id for Navi12 under sriov
Tiezhu Yang (1):
MIPS: Loongson: Fix potential NULL dereference in loongson3_platform_init()
Toke Høiland-Jørgensen (2):
core: Don't skip generic XDP program execution for cloned SKBs samples/bpf: Set -fno-stack-protector when building BPF programs
Tom Zanussi (1):
tracing: Simplify assignment parsing for hist triggers
Tony Lindgren (2):
bus: ti-sysc: Implement quirk handling for CLKDM_NOAUTO
usb: musb: omap2430: Get rid of musb .set_vbus for omap2430 glue
Trond Myklebust (2):
nfsd: Clone should commit src file metadata too
sunrpc: Fix potential leaks in sunrpc_cache_unhash()
Uwe Kleine-König (2):
pwm: omap-dmtimer: Simplify error handling
pwm: omap-dmtimer: Remove PWM chip in .remove before making it unfunctional
Valdis Kletnieks (1):
x86/vdso: Provide missing include file
Valentin Schneider (1):
sched/topology: Assert non-NUMA topology masks don't (partially) overlap
Vasily Averin (4):
bpf: map_seq_next should always increase position index
ftrace: fpid_next() should increase position index trigger_next should increase position index help_next should increase position index
Vasily Gorbik (2):
s390: adjust -mpacked-stack support check for clang 10 s390/ftrace: generate traced function stack frame
Vinay Kumar Yadav (1):
crypto: chtls - Fixed memory leak
Vincenzo Frascino (2):
ARM: 8952/1: Disable kmemleak on XIP kernels
ARM: 8951/1: Fix Kexec compilation issue.
Viresh Kumar (1):
opp: Free static OPPs on errors while adding them
Vladimir Oltean (1):
gianfar: Fix TX timestamping with a stacked DSA driver
Wei Liu (1):
PCI: iproc: Apply quirk_paxc_bridge() for module as well as built-in
Wei Yongjun (1):
EDAC/sifive: Fix return value check in ecc_register()
Wen Gong (1):
ath10k: correct the tlv len of ath10k_wmi_tlv_op_gen_config_pno_start
Wenpeng Liang (1):
RDMA/hns: Avoid printing address of mtt page
Wenwen Wang (1):
NFS: Fix memory leaks
Will Deacon (1):
iommu/arm-smmu-v3: Use WRITE_ONCE() when changing validity of an STE
Willem de Bruijn (1):
selftests/net: make so_txtime more robust to timer variance
Xin Long (1):
netfilter: nft_tunnel: add the missing ERSPAN_VERSION nla_policy
Xiubo Li (1):
ceph: check availability of mds cluster on mount after wait timeout
Yan-Hsuan Chuang (1):
rtw88: fix potential NULL skb access in TX ISR
Yong Zhao (1):
drm/amdkfd: Fix a bug in SDMA RLC queue counting under HWS mode
Yongqiang Niu (1):
drm/mediatek: Add gamma property according to hardware capability
YueHaibing (3):
kernel/module: Fix memleak in module_add_modinfo_attrs() drm/nouveau: Fix copy-paste error in nouveau_fence_wait_uevent_handler drm/nouveau/drm/ttm: Remove set but not used variable 'mem'
Yunfeng Ye (1):
reiserfs: prevent NULL pointer dereference in reiserfs_insert_item()
Zahari Petkov (1):
leds: pca963x: Fix open-drain initialization
Zenghui Yu (1):
irqchip/gic-v3-its: Reference to its_invall_cmd descriptor when building INVALL
Zhengyuan Liu (2):
raid6/test: fix a compilation error
raid6/test: fix a compilation warning
Zhiqiang Liu (1):
brd: check and limit max_part par
wangyan (1):
ocfs2: fix a NULL pointer dereference when call ocfs2_update_inode_fsync_trans()
yu kuai (2):
drm/amdgpu: remove 4 set but not used variable in amdgpu_atombios_get_connector_info_from_object_table
pwm: Remove set but not set variable 'pwm'
zhangyi (F) (3):
ext4, jbd2: ensure panic when aborting with zero errno
jbd2: switch to use jbd2_journal_abort() when failed to submit the commit record
jbd2: make sure ESHUTDOWN to be recorded in the journal superblock
zhengbin (1):
KVM: PPC: Remove set but not used variable 'ra', 'rs', 'rt'
Greg KH
maintainerDocumentation/fb/fbcon.rst +4 -4
@@ -127,7 +127,7 @@ C. Boot options is typically located on the same video card. Thus, the consoles that are controlled by the VGA console will be garbled. -4. fbcon=rotate:<n> +5. fbcon=rotate:<n> This option changes the orientation angle of the console display. The value 'n' accepts the following:
@@ -152,21 +152,21 @@ C. Boot options Actually, the underlying fb driver is totally ignorant of console rotation. -5. fbcon=margin:<color> +6. fbcon=margin:<color> This option specifies the color of the margins. The margins are the leftover area at the right and the bottom of the screen that are not used by text. By default, this area will be black. The 'color' value is an integer number that depends on the framebuffer driver being used. -6. fbcon=nodefer +7. fbcon=nodefer If the kernel is compiled with deferred fbcon takeover support, normally the framebuffer contents, left in place by the firmware/bootloader, will be preserved until there actually is some text is output to the console. This option causes fbcon to bind immediately to the fbdev device. -7. fbcon=logo-pos:<location> +8. fbcon=logo-pos:<location> The only possible 'location' is 'center' (without quotes), and when given, the bootup logo is moved from the default top-left corner
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 4 -SUBLEVEL = 21 +SUBLEVEL = 22 EXTRAVERSION = NAME = Kleptomaniac Octopus
arch/Kconfig +3 -0
@@ -399,6 +399,9 @@ config HAVE_RCU_TABLE_FREE config HAVE_MMU_GATHER_PAGE_SIZE bool +config MMU_GATHER_NO_RANGE + bool + config HAVE_MMU_GATHER_NO_GATHER bool
arch/arm/Kconfig +2 -2
@@ -75,7 +75,7 @@ config ARM select HAVE_CONTEXT_TRACKING select HAVE_COPY_THREAD_TLS select HAVE_C_RECORDMCOUNT - select HAVE_DEBUG_KMEMLEAK + select HAVE_DEBUG_KMEMLEAK if !XIP_KERNEL select HAVE_DMA_CONTIGUOUS if MMU select HAVE_DYNAMIC_FTRACE if !XIP_KERNEL && !CPU_ENDIAN_BE32 && MMU select HAVE_DYNAMIC_FTRACE_WITH_REGS if HAVE_DYNAMIC_FTRACE
@@ -1907,7 +1907,7 @@ config XIP_DEFLATED_DATA config KEXEC bool "Kexec system call (EXPERIMENTAL)" depends on (!SMP || PM_SLEEP_SMP) - depends on !CPU_V7M + depends on MMU select KEXEC_CORE help kexec is a system call that implements the ability to shutdown your
arch/arm/boot/dts/imx6qdl-zii-rdu2.dtsi +3 -4
@@ -627,7 +627,7 @@ pinctrl-0 = <&pinctrl_usdhc2>; bus-width = <4>; cd-gpios = <&gpio2 2 GPIO_ACTIVE_LOW>; - wp-gpios = <&gpio2 3 GPIO_ACTIVE_HIGH>; + disable-wp; vmmc-supply = <®_3p3v_sd>; vqmmc-supply = <®_3p3v>; no-1-8-v;
@@ -640,7 +640,7 @@ pinctrl-0 = <&pinctrl_usdhc3>; bus-width = <4>; cd-gpios = <&gpio2 0 GPIO_ACTIVE_LOW>; - wp-gpios = <&gpio2 1 GPIO_ACTIVE_HIGH>; + disable-wp; vmmc-supply = <®_3p3v_sd>; vqmmc-supply = <®_3p3v>; no-1-8-v;
@@ -774,6 +774,7 @@ &usbh1 { vbus-supply = <®_5p0v_main>; disable-over-current; + maximum-speed = "full-speed"; status = "okay"; };
@@ -1055,7 +1056,6 @@ MX6QDL_PAD_SD2_DAT1__SD2_DATA1 0x17059 MX6QDL_PAD_SD2_DAT2__SD2_DATA2 0x17059 MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x17059 - MX6QDL_PAD_NANDF_D3__GPIO2_IO03 0x40010040 MX6QDL_PAD_NANDF_D2__GPIO2_IO02 0x40010040 >; };
@@ -1068,7 +1068,6 @@ MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17059 MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17059 MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17059 - MX6QDL_PAD_NANDF_D1__GPIO2_IO01 0x40010040 MX6QDL_PAD_NANDF_D0__GPIO2_IO00 0x40010040 >;
arch/arm/boot/dts/r8a7779.dtsi +8 -0
@@ -68,6 +68,14 @@ <0xf0000100 0x100>; }; + timer@f0000200 { + compatible = "arm,cortex-a9-global-timer"; + reg = <0xf0000200 0x100>; + interrupts = <GIC_PPI 11 + (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_EDGE_RISING)>; + clocks = <&cpg_clocks R8A7779_CLK_ZS>; + }; + timer@f0000600 { compatible = "arm,cortex-a9-twd-timer"; reg = <0xf0000600 0x20>;
arch/arm/boot/dts/rk3188-bqedison2qc.dts +3 -0
@@ -466,9 +466,12 @@ pinctrl-names = "default"; pinctrl-0 = <&sd1_clk>, <&sd1_cmd>, <&sd1_bus4>; vmmcq-supply = <&vccio_wl>; + #address-cells = <1>; + #size-cells = <0>; status = "okay"; brcmf: wifi@1 { + reg = <1>; compatible = "brcm,bcm4329-fmac"; interrupt-parent = <&gpio3>; interrupts = <RK_PD2 GPIO_ACTIVE_HIGH>;
arch/arm/boot/dts/stm32f469-disco.dts +8 -0
@@ -76,6 +76,13 @@ regulator-max-microvolt = <3300000>; }; + vdd_dsi: vdd-dsi { + compatible = "regulator-fixed"; + regulator-name = "vdd_dsi"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + }; + soc { dma-ranges = <0xc0000000 0x0 0x10000000>; };
@@ -155,6 +162,7 @@ compatible = "orisetech,otm8009a"; reg = <0>; /* dsi virtual channel (0..3) */ reset-gpios = <&gpioh 7 GPIO_ACTIVE_LOW>; + power-supply = <&vdd_dsi>; status = "okay"; port {
arch/arm/boot/dts/sun8i-h3.dtsi +12 -3
@@ -80,7 +80,7 @@ #cooling-cells = <2>; }; - cpu@1 { + cpu1: cpu@1 { compatible = "arm,cortex-a7"; device_type = "cpu"; reg = <1>;
@@ -90,7 +90,7 @@ #cooling-cells = <2>; }; - cpu@2 { + cpu2: cpu@2 { compatible = "arm,cortex-a7"; device_type = "cpu"; reg = <2>;
@@ -100,7 +100,7 @@ #cooling-cells = <2>; }; - cpu@3 { + cpu3: cpu@3 { compatible = "arm,cortex-a7"; device_type = "cpu"; reg = <3>;
@@ -111,6 +111,15 @@ }; }; + pmu { + compatible = "arm,cortex-a7-pmu"; + interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>; + interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>; + }; + timer { compatible = "arm,armv7-timer"; interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
arch/arm/configs/exynos_defconfig +6 -0
@@ -38,6 +38,7 @@ CONFIG_CRYPTO_SHA256_ARM=m CONFIG_CRYPTO_SHA512_ARM=m CONFIG_CRYPTO_AES_ARM_BS=m CONFIG_CRYPTO_CHACHA20_NEON=m +CONFIG_KALLSYMS_ALL=y CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y CONFIG_PARTITION_ADVANCED=y
@@ -92,6 +93,7 @@ CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_CRYPTOLOOP=y CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_SIZE=8192 +CONFIG_SCSI=y CONFIG_BLK_DEV_SD=y CONFIG_CHR_DEV_SG=y CONFIG_ATA=y
@@ -290,6 +292,7 @@ CONFIG_CROS_EC_SPI=y CONFIG_COMMON_CLK_MAX77686=y CONFIG_COMMON_CLK_S2MPS11=y CONFIG_EXYNOS_IOMMU=y +CONFIG_PM_DEVFREQ=y CONFIG_DEVFREQ_GOV_PERFORMANCE=y CONFIG_DEVFREQ_GOV_POWERSAVE=y CONFIG_DEVFREQ_GOV_USERSPACE=y
@@ -354,4 +357,7 @@ CONFIG_SOFTLOCKUP_DETECTOR=y # CONFIG_DETECT_HUNG_TASK is not set CONFIG_PROVE_LOCKING=y CONFIG_DEBUG_ATOMIC_SLEEP=y +CONFIG_DEBUG_RT_MUTEXES=y +CONFIG_DEBUG_SPINLOCK=y +CONFIG_DEBUG_MUTEXES=y CONFIG_DEBUG_USER=y
arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi +13 -3
@@ -54,21 +54,21 @@ enable-method = "psci"; }; - cpu@1 { + cpu1: cpu@1 { compatible = "arm,cortex-a53"; device_type = "cpu"; reg = <1>; enable-method = "psci"; }; - cpu@2 { + cpu2: cpu@2 { compatible = "arm,cortex-a53"; device_type = "cpu"; reg = <2>; enable-method = "psci"; }; - cpu@3 { + cpu3: cpu@3 { compatible = "arm,cortex-a53"; device_type = "cpu"; reg = <3>;
@@ -76,6 +76,16 @@ }; }; + pmu { + compatible = "arm,cortex-a53-pmu", + "arm,armv8-pmuv3"; + interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>; + interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>; + }; + psci { compatible = "arm,psci-0.2"; method = "smc";
arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi +10 -0
@@ -70,6 +70,16 @@ clock-output-names = "ext_osc32k"; }; + pmu { + compatible = "arm,cortex-a53-pmu", + "arm,armv8-pmuv3"; + interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>; + interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>; + }; + psci { compatible = "arm,psci-0.2"; method = "smc";
arch/arm64/boot/dts/qcom/msm8996.dtsi +4 -0
@@ -1598,6 +1598,8 @@ interrupts = <0 138 IRQ_TYPE_LEVEL_HIGH>; phys = <&hsusb_phy2>; phy-names = "usb2-phy"; + snps,dis_u2_susphy_quirk; + snps,dis_enblslpm_quirk; }; };
@@ -1628,6 +1630,8 @@ interrupts = <0 131 IRQ_TYPE_LEVEL_HIGH>; phys = <&hsusb_phy1>, <&ssusb_phy_0>; phy-names = "usb2-phy", "usb3-phy"; + snps,dis_u2_susphy_quirk; + snps,dis_enblslpm_quirk; }; };
arch/arm64/boot/dts/qcom/sdm845-db845c.dts +2 -0
@@ -517,6 +517,8 @@ vdd-1.8-xo-supply = <&vreg_l7a_1p8>; vdd-1.3-rfa-supply = <&vreg_l17a_1p3>; vdd-3.3-ch0-supply = <&vreg_l25a_3p3>; + + qcom,snoc-host-cap-8bit-quirk; }; /* PINCTRL - additions to nodes defined in sdm845.dtsi */
arch/arm64/boot/dts/rockchip/px30.dtsi +3 -3
@@ -768,7 +768,7 @@ interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>; clocks = <&cru HCLK_SDMMC>, <&cru SCLK_SDMMC>, <&cru SCLK_SDMMC_DRV>, <&cru SCLK_SDMMC_SAMPLE>; - clock-names = "biu", "ciu", "ciu-drv", "ciu-sample"; + clock-names = "biu", "ciu", "ciu-drive", "ciu-sample"; fifo-depth = <0x100>; max-frequency = <150000000>; pinctrl-names = "default";
@@ -783,7 +783,7 @@ interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>; clocks = <&cru HCLK_SDIO>, <&cru SCLK_SDIO>, <&cru SCLK_SDIO_DRV>, <&cru SCLK_SDIO_SAMPLE>; - clock-names = "biu", "ciu", "ciu-drv", "ciu-sample"; + clock-names = "biu", "ciu", "ciu-drive", "ciu-sample"; fifo-depth = <0x100>; max-frequency = <150000000>; pinctrl-names = "default";
@@ -798,7 +798,7 @@ interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>; clocks = <&cru HCLK_EMMC>, <&cru SCLK_EMMC>, <&cru SCLK_EMMC_DRV>, <&cru SCLK_EMMC_SAMPLE>; - clock-names = "biu", "ciu", "ciu-drv", "ciu-sample"; + clock-names = "biu", "ciu", "ciu-drive", "ciu-sample"; fifo-depth = <0x100>; max-frequency = <150000000>; power-domains = <&power PX30_PD_MMC_NAND>;
arch/arm64/boot/dts/rockchip/rk3399-firefly.dts +3 -0
@@ -669,9 +669,12 @@ vqmmc-supply = &vcc1v8_s3; /* IO line */ vmmc-supply = &vcc_sdio; /* card's power */ + #address-cells = <1>; + #size-cells = <0>; status = "okay"; brcmf: wifi@1 { + reg = <1>; compatible = "brcm,bcm4329-fmac"; interrupt-parent = <&gpio0>; interrupts = <RK_PA3 GPIO_ACTIVE_HIGH>;
arch/arm64/boot/dts/rockchip/rk3399-khadas-edge.dtsi +3 -0
@@ -654,9 +654,12 @@ sd-uhs-sdr104; vqmmc-supply = <&vcc1v8_s3>; vmmc-supply = <&vccio_sd>; + #address-cells = <1>; + #size-cells = <0>; status = "okay"; brcmf: wifi@1 { + reg = <1>; compatible = "brcm,bcm4329-fmac"; interrupt-parent = <&gpio0>; interrupts = <RK_PA3 GPIO_ACTIVE_HIGH>;
arch/arm64/boot/dts/rockchip/rk3399-nanopc-t4.dts +0 -27
@@ -94,33 +94,6 @@ }; }; -&gpu_thermal { - trips { - gpu_warm: gpu_warm { - temperature = <55000>; - hysteresis = <2000>; - type = "active"; - }; - - gpu_hot: gpu_hot { - temperature = <65000>; - hysteresis = <2000>; - type = "active"; - }; - }; - cooling-maps { - map1 { - trip = <&gpu_warm>; - cooling-device = <&fan THERMAL_NO_LIMIT 1>; - }; - - map2 { - trip = <&gpu_hot>; - cooling-device = <&fan 2 THERMAL_NO_LIMIT>; - }; - }; -}; - &pinctrl { ir { ir_rx: ir-rx {
arch/arm64/boot/dts/rockchip/rk3399-orangepi.dts +3 -0
@@ -648,9 +648,12 @@ pinctrl-names = "default"; pinctrl-0 = <&sdio0_bus4 &sdio0_cmd &sdio0_clk>; sd-uhs-sdr104; + #address-cells = <1>; + #size-cells = <0>; status = "okay"; brcmf: wifi@1 { + reg = <1>; compatible = "brcm,bcm4329-fmac"; interrupt-parent = <&gpio0>; interrupts = <RK_PA3 GPIO_ACTIVE_HIGH>;
arch/arm64/boot/dts/ti/k3-j721e-main.dtsi +1 -0
@@ -43,6 +43,7 @@ smmu0: smmu@36600000 { compatible = "arm,smmu-v3"; reg = <0x0 0x36600000 0x0 0x100000>; + power-domains = <&k3_pds 229 TI_SCI_PD_EXCLUSIVE>; interrupt-parent = <&gic500>; interrupts = <GIC_SPI 772 IRQ_TYPE_EDGE_RISING>, <GIC_SPI 768 IRQ_TYPE_EDGE_RISING>;
arch/arm64/include/asm/alternative.h +21 -11
@@ -35,13 +35,16 @@ void apply_alternatives_module(void *start, size_t length);static inline void apply_alternatives_module (void *start,size_t length) { }#endif -#define ALTINSTR_ENTRY (feature,cb) \ +#define ALTINSTR_ENTRY (feature) \ " .word 661b - .\n"/* label */ \ - " .if " __stringify(cb) " == 0\n" \" .word 663f - .\n" /* new instruction */ \ -" .else\n" \ + " .hword " __stringify(feature) "\n" /* feature bit */ \ +" .byte 662b-661b\n" /* source len */ \ + " .byte 664f-663f\n" /* replacement len */ + +#define ALTINSTR_ENTRY_CB (feature, cb) \ + " .word 661b - .\n"/* label */ \ " .word " __stringify(cb) "- .\n" /* callback */ \ -" .endif\n" \ " .hword " __stringify(feature) "\n" /* feature bit */ \" .byte 662b-661b\n" /* source len */ \" .byte 664f-663f\n" /* replacement len */
@@ -62,15 +65,14 @@ static inline void apply_alternatives_module(void *start, size_t length) { }* * Alternatives with callbacks do not generate replacement instructions. */ -#define __ALTERNATIVE_CFG (oldinstr, newinstr, feature, cfg_enabled, cb) \ +#define __ALTERNATIVE_CFG (oldinstr, newinstr, feature, cfg_enabled) \ ".if "__stringify(cfg_enabled)" == 1\n" \ "661:\n\t" \ oldinstr "\n" \ "662:\n" \ ".pushsection .altinstructions,\"a\"\n" \ - ALTINSTR_ENTRY(feature,cb) \ + ALTINSTR_ENTRY(feature) \ ".popsection\n" \ - " .if " __stringify(cb) " == 0\n" \ ".pushsection .altinstr_replacement, \"a\"\n" \ "663:\n\t" \ newinstr "\n" \
@@ -78,17 +80,25 @@ static inline void apply_alternatives_module(void *start, size_t length) { }".popsection\n\t" \".org . - (664b-663b) + (662b-661b)\n\t" \".org . - (662b-661b) + (664b-663b)\n" \ -".else\n\t" \ + ".endif\n" + +#define __ALTERNATIVE_CFG_CB (oldinstr, feature, cfg_enabled, cb) \ + ".if "__stringify(cfg_enabled)" == 1\n" \ + "661:\n\t" \ + oldinstr "\n" \ + "662:\n" \ + ".pushsection .altinstructions,\"a\"\n" \ + ALTINSTR_ENTRY_CB(feature, cb) \ + ".popsection\n" \ "663:\n\t" \ "664:\n\t" \ -".endif\n" \ ".endif\n"#define _ALTERNATIVE_CFG (oldinstr, newinstr, feature, cfg, ...) \ - __ALTERNATIVE_CFG(oldinstr, newinstr, feature, IS_ENABLED(cfg), 0) + __ALTERNATIVE_CFG(oldinstr, newinstr, feature, IS_ENABLED(cfg))#define ALTERNATIVE_CB (oldinstr, cb) \ - __ALTERNATIVE_CFG(oldinstr, "NOT_AN_INSTRUCTION", ARM64_CB_PATCH, 1, cb) + __ALTERNATIVE_CFG_CB(oldinstr, ARM64_CB_PATCH, 1, cb)#else #include <asm/assembler.h>
arch/arm64/include/asm/atomic_lse.h +19 -0
@@ -14,6 +14,7 @@ static inline void __lse_atomic_##op(int i, atomic_t *v) \ { \ asm volatile( \ + __LSE_PREAMBLE \ " " #asm_op " %w[i], %[v]\n" \ : [i] "+r" (i), [v] "+Q" (v->counter) \ : "r" (v)); \
@@ -30,6 +31,7 @@ ATOMIC_OP(add, stadd) static inline int __lse_atomic_fetch_##op##name(int i, atomic_t *v) \ { \ asm volatile( \ + __LSE_PREAMBLE \ " " #asm_op #mb " %w[i], %w[i], %[v]" \ : [i] "+r" (i), [v] "+Q" (v->counter) \ : "r" (v) \
@@ -58,6 +60,7 @@ static inline int __lse_atomic_add_return##name(int i, atomic_t *v) \u32 tmp; \ \ asm volatile( \ + __LSE_PREAMBLE \ " ldadd" #mb " %w[i], %w[tmp], %[v]\n" \ " add %w[i], %w[i], %w[tmp]" \ : [i] "+r" (i), [v] "+Q" (v->counter), [tmp] "=&r" (tmp) \
@@ -77,6 +80,7 @@ ATOMIC_OP_ADD_RETURN( , al, "memory")static inline void __lse_atomic_and (int i,atomic_t *v) { asmvolatile ( + __LSE_PREAMBLE" mvn %w[i], %w[i]\n" " stclr %w[i], %[v]" : [i] "+&r" (i), [v] "+Q" (v->counter)
@@ -87,6 +91,7 @@ static inline void __lse_atomic_and(int i, atomic_t *v) static inline int __lse_atomic_fetch_and##name(int i, atomic_t *v) \ { \ asm volatile( \ + __LSE_PREAMBLE \ " mvn %w[i], %w[i]\n" \ " ldclr" #mb " %w[i], %w[i], %[v]" \ : [i] "+&r" (i), [v] "+Q" (v->counter) \
@@ -106,6 +111,7 @@ ATOMIC_FETCH_OP_AND( , al, "memory")static inline void __lse_atomic_sub (int i,atomic_t *v) { asmvolatile ( + __LSE_PREAMBLE" neg %w[i], %w[i]\n" " stadd %w[i], %[v]" : [i] "+&r" (i), [v] "+Q" (v->counter)
@@ -118,6 +124,7 @@ static inline int __lse_atomic_sub_return##name(int i, atomic_t *v) \u32 tmp; \ \ asm volatile( \ + __LSE_PREAMBLE \ " neg %w[i], %w[i]\n" \ " ldadd" #mb " %w[i], %w[tmp], %[v]\n" \ " add %w[i], %w[i], %w[tmp]" \
@@ -139,6 +146,7 @@ ATOMIC_OP_SUB_RETURN( , al, "memory") static inline int __lse_atomic_fetch_sub##name(int i, atomic_t *v) \ { \ asm volatile( \ + __LSE_PREAMBLE \ " neg %w[i], %w[i]\n" \ " ldadd" #mb " %w[i], %w[i], %[v]" \ : [i] "+&r" (i), [v] "+Q" (v->counter) \
@@ -159,6 +167,7 @@ ATOMIC_FETCH_OP_SUB( , al, "memory") static inline void __lse_atomic64_##op(s64 i, atomic64_t *v) \ { \ asm volatile( \ + __LSE_PREAMBLE \ " " #asm_op " %[i], %[v]\n" \ : [i] "+r" (i), [v] "+Q" (v->counter) \ : "r" (v)); \
@@ -175,6 +184,7 @@ ATOMIC64_OP(add, stadd) static inline long __lse_atomic64_fetch_##op##name(s64 i, atomic64_t *v)\ { \ asm volatile( \ + __LSE_PREAMBLE \ " " #asm_op #mb " %[i], %[i], %[v]" \ : [i] "+r" (i), [v] "+Q" (v->counter) \ : "r" (v) \
@@ -203,6 +213,7 @@ static inline long __lse_atomic64_add_return##name(s64 i, atomic64_t *v)\unsigned long tmp; \ \ asm volatile( \ + __LSE_PREAMBLE \ " ldadd" #mb " %[i], %x[tmp], %[v]\n" \ " add %[i], %[i], %x[tmp]" \ : [i] "+r" (i), [v] "+Q" (v->counter), [tmp] "=&r" (tmp) \
@@ -222,6 +233,7 @@ ATOMIC64_OP_ADD_RETURN( , al, "memory")static inline void __lse_atomic64_and (s64 i,atomic64_t *v) { asmvolatile ( + __LSE_PREAMBLE" mvn %[i], %[i]\n" " stclr %[i], %[v]" : [i] "+&r" (i), [v] "+Q" (v->counter)
@@ -232,6 +244,7 @@ static inline void __lse_atomic64_and(s64 i, atomic64_t *v) static inline long __lse_atomic64_fetch_and##name(s64 i, atomic64_t *v) \ { \ asm volatile( \ + __LSE_PREAMBLE \ " mvn %[i], %[i]\n" \ " ldclr" #mb " %[i], %[i], %[v]" \ : [i] "+&r" (i), [v] "+Q" (v->counter) \
@@ -251,6 +264,7 @@ ATOMIC64_FETCH_OP_AND( , al, "memory")static inline void __lse_atomic64_sub (s64 i,atomic64_t *v) { asmvolatile ( + __LSE_PREAMBLE" neg %[i], %[i]\n" " stadd %[i], %[v]" : [i] "+&r" (i), [v] "+Q" (v->counter)
@@ -263,6 +277,7 @@ static inline long __lse_atomic64_sub_return##name(s64 i, atomic64_t *v) \unsigned long tmp; \ \ asm volatile( \ + __LSE_PREAMBLE \ " neg %[i], %[i]\n" \ " ldadd" #mb " %[i], %x[tmp], %[v]\n" \ " add %[i], %[i], %x[tmp]" \
@@ -284,6 +299,7 @@ ATOMIC64_OP_SUB_RETURN( , al, "memory") static inline long __lse_atomic64_fetch_sub##name(s64 i, atomic64_t *v) \ { \ asm volatile( \ + __LSE_PREAMBLE \ " neg %[i], %[i]\n" \ " ldadd" #mb " %[i], %[i], %[v]" \ : [i] "+&r" (i), [v] "+Q" (v->counter) \
@@ -305,6 +321,7 @@ static inline s64 __lse_atomic64_dec_if_positive(atomic64_t *v)unsigned long tmp; asmvolatile ( + __LSE_PREAMBLE"1: ldr %x[tmp], %[v]\n" " subs %[ret], %x[tmp], #1\n" " b.lt 2f\n"
@@ -332,6 +349,7 @@ __lse__cmpxchg_case_##name##sz(volatile void *ptr, \unsigned long tmp; \ \ asm volatile( \ + __LSE_PREAMBLE \ " mov %" #w "[tmp], %" #w "[old]\n" \ " cas" #mb #sfx "\t%" #w "[tmp], %" #w "[new], %[v]\n" \ " mov %" #w "[ret], %" #w "[tmp]" \
@@ -379,6 +397,7 @@ __lse__cmpxchg_double##name(unsigned long old1, \ register unsigned long x4 asm ("x4") = (unsigned long)ptr; \ \ asm volatile( \ + __LSE_PREAMBLE \ " casp" #mb "\t%[old1], %[old2], %[new1], %[new2], %[v]\n"\ " eor %[old1], %[old1], %[oldval1]\n" \ " eor %[old2], %[old2], %[oldval2]\n" \
arch/arm64/include/asm/lse.h +3 -3
@@ -6,6 +6,8 @@#if defined(CONFIG_AS_LSE ) && defined(CONFIG_ARM64_LSE_ATOMICS ) +#define __LSE_PREAMBLE ".arch armv8-a+lse\n" +#include <linux/compiler_types.h> #include <linux/export.h> #include <linux/jump_label.h>
@@ -14,8 +16,6 @@#include <asm/atomic_lse.h> #include <asm/cpucaps.h> -__asm__(".arch_extension lse" ); -extern struct static_key_false cpu_hwcap_keys[ARM64_NCAPS ];extern struct static_key_false arm64_const_caps_ready;
@@ -34,7 +34,7 @@ static inline bool system_uses_lse_atomics(void)/* In-line patching at runtime */ #define ARM64_LSE_ATOMIC_INSN (llsc, lse) \ - ALTERNATIVE(llsc, lse, ARM64_HAS_LSE_ATOMICS) + ALTERNATIVE(llsc, __LSE_PREAMBLE lse, ARM64_HAS_LSE_ATOMICS)#else /* CONFIG_AS_LSE && CONFIG_ARM64_LSE_ATOMICS */
arch/microblaze/kernel/cpu/cache.c +2 -1
@@ -92,7 +92,8 @@ static inline void __disable_dcache_nomsr(void)#define CACHE_LOOP_LIMITS (start, end, cache_line_length, cache_size) \ do { \ int align = ~(cache_line_length - 1); \ - end = min(start + cache_size, end); \ + if (start < UINT_MAX - cache_size) \ + end = min(start + cache_size, end); \ start &= align; \ } while (0)
arch/mips/loongson64/loongson-3/platform.c +3 -0
@@ -27,6 +27,9 @@ static int __init loongson3_platform_init(void)continue ; pdev =kzalloc (sizeof (struct platform_device ),GFP_KERNEL ); +if (!pdev) +return -ENOMEM ; + pdev->name = loongson_sysconf.sensors[i].name; pdev->id = loongson_sysconf.sensors[i].id; pdev->dev.platform_data = &loongson_sysconf.sensors[i];
arch/powerpc/Makefile.postlink +2 -2
@@ -17,11 +17,11 @@ quiet_cmd_head_check = CHKHEAD $@ quiet_cmd_relocs_check = CHKREL $@ ifdef CONFIG_PPC_BOOK3S_64 cmd_relocs_check = \ - $(CONFIG_SHELL) $(srctree)/arch/powerpc/tools/relocs_check.sh "$(OBJDUMP)" "$@" ; \ + $(CONFIG_SHELL) $(srctree)/arch/powerpc/tools/relocs_check.sh "$(OBJDUMP)" "$(NM)" "$@" ; \ $(BASH) $(srctree)/arch/powerpc/tools/unrel_branch_check.sh "$(OBJDUMP)" "$@" else cmd_relocs_check = \ - $(CONFIG_SHELL) $(srctree)/arch/powerpc/tools/relocs_check.sh "$(OBJDUMP)" "$@" + $(CONFIG_SHELL) $(srctree)/arch/powerpc/tools/relocs_check.sh "$(OBJDUMP)" "$(NM)" "$@" endif # `@true` prevents complaint when there is nothing to be done
arch/powerpc/kernel/eeh_driver.c +0 -6
@@ -541,12 +541,6 @@ static void eeh_rmv_device(struct eeh_dev *edev, void *userdata)pci_iov_remove_virtfn (edev->physfn, pdn->vf_index); edev->pdev =NULL ; - -/* -* We have to set the VF PE number to invalid one, which is -* required to plug the VF successfully. -*/ - pdn->pe_number =IODA_INVALID_PE ;#endif if (rmv_data)list_add (&edev->rmv_entry, &rmv_data->removed_vf_list);
arch/powerpc/kernel/pci_dn.c +14 -1
@@ -244,9 +244,22 @@ void remove_dev_pci_data(struct pci_dev *pdev)continue ;#ifdef CONFIG_EEH -/* Release EEH device for the VF */ +/* +* Release EEH state for this VF. The PCI core +* has already torn down the pci_dev for this VF, but +* we're responsible to removing the eeh_dev since it +* has the same lifetime as the pci_dn that spawned it. +*/ edev =pdn_to_eeh_dev (pdn);if (edev) { +/* +* We allocate pci_dn's for the totalvfs count, +* but only only the vfs that were activated +* have a configured PE. +*/ +if (edev->pe) +eeh_rmv_from_parent_pe (edev); + pdn->edev =NULL ;kfree (edev); }
arch/powerpc/kvm/emulate_loadstore.c +0 -5
@@ -73,7 +73,6 @@ int kvmppc_emulate_loadstore(struct kvm_vcpu *vcpu) {struct kvm_run *run = vcpu->run;u32 inst; -int ra, rs, rt;enum emulation_result emulated =EMULATE_FAIL ;int advance =1 ;struct instruction_op op;
@@ -85,10 +84,6 @@ int kvmppc_emulate_loadstore(struct kvm_vcpu *vcpu)if (emulated !=EMULATE_DONE )return emulated; - ra =get_ra (inst); - rs =get_rs (inst); - rt =get_rt (inst); - vcpu->arch.mmio_vsx_copy_nums =0 ; vcpu->arch.mmio_vsx_offset =0 ; vcpu->arch.mmio_copy_type =KVMPPC_VSX_COPY_NONE ;
arch/powerpc/mm/fault.c +3 -0
@@ -354,6 +354,9 @@ static void sanity_check_fault(bool is_write, bool is_user,* Userspace trying to access kernel address, we get PROTFAULT for that. */ if (is_user && address >=TASK_SIZE ) { +if ((long )address ==-1 ) +return ; +pr_crit_ratelimited ("%s[%d]: User access of kernel address (%lx) - exploit attempt? (uid: %d)\n" , current->comm, current->pid, address,from_kuid (&init_user_ns,current_uid ()));
arch/powerpc/platforms/powernv/pci-ioda.c +40 -8
87 lines not on this page · raw message
arch/powerpc/platforms/powernv/pci.c +0 -18
@@ -814,24 +814,6 @@ void pnv_pci_dma_dev_setup(struct pci_dev *pdev) {struct pci_controller *hose =pci_bus_to_host (pdev->bus);struct pnv_phb *phb = hose->private_data; -#ifdef CONFIG_PCI_IOV -struct pnv_ioda_pe *pe; -struct pci_dn *pdn; - -/* Fix the VF pdn PE number */ -if (pdev->is_virtfn) { - pdn =pci_get_pdn (pdev); -WARN_ON (pdn->pe_number !=IODA_INVALID_PE ); -list_for_each_entry (pe, &phb->ioda.pe_list, list) { -if (pe->rid == ((pdev->bus->number <<8 ) | - (pdev->devfn &0xff ))) { - pdn->pe_number = pe->pe_number; - pe->pdev = pdev; -break ; - } - } - } -#endif /* CONFIG_PCI_IOV */ if (phb && phb->dma_dev_setup) phb->dma_dev_setup (phb, pdev);
arch/powerpc/platforms/pseries/lparcfg.c +2 -2
@@ -435,10 +435,10 @@ static void maxmem_data(struct seq_file *m) {unsigned long maxmem =0 ; - maxmem += drmem_info->n_lmbs * drmem_info->lmb_size; + maxmem += (unsigned long )drmem_info->n_lmbs * drmem_info->lmb_size; maxmem +=hugetlb_total_pages () *PAGE_SIZE ; -seq_printf (m,"MaxMem=%ld\n" , maxmem); +seq_printf (m,"MaxMem=%lu\n" , maxmem); }static int pseries_lparcfg_data (struct seq_file *m,void *v)
arch/powerpc/tools/relocs_check.sh +12 -8
@@ -10,14 +10,21 @@ # based on relocs_check.pl # Copyright © 2009 IBM Corporation -if [ $# -lt 2 ]; then - echo "$0 [path to objdump] [path to vmlinux]" 1>&2 +if [ $# -lt 3 ]; then + echo "$0 [path to objdump] [path to nm] [path to vmlinux]" 1>&2 exit 1 fi -# Have Kbuild supply the path to objdump so we handle cross compilation. +# Have Kbuild supply the path to objdump and nm so we handle cross compilation. objdump="$1" -vmlinux="$2" +nm="$2" +vmlinux="$3" + +# Remove from the bad relocations those that match an undefined weak symbol +# which will result in an absolute relocation to 0. +# Weak unresolved symbols are of that form in nm output: +# " w _binary__btf_vmlinux_bin_end" +undef_weak_symbols=$($nm "$vmlinux" | awk '$1 ~ /w/ { print $2 }') bad_relocs=$( $objdump -R "$vmlinux" |
@@ -26,8 +33,6 @@ $objdump -R "$vmlinux" | # These relocations are okay # On PPC64: # R_PPC64_RELATIVE, R_PPC64_NONE - # R_PPC64_ADDR64 mach_<name> - # R_PPC64_ADDR64 __crc_<name> # On PPC: # R_PPC_RELATIVE, R_PPC_ADDR16_HI, # R_PPC_ADDR16_HA,R_PPC_ADDR16_LO,
@@ -39,8 +44,7 @@ R_PPC_ADDR16_HI R_PPC_ADDR16_HA R_PPC_RELATIVE R_PPC_NONE' | - grep -E -v '\<R_PPC64_ADDR64[[:space:]]+mach_' | - grep -E -v '\<R_PPC64_ADDR64[[:space:]]+__crc_' + ([ "$undef_weak_symbols" ] && grep -F -w -v "$undef_weak_symbols" || cat) ) if [ -z "$bad_relocs" ]; then
arch/s390/Makefile +1 -1
@@ -69,7 +69,7 @@ cflags-y += -Wa,-I$(srctree)/arch/$(ARCH)/include # cflags-$(CONFIG_FRAME_POINTER) += -fno-optimize-sibling-calls -ifeq ($(call cc-option-yn,-mpacked-stack),y) +ifeq ($(call cc-option-yn,-mpacked-stack -mbackchain -msoft-float),y) cflags-$(CONFIG_PACK_STACK) += -mpacked-stack -D__PACK_STACK aflags-$(CONFIG_PACK_STACK) += -D__PACK_STACK endif
arch/s390/include/asm/pci.h +1 -1
@@ -183,7 +183,7 @@ void zpci_remove_reserved_devices(void);/* CLP */ int clp_scan_pci_devices (void );int clp_rescan_pci_devices (void ); -int clp_rescan_pci_devices_simple (void ); +int clp_rescan_pci_devices_simple (u32 *fid);int clp_add_pci_device (u32 ,u32 ,int );int clp_enable_fh (struct zpci_dev *,u8 );int clp_disable_fh (struct zpci_dev *);
arch/s390/kernel/mcount.S +14 -1
@@ -26,6 +26,12 @@ ENDPROC(ftrace_stub) #define STACK_PTREGS (STACK_FRAME_OVERHEAD) #define STACK_PTREGS_GPRS (STACK_PTREGS + __PT_GPRS) #define STACK_PTREGS_PSW (STACK_PTREGS + __PT_PSW) +#ifdef __PACK_STACK +/* allocate just enough for r14, r15 and backchain */ +#define TRACED_FUNC_FRAME_SIZE 24 +#else +#define TRACED_FUNC_FRAME_SIZE STACK_FRAME_OVERHEAD +#endif ENTRY(_mcount) BR_EX %r14
@@ -39,9 +45,16 @@ ENTRY(ftrace_caller) #if !(defined(CC_USING_HOTPATCH) || defined(CC_USING_NOP_MCOUNT)) aghi %r0,MCOUNT_RETURN_FIXUP #endif - aghi %r15,-STACK_FRAME_SIZE + # allocate stack frame for ftrace_caller to contain traced function + aghi %r15,-TRACED_FUNC_FRAME_SIZE stg %r1,__SF_BACKCHAIN(%r15) + stg %r0,(__SF_GPRS+8*8)(%r15) + stg %r15,(__SF_GPRS+9*8)(%r15) + # allocate pt_regs and stack frame for ftrace_trace_function + aghi %r15,-STACK_FRAME_SIZE stg %r1,(STACK_PTREGS_GPRS+15*8)(%r15) + aghi %r1,-TRACED_FUNC_FRAME_SIZE + stg %r1,__SF_BACKCHAIN(%r15) stg %r0,(STACK_PTREGS_PSW+8)(%r15) stmg %r2,%r14,(STACK_PTREGS_GPRS+2*8)(%r15) #ifdef CONFIG_HAVE_MARCH_Z196_FEATURES
arch/s390/kvm/interrupt.c +3 -3
@@ -2191,7 +2191,7 @@ static int flic_ais_mode_get_all(struct kvm *kvm, struct kvm_device_attr *attr)return -EINVAL ;if (!test_kvm_facility (kvm,72 )) -return -ENOTSUPP ; +return -EOPNOTSUPP ;mutex_lock (&fi->ais_lock); ais.simm = fi->simm;
@@ -2500,7 +2500,7 @@ static int modify_ais_mode(struct kvm *kvm, struct kvm_device_attr *attr)int ret =0 ;if (!test_kvm_facility (kvm,72 )) -return -ENOTSUPP ; +return -EOPNOTSUPP ;if (copy_from_user (&req, (void __user *)attr->addr,sizeof (req)))return -EFAULT ;
@@ -2580,7 +2580,7 @@ static int flic_ais_mode_set_all(struct kvm *kvm, struct kvm_device_attr *attr)struct kvm_s390_ais_all ais;if (!test_kvm_facility (kvm,72 )) -return -ENOTSUPP ; +return -EOPNOTSUPP ;if (copy_from_user (&ais, (void __user *)attr->addr,sizeof (ais)))return -EFAULT ;
arch/s390/pci/pci.c +1 -1
@@ -934,5 +934,5 @@ subsys_initcall_sync(pci_base_init);void zpci_rescan (void ) {if (zpci_is_enabled ()) -clp_rescan_pci_devices_simple (); +clp_rescan_pci_devices_simple (NULL ); }
arch/s390/pci/pci_clp.c +29 -19
113 lines not on this page · raw message
arch/s390/pci/pci_sysfs.c +42 -21
79 lines not on this page · raw message
arch/sh/include/cpu-sh2a/cpu/sh7269.h +9 -2
@@ -78,8 +78,15 @@ enum {GPIO_FN_WDTOVF ,/* CAN */ -GPIO_FN_CTX1 ,GPIO_FN_CRX1 ,GPIO_FN_CTX0 ,GPIO_FN_CTX0_CTX1 , -GPIO_FN_CRX0 ,GPIO_FN_CRX0_CRX1 ,GPIO_FN_CRX0_CRX1_CRX2 , +GPIO_FN_CTX2 ,GPIO_FN_CRX2 , +GPIO_FN_CTX1 ,GPIO_FN_CRX1 , +GPIO_FN_CTX0 ,GPIO_FN_CRX0 , +GPIO_FN_CTX0_CTX1 ,GPIO_FN_CRX0_CRX1 , +GPIO_FN_CTX0_CTX1_CTX2 ,GPIO_FN_CRX0_CRX1_CRX2 , +GPIO_FN_CTX2_PJ21 ,GPIO_FN_CRX2_PJ20 , +GPIO_FN_CTX1_PJ23 ,GPIO_FN_CRX1_PJ22 , +GPIO_FN_CTX0_CTX1_PJ23 ,GPIO_FN_CRX0_CRX1_PJ22 , +GPIO_FN_CTX0_CTX1_CTX2_PJ21 ,GPIO_FN_CRX0_CRX1_CRX2_PJ20 ,/* DMAC */ GPIO_FN_TEND0, GPIO_FN_DACK0, GPIO_FN_DREQ0,
arch/sparc/kernel/vmlinux.lds.S +4 -2
@@ -172,12 +172,14 @@ SECTIONS } PERCPU_SECTION(SMP_CACHE_BYTES) -#ifdef CONFIG_JUMP_LABEL . = ALIGN(PAGE_SIZE); .exit.text : { EXIT_TEXT } -#endif + + .exit.data : { + EXIT_DATA + } . = ALIGN(PAGE_SIZE); __init_end = .;
arch/x86/entry/vdso/vdso32-setup.c +1 -0
@@ -11,6 +11,7 @@#include <linux/smp.h> #include <linux/kernel.h> #include <linux/mm_types.h> +#include <linux/elf.h> #include <asm/processor.h> #include <asm/vdso.h>
arch/x86/events/amd/core.c +61 -30
126 lines not on this page · raw message
arch/x86/events/perf_event.h +2 -0
@@ -77,6 +77,7 @@ static inline bool constraint_match(struct event_constraint *c, u64 ecode)#define PERF_X86_EVENT_AUTO_RELOAD 0x0200/* use PEBS auto-reload */ #define PERF_X86_EVENT_LARGE_PEBS 0x0400/* use large PEBS */ #define PERF_X86_EVENT_PEBS_VIA_PT 0x0800/* use PT buffer for PEBS */ +#define PERF_X86_EVENT_PAIR 0x1000/* Large Increment per Cycle */ struct amd_nb {int nb_id;/* NorthBridge id */
@@ -735,6 +736,7 @@ do { \#define PMU_FL_EXCL_ENABLED 0x8/* exclusive counter active */ #define PMU_FL_PEBS_ALL 0x10/* all events are valid PEBS events */ #define PMU_FL_TFA 0x20/* deal with TSX force abort */ +#define PMU_FL_PAIR 0x40/* merge counters for large incr. events */ #define EVENT_VAR (_id) event_attr_##_id#define EVENT_PTR (_id) &event_attr_##_id.attr.attr
arch/x86/include/asm/nmi.h +0 -1
@@ -41,7 +41,6 @@ struct nmiaction {struct list_head list;nmi_handler_t handler;u64 max_duration; -struct irq_work irq_work;unsigned long flags;const char *name; };
arch/x86/kernel/fpu/signal.c +3 -0
@@ -352,6 +352,7 @@ static int __fpu__restore_sig(void __user *buf, void __user *buf_fx, int size)fpregs_unlock ();return 0 ; } +fpregs_deactivate (fpu);fpregs_unlock (); }
@@ -403,6 +404,8 @@ static int __fpu__restore_sig(void __user *buf, void __user *buf_fx, int size) }if (!ret)fpregs_mark_activate (); +else +fpregs_deactivate (fpu);fpregs_unlock (); err_out:
arch/x86/kernel/nmi.c +9 -11
@@ -104,18 +104,22 @@ static int __init nmi_warning_debugfs(void) }fs_initcall (nmi_warning_debugfs); -static void nmi_max_handler (struct irq_work *w) +static void nmi_check_duration (struct nmiaction *action,u64 duration) { - struct nmiaction *a = container_of(w, struct nmiaction, irq_work); +u64 whole_msecs =READ_ONCE (action->max_duration);int remainder_ns, decimal_msecs; -u64 whole_msecs =READ_ONCE (a->max_duration); + +if (duration < nmi_longest_ns || duration < action->max_duration) +return ; + + action->max_duration = duration; remainder_ns =do_div (whole_msecs, (1000 *1000 )); decimal_msecs = remainder_ns /1000 ;printk_ratelimited (KERN_INFO "INFO: NMI handler (%ps) took too long to run: %lld.%03d msecs\n" , - a->handler, whole_msecs, decimal_msecs); + action->handler, whole_msecs, decimal_msecs); }static int nmi_handle (unsigned int type,struct pt_regs *regs)
@@ -142,11 +146,7 @@ static int nmi_handle(unsigned int type, struct pt_regs *regs) delta =sched_clock () - delta;trace_nmi_handler (a->handler, (int )delta, thishandled); -if (delta < nmi_longest_ns || delta < a->max_duration) -continue ; - - a->max_duration = delta; -irq_work_queue (&a->irq_work); +nmi_check_duration (a, delta); }rcu_read_unlock ();
@@ -164,8 +164,6 @@ int __register_nmi_handler(unsigned int type, struct nmiaction *action)if (!action->handler)return -EINVAL ; -init_irq_work (&action->irq_work, nmi_max_handler); -raw_spin_lock_irqsave (&desc->lock, flags);/*
arch/x86/kernel/sysfb_simplefb.c +1 -1
@@ -90,11 +90,11 @@ __init int create_simplefb(const struct screen_info *si,if (si->orig_video_isVGA ==VIDEO_TYPE_VLFB ) size <<=16 ; length = mode->height * mode->stride; - length =PAGE_ALIGN (length);if (length > size) {printk (KERN_WARNING "sysfb: VRAM smaller than advertised\n" );return -EINVAL ; } + length =PAGE_ALIGN (length);/* setup IORESOURCE_MEM as framebuffer memory */ memset (&res,0 ,sizeof (res));
arch/x86/lib/x86-opcode-map.txt +1 -1
@@ -909,7 +909,7 @@ EndTable GrpTable: Grp3_2 0: TEST Ev,Iz -1: +1: TEST Ev,Iz 2: NOT Ev 3: NEG Ev 4: MUL rAX,Ev
arch/x86/mm/pageattr.c +1 -7
@@ -2215,7 +2215,7 @@ int __init kernel_map_pages_in_pgd(pgd_t *pgd, u64 pfn, unsigned long address, .pgd = pgd, .numpages = numpages, .mask_set = __pgprot(0), - .mask_clr = __pgprot(0), + .mask_clr = __pgprot(~page_flags & (_PAGE_NX|_PAGE_RW)), .flags = 0, };
@@ -2224,12 +2224,6 @@ int __init kernel_map_pages_in_pgd(pgd_t *pgd, u64 pfn, unsigned long address,if (!(__supported_pte_mask & _PAGE_NX)) goto out; -if (!(page_flags & _PAGE_NX)) - cpa.mask_clr =__pgprot (_PAGE_NX); - -if (!(page_flags & _PAGE_RW)) - cpa.mask_clr =__pgprot (_PAGE_RW); -if (!(page_flags & _PAGE_ENC)) cpa.mask_clr =pgprot_encrypted (cpa.mask_clr);
arch/x86/platform/efi/efi.c +21 -20
93 lines not on this page · raw message
arch/x86/platform/efi/efi_64.c +5 -4
@@ -392,11 +392,12 @@ int __init efi_setup_page_tables(unsigned long pa_memmap, unsigned num_pages)return 0 ; page =alloc_page (GFP_KERNEL |__GFP_DMA32); -if (!page) -panic ("Unable to allocate EFI runtime stack < 4GB\n" ); +if (!page) { +pr_err ("Unable to allocate EFI runtime stack < 4GB\n" ); +return 1 ; + } - efi_scratch.phys_stack =virt_to_phys (page_address (page)); - efi_scratch.phys_stack +=PAGE_SIZE ;/* stack grows down */ + efi_scratch.phys_stack =page_to_phys (page +1 );/* stack grows down */ npages = (_etext - _text) >>PAGE_SHIFT ; text =__pa (_text);
block/bfq-iosched.c +12 -0
@@ -3444,6 +3444,10 @@ static void bfq_dispatch_remove(struct request_queue *q, struct request *rq)static bool idling_needed_for_service_guarantees (struct bfq_data *bfqd,struct bfq_queue *bfqq) { +/* No point in idling for bfqq if it won't get requests any longer */ +if (unlikely (!bfqq_process_refs (bfqq))) +return false; + return (bfqq->wr_coeff > 1 && (bfqd->wr_busy_queues < bfq_tot_busy_queues(bfqd) ||
@@ -4077,6 +4081,10 @@ static bool idling_boosts_thr_without_issues(struct bfq_data *bfqd, bfqq_sequential_and_IO_bound, idling_boosts_thr; +/* No point in idling for bfqq if it won't get requests any longer */ +if (unlikely (!bfqq_process_refs (bfqq))) +return false; + bfqq_sequential_and_IO_bound = !BFQQ_SEEKY (bfqq) &&bfq_bfqq_IO_bound (bfqq) &&bfq_bfqq_has_short_ttime (bfqq);
@@ -4170,6 +4178,10 @@ static bool bfq_better_to_idle(struct bfq_queue *bfqq)struct bfq_data *bfqd = bfqq->bfqd;bool idling_boosts_thr_with_no_issue, idling_needed_for_service_guar; +/* No point in idling for bfqq if it won't get requests any longer */ +if (unlikely (!bfqq_process_refs (bfqq))) +return false; +if (unlikely (bfqd->strict_guarantees))return true;
crypto/Kconfig +2 -2
@@ -500,10 +500,10 @@ config CRYPTO_ESSIV encryption. This driver implements a crypto API template that can be - instantiated either as a skcipher or as a aead (depending on the + instantiated either as an skcipher or as an AEAD (depending on the type of the first template argument), and which defers encryption and decryption requests to the encapsulated cipher after applying - ESSIV to the input IV. Note that in the aead case, it is assumed + ESSIV to the input IV. Note that in the AEAD case, it is assumed that the keys are presented in the same format used by the authenc template, and that the IV appears at the end of the authenticated associated data (AAD) region (which is how dm-crypt uses it.)
drivers/acpi/acpica/dsfield.c +1 -1
@@ -244,7 +244,7 @@ acpi_ds_create_buffer_field(union acpi_parse_object *op,* FUNCTION: acpi_ds_get_field_names * * PARAMETERS: info - create_field info structure -* ` walk_state - Current method state +* walk_state - Current method state * arg - First parser arg for the field name list * * RETURN: Status
drivers/acpi/acpica/dswload.c +21 -0
@@ -410,6 +410,27 @@ acpi_status acpi_ds_load1_end_op(struct acpi_walk_state *walk_state)ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH ,"Op=%p State=%p\n" , op, walk_state)); +/* +* Disassembler: handle create field operators here. +* +* create_buffer_field is a deferred op that is typically processed in load +* pass 2. However, disassembly of control method contents walk the parse +* tree with ACPI_PARSE_LOAD_PASS1 and AML_CREATE operators are processed +* in a later walk. This is a problem when there is a control method that +* has the same name as the AML_CREATE object. In this case, any use of the +* name segment will be detected as a method call rather than a reference +* to a buffer field. +* +* This earlier creation during disassembly solves this issue by inserting +* the named object in the ACPI namespace so that references to this name +* would be a name string rather than a method call. +*/ +if ((walk_state->parse_flags &ACPI_PARSE_DISASSEMBLE ) && + (walk_state->op_info->flags &AML_CREATE )) { + status =acpi_ds_create_buffer_field (op, walk_state); +return_ACPI_STATUS (status); + } +/* We are only interested in opcodes that have an associated name */ if (!(walk_state->op_info->flags & (AML_NAMED |AML_FIELD ))) {
drivers/acpi/button.c +11 -0
@@ -89,6 +89,17 @@ static const struct dmi_system_id lid_blacklst[] = { }, .driver_data = (void *)(long)ACPI_BUTTON_LID_INIT_OPEN, }, + { + /* + * Razer Blade Stealth 13 late 2019, notification of the LID device + * only happens on close, not on open and _LID always returns closed. + */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Razer"), + DMI_MATCH(DMI_PRODUCT_NAME, "Razer Blade Stealth 13 Late 2019"), + }, + .driver_data = (void *)(long)ACPI_BUTTON_LID_INIT_OPEN, + }, {} };
drivers/atm/fore200e.c +18 -7
@@ -1414,12 +1414,14 @@ fore200e_open(struct atm_vcc *vcc)static void fore200e_close (struct atm_vcc * vcc) { -struct fore200e * fore200e =FORE200E_DEV (vcc->dev);struct fore200e_vcc * fore200e_vcc; +struct fore200e * fore200e;struct fore200e_vc_map * vc_map;unsigned long flags;ASSERT (vcc); + fore200e =FORE200E_DEV (vcc->dev); +ASSERT ((vcc->vpi >=0 ) && (vcc->vpi <1 <<FORE200E_VPI_BITS ));ASSERT ((vcc->vci >=0 ) && (vcc->vci <1 <<FORE200E_VCI_BITS ));
@@ -1464,10 +1466,10 @@ fore200e_close(struct atm_vcc* vcc)static int fore200e_send (struct atm_vcc *vcc,struct sk_buff *skb) { -struct fore200e * fore200e =FORE200E_DEV (vcc->dev); -struct fore200e_vcc * fore200e_vcc =FORE200E_VCC (vcc); +struct fore200e * fore200e; +struct fore200e_vcc * fore200e_vcc;struct fore200e_vc_map * vc_map; -struct host_txq * txq = &fore200e->host_txq; +struct host_txq * txq;struct host_txq_entry * entry;struct tpd * tpd;struct tpd_haddr tpd_haddr;
@@ -1480,9 +1482,18 @@ fore200e_send(struct atm_vcc *vcc, struct sk_buff *skb)unsigned char * data;unsigned long flags; -ASSERT (vcc); -ASSERT (fore200e); -ASSERT (fore200e_vcc); +if (!vcc) +return -EINVAL ; + + fore200e =FORE200E_DEV (vcc->dev); + fore200e_vcc =FORE200E_VCC (vcc); + +if (!fore200e) +return -EINVAL ; + + txq = &fore200e->host_txq; +if (!fore200e_vcc) +return -EINVAL ;if (!test_bit (ATM_VF_READY , &vcc->flags)) {DPRINTK (1 ,"VC %d.%d.%d not ready for tx\n" , vcc->itf, vcc->vpi, vcc->vpi);
drivers/base/dd.c +4 -1
@@ -516,7 +516,10 @@ static int really_probe(struct device *dev, struct device_driver *drv)atomic_inc (&probe_count);pr_debug ("bus: '%s': %s: probing driver %s with device %s\n" , drv->bus->name, __func__, drv->name,dev_name (dev)); -WARN_ON (!list_empty (&dev->devres_head)); +if (!list_empty (&dev->devres_head)) { +dev_crit (dev,"Resources present before probing\n" ); +return -EBUSY ; + } re_probe: dev->driver = drv;
drivers/base/platform.c +7 -5
@@ -27,6 +27,7 @@#include <linux/limits.h> #include <linux/property.h> #include <linux/kmemleak.h> +#include <linux/types.h> #include "base.h" #include "power/power.h"
@@ -48,7 +49,7 @@ EXPORT_SYMBOL_GPL(platform_bus);struct resource *platform_get_resource (struct platform_device *dev,unsigned int type,unsigned int num) { -int i; +u32 i;for (i =0 ; i < dev->num_resources; i++) {struct resource *r = &dev->resource[i];
@@ -226,7 +227,7 @@ struct resource *platform_get_resource_byname(struct platform_device *dev,unsigned int type, const char *name) { - int i; + u32 i;for (i =0 ; i < dev->num_resources; i++) {struct resource *r = &dev->resource[i];
@@ -473,7 +474,8 @@ EXPORT_SYMBOL_GPL(platform_device_add_properties);*/ int platform_device_add (struct platform_device *pdev) { -int i, ret; +u32 i; +int ret;if (!pdev)return -EINVAL ;
@@ -541,7 +543,7 @@ int platform_device_add(struct platform_device *pdev) pdev->id =PLATFORM_DEVID_AUTO ; } -while (--i >=0 ) { +while (i--) {struct resource *r = &pdev->resource[i];if (r->parent)release_resource (r);
@@ -562,7 +564,7 @@ EXPORT_SYMBOL_GPL(platform_device_add);*/ void platform_device_del (struct platform_device *pdev) { -int i; +u32 i;if (!IS_ERR_OR_NULL (pdev)) {device_del (&pdev->dev);
drivers/block/brd.c +20 -2
@@ -470,6 +470,25 @@ static struct kobject *brd_probe(dev_t dev, int *part, void *data)return kobj; } +static inline void brd_check_and_reset_par (void ) +{ +if (unlikely (!max_part)) + max_part =1 ; + +/* +* make sure 'max_part' can be divided exactly by (1U << MINORBITS), +* otherwise, it is possiable to get same dev_t when adding partitions. +*/ +if ((1U <<MINORBITS ) % max_part !=0 ) + max_part =1UL <<fls (max_part); + +if (max_part >DISK_MAX_PARTS ) { +pr_info ("brd: max_part can't be larger than %d, reset max_part = %d.\n" , +DISK_MAX_PARTS ,DISK_MAX_PARTS ); + max_part =DISK_MAX_PARTS ; + } +} +static int __init brd_init (void ) {struct brd_device *brd, *next;
@@ -493,8 +512,7 @@ static int __init brd_init(void)if (register_blkdev (RAMDISK_MAJOR ,"ramdisk" ))return -EIO ; -if (unlikely (!max_part)) - max_part =1 ; +brd_check_and_reset_par ();for (i =0 ; i < rd_nr; i++) { brd =brd_alloc (i);
drivers/block/nbd.c +10 -0
@@ -1265,6 +1265,16 @@ static int nbd_start_device(struct nbd_device *nbd) args =kzalloc (sizeof (*args),GFP_KERNEL );if (!args) {sock_shutdown (nbd); +/* +* If num_connections is m (2 < m), +* and NO.1 ~ NO.n(1 < n < m) kzallocs are successful. +* But NO.(n + 1) failed. We still have n recv threads. +* So, add flush_workqueue here to prevent recv threads +* dropping the last config_refs and trying to destroy +* the workqueue from inside the workqueue. +*/ +if (i) +flush_workqueue (nbd->recv_workq);return -ENOMEM ; }sk_set_memalloc (config->socks[i]->sock->sk);
drivers/block/rbd.c +1 -1
@@ -2739,7 +2739,7 @@ static int rbd_img_fill_nodata(struct rbd_img_request *img_req, u64 off, u64 len) {struct ceph_file_extent ex = { off, len }; -union rbd_img_fill_iter dummy; +union rbd_img_fill_iter dummy = {};struct rbd_img_fill_ctx fctx = { .pos_type =OBJ_REQUEST_NODATA , .pos = &dummy,
drivers/block/zram/zram_drv.c +1 -2
@@ -626,7 +626,7 @@ static ssize_t writeback_store(struct device *dev,struct bio bio;struct bio_vec bio_vec;struct page *page; -ssize_t ret; +ssize_t ret = len;int mode;unsigned long blk_idx =0 ;
@@ -762,7 +762,6 @@ static ssize_t writeback_store(struct device *dev,if (blk_idx)free_block_bdev (zram, blk_idx); - ret = len;__free_page (page); release_init_lock:up_read (&zram->init_lock);
drivers/bus/ti-sysc.c +8 -2
@@ -479,7 +479,7 @@ static void sysc_clkdm_deny_idle(struct sysc *ddata) {struct ti_sysc_platform_data *pdata; -if (ddata->legacy_mode) +if (ddata->legacy_mode || (ddata->cfg.quirks &SYSC_QUIRK_CLKDM_NOAUTO ))return ; pdata =dev_get_platdata (ddata->dev);
@@ -491,7 +491,7 @@ static void sysc_clkdm_allow_idle(struct sysc *ddata) {struct ti_sysc_platform_data *pdata; -if (ddata->legacy_mode) +if (ddata->legacy_mode || (ddata->cfg.quirks &SYSC_QUIRK_CLKDM_NOAUTO ))return ; pdata =dev_get_platdata (ddata->dev);
@@ -1251,6 +1251,12 @@ static const struct sysc_revision_quirk sysc_revision_quirks[] = {/* Quirks that need to be set based on detected module */ SYSC_QUIRK ("aess" ,0 ,0 ,0x10 ,-1 ,0x40000000 ,0xffffffff ,SYSC_MODULE_QUIRK_AESS ), +SYSC_QUIRK ("dcan" ,0x48480000 ,0x20 ,-1 ,-1 ,0xa3170504 ,0xffffffff , +SYSC_QUIRK_CLKDM_NOAUTO ), +SYSC_QUIRK ("dwc3" ,0x48880000 ,0 ,0x10 ,-1 ,0x500a0200 ,0xffffffff , +SYSC_QUIRK_CLKDM_NOAUTO ), +SYSC_QUIRK ("dwc3" ,0x488c0000 ,0 ,0x10 ,-1 ,0x500a0200 ,0xffffffff , +SYSC_QUIRK_CLKDM_NOAUTO ),SYSC_QUIRK ("hdq1w" ,0 ,0 ,0x14 ,0x18 ,0x00000006 ,0xffffffff ,SYSC_MODULE_QUIRK_HDQ1W ), SYSC_QUIRK("hdq1w", 0, 0, 0x14, 0x18, 0x0000000a, 0xffffffff,
drivers/char/hpet.c +1 -1
@@ -855,7 +855,7 @@ int hpet_alloc(struct hpet_data *hdp)return 0 ; } - hpetp =kzalloc (struct_size (hpetp, hp_dev, hdp->hd_nirqs -1 ), + hpetp =kzalloc (struct_size (hpetp, hp_dev, hdp->hd_nirqs),GFP_KERNEL );if (!hpetp)
drivers/char/random.c +3 -2
@@ -1687,8 +1687,9 @@ static void _warn_unseeded_randomness(const char *func_name, void *caller, print_once = true;#endif if (__ratelimit (&unseeded_warning)) -pr_notice ("random: %s called from %pS with crng_init=%d\n" , - func_name, caller, crng_init); +printk_deferred (KERN_NOTICE "random: %s called from %pS " +"with crng_init=%d\n" , func_name, caller, + crng_init); }/*
drivers/clk/at91/sam9x60.c +1 -0
@@ -47,6 +47,7 @@ static const struct clk_programmable_layout sam9x60_programmable_layout = { .pres_shift = 8, .css_mask = 0x1f, .have_slck_mck = 0, + .is_pres_direct = 1, };static const struct clk_pcr_layout sam9x60_pcr_layout = {
drivers/clk/clk.c +40 -13
83 lines not on this page · raw message
drivers/clk/imx/clk.h +22 -15
@@ -51,48 +51,48 @@ struct imx_pll14xx_clk { };#define imx_clk_cpu (name, parent_name, div, mux, pll, step) \ - imx_clk_hw_cpu(name, parent_name, div, mux, pll, step)->clk + to_clk(imx_clk_hw_cpu(name, parent_name, div, mux, pll, step))#define clk_register_gate2 (dev, name, parent_name, flags, reg, bit_idx, \ cgr_val, clk_gate_flags, lock, share_count) \ - clk_hw_register_gate2(dev, name, parent_name, flags, reg, bit_idx, \ - cgr_val, clk_gate_flags, lock, share_count)->clk + to_clk(clk_hw_register_gate2(dev, name, parent_name, flags, reg, bit_idx, \ + cgr_val, clk_gate_flags, lock, share_count))#define imx_clk_pllv3 (type, name, parent_name, base, div_mask) \ - imx_clk_hw_pllv3(type, name, parent_name, base, div_mask)->clk + to_clk(imx_clk_hw_pllv3(type, name, parent_name, base, div_mask))#define imx_clk_pfd (name, parent_name, reg, idx) \ - imx_clk_hw_pfd(name, parent_name, reg, idx)->clk + to_clk(imx_clk_hw_pfd(name, parent_name, reg, idx))#define imx_clk_gate_exclusive (name, parent, reg, shift, exclusive_mask) \ - imx_clk_hw_gate_exclusive(name, parent, reg, shift, exclusive_mask)->clk + to_clk(imx_clk_hw_gate_exclusive(name, parent, reg, shift, exclusive_mask))#define imx_clk_fixed_factor (name, parent, mult, div) \ - imx_clk_hw_fixed_factor(name, parent, mult, div)->clk + to_clk(imx_clk_hw_fixed_factor(name, parent, mult, div))#define imx_clk_divider2 (name, parent, reg, shift, width) \ - imx_clk_hw_divider2(name, parent, reg, shift, width)->clk + to_clk(imx_clk_hw_divider2(name, parent, reg, shift, width))#define imx_clk_gate_dis (name, parent, reg, shift) \ - imx_clk_hw_gate_dis(name, parent, reg, shift)->clk + to_clk(imx_clk_hw_gate_dis(name, parent, reg, shift))#define imx_clk_gate2 (name, parent, reg, shift) \ - imx_clk_hw_gate2(name, parent, reg, shift)->clk + to_clk(imx_clk_hw_gate2(name, parent, reg, shift))#define imx_clk_gate2_flags (name, parent, reg, shift, flags) \ - imx_clk_hw_gate2_flags(name, parent, reg, shift, flags)->clk + to_clk(imx_clk_hw_gate2_flags(name, parent, reg, shift, flags))#define imx_clk_gate2_shared2 (name, parent, reg, shift, share_count) \ - imx_clk_hw_gate2_shared2(name, parent, reg, shift, share_count)->clk + to_clk(imx_clk_hw_gate2_shared2(name, parent, reg, shift, share_count))#define imx_clk_gate3 (name, parent, reg, shift) \ - imx_clk_hw_gate3(name, parent, reg, shift)->clk + to_clk(imx_clk_hw_gate3(name, parent, reg, shift))#define imx_clk_gate4 (name, parent, reg, shift) \ - imx_clk_hw_gate4(name, parent, reg, shift)->clk + to_clk(imx_clk_hw_gate4(name, parent, reg, shift))#define imx_clk_mux (name, reg, shift, width, parents, num_parents) \ - imx_clk_hw_mux(name, reg, shift, width, parents, num_parents)->clk + to_clk(imx_clk_hw_mux(name, reg, shift, width, parents, num_parents))struct clk *imx_clk_pll14xx (const char *name,const char *parent_name,void __iomem *base,const struct imx_pll14xx_clk *pll_clk);
@@ -195,6 +195,13 @@ struct clk_hw *imx_clk_hw_fixup_mux(const char *name, void __iomem *reg, u8 shift, u8 width, const char * const *parents, int num_parents, void (*fixup)(u32 *val)); +static inline struct clk *to_clk (struct clk_hw *hw) +{ +if (IS_ERR_OR_NULL (hw)) +return ERR_CAST (hw); +return hw->clk; +} +static inline struct clk *imx_clk_fixed (const char *name,int rate) {return clk_register_fixed_rate (NULL , name,NULL ,0 , rate);
drivers/clk/meson/clk-pll.c +9 -0
@@ -77,6 +77,15 @@ static unsigned long meson_clk_pll_recalc_rate(struct clk_hw *hw,unsigned int m, n, frac; n =meson_parm_read (clk->map, &pll->n); + +/* +* On some HW, N is set to zero on init. This value is invalid as +* it would result in a division by zero. The rate can't be +* calculated in this case +*/ +if (n ==0 ) +return 0 ; + m =meson_parm_read (clk->map, &pll->m); frac = MESON_PARM_APPLICABLE(&pll->frac) ?
drivers/clk/meson/meson8b.c +7 -4
@@ -1764,8 +1764,11 @@ static struct clk_regmap meson8b_hdmi_sys = {/* * The MALI IP is clocked by two identical clocks (mali_0 and mali_1) -* muxed by a glitch-free switch on Meson8b and Meson8m2. Meson8 only -* has mali_0 and no glitch-free mux. +* muxed by a glitch-free switch on Meson8b and Meson8m2. The CCF can +* actually manage this glitch-free mux because it does top-to-bottom +* updates the each clock tree and switches to the "inactive" one when +* CLK_SET_RATE_GATE is set. +* Meson8 only has mali_0 and no glitch-free mux. */ static const struct clk_hw *meson8b_mali_0_1_parent_hws[] = { &meson8b_xtal.hw,
@@ -1830,7 +1833,7 @@ static struct clk_regmap meson8b_mali_0 = { &meson8b_mali_0_div.hw }, .num_parents = 1, - .flags = CLK_SET_RATE_PARENT, + .flags = CLK_SET_RATE_GATE | CLK_SET_RATE_PARENT, }, };
@@ -1885,7 +1888,7 @@ static struct clk_regmap meson8b_mali_1 = { &meson8b_mali_1_div.hw }, .num_parents = 1, - .flags = CLK_SET_RATE_PARENT, + .flags = CLK_SET_RATE_GATE | CLK_SET_RATE_PARENT, }, };
drivers/clk/qcom/clk-rcg2.c +7 -4
@@ -217,6 +217,9 @@ static int _freq_tbl_determine_rate(struct clk_hw *hw, const struct freq_tbl *f, clk_flags =clk_hw_get_flags (hw); p =clk_hw_get_parent_by_index (hw, index); +if (!p) +return -EINVAL ; +if (clk_flags &CLK_SET_RATE_PARENT ) { rate = f->freq;if (f->pre_div) {
@@ -952,7 +955,7 @@ static void clk_rcg2_dfs_populate_freq(struct clk_hw *hw, unsigned int l,struct clk_rcg2 *rcg =to_clk_rcg2 (hw);struct clk_hw *p;unsigned long prate =0 ; -u32 val, mask, cfg, mode; +u32 val, mask, cfg, mode, src;int i, num_parents;regmap_read (rcg->clkr.regmap, rcg->cmd_rcgr +SE_PERF_DFSR (l), &cfg);
@@ -962,12 +965,12 @@ static void clk_rcg2_dfs_populate_freq(struct clk_hw *hw, unsigned int l,if (cfg & mask) f->pre_div = cfg & mask; - cfg &=CFG_SRC_SEL_MASK ; - cfg >>=CFG_SRC_SEL_SHIFT ; + src = cfg &CFG_SRC_SEL_MASK ; + src >>=CFG_SRC_SEL_SHIFT ; num_parents =clk_hw_get_num_parents (hw);for (i =0 ; i < num_parents; i++) { -if (cfg == rcg->parent_map[i].cfg) { +if (src == rcg->parent_map[i].cfg) { f->src = rcg->parent_map[i].src; p =clk_hw_get_parent_by_index (&rcg->clkr.hw, i); prate =clk_hw_get_rate (p);
drivers/clk/qcom/clk-smd-rpm.c +3 -0
@@ -648,6 +648,7 @@ static const struct rpm_smd_clk_desc rpm_clk_qcs404 = { };/* msm8998 */ +DEFINE_CLK_SMD_RPM (msm8998, bimc_clk, bimc_a_clk,QCOM_SMD_RPM_MEM_CLK ,0 );DEFINE_CLK_SMD_RPM (msm8998, pcnoc_clk, pcnoc_a_clk,QCOM_SMD_RPM_BUS_CLK ,0 );DEFINE_CLK_SMD_RPM (msm8998, snoc_clk, snoc_a_clk,QCOM_SMD_RPM_BUS_CLK ,1 );DEFINE_CLK_SMD_RPM (msm8998, cnoc_clk, cnoc_a_clk,QCOM_SMD_RPM_BUS_CLK ,2 );
@@ -671,6 +672,8 @@ DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL(msm8998, rf_clk2_pin, rf_clk2_a_pin, 5);DEFINE_CLK_SMD_RPM_XO_BUFFER (msm8998, rf_clk3, rf_clk3_a,6 );DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL (msm8998, rf_clk3_pin, rf_clk3_a_pin,6 );static struct clk_smd_rpm *msm8998_clks[] = { + [RPM_SMD_BIMC_CLK ] = &msm8998_bimc_clk, + [RPM_SMD_BIMC_A_CLK ] = &msm8998_bimc_a_clk, [RPM_SMD_PCNOC_CLK ] = &msm8998_pcnoc_clk, [RPM_SMD_PCNOC_A_CLK ] = &msm8998_pcnoc_a_clk, [RPM_SMD_SNOC_CLK ] = &msm8998_snoc_clk,
drivers/clk/renesas/rcar-gen3-cpg.c +4 -2
@@ -464,7 +464,8 @@ static struct clk * __init cpg_rpc_clk_register(const char *name, clk =clk_register_composite (NULL , name, &parent_name,1 ,NULL ,NULL , &rpc->div.hw, &clk_divider_ops, - &rpc->gate.hw, &clk_gate_ops,0 ); + &rpc->gate.hw, &clk_gate_ops, +CLK_SET_RATE_PARENT );if (IS_ERR (clk)) {kfree (rpc);return clk;
@@ -500,7 +501,8 @@ static struct clk * __init cpg_rpcd2_clk_register(const char *name, clk =clk_register_composite (NULL , name, &parent_name,1 ,NULL ,NULL , &rpcd2->fixed.hw, &clk_fixed_factor_ops, - &rpcd2->gate.hw, &clk_gate_ops,0 ); + &rpcd2->gate.hw, &clk_gate_ops, +CLK_SET_RATE_PARENT );if (IS_ERR (clk))kfree (rpcd2);
drivers/clk/sunxi-ng/ccu-sun50i-a64.c +27 -1
@@ -921,11 +921,26 @@ static const struct sunxi_ccu_desc sun50i_a64_ccu_desc = { .num_resets = ARRAY_SIZE(sun50i_a64_ccu_resets), }; +static struct ccu_pll_nb sun50i_a64_pll_cpu_nb = { + .common = &pll_cpux_clk.common, +/* copy from pll_cpux_clk */ + .enable =BIT (31 ), + .lock =BIT (28 ), +}; + +static struct ccu_mux_nb sun50i_a64_cpu_nb = { + .common = &cpux_clk.common, + .cm = &cpux_clk.mux, + .delay_us =1 ,/* > 8 clock cycles at 24 MHz */ + .bypass_index =1 ,/* index of 24 MHz oscillator */ +}; +static int sun50i_a64_ccu_probe (struct platform_device *pdev) {struct resource *res;void __iomem *reg;u32 val; +int ret; res =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); reg =devm_ioremap_resource (&pdev->dev, res);
@@ -939,7 +954,18 @@ static int sun50i_a64_ccu_probe(struct platform_device *pdev)writel (0x515 , reg +SUN50I_A64_PLL_MIPI_REG ); -return sunxi_ccu_probe (pdev->dev.of_node, reg, &sun50i_a64_ccu_desc); + ret =sunxi_ccu_probe (pdev->dev.of_node, reg, &sun50i_a64_ccu_desc); +if (ret) +return ret; + +/* Gate then ungate PLL CPU after any rate changes */ +ccu_pll_notifier_register (&sun50i_a64_pll_cpu_nb); + +/* Reparent CPU during PLL CPU rate changes */ +ccu_mux_notifier_register (pll_cpux_clk.common.hw.clk, + &sun50i_a64_cpu_nb); + +return 0 ; }static const struct of_device_id sun50i_a64_ccu_ids[] = {
drivers/clk/ti/clk-7xx.c +1 -1
@@ -405,7 +405,7 @@ static const struct omap_clkctrl_bit_data dra7_gmac_bit_data[] __initconst = { };static const struct omap_clkctrl_reg_data dra7_gmac_clkctrl_regs[]__initconst = { - {DRA7_GMAC_GMAC_CLKCTRL , dra7_gmac_bit_data,CLKF_SW_SUP ,"dpll_gmac_ck" }, + {DRA7_GMAC_GMAC_CLKCTRL , dra7_gmac_bit_data,CLKF_SW_SUP ,"gmac_main_clk" }, {0 }, };
drivers/clk/uniphier/clk-uniphier-peri.c +8 -5
@@ -18,8 +18,8 @@#define UNIPHIER_PERI_CLK_FI2C (idx, ch) \ UNIPHIER_CLK_GATE("i2c" #ch, (idx), "i2c", 0x24, 24 + (ch)) -#define UNIPHIER_PERI_CLK_SCSSI (idx) \ - UNIPHIER_CLK_GATE("scssi", (idx), "spi", 0x20, 17) +#define UNIPHIER_PERI_CLK_SCSSI (idx, ch) \ + UNIPHIER_CLK_GATE("scssi" #ch, (idx), "spi", 0x20, 17 + (ch))#define UNIPHIER_PERI_CLK_MCSSI (idx) \ UNIPHIER_CLK_GATE("mcssi", (idx), "spi", 0x24, 14)
@@ -35,7 +35,7 @@ const struct uniphier_clk_data uniphier_ld4_peri_clk_data[] = {UNIPHIER_PERI_CLK_I2C (6 ,2 ),UNIPHIER_PERI_CLK_I2C (7 ,3 ),UNIPHIER_PERI_CLK_I2C (8 ,4 ), - UNIPHIER_PERI_CLK_SCSSI(11), + UNIPHIER_PERI_CLK_SCSSI(11, 0), { /* sentinel */ } };
@@ -51,7 +51,10 @@ const struct uniphier_clk_data uniphier_pro4_peri_clk_data[] = {UNIPHIER_PERI_CLK_FI2C (8 ,4 ),UNIPHIER_PERI_CLK_FI2C (9 ,5 ),UNIPHIER_PERI_CLK_FI2C (10 ,6 ), -UNIPHIER_PERI_CLK_SCSSI (11 ), - UNIPHIER_PERI_CLK_MCSSI(12), +UNIPHIER_PERI_CLK_SCSSI (11 ,0 ), +UNIPHIER_PERI_CLK_SCSSI (12 ,1 ), +UNIPHIER_PERI_CLK_SCSSI (13 ,2 ), +UNIPHIER_PERI_CLK_SCSSI (14 ,3 ), + UNIPHIER_PERI_CLK_MCSSI(15), { /* sentinel */ } };
drivers/clocksource/bcm2835_timer.c +4 -1
@@ -121,7 +121,7 @@ static int __init bcm2835_timer_init(struct device_node *node) ret =setup_irq (irq, &timer->act);if (ret) {pr_err ("Can't set up timer IRQ\n" ); - goto err_iounmap; + goto err_timer_free; }clockevents_config_and_register (&timer->evt, freq,0xf ,0xffffffff );
@@ -130,6 +130,9 @@ static int __init bcm2835_timer_init(struct device_node *node)return 0 ; +err_timer_free: +kfree (timer); + err_iounmap:iounmap (base);return ret;
drivers/clocksource/timer-davinci.c +4 -4
@@ -302,10 +302,6 @@ int __init davinci_timer_register(struct clk *clk,return rv; } -clockevents_config_and_register (&clockevent->dev, tick_rate, -DAVINCI_TIMER_MIN_DELTA , -DAVINCI_TIMER_MAX_DELTA ); - davinci_clocksource.dev.rating =300 ; davinci_clocksource.dev.read = davinci_clocksource_read; davinci_clocksource.dev.mask =
@@ -323,6 +319,10 @@ int __init davinci_timer_register(struct clk *clk,davinci_clocksource_init_tim34 (base); } +clockevents_config_and_register (&clockevent->dev, tick_rate, +DAVINCI_TIMER_MIN_DELTA , +DAVINCI_TIMER_MAX_DELTA ); + rv =clocksource_register_hz (&davinci_clocksource.dev, tick_rate);if (rv) {pr_err ("Unable to register clocksource" );
drivers/crypto/Kconfig +1 -1
@@ -739,7 +739,7 @@ source "drivers/crypto/stm32/Kconfig" config CRYPTO_DEV_SAFEXCEL tristate "Inside Secure's SafeXcel cryptographic engine driver" - depends on OF || PCI || COMPILE_TEST + depends on (OF || PCI || COMPILE_TEST) && HAS_IOMEM select CRYPTO_LIB_AES select CRYPTO_AUTHENC select CRYPTO_BLKCIPHER
drivers/crypto/chelsio/chtls/chtls_cm.c +14 -13
@@ -727,6 +727,14 @@ static int chtls_close_listsrv_rpl(struct chtls_dev *cdev, struct sk_buff *skb)return 0 ; } +static void chtls_purge_wr_queue (struct sock *sk) +{ +struct sk_buff *skb; + +while ((skb =dequeue_wr (sk)) !=NULL ) +kfree_skb (skb); +} +static void chtls_release_resources (struct sock *sk) {struct chtls_sock *csk =rcu_dereference_sk_user_data (sk);
@@ -741,6 +749,11 @@ static void chtls_release_resources(struct sock *sk)kfree_skb (csk->txdata_skb_cache); csk->txdata_skb_cache =NULL ; +if (csk->wr_credits != csk->wr_max_credits) { +chtls_purge_wr_queue (sk); +chtls_reset_wr_list (csk); + } +if (csk->l2t_entry) {cxgb4_l2t_release (csk->l2t_entry); csk->l2t_entry =NULL ;
@@ -1735,6 +1748,7 @@ static void chtls_peer_close(struct sock *sk, struct sk_buff *skb)else sk_wake_async (sk,SOCK_WAKE_WAITD ,POLL_IN ); } +kfree_skb (skb); }static void chtls_close_con_rpl (struct sock *sk,struct sk_buff *skb)
@@ -2062,19 +2076,6 @@ static int chtls_conn_cpl(struct chtls_dev *cdev, struct sk_buff *skb)return 0 ; } -static struct sk_buff *dequeue_wr (struct sock *sk) -{ -struct chtls_sock *csk =rcu_dereference_sk_user_data (sk); -struct sk_buff *skb = csk->wr_skb_head; - -if (likely (skb)) { -/* Don't bother clearing the tail */ - csk->wr_skb_head =WR_SKB_CB (skb)->next_wr; -WR_SKB_CB (skb)->next_wr =NULL ; - } -return skb; -} -static void chtls_rx_ack (struct sock *sk,struct sk_buff *skb) {struct cpl_fw4_ack *hdr =cplhdr (skb) +RSS_HDR ;
drivers/crypto/chelsio/chtls/chtls_cm.h +21 -0
@@ -185,6 +185,12 @@ static inline void chtls_kfree_skb(struct sock *sk, struct sk_buff *skb)kfree_skb (skb); } +static inline void chtls_reset_wr_list (struct chtls_sock *csk) +{ + csk->wr_skb_head =NULL ; + csk->wr_skb_tail =NULL ; +} +static inline void enqueue_wr (struct chtls_sock *csk,struct sk_buff *skb) {WR_SKB_CB (skb)->next_wr =NULL ;
@@ -197,4 +203,19 @@ static inline void enqueue_wr(struct chtls_sock *csk, struct sk_buff *skb)WR_SKB_CB (csk->wr_skb_tail)->next_wr = skb; csk->wr_skb_tail = skb; } + +static inline struct sk_buff *dequeue_wr (struct sock *sk) +{ +struct chtls_sock *csk =rcu_dereference_sk_user_data (sk); +struct sk_buff *skb =NULL ; + + skb = csk->wr_skb_head; + +if (likely (skb)) { +/* Don't bother clearing the tail */ + csk->wr_skb_head =WR_SKB_CB (skb)->next_wr; +WR_SKB_CB (skb)->next_wr =NULL ; + } +return skb; +}#endif
drivers/crypto/chelsio/chtls/chtls_hw.c +3 -0
@@ -350,6 +350,7 @@ int chtls_setkey(struct chtls_sock *csk, u32 keylen, u32 optname) kwr->sc_imm.cmd_more =cpu_to_be32 (ULPTX_CMD_V (ULP_TX_SC_IMM )); kwr->sc_imm.len =cpu_to_be32 (klen); +lock_sock (sk);/* key info */ kctx = (struct _key_ctx *)(kwr +1 ); ret =chtls_key_info (csk, kctx, keylen, optname);
@@ -388,8 +389,10 @@ int chtls_setkey(struct chtls_sock *csk, u32 keylen, u32 optname) csk->tlshws.txkey = keyid; } +release_sock (sk);return ret; out_notcb: +release_sock (sk);free_tls_keyid (sk); out_nokey:kfree_skb (skb);
drivers/devfreq/Kconfig +2 -1
@@ -118,7 +118,8 @@ config ARM_TEGRA20_DEVFREQ config ARM_RK3399_DMC_DEVFREQ tristate "ARM RK3399 DMC DEVFREQ Driver" - depends on ARCH_ROCKCHIP + depends on (ARCH_ROCKCHIP && HAVE_ARM_SMCCC) || \ + (COMPILE_TEST && HAVE_ARM_SMCCC) select DEVFREQ_EVENT_ROCKCHIP_DFI select DEVFREQ_GOV_SIMPLE_ONDEMAND select PM_DEVFREQ_EVENT
drivers/devfreq/event/Kconfig +1 -1
@@ -34,7 +34,7 @@ config DEVFREQ_EVENT_EXYNOS_PPMU config DEVFREQ_EVENT_ROCKCHIP_DFI tristate "ROCKCHIP DFI DEVFREQ event Driver" - depends on ARCH_ROCKCHIP + depends on ARCH_ROCKCHIP || COMPILE_TEST help This add the devfreq-event driver for Rockchip SoC. It provides DFI (DDR Monitor Module) driver to count ddr load.
drivers/devfreq/event/exynos-ppmu.c +8 -5
@@ -101,17 +101,22 @@ static struct __exynos_ppmu_events { PPMU_EVENT(dmc1_1), }; -static int exynos_ppmu_find_ppmu_id (struct devfreq_event_dev *edev) +static int __exynos_ppmu_find_ppmu_id (const char *edev_name) {int i;for (i =0 ; i <ARRAY_SIZE (ppmu_events); i++) -if (!strcmp (edev->desc->name, ppmu_events[i].name)) +if (!strcmp (edev_name, ppmu_events[i].name))return ppmu_events[i].id;return -EINVAL ; } +static int exynos_ppmu_find_ppmu_id (struct devfreq_event_dev *edev) +{ +return __exynos_ppmu_find_ppmu_id (edev->desc->name); +} +/* * The devfreq-event ops structure for PPMU v1.1 */
@@ -556,13 +561,11 @@ static int of_get_devfreq_events(struct device_node *np,* use default if not. */ if (info->ppmu_type ==EXYNOS_TYPE_PPMU_V2 ) { -struct devfreq_event_dev edev;int id;/* Not all registers take the same value for * read+write data count. */ - edev.desc = &desc[j]; - id =exynos_ppmu_find_ppmu_id (&edev); + id =__exynos_ppmu_find_ppmu_id (desc[j].name);switch (id) {case PPMU_PMNCNT0 :
drivers/dma/dmaengine.c +3 -1
@@ -179,7 +179,7 @@ __dma_device_satisfies_mask(struct dma_device *device,static struct module *dma_chan_to_owner (struct dma_chan *chan) { -return chan->device->dev->driver->owner; +return chan->device->owner; }/**
@@ -919,6 +919,8 @@ int dma_async_device_register(struct dma_device *device)return -EIO ; } + device->owner = device->dev->driver->owner; +if (dma_has_cap (DMA_MEMCPY , device->cap_mask) && !device->device_prep_dma_memcpy) { dev_err(device->dev, "Device claims capability %s, but op is not defined\n",
drivers/dma/fsl-qdma.c +1 -1
@@ -304,7 +304,7 @@ static void fsl_qdma_free_chan_resources(struct dma_chan *chan)vchan_dma_desc_free_list (&fsl_chan->vchan, &head); -if (!fsl_queue->comp_pool && !fsl_queue->comp_pool) +if (!fsl_queue->comp_pool && !fsl_queue->desc_pool)return ; list_for_each_entry_safe(comp_temp, _comp_temp,
drivers/dma/imx-sdma.c +11 -8
@@ -760,12 +760,8 @@ static void sdma_start_desc(struct sdma_channel *sdmac)return ; } sdmac->desc = desc =to_sdma_desc (&vd->tx); -/* -* Do not delete the node in desc_issued list in cyclic mode, otherwise -* the desc allocated will never be freed in vchan_dma_desc_free_list -*/ -if (!(sdmac->flags &IMX_DMA_SG_LOOP )) -list_del (&vd->node); + +list_del (&vd->node); sdma->channel_control[channel].base_bd_ptr = desc->bd_phys; sdma->channel_control[channel].current_bd_ptr = desc->bd_phys;
@@ -1071,7 +1067,6 @@ static void sdma_channel_terminate_work(struct work_struct *work)spin_lock_irqsave (&sdmac->vc.lock, flags);vchan_get_all_descriptors (&sdmac->vc, &head); - sdmac->desc =NULL ;spin_unlock_irqrestore (&sdmac->vc.lock, flags);vchan_dma_desc_free_list (&sdmac->vc, &head); sdmac->context_loaded = false;
@@ -1080,11 +1075,19 @@ static void sdma_channel_terminate_work(struct work_struct *work)static int sdma_disable_channel_async (struct dma_chan *chan) {struct sdma_channel *sdmac =to_sdma_chan (chan); +unsigned long flags; + +spin_lock_irqsave (&sdmac->vc.lock, flags);sdma_disable_channel (chan); -if (sdmac->desc) +if (sdmac->desc) { +vchan_terminate_vdesc (&sdmac->desc->vd); + sdmac->desc =NULL ;schedule_work (&sdmac->terminate_worker); + } + +spin_unlock_irqrestore (&sdmac->vc.lock, flags);return 0 ; }
drivers/edac/sifive_edac.c +2 -2
@@ -54,8 +54,8 @@ static int ecc_register(struct platform_device *pdev) p->dci =edac_device_alloc_ctl_info (0 ,"sifive_ecc" ,1 ,"sifive_ecc" ,1 ,1 ,NULL ,0 ,edac_device_alloc_index ()); -if (IS_ERR (p->dci)) -return PTR_ERR (p->dci); +if (!p->dci) +return -ENOMEM ; p->dci->dev = &pdev->dev; p->dci->mod_name ="Sifive ECC Manager" ;
drivers/gpio/gpio-grgpio.c +6 -4
@@ -253,17 +253,16 @@ static int grgpio_irq_map(struct irq_domain *d, unsigned int irq, lirq->irq = irq; uirq = &priv->uirqs[lirq->index];if (uirq->refcnt ==0 ) { +spin_unlock_irqrestore (&priv->gc.bgpio_lock, flags); ret =request_irq (uirq->uirq, grgpio_irq_handler,0 ,dev_name (priv->dev), priv);if (ret) {dev_err (priv->dev,"Could not request underlying irq %d\n" , uirq->uirq); - -spin_unlock_irqrestore (&priv->gc.bgpio_lock, flags); -return ret; } +spin_lock_irqsave (&priv->gc.bgpio_lock, flags); } uirq->refcnt++;
@@ -309,8 +308,11 @@ static void grgpio_irq_unmap(struct irq_domain *d, unsigned int irq)if (index >=0 ) { uirq = &priv->uirqs[lirq->index]; uirq->refcnt--; -if (uirq->refcnt ==0 ) +if (uirq->refcnt ==0 ) { +spin_unlock_irqrestore (&priv->gc.bgpio_lock, flags);free_irq (uirq->uirq, priv); +return ; + } }spin_unlock_irqrestore (&priv->gc.bgpio_lock, flags);
drivers/gpio/gpiolib.c +1 -0
@@ -1924,6 +1924,7 @@ static int gpiochip_hierarchy_irq_domain_alloc(struct irq_domain *d, parent_type);chip_info (gc,"alloc_irqs_parent for %d parent hwirq %d\n" , irq, parent_hwirq); +irq_set_lockdep_class (irq, gc->irq.lock_key, gc->irq.request_key); ret =irq_domain_alloc_irqs_parent (d, irq,1 , &parent_fwspec);if (ret) chip_err(gc,
drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c +2 -17
@@ -338,17 +338,9 @@ bool amdgpu_atombios_get_connector_info_from_object_table(struct amdgpu_device * path_size +=le16_to_cpu (path->usSize);if (device_support &le16_to_cpu (path->usDeviceTag)) { -uint8_t con_obj_id, con_obj_num, con_obj_type; - - con_obj_id = +uint8_t con_obj_id = (le16_to_cpu (path->usConnObjectId) &OBJECT_ID_MASK ) >>OBJECT_ID_SHIFT ; - con_obj_num = - (le16_to_cpu (path->usConnObjectId) &ENUM_ID_MASK ) - >>ENUM_ID_SHIFT ; - con_obj_type = - (le16_to_cpu (path->usConnObjectId) & -OBJECT_TYPE_MASK ) >>OBJECT_TYPE_SHIFT ;/* Skip TV/CV support */ if ((le16_to_cpu(path->usDeviceTag) ==
@@ -373,14 +365,7 @@ bool amdgpu_atombios_get_connector_info_from_object_table(struct amdgpu_device * router.ddc_valid = false; router.cd_valid = false;for (j =0 ; j < ((le16_to_cpu (path->usSize) -8 ) /2 ); j++) { -uint8_t grph_obj_id, grph_obj_num, grph_obj_type; - - grph_obj_id = - (le16_to_cpu (path->usGraphicObjIds[j]) & -OBJECT_ID_MASK ) >>OBJECT_ID_SHIFT ; - grph_obj_num = - (le16_to_cpu (path->usGraphicObjIds[j]) & -ENUM_ID_MASK ) >>ENUM_ID_SHIFT ; +uint8_t grph_obj_type= grph_obj_type = (le16_to_cpu (path->usGraphicObjIds[j]) &OBJECT_TYPE_MASK ) >>OBJECT_TYPE_SHIFT ;
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +0 -2
@@ -3466,8 +3466,6 @@ static int amdgpu_device_reset_sriov(struct amdgpu_device *adev,if (r)return r; -amdgpu_amdkfd_pre_reset (adev); -/* Resume IP prior to SMC */ r =amdgpu_device_ip_reinit_early_sriov (adev);if (r)
drivers/gpu/drm/amd/amdgpu/nv.c +6 -0
@@ -660,6 +660,12 @@ static int nv_common_early_init(void *handle) adev->pg_flags =AMD_PG_SUPPORT_VCN |AMD_PG_SUPPORT_VCN_DPG |AMD_PG_SUPPORT_ATHUB ; +/* guest vm gets 0xffffffff when reading RCC_DEV0_EPF0_STRAP0, +* as a consequence, the rev_id and external_rev_id are wrong. +* workaround it by hardcoding rev_id to 0 (default value). +*/ +if (amdgpu_sriov_vf (adev)) + adev->rev_id =0 ; adev->external_rev_id = adev->rev_id +0xa ;break ;default :
drivers/gpu/drm/amd/amdgpu/soc15_common.h +1 -0
@@ -52,6 +52,7 @@uint32_t old_ =0 ; \ uint32_t tmp_ = RREG32(adev->reg_offset[ip##_HWIP][inst][reg##_BASE_IDX] + reg); \uint32_t loop = adev->usec_timeout; \ + ret =0 ; \while ((tmp_ & (mask)) != (expected_value)) { \if (old_ != tmp_) { \ loop = adev->usec_timeout; \
drivers/gpu/drm/amd/amdkfd/kfd_debugfs.c +1 -1
@@ -93,7 +93,7 @@ void kfd_debugfs_init(void) kfd_debugfs_hqds_by_device, &kfd_debugfs_fops);debugfs_create_file ("rls" ,S_IFREG |0444 , debugfs_root, kfd_debugfs_rls_by_device, &kfd_debugfs_fops); -debugfs_create_file ("hang_hws" ,S_IFREG |0644 , debugfs_root, +debugfs_create_file ("hang_hws" ,S_IFREG |0200 , debugfs_root,NULL , &kfd_debugfs_hang_hws_fops); }
drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c +6 -4
@@ -1181,16 +1181,18 @@ static int create_queue_cpsch(struct device_queue_manager *dqm, struct queue *q,list_add (&q->list, &qpd->queues_list); qpd->queue_count++; + +if (q->properties.type ==KFD_QUEUE_TYPE_SDMA ) + dqm->sdma_queue_count++; +else if (q->properties.type ==KFD_QUEUE_TYPE_SDMA_XGMI ) + dqm->xgmi_sdma_queue_count++; +if (q->properties.is_active) { dqm->queue_count++; retval =execute_queues_cpsch (dqm,KFD_UNMAP_QUEUES_FILTER_DYNAMIC_QUEUES ,0 ); } -if (q->properties.type ==KFD_QUEUE_TYPE_SDMA ) - dqm->sdma_queue_count++; -else if (q->properties.type ==KFD_QUEUE_TYPE_SDMA_XGMI ) - dqm->xgmi_sdma_queue_count++;/* * Unconditionally increment this counter, regardless of the queue's * type or whether the queue is active.
drivers/gpu/drm/amd/display/dc/calcs/dcn_calc_math.h deleted +0 -43
43 lines not on this page · raw message
drivers/gpu/drm/amd/display/dc/calcs/dcn_calcs.c +23 -11
@@ -1438,6 +1438,7 @@ void dcn_bw_update_from_pplib(struct dc *dc)struct dc_context *ctx = dc->ctx;struct dm_pp_clock_levels_with_voltage fclks = {0 }, dcfclks = {0 };bool res; +unsigned vmin0p65_idx, vmid0p72_idx, vnom0p8_idx, vmax0p9_idx;/* TODO: This is not the proper way to obtain fabric_and_dram_bandwidth, should be min(fclk, memclk) */ res = dm_pp_get_clock_levels_by_type_with_voltage(
@@ -1449,17 +1450,28 @@ void dcn_bw_update_from_pplib(struct dc *dc) res =verify_clock_values (&fclks);if (res) { -ASSERT (fclks.num_levels >=3 ); - dc->dcn_soc->fabric_and_dram_bandwidth_vmin0p65 =32 * (fclks.data[0 ].clocks_in_khz /1000.0 ) /1000.0 ; - dc->dcn_soc->fabric_and_dram_bandwidth_vmid0p72 = dc->dcn_soc->number_of_channels * - (fclks.data[fclks.num_levels - (fclks.num_levels >2 ?3 :2 )].clocks_in_khz /1000.0 ) - * ddr4_dram_factor_single_Channel /1000.0 ; - dc->dcn_soc->fabric_and_dram_bandwidth_vnom0p8 = dc->dcn_soc->number_of_channels * - (fclks.data[fclks.num_levels -2 ].clocks_in_khz /1000.0 ) - * ddr4_dram_factor_single_Channel /1000.0 ; - dc->dcn_soc->fabric_and_dram_bandwidth_vmax0p9 = dc->dcn_soc->number_of_channels * - (fclks.data[fclks.num_levels -1 ].clocks_in_khz /1000.0 ) - * ddr4_dram_factor_single_Channel /1000.0 ; +ASSERT (fclks.num_levels); + + vmin0p65_idx =0 ; + vmid0p72_idx = fclks.num_levels - + (fclks.num_levels >2 ?3 : (fclks.num_levels >1 ?2 :1 )); + vnom0p8_idx = fclks.num_levels - (fclks.num_levels >1 ?2 :1 ); + vmax0p9_idx = fclks.num_levels -1 ; + + dc->dcn_soc->fabric_and_dram_bandwidth_vmin0p65 = +32 * (fclks.data[vmin0p65_idx].clocks_in_khz /1000.0 ) /1000.0 ; + dc->dcn_soc->fabric_and_dram_bandwidth_vmid0p72 = + dc->dcn_soc->number_of_channels * + (fclks.data[vmid0p72_idx].clocks_in_khz /1000.0 ) + * ddr4_dram_factor_single_Channel /1000.0 ; + dc->dcn_soc->fabric_and_dram_bandwidth_vnom0p8 = + dc->dcn_soc->number_of_channels * + (fclks.data[vnom0p8_idx].clocks_in_khz /1000.0 ) + * ddr4_dram_factor_single_Channel /1000.0 ; + dc->dcn_soc->fabric_and_dram_bandwidth_vmax0p9 = + dc->dcn_soc->number_of_channels * + (fclks.data[vmax0p9_idx].clocks_in_khz /1000.0 ) + * ddr4_dram_factor_single_Channel /1000.0 ; }else BREAK_TO_DEBUGGER ();
drivers/gpu/drm/amd/display/dc/core/dc.c +9 -8
@@ -2267,12 +2267,7 @@ void dc_set_power_state( enum dc_acpi_cm_power_state power_state) {struct kref refcount; -struct display_mode_lib *dml =kzalloc (sizeof (struct display_mode_lib ), -GFP_KERNEL ); - -ASSERT (dml); -if (!dml) -return ; +struct display_mode_lib *dml;switch (power_state) {case DC_ACPI_CM_POWER_STATE_D0 :
@@ -2294,6 +2289,12 @@ void dc_set_power_state(* clean state, and dc hw programming optimizations will not * cause any trouble. */ + dml =kzalloc (sizeof (struct display_mode_lib ), +GFP_KERNEL ); + +ASSERT (dml); +if (!dml) +return ;/* Preserve refcount */ refcount = dc->current_state->refcount;
@@ -2307,10 +2308,10 @@ void dc_set_power_state( dc->current_state->refcount = refcount; dc->current_state->bw_ctx.dml = *dml; +kfree (dml); +break ; } - -kfree (dml); }void dc_resume (struct dc *dc)
drivers/gpu/drm/amd/display/dc/core/dc_link.c +1 -2
@@ -948,8 +948,7 @@ bool dc_link_detect(struct dc_link *link, enum dc_detect_reason reason) same_edid =is_same_edid (&prev_sink->dc_edid, &sink->dc_edid);if (link->connector_signal ==SIGNAL_TYPE_DISPLAY_PORT && - sink_caps.transaction_type ==DDC_TRANSACTION_TYPE_I2C_OVER_AUX && - reason !=DETECT_REASON_HPDRX ) { + sink_caps.transaction_type ==DDC_TRANSACTION_TYPE_I2C_OVER_AUX ) {/* * TODO debug why Dell 2413 doesn't like * two link trainings
drivers/gpu/drm/amd/display/dc/dcn20/dcn20_optc.c +12 -4
@@ -233,12 +233,13 @@ void optc2_set_odm_combine(struct timing_generator *optc, int *opp_id, int opp_c struct dc_crtc_timing *timing) {struct optc *optc1 =DCN10TG_FROM_TG (optc); -/* 2 pieces of memory required for up to 5120 displays, 4 for up to 8192 */ int mpcc_hactive = (timing->h_addressable + timing->h_border_left + timing->h_border_right) / opp_cnt; -int memory_mask = mpcc_hactive <=2560 ?0x3 :0xf ; +uint32_t memory_mask;uint32_t data_fmt =0 ; +ASSERT (opp_cnt ==2 ); +/* TODO: In pseudocode but does not affect maximus, delete comment if we dont need on asic * REG_SET(OTG_GLOBAL_CONTROL2, 0, GLOBAL_UPDATE_LOCK_EN, 1); * Program OTG register MASTER_UPDATE_LOCK_DB_X/Y to the position before DP frame start
@@ -246,9 +247,17 @@ void optc2_set_odm_combine(struct timing_generator *optc, int *opp_id, int opp_c* MASTER_UPDATE_LOCK_DB_X, 160, * MASTER_UPDATE_LOCK_DB_Y, 240); */ + +/* 2 pieces of memory required for up to 5120 displays, 4 for up to 8192, +* however, for ODM combine we can simplify by always using 4. +* To make sure there's no overlap, each instance "reserves" 2 memories and +* they are uniquely combined here. +*/ + memory_mask =0x3 << (opp_id[0 ] *2 ) |0x3 << (opp_id[1 ] *2 ); +if (REG (OPTC_MEMORY_CONFIG ))REG_SET (OPTC_MEMORY_CONFIG ,0 , -OPTC_MEM_SEL , memory_mask << (optc->inst *4 )); +OPTC_MEM_SEL , memory_mask);if (timing->pixel_encoding ==PIXEL_ENCODING_YCBCR422 ) data_fmt =1 ;
@@ -257,7 +266,6 @@ void optc2_set_odm_combine(struct timing_generator *optc, int *opp_id, int opp_cREG_UPDATE (OPTC_DATA_FORMAT_CONTROL ,OPTC_DATA_FORMAT , data_fmt); -ASSERT (opp_cnt ==2 ); REG_SET_3(OPTC_DATA_SOURCE_SELECT, 0, OPTC_NUM_OF_INPUT_SEGMENT, 1, OPTC_SEG0_SRC_SEL, opp_id[0],
drivers/gpu/drm/amd/display/dc/dml/dml_common_defs.c +1 -1
@@ -24,7 +24,7 @@*/ #include "dml_common_defs.h" -#include "../calcs/dcn_calc_math.h" +#include "dcn_calc_math.h" #include "dml_inline_defs.h"
drivers/gpu/drm/amd/display/dc/dml/dml_inline_defs.h +1 -1
@@ -27,7 +27,7 @@#define __DML_INLINE_DEFS_H__#include "dml_common_defs.h" -#include "../calcs/dcn_calc_math.h" +#include "dcn_calc_math.h" #include "dml_logger.h" static inline double dml_min (double a,double b)
drivers/gpu/drm/amd/display/dc/inc/dcn_calc_math.h new file +43 -0
43 lines not on this page · raw message
drivers/gpu/drm/amd/display/modules/freesync/freesync.c +2 -0
@@ -803,6 +803,7 @@ void mod_freesync_build_vrr_params(struct mod_freesync *mod_freesync, 2 * in_out_vrr->min_refresh_in_uhz) in_out_vrr->btr.btr_enabled = false; + in_out_vrr->fixed.fixed_active = false; in_out_vrr->btr.btr_active = false; in_out_vrr->btr.inserted_duration_in_us =0 ; in_out_vrr->btr.frames_to_insert =0 ;
@@ -822,6 +823,7 @@ void mod_freesync_build_vrr_params(struct mod_freesync *mod_freesync, in_out_vrr->adjust.v_total_max = stream->timing.v_total; }else if (in_out_vrr->state ==VRR_STATE_ACTIVE_VARIABLE && refresh_range >=MIN_REFRESH_RANGE_IN_US ) { + in_out_vrr->adjust.v_total_min =calc_v_total_from_refresh (stream, in_out_vrr->max_refresh_in_uhz);
drivers/gpu/drm/amd/powerplay/hwmgr/smu10_hwmgr.c +14 -9
@@ -1026,12 +1026,15 @@ static int smu10_get_clock_by_type_with_latency(struct pp_hwmgr *hwmgr, clocks->num_levels =0 ;for (i =0 ; i < pclk_vol_table->count; i++) { - clocks->data[i].clocks_in_khz = pclk_vol_table->entries[i].clk *10 ; - clocks->data[i].latency_in_us = latency_required ? -smu10_get_mem_latency (hwmgr, - pclk_vol_table->entries[i].clk) : -0 ; - clocks->num_levels++; +if (pclk_vol_table->entries[i].clk) { + clocks->data[clocks->num_levels].clocks_in_khz = + pclk_vol_table->entries[i].clk *10 ; + clocks->data[clocks->num_levels].latency_in_us = latency_required ? +smu10_get_mem_latency (hwmgr, + pclk_vol_table->entries[i].clk) : +0 ; + clocks->num_levels++; + } }return 0 ;
@@ -1077,9 +1080,11 @@ static int smu10_get_clock_by_type_with_voltage(struct pp_hwmgr *hwmgr, clocks->num_levels =0 ;for (i =0 ; i < pclk_vol_table->count; i++) { - clocks->data[i].clocks_in_khz = pclk_vol_table->entries[i].clk *10 ; - clocks->data[i].voltage_in_mv = pclk_vol_table->entries[i].vol; - clocks->num_levels++; +if (pclk_vol_table->entries[i].clk) { + clocks->data[clocks->num_levels].clocks_in_khz = pclk_vol_table->entries[i].clk *10 ; + clocks->data[clocks->num_levels].voltage_in_mv = pclk_vol_table->entries[i].vol; + clocks->num_levels++; + } }return 0 ;
drivers/gpu/drm/drm_client_modeset.c +72 -0
96 lines not on this page · raw message
drivers/gpu/drm/mediatek/mtk_drm_crtc.c +16 -2
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/nouveau/nouveau_fence.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/nouveau/nvkm/core/memory.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/nouveau/nvkm/engine/disp/channv50.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/nouveau/nvkm/engine/gr/gk20a.c +11 -10
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/nouveau/nvkm/subdev/fault/base.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/nouveau/nvkm/subdev/secboot/gm20b.c +2 -3
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/radeon/radeon_display.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/vmwgfx/vmwgfx_cmdbuf_res.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/infiniband/core/cache.c +75 -46
121 lines not on this page · raw message
drivers/infiniband/hw/hfi1/chip_registers.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/infiniband/hw/hns/hns_roce_mr.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/md/bcache/super.c +50 -29
79 lines not on this page · raw message
drivers/media/pci/cx23885/cx23885-cards.c +24 -0
Lines of this file are not shown. View the raw message.
drivers/media/pci/cx23885/cx23885-video.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/media/platform/sti/bdisp/bdisp-hw.c +3 -3
Lines of this file are not shown. View the raw message.
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c +22 -0
Lines of this file are not shown. View the raw message.
drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.h +2 -2
Lines of this file are not shown. View the raw message.
drivers/media/platform/sunxi/sun4i-csi/sun4i_dma.c +14 -6
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/bnxt/bnxt.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/cisco/enic/enic_main.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/freescale/gianfar.c +7 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_xsk.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_stats.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/netronome/nfp/abm/cls.c +4 -10
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/realtek/r8169_main.c +9 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/xscale/ixp4xx_eth.c +44 -52
96 lines not on this page · raw message
drivers/net/wireless/ath/ath10k/wmi-tlv.c +4 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/wil6210/txrx_edma.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/b43legacy/main.c +3 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +7 -6
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/ipw2x00/ipw2100.c +4 -3
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/ipw2x00/ipw2200.c +3 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlegacy/3945-mac.c +3 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlegacy/4965-mac.c +3 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlegacy/common.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c +3 -5
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/mvm/tt.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intersil/hostap/hostap_ap.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intersil/orinoco/orinoco_usb.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtlwifi/pci.c +6 -4
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtw88/main.c +5 -7
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtw88/pci.c +5 -0
Lines of this file are not shown. View the raw message.
drivers/pci/quirks.c +52 -47
99 lines not on this page · raw message
drivers/pinctrl/intel/pinctrl-baytrail.c +7 -1
Lines of this file are not shown. View the raw message.
drivers/scsi/lpfc/lpfc_ct.c +22 -20
42 lines not on this page · raw message
drivers/staging/media/meson/vdec/vdec.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/staging/rtl8188eu/os_dep/ioctl_linux.c +6 -3
Lines of this file are not shown. View the raw message.
fs/btrfs/inode.c +96 -25
121 lines not on this page · raw message
fs/btrfs/volumes.c +40 -4
44 lines not on this page · raw message
fs/cifs/cifs_dfs_ref.c +43 -54
97 lines not on this page · raw message
fs/f2fs/file.c +37 -13
50 lines not on this page · raw message
kernel/trace/trace_events_hist.c +27 -43
70 lines not on this page · raw message
lib/debugobjects.c +25 -21
46 lines not on this page · raw message
security/selinux/avc.c +25 -28
53 lines not on this page · raw message
sound/soc/intel/boards/sof_rt5682.c +39 -4
43 lines not on this page · raw message
sound/soc/soc-topology.c +22 -20
42 lines not on this page · raw message
tools/bpf/bpftool/cgroup.c +39 -17
56 lines not on this page · raw message
tools/testing/selftests/bpf/test_select_reuseport.c +14 -2
Lines of this file are not shown. View the raw message.
tools/testing/selftests/kselftest/runner.sh +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/so_txtime.c +81 -3
84 lines not on this page · raw message
tools/testing/selftests/net/so_txtime.sh +7 -2
Lines of this file are not shown. View the raw message.
tools/testing/selftests/powerpc/eeh/eeh-functions.sh +7 -3
Lines of this file are not shown. View the raw message.
tools/testing/selftests/size/get_size.c +18 -6
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.