Skip to contentSkip to conversation

Linux 5.6.14

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages May 20, 2020 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 5.6.14 kernel.

All users of the 5.6 kernel series must upgrade.

The updated 5.6.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.6.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary

thanks,

greg k-h

------------

 Documentation/core-api/printk-formats.rst                        |   14 
 Documentation/devicetree/bindings/dma/fsl-edma.txt               |    3 
 Makefile                                                         |   18 
 arch/arm/boot/dts/dra7.dtsi                                      |    4 
 arch/arm/boot/dts/imx27-phytec-phycard-s-rdk.dts                 |    4 
 arch/arm/boot/dts/imx6dl-yapp4-ursa.dts                          |    2 
 arch/arm/boot/dts/r8a73a4.dtsi                                   |    9 
 arch/arm/boot/dts/r8a7740.dtsi                                   |    2 
 arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi                |    2 
 arch/arm64/boot/dts/amlogic/meson-g12b-khadas-vim3.dtsi          |    4 
 arch/arm64/boot/dts/amlogic/meson-g12b-ugoos-am6.dts             |    2 
 arch/arm64/boot/dts/freescale/imx8mn.dtsi                        |    2 
 arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi                     |    4 
 arch/arm64/boot/dts/renesas/r8a77980.dtsi                        |    2 
 arch/arm64/boot/dts/rockchip/rk3328-evb.dts                      |    2 
 arch/arm64/boot/dts/rockchip/rk3328-rock64.dts                   |    2 
 arch/arm64/boot/dts/rockchip/rk3399.dtsi                         |    4 
 arch/arm64/kernel/machine_kexec.c                                |    1 
 arch/powerpc/include/asm/book3s/32/kup.h                         |    2 
 arch/powerpc/include/asm/uaccess.h                               |   49 +-
 arch/powerpc/kernel/ima_arch.c                                   |    6 
 arch/powerpc/kernel/vdso32/gettimeofday.S                        |    6 
 arch/riscv/include/asm/perf_event.h                              |    8 
 arch/riscv/kernel/Makefile                                       |    2 
 arch/riscv/kernel/vdso/Makefile                                  |    6 
 arch/x86/include/asm/ftrace.h                                    |    6 
 arch/x86/include/asm/kvm_host.h                                  |    1 
 arch/x86/include/asm/stackprotector.h                            |    7 
 arch/x86/kernel/ftrace.c                                         |   29 +
 arch/x86/kernel/smpboot.c                                        |    8 
 arch/x86/kernel/unwind_orc.c                                     |   16 
 arch/x86/kvm/vmx/nested.c                                        |   19 -
 arch/x86/kvm/vmx/vmx.c                                           |   18 
 arch/x86/kvm/x86.c                                               |   19 -
 arch/x86/mm/init_64.c                                            |    3 
 arch/x86/xen/smp_pv.c                                            |    1 
 crypto/lrw.c                                                     |    4 
 crypto/xts.c                                                     |    4 
 drivers/acpi/ec.c                                                |   24 -
 drivers/acpi/internal.h                                          |    1 
 drivers/acpi/sleep.c                                             |   14 
 drivers/block/virtio_blk.c                                       |   86 ++++
 drivers/clk/clk.c                                                |    3 
 drivers/clk/rockchip/clk-rk3228.c                                |   17 
 drivers/clk/ti/clkctrl.c                                         |    1 
 drivers/cpufreq/intel_pstate.c                                   |    2 
 drivers/dma/mmp_tdma.c                                           |    5 
 drivers/dma/pch_dma.c                                            |    2 
 drivers/dma/xilinx/xilinx_dma.c                                  |   20 -
 drivers/firmware/efi/tpm.c                                       |    2 
 drivers/gpio/gpio-pca953x.c                                      |    2 
 drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c                           |    3 
 drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c                            |    2 
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c                |   26 +
 drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c                 |   12 
 drivers/gpu/drm/amd/display/dc/core/dc_stream.c                  |   28 -
 drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c               |    3 
 drivers/gpu/drm/amd/display/dc/dcn21/dcn21_resource.c            |    2 
 drivers/gpu/drm/amd/powerplay/amd_powerplay.c                    |    6 
 drivers/gpu/drm/i915/display/intel_ddi.c                         |   14 
 drivers/gpu/drm/i915/display/intel_display_power.c               |   12 
 drivers/gpu/drm/i915/display/intel_dp.c                          |    5 
 drivers/gpu/drm/i915/display/intel_fbc.c                         |    3 
 drivers/gpu/drm/i915/display/intel_sprite.c                      |   17 
 drivers/gpu/drm/i915/gem/i915_gem_domain.c                       |    7 
 drivers/gpu/drm/i915/gt/intel_engine.h                           |    9 
 drivers/gpu/drm/i915/gt/intel_engine_types.h                     |   18 
 drivers/gpu/drm/i915/gt/intel_lrc.c                              |    8 
 drivers/gpu/drm/i915/gvt/scheduler.c                             |    6 
 drivers/gpu/drm/i915/i915_drv.h                                  |    2 
 drivers/gpu/drm/i915/i915_gem_evict.c                            |   26 -
 drivers/gpu/drm/i915/i915_irq.c                                  |   16 
 drivers/gpu/drm/i915/i915_request.c                              |    8 
 drivers/gpu/drm/i915/i915_scheduler.c                            |    6 
 drivers/gpu/drm/i915/i915_scheduler.h                            |    3 
 drivers/gpu/drm/i915/i915_scheduler_types.h                      |    1 
 drivers/gpu/drm/i915/intel_pm.c                                  |    2 
 drivers/gpu/drm/qxl/qxl_image.c                                  |    3 
 drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c                           |    2 
 drivers/gpu/drm/tegra/drm.c                                      |    3 
 drivers/gpu/host1x/dev.c                                         |   13 
 drivers/hwmon/da9052-hwmon.c                                     |    4 
 drivers/hwmon/drivetemp.c                                        |    2 
 drivers/infiniband/core/cache.c                                  |    7 
 drivers/infiniband/core/nldev.c                                  |    3 
 drivers/infiniband/core/rdma_core.c                              |    3 
 drivers/infiniband/core/uverbs.h                                 |    4 
 drivers/infiniband/core/uverbs_main.c                            |   12 
 drivers/infiniband/core/uverbs_std_types_async_fd.c              |   30 +
 drivers/infiniband/hw/cxgb4/cm.c                                 |    7 
 drivers/infiniband/hw/hfi1/user_sdma.c                           |    4 
 drivers/infiniband/hw/i40iw/i40iw_hw.c                           |    2 
 drivers/infiniband/hw/mlx4/qp.c                                  |   14 
 drivers/infiniband/sw/rxe/rxe_mmap.c                             |    2 
 drivers/infiniband/sw/rxe/rxe_queue.c                            |   11 
 drivers/iommu/amd_iommu.c                                        |  175 +++++++--
 drivers/iommu/amd_iommu_types.h                                  |    9 
 drivers/mmc/core/block.c                                         |    3 
 drivers/mmc/core/queue.c                                         |   16 
 drivers/mmc/host/alcor.c                                         |    6 
 drivers/mmc/host/sdhci-acpi.c                                    |   10 
 drivers/mmc/host/sdhci-pci-gli.c                                 |   23 +
 drivers/net/dsa/dsa_loop.c                                       |    1 
 drivers/net/dsa/ocelot/felix.c                                   |    1 
 drivers/net/dsa/ocelot/felix.h                                   |    1 
 drivers/net/dsa/ocelot/felix_vsc9959.c                           |    1 
 drivers/net/ethernet/broadcom/Kconfig                            |    1 
 drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c                 |   29 -
 drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h                 |    1 
 drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c             |    2 
 drivers/net/ethernet/huawei/hinic/hinic_hw_mgmt.c                |   16 
 drivers/net/ethernet/huawei/hinic/hinic_main.c                   |   16 
 drivers/net/ethernet/moxa/moxart_ether.c                         |    2 
 drivers/net/ethernet/mscc/ocelot.c                               |   17 
 drivers/net/ethernet/mscc/ocelot_regs.c                          |    1 
 drivers/net/ethernet/natsemi/jazzsonic.c                         |    6 
 drivers/net/ethernet/netronome/nfp/abm/main.c                    |    4 
 drivers/net/ethernet/realtek/r8169_main.c                        |    2 
 drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c          |   17 
 drivers/net/ethernet/stmicro/stmmac/dwmac5.c                     |    2 
 drivers/net/hyperv/netvsc_drv.c                                  |    3 
 drivers/net/phy/microchip_t1.c                                   |  171 +++++++++
 drivers/net/phy/phy.c                                            |    8 
 drivers/net/ppp/pppoe.c                                          |    3 
 drivers/net/virtio_net.c                                         |    6 
 drivers/pinctrl/intel/pinctrl-baytrail.c                         |    1 
 drivers/pinctrl/intel/pinctrl-cherryview.c                       |    4 
 drivers/pinctrl/intel/pinctrl-sunrisepoint.c                     |   15 
 drivers/pinctrl/qcom/pinctrl-msm.c                               |    2 
 drivers/s390/net/ism_drv.c                                       |    4 
 drivers/usb/cdns3/gadget.c                                       |    2 
 drivers/usb/core/devio.c                                         |   19 -
 drivers/usb/core/hub.c                                           |    6 
 drivers/usb/dwc3/gadget.c                                        |    3 
 drivers/usb/gadget/configfs.c                                    |    3 
 drivers/usb/gadget/legacy/audio.c                                |    4 
 drivers/usb/gadget/legacy/cdc2.c                                 |    4 
 drivers/usb/gadget/legacy/ncm.c                                  |    4 
 drivers/usb/gadget/udc/net2272.c                                 |    2 
 drivers/usb/gadget/udc/tegra-xudc.c                              |    8 
 drivers/usb/host/xhci-plat.c                                     |    4 
 drivers/usb/host/xhci-ring.c                                     |    4 
 fs/cachefiles/rdwr.c                                             |   10 
 fs/cifs/cifssmb.c                                                |    2 
 fs/eventpoll.c                                                   |   48 +-
 fs/exec.c                                                        |    4 
 fs/gfs2/bmap.c                                                   |   16 
 fs/gfs2/lops.c                                                   |   19 -
 fs/io_uring.c                                                    |    4 
 fs/ioctl.c                                                       |    8 
 fs/iomap/fiemap.c                                                |    5 
 fs/nfs/fscache.c                                                 |   39 --
 fs/nfs/mount_clnt.c                                              |    3 
 fs/nfs/nfs4state.c                                               |    2 
 fs/nfs/super.c                                                   |    1 
 fs/notify/fanotify/fanotify.c                                    |   11 
 include/linux/compiler.h                                         |    6 
 include/linux/fs.h                                               |    2 
 include/linux/ftrace.h                                           |   23 +
 include/linux/host1x.h                                           |    3 
 include/linux/memcontrol.h                                       |    2 
 include/linux/pnp.h                                              |   29 -
 include/linux/skmsg.h                                            |    1 
 include/linux/sunrpc/gss_api.h                                   |    3 
 include/linux/sunrpc/gss_krb5.h                                  |    6 
 include/linux/sunrpc/xdr.h                                       |    1 
 include/linux/tty.h                                              |    2 
 include/net/netfilter/nf_conntrack.h                             |    2 
 include/net/sch_generic.h                                        |    1 
 include/net/tcp.h                                                |   13 
 include/soc/mscc/ocelot.h                                        |    1 
 include/sound/rawmidi.h                                          |    1 
 include/trace/events/rpcrdma.h                                   |   12 
 init/Kconfig                                                     |   18 
 init/initramfs.c                                                 |    2 
 init/main.c                                                      |   75 +++-
 ipc/util.c                                                       |   12 
 kernel/bpf/arraymap.c                                            |    7 
 kernel/bpf/syscall.c                                             |    4 
 kernel/bpf/verifier.c                                            |   16 
 kernel/fork.c                                                    |   13 
 kernel/trace/Kconfig                                             |    1 
 kernel/trace/bpf_trace.c                                         |   94 +++--
 kernel/trace/ftrace_internal.h                                   |   22 -
 kernel/trace/preemptirq_delay_test.c                             |   12 
 kernel/umh.c                                                     |    6 
 lib/vsprintf.c                                                   |   12 
 mm/shmem.c                                                       |    7 
 net/core/dev.c                                                   |    4 
 net/core/drop_monitor.c                                          |   11 
 net/core/filter.c                                                |    2 
 net/core/netprio_cgroup.c                                        |    2 
 net/ipv4/cipso_ipv4.c                                            |    6 
 net/ipv4/route.c                                                 |    2 
 net/ipv4/tcp.c                                                   |   27 +
 net/ipv4/tcp_bpf.c                                               |   10 
 net/ipv4/tcp_input.c                                             |    3 
 net/ipv6/calipso.c                                               |    3 
 net/ipv6/route.c                                                 |    6 
 net/mptcp/subflow.c                                              |   10 
 net/netfilter/nf_conntrack_core.c                                |   17 
 net/netfilter/nf_flow_table_core.c                               |    8 
 net/netfilter/nft_set_rbtree.c                                   |   11 
 net/netlabel/netlabel_kapi.c                                     |    6 
 net/rds/message.c                                                |   19 -
 net/rds/rdma.c                                                   |   12 
 net/rds/rds.h                                                    |    3 
 net/rds/send.c                                                   |    6 
 net/sched/cls_api.c                                              |    8 
 net/sunrpc/auth_gss/auth_gss.c                                   |   12 
 net/sunrpc/auth_gss/gss_krb5_crypto.c                            |    8 
 net/sunrpc/auth_gss/gss_krb5_wrap.c                              |   44 +-
 net/sunrpc/auth_gss/gss_mech_switch.c                            |    3 
 net/sunrpc/auth_gss/svcauth_gss.c                                |   10 
 net/sunrpc/clnt.c                                                |    5 
 net/sunrpc/xdr.c                                                 |   41 ++
 net/sunrpc/xprtrdma/backchannel.c                                |    2 
 net/sunrpc/xprtrdma/frwr_ops.c                                   |   14 
 net/sunrpc/xprtrdma/transport.c                                  |    2 
 net/sunrpc/xprtrdma/verbs.c                                      |   15 
 net/sunrpc/xprtrdma/xprt_rdma.h                                  |    5 
 scripts/kallsyms.c                                               |    2 
 sound/core/rawmidi.c                                             |   31 +
 sound/firewire/amdtp-stream-trace.h                              |    3 
 sound/pci/hda/patch_hdmi.c                                       |    2 
 sound/pci/hda/patch_realtek.c                                    |   41 ++
 sound/usb/quirks.c                                               |    9 
 tools/testing/selftests/bpf/prog_tests/mmap.c                    |    9 
 tools/testing/selftests/bpf/progs/test_overhead.c                |    4 
 tools/testing/selftests/ftrace/ftracetest                        |   22 +
 tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_type.tc |    2 
 virt/kvm/arm/vgic/vgic-mmio-v2.c                                 |   10 
 virt/kvm/arm/vgic/vgic-mmio-v3.c                                 |   12 
 virt/kvm/arm/vgic/vgic-mmio.c                                    |  187 ++++++----
 virt/kvm/arm/vgic/vgic-mmio.h                                    |   11 
 235 files changed, 1920 insertions(+), 830 deletions(-)

Adam Ford (2):
gpio: pca953x: Fix pca953x_gpio_set_config
arm64: dts: imx8mn: Change SDMA1 ahb clock for imx8mn

Adam McCoy (1):
cifs: fix leaked reference on requeued write

Adrian Hunter (1):
mmc: block: Fix request completion in the CQE timeout path

Alan Maguire (1):
ftrace/selftests: workaround cgroup RT scheduling issues

Alex Deucher (1):
drm/amdgpu: force fbdev into vram

Amir Goldstein (1):
fanotify: fix merging marks masks with FAN_ONDIR

Andreas Gruenbacher (2):
gfs2: Another gfs2_walk_metadata fix
gfs2: More gfs2_find_jhead fixes

Andy Shevchenko (2):
pinctrl: sunrisepoint: Fix PAD lock register offset for SPT-H
pinctrl: baytrail: Enable pin configuration setting for GPIO chip

Ansuel Smith (1):
pinctrl: qcom: fix wrong write in update_dual_edge

Arnd Bergmann (3):
drop_monitor: work around gcc-10 stringop-overflow warning
sun6i: dsi: fix gcc-4.8
netfilter: conntrack: avoid gcc-10 zero-length-bounds warning

Babu Moger (1):
KVM: x86: Fix pkru save/restore when guest CR4.PKE=0, move it to x86.c

Ben Chuang (2):
mmc: sdhci-pci-gli: Fix no irq handler from suspend
mmc: sdhci-pci-gli: Fix can not access GL9750 after reboot from Windows 10

Bjorn Andersson (1):
arm64: dts: qcom: msm8996: Reduce vdd_apc voltage

Borislav Petkov (1):
x86: Fix early boot crash on gcc-10, third try

Chen-Yu Tsai (2):
arm64: dts: rockchip: Replace RK805 PMIC node name with "pmic" on rk3328 boards
arm64: dts: rockchip: Rename dwc3 device nodes on rk3399 to make dtc happy

Chris Wilson (5):
cpufreq: intel_pstate: Only mention the BIOS disabling turbo mode once drm/i915/gt: Make timeslicing an explicit engine property drm/i915/gem: Remove object_is_locked assertion from unpin_from_display_plane drm/i915: Mark concurrent submissions with a weak-dependency drm/i915: Handle idling during i915_gem_evict_something busy loops

Christian Brauner (1):
fork: prevent accidental access to clone3 features

Christoph Hellwig (1):
arm64: fix the flush_icache_range arguments in machine_kexec

Christophe JAILLET (5):
net/sonic: Fix a resource leak in an error handling path in 'jazz_sonic_probe()'
net: moxa: Fix a potential double 'free_irq()'
mmc: alcor: Fix a resource leak in the error path for ->probe()
usb: gadget: net2272: Fix a memory leak in an error handling path in 'net2272_plat_probe()'
usb: gadget: audio: Fix a missing error return value in audio_bind()

Christophe Leroy (2):
powerpc/vdso32: Fallback on getres syscall when clock is unknown powerpc/32s: Fix build failure with CONFIG_PPC_KUAP_DEBUG

Chuck Lever (6):
xprtrdma: Clean up the post_send path
xprtrdma: Fix trace point use-after-free race
SUNRPC: Add "@len" parameter to gss_unwrap()
SUNRPC: Fix GSS privacy computation of auth->au_ralign
SUNRPC: Signalled ASYNC tasks need to exit
SUNRPC: Revert 241b1f419f0e ("SUNRPC: Remove xdr_buf_trim()")

Colin Ian King (1):
net: stmmac: gmac5+: fix potential integer overflow on 32 bit multiply

Cong Wang (2):
net_sched: fix tcm_parent in tc filter dump
net: fix a potential recursive NETDEV_FEAT_CHANGE

Dan Carpenter (2):
dpaa2-eth: prevent array underflow in update_cls_rule()
i40iw: Fix error handling in i40iw_manage_arp_cache()

Daniel Borkmann (1):
bpf: Restrict bpf_trace_printk()'s %s usage and add %pks, %pus specifier

Dave Wysochanski (3):
NFS: Fix fscache super_cookie index_key from changing after umount
NFS: Fix fscache super_cookie allocation
NFSv4: Fix fscache cookie aux_data to ensure change_attr is included

David Howells (1):
cachefiles: Fix corruption of the return value in cachefiles_read_or_alloc_pages()

Dmytro Laktyushkin (1):
drm/amd/display: check if REFCLK_CNTL register is present

Eric Dumazet (2):
tcp: fix error recovery in tcp_zerocopy_receive()
tcp: fix SO_RCVLOWAT hangs with fat skbs

Eric W. Biederman (1):
exec: Move would_dump into flush_old_exec

Eugeniu Rosca (1):
usb: core: hub: limit HUB_QUIRK_DISABLE_AUTOSUSPEND to USB5534B

Fabio Estevam (1):
ARM: dts: imx27-phytec-phycard-s-rdk: Fix the I2C1 pinctrl entries

Florian Fainelli (2):
net: dsa: loop: Add module soft dependency
net: broadcom: Select BROADCOM_PHY for BCMGENET

Florian Westphal (1):
netfilter: conntrack: fix infinite loop on rmmod

Geert Uytterhoeven (2):
ARM: dts: r8a73a4: Add missing CMT1 interrupts
ARM: dts: r8a7740: Add missing extal2 to CPG node

Grace Kao (1):
pinctrl: cherryview: Add missing spinlock usage in chv_gpio_irq_handler

Greg Kroah-Hartman (2):
USB: usbfs: fix mmap dma mismatch
Linux 5.6.14

Guenter Roeck (1):
hwmon: (drivetemp) Fix SCT support if SCT data tables are not supported

Guillaume Nault (1):
pppoe: only process PADT targeted at local interfaces

Heiner Kallweit (2):
net: phy: fix aneg restart in phy_ethtool_set_eee
r8169: re-establish support for RTL8401 chip version

Hugh Dickins (1):
shmem: fix possible deadlocks on shmlock_user_lock

Ilie Halip (1):
riscv: fix vdso build with lld

Imre Deak (1):
drm/i915/tgl+: Fix interrupt handling for DP AUX transactions

Ioana Ciornei (1):
dpaa2-eth: properly handle buffer size restrictions

J. Bruce Fields (1):
nfs: fix NULL deference in nfs4_get_valid_delegation

Jack Morgenstein (2):
IB/mlx4: Test return value of calls to ib_get_cached_pkey IB/core: Fix potential NULL pointer dereference in pkey cache

Jason Gunthorpe (4):
pnp: Use list_for_each_entry() instead of open coding net/rds: Use ERR_PTR for rds_message_alloc_sgs() RDMA/uverbs: Do not discard the IB_EVENT_DEVICE_FATAL event RDMA/uverbs: Move IB_EVENT_DEVICE_FATAL to destroy_uobj

Jeremy Linton (1):

      usb: usbfs: correct kernel->user page attribute mismatch

Jesus Ramos (1):
ALSA: usb-audio: Add control message quirk delay for Kingston HyperX headset

Jim Mattson (1):
KVM: x86: Fix off-by-one error in kvm_vcpu_ioctl_x86_setup_mce

Joerg Roedel (2):
iommu/amd: Fix race in increase_address_space()/fetch_pte() iommu/amd: Update Device Table in increase_address_space()

John Fastabend (2):
bpf, sockmap: msg_pop_data can incorrecty set an sge length bpf, sockmap: bpf_tcp_ingress needs to subtract bytes from sg.size

John Stultz (1):
dwc3: Remove check for HWO flag in dwc3_gadget_ep_reclaim_trb_sg()

Josh Poimboeuf (1):
x86/unwind/orc: Fix error handling in __unwind_start()

José Roberto de Souza (1):
drm/i915/display: Load DP_TP_CTL/STATUS offset before use it

Justin Swartz (1):
clk: rockchip: fix incorrect configuration of rk3228 aclk_gpu* clocks

Kai Vehmanen (1):
ALSA: hda/hdmi: fix race in monitor detection during probe

Kai-Heng Feng (2):
ALSA: hda/realtek - Fix S3 pop noise on Dell Wyse Revert "ALSA: hda/realtek: Fix pop noise on ALC225"

Kefeng Wang (1):
riscv: perf: RISCV_BASE_PMU should be independent

Kelly Littlepage (1):
net: tcp: fix rx timestamp behavior for tcp_recvmsg

Kishon Vijay Abraham I (1):
ARM: dts: dra7: Fix bus_dma_limit for PCIe

Kyungtae Kim (1):
USB: gadget: fix illegal array access in binding with UDC

Li Jun (1):
usb: host: xhci-plat: keep runtime active when removing host

Linus Torvalds (8):
Stop the ad-hoc games with -Wno-maybe-initialized
gcc-10: disable 'zero-length-bounds' warning for now
gcc-10: disable 'array-bounds' warning for now
gcc-10: disable 'stringop-overflow' warning for now
gcc-10: disable 'restrict' warning for now
gcc-10 warnings: fix low-hanging fruit
gcc-10: mark more functions __init to avoid section mismatch warnings
gcc-10: avoid shadowing standard library 'free()' in crypto

Lubomir Rintel (2):
dmaengine: mmp_tdma: Do not ignore slave config validation errors
dmaengine: mmp_tdma: Reset channel error on release

Luo bin (1):
hinic: fix a bug of ndo_stop

Maciej Żenczykowski (1):
Revert "ipv6: add mtu lock check in __ip6_rt_update_pmtu"

Madhuparna Bhowmik (1):
dmaengine: pch_dma.c: Avoid data race between probe and irq handler

Maor Gottlieb (1):
RDMA/core: Fix double put of resource

Marc Zyngier (3):
KVM: arm: vgic: Synchronize the whole guest on GIC{D,R}_I{S,C}ACTIVER read
KVM: arm: vgic-v2: Only use the virtual state when userspace accesses pending bits
clk: Unlink clock if failed to prepare or enable

Masami Hiramatsu (2):
bootconfig: Fix to remove bootconfig data from initrd while boot
bootconfig: Fix to prevent warning message if no bootconfig option

Matt Roper (2):
drm/i915/tgl: Add Wa_14010477008:tgl drm/i915/tgl: TBT AUX should use TC power well ops

Michael S. Tsirkin (1):
virtio_net: fix lockdep warning on 32 bit

Michael Walle (1):
dt-bindings: dma: fsl-edma: fix ls1028a-edma compatible

Michal Vokáč (1):
ARM: dts: imx6dl-yapp4: Fix Ursa board Ethernet connection

Mike Marciniszyn (1):
IB/hfi1: Fix another case where pq is left on waitlist

Nathan Chancellor (1):
hv_netvsc: Fix netvsc_start_xmit's return type

Nayna Jain (1):
powerpc/ima: Fix secure boot rules in ima arch policy

Neil Armstrong (3):
arm64: dts: meson-g12b-ugoos-am6: fix usb vbus-supply
arm64: dts: meson-g12b-khadas-vim3: add missing frddr_a status property
arm64: dts: meson-g12-common: fix dwc2 clock names

Nicholas Kazlauskas (1):
drm/amd/display: Defer cursor update around VUPDATE for all ASIC

Nicholas Piggin (1):
powerpc/uaccess: Evaluate macro arguments once, before user access is allowed

Olga Kornievskaia (1):
NFSv3: fix rpc receive buffer size for MOUNT call

Oliver Upton (2):
KVM: nVMX: Consolidate nested MTF checks to helper function
kvm: nVMX: reflect MTF VM-exits if injected by L1

Pablo Neira Ayuso (1):
netfilter: flowtable: set NF_FLOW_TEARDOWN flag on entry expiration

Paolo Abeni (3):
mptcp: set correct vfs info for subflows
netlabel: cope with NULL catmap
net: ipv4: really enforce backoff for redirects

Pavel Begunkov (1):
io_uring: check non-sync defer_list carefully

Peter Chen (1):

      usb: cdns3: gadget: prev_req->trb is NULL for ep0

Peter Jones (1):
Make the "Reducing compressed framebufer size" message be DRM_INFO_ONCE()

Phil Sutter (1):
netfilter: nft_set_rbtree: Add missing expired checks

Potnuri Bharat Teja (1):
RDMA/iw_cxgb4: Fix incorrect function parameters

Rafael J. Wysocki (1):
ACPI: EC: PM: Avoid premature returns from acpi_s2idle_wake()

Raul E Rangel (1):
mmc: sdhci-acpi: Add SDHCI_QUIRK2_BROKEN_64_BIT_DMA for AMDI0040

Ritesh Harjani (1):
fibmap: Warn and return an error in case of block > INT_MAX

Roman Penyaev (1):
epoll: call final ep_events_available() check under the lock

Samu Nuutamo (1):
hwmon: (da9052) Synchronize access with mfd

Sarthak Garg (1):
mmc: core: Fix recursive locking issue in CQE recovery path

Sasha Levin (1):
bpf: Fix bug in mmap() implementation for BPF array map

Sebastian von Ohr (1):
dmaengine: xilinx_dma: Add missing check for empty list

Sergei Trofimovich (1):
Makefile: disallow data races on gcc-10 as well

Simon Ser (1):
drm/amd/display: add basic atomic check for cursor plane

Sriharsha Allenki (1):
usb: xhci: Fix NULL pointer dereference when enqueuing trbs from urb sg list

Stefan Hajnoczi (1):
virtio-blk: handle block_device_operations callbacks after hot unplug

Steven Rostedt (VMware) (2):
tracing: Wait for preempt irq delay thread to execute
x86/ftrace: Have ftrace trampolines turn read-only at the end of system boot up

Sudip Mukherjee (1):
RDMA/rxe: Always return ERR_PTR from rxe_create_mmap_info()

Sultan Alsawaf (1):
drm/i915: Don't enable WaIncreaseLatencyIPCEnabled when IPC is disabled

Sung Lee (1):
drm/amd/display: Update downspread percent to match spreadsheet for DCN2.1

Takashi Iwai (3):
ALSA: hda/realtek - Limit int mic boost for Thinkpad T530
ALSA: hda/realtek - Add COEF workaround for ASUS ZenBook UX431DA
ALSA: rawmidi: Fix racy buffer resize under concurrent accesses

Takashi Sakamoto (1):
ALSA: firewire-lib: fix 'function sizeof not defined' error of tracepoints format

Tero Kristo (1):
clk: ti: clkctrl: Fix Bad of_node_put within clkctrl_get_name

Thierry Reding (2):
drm/tegra: Fix SMMU support on Tegra124 and Tegra210
usb: gadget: tegra-xudc: Fix idle suspend/resume

Tiecheng Zhou (1):
drm/amd/powerplay: avoid using pm_en before it is initialized revised

Tom St Denis (1):
drm/amd/amdgpu: add raven1 part to the gfxoff quirk list

Vasily Averin (2):
drm/qxl: lost qxl_bo_kunmap_atomic_page in qxl_image_init_helper() ipc/util.c: sysvipc_find_ipc() incorrectly updates position index

Veerabhadrarao Badiganti (1):
mmc: core: Check request type before completing the request

Vincent Minet (1):
umh: fix memory leak on execve failure

Vinod Koul (1):
net: stmmac: fix num_por initialization

Vladimir Oltean (2):
net: dsa: ocelot: the MAC table on Felix is twice as large
net: mscc: ocelot: ANA_AUTOAGE_AGE_PERIOD holds a value in seconds, not ms

Wei Yongjun (5):
nfp: abm: fix error return code in nfp_abm_vnic_alloc()
bpf: Fix error return code in map_lookup_and_delete_elem() s390/ism: fix error return code in ism_probe()
usb: gadget: legacy: fix error return code in gncm_bind()
usb: gadget: legacy: fix error return code in cdc_bind()

Xiao Yang (1):
selftests/ftrace: Check the first record for kprobe_args_type.tc

Xiaodong Yan (1):
drm/amd/display: blank dp stream before re-train the link

Xiaoguang Wang (1):
io_uring: use cond_resched() in io_ring_ctx_wait_and_kill()

Xiyu Yang (1):
bpf: Fix sk_psock refcnt leak when receiving message

Yafang Shao (1):
mm, memcg: fix inconsistent oom event behavior

Yonghong Song (2):
bpf: Enforce returning 0 for fentry/fexit progs selftests/bpf: Enforce returning 0 for fentry/fexit programs

Yoshihiro Shimoda (1):

      arm64: dts: renesas: r8a77980: Fix IPMMU VIP[01] nodes

Yuiko Oshino (1):
net: phy: microchip_t1: add lan87xx_phy_init to initialize the lan87xx phy.

Zefan Li (1):
netprio_cgroup: Fix unlimited memory leak of v2 cgroups

Zhenyu Wang (1):
drm/i915/gvt: Fix kernel oops for 3-level ppgtt guest

author maintainer
#1 lore raw
Documentation/core-api/printk-formats.rst +14 -0
index 8ebe46b1af39..5dfcc4592b23 100644
@@ -112,6 +112,20 @@ used when printing stack backtraces. The specifier takes into
 consideration the effect of compiler optimisations which may occur
 when tail-calls are used and marked with the noreturn GCC attribute.
 
+Probed Pointers from BPF / tracing
+----------------------------------
+
+::
+
+	%pks	kernel string
+	%pus	user string
+
+The ``k`` and ``u`` specifiers are used for printing prior probed memory from
+either kernel memory (k) or user memory (u). The subsequent ``s`` specifier
+results in printing a string. For direct use in regular vsnprintf() the (k)
+and (u) annotation is ignored, however, when used out of BPF's bpf_trace_printk(),
+for example, it reads the memory it is pointing to without faulting.
+
 Kernel Pointers
 ---------------
 
Documentation/devicetree/bindings/dma/fsl-edma.txt +2 -1
index e77b08ebcd06..ee1754739b4b 100644
@@ -10,7 +10,8 @@ Required properties:
 - compatible :
 	- "fsl,vf610-edma" for eDMA used similar to that on Vybrid vf610 SoC
 	- "fsl,imx7ulp-edma" for eDMA2 used similar to that on i.mx7ulp
-	- "fsl,fsl,ls1028a-edma" for eDMA used similar to that on Vybrid vf610 SoC
+	- "fsl,ls1028a-edma" followed by "fsl,vf610-edma" for eDMA used on the
+	  LS1028A SoC.
 - reg : Specifies base physical address(s) and size of the eDMA registers.
 	The 1st region is eDMA control register's address and size.
 	The 2nd and the 3rd regions are programmable channel multiplexing
Makefile +13 -5
index d252219666fd..713f93cceffe 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 5
 PATCHLEVEL = 6
-SUBLEVEL = 13
+SUBLEVEL = 14
 EXTRAVERSION =
 NAME = Kleptomaniac Octopus
 
@@ -708,12 +708,9 @@ else ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
 KBUILD_CFLAGS += -Os
 endif
 
-ifdef CONFIG_CC_DISABLE_WARN_MAYBE_UNINITIALIZED
-KBUILD_CFLAGS   += -Wno-maybe-uninitialized
-endif
-
 # Tell gcc to never replace conditional load with a non-conditional one
 KBUILD_CFLAGS	+= $(call cc-option,--param=allow-store-data-races=0)
+KBUILD_CFLAGS	+= $(call cc-option,-fno-allow-store-data-races)
 
 include scripts/Makefile.kcov
 include scripts/Makefile.gcc-plugins
@@ -861,6 +858,17 @@ KBUILD_CFLAGS += -Wno-pointer-sign
 # disable stringop warnings in gcc 8+
 KBUILD_CFLAGS += $(call cc-disable-warning, stringop-truncation)
 
+# We'll want to enable this eventually, but it's not going away for 5.7 at least
+KBUILD_CFLAGS += $(call cc-disable-warning, zero-length-bounds)
+KBUILD_CFLAGS += $(call cc-disable-warning, array-bounds)
+KBUILD_CFLAGS += $(call cc-disable-warning, stringop-overflow)
+
+# Another good warning that we'll want to enable eventually
+KBUILD_CFLAGS += $(call cc-disable-warning, restrict)
+
+# Enabled with W=2, disabled by default as noisy
+KBUILD_CFLAGS += $(call cc-disable-warning, maybe-uninitialized)
+
 # disable invalid "can't wrap" optimizations for signed / pointers
 KBUILD_CFLAGS	+= $(call cc-option,-fno-strict-overflow)
 
arch/arm/boot/dts/dra7.dtsi +2 -2
index 5f5ee16f07a3..a341511f014c 100644
@@ -172,6 +172,7 @@ axi@0 {
 			#address-cells = <1>;
 			ranges = <0x51000000 0x51000000 0x3000
 				  0x0	     0x20000000 0x10000000>;
+			dma-ranges;
 			/**
 			 * To enable PCI endpoint mode, disable the pcie1_rc
 			 * node and enable pcie1_ep mode.
@@ -185,7 +186,6 @@ pcie1_rc: pcie@51000000 {
 				device_type = "pci";
 				ranges = <0x81000000 0 0          0x03000 0 0x00010000
 					  0x82000000 0 0x20013000 0x13000 0 0xffed000>;
-				dma-ranges = <0x02000000 0x0 0x00000000 0x00000000 0x1 0x00000000>;
 				bus-range = <0x00 0xff>;
 				#interrupt-cells = <1>;
 				num-lanes = <1>;
@@ -230,6 +230,7 @@ axi@1 {
 			#address-cells = <1>;
 			ranges = <0x51800000 0x51800000 0x3000
 				  0x0	     0x30000000 0x10000000>;
+			dma-ranges;
 			status = "disabled";
 			pcie2_rc: pcie@51800000 {
 				reg = <0x51800000 0x2000>, <0x51802000 0x14c>, <0x1000 0x2000>;
@@ -240,7 +241,6 @@ pcie2_rc: pcie@51800000 {
 				device_type = "pci";
 				ranges = <0x81000000 0 0          0x03000 0 0x00010000
 					  0x82000000 0 0x30013000 0x13000 0 0xffed000>;
-				dma-ranges = <0x02000000 0x0 0x00000000 0x00000000 0x1 0x00000000>;
 				bus-range = <0x00 0xff>;
 				#interrupt-cells = <1>;
 				num-lanes = <1>;
arch/arm/boot/dts/imx27-phytec-phycard-s-rdk.dts +2 -2
index 0cd75dadf292..188639738dc3 100644
@@ -75,8 +75,8 @@ &iomuxc {
 	imx27-phycard-s-rdk {
 		pinctrl_i2c1: i2c1grp {
 			fsl,pins = <
-				MX27_PAD_I2C2_SDA__I2C2_SDA 0x0
-				MX27_PAD_I2C2_SCL__I2C2_SCL 0x0
+				MX27_PAD_I2C_DATA__I2C_DATA 0x0
+				MX27_PAD_I2C_CLK__I2C_CLK 0x0
 			>;
 		};
 
arch/arm/boot/dts/imx6dl-yapp4-ursa.dts +1 -1
index 0d594e4bd559..a1173bf5bff5 100644
@@ -38,7 +38,7 @@ &reg_usb_h1_vbus {
 };
 
 &switch_ports {
-	/delete-node/ port@2;
+	/delete-node/ port@3;
 };
 
 &touchscreen {
arch/arm/boot/dts/r8a73a4.dtsi +8 -1
index a5cd31229fbd..a3ba722a9d7f 100644
@@ -131,7 +131,14 @@ i2c5: i2c@e60b0000 {
 	cmt1: timer@e6130000 {
 		compatible = "renesas,r8a73a4-cmt1", "renesas,rcar-gen2-cmt1";
 		reg = <0 0xe6130000 0 0x1004>;
-		interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
+		interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>,
+			     <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>,
+			     <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>,
+			     <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
+			     <GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>,
+			     <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>,
+			     <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>,
+			     <GIC_SPI 127 IRQ_TYPE_LEVEL_HIGH>;
 		clocks = <&mstp3_clks R8A73A4_CLK_CMT1>;
 		clock-names = "fck";
 		power-domains = <&pd_c5>;
arch/arm/boot/dts/r8a7740.dtsi +1 -1
index ebc1ff64f530..90feb2cf9960 100644
@@ -479,7 +479,7 @@ fsibck_clk: fsibck {
 		cpg_clocks: cpg_clocks@e6150000 {
 			compatible = "renesas,r8a7740-cpg-clocks";
 			reg = <0xe6150000 0x10000>;
-			clocks = <&extal1_clk>, <&extalr_clk>;
+			clocks = <&extal1_clk>, <&extal2_clk>, <&extalr_clk>;
 			#clock-cells = <1>;
 			clock-output-names = "system", "pllc0", "pllc1",
 					     "pllc2", "r",
arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi +1 -1
index abe04f4ad7d8..eeaa95baaa10 100644
@@ -2204,7 +2204,7 @@ dwc2: usb@ff400000 {
 				reg = <0x0 0xff400000 0x0 0x40000>;
 				interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
 				clocks = <&clkc CLKID_USB1_DDR_BRIDGE>;
-				clock-names = "ddr";
+				clock-names = "otg";
 				phys = <&usb2_phy1>;
 				phy-names = "usb2-phy";
 				dr_mode = "peripheral";
arch/arm64/boot/dts/amlogic/meson-g12b-khadas-vim3.dtsi +4 -0
index 554863429aa6..e2094575f528 100644
@@ -152,6 +152,10 @@ &cpu103 {
 	clock-latency = <50000>;
 };
 
+&frddr_a {
+	status = "okay";
+};
+
 &frddr_b {
 	status = "okay";
 };
arch/arm64/boot/dts/amlogic/meson-g12b-ugoos-am6.dts +1 -1
index ccd0bced01e8..2e66d6418a59 100644
@@ -545,7 +545,7 @@ &uart_AO {
 &usb {
 	status = "okay";
 	dr_mode = "host";
-	vbus-regulator = <&usb_pwr_en>;
+	vbus-supply = <&usb_pwr_en>;
 };
 
 &usb2_phy0 {
arch/arm64/boot/dts/freescale/imx8mn.dtsi +1 -1
index a44b5438e842..882e913436ca 100644
@@ -661,7 +661,7 @@ sdma1: dma-controller@30bd0000 {
 				reg = <0x30bd0000 0x10000>;
 				interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
 				clocks = <&clk IMX8MN_CLK_SDMA1_ROOT>,
-					 <&clk IMX8MN_CLK_SDMA1_ROOT>;
+					 <&clk IMX8MN_CLK_AHB>;
 				clock-names = "ipg", "ahb";
 				#dma-cells = <3>;
 				fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi +2 -2
index fff6115f2670..a85b85d85a5f 100644
@@ -658,8 +658,8 @@ s10 {
 	s11 {
 		qcom,saw-leader;
 		regulator-always-on;
-		regulator-min-microvolt = <1230000>;
-		regulator-max-microvolt = <1230000>;
+		regulator-min-microvolt = <980000>;
+		regulator-max-microvolt = <980000>;
 	};
 };
 
arch/arm64/boot/dts/renesas/r8a77980.dtsi +2 -0
index b340fb469999..1692bc95129e 100644
@@ -1318,6 +1318,7 @@ ipmmu_vi0: mmu@febd0000 {
 		ipmmu_vip0: mmu@e7b00000 {
 			compatible = "renesas,ipmmu-r8a77980";
 			reg = <0 0xe7b00000 0 0x1000>;
+			renesas,ipmmu-main = <&ipmmu_mm 4>;
 			power-domains = <&sysc R8A77980_PD_ALWAYS_ON>;
 			#iommu-cells = <1>;
 		};
@@ -1325,6 +1326,7 @@ ipmmu_vip0: mmu@e7b00000 {
 		ipmmu_vip1: mmu@e7960000 {
 			compatible = "renesas,ipmmu-r8a77980";
 			reg = <0 0xe7960000 0 0x1000>;
+			renesas,ipmmu-main = <&ipmmu_mm 11>;
 			power-domains = <&sysc R8A77980_PD_ALWAYS_ON>;
 			#iommu-cells = <1>;
 		};
arch/arm64/boot/dts/rockchip/rk3328-evb.dts +1 -1
index 49c4b96da3d4..6abc6f4a86cf 100644
@@ -92,7 +92,7 @@ &gmac2phy {
 &i2c1 {
 	status = "okay";
 
-	rk805: rk805@18 {
+	rk805: pmic@18 {
 		compatible = "rockchip,rk805";
 		reg = <0x18>;
 		interrupt-parent = <&gpio2>;
arch/arm64/boot/dts/rockchip/rk3328-rock64.dts +1 -1
index 62936b432f9a..304fad1a0b57 100644
@@ -169,7 +169,7 @@ &hdmiphy {
 &i2c1 {
 	status = "okay";
 
-	rk805: rk805@18 {
+	rk805: pmic@18 {
 		compatible = "rockchip,rk805";
 		reg = <0x18>;
 		interrupt-parent = <&gpio2>;
arch/arm64/boot/dts/rockchip/rk3399.dtsi +2 -2
index 33cc21fcf4c1..5c4238a80144 100644
@@ -410,7 +410,7 @@ usbdrd3_0: usb@fe800000 {
 		reset-names = "usb3-otg";
 		status = "disabled";
 
-		usbdrd_dwc3_0: dwc3 {
+		usbdrd_dwc3_0: usb@fe800000 {
 			compatible = "snps,dwc3";
 			reg = <0x0 0xfe800000 0x0 0x100000>;
 			interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH 0>;
@@ -446,7 +446,7 @@ usbdrd3_1: usb@fe900000 {
 		reset-names = "usb3-otg";
 		status = "disabled";
 
-		usbdrd_dwc3_1: dwc3 {
+		usbdrd_dwc3_1: usb@fe900000 {
 			compatible = "snps,dwc3";
 			reg = <0x0 0xfe900000 0x0 0x100000>;
 			interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH 0>;
arch/arm64/kernel/machine_kexec.c +1 -0
index 8e9c924423b4..a0b144cfaea7 100644
@@ -177,6 +177,7 @@ void machine_kexec(struct kimage *kimage)
 	 * the offline CPUs. Therefore, we must use the __* variant here.
 	 */
 	__flush_icache_range((uintptr_t)reboot_code_buffer,
+			     (uintptr_t)reboot_code_buffer +
 			     arm64_relocate_new_kernel_size);
 
 	/* Flush the kimage list and its buffers. */
arch/powerpc/include/asm/book3s/32/kup.h +1 -1
index 3c0ba22dc360..db0a1c281587 100644
@@ -75,7 +75,7 @@
 
 .macro kuap_check	current, gpr
 #ifdef CONFIG_PPC_KUAP_DEBUG
-	lwz	\gpr2, KUAP(thread)
+	lwz	\gpr, KUAP(thread)
 999:	twnei	\gpr, 0
 	EMIT_BUG_ENTRY 999b, __FILE__, __LINE__, (BUGFLAG_WARNING | BUGFLAG_ONCE)
 #endif
arch/powerpc/include/asm/uaccess.h +35 -14

102 lines not on this page · raw message

arch/powerpc/kernel/ima_arch.c +3 -3
index e34116255ced..957abd592075 100644
@@ -19,12 +19,12 @@ bool arch_ima_get_secureboot(void)
  * to be stored as an xattr or as an appended signature.
  *
  * To avoid duplicate signature verification as much as possible, the IMA
- * policy rule for module appraisal is added only if CONFIG_MODULE_SIG_FORCE
+ * policy rule for module appraisal is added only if CONFIG_MODULE_SIG
  * is not enabled.
  */
 static const char *const secure_rules[] = {
 	"appraise func=KEXEC_KERNEL_CHECK appraise_flag=check_blacklist appraise_type=imasig|modsig",
-#ifndef CONFIG_MODULE_SIG_FORCE
+#ifndef CONFIG_MODULE_SIG
 	"appraise func=MODULE_CHECK appraise_flag=check_blacklist appraise_type=imasig|modsig",
 #endif
 	NULL
@@ -50,7 +50,7 @@ static const char *const secure_and_trusted_rules[] = {
 	"measure func=KEXEC_KERNEL_CHECK template=ima-modsig",
 	"measure func=MODULE_CHECK template=ima-modsig",
 	"appraise func=KEXEC_KERNEL_CHECK appraise_flag=check_blacklist appraise_type=imasig|modsig",
-#ifndef CONFIG_MODULE_SIG_FORCE
+#ifndef CONFIG_MODULE_SIG
 	"appraise func=MODULE_CHECK appraise_flag=check_blacklist appraise_type=imasig|modsig",
 #endif
 	NULL
arch/powerpc/kernel/vdso32/gettimeofday.S +3 -3
index a3951567118a..e7f8f9f1b3f4 100644
@@ -218,11 +218,11 @@ V_FUNCTION_BEGIN(__kernel_clock_getres)
 	blr
 
 	/*
-	 * invalid clock
+	 * syscall fallback
 	 */
 99:
-	li	r3, EINVAL
-	crset	so
+	li	r0,__NR_clock_getres
+	sc
 	blr
   .cfi_endproc
 V_FUNCTION_END(__kernel_clock_getres)
arch/riscv/include/asm/perf_event.h +2 -6
index 0234048b12bc..062efd3a1d5d 100644
@@ -12,19 +12,14 @@
 #include <linux/ptrace.h>
 #include <linux/interrupt.h>
 
+#ifdef CONFIG_RISCV_BASE_PMU
 #define RISCV_BASE_COUNTERS	2
 
 /*
  * The RISCV_MAX_COUNTERS parameter should be specified.
  */
 
-#ifdef CONFIG_RISCV_BASE_PMU
 #define RISCV_MAX_COUNTERS	2
-#endif
-
-#ifndef RISCV_MAX_COUNTERS
-#error "Please provide a valid RISCV_MAX_COUNTERS for the PMU."
-#endif
 
 /*
  * These are the indexes of bits in counteren register *minus* 1,
@@ -82,6 +77,7 @@ struct riscv_pmu {
 	int		irq;
 };
 
+#endif
 #ifdef CONFIG_PERF_EVENTS
 #define perf_arch_bpf_user_pt_regs(regs) (struct user_regs_struct *)regs
 #endif
arch/riscv/kernel/Makefile +1 -1
index f40205cb9a22..1dcc095dc23c 100644
@@ -38,7 +38,7 @@ obj-$(CONFIG_MODULE_SECTIONS)	+= module-sections.o
 obj-$(CONFIG_FUNCTION_TRACER)	+= mcount.o ftrace.o
 obj-$(CONFIG_DYNAMIC_FTRACE)	+= mcount-dyn.o
 
-obj-$(CONFIG_PERF_EVENTS)	+= perf_event.o
+obj-$(CONFIG_RISCV_BASE_PMU)	+= perf_event.o
 obj-$(CONFIG_PERF_EVENTS)	+= perf_callchain.o
 obj-$(CONFIG_HAVE_PERF_REGS)	+= perf_regs.o
 obj-$(CONFIG_RISCV_SBI)		+= sbi.o
arch/riscv/kernel/vdso/Makefile +3 -3
index 33b16f4212f7..a4ee3a0e7d20 100644
@@ -33,15 +33,15 @@ $(obj)/vdso.so.dbg: $(src)/vdso.lds $(obj-vdso) FORCE
 	$(call if_changed,vdsold)
 
 # We also create a special relocatable object that should mirror the symbol
-# table and layout of the linked DSO.  With ld -R we can then refer to
-# these symbols in the kernel code rather than hand-coded addresses.
+# table and layout of the linked DSO. With ld --just-symbols we can then
+# refer to these symbols in the kernel code rather than hand-coded addresses.
 
 SYSCFLAGS_vdso.so.dbg = -shared -s -Wl,-soname=linux-vdso.so.1 \
 	-Wl,--build-id -Wl,--hash-style=both
 $(obj)/vdso-dummy.o: $(src)/vdso.lds $(obj)/rt_sigreturn.o FORCE
 	$(call if_changed,vdsold)
 
-LDFLAGS_vdso-syms.o := -r -R
+LDFLAGS_vdso-syms.o := -r --just-symbols
 $(obj)/vdso-syms.o: $(obj)/vdso-dummy.o FORCE
 	$(call if_changed,ld)
 
arch/x86/include/asm/ftrace.h +6 -0
index 85be2f506272..89af0d2c62aa 100644
@@ -56,6 +56,12 @@ struct dyn_arch_ftrace {
 
 #ifndef __ASSEMBLY__
 
+#if defined(CONFIG_FUNCTION_TRACER) && defined(CONFIG_DYNAMIC_FTRACE)
+extern void set_ftrace_ops_ro(void);
+#else
+static inline void set_ftrace_ops_ro(void) { }
+#endif
+
 #define ARCH_HAS_SYSCALL_MATCH_SYM_NAME
 static inline bool arch_syscall_match_sym_name(const char *sym, const char *name)
 {
arch/x86/include/asm/kvm_host.h +1 -0
index 7ba99c0759cf..c121b8f24597 100644
@@ -574,6 +574,7 @@ struct kvm_vcpu_arch {
 	unsigned long cr4;
 	unsigned long cr4_guest_owned_bits;
 	unsigned long cr8;
+	u32 host_pkru;
 	u32 pkru;
 	u32 hflags;
 	u64 efer;
arch/x86/include/asm/stackprotector.h +6 -1
index 91e29b6a86a5..9804a7957f4e 100644
@@ -55,8 +55,13 @@
 /*
  * Initialize the stackprotector canary value.
  *
- * NOTE: this must only be called from functions that never return,
+ * NOTE: this must only be called from functions that never return
  * and it must always be inlined.
+ *
+ * In addition, it should be called from a compilation unit for which
+ * stack protector is disabled. Alternatively, the caller should not end
+ * with a function call which gets tail-call optimized as that would
+ * lead to checking a modified canary value.
  */
 static __always_inline void boot_init_stack_canary(void)
 {
arch/x86/kernel/ftrace.c +28 -1
index 37a0aeaf89e7..b0e641793be4 100644
@@ -407,7 +407,8 @@ create_trampoline(struct ftrace_ops *ops, unsigned int *tramp_size)
 
 	set_vm_flush_reset_perms(trampoline);
 
-	set_memory_ro((unsigned long)trampoline, npages);
+	if (likely(system_state != SYSTEM_BOOTING))
+		set_memory_ro((unsigned long)trampoline, npages);
 	set_memory_x((unsigned long)trampoline, npages);
 	return (unsigned long)trampoline;
 fail:
@@ -415,6 +416,32 @@ create_trampoline(struct ftrace_ops *ops, unsigned int *tramp_size)
 	return 0;
 }
 
+void set_ftrace_ops_ro(void)
+{
+	struct ftrace_ops *ops;
+	unsigned long start_offset;
+	unsigned long end_offset;
+	unsigned long npages;
+	unsigned long size;
+
+	do_for_each_ftrace_op(ops, ftrace_ops_list) {
+		if (!(ops->flags & FTRACE_OPS_FL_ALLOC_TRAMP))
+			continue;
+
+		if (ops->flags & FTRACE_OPS_FL_SAVE_REGS) {
+			start_offset = (unsigned long)ftrace_regs_caller;
+			end_offset = (unsigned long)ftrace_regs_caller_end;
+		} else {
+			start_offset = (unsigned long)ftrace_caller;
+			end_offset = (unsigned long)ftrace_epilogue;
+		}
+		size = end_offset - start_offset;
+		size = size + RET_SIZE + sizeof(void *);
+		npages = DIV_ROUND_UP(size, PAGE_SIZE);
+		set_memory_ro((unsigned long)ops->trampoline, npages);
+	} while_for_each_ftrace_op(ops);
+}
+
 static unsigned long calc_trampoline_call_offset(bool save_regs)
 {
 	unsigned long start_offset;
arch/x86/kernel/smpboot.c +8 -0
index 69881b2d446c..9674321ce3a3 100644
@@ -262,6 +262,14 @@ static void notrace start_secondary(void *unused)
 
 	wmb();
 	cpu_startup_entry(CPUHP_AP_ONLINE_IDLE);
+
+	/*
+	 * Prevent tail call to cpu_startup_entry() because the stack protector
+	 * guard has been changed a couple of function calls up, in
+	 * boot_init_stack_canary() and must not be checked before tail calling
+	 * another function.
+	 */
+	prevent_tail_call_optimization();
 }
 
 /**
arch/x86/kernel/unwind_orc.c +9 -7
index 80537dcbddef..9414f02a55ea 100644
@@ -611,23 +611,23 @@ EXPORT_SYMBOL_GPL(unwind_next_frame);
 void __unwind_start(struct unwind_state *state, struct task_struct *task,
 		    struct pt_regs *regs, unsigned long *first_frame)
 {
-	if (!orc_init)
-		goto done;
-
 	memset(state, 0, sizeof(*state));
 	state->task = task;
 
+	if (!orc_init)
+		goto err;
+
 	/*
 	 * Refuse to unwind the stack of a task while it's executing on another
 	 * CPU.  This check is racy, but that's ok: the unwinder has other
 	 * checks to prevent it from going off the rails.
 	 */
 	if (task_on_another_cpu(task))
-		goto done;
+		goto err;
 
 	if (regs) {
 		if (user_mode(regs))
-			goto done;
+			goto the_end;
 
 		state->ip = regs->ip;
 		state->sp = regs->sp;
@@ -660,6 +660,7 @@ void __unwind_start(struct unwind_state *state, struct task_struct *task,
 		 * generate some kind of backtrace if this happens.
 		 */
 		void *next_page = (void *)PAGE_ALIGN((unsigned long)state->sp);
+		state->error = true;
 		if (get_stack_info(next_page, state->task, &state->stack_info,
 				   &state->stack_mask))
 			return;
@@ -685,8 +686,9 @@ void __unwind_start(struct unwind_state *state, struct task_struct *task,
 
 	return;
 
-done:
+err:
+	state->error = true;
+the_end:
 	state->stack_info.type = STACK_TYPE_UNKNOWN;
-	return;
 }
 EXPORT_SYMBOL_GPL(__unwind_start);
arch/x86/kvm/vmx/nested.c +18 -1
index eec7b2d93104..3a2f05ef51fa 100644
@@ -5504,6 +5504,23 @@ static bool nested_vmx_exit_handled_vmcs_access(struct kvm_vcpu *vcpu,
 	return 1 & (b >> (field & 7));
 }
 
+static bool nested_vmx_exit_handled_mtf(struct vmcs12 *vmcs12)
+{
+	u32 entry_intr_info = vmcs12->vm_entry_intr_info_field;
+
+	if (nested_cpu_has_mtf(vmcs12))
+		return true;
+
+	/*
+	 * An MTF VM-exit may be injected into the guest by setting the
+	 * interruption-type to 7 (other event) and the vector field to 0. Such
+	 * is the case regardless of the 'monitor trap flag' VM-execution
+	 * control.
+	 */
+	return entry_intr_info == (INTR_INFO_VALID_MASK
+				   | INTR_TYPE_OTHER_EVENT);
+}
+
 /*
  * Return 1 if we should exit from L2 to L1 to handle an exit, or 0 if we
  * should handle it ourselves in L0 (and then continue L2). Only call this
@@ -5618,7 +5635,7 @@ bool nested_vmx_exit_reflected(struct kvm_vcpu *vcpu, u32 exit_reason)
 	case EXIT_REASON_MWAIT_INSTRUCTION:
 		return nested_cpu_has(vmcs12, CPU_BASED_MWAIT_EXITING);
 	case EXIT_REASON_MONITOR_TRAP_FLAG:
-		return nested_cpu_has(vmcs12, CPU_BASED_MONITOR_TRAP_FLAG);
+		return nested_vmx_exit_handled_mtf(vmcs12);
 	case EXIT_REASON_MONITOR_INSTRUCTION:
 		return nested_cpu_has(vmcs12, CPU_BASED_MONITOR_EXITING);
 	case EXIT_REASON_PAUSE_INSTRUCTION:
arch/x86/kvm/vmx/vmx.c +0 -18
index c1ffe7d24f83..a83c94a971ee 100644
@@ -1380,7 +1380,6 @@ void vmx_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
 
 	vmx_vcpu_pi_load(vcpu, cpu);
 
-	vmx->host_pkru = read_pkru();
 	vmx->host_debugctlmsr = get_debugctlmsr();
 }
 
@@ -6538,11 +6537,6 @@ static void vmx_vcpu_run(struct kvm_vcpu *vcpu)
 
 	kvm_load_guest_xsave_state(vcpu);
 
-	if (static_cpu_has(X86_FEATURE_PKU) &&
-	    kvm_read_cr4_bits(vcpu, X86_CR4_PKE) &&
-	    vcpu->arch.pkru != vmx->host_pkru)
-		__write_pkru(vcpu->arch.pkru);
-
 	pt_guest_enter(vmx);
 
 	atomic_switch_perf_msrs(vmx);
@@ -6631,18 +6625,6 @@ static void vmx_vcpu_run(struct kvm_vcpu *vcpu)
 
 	pt_guest_exit(vmx);
 
-	/*
-	 * eager fpu is enabled if PKEY is supported and CR4 is switched
-	 * back on host, so it is safe to read guest PKRU from current
-	 * XSAVE.
-	 */
-	if (static_cpu_has(X86_FEATURE_PKU) &&
-	    kvm_read_cr4_bits(vcpu, X86_CR4_PKE)) {
-		vcpu->arch.pkru = rdpkru();
-		if (vcpu->arch.pkru != vmx->host_pkru)
-			__write_pkru(vmx->host_pkru);
-	}
-
 	kvm_load_host_xsave_state(vcpu);
 
 	vmx->nested.nested_run_pending = 0;
arch/x86/kvm/x86.c +18 -1
index 17650bda4331..7f3371a39ed0 100644
@@ -809,11 +809,25 @@ void kvm_load_guest_xsave_state(struct kvm_vcpu *vcpu)
 		    vcpu->arch.ia32_xss != host_xss)
 			wrmsrl(MSR_IA32_XSS, vcpu->arch.ia32_xss);
 	}
+
+	if (static_cpu_has(X86_FEATURE_PKU) &&
+	    (kvm_read_cr4_bits(vcpu, X86_CR4_PKE) ||
+	     (vcpu->arch.xcr0 & XFEATURE_MASK_PKRU)) &&
+	    vcpu->arch.pkru != vcpu->arch.host_pkru)
+		__write_pkru(vcpu->arch.pkru);
 }
 EXPORT_SYMBOL_GPL(kvm_load_guest_xsave_state);
 
 void kvm_load_host_xsave_state(struct kvm_vcpu *vcpu)
 {
+	if (static_cpu_has(X86_FEATURE_PKU) &&
+	    (kvm_read_cr4_bits(vcpu, X86_CR4_PKE) ||
+	     (vcpu->arch.xcr0 & XFEATURE_MASK_PKRU))) {
+		vcpu->arch.pkru = rdpkru();
+		if (vcpu->arch.pkru != vcpu->arch.host_pkru)
+			__write_pkru(vcpu->arch.host_pkru);
+	}
+
 	if (kvm_read_cr4_bits(vcpu, X86_CR4_OSXSAVE)) {
 
 		if (vcpu->arch.xcr0 != host_xcr0)
@@ -3529,6 +3543,9 @@ void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
 
 	kvm_x86_ops->vcpu_load(vcpu, cpu);
 
+	/* Save host pkru register if supported */
+	vcpu->arch.host_pkru = read_pkru();
+
 	/* Apply any externally detected TSC adjustments (due to suspend) */
 	if (unlikely(vcpu->arch.tsc_offset_adjustment)) {
 		adjust_tsc_offset_host(vcpu, vcpu->arch.tsc_offset_adjustment);
@@ -3722,7 +3739,7 @@ static int kvm_vcpu_ioctl_x86_setup_mce(struct kvm_vcpu *vcpu,
 	unsigned bank_num = mcg_cap & 0xff, bank;
 
 	r = -EINVAL;
-	if (!bank_num || bank_num >= KVM_MAX_MCE_BANKS)
+	if (!bank_num || bank_num > KVM_MAX_MCE_BANKS)
 		goto out;
 	if (mcg_cap & ~(kvm_mce_cap_supported | 0xff | 0xff0000))
 		goto out;
arch/x86/mm/init_64.c +3 -0
index abbdecb75fad..023e1ec5e153 100644
@@ -54,6 +54,7 @@
 #include <asm/init.h>
 #include <asm/uv/uv.h>
 #include <asm/setup.h>
+#include <asm/ftrace.h>
 
 #include "mm_internal.h"
 
@@ -1288,6 +1289,8 @@ void mark_rodata_ro(void)
 	all_end = roundup((unsigned long)_brk_end, PMD_SIZE);
 	set_memory_nx(text_end, (all_end - text_end) >> PAGE_SHIFT);
 
+	set_ftrace_ops_ro();
+
 #ifdef CONFIG_CPA_DEBUG
 	printk(KERN_INFO "Testing CPA: undo %lx-%lx\n", start, end);
 	set_memory_rw(start, (end-start) >> PAGE_SHIFT);
arch/x86/xen/smp_pv.c +1 -0
index 802ee5bba66c..0cebe5db691d 100644
@@ -92,6 +92,7 @@ asmlinkage __visible void cpu_bringup_and_idle(void)
 	cpu_bringup();
 	boot_init_stack_canary();
 	cpu_startup_entry(CPUHP_AP_ONLINE_IDLE);
+	prevent_tail_call_optimization();
 }
 
 void xen_smp_intr_free_pv(unsigned int cpu)
crypto/lrw.c +2 -2
index 63c485c0d8a6..9b20fc4b2efb 100644
@@ -287,7 +287,7 @@ static void exit_tfm(struct crypto_skcipher *tfm)
 	crypto_free_skcipher(ctx->child);
 }
 
-static void free(struct skcipher_instance *inst)
+static void free_inst(struct skcipher_instance *inst)
 {
 	crypto_drop_skcipher(skcipher_instance_ctx(inst));
 	kfree(inst);
@@ -400,7 +400,7 @@ static int create(struct crypto_template *tmpl, struct rtattr **tb)
 	inst->alg.encrypt = encrypt;
 	inst->alg.decrypt = decrypt;
 
-	inst->free = free;
+	inst->free = free_inst;
 
 	err = skcipher_register_instance(tmpl, inst);
 	if (err)
crypto/xts.c +2 -2
index 29efa15f1495..983dae2bb2db 100644
@@ -322,7 +322,7 @@ static void exit_tfm(struct crypto_skcipher *tfm)
 	crypto_free_cipher(ctx->tweak);
 }
 
-static void free(struct skcipher_instance *inst)
+static void free_inst(struct skcipher_instance *inst)
 {
 	crypto_drop_skcipher(skcipher_instance_ctx(inst));
 	kfree(inst);
@@ -434,7 +434,7 @@ static int create(struct crypto_template *tmpl, struct rtattr **tb)
 	inst->alg.encrypt = encrypt;
 	inst->alg.decrypt = decrypt;
 
-	inst->free = free;
+	inst->free = free_inst;
 
 	err = skcipher_register_instance(tmpl, inst);
 	if (err)
drivers/acpi/ec.c +16 -8
index 35dd2f1fb0e6..03b3067811c9 100644
@@ -2042,23 +2042,31 @@ void acpi_ec_set_gpe_wake_mask(u8 action)
 		acpi_set_gpe_wake_mask(NULL, first_ec->gpe, action);
 }
 
-bool acpi_ec_other_gpes_active(void)
-{
-	return acpi_any_gpe_status_set(first_ec ? first_ec->gpe : U32_MAX);
-}
-
 bool acpi_ec_dispatch_gpe(void)
 {
 	u32 ret;
 
 	if (!first_ec)
+		return acpi_any_gpe_status_set(U32_MAX);
+
+	/*
+	 * Report wakeup if the status bit is set for any enabled GPE other
+	 * than the EC one.
+	 */
+	if (acpi_any_gpe_status_set(first_ec->gpe))
+		return true;
+
+	if (ec_no_wakeup)
 		return false;
 
+	/*
+	 * Dispatch the EC GPE in-band, but do not report wakeup in any case
+	 * to allow the caller to process events properly after that.
+	 */
 	ret = acpi_dispatch_gpe(NULL, first_ec->gpe);
-	if (ret == ACPI_INTERRUPT_HANDLED) {
+	if (ret == ACPI_INTERRUPT_HANDLED)
 		pm_pr_dbg("EC GPE dispatched\n");
-		return true;
-	}
+
 	return false;
 }
 #endif /* CONFIG_PM_SLEEP */
drivers/acpi/internal.h +0 -1
index d44c591c4ee4..3616daec650b 100644
@@ -202,7 +202,6 @@ void acpi_ec_remove_query_handler(struct acpi_ec *ec, u8 query_bit);
 
 #ifdef CONFIG_PM_SLEEP
 void acpi_ec_flush_work(void);
-bool acpi_ec_other_gpes_active(void);
 bool acpi_ec_dispatch_gpe(void);
 #endif
 
drivers/acpi/sleep.c +2 -12
index 4edc8a3ce40f..3850704570c0 100644
@@ -1013,20 +1013,10 @@ static bool acpi_s2idle_wake(void)
 		if (acpi_check_wakeup_handlers())
 			return true;
 
-		/*
-		 * If the status bit is set for any enabled GPE other than the
-		 * EC one, the wakeup is regarded as a genuine one.
-		 */
-		if (acpi_ec_other_gpes_active())
+		/* Check non-EC GPE wakeups and dispatch the EC GPE. */
+		if (acpi_ec_dispatch_gpe())
 			return true;
 
-		/*
-		 * If the EC GPE status bit has not been set, the wakeup is
-		 * regarded as a spurious one.
-		 */
-		if (!acpi_ec_dispatch_gpe())
-			return false;
-
 		/*
 		 * Cancel the wakeup and process all pending events in case
 		 * there are any wakeup ones in there.
drivers/block/virtio_blk.c +78 -8

143 lines not on this page · raw message

drivers/clk/clk.c +3 -0
index 305544b68b8a..f22b7aed6e64 100644
@@ -3512,6 +3512,9 @@ static int __clk_core_init(struct clk_core *core)
 out:
 	clk_pm_runtime_put(core);
 unlock:
+	if (ret)
+		hlist_del_init(&core->child_node);
+
 	clk_prepare_unlock();
 
 	if (!ret)
drivers/clk/rockchip/clk-rk3228.c +4 -13
index d17cfb7a3ff4..d7243c09cc84 100644
@@ -156,8 +156,6 @@ PNAME(mux_i2s_out_p)		= { "i2s1_pre", "xin12m" };
 PNAME(mux_i2s2_p)		= { "i2s2_src", "i2s2_frac", "xin12m" };
 PNAME(mux_sclk_spdif_p)		= { "sclk_spdif_src", "spdif_frac", "xin12m" };
 
-PNAME(mux_aclk_gpu_pre_p)	= { "cpll_gpu", "gpll_gpu", "hdmiphy_gpu", "usb480m_gpu" };
-
 PNAME(mux_uart0_p)		= { "uart0_src", "uart0_frac", "xin24m" };
 PNAME(mux_uart1_p)		= { "uart1_src", "uart1_frac", "xin24m" };
 PNAME(mux_uart2_p)		= { "uart2_src", "uart2_frac", "xin24m" };
@@ -468,16 +466,9 @@ static struct rockchip_clk_branch rk3228_clk_branches[] __initdata = {
 			RK2928_CLKSEL_CON(24), 6, 10, DFLAGS,
 			RK2928_CLKGATE_CON(2), 8, GFLAGS),
 
-	GATE(0, "cpll_gpu", "cpll", 0,
-			RK2928_CLKGATE_CON(3), 13, GFLAGS),
-	GATE(0, "gpll_gpu", "gpll", 0,
-			RK2928_CLKGATE_CON(3), 13, GFLAGS),
-	GATE(0, "hdmiphy_gpu", "hdmiphy", 0,
-			RK2928_CLKGATE_CON(3), 13, GFLAGS),
-	GATE(0, "usb480m_gpu", "usb480m", 0,
+	COMPOSITE(0, "aclk_gpu_pre", mux_pll_src_4plls_p, 0,
+			RK2928_CLKSEL_CON(34), 5, 2, MFLAGS, 0, 5, DFLAGS,
 			RK2928_CLKGATE_CON(3), 13, GFLAGS),
-	COMPOSITE_NOGATE(0, "aclk_gpu_pre", mux_aclk_gpu_pre_p, 0,
-			RK2928_CLKSEL_CON(34), 5, 2, MFLAGS, 0, 5, DFLAGS),
 
 	COMPOSITE(SCLK_SPI0, "sclk_spi0", mux_pll_src_2plls_p, 0,
 			RK2928_CLKSEL_CON(25), 8, 1, MFLAGS, 0, 7, DFLAGS,
@@ -582,8 +573,8 @@ static struct rockchip_clk_branch rk3228_clk_branches[] __initdata = {
 	GATE(0, "pclk_peri_noc", "pclk_peri", CLK_IGNORE_UNUSED, RK2928_CLKGATE_CON(12), 2, GFLAGS),
 
 	/* PD_GPU */
-	GATE(ACLK_GPU, "aclk_gpu", "aclk_gpu_pre", 0, RK2928_CLKGATE_CON(13), 14, GFLAGS),
-	GATE(0, "aclk_gpu_noc", "aclk_gpu_pre", 0, RK2928_CLKGATE_CON(13), 15, GFLAGS),
+	GATE(ACLK_GPU, "aclk_gpu", "aclk_gpu_pre", 0, RK2928_CLKGATE_CON(7), 14, GFLAGS),
+	GATE(0, "aclk_gpu_noc", "aclk_gpu_pre", 0, RK2928_CLKGATE_CON(7), 15, GFLAGS),
 
 	/* PD_BUS */
 	GATE(0, "sclk_initmem_mbist", "aclk_cpu", 0, RK2928_CLKGATE_CON(8), 1, GFLAGS),
drivers/clk/ti/clkctrl.c +0 -1
index 062266034d84..9019624e37bc 100644
@@ -461,7 +461,6 @@ static char * __init clkctrl_get_name(struct device_node *np)
 			return name;
 		}
 	}
-	of_node_put(np);
 
 	return NULL;
 }
drivers/cpufreq/intel_pstate.c +1 -1
index c81e1ff29069..b4c014464a20 100644
@@ -1058,7 +1058,7 @@ static ssize_t store_no_turbo(struct kobject *a, struct kobj_attribute *b,
 
 	update_turbo_state();
 	if (global.turbo_disabled) {
-		pr_warn("Turbo disabled by BIOS or unavailable on processor\n");
+		pr_notice_once("Turbo disabled by BIOS or unavailable on processor\n");
 		mutex_unlock(&intel_pstate_limits_lock);
 		mutex_unlock(&intel_pstate_driver_lock);
 		return -EPERM;
drivers/dma/mmp_tdma.c +4 -1
index 10117f271b12..d683232d7fea 100644
@@ -363,6 +363,8 @@ static void mmp_tdma_free_descriptor(struct mmp_tdma_chan *tdmac)
 		gen_pool_free(gpool, (unsigned long)tdmac->desc_arr,
 				size);
 	tdmac->desc_arr = NULL;
+	if (tdmac->status == DMA_ERROR)
+		tdmac->status = DMA_COMPLETE;
 
 	return;
 }
@@ -443,7 +445,8 @@ static struct dma_async_tx_descriptor *mmp_tdma_prep_dma_cyclic(
 	if (!desc)
 		goto err_out;
 
-	mmp_tdma_config_write(chan, direction, &tdmac->slave_config);
+	if (mmp_tdma_config_write(chan, direction, &tdmac->slave_config))
+		goto err_out;
 
 	while (buf < buf_len) {
 		desc = &tdmac->desc_arr[i];
drivers/dma/pch_dma.c +1 -1
index 581e7a290d98..a3b0b4c56a19 100644
@@ -865,6 +865,7 @@ static int pch_dma_probe(struct pci_dev *pdev,
 	}
 
 	pci_set_master(pdev);
+	pd->dma.dev = &pdev->dev;
 
 	err = request_irq(pdev->irq, pd_irq, IRQF_SHARED, DRV_NAME, pd);
 	if (err) {
@@ -880,7 +881,6 @@ static int pch_dma_probe(struct pci_dev *pdev,
 		goto err_free_irq;
 	}
 
-	pd->dma.dev = &pdev->dev;
 
 	INIT_LIST_HEAD(&pd->dma.channels);
 
drivers/dma/xilinx/xilinx_dma.c +10 -10
index a9c5d5cc9f2b..5d5f1d0ce16c 100644
@@ -1229,16 +1229,16 @@ static enum dma_status xilinx_dma_tx_status(struct dma_chan *dchan,
 		return ret;
 
 	spin_lock_irqsave(&chan->lock, flags);
-
-	desc = list_last_entry(&chan->active_list,
-			       struct xilinx_dma_tx_descriptor, node);
-	/*
-	 * VDMA and simple mode do not support residue reporting, so the
-	 * residue field will always be 0.
-	 */
-	if (chan->has_sg && chan->xdev->dma_config->dmatype != XDMA_TYPE_VDMA)
-		residue = xilinx_dma_get_residue(chan, desc);
-
+	if (!list_empty(&chan->active_list)) {
+		desc = list_last_entry(&chan->active_list,
+				       struct xilinx_dma_tx_descriptor, node);
+		/*
+		 * VDMA and simple mode do not support residue reporting, so the
+		 * residue field will always be 0.
+		 */
+		if (chan->has_sg && chan->xdev->dma_config->dmatype != XDMA_TYPE_VDMA)
+			residue = xilinx_dma_get_residue(chan, desc);
+	}
 	spin_unlock_irqrestore(&chan->lock, flags);
 
 	dma_set_residue(txstate, residue);
drivers/firmware/efi/tpm.c +1 -1
index 31f9f0e369b9..55b031d2c989 100644
@@ -16,7 +16,7 @@
 int efi_tpm_final_log_size;
 EXPORT_SYMBOL(efi_tpm_final_log_size);
 
-static int tpm2_calc_event_log_size(void *data, int count, void *size_info)
+static int __init tpm2_calc_event_log_size(void *data, int count, void *size_info)
 {
 	struct tcg_pcr_event2_head *header;
 	int event_size, size = 0;
drivers/gpio/gpio-pca953x.c +1 -1
index 5638b4e5355f..4269ea9a817e 100644
@@ -531,7 +531,7 @@ static int pca953x_gpio_set_config(struct gpio_chip *gc, unsigned int offset,
 {
 	struct pca953x_chip *chip = gpiochip_get_data(gc);
 
-	switch (config) {
+	switch (pinconf_to_config_param(config)) {
 	case PIN_CONFIG_BIAS_PULL_UP:
 	case PIN_CONFIG_BIAS_PULL_DOWN:
 		return pca953x_gpio_set_pull_up_down(chip, offset, config);
drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c +1 -2
index 2672dc64a310..6a76ab16500f 100644
@@ -133,8 +133,7 @@ static int amdgpufb_create_pinned_object(struct amdgpu_fbdev *rfbdev,
 	u32 cpp;
 	u64 flags = AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED |
 			       AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS     |
-			       AMDGPU_GEM_CREATE_VRAM_CLEARED 	     |
-			       AMDGPU_GEM_CREATE_CPU_GTT_USWC;
+			       AMDGPU_GEM_CREATE_VRAM_CLEARED;
 
 	info = drm_get_format_info(adev->ddev, mode_cmd);
 	cpp = info->cpp[0];
drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +2 -0
index 73337e658aff..906648fca9ef 100644
@@ -1177,6 +1177,8 @@ static const struct amdgpu_gfxoff_quirk amdgpu_gfxoff_quirk_list[] = {
 	{ 0x1002, 0x15dd, 0x1002, 0x15dd, 0xc8 },
 	/* https://bugzilla.kernel.org/show_bug.cgi?id=207171 */
 	{ 0x1002, 0x15dd, 0x103c, 0x83e7, 0xd3 },
+	/* GFXOFF is unstable on C6 parts with a VBIOS 113-RAVEN-114 */
+	{ 0x1002, 0x15dd, 0x1002, 0x15dd, 0xc6 },
 	{ 0, 0, 0, 0, 0 },
 };
 
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +24 -2
index 8136a58deb39..5e27a67fbc58 100644
@@ -7716,6 +7716,7 @@ static int dm_update_plane_state(struct dc *dc,
 	struct drm_crtc_state *old_crtc_state, *new_crtc_state;
 	struct dm_crtc_state *dm_new_crtc_state, *dm_old_crtc_state;
 	struct dm_plane_state *dm_new_plane_state, *dm_old_plane_state;
+	struct amdgpu_crtc *new_acrtc;
 	bool needs_reset;
 	int ret = 0;
 
@@ -7725,9 +7726,30 @@ static int dm_update_plane_state(struct dc *dc,
 	dm_new_plane_state = to_dm_plane_state(new_plane_state);
 	dm_old_plane_state = to_dm_plane_state(old_plane_state);
 
-	/*TODO Implement atomic check for cursor plane */
-	if (plane->type == DRM_PLANE_TYPE_CURSOR)
+	/*TODO Implement better atomic check for cursor plane */
+	if (plane->type == DRM_PLANE_TYPE_CURSOR) {
+		if (!enable || !new_plane_crtc ||
+			drm_atomic_plane_disabling(plane->state, new_plane_state))
+			return 0;
+
+		new_acrtc = to_amdgpu_crtc(new_plane_crtc);
+
+		if ((new_plane_state->crtc_w > new_acrtc->max_cursor_width) ||
+			(new_plane_state->crtc_h > new_acrtc->max_cursor_height)) {
+			DRM_DEBUG_ATOMIC("Bad cursor size %d x %d\n",
+							 new_plane_state->crtc_w, new_plane_state->crtc_h);
+			return -EINVAL;
+		}
+
+		if (new_plane_state->crtc_x <= -new_acrtc->max_cursor_width ||
+			new_plane_state->crtc_y <= -new_acrtc->max_cursor_height) {
+			DRM_DEBUG_ATOMIC("Bad cursor position %d, %d\n",
+							 new_plane_state->crtc_x, new_plane_state->crtc_y);
+			return -EINVAL;
+		}
+
 		return 0;
+	}
 
 	needs_reset = should_reset_plane(state, plane, old_plane_state,
 					 new_plane_state);
drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c +12 -0
index fd9e69634c50..1b6c75a4dd60 100644
@@ -2885,6 +2885,12 @@ bool dc_link_handle_hpd_rx_irq(struct dc_link *link, union hpd_irq_data *out_hpd
 					sizeof(hpd_irq_dpcd_data),
 					"Status: ");
 
+		for (i = 0; i < MAX_PIPES; i++) {
+			pipe_ctx = &link->dc->current_state->res_ctx.pipe_ctx[i];
+			if (pipe_ctx && pipe_ctx->stream && pipe_ctx->stream->link == link)
+				link->dc->hwss.blank_stream(pipe_ctx);
+		}
+
 		for (i = 0; i < MAX_PIPES; i++) {
 			pipe_ctx = &link->dc->current_state->res_ctx.pipe_ctx[i];
 			if (pipe_ctx && pipe_ctx->stream && pipe_ctx->stream->link == link)
@@ -2904,6 +2910,12 @@ bool dc_link_handle_hpd_rx_irq(struct dc_link *link, union hpd_irq_data *out_hpd
 		if (pipe_ctx->stream->signal == SIGNAL_TYPE_DISPLAY_PORT_MST)
 			dc_link_reallocate_mst_payload(link);
 
+		for (i = 0; i < MAX_PIPES; i++) {
+			pipe_ctx = &link->dc->current_state->res_ctx.pipe_ctx[i];
+			if (pipe_ctx && pipe_ctx->stream && pipe_ctx->stream->link == link)
+				link->dc->hwss.unblank_stream(pipe_ctx, &previous_link_settings);
+		}
+
 		status = false;
 		if (out_link_loss)
 			*out_link_loss = true;
drivers/gpu/drm/amd/display/dc/core/dc_stream.c +14 -14
index 6ddbb00ed37a..8c20e9e907b2 100644
@@ -239,24 +239,24 @@ static void delay_cursor_until_vupdate(struct pipe_ctx *pipe_ctx, struct dc *dc)
 	struct dc_stream_state *stream = pipe_ctx->stream;
 	unsigned int us_per_line;
 
-	if (stream->ctx->asic_id.chip_family == FAMILY_RV &&
-			ASICREV_IS_RAVEN(stream->ctx->asic_id.hw_internal_rev)) {
+	if (!dc->hwss.get_vupdate_offset_from_vsync)
+		return;
 
-		vupdate_line = dc->hwss.get_vupdate_offset_from_vsync(pipe_ctx);
-		if (!dc_stream_get_crtc_position(dc, &stream, 1, &vpos, &nvpos))
-			return;
+	vupdate_line = dc->hwss.get_vupdate_offset_from_vsync(pipe_ctx);
+	if (!dc_stream_get_crtc_position(dc, &stream, 1, &vpos, &nvpos))
+		return;
 
-		if (vpos >= vupdate_line)
-			return;
+	if (vpos >= vupdate_line)
+		return;
 
-		us_per_line = stream->timing.h_total * 10000 / stream->timing.pix_clk_100hz;
-		lines_to_vupdate = vupdate_line - vpos;
-		us_to_vupdate = lines_to_vupdate * us_per_line;
+	us_per_line =
+		stream->timing.h_total * 10000 / stream->timing.pix_clk_100hz;
+	lines_to_vupdate = vupdate_line - vpos;
+	us_to_vupdate = lines_to_vupdate * us_per_line;
 
-		/* 70 us is a conservative estimate of cursor update time*/
-		if (us_to_vupdate < 70)
-			udelay(us_to_vupdate);
-	}
+	/* 70 us is a conservative estimate of cursor update time*/
+	if (us_to_vupdate < 70)
+		udelay(us_to_vupdate);
 #endif
 }
 
drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c +2 -1
index a444fed94184..ad422e00f9fe 100644
@@ -2306,7 +2306,8 @@ void dcn20_fpga_init_hw(struct dc *dc)
 
 	REG_UPDATE(DCHUBBUB_GLOBAL_TIMER_CNTL, DCHUBBUB_GLOBAL_TIMER_REFDIV, 2);
 	REG_UPDATE(DCHUBBUB_GLOBAL_TIMER_CNTL, DCHUBBUB_GLOBAL_TIMER_ENABLE, 1);
-	REG_WRITE(REFCLK_CNTL, 0);
+	if (REG(REFCLK_CNTL))
+		REG_WRITE(REFCLK_CNTL, 0);
 	//
 
 
drivers/gpu/drm/amd/display/dc/dcn21/dcn21_resource.c +1 -1
index 33d0a176841a..122d3e734c59 100644
@@ -250,7 +250,7 @@ struct _vcs_dpi_soc_bounding_box_st dcn2_1_soc = {
 	.dram_channel_width_bytes = 4,
 	.fabric_datapath_to_dcn_data_return_bytes = 32,
 	.dcn_downspread_percent = 0.5,
-	.downspread_percent = 0.5,
+	.downspread_percent = 0.38,
 	.dram_page_open_time_ns = 50.0,
 	.dram_rw_turnaround_time_ns = 17.5,
 	.dram_return_buffer_per_channel_bytes = 8192,
drivers/gpu/drm/amd/powerplay/amd_powerplay.c +4 -2
index c195575366a3..e4e5a53b2b4e 100644
@@ -1435,7 +1435,8 @@ static int pp_get_asic_baco_capability(void *handle, bool *cap)
 	if (!hwmgr)
 		return -EINVAL;
 
-	if (!hwmgr->pm_en || !hwmgr->hwmgr_func->get_asic_baco_capability)
+	if (!(hwmgr->not_vf && amdgpu_dpm) ||
+		!hwmgr->hwmgr_func->get_asic_baco_capability)
 		return 0;
 
 	mutex_lock(&hwmgr->smu_lock);
@@ -1469,7 +1470,8 @@ static int pp_set_asic_baco_state(void *handle, int state)
 	if (!hwmgr)
 		return -EINVAL;
 
-	if (!hwmgr->pm_en || !hwmgr->hwmgr_func->set_asic_baco_state)
+	if (!(hwmgr->not_vf && amdgpu_dpm) ||
+		!hwmgr->hwmgr_func->set_asic_baco_state)
 		return 0;
 
 	mutex_lock(&hwmgr->smu_lock);
drivers/gpu/drm/i915/display/intel_ddi.c +11 -3
index 2fe594952748..d3c58026d55e 100644
@@ -3545,9 +3545,6 @@ static void hsw_ddi_pre_enable_dp(struct intel_encoder *encoder,
 	intel_dp_set_link_params(intel_dp, crtc_state->port_clock,
 				 crtc_state->lane_count, is_mst);
 
-	intel_dp->regs.dp_tp_ctl = DP_TP_CTL(port);
-	intel_dp->regs.dp_tp_status = DP_TP_STATUS(port);
-
 	intel_edp_panel_on(intel_dp);
 
 	intel_ddi_clk_select(encoder, crtc_state);
@@ -4269,12 +4266,18 @@ void intel_ddi_get_config(struct intel_encoder *encoder,
 	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
 	struct intel_crtc *intel_crtc = to_intel_crtc(pipe_config->uapi.crtc);
 	enum transcoder cpu_transcoder = pipe_config->cpu_transcoder;
+	struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
 	u32 temp, flags = 0;
 
 	/* XXX: DSI transcoder paranoia */
 	if (WARN_ON(transcoder_is_dsi(cpu_transcoder)))
 		return;
 
+	if (INTEL_GEN(dev_priv) >= 12) {
+		intel_dp->regs.dp_tp_ctl = TGL_DP_TP_CTL(cpu_transcoder);
+		intel_dp->regs.dp_tp_status = TGL_DP_TP_STATUS(cpu_transcoder);
+	}
+
 	intel_dsc_get_config(encoder, pipe_config);
 
 	temp = I915_READ(TRANS_DDI_FUNC_CTL(cpu_transcoder));
@@ -4492,6 +4495,7 @@ static const struct drm_encoder_funcs intel_ddi_funcs = {
 static struct intel_connector *
 intel_ddi_init_dp_connector(struct intel_digital_port *intel_dig_port)
 {
+	struct drm_i915_private *dev_priv = to_i915(intel_dig_port->base.base.dev);
 	struct intel_connector *connector;
 	enum port port = intel_dig_port->base.port;
 
@@ -4502,6 +4506,10 @@ intel_ddi_init_dp_connector(struct intel_digital_port *intel_dig_port)
 	intel_dig_port->dp.output_reg = DDI_BUF_CTL(port);
 	intel_dig_port->dp.prepare_link_retrain =
 		intel_ddi_prepare_link_retrain;
+	if (INTEL_GEN(dev_priv) < 12) {
+		intel_dig_port->dp.regs.dp_tp_ctl = DP_TP_CTL(port);
+		intel_dig_port->dp.regs.dp_tp_status = DP_TP_STATUS(port);
+	}
 
 	if (!intel_dp_init_connector(intel_dig_port, connector)) {
 		kfree(connector);
drivers/gpu/drm/i915/display/intel_display_power.c +6 -6
index 46c40db992dd..5895b8c7662e 100644
@@ -4068,7 +4068,7 @@ static const struct i915_power_well_desc tgl_power_wells[] = {
 	{
 		.name = "AUX D TBT1",
 		.domains = TGL_AUX_D_TBT1_IO_POWER_DOMAINS,
-		.ops = &hsw_power_well_ops,
+		.ops = &icl_tc_phy_aux_power_well_ops,
 		.id = DISP_PW_ID_NONE,
 		{
 			.hsw.regs = &icl_aux_power_well_regs,
@@ -4079,7 +4079,7 @@ static const struct i915_power_well_desc tgl_power_wells[] = {
 	{
 		.name = "AUX E TBT2",
 		.domains = TGL_AUX_E_TBT2_IO_POWER_DOMAINS,
-		.ops = &hsw_power_well_ops,
+		.ops = &icl_tc_phy_aux_power_well_ops,
 		.id = DISP_PW_ID_NONE,
 		{
 			.hsw.regs = &icl_aux_power_well_regs,
@@ -4090,7 +4090,7 @@ static const struct i915_power_well_desc tgl_power_wells[] = {
 	{
 		.name = "AUX F TBT3",
 		.domains = TGL_AUX_F_TBT3_IO_POWER_DOMAINS,
-		.ops = &hsw_power_well_ops,
+		.ops = &icl_tc_phy_aux_power_well_ops,
 		.id = DISP_PW_ID_NONE,
 		{
 			.hsw.regs = &icl_aux_power_well_regs,
@@ -4101,7 +4101,7 @@ static const struct i915_power_well_desc tgl_power_wells[] = {
 	{
 		.name = "AUX G TBT4",
 		.domains = TGL_AUX_G_TBT4_IO_POWER_DOMAINS,
-		.ops = &hsw_power_well_ops,
+		.ops = &icl_tc_phy_aux_power_well_ops,
 		.id = DISP_PW_ID_NONE,
 		{
 			.hsw.regs = &icl_aux_power_well_regs,
@@ -4112,7 +4112,7 @@ static const struct i915_power_well_desc tgl_power_wells[] = {
 	{
 		.name = "AUX H TBT5",
 		.domains = TGL_AUX_H_TBT5_IO_POWER_DOMAINS,
-		.ops = &hsw_power_well_ops,
+		.ops = &icl_tc_phy_aux_power_well_ops,
 		.id = DISP_PW_ID_NONE,
 		{
 			.hsw.regs = &icl_aux_power_well_regs,
@@ -4123,7 +4123,7 @@ static const struct i915_power_well_desc tgl_power_wells[] = {
 	{
 		.name = "AUX I TBT6",
 		.domains = TGL_AUX_I_TBT6_IO_POWER_DOMAINS,
-		.ops = &hsw_power_well_ops,
+		.ops = &icl_tc_phy_aux_power_well_ops,
 		.id = DISP_PW_ID_NONE,
 		{
 			.hsw.regs = &icl_aux_power_well_regs,
drivers/gpu/drm/i915/display/intel_dp.c +2 -3
index c7424e2a04a3..fa3a9e9e0b29 100644
@@ -2492,9 +2492,6 @@ static void intel_dp_prepare(struct intel_encoder *encoder,
 				 intel_crtc_has_type(pipe_config,
 						     INTEL_OUTPUT_DP_MST));
 
-	intel_dp->regs.dp_tp_ctl = DP_TP_CTL(port);
-	intel_dp->regs.dp_tp_status = DP_TP_STATUS(port);
-
 	/*
 	 * There are four kinds of DP registers:
 	 *
@@ -7616,6 +7613,8 @@ bool intel_dp_init(struct drm_i915_private *dev_priv,
 
 	intel_dig_port->dp.output_reg = output_reg;
 	intel_dig_port->max_lanes = 4;
+	intel_dig_port->dp.regs.dp_tp_ctl = DP_TP_CTL(port);
+	intel_dig_port->dp.regs.dp_tp_status = DP_TP_STATUS(port);
 
 	intel_encoder->type = INTEL_OUTPUT_DP;
 	intel_encoder->power_domain = intel_port_to_power_domain(port);
drivers/gpu/drm/i915/display/intel_fbc.c +1 -2
index a1048ece541e..b6d5e7defa5b 100644
@@ -478,8 +478,7 @@ static int intel_fbc_alloc_cfb(struct drm_i915_private *dev_priv,
 	if (!ret)
 		goto err_llb;
 	else if (ret > 1) {
-		DRM_INFO("Reducing the compressed framebuffer size. This may lead to less power savings than a non-reduced-size. Try to increase stolen memory size if available in BIOS.\n");
-
+		DRM_INFO_ONCE("Reducing the compressed framebuffer size. This may lead to less power savings than a non-reduced-size. Try to increase stolen memory size if available in BIOS.\n");
 	}
 
 	fbc->threshold = ret;
drivers/gpu/drm/i915/display/intel_sprite.c +12 -5
index fca77ec1e0dd..f55404a94eba 100644
@@ -2754,19 +2754,25 @@ static bool skl_plane_format_mod_supported(struct drm_plane *_plane,
 	}
 }
 
-static bool gen12_plane_supports_mc_ccs(enum plane_id plane_id)
+static bool gen12_plane_supports_mc_ccs(struct drm_i915_private *dev_priv,
+					enum plane_id plane_id)
 {
+	/* Wa_14010477008:tgl[a0..c0] */
+	if (IS_TGL_REVID(dev_priv, TGL_REVID_A0, TGL_REVID_C0))
+		return false;
+
 	return plane_id < PLANE_SPRITE4;
 }
 
 static bool gen12_plane_format_mod_supported(struct drm_plane *_plane,
 					     u32 format, u64 modifier)
 {
+	struct drm_i915_private *dev_priv = to_i915(_plane->dev);
 	struct intel_plane *plane = to_intel_plane(_plane);
 
 	switch (modifier) {
 	case I915_FORMAT_MOD_Y_TILED_GEN12_MC_CCS:
-		if (!gen12_plane_supports_mc_ccs(plane->id))
+		if (!gen12_plane_supports_mc_ccs(dev_priv, plane->id))
 			return false;
 		/* fall through */
 	case DRM_FORMAT_MOD_LINEAR:
@@ -2935,9 +2941,10 @@ static const u32 *icl_get_plane_formats(struct drm_i915_private *dev_priv,
 	}
 }
 
-static const u64 *gen12_get_plane_modifiers(enum plane_id plane_id)
+static const u64 *gen12_get_plane_modifiers(struct drm_i915_private *dev_priv,
+					    enum plane_id plane_id)
 {
-	if (gen12_plane_supports_mc_ccs(plane_id))
+	if (gen12_plane_supports_mc_ccs(dev_priv, plane_id))
 		return gen12_plane_format_modifiers_mc_ccs;
 	else
 		return gen12_plane_format_modifiers_rc_ccs;
@@ -3008,7 +3015,7 @@ skl_universal_plane_create(struct drm_i915_private *dev_priv,
 
 	plane->has_ccs = skl_plane_has_ccs(dev_priv, pipe, plane_id);
 	if (INTEL_GEN(dev_priv) >= 12) {
-		modifiers = gen12_get_plane_modifiers(plane_id);
+		modifiers = gen12_get_plane_modifiers(dev_priv, plane_id);
 		plane_funcs = &gen12_plane_funcs;
 	} else {
 		if (plane->has_ccs)
drivers/gpu/drm/i915/gem/i915_gem_domain.c +1 -6
index 0cc40e77bbd2..4f96c8788a2e 100644
@@ -368,7 +368,6 @@ static void i915_gem_object_bump_inactive_ggtt(struct drm_i915_gem_object *obj)
 	struct drm_i915_private *i915 = to_i915(obj->base.dev);
 	struct i915_vma *vma;
 
-	GEM_BUG_ON(!i915_gem_object_has_pinned_pages(obj));
 	if (!atomic_read(&obj->bind_count))
 		return;
 
@@ -400,12 +399,8 @@ static void i915_gem_object_bump_inactive_ggtt(struct drm_i915_gem_object *obj)
 void
 i915_gem_object_unpin_from_display_plane(struct i915_vma *vma)
 {
-	struct drm_i915_gem_object *obj = vma->obj;
-
-	assert_object_held(obj);
-
 	/* Bump the LRU to try and avoid premature eviction whilst flipping  */
-	i915_gem_object_bump_inactive_ggtt(obj);
+	i915_gem_object_bump_inactive_ggtt(vma->obj);
 
 	i915_vma_unpin(vma);
 }
drivers/gpu/drm/i915/gt/intel_engine.h +0 -9
index 5df003061e44..beb3211a6249 100644
@@ -338,13 +338,4 @@ intel_engine_has_preempt_reset(const struct intel_engine_cs *engine)
 	return intel_engine_has_preemption(engine);
 }
 
-static inline bool
-intel_engine_has_timeslices(const struct intel_engine_cs *engine)
-{
-	if (!IS_ACTIVE(CONFIG_DRM_I915_TIMESLICE_DURATION))
-		return false;
-
-	return intel_engine_has_semaphores(engine);
-}
-
 #endif /* _INTEL_RINGBUFFER_H_ */
drivers/gpu/drm/i915/gt/intel_engine_types.h +14 -4
index 92be41a6903c..4ea067e1508a 100644
@@ -473,10 +473,11 @@ struct intel_engine_cs {
 #define I915_ENGINE_SUPPORTS_STATS   BIT(1)
 #define I915_ENGINE_HAS_PREEMPTION   BIT(2)
 #define I915_ENGINE_HAS_SEMAPHORES   BIT(3)
-#define I915_ENGINE_NEEDS_BREADCRUMB_TASKLET BIT(4)
-#define I915_ENGINE_IS_VIRTUAL       BIT(5)
-#define I915_ENGINE_HAS_RELATIVE_MMIO BIT(6)
-#define I915_ENGINE_REQUIRES_CMD_PARSER BIT(7)
+#define I915_ENGINE_HAS_TIMESLICES   BIT(4)
+#define I915_ENGINE_NEEDS_BREADCRUMB_TASKLET BIT(5)
+#define I915_ENGINE_IS_VIRTUAL       BIT(6)
+#define I915_ENGINE_HAS_RELATIVE_MMIO BIT(7)
+#define I915_ENGINE_REQUIRES_CMD_PARSER BIT(8)
 	unsigned int flags;
 
 	/*
@@ -573,6 +574,15 @@ intel_engine_has_semaphores(const struct intel_engine_cs *engine)
 	return engine->flags & I915_ENGINE_HAS_SEMAPHORES;
 }
 
+static inline bool
+intel_engine_has_timeslices(const struct intel_engine_cs *engine)
+{
+	if (!IS_ACTIVE(CONFIG_DRM_I915_TIMESLICE_DURATION))
+		return false;
+
+	return engine->flags & I915_ENGINE_HAS_TIMESLICES;
+}
+
 static inline bool
 intel_engine_needs_breadcrumb_tasklet(const struct intel_engine_cs *engine)
 {
drivers/gpu/drm/i915/gt/intel_lrc.c +7 -1
index 31455eceeb0c..637c03ee1a57 100644
@@ -1626,6 +1626,9 @@ static void defer_request(struct i915_request *rq, struct list_head * const pl)
 			struct i915_request *w =
 				container_of(p->waiter, typeof(*w), sched);
 
+			if (p->flags & I915_DEPENDENCY_WEAK)
+				continue;
+
 			/* Leave semaphores spinning on the other engines */
 			if (w->engine != rq->engine)
 				continue;
@@ -4194,8 +4197,11 @@ void intel_execlists_set_default_submission(struct intel_engine_cs *engine)
 	engine->flags |= I915_ENGINE_SUPPORTS_STATS;
 	if (!intel_vgpu_active(engine->i915)) {
 		engine->flags |= I915_ENGINE_HAS_SEMAPHORES;
-		if (HAS_LOGICAL_RING_PREEMPTION(engine->i915))
+		if (HAS_LOGICAL_RING_PREEMPTION(engine->i915)) {
 			engine->flags |= I915_ENGINE_HAS_PREEMPTION;
+			if (IS_ACTIVE(CONFIG_DRM_I915_TIMESLICE_DURATION))
+				engine->flags |= I915_ENGINE_HAS_TIMESLICES;
+		}
 	}
 
 	if (INTEL_GEN(engine->i915) >= 12)
drivers/gpu/drm/i915/gvt/scheduler.c +5 -1
index 685d1e04a5ff..709ad181bc94 100644
@@ -375,7 +375,11 @@ static void set_context_ppgtt_from_shadow(struct intel_vgpu_workload *workload,
 		for (i = 0; i < GVT_RING_CTX_NR_PDPS; i++) {
 			struct i915_page_directory * const pd =
 				i915_pd_entry(ppgtt->pd, i);
-
+			/* skip now as current i915 ppgtt alloc won't allocate
+			   top level pdp for non 4-level table, won't impact
+			   shadow ppgtt. */
+			if (!pd)
+				break;
 			px_dma(pd) = mm->ppgtt_mm.shadow_pdps[i];
 		}
 	}
drivers/gpu/drm/i915/i915_drv.h +2 -0
index 810e3ccd56ec..dff134265112 100644
@@ -1601,6 +1601,8 @@ IS_SUBPLATFORM(const struct drm_i915_private *i915,
 	(IS_ICELAKE(p) && IS_REVID(p, since, until))
 
 #define TGL_REVID_A0		0x0
+#define TGL_REVID_B0		0x1
+#define TGL_REVID_C0		0x2
 
 #define IS_TGL_REVID(p, since, until) \
 	(IS_TIGERLAKE(p) && IS_REVID(p, since, until))
drivers/gpu/drm/i915/i915_gem_evict.c +12 -14
index 0697bedebeef..d99df9c33708 100644
@@ -130,6 +130,13 @@ i915_gem_evict_something(struct i915_address_space *vm,
 	active = NULL;
 	INIT_LIST_HEAD(&eviction_list);
 	list_for_each_entry_safe(vma, next, &vm->bound_list, vm_link) {
+		if (vma == active) { /* now seen this vma twice */
+			if (flags & PIN_NONBLOCK)
+				break;
+
+			active = ERR_PTR(-EAGAIN);
+		}
+
 		/*
 		 * We keep this list in a rough least-recently scanned order
 		 * of active elements (inactive elements are cheap to reap).
@@ -145,21 +152,12 @@ i915_gem_evict_something(struct i915_address_space *vm,
 		 * To notice when we complete one full cycle, we record the
 		 * first active element seen, before moving it to the tail.
 		 */
-		if (i915_vma_is_active(vma)) {
-			if (vma == active) {
-				if (flags & PIN_NONBLOCK)
-					break;
-
-				active = ERR_PTR(-EAGAIN);
-			}
-
-			if (active != ERR_PTR(-EAGAIN)) {
-				if (!active)
-					active = vma;
+		if (active != ERR_PTR(-EAGAIN) && i915_vma_is_active(vma)) {
+			if (!active)
+				active = vma;
 
-				list_move_tail(&vma->vm_link, &vm->bound_list);
-				continue;
-			}
+			list_move_tail(&vma->vm_link, &vm->bound_list);
+			continue;
 		}
 
 		if (mark_free(&scan, vma, flags, &eviction_list))
drivers/gpu/drm/i915/i915_irq.c +3 -13
index c6f02b0b6c7a..52825ae8301b 100644
@@ -3324,7 +3324,7 @@ static void gen8_de_irq_postinstall(struct drm_i915_private *dev_priv)
 	u32 de_pipe_masked = gen8_de_pipe_fault_mask(dev_priv) |
 		GEN8_PIPE_CDCLK_CRC_DONE;
 	u32 de_pipe_enables;
-	u32 de_port_masked = GEN8_AUX_CHANNEL_A;
+	u32 de_port_masked = gen8_de_port_aux_mask(dev_priv);
 	u32 de_port_enables;
 	u32 de_misc_masked = GEN8_DE_EDP_PSR;
 	enum pipe pipe;
@@ -3332,18 +3332,8 @@ static void gen8_de_irq_postinstall(struct drm_i915_private *dev_priv)
 	if (INTEL_GEN(dev_priv) <= 10)
 		de_misc_masked |= GEN8_DE_MISC_GSE;
 
-	if (INTEL_GEN(dev_priv) >= 9) {
-		de_port_masked |= GEN9_AUX_CHANNEL_B | GEN9_AUX_CHANNEL_C |
-				  GEN9_AUX_CHANNEL_D;
-		if (IS_GEN9_LP(dev_priv))
-			de_port_masked |= BXT_DE_PORT_GMBUS;
-	}
-
-	if (INTEL_GEN(dev_priv) >= 11)
-		de_port_masked |= ICL_AUX_CHANNEL_E;
-
-	if (IS_CNL_WITH_PORT_F(dev_priv) || INTEL_GEN(dev_priv) >= 11)
-		de_port_masked |= CNL_AUX_CHANNEL_F;
+	if (IS_GEN9_LP(dev_priv))
+		de_port_masked |= BXT_DE_PORT_GMBUS;
 
 	de_pipe_enables = de_pipe_masked | GEN8_PIPE_VBLANK |
 					   GEN8_PIPE_FIFO_UNDERRUN;
drivers/gpu/drm/i915/i915_request.c +6 -2
index a18b2a244706..32ab154db788 100644
@@ -951,7 +951,9 @@ i915_request_await_request(struct i915_request *to, struct i915_request *from)
 		return 0;
 
 	if (to->engine->schedule) {
-		ret = i915_sched_node_add_dependency(&to->sched, &from->sched);
+		ret = i915_sched_node_add_dependency(&to->sched,
+						     &from->sched,
+						     I915_DEPENDENCY_EXTERNAL);
 		if (ret < 0)
 			return ret;
 	}
@@ -1084,7 +1086,9 @@ __i915_request_await_execution(struct i915_request *to,
 
 	/* Couple the dependency tree for PI on this exposed to->fence */
 	if (to->engine->schedule) {
-		err = i915_sched_node_add_dependency(&to->sched, &from->sched);
+		err = i915_sched_node_add_dependency(&to->sched,
+						     &from->sched,
+						     I915_DEPENDENCY_WEAK);
 		if (err < 0)
 			return err;
 	}
drivers/gpu/drm/i915/i915_scheduler.c +3 -3
index 34b654b4e58a..8e419d897c2b 100644
@@ -455,7 +455,8 @@ bool __i915_sched_node_add_dependency(struct i915_sched_node *node,
 }
 
 int i915_sched_node_add_dependency(struct i915_sched_node *node,
-				   struct i915_sched_node *signal)
+				   struct i915_sched_node *signal,
+				   unsigned long flags)
 {
 	struct i915_dependency *dep;
 
@@ -464,8 +465,7 @@ int i915_sched_node_add_dependency(struct i915_sched_node *node,
 		return -ENOMEM;
 
 	if (!__i915_sched_node_add_dependency(node, signal, dep,
-					      I915_DEPENDENCY_EXTERNAL |
-					      I915_DEPENDENCY_ALLOC))
+					      flags | I915_DEPENDENCY_ALLOC))
 		i915_dependency_free(dep);
 
 	return 0;
drivers/gpu/drm/i915/i915_scheduler.h +2 -1
index d1dc4efef77b..6f0bf00fc569 100644
@@ -34,7 +34,8 @@ bool __i915_sched_node_add_dependency(struct i915_sched_node *node,
 				      unsigned long flags);
 
 int i915_sched_node_add_dependency(struct i915_sched_node *node,
-				   struct i915_sched_node *signal);
+				   struct i915_sched_node *signal,
+				   unsigned long flags);
 
 void i915_sched_node_fini(struct i915_sched_node *node);
 
drivers/gpu/drm/i915/i915_scheduler_types.h +1 -0
index d18e70550054..7186875088a0 100644
@@ -78,6 +78,7 @@ struct i915_dependency {
 	unsigned long flags;
 #define I915_DEPENDENCY_ALLOC		BIT(0)
 #define I915_DEPENDENCY_EXTERNAL	BIT(1)
+#define I915_DEPENDENCY_WEAK		BIT(2)
 };
 
 #endif /* _I915_SCHEDULER_TYPES_H_ */
drivers/gpu/drm/i915/intel_pm.c +1 -1
index bd2d30ecc030..53c7b1a1b355 100644
@@ -4722,7 +4722,7 @@ static void skl_compute_plane_wm(const struct intel_crtc_state *crtc_state,
 	 * WaIncreaseLatencyIPCEnabled: kbl,cfl
 	 * Display WA #1141: kbl,cfl
 	 */
-	if ((IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv)) ||
+	if ((IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv)) &&
 	    dev_priv->ipc_enabled)
 		latency += 4;
 
drivers/gpu/drm/qxl/qxl_image.c +2 -1
index 43688ecdd8a0..60ab7151b84d 100644
@@ -212,7 +212,8 @@ qxl_image_init_helper(struct qxl_device *qdev,
 		break;
 	default:
 		DRM_ERROR("unsupported image bit depth\n");
-		return -EINVAL; /* TODO: cleanup */
+		qxl_bo_kunmap_atomic_page(qdev, image_bo, ptr);
+		return -EINVAL;
 	}
 	image->u.bitmap.flags = QXL_BITMAP_TOP_DOWN;
 	image->u.bitmap.x = width;
drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c +1 -1
index a75fcb113172..2b6d77ca3dfc 100644
@@ -719,7 +719,7 @@ static void sun6i_dsi_encoder_enable(struct drm_encoder *encoder)
 	struct drm_display_mode *mode = &encoder->crtc->state->adjusted_mode;
 	struct sun6i_dsi *dsi = encoder_to_sun6i_dsi(encoder);
 	struct mipi_dsi_device *device = dsi->device;
-	union phy_configure_opts opts = { 0 };
+	union phy_configure_opts opts = { };
 	struct phy_configure_opts_mipi_dphy *cfg = &opts.mipi_dphy;
 	u16 delay;
 
drivers/gpu/drm/tegra/drm.c +2 -1
index bd268028fb3d..583cd6e0ae27 100644
@@ -1039,6 +1039,7 @@ void tegra_drm_free(struct tegra_drm *tegra, size_t size, void *virt,
 
 static bool host1x_drm_wants_iommu(struct host1x_device *dev)
 {
+	struct host1x *host1x = dev_get_drvdata(dev->dev.parent);
 	struct iommu_domain *domain;
 
 	/*
@@ -1076,7 +1077,7 @@ static bool host1x_drm_wants_iommu(struct host1x_device *dev)
 	 * sufficient and whether or not the host1x is attached to an IOMMU
 	 * doesn't matter.
 	 */
-	if (!domain && dma_get_mask(dev->dev.parent) <= DMA_BIT_MASK(32))
+	if (!domain && host1x_get_dma_mask(host1x) <= DMA_BIT_MASK(32))
 		return true;
 
 	return domain != NULL;
drivers/gpu/host1x/dev.c +13 -0
index 388bcc2889aa..40a4b9f8b861 100644
@@ -502,6 +502,19 @@ static void __exit tegra_host1x_exit(void)
 }
 module_exit(tegra_host1x_exit);
 
+/**
+ * host1x_get_dma_mask() - query the supported DMA mask for host1x
+ * @host1x: host1x instance
+ *
+ * Note that this returns the supported DMA mask for host1x, which can be
+ * different from the applicable DMA mask under certain circumstances.
+ */
+u64 host1x_get_dma_mask(struct host1x *host1x)
+{
+	return host1x->info->dma_mask;
+}
+EXPORT_SYMBOL(host1x_get_dma_mask);
+
 MODULE_AUTHOR("Thierry Reding <[email protected]>");
 MODULE_AUTHOR("Terje Bergstrom <[email protected]>");
 MODULE_DESCRIPTION("Host1x driver for Tegra products");
drivers/hwmon/da9052-hwmon.c +2 -2
index 53b517dbe7e6..4af2fc309c28 100644
@@ -244,9 +244,9 @@ static ssize_t da9052_tsi_show(struct device *dev,
 	int channel = to_sensor_dev_attr(devattr)->index;
 	int ret;
 
-	mutex_lock(&hwmon->hwmon_lock);
+	mutex_lock(&hwmon->da9052->auxadc_lock);
 	ret = __da9052_read_tsi(dev, channel);
-	mutex_unlock(&hwmon->hwmon_lock);
+	mutex_unlock(&hwmon->da9052->auxadc_lock);
 
 	if (ret < 0)
 		return ret;
drivers/hwmon/drivetemp.c +1 -1
index 9179460c2d9d..0d4f3d97ffc6 100644
@@ -346,7 +346,7 @@ static int drivetemp_identify_sata(struct drivetemp_data *st)
 	st->have_temp_highest = temp_is_valid(buf[SCT_STATUS_TEMP_HIGHEST]);
 
 	if (!have_sct_data_table)
-		goto skip_sct;
+		goto skip_sct_data;
 
 	/* Request and read temperature history table */
 	memset(buf, '\0', sizeof(st->smartdata));
drivers/infiniband/core/cache.c +5 -2
index 17bfedd24cc3..4619629b958c 100644
@@ -1536,8 +1536,11 @@ int ib_cache_setup_one(struct ib_device *device)
 	if (err)
 		return err;
 
-	rdma_for_each_port (device, p)
-		ib_cache_update(device, p, true);
+	rdma_for_each_port (device, p) {
+		err = ib_cache_update(device, p, true);
+		if (err)
+			return err;
+	}
 
 	return 0;
 }
drivers/infiniband/core/nldev.c +1 -2
index 9eec26d10d7b..e16105be2eb2 100644
@@ -1292,11 +1292,10 @@ static int res_get_common_doit(struct sk_buff *skb, struct nlmsghdr *nlh,
 	has_cap_net_admin = netlink_capable(skb, CAP_NET_ADMIN);
 
 	ret = fill_func(msg, has_cap_net_admin, res, port);
-
-	rdma_restrack_put(res);
 	if (ret)
 		goto err_free;
 
+	rdma_restrack_put(res);
 	nlmsg_end(msg, nlh);
 	ib_device_put(device);
 	return rdma_nl_unicast(sock_net(skb->sk), msg, NETLINK_CB(skb).portid);
drivers/infiniband/core/rdma_core.c +2 -1
index 177333d8bcda..bf8e149d3191 100644
@@ -459,7 +459,8 @@ alloc_begin_fd_uobject(const struct uverbs_api_object *obj,
 	struct ib_uobject *uobj;
 	struct file *filp;
 
-	if (WARN_ON(fd_type->fops->release != &uverbs_uobject_fd_release))
+	if (WARN_ON(fd_type->fops->release != &uverbs_uobject_fd_release &&
+		    fd_type->fops->release != &uverbs_async_event_release))
 		return ERR_PTR(-EINVAL);
 
 	new_fd = get_unused_fd_flags(O_CLOEXEC);
drivers/infiniband/core/uverbs.h +4 -0
index 7df71983212d..3d189c7ee59e 100644
@@ -219,6 +219,7 @@ void ib_uverbs_init_event_queue(struct ib_uverbs_event_queue *ev_queue);
 void ib_uverbs_init_async_event_file(struct ib_uverbs_async_event_file *ev_file);
 void ib_uverbs_free_event_queue(struct ib_uverbs_event_queue *event_queue);
 void ib_uverbs_flow_resources_free(struct ib_uflow_resources *uflow_res);
+int uverbs_async_event_release(struct inode *inode, struct file *filp);
 
 int ib_alloc_ucontext(struct uverbs_attr_bundle *attrs);
 int ib_init_ucontext(struct uverbs_attr_bundle *attrs);
@@ -227,6 +228,9 @@ void ib_uverbs_release_ucq(struct ib_uverbs_completion_event_file *ev_file,
 			   struct ib_ucq_object *uobj);
 void ib_uverbs_release_uevent(struct ib_uevent_object *uobj);
 void ib_uverbs_release_file(struct kref *ref);
+void ib_uverbs_async_handler(struct ib_uverbs_async_event_file *async_file,
+			     __u64 element, __u64 event,
+			     struct list_head *obj_list, u32 *counter);
 
 void ib_uverbs_comp_handler(struct ib_cq *cq, void *cq_context);
 void ib_uverbs_cq_event_handler(struct ib_event *event, void *context_ptr);
drivers/infiniband/core/uverbs_main.c +4 -8
index 17fc25db0311..1bab8de14757 100644
@@ -346,7 +346,7 @@ const struct file_operations uverbs_async_event_fops = {
 	.owner	 = THIS_MODULE,
 	.read	 = ib_uverbs_async_event_read,
 	.poll    = ib_uverbs_async_event_poll,
-	.release = uverbs_uobject_fd_release,
+	.release = uverbs_async_event_release,
 	.fasync  = ib_uverbs_async_event_fasync,
 	.llseek	 = no_llseek,
 };
@@ -386,10 +386,9 @@ void ib_uverbs_comp_handler(struct ib_cq *cq, void *cq_context)
 	kill_fasync(&ev_queue->async_queue, SIGIO, POLL_IN);
 }
 
-static void
-ib_uverbs_async_handler(struct ib_uverbs_async_event_file *async_file,
-			__u64 element, __u64 event, struct list_head *obj_list,
-			u32 *counter)
+void ib_uverbs_async_handler(struct ib_uverbs_async_event_file *async_file,
+			     __u64 element, __u64 event,
+			     struct list_head *obj_list, u32 *counter)
 {
 	struct ib_uverbs_event *entry;
 	unsigned long flags;
@@ -1187,9 +1186,6 @@ static void ib_uverbs_free_hw_resources(struct ib_uverbs_device *uverbs_dev,
 		 */
 		mutex_unlock(&uverbs_dev->lists_mutex);
 
-		ib_uverbs_async_handler(READ_ONCE(file->async_file), 0,
-					IB_EVENT_DEVICE_FATAL, NULL, NULL);
-
 		uverbs_destroy_ufile_hw(file, RDMA_REMOVE_DRIVER_REMOVE);
 		kref_put(&file->ref, ib_uverbs_release_file);
 
drivers/infiniband/core/uverbs_std_types_async_fd.c +29 -1
index 82ec0806b34b..61899eaf1f91 100644
@@ -26,10 +26,38 @@ static int uverbs_async_event_destroy_uobj(struct ib_uobject *uobj,
 		container_of(uobj, struct ib_uverbs_async_event_file, uobj);
 
 	ib_unregister_event_handler(&event_file->event_handler);
-	ib_uverbs_free_event_queue(&event_file->ev_queue);
+
+	if (why == RDMA_REMOVE_DRIVER_REMOVE)
+		ib_uverbs_async_handler(event_file, 0, IB_EVENT_DEVICE_FATAL,
+					NULL, NULL);
 	return 0;
 }
 
+int uverbs_async_event_release(struct inode *inode, struct file *filp)
+{
+	struct ib_uverbs_async_event_file *event_file;
+	struct ib_uobject *uobj = filp->private_data;
+	int ret;
+
+	if (!uobj)
+		return uverbs_uobject_fd_release(inode, filp);
+
+	event_file =
+		container_of(uobj, struct ib_uverbs_async_event_file, uobj);
+
+	/*
+	 * The async event FD has to deliver IB_EVENT_DEVICE_FATAL even after
+	 * disassociation, so cleaning the event list must only happen after
+	 * release. The user knows it has reached the end of the event stream
+	 * when it sees IB_EVENT_DEVICE_FATAL.
+	 */
+	uverbs_uobject_get(uobj);
+	ret = uverbs_uobject_fd_release(inode, filp);
+	ib_uverbs_free_event_queue(&event_file->ev_queue);
+	uverbs_uobject_put(uobj);
+	return ret;
+}
+
 DECLARE_UVERBS_NAMED_METHOD(
 	UVERBS_METHOD_ASYNC_EVENT_ALLOC,
 	UVERBS_ATTR_FD(UVERBS_ATTR_ASYNC_EVENT_ALLOC_FD_HANDLE,
drivers/infiniband/hw/cxgb4/cm.c +3 -4
index d69dece3b1d5..30e08bcc9afb 100644
@@ -2891,8 +2891,7 @@ static int peer_abort(struct c4iw_dev *dev, struct sk_buff *skb)
 			srqidx = ABORT_RSS_SRQIDX_G(
 					be32_to_cpu(req->srqidx_status));
 			if (srqidx) {
-				complete_cached_srq_buffers(ep,
-							    req->srqidx_status);
+				complete_cached_srq_buffers(ep, srqidx);
 			} else {
 				/* Hold ep ref until finish_peer_abort() */
 				c4iw_get_ep(&ep->com);
@@ -3878,8 +3877,8 @@ static int read_tcb_rpl(struct c4iw_dev *dev, struct sk_buff *skb)
 		return 0;
 	}
 
-	ep->srqe_idx = t4_tcb_get_field32(tcb, TCB_RQ_START_W, TCB_RQ_START_W,
-			TCB_RQ_START_S);
+	ep->srqe_idx = t4_tcb_get_field32(tcb, TCB_RQ_START_W, TCB_RQ_START_M,
+					  TCB_RQ_START_S);
 cleanup:
 	pr_debug("ep %p tid %u %016x\n", ep, ep->hwtid, ep->srqe_idx);
 
drivers/infiniband/hw/hfi1/user_sdma.c +0 -4
index 13e4203497b3..a92346e88628 100644
@@ -589,10 +589,6 @@ int hfi1_user_sdma_process_request(struct hfi1_filedata *fd,
 
 	set_comp_state(pq, cq, info.comp_idx, QUEUED, 0);
 	pq->state = SDMA_PKT_Q_ACTIVE;
-	/* Send the first N packets in the request to buy us some time */
-	ret = user_sdma_send_pkts(req, pcount);
-	if (unlikely(ret < 0 && ret != -EBUSY))
-		goto free_req;
 
 	/*
 	 * This is a somewhat blocking send implementation.
drivers/infiniband/hw/i40iw/i40iw_hw.c +1 -1
index 55a1fbf0e670..ae8b97c30665 100644
@@ -534,7 +534,7 @@ void i40iw_manage_arp_cache(struct i40iw_device *iwdev,
 	int arp_index;
 
 	arp_index = i40iw_arp_table(iwdev, ip_addr, ipv4, mac_addr, action);
-	if (arp_index == -1)
+	if (arp_index < 0)
 		return;
 	cqp_request = i40iw_get_cqp_request(&iwdev->cqp, false);
 	if (!cqp_request)
drivers/infiniband/hw/mlx4/qp.c +11 -3
index 26425dd2d960..a2b1f6af5ba3 100644
@@ -2891,6 +2891,7 @@ static int build_sriov_qp0_header(struct mlx4_ib_sqp *sqp,
 	int send_size;
 	int header_size;
 	int spc;
+	int err;
 	int i;
 
 	if (wr->wr.opcode != IB_WR_SEND)
@@ -2925,7 +2926,9 @@ static int build_sriov_qp0_header(struct mlx4_ib_sqp *sqp,
 
 	sqp->ud_header.lrh.virtual_lane    = 0;
 	sqp->ud_header.bth.solicited_event = !!(wr->wr.send_flags & IB_SEND_SOLICITED);
-	ib_get_cached_pkey(ib_dev, sqp->qp.port, 0, &pkey);
+	err = ib_get_cached_pkey(ib_dev, sqp->qp.port, 0, &pkey);
+	if (err)
+		return err;
 	sqp->ud_header.bth.pkey = cpu_to_be16(pkey);
 	if (sqp->qp.mlx4_ib_qp_type == MLX4_IB_QPT_TUN_SMI_OWNER)
 		sqp->ud_header.bth.destination_qpn = cpu_to_be32(wr->remote_qpn);
@@ -3212,9 +3215,14 @@ static int build_mlx_header(struct mlx4_ib_sqp *sqp, const struct ib_ud_wr *wr,
 	}
 	sqp->ud_header.bth.solicited_event = !!(wr->wr.send_flags & IB_SEND_SOLICITED);
 	if (!sqp->qp.ibqp.qp_num)
-		ib_get_cached_pkey(ib_dev, sqp->qp.port, sqp->pkey_index, &pkey);
+		err = ib_get_cached_pkey(ib_dev, sqp->qp.port, sqp->pkey_index,
+					 &pkey);
 	else
-		ib_get_cached_pkey(ib_dev, sqp->qp.port, wr->pkey_index, &pkey);
+		err = ib_get_cached_pkey(ib_dev, sqp->qp.port, wr->pkey_index,
+					 &pkey);
+	if (err)
+		return err;
+
 	sqp->ud_header.bth.pkey = cpu_to_be16(pkey);
 	sqp->ud_header.bth.destination_qpn = cpu_to_be32(wr->remote_qpn);
 	sqp->ud_header.bth.psn = cpu_to_be32((sqp->send_psn++) & ((1 << 24) - 1));
drivers/infiniband/sw/rxe/rxe_mmap.c +1 -1
index 48f48122ddcb..6a413d73b95d 100644
@@ -151,7 +151,7 @@ struct rxe_mmap_info *rxe_create_mmap_info(struct rxe_dev *rxe, u32 size,
 
 	ip = kmalloc(sizeof(*ip), GFP_KERNEL);
 	if (!ip)
-		return NULL;
+		return ERR_PTR(-ENOMEM);
 
 	size = PAGE_ALIGN(size);
 
drivers/infiniband/sw/rxe/rxe_queue.c +7 -4
index ff92704de32f..245040c3a35d 100644
@@ -45,12 +45,15 @@ int do_mmap_info(struct rxe_dev *rxe, struct mminfo __user *outbuf,
 
 	if (outbuf) {
 		ip = rxe_create_mmap_info(rxe, buf_size, udata, buf);
-		if (!ip)
+		if (IS_ERR(ip)) {
+			err = PTR_ERR(ip);
 			goto err1;
+		}
 
-		err = copy_to_user(outbuf, &ip->info, sizeof(ip->info));
-		if (err)
+		if (copy_to_user(outbuf, &ip->info, sizeof(ip->info))) {
+			err = -EFAULT;
 			goto err2;
+		}
 
 		spin_lock_bh(&rxe->pending_lock);
 		list_add(&ip->pending_mmaps, &rxe->pending_mmaps);
@@ -64,7 +67,7 @@ int do_mmap_info(struct rxe_dev *rxe, struct mminfo __user *outbuf,
 err2:
 	kfree(ip);
 err1:
-	return -EINVAL;
+	return err;
 }
 
 inline void rxe_queue_reset(struct rxe_queue *q)
drivers/iommu/amd_iommu.c +134 -41

384 lines not on this page · raw message

drivers/iommu/amd_iommu_types.h +7 -2
index ca8c4522045b..7a8fdec138bd 100644
@@ -468,8 +468,7 @@ struct protection_domain {
 				       iommu core code */
 	spinlock_t lock;	/* mostly used to lock the page table*/
 	u16 id;			/* the domain id written to the device table */
-	int mode;		/* paging mode (0-6 levels) */
-	u64 *pt_root;		/* page table root pointer */
+	atomic64_t pt_root;	/* pgtable root and pgtable mode */
 	int glx;		/* Number of levels for GCR3 table */
 	u64 *gcr3_tbl;		/* Guest CR3 table */
 	unsigned long flags;	/* flags to find out type of domain */
@@ -477,6 +476,12 @@ struct protection_domain {
 	unsigned dev_iommu[MAX_IOMMUS]; /* per-IOMMU reference count */
 };
 
+/* For decocded pt_root */
+struct domain_pgtable {
+	int mode;
+	u64 *root;
+};
+
 /*
  * Structure where we save information about one hardware AMD IOMMU in the
  * system.
drivers/mmc/core/block.c +2 -1
index 663d87924e5e..32db16f6debc 100644
@@ -1417,6 +1417,7 @@ static void mmc_blk_cqe_complete_rq(struct mmc_queue *mq, struct request *req)
 	struct mmc_request *mrq = &mqrq->brq.mrq;
 	struct request_queue *q = req->q;
 	struct mmc_host *host = mq->card->host;
+	enum mmc_issue_type issue_type = mmc_issue_type(mq, req);
 	unsigned long flags;
 	bool put_card;
 	int err;
@@ -1446,7 +1447,7 @@ static void mmc_blk_cqe_complete_rq(struct mmc_queue *mq, struct request *req)
 
 	spin_lock_irqsave(&mq->lock, flags);
 
-	mq->in_flight[mmc_issue_type(mq, req)] -= 1;
+	mq->in_flight[issue_type] -= 1;
 
 	put_card = (mmc_tot_in_flight(mq) == 0);
 
drivers/mmc/core/queue.c +5 -11
index 9edc08685e86..9c0ccb3744c2 100644
@@ -107,11 +107,10 @@ static enum blk_eh_timer_return mmc_cqe_timed_out(struct request *req)
 	case MMC_ISSUE_DCMD:
 		if (host->cqe_ops->cqe_timeout(host, mrq, &recovery_needed)) {
 			if (recovery_needed)
-				__mmc_cqe_recovery_notifier(mq);
+				mmc_cqe_recovery_notifier(mrq);
 			return BLK_EH_RESET_TIMER;
 		}
-		/* No timeout (XXX: huh? comment doesn't make much sense) */
-		blk_mq_complete_request(req);
+		/* The request has gone already */
 		return BLK_EH_DONE;
 	default:
 		/* Timeout is handled by mmc core */
@@ -125,18 +124,13 @@ static enum blk_eh_timer_return mmc_mq_timed_out(struct request *req,
 	struct request_queue *q = req->q;
 	struct mmc_queue *mq = q->queuedata;
 	unsigned long flags;
-	int ret;
+	bool ignore_tout;
 
 	spin_lock_irqsave(&mq->lock, flags);
-
-	if (mq->recovery_needed || !mq->use_cqe)
-		ret = BLK_EH_RESET_TIMER;
-	else
-		ret = mmc_cqe_timed_out(req);
-
+	ignore_tout = mq->recovery_needed || !mq->use_cqe;
 	spin_unlock_irqrestore(&mq->lock, flags);
 
-	return ret;
+	return ignore_tout ? BLK_EH_RESET_TIMER : mmc_cqe_timed_out(req);
 }
 
 static void mmc_mq_recovery_handler(struct work_struct *work)
drivers/mmc/host/alcor.c +5 -1
index 1aee485d56d4..026ca9194ce5 100644
@@ -1104,7 +1104,7 @@ static int alcor_pci_sdmmc_drv_probe(struct platform_device *pdev)
 
 	if (ret) {
 		dev_err(&pdev->dev, "Failed to get irq for data line\n");
-		return ret;
+		goto free_host;
 	}
 
 	mutex_init(&host->cmd_mutex);
@@ -1116,6 +1116,10 @@ static int alcor_pci_sdmmc_drv_probe(struct platform_device *pdev)
 	dev_set_drvdata(&pdev->dev, host);
 	mmc_add_host(mmc);
 	return 0;
+
+free_host:
+	mmc_free_host(mmc);
+	return ret;
 }
 
 static int alcor_pci_sdmmc_drv_remove(struct platform_device *pdev)
drivers/mmc/host/sdhci-acpi.c +6 -4
index 2a2173d953f5..7da47196c596 100644
@@ -605,10 +605,12 @@ static int sdhci_acpi_emmc_amd_probe_slot(struct platform_device *pdev,
 }
 
 static const struct sdhci_acpi_slot sdhci_acpi_slot_amd_emmc = {
-	.chip   = &sdhci_acpi_chip_amd,
-	.caps   = MMC_CAP_8_BIT_DATA | MMC_CAP_NONREMOVABLE,
-	.quirks = SDHCI_QUIRK_32BIT_DMA_ADDR | SDHCI_QUIRK_32BIT_DMA_SIZE |
-			SDHCI_QUIRK_32BIT_ADMA_SIZE,
+	.chip		= &sdhci_acpi_chip_amd,
+	.caps		= MMC_CAP_8_BIT_DATA | MMC_CAP_NONREMOVABLE,
+	.quirks		= SDHCI_QUIRK_32BIT_DMA_ADDR |
+			  SDHCI_QUIRK_32BIT_DMA_SIZE |
+			  SDHCI_QUIRK_32BIT_ADMA_SIZE,
+	.quirks2	= SDHCI_QUIRK2_BROKEN_64_BIT_DMA,
 	.probe_slot     = sdhci_acpi_emmc_amd_probe_slot,
 };
 
drivers/mmc/host/sdhci-pci-gli.c +23 -0
index ce15a05f23d4..fd76aa672e02 100644
@@ -26,6 +26,9 @@
 #define   SDHCI_GLI_9750_DRIVING_2    GENMASK(27, 26)
 #define   GLI_9750_DRIVING_1_VALUE    0xFFF
 #define   GLI_9750_DRIVING_2_VALUE    0x3
+#define   SDHCI_GLI_9750_SEL_1        BIT(29)
+#define   SDHCI_GLI_9750_SEL_2        BIT(31)
+#define   SDHCI_GLI_9750_ALL_RST      (BIT(24)|BIT(25)|BIT(28)|BIT(30))
 
 #define SDHCI_GLI_9750_PLL	      0x864
 #define   SDHCI_GLI_9750_PLL_TX2_INV    BIT(23)
@@ -122,6 +125,8 @@ static void gli_set_9750(struct sdhci_host *host)
 				    GLI_9750_DRIVING_1_VALUE);
 	driving_value |= FIELD_PREP(SDHCI_GLI_9750_DRIVING_2,
 				    GLI_9750_DRIVING_2_VALUE);
+	driving_value &= ~(SDHCI_GLI_9750_SEL_1|SDHCI_GLI_9750_SEL_2|SDHCI_GLI_9750_ALL_RST);
+	driving_value |= SDHCI_GLI_9750_SEL_2;
 	sdhci_writel(host, driving_value, SDHCI_GLI_9750_DRIVING);
 
 	sw_ctrl_value &= ~SDHCI_GLI_9750_SW_CTRL_4;
@@ -334,6 +339,18 @@ static u32 sdhci_gl9750_readl(struct sdhci_host *host, int reg)
 	return value;
 }
 
+#ifdef CONFIG_PM_SLEEP
+static int sdhci_pci_gli_resume(struct sdhci_pci_chip *chip)
+{
+	struct sdhci_pci_slot *slot = chip->slots[0];
+
+	pci_free_irq_vectors(slot->chip->pdev);
+	gli_pcie_enable_msi(slot);
+
+	return sdhci_pci_resume_host(chip);
+}
+#endif
+
 static const struct sdhci_ops sdhci_gl9755_ops = {
 	.set_clock		= sdhci_set_clock,
 	.enable_dma		= sdhci_pci_enable_dma,
@@ -348,6 +365,9 @@ const struct sdhci_pci_fixes sdhci_gl9755 = {
 	.quirks2	= SDHCI_QUIRK2_BROKEN_DDR50,
 	.probe_slot	= gli_probe_slot_gl9755,
 	.ops            = &sdhci_gl9755_ops,
+#ifdef CONFIG_PM_SLEEP
+	.resume         = sdhci_pci_gli_resume,
+#endif
 };
 
 static const struct sdhci_ops sdhci_gl9750_ops = {
@@ -366,4 +386,7 @@ const struct sdhci_pci_fixes sdhci_gl9750 = {
 	.quirks2	= SDHCI_QUIRK2_BROKEN_DDR50,
 	.probe_slot	= gli_probe_slot_gl9750,
 	.ops            = &sdhci_gl9750_ops,
+#ifdef CONFIG_PM_SLEEP
+	.resume         = sdhci_pci_gli_resume,
+#endif
 };
drivers/net/dsa/dsa_loop.c +1 -0
index fdcb70b9f0e4..400207c5c7de 100644
@@ -360,6 +360,7 @@ static void __exit dsa_loop_exit(void)
 }
 module_exit(dsa_loop_exit);
 
+MODULE_SOFTDEP("pre: dsa_loop_bdinfo");
 MODULE_LICENSE("GPL");
 MODULE_AUTHOR("Florian Fainelli");
 MODULE_DESCRIPTION("DSA loopback driver");
drivers/net/dsa/ocelot/felix.c +1 -0
index 9e895ab586d5..a7780c06fa65 100644
@@ -397,6 +397,7 @@ static int felix_init_structs(struct felix *felix, int num_phys_ports)
 	ocelot->stats_layout	= felix->info->stats_layout;
 	ocelot->num_stats	= felix->info->num_stats;
 	ocelot->shared_queue_sz	= felix->info->shared_queue_sz;
+	ocelot->num_mact_rows	= felix->info->num_mact_rows;
 	ocelot->ops		= felix->info->ops;
 
 	port_phy_modes = kcalloc(num_phys_ports, sizeof(phy_interface_t),
drivers/net/dsa/ocelot/felix.h +1 -0
index 3a7580015b62..8771d40324f1 100644
@@ -15,6 +15,7 @@ struct felix_info {
 	const u32 *const		*map;
 	const struct ocelot_ops		*ops;
 	int				shared_queue_sz;
+	int				num_mact_rows;
 	const struct ocelot_stat_layout	*stats_layout;
 	unsigned int			num_stats;
 	int				num_ports;
drivers/net/dsa/ocelot/felix_vsc9959.c +1 -0
index 2c812b481778..edc1a67c002b 100644
@@ -1090,6 +1090,7 @@ struct felix_info felix_info_vsc9959 = {
 	.stats_layout		= vsc9959_stats_layout,
 	.num_stats		= ARRAY_SIZE(vsc9959_stats_layout),
 	.shared_queue_sz	= 128 * 1024,
+	.num_mact_rows		= 2048,
 	.num_ports		= 6,
 	.switch_pci_bar		= 4,
 	.imdio_pci_bar		= 0,
drivers/net/ethernet/broadcom/Kconfig +1 -0
index 53055ce5dfd6..2a69c0d06f3c 100644
@@ -69,6 +69,7 @@ config BCMGENET
 	select BCM7XXX_PHY
 	select MDIO_BCM_UNIMAC
 	select DIMLIB
+	select BROADCOM_PHY if ARCH_BCM2835
 	help
 	  This driver supports the built-in Ethernet MACs found in the
 	  Broadcom BCM7xxx Set Top Box family chipset.
drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c +17 -12
index 7ff147e89426..d9bbaa734d98 100644
@@ -86,7 +86,7 @@ static void free_rx_fd(struct dpaa2_eth_priv *priv,
 	for (i = 1; i < DPAA2_ETH_MAX_SG_ENTRIES; i++) {
 		addr = dpaa2_sg_get_addr(&sgt[i]);
 		sg_vaddr = dpaa2_iova_to_virt(priv->iommu_domain, addr);
-		dma_unmap_page(dev, addr, DPAA2_ETH_RX_BUF_SIZE,
+		dma_unmap_page(dev, addr, priv->rx_buf_size,
 			       DMA_BIDIRECTIONAL);
 
 		free_pages((unsigned long)sg_vaddr, 0);
@@ -144,7 +144,7 @@ static struct sk_buff *build_frag_skb(struct dpaa2_eth_priv *priv,
 		/* Get the address and length from the S/G entry */
 		sg_addr = dpaa2_sg_get_addr(sge);
 		sg_vaddr = dpaa2_iova_to_virt(priv->iommu_domain, sg_addr);
-		dma_unmap_page(dev, sg_addr, DPAA2_ETH_RX_BUF_SIZE,
+		dma_unmap_page(dev, sg_addr, priv->rx_buf_size,
 			       DMA_BIDIRECTIONAL);
 
 		sg_length = dpaa2_sg_get_len(sge);
@@ -185,7 +185,7 @@ static struct sk_buff *build_frag_skb(struct dpaa2_eth_priv *priv,
 				(page_address(page) - page_address(head_page));
 
 			skb_add_rx_frag(skb, i - 1, head_page, page_offset,
-					sg_length, DPAA2_ETH_RX_BUF_SIZE);
+					sg_length, priv->rx_buf_size);
 		}
 
 		if (dpaa2_sg_is_final(sge))
@@ -211,7 +211,7 @@ static void free_bufs(struct dpaa2_eth_priv *priv, u64 *buf_array, int count)
 
 	for (i = 0; i < count; i++) {
 		vaddr = dpaa2_iova_to_virt(priv->iommu_domain, buf_array[i]);
-		dma_unmap_page(dev, buf_array[i], DPAA2_ETH_RX_BUF_SIZE,
+		dma_unmap_page(dev, buf_array[i], priv->rx_buf_size,
 			       DMA_BIDIRECTIONAL);
 		free_pages((unsigned long)vaddr, 0);
 	}
@@ -335,7 +335,7 @@ static u32 run_xdp(struct dpaa2_eth_priv *priv,
 		break;
 	case XDP_REDIRECT:
 		dma_unmap_page(priv->net_dev->dev.parent, addr,
-			       DPAA2_ETH_RX_BUF_SIZE, DMA_BIDIRECTIONAL);
+			       priv->rx_buf_size, DMA_BIDIRECTIONAL);
 		ch->buf_count--;
 		xdp.data_hard_start = vaddr;
 		err = xdp_do_redirect(priv->net_dev, &xdp, xdp_prog);
@@ -374,7 +374,7 @@ static void dpaa2_eth_rx(struct dpaa2_eth_priv *priv,
 	trace_dpaa2_rx_fd(priv->net_dev, fd);
 
 	vaddr = dpaa2_iova_to_virt(priv->iommu_domain, addr);
-	dma_sync_single_for_cpu(dev, addr, DPAA2_ETH_RX_BUF_SIZE,
+	dma_sync_single_for_cpu(dev, addr, priv->rx_buf_size,
 				DMA_BIDIRECTIONAL);
 
 	fas = dpaa2_get_fas(vaddr, false);
@@ -393,13 +393,13 @@ static void dpaa2_eth_rx(struct dpaa2_eth_priv *priv,
 			return;
 		}
 
-		dma_unmap_page(dev, addr, DPAA2_ETH_RX_BUF_SIZE,
+		dma_unmap_page(dev, addr, priv->rx_buf_size,
 			       DMA_BIDIRECTIONAL);
 		skb = build_linear_skb(ch, fd, vaddr);
 	} else if (fd_format == dpaa2_fd_sg) {
 		WARN_ON(priv->xdp_prog);
 
-		dma_unmap_page(dev, addr, DPAA2_ETH_RX_BUF_SIZE,
+		dma_unmap_page(dev, addr, priv->rx_buf_size,
 			       DMA_BIDIRECTIONAL);
 		skb = build_frag_skb(priv, ch, buf_data);
 		free_pages((unsigned long)vaddr, 0);
@@ -974,7 +974,7 @@ static int add_bufs(struct dpaa2_eth_priv *priv,
 		if (!page)
 			goto err_alloc;
 
-		addr = dma_map_page(dev, page, 0, DPAA2_ETH_RX_BUF_SIZE,
+		addr = dma_map_page(dev, page, 0, priv->rx_buf_size,
 				    DMA_BIDIRECTIONAL);
 		if (unlikely(dma_mapping_error(dev, addr)))
 			goto err_map;
@@ -984,7 +984,7 @@ static int add_bufs(struct dpaa2_eth_priv *priv,
 		/* tracing point */
 		trace_dpaa2_eth_buf_seed(priv->net_dev,
 					 page, DPAA2_ETH_RX_BUF_RAW_SIZE,
-					 addr, DPAA2_ETH_RX_BUF_SIZE,
+					 addr, priv->rx_buf_size,
 					 bpid);
 	}
 
@@ -1715,7 +1715,7 @@ static bool xdp_mtu_valid(struct dpaa2_eth_priv *priv, int mtu)
 	int mfl, linear_mfl;
 
 	mfl = DPAA2_ETH_L2_MAX_FRM(mtu);
-	linear_mfl = DPAA2_ETH_RX_BUF_SIZE - DPAA2_ETH_RX_HWA_SIZE -
+	linear_mfl = priv->rx_buf_size - DPAA2_ETH_RX_HWA_SIZE -
 		     dpaa2_eth_rx_head_room(priv) - XDP_PACKET_HEADROOM;
 
 	if (mfl > linear_mfl) {
@@ -2457,6 +2457,11 @@ static int set_buffer_layout(struct dpaa2_eth_priv *priv)
 	else
 		rx_buf_align = DPAA2_ETH_RX_BUF_ALIGN;
 
+	/* We need to ensure that the buffer size seen by WRIOP is a multiple
+	 * of 64 or 256 bytes depending on the WRIOP version.
+	 */
+	priv->rx_buf_size = ALIGN_DOWN(DPAA2_ETH_RX_BUF_SIZE, rx_buf_align);
+
 	/* tx buffer */
 	buf_layout.private_data_size = DPAA2_ETH_SWA_SIZE;
 	buf_layout.pass_timestamp = true;
@@ -3121,7 +3126,7 @@ static int bind_dpni(struct dpaa2_eth_priv *priv)
 	pools_params.num_dpbp = 1;
 	pools_params.pools[0].dpbp_id = priv->dpbp_dev->obj_desc.id;
 	pools_params.pools[0].backup_pool = 0;
-	pools_params.pools[0].buffer_size = DPAA2_ETH_RX_BUF_SIZE;
+	pools_params.pools[0].buffer_size = priv->rx_buf_size;
 	err = dpni_set_pools(priv->mc_io, 0, priv->mc_token, &pools_params);
 	if (err) {
 		dev_err(dev, "dpni_set_pools() failed\n");
drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h +1 -0
index 7635db3ef903..13242bf5b427 100644
@@ -382,6 +382,7 @@ struct dpaa2_eth_priv {
 	u16 tx_data_offset;
 
 	struct fsl_mc_device *dpbp_dev;
+	u16 rx_buf_size;
 	u16 bpid;
 	struct iommu_domain *iommu_domain;
 
drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c +1 -1
index 96676abcebd5..c53f091af2cf 100644
@@ -625,7 +625,7 @@ static int num_rules(struct dpaa2_eth_priv *priv)
 
 static int update_cls_rule(struct net_device *net_dev,
 			   struct ethtool_rx_flow_spec *new_fs,
-			   int location)
+			   unsigned int location)
 {
 	struct dpaa2_eth_priv *priv = netdev_priv(net_dev);
 	struct dpaa2_eth_cls_rule *rule;
drivers/net/ethernet/huawei/hinic/hinic_hw_mgmt.c +12 -4
index 8995e32dd1c0..992908e6eebf 100644
@@ -45,6 +45,8 @@
 
 #define MGMT_MSG_TIMEOUT                5000
 
+#define SET_FUNC_PORT_MGMT_TIMEOUT	25000
+
 #define mgmt_to_pfhwdev(pf_mgmt)        \
 		container_of(pf_mgmt, struct hinic_pfhwdev, pf_to_mgmt)
 
@@ -238,12 +240,13 @@ static int msg_to_mgmt_sync(struct hinic_pf_to_mgmt *pf_to_mgmt,
 			    u8 *buf_in, u16 in_size,
 			    u8 *buf_out, u16 *out_size,
 			    enum mgmt_direction_type direction,
-			    u16 resp_msg_id)
+			    u16 resp_msg_id, u32 timeout)
 {
 	struct hinic_hwif *hwif = pf_to_mgmt->hwif;
 	struct pci_dev *pdev = hwif->pdev;
 	struct hinic_recv_msg *recv_msg;
 	struct completion *recv_done;
+	unsigned long timeo;
 	u16 msg_id;
 	int err;
 
@@ -267,8 +270,9 @@ static int msg_to_mgmt_sync(struct hinic_pf_to_mgmt *pf_to_mgmt,
 		goto unlock_sync_msg;
 	}
 
-	if (!wait_for_completion_timeout(recv_done,
-					 msecs_to_jiffies(MGMT_MSG_TIMEOUT))) {
+	timeo = msecs_to_jiffies(timeout ? timeout : MGMT_MSG_TIMEOUT);
+
+	if (!wait_for_completion_timeout(recv_done, timeo)) {
 		dev_err(&pdev->dev, "MGMT timeout, MSG id = %d\n", msg_id);
 		err = -ETIMEDOUT;
 		goto unlock_sync_msg;
@@ -342,6 +346,7 @@ int hinic_msg_to_mgmt(struct hinic_pf_to_mgmt *pf_to_mgmt,
 {
 	struct hinic_hwif *hwif = pf_to_mgmt->hwif;
 	struct pci_dev *pdev = hwif->pdev;
+	u32 timeout = 0;
 
 	if (sync != HINIC_MGMT_MSG_SYNC) {
 		dev_err(&pdev->dev, "Invalid MGMT msg type\n");
@@ -353,9 +358,12 @@ int hinic_msg_to_mgmt(struct hinic_pf_to_mgmt *pf_to_mgmt,
 		return -EINVAL;
 	}
 
+	if (cmd == HINIC_PORT_CMD_SET_FUNC_STATE)
+		timeout = SET_FUNC_PORT_MGMT_TIMEOUT;
+
 	return msg_to_mgmt_sync(pf_to_mgmt, mod, cmd, buf_in, in_size,
 				buf_out, out_size, MGMT_DIRECT_SEND,
-				MSG_NOT_RESP);
+				MSG_NOT_RESP, timeout);
 }
 
 /**
drivers/net/ethernet/huawei/hinic/hinic_main.c +2 -14
index 13560975c103..63b92f6cc856 100644
@@ -483,7 +483,6 @@ static int hinic_close(struct net_device *netdev)
 {
 	struct hinic_dev *nic_dev = netdev_priv(netdev);
 	unsigned int flags;
-	int err;
 
 	down(&nic_dev->mgmt_lock);
 
@@ -497,20 +496,9 @@ static int hinic_close(struct net_device *netdev)
 
 	up(&nic_dev->mgmt_lock);
 
-	err = hinic_port_set_func_state(nic_dev, HINIC_FUNC_PORT_DISABLE);
-	if (err) {
-		netif_err(nic_dev, drv, netdev,
-			  "Failed to set func port state\n");
-		nic_dev->flags |= (flags & HINIC_INTF_UP);
-		return err;
-	}
+	hinic_port_set_state(nic_dev, HINIC_PORT_DISABLE);
 
-	err = hinic_port_set_state(nic_dev, HINIC_PORT_DISABLE);
-	if (err) {
-		netif_err(nic_dev, drv, netdev, "Failed to set port state\n");
-		nic_dev->flags |= (flags & HINIC_INTF_UP);
-		return err;
-	}
+	hinic_port_set_func_state(nic_dev, HINIC_FUNC_PORT_DISABLE);
 
 	if (nic_dev->flags & HINIC_RSS_ENABLE) {
 		hinic_rss_deinit(nic_dev);
drivers/net/ethernet/moxa/moxart_ether.c +1 -1
index e1651756bf9d..f70bb81e1ed6 100644
@@ -564,7 +564,7 @@ static int moxart_remove(struct platform_device *pdev)
 	struct net_device *ndev = platform_get_drvdata(pdev);
 
 	unregister_netdev(ndev);
-	free_irq(ndev->irq, ndev);
+	devm_free_irq(&pdev->dev, ndev->irq, ndev);
 	moxart_mac_free_memory(ndev);
 	free_netdev(ndev);
 
drivers/net/ethernet/mscc/ocelot.c +11 -6
index b14286dc49fb..419e2ce2eac0 100644
@@ -1016,10 +1016,8 @@ int ocelot_fdb_dump(struct ocelot *ocelot, int port,
 {
 	int i, j;
 
-	/* Loop through all the mac tables entries. There are 1024 rows of 4
-	 * entries.
-	 */
-	for (i = 0; i < 1024; i++) {
+	/* Loop through all the mac tables entries. */
+	for (i = 0; i < ocelot->num_mact_rows; i++) {
 		for (j = 0; j < 4; j++) {
 			struct ocelot_mact_entry entry;
 			bool is_static;
@@ -1446,8 +1444,15 @@ static void ocelot_port_attr_stp_state_set(struct ocelot *ocelot, int port,
 
 void ocelot_set_ageing_time(struct ocelot *ocelot, unsigned int msecs)
 {
-	ocelot_write(ocelot, ANA_AUTOAGE_AGE_PERIOD(msecs / 2),
-		     ANA_AUTOAGE);
+	unsigned int age_period = ANA_AUTOAGE_AGE_PERIOD(msecs / 2000);
+
+	/* Setting AGE_PERIOD to zero effectively disables automatic aging,
+	 * which is clearly not what our intention is. So avoid that.
+	 */
+	if (!age_period)
+		age_period = 1;
+
+	ocelot_rmw(ocelot, age_period, ANA_AUTOAGE_AGE_PERIOD_M, ANA_AUTOAGE);
 }
 EXPORT_SYMBOL(ocelot_set_ageing_time);
 
drivers/net/ethernet/mscc/ocelot_regs.c +1 -0
index b88b5899b227..7d4fd1b6adda 100644
@@ -431,6 +431,7 @@ int ocelot_chip_init(struct ocelot *ocelot, const struct ocelot_ops *ops)
 	ocelot->stats_layout = ocelot_stats_layout;
 	ocelot->num_stats = ARRAY_SIZE(ocelot_stats_layout);
 	ocelot->shared_queue_sz = 224 * 1024;
+	ocelot->num_mact_rows = 1024;
 	ocelot->ops = ops;
 
 	ret = ocelot_regfields_init(ocelot, ocelot_regfields);
drivers/net/ethernet/natsemi/jazzsonic.c +4 -2
index 51fa82b429a3..40970352d208 100644
@@ -235,11 +235,13 @@ static int jazz_sonic_probe(struct platform_device *pdev)
 
 	err = register_netdev(dev);
 	if (err)
-		goto out1;
+		goto undo_probe1;
 
 	return 0;
 
-out1:
+undo_probe1:
+	dma_free_coherent(lp->device, SIZEOF_SONIC_DESC * SONIC_BUS_SCALE(lp->dma_bitmode),
+			  lp->descriptors, lp->descriptors_laddr);
 	release_mem_region(dev->base_addr, SONIC_MEM_SIZE);
 out:
 	free_netdev(dev);
drivers/net/ethernet/netronome/nfp/abm/main.c +3 -1
index 354efffac0f9..bdbf0726145e 100644
@@ -333,8 +333,10 @@ nfp_abm_vnic_alloc(struct nfp_app *app, struct nfp_net *nn, unsigned int id)
 		goto err_free_alink;
 
 	alink->prio_map = kzalloc(abm->prio_map_len, GFP_KERNEL);
-	if (!alink->prio_map)
+	if (!alink->prio_map) {
+		err = -ENOMEM;
 		goto err_free_alink;
+	}
 
 	/* This is a multi-host app, make sure MAC/PHY is up, but don't
 	 * make the MAC/PHY state follow the state of any of the ports.
drivers/net/ethernet/realtek/r8169_main.c +2 -0
index 6b633e9d76da..07a6b609f741 100644
@@ -2127,6 +2127,8 @@ static void rtl8169_get_mac_version(struct rtl8169_private *tp)
 		{ 0x7cf, 0x348,	RTL_GIGA_MAC_VER_07 },
 		{ 0x7cf, 0x248,	RTL_GIGA_MAC_VER_07 },
 		{ 0x7cf, 0x340,	RTL_GIGA_MAC_VER_13 },
+		/* RTL8401, reportedly works if treated as RTL8101e */
+		{ 0x7cf, 0x240,	RTL_GIGA_MAC_VER_13 },
 		{ 0x7cf, 0x343,	RTL_GIGA_MAC_VER_10 },
 		{ 0x7cf, 0x342,	RTL_GIGA_MAC_VER_16 },
 		{ 0x7c8, 0x348,	RTL_GIGA_MAC_VER_09 },
drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c +15 -2
index e0a5fe83d8e0..bfc4a92f1d92 100644
@@ -75,6 +75,11 @@ struct ethqos_emac_por {
 	unsigned int value;
 };
 
+struct ethqos_emac_driver_data {
+	const struct ethqos_emac_por *por;
+	unsigned int num_por;
+};
+
 struct qcom_ethqos {
 	struct platform_device *pdev;
 	void __iomem *rgmii_base;
@@ -171,6 +176,11 @@ static const struct ethqos_emac_por emac_v2_3_0_por[] = {
 	{ .offset = RGMII_IO_MACRO_CONFIG2,	.value = 0x00002060 },
 };
 
+static const struct ethqos_emac_driver_data emac_v2_3_0_data = {
+	.por = emac_v2_3_0_por,
+	.num_por = ARRAY_SIZE(emac_v2_3_0_por),
+};
+
 static int ethqos_dll_configure(struct qcom_ethqos *ethqos)
 {
 	unsigned int val;
@@ -442,6 +452,7 @@ static int qcom_ethqos_probe(struct platform_device *pdev)
 	struct device_node *np = pdev->dev.of_node;
 	struct plat_stmmacenet_data *plat_dat;
 	struct stmmac_resources stmmac_res;
+	const struct ethqos_emac_driver_data *data;
 	struct qcom_ethqos *ethqos;
 	struct resource *res;
 	int ret;
@@ -471,7 +482,9 @@ static int qcom_ethqos_probe(struct platform_device *pdev)
 		goto err_mem;
 	}
 
-	ethqos->por = of_device_get_match_data(&pdev->dev);
+	data = of_device_get_match_data(&pdev->dev);
+	ethqos->por = data->por;
+	ethqos->num_por = data->num_por;
 
 	ethqos->rgmii_clk = devm_clk_get(&pdev->dev, "rgmii");
 	if (IS_ERR(ethqos->rgmii_clk)) {
@@ -526,7 +539,7 @@ static int qcom_ethqos_remove(struct platform_device *pdev)
 }
 
 static const struct of_device_id qcom_ethqos_match[] = {
-	{ .compatible = "qcom,qcs404-ethqos", .data = &emac_v2_3_0_por},
+	{ .compatible = "qcom,qcs404-ethqos", .data = &emac_v2_3_0_data},
 	{ }
 };
 MODULE_DEVICE_TABLE(of, qcom_ethqos_match);
drivers/net/ethernet/stmicro/stmmac/dwmac5.c +1 -1
index 494c859b4ade..67ba67ed0cb9 100644
@@ -624,7 +624,7 @@ int dwmac5_est_configure(void __iomem *ioaddr, struct stmmac_est *cfg,
 		total_offset += offset;
 	}
 
-	total_ctr = cfg->ctr[0] + cfg->ctr[1] * 1000000000;
+	total_ctr = cfg->ctr[0] + cfg->ctr[1] * 1000000000ULL;
 	total_ctr += total_offset;
 
 	ctr_low = do_div(total_ctr, 1000000000);
drivers/net/hyperv/netvsc_drv.c +2 -1
index 2c0a24c606fc..28a5d46ad526 100644
@@ -710,7 +710,8 @@ static int netvsc_xmit(struct sk_buff *skb, struct net_device *net, bool xdp_tx)
 	goto drop;
 }
 
-static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *ndev)
+static netdev_tx_t netvsc_start_xmit(struct sk_buff *skb,
+				     struct net_device *ndev)
 {
 	return netvsc_xmit(skb, ndev, false);
 }
drivers/net/phy/microchip_t1.c +171 -0

164 lines not on this page · raw message

drivers/net/phy/phy.c +5 -3
index 355bfdef48d2..594d97d3c8ab 100644

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

drivers/net/ppp/pppoe.c +3 -0
index d760a36db28c..beedaad08255 100644

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

drivers/net/virtio_net.c +4 -2
index 2fe7a3188282..f7129bc898cc 100644

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

drivers/pinctrl/intel/pinctrl-baytrail.c +1 -0
index b409642f168d..9b821c9cbd16 100644

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

drivers/pinctrl/intel/pinctrl-cherryview.c +4 -0
index 4c74fdde576d..1093a6105d40 100644

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

drivers/pinctrl/intel/pinctrl-sunrisepoint.c +8 -7
index 330c8f077b73..4d7a86a5a37b 100644

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

drivers/pinctrl/qcom/pinctrl-msm.c +1 -1
index 1a948c3f54b7..9f1c9951949e 100644

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

drivers/s390/net/ism_drv.c +3 -1
index 4fc2056bd227..e615dc240150 100644

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

drivers/usb/cdns3/gadget.c +1 -1
index 3574dbb09366..a5cccbd5d356 100644

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

drivers/usb/core/devio.c +14 -5
index 6833c918abce..d93d94d7ff50 100644

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

drivers/usb/core/hub.c +5 -1
index 2b6565c06c23..fc748c731832 100644

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

drivers/usb/dwc3/gadget.c +0 -3
index bc1cf6d0412a..7e9643d25b14 100644

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

drivers/usb/gadget/configfs.c +3 -0
index 32b637e3e1fa..6a9aa4413d64 100644

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

drivers/usb/gadget/legacy/audio.c +3 -1
index dd81fd538cb8..a748ed0842e8 100644

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

drivers/usb/gadget/legacy/cdc2.c +3 -1
index 8d7a556ece30..563363aba48f 100644

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

drivers/usb/gadget/legacy/ncm.c +3 -1
index c61e71ba7045..0f1b45e3abd1 100644

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

drivers/usb/gadget/udc/net2272.c +2 -0
index a8273b589456..5af0fe9c61d7 100644

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

drivers/usb/gadget/udc/tegra-xudc.c +4 -4
index 634c2c19a176..a22d190d00a0 100644

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

drivers/usb/host/xhci-plat.c +3 -1
index 315b4552693c..52c625c02341 100644

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

drivers/usb/host/xhci-ring.c +2 -2
index 2fbc00c0a6e8..49f3f3ce7737 100644

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

fs/cachefiles/rdwr.c +5 -5
index 1dc97f2d6201..d3d78176b23c 100644

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

fs/cifs/cifssmb.c +1 -1
index 6f6fb3606a5d..a4545aa04efc 100644

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

fs/eventpoll.c +28 -20

48 lines not on this page · raw message

fs/exec.c +2 -2
index a58625f27652..77603ceed51f 100644

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

fs/gfs2/bmap.c +9 -7
index 08f6fbb3655e..31ed26435625 100644

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

fs/gfs2/lops.c +12 -7
index c090d5ad3f22..3a020bdc358c 100644

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

fs/io_uring.c +2 -2
index 9690c845a3e4..832e042531bc 100644

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

fs/ioctl.c +8 -0
index 282d45be6f45..5e80b40bc1b5 100644

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

fs/iomap/fiemap.c +1 -4
index bccf305ea9ce..d55e8f491a5e 100644

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

fs/nfs/fscache.c +18 -21
index 1abf126c2df4..a60df88efc40 100644

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

fs/nfs/mount_clnt.c +2 -1
index 35c8cb2d7637..dda5c3e65d8d 100644

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

fs/nfs/nfs4state.c +1 -1
index f7723d221945..459c7fb5d103 100644

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

fs/nfs/super.c +0 -1
index dada09b391c6..c0d5240b8a0a 100644

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

fs/notify/fanotify/fanotify.c +7 -4
index f5d30573f4a9..deb13f0a0f7d 100644

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

include/linux/compiler.h +6 -0
index 034b0a644efc..448c91bf543b 100644

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

include/linux/fs.h +1 -1
index abedbffe2c9e..872ee2131589 100644

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

include/linux/ftrace.h +23 -0
index db95244a62d4..ab4bd15cbcdb 100644

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

include/linux/host1x.h +3 -0
index 62d216ff1097..c230b4e70d75 100644

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

include/linux/memcontrol.h +2 -0
index e9ba01336d4e..bc5a3621a9d7 100644

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

include/linux/pnp.h +9 -20
index 3b12fd28af78..fc4df3ccefc9 100644

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

include/linux/skmsg.h +1 -0
index 14d61bba0b79..71db17927a9d 100644

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

include/linux/sunrpc/gss_api.h +3 -0
index 48c1b1674cbf..bc07e51f20d1 100644

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

include/linux/sunrpc/gss_krb5.h +3 -3
index c1d77dd8ed41..e8f8ffe7448b 100644

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

include/linux/sunrpc/xdr.h +1 -0
index b41f34977995..ae2b1449dc09 100644

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

include/linux/tty.h +1 -1
index bd5fe0e907e8..a99e9b8e4e31 100644

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

include/net/netfilter/nf_conntrack.h +1 -1
index 9f551f3b69c6..90690e37a56f 100644

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

include/net/sch_generic.h +1 -0
index c30f914867e6..f1f8acb14b67 100644

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

include/net/tcp.h +13 -0
index 2edb73c27962..00a57766e16e 100644

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

include/soc/mscc/ocelot.h +1 -0
index f8e1955c86f1..7b5382e10bd2 100644

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

include/sound/rawmidi.h +1 -0
index a36b7227a15a..334842daa904 100644

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

include/trace/events/rpcrdma.h +4 -8
index fa14adf24235..43158151821c 100644

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

init/Kconfig +0 -18
index 4f717bfdbfe2..ef59c5c36cdb 100644

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

init/initramfs.c +1 -1
index 8ec1be4d7d51..7a38012e1af7 100644

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

init/main.c +57 -18

75 lines not on this page · raw message

ipc/util.c +6 -6
index 2d70f25f64b8..c4a67982ec00 100644

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

kernel/bpf/arraymap.c +6 -1
index 95d77770353c..1d6120fd5ba6 100644

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

kernel/bpf/syscall.c +3 -1
index 3b92aea18ae7..e04ea4c8f935 100644

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

kernel/bpf/verifier.c +16 -0
index 1c53ccbd5b5d..c1bb5be530e9 100644

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

kernel/fork.c +7 -6
index d90af13431c7..c9ba2b7bfef9 100644

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

kernel/trace/Kconfig +0 -1
index 402eef84c859..743647005f64 100644

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

kernel/trace/bpf_trace.c +62 -32

94 lines not on this page · raw message

kernel/trace/ftrace_internal.h +0 -22
index 0456e0a3dab1..382775edf690 100644

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

kernel/trace/preemptirq_delay_test.c +10 -2
index c4c86de63cf9..312d1a0ca3b6 100644

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

kernel/umh.c +6 -0
index 11bf5eea474c..3474d6aa55d8 100644

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

lib/vsprintf.c +12 -0
index 7c488a1ce318..532b6606a18a 100644

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

mm/shmem.c +5 -2
index 7406f91f8a52..153d889e32d1 100644

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

net/core/dev.c +3 -1
index 77c154107b0d..c7047b40f569 100644

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

net/core/drop_monitor.c +7 -4
index 31700e0c3928..04d8e8779384 100644

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

net/core/filter.c +1 -1
index c180871e606d..083fbe92662e 100644

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

net/core/netprio_cgroup.c +2 -0
index 8881dd943dd0..9bd4cab7d510 100644

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

net/ipv4/cipso_ipv4.c +4 -2
index 0bd10a1f477f..a23094b050f8 100644

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

net/ipv4/route.c +1 -1
index ebe7060d0fc9..ef6b70774fe1 100644

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

net/ipv4/tcp.c +19 -8
index dc77c303e6f7..06aad5e09459 100644

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

net/ipv4/tcp_bpf.c +6 -4
index 8a01428f80c1..69b025408390 100644

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

net/ipv4/tcp_input.c +2 -1
index 6b6b57000dad..e17d396102ce 100644

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

net/ipv6/calipso.c +2 -1
index 221c81f85cbf..8d3f66c310db 100644

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

net/ipv6/route.c +4 -2
index 42d0596dd398..21ee5bcaeb91 100644

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

net/mptcp/subflow.c +10 -0
index 65122edf60aa..b89bd70f890a 100644

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

net/netfilter/nf_conntrack_core.c +14 -3
index 1927fc296f95..d11a58348133 100644

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

net/netfilter/nf_flow_table_core.c +5 -3
index 70ebebaf5bc1..0ee78a166378 100644

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

net/netfilter/nft_set_rbtree.c +11 -0
index 46d976969ca3..accbb54c2b71 100644

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

net/netlabel/netlabel_kapi.c +6 -0
index 409a3ae47ce2..5e1239cef000 100644

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

net/rds/message.c +6 -13
index 50f13f1d4ae0..2d43e13d6dd5 100644

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

net/rds/rdma.c +8 -4
index 585e6b3b69ce..554ea7f0277f 100644

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

net/rds/rds.h +1 -2
index e4a603523083..b8b7ad766046 100644

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

net/rds/send.c +4 -2
index 82dcd8b84fe7..68e2bdb08fd0 100644

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

net/sched/cls_api.c +4 -4
index c2cdd0fc2e70..68c8fc6f535c 100644

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

net/sunrpc/auth_gss/auth_gss.c +5 -7
index 2dc740acb3bf..a7ad150fd4ee 100644

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

net/sunrpc/auth_gss/gss_krb5_crypto.c +4 -4
index 6f2d30d7b766..e7180da1fc6a 100644

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

net/sunrpc/auth_gss/gss_krb5_wrap.c +29 -15

44 lines not on this page · raw message

net/sunrpc/auth_gss/gss_mech_switch.c +2 -1
index db550bfc2642..69316ab1b9fa 100644

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

net/sunrpc/auth_gss/svcauth_gss.c +3 -7
index 65b67b257302..322fd48887f9 100644

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

net/sunrpc/clnt.c +5 -0
index 7324b21f923e..3ceaefb2f0bc 100644

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

net/sunrpc/xdr.c +41 -0

41 lines not on this page · raw message

net/sunrpc/xprtrdma/backchannel.c +1 -1
index 1a0ae0c61353..4b43910a6ed2 100644

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

net/sunrpc/xprtrdma/frwr_ops.c +9 -5
index 125297c9aa3e..79059d48f52b 100644

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

net/sunrpc/xprtrdma/transport.c +1 -1
index 3cfeba68ee9a..46e7949788e1 100644

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

net/sunrpc/xprtrdma/verbs.c +6 -9
index 353f61ac8d51..a48b99f3682c 100644

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

net/sunrpc/xprtrdma/xprt_rdma.h +2 -3
index 37d5080c250b..600574a0d838 100644

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

scripts/kallsyms.c +1 -1
index 3e8dea6e0a95..6dc3078649fa 100644

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

sound/core/rawmidi.c +27 -4
index 20dd08e1f675..2a688b711a9a 100644

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

sound/firewire/amdtp-stream-trace.h +1 -2
index 16c7f6605511..26e7cb555d3c 100644

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

sound/pci/hda/patch_hdmi.c +2 -0
index 0c1a59d5ad59..0f3250417b95 100644

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

sound/pci/hda/patch_realtek.c +38 -3

41 lines not on this page · raw message

sound/usb/quirks.c +5 -4
index 0686e056e39b..732580bdc6a4 100644

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

tools/testing/selftests/bpf/prog_tests/mmap.c +9 -0
index 16a814eb4d64..b0e789678aa4 100644

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

tools/testing/selftests/bpf/progs/test_overhead.c +2 -2
index bfe9fbcb9684..e15c7589695e 100644

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

tools/testing/selftests/ftrace/ftracetest +22 -0
index 063ecb290a5a..144308a757b7 100755

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

tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_type.tc +1 -1
index 1bcb67dcae26..81490ecaaa92 100644

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

virt/kvm/arm/vgic/vgic-mmio-v2.c +6 -4
index 5945f062d749..7b288eb391b8 100644

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

virt/kvm/arm/vgic/vgic-mmio-v3.c +6 -6
index ebc218840fc2..b1b066c148ce 100644

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

virt/kvm/arm/vgic/vgic-mmio.c +129 -58

187 lines not on this page · raw message

virt/kvm/arm/vgic/vgic-mmio.h +11 -0
index 5af2aefad435..b127f889113e 100644

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

The rest of this diff is not shown. View the raw message.

Part of the diff is not shown here. View the raw message.