Linux 5.10.180
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.10.180 kernel.
All users of the 5.10 kernel series must upgrade.
The updated 5.10.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.10.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
------------
Makefile | 2 arch/arm/boot/dts/exynos4412-itop-elite.dts | 2 arch/arm/boot/dts/omap3-gta04.dtsi | 16 arch/arm/boot/dts/qcom-ipq4019.dtsi | 4 arch/arm/boot/dts/qcom-ipq8064.dtsi | 12 arch/arm/boot/dts/s5pv210.dtsi | 2 arch/arm64/boot/dts/qcom/ipq8074.dtsi | 12 arch/arm64/boot/dts/qcom/msm8996.dtsi | 12 arch/arm64/boot/dts/qcom/msm8998.dtsi | 4 arch/arm64/boot/dts/qcom/sdm845.dtsi | 30 arch/arm64/boot/dts/renesas/r8a774c0.dtsi | 3 arch/arm64/boot/dts/renesas/r8a77990.dtsi | 3 arch/arm64/include/asm/debug-monitors.h | 1 arch/arm64/include/asm/scs.h | 7 arch/arm64/kernel/debug-monitors.c | 5 arch/arm64/kernel/entry.S | 12 arch/arm64/kernel/head.S | 2 arch/arm64/kernel/kgdb.c | 2 arch/arm64/kvm/psci.c | 2 arch/ia64/kernel/salinfo.c | 2 arch/ia64/mm/contig.c | 2 arch/ia64/mm/hugetlbpage.c | 2 arch/mips/fw/lib/cmdline.c | 2 arch/openrisc/kernel/entry.S | 6 arch/parisc/kernel/real2.S | 5 arch/powerpc/kernel/rtas.c | 2 arch/powerpc/platforms/512x/clock-commonclk.c | 2 arch/powerpc/platforms/embedded6xx/flipper-pic.c | 2 arch/powerpc/platforms/embedded6xx/hlwd-pic.c | 2 arch/powerpc/platforms/embedded6xx/wii.c | 4 arch/powerpc/sysdev/tsi108_pci.c | 5 arch/sh/Kconfig.debug | 2 arch/sh/kernel/cpu/sh4/sq.c | 2 arch/sh/kernel/head_32.S | 6 arch/sh/kernel/nmi_debug.c | 4 arch/sh/kernel/setup.c | 4 arch/sh/math-emu/sfp-util.h | 4 arch/x86/include/asm/kvm_host.h | 5 arch/x86/kernel/apic/apic.c | 5 arch/x86/kernel/apic/io_apic.c | 14 arch/x86/kernel/cpu/mce/amd.c | 14 arch/x86/kernel/fpu/core.c | 67 - arch/x86/kvm/hyperv.c | 15 arch/x86/kvm/svm/svm.c | 2 arch/x86/kvm/vmx/vmx.c | 16 arch/x86/kvm/x86.c | 164 ++- block/blk-core.c | 7 block/blk-crypto-internal.h | 25 block/blk-crypto.c | 69 - block/blk-merge.c | 2 block/blk-mq.c | 2 block/keyslot-manager.c | 43 crypto/algapi.c | 4 crypto/drbg.c | 16 drivers/acpi/processor_pdc.c | 11 drivers/base/cpu.c | 3 drivers/base/dd.c | 7 drivers/block/drbd/drbd_receiver.c | 2 drivers/bluetooth/btsdio.c | 1 drivers/char/ipmi/Kconfig | 3 drivers/char/ipmi/ipmi_ssif.c | 8 drivers/char/tpm/tpm_tis_core.c | 131 +- drivers/char/tpm/tpm_tis_core.h | 2 drivers/clk/at91/clk-sam9x60-pll.c | 2 drivers/clk/clk-conf.c | 12 drivers/clk/rockchip/clk-rk3399.c | 2 drivers/clocksource/timer-davinci.c | 30 drivers/counter/104-quad-8.c | 28 drivers/crypto/Kconfig | 1 drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c | 2 drivers/crypto/caam/ctrl.c | 6 drivers/crypto/ccp/psp-dev.c | 6 drivers/crypto/inside-secure/safexcel.c | 37 drivers/dma/at_xdmac.c | 5 drivers/dma/dw-edma/dw-edma-core.c | 27 drivers/dma/mv_xor_v2.c | 2 drivers/edac/skx_base.c | 4 drivers/firmware/qcom_scm.c | 3 drivers/firmware/raspberrypi.c | 29 drivers/firmware/stratix10-svc.c | 4 drivers/fpga/fpga-bridge.c | 2 drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c | 6 drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 3 drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c | 1 drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 8 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 5 drivers/gpu/drm/amd/display/dc/core/dc_resource.c | 3 drivers/gpu/drm/bridge/adv7511/adv7533.c | 25 drivers/gpu/drm/drm_fb_helper.c | 3 drivers/gpu/drm/drm_probe_helper.c | 5 drivers/gpu/drm/exynos/exynos5433_drm_decon.c | 4 drivers/gpu/drm/exynos/exynos_drm_dsi.c | 7 drivers/gpu/drm/i915/display/intel_display.c | 2 drivers/gpu/drm/lima/lima_drv.c | 6 drivers/gpu/drm/msm/adreno/a5xx_gpu.c | 8 drivers/gpu/drm/msm/adreno/adreno_device.c | 7 drivers/gpu/drm/msm/adreno/adreno_gpu.c | 1 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 2 drivers/gpu/drm/panel/panel-orisetech-otm8009a.c | 2 drivers/gpu/drm/rockchip/rockchip_drm_gem.c | 3 drivers/gpu/drm/vgem/vgem_fence.c | 1 drivers/hid/wacom_wac.c | 38 drivers/hid/wacom_wac.h | 1 drivers/hwmon/adt7475.c | 6 drivers/hwmon/k10temp.c | 4 drivers/hwtracing/coresight/coresight-etm-perf.c | 1 drivers/i2c/busses/i2c-cadence.c | 6 drivers/i2c/busses/i2c-omap.c | 2 drivers/iio/adc/palmas_gpadc.c | 2 drivers/iio/light/max44009.c | 13 drivers/infiniband/core/cm.c | 3 drivers/infiniband/hw/hfi1/ipoib_tx.c | 19 drivers/infiniband/hw/hfi1/mmu_rb.c | 73 - drivers/infiniband/hw/hfi1/mmu_rb.h | 8 drivers/infiniband/hw/hfi1/sdma.c | 21 drivers/infiniband/hw/hfi1/sdma.h | 16 drivers/infiniband/hw/hfi1/sdma_txreq.h | 1 drivers/infiniband/hw/hfi1/trace_mmu.h | 4 drivers/infiniband/hw/hfi1/trace_tx.h | 179 +++ drivers/infiniband/hw/hfi1/user_sdma.c | 612 +++++++----- drivers/infiniband/hw/hfi1/user_sdma.h | 6 drivers/infiniband/hw/hfi1/verbs.c | 4 drivers/infiniband/hw/hfi1/vnic_sdma.c | 1 drivers/infiniband/hw/mlx4/qp.c | 8 drivers/infiniband/hw/mlx5/devx.c | 31 drivers/infiniband/hw/mlx5/qp.c | 2 drivers/infiniband/sw/rdmavt/qp.c | 2 drivers/infiniband/sw/siw/siw_main.c | 3 drivers/infiniband/sw/siw/siw_qp_tx.c | 2 drivers/infiniband/ulp/isert/ib_isert.c | 4 drivers/infiniband/ulp/srpt/ib_srpt.c | 23 drivers/input/touchscreen/raspberrypi-ts.c | 3 drivers/iommu/amd/amd_iommu_types.h | 4 drivers/leds/Kconfig | 2 drivers/leds/leds-tca6507.c | 5 drivers/macintosh/Kconfig | 1 drivers/macintosh/windfarm_smu_sat.c | 1 drivers/mailbox/zynqmp-ipi-mailbox.c | 19 drivers/md/dm-clone-target.c | 1 drivers/md/dm-flakey.c | 4 drivers/md/dm-integrity.c | 8 drivers/md/dm-ioctl.c | 7 drivers/md/dm-verity-target.c | 17 drivers/md/raid10.c | 74 - drivers/media/i2c/max9286.c | 1 drivers/media/pci/dm1105/dm1105.c | 1 drivers/media/pci/saa7134/saa7134-ts.c | 1 drivers/media/pci/saa7134/saa7134-vbi.c | 1 drivers/media/pci/saa7134/saa7134-video.c | 1 drivers/media/platform/qcom/venus/core.h | 6 drivers/media/platform/qcom/venus/helpers.c | 6 drivers/media/platform/qcom/venus/vdec.c | 120 +- drivers/media/platform/rcar_fdp1.c | 50 drivers/media/platform/sti/bdisp/bdisp-v4l2.c | 2 drivers/media/rc/gpio-ir-recv.c | 2 drivers/mfd/tqmx86.c | 76 - drivers/misc/vmw_vmci/vmci_host.c | 8 drivers/mmc/host/sdhci-of-esdhc.c | 24 drivers/mtd/ubi/eba.c | 19 drivers/net/dsa/mt7530.c | 4 drivers/net/dsa/mv88e6xxx/chip.c | 1 drivers/net/ethernet/amd/nmclan_cs.c | 2 drivers/net/ethernet/freescale/enetc/enetc_qos.c | 2 drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c | 23 drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c | 11 drivers/net/ethernet/marvell/octeontx2/nic/otx2_vf.c | 2 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c | 2 drivers/net/ethernet/sfc/mcdi_port_common.c | 11 drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c | 14 drivers/net/virtio_net.c | 43 drivers/net/wireguard/timers.c | 8 drivers/net/wireless/ath/ath5k/eeprom.c | 2 drivers/net/wireless/ath/ath6kl/bmi.c | 2 drivers/net/wireless/ath/ath6kl/htc_pipe.c | 4 drivers/net/wireless/ath/ath9k/hif_usb.c | 19 drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 5 drivers/net/wireless/intel/iwlwifi/fw/dbg.c | 4 drivers/net/wireless/intel/iwlwifi/fw/debugfs.c | 4 drivers/net/wireless/intel/iwlwifi/iwl-dbg-tlv.c | 6 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c | 10 drivers/net/wireless/intel/iwlwifi/pcie/trans.c | 3 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8192e.c | 1 drivers/net/wireless/realtek/rtlwifi/debug.c | 12 drivers/net/wireless/realtek/rtw88/mac.c | 8 drivers/nvme/host/core.c | 34 drivers/nvme/host/trace.h | 15 drivers/nvme/target/fcloop.c | 48 drivers/of/device.c | 7 drivers/pci/controller/dwc/pci-imx6.c | 7 drivers/pci/controller/dwc/pcie-qcom.c | 8 drivers/pci/hotplug/pciehp_pci.c | 15 drivers/pci/pcie/edr.c | 1 drivers/phy/tegra/xusb.c | 2 drivers/platform/x86/touchscreen_dmi.c | 41 drivers/power/supply/generic-adc-battery.c | 3 drivers/pwm/pwm-meson.c | 6 drivers/pwm/pwm-mtk-disp.c | 94 - drivers/regulator/core.c | 93 + drivers/regulator/stm32-pwr.c | 7 drivers/remoteproc/st_remoteproc.c | 5 drivers/remoteproc/stm32_rproc.c | 6 drivers/rtc/rtc-meson-vrtc.c | 4 drivers/rtc/rtc-omap.c | 1 drivers/s390/block/dasd.c | 2 drivers/scsi/lpfc/lpfc_init.c | 10 drivers/scsi/megaraid.c | 1 drivers/scsi/qedi/qedi_main.c | 3 drivers/soc/ti/pm33xx.c | 22 drivers/spi/spi-cadence-quadspi.c | 19 drivers/spi/spi-fsl-spi.c | 12 drivers/spi/spi-imx.c | 14 drivers/spi/spi-qup.c | 22 drivers/spmi/spmi.c | 3 drivers/staging/iio/resolver/ad2s1210.c | 2 drivers/staging/media/rkvdec/rkvdec.c | 2 drivers/staging/rtl8192e/rtl8192e/rtl_core.c | 1 drivers/target/iscsi/iscsi_target.c | 16 drivers/target/target_core_device.c | 17 drivers/target/target_core_sbc.c | 2 drivers/target/target_core_tmr.c | 192 ++- drivers/target/target_core_transport.c | 59 - drivers/target/tcm_fc/tfc_cmd.c | 2 drivers/thermal/mtk_thermal.c | 14 drivers/tty/n_gsm.c | 1 drivers/tty/n_hdlc.c | 1 drivers/tty/n_tty.c | 1 drivers/tty/pty.c | 1 drivers/tty/serial/8250/8250.h | 12 drivers/tty/serial/8250/8250_port.c | 16 drivers/tty/serial/fsl_lpuart.c | 2 drivers/tty/tty.h | 117 ++ drivers/tty/tty_audit.c | 1 drivers/tty/tty_baudrate.c | 1 drivers/tty/tty_buffer.c | 2 drivers/tty/tty_io.c | 5 drivers/tty/tty_ioctl.c | 46 drivers/tty/tty_jobctrl.c | 1 drivers/tty/tty_ldisc.c | 1 drivers/tty/tty_mutex.c | 1 drivers/tty/tty_port.c | 1 drivers/usb/chipidea/core.c | 2 drivers/usb/dwc3/core.c | 15 drivers/usb/dwc3/gadget.c | 11 drivers/usb/gadget/udc/renesas_usb3.c | 1 drivers/usb/gadget/udc/tegra-xudc.c | 2 drivers/usb/host/xhci-debugfs.c | 1 drivers/usb/host/xhci-rcar.c | 3 drivers/usb/mtu3/mtu3_qmu.c | 5 drivers/usb/serial/option.c | 6 drivers/watchdog/dw_wdt.c | 7 drivers/xen/pcpu.c | 20 fs/afs/inode.c | 1 fs/btrfs/block-rsv.c | 3 fs/btrfs/ctree.c | 32 fs/btrfs/ioctl.c | 5 fs/btrfs/print-tree.c | 6 fs/cifs/smb2ops.c | 2 fs/erofs/internal.h | 2 fs/erofs/zmap.c | 4 fs/ext4/acl.c | 2 fs/ext4/balloc.c | 25 fs/ext4/extents.c | 5 fs/ext4/extents_status.c | 30 fs/ext4/file.c | 4 fs/ext4/inline.c | 17 fs/ext4/inode.c | 9 fs/ext4/ioctl.c | 8 fs/ext4/mballoc.c | 6 fs/ext4/super.c | 19 fs/ext4/xattr.c | 5 fs/f2fs/compress.c | 6 fs/f2fs/data.c | 5 fs/f2fs/f2fs.h | 2 fs/f2fs/file.c | 15 fs/f2fs/namei.c | 16 fs/f2fs/segment.c | 76 - fs/f2fs/segment.h | 6 fs/f2fs/super.c | 33 fs/fs-writeback.c | 19 fs/jbd2/journal.c | 2 fs/jbd2/transaction.c | 3 fs/nfs/nfs4state.c | 4 fs/nilfs2/bmap.c | 16 fs/nilfs2/segment.c | 5 fs/notify/inotify/inotify_fsnotify.c | 11 fs/pstore/pmsg.c | 7 fs/reiserfs/xattr_security.c | 8 fs/ubifs/dir.c | 1 fs/ubifs/tnc.c | 142 +- include/asm-generic/io.h | 4 include/linux/blk-crypto.h | 4 include/linux/mailbox/zynqmp-ipi-message.h | 2 include/linux/mlx5/mlx5_ifc.h | 3 include/linux/netfilter/nfnetlink.h | 1 include/linux/nvme.h | 4 include/linux/posix-timers.h | 17 include/linux/printk.h | 19 include/linux/sunrpc/sched.h | 3 include/linux/tick.h | 2 include/linux/tty.h | 97 - include/linux/vt_buffer.h | 2 include/linux/workqueue.h | 4 include/net/netfilter/nf_tables.h | 1 include/net/scm.h | 13 include/net/xsk_buff_pool.h | 9 include/soc/bcm2835/raspberrypi-firmware.h | 8 include/target/target_core_base.h | 16 include/trace/events/qrtr.h | 33 include/trace/events/timer.h | 3 include/uapi/linux/btrfs.h | 1 include/uapi/linux/const.h | 2 include/xen/xen.h | 11 kernel/bpf/cgroup.c | 9 kernel/bpf/verifier.c | 26 kernel/events/core.c | 4 kernel/fork.c | 17 kernel/kheaders.c | 10 kernel/rcu/tree.c | 1 kernel/relay.c | 3 kernel/time/posix-cpu-timers.c | 81 + kernel/time/posix-timers.c | 4 kernel/time/tick-broadcast.c | 2 kernel/time/tick-common.c | 20 kernel/time/tick-internal.h | 1 kernel/time/tick-sched.c | 102 +- kernel/trace/ring_buffer.c | 20 kernel/workqueue.c | 67 - lib/debugobjects.c | 141 +- mm/backing-dev.c | 11 mm/page_alloc.c | 16 net/8021q/vlan_dev.c | 2 net/bluetooth/hci_sock.c | 9 net/core/skbuff.c | 3 net/ipv4/ip_output.c | 16 net/ipv6/sit.c | 8 net/ncsi/ncsi-aen.c | 1 net/netfilter/nf_tables_api.c | 20 net/netfilter/nfnetlink.c | 2 net/netfilter/nft_dynset.c | 2 net/netfilter/nft_lookup.c | 2 net/netfilter/nft_objref.c | 2 net/netlink/af_netlink.c | 75 - net/packet/af_packet.c | 32 net/packet/diag.c | 4 net/packet/internal.h | 26 net/rxrpc/sendmsg.c | 2 net/sched/act_mirred.c | 2 net/sched/cls_api.c | 1 net/sched/sch_fq.c | 6 net/sunrpc/clnt.c | 3 net/sunrpc/sched.c | 1 net/xdp/xsk_queue.h | 1 scripts/gdb/linux/clk.py | 2 scripts/gdb/linux/genpd.py | 4 scripts/gdb/linux/timerlist.py | 4 scripts/gdb/linux/utils.py | 5 security/selinux/Makefile | 4 sound/oss/dmasound/dmasound.h | 6 sound/oss/dmasound/dmasound_core.c | 26 sound/soc/codecs/es8316.c | 17 sound/soc/fsl/fsl_mqs.c | 15 sound/soc/intel/boards/bytcr_rt5640.c | 12 sound/usb/caiaq/input.c | 1 tools/bpf/bpftool/json_writer.c | 3 tools/bpf/bpftool/xlated_dumper.c | 7 tools/perf/builtin-sched.c | 2 tools/perf/pmu-events/arch/powerpc/power9/other.json | 4 tools/perf/pmu-events/arch/powerpc/power9/pipeline.json | 2 tools/perf/util/auxtrace.c | 5 tools/perf/util/intel-pt-decoder/intel-pt-decoder.c | 2 tools/perf/util/pmu.c | 2 tools/perf/util/sort.c | 3 tools/perf/util/symbol-elf.c | 2 tools/testing/selftests/bpf/prog_tests/cg_storage_multi.c | 8 tools/testing/selftests/resctrl/fill_buf.c | 2 tools/testing/selftests/resctrl/mba_test.c | 7 376 files changed, 3618 insertions(+), 2093 deletions(-)
Adam Ford (1):
drm/bridge: adv7533: Fix adv7533_mode_valid for adv7533 and adv7535
Adam Skladowski (1):
drm: msm: adreno: Disable preemption on Adreno 510
Adrian Hunter (2):
perf auxtrace: Fix address filter entire kernel size perf intel-pt: Fix CYC timestamps after standalone CBR
Akilesh Kailash (1):
dm verity: skip redundant verity_handle_err() on I/O errors
Alexander Mikhalitsyn (1):
scm: fix MSG_CTRUNC setting condition for SO_PASSSEC
Alexandre Courbot (1):
media: venus: preserve DRC state across seeks
Alexey V. Vissarionov (1):
wifi: ath6kl: minor fix for allocation size
Anastasia Belova (1):
btrfs: print-tree: parent bytenr must be aligned to sector size
Andrey Avdeev (1):
platform/x86: touchscreen_dmi: Add info for the Dexp Ursus KX210i
Andrii Nakryiko (2):
bpf: take into account liveness when propagating precision
bpf: fix precision propagation verbose logging
Andy Moreton (1):
sfc: Fix module EEPROM reporting for QSFP modules
Angelo Dureghello (1):
net: dsa: mv88e6xxx: add mv88e6321 rsvd2cpu
AngeloGioacchino Del Regno (1):
pwm: mtk-disp: Disable shadow registers before setting backlight values
Ard Biesheuvel (2):
arm64: Always load shadow stack pointer directly from the task struct
arm64: Stash shadow stack pointer in the task struct on interrupt
Arnaldo Carvalho de Melo (2):
perf sched: Cast PTHREAD_STACK_MIN to int as it may turn into sysconf(__SC_THREAD_STACK_MIN_VALUE) perf pmu: zfree() expects a pointer to a pointer to zero it after freeing its contents
Arınç ÜNAL (2):
USB: serial: option: add UNISOC vendor and TOZED LT70C product
net: dsa: mt7530: fix corrupt frames using trgmii on 40 MHz XTAL MT7621
Aurabindo Pillai (1):
drm/amd/display: Fix hang when skipping modeset
Babu Moger (1):
hwmon: (k10temp) Check range scale when CUR_TEMP register is read-write
Baokun Li (2):
writeback, cgroup: fix null-ptr-deref write in bdi_split_work_to_wbs
ext4: check iomap type only if ext4_iomap_begin() does not fail
Bitterblue Smith (1):
wifi: rtl8xxxu: RTL8192EU always needs full init
Cai Huoqing (1):
media: rcar_fdp1: Make use of the helper function devm_platform_ioremap_resource()
Chao Yu (1):
f2fs: fix to avoid use-after-free for cached IPU bio
Chia-I Wu (1):
drm/amdgpu: add a missing lock for AMDGPU_SCHED
Chris Packham (1):
hwmon: (adt7475) Use device_property APIs when configuring polarity
Christian Marangi (1):
ARM: dts: qcom: ipq8064: reduce pci IO size to 64K
Christoph Böhmwalder (1):
drbd: correctly submit flush bio on barrier
Christophe JAILLET (5):
crypto: caam - Clear some memory in instantiate_rng
dmaengine: mv_xor_v2: Fix an error code.
mailbox: zynq: Switch to flexible array to simplify code
watchdog: dw_wdt: Fix the error handling path of dw_wdt_drv_probe()
crypto: sun8i-ss - Fix a test in sun8i_ss_setup_ivs()
Christophe Leroy (1):
spi: fsl-spi: Fix CPM/QE mode Litte Endian
Chunfeng Yun (1):
usb: mtu3: fix kernel panic at qmu transfer done irq handler
Claudiu Beznea (2):
clk: at91: clk-sam9x60-pll: fix return value check
dmaengine: at_xdmac: do not enable all cyclic channels
Clément Léger (1):
clk: add missing of_node_put() in "assigned-clocks" property parsing
Cong Wang (1):
sit: update dev->needed_headroom in ipip6_tunnel_bind_dev()
Corey Minyard (1):
ipmi:ssif: Add send_retries increment
Cosmo Chou (1):
net/ncsi: clear Tx enable mode when handling a Config required AEN
Cristian Ciocaltea (1):
ASoC: es8316: Handle optional IRQ assignment
Dae R. Jeong (1):
vmci_host: fix a race condition in vmci_host_poll() causing GPF
Dai Ngo (1):
SUNRPC: remove the maximum number of retries in call_bind_status
Dan Carpenter (4):
KVM: arm64: Fix buffer overflow in kvm_arm_set_fw_reg()
wifi: ath5k: fix an off by one check in ath5k_eeprom_read_freq_list()
firmware: stratix10-svc: Fix an NULL vs IS_ERR() bug in probe RDMA/mlx4: Prevent shift wrapping in set_user_sq_size()
Daniel Borkmann (1):
bpf, sockmap: Revert buggy deadlock fix in the sockhash and sockmap
Daniel Gabay (1):
wifi: iwlwifi: yoyo: Fix possible division by zero
Daniel Vetter (1):
drm/fb-helper: set x/yres_virtual in drm_fb_helper_check_var
Daniil Dulov (1):
RDMA/siw: Fix potential page_array out of range access
Danila Chernetsov (1):
scsi: megaraid: Fix mega_cmd_done() CMDID_INT_CMDS
David Disseldorp (2):
scsi: target: Rename struct sense_info to sense_detail
scsi: target: Rename cmd.bad_sector to cmd.sense_info
David Howells (1):
rxrpc: Fix hard call timeout units
Davide Caratti (1):
net/sched: sch_fq: fix integer overflow of "credit"
Dhruva Gole (1):
spi: cadence-quadspi: fix suspend-resume implementations
Dmitry Baryshkov (1):
arm64: dts: qcom: sdm845: correct dynamic power coefficients
Dom Cobley (1):
drm/probe-helper: Cancel previous job before starting new one
Douglas Anderson (2):
regulator: core: Consistently set mutex_owner when using ww_mutex_lock_slow()
regulator: core: Avoid lockdep reports when resolving supplies
Emmanuel Grumbach (1):
wifi: iwlwifi: make the loop for card preparation effective
Eric Biggers (3):
blk-mq: release crypto keyslot before reporting I/O complete
blk-crypto: make blk_crypto_evict_key() return void
blk-crypto: make blk_crypto_evict_key() more robust
Eric Dumazet (3):
net/packet: annotate accesses to po->xmit
net/packet: convert po->origdev to an atomic flag
net/packet: convert po->auxdata to an atomic flagFedor Pchelkin (2):
wifi: ath9k: hif_usb: fix memory leak of remain_skbs
wifi: ath6kl: reduce WARN to dev_dbg() in callback
Filipe Manana (1):
btrfs: fix btrfs_prev_leaf() to not return the same key twice
Florian Fainelli (4):
media: rc: gpio-ir-recv: Fix support for wake-up scripts/gdb: bail early if there are no clocks scripts/gdb: bail early if there are no generic PD
serial: 8250: Add missing wakeup event reporting
Florian Westphal (1):
netfilter: nf_tables: don't write table validation state without mutex
Fritz Koenig (1):
media: venus: vdec: Handle DRC after drain
Gao Xiang (1):
erofs: stop parsing non-compact HEAD index if clusterofs is invalid
Gaosheng Cui (1):
phy: tegra: xusb: Add missing tegra_xusb_port_unregister for usb2_port and ulpi_port
Geert Uytterhoeven (2):
arm64: dts: renesas: r8a77990: Remove bogus voltages from OPP table
arm64: dts: renesas: r8a774c0: Remove bogus voltages from OPP table
Gencen Gan (1):
net: amd: Fix link leak when verifying config failed
Georgii Kruglov (1):
mmc: sdhci-of-esdhc: fix quirk to ignore command inhibit for data
Greg Kroah-Hartman (6):
tty: create internal tty.h file
tty: audit: move some local functions out of tty.h
tty: move some internal tty lock enums and functions out of tty.h
tty: move some tty-only functions to drivers/tty/tty.h
tty: clean include/linux/tty.h up
Linux 5.10.180
Guchun Chen (2):
drm/amdgpu/gfx: disable gfx9 cp_ecc_error_irq only when enabling legacy gfx ras drm/amdgpu: disable sdma ecc irq only when sdma RAS is enabled in suspend
H. Nikolaus Schaller (3):
ARM: dts: gta04: fix excess dma channel usage
PCI: imx6: Install the fault handler only on compatible match
leds: tca6507: Fix error handling of using fwnode_property_read_string
Hamza Mahfooz (1):
drm/amdgpu: fix an amdgpu_irq_put() issue in gmc_v9_0_hw_fini()
Hans de Goede (3):
ASoC: Intel: bytcr_rt5640: Add quirk for the Acer Iconia One 7 B1-750
ASoC: es8316: Use IRQF_NO_AUTOEN when requesting the IRQ
platform/x86: touchscreen_dmi: Add upside-down quirk for GDIX1002 ts on the Juno Tablet
Harshad Shirwadkar (1):
ext4: use ext4_journal_start/stop for fast commit transactions
Harshit Mogalapalli (1):
drm/lima/lima_drv: Add missing unwind goto in lima_pdev_probe()
Heiner Kallweit (2):
pwm: meson: Fix axg ao mux parents
pwm: meson: Fix g12a ao clk81 name
Helge Deller (1):
parisc: Fix argument pointer in real64_call_asm()
Herbert Xu (1):
crypto: drbg - Only fail when jent is unavailable in FIPS mode
Hugh Dickins (1):
ia64: fix an addr to taddr in huge_pte_offset()
Ilpo Järvinen (4):
selftests/resctrl: Return NULL if malloc_and_init_memory() did not alloc mem selftests/resctrl: Check for return value after write_schemata()
tty: Prevent writing chars during tcsetattr TCSADRAIN/FLUSH
serial: 8250: Fix serial8250_tx_empty() race with DMA Tx
Jaegeuk Kim (3):
f2fs: enforce single zone capacity
f2fs: apply zone capacity to all zone type
f2fs: fix potential corruption when moving a directory
James Cowgill (1):
drm/panel: otm8009a: Set backlight parent to panel device
Jan Kara (3):
jdb2: Don't refuse invalidation of already invalidated buffers
inotify: Avoid reporting event with invalid wd
ext4: fix data races when using cached status extents
Jeremi Piotrowski (1):
crypto: ccp - Clear PSP interrupt status register before calling handler
Jiasheng Jiang (1):
media: bdisp: Add missing check for create_workqueue
Jiaxun Yang (1):
MIPS: fw: Allow firmware to pass a empty env
Jingbo Xu (1):
erofs: fix potential overflow calculating xattr_isize
Jiri Slaby (SUSE) (1):
wireguard: timers: cast enum limits members to int in prints
Jishnu Prakash (1):
spmi: Add a check for remove callback when removing a SPMI driver
Jisoo Jang (1):
wifi: brcmfmac: slab-out-of-bounds read in brcmf_get_assoc_ies()
Jitao Shi (1):
pwm: mtk-disp: Adjust the clocks to avoid them mismatch
Joe Damato (2):
ixgbe: Allow flow hash to be set via ethtool
ixgbe: Enable setting RSS table to default values
Joel Fernandes (Google) (1):
tick/nohz: Fix cpu_is_hotpluggable() by checking with nohz subsystem
Johan Hovold (4):
USB: dwc3: fix runtime pm imbalance on probe errors
USB: dwc3: fix runtime pm imbalance on unbind
xhci: fix debugfs register accesses while suspended drm/msm/adreno: drop bogus pm_runtime_set_active()
Johannes Berg (3):
ring-buffer: Sync IRQ works before buffer destruction
wifi: iwlwifi: mvm: check firmware response size
wifi: iwlwifi: fw: fix memory leak in debugfs
John Paul Adrian Glaubitz (1):
sh: sq: Fix incorrect element size for allocating bitmap buffer
John Stultz (1):
pstore: Revert pmsg_lock back to a normal mutex
Jon Hunter (1):
usb: gadget: tegra-xudc: Fix crash in vbus_draw
Jonathan McDowell (1):
crypto: safexcel - Cleanup ring IRQ workqueues on load failure
Josef Bacik (1):
btrfs: don't free qgroup space unless specified
Kajol Jain (1):
perf vendor events power9: Remove UTF-8 characters from JSON files
Kal Conley (1):
xsk: Fix unaligned descriptor validation
Kang Chen (1):
thermal/drivers/mediatek: Use devm_of_iomap to avoid resource leak in mtk_thermal_probe
Kees Cook (1):
kheaders: Use array declaration instead of char
Keith Busch (1):
nvme: fix async event trace event
Kevin Brodsky (1):
uapi/linux/const.h: prefer ISO-friendly __typeof__
Kishon Vijay Abraham I (1):
iommu/amd: Fix "Guest Virtual APIC Table Root Pointer" configuration in IRTE
Konrad Dybcio (1):
arm64: dts: qcom: msm8998: Fix stm-stimulus-base reg name
Krzysztof Kozlowski (4):
iio: light: max44009: add missing OF device matching
rtc: omap: include header for omap_rtc_power_off_program prototype
ARM: dts: exynos: fix WM8960 clock name in Itop Elite
ARM: dts: s5pv210: correct MIPI CSIS clock name
Kuniyuki Iwashima (4):
seccomp: Move copy_seccomp() to no failure path.
netlink: Use copy_to_user() for optval in netlink_getsockopt(). tcp/udp: Fix memleaks of sk and zerocopy skbs with TX timestamp.
af_packet: Don't send zero-byte data in packet_sendmsg_spkt().
Kuppuswamy Sathyanarayanan (1):
PCI/EDR: Clear Device Status after EDR error recovery
Lai Jiangshan (1):
workqueue: Rename "delayed" (delayed by active management) to "inactive"
Lars-Peter Clausen (1):
i2c: cadence: cdns_i2c_master_xfer(): Fix runtime PM leak on error path
Laurent Pinchart (1):
media: max9286: Free control handler
Li Nan (1):
md/raid10: fix null-ptr-deref in raid10_sync_request
Liang He (1):
macintosh/windfarm_smu_sat: Add missing of_node_put()
Liliang Ye (1):
ASoC: fsl_mqs: move of_node_put() to the correct location
Lino Sanfilippo (6):
tpm, tpm_tis: Do not skip reset of original interrupt vector tpm, tpm_tis: Claim locality before writing TPM_INT_ENABLE register tpm, tpm_tis: Disable interrupts if tpm_tis_probe_irq() failed tpm, tpm_tis: Claim locality before writing interrupt registers tpm, tpm: Implement usage counter for locality
tpm, tpm_tis: Claim locality when interrupts are reenabled on resume
Liu Jian (1):
Revert "Bluetooth: btsdio: fix use after free bug in btsdio_remove due to unfinished work"
Luis Gerhorst (2):
tools: bpftool: Remove invalid \' json escape
bpf: Remove misleading spec_v1 check on var-offset stack read
Lukas Wunner (1):
PCI: pciehp: Fix AB-BA deadlock between reset_lock and device_lock
Manivannan Sadhasivam (7):
PCI: qcom: Fix the incorrect register usage in v2.7.0 config
arm64: dts: qcom: sdm845: Fix the PCI I/O port range
arm64: dts: qcom: msm8998: Fix the PCI I/O port range
arm64: dts: qcom: ipq8074: Fix the PCI I/O port range
arm64: dts: qcom: msm8996: Fix the PCI I/O port range
ARM: dts: qcom: ipq4019: Fix the PCI I/O port range
ARM: dts: qcom: ipq8064: Fix the PCI I/O port range
Marc Dionne (1):
afs: Fix updating of i_size with dv jump from server
Marco Pagani (1):
fpga: bridge: fix kernel-doc parameter description
Mark Bloch (1):
RDMA/mlx5: Fix flow counter query via DEVX
Mark Zhang (2):
RDMA/cm: Trace icm_send_rej event before the cm state is reset RDMA/mlx5: Use correct device num_ports when modify DC
Markus Elfring (1):
perf map: Delete two variable initialisations before null pointer checks in sort__sym_from_cmp()
Martin Blumenstingl (3):
wifi: rtw88: mac: Return the original error from rtw_pwr_seq_parser()
wifi: rtw88: mac: Return the original error from rtw_mac_power_switch()
rtc: meson-vrtc: Use ktime_get_real_ts64() to get the current time
Mathieu Poirier (2):
remoteproc: stm32: Call of_node_put() on iteration error
remoteproc: st: Call of_node_put() on iteration error
Matthias Schiffer (5):
mfd: tqmx86: Do not access I2C_DETECT register through io_base
mfd: tqmx86: Remove incorrect TQMx90UC board ID
mfd: tqmx86: Add support for TQMx110EB and TQMxE40x
mfd: tqmx86: Specify IO port register range more precisely
mfd: tqmx86: Correct board names for TQMxE39x
Mauro Carvalho Chehab (2):
media: rcar_fdp1: simplify error check logic at fdp_open()
media: rcar_fdp1: fix pm_runtime_get_sync() usage count
Maxim Korotkov (1):
writeback: fix call of incorrect macro
Maíra Canal (1):
drm/vgem: add missing mutex_destroy
Miaoqian Lin (3):
soc: ti: pm33xx: Fix refcount leak in am33xx_pm_probe
media: rcar_fdp1: Fix refcount leak in probe and remove function
Input: raspberrypi-ts - fix refcount leak in rpi_ts_probe
Michael Kelley (1):
nvme: handle the persistent internal error AER
Michał Krawczyk (1):
media: venus: dec: Fix handling of the start cmd
Mike Christie (3):
scsi: target: Make state_list per CPU
scsi: target: Fix multiple LUN_RESET handling
scsi: target: iscsit: Fix TAS handling during conn cleanup
Mike Marciniszyn (2):
IB/hfi1: Add AIP tx traces
IB/hfi1: Add additional usdma traces
Mike Snitzer (3):
dm clone: call kmem_cache_destroy() in dm_clone_init() error path dm integrity: call kmem_cache_destroy() in dm_integrity_init() error path dm ioctl: fix nested locking in table_clear() to remove deadlock concern
Mikulas Patocka (1):
dm flakey: fix a crash with invalid table line
Miles Chen (1):
sound/oss/dmasound: fix 'dmasound_setup' defined but not used
Ming Lei (1):
nvme-fcloop: fix "inconsistent {IN-HARDIRQ-W} -> {HARDIRQ-ON-W} usage"Minghao Chi (1):
spi: spi-imx: using pm_runtime_resume_and_get instead of pm_runtime_get_sync
Miquel Raynal (1):
of: Fix modalias string generation
Mukesh Ojha (1):
firmware: qcom_scm: Clear download bit during reboot
Muralidhara M K (1):
x86/MCE/AMD: Use an u64 for bank_map
Mårten Lindahl (1):
ubifs: Free memory for tmpfile name
Natalia Petrova (1):
RDMA/rdmavt: Delete unnecessary NULL check
Nathan Lynch (1):
powerpc/rtas: use memmove for potentially overlapping buffer copy
Nicolai Stange (1):
crypto: drbg - make drbg_prepare_hrng() handle jent instantiation errors
Nicolas Saenz Julienne (2):
firmware: raspberrypi: Introduce devm_rpi_firmware_get()
input: raspberrypi-ts: Release firmware handle when not needed
Nuno Sá (1):
staging: iio: resolver: ads1210: fix config mode
Ondrej Mosnacek (1):
selinux: fix Makefile dependencies of flask.h
Pablo Neira Ayuso (1):
netfilter: nf_tables: deactivate anonymous set from preparation phase
Paolo Bonzini (1):
KVM: x86: do not report a vCPU as preempted outside instruction boundaries
Patrick Kelsey (2):
IB/hfi1: Fix SDMA mmu_rb_node not being evicted in LRU order IB/hfi1: Fix bugs with non-PAGE_SIZE-end multi-iovec user SDMA requests
Patrik Dahlström (1):
iio: adc: palmas_gpadc: fix NULL dereference on rmmod
Paul Moore (1):
selinux: ensure av_permissions.h is built when needed
Pawel Witek (1):
cifs: fix pcchunk length type in smb2_copychunk_range
Peng Liu (1):
scripts/gdb: fix lx-timerlist for Python3
Petr Mladek (1):
workqueue: Fix hung time report of worker pools
Philipp Hortmann (1):
staging: rtl8192e: Fix W_DISABLE# does not work after stop/start
Ping Cheng (2):
HID: wacom: Set a default resolution for older tablets
HID: wacom: insert timestamp to packed Bluetooth (BT) events
Prashanth K (1):
usb: dwc3: gadget: Change condition for processing suspend event
Qinrun Dai (1):
clocksource/drivers/davinci: Fix memory leak in davinci_timer_register when init fails
Qiuxu Zhuo (1):
EDAC/skx: Fix overflows on the DRAM row address mapping arrays
Qu Wenruo (1):
btrfs: scrub: reject unsupported scrub flags
Quentin Monnet (1):
bpftool: Fix bug for long instructions in program CFG dumps
Quentin Schulz (1):
clk: rockchip: rk3399: allow clk_cifout to force clk_cifout_src to reparent
Randy Dunlap (14):
sound/oss/dmasound: fix build when drivers are mixed =y/=m
ipmi: ASPEED_BT_IPMI_BMC: select REGMAP_MMIO instead of depending on it linux/vt_buffer.h: allow either builtin or modular for macros
ia64: mm/contig: fix section mismatch warning/error
ia64: salinfo: placate defined-but-not-used warning powerpc/mpc512x: fix resource printk format warning powerpc/wii: fix resource printk format warnings powerpc/sysdev/tsi108: fix resource printk format warnings
macintosh: via-pmu-led: requires ATA to be set
leds: TI_LMU_COMMON: select REGMAP instead of depending on it
sh: math-emu: fix macro redefined warning
sh: mcount.S: fix build error when PRINTK is not enabled
sh: init: use OF_EARLY_FLATTREE for early init
sh: nmi_debug: fix return value of __setup handler
Reid Tonking (1):
i2c: omap: Fix standard mode false ACK readings
Rishabh Bhatnagar (8):
KVM: x86: Ensure PV TLB flush tracepoint reflects KVM behavior
KVM: x86: Fix recording of guest steal time / preempted status
KVM: Fix steal time asm constraints
KVM: x86: Remove obsolete disabling of page faults in kvm_arch_vcpu_put()
KVM: x86: do not set st->preempted when going back to user space
KVM: x86: revalidate steal time cache if MSR value changes
KVM: x86: do not report preemption if the steal time cache is stale
KVM: x86: move guest_pv_has out of user_access section
Rob Clark (2):
drm/rockchip: Drop unbalanced obj unref drm/msm/adreno: Defer enabling runpm until hw_init()
Roberto Sassu (1):
reiserfs: Add security prefix to xattr name in reiserfs_security_write()
Roger Pau Monne (1):
ACPI: processor: Fix evaluating _PDC method when running as Xen dom0
Ruihan Li (1):
bluetooth: Perform careful capability checks in hci_sock_ioctl()
Ruliang Lin (1):
ALSA: caiaq: input: Add error handling for unsupported input methods in snd_usb_caiaq_input_init
Ryusuke Konishi (2):
nilfs2: do not write dirty data after degenerating to read-only
nilfs2: fix infinite loop in nilfs_mdt_get_block()
Saravanan Vajravel (1):
RDMA/srpt: Add a check for valid 'mad_agent' pointer
Saurabh Sengar (1):
x86/ioapic: Don't return 0 from arch_dynirq_lower_bound()
Sean Christopherson (1):
KVM: nVMX: Emulate NOPs in L2, and PAUSE if it's not intercepted
Sebastian Andrzej Siewior (1):
tick/common: Align tick period with the HZ tick.
Sebastian Reichel (2):
net: ethernet: stmmac: dwmac-rk: fix optional phy regulator handling
power: supply: generic-adc-battery: fix unit scaling
Shannon Nelson (1):
ionic: remove noise from ethtool rxnfc error msg
Shenwei Wang (1):
tty: serial: fsl_lpuart: adjust buffer length to the intended size
Shin'ichiro Kawasaki (1):
scsi: target: core: Avoid smp_processor_id() in preemptible code
Shuchang Li (1):
scsi: lpfc: Fix ioremap issues in lpfc_sli4_pci_mem_setup()
Shunsuke Mie (2):
dmaengine: dw-edma: Fix to change for continuous transfer
dmaengine: dw-edma: Fix to enable to issue dma request on DMA processing
Simon Horman (1):
net: qrtr: correct types of trace event parameters
Stafford Horne (1):
openrisc: Properly store r31 to pt_regs on unhandled exceptions
Stanimir Varbanov (2):
media: venus: vdec: Fix non reliable setting of LAST flag
media: venus: vdec: Make decoder return LAST flag for sufficient event
Stanislav Fomichev (1):
bpf: Don't EFAULT for getsockopt with optval=NULL
Stefan Haberland (1):
s390/dasd: fix hanging blockdevice after request requeue
Stephen Boyd (1):
driver core: Don't require dynamic_debug for initcall_debug probe timing
Subbaraya Sundeep (2):
octeontx2-pf: Disable packet I/O for graceful exit
octeontx2-vf: Detach LF resources on probe cleanup
Suman Anna (1):
crypto: sa2ul - Select CRYPTO_DES
Sumit Garg (1):
arm64: kgdb: Set PSTATE.SS to 1 to re-enable single-step
Suzuki K Poulose (1):
coresight: etm_pmu: Set the module field
Tang Bin (1):
media: rcar_fdp1: Fix the correct variable assignments
Tanmay Shah (3):
mailbox: zynqmp: Fix IPI isr handling
mailbox: zynqmp: Fix typo in IPI documentation
mailbox: zynqmp: Fix counts of child nodes
Tetsuo Handa (3):
RDMA/siw: Remove namespace check from siw_netdev_event()
printk: declare printk_deferred_{enter,safe}() in include/linux/printk.h mm/page_alloc: fix potential deadlock on zonelist_update_seq seqlock
Theodore Ts'o (6):
ext4: improve error recovery code paths in __ext4_remount()
ext4: fix deadlock when converting an inline directory in nojournal mode
ext4: add bounds checking in get_max_inline_xattr_value_size()
ext4: bail out of ext4_xattr_ibody_get() fails for any reason
ext4: remove a BUG_ON in ext4_mb_release_group_pa()
ext4: fix invalid free tracking in ext4_xattr_move_to_block()
Thomas Gleixner (7):
x86/fpu: Prevent FPU state corruption
posix-cpu-timers: Implement the missing timer_wait_running callback
debugobject: Prevent init race with static objects tick/sched: Use tick_next_period for lockless quick check tick/sched: Optimize tick_do_update_jiffies64() further
tick: Get rid of tick_period
debugobject: Ensure pool refill (again)
Tian Tao (1):
drm/exynos: move to use request_irq by IRQF_NO_AUTOEN flag
Toke Høiland-Jørgensen (1):
crypto: api - Demote BUG_ON() in crypto_unregister_alg() to a WARN_ON()
Tom Rix (1):
wifi: iwlwifi: fw: move memset before early return
Tony Lindgren (1):
soc: ti: pm33xx: Enable basic PM runtime support for genpd
Trond Myklebust (1):
NFSv4.1: Always send a RECLAIM_COMPLETE after establishing lease
Tudor Ambarus (1):
ext4: avoid a potential slab-out-of-bounds in ext4_group_desc_csum
Tze-nan Wu (1):
ring-buffer: Ensure proper resetting of atomic variables in ring_buffer_reset_online_cpus
Uros Bizjak (1):
x86/apic: Fix atomic update of offset in reserve_eilvt_offset()
Uwe Kleine-König (3):
spi: imx: Don't skip cleanup in remove's error path
spi: qup: Don't skip cleanup in remove's error path
pwm: mtk-disp: Don't check the return code of pwmchip_remove()
Vadim Fedorenko (1):
vlan: partially enable SIOCSHWTSTAMP in container
Victor Nogueira (1):
net/sched: act_mirred: Add carrier check
Ville Syrjälä (1):
drm/i915: Make intel_get_crtc_new_encoder() less oopsy
Vincent Guittot (1):
arm64: dts: qcom: sdm845: correct dynamic power coefficients
Vinod Polimera (1):
drm/msm/disp/dpu: check for crtc enable rather than crtc active to release shared resources
Vitaly Kuznetsov (1):
KVM: x86: hyper-v: Avoid calling kvm_make_vcpus_request_mask() with vcpu_mask==NULL
Vlad Buslov (1):
net/sched: cls_api: remove block_cb from driver_list before freeing
Vladimir Oltean (1):
asm-generic/io.h: suppress endianness warnings for readq() and writeq()
Wang YanQing (1):
ubi: Fix return value overwrite issue in try_write_vid_and_data()
Wei Chen (2):
wifi: rtlwifi: fix incorrect error codes in rtl_debugfs_set_write_rfreg()
wifi: rtlwifi: fix incorrect error codes in rtl_debugfs_set_write_reg()
Wei Fang (1):
net: enetc: check the index of the SFI rather than the handle
Wenliang Wang (1):
virtio_net: suppress cpu stall when free_unused_bufs
William Breathitt Gray (1):
counter: 104-quad-8: Fix race condition between FLAG and CNTR reads
Wolfram Sang (1):
usb: host: xhci-rcar: remove leftover quirk handling
Xin Liu (1):
bpf, sockmap: fix deadlocks in the sockhash and sockmap
Xuan Zhuo (1):
virtio_net: split free_unused_bufs()
YAN SHI (1):
regulator: stm32-pwr: fix of_iomap leak
Yang Jihong (2):
perf/core: Fix hardlockup failure caused by perf throttle perf symbols: Fix return incorrect build_id size in elf_read_build_id()
Yangtao Li (2):
f2fs: handle dqget error in f2fs_transfer_project_quota()
f2fs: compress: fix to call f2fs_wait_on_page_writeback() in f2fs_write_raw_pages()
Ye Bin (2):
ext4: fix use-after-free read in ext4_find_extent for bigalloc + inline
ext4: fix WARNING in mb_find_extent
Yeongjin Gil (1):
dm verity: fix error handling for check_at_most_once on FEC
YiFei Zhu (1):
selftests/bpf: Wait for receive in cg_storage_multi test
Yinhao Hu (1):
usb: chipidea: fix missing goto in ci_hdrc_probe
Yu Kuai (3):
md/raid10: fix leak of 'r10bio->remaining' for recovery
md/raid10: fix memleak for 'conf->bio_split'
md/raid10: fix memleak of md threadYunfeng Ye (1):
tick/sched: Reduce seqcount held scope in tick_do_update_jiffies64()
Zhang Yuchen (1):
ipmi: fix SSIF not responding under certain cond.
Zhang Zhengming (1):
relayfs: fix out-of-bounds access in relay_file_read
Zheng Wang (5):
media: rkvdec: fix use after free bug in rkvdec_remove
media: dm1105: Fix use after free bug in dm1105_remove due to race condition
media: saa7134: fix use after free bug in saa7134_finidev due to race condition
usb: gadget: udc: renesas_usb3: Fix use after free bug in renesas_usb3_remove due to race condition
scsi: qedi: Fix use after free bug in qedi_remove()
Zheng Yejian (1):
rcu: Avoid stack overflow due to __rcu_irq_enter_check_tick() being kprobe-ed
Zhihao Cheng (2):
Revert "ubifs: dirty_cow_znode: Fix memleak in error handling path"
ubifs: Fix memleak when insert_old_idx() failed
Ziyang Xuan (1):
ipv4: Fix potential uninit variable access bug in __ip_make_skb()
Zqiang (1):
rcu: Fix missing TICK_DEP_MASK_RCU_EXP dependency check
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 10 -SUBLEVEL = 179 +SUBLEVEL = 180 EXTRAVERSION = NAME = Dare mighty things
arch/arm/boot/dts/exynos4412-itop-elite.dts +1 -1
@@ -179,7 +179,7 @@ codec: wm8960@1a { compatible = "wlf,wm8960"; reg = <0x1a>; clocks = <&pmu_system_controller 0>; - clock-names = "MCLK1"; + clock-names = "mclk"; wlf,shared-lrclk; #sound-dai-cells = <0>; };
arch/arm/boot/dts/omap3-gta04.dtsi +16 -0
@@ -609,6 +609,22 @@ &i2c3 { clock-frequency = <100000>; }; +&mcspi1 { + status = "disabled"; +}; + +&mcspi2 { + status = "disabled"; +}; + +&mcspi3 { + status = "disabled"; +}; + +&mcspi4 { + status = "disabled"; +}; + &usb_otg_hs { interface-type = <0>; usb-phy = <&usb2_phy>;
arch/arm/boot/dts/qcom-ipq4019.dtsi +2 -2
@@ -414,8 +414,8 @@ pcie0: pci@40000000 { #address-cells = <3>; #size-cells = <2>; - ranges = <0x81000000 0 0x40200000 0x40200000 0 0x00100000>, - <0x82000000 0 0x40300000 0x40300000 0 0x00d00000>; + ranges = <0x81000000 0x0 0x00000000 0x40200000 0x0 0x00100000>, + <0x82000000 0x0 0x40300000 0x40300000 0x0 0x00d00000>; interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "msi";
arch/arm/boot/dts/qcom-ipq8064.dtsi +6 -6
@@ -465,8 +465,8 @@ pcie0: pci@1b500000 { #address-cells = <3>; #size-cells = <2>; - ranges = <0x81000000 0 0x0fe00000 0x0fe00000 0 0x00100000 /* downstream I/O */ - 0x82000000 0 0x08000000 0x08000000 0 0x07e00000>; /* non-prefetchable memory */ + ranges = <0x81000000 0x0 0x00000000 0x0fe00000 0x0 0x00010000 /* I/O */ + 0x82000000 0x0 0x08000000 0x08000000 0x0 0x07e00000>; /* MEM */ interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "msi";
@@ -516,8 +516,8 @@ pcie1: pci@1b700000 { #address-cells = <3>; #size-cells = <2>; - ranges = <0x81000000 0 0x31e00000 0x31e00000 0 0x00100000 /* downstream I/O */ - 0x82000000 0 0x2e000000 0x2e000000 0 0x03e00000>; /* non-prefetchable memory */ + ranges = <0x81000000 0x0 0x00000000 0x31e00000 0x0 0x00010000 /* I/O */ + 0x82000000 0x0 0x2e000000 0x2e000000 0x0 0x03e00000>; /* MEM */ interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "msi";
@@ -567,8 +567,8 @@ pcie2: pci@1b900000 { #address-cells = <3>; #size-cells = <2>; - ranges = <0x81000000 0 0x35e00000 0x35e00000 0 0x00100000 /* downstream I/O */ - 0x82000000 0 0x32000000 0x32000000 0 0x03e00000>; /* non-prefetchable memory */ + ranges = <0x81000000 0x0 0x00000000 0x35e00000 0x0 0x00010000 /* I/O */ + 0x82000000 0x0 0x32000000 0x32000000 0x0 0x03e00000>; /* MEM */ interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "msi";
arch/arm/boot/dts/s5pv210.dtsi +1 -1
@@ -583,7 +583,7 @@ csis0: csis@fa600000 { interrupts = <29>; clocks = <&clocks CLK_CSIS>, <&clocks SCLK_CSIS>; - clock-names = "clk_csis", + clock-names = "csis", "sclk_csis"; bus-width = <4>; status = "disabled";
arch/arm64/boot/dts/qcom/ipq8074.dtsi +4 -8
@@ -609,10 +609,8 @@ pcie1: pci@10000000 { phys = <&pcie_phy1>; phy-names = "pciephy"; - ranges = <0x81000000 0 0x10200000 0x10200000 - 0 0x10000>, /* downstream I/O */ - <0x82000000 0 0x10220000 0x10220000 - 0 0xfde0000>; /* non-prefetchable memory */ + ranges = <0x81000000 0x0 0x00000000 0x10200000 0x0 0x10000>, /* I/O */ + <0x82000000 0x0 0x10220000 0x10220000 0x0 0xfde0000>; /* MEM */ interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "msi";
@@ -673,10 +671,8 @@ pcie0: pci@20000000 { phys = <&pcie_phy0>; phy-names = "pciephy"; - ranges = <0x81000000 0 0x20200000 0x20200000 - 0 0x10000>, /* downstream I/O */ - <0x82000000 0 0x20220000 0x20220000 - 0 0xfde0000>; /* non-prefetchable memory */ + ranges = <0x81000000 0x0 0x00000000 0x20200000 0x0 0x10000>, /* I/O */ + <0x82000000 0x0 0x20220000 0x20220000 0x0 0xfde0000>; /* MEM */ interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "msi";
arch/arm64/boot/dts/qcom/msm8996.dtsi +6 -6
@@ -744,8 +744,8 @@ pcie0: pcie@600000 { #address-cells = <3>; #size-cells = <2>; - ranges = <0x01000000 0x0 0x0c200000 0x0c200000 0x0 0x100000>, - <0x02000000 0x0 0x0c300000 0x0c300000 0x0 0xd00000>; + ranges = <0x01000000 0x0 0x00000000 0x0c200000 0x0 0x100000>, + <0x02000000 0x0 0x0c300000 0x0c300000 0x0 0xd00000>; interrupts = <GIC_SPI 405 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "msi";
@@ -796,8 +796,8 @@ pcie1: pcie@608000 { #address-cells = <3>; #size-cells = <2>; - ranges = <0x01000000 0x0 0x0d200000 0x0d200000 0x0 0x100000>, - <0x02000000 0x0 0x0d300000 0x0d300000 0x0 0xd00000>; + ranges = <0x01000000 0x0 0x00000000 0x0d200000 0x0 0x100000>, + <0x02000000 0x0 0x0d300000 0x0d300000 0x0 0xd00000>; interrupts = <GIC_SPI 413 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "msi";
@@ -845,8 +845,8 @@ pcie2: pcie@610000 { #address-cells = <3>; #size-cells = <2>; - ranges = <0x01000000 0x0 0x0e200000 0x0e200000 0x0 0x100000>, - <0x02000000 0x0 0x0e300000 0x0e300000 0x0 0x1d00000>; + ranges = <0x01000000 0x0 0x00000000 0x0e200000 0x0 0x100000>, + <0x02000000 0x0 0x0e300000 0x0e300000 0x0 0x1d00000>; device_type = "pci";
arch/arm64/boot/dts/qcom/msm8998.dtsi +2 -2
@@ -942,7 +942,7 @@ pcie0: pci@1c00000 { phys = <&pciephy>; phy-names = "pciephy"; - ranges = <0x01000000 0x0 0x1b200000 0x1b200000 0x0 0x100000>, + ranges = <0x01000000 0x0 0x00000000 0x1b200000 0x0 0x100000>, <0x02000000 0x0 0x1b300000 0x1b300000 0x0 0xd00000>; #interrupt-cells = <1>;
@@ -1187,7 +1187,7 @@ stm: stm@6002000 { compatible = "arm,coresight-stm", "arm,primecell"; reg = <0x06002000 0x1000>, <0x16280000 0x180000>; - reg-names = "stm-base", "stm-data-base"; + reg-names = "stm-base", "stm-stimulus-base"; status = "disabled"; clocks = <&rpmcc RPM_SMD_QDSS_CLK>, <&rpmcc RPM_SMD_QDSS_A_CLK>;
arch/arm64/boot/dts/qcom/sdm845.dtsi +15 -15
@@ -196,8 +196,8 @@ CPU0: cpu@0 { cpu-idle-states = <&LITTLE_CPU_SLEEP_0 &LITTLE_CPU_SLEEP_1 &CLUSTER_SLEEP_0>; - capacity-dmips-mhz = <607>; - dynamic-power-coefficient = <100>; + capacity-dmips-mhz = <611>; + dynamic-power-coefficient = <154>; qcom,freq-domain = <&cpufreq_hw 0>; operating-points-v2 = <&cpu0_opp_table>; interconnects = <&gladiator_noc MASTER_APPSS_PROC 3 &mem_noc SLAVE_EBI1 3>,
@@ -221,8 +221,8 @@ CPU1: cpu@100 { cpu-idle-states = <&LITTLE_CPU_SLEEP_0 &LITTLE_CPU_SLEEP_1 &CLUSTER_SLEEP_0>; - capacity-dmips-mhz = <607>; - dynamic-power-coefficient = <100>; + capacity-dmips-mhz = <611>; + dynamic-power-coefficient = <154>; qcom,freq-domain = <&cpufreq_hw 0>; operating-points-v2 = <&cpu0_opp_table>; interconnects = <&gladiator_noc MASTER_APPSS_PROC 3 &mem_noc SLAVE_EBI1 3>,
@@ -243,8 +243,8 @@ CPU2: cpu@200 { cpu-idle-states = <&LITTLE_CPU_SLEEP_0 &LITTLE_CPU_SLEEP_1 &CLUSTER_SLEEP_0>; - capacity-dmips-mhz = <607>; - dynamic-power-coefficient = <100>; + capacity-dmips-mhz = <611>; + dynamic-power-coefficient = <154>; qcom,freq-domain = <&cpufreq_hw 0>; operating-points-v2 = <&cpu0_opp_table>; interconnects = <&gladiator_noc MASTER_APPSS_PROC 3 &mem_noc SLAVE_EBI1 3>,
@@ -265,8 +265,8 @@ CPU3: cpu@300 { cpu-idle-states = <&LITTLE_CPU_SLEEP_0 &LITTLE_CPU_SLEEP_1 &CLUSTER_SLEEP_0>; - capacity-dmips-mhz = <607>; - dynamic-power-coefficient = <100>; + capacity-dmips-mhz = <611>; + dynamic-power-coefficient = <154>; qcom,freq-domain = <&cpufreq_hw 0>; operating-points-v2 = <&cpu0_opp_table>; interconnects = <&gladiator_noc MASTER_APPSS_PROC 3 &mem_noc SLAVE_EBI1 3>,
@@ -288,7 +288,7 @@ CPU4: cpu@400 { cpu-idle-states = <&BIG_CPU_SLEEP_0 &BIG_CPU_SLEEP_1 &CLUSTER_SLEEP_0>; - dynamic-power-coefficient = <396>; + dynamic-power-coefficient = <442>; qcom,freq-domain = <&cpufreq_hw 1>; operating-points-v2 = <&cpu4_opp_table>; interconnects = <&gladiator_noc MASTER_APPSS_PROC 3 &mem_noc SLAVE_EBI1 3>,
@@ -310,7 +310,7 @@ CPU5: cpu@500 { cpu-idle-states = <&BIG_CPU_SLEEP_0 &BIG_CPU_SLEEP_1 &CLUSTER_SLEEP_0>; - dynamic-power-coefficient = <396>; + dynamic-power-coefficient = <442>; qcom,freq-domain = <&cpufreq_hw 1>; operating-points-v2 = <&cpu4_opp_table>; interconnects = <&gladiator_noc MASTER_APPSS_PROC 3 &mem_noc SLAVE_EBI1 3>,
@@ -332,7 +332,7 @@ CPU6: cpu@600 { cpu-idle-states = <&BIG_CPU_SLEEP_0 &BIG_CPU_SLEEP_1 &CLUSTER_SLEEP_0>; - dynamic-power-coefficient = <396>; + dynamic-power-coefficient = <442>; qcom,freq-domain = <&cpufreq_hw 1>; operating-points-v2 = <&cpu4_opp_table>; interconnects = <&gladiator_noc MASTER_APPSS_PROC 3 &mem_noc SLAVE_EBI1 3>,
@@ -354,7 +354,7 @@ CPU7: cpu@700 { cpu-idle-states = <&BIG_CPU_SLEEP_0 &BIG_CPU_SLEEP_1 &CLUSTER_SLEEP_0>; - dynamic-power-coefficient = <396>; + dynamic-power-coefficient = <442>; qcom,freq-domain = <&cpufreq_hw 1>; operating-points-v2 = <&cpu4_opp_table>; interconnects = <&gladiator_noc MASTER_APPSS_PROC 3 &mem_noc SLAVE_EBI1 3>,
@@ -1816,8 +1816,8 @@ pcie0: pci@1c00000 { #address-cells = <3>; #size-cells = <2>; - ranges = <0x01000000 0x0 0x60200000 0 0x60200000 0x0 0x100000>, - <0x02000000 0x0 0x60300000 0 0x60300000 0x0 0xd00000>; + ranges = <0x01000000 0x0 0x00000000 0x0 0x60200000 0x0 0x100000>, + <0x02000000 0x0 0x60300000 0x0 0x60300000 0x0 0xd00000>; interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "msi";
@@ -1920,7 +1920,7 @@ pcie1: pci@1c08000 { #address-cells = <3>; #size-cells = <2>; - ranges = <0x01000000 0x0 0x40200000 0x0 0x40200000 0x0 0x100000>, + ranges = <0x01000000 0x0 0x00000000 0x0 0x40200000 0x0 0x100000>, <0x02000000 0x0 0x40300000 0x0 0x40300000 0x0 0x1fd00000>; interrupts = <GIC_SPI 307 IRQ_TYPE_EDGE_RISING>;
arch/arm64/boot/dts/renesas/r8a774c0.dtsi +0 -3
@@ -49,17 +49,14 @@ cluster1_opp: opp_table10 { opp-shared; opp-800000000 { opp-hz = /bits/ 64 <800000000>; - opp-microvolt = <820000>; clock-latency-ns = <300000>; }; opp-1000000000 { opp-hz = /bits/ 64 <1000000000>; - opp-microvolt = <820000>; clock-latency-ns = <300000>; }; opp-1200000000 { opp-hz = /bits/ 64 <1200000000>; - opp-microvolt = <820000>; clock-latency-ns = <300000>; opp-suspend; };
arch/arm64/boot/dts/renesas/r8a77990.dtsi +0 -3
@@ -60,17 +60,14 @@ cluster1_opp: opp_table10 { opp-shared; opp-800000000 { opp-hz = /bits/ 64 <800000000>; - opp-microvolt = <820000>; clock-latency-ns = <300000>; }; opp-1000000000 { opp-hz = /bits/ 64 <1000000000>; - opp-microvolt = <820000>; clock-latency-ns = <300000>; }; opp-1200000000 { opp-hz = /bits/ 64 <1200000000>; - opp-microvolt = <820000>; clock-latency-ns = <300000>; opp-suspend; };
arch/arm64/include/asm/debug-monitors.h +1 -0
@@ -116,6 +116,7 @@ void user_regs_reset_single_step(struct user_pt_regs *regs,void kernel_enable_single_step (struct pt_regs *regs);void kernel_disable_single_step (void );int kernel_active_single_step (void ); +void kernel_rewind_single_step (struct pt_regs *regs);#ifdef CONFIG_HAVE_HW_BREAKPOINT int reinstall_suspended_bps (struct pt_regs *regs);
arch/arm64/include/asm/scs.h +4 -3
@@ -9,15 +9,16 @@#ifdef CONFIG_SHADOW_CALL_STACK scs_sp .req x18 - .macro scs_load tsk, tmp - ldr scs_sp, [\tsk, #TSK_TI_SCS_SP] + .macro scs_load_current + get_current_task scs_sp + ldr scs_sp, [scs_sp, #TSK_TI_SCS_SP] .endm .macro scs_save tsk, tmp str scs_sp, [\tsk, #TSK_TI_SCS_SP] .endm #else - .macro scs_load tsk, tmp + .macro scs_load_current .endm .macro scs_save tsk, tmp
arch/arm64/kernel/debug-monitors.c +5 -0
@@ -439,6 +439,11 @@ int kernel_active_single_step(void) }NOKPROBE_SYMBOL (kernel_active_single_step); +void kernel_rewind_single_step (struct pt_regs *regs) +{ +set_regs_spsr_ss (regs); +} +/* ptrace API */ void user_enable_single_step (struct task_struct *task) {
arch/arm64/kernel/entry.S +4 -8
@@ -221,7 +221,7 @@ alternative_else_nop_endif ptrauth_keys_install_kernel tsk, x20, x22, x23 - scs_load tsk, x20 + scs_load_current .else add x21, sp, #S_FRAME_SIZE get_current_task tsk
@@ -431,9 +431,7 @@ SYM_CODE_END(__swpan_exit_el0) .macro irq_stack_entry mov x19, sp // preserve the original sp -#ifdef CONFIG_SHADOW_CALL_STACK - mov x24, scs_sp // preserve the original shadow stack -#endif + scs_save tsk // preserve the original shadow stack /* * Compare sp with the base of the task stack.
@@ -467,9 +465,7 @@ SYM_CODE_END(__swpan_exit_el0) */ .macro irq_stack_exit mov sp, x19 -#ifdef CONFIG_SHADOW_CALL_STACK - mov scs_sp, x24 -#endif + scs_load_current .endm /* GPRs used by entry code */
@@ -1025,7 +1021,7 @@ SYM_FUNC_START(cpu_switch_to) msr sp_el0, x1 ptrauth_keys_install_kernel x1, x8, x9, x10 scs_save x0, x8 - scs_load x1, x8 + scs_load_current ret SYM_FUNC_END(cpu_switch_to) NOKPROBE(cpu_switch_to)
arch/arm64/kernel/head.S +1 -1
@@ -747,7 +747,7 @@ SYM_FUNC_START_LOCAL(__secondary_switched) ldr x2, [x0, #CPU_BOOT_TASK] cbz x2, __secondary_too_slow msr sp_el0, x2 - scs_load x2, x3 + scs_load_current mov x29, #0 mov x30, #0
arch/arm64/kernel/kgdb.c +2 -0
@@ -223,6 +223,8 @@ int kgdb_arch_handle_exception(int exception_vector, int signo,*/ if (!kernel_active_single_step ())kernel_enable_single_step (linux_regs); +else +kernel_rewind_single_step (linux_regs); err =0 ;break ;default :
arch/arm64/kvm/psci.c +2 -0
@@ -499,6 +499,8 @@ int kvm_arm_set_fw_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)u64 val;int wa_level; +if (KVM_REG_SIZE (reg->id) !=sizeof (val)) +return -ENOENT ;if (copy_from_user (&val, uaddr,KVM_REG_SIZE (reg->id)))return -EFAULT ;
arch/ia64/kernel/salinfo.c +1 -1
@@ -581,7 +581,7 @@ static int salinfo_cpu_pre_down(unsigned int cpu)* 'data' contains an integer that corresponds to the feature we're * testing */ -static int proc_salinfo_show (struct seq_file *m,void *v) +static int __maybe_unused proc_salinfo_show (struct seq_file *m,void *v) {unsigned long data = (unsigned long )v;seq_puts (m, (sal_platform_features & data) ?"1\n" :"0\n" );
arch/ia64/mm/contig.c +1 -1
@@ -79,7 +79,7 @@ void *per_cpu_init(void)return __per_cpu_start + __per_cpu_offset[smp_processor_id ()]; } -static inline void +static inline __init void alloc_per_cpu_data (void ) {size_t size =PERCPU_PAGE_SIZE *num_possible_cpus ();
arch/ia64/mm/hugetlbpage.c +1 -1
@@ -57,7 +57,7 @@ huge_pte_offset (struct mm_struct *mm, unsigned long addr, unsigned long sz) pgd =pgd_offset (mm, taddr);if (pgd_present (*pgd)) { - p4d =p4d_offset (pgd, addr); + p4d =p4d_offset (pgd, taddr);if (p4d_present (*p4d)) { pud =pud_offset (p4d, taddr);if (pud_present (*pud)) {
arch/mips/fw/lib/cmdline.c +1 -1
@@ -53,7 +53,7 @@ char *fw_getenv(char *envname) {char *result =NULL ; -if (_fw_envp !=NULL ) { +if (_fw_envp !=NULL &&fw_envp (0 ) !=NULL ) {/* * Return a pointer to the given environment variable. * YAMON uses "name", "value" pairs, while U-Boot uses
arch/openrisc/kernel/entry.S +2 -4
@@ -173,7 +173,6 @@ handler: ;\ l.sw PT_GPR28(r1),r28 ;\ l.sw PT_GPR29(r1),r29 ;\ /* r30 already save */ ;\ -/* l.sw PT_GPR30(r1),r30*/ ;\ l.sw PT_GPR31(r1),r31 ;\ TRACE_IRQS_OFF_ENTRY ;\ /* Store -1 in orig_gpr11 for non-syscall exceptions */ ;\
@@ -211,9 +210,8 @@ handler: ;\ l.sw PT_GPR27(r1),r27 ;\ l.sw PT_GPR28(r1),r28 ;\ l.sw PT_GPR29(r1),r29 ;\ - /* r31 already saved */ ;\ - l.sw PT_GPR30(r1),r30 ;\ -/* l.sw PT_GPR31(r1),r31 */ ;\ + /* r30 already saved */ ;\ + l.sw PT_GPR31(r1),r31 ;\ /* Store -1 in orig_gpr11 for non-syscall exceptions */ ;\ l.addi r30,r0,-1 ;\ l.sw PT_ORIG_GPR11(r1),r30 ;\
arch/parisc/kernel/real2.S +2 -3
@@ -248,9 +248,6 @@ ENTRY_CFI(real64_call_asm) /* save fn */ copy %arg2, %r31 - /* set up the new ap */ - ldo 64(%arg1), %r29 - /* load up the arg registers from the saved arg area */ /* 32-bit calling convention passes first 4 args in registers */ ldd 0*REG_SZ(%arg1), %arg0 /* note overwriting arg0 */
@@ -262,7 +259,9 @@ ENTRY_CFI(real64_call_asm) ldd 7*REG_SZ(%arg1), %r19 ldd 1*REG_SZ(%arg1), %arg1 /* do this one last! */ + /* set up real-mode stack and real-mode ap */ tophys_r1 %sp + ldo -16(%sp), %r29 /* Reference param save area */ b,l rfi_virt2real,%r2 nop
arch/powerpc/kernel/rtas.c +1 -1
@@ -399,7 +399,7 @@ static char *__fetch_rtas_last_error(char *altbuf) buf =kmalloc (RTAS_ERROR_LOG_MAX ,GFP_ATOMIC ); }if (buf) -memcpy (buf, rtas_err_buf,RTAS_ERROR_LOG_MAX ); +memmove (buf, rtas_err_buf,RTAS_ERROR_LOG_MAX ); }return buf;
arch/powerpc/platforms/512x/clock-commonclk.c +1 -1
@@ -984,7 +984,7 @@ static void mpc5121_clk_provide_migration_support(void)#define NODE_PREP do { \ of_address_to_resource(np, 0, &res); \ - snprintf(devname, sizeof(devname), "%08x.%s", res.start, np->name); \ + snprintf(devname, sizeof(devname), "%pa.%s", &res.start, np->name); \ } while (0)#define NODE_CHK (clkname, clkitem, regnode, regflag) do { \
arch/powerpc/platforms/embedded6xx/flipper-pic.c +1 -1
@@ -144,7 +144,7 @@ static struct irq_domain * __init flipper_pic_init(struct device_node *np) } io_base =ioremap (res.start,resource_size (&res)); -pr_info ("controller at 0x%08x mapped to 0x%p\n" , res.start, io_base); +pr_info ("controller at 0x%pa mapped to 0x%p\n" , &res.start, io_base);__flipper_quiesce (io_base);
arch/powerpc/platforms/embedded6xx/hlwd-pic.c +1 -1
@@ -173,7 +173,7 @@ static struct irq_domain *hlwd_pic_init(struct device_node *np)return NULL ; } -pr_info ("controller at 0x%08x mapped to 0x%p\n" , res.start, io_base); +pr_info ("controller at 0x%pa mapped to 0x%p\n" , &res.start, io_base);__hlwd_quiesce (io_base);
arch/powerpc/platforms/embedded6xx/wii.c +2 -2
@@ -89,8 +89,8 @@ static void __iomem *wii_ioremap_hw_regs(char *name, char *compatible) hw_regs =ioremap (res.start,resource_size (&res));if (hw_regs) { -pr_info ("%s at 0x%08x mapped to 0x%p\n" , name, - res.start, hw_regs); +pr_info ("%s at 0x%pa mapped to 0x%p\n" , name, + &res.start, hw_regs); } out_put:
arch/powerpc/sysdev/tsi108_pci.c +2 -3
@@ -216,9 +216,8 @@ int __init tsi108_setup_pci(struct device_node *dev, u32 cfg_phys, int primary) (hose)->ops = &tsi108_direct_pci_ops; -printk (KERN_INFO "Found tsi108 PCI host bridge at 0x%08x. " -"Firmware bus number: %d->%d\n" , - rsrc.start, hose->first_busno, hose->last_busno); +pr_info ("Found tsi108 PCI host bridge at 0x%pa. Firmware bus number: %d->%d\n" , + &rsrc.start, hose->first_busno, hose->last_busno);/* Interpret the "ranges" property */ /* This also maps the I/O region and sets isa_io/mem_base */
arch/sh/Kconfig.debug +1 -1
@@ -18,7 +18,7 @@ config SH_STANDARD_BIOS config STACK_DEBUG bool "Check for stack overflows" - depends on DEBUG_KERNEL + depends on DEBUG_KERNEL && PRINTK help This option will cause messages to be printed if free stack space drops below a certain limit. Saying Y here will add overhead to
arch/sh/kernel/cpu/sh4/sq.c +1 -1
@@ -381,7 +381,7 @@ static int __init sq_api_init(void)if (unlikely (!sq_cache))return ret; - sq_bitmap =kzalloc (size,GFP_KERNEL ); + sq_bitmap =kcalloc (size,sizeof (long ),GFP_KERNEL );if (unlikely (!sq_bitmap)) goto out;
arch/sh/kernel/head_32.S +3 -3
@@ -64,7 +64,7 @@ ENTRY(_stext) ldc r0, r6_bank #endif -#ifdef CONFIG_OF_FLATTREE +#ifdef CONFIG_OF_EARLY_FLATTREE mov r4, r12 ! Store device tree blob pointer in r12 #endif
@@ -315,7 +315,7 @@ ENTRY(_stext) 10: #endif -#ifdef CONFIG_OF_FLATTREE +#ifdef CONFIG_OF_EARLY_FLATTREE mov.l 8f, r0 ! Make flat device tree available early. jsr @r0 mov r12, r4
@@ -346,7 +346,7 @@ ENTRY(stack_start) 5: .long start_kernel 6: .long cpu_init 7: .long init_thread_union -#if defined(CONFIG_OF_FLATTREE) +#if defined(CONFIG_OF_EARLY_FLATTREE) 8: .long sh_fdt_init #endif
arch/sh/kernel/nmi_debug.c +2 -2
@@ -49,7 +49,7 @@ static int __init nmi_debug_setup(char *str)register_die_notifier (&nmi_debug_nb);if (*str !='=' ) -return 0 ; +return 1 ;for (p = str +1 ; *p; p = sep +1 ) { sep =strchr (p,',' );
@@ -70,6 +70,6 @@ static int __init nmi_debug_setup(char *str)break ; } -return 0 ; +return 1 ; }__setup ("nmi_debug" , nmi_debug_setup);
arch/sh/kernel/setup.c +2 -2
@@ -244,7 +244,7 @@ void __init __weak plat_early_device_setup(void) { } -#ifdef CONFIG_OF_FLATTREE +#ifdef CONFIG_OF_EARLY_FLATTREE void __ref sh_fdt_init (phys_addr_t dt_phys) {static int done =0 ;
@@ -329,7 +329,7 @@ void __init setup_arch(char **cmdline_p)/* Let earlyprintk output early console messages */ sh_early_platform_driver_probe ("earlyprintk" ,1 ,1 ); -#ifdef CONFIG_OF_FLATTREE +#ifdef CONFIG_OF_EARLY_FLATTREE #ifdef CONFIG_USE_BUILTIN_DTB unflatten_and_copy_device_tree ();#else
arch/sh/math-emu/sfp-util.h +0 -4
@@ -67,7 +67,3 @@ } while (0)#define abort () return 0 - -#define __BYTE_ORDER __LITTLE_ENDIAN - -
arch/x86/include/asm/kvm_host.h +4 -1
@@ -553,6 +553,7 @@ struct kvm_vcpu_arch {u64 ia32_misc_enable_msr;u64 smbase;u64 smi_count; +bool at_instruction_boundary;bool tpr_access_reporting;bool xsaves_enabled;u64 ia32_xss;
@@ -663,7 +664,7 @@ struct kvm_vcpu_arch {u8 preempted;u64 msr_val;u64 last_steal; -struct gfn_to_pfn_cache cache; +struct gfn_to_hva_cache cache; } st;u64 l1_tsc_offset;
@@ -1061,6 +1062,8 @@ struct kvm_vcpu_stat {u64 req_event;u64 halt_poll_success_ns;u64 halt_poll_fail_ns; +u64 preemption_reported; +u64 preemption_other; };struct x86_instruction_info ;
arch/x86/kernel/apic/apic.c +2 -3
@@ -410,10 +410,9 @@ static unsigned int reserve_eilvt_offset(int offset, unsigned int new)if (vector && !eilvt_entry_is_changeable (vector, new))/* may not change if vectors are different */ return rsvd; - rsvd =atomic_cmpxchg (&eilvt_offsets[offset], rsvd, new); - }while (rsvd != new); + }while (!atomic_try_cmpxchg (&eilvt_offsets[offset], &rsvd, new)); - rsvd &= ~APIC_EILVT_MASKED ; + rsvd = new & ~APIC_EILVT_MASKED ;if (rsvd && rsvd != vector)pr_info ("LVT offset %d assigned for vector 0x%02x\n" , offset, rsvd);
arch/x86/kernel/apic/io_apic.c +9 -5
@@ -2442,17 +2442,21 @@ static int io_apic_get_redir_entries(int ioapic)unsigned int arch_dynirq_lower_bound (unsigned int from) { +unsigned int ret; +/* * dmar_alloc_hwirq() may be called before setup_IO_APIC(), so use * gsi_top if ioapic_dynirq_base hasn't been initialized yet. */ -if (!ioapic_initialized) -return gsi_top; + ret = ioapic_dynirq_base ? : gsi_top; +/* -* For DT enabled machines ioapic_dynirq_base is irrelevant and not -* updated. So simply return @from if ioapic_dynirq_base == 0. +* For DT enabled machines ioapic_dynirq_base is irrelevant and +* always 0. gsi_top can be 0 if there is no IO/APIC registered. +* 0 is an invalid interrupt number for dynamic allocations. Return +* @from instead. */ -return ioapic_dynirq_base ? : from; +return ret ? : from; }#ifdef CONFIG_X86_32
arch/x86/kernel/cpu/mce/amd.c +7 -7
@@ -197,10 +197,10 @@ static DEFINE_PER_CPU(struct threshold_bank **, threshold_banks);* A list of the banks enabled on each logical CPU. Controls which respective * descriptors to initialize later in mce_threshold_create_device(). */ -static DEFINE_PER_CPU(unsigned int, bank_map); +static DEFINE_PER_CPU(u64, bank_map);/* Map of banks that have more than MCA_MISC0 available. */ -static DEFINE_PER_CPU(u32, smca_misc_banks_map); +static DEFINE_PER_CPU(u64, smca_misc_banks_map);static void amd_threshold_interrupt (void );static void amd_deferred_error_interrupt (void );
@@ -229,7 +229,7 @@ static void smca_set_misc_banks_map(unsigned int bank, unsigned int cpu)return ;if (low &MASK_BLKPTR_LO ) -per_cpu (smca_misc_banks_map, cpu) |=BIT (bank); +per_cpu (smca_misc_banks_map, cpu) |=BIT_ULL (bank); }
@@ -492,7 +492,7 @@ static u32 smca_get_block_address(unsigned int bank, unsigned int block,if (!block)return MSR_AMD64_SMCA_MCx_MISC (bank); -if (!(per_cpu (smca_misc_banks_map, cpu) &BIT (bank))) +if (!(per_cpu (smca_misc_banks_map, cpu) &BIT_ULL (bank)))return 0 ;return MSR_AMD64_SMCA_MCx_MISCy (bank, block -1 );
@@ -536,7 +536,7 @@ prepare_threshold_block(unsigned int bank, unsigned int block, u32 addr,int new;if (!block) -per_cpu (bank_map, cpu) |= (1 << bank); +per_cpu (bank_map, cpu) |=BIT_ULL (bank);memset (&b,0 ,sizeof (b)); b.cpu = cpu;
@@ -1048,7 +1048,7 @@ static void amd_threshold_interrupt(void)return ;for (bank =0 ; bank <this_cpu_read (mce_num_banks); ++bank) { -if (!(per_cpu (bank_map, cpu) & (1 << bank))) +if (!(per_cpu (bank_map, cpu) &BIT_ULL (bank)))continue ; first_block = bp[bank]->blocks;
@@ -1525,7 +1525,7 @@ int mce_threshold_create_device(unsigned int cpu)return -ENOMEM ;for (bank =0 ; bank < numbanks; ++bank) { -if (!(this_cpu_read (bank_map) & (1 << bank))) +if (!(this_cpu_read (bank_map) &BIT_ULL (bank)))continue ; err =threshold_create_bank (bp, cpu, bank);if (err) {
arch/x86/kernel/fpu/core.c +26 -41
85 lines not on this page · raw message
arch/x86/kvm/hyperv.c +9 -6
@@ -1562,16 +1562,19 @@ static u64 kvm_hv_flush_tlb(struct kvm_vcpu *current_vcpu, u64 ingpa,cpumask_clear (&hv_vcpu->tlb_flush); - vcpu_mask = all_cpus ?NULL : -sparse_set_to_vcpu_mask (kvm, sparse_banks, valid_bank_mask, - vp_bitmap, vcpu_bitmap); -/* * vcpu->arch.cr3 may not be up-to-date for running vCPUs so we can't * analyze it here, flush TLB regardless of the specified address space. */ -kvm_make_vcpus_request_mask (kvm,KVM_REQ_TLB_FLUSH_GUEST , -NULL , vcpu_mask, &hv_vcpu->tlb_flush); +if (all_cpus) { +kvm_make_all_cpus_request (kvm,KVM_REQ_TLB_FLUSH_GUEST ); + }else { + vcpu_mask =sparse_set_to_vcpu_mask (kvm, sparse_banks, valid_bank_mask, + vp_bitmap, vcpu_bitmap); + +kvm_make_vcpus_request_mask (kvm,KVM_REQ_TLB_FLUSH_GUEST , +NULL , vcpu_mask, &hv_vcpu->tlb_flush); + } ret_success:/* We always do full TLB flush, set rep_done = rep_cnt. */
arch/x86/kvm/svm/svm.c +2 -0
@@ -3983,6 +3983,8 @@ static int svm_check_intercept(struct kvm_vcpu *vcpu,static void svm_handle_exit_irqoff (struct kvm_vcpu *vcpu) { +if (to_svm (vcpu)->vmcb->control.exit_code ==SVM_EXIT_INTR ) + vcpu->arch.at_instruction_boundary = true; }static void svm_sched_in (struct kvm_vcpu *vcpu,int cpu)
arch/x86/kvm/vmx/vmx.c +16 -0
@@ -6510,6 +6510,7 @@ static void handle_external_interrupt_irqoff(struct kvm_vcpu *vcpu)return ;handle_interrupt_nmi_irqoff (vcpu,gate_offset (desc)); + vcpu->arch.at_instruction_boundary = true; }static void vmx_handle_exit_irqoff (struct kvm_vcpu *vcpu)
@@ -7536,6 +7537,21 @@ static int vmx_check_intercept(struct kvm_vcpu *vcpu,/* FIXME: produce nested vmexit and return X86EMUL_INTERCEPTED. */ break ; +case x86_intercept_pause: +/* +* PAUSE is a single-byte NOP with a REPE prefix, i.e. collides +* with vanilla NOPs in the emulator. Apply the interception +* check only to actual PAUSE instructions. Don't check +* PAUSE-loop-exiting, software can't expect a given PAUSE to +* exit, i.e. KVM is within its rights to allow L2 to execute +* the PAUSE. +*/ +if ((info->rep_prefix !=REPE_PREFIX ) || + !nested_cpu_has2 (vmcs12,CPU_BASED_PAUSE_EXITING )) +return X86EMUL_CONTINUE ; + +break ; +/* TODO: check more intercepts... */ default :break ;
arch/x86/kvm/x86.c +115 -49
240 lines not on this page · raw message
block/blk-core.c +7 -0
@@ -1444,6 +1444,13 @@ bool blk_update_request(struct request *req, blk_status_t error, req->q->integrity.profile->complete_fn (req, nr_bytes);#endif +/* +* Upper layers may call blk_crypto_evict_key() anytime after the last +* bio_endio(). Therefore, the keyslot must be released before that. +*/ +if (blk_crypto_rq_has_keyslot (req) && nr_bytes >=blk_rq_bytes (req)) +__blk_crypto_rq_put_keyslot (req); +if (unlikely (error && !blk_rq_is_passthrough (req) && !(req->rq_flags &RQF_QUIET )))print_req_error (req, error, __func__);
block/blk-crypto-internal.h +21 -4
@@ -60,6 +60,11 @@ static inline bool blk_crypto_rq_is_encrypted(struct request *rq)return rq->crypt_ctx; } +static inline bool blk_crypto_rq_has_keyslot (struct request *rq) +{ +return rq->crypt_keyslot; +} +#else /* CONFIG_BLK_INLINE_ENCRYPTION */ static inline bool bio_crypt_rq_ctx_compatible(struct request *rq,
@@ -93,6 +98,11 @@ static inline bool blk_crypto_rq_is_encrypted(struct request *rq) return false; } +static inline bool blk_crypto_rq_has_keyslot (struct request *rq) +{ +return false; +} +#endif /* CONFIG_BLK_INLINE_ENCRYPTION */ void __bio_crypt_advance (struct bio *bio,unsigned int bytes);
@@ -127,14 +137,21 @@ static inline bool blk_crypto_bio_prep(struct bio **bio_ptr)return true; } -blk_status_t __blk_crypto_init_request (struct request *rq); -static inline blk_status_t blk_crypto_init_request (struct request *rq) +blk_status_t __blk_crypto_rq_get_keyslot (struct request *rq); +static inline blk_status_t blk_crypto_rq_get_keyslot (struct request *rq) {if (blk_crypto_rq_is_encrypted (rq)) -return __blk_crypto_init_request (rq); +return __blk_crypto_rq_get_keyslot (rq);return BLK_STS_OK ; } +void __blk_crypto_rq_put_keyslot (struct request *rq); +static inline void blk_crypto_rq_put_keyslot (struct request *rq) +{ +if (blk_crypto_rq_has_keyslot (rq)) +__blk_crypto_rq_put_keyslot (rq); +} +void __blk_crypto_free_request (struct request *rq);static inline void blk_crypto_free_request (struct request *rq) {
@@ -173,7 +190,7 @@ static inline blk_status_t blk_crypto_insert_cloned_request(struct request *rq) {if (blk_crypto_rq_is_encrypted (rq)) -return blk_crypto_init_request (rq); +return blk_crypto_rq_get_keyslot (rq);return BLK_STS_OK ; }
block/blk-crypto.c +40 -29
100 lines not on this page · raw message
block/blk-merge.c +2 -0
@@ -801,6 +801,8 @@ static struct request *attempt_merge(struct request_queue *q,if (!blk_discard_mergable (req))elv_merge_requests (q, req, next); +blk_crypto_rq_put_keyslot (next); +/* * 'next' is going away, so update stats accordingly */
block/blk-mq.c +1 -1
@@ -2193,7 +2193,7 @@ blk_qc_t blk_mq_submit_bio(struct bio *bio)blk_mq_bio_to_request (rq, bio, nr_segs); - ret =blk_crypto_init_request (rq); + ret =blk_crypto_rq_get_keyslot (rq);if (ret !=BLK_STS_OK ) { bio->bi_status = ret;bio_endio (bio);
block/keyslot-manager.c +21 -22
65 lines not on this page · raw message
crypto/algapi.c +3 -1
@@ -456,7 +456,9 @@ void crypto_unregister_alg(struct crypto_alg *alg)if (WARN (ret,"Algorithm %s is not registered" , alg->cra_driver_name))return ; -BUG_ON (refcount_read (&alg->cra_refcnt) !=1 ); +if (WARN_ON (refcount_read (&alg->cra_refcnt) !=1 )) +return ; +if (alg->cra_destroy) alg->cra_destroy (alg);
crypto/drbg.c +8 -8
@@ -1515,6 +1515,14 @@ static int drbg_prepare_hrng(struct drbg_state *drbg)return 0 ; drbg->jent =crypto_alloc_rng ("jitterentropy_rng" ,0 ,0 ); +if (IS_ERR (drbg->jent)) { +const int err =PTR_ERR (drbg->jent); + + drbg->jent =NULL ; +if (fips_enabled) +return err; +pr_info ("DRBG: Continuing without Jitter RNG\n" ); + }return 0 ; }
@@ -1570,14 +1578,6 @@ static int drbg_instantiate(struct drbg_state *drbg, struct drbg_string *pers,if (ret) goto free_everything; -if (IS_ERR (drbg->jent)) { - ret =PTR_ERR (drbg->jent); - drbg->jent =NULL ; -if (fips_enabled || ret != -ENOENT ) - goto free_everything; -pr_info ("DRBG: Continuing without Jitter RNG\n" ); - } - reseed = false; }
drivers/acpi/processor_pdc.c +11 -0
@@ -14,6 +14,8 @@#include <linux/acpi.h> #include <acpi/processor.h> +#include <xen/xen.h> +#include "internal.h" #define _COMPONENT ACPI_PROCESSOR_COMPONENT
@@ -50,6 +52,15 @@ static bool __init processor_physically_present(acpi_handle handle)return false; } +if (xen_initial_domain ()) +/* +* When running as a Xen dom0 the number of processors Linux +* sees can be different from the real number of processors on +* the system, and we still need to execute _PDC for all of +* them. +*/ +return xen_processor_present (acpi_id); + type = (acpi_type ==ACPI_TYPE_DEVICE ) ?1 :0 ; cpuid =acpi_get_cpuid (handle, type, acpi_id);
drivers/base/cpu.c +2 -1
@@ -489,7 +489,8 @@ static const struct attribute_group *cpu_root_attr_groups[] = {bool cpu_is_hotpluggable (unsigned cpu) {struct device *dev =get_cpu_device (cpu); - return dev && container_of(dev, struct cpu, dev)->hotpluggable; + return dev && container_of(dev, struct cpu, dev)->hotpluggable + &&tick_nohz_cpu_hotpluggable (cpu); }EXPORT_SYMBOL_GPL (cpu_is_hotpluggable);
drivers/base/dd.c +6 -1
@@ -677,7 +677,12 @@ static int really_probe_debug(struct device *dev, struct device_driver *drv) calltime =ktime_get (); ret =really_probe (dev, drv); rettime =ktime_get (); -pr_debug ("probe of %s returned %d after %lld usecs\n" , +/* +* Don't change this to pr_debug() because that requires +* CONFIG_DYNAMIC_DEBUG and we want a simple 'initcall_debug' on the +* kernel commandline to print this all the time at the debug level. +*/ +printk (KERN_DEBUG "probe of %s returned %d after %lld usecs\n" ,dev_name (dev), ret,ktime_us_delta (rettime, calltime));return ret; }
drivers/block/drbd/drbd_receiver.c +1 -1
@@ -1299,7 +1299,7 @@ static void submit_one_flush(struct drbd_device *device, struct issue_flush_contbio_set_dev (bio, device->ldev->backing_bdev); bio->bi_private = octx; bio->bi_end_io = one_flush_endio; - bio->bi_opf =REQ_OP_FLUSH |REQ_PREFLUSH ; + bio->bi_opf =REQ_OP_WRITE |REQ_PREFLUSH ; device->flush_jif = jiffies;set_bit (FLUSH_PENDING , &device->flags);
drivers/bluetooth/btsdio.c +0 -1
@@ -352,7 +352,6 @@ static void btsdio_remove(struct sdio_func *func)BT_DBG ("func %p" , func); -cancel_work_sync (&data->work);if (!data)return ;
drivers/char/ipmi/Kconfig +2 -1
@@ -126,7 +126,8 @@ config NPCM7XX_KCS_IPMI_BMC config ASPEED_BT_IPMI_BMC depends on ARCH_ASPEED || COMPILE_TEST - depends on REGMAP && REGMAP_MMIO && MFD_SYSCON + depends on MFD_SYSCON + select REGMAP_MMIO tristate "BT IPMI bmc driver" help Provides a driver for the BT (Block Transfer) IPMI interface
drivers/char/ipmi/ipmi_ssif.c +5 -3
@@ -564,8 +564,10 @@ static void retry_timeout(struct timer_list *t)if (waiting)start_get (ssif_info); -if (resend) +if (resend) {start_resend (ssif_info); +ssif_inc_stat (ssif_info, send_retries); + } }static void watch_timeout (struct timer_list *t)
@@ -792,9 +794,9 @@ static void msg_done_handler(struct ssif_info *ssif_info, int result, }else if (data[0 ] != (IPMI_NETFN_APP_REQUEST |1 ) <<2 || data[1 ] !=IPMI_GET_MSG_FLAGS_CMD ) {/* -* Don't abort here, maybe it was a queued -* response to a previous command. +* Recv error response, give up. */ + ssif_info->ssif_state =SSIF_IDLE ;ipmi_ssif_unlock_cond (ssif_info, flags); dev_warn(&ssif_info->client->dev, "Invalid response getting flags: %x %x\n",
drivers/char/tpm/tpm_tis_core.c +78 -53
277 lines not on this page · raw message
drivers/char/tpm/tpm_tis_core.h +2 -0
@@ -90,6 +90,8 @@ enum tpm_tis_flags {struct tpm_tis_data {u16 manufacturer_id; +struct mutex locality_count_mutex; +unsigned int locality_count;int locality;int irq;bool irq_tested;
drivers/clk/at91/clk-sam9x60-pll.c +1 -1
@@ -452,7 +452,7 @@ sam9x60_clk_register_frac_pll(struct regmap *regmap, spinlock_t *lock, ret =sam9x60_frac_pll_compute_mul_frac (&frac->core,FCORE_MIN , parent_rate, true); -if (ret <=0 ) { +if (ret <0 ) { hw =ERR_PTR (ret); goto free; }
drivers/clk/clk-conf.c +10 -2
@@ -33,9 +33,12 @@ static int __set_clk_parents(struct device_node *node, bool clk_supplier)else return rc; } -if (clkspec.np == node && !clk_supplier) +if (clkspec.np == node && !clk_supplier) { +of_node_put (clkspec.np);return 0 ; + } pclk =of_clk_get_from_provider (&clkspec); +of_node_put (clkspec.np);if (IS_ERR (pclk)) {if (PTR_ERR (pclk) != -EPROBE_DEFER ) pr_warn("clk: couldn't get parent clock %d for %pOF\n",
@@ -48,10 +51,12 @@ static int __set_clk_parents(struct device_node *node, bool clk_supplier)if (rc <0 ) goto err;if (clkspec.np == node && !clk_supplier) { +of_node_put (clkspec.np); rc =0 ; goto err; } clk =of_clk_get_from_provider (&clkspec); +of_node_put (clkspec.np);if (IS_ERR (clk)) {if (PTR_ERR (clk) != -EPROBE_DEFER ) pr_warn("clk: couldn't get assigned clock %d for %pOF\n",
@@ -93,10 +98,13 @@ static int __set_clk_rates(struct device_node *node, bool clk_supplier)else return rc; } -if (clkspec.np == node && !clk_supplier) +if (clkspec.np == node && !clk_supplier) { +of_node_put (clkspec.np);return 0 ; + } clk =of_clk_get_from_provider (&clkspec); +of_node_put (clkspec.np);if (IS_ERR (clk)) {if (PTR_ERR (clk) != -EPROBE_DEFER ) pr_warn("clk: couldn't get clock %d for %pOF\n",
drivers/clk/rockchip/clk-rk3399.c +1 -1
@@ -1261,7 +1261,7 @@ static struct rockchip_clk_branch rk3399_clk_branches[] __initdata = { RK3399_CLKSEL_CON(56), 6, 2, MFLAGS, RK3399_CLKGATE_CON(10), 7, GFLAGS), -COMPOSITE_NOGATE (SCLK_CIF_OUT ,"clk_cifout" , mux_clk_cif_p,0 , +COMPOSITE_NOGATE (SCLK_CIF_OUT ,"clk_cifout" , mux_clk_cif_p,CLK_SET_RATE_PARENT , RK3399_CLKSEL_CON(56), 5, 1, MFLAGS, 0, 5, DFLAGS),/* gic */
drivers/clocksource/timer-davinci.c +24 -6
@@ -258,21 +258,25 @@ int __init davinci_timer_register(struct clk *clk, resource_size(&timer_cfg->reg), "davinci-timer")) {pr_err ("Unable to request memory region\n" ); -return -EBUSY ; + rv = -EBUSY ; + goto exit_clk_disable; } base =ioremap (timer_cfg->reg.start,resource_size (&timer_cfg->reg));if (!base) {pr_err ("Unable to map the register range\n" ); -return -ENOMEM ; + rv = -ENOMEM ; + goto exit_mem_region; }davinci_timer_init (base); tick_rate =clk_get_rate (clk); clockevent =kzalloc (sizeof (*clockevent),GFP_KERNEL ); -if (!clockevent) -return -ENOMEM ; +if (!clockevent) { + rv = -ENOMEM ; + goto exit_iounmap_base; + } clockevent->dev.name ="tim12" ; clockevent->dev.features =CLOCK_EVT_FEAT_ONESHOT ;
@@ -297,7 +301,7 @@ int __init davinci_timer_register(struct clk *clk, "clockevent/tim12", clockevent);if (rv) {pr_err ("Unable to request the clockevent interrupt\n" ); -return rv; + goto exit_free_clockevent; } davinci_clocksource.dev.rating =300 ;
@@ -324,13 +328,27 @@ int __init davinci_timer_register(struct clk *clk, rv =clocksource_register_hz (&davinci_clocksource.dev, tick_rate);if (rv) {pr_err ("Unable to register clocksource\n" ); -return rv; + goto exit_free_irq; }sched_clock_register (davinci_timer_read_sched_clock,DAVINCI_TIMER_CLKSRC_BITS , tick_rate);return 0 ; + +exit_free_irq: +free_irq (timer_cfg->irq[DAVINCI_TIMER_CLOCKEVENT_IRQ ].start, + clockevent); +exit_free_clockevent: +kfree (clockevent); +exit_iounmap_base: +iounmap (base); +exit_mem_region: +release_mem_region (timer_cfg->reg.start, +resource_size (&timer_cfg->reg)); +exit_clk_disable: +clk_disable_unprepare (clk); +return rv; }static int __init of_davinci_timer_register (struct device_node *np)
drivers/counter/104-quad-8.c +4 -24
@@ -62,10 +62,6 @@ struct quad8_iio {#define QUAD8_REG_CHAN_OP 0x11#define QUAD8_REG_INDEX_INPUT_LEVELS 0x16#define QUAD8_DIFF_ENCODER_CABLE_STATUS 0x17 -/* Borrow Toggle flip-flop */ -#define QUAD8_FLAG_BT BIT(0) -/* Carry Toggle flip-flop */ -#define QUAD8_FLAG_CT BIT(1)/* Error flag */ #define QUAD8_FLAG_E BIT(4)/* Up/Down flag */
@@ -104,9 +100,6 @@ static int quad8_read_raw(struct iio_dev *indio_dev, {struct quad8_iio *const priv =iio_priv (indio_dev);const int base_offset = priv->base +2 * chan->channel; -unsigned int flags; -unsigned int borrow; -unsigned int carry;int i;switch (mask) {
@@ -117,12 +110,7 @@ static int quad8_read_raw(struct iio_dev *indio_dev,return IIO_VAL_INT ; } - flags =inb (base_offset +1 ); - borrow = flags &QUAD8_FLAG_BT ; - carry = !!(flags &QUAD8_FLAG_CT ); - -/* Borrow XOR Carry effectively doubles count range */ - *val = (borrow ^ carry) <<24 ; + *val =0 ;mutex_lock (&priv->lock);
@@ -643,17 +631,9 @@ static int quad8_count_read(struct counter_device *counter, {struct quad8_iio *const priv = counter->priv;const int base_offset = priv->base +2 * count->id; -unsigned int flags; -unsigned int borrow; -unsigned int carry;int i; - flags =inb (base_offset +1 ); - borrow = flags &QUAD8_FLAG_BT ; - carry = !!(flags &QUAD8_FLAG_CT ); - -/* Borrow XOR Carry effectively doubles count range */ - *val = (unsigned long )(borrow ^ carry) <<24 ; + *val =0 ;mutex_lock (&priv->lock);
@@ -1198,8 +1178,8 @@ static ssize_t quad8_count_ceiling_read(struct counter_device *counter,mutex_unlock (&priv->lock); -/* By default 0x1FFFFFF (25 bits unsigned) is maximum count */ -return sprintf (buf,"33554431\n" ); +/* By default 0xFFFFFF (24 bits unsigned) is maximum count */ +return sprintf (buf,"16777215\n" ); } static ssize_t quad8_count_ceiling_write(struct counter_device *counter,
drivers/crypto/Kconfig +1 -0
@@ -897,6 +897,7 @@ config CRYPTO_DEV_SA2UL select CRYPTO_AES_ARM64 select CRYPTO_ALGAPI select CRYPTO_AUTHENC + select CRYPTO_DES select CRYPTO_SHA1 select CRYPTO_SHA256 select CRYPTO_SHA512
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c +1 -1
@@ -132,7 +132,7 @@ static int sun8i_ss_setup_ivs(struct skcipher_request *areq) } rctx->p_iv[i] = a;/* we need to setup all others IVs only in the decrypt way */ -if (rctx->op_dir &SS_ENCRYPTION ) +if (rctx->op_dir ==SS_ENCRYPTION )return 0 ; todo =min (len,sg_dma_len (sg)); len -= todo;
drivers/crypto/caam/ctrl.c +4 -2
@@ -284,6 +284,10 @@ static int instantiate_rng(struct device *ctrldev, int state_handle_mask,const u32 rdsta_if =RDSTA_IF0 << sh_idx;const u32 rdsta_pr =RDSTA_PR0 << sh_idx;const u32 rdsta_mask = rdsta_if | rdsta_pr; + +/* Clear the contents before using the descriptor */ +memset (desc,0x00 ,CAAM_CMD_SZ *7 ); +/* * If the corresponding bit is set, this state handle * was initialized by somebody else, so it's left alone.
@@ -327,8 +331,6 @@ static int instantiate_rng(struct device *ctrldev, int state_handle_mask, }dev_info (ctrldev,"Instantiated RNG4 SH%d\n" , sh_idx); -/* Clear the contents before recreating the descriptor */ -memset (desc,0x00 ,CAAM_CMD_SZ *7 ); }kfree (desc);
drivers/crypto/ccp/psp-dev.c +3 -3
@@ -42,6 +42,9 @@ static irqreturn_t psp_irq_handler(int irq, void *data)/* Read the interrupt status: */ status =ioread32 (psp->io_regs + psp->vdata->intsts_reg); +/* Clear the interrupt status by writing the same value we read. */ +iowrite32 (status, psp->io_regs + psp->vdata->intsts_reg); +/* invoke subdevice interrupt handlers */ if (status) {if (psp->sev_irq_handler)
@@ -51,9 +54,6 @@ static irqreturn_t psp_irq_handler(int irq, void *data) psp->tee_irq_handler (irq, psp->tee_irq_data, status); } -/* Clear the interrupt status by writing the same value we read. */ -iowrite32 (status, psp->io_regs + psp->vdata->intsts_reg); -return IRQ_HANDLED ; }
drivers/crypto/inside-secure/safexcel.c +27 -10
@@ -1634,19 +1634,23 @@ static int safexcel_probe_generic(void *pdev, &priv->ring[i].rdr);if (ret) {dev_err (dev,"Failed to initialize rings\n" ); -return ret; + goto err_cleanup_rings; } priv->ring[i].rdr_req =devm_kcalloc (dev,EIP197_DEFAULT_RING_SIZE ,sizeof (*priv->ring[i].rdr_req),GFP_KERNEL ); -if (!priv->ring[i].rdr_req) -return -ENOMEM ; +if (!priv->ring[i].rdr_req) { + ret = -ENOMEM ; + goto err_cleanup_rings; + } ring_irq =devm_kzalloc (dev,sizeof (*ring_irq),GFP_KERNEL ); -if (!ring_irq) -return -ENOMEM ; +if (!ring_irq) { + ret = -ENOMEM ; + goto err_cleanup_rings; + } ring_irq->priv = priv; ring_irq->ring = i;
@@ -1660,7 +1664,8 @@ static int safexcel_probe_generic(void *pdev, ring_irq);if (irq <0 ) {dev_err (dev,"Failed to get IRQ ID for ring %d\n" , i); -return irq; + ret = irq; + goto err_cleanup_rings; } priv->ring[i].irq = irq;
@@ -1672,8 +1677,10 @@ static int safexcel_probe_generic(void *pdev,snprintf (wq_name,9 ,"wq_ring%d" , i); priv->ring[i].workqueue =create_singlethread_workqueue (wq_name); -if (!priv->ring[i].workqueue) -return -ENOMEM ; +if (!priv->ring[i].workqueue) { + ret = -ENOMEM ; + goto err_cleanup_rings; + } priv->ring[i].requests =0 ; priv->ring[i].busy = false;
@@ -1690,16 +1697,26 @@ static int safexcel_probe_generic(void *pdev, ret =safexcel_hw_init (priv);if (ret) {dev_err (dev,"HW init failed (%d)\n" , ret); -return ret; + goto err_cleanup_rings; } ret =safexcel_register_algorithms (priv);if (ret) {dev_err (dev,"Failed to register algorithms (%d)\n" , ret); -return ret; + goto err_cleanup_rings; }return 0 ; + +err_cleanup_rings: +for (i =0 ; i < priv->config.rings; i++) { +if (priv->ring[i].irq) +irq_set_affinity_hint (priv->ring[i].irq,NULL ); +if (priv->ring[i].workqueue) +destroy_workqueue (priv->ring[i].workqueue); + } + +return ret; }static void safexcel_hw_reset_rings (struct safexcel_crypto_priv *priv)
drivers/dma/at_xdmac.c +4 -1
@@ -212,6 +212,7 @@ struct at_xdmac {int irq;struct clk *clk;u32 save_gim; +u32 save_gs;struct dma_pool *at_xdmac_desc_pool;struct at_xdmac_chan chan[]; };
@@ -1910,6 +1911,7 @@ static int atmel_xdmac_suspend(struct device *dev) } } atxdmac->save_gim =at_xdmac_read (atxdmac,AT_XDMAC_GIM ); + atxdmac->save_gs =at_xdmac_read (atxdmac,AT_XDMAC_GS );at_xdmac_off (atxdmac);clk_disable_unprepare (atxdmac->clk);
@@ -1946,7 +1948,8 @@ static int atmel_xdmac_resume(struct device *dev)at_xdmac_chan_write (atchan,AT_XDMAC_CNDC , atchan->save_cndc);at_xdmac_chan_write (atchan,AT_XDMAC_CIE , atchan->save_cim);wmb (); -at_xdmac_write (atxdmac,AT_XDMAC_GE , atchan->mask); +if (atxdmac->save_gs & atchan->mask) +at_xdmac_write (atxdmac,AT_XDMAC_GE , atchan->mask); } }return 0 ;
drivers/dma/dw-edma/dw-edma-core.c +16 -11
@@ -166,7 +166,7 @@ static void vchan_free_desc(struct virt_dma_desc *vdesc)dw_edma_free_desc (vd2dw_edma_desc (vdesc)); } -static void dw_edma_start_transfer (struct dw_edma_chan *chan) +static int dw_edma_start_transfer (struct dw_edma_chan *chan) {struct dw_edma_chunk *child;struct dw_edma_desc *desc;
@@ -174,16 +174,16 @@ static void dw_edma_start_transfer(struct dw_edma_chan *chan) vd =vchan_next_desc (&chan->vc);if (!vd) -return ; +return 0 ; desc =vd2dw_edma_desc (vd);if (!desc) -return ; +return 0 ; child =list_first_entry_or_null (&desc->chunk->list, struct dw_edma_chunk, list);if (!child) -return ; +return 0 ;dw_edma_v0_core_start (child, !desc->xfer_sz); desc->xfer_sz += child->ll_region.sz;
@@ -191,6 +191,8 @@ static void dw_edma_start_transfer(struct dw_edma_chan *chan)list_del (&child->list);kfree (child); desc->chunks_alloc--; + +return 1 ; } static int dw_edma_device_config(struct dma_chan *dchan,
@@ -274,9 +276,12 @@ static void dw_edma_device_issue_pending(struct dma_chan *dchan)struct dw_edma_chan *chan =dchan2dw_edma_chan (dchan);unsigned long flags; +if (!chan->configured) +return ; +spin_lock_irqsave (&chan->vc.lock, flags); -if (chan->configured && chan->request ==EDMA_REQ_NONE && - chan->status ==EDMA_ST_IDLE &&vchan_issue_pending (&chan->vc)) { +if (vchan_issue_pending (&chan->vc) && chan->request ==EDMA_REQ_NONE && + chan->status ==EDMA_ST_IDLE ) { chan->status =EDMA_ST_BUSY ;dw_edma_start_transfer (chan); }
@@ -497,14 +502,14 @@ static void dw_edma_done_interrupt(struct dw_edma_chan *chan)switch (chan->request) {case EDMA_REQ_NONE : desc =vd2dw_edma_desc (vd); -if (desc->chunks_alloc) { - chan->status =EDMA_ST_BUSY ; -dw_edma_start_transfer (chan); - }else { +if (!desc->chunks_alloc) {list_del (&vd->node);vchan_cookie_complete (vd); - chan->status =EDMA_ST_IDLE ; } + +/* Continue transferring if there are remaining chunks or issued requests. +*/ + chan->status =dw_edma_start_transfer (chan) ?EDMA_ST_BUSY :EDMA_ST_IDLE ;break ;case EDMA_REQ_STOP :
drivers/dma/mv_xor_v2.c +1 -1
@@ -756,7 +756,7 @@ static int mv_xor_v2_probe(struct platform_device *pdev) xor_dev->clk =devm_clk_get (&pdev->dev,NULL );if (PTR_ERR (xor_dev->clk) == -EPROBE_DEFER ) { - ret =EPROBE_DEFER ; + ret = -EPROBE_DEFER ; goto disable_reg_clk; }if (!IS_ERR (xor_dev->clk)) {
drivers/edac/skx_base.c +2 -2
@@ -509,7 +509,7 @@ static bool skx_rir_decode(struct decoded_addr *res) }static u8 skx_close_row[] = { -15 ,16 ,17 ,18 ,20 ,21 ,22 ,28 ,10 ,11 ,12 ,13 ,29 ,30 ,31 ,32 ,33 +15 ,16 ,17 ,18 ,20 ,21 ,22 ,28 ,10 ,11 ,12 ,13 ,29 ,30 ,31 ,32 ,33 ,34 };static u8 skx_close_column[] = {
@@ -517,7 +517,7 @@ static u8 skx_close_column[] = { };static u8 skx_open_row[] = { -14 ,15 ,16 ,20 ,28 ,21 ,22 ,23 ,24 ,25 ,26 ,27 ,29 ,30 ,31 ,32 ,33 +14 ,15 ,16 ,20 ,28 ,21 ,22 ,23 ,24 ,25 ,26 ,27 ,29 ,30 ,31 ,32 ,33 ,34 };static u8 skx_open_column[] = {
drivers/firmware/qcom_scm.c +1 -2
@@ -1256,8 +1256,7 @@ static int qcom_scm_probe(struct platform_device *pdev)static void qcom_scm_shutdown (struct platform_device *pdev) {/* Clean shutdown, disable download mode to allow normal restart */ -if (download_mode) -qcom_scm_set_download_mode (false); +qcom_scm_set_download_mode (false); }static const struct of_device_id qcom_scm_dt_match[] = {
drivers/firmware/raspberrypi.c +29 -0
@@ -243,6 +243,13 @@ void rpi_firmware_put(struct rpi_firmware *fw) }EXPORT_SYMBOL_GPL (rpi_firmware_put); +static void devm_rpi_firmware_put (void *data) +{ +struct rpi_firmware *fw = data; + +rpi_firmware_put (fw); +} +static int rpi_firmware_probe (struct platform_device *pdev) {struct device *dev = &pdev->dev;
@@ -338,6 +345,28 @@ struct rpi_firmware *rpi_firmware_get(struct device_node *firmware_node) }EXPORT_SYMBOL_GPL (rpi_firmware_get); +/** +* devm_rpi_firmware_get - Get pointer to rpi_firmware structure. +* @firmware_node: Pointer to the firmware Device Tree node. +* +* Returns NULL is the firmware device is not ready. +*/ +struct rpi_firmware *devm_rpi_firmware_get (struct device *dev, +struct device_node *firmware_node) +{ +struct rpi_firmware *fw; + + fw =rpi_firmware_get (firmware_node); +if (!fw) +return NULL ; + +if (devm_add_action_or_reset (dev, devm_rpi_firmware_put, fw)) +return NULL ; + +return fw; +} +EXPORT_SYMBOL_GPL (devm_rpi_firmware_get); +static const struct of_device_id rpi_firmware_of_match[] = { { .compatible ="raspberrypi,bcm2835-firmware" , }, {},
drivers/firmware/stratix10-svc.c +2 -2
@@ -989,8 +989,8 @@ static int stratix10_svc_drv_probe(struct platform_device *pdev)return ret; genpool =svc_create_memory_pool (pdev, sh_memory); -if (!genpool) -return -ENOMEM ; +if (IS_ERR (genpool)) +return PTR_ERR (genpool);/* allocate service controller and supporting channel */ controller =devm_kzalloc (dev,sizeof (*controller),GFP_KERNEL );
drivers/fpga/fpga-bridge.c +1 -1
@@ -115,7 +115,7 @@ static int fpga_bridge_dev_match(struct device *dev, const void *data)/** * fpga_bridge_get - get an exclusive reference to a fpga bridge * @dev: parent device that fpga bridge was registered with -* @info: fpga manager info +* @info: fpga image specific information * * Given a device, get an exclusive reference to a fpga bridge. *
drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c +5 -1
@@ -66,6 +66,7 @@ static int amdgpu_sched_process_priority_override(struct amdgpu_device *adev, {struct fd f =fdget (fd);struct amdgpu_fpriv *fpriv; +struct amdgpu_ctx_mgr *mgr;struct amdgpu_ctx *ctx;uint32_t id;int r;
@@ -79,8 +80,11 @@ static int amdgpu_sched_process_priority_override(struct amdgpu_device *adev,return r; } -idr_for_each_entry (&fpriv->ctx_mgr.ctx_handles, ctx, id) + mgr = &fpriv->ctx_mgr; +mutex_lock (&mgr->lock); +idr_for_each_entry (&mgr->ctx_handles, ctx, id)amdgpu_ctx_priority_override (ctx, priority); +mutex_unlock (&mgr->lock);fdput (f);return 0 ;
drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +2 -1
@@ -3943,7 +3943,8 @@ static int gfx_v9_0_hw_fini(void *handle) {struct amdgpu_device *adev = (struct amdgpu_device *)handle; -amdgpu_irq_put (adev, &adev->gfx.cp_ecc_error_irq,0 ); +if (amdgpu_ras_is_supported (adev,AMDGPU_RAS_BLOCK__GFX )) +amdgpu_irq_put (adev, &adev->gfx.cp_ecc_error_irq,0 );amdgpu_irq_put (adev, &adev->gfx.priv_reg_irq,0 );amdgpu_irq_put (adev, &adev->gfx.priv_inst_irq,0 );
drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c +0 -1
@@ -1686,7 +1686,6 @@ static int gmc_v9_0_hw_fini(void *handle)return 0 ; } -amdgpu_irq_put (adev, &adev->gmc.ecc_irq,0 );amdgpu_irq_put (adev, &adev->gmc.vm_fault,0 );return 0 ;
drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c +5 -3
@@ -1979,9 +1979,11 @@ static int sdma_v4_0_hw_fini(void *handle)if (amdgpu_sriov_vf (adev))return 0 ; -for (i =0 ; i < adev->sdma.num_instances; i++) { -amdgpu_irq_put (adev, &adev->sdma.ecc_irq, -AMDGPU_SDMA_IRQ_INSTANCE0 + i); +if (amdgpu_ras_is_supported (adev,AMDGPU_RAS_BLOCK__SDMA )) { +for (i =0 ; i < adev->sdma.num_instances; i++) { +amdgpu_irq_put (adev, &adev->sdma.ecc_irq, +AMDGPU_SDMA_IRQ_INSTANCE0 + i); + } }sdma_v4_0_ctx_switch_enable (adev, false);
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +4 -1
@@ -7248,6 +7248,8 @@ static void amdgpu_dm_commit_planes(struct drm_atomic_state *state,continue ; dc_plane = dm_new_plane_state->dc_state; +if (!dc_plane) +continue ; bundle->surface_updates[planes_count].surface = dc_plane;if (new_pcrtc_state->color_mgmt_changed) {
@@ -8562,8 +8564,9 @@ static int dm_update_plane_state(struct dc *dc,return -EINVAL ; } +if (dm_old_plane_state->dc_state) +dc_plane_state_release (dm_old_plane_state->dc_state); -dc_plane_state_release (dm_old_plane_state->dc_state); dm_new_plane_state->dc_state =NULL ; *lock_and_validation_needed = true;
drivers/gpu/drm/amd/display/dc/core/dc_resource.c +3 -0
@@ -1502,6 +1502,9 @@ bool dc_remove_plane_from_context(struct dc_stream_status *stream_status =NULL ;struct resource_pool *pool = dc->res_pool; +if (!plane_state) +return true; +for (i =0 ; i < context->stream_count; i++)if (context->streams[i] == stream) { stream_status = &context->stream_status[i];
drivers/gpu/drm/bridge/adv7511/adv7533.c +11 -14
@@ -103,22 +103,19 @@ void adv7533_dsi_power_off(struct adv7511 *adv)enum drm_mode_status adv7533_mode_valid (struct adv7511 *adv,const struct drm_display_mode *mode) { -int lanes; +unsigned long max_lane_freq;struct mipi_dsi_device *dsi = adv->dsi; +u8 bpp =mipi_dsi_pixel_format_to_bpp (dsi->format); -if (mode->clock >80000 ) - lanes =4 ; -else - lanes =3 ; - -/* -* TODO: add support for dynamic switching of lanes -* by using the bridge pre_enable() op . Till then filter -* out the modes which shall need different number of lanes -* than what was configured in the device tree. -*/ -if (lanes != dsi->lanes) -return MODE_BAD ; +/* Check max clock for either 7533 or 7535 */ +if (mode->clock > (adv->type ==ADV7533 ?80000 :148500 )) +return MODE_CLOCK_HIGH ; + +/* Check max clock for each lane */ + max_lane_freq = (adv->type ==ADV7533 ?800000 :891000 ); + +if (mode->clock * bpp > max_lane_freq * adv->num_dsi_lanes) +return MODE_CLOCK_HIGH ;return MODE_OK ; }
drivers/gpu/drm/drm_fb_helper.c +3 -0
@@ -1299,6 +1299,9 @@ int drm_fb_helper_check_var(struct fb_var_screeninfo *var,return -EINVAL ; } + var->xres_virtual = fb->width; + var->yres_virtual = fb->height; +/* * Workaround for SDL 1.2, which is known to be setting all pixel format * fields values to zero in some cases. We treat this situation as a
drivers/gpu/drm/drm_probe_helper.c +3 -2
@@ -488,8 +488,9 @@ int drm_helper_probe_single_connector_modes(struct drm_connector *connector,*/ dev->mode_config.delayed_event = true;if (dev->mode_config.poll_enabled) -schedule_delayed_work (&dev->mode_config.output_poll_work, -0 ); +mod_delayed_work (system_wq, + &dev->mode_config.output_poll_work, +0 ); }/* Re-enable polling in case the global poll config changed. */
drivers/gpu/drm/exynos/exynos5433_drm_decon.c +2 -2
@@ -775,8 +775,8 @@ static int decon_conf_irq(struct decon_context *ctx, const char *name,return irq; } } -irq_set_status_flags (irq,IRQ_NOAUTOEN ); - ret =devm_request_irq (ctx->dev, irq, handler, flags,"drm_decon" , ctx); + ret =devm_request_irq (ctx->dev, irq, handler, + flags |IRQF_NO_AUTOEN ,"drm_decon" , ctx);if (ret <0 ) {dev_err (ctx->dev,"IRQ %s request failed\n" , name);return ret;
drivers/gpu/drm/exynos/exynos_drm_dsi.c +3 -4
@@ -1353,10 +1353,9 @@ static int exynos_dsi_register_te_irq(struct exynos_dsi *dsi, } te_gpio_irq =gpio_to_irq (dsi->te_gpio); -irq_set_status_flags (te_gpio_irq,IRQ_NOAUTOEN ); ret =request_threaded_irq (te_gpio_irq, exynos_dsi_te_irq_handler,NULL , -IRQF_TRIGGER_RISING ,"TE" , dsi); +IRQF_TRIGGER_RISING |IRQF_NO_AUTOEN ,"TE" , dsi);if (ret) {dev_err (dsi->dev,"request interrupt failed with %d\n" , ret);gpio_free (dsi->te_gpio);
@@ -1802,9 +1801,9 @@ static int exynos_dsi_probe(struct platform_device *pdev)if (dsi->irq <0 )return dsi->irq; -irq_set_status_flags (dsi->irq,IRQ_NOAUTOEN ); ret =devm_request_threaded_irq (dev, dsi->irq,NULL , - exynos_dsi_irq,IRQF_ONESHOT , + exynos_dsi_irq, +IRQF_ONESHOT |IRQF_NO_AUTOEN ,dev_name (dev), dsi);if (ret) {dev_err (dev,"failed to request dsi irq\n" );
drivers/gpu/drm/i915/display/intel_display.c +1 -1
@@ -5844,7 +5844,7 @@ intel_get_crtc_new_encoder(const struct intel_atomic_state *state, num_encoders++; } -drm_WARN (encoder->base.dev, num_encoders !=1 , +drm_WARN (state->base.dev, num_encoders !=1 ,"%d encoders for pipe %c\n" , num_encoders,pipe_name (crtc->pipe));
drivers/gpu/drm/lima/lima_drv.c +4 -2
@@ -392,8 +392,10 @@ static int lima_pdev_probe(struct platform_device *pdev)/* Allocate and initialize the DRM device. */ ddev =drm_dev_alloc (&lima_drm_driver, &pdev->dev); -if (IS_ERR (ddev)) -return PTR_ERR (ddev); +if (IS_ERR (ddev)) { + err =PTR_ERR (ddev); + goto err_out0; + } ddev->dev_private = ldev; ldev->ddev = ddev;
drivers/gpu/drm/msm/adreno/a5xx_gpu.c +7 -1
@@ -1569,6 +1569,7 @@ struct msm_gpu *a5xx_gpu_init(struct drm_device *dev)struct a5xx_gpu *a5xx_gpu =NULL ;struct adreno_gpu *adreno_gpu;struct msm_gpu *gpu; +unsigned int nr_rings;int ret;if (!pdev) {
@@ -1589,7 +1590,12 @@ struct msm_gpu *a5xx_gpu_init(struct drm_device *dev)check_speed_bin (&pdev->dev); - ret =adreno_gpu_init (dev, pdev, adreno_gpu, &funcs,4 ); + nr_rings =4 ; + +if (adreno_is_a510 (adreno_gpu)) + nr_rings =1 ; + + ret =adreno_gpu_init (dev, pdev, adreno_gpu, &funcs, nr_rings);if (ret) {a5xx_destroy (&(a5xx_gpu->base.base));return ERR_PTR (ret);
drivers/gpu/drm/msm/adreno/adreno_device.c +5 -2
@@ -301,8 +301,11 @@ struct msm_gpu *adreno_load_gpu(struct drm_device *dev)if (ret)return NULL ; -/* Make sure pm runtime is active and reset any previous errors */ -pm_runtime_set_active (&pdev->dev); +/* +* Now that we have firmware loaded, and are ready to begin +* booting the gpu, go ahead and enable runpm: +*/ +pm_runtime_enable (&pdev->dev); ret =pm_runtime_get_sync (&pdev->dev);if (ret <0 ) {
drivers/gpu/drm/msm/adreno/adreno_gpu.c +0 -1
@@ -916,7 +916,6 @@ int adreno_gpu_init(struct drm_device *drm, struct platform_device *pdev,pm_runtime_set_autosuspend_delay (dev, adreno_gpu->info->inactive_period);pm_runtime_use_autosuspend (dev); -pm_runtime_enable (dev); ret =msm_gpu_init (drm, pdev, &adreno_gpu->base, &funcs->base, adreno_gpu->info->name, &adreno_gpu_config);
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c +1 -1
@@ -634,7 +634,7 @@ static int dpu_encoder_virt_atomic_check(if (drm_atomic_crtc_needs_modeset (crtc_state)) {dpu_rm_release (global_state, drm_enc); -if (!crtc_state->active_changed || crtc_state->active) +if (!crtc_state->active_changed || crtc_state->enable) ret =dpu_rm_reserve (&dpu_kms->rm, global_state, drm_enc, crtc_state, topology); }
drivers/gpu/drm/panel/panel-orisetech-otm8009a.c +1 -1
@@ -458,7 +458,7 @@ static int otm8009a_probe(struct mipi_dsi_device *dsi) DRM_MODE_CONNECTOR_DSI); ctx->bl_dev =devm_backlight_device_register (dev,dev_name (dev), - dsi->host->dev, ctx, + dev, ctx, &otm8009a_backlight_ops,NULL );if (IS_ERR (ctx->bl_dev)) {
drivers/gpu/drm/rockchip/rockchip_drm_gem.c +0 -3
@@ -250,9 +250,6 @@ static int rockchip_drm_gem_object_mmap(struct drm_gem_object *obj,else ret =rockchip_drm_gem_object_mmap_dma (obj, vma); -if (ret) -drm_gem_vm_close (vma); -return ret; }
drivers/gpu/drm/vgem/vgem_fence.c +1 -0
@@ -249,4 +249,5 @@ void vgem_fence_close(struct vgem_file *vfile) {idr_for_each (&vfile->fence_idr, __vgem_fence_idr_fini, vfile);idr_destroy (&vfile->fence_idr); +mutex_destroy (&vfile->fence_mutex); }
drivers/hid/wacom_wac.c +36 -2
@@ -1265,6 +1265,9 @@ static void wacom_intuos_pro2_bt_pen(struct wacom_wac *wacom)struct input_dev *pen_input = wacom->pen_input;unsigned char *data = wacom->data; +int number_of_valid_frames =0 ; +int time_interval =15000000 ; +ktime_t time_packet_received =ktime_get ();int i; if (wacom->features.type == INTUOSP2_BT ||
@@ -1285,12 +1288,30 @@ static void wacom_intuos_pro2_bt_pen(struct wacom_wac *wacom) wacom->id[0 ] |= (wacom->serial[0 ] >>32 ) &0xFFFFF ; } +/* number of valid frames */ for (i =0 ; i < pen_frames; i++) {unsigned char *frame = &data[i*pen_frame_len +1 ];bool valid = frame[0 ] &0x80 ; + +if (valid) + number_of_valid_frames++; + } + +if (number_of_valid_frames) { +if (wacom->hid_data.time_delayed) + time_interval =ktime_get () - wacom->hid_data.time_delayed; + time_interval /= number_of_valid_frames; + wacom->hid_data.time_delayed = time_packet_received; + } + +for (i =0 ; i < number_of_valid_frames; i++) { +unsigned char *frame = &data[i*pen_frame_len +1 ]; +bool valid = frame[0 ] &0x80 ;bool prox = frame[0 ] &0x40 ;bool range = frame[0 ] &0x20 ;bool invert = frame[0 ] &0x10 ; +int frames_number_reversed = number_of_valid_frames - i -1 ; +int event_timestamp = time_packet_received - frames_number_reversed * time_interval;if (!valid)continue ;
@@ -1303,6 +1324,7 @@ static void wacom_intuos_pro2_bt_pen(struct wacom_wac *wacom) wacom->tool[0 ] =0 ; wacom->id[0 ] =0 ; wacom->serial[0 ] =0 ; + wacom->hid_data.time_delayed =0 ;return ; }
@@ -1339,6 +1361,7 @@ static void wacom_intuos_pro2_bt_pen(struct wacom_wac *wacom) get_unaligned_le16(&frame[11])); } } +if (wacom->tool[0 ]) {input_report_abs (pen_input,ABS_PRESSURE ,get_unaligned_le16 (&frame[5 ])); if (wacom->features.type == INTUOSP2_BT ||
@@ -1362,6 +1385,9 @@ static void wacom_intuos_pro2_bt_pen(struct wacom_wac *wacom) wacom->shared->stylus_in_proximity = prox; +/* add timestamp to unpack the frames */ +input_set_timestamp (pen_input, event_timestamp); +input_sync (pen_input); } }
@@ -1853,6 +1879,7 @@ static void wacom_map_usage(struct input_dev *input, struct hid_usage *usage,int fmax = field->logical_maximum;unsigned int equivalent_usage =wacom_equivalent_usage (usage->hid);int resolution_code = code; +int resolution =hidinput_calc_abs_res (field, resolution_code);if (equivalent_usage ==HID_DG_TWIST ) { resolution_code =ABS_RZ ;
@@ -1875,8 +1902,15 @@ static void wacom_map_usage(struct input_dev *input, struct hid_usage *usage,switch (type) {case EV_ABS :input_set_abs_params (input, code, fmin, fmax, fuzz,0 ); -input_abs_set_res (input, code, -hidinput_calc_abs_res (field, resolution_code)); + +/* older tablet may miss physical usage */ +if ((code ==ABS_X || code ==ABS_Y ) && !resolution) { + resolution =WACOM_INTUOS_RES ; +hid_warn (input, +"Wacom usage (%d) missing resolution \n" , + code); + } +input_abs_set_res (input, code, resolution);break ;case EV_KEY :input_set_capability (input,EV_KEY , code);
drivers/hid/wacom_wac.h +1 -0
@@ -320,6 +320,7 @@ struct hid_data {int bat_connected;int ps_connected;bool pad_input_event_flag; +int time_delayed; };struct wacom_remote_data {
drivers/hwmon/adt7475.c +3 -3
@@ -1515,9 +1515,9 @@ static int adt7475_set_pwm_polarity(struct i2c_client *client)int ret, i;u8 val; - ret =of_property_read_u32_array (client->dev.of_node, -"adi,pwm-active-state" , states, -ARRAY_SIZE (states)); + ret =device_property_read_u32_array (&client->dev, +"adi,pwm-active-state" , states, +ARRAY_SIZE (states));if (ret)return ret;
drivers/hwmon/k10temp.c +3 -1
@@ -74,6 +74,7 @@ static DEFINE_MUTEX(nb_smu_ind_mutex);#define ZEN_CUR_TEMP_SHIFT 21#define ZEN_CUR_TEMP_RANGE_SEL_MASK BIT(19) +#define ZEN_CUR_TEMP_TJ_SEL_MASK GENMASK(17, 16)#define ZEN_SVI_BASE 0x0005A000
@@ -173,7 +174,8 @@ static long get_raw_temp(struct k10temp_data *data) data->read_tempreg (data->pdev, ®val); temp = (regval >>ZEN_CUR_TEMP_SHIFT ) *125 ; -if (regval & data->temp_adjust_mask) +if ((regval & data->temp_adjust_mask) || + (regval &ZEN_CUR_TEMP_TJ_SEL_MASK ) ==ZEN_CUR_TEMP_TJ_SEL_MASK ) temp -=49000 ;return temp; }
drivers/hwtracing/coresight/coresight-etm-perf.c +1 -0
@@ -619,6 +619,7 @@ int __init etm_perf_init(void) etm_pmu.addr_filters_sync = etm_addr_filters_sync; etm_pmu.addr_filters_validate = etm_addr_filters_validate; etm_pmu.nr_addr_filters =ETM_ADDR_CMP_MAX ; + etm_pmu.module =THIS_MODULE ; ret =perf_pmu_register (&etm_pmu,CORESIGHT_ETM_PMU_NAME ,-1 );if (ret ==0 )
drivers/i2c/busses/i2c-cadence.c +4 -2
@@ -792,8 +792,10 @@ static int cdns_i2c_master_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs,#if IS_ENABLED (CONFIG_I2C_SLAVE )/* Check i2c operating mode and switch if possible */ if (id->dev_mode ==CDNS_I2C_MODE_SLAVE ) { -if (id->slave_state !=CDNS_I2C_SLAVE_STATE_IDLE ) -return -EAGAIN ; +if (id->slave_state !=CDNS_I2C_SLAVE_STATE_IDLE ) { + ret = -EAGAIN ; + goto out; + }/* Set mode to master */ cdns_i2c_set_mode (CDNS_I2C_MODE_MASTER , id);
drivers/i2c/busses/i2c-omap.c +1 -1
@@ -1058,7 +1058,7 @@ omap_i2c_isr(int irq, void *dev_id)u16 stat; stat =omap_i2c_read_reg (omap,OMAP_I2C_STAT_REG ); - mask =omap_i2c_read_reg (omap,OMAP_I2C_IE_REG ); + mask =omap_i2c_read_reg (omap,OMAP_I2C_IE_REG ) & ~OMAP_I2C_STAT_NACK ;if (stat & mask) ret =IRQ_WAKE_THREAD ;
drivers/iio/adc/palmas_gpadc.c +1 -1
@@ -628,7 +628,7 @@ static int palmas_gpadc_probe(struct platform_device *pdev)static int palmas_gpadc_remove (struct platform_device *pdev) { -struct iio_dev *indio_dev =dev_to_iio_dev (&pdev->dev); +struct iio_dev *indio_dev =dev_get_drvdata (&pdev->dev);struct palmas_gpadc *adc =iio_priv (indio_dev);if (adc->wakeup1_enable || adc->wakeup2_enable)
drivers/iio/light/max44009.c +7 -6
@@ -528,6 +528,12 @@ static int max44009_probe(struct i2c_client *client,return devm_iio_device_register (&client->dev, indio_dev); } +static const struct of_device_id max44009_of_match[] = { + { .compatible ="maxim,max44009" }, + { } +}; +MODULE_DEVICE_TABLE (of, max44009_of_match); +static const struct i2c_device_id max44009_id[] = { {"max44009" ,0 }, { }
@@ -537,18 +543,13 @@ MODULE_DEVICE_TABLE(i2c, max44009_id);static struct i2c_driver max44009_driver = { .driver = { .name =MAX44009_DRV_NAME , + .of_match_table = max44009_of_match, }, .probe = max44009_probe, .id_table = max44009_id, };module_i2c_driver (max44009_driver); -static const struct of_device_id max44009_of_match[] = { - { .compatible ="maxim,max44009" }, - { } -}; -MODULE_DEVICE_TABLE (of, max44009_of_match); -MODULE_AUTHOR ("Robert Eshleman <[email protected]>" );MODULE_LICENSE ("GPL v2" );MODULE_DESCRIPTION ("MAX44009 ambient light sensor driver" );
drivers/infiniband/core/cm.c +2 -1
@@ -2924,6 +2924,8 @@ static int cm_send_rej_locked(struct cm_id_private *cm_id_priv, (ari && ari_length > IB_CM_REJ_ARI_LENGTH))return -EINVAL ; +trace_icm_send_rej (&cm_id_priv->id, reason); +switch (state) {case IB_CM_REQ_SENT :case IB_CM_MRA_REQ_RCVD :
@@ -2954,7 +2956,6 @@ static int cm_send_rej_locked(struct cm_id_private *cm_id_priv,return -EINVAL ; } -trace_icm_send_rej (&cm_id_priv->id, reason); ret =ib_post_send_mad (msg,NULL );if (ret) {cm_free_msg (msg);
drivers/infiniband/hw/hfi1/ipoib_tx.c +16 -3
@@ -15,6 +15,7 @@#include "verbs.h" #include "trace_ibhdrs.h" #include "ipoib.h" +#include "trace_tx.h" /* Add a convenience helper */ #define CIRC_ADD (val, add, size) (((val) + (add)) & ((size) - 1))
@@ -63,12 +64,14 @@ static u64 hfi1_ipoib_used(struct hfi1_ipoib_txq *txq)static void hfi1_ipoib_stop_txq (struct hfi1_ipoib_txq *txq) { +trace_hfi1_txq_stop (txq);if (atomic_inc_return (&txq->stops) ==1 )netif_stop_subqueue (txq->priv->netdev, txq->q_idx); }static void hfi1_ipoib_wake_txq (struct hfi1_ipoib_txq *txq) { +trace_hfi1_txq_wake (txq);if (atomic_dec_and_test (&txq->stops))netif_wake_subqueue (txq->priv->netdev, txq->q_idx); }
@@ -89,8 +92,10 @@ static void hfi1_ipoib_check_queue_depth(struct hfi1_ipoib_txq *txq) { ++txq->sent_txreqs;if (hfi1_ipoib_used (txq) >=hfi1_ipoib_ring_hwat (txq) && - !atomic_xchg (&txq->ring_full,1 )) + !atomic_xchg (&txq->ring_full,1 )) { +trace_hfi1_txq_full (txq);hfi1_ipoib_stop_txq (txq); + } }static void hfi1_ipoib_check_queue_stopped (struct hfi1_ipoib_txq *txq)
@@ -112,8 +117,10 @@ static void hfi1_ipoib_check_queue_stopped(struct hfi1_ipoib_txq *txq)* to protect against ring overflow. */ if (hfi1_ipoib_used (txq) <hfi1_ipoib_ring_lwat (txq) && -atomic_xchg (&txq->ring_full,0 )) +atomic_xchg (&txq->ring_full,0 )) { +trace_hfi1_txq_xmit_unstopped (txq);hfi1_ipoib_wake_txq (txq); + } }static void hfi1_ipoib_free_tx (struct ipoib_txreq *tx,int budget)
@@ -244,6 +251,7 @@ static int hfi1_ipoib_build_ulp_payload(struct ipoib_txreq *tx,const skb_frag_t *frag = &skb_shinfo (skb)->frags[i]; ret = sdma_txadd_page(dd, + NULL, txreq, skb_frag_page(frag), frag->bv_offset,
@@ -405,6 +413,7 @@ static struct ipoib_txreq *hfi1_ipoib_send_dma_common(struct net_device *dev,sdma_select_engine_sc (priv->dd, txp->flow.tx_queue, txp->flow.sc5); +trace_hfi1_flow_switch (txp->txq); }return tx;
@@ -525,6 +534,7 @@ static int hfi1_ipoib_send_dma_list(struct net_device *dev,if (txq->flow.as_int != txp->flow.as_int) {int ret; +trace_hfi1_flow_flush (txq); ret =hfi1_ipoib_flush_tx_list (dev, txq);if (unlikely (ret)) {if (ret == -EBUSY )
@@ -635,8 +645,10 @@ static int hfi1_ipoib_sdma_sleep(struct sdma_engine *sde,/* came from non-list submit */ list_add_tail (&txreq->list, &txq->tx_list);if (list_empty (&txq->wait.list)) { -if (!atomic_xchg (&txq->no_desc,1 )) +if (!atomic_xchg (&txq->no_desc,1 )) { +trace_hfi1_txq_queued (txq);hfi1_ipoib_stop_txq (txq); + }iowait_queue (pkts_sent, wait->iow, &sde->dmawait); }
@@ -659,6 +671,7 @@ static void hfi1_ipoib_sdma_wakeup(struct iowait *wait, int reason)struct hfi1_ipoib_txq *txq = container_of(wait, struct hfi1_ipoib_txq, wait); +trace_hfi1_txq_wakeup (txq);if (likely (txq->priv->netdev->reg_state ==NETREG_REGISTERED ))iowait_schedule (wait, system_highpri_wq,WORK_CPU_UNBOUND ); }
drivers/infiniband/hw/hfi1/mmu_rb.c +17 -56
110 lines not on this page · raw message
drivers/infiniband/hw/hfi1/mmu_rb.h +3 -5
@@ -93,10 +93,8 @@ void hfi1_mmu_rb_unregister(struct mmu_rb_handler *handler);int hfi1_mmu_rb_insert (struct mmu_rb_handler *handler,struct mmu_rb_node *mnode);void hfi1_mmu_rb_evict (struct mmu_rb_handler *handler,void *evict_arg); -void hfi1_mmu_rb_remove (struct mmu_rb_handler *handler, -struct mmu_rb_node *mnode); -bool hfi1_mmu_rb_remove_unless_exact (struct mmu_rb_handler *handler, -unsigned long addr,unsigned long len, -struct mmu_rb_node **rb_node); +struct mmu_rb_node *hfi1_mmu_rb_get_first (struct mmu_rb_handler *handler, +unsigned long addr, +unsigned long len);#endif /* _HFI1_MMU_RB_H */
drivers/infiniband/hw/hfi1/sdma.c +4 -17
@@ -1635,22 +1635,7 @@ static inline void sdma_unmap_desc(struct hfi1_devdata *dd, struct sdma_desc *descp) { - switch (sdma_mapping_type(descp)) { - case SDMA_MAP_SINGLE: -dma_unmap_single ( - &dd->pcidev->dev, -sdma_mapping_addr (descp ), -sdma_mapping_len (descp ), -DMA_TO_DEVICE ); -break ; -case SDMA_MAP_PAGE : -dma_unmap_page ( - &dd->pcidev->dev, -sdma_mapping_addr (descp), -sdma_mapping_len (descp), -DMA_TO_DEVICE ); -break ; - } +system_descriptor_complete (dd ,descp ); }/*
@@ -3170,7 +3155,7 @@ int ext_coal_sdma_tx_descs(struct hfi1_devdata *dd, struct sdma_txreq *tx,/* Add descriptor for coalesce buffer */ tx->desc_limit =MAX_DESC ; -return _sdma_txadd_daddr (dd,SDMA_MAP_SINGLE , tx, +return _sdma_txadd_daddr (dd,SDMA_MAP_SINGLE ,NULL , tx, addr, tx->tlen); }
@@ -3210,10 +3195,12 @@ int _pad_sdma_tx_descs(struct hfi1_devdata *dd, struct sdma_txreq *tx)return rval; } } +/* finish the one just added */ make_tx_sdma_desc ( tx,SDMA_MAP_NONE , +NULL , dd->sdma_pad_phys,sizeof (u32) - (tx->packet_len & (sizeof (u32) -1 )));_sdma_close_tx (dd, tx);
drivers/infiniband/hw/hfi1/sdma.h +11 -5
@@ -635,6 +635,7 @@ static inline dma_addr_t sdma_mapping_addr(struct sdma_desc *d)static inline void make_tx_sdma_desc (struct sdma_txreq *tx,int type, +void *pinning_ctx,dma_addr_t addr,size_t len) {
@@ -653,6 +654,7 @@ static inline void make_tx_sdma_desc( << SDMA_DESC0_PHY_ADDR_SHIFT) | (((u64 )len &SDMA_DESC0_BYTE_COUNT_MASK ) <<SDMA_DESC0_BYTE_COUNT_SHIFT ); + desc->pinning_ctx = pinning_ctx; }/* helper to extend txreq */
@@ -685,6 +687,7 @@ static inline void _sdma_close_tx(struct hfi1_devdata *dd,static inline int _sdma_txadd_daddr (struct hfi1_devdata *dd,int type, +void *pinning_ctx,struct sdma_txreq *tx,dma_addr_t addr,u16 len)
@@ -694,6 +697,7 @@ static inline int _sdma_txadd_daddr(make_tx_sdma_desc ( tx, type, + pinning_ctx, addr, len);WARN_ON (len > tx->tlen); tx->tlen -= len;
@@ -714,6 +718,7 @@ static inline int _sdma_txadd_daddr(/** * sdma_txadd_page() - add a page to the sdma_txreq * @dd: the device to use for mapping +* @pinning_ctx: context to be released at descriptor retirement * @tx: tx request to which the page is added * @page: page to map * @offset: offset within the page
@@ -729,6 +734,7 @@ static inline int _sdma_txadd_daddr(*/ static inline int sdma_txadd_page( struct hfi1_devdata *dd, + void *pinning_ctx, struct sdma_txreq *tx, struct page *page, unsigned long offset,
@@ -756,8 +762,7 @@ static inline int sdma_txadd_page(return -ENOSPC ; } -return _sdma_txadd_daddr ( - dd,SDMA_MAP_PAGE , tx, addr, len); +return _sdma_txadd_daddr (dd,SDMA_MAP_PAGE , pinning_ctx, tx, addr, len); }/**
@@ -791,7 +796,8 @@ static inline int sdma_txadd_daddr(return rval; } -return _sdma_txadd_daddr (dd,SDMA_MAP_NONE , tx, addr, len); +return _sdma_txadd_daddr (dd,SDMA_MAP_NONE ,NULL , tx, + addr, len); }/**
@@ -837,8 +843,7 @@ static inline int sdma_txadd_kvaddr(return -ENOSPC ; } -return _sdma_txadd_daddr ( - dd,SDMA_MAP_SINGLE , tx, addr, len); +return _sdma_txadd_daddr (dd,SDMA_MAP_SINGLE ,NULL , tx, addr, len); }struct iowait_work ;
@@ -1090,4 +1095,5 @@ extern uint mod_num_sdma;void sdma_update_lmc (struct hfi1_devdata *dd,u64 mask,u32 lid);
Lines of this file are not shown. View the raw message.
drivers/infiniband/hw/hfi1/sdma_txreq.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/infiniband/hw/hfi1/trace_tx.h +179 -0
179 lines not on this page · raw message
drivers/infiniband/hw/hfi1/user_sdma.c +395 -217
612 lines not on this page · raw message
drivers/infiniband/ulp/isert/ib_isert.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/infiniband/ulp/srpt/ib_srpt.c +13 -10
Lines of this file are not shown. View the raw message.
drivers/input/touchscreen/raspberrypi-ts.c +1 -2
Lines of this file are not shown. View the raw message.
drivers/md/raid10.c +37 -37
74 lines not on this page · raw message
drivers/media/pci/saa7134/saa7134-vbi.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/media/pci/saa7134/saa7134-video.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/media/platform/qcom/venus/core.h +3 -3
Lines of this file are not shown. View the raw message.
drivers/media/platform/qcom/venus/helpers.c +6 -0
Lines of this file are not shown. View the raw message.
drivers/media/platform/qcom/venus/vdec.c +82 -38
120 lines not on this page · raw message
drivers/media/platform/rcar_fdp1.c +31 -19
50 lines not on this page · raw message
drivers/media/platform/sti/bdisp/bdisp-v4l2.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/mfd/tqmx86.c +49 -27
76 lines not on this page · raw message
drivers/net/ethernet/freescale/enetc/enetc_qos.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c +12 -11
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c +10 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/nic/otx2_vf.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/pensando/ionic/ionic_ethtool.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/sfc/mcdi_port_common.c +7 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c +4 -10
Lines of this file are not shown. View the raw message.
drivers/net/virtio_net.c +27 -16
43 lines not on this page · raw message
drivers/net/wireless/ath/ath5k/eeprom.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/ath6kl/htc_pipe.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/ath9k/hif_usb.c +19 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +5 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/fw/dbg.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/fw/debugfs.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/iwl-dbg-tlv.c +6 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c +10 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/pcie/trans.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8192e.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtlwifi/debug.c +6 -6
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtw88/mac.c +5 -3
Lines of this file are not shown. View the raw message.
drivers/nvme/target/fcloop.c +27 -21
48 lines not on this page · raw message
drivers/platform/x86/touchscreen_dmi.c +41 -0
41 lines not on this page · raw message
drivers/power/supply/generic-adc-battery.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/pwm/pwm-mtk-disp.c +43 -51
94 lines not on this page · raw message
drivers/regulator/core.c +85 -8
93 lines not on this page · raw message
drivers/staging/iio/resolver/ad2s1210.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/staging/rtl8192e/rtl8192e/rtl_core.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/target/target_core_tmr.c +110 -82
192 lines not on this page · raw message
drivers/target/target_core_transport.c +29 -30
59 lines not on this page · raw message
drivers/tty/tty.h new file +117 -0
117 lines not on this page · raw message
drivers/tty/tty_ioctl.c +34 -12
46 lines not on this page · raw message
fs/f2fs/segment.c +6 -70
76 lines not on this page · raw message
fs/ubifs/tnc.c +86 -56
142 lines not on this page · raw message
include/linux/mailbox/zynqmp-ipi-message.h +1 -1
Lines of this file are not shown. View the raw message.
include/linux/tty.h +0 -97
97 lines not on this page · raw message
include/soc/bcm2835/raspberrypi-firmware.h +8 -0
Lines of this file are not shown. View the raw message.
kernel/time/posix-cpu-timers.c +67 -14
81 lines not on this page · raw message
kernel/time/tick-sched.c +65 -37
102 lines not on this page · raw message
kernel/workqueue.c +35 -32
67 lines not on this page · raw message
lib/debugobjects.c +81 -60
141 lines not on this page · raw message
net/netlink/af_netlink.c +23 -52
75 lines not on this page · raw message
tools/perf/pmu-events/arch/powerpc/power9/other.json +2 -2
Lines of this file are not shown. View the raw message.
tools/perf/pmu-events/arch/powerpc/power9/pipeline.json +1 -1
Lines of this file are not shown. View the raw message.
tools/perf/util/intel-pt-decoder/intel-pt-decoder.c +2 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/prog_tests/cg_storage_multi.c +6 -2
Lines of this file are not shown. View the raw message.
tools/testing/selftests/resctrl/fill_buf.c +2 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/resctrl/mba_test.c +6 -1
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.