Skip to contentSkip to conversation

Linux 5.11.7

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Mar 17, 2021 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 5.11.7 kernel.

All users of the 5.11 kernel series must upgrade.

The updated 5.11.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.11.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/ABI/testing/sysfs-devices-memory                      |    5 
 Documentation/admin-guide/mm/memory-hotplug.rst                     |    4 
 Documentation/gpu/todo.rst                                          |   21 +
 Documentation/networking/netdev-FAQ.rst                             |   72 ----
 Documentation/process/stable-kernel-rules.rst                       |    6 
 Documentation/process/submitting-patches.rst                        |    5 
 Documentation/virt/kvm/api.rst                                      |    3 
 Makefile                                                            |   14 
 arch/arm64/include/asm/kvm_asm.h                                    |    4 
 arch/arm64/include/asm/kvm_hyp.h                                    |    8 
 arch/arm64/include/asm/memory.h                                     |    5 
 arch/arm64/include/asm/mmu_context.h                                |    5 
 arch/arm64/include/asm/pgtable-prot.h                               |    1 
 arch/arm64/include/asm/pgtable.h                                    |    3 
 arch/arm64/kernel/head.S                                            |    2 
 arch/arm64/kernel/perf_event.c                                      |    2 
 arch/arm64/kvm/arm.c                                                |    7 
 arch/arm64/kvm/hyp/entry.S                                          |    2 
 arch/arm64/kvm/hyp/nvhe/debug-sr.c                                  |   12 
 arch/arm64/kvm/hyp/nvhe/host.S                                      |   20 -
 arch/arm64/kvm/hyp/nvhe/hyp-main.c                                  |    6 
 arch/arm64/kvm/hyp/nvhe/switch.c                                    |   14 
 arch/arm64/kvm/hyp/nvhe/tlb.c                                       |    3 
 arch/arm64/kvm/hyp/pgtable.c                                        |    1 
 arch/arm64/kvm/hyp/vhe/tlb.c                                        |    3 
 arch/arm64/kvm/mmu.c                                                |    3 
 arch/arm64/kvm/reset.c                                              |   12 
 arch/arm64/mm/init.c                                                |   12 
 arch/arm64/mm/mmu.c                                                 |    5 
 arch/mips/crypto/Makefile                                           |    4 
 arch/mips/include/asm/traps.h                                       |    3 
 arch/mips/kernel/cpu-probe.c                                        |    6 
 arch/mips/kernel/cpu-r3k-probe.c                                    |    3 
 arch/mips/kernel/traps.c                                            |   10 
 arch/powerpc/include/asm/code-patching.h                            |    2 
 arch/powerpc/include/asm/machdep.h                                  |    3 
 arch/powerpc/include/asm/ptrace.h                                   |    7 
 arch/powerpc/include/asm/switch_to.h                                |   10 
 arch/powerpc/kernel/asm-offsets.c                                   |    2 
 arch/powerpc/kernel/exceptions-64s.S                                |    2 
 arch/powerpc/kernel/head_book3s_32.S                                |    9 
 arch/powerpc/kernel/pci-common.c                                    |   10 
 arch/powerpc/kernel/process.c                                       |    2 
 arch/powerpc/kernel/traps.c                                         |    5 
 arch/powerpc/lib/sstep.c                                            |    4 
 arch/powerpc/perf/core-book3s.c                                     |   23 +
 arch/powerpc/platforms/pseries/msi.c                                |   25 +
 arch/s390/kernel/smp.c                                              |    2 
 arch/sparc/include/asm/mman.h                                       |   54 +--
 arch/sparc/mm/init_32.c                                             |    3 
 arch/x86/entry/common.c                                             |    3 
 arch/x86/entry/entry_64_compat.S                                    |    2 
 arch/x86/events/intel/core.c                                        |    5 
 arch/x86/include/asm/insn-eval.h                                    |    2 
 arch/x86/include/asm/proto.h                                        |    1 
 arch/x86/include/asm/ptrace.h                                       |   15 
 arch/x86/kernel/kvmclock.c                                          |   19 -
 arch/x86/kernel/sev-es.c                                            |   22 +
 arch/x86/kernel/traps.c                                             |    3 
 arch/x86/kernel/unwind_orc.c                                        |   12 
 arch/x86/kvm/lapic.c                                                |   11 
 arch/x86/lib/insn-eval.c                                            |   66 +++
 block/blk-zoned.c                                                   |   38 ++
 crypto/Kconfig                                                      |    2 
 drivers/base/memory.c                                               |   25 -
 drivers/base/swnode.c                                               |    3 
 drivers/base/test/Makefile                                          |    1 
 drivers/block/rsxx/core.c                                           |    1 
 drivers/block/zram/zram_drv.c                                       |   17 -
 drivers/clk/qcom/gdsc.c                                             |   10 
 drivers/clk/qcom/gdsc.h                                             |    3 
 drivers/clk/qcom/gpucc-msm8998.c                                    |    8 
 drivers/cpufreq/qcom-cpufreq-hw.c                                   |    6 
 drivers/firmware/efi/libstub/efi-stub.c                             |   16 
 drivers/gpio/gpio-pca953x.c                                         |   78 +---
 drivers/gpio/gpiolib-acpi.c                                         |   19 -
 drivers/gpio/gpiolib.c                                              |    4 
 drivers/gpu/drm/amd/amdgpu/amdgpu.h                                 |    1 
 drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c                            |    2 
 drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c                             |    4 
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c                   |   49 +-
 drivers/gpu/drm/amd/display/dc/core/dc_link.c                       |    1 
 drivers/gpu/drm/amd/display/dc/dcn21/dcn21_resource.c               |    6 
 drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu7_hwmgr.c                 |    8 
 drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_hwmgr.c               |   48 ++
 drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega12_hwmgr.c               |   66 +++
 drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega20_hwmgr.c               |   48 +-
 drivers/gpu/drm/drm_fb_helper.c                                     |    2 
 drivers/gpu/drm/drm_gem_shmem_helper.c                              |   32 +
 drivers/gpu/drm/drm_ioc32.c                                         |   11 
 drivers/gpu/drm/i915/gt/intel_engine_cs.c                           |    7 
 drivers/gpu/drm/i915/i915_cmd_parser.c                              |   19 -
 drivers/gpu/drm/i915/i915_drv.h                                     |    2 
 drivers/gpu/drm/meson/meson_drv.c                                   |   11 
 drivers/gpu/drm/nouveau/nouveau_bo.c                                |    6 
 drivers/gpu/drm/qxl/qxl_display.c                                   |    1 
 drivers/gpu/drm/radeon/radeon.h                                     |    2 
 drivers/gpu/drm/radeon/radeon_gem.c                                 |    4 
 drivers/gpu/drm/radeon/radeon_prime.c                               |    2 
 drivers/gpu/drm/tiny/gm12u320.c                                     |   44 ++
 drivers/gpu/drm/ttm/ttm_pool.c                                      |    4 
 drivers/gpu/drm/udl/udl_drv.c                                       |   17 +
 drivers/gpu/drm/udl/udl_drv.h                                       |    1 
 drivers/gpu/drm/udl/udl_main.c                                      |   10 
 drivers/hid/hid-logitech-dj.c                                       |    7 
 drivers/i2c/busses/i2c-rcar.c                                       |   13 
 drivers/input/keyboard/applespi.c                                   |   21 -
 drivers/iommu/amd/init.c                                            |   45 ++
 drivers/iommu/intel/svm.c                                           |   13 
 drivers/media/platform/rockchip/rkisp1/rkisp1-params.c              |    1 
 drivers/media/platform/vsp1/vsp1_drm.c                              |    6 
 drivers/media/rc/Makefile                                           |    1 
 drivers/media/rc/keymaps/Makefile                                   |    1 
 drivers/media/rc/keymaps/rc-cec.c                                   |   28 -
 drivers/media/rc/rc-main.c                                          |    6 
 drivers/media/usb/usbtv/usbtv-audio.c                               |    2 
 drivers/misc/fastrpc.c                                              |    5 
 drivers/misc/pvpanic.c                                              |    1 
 drivers/mmc/core/bus.c                                              |   11 
 drivers/mmc/core/mmc.c                                              |   15 
 drivers/mmc/host/mmci.c                                             |   10 
 drivers/mmc/host/mtk-sd.c                                           |   18 -
 drivers/mmc/host/mxs-mmc.c                                          |    2 
 drivers/mmc/host/sdhci-iproc.c                                      |   18 +
 drivers/net/Kconfig                                                 |    2 
 drivers/net/can/flexcan.c                                           |   24 -
 drivers/net/can/m_can/tcan4x5x.c                                    |    6 
 drivers/net/dsa/sja1105/sja1105_main.c                              |    2 
 drivers/net/ethernet/atheros/alx/main.c                             |    7 
 drivers/net/ethernet/broadcom/bnxt/bnxt.c                           |   14 
 drivers/net/ethernet/cadence/macb_main.c                            |   15 
 drivers/net/ethernet/davicom/dm9000.c                               |   21 +
 drivers/net/ethernet/freescale/enetc/enetc.c                        |   93 ++---
 drivers/net/ethernet/freescale/enetc/enetc.h                        |    5 
 drivers/net/ethernet/freescale/enetc/enetc_hw.h                     |   18 -
 drivers/net/ethernet/freescale/enetc/enetc_pf.c                     |   98 ++++-
 drivers/net/ethernet/freescale/enetc/enetc_vf.c                     |    7 
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_cmd.h              |    6 
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c             |    7 
 drivers/net/ethernet/ibm/ibmvnic.c                                  |   17 -
 drivers/net/ethernet/intel/i40e/i40e_main.c                         |    2 
 drivers/net/ethernet/intel/ixgbe/ixgbe_ipsec.c                      |    5 
 drivers/net/ethernet/intel/ixgbevf/ipsec.c                          |    5 
 drivers/net/ethernet/mediatek/mtk_star_emac.c                       |    5 
 drivers/net/ethernet/mellanox/mlx4/en_ethtool.c                     |    2 
 drivers/net/ethernet/mellanox/mlx4/en_netdev.c                      |    2 
 drivers/net/ethernet/mellanox/mlx4/mlx4_en.h                        |    1 
 drivers/net/ethernet/mellanox/mlxsw/reg.h                           |    1 
 drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c              |    5 
 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c               |    7 
 drivers/net/ethernet/mellanox/mlxsw/switchx2.c                      |    3 
 drivers/net/ethernet/mscc/ocelot_flower.c                           |    3 
 drivers/net/ethernet/realtek/r8169_main.c                           |    2 
 drivers/net/ethernet/renesas/sh_eth.c                               |    7 
 drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c                   |    5 
 drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.c                  |    9 
 drivers/net/ethernet/stmicro/stmmac/dwmac4_dma.c                    |   19 +
 drivers/net/ethernet/stmicro/stmmac/dwmac4_lib.c                    |    4 
 drivers/net/ethernet/stmicro/stmmac/dwxgmac2_descs.c                |    2 
 drivers/net/ethernet/stmicro/stmmac/hwif.h                          |    2 
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c                   |   19 -
 drivers/net/netdevsim/netdev.c                                      |    1 
 drivers/net/phy/dp83822.c                                           |    9 
 drivers/net/phy/dp83tc811.c                                         |   11 
 drivers/net/phy/phy.c                                               |    6 
 drivers/net/phy/phy_device.c                                        |    6 
 drivers/net/usb/qmi_wwan.c                                          |   14 
 drivers/net/wan/lapbether.c                                         |    3 
 drivers/net/wireless/ath/ath11k/mac.c                               |    4 
 drivers/net/wireless/ath/ath9k/ath9k.h                              |    3 
 drivers/net/wireless/ath/ath9k/xmit.c                               |    6 
 drivers/net/wireless/mediatek/mt76/dma.c                            |   11 
 drivers/nvme/host/fc.c                                              |    2 
 drivers/opp/core.c                                                  |   48 +-
 drivers/opp/opp.h                                                   |    2 
 drivers/pci/controller/pci-xgene-msi.c                              |   10 
 drivers/pci/controller/pcie-mediatek.c                              |    7 
 drivers/pci/pci.c                                                   |    4 
 drivers/pci/pcie/Kconfig                                            |    8 
 drivers/pci/pcie/Makefile                                           |    1 
 drivers/pci/pcie/bw_notification.c                                  |  138 --------
 drivers/pci/pcie/err.c                                              |    3 
 drivers/pci/pcie/portdrv.h                                          |    6 
 drivers/pci/pcie/portdrv_pci.c                                      |    1 
 drivers/perf/arm_dmc620_pmu.c                                       |    1 
 drivers/platform/olpc/olpc-ec.c                                     |   15 
 drivers/platform/x86/amd-pmc.c                                      |   14 
 drivers/s390/block/dasd.c                                           |    6 
 drivers/s390/cio/vfio_ccw_ops.c                                     |    6 
 drivers/s390/crypto/vfio_ap_ops.c                                   |    2 
 drivers/s390/net/qeth_core.h                                        |    3 
 drivers/s390/net/qeth_core_main.c                                   |  128 +++----
 drivers/scsi/libiscsi.c                                             |   11 
 drivers/scsi/pm8001/pm8001_hwi.c                                    |   14 
 drivers/scsi/ufs/ufs-sysfs.c                                        |    3 
 drivers/scsi/ufs/ufs.h                                              |    6 
 drivers/scsi/ufs/ufshcd.c                                           |   82 ++--
 drivers/scsi/ufs/ufshcd.h                                           |    6 
 drivers/spi/spi-stm32.c                                             |   15 
 drivers/staging/comedi/drivers/addi_apci_1032.c                     |    4 
 drivers/staging/comedi/drivers/addi_apci_1500.c                     |   18 -
 drivers/staging/comedi/drivers/adv_pci1710.c                        |   10 
 drivers/staging/comedi/drivers/das6402.c                            |    2 
 drivers/staging/comedi/drivers/das800.c                             |    2 
 drivers/staging/comedi/drivers/dmm32at.c                            |    2 
 drivers/staging/comedi/drivers/me4000.c                             |    2 
 drivers/staging/comedi/drivers/pcl711.c                             |    2 
 drivers/staging/comedi/drivers/pcl818.c                             |    2 
 drivers/staging/ks7010/ks_wlan_net.c                                |    6 
 drivers/staging/rtl8188eu/core/rtw_ap.c                             |    5 
 drivers/staging/rtl8188eu/os_dep/ioctl_linux.c                      |    6 
 drivers/staging/rtl8192e/rtl8192e/rtl_wx.c                          |    7 
 drivers/staging/rtl8192u/r8192U_wx.c                                |    6 
 drivers/staging/rtl8712/rtl871x_cmd.c                               |    6 
 drivers/staging/rtl8712/rtl871x_ioctl_linux.c                       |    2 
 drivers/target/target_core_pr.c                                     |   15 
 drivers/target/target_core_transport.c                              |   15 
 drivers/tty/serial/max310x.c                                        |   29 -
 drivers/usb/class/cdc-acm.c                                         |    5 
 drivers/usb/class/usblp.c                                           |   16 
 drivers/usb/core/usb.c                                              |   32 +
 drivers/usb/dwc3/dwc3-qcom.c                                        |   77 ++++
 drivers/usb/gadget/function/f_uac1.c                                |    1 
 drivers/usb/gadget/function/f_uac2.c                                |    2 
 drivers/usb/gadget/function/u_ether_configfs.h                      |    5 
 drivers/usb/gadget/udc/s3c2410_udc.c                                |    4 
 drivers/usb/host/xhci-pci.c                                         |   13 
 drivers/usb/host/xhci-ring.c                                        |    3 
 drivers/usb/host/xhci.c                                             |   78 ++--
 drivers/usb/host/xhci.h                                             |    1 
 drivers/usb/renesas_usbhs/pipe.c                                    |    2 
 drivers/usb/serial/ch341.c                                          |    1 
 drivers/usb/serial/cp210x.c                                         |    3 
 drivers/usb/serial/io_edgeport.c                                    |   26 -
 drivers/usb/usbip/stub_dev.c                                        |   42 ++
 drivers/usb/usbip/vhci_sysfs.c                                      |   39 ++
 drivers/usb/usbip/vudc_sysfs.c                                      |   49 ++
 drivers/xen/events/events_2l.c                                      |   22 -
 drivers/xen/events/events_base.c                                    |  130 +++++--
 drivers/xen/events/events_fifo.c                                    |    7 
 drivers/xen/events/events_internal.h                                |   14 
 fs/binfmt_misc.c                                                    |   29 -
 fs/block_dev.c                                                      |   11 
 fs/cifs/cifsfs.c                                                    |    2 
 fs/cifs/cifsglob.h                                                  |   11 
 fs/cifs/connect.c                                                   |   10 
 fs/cifs/sess.c                                                      |    1 
 fs/cifs/smb2inode.c                                                 |    1 
 fs/cifs/smb2misc.c                                                  |    8 
 fs/cifs/smb2ops.c                                                   |   10 
 fs/cifs/smb2proto.h                                                 |    3 
 fs/cifs/transport.c                                                 |    2 
 fs/configfs/file.c                                                  |    6 
 fs/ext4/super.c                                                     |    9 
 fs/io_uring.c                                                       |    3 
 fs/nfs/dir.c                                                        |   40 +-
 fs/nfs/nfs4proc.c                                                   |    2 
 fs/pnode.h                                                          |    2 
 fs/udf/inode.c                                                      |    9 
 include/linux/acpi.h                                                |   10 
 include/linux/can/skb.h                                             |    8 
 include/linux/compiler-clang.h                                      |    6 
 include/linux/gpio/consumer.h                                       |    2 
 include/linux/memblock.h                                            |    4 
 include/linux/memcontrol.h                                          |    6 
 include/linux/memory.h                                              |    3 
 include/linux/perf_event.h                                          |    2 
 include/linux/pgtable.h                                             |    4 
 include/linux/sched/mm.h                                            |    3 
 include/linux/seqlock.h                                             |    5 
 include/linux/stop_machine.h                                        |   11 
 include/linux/textsearch.h                                          |    2 
 include/linux/usb.h                                                 |    2 
 include/linux/virtio_net.h                                          |    7 
 include/media/rc-map.h                                              |    7 
 include/target/target_core_backend.h                                |    1 
 include/uapi/linux/l2tp.h                                           |    1 
 include/uapi/linux/netfilter/nfnetlink_cthelper.h                   |    2 
 kernel/events/core.c                                                |   42 ++
 kernel/sched/core.c                                                 |  126 +++----
 kernel/sched/membarrier.c                                           |    4 
 kernel/sysctl.c                                                     |    8 
 kernel/time/hrtimer.c                                               |   60 ++-
 lib/Kconfig.kasan                                                   |    1 
 lib/logic_pio.c                                                     |    3 
 lib/test_kasan.c                                                    |   10 
 mm/highmem.c                                                        |   17 -
 mm/huge_memory.c                                                    |    2 
 mm/madvise.c                                                        |   13 
 mm/memcontrol.c                                                     |   15 
 mm/memory.c                                                         |    8 
 mm/memory_hotplug.c                                                 |    2 
 mm/page_alloc.c                                                     |  167 ++++------
 mm/slub.c                                                           |    2 
 net/core/skbuff.c                                                   |    2 
 net/dsa/tag_mtk.c                                                   |   19 -
 net/dsa/tag_rtl4_a.c                                                |   12 
 net/ethtool/channels.c                                              |   26 -
 net/ipv4/cipso_ipv4.c                                               |   11 
 net/ipv4/ip_tunnel.c                                                |    5 
 net/ipv4/ip_vti.c                                                   |    6 
 net/ipv4/nexthop.c                                                  |   10 
 net/ipv4/tcp.c                                                      |   26 +
 net/ipv4/udp_offload.c                                              |    2 
 net/ipv6/calipso.c                                                  |   14 
 net/ipv6/ip6_gre.c                                                  |   16 
 net/ipv6/ip6_tunnel.c                                               |   10 
 net/ipv6/ip6_vti.c                                                  |    6 
 net/ipv6/sit.c                                                      |    2 
 net/l2tp/l2tp_core.c                                                |   41 +-
 net/l2tp/l2tp_core.h                                                |    1 
 net/l2tp/l2tp_netlink.c                                             |    6 
 net/mpls/mpls_gso.c                                                 |    3 
 net/mptcp/protocol.c                                                |   40 --
 net/mptcp/protocol.h                                                |   15 
 net/mptcp/subflow.c                                                 |    4 
 net/netfilter/nf_nat_proto.c                                        |   25 +
 net/netfilter/x_tables.c                                            |    6 
 net/netlabel/netlabel_cipso_v4.c                                    |    3 
 net/qrtr/qrtr.c                                                     |    4 
 net/sched/sch_api.c                                                 |    8 
 net/sunrpc/sched.c                                                  |    5 
 samples/bpf/xdpsock_user.c                                          |    2 
 security/commoncap.c                                                |   12 
 sound/pci/hda/hda_bind.c                                            |    4 
 sound/pci/hda/hda_controller.c                                      |    7 
 sound/pci/hda/hda_intel.c                                           |    2 
 sound/pci/hda/patch_ca0132.c                                        |    1 
 sound/pci/hda/patch_conexant.c                                      |   62 ++-
 sound/pci/hda/patch_hdmi.c                                          |   13 
 sound/usb/card.c                                                    |    6 
 sound/usb/quirks.c                                                  |   11 
 sound/usb/usbaudio.h                                                |    1 
 tools/bpf/resolve_btfids/main.c                                     |    5 
 tools/lib/bpf/xsk.c                                                 |    5 
 tools/perf/Makefile.perf                                            |    2 
 tools/perf/util/sort.c                                              |    4 
 tools/perf/util/trace-event-read.c                                  |    1 
 tools/testing/selftests/bpf/progs/netif_receive_skb.c               |   13 
 tools/testing/selftests/bpf/progs/test_tunnel_kern.c                |    6 
 tools/testing/selftests/bpf/verifier/array_access.c                 |    3 
 tools/testing/selftests/net/forwarding/mirror_gre_bridge_1d_vlan.sh |    9 
 342 files changed, 2820 insertions(+), 1656 deletions(-)

Adrian Hunter (1):
mmc: core: Fix partition switch time for eMMC

Alain Volmat (1):
spi: stm32: make spurious and overrun interrupts visible

Aleksandr Miloserdov (2):
scsi: target: core: Add cmd length set before cmd complete
scsi: target: core: Prevent underflow for service actions

Alex Deucher (4):
drm/amdgpu/display: simplify backlight setting drm/amdgpu/display: don't assert in set backlight function drm/amdgpu/display: handle aux backlight in backlight_get_brightness drm/amdgpu: fix S0ix handling when the CONFIG_AMD_PMC=m

Alexander Shiyan (1):

      Revert "serial: max310x: rework RX interrupt handling"

Andreas Larsson (1):
sparc32: Limit memblock allocation to low memory

Andrew Scull (1):
KVM: arm64: Fix nVHE hyp panic host context restore

Andrey Konovalov (4):
kasan: fix memory corruption in kasan_bitops_tags test
arm64: kasan: fix page_alloc tagging with DEBUG_VIRTUAL kasan, mm: fix crash with HW_TAGS and DEBUG_PAGEALLOC
kasan: fix KASAN_STACK dependency for HW_TAGS

Andy Lutomirski (1):
x86/entry: Fix entry/exit mismatch on failed fast 32-bit syscalls

Andy Shevchenko (3):
gpiolib: acpi: Add ACPI_GPIO_QUIRK_ABSOLUTE_NUMBER quirk
gpiolib: acpi: Allow to find GpioInt() resource by name and index
gpio: pca953x: Set IRQ type when handle Intel Galileo Gen 2

AngeloGioacchino Del Regno (2):
clk: qcom: gdsc: Implement NO_RET_PERIPH flag
clk: qcom: gpucc-msm8998: Add resets, cxc, fix flags on gpu_gx_gdsc

Anna-Maria Behnsen (1):
hrtimer: Update softirq_expires_next correctly after __hrtimer_get_next_event()

Anshuman Khandual (1):
arm64/mm: Fix pfn_valid() for ZONE_DEVICE based memory

Anthony DeRossi (1):
drm/ttm: Fix TTM page pool accounting

Antonio Terceiro (1):

      perf build: Fix ccache usage in $(CC) when generating arch errno table

Antony Antony (1):
ixgbe: fail to create xfrm offload of IPsec tunnel mode SA

Ard Biesheuvel (2):
arm64: mm: use a 48-bit ID map when possible on 52-bit VA builds
efi: stub: omit SetVirtualAddressMap() if marked unsupported in RT_PROP table

Arjun Roy (1):
tcp: Fix sign comparison bug in getsockopt(TCP_ZEROCOPY_RECEIVE)

Arnd Bergmann (5):
net: phy: make mdio_bus_phy_suspend/resume as __maybe_unused drivers/base: build kunit tests without structleak plugin
memblock: fix section mismatch warning
stop_machine: mark helpers __always_inline linux/compiler-clang.h: define HAVE_BUILTIN_BSWAP*

Artem Lapkin (1):
drm: meson_drv add shutdown function

Athira Rajeev (2):
powerpc/perf: Fix handling of privilege level checks in perf interrupt context powerpc/perf: Record counter overflow always if SAMPLE_IP is unset

Atish Patra (1):
net: macb: Add default usrio config to default gem config

Aurelien Aptel (1):
cifs: fix credit accounting for extra channel

Balazs Nemeth (2):
net: check if protocol extracted by virtio_net_hdr_set_proto is correct
net: avoid infinite loop in mpls_gso_segment when mpls_hlen == 0

Beata Michalska (1):
opp: Don't drop extra references to OPPs accidentally

Benjamin Coddington (1):
SUNRPC: Set memalloc_nofs_save() for sync tasks

Biao Huang (1):
net: ethernet: mtk-star-emac: fix wrong unmap in RX handling

Biju Das (2):
media: v4l: vsp1: Fix uif null pointer access
media: v4l: vsp1: Fix bru null pointer access

Bjorn Helgaas (1):
PCI/LINK: Remove bandwidth notification

Can Guo (1):
scsi: ufs: Protect some contexts from unexpected clock scaling

Catalin Marinas (1):
arm64: mte: Map hotplugged memory as Normal Tagged

Chaotian Jing (1):
mmc: mediatek: fix race condition between msdc_request_timeout and irq

Christian Brauner (1):
mount: fix mounting of detached mounts onto targets that reside on shared mounts

Christian König (1):
drm/radeon: also init GEM funcs in radeon_gem_prime_import_sg_table

Christophe JAILLET (1):
mmc: mxs-mmc: Fix a resource leak in an error handling path in 'mxs_mmc_probe()'

Christophe Leroy (2):
powerpc/603: Fix protection of user pages mapped with PROT_NONE
powerpc: Fix missing declaration of [en/dis]able_kernel_vsx()

Colin Ian King (1):
qxl: Fix uninitialised struct field head.surface_id

DENG Qingfang (2):
net: dsa: tag_rtl4_a: fix egress tags
net: dsa: tag_mtk: fix 802.1ad VLAN egress

Dafna Hirschfeld (1):
media: rkisp1: params: fix wrong bits settings

Daiyue Zhang (1):
configfs: fix a use-after-free in __configfs_open_file

Dan Carpenter (6):
USB: gadget: u_ether: Fix a configfs return code
staging: rtl8192u: fix ->ssid overflow in r8192_wx_set_scan()
staging: rtl8188eu: prevent ->ssid overflow in rtw_wx_set_scan()
staging: rtl8712: unterminated string leads to read overflow
staging: rtl8188eu: fix potential memory corruption in rtw_check_beacon_data()
staging: ks7010: prevent buffer overflow in ks_wlan_set_scan()

Daniel Axtens (1):
powerpc/64s/exception: Clean up a missed SRR specifier

Daniel Borkmann (1):
net: Fix gro aggregation for udp encaps with zero csum

Daniel Vetter (1):
drm/compat: Clear bounce structures

Daniele Palmas (1):
net: usb: qmi_wwan: allow qmimux add/del with master up

Danielle Ratson (2):
selftests: forwarding: Fix race condition in mirror installation
mlxsw: spectrum_ethtool: Add an external speed to PTYS register

Dave Airlie (1):
drm/nouveau: fix dma syncing for loops (v2)

David Hildenbrand (1):
drivers/base/memory: don't store phys_device in memory blocks

Davide Caratti (1):
mptcp: fix length of ADD_ADDR with port sub-option

Dmitry Baryshkov (1):
misc: fastrpc: restrict user apps from sending kernel RPC messages

Dmitry V. Levin (1):
uapi: nfnetlink_cthelper.h: fix userspace compilation error

Edwin Peer (1):
bnxt_en: reliably allocate IRQ table on reset to avoid crash

Eric Dumazet (1):
tcp: add sanity tests to TCP_QUEUE_SEQ

Eric Farman (1):
s390/cio: return -EFAULT if copy_to_user() fails

Eric W. Biederman (1):
Revert 95ebabde382c ("capabilities: Don't allow writing ambiguous v3 file capabilities")

Evan Quan (1):
drm/amd/pm: correct the watermark settings for Polaris

Felix Fietkau (1):
ath9k: fix transmitting to stations in dynamic SMPS mode

Filipe Laíns (1):
HID: logitech-dj: add support for the new lightspeed connection iteration

Florian Westphal (3):
netfilter: nf_nat: undo erroneous tcp edemux lookup
mptcp: reset last_snd on subflow close
mptcp: put subflow sock on connect error

Forest Crossman (1):
usb: xhci: Fix ASMedia ASM1042A and ASM3242 DMA addressing

Frank Li (1):
mmc: cqhci: Fix random crash when remove mmc module/card

Geert Uytterhoeven (1):
PCI: Fix pci_register_io_range() memory leak

Greg Kroah-Hartman (1):

      Linux 5.11.7

Greg Kurz (1):
powerpc/pseries: Don't enforce MSI affinity with kdump

Guangbin Huang (1):
net: phy: fix save wrong speed and duplex problem if autoneg is on

Hangbin Liu (1):
selftests/bpf: No need to drop the packet when there is no geneve opt

Hans Verkuil (1):
media: rc: compile rc-cec.c into rc-core

Hayes Wang (1):

      r8169: fix r8168fp_adjust_ocp_cmd function

Heikki Krogerus (1):
software node: Fix node registration

Heiko Carstens (1):
s390/smp: __smp_rescan_cpus() - move cpumask away from stack

Hillf Danton (1):
netdevsim: init u64 stats for 32bit hardware

Holger Hoffstätte (2):
drm/amdgpu/display: use GFP_ATOMIC in dcn21_validate_bandwidth_fp() drm/amd/display: Fix nested FPU context in dcn21_validate_bandwidth()

Ian Abbott (9):
staging: comedi: addi_apci_1032: Fix endian problem for COS sample
staging: comedi: addi_apci_1500: Fix endian problem for command sample
staging: comedi: adv_pci1710: Fix endian problem for AI command data
staging: comedi: das6402: Fix endian problem for AI command data
staging: comedi: das800: Fix endian problem for AI command data
staging: comedi: dmm32at: Fix endian problem for AI command data
staging: comedi: me4000: Fix endian problem for AI command data
staging: comedi: pcl711: Fix endian problem for AI command data
staging: comedi: pcl818: Fix endian problem for AI command data

Ian Rogers (1):
perf traceevent: Ensure read cmdlines are null terminated.

Ido Schimmel (2):
nexthop: Do not flush blackhole nexthops when loopback goes down
mlxsw: spectrum_router: Ignore routes using a deleted nexthop object

Ilya Leoshkevich (1):
selftests/bpf: Use the last page in test_snprintf_btf on s390

Ioana Ciornei (1):
net: phy: ti: take into account all possible interrupt sources

Jaegeuk Kim (1):
scsi: ufs: WB is only available on LUN #0 to #7

Jakub Kicinski (2):
ethernet: alx: fix order of calls on resume
docs: networking: drop special stable handling

James Smart (1):
nvme-fc: fix racing controller reset and create association

Jan Kara (1):
block: Try to handle busy underlying device on discard

Jason A. Donenfeld (1):
net: always use icmp{,v6}_ndo_send from ndo_start_xmit

Jens Axboe (1):
io_uring: perform IOPOLL reaping if canceler is thread itself

Jeremy Linton (1):
mmc: sdhci-iproc: Add ACPI bindings for the RPi

Jia He (1):
KVM: arm64: Fix range alignment when walking page tables

Jia-Ju Bai (2):
net: qrtr: fix error return code of qrtr_sendmsg()
block: rsxx: fix error return code of rsxx_pci_probe()

Jian Shen (3):
net: hns3: fix error mask definition of flow director
net: hns3: fix query vlan mask value error for flow director
net: hns3: fix bug when calculating the TCAM table info

Jiri Wiesner (1):
ibmvnic: always store valid MAC address

Joakim Zhang (6):
can: flexcan: assert FRZ bit in flexcan_chip_freeze()
can: flexcan: enable RX FIFO after FRZ/HALT valid
can: flexcan: invoke flexcan_chip_freeze() to enter freeze mode
net: stmmac: stop each tx channel independently
net: stmmac: fix watchdog timeout during suspend/resume stress test
net: stmmac: fix wrongly set buffer2 valid when sph unsupport

Joerg Roedel (4):
x86/sev-es: Introduce ip_within_syscall_gap() helper x86/sev-es: Check regs->sp is trusted before adjusting #VC IST stack x86/sev-es: Correctly track IRQ states in runtime #VC handler x86/sev-es: Use __copy_from_user_inatomic()

Johan Hovold (1):
gpio: fix gpio-device list corruption

John Ernberg (1):
ALSA: usb: Add Plantronics C320-M USB ctrl msg delay quirk

Jordan Niethe (1):
powerpc/sstep: Fix VSX instruction emulation

Josh Poimboeuf (1):
x86/unwind/orc: Disable KASAN checking in the ORC unwinder, part 2

Juergen Gross (3):
xen/events: reset affinity of 2-level event when tearing it down xen/events: don't unmask an event channel when an eoi is pending xen/events: avoid handling the same event on two cpus at the same time

Julian Wiedmann (4):
s390/qeth: fix memory leak after failed TX Buffer allocation s390/qeth: improve completion of pending TX buffers s390/qeth: schedule TX NAPI on QAOB completion s390/qeth: fix notification for pending buffers during teardown

Junlin Yang (1):
ibmvnic: remove excessive irqsave

Kai-Heng Feng (1):
ALSA: usb-audio: Disable USB autosuspend properly in setup_disable_autosuspend()

Kalle Valo (1):
ath11k: fix AP mode for QCA6390

Kan Liang (2):
perf/core: Flush PMU internal buffers for per-CPU events perf/x86/intel: Set PERF_ATTACH_SCHED_CB for large PEBS and LBR

Karan Singhal (1):

      USB: serial: cp210x: add ID for Acuity Brands nLight Air Adapter

Keita Suzuki (1):
i40e: Fix memory leak in i40e_probe

Keith Busch (1):
PCI/ERR: Retain status from error notification

Kenneth Feng (1):
drm/amd/pm: bug fix for pcie dpm

Kevin(Yudong) Yang (1):
net/mlx4_en: update moderation when config reset

Khalid Aziz (1):
sparc64: Use arch_validate_flags() to validate ADI flag

Krzysztof Wilczyński (1):
PCI: mediatek: Add missing of_node_put() to fix reference leak

Kun-Chuan Hsieh (1):
tools/resolve_btfids: Fix build error with older host toolchains

Lee Gibson (2):
staging: rtl8712: Fix possible buffer overflow in r8712_sitesurvey_cmd
staging: rtl8192e: Fix possible buffer overflow in _rtl92e_wx_set_scan

Lin Feng (1):
sysctl.c: fix underflow value setting risk in vm_table

Linus Torvalds (1):
Revert "mm, slub: consider rest of partial list if acquire_slab() fails"

Lior Ribak (1):
binfmt_misc: fix possible deadlock in bm_register_write

Lorenzo Bianconi (1):
mt76: dma: do not report truncated frames to mac80211

Lu Baolu (1):
iommu/vt-d: Clear PRQ overflow only when PRQ is empty

Lubomir Rintel (1):
Platform: OLPC: Fix probe error handling

Maciej Fijalkowski (2):
samples, bpf: Add missing munmap in xdpsock
libbpf: Clear map_info before each bpf_obj_get_info_by_fd

Maciej W. Rozycki (1):
crypto: mips/poly1305 - enable for all MIPS processors

Marc Zyngier (3):
KVM: arm64: Ensure I-cache isolation between vcpus of a same VM
KVM: arm64: Reject VM creation when the default IPA size is unsupported
KVM: arm64: Fix exclusive limit for IPA size

Martin Kaiser (1):
PCI: xgene-msi: Fix race in installing chained irq handler

Mathias Nyman (2):
xhci: Improve detection of device initiated wake signal.
xhci: Fix repeated xhci wake after suspend due to uncleared internal wake state

Mathieu Desnoyers (1):
sched/membarrier: fix missing local execution of ipi_sync_rq_state()

Matthew Wilcox (Oracle) (1):
include/linux/sched/mm.h: use rcu_dereference in in_vfork()

Matthias Kaehlcke (1):
usb: dwc3: qcom: Honor wakeup enabled/disabled state

Matthias Schiffer (1):
net: l2tp: reduce log level of messages in receive path, add counter instead

Maxim Mikityanskiy (1):
media: usbtv: Fix deadlock on suspend

Maximilian Heyne (1):
net: sched: avoid duplicates in classes dump

Michael Ellerman (1):
powerpc/64: Fix stack trace not displaying final frame

Michal Suchanek (1):
ibmvnic: Fix possibly uninitialized old_num_tx_queues variable warning.

Mike Christie (1):
scsi: libiscsi: Fix iscsi_prep_scsi_cmd_pdu() error handling

Mike Rapoport (1):
mm/page_alloc.c: refactor initialization of struct page for holes in memory layout

Minchan Kim (2):
zram: fix return value on writeback_store
zram: fix broken page writeback

Nadav Amit (1):
mm/userfaultfd: fix memory corruption due to writeprotect

Naveen N. Rao (1):
powerpc/64s: Fix instruction encoding for lis in ppc_function_entry()

Neil Roberts (2):
drm/shmem-helper: Check for purged buffers in fault handler drm/shmem-helper: Don't remove the offset in vm_area_struct pgoff

Nicholas Piggin (2):
powerpc: improve handling of unrecoverable system reset
powerpc: Fix inverted SET_FULL_REGS bitop

Niv Sardi (1):
USB: serial: ch341: add new Product ID

Noralf Trønnes (1):
drm/shmem-helpers: vunmap: Don't put pages for dma-buf

OGAWA Hirofumi (1):
mm/highmem.c: fix zero_user_segments() with start > end

Oleksij Rempel (1):
can: skb: can_skb_set_owner(): fix ref counting if socket was closed before setting skb ownership

Oliver O'Halloran (1):
powerpc/pci: Add ppc_md.discover_phbs()

Ondrej Mosnacek (1):
NFSv4.2: fix return value of _nfs4_get_security_label()

Ong Boon Leong (2):
net: stmmac: fix incorrect DMA channel intr enable setting of EQoS v4.10
net: stmmac: Fix VLAN filter delete timeout issue in Intel mGBE SGMII

Pan Bian (1):
platform/x86: amd-pmc: put device on error paths

Paolo Abeni (2):
mptcp: always graft subflow socket to parent
mptcp: fix memory accounting on allocation error

Paul Cercueil (2):
net: davicom: Fix regulator not turned off on failed probe
net: davicom: Fix regulator not turned off on driver removal

Paul Moore (1):
cipso,calipso: resolve a number of problems with the DOI refcounts

Paulo Alcantara (2):
cifs: return proper error code in statfs(2)
cifs: do not send close in compound create+close requests

Pavel Skripkin (3):
ALSA: usb-audio: fix NULL ptr dereference in usb_audio_probe
ALSA: usb-audio: fix use after free in usb_audio_disconnect
USB: serial: io_edgeport: fix memory leak in edge_startup

Pete Zaitcev (1):
USB: usblp: fix a hang in poll() if disconnected

Peter Zijlstra (7):
seqlock,lockdep: Fix seqcount_latch_init()
sched: Fix migration_cpu_stop() requeueing
sched: Collate affine_move_task() stoppers
sched: Simplify migration_cpu_stop()
sched: Optimize migration_cpu_stop()
sched: Fix affine_move_task() self-concurrency
sched: Simplify set_affinity_pending refcounts

Ravi Bangoria (1):
perf report: Fix -F for branch & mem modes

Rob Herring (1):
arm64: perf: Fix 64-bit event counter read truncation

Ronald Tschalär (1):
Input: applespi - don't wait for responses to commands indefinitely.

Ruslan Bilovol (2):
usb: gadget: f_uac2: always increase endpoint max_packet_size by one audio slot
usb: gadget: f_uac1: stop playback on function disable

Sasha Levin (1):
kbuild: clamp SUBLEVEL to 255

Sean Christopherson (1):
KVM: x86: Ensure deadline timer has truly expired before posting its IRQ

Sebastian Reichel (1):

      USB: serial: cp210x: add some more GE USB IDs

Serge Semin (1):
usb: dwc3: qcom: Add missing DWC3 OF node refcount decrement

Sergey Shtylyov (3):
sh_eth: fix TRSCER mask for SH771x
sh_eth: fix TRSCER mask for R7S9210
sh_eth: fix TRSCER mask for R7S72100

Shawn Guo (3):
usb: dwc3: qcom: add URS Host support for sdm845 ACPI boot
usb: dwc3: qcom: add ACPI device id for sc8180x
cpufreq: qcom-hw: fix dereferencing freed memory 'data'

Shile Zhang (1):
misc/pvpanic: Export module FDT device table

Shin'ichiro Kawasaki (1):
block: Discard page cache of zone reset target range

Shuah Khan (6):
usbip: fix stub_dev to check for stream socket
usbip: fix vhci_hcd to check for stream socket
usbip: fix vudc to check for stream socket
usbip: fix stub_dev usbip_sockfd_store() races leading to gpf
usbip: fix vhci_hcd attach_store() races leading to gpf
usbip: fix vudc usbip_sockfd_store races leading to gpf

Simeon Simeonoff (1):
ALSA: hda/ca0132: Add Sound BlasterX AE-5 Plus support

Stanislaw Gruszka (1):
usb: xhci: do not perform Soft Retry for some xHCI hosts

Stefan Haberland (2):
s390/dasd: fix hanging DASD driver unbind s390/dasd: fix hanging IO request during DASD driver unbind

Steven J. Magnani (1):
udf: fix silent AED tagLocation corruption

Suravee Suthikulpanit (1):
iommu/amd: Fix performance counter initialization

Suren Baghdasaryan (1):
mm/madvise: replace ptrace attach requirement for process_madvise

Suzuki K Poulose (1):
KVM: arm64: nvhe: Save the SPE context early

Takashi Iwai (8):
drm/amd/display: Add a backlight module option
ALSA: hda/hdmi: Cancel pending works before suspend
ALSA: hda/conexant: Add quirk for mute LED control on HP ZBook G5
ALSA: hda: Drop the BATCH workaround for AMD controllers
ALSA: hda: Flush pending unsolicited events before suspend
ALSA: hda: Avoid spurious unsol event handling during S3/S4
ALSA: usb-audio: Fix "cannot get freq eq" errors on Dell AE515 sound bar
ALSA: usb-audio: Apply the control quirk to Plantronics headsets

Theodore Ts'o (1):
ext4: don't try to processed freed blocks until mballoc is initialized

Thomas Bogendoerfer (1):
MIPS: kernel: Reserve exception base early to prevent corruption

Thomas Zimmermann (1):
drm: Use USB controller's DMA mask when importing dmabufs

Tong Zhang (1):
drm/fb-helper: only unmap if buffer not null

Torin Cooper-Bennun (1):
can: tcan4x5x: tcan4x5x_init(): fix initialization - clear MRAM before entering Normal Mode

Trond Myklebust (2):
NFS: Don't revalidate the directory permissions on a lookup failure
NFS: Don't gratuitously clear the inode cache when lookup failed

Tvrtko Ursulin (1):
drm/i915: Wedge the GPU if command parser setup fails

Vasily Averin (1):
netfilter: x_tables: gpf inside xt_find_revision()

Vladimir Oltean (11):
net: enetc: don't overwrite the RSS indirection table when initializing
net: enetc: initialize RFS/RSS memories for unused ports too
net: enetc: take the MDIO lock only once per NAPI poll cycle
net: enetc: fix incorrect TPID when receiving 802.1ad tagged packets
net: enetc: don't disable VLAN filtering in IFF_PROMISC mode
net: enetc: force the RGMII speed and duplex instead of operating in inband mode
net: enetc: remove bogus write to SIRXIDR from enetc_setup_rxbdr
net: enetc: keep RX ring consumer index in sync with hardware
net: mscc: ocelot: properly reject destination IP keys in VCAP IS1
net: dsa: sja1105: fix SGMII PCS being forced to SPEED_UNKNOWN instead of SPEED_10
net: enetc: allow hardware timestamping on TX queues with tc-etf enabled

Wang Qing (2):
s390/cio: return -EFAULT if copy_to_user() fails again s390/crypto: return -EFAULT if copy_to_user() fails

Wanpeng Li (1):
KVM: kvmclock: Fix vCPUs > 64 can't be online/hotpluged

Wei Yongjun (3):
USB: gadget: udc: s3c2410_udc: fix return value check in s3c2410_udc_probe()
cpufreq: qcom-hw: Fix return value check in qcom_cpufreq_hw_cpu_init() perf/arm_dmc620_pmu: Fix error return code in dmc620_pmu_device_probe()

Will Deacon (1):
KVM: arm64: Avoid corrupting vCPU context register in guest exit

Willem de Bruijn (1):
net: expand textsearch ts_state to fit skb_seq_state

Wolfram Sang (2):
i2c: rcar: faster irq code to minimize HW race condition
i2c: rcar: optimize cacheline to minimize HW race condition

Wong Vee Khee (1):
stmmac: intel: Fixes clock registration error seen for multiple interfaces

Xie He (1):
net: lapbether: Remove netif_start_queue / netif_stop_queue

Yann Gautier (1):
mmc: mmci: Add MMC_CAP_NEED_RSP_BUSY for the stm32 variants

Yauheni Kaliuta (1):
selftests/bpf: Mask bpf_csum_diff() return value to 16 bits in test_verifier

Yinjun Zhang (1):
ethtool: fix the check logic of at least one channel for RX/TX

Yorick de Wid (1):
Goodix Fingerprint device is not a modem

Yoshihiro Shimoda (1):
usb: renesas_usbhs: Clear PIPECFG for re-enabling pipe with other EPNUM

Zhou Guanghui (2):
mm/memcg: set memcg when splitting page
mm/memcg: rename mem_cgroup_split_huge_fixup to split_page_memcg and add nr_pages argument

akshatzen (1):

      scsi: pm80xx: Fix missing tag_free in NVMD DATA req
author maintainer
#1 lore raw
Documentation/ABI/testing/sysfs-devices-memory +3 -2
index 246a45b96d22..58dbc592bc57 100644
@@ -26,8 +26,9 @@ Date:		September 2008
 Contact:	Badari Pulavarty <[email protected]>
 Description:
 		The file /sys/devices/system/memory/memoryX/phys_device
-		is read-only and is designed to show the name of physical
-		memory device.  Implementation is currently incomplete.
+		is read-only;  it is a legacy interface only ever used on s390x
+		to expose the covered storage increment.
+Users:		Legacy s390-tools lsmem/chmem
 
 What:		/sys/devices/system/memory/memoryX/phys_index
 Date:		September 2008
Documentation/admin-guide/mm/memory-hotplug.rst +2 -2
index 5c4432c96c4b..245739f55ac7 100644
@@ -160,8 +160,8 @@ Under each memory block, you can see 5 files:
 
                     "online_movable", "online", "offline" command
                     which will be performed on all sections in the block.
-``phys_device``     read-only: designed to show the name of physical memory
-                    device.  This is not well implemented now.
+``phys_device``	    read-only: legacy interface only ever used on s390x to
+		    expose the covered storage increment.
 ``removable``       read-only: contains an integer value indicating
                     whether the memory block is removable or not
                     removable.  A value of 1 indicates that the memory
Documentation/gpu/todo.rst +21 -0
index 009d8e6c7e3c..1cb7b9f9356e 100644
@@ -594,6 +594,27 @@ Some of these date from the very introduction of KMS in 2008 ...
 
 Level: Intermediate
 
+Remove automatic page mapping from dma-buf importing
+----------------------------------------------------
+
+When importing dma-bufs, the dma-buf and PRIME frameworks automatically map
+imported pages into the importer's DMA area. drm_gem_prime_fd_to_handle() and
+drm_gem_prime_handle_to_fd() require that importers call dma_buf_attach()
+even if they never do actual device DMA, but only CPU access through
+dma_buf_vmap(). This is a problem for USB devices, which do not support DMA
+operations.
+
+To fix the issue, automatic page mappings should be removed from the
+buffer-sharing code. Fixing this is a bit more involved, since the import/export
+cache is also tied to &drm_gem_object.import_attach. Meanwhile we paper over
+this problem for USB devices by fishing out the USB host controller device, as
+long as that supports DMA. Otherwise importing can still needlessly fail.
+
+Contact: Thomas Zimmermann <[email protected]>, Daniel Vetter
+
+Level: Advanced
+
+
 Better Testing
 ==============
 
Documentation/networking/netdev-FAQ.rst +6 -66

79 lines not on this page · raw message

Documentation/process/stable-kernel-rules.rst +0 -6
index 3973556250e1..003c865e9c21 100644
@@ -35,12 +35,6 @@ Rules on what kind of patches are accepted, and which ones are not, into the
 Procedure for submitting patches to the -stable tree
 ----------------------------------------------------
 
- - If the patch covers files in net/ or drivers/net please follow netdev stable
-   submission guidelines as described in
-   :ref:`Documentation/networking/netdev-FAQ.rst <netdev-FAQ>`
-   after first checking the stable networking queue at
-   https://patchwork.kernel.org/bundle/netdev/stable/?state=*
-   to ensure the requested patch is not already queued up.
  - Security patches should not be handled (solely) by the -stable review
    process but should follow the procedures in
    :ref:`Documentation/admin-guide/security-bugs.rst <securitybugs>`.
Documentation/process/submitting-patches.rst +0 -5
index 5ba54120bef7..5a1b1ea3aed0 100644
@@ -250,11 +250,6 @@ should also read
 :ref:`Documentation/process/stable-kernel-rules.rst <stable_kernel_rules>`
 in addition to this file.
 
-Note, however, that some subsystem maintainers want to come to their own
-conclusions on which patches should go to the stable trees.  The networking
-maintainer, in particular, would rather not see individual developers
-adding lines like the above to their patches.
-
 If changes affect userland-kernel interfaces, please send the MAN-PAGES
 maintainer (as listed in the MAINTAINERS file) a man-pages patch, or at
 least a notification of the change, so that some information makes its way
Documentation/virt/kvm/api.rst +3 -0
index 99ceb978c8b0..5570887a2dce 100644
@@ -182,6 +182,9 @@ is dependent on the CPU capability and the kernel configuration. The limit can
 be retrieved using KVM_CAP_ARM_VM_IPA_SIZE of the KVM_CHECK_EXTENSION
 ioctl() at run-time.
 
+Creation of the VM will fail if the requested IPA size (whether it is
+implicit or explicit) is unsupported on the host.
+
 Please note that configuring the IPA size does not affect the capability
 exposed by the guest CPUs in ID_AA64MMFR0_EL1[PARange]. It only affects
 size of the address translated by the stage2 level (guest physical to
Makefile +10 -4
index 472136a7881e..6ba32b82c480 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 5
 PATCHLEVEL = 11
-SUBLEVEL = 6
+SUBLEVEL = 7
 EXTRAVERSION =
 NAME = 💕 Valentine's Day Edition 💕
 
@@ -1246,9 +1246,15 @@ define filechk_utsrelease.h
 endef
 
 define filechk_version.h
-	echo \#define LINUX_VERSION_CODE $(shell                         \
-	expr $(VERSION) \* 65536 + 0$(PATCHLEVEL) \* 256 + 0$(SUBLEVEL)); \
-	echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))'
+	if [ $(SUBLEVEL) -gt 255 ]; then                                 \
+		echo \#define LINUX_VERSION_CODE $(shell                 \
+		expr $(VERSION) \* 65536 + 0$(PATCHLEVEL) \* 256 + 255); \
+	else                                                             \
+		echo \#define LINUX_VERSION_CODE $(shell                 \
+		expr $(VERSION) \* 65536 + 0$(PATCHLEVEL) \* 256 + $(SUBLEVEL)); \
+	fi;                                                              \
+	echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) +  \
+	((c) > 255 ? 255 : (c)))'
 endef
 
 $(version_h): FORCE
arch/arm64/include/asm/kvm_asm.h +2 -2
index 8a33d83ea843..3398477c891d 100644
@@ -47,7 +47,7 @@
 #define __KVM_HOST_SMCCC_FUNC___kvm_flush_vm_context		2
 #define __KVM_HOST_SMCCC_FUNC___kvm_tlb_flush_vmid_ipa		3
 #define __KVM_HOST_SMCCC_FUNC___kvm_tlb_flush_vmid		4
-#define __KVM_HOST_SMCCC_FUNC___kvm_tlb_flush_local_vmid	5
+#define __KVM_HOST_SMCCC_FUNC___kvm_flush_cpu_context		5
 #define __KVM_HOST_SMCCC_FUNC___kvm_timer_set_cntvoff		6
 #define __KVM_HOST_SMCCC_FUNC___kvm_enable_ssbs			7
 #define __KVM_HOST_SMCCC_FUNC___vgic_v3_get_ich_vtr_el2		8
@@ -183,10 +183,10 @@ DECLARE_KVM_HYP_SYM(__bp_harden_hyp_vecs);
 #define __bp_harden_hyp_vecs	CHOOSE_HYP_SYM(__bp_harden_hyp_vecs)
 
 extern void __kvm_flush_vm_context(void);
+extern void __kvm_flush_cpu_context(struct kvm_s2_mmu *mmu);
 extern void __kvm_tlb_flush_vmid_ipa(struct kvm_s2_mmu *mmu, phys_addr_t ipa,
 				     int level);
 extern void __kvm_tlb_flush_vmid(struct kvm_s2_mmu *mmu);
-extern void __kvm_tlb_flush_local_vmid(struct kvm_s2_mmu *mmu);
 
 extern void __kvm_timer_set_cntvoff(u64 cntvoff);
 
arch/arm64/include/asm/kvm_hyp.h +7 -1
index c0450828378b..32ae676236b6 100644
@@ -83,6 +83,11 @@ void sysreg_restore_guest_state_vhe(struct kvm_cpu_context *ctxt);
 void __debug_switch_to_guest(struct kvm_vcpu *vcpu);
 void __debug_switch_to_host(struct kvm_vcpu *vcpu);
 
+#ifdef __KVM_NVHE_HYPERVISOR__
+void __debug_save_host_buffers_nvhe(struct kvm_vcpu *vcpu);
+void __debug_restore_host_buffers_nvhe(struct kvm_vcpu *vcpu);
+#endif
+
 void __fpsimd_save_state(struct user_fpsimd_state *fp_regs);
 void __fpsimd_restore_state(struct user_fpsimd_state *fp_regs);
 
@@ -97,7 +102,8 @@ bool kvm_host_psci_handler(struct kvm_cpu_context *host_ctxt);
 
 void __noreturn hyp_panic(void);
 #ifdef __KVM_NVHE_HYPERVISOR__
-void __noreturn __hyp_do_panic(bool restore_host, u64 spsr, u64 elr, u64 par);
+void __noreturn __hyp_do_panic(struct kvm_cpu_context *host_ctxt, u64 spsr,
+			       u64 elr, u64 par);
 #endif
 
 #endif /* __ARM64_KVM_HYP_H__ */
arch/arm64/include/asm/memory.h +5 -0
index ff4732785c32..63b6ef2cfb52 100644
@@ -315,6 +315,11 @@ static inline void *phys_to_virt(phys_addr_t x)
 #define ARCH_PFN_OFFSET		((unsigned long)PHYS_PFN_OFFSET)
 
 #if !defined(CONFIG_SPARSEMEM_VMEMMAP) || defined(CONFIG_DEBUG_VIRTUAL)
+#define page_to_virt(x)	({						\
+	__typeof__(x) __page = x;					\
+	void *__addr = __va(page_to_phys(__page));			\
+	(void *)__tag_set((const void *)__addr, page_kasan_tag(__page));\
+})
 #define virt_to_page(x)		pfn_to_page(virt_to_pfn(x))
 #else
 #define page_to_virt(x)	({						\
arch/arm64/include/asm/mmu_context.h +1 -4
index 0b3079fd28eb..1c364ec0ad31 100644
@@ -65,10 +65,7 @@ extern u64 idmap_ptrs_per_pgd;
 
 static inline bool __cpu_uses_extended_idmap(void)
 {
-	if (IS_ENABLED(CONFIG_ARM64_VA_BITS_52))
-		return false;
-
-	return unlikely(idmap_t0sz != TCR_T0SZ(VA_BITS));
+	return unlikely(idmap_t0sz != TCR_T0SZ(vabits_actual));
 }
 
 /*
arch/arm64/include/asm/pgtable-prot.h +0 -1
index 046be789fbb4..9a65fb528110 100644
@@ -66,7 +66,6 @@ extern bool arm64_use_ng_mappings;
 #define _PAGE_DEFAULT		(_PROT_DEFAULT | PTE_ATTRINDX(MT_NORMAL))
 
 #define PAGE_KERNEL		__pgprot(PROT_NORMAL)
-#define PAGE_KERNEL_TAGGED	__pgprot(PROT_NORMAL_TAGGED)
 #define PAGE_KERNEL_RO		__pgprot((PROT_NORMAL & ~PTE_WRITE) | PTE_RDONLY)
 #define PAGE_KERNEL_ROX		__pgprot((PROT_NORMAL & ~(PTE_WRITE | PTE_PXN)) | PTE_RDONLY)
 #define PAGE_KERNEL_EXEC	__pgprot(PROT_NORMAL & ~PTE_PXN)
arch/arm64/include/asm/pgtable.h +3 -0
index 501562793ce2..a5215d16a0f4 100644
@@ -486,6 +486,9 @@ static inline pmd_t pmd_mkdevmap(pmd_t pmd)
 	__pgprot_modify(prot, PTE_ATTRINDX_MASK, PTE_ATTRINDX(MT_NORMAL_NC) | PTE_PXN | PTE_UXN)
 #define pgprot_device(prot) \
 	__pgprot_modify(prot, PTE_ATTRINDX_MASK, PTE_ATTRINDX(MT_DEVICE_nGnRE) | PTE_PXN | PTE_UXN)
+#define pgprot_tagged(prot) \
+	__pgprot_modify(prot, PTE_ATTRINDX_MASK, PTE_ATTRINDX(MT_NORMAL_TAGGED))
+#define pgprot_mhp	pgprot_tagged
 /*
  * DMA allocations for non-coherent devices use what the Arm architecture calls
  * "Normal non-cacheable" memory, which permits speculation, unaligned accesses
arch/arm64/kernel/head.S +1 -1
index 7ec430e18f95..a0b3bfe67609 100644
@@ -319,7 +319,7 @@ SYM_FUNC_START_LOCAL(__create_page_tables)
 	 */
 	adrp	x5, __idmap_text_end
 	clz	x5, x5
-	cmp	x5, TCR_T0SZ(VA_BITS)	// default T0SZ small enough?
+	cmp	x5, TCR_T0SZ(VA_BITS_MIN) // default T0SZ small enough?
 	b.ge	1f			// .. then skip VA range extension
 
 	adr_l	x6, idmap_t0sz
arch/arm64/kernel/perf_event.c +1 -1
index 3605f77ad4df..11852e05ee32 100644
@@ -460,7 +460,7 @@ static inline int armv8pmu_counter_has_overflowed(u32 pmnc, int idx)
 	return pmnc & BIT(ARMV8_IDX_TO_COUNTER(idx));
 }
 
-static inline u32 armv8pmu_read_evcntr(int idx)
+static inline u64 armv8pmu_read_evcntr(int idx)
 {
 	u32 counter = ARMV8_IDX_TO_COUNTER(idx);
 
arch/arm64/kvm/arm.c +6 -1
index fe60d25c000e..b25b4c19feeb 100644
@@ -385,11 +385,16 @@ void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
 	last_ran = this_cpu_ptr(mmu->last_vcpu_ran);
 
 	/*
+	 * We guarantee that both TLBs and I-cache are private to each
+	 * vcpu. If detecting that a vcpu from the same VM has
+	 * previously run on the same physical CPU, call into the
+	 * hypervisor code to nuke the relevant contexts.
+	 *
 	 * We might get preempted before the vCPU actually runs, but
 	 * over-invalidation doesn't affect correctness.
 	 */
 	if (*last_ran != vcpu->vcpu_id) {
-		kvm_call_hyp(__kvm_tlb_flush_local_vmid, mmu);
+		kvm_call_hyp(__kvm_flush_cpu_context, mmu);
 		*last_ran = vcpu->vcpu_id;
 	}
 
arch/arm64/kvm/hyp/entry.S +1 -1
index b0afad7a99c6..0c66a1d408fd 100644
@@ -146,7 +146,7 @@ SYM_INNER_LABEL(__guest_exit, SYM_L_GLOBAL)
 	// Now restore the hyp regs
 	restore_callee_saved_regs x2
 
-	set_loaded_vcpu xzr, x1, x2
+	set_loaded_vcpu xzr, x2, x3
 
 alternative_if ARM64_HAS_RAS_EXTN
 	// If we have the RAS extensions we can consume a pending error
arch/arm64/kvm/hyp/nvhe/debug-sr.c +10 -2
index 91a711aa8382..f401724f12ef 100644
@@ -58,16 +58,24 @@ static void __debug_restore_spe(u64 pmscr_el1)
 	write_sysreg_s(pmscr_el1, SYS_PMSCR_EL1);
 }
 
-void __debug_switch_to_guest(struct kvm_vcpu *vcpu)
+void __debug_save_host_buffers_nvhe(struct kvm_vcpu *vcpu)
 {
 	/* Disable and flush SPE data generation */
 	__debug_save_spe(&vcpu->arch.host_debug_state.pmscr_el1);
+}
+
+void __debug_switch_to_guest(struct kvm_vcpu *vcpu)
+{
 	__debug_switch_to_guest_common(vcpu);
 }
 
-void __debug_switch_to_host(struct kvm_vcpu *vcpu)
+void __debug_restore_host_buffers_nvhe(struct kvm_vcpu *vcpu)
 {
 	__debug_restore_spe(vcpu->arch.host_debug_state.pmscr_el1);
+}
+
+void __debug_switch_to_host(struct kvm_vcpu *vcpu)
+{
 	__debug_switch_to_host_common(vcpu);
 }
 
arch/arm64/kvm/hyp/nvhe/host.S +10 -10
index a820dfdc9c25..3a06085aab6f 100644
@@ -71,10 +71,15 @@ SYM_FUNC_START(__host_enter)
 SYM_FUNC_END(__host_enter)
 
 /*
- * void __noreturn __hyp_do_panic(bool restore_host, u64 spsr, u64 elr, u64 par);
+ * void __noreturn __hyp_do_panic(struct kvm_cpu_context *host_ctxt, u64 spsr,
+ * 				  u64 elr, u64 par);
  */
 SYM_FUNC_START(__hyp_do_panic)
-	/* Load the format arguments into x1-7 */
+	mov	x29, x0
+
+	/* Load the format string into x0 and arguments into x1-7 */
+	ldr	x0, =__hyp_panic_string
+
 	mov	x6, x3
 	get_vcpu_ptr x7, x3
 
@@ -89,13 +94,8 @@ SYM_FUNC_START(__hyp_do_panic)
 	ldr	lr, =panic
 	msr	elr_el2, lr
 
-	/*
-	 * Set the panic format string and enter the host, conditionally
-	 * restoring the host context.
-	 */
-	cmp	x0, xzr
-	ldr	x0, =__hyp_panic_string
-	b.eq	__host_enter_without_restoring
+	/* Enter the host, conditionally restoring the host context. */
+	cbz	x29, __host_enter_without_restoring
 	b	__host_enter_for_panic
 SYM_FUNC_END(__hyp_do_panic)
 
@@ -150,7 +150,7 @@ SYM_FUNC_END(__hyp_do_panic)
 
 .macro invalid_host_el1_vect
 	.align 7
-	mov	x0, xzr		/* restore_host = false */
+	mov	x0, xzr		/* host_ctxt = NULL */
 	mrs	x1, spsr_el2
 	mrs	x2, elr_el2
 	mrs	x3, par_el1
arch/arm64/kvm/hyp/nvhe/hyp-main.c +3 -3
index a906f9e2ff34..1b8ef37bf805 100644
@@ -46,11 +46,11 @@ static void handle___kvm_tlb_flush_vmid(struct kvm_cpu_context *host_ctxt)
 	__kvm_tlb_flush_vmid(kern_hyp_va(mmu));
 }
 
-static void handle___kvm_tlb_flush_local_vmid(struct kvm_cpu_context *host_ctxt)
+static void handle___kvm_flush_cpu_context(struct kvm_cpu_context *host_ctxt)
 {
 	DECLARE_REG(struct kvm_s2_mmu *, mmu, host_ctxt, 1);
 
-	__kvm_tlb_flush_local_vmid(kern_hyp_va(mmu));
+	__kvm_flush_cpu_context(kern_hyp_va(mmu));
 }
 
 static void handle___kvm_timer_set_cntvoff(struct kvm_cpu_context *host_ctxt)
@@ -115,7 +115,7 @@ static const hcall_t *host_hcall[] = {
 	HANDLE_FUNC(__kvm_flush_vm_context),
 	HANDLE_FUNC(__kvm_tlb_flush_vmid_ipa),
 	HANDLE_FUNC(__kvm_tlb_flush_vmid),
-	HANDLE_FUNC(__kvm_tlb_flush_local_vmid),
+	HANDLE_FUNC(__kvm_flush_cpu_context),
 	HANDLE_FUNC(__kvm_timer_set_cntvoff),
 	HANDLE_FUNC(__kvm_enable_ssbs),
 	HANDLE_FUNC(__vgic_v3_get_ich_vtr_el2),
arch/arm64/kvm/hyp/nvhe/switch.c +11 -3
index f3d0e9eca56c..68ab6b4d5141 100644
@@ -192,6 +192,14 @@ int __kvm_vcpu_run(struct kvm_vcpu *vcpu)
 	pmu_switch_needed = __pmu_switch_to_guest(host_ctxt);
 
 	__sysreg_save_state_nvhe(host_ctxt);
+	/*
+	 * We must flush and disable the SPE buffer for nVHE, as
+	 * the translation regime(EL1&0) is going to be loaded with
+	 * that of the guest. And we must do this before we change the
+	 * translation regime to EL2 (via MDCR_EL2_E2PB == 0) and
+	 * before we load guest Stage1.
+	 */
+	__debug_save_host_buffers_nvhe(vcpu);
 
 	__adjust_pc(vcpu);
 
@@ -234,11 +242,12 @@ int __kvm_vcpu_run(struct kvm_vcpu *vcpu)
 	if (vcpu->arch.flags & KVM_ARM64_FP_ENABLED)
 		__fpsimd_save_fpexc32(vcpu);
 
+	__debug_switch_to_host(vcpu);
 	/*
 	 * This must come after restoring the host sysregs, since a non-VHE
 	 * system may enable SPE here and make use of the TTBRs.
 	 */
-	__debug_switch_to_host(vcpu);
+	__debug_restore_host_buffers_nvhe(vcpu);
 
 	if (pmu_switch_needed)
 		__pmu_switch_to_host(host_ctxt);
@@ -257,7 +266,6 @@ void __noreturn hyp_panic(void)
 	u64 spsr = read_sysreg_el2(SYS_SPSR);
 	u64 elr = read_sysreg_el2(SYS_ELR);
 	u64 par = read_sysreg_par();
-	bool restore_host = true;
 	struct kvm_cpu_context *host_ctxt;
 	struct kvm_vcpu *vcpu;
 
@@ -271,7 +279,7 @@ void __noreturn hyp_panic(void)
 		__sysreg_restore_state_nvhe(host_ctxt);
 	}
 
-	__hyp_do_panic(restore_host, spsr, elr, par);
+	__hyp_do_panic(host_ctxt, spsr, elr, par);
 	unreachable();
 }
 
arch/arm64/kvm/hyp/nvhe/tlb.c +2 -1
index fbde89a2c6e8..229b06748c20 100644
@@ -123,7 +123,7 @@ void __kvm_tlb_flush_vmid(struct kvm_s2_mmu *mmu)
 	__tlb_switch_to_host(&cxt);
 }
 
-void __kvm_tlb_flush_local_vmid(struct kvm_s2_mmu *mmu)
+void __kvm_flush_cpu_context(struct kvm_s2_mmu *mmu)
 {
 	struct tlb_inv_context cxt;
 
@@ -131,6 +131,7 @@ void __kvm_tlb_flush_local_vmid(struct kvm_s2_mmu *mmu)
 	__tlb_switch_to_guest(mmu, &cxt);
 
 	__tlbi(vmalle1);
+	asm volatile("ic iallu");
 	dsb(nsh);
 	isb();
 
arch/arm64/kvm/hyp/pgtable.c +1 -0
index bdf8e55ed308..4d99d07c610c 100644
@@ -225,6 +225,7 @@ static inline int __kvm_pgtable_visit(struct kvm_pgtable_walk_data *data,
 		goto out;
 
 	if (!table) {
+		data->addr = ALIGN_DOWN(data->addr, kvm_granule_size(level));
 		data->addr += kvm_granule_size(level);
 		goto out;
 	}
arch/arm64/kvm/hyp/vhe/tlb.c +2 -1
index fd7895945bbc..66f17349f0c3 100644
@@ -127,7 +127,7 @@ void __kvm_tlb_flush_vmid(struct kvm_s2_mmu *mmu)
 	__tlb_switch_to_host(&cxt);
 }
 
-void __kvm_tlb_flush_local_vmid(struct kvm_s2_mmu *mmu)
+void __kvm_flush_cpu_context(struct kvm_s2_mmu *mmu)
 {
 	struct tlb_inv_context cxt;
 
@@ -135,6 +135,7 @@ void __kvm_tlb_flush_local_vmid(struct kvm_s2_mmu *mmu)
 	__tlb_switch_to_guest(mmu, &cxt);
 
 	__tlbi(vmalle1);
+	asm volatile("ic iallu");
 	dsb(nsh);
 	isb();
 
arch/arm64/kvm/mmu.c +1 -2
index 7d2257cc5438..eebde5eb6c3d 100644
@@ -1309,8 +1309,7 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm,
 	 * Prevent userspace from creating a memory region outside of the IPA
 	 * space addressable by the KVM guest IPA space.
 	 */
-	if (memslot->base_gfn + memslot->npages >=
-	    (kvm_phys_size(kvm) >> PAGE_SHIFT))
+	if ((memslot->base_gfn + memslot->npages) > (kvm_phys_size(kvm) >> PAGE_SHIFT))
 		return -EFAULT;
 
 	mmap_read_lock(current->mm);
arch/arm64/kvm/reset.c +8 -4
index 47f3f035f3ea..9d3d09a89894 100644
@@ -324,10 +324,9 @@ int kvm_set_ipa_limit(void)
 	}
 
 	kvm_ipa_limit = id_aa64mmfr0_parange_to_phys_shift(parange);
-	WARN(kvm_ipa_limit < KVM_PHYS_SHIFT,
-	     "KVM IPA Size Limit (%d bits) is smaller than default size\n",
-	     kvm_ipa_limit);
-	kvm_info("IPA Size Limit: %d bits\n", kvm_ipa_limit);
+	kvm_info("IPA Size Limit: %d bits%s\n", kvm_ipa_limit,
+		 ((kvm_ipa_limit < KVM_PHYS_SHIFT) ?
+		  " (Reduced IPA size, limited VM/VMM compatibility)" : ""));
 
 	return 0;
 }
@@ -356,6 +355,11 @@ int kvm_arm_setup_stage2(struct kvm *kvm, unsigned long type)
 			return -EINVAL;
 	} else {
 		phys_shift = KVM_PHYS_SHIFT;
+		if (phys_shift > kvm_ipa_limit) {
+			pr_warn_once("%s using unsupported default IPA limit, upgrade your VMM\n",
+				     current->comm);
+			return -EINVAL;
+		}
 	}
 
 	mmfr0 = read_sanitised_ftr_reg(SYS_ID_AA64MMFR0_EL1);
arch/arm64/mm/init.c +12 -0
index 709d98fea90c..1141075e4d53 100644
@@ -230,6 +230,18 @@ int pfn_valid(unsigned long pfn)
 
 	if (!valid_section(__pfn_to_section(pfn)))
 		return 0;
+
+	/*
+	 * ZONE_DEVICE memory does not have the memblock entries.
+	 * memblock_is_map_memory() check for ZONE_DEVICE based
+	 * addresses will always fail. Even the normal hotplugged
+	 * memory will never have MEMBLOCK_NOMAP flag set in their
+	 * memblock entries. Skip memblock search for all non early
+	 * memory sections covering all of hotplug memory including
+	 * both normal and ZONE_DEVICE based.
+	 */
+	if (!early_section(__pfn_to_section(pfn)))
+		return pfn_section_valid(__pfn_to_section(pfn), pfn);
 #endif
 	return memblock_is_map_memory(addr);
 }
arch/arm64/mm/mmu.c +3 -2
index ae0c3d023824..6f0648777d34 100644
@@ -40,7 +40,7 @@
 #define NO_BLOCK_MAPPINGS	BIT(0)
 #define NO_CONT_MAPPINGS	BIT(1)
 
-u64 idmap_t0sz = TCR_T0SZ(VA_BITS);
+u64 idmap_t0sz = TCR_T0SZ(VA_BITS_MIN);
 u64 idmap_ptrs_per_pgd = PTRS_PER_PGD;
 
 u64 __section(".mmuoff.data.write") vabits_actual;
@@ -512,7 +512,8 @@ static void __init map_mem(pgd_t *pgdp)
 		 * if MTE is present. Otherwise, it has the same attributes as
 		 * PAGE_KERNEL.
 		 */
-		__map_memblock(pgdp, start, end, PAGE_KERNEL_TAGGED, flags);
+		__map_memblock(pgdp, start, end, pgprot_tagged(PAGE_KERNEL),
+			       flags);
 	}
 
 	/*
arch/mips/crypto/Makefile +2 -2
index 8e1deaf00e0c..5e4105cccf9f 100644
@@ -12,8 +12,8 @@ AFLAGS_chacha-core.o += -O2 # needed to fill branch delay slots
 obj-$(CONFIG_CRYPTO_POLY1305_MIPS) += poly1305-mips.o
 poly1305-mips-y := poly1305-core.o poly1305-glue.o
 
-perlasm-flavour-$(CONFIG_CPU_MIPS32) := o32
-perlasm-flavour-$(CONFIG_CPU_MIPS64) := 64
+perlasm-flavour-$(CONFIG_32BIT) := o32
+perlasm-flavour-$(CONFIG_64BIT) := 64
 
 quiet_cmd_perlasm = PERLASM $@
       cmd_perlasm = $(PERL) $(<) $(perlasm-flavour-y) $(@)
arch/mips/include/asm/traps.h +3 -0
index 6a0864bb604d..9038b91e2d8c 100644
@@ -24,6 +24,9 @@ extern void (*board_ebase_setup)(void);
 extern void (*board_cache_error_setup)(void);
 
 extern int register_nmi_notifier(struct notifier_block *nb);
+extern void reserve_exception_space(phys_addr_t addr, unsigned long size);
+
+#define VECTORSPACING 0x100	/* for EI/VI mode */
 
 #define nmi_notifier(fn, pri)						\
 ({									\
arch/mips/kernel/cpu-probe.c +6 -0
index 31cb9199197c..21794db53c05 100644
@@ -26,6 +26,7 @@
 #include <asm/elf.h>
 #include <asm/pgtable-bits.h>
 #include <asm/spram.h>
+#include <asm/traps.h>
 #include <linux/uaccess.h>
 
 #include "fpu-probe.h"
@@ -1619,6 +1620,7 @@ static inline void cpu_probe_broadcom(struct cpuinfo_mips *c, unsigned int cpu)
 		c->cputype = CPU_BMIPS3300;
 		__cpu_name[cpu] = "Broadcom BMIPS3300";
 		set_elf_platform(cpu, "bmips3300");
+		reserve_exception_space(0x400, VECTORSPACING * 64);
 		break;
 	case PRID_IMP_BMIPS43XX: {
 		int rev = c->processor_id & PRID_REV_MASK;
@@ -1629,6 +1631,7 @@ static inline void cpu_probe_broadcom(struct cpuinfo_mips *c, unsigned int cpu)
 			__cpu_name[cpu] = "Broadcom BMIPS4380";
 			set_elf_platform(cpu, "bmips4380");
 			c->options |= MIPS_CPU_RIXI;
+			reserve_exception_space(0x400, VECTORSPACING * 64);
 		} else {
 			c->cputype = CPU_BMIPS4350;
 			__cpu_name[cpu] = "Broadcom BMIPS4350";
@@ -1645,6 +1648,7 @@ static inline void cpu_probe_broadcom(struct cpuinfo_mips *c, unsigned int cpu)
 			__cpu_name[cpu] = "Broadcom BMIPS5000";
 		set_elf_platform(cpu, "bmips5000");
 		c->options |= MIPS_CPU_ULRI | MIPS_CPU_RIXI;
+		reserve_exception_space(0x1000, VECTORSPACING * 64);
 		break;
 	}
 }
@@ -2124,6 +2128,8 @@ void cpu_probe(void)
 	if (cpu == 0)
 		__ua_limit = ~((1ull << cpu_vmbits) - 1);
 #endif
+
+	reserve_exception_space(0, 0x1000);
 }
 
 void cpu_report(void)
arch/mips/kernel/cpu-r3k-probe.c +3 -0
index abdbbe8c5a43..af654771918c 100644
@@ -21,6 +21,7 @@
 #include <asm/fpu.h>
 #include <asm/mipsregs.h>
 #include <asm/elf.h>
+#include <asm/traps.h>
 
 #include "fpu-probe.h"
 
@@ -158,6 +159,8 @@ void cpu_probe(void)
 		cpu_set_fpu_opts(c);
 	else
 		cpu_set_nofpu_opts(c);
+
+	reserve_exception_space(0, 0x400);
 }
 
 void cpu_report(void)
arch/mips/kernel/traps.c +5 -5
index e0352958e2f7..808b8b61ded1 100644
@@ -2009,13 +2009,16 @@ void __noreturn nmi_exception_handler(struct pt_regs *regs)
 	nmi_exit();
 }
 
-#define VECTORSPACING 0x100	/* for EI/VI mode */
-
 unsigned long ebase;
 EXPORT_SYMBOL_GPL(ebase);
 unsigned long exception_handlers[32];
 unsigned long vi_handlers[64];
 
+void reserve_exception_space(phys_addr_t addr, unsigned long size)
+{
+	memblock_reserve(addr, size);
+}
+
 void __init *set_except_vector(int n, void *addr)
 {
 	unsigned long handler = (unsigned long) addr;
@@ -2367,10 +2370,7 @@ void __init trap_init(void)
 
 	if (!cpu_has_mips_r2_r6) {
 		ebase = CAC_BASE;
-		ebase_pa = virt_to_phys((void *)ebase);
 		vec_size = 0x400;
-
-		memblock_reserve(ebase_pa, vec_size);
 	} else {
 		if (cpu_has_veic || cpu_has_vint)
 			vec_size = 0x200 + VECTORSPACING*64;
arch/powerpc/include/asm/code-patching.h +1 -1
index eacc9102c251..d5b3c3bb95b4 100644
@@ -73,7 +73,7 @@ void __patch_exception(int exc, unsigned long addr);
 #endif
 
 #define OP_RT_RA_MASK	0xffff0000UL
-#define LIS_R2		0x3c020000UL
+#define LIS_R2		0x3c400000UL
 #define ADDIS_R2_R12	0x3c4c0000UL
 #define ADDI_R2_R2	0x38420000UL
 
arch/powerpc/include/asm/machdep.h +3 -0
index cf6ebbc16cb4..764f2732a821 100644
@@ -59,6 +59,9 @@ struct machdep_calls {
 	int		(*pcibios_root_bridge_prepare)(struct pci_host_bridge
 				*bridge);
 
+	/* finds all the pci_controllers present at boot */
+	void 		(*discover_phbs)(void);
+
 	/* To setup PHBs when using automatic OF platform driver for PCI */
 	int		(*pci_setup_phb)(struct pci_controller *host);
 
arch/powerpc/include/asm/ptrace.h +5 -2
index 58f9dc060a7b..42e9bc4018da 100644
@@ -70,6 +70,9 @@ struct pt_regs
 };
 #endif
 
+
+#define STACK_FRAME_WITH_PT_REGS (STACK_FRAME_OVERHEAD + sizeof(struct pt_regs))
+
 #ifdef __powerpc64__
 
 /*
@@ -192,7 +195,7 @@ static inline void regs_set_return_value(struct pt_regs *regs, unsigned long rc)
 #define TRAP_FLAGS_MASK		0x11
 #define TRAP(regs)		((regs)->trap & ~TRAP_FLAGS_MASK)
 #define FULL_REGS(regs)		(((regs)->trap & 1) == 0)
-#define SET_FULL_REGS(regs)	((regs)->trap |= 1)
+#define SET_FULL_REGS(regs)	((regs)->trap &= ~1)
 #endif
 #define CHECK_FULL_REGS(regs)	BUG_ON(!FULL_REGS(regs))
 #define NV_REG_POISON		0xdeadbeefdeadbeefUL
@@ -207,7 +210,7 @@ static inline void regs_set_return_value(struct pt_regs *regs, unsigned long rc)
 #define TRAP_FLAGS_MASK		0x1F
 #define TRAP(regs)		((regs)->trap & ~TRAP_FLAGS_MASK)
 #define FULL_REGS(regs)		(((regs)->trap & 1) == 0)
-#define SET_FULL_REGS(regs)	((regs)->trap |= 1)
+#define SET_FULL_REGS(regs)	((regs)->trap &= ~1)
 #define IS_CRITICAL_EXC(regs)	(((regs)->trap & 2) != 0)
 #define IS_MCHECK_EXC(regs)	(((regs)->trap & 4) != 0)
 #define IS_DEBUG_EXC(regs)	(((regs)->trap & 8) != 0)
arch/powerpc/include/asm/switch_to.h +10 -0
index fdab93428372..9d1fbd8be1c7 100644
@@ -71,6 +71,16 @@ static inline void disable_kernel_vsx(void)
 {
 	msr_check_and_clear(MSR_FP|MSR_VEC|MSR_VSX);
 }
+#else
+static inline void enable_kernel_vsx(void)
+{
+	BUILD_BUG();
+}
+
+static inline void disable_kernel_vsx(void)
+{
+	BUILD_BUG();
+}
 #endif
 
 #ifdef CONFIG_SPE
arch/powerpc/kernel/asm-offsets.c +1 -1
index b12d7c049bfe..989006b5ad0f 100644
@@ -309,7 +309,7 @@ int main(void)
 
 	/* Interrupt register frame */
 	DEFINE(INT_FRAME_SIZE, STACK_INT_FRAME_SIZE);
-	DEFINE(SWITCH_FRAME_SIZE, STACK_FRAME_OVERHEAD + sizeof(struct pt_regs));
+	DEFINE(SWITCH_FRAME_SIZE, STACK_FRAME_WITH_PT_REGS);
 	STACK_PT_REGS_OFFSET(GPR0, gpr[0]);
 	STACK_PT_REGS_OFFSET(GPR1, gpr[1]);
 	STACK_PT_REGS_OFFSET(GPR2, gpr[2]);
arch/powerpc/kernel/exceptions-64s.S +1 -1
index 6e53f7638737..de988770a7e4 100644
@@ -470,7 +470,7 @@ DEFINE_FIXED_SYMBOL(\name\()_common_real)
 
 	ld	r10,PACAKMSR(r13)	/* get MSR value for kernel */
 	/* MSR[RI] is clear iff using SRR regs */
-	.if IHSRR == EXC_HV_OR_STD
+	.if IHSRR_IF_HVMODE
 	BEGIN_FTR_SECTION
 	xori	r10,r10,MSR_RI
 	END_FTR_SECTION_IFCLR(CPU_FTR_HVMODE)
arch/powerpc/kernel/head_book3s_32.S +6 -3
index bc57e3a82d68..b1a1a928fcb8 100644
@@ -447,11 +447,12 @@ InstructionTLBMiss:
 	cmplw	0,r1,r3
 #endif
 	mfspr	r2, SPRN_SDR1
-	li	r1,_PAGE_PRESENT | _PAGE_ACCESSED | _PAGE_EXEC
+	li	r1,_PAGE_PRESENT | _PAGE_ACCESSED | _PAGE_EXEC | _PAGE_USER
 	rlwinm	r2, r2, 28, 0xfffff000
 #ifdef CONFIG_MODULES
 	bgt-	112f
 	lis	r2, (swapper_pg_dir - PAGE_OFFSET)@ha	/* if kernel address, use */
+	li	r1,_PAGE_PRESENT | _PAGE_ACCESSED | _PAGE_EXEC
 	addi	r2, r2, (swapper_pg_dir - PAGE_OFFSET)@l	/* kernel page table */
 #endif
 112:	rlwimi	r2,r3,12,20,29		/* insert top 10 bits of address */
@@ -510,10 +511,11 @@ DataLoadTLBMiss:
 	lis	r1, TASK_SIZE@h		/* check if kernel address */
 	cmplw	0,r1,r3
 	mfspr	r2, SPRN_SDR1
-	li	r1, _PAGE_PRESENT | _PAGE_ACCESSED
+	li	r1, _PAGE_PRESENT | _PAGE_ACCESSED | _PAGE_USER
 	rlwinm	r2, r2, 28, 0xfffff000
 	bgt-	112f
 	lis	r2, (swapper_pg_dir - PAGE_OFFSET)@ha	/* if kernel address, use */
+	li	r1, _PAGE_PRESENT | _PAGE_ACCESSED
 	addi	r2, r2, (swapper_pg_dir - PAGE_OFFSET)@l	/* kernel page table */
 112:	rlwimi	r2,r3,12,20,29		/* insert top 10 bits of address */
 	lwz	r2,0(r2)		/* get pmd entry */
@@ -587,10 +589,11 @@ DataStoreTLBMiss:
 	lis	r1, TASK_SIZE@h		/* check if kernel address */
 	cmplw	0,r1,r3
 	mfspr	r2, SPRN_SDR1
-	li	r1, _PAGE_RW | _PAGE_DIRTY | _PAGE_PRESENT | _PAGE_ACCESSED
+	li	r1, _PAGE_RW | _PAGE_DIRTY | _PAGE_PRESENT | _PAGE_ACCESSED | _PAGE_USER
 	rlwinm	r2, r2, 28, 0xfffff000
 	bgt-	112f
 	lis	r2, (swapper_pg_dir - PAGE_OFFSET)@ha	/* if kernel address, use */
+	li	r1, _PAGE_RW | _PAGE_DIRTY | _PAGE_PRESENT | _PAGE_ACCESSED
 	addi	r2, r2, (swapper_pg_dir - PAGE_OFFSET)@l	/* kernel page table */
 112:	rlwimi	r2,r3,12,20,29		/* insert top 10 bits of address */
 	lwz	r2,0(r2)		/* get pmd entry */
arch/powerpc/kernel/pci-common.c +10 -0
index 2b555997b295..001e90cd8948 100644
@@ -1699,3 +1699,13 @@ static void fixup_hide_host_resource_fsl(struct pci_dev *dev)
 }
 DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MOTOROLA, PCI_ANY_ID, fixup_hide_host_resource_fsl);
 DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_FREESCALE, PCI_ANY_ID, fixup_hide_host_resource_fsl);
+
+
+static int __init discover_phbs(void)
+{
+	if (ppc_md.discover_phbs)
+		ppc_md.discover_phbs();
+
+	return 0;
+}
+core_initcall(discover_phbs);
arch/powerpc/kernel/process.c +1 -1
index a66f435dabbf..b65a73e4d642 100644
@@ -2176,7 +2176,7 @@ void show_stack(struct task_struct *tsk, unsigned long *stack,
 		 * See if this is an exception frame.
 		 * We look for the "regshere" marker in the current frame.
 		 */
-		if (validate_sp(sp, tsk, STACK_INT_FRAME_SIZE)
+		if (validate_sp(sp, tsk, STACK_FRAME_WITH_PT_REGS)
 		    && stack[STACK_FRAME_MARKER] == STACK_FRAME_REGS_MARKER) {
 			struct pt_regs *regs = (struct pt_regs *)
 				(sp + STACK_FRAME_OVERHEAD);
arch/powerpc/kernel/traps.c +4 -1
index 3ec7b443fe6b..4be05517f2db 100644
@@ -503,8 +503,11 @@ void system_reset_exception(struct pt_regs *regs)
 		die("Unrecoverable nested System Reset", regs, SIGABRT);
 #endif
 	/* Must die if the interrupt is not recoverable */
-	if (!(regs->msr & MSR_RI))
+	if (!(regs->msr & MSR_RI)) {
+		/* For the reason explained in die_mce, nmi_exit before die */
+		nmi_exit();
 		die("Unrecoverable System Reset", regs, SIGABRT);
+	}
 
 	if (saved_hsrrs) {
 		mtspr(SPRN_HSRR0, hsrr0);
arch/powerpc/lib/sstep.c +2 -2
index bb5c20d4ca91..c6aebc149d14 100644
@@ -904,7 +904,7 @@ static nokprobe_inline int do_vsx_load(struct instruction_op *op,
 	if (!address_ok(regs, ea, size) || copy_mem_in(mem, ea, size, regs))
 		return -EFAULT;
 
-	nr_vsx_regs = size / sizeof(__vector128);
+	nr_vsx_regs = max(1ul, size / sizeof(__vector128));
 	emulate_vsx_load(op, buf, mem, cross_endian);
 	preempt_disable();
 	if (reg < 32) {
@@ -951,7 +951,7 @@ static nokprobe_inline int do_vsx_store(struct instruction_op *op,
 	if (!address_ok(regs, ea, size))
 		return -EFAULT;
 
-	nr_vsx_regs = size / sizeof(__vector128);
+	nr_vsx_regs = max(1ul, size / sizeof(__vector128));
 	preempt_disable();
 	if (reg < 32) {
 		/* FP regs + extensions */
arch/powerpc/perf/core-book3s.c +17 -6
index 28206b1fe172..51f413521fde 100644
@@ -212,7 +212,7 @@ static inline void perf_get_data_addr(struct perf_event *event, struct pt_regs *
 	if (!(mmcra & MMCRA_SAMPLE_ENABLE) || sdar_valid)
 		*addrp = mfspr(SPRN_SDAR);
 
-	if (is_kernel_addr(mfspr(SPRN_SDAR)) && perf_allow_kernel(&event->attr) != 0)
+	if (is_kernel_addr(mfspr(SPRN_SDAR)) && event->attr.exclude_kernel)
 		*addrp = 0;
 }
 
@@ -506,7 +506,7 @@ static void power_pmu_bhrb_read(struct perf_event *event, struct cpu_hw_events *
 			 * addresses, hence include a check before filtering code
 			 */
 			if (!(ppmu->flags & PPMU_ARCH_31) &&
-				is_kernel_addr(addr) && perf_allow_kernel(&event->attr) != 0)
+			    is_kernel_addr(addr) && event->attr.exclude_kernel)
 				continue;
 
 			/* Branches are read most recent first (ie. mfbhrb 0 is
@@ -2149,7 +2149,17 @@ static void record_and_restart(struct perf_event *event, unsigned long val,
 			left += period;
 			if (left <= 0)
 				left = period;
-			record = siar_valid(regs);
+
+			/*
+			 * If address is not requested in the sample via
+			 * PERF_SAMPLE_IP, just record that sample irrespective
+			 * of SIAR valid check.
+			 */
+			if (event->attr.sample_type & PERF_SAMPLE_IP)
+				record = siar_valid(regs);
+			else
+				record = 1;
+
 			event->hw.last_period = event->hw.sample_period;
 		}
 		if (left < 0x80000000LL)
@@ -2167,9 +2177,10 @@ static void record_and_restart(struct perf_event *event, unsigned long val,
 	 * MMCR2. Check attr.exclude_kernel and address to drop the sample in
 	 * these cases.
 	 */
-	if (event->attr.exclude_kernel && record)
-		if (is_kernel_addr(mfspr(SPRN_SIAR)))
-			record = 0;
+	if (event->attr.exclude_kernel &&
+	    (event->attr.sample_type & PERF_SAMPLE_IP) &&
+	    is_kernel_addr(mfspr(SPRN_SIAR)))
+		record = 0;
 
 	/*
 	 * Finally record data if requested.
arch/powerpc/platforms/pseries/msi.c +23 -2
index b3ac2455faad..637300330507 100644
@@ -4,6 +4,7 @@
  * Copyright 2006-2007 Michael Ellerman, IBM Corp.
  */
 
+#include <linux/crash_dump.h>
 #include <linux/device.h>
 #include <linux/irq.h>
 #include <linux/msi.h>
@@ -458,8 +459,28 @@ static int rtas_setup_msi_irqs(struct pci_dev *pdev, int nvec_in, int type)
 			return hwirq;
 		}
 
-		virq = irq_create_mapping_affinity(NULL, hwirq,
-						   entry->affinity);
+		/*
+		 * Depending on the number of online CPUs in the original
+		 * kernel, it is likely for CPU #0 to be offline in a kdump
+		 * kernel. The associated IRQs in the affinity mappings
+		 * provided by irq_create_affinity_masks() are thus not
+		 * started by irq_startup(), as per-design for managed IRQs.
+		 * This can be a problem with multi-queue block devices driven
+		 * by blk-mq : such a non-started IRQ is very likely paired
+		 * with the single queue enforced by blk-mq during kdump (see
+		 * blk_mq_alloc_tag_set()). This causes the device to remain
+		 * silent and likely hangs the guest at some point.
+		 *
+		 * We don't really care for fine-grained affinity when doing
+		 * kdump actually : simply ignore the pre-computed affinity
+		 * masks in this case and let the default mask with all CPUs
+		 * be used when creating the IRQ mappings.
+		 */
+		if (is_kdump_kernel())
+			virq = irq_create_mapping(NULL, hwirq);
+		else
+			virq = irq_create_mapping_affinity(NULL, hwirq,
+							   entry->affinity);
 
 		if (!virq) {
 			pr_debug("rtas_msi: Failed mapping hwirq %d\n", hwirq);
arch/s390/kernel/smp.c +1 -1
index 27c763014114..1bae4a65416b 100644
@@ -770,7 +770,7 @@ static int smp_add_core(struct sclp_core_entry *core, cpumask_t *avail,
 static int __smp_rescan_cpus(struct sclp_core_info *info, bool early)
 {
 	struct sclp_core_entry *core;
-	cpumask_t avail;
+	static cpumask_t avail;
 	bool configured;
 	u16 core_id;
 	int nr, i;
arch/sparc/include/asm/mman.h +29 -25

64 lines not on this page · raw message

arch/sparc/mm/init_32.c +3 -0
index eb2946b1df8a..6139c5700ccc 100644
@@ -197,6 +197,9 @@ unsigned long __init bootmem_init(unsigned long *pages_avail)
 	size = memblock_phys_mem_size() - memblock_reserved_size();
 	*pages_avail = (size >> PAGE_SHIFT) - high_pages;
 
+	/* Only allow low memory to be allocated via memblock allocation */
+	memblock_set_current_limit(max_low_pfn << PAGE_SHIFT);
+
 	return max_pfn;
 }
 
arch/x86/entry/common.c +2 -1
index f89ae8ada64f..2e4d91f3feea 100644
@@ -128,7 +128,8 @@ static noinstr bool __do_fast_syscall_32(struct pt_regs *regs)
 		regs->ax = -EFAULT;
 
 		instrumentation_end();
-		syscall_exit_to_user_mode(regs);
+		local_irq_disable();
+		irqentry_exit_to_user_mode(regs);
 		return false;
 	}
 
arch/x86/entry/entry_64_compat.S +2 -0
index 541fdaf64045..0051cf5c792d 100644
@@ -210,6 +210,8 @@ SYM_CODE_START(entry_SYSCALL_compat)
 	/* Switch to the kernel stack */
 	movq	PER_CPU_VAR(cpu_current_top_of_stack), %rsp
 
+SYM_INNER_LABEL(entry_SYSCALL_compat_safe_stack, SYM_L_GLOBAL)
+
 	/* Construct struct pt_regs on stack */
 	pushq	$__USER32_DS		/* pt_regs->ss */
 	pushq	%r8			/* pt_regs->sp */
arch/x86/events/intel/core.c +4 -1
index 4faaef3a8f6c..d3f5cf70c1a0 100644
@@ -3578,8 +3578,10 @@ static int intel_pmu_hw_config(struct perf_event *event)
 		if (!(event->attr.freq || (event->attr.wakeup_events && !event->attr.watermark))) {
 			event->hw.flags |= PERF_X86_EVENT_AUTO_RELOAD;
 			if (!(event->attr.sample_type &
-			      ~intel_pmu_large_pebs_flags(event)))
+			      ~intel_pmu_large_pebs_flags(event))) {
 				event->hw.flags |= PERF_X86_EVENT_LARGE_PEBS;
+				event->attach_state |= PERF_ATTACH_SCHED_CB;
+			}
 		}
 		if (x86_pmu.pebs_aliases)
 			x86_pmu.pebs_aliases(event);
@@ -3592,6 +3594,7 @@ static int intel_pmu_hw_config(struct perf_event *event)
 		ret = intel_pmu_setup_lbr_filter(event);
 		if (ret)
 			return ret;
+		event->attach_state |= PERF_ATTACH_SCHED_CB;
 
 		/*
 		 * BTS is set up earlier in this path, so don't account twice
arch/x86/include/asm/insn-eval.h +2 -0
index a0f839aa144d..98b4dae5e8bc 100644
@@ -23,6 +23,8 @@ unsigned long insn_get_seg_base(struct pt_regs *regs, int seg_reg_idx);
 int insn_get_code_seg_params(struct pt_regs *regs);
 int insn_fetch_from_user(struct pt_regs *regs,
 			 unsigned char buf[MAX_INSN_SIZE]);
+int insn_fetch_from_user_inatomic(struct pt_regs *regs,
+				  unsigned char buf[MAX_INSN_SIZE]);
 bool insn_decode(struct insn *insn, struct pt_regs *regs,
 		 unsigned char buf[MAX_INSN_SIZE], int buf_size);
 
arch/x86/include/asm/proto.h +1 -0
index 2c35f1c01a2d..b6a9d51d1d79 100644
@@ -25,6 +25,7 @@ void __end_SYSENTER_singlestep_region(void);
 void entry_SYSENTER_compat(void);
 void __end_entry_SYSENTER_compat(void);
 void entry_SYSCALL_compat(void);
+void entry_SYSCALL_compat_safe_stack(void);
 void entry_INT80_compat(void);
 #ifdef CONFIG_XEN_PV
 void xen_entry_INT80_compat(void);
arch/x86/include/asm/ptrace.h +15 -0
index d8324a236696..409f661481e1 100644
@@ -94,6 +94,8 @@ struct pt_regs {
 #include <asm/paravirt_types.h>
 #endif
 
+#include <asm/proto.h>
+
 struct cpuinfo_x86;
 struct task_struct;
 
@@ -175,6 +177,19 @@ static inline bool any_64bit_mode(struct pt_regs *regs)
 #ifdef CONFIG_X86_64
 #define current_user_stack_pointer()	current_pt_regs()->sp
 #define compat_user_stack_pointer()	current_pt_regs()->sp
+
+static inline bool ip_within_syscall_gap(struct pt_regs *regs)
+{
+	bool ret = (regs->ip >= (unsigned long)entry_SYSCALL_64 &&
+		    regs->ip <  (unsigned long)entry_SYSCALL_64_safe_stack);
+
+#ifdef CONFIG_IA32_EMULATION
+	ret = ret || (regs->ip >= (unsigned long)entry_SYSCALL_compat &&
+		      regs->ip <  (unsigned long)entry_SYSCALL_compat_safe_stack);
+#endif
+
+	return ret;
+}
 #endif
 
 static inline unsigned long kernel_stack_pointer(struct pt_regs *regs)
arch/x86/kernel/kvmclock.c +9 -10
index aa593743acf6..1fc0962c89c0 100644
@@ -268,21 +268,20 @@ static void __init kvmclock_init_mem(void)
 
 static int __init kvm_setup_vsyscall_timeinfo(void)
 {
-#ifdef CONFIG_X86_64
-	u8 flags;
+	kvmclock_init_mem();
 
-	if (!per_cpu(hv_clock_per_cpu, 0) || !kvmclock_vsyscall)
-		return 0;
+#ifdef CONFIG_X86_64
+	if (per_cpu(hv_clock_per_cpu, 0) && kvmclock_vsyscall) {
+		u8 flags;
 
-	flags = pvclock_read_flags(&hv_clock_boot[0].pvti);
-	if (!(flags & PVCLOCK_TSC_STABLE_BIT))
-		return 0;
+		flags = pvclock_read_flags(&hv_clock_boot[0].pvti);
+		if (!(flags & PVCLOCK_TSC_STABLE_BIT))
+			return 0;
 
-	kvm_clock.vdso_clock_mode = VDSO_CLOCKMODE_PVCLOCK;
+		kvm_clock.vdso_clock_mode = VDSO_CLOCKMODE_PVCLOCK;
+	}
 #endif
 
-	kvmclock_init_mem();
-
 	return 0;
 }
 early_initcall(kvm_setup_vsyscall_timeinfo);
arch/x86/kernel/sev-es.c +17 -5
index 84c1821819af..04a780abb512 100644
@@ -121,8 +121,18 @@ static void __init setup_vc_stacks(int cpu)
 	cea_set_pte((void *)vaddr, pa, PAGE_KERNEL);
 }
 
-static __always_inline bool on_vc_stack(unsigned long sp)
+static __always_inline bool on_vc_stack(struct pt_regs *regs)
 {
+	unsigned long sp = regs->sp;
+
+	/* User-mode RSP is not trusted */
+	if (user_mode(regs))
+		return false;
+
+	/* SYSCALL gap still has user-mode RSP */
+	if (ip_within_syscall_gap(regs))
+		return false;
+
 	return ((sp >= __this_cpu_ist_bottom_va(VC)) && (sp < __this_cpu_ist_top_va(VC)));
 }
 
@@ -144,7 +154,7 @@ void noinstr __sev_es_ist_enter(struct pt_regs *regs)
 	old_ist = __this_cpu_read(cpu_tss_rw.x86_tss.ist[IST_INDEX_VC]);
 
 	/* Make room on the IST stack */
-	if (on_vc_stack(regs->sp))
+	if (on_vc_stack(regs))
 		new_ist = ALIGN_DOWN(regs->sp, 8) - sizeof(old_ist);
 	else
 		new_ist = old_ist - sizeof(old_ist);
@@ -248,7 +258,7 @@ static enum es_result vc_decode_insn(struct es_em_ctxt *ctxt)
 	int res;
 
 	if (user_mode(ctxt->regs)) {
-		res = insn_fetch_from_user(ctxt->regs, buffer);
+		res = insn_fetch_from_user_inatomic(ctxt->regs, buffer);
 		if (!res) {
 			ctxt->fi.vector     = X86_TRAP_PF;
 			ctxt->fi.error_code = X86_PF_INSTR | X86_PF_USER;
@@ -1248,13 +1258,12 @@ static __always_inline bool on_vc_fallback_stack(struct pt_regs *regs)
 DEFINE_IDTENTRY_VC_SAFE_STACK(exc_vmm_communication)
 {
 	struct sev_es_runtime_data *data = this_cpu_read(runtime_data);
+	irqentry_state_t irq_state;
 	struct ghcb_state state;
 	struct es_em_ctxt ctxt;
 	enum es_result result;
 	struct ghcb *ghcb;
 
-	lockdep_assert_irqs_disabled();
-
 	/*
 	 * Handle #DB before calling into !noinstr code to avoid recursive #DB.
 	 */
@@ -1263,6 +1272,8 @@ DEFINE_IDTENTRY_VC_SAFE_STACK(exc_vmm_communication)
 		return;
 	}
 
+	irq_state = irqentry_nmi_enter(regs);
+	lockdep_assert_irqs_disabled();
 	instrumentation_begin();
 
 	/*
@@ -1325,6 +1336,7 @@ DEFINE_IDTENTRY_VC_SAFE_STACK(exc_vmm_communication)
 
 out:
 	instrumentation_end();
+	irqentry_nmi_exit(regs, irq_state);
 
 	return;
 
arch/x86/kernel/traps.c +1 -2
index 7f5aec758f0e..ac1874a2a70e 100644
@@ -694,8 +694,7 @@ asmlinkage __visible noinstr struct pt_regs *vc_switch_off_ist(struct pt_regs *r
 	 * In the SYSCALL entry path the RSP value comes from user-space - don't
 	 * trust it and switch to the current kernel stack
 	 */
-	if (regs->ip >= (unsigned long)entry_SYSCALL_64 &&
-	    regs->ip <  (unsigned long)entry_SYSCALL_64_safe_stack) {
+	if (ip_within_syscall_gap(regs)) {
 		sp = this_cpu_read(cpu_current_top_of_stack);
 		goto sync;
 	}
arch/x86/kernel/unwind_orc.c +6 -6
index 73f800100066..c451d5f6422f 100644
@@ -367,8 +367,8 @@ static bool deref_stack_regs(struct unwind_state *state, unsigned long addr,
 	if (!stack_access_ok(state, addr, sizeof(struct pt_regs)))
 		return false;
 
-	*ip = regs->ip;
-	*sp = regs->sp;
+	*ip = READ_ONCE_NOCHECK(regs->ip);
+	*sp = READ_ONCE_NOCHECK(regs->sp);
 	return true;
 }
 
@@ -380,8 +380,8 @@ static bool deref_stack_iret_regs(struct unwind_state *state, unsigned long addr
 	if (!stack_access_ok(state, addr, IRET_FRAME_SIZE))
 		return false;
 
-	*ip = regs->ip;
-	*sp = regs->sp;
+	*ip = READ_ONCE_NOCHECK(regs->ip);
+	*sp = READ_ONCE_NOCHECK(regs->sp);
 	return true;
 }
 
@@ -402,12 +402,12 @@ static bool get_reg(struct unwind_state *state, unsigned int reg_off,
 		return false;
 
 	if (state->full_regs) {
-		*val = ((unsigned long *)state->regs)[reg];
+		*val = READ_ONCE_NOCHECK(((unsigned long *)state->regs)[reg]);
 		return true;
 	}
 
 	if (state->prev_regs) {
-		*val = ((unsigned long *)state->prev_regs)[reg];
+		*val = READ_ONCE_NOCHECK(((unsigned long *)state->prev_regs)[reg]);
 		return true;
 	}
 
arch/x86/kvm/lapic.c +10 -1
index 43cceadd073e..570fa298083c 100644
@@ -1641,7 +1641,16 @@ static void apic_timer_expired(struct kvm_lapic *apic, bool from_timer_fn)
 	}
 
 	if (kvm_use_posted_timer_interrupt(apic->vcpu)) {
-		kvm_wait_lapic_expire(vcpu);
+		/*
+		 * Ensure the guest's timer has truly expired before posting an
+		 * interrupt.  Open code the relevant checks to avoid querying
+		 * lapic_timer_int_injected(), which will be false since the
+		 * interrupt isn't yet injected.  Waiting until after injecting
+		 * is not an option since that won't help a posted interrupt.
+		 */
+		if (vcpu->arch.apic->lapic_timer.expired_tscdeadline &&
+		    vcpu->arch.apic->lapic_timer.timer_advance_ns)
+			__kvm_wait_lapic_expire(vcpu);
 		kvm_apic_inject_pending_timer_irqs(apic);
 		return;
 	}
arch/x86/lib/insn-eval.c +52 -14

82 lines not on this page · raw message

block/blk-zoned.c +36 -2
index 7a68b6e4300c..df0ecf6790d3 100644
@@ -318,6 +318,22 @@ int blkdev_report_zones_ioctl(struct block_device *bdev, fmode_t mode,
 	return 0;
 }
 
+static int blkdev_truncate_zone_range(struct block_device *bdev, fmode_t mode,
+				      const struct blk_zone_range *zrange)
+{
+	loff_t start, end;
+
+	if (zrange->sector + zrange->nr_sectors <= zrange->sector ||
+	    zrange->sector + zrange->nr_sectors > get_capacity(bdev->bd_disk))
+		/* Out of range */
+		return -EINVAL;
+
+	start = zrange->sector << SECTOR_SHIFT;
+	end = ((zrange->sector + zrange->nr_sectors) << SECTOR_SHIFT) - 1;
+
+	return truncate_bdev_range(bdev, mode, start, end);
+}
+
 /*
  * BLKRESETZONE, BLKOPENZONE, BLKCLOSEZONE and BLKFINISHZONE ioctl processing.
  * Called from blkdev_ioctl.
@@ -329,6 +345,7 @@ int blkdev_zone_mgmt_ioctl(struct block_device *bdev, fmode_t mode,
 	struct request_queue *q;
 	struct blk_zone_range zrange;
 	enum req_opf op;
+	int ret;
 
 	if (!argp)
 		return -EINVAL;
@@ -352,6 +369,11 @@ int blkdev_zone_mgmt_ioctl(struct block_device *bdev, fmode_t mode,
 	switch (cmd) {
 	case BLKRESETZONE:
 		op = REQ_OP_ZONE_RESET;
+
+		/* Invalidate the page cache, including dirty pages. */
+		ret = blkdev_truncate_zone_range(bdev, mode, &zrange);
+		if (ret)
+			return ret;
 		break;
 	case BLKOPENZONE:
 		op = REQ_OP_ZONE_OPEN;
@@ -366,8 +388,20 @@ int blkdev_zone_mgmt_ioctl(struct block_device *bdev, fmode_t mode,
 		return -ENOTTY;
 	}
 
-	return blkdev_zone_mgmt(bdev, op, zrange.sector, zrange.nr_sectors,
-				GFP_KERNEL);
+	ret = blkdev_zone_mgmt(bdev, op, zrange.sector, zrange.nr_sectors,
+			       GFP_KERNEL);
+
+	/*
+	 * Invalidate the page cache again for zone reset: writes can only be
+	 * direct for zoned devices so concurrent writes would not add any page
+	 * to the page cache after/during reset. The page cache may be filled
+	 * again due to concurrent reads though and dropping the pages for
+	 * these is fine.
+	 */
+	if (!ret && cmd == BLKRESETZONE)
+		ret = blkdev_truncate_zone_range(bdev, mode, &zrange);
+
+	return ret;
 }
 
 static inline unsigned long *blk_alloc_zone_bitmap(int node,
crypto/Kconfig +1 -1
index a367fcfeb5d4..3913e409ba88 100644
@@ -772,7 +772,7 @@ config CRYPTO_POLY1305_X86_64
 
 config CRYPTO_POLY1305_MIPS
 	tristate "Poly1305 authenticator algorithm (MIPS optimized)"
-	depends on CPU_MIPS32 || (CPU_MIPS64 && 64BIT)
+	depends on MIPS
 	select CRYPTO_ARCH_HAVE_LIB_POLY1305
 
 config CRYPTO_MD4
drivers/base/memory.c +9 -16
index eef4ffb6122c..de058d15b33e 100644
@@ -290,20 +290,20 @@ static ssize_t state_store(struct device *dev, struct device_attribute *attr,
 }
 
 /*
- * phys_device is a bad name for this.  What I really want
- * is a way to differentiate between memory ranges that
- * are part of physical devices that constitute
- * a complete removable unit or fru.
- * i.e. do these ranges belong to the same physical device,
- * s.t. if I offline all of these sections I can then
- * remove the physical device?
+ * Legacy interface that we cannot remove: s390x exposes the storage increment
+ * covered by a memory block, allowing for identifying which memory blocks
+ * comprise a storage increment. Since a memory block spans complete
+ * storage increments nowadays, this interface is basically unused. Other
+ * archs never exposed != 0.
  */
 static ssize_t phys_device_show(struct device *dev,
 				struct device_attribute *attr, char *buf)
 {
 	struct memory_block *mem = to_memory_block(dev);
+	unsigned long start_pfn = section_nr_to_pfn(mem->start_section_nr);
 
-	return sysfs_emit(buf, "%d\n", mem->phys_device);
+	return sysfs_emit(buf, "%d\n",
+			  arch_get_memory_phys_device(start_pfn));
 }
 
 #ifdef CONFIG_MEMORY_HOTREMOVE
@@ -488,11 +488,7 @@ static DEVICE_ATTR_WO(soft_offline_page);
 static DEVICE_ATTR_WO(hard_offline_page);
 #endif
 
-/*
- * Note that phys_device is optional.  It is here to allow for
- * differentiation between which *physical* devices each
- * section belongs to...
- */
+/* See phys_device_show(). */
 int __weak arch_get_memory_phys_device(unsigned long start_pfn)
 {
 	return 0;
@@ -574,7 +570,6 @@ int register_memory(struct memory_block *memory)
 static int init_memory_block(unsigned long block_id, unsigned long state)
 {
 	struct memory_block *mem;
-	unsigned long start_pfn;
 	int ret = 0;
 
 	mem = find_memory_block_by_id(block_id);
@@ -588,8 +583,6 @@ static int init_memory_block(unsigned long block_id, unsigned long state)
 
 	mem->start_section_nr = block_id * sections_per_block;
 	mem->state = state;
-	start_pfn = section_nr_to_pfn(mem->start_section_nr);
-	mem->phys_device = arch_get_memory_phys_device(start_pfn);
 	mem->nid = NUMA_NO_NODE;
 
 	ret = register_memory(mem);
drivers/base/swnode.c +3 -0
index 4fcc1a6fb724..fbfb01ff1856 100644
@@ -786,6 +786,9 @@ int software_node_register(const struct software_node *node)
 	if (software_node_to_swnode(node))
 		return -EEXIST;
 
+	if (node->parent && !parent)
+		return -EINVAL;
+
 	return PTR_ERR_OR_ZERO(swnode_register(node, parent, 0));
 }
 EXPORT_SYMBOL_GPL(software_node_register);
drivers/base/test/Makefile +1 -0
index 3ca56367c84b..2f15fae8625f 100644
@@ -2,3 +2,4 @@
 obj-$(CONFIG_TEST_ASYNC_DRIVER_PROBE)	+= test_async_driver_probe.o
 
 obj-$(CONFIG_KUNIT_DRIVER_PE_TEST) += property-entry-test.o
+CFLAGS_REMOVE_property-entry-test.o += -fplugin-arg-structleak_plugin-byref -fplugin-arg-structleak_plugin-byref-all
drivers/block/rsxx/core.c +1 -0
index 5ac1881396af..227e1be4c6f9 100644
@@ -871,6 +871,7 @@ static int rsxx_pci_probe(struct pci_dev *dev,
 	card->event_wq = create_singlethread_workqueue(DRIVER_NAME"_event");
 	if (!card->event_wq) {
 		dev_err(CARD_TO_DEV(card), "Failed card event setup.\n");
+		st = -ENOMEM;
 		goto failed_event_handler;
 	}
 
drivers/block/zram/zram_drv.c +11 -6
index 3279969fc99c..37d11103a706 100644
@@ -628,7 +628,7 @@ static ssize_t writeback_store(struct device *dev,
 	struct bio_vec bio_vec;
 	struct page *page;
 	ssize_t ret = len;
-	int mode;
+	int mode, err;
 	unsigned long blk_idx = 0;
 
 	if (sysfs_streq(buf, "idle"))
@@ -639,8 +639,8 @@ static ssize_t writeback_store(struct device *dev,
 		if (strncmp(buf, PAGE_WB_SIG, sizeof(PAGE_WB_SIG) - 1))
 			return -EINVAL;
 
-		ret = kstrtol(buf + sizeof(PAGE_WB_SIG) - 1, 10, &index);
-		if (ret || index >= nr_pages)
+		if (kstrtol(buf + sizeof(PAGE_WB_SIG) - 1, 10, &index) ||
+				index >= nr_pages)
 			return -EINVAL;
 
 		nr_pages = 1;
@@ -664,7 +664,7 @@ static ssize_t writeback_store(struct device *dev,
 		goto release_init_lock;
 	}
 
-	while (nr_pages--) {
+	for (; nr_pages != 0; index++, nr_pages--) {
 		struct bio_vec bvec;
 
 		bvec.bv_page = page;
@@ -729,12 +729,17 @@ static ssize_t writeback_store(struct device *dev,
 		 * XXX: A single page IO would be inefficient for write
 		 * but it would be not bad as starter.
 		 */
-		ret = submit_bio_wait(&bio);
-		if (ret) {
+		err = submit_bio_wait(&bio);
+		if (err) {
 			zram_slot_lock(zram, index);
 			zram_clear_flag(zram, index, ZRAM_UNDER_WB);
 			zram_clear_flag(zram, index, ZRAM_IDLE);
 			zram_slot_unlock(zram, index);
+			/*
+			 * Return last IO error unless every IO were
+			 * not suceeded.
+			 */
+			ret = err;
 			continue;
 		}
 
drivers/clk/qcom/gdsc.c +8 -2
index af26e0695b86..51ed640e527b 100644
@@ -183,7 +183,10 @@ static inline int gdsc_assert_reset(struct gdsc *sc)
 static inline void gdsc_force_mem_on(struct gdsc *sc)
 {
 	int i;
-	u32 mask = RETAIN_MEM | RETAIN_PERIPH;
+	u32 mask = RETAIN_MEM;
+
+	if (!(sc->flags & NO_RET_PERIPH))
+		mask |= RETAIN_PERIPH;
 
 	for (i = 0; i < sc->cxc_count; i++)
 		regmap_update_bits(sc->regmap, sc->cxcs[i], mask, mask);
@@ -192,7 +195,10 @@ static inline void gdsc_force_mem_on(struct gdsc *sc)
 static inline void gdsc_clear_mem_on(struct gdsc *sc)
 {
 	int i;
-	u32 mask = RETAIN_MEM | RETAIN_PERIPH;
+	u32 mask = RETAIN_MEM;
+
+	if (!(sc->flags & NO_RET_PERIPH))
+		mask |= RETAIN_PERIPH;
 
 	for (i = 0; i < sc->cxc_count; i++)
 		regmap_update_bits(sc->regmap, sc->cxcs[i], mask, 0);
drivers/clk/qcom/gdsc.h +2 -1
index bd537438c793..5bb396b344d1 100644
@@ -42,7 +42,7 @@ struct gdsc {
 #define PWRSTS_ON		BIT(2)
 #define PWRSTS_OFF_ON		(PWRSTS_OFF | PWRSTS_ON)
 #define PWRSTS_RET_ON		(PWRSTS_RET | PWRSTS_ON)
-	const u8			flags;
+	const u16			flags;
 #define VOTABLE		BIT(0)
 #define CLAMP_IO	BIT(1)
 #define HW_CTRL		BIT(2)
@@ -51,6 +51,7 @@ struct gdsc {
 #define POLL_CFG_GDSCR	BIT(5)
 #define ALWAYS_ON	BIT(6)
 #define RETAIN_FF_ENABLE	BIT(7)
+#define NO_RET_PERIPH	BIT(8)
 	struct reset_controller_dev	*rcdev;
 	unsigned int			*resets;
 	unsigned int			reset_count;
drivers/clk/qcom/gpucc-msm8998.c +6 -2
index 9b3923af02a1..1a518c4915b4 100644
@@ -253,12 +253,16 @@ static struct gdsc gpu_cx_gdsc = {
 static struct gdsc gpu_gx_gdsc = {
 	.gdscr = 0x1094,
 	.clamp_io_ctrl = 0x130,
+	.resets = (unsigned int []){ GPU_GX_BCR },
+	.reset_count = 1,
+	.cxcs = (unsigned int []){ 0x1098 },
+	.cxc_count = 1,
 	.pd = {
 		.name = "gpu_gx",
 	},
 	.parent = &gpu_cx_gdsc.pd,
-	.pwrsts = PWRSTS_OFF_ON,
-	.flags = CLAMP_IO | AON_RESET,
+	.pwrsts = PWRSTS_OFF_ON | PWRSTS_RET,
+	.flags = CLAMP_IO | SW_RESET | AON_RESET | NO_RET_PERIPH,
 };
 
 static struct clk_regmap *gpucc_msm8998_clocks[] = {
drivers/cpufreq/qcom-cpufreq-hw.c +3 -3
index 2726e77c9e5a..6de07556665b 100644
@@ -317,9 +317,9 @@ static int qcom_cpufreq_hw_cpu_init(struct cpufreq_policy *policy)
 	}
 
 	base = ioremap(res->start, resource_size(res));
-	if (IS_ERR(base)) {
+	if (!base) {
 		dev_err(dev, "failed to map resource %pR\n", res);
-		ret = PTR_ERR(base);
+		ret = -ENOMEM;
 		goto release_region;
 	}
 
@@ -368,7 +368,7 @@ static int qcom_cpufreq_hw_cpu_init(struct cpufreq_policy *policy)
 error:
 	kfree(data);
 unmap_base:
-	iounmap(data->base);
+	iounmap(base);
 release_region:
 	release_mem_region(res->start, resource_size(res));
 	return ret;
drivers/firmware/efi/libstub/efi-stub.c +16 -0
index ec2f3985bef3..26e69788f27a 100644
@@ -96,6 +96,18 @@ static void install_memreserve_table(void)
 		efi_err("Failed to install memreserve config table!\n");
 }
 
+static u32 get_supported_rt_services(void)
+{
+	const efi_rt_properties_table_t *rt_prop_table;
+	u32 supported = EFI_RT_SUPPORTED_ALL;
+
+	rt_prop_table = get_efi_config_table(EFI_RT_PROPERTIES_TABLE_GUID);
+	if (rt_prop_table)
+		supported &= rt_prop_table->runtime_services_supported;
+
+	return supported;
+}
+
 /*
  * EFI entry point for the arm/arm64 EFI stubs.  This is the entrypoint
  * that is described in the PE/COFF header.  Most of the code is the same
@@ -250,6 +262,10 @@ efi_status_t __efiapi efi_pe_entry(efi_handle_t handle,
 			  (prop_tbl->memory_protection_attribute &
 			   EFI_PROPERTIES_RUNTIME_MEMORY_PROTECTION_NON_EXECUTABLE_PE_DATA);
 
+	/* force efi_novamap if SetVirtualAddressMap() is unsupported */
+	efi_novamap |= !(get_supported_rt_services() &
+			 EFI_RT_SUPPORTED_SET_VIRTUAL_ADDRESS_MAP);
+
 	/* hibernation expects the runtime regions to stay in the same place */
 	if (!IS_ENABLED(CONFIG_HIBERNATION) && !efi_nokaslr && !flat_va_mapping) {
 		/*
drivers/gpio/gpio-pca953x.c +23 -55

90 lines not on this page · raw message

drivers/gpio/gpiolib-acpi.c +14 -5
index e37a57d0a2f0..495f779b2ab9 100644
@@ -677,6 +677,7 @@ static int acpi_populate_gpio_lookup(struct acpi_resource *ares, void *data)
 	if (!lookup->desc) {
 		const struct acpi_resource_gpio *agpio = &ares->data.gpio;
 		bool gpioint = agpio->connection_type == ACPI_RESOURCE_GPIO_TYPE_INT;
+		struct gpio_desc *desc;
 		u16 pin_index;
 
 		if (lookup->info.quirks & ACPI_GPIO_QUIRK_ONLY_GPIOIO && gpioint)
@@ -689,8 +690,12 @@ static int acpi_populate_gpio_lookup(struct acpi_resource *ares, void *data)
 		if (pin_index >= agpio->pin_table_length)
 			return 1;
 
-		lookup->desc = acpi_get_gpiod(agpio->resource_source.string_ptr,
+		if (lookup->info.quirks & ACPI_GPIO_QUIRK_ABSOLUTE_NUMBER)
+			desc = gpio_to_desc(agpio->pin_table[pin_index]);
+		else
+			desc = acpi_get_gpiod(agpio->resource_source.string_ptr,
 					      agpio->pin_table[pin_index]);
+		lookup->desc = desc;
 		lookup->info.pin_config = agpio->pin_config;
 		lookup->info.debounce = agpio->debounce_timeout;
 		lookup->info.gpioint = gpioint;
@@ -940,8 +945,9 @@ struct gpio_desc *acpi_node_get_gpiod(struct fwnode_handle *fwnode,
 }
 
 /**
- * acpi_dev_gpio_irq_get() - Find GpioInt and translate it to Linux IRQ number
+ * acpi_dev_gpio_irq_get_by() - Find GpioInt and translate it to Linux IRQ number
  * @adev: pointer to a ACPI device to get IRQ from
+ * @name: optional name of GpioInt resource
  * @index: index of GpioInt resource (starting from %0)
  *
  * If the device has one or more GpioInt resources, this function can be
@@ -951,9 +957,12 @@ struct gpio_desc *acpi_node_get_gpiod(struct fwnode_handle *fwnode,
  * The function is idempotent, though each time it runs it will configure GPIO
  * pin direction according to the flags in GpioInt resource.
  *
+ * The function takes optional @name parameter. If the resource has a property
+ * name, then only those will be taken into account.
+ *
  * Return: Linux IRQ number (> %0) on success, negative errno on failure.
  */
-int acpi_dev_gpio_irq_get(struct acpi_device *adev, int index)
+int acpi_dev_gpio_irq_get_by(struct acpi_device *adev, const char *name, int index)
 {
 	int idx, i;
 	unsigned int irq_flags;
@@ -963,7 +972,7 @@ int acpi_dev_gpio_irq_get(struct acpi_device *adev, int index)
 		struct acpi_gpio_info info;
 		struct gpio_desc *desc;
 
-		desc = acpi_get_gpiod_by_index(adev, NULL, i, &info);
+		desc = acpi_get_gpiod_by_index(adev, name, i, &info);
 
 		/* Ignore -EPROBE_DEFER, it only matters if idx matches */
 		if (IS_ERR(desc) && PTR_ERR(desc) != -EPROBE_DEFER)
@@ -1008,7 +1017,7 @@ int acpi_dev_gpio_irq_get(struct acpi_device *adev, int index)
 	}
 	return -ENOENT;
 }
-EXPORT_SYMBOL_GPL(acpi_dev_gpio_irq_get);
+EXPORT_SYMBOL_GPL(acpi_dev_gpio_irq_get_by);
 
 static acpi_status
 acpi_gpio_adr_space_handler(u32 function, acpi_physical_address address,
drivers/gpio/gpiolib.c +4 -0
index 97eec8d8dbdc..e4cfa27f6893 100644
@@ -473,8 +473,12 @@ EXPORT_SYMBOL_GPL(gpiochip_line_is_valid);
 static void gpiodevice_release(struct device *dev)
 {
 	struct gpio_device *gdev = dev_get_drvdata(dev);
+	unsigned long flags;
 
+	spin_lock_irqsave(&gpio_lock, flags);
 	list_del(&gdev->list);
+	spin_unlock_irqrestore(&gpio_lock, flags);
+
 	ida_free(&gpio_ida, gdev->id);
 	kfree_const(gdev->label);
 	kfree(gdev->descs);
drivers/gpu/drm/amd/amdgpu/amdgpu.h +1 -0
index 37fb846af488..ccdf508aca47 100644
@@ -179,6 +179,7 @@ extern uint amdgpu_smu_memory_pool_size;
 extern uint amdgpu_dc_feature_mask;
 extern uint amdgpu_dc_debug_mask;
 extern uint amdgpu_dm_abm_level;
+extern int amdgpu_backlight;
 extern struct amdgpu_mgpu_info mgpu_info;
 extern int amdgpu_ras_enable;
 extern uint amdgpu_ras_mask;
drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c +1 -1
index 36a741d63ddc..2e9b16fb3fcd 100644
@@ -903,7 +903,7 @@ void amdgpu_acpi_fini(struct amdgpu_device *adev)
  */
 bool amdgpu_acpi_is_s0ix_supported(struct amdgpu_device *adev)
 {
-#if defined(CONFIG_AMD_PMC)
+#if defined(CONFIG_AMD_PMC) || defined(CONFIG_AMD_PMC_MODULE)
 	if (acpi_gbl_FADT.flags & ACPI_FADT_LOW_POWER_S0) {
 		if (adev->flags & AMD_IS_APU)
 			return true;
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +4 -0
index 0ffea970d017..1aed641a3eec 100644
@@ -777,6 +777,10 @@ uint amdgpu_dm_abm_level;
 MODULE_PARM_DESC(abmlevel, "ABM level (0 = off (default), 1-4 = backlight reduction level) ");
 module_param_named(abmlevel, amdgpu_dm_abm_level, uint, 0444);
 
+int amdgpu_backlight = -1;
+MODULE_PARM_DESC(backlight, "Backlight control (0 = pwm, 1 = aux, -1 auto (default))");
+module_param_named(backlight, amdgpu_backlight, bint, 0444);
+
 /**
  * DOC: tmz (int)
  * Trusted Memory Zone (TMZ) is a method to protect data being written
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +29 -20

74 lines not on this page · raw message

drivers/gpu/drm/amd/display/dc/core/dc_link.c +0 -1
index 278ade3a90cc..32cb5ce8bcd0 100644
@@ -2571,7 +2571,6 @@ bool dc_link_set_backlight_level(const struct dc_link *link,
 			if (pipe_ctx->plane_state == NULL)
 				frame_ramp = 0;
 		} else {
-			ASSERT(false);
 			return false;
 		}
 
drivers/gpu/drm/amd/display/dc/dcn21/dcn21_resource.c +1 -5
index 072f8c880924..94ee2cab26b7 100644
@@ -1062,8 +1062,6 @@ static void patch_bounding_box(struct dc *dc, struct _vcs_dpi_soc_bounding_box_s
 {
 	int i;
 
-	DC_FP_START();
-
 	if (dc->bb_overrides.sr_exit_time_ns) {
 		for (i = 0; i < WM_SET_COUNT; i++) {
 			  dc->clk_mgr->bw_params->wm_table.entries[i].sr_exit_time_us =
@@ -1088,8 +1086,6 @@ static void patch_bounding_box(struct dc *dc, struct _vcs_dpi_soc_bounding_box_s
 				dc->bb_overrides.dram_clock_change_latency_ns / 1000.0;
 		}
 	}
-
-	DC_FP_END();
 }
 
 void dcn21_calculate_wm(
@@ -1339,7 +1335,7 @@ static noinline bool dcn21_validate_bandwidth_fp(struct dc *dc,
 	int vlevel = 0;
 	int pipe_split_from[MAX_PIPES];
 	int pipe_cnt = 0;
-	display_e2e_pipe_params_st *pipes = kzalloc(dc->res_pool->pipe_count * sizeof(display_e2e_pipe_params_st), GFP_KERNEL);
+	display_e2e_pipe_params_st *pipes = kzalloc(dc->res_pool->pipe_count * sizeof(display_e2e_pipe_params_st), GFP_ATOMIC);
 	DC_LOGGER_INIT(dc->ctx->logger);
 
 	BW_VAL_TRACE_COUNT();
drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu7_hwmgr.c +4 -4
index 82676c086ce4..d7794370cb5a 100644
@@ -5216,10 +5216,10 @@ static int smu7_set_watermarks_for_clocks_ranges(struct pp_hwmgr *hwmgr,
 		for (j = 0; j < dep_sclk_table->count; j++) {
 			valid_entry = false;
 			for (k = 0; k < watermarks->num_wm_sets; k++) {
-				if (dep_sclk_table->entries[i].clk / 10 >= watermarks->wm_clk_ranges[k].wm_min_eng_clk_in_khz &&
-				    dep_sclk_table->entries[i].clk / 10 < watermarks->wm_clk_ranges[k].wm_max_eng_clk_in_khz &&
-				    dep_mclk_table->entries[i].clk / 10 >= watermarks->wm_clk_ranges[k].wm_min_mem_clk_in_khz &&
-				    dep_mclk_table->entries[i].clk / 10 < watermarks->wm_clk_ranges[k].wm_max_mem_clk_in_khz) {
+				if (dep_sclk_table->entries[i].clk >= watermarks->wm_clk_ranges[k].wm_min_eng_clk_in_khz / 10 &&
+				    dep_sclk_table->entries[i].clk < watermarks->wm_clk_ranges[k].wm_max_eng_clk_in_khz / 10 &&
+				    dep_mclk_table->entries[i].clk >= watermarks->wm_clk_ranges[k].wm_min_mem_clk_in_khz / 10 &&
+				    dep_mclk_table->entries[i].clk < watermarks->wm_clk_ranges[k].wm_max_mem_clk_in_khz / 10) {
 					valid_entry = true;
 					table->DisplayWatermark[i][j] = watermarks->wm_clk_ranges[k].wm_set_id;
 					break;
drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_hwmgr.c +48 -0

66 lines not on this page · raw message

drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega12_hwmgr.c +66 -0

78 lines not on this page · raw message

drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega20_hwmgr.c +27 -21

73 lines not on this page · raw message

drivers/gpu/drm/drm_fb_helper.c +1 -1
index e82db0f4e771..080fd437fd43 100644
@@ -2043,7 +2043,7 @@ static void drm_fbdev_cleanup(struct drm_fb_helper *fb_helper)
 
 	if (shadow)
 		vfree(shadow);
-	else
+	else if (fb_helper->buffer)
 		drm_client_buffer_vunmap(fb_helper->buffer);
 
 	drm_client_framebuffer_delete(fb_helper->buffer);
drivers/gpu/drm/drm_gem_shmem_helper.c +22 -10
index 9825c378dfa6..6d625cee7a6a 100644
@@ -357,13 +357,14 @@ static void drm_gem_shmem_vunmap_locked(struct drm_gem_shmem_object *shmem,
 	if (--shmem->vmap_use_count > 0)
 		return;
 
-	if (obj->import_attach)
+	if (obj->import_attach) {
 		dma_buf_vunmap(obj->import_attach->dmabuf, map);
-	else
+	} else {
 		vunmap(shmem->vaddr);
+		drm_gem_shmem_put_pages(shmem);
+	}
 
 	shmem->vaddr = NULL;
-	drm_gem_shmem_put_pages(shmem);
 }
 
 /*
@@ -525,14 +526,28 @@ static vm_fault_t drm_gem_shmem_fault(struct vm_fault *vmf)
 	struct drm_gem_object *obj = vma->vm_private_data;
 	struct drm_gem_shmem_object *shmem = to_drm_gem_shmem_obj(obj);
 	loff_t num_pages = obj->size >> PAGE_SHIFT;
+	vm_fault_t ret;
 	struct page *page;
+	pgoff_t page_offset;
 
-	if (vmf->pgoff >= num_pages || WARN_ON_ONCE(!shmem->pages))
-		return VM_FAULT_SIGBUS;
+	/* We don't use vmf->pgoff since that has the fake offset */
+	page_offset = (vmf->address - vma->vm_start) >> PAGE_SHIFT;
 
-	page = shmem->pages[vmf->pgoff];
+	mutex_lock(&shmem->pages_lock);
 
-	return vmf_insert_page(vma, vmf->address, page);
+	if (page_offset >= num_pages ||
+	    WARN_ON_ONCE(!shmem->pages) ||
+	    shmem->madv < 0) {
+		ret = VM_FAULT_SIGBUS;
+	} else {
+		page = shmem->pages[page_offset];
+
+		ret = vmf_insert_page(vma, vmf->address, page);
+	}
+
+	mutex_unlock(&shmem->pages_lock);
+
+	return ret;
 }
 
 static void drm_gem_shmem_vm_open(struct vm_area_struct *vma)
@@ -581,9 +596,6 @@ int drm_gem_shmem_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
 	struct drm_gem_shmem_object *shmem;
 	int ret;
 
-	/* Remove the fake offset */
-	vma->vm_pgoff -= drm_vma_node_start(&obj->vma_node);
-
 	if (obj->import_attach) {
 		/* Drop the reference drm_gem_mmap_obj() acquired.*/
 		drm_gem_object_put(obj);
drivers/gpu/drm/drm_ioc32.c +11 -0
index f86448ab1fe0..dc734d4828a1 100644
@@ -99,6 +99,8 @@ static int compat_drm_version(struct file *file, unsigned int cmd,
 	if (copy_from_user(&v32, (void __user *)arg, sizeof(v32)))
 		return -EFAULT;
 
+	memset(&v, 0, sizeof(v));
+
 	v = (struct drm_version) {
 		.name_len = v32.name_len,
 		.name = compat_ptr(v32.name),
@@ -137,6 +139,9 @@ static int compat_drm_getunique(struct file *file, unsigned int cmd,
 
 	if (copy_from_user(&uq32, (void __user *)arg, sizeof(uq32)))
 		return -EFAULT;
+
+	memset(&uq, 0, sizeof(uq));
+
 	uq = (struct drm_unique){
 		.unique_len = uq32.unique_len,
 		.unique = compat_ptr(uq32.unique),
@@ -265,6 +270,8 @@ static int compat_drm_getclient(struct file *file, unsigned int cmd,
 	if (copy_from_user(&c32, argp, sizeof(c32)))
 		return -EFAULT;
 
+	memset(&client, 0, sizeof(client));
+
 	client.idx = c32.idx;
 
 	err = drm_ioctl_kernel(file, drm_getclient, &client, 0);
@@ -852,6 +859,8 @@ static int compat_drm_wait_vblank(struct file *file, unsigned int cmd,
 	if (copy_from_user(&req32, argp, sizeof(req32)))
 		return -EFAULT;
 
+	memset(&req, 0, sizeof(req));
+
 	req.request.type = req32.request.type;
 	req.request.sequence = req32.request.sequence;
 	req.request.signal = req32.request.signal;
@@ -889,6 +898,8 @@ static int compat_drm_mode_addfb2(struct file *file, unsigned int cmd,
 	struct drm_mode_fb_cmd2 req64;
 	int err;
 
+	memset(&req64, 0, sizeof(req64));
+
 	if (copy_from_user(&req64, argp,
 			   offsetof(drm_mode_fb_cmd232_t, modifier)))
 		return -EFAULT;
drivers/gpu/drm/i915/gt/intel_engine_cs.c +6 -1
index 0b31670343f5..346aa2057bad 100644
@@ -709,9 +709,12 @@ static int engine_setup_common(struct intel_engine_cs *engine)
 		goto err_status;
 	}
 
+	err = intel_engine_init_cmd_parser(engine);
+	if (err)
+		goto err_cmd_parser;
+
 	intel_engine_init_active(engine, ENGINE_PHYSICAL);
 	intel_engine_init_execlists(engine);
-	intel_engine_init_cmd_parser(engine);
 	intel_engine_init__pm(engine);
 	intel_engine_init_retire(engine);
 
@@ -725,6 +728,8 @@ static int engine_setup_common(struct intel_engine_cs *engine)
 
 	return 0;
 
+err_cmd_parser:
+	intel_breadcrumbs_free(engine->breadcrumbs);
 err_status:
 	cleanup_status_page(engine);
 	return err;
drivers/gpu/drm/i915/i915_cmd_parser.c +13 -6
index b0899b665e85..da1d6d58fc42 100644
@@ -939,7 +939,7 @@ static void fini_hash_table(struct intel_engine_cs *engine)
  * struct intel_engine_cs based on whether the platform requires software
  * command parsing.
  */
-void intel_engine_init_cmd_parser(struct intel_engine_cs *engine)
+int intel_engine_init_cmd_parser(struct intel_engine_cs *engine)
 {
 	const struct drm_i915_cmd_table *cmd_tables;
 	int cmd_table_count;
@@ -947,7 +947,7 @@ void intel_engine_init_cmd_parser(struct intel_engine_cs *engine)
 
 	if (!IS_GEN(engine->i915, 7) && !(IS_GEN(engine->i915, 9) &&
 					  engine->class == COPY_ENGINE_CLASS))
-		return;
+		return 0;
 
 	switch (engine->class) {
 	case RENDER_CLASS:
@@ -1012,19 +1012,19 @@ void intel_engine_init_cmd_parser(struct intel_engine_cs *engine)
 		break;
 	default:
 		MISSING_CASE(engine->class);
-		return;
+		goto out;
 	}
 
 	if (!validate_cmds_sorted(engine, cmd_tables, cmd_table_count)) {
 		drm_err(&engine->i915->drm,
 			"%s: command descriptions are not sorted\n",
 			engine->name);
-		return;
+		goto out;
 	}
 	if (!validate_regs_sorted(engine)) {
 		drm_err(&engine->i915->drm,
 			"%s: registers are not sorted\n", engine->name);
-		return;
+		goto out;
 	}
 
 	ret = init_hash_table(engine, cmd_tables, cmd_table_count);
@@ -1032,10 +1032,17 @@ void intel_engine_init_cmd_parser(struct intel_engine_cs *engine)
 		drm_err(&engine->i915->drm,
 			"%s: initialised failed!\n", engine->name);
 		fini_hash_table(engine);
-		return;
+		goto out;
 	}
 
 	engine->flags |= I915_ENGINE_USING_CMD_PARSER;
+
+out:
+	if (intel_engine_requires_cmd_parser(engine) &&
+	    !intel_engine_using_cmd_parser(engine))
+		return -EINVAL;
+
+	return 0;
 }
 
 /**
drivers/gpu/drm/i915/i915_drv.h +1 -1
index c6964f82a1bb..bd5f76a28d68 100644
@@ -1947,7 +1947,7 @@ const char *i915_cache_level_str(struct drm_i915_private *i915, int type);
 
 /* i915_cmd_parser.c */
 int i915_cmd_parser_get_version(struct drm_i915_private *dev_priv);
-void intel_engine_init_cmd_parser(struct intel_engine_cs *engine);
+int intel_engine_init_cmd_parser(struct intel_engine_cs *engine);
 void intel_engine_cleanup_cmd_parser(struct intel_engine_cs *engine);
 int intel_engine_cmd_parser(struct intel_engine_cs *engine,
 			    struct i915_vma *batch,
drivers/gpu/drm/meson/meson_drv.c +11 -0
index 42c5d3246cfc..453d8b4c5763 100644
@@ -482,6 +482,16 @@ static int meson_probe_remote(struct platform_device *pdev,
 	return count;
 }
 
+static void meson_drv_shutdown(struct platform_device *pdev)
+{
+	struct meson_drm *priv = dev_get_drvdata(&pdev->dev);
+	struct drm_device *drm = priv->drm;
+
+	DRM_DEBUG_DRIVER("\n");
+	drm_kms_helper_poll_fini(drm);
+	drm_atomic_helper_shutdown(drm);
+}
+
 static int meson_drv_probe(struct platform_device *pdev)
 {
 	struct component_match *match = NULL;
@@ -553,6 +563,7 @@ static const struct dev_pm_ops meson_drv_pm_ops = {
 
 static struct platform_driver meson_drm_platform_driver = {
 	.probe      = meson_drv_probe,
+	.shutdown   = meson_drv_shutdown,
 	.driver     = {
 		.name	= "meson-drm",
 		.of_match_table = dt_match,
drivers/gpu/drm/nouveau/nouveau_bo.c +4 -2
index 7ea367a5444d..f1c9a22083be 100644
@@ -556,7 +556,8 @@ nouveau_bo_sync_for_device(struct nouveau_bo *nvbo)
 	if (nvbo->force_coherent)
 		return;
 
-	for (i = 0; i < ttm_dma->num_pages; ++i) {
+	i = 0;
+	while (i < ttm_dma->num_pages) {
 		struct page *p = ttm_dma->pages[i];
 		size_t num_pages = 1;
 
@@ -587,7 +588,8 @@ nouveau_bo_sync_for_cpu(struct nouveau_bo *nvbo)
 	if (nvbo->force_coherent)
 		return;
 
-	for (i = 0; i < ttm_dma->num_pages; ++i) {
+	i = 0;
+	while (i < ttm_dma->num_pages) {
 		struct page *p = ttm_dma->pages[i];
 		size_t num_pages = 1;
 
drivers/gpu/drm/qxl/qxl_display.c +1 -0
index 012bce0cdb65..10738e04c09b 100644
@@ -328,6 +328,7 @@ static void qxl_crtc_update_monitors_config(struct drm_crtc *crtc,
 
 	head.id = i;
 	head.flags = 0;
+	head.surface_id = 0;
 	oldcount = qdev->monitors_config->count;
 	if (crtc->state->active) {
 		struct drm_display_mode *mode = &crtc->mode;
drivers/gpu/drm/radeon/radeon.h +2 -0
index 5f3adba43e47..aa3b589f30a1 100644
@@ -575,6 +575,8 @@ struct radeon_gem {
 	struct list_head	objects;
 };
 
+extern const struct drm_gem_object_funcs radeon_gem_object_funcs;
+
 int radeon_gem_init(struct radeon_device *rdev);
 void radeon_gem_fini(struct radeon_device *rdev);
 int radeon_gem_object_create(struct radeon_device *rdev, unsigned long size,
drivers/gpu/drm/radeon/radeon_gem.c +2 -2
index b6b21d2e7262..f17f621077de 100644
@@ -43,7 +43,7 @@ struct sg_table *radeon_gem_prime_get_sg_table(struct drm_gem_object *obj);
 int radeon_gem_prime_pin(struct drm_gem_object *obj);
 void radeon_gem_prime_unpin(struct drm_gem_object *obj);
 
-static const struct drm_gem_object_funcs radeon_gem_object_funcs;
+const struct drm_gem_object_funcs radeon_gem_object_funcs;
 
 static void radeon_gem_object_free(struct drm_gem_object *gobj)
 {
@@ -227,7 +227,7 @@ static int radeon_gem_handle_lockup(struct radeon_device *rdev, int r)
 	return r;
 }
 
-static const struct drm_gem_object_funcs radeon_gem_object_funcs = {
+const struct drm_gem_object_funcs radeon_gem_object_funcs = {
 	.free = radeon_gem_object_free,
 	.open = radeon_gem_object_open,
 	.close = radeon_gem_object_close,
drivers/gpu/drm/radeon/radeon_prime.c +2 -0
index dd482edc819c..d0ff3ce68a4f 100644
@@ -56,6 +56,8 @@ struct drm_gem_object *radeon_gem_prime_import_sg_table(struct drm_device *dev,
 	if (ret)
 		return ERR_PTR(ret);
 
+	bo->tbo.base.funcs = &radeon_gem_object_funcs;
+
 	mutex_lock(&rdev->gem.mutex);
 	list_add_tail(&bo->list, &rdev->gem.objects);
 	mutex_unlock(&rdev->gem.mutex);
drivers/gpu/drm/tiny/gm12u320.c +36 -8

108 lines not on this page · raw message

drivers/gpu/drm/ttm/ttm_pool.c +2 -2
index 6e27cb1bf48b..4eb6efb8b8c0 100644
@@ -268,13 +268,13 @@ static void ttm_pool_type_init(struct ttm_pool_type *pt, struct ttm_pool *pool,
 /* Remove a pool_type from the global shrinker list and free all pages */
 static void ttm_pool_type_fini(struct ttm_pool_type *pt)
 {
-	struct page *p, *tmp;
+	struct page *p;
 
 	mutex_lock(&shrinker_lock);
 	list_del(&pt->shrinker_list);
 	mutex_unlock(&shrinker_lock);
 
-	list_for_each_entry_safe(p, tmp, &pt->pages, lru)
+	while ((p = ttm_pool_type_take(pt)))
 		ttm_pool_free_page(pt->pool, pt->caching, pt->order, p);
 }
 
drivers/gpu/drm/udl/udl_drv.c +17 -0
index 9269092697d8..5703277c6f52 100644
@@ -32,6 +32,22 @@ static int udl_usb_resume(struct usb_interface *interface)
 	return drm_mode_config_helper_resume(dev);
 }
 
+/*
+ * FIXME: Dma-buf sharing requires DMA support by the importing device.
+ *        This function is a workaround to make USB devices work as well.
+ *        See todo.rst for how to fix the issue in the dma-buf framework.
+ */
+static struct drm_gem_object *udl_driver_gem_prime_import(struct drm_device *dev,
+							  struct dma_buf *dma_buf)
+{
+	struct udl_device *udl = to_udl(dev);
+
+	if (!udl->dmadev)
+		return ERR_PTR(-ENODEV);
+
+	return drm_gem_prime_import_dev(dev, dma_buf, udl->dmadev);
+}
+
 DEFINE_DRM_GEM_FOPS(udl_driver_fops);
 
 static const struct drm_driver driver = {
@@ -40,6 +56,7 @@ static const struct drm_driver driver = {
 	/* GEM hooks */
 	.fops = &udl_driver_fops,
 	DRM_GEM_SHMEM_DRIVER_OPS,
+	.gem_prime_import = udl_driver_gem_prime_import,
 
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
drivers/gpu/drm/udl/udl_drv.h +1 -0
index 875e73551ae9..cc16a13316e4 100644
@@ -50,6 +50,7 @@ struct urb_list {
 struct udl_device {
 	struct drm_device drm;
 	struct device *dev;
+	struct device *dmadev;
 
 	struct drm_simple_display_pipe display_pipe;
 
drivers/gpu/drm/udl/udl_main.c +10 -0
index 0e2a376cb075..853f147036f6 100644
@@ -315,6 +315,10 @@ int udl_init(struct udl_device *udl)
 
 	DRM_DEBUG("\n");
 
+	udl->dmadev = usb_intf_get_dma_device(to_usb_interface(dev->dev));
+	if (!udl->dmadev)
+		drm_warn(dev, "buffer sharing not supported"); /* not an error */
+
 	mutex_init(&udl->gem_lock);
 
 	if (!udl_parse_vendor_descriptor(udl)) {
@@ -343,12 +347,18 @@ int udl_init(struct udl_device *udl)
 err:
 	if (udl->urbs.count)
 		udl_free_urb_list(dev);
+	put_device(udl->dmadev);
 	DRM_ERROR("%d\n", ret);
 	return ret;
 }
 
 int udl_drop_usb(struct drm_device *dev)
 {
+	struct udl_device *udl = to_udl(dev);
+
 	udl_free_urb_list(dev);
+	put_device(udl->dmadev);
+	udl->dmadev = NULL;
+
 	return 0;
 }
drivers/hid/hid-logitech-dj.c +6 -1
index fcdc922bc973..271bd8d24339 100644
@@ -995,7 +995,12 @@ static void logi_hidpp_recv_queue_notif(struct hid_device *hdev,
 		workitem.reports_supported |= STD_KEYBOARD;
 		break;
 	case 0x0d:
-		device_type = "eQUAD Lightspeed 1_1";
+		device_type = "eQUAD Lightspeed 1.1";
+		logi_hidpp_dev_conn_notif_equad(hdev, hidpp_report, &workitem);
+		workitem.reports_supported |= STD_KEYBOARD;
+		break;
+	case 0x0f:
+		device_type = "eQUAD Lightspeed 1.2";
 		logi_hidpp_dev_conn_notif_equad(hdev, hidpp_report, &workitem);
 		workitem.reports_supported |= STD_KEYBOARD;
 		break;
drivers/i2c/busses/i2c-rcar.c +5 -8
index 217def2d7cb4..ad6630e3cc77 100644
@@ -91,7 +91,6 @@
 
 #define RCAR_BUS_PHASE_START	(MDBS | MIE | ESG)
 #define RCAR_BUS_PHASE_DATA	(MDBS | MIE)
-#define RCAR_BUS_MASK_DATA	(~(ESG | FSB) & 0xFF)
 #define RCAR_BUS_PHASE_STOP	(MDBS | MIE | FSB)
 
 #define RCAR_IRQ_SEND	(MNR | MAL | MST | MAT | MDE)
@@ -120,6 +119,7 @@ enum rcar_i2c_type {
 };
 
 struct rcar_i2c_priv {
+	u32 flags;
 	void __iomem *io;
 	struct i2c_adapter adap;
 	struct i2c_msg *msg;
@@ -130,7 +130,6 @@ struct rcar_i2c_priv {
 
 	int pos;
 	u32 icccr;
-	u32 flags;
 	u8 recovery_icmcr;	/* protected by adapter lock */
 	enum rcar_i2c_type devtype;
 	struct i2c_client *slave;
@@ -621,7 +620,7 @@ static bool rcar_i2c_slave_irq(struct rcar_i2c_priv *priv)
 /*
  * This driver has a lock-free design because there are IP cores (at least
  * R-Car Gen2) which have an inherent race condition in their hardware design.
- * There, we need to clear RCAR_BUS_MASK_DATA bits as soon as possible after
+ * There, we need to switch to RCAR_BUS_PHASE_DATA as soon as possible after
  * the interrupt was generated, otherwise an unwanted repeated message gets
  * generated. It turned out that taking a spinlock at the beginning of the ISR
  * was already causing repeated messages. Thus, this driver was converted to
@@ -630,13 +629,11 @@ static bool rcar_i2c_slave_irq(struct rcar_i2c_priv *priv)
 static irqreturn_t rcar_i2c_irq(int irq, void *ptr)
 {
 	struct rcar_i2c_priv *priv = ptr;
-	u32 msr, val;
+	u32 msr;
 
 	/* Clear START or STOP immediately, except for REPSTART after read */
-	if (likely(!(priv->flags & ID_P_REP_AFTER_RD))) {
-		val = rcar_i2c_read(priv, ICMCR);
-		rcar_i2c_write(priv, ICMCR, val & RCAR_BUS_MASK_DATA);
-	}
+	if (likely(!(priv->flags & ID_P_REP_AFTER_RD)))
+		rcar_i2c_write(priv, ICMCR, RCAR_BUS_PHASE_DATA);
 
 	msr = rcar_i2c_read(priv, ICMSR);
 
drivers/input/keyboard/applespi.c +15 -6
index d22223154177..27e87c45edf2 100644
@@ -48,6 +48,7 @@
 #include <linux/efi.h>
 #include <linux/input.h>
 #include <linux/input/mt.h>
+#include <linux/ktime.h>
 #include <linux/leds.h>
 #include <linux/module.h>
 #include <linux/spinlock.h>
@@ -409,7 +410,7 @@ struct applespi_data {
 	unsigned int			cmd_msg_cntr;
 	/* lock to protect the above parameters and flags below */
 	spinlock_t			cmd_msg_lock;
-	bool				cmd_msg_queued;
+	ktime_t				cmd_msg_queued;
 	enum applespi_evt_type		cmd_evt_type;
 
 	struct led_classdev		backlight_info;
@@ -729,7 +730,7 @@ static void applespi_msg_complete(struct applespi_data *applespi,
 		wake_up_all(&applespi->drain_complete);
 
 	if (is_write_msg) {
-		applespi->cmd_msg_queued = false;
+		applespi->cmd_msg_queued = 0;
 		applespi_send_cmd_msg(applespi);
 	}
 
@@ -771,8 +772,16 @@ static int applespi_send_cmd_msg(struct applespi_data *applespi)
 		return 0;
 
 	/* check whether send is in progress */
-	if (applespi->cmd_msg_queued)
-		return 0;
+	if (applespi->cmd_msg_queued) {
+		if (ktime_ms_delta(ktime_get(), applespi->cmd_msg_queued) < 1000)
+			return 0;
+
+		dev_warn(&applespi->spi->dev, "Command %d timed out\n",
+			 applespi->cmd_evt_type);
+
+		applespi->cmd_msg_queued = 0;
+		applespi->write_active = false;
+	}
 
 	/* set up packet */
 	memset(packet, 0, APPLESPI_PACKET_SIZE);
@@ -869,7 +878,7 @@ static int applespi_send_cmd_msg(struct applespi_data *applespi)
 		return sts;
 	}
 
-	applespi->cmd_msg_queued = true;
+	applespi->cmd_msg_queued = ktime_get_coarse();
 	applespi->write_active = true;
 
 	return 0;
@@ -1921,7 +1930,7 @@ static int __maybe_unused applespi_resume(struct device *dev)
 	applespi->drain = false;
 	applespi->have_cl_led_on = false;
 	applespi->have_bl_level = 0;
-	applespi->cmd_msg_queued = false;
+	applespi->cmd_msg_queued = 0;
 	applespi->read_active = false;
 	applespi->write_active = false;
 
drivers/iommu/amd/init.c +34 -11

76 lines not on this page · raw message

drivers/iommu/intel/svm.c +11 -2
index 18a9f05df407..b3bcd6dec93e 100644
@@ -1079,8 +1079,17 @@ static irqreturn_t prq_event_thread(int irq, void *d)
 	 * Clear the page request overflow bit and wake up all threads that
 	 * are waiting for the completion of this handling.
 	 */
-	if (readl(iommu->reg + DMAR_PRS_REG) & DMA_PRS_PRO)
-		writel(DMA_PRS_PRO, iommu->reg + DMAR_PRS_REG);
+	if (readl(iommu->reg + DMAR_PRS_REG) & DMA_PRS_PRO) {
+		pr_info_ratelimited("IOMMU: %s: PRQ overflow detected\n",
+				    iommu->name);
+		head = dmar_readq(iommu->reg + DMAR_PQH_REG) & PRQ_RING_MASK;
+		tail = dmar_readq(iommu->reg + DMAR_PQT_REG) & PRQ_RING_MASK;
+		if (head == tail) {
+			writel(DMA_PRS_PRO, iommu->reg + DMAR_PRS_REG);
+			pr_info_ratelimited("IOMMU: %s: PRQ overflow cleared",
+					    iommu->name);
+		}
+	}
 
 	if (!completion_done(&iommu->prq_complete))
 		complete(&iommu->prq_complete);
drivers/media/platform/rockchip/rkisp1/rkisp1-params.c +0 -1
index aa5f45749543..a60c302ef267 100644
@@ -1288,7 +1288,6 @@ static void rkisp1_params_config_parameter(struct rkisp1_params *params)
 	memset(hst.hist_weight, 0x01, sizeof(hst.hist_weight));
 	rkisp1_hst_config(params, &hst);
 	rkisp1_param_set_bits(params, RKISP1_CIF_ISP_HIST_PROP,
-			      ~RKISP1_CIF_ISP_HIST_PROP_MODE_MASK |
 			      rkisp1_hst_params_default_config.mode);
 
 	/* set the  range */
drivers/media/platform/vsp1/vsp1_drm.c +3 -3
index 86d5e3f4b1ff..06f74d410973 100644
@@ -245,7 +245,7 @@ static int vsp1_du_pipeline_setup_brx(struct vsp1_device *vsp1,
 		brx = &vsp1->bru->entity;
 	else if (pipe->brx && !drm_pipe->force_brx_release)
 		brx = pipe->brx;
-	else if (!vsp1->bru->entity.pipe)
+	else if (vsp1_feature(vsp1, VSP1_HAS_BRU) && !vsp1->bru->entity.pipe)
 		brx = &vsp1->bru->entity;
 	else
 		brx = &vsp1->brs->entity;
@@ -462,9 +462,9 @@ static int vsp1_du_pipeline_setup_inputs(struct vsp1_device *vsp1,
 	 * make sure it is present in the pipeline's list of entities if it
 	 * wasn't already.
 	 */
-	if (!use_uif) {
+	if (drm_pipe->uif && !use_uif) {
 		drm_pipe->uif->pipe = NULL;
-	} else if (!drm_pipe->uif->pipe) {
+	} else if (drm_pipe->uif && !drm_pipe->uif->pipe) {
 		drm_pipe->uif->pipe = pipe;
 		list_add_tail(&drm_pipe->uif->list_pipe, &pipe->entities);
 	}
drivers/media/rc/Makefile +1 -0
index 5bb2932ab119..ff6a8fc4c38e 100644
@@ -5,6 +5,7 @@ obj-y += keymaps/
 obj-$(CONFIG_RC_CORE) += rc-core.o
 rc-core-y := rc-main.o rc-ir-raw.o
 rc-core-$(CONFIG_LIRC) += lirc_dev.o
+rc-core-$(CONFIG_MEDIA_CEC_RC) += keymaps/rc-cec.o
 rc-core-$(CONFIG_BPF_LIRC_MODE2) += bpf-lirc.o
 obj-$(CONFIG_IR_NEC_DECODER) += ir-nec-decoder.o
 obj-$(CONFIG_IR_RC5_DECODER) += ir-rc5-decoder.o
drivers/media/rc/keymaps/Makefile +0 -1
index b252a1d2ebd6..cc6662e1903f 100644
@@ -21,7 +21,6 @@ obj-$(CONFIG_RC_MAP) += rc-adstech-dvb-t-pci.o \
 			rc-behold.o \
 			rc-behold-columbus.o \
 			rc-budget-ci-old.o \
-			rc-cec.o \
 			rc-cinergy-1400.o \
 			rc-cinergy.o \
 			rc-d680-dmb.o \
drivers/media/rc/keymaps/rc-cec.c +11 -17
index 3e3bd11092b4..068e22aeac8c 100644
@@ -1,5 +1,15 @@
 // SPDX-License-Identifier: GPL-2.0-or-later
 /* Keytable for the CEC remote control
+ *
+ * This keymap is unusual in that it can't be built as a module,
+ * instead it is registered directly in rc-main.c if CONFIG_MEDIA_CEC_RC
+ * is set. This is because it can be called from drm_dp_cec_set_edid() via
+ * cec_register_adapter() in an asynchronous context, and it is not
+ * allowed to use request_module() to load rc-cec.ko in that case.
+ *
+ * Since this keymap is only used if CONFIG_MEDIA_CEC_RC is set, we
+ * just compile this keymap into the rc-core module and never as a
+ * separate module.
  *
  * Copyright (c) 2015 by Kamil Debski
  */
@@ -152,7 +162,7 @@ static struct rc_map_table cec[] = {
 	/* 0x77-0xff: Reserved */
 };
 
-static struct rc_map_list cec_map = {
+struct rc_map_list cec_map = {
 	.map = {
 		.scan		= cec,
 		.size		= ARRAY_SIZE(cec),
@@ -160,19 +170,3 @@ static struct rc_map_list cec_map = {
 		.name		= RC_MAP_CEC,
 	}
 };
-
-static int __init init_rc_map_cec(void)
-{
-	return rc_map_register(&cec_map);
-}
-
-static void __exit exit_rc_map_cec(void)
-{
-	rc_map_unregister(&cec_map);
-}
-
-module_init(init_rc_map_cec);
-module_exit(exit_rc_map_cec);
-
-MODULE_LICENSE("GPL");
-MODULE_AUTHOR("Kamil Debski");
drivers/media/rc/rc-main.c +6 -0
index 1fd62c1dac76..8e88dc8ea6c5 100644
@@ -2069,6 +2069,9 @@ static int __init rc_core_init(void)
 
 	led_trigger_register_simple("rc-feedback", &led_feedback);
 	rc_map_register(&empty_map);
+#ifdef CONFIG_MEDIA_CEC_RC
+	rc_map_register(&cec_map);
+#endif
 
 	return 0;
 }
@@ -2078,6 +2081,9 @@ static void __exit rc_core_exit(void)
 	lirc_dev_exit();
 	class_unregister(&rc_class);
 	led_trigger_unregister_simple(led_feedback);
+#ifdef CONFIG_MEDIA_CEC_RC
+	rc_map_unregister(&cec_map);
+#endif
 	rc_map_unregister(&empty_map);
 }
 
drivers/media/usb/usbtv/usbtv-audio.c +1 -1
index b57e94fb1977..333bd305a4f9 100644
@@ -371,7 +371,7 @@ void usbtv_audio_free(struct usbtv *usbtv)
 	cancel_work_sync(&usbtv->snd_trigger);
 
 	if (usbtv->snd && usbtv->udev) {
-		snd_card_free(usbtv->snd);
+		snd_card_free_when_closed(usbtv->snd);
 		usbtv->snd = NULL;
 	}
 }
drivers/misc/fastrpc.c +5 -0
index f12e909034ac..beda610e6b30 100644
@@ -950,6 +950,11 @@ static int fastrpc_internal_invoke(struct fastrpc_user *fl,  u32 kernel,
 	if (!fl->cctx->rpdev)
 		return -EPIPE;
 
+	if (handle == FASTRPC_INIT_HANDLE && !kernel) {
+		dev_warn_ratelimited(fl->sctx->dev, "user app trying to send a kernel RPC message (%d)\n",  handle);
+		return -EPERM;
+	}
+
 	ctx = fastrpc_context_alloc(fl, kernel, sc, args);
 	if (IS_ERR(ctx))
 		return PTR_ERR(ctx);
drivers/misc/pvpanic.c +1 -0
index 41cab297d66e..2356d621967e 100644
@@ -92,6 +92,7 @@ static const struct of_device_id pvpanic_mmio_match[] = {
 	{ .compatible = "qemu,pvpanic-mmio", },
 	{}
 };
+MODULE_DEVICE_TABLE(of, pvpanic_mmio_match);
 
 static const struct acpi_device_id pvpanic_device_ids[] = {
 	{ "QEMU0001", 0 },
drivers/mmc/core/bus.c +5 -6
index c2e70b757dd1..4383c262b3f5 100644
@@ -399,11 +399,6 @@ void mmc_remove_card(struct mmc_card *card)
 	mmc_remove_card_debugfs(card);
 #endif
 
-	if (host->cqe_enabled) {
-		host->cqe_ops->cqe_disable(host);
-		host->cqe_enabled = false;
-	}
-
 	if (mmc_card_present(card)) {
 		if (mmc_host_is_spi(card->host)) {
 			pr_info("%s: SPI card removed\n",
@@ -416,6 +411,10 @@ void mmc_remove_card(struct mmc_card *card)
 		of_node_put(card->dev.of_node);
 	}
 
+	if (host->cqe_enabled) {
+		host->cqe_ops->cqe_disable(host);
+		host->cqe_enabled = false;
+	}
+
 	put_device(&card->dev);
 }
-
drivers/mmc/core/mmc.c +11 -4
index ff3063ce2acd..9ce34e880033 100644
@@ -423,10 +423,6 @@ static int mmc_decode_ext_csd(struct mmc_card *card, u8 *ext_csd)
 
 		/* EXT_CSD value is in units of 10ms, but we store in ms */
 		card->ext_csd.part_time = 10 * ext_csd[EXT_CSD_PART_SWITCH_TIME];
-		/* Some eMMC set the value too low so set a minimum */
-		if (card->ext_csd.part_time &&
-		    card->ext_csd.part_time < MMC_MIN_PART_SWITCH_TIME)
-			card->ext_csd.part_time = MMC_MIN_PART_SWITCH_TIME;
 
 		/* Sleep / awake timeout in 100ns units */
 		if (sa_shift > 0 && sa_shift <= 0x17)
@@ -616,6 +612,17 @@ static int mmc_decode_ext_csd(struct mmc_card *card, u8 *ext_csd)
 		card->ext_csd.data_sector_size = 512;
 	}
 
+	/*
+	 * GENERIC_CMD6_TIME is to be used "unless a specific timeout is defined
+	 * when accessing a specific field", so use it here if there is no
+	 * PARTITION_SWITCH_TIME.
+	 */
+	if (!card->ext_csd.part_time)
+		card->ext_csd.part_time = card->ext_csd.generic_cmd6_time;
+	/* Some eMMC set the value too low so set a minimum */
+	if (card->ext_csd.part_time < MMC_MIN_PART_SWITCH_TIME)
+		card->ext_csd.part_time = MMC_MIN_PART_SWITCH_TIME;
+
 	/* eMMC v5 or later */
 	if (card->ext_csd.rev >= 7) {
 		memcpy(card->ext_csd.fwrev, &ext_csd[EXT_CSD_FIRMWARE_VERSION],
drivers/mmc/host/mmci.c +9 -1
index b5a41a7ce165..9bde0def114b 100644
@@ -1241,7 +1241,11 @@ mmci_start_command(struct mmci_host *host, struct mmc_command *cmd, u32 c)
 		if (!cmd->busy_timeout)
 			cmd->busy_timeout = 10 * MSEC_PER_SEC;
 
-		clks = (unsigned long long)cmd->busy_timeout * host->cclk;
+		if (cmd->busy_timeout > host->mmc->max_busy_timeout)
+			clks = (unsigned long long)host->mmc->max_busy_timeout * host->cclk;
+		else
+			clks = (unsigned long long)cmd->busy_timeout * host->cclk;
+
 		do_div(clks, MSEC_PER_SEC);
 		writel_relaxed(clks, host->base + MMCIDATATIMER);
 	}
@@ -2091,6 +2095,10 @@ static int mmci_probe(struct amba_device *dev,
 		mmc->caps |= MMC_CAP_WAIT_WHILE_BUSY;
 	}
 
+	/* Variants with mandatory busy timeout in HW needs R1B responses. */
+	if (variant->busy_timeout)
+		mmc->caps |= MMC_CAP_NEED_RSP_BUSY;
+
 	/* Prepare a CMD12 - needed to clear the DPSM on some variants. */
 	host->stop_abort.opcode = MMC_STOP_TRANSMISSION;
 	host->stop_abort.arg = 0;
drivers/mmc/host/mtk-sd.c +10 -8
index de09c6347524..898ed1b023df 100644
@@ -1127,13 +1127,13 @@ static void msdc_track_cmd_data(struct msdc_host *host,
 static void msdc_request_done(struct msdc_host *host, struct mmc_request *mrq)
 {
 	unsigned long flags;
-	bool ret;
 
-	ret = cancel_delayed_work(&host->req_timeout);
-	if (!ret) {
-		/* delay work already running */
-		return;
-	}
+	/*
+	 * No need check the return value of cancel_delayed_work, as only ONE
+	 * path will go here!
+	 */
+	cancel_delayed_work(&host->req_timeout);
+
 	spin_lock_irqsave(&host->lock, flags);
 	host->mrq = NULL;
 	spin_unlock_irqrestore(&host->lock, flags);
@@ -1155,7 +1155,7 @@ static bool msdc_cmd_done(struct msdc_host *host, int events,
 	bool done = false;
 	bool sbc_error;
 	unsigned long flags;
-	u32 *rsp = cmd->resp;
+	u32 *rsp;
 
 	if (mrq->sbc && cmd == mrq->cmd &&
 	    (events & (MSDC_INT_ACMDRDY | MSDC_INT_ACMDCRCERR
@@ -1176,6 +1176,7 @@ static bool msdc_cmd_done(struct msdc_host *host, int events,
 
 	if (done)
 		return true;
+	rsp = cmd->resp;
 
 	sdr_clr_bits(host->base + MSDC_INTEN, cmd_ints_mask);
 
@@ -1363,7 +1364,7 @@ static void msdc_data_xfer_next(struct msdc_host *host,
 static bool msdc_data_xfer_done(struct msdc_host *host, u32 events,
 				struct mmc_request *mrq, struct mmc_data *data)
 {
-	struct mmc_command *stop = data->stop;
+	struct mmc_command *stop;
 	unsigned long flags;
 	bool done;
 	unsigned int check_data = events &
@@ -1379,6 +1380,7 @@ static bool msdc_data_xfer_done(struct msdc_host *host, u32 events,
 
 	if (done)
 		return true;
+	stop = data->stop;
 
[… more lines in the raw message]

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

drivers/mmc/host/mxs-mmc.c +1 -1
index 56bbc6cd9c84..947581de7860 100644

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

drivers/mmc/host/sdhci-iproc.c +18 -0
index c9434b461aab..ddeaf8e1f72f 100644

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

drivers/net/Kconfig +1 -1
index 63339d29be90..6d9e90887b29 100644

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

drivers/net/can/flexcan.c +15 -9
index 7ab20a6b0d1d..2893297555eb 100644

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

drivers/net/can/m_can/tcan4x5x.c +3 -3
index 970f0e9d19bf..4920de09ffb7 100644

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

drivers/net/dsa/sja1105/sja1105_main.c +1 -1
index 4ca029650993..1a855816cbc9 100644

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

drivers/net/ethernet/atheros/alx/main.c +5 -2
index 9b7f1af5f574..9e02f8864593 100644

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

drivers/net/ethernet/broadcom/bnxt/bnxt.c +12 -2
index 1c96b7ba24f2..80819d8fddb4 100644

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

drivers/net/ethernet/cadence/macb_main.c +8 -7
index 814a5b10141d..07cdb38e7d11 100644

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

drivers/net/ethernet/davicom/dm9000.c +17 -4
index 3fdc70dab5c1..a95e95ce9438 100644

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

drivers/net/ethernet/freescale/enetc/enetc.c +50 -43

93 lines not on this page · raw message

drivers/net/ethernet/freescale/enetc/enetc.h +5 -0
index 8532d23b54f5..8b380fc13314 100644

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

drivers/net/ethernet/freescale/enetc/enetc_hw.h +15 -3
index c71fe8d751d5..de0d20b0f489 100644

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

drivers/net/ethernet/freescale/enetc/enetc_pf.c +81 -17

98 lines not on this page · raw message

drivers/net/ethernet/freescale/enetc/enetc_vf.c +7 -0
index 39c1a09e69a9..9b755a84c2d6 100644

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

drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_cmd.h +3 -3
index edfadb5cb1c3..a731f207b4f1 100644

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

drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c +3 -4
index 48549db23c52..67764d930435 100644

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

drivers/net/ethernet/ibm/ibmvnic.c +7 -10
index 13ae7eee7ef5..3552c4485ed5 100644

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

drivers/net/ethernet/intel/i40e/i40e_main.c +2 -0
index fcd6f623f2fd..4a2d03cada01 100644

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

drivers/net/ethernet/intel/ixgbe/ixgbe_ipsec.c +5 -0
index eca73526ac86..54d47265a7ac 100644

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

drivers/net/ethernet/intel/ixgbevf/ipsec.c +5 -0
index 5170dd9d8705..caaea2c920a6 100644

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

drivers/net/ethernet/mediatek/mtk_star_emac.c +3 -2
index a8641a407c06..96d2891f1675 100644

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

drivers/net/ethernet/mellanox/mlx4/en_ethtool.c +1 -1
index 23849f2b9c25..1434df66fcf2 100644

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

drivers/net/ethernet/mellanox/mlx4/en_netdev.c +2 -0
index 32aad4d32b88..c7504223a12a 100644

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

drivers/net/ethernet/mellanox/mlx4/mlx4_en.h +1 -0
index e8ed23190de0..f3d1a20201ef 100644

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

drivers/net/ethernet/mellanox/mlxsw/reg.h +1 -0
index 16e2df6ef2f4..c4adc7f740d3 100644

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

drivers/net/ethernet/mellanox/mlxsw/spectrum_ethtool.c +5 -0
index 540616469e28..68333ecf6151 100644

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

drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c +7 -0
index 41424ee909a0..23d9fe18adba 100644

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

drivers/net/ethernet/mellanox/mlxsw/switchx2.c +2 -1
index 40e2e79d4517..131b2a53d261 100644

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

drivers/net/ethernet/mscc/ocelot_flower.c +2 -1
index 729495a1a77e..365550335292 100644

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

drivers/net/ethernet/realtek/r8169_main.c +1 -1
index 35b015c9ab02..ea265b428c2f 100644

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

drivers/net/ethernet/renesas/sh_eth.c +7 -0
index 590b088bc4c7..f029c7c03804 100644

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

drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c +4 -1
index 103d2448e9e0..a9087dae767d 100644

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

drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.c +7 -2
index c6540b003b43..2ecd3a8a690c 100644

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

drivers/net/ethernet/stmicro/stmmac/dwmac4_dma.c +18 -1
index bb29bfcd62c3..62aa0e95beb7 100644

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

drivers/net/ethernet/stmicro/stmmac/dwmac4_lib.c +0 -4
index 0b4ee2dbb691..71e50751ef2d 100644

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

drivers/net/ethernet/stmicro/stmmac/dwxgmac2_descs.c +1 -1
index 0aaf19ab5672..ccfb0102dde4 100644

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

drivers/net/ethernet/stmicro/stmmac/hwif.h +1 -1
index b40b2e0667bb..15d7b8261189 100644

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

drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +14 -5
index 26b971cd4da5..e87961432a79 100644

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

drivers/net/netdevsim/netdev.c +1 -0
index 7178468302c8..ad6dbf011052 100644

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

drivers/net/phy/dp83822.c +5 -4
index fff371ca1086..423952cb9e1c 100644

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

drivers/net/phy/dp83tc811.c +6 -5
index 688fadffb249..7ea32fb77190 100644

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

drivers/net/phy/phy.c +4 -2
index 45f75533c47c..b79c4068ee61 100644

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

drivers/net/phy/phy_device.c +2 -4
index 71169e7d6177..1c6ae845e03f 100644

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

drivers/net/usb/qmi_wwan.c +0 -14
index 7410215e2a2e..e18ded349d84 100644

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

drivers/net/wan/lapbether.c +0 -3
index 605fe555e157..c3372498f4f1 100644

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

drivers/net/wireless/ath/ath11k/mac.c +2 -2
index 7d799fe6fbd8..54bdef33f3f8 100644

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

drivers/net/wireless/ath/ath9k/ath9k.h +2 -1
index 13b4f5f50f8a..ef6f5ea06c1f 100644

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

drivers/net/wireless/ath/ath9k/xmit.c +6 -0
index e60d4737fc6e..5691bd6eb82c 100644

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

drivers/net/wireless/mediatek/mt76/dma.c +7 -4
index e81dfaf99bcb..9bf13994c036 100644

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

drivers/nvme/host/fc.c +1 -1
index 5f36cfa8136c..7ec6869b3e5b 100644

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

drivers/opp/core.c +25 -23

48 lines not on this page · raw message

drivers/opp/opp.h +2 -0
index 4ced7ffa8158..8dca37662dd8 100644

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

drivers/pci/controller/pci-xgene-msi.c +3 -7
index 2470782cb01a..1c34c897a7e2 100644

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

drivers/pci/controller/pcie-mediatek.c +5 -2
index cf4c18f0c25a..23548b517e4b 100644

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

drivers/pci/pci.c +4 -0
index ba791165ed19..9449dfde2841 100644

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

drivers/pci/pcie/Kconfig +0 -8
index 3946555a6042..45a2ef702b45 100644

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

drivers/pci/pcie/Makefile +0 -1
index d9697892fa3e..b2980db88cc0 100644

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

drivers/pci/pcie/bw_notification.c deleted +0 -138

138 lines not on this page · raw message

drivers/pci/pcie/err.c +1 -2
index 510f31f0ef6d..4798bd6de97d 100644

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

drivers/pci/pcie/portdrv.h +0 -6
index af7cf237432a..2ff5724b8f13 100644

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

drivers/pci/pcie/portdrv_pci.c +0 -1
index 0b250bc5f405..8bd4992a4f32 100644

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

drivers/perf/arm_dmc620_pmu.c +1 -0
index 004930eb4bbb..b50b47f1a0d9 100644

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

drivers/platform/olpc/olpc-ec.c +8 -7
index f64b82824db2..2db7113383fd 100644

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

drivers/platform/x86/amd-pmc.c +11 -3
index ef8342572463..b9da58ee9b1e 100644

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

drivers/s390/block/dasd.c +3 -3
index c7eb9a10c680..3101eab0addd 100644

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

drivers/s390/cio/vfio_ccw_ops.c +3 -3
index 68106be4ba7a..767ac41686fe 100644

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

drivers/s390/crypto/vfio_ap_ops.c +1 -1
index 41fc2e4135fe..1ffdd411201c 100644

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

drivers/s390/net/qeth_core.h +2 -1
index 28f637042d44..7aed775ee874 100644

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

drivers/s390/net/qeth_core_main.c +60 -68

128 lines not on this page · raw message

drivers/scsi/libiscsi.c +3 -8
index 1851015299b3..af40de7e51e7 100644

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

drivers/scsi/pm8001/pm8001_hwi.c +10 -4
index dd15246d5b03..ea43dff40a85 100644

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

drivers/scsi/ufs/ufs-sysfs.c +2 -1
index 08e72b7eef6a..50e90416262b 100644

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

drivers/scsi/ufs/ufs.h +4 -2
index 14dfda735adf..580aa56965d0 100644

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

drivers/scsi/ufs/ufshcd.c +50 -32

82 lines not on this page · raw message

drivers/scsi/ufs/ufshcd.h +5 -1
index 1885ec9126c4..7d0b00f23761 100644

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

drivers/spi/spi-stm32.c +4 -11
index 6eeb39669a86..53c4311cc6ab 100644

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

drivers/staging/comedi/drivers/addi_apci_1032.c +3 -1
index 35b75f0c9200..81a246fbcc01 100644

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

drivers/staging/comedi/drivers/addi_apci_1500.c +9 -9
index 11efb21555e3..b04c15dcfb57 100644

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

drivers/staging/comedi/drivers/adv_pci1710.c +5 -5
index 692893c7e5c3..090607760be6 100644

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

drivers/staging/comedi/drivers/das6402.c +1 -1
index 04e224f8b779..96f4107b8054 100644

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

drivers/staging/comedi/drivers/das800.c +1 -1
index 4ea100ff6930..2881808d6606 100644

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

drivers/staging/comedi/drivers/dmm32at.c +1 -1
index 17e6018918bb..56682f01242f 100644

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

drivers/staging/comedi/drivers/me4000.c +1 -1
index 726e40dc17b6..0d3d4cafce2e 100644

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

drivers/staging/comedi/drivers/pcl711.c +1 -1
index 2dbf69e30965..bd6f42fe9e3c 100644

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

drivers/staging/comedi/drivers/pcl818.c +1 -1
index 63e3011158f2..f4b4a686c710 100644

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

drivers/staging/ks7010/ks_wlan_net.c +4 -2
index dc09cc6e1c47..09e7b4cd0138 100644

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

drivers/staging/rtl8188eu/core/rtw_ap.c +5 -0
index fa1e34a0d456..182bb944c9b3 100644

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

drivers/staging/rtl8188eu/os_dep/ioctl_linux.c +4 -2
index 6f42f13a71fa..f92fcb623a2c 100644

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

drivers/staging/rtl8192e/rtl8192e/rtl_wx.c +4 -3
index 16bcee13f64b..407effde5e71 100644

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

drivers/staging/rtl8192u/r8192U_wx.c +4 -2
index d853586705fc..77bf88696a84 100644

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

drivers/staging/rtl8712/rtl871x_cmd.c +4 -2
index 18116469bd31..75716f59044d 100644

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

drivers/staging/rtl8712/rtl871x_ioctl_linux.c +1 -1
index cbaa7a489748..2a661b04cd25 100644

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

drivers/target/target_core_pr.c +11 -4
index 14db5e568f22..d4cc43afe05b 100644

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

drivers/target/target_core_transport.c +11 -4
index fca4bd079d02..8a4d58fdc9fe 100644

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

drivers/tty/serial/max310x.c +5 -24
index 9795b2e8b0b2..1b61d26bb7af 100644

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

drivers/usb/class/cdc-acm.c +5 -0
index 781905745812..2f4e5174e78c 100644

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

drivers/usb/class/usblp.c +12 -4
index c9f6e9758288..f27b4aecff3d 100644

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

drivers/usb/core/usb.c +32 -0
index 8f07b0516100..a566bb494e24 100644

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

drivers/usb/dwc3/dwc3-qcom.c +69 -8

77 lines not on this page · raw message

drivers/usb/gadget/function/f_uac1.c +1 -0
index 00d346965f7a..560382e0a8f3 100644

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

drivers/usb/gadget/function/f_uac2.c +1 -1
index 5d960b6603b6..6f03e944e0e3 100644

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

drivers/usb/gadget/function/u_ether_configfs.h +2 -3
index bd92b5703013..f982e18a5a78 100644

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

drivers/usb/gadget/udc/s3c2410_udc.c +2 -2
index f1ea51476add..1d3ebb07ccd4 100644

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

drivers/usb/host/xhci-pci.c +11 -2
index 84da8406d5b4..5bbccc9a0179 100644

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

drivers/usb/host/xhci-ring.c +2 -1
index 89c3be9917f6..02ea65db80f3 100644

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

drivers/usb/host/xhci.c +43 -35

78 lines not on this page · raw message

drivers/usb/host/xhci.h +1 -0
index 07ff95016f11..3190fd570c57 100644

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

drivers/usb/renesas_usbhs/pipe.c +2 -0
index e7334b7fb3a6..75fff2e4cbc6 100644

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

drivers/usb/serial/ch341.c +1 -0
index 28deaaec581f..f26861246f65 100644

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

drivers/usb/serial/cp210x.c +3 -0
index 7bec1e730b20..6947d5f4cb5e 100644

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

drivers/usb/serial/io_edgeport.c +16 -10
index ba5d8df69518..4b48ef4adbeb 100644

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

drivers/usb/usbip/stub_dev.c +35 -7

42 lines not on this page · raw message

drivers/usb/usbip/vhci_sysfs.c +34 -5
index be37aec250c2..e64ea314930b 100644

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

drivers/usb/usbip/vudc_sysfs.c +42 -7

49 lines not on this page · raw message

drivers/xen/events/events_2l.c +15 -7
index da87f3a1e351..b8f2f971c2f0 100644

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

drivers/xen/events/events_base.c +100 -30

130 lines not on this page · raw message

drivers/xen/events/events_fifo.c +0 -7
index b234f1766810..ad9fe51d3fb3 100644

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

drivers/xen/events/events_internal.h +8 -6
index 0a97c0549db7..4d3398eff9cd 100644

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

fs/binfmt_misc.c +14 -15
index 3880a82da1dc..11b5bf241955 100644

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

fs/block_dev.c +10 -1
index 235b5042672e..c33151020bcd 100644

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

fs/cifs/cifsfs.c +1 -1
index ab883e84e116..8a6a1772590b 100644

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

fs/cifs/cifsglob.h +6 -5
index 50fcb65920e8..089a3916c639 100644

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

fs/cifs/connect.c +5 -5
index 1439d3c9ff77..70d0f0388af4 100644

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

fs/cifs/sess.c +1 -0
index 213465718fa8..dea4959989b5 100644

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

fs/cifs/smb2inode.c +1 -0
index 1f900b81c34a..a718dc77e604 100644

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

fs/cifs/smb2misc.c +4 -4
index 60d4bd1eae2b..d9073b569e17 100644

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

fs/cifs/smb2ops.c +5 -5
index f19274857292..463e81c35c42 100644

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

fs/cifs/smb2proto.h +1 -2
index 9565e27681a5..a2eb34a8d9c9 100644

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

fs/cifs/transport.c +1 -1
index 4a2b836eb017..14ecf1a9f11a 100644

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

fs/configfs/file.c +2 -4
index 1f0270229d7b..da8351d1e455 100644

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

fs/ext4/super.c +8 -1
index 9a6f9875aa34..2ae0af1c88c7 100644

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

fs/io_uring.c +2 -1
index 241313278e5a..00ef0b90d149 100644

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

fs/nfs/dir.c +25 -15
index ef827ae193d2..4db3018776f6 100644

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

fs/nfs/nfs4proc.c +1 -1
index fc8bbfd9beb3..7eb44f37558c 100644

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

fs/pnode.h +1 -1
index 26f74e092bd9..988f1aa9b02a 100644

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

fs/udf/inode.c +6 -3
index bb89c3e43212..0dd2f93ac048 100644

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

include/linux/acpi.h +8 -2
index 053bf05fb1f7..b20568c44001 100644

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

include/linux/can/skb.h +6 -2
index fc61cf4eff1c..ce7393d397e1 100644

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

include/linux/compiler-clang.h +6 -0
index 98cff1b4b088..189149de77a9 100644

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

include/linux/gpio/consumer.h +2 -0
index ef49307611d2..c73b25bc9213 100644

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

include/linux/memblock.h +2 -2
index b93c44b9121e..7643d2dfa959 100644

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

include/linux/memcontrol.h +2 -4
index eeb0b52203e9..3e1a43c9f664 100644

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

include/linux/memory.h +1 -2
index 439a89e758d8..4da95e684e20 100644

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

include/linux/perf_event.h +2 -0
index 9a38f579bc76..419a4d77de00 100644

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

include/linux/pgtable.h +4 -0
index 8fcdfa52eb4b..dad92f9e4eac 100644

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

include/linux/sched/mm.h +2 -1
index 1ae08b8462a4..90b2a0bce11c 100644

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

include/linux/seqlock.h +1 -4
index 2f7bb92b4c9e..f61e34fbaaea 100644

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

include/linux/stop_machine.h +6 -5
index 30577c3aecf8..46fb3ebdd16e 100644

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

include/linux/textsearch.h +1 -1
index 13770cfe33ad..6673e4d4ac2e 100644

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

include/linux/usb.h +2 -0
index 7d72c4e0713c..d6a41841b93e 100644

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

include/linux/virtio_net.h +6 -1
index e8a924eeea3d..6b5fcfa1e555 100644

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

include/media/rc-map.h +7 -0
index 999b750bc6b8..30f138ebab6f 100644

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

include/target/target_core_backend.h +1 -0
index 6336780d83a7..ce2fba49c95d 100644

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

include/uapi/linux/l2tp.h +1 -0
index 30c80d5ba4bf..bab8c9708611 100644

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

include/uapi/linux/netfilter/nfnetlink_cthelper.h +1 -1
index a13137afc429..70af02092d16 100644

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

kernel/events/core.c +38 -4

42 lines not on this page · raw message

kernel/sched/core.c +62 -64

126 lines not on this page · raw message

kernel/sched/membarrier.c +1 -3
index 08ae45ad9261..f311bf85d211 100644

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

kernel/sysctl.c +4 -4
index c9fbdd848138..62fbd09b5dc1 100644

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

kernel/time/hrtimer.c +39 -21

60 lines not on this page · raw message

lib/Kconfig.kasan +1 -0
index f5fa4ba126bf..0d3b7940cf43 100644

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

lib/logic_pio.c +3 -0
index f32fe481b492..07b4b9a1f54b 100644

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

lib/test_kasan.c +5 -5
index 2947274cc2d3..5a2f104ca13f 100644

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

mm/highmem.c +12 -5
index 874b732b120c..86f2b9495f9c 100644

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

mm/huge_memory.c +1 -1
index 91ca9b103ee5..f3affe860e2b 100644

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

mm/madvise.c +12 -1
index 6a660858784b..a9bcd16b5d95 100644

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

mm/memcontrol.c +6 -9
index d76a1f9c0e55..aa9b9536649a 100644

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

mm/memory.c +8 -0
index c05d4c4c03d6..97e1d045f236 100644

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

mm/memory_hotplug.c +1 -1
index f9d57b9be8c7..fc16732d07f7 100644

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

mm/page_alloc.c +82 -85

167 lines not on this page · raw message

mm/slub.c +1 -1
index 69dacc61b843..c86037b38253 100644

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

net/core/skbuff.c +2 -0
index 28b8242f18d7..2b784d62a9fe 100644

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

net/dsa/tag_mtk.c +13 -6
index 38dcdded74c0..59748487664f 100644

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

net/dsa/tag_rtl4_a.c +5 -7
index c17d39b4a1a0..e9176475bac8 100644

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

net/ethtool/channels.c +13 -13
index 25a9e566ef5c..6a070dc8e4b0 100644

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

net/ipv4/cipso_ipv4.c +1 -10
index 471d33a0d095..be09c7669a79 100644

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

net/ipv4/ip_tunnel.c +2 -3
index 76a420c76f16..f6cc26de5ed3 100644

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

net/ipv4/ip_vti.c +3 -3
index abc171e79d3e..eb207089ece0 100644

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

net/ipv4/nexthop.c +7 -3
index e53e43aef785..bad4037d257b 100644

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

net/ipv4/tcp.c +17 -9
index 32545ecf2ab1..1b10c54ce471 100644

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

net/ipv4/udp_offload.c +1 -1
index cfc872689b99..ab770f7ccb30 100644

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

net/ipv6/calipso.c +5 -9
index 51184a70ac7e..1578ed9e97d8 100644

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

net/ipv6/ip6_gre.c +8 -8
index c3bc89b6b1a1..1baf43aacb2e 100644

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

net/ipv6/ip6_tunnel.c +5 -5
index a7950baa05e5..3fa0eca5a06f 100644

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

net/ipv6/ip6_vti.c +3 -3
index 0225fd694192..f10e7a72ea62 100644

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

net/ipv6/sit.c +1 -1
index 93636867aee2..63ccd9f2dccc 100644

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

net/l2tp/l2tp_core.c +22 -19

41 lines not on this page · raw message

net/l2tp/l2tp_core.h +1 -0
index cb21d906343e..98ea98eb9567 100644

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

net/l2tp/l2tp_netlink.c +6 -0
index 83956c9ee1fc..96eb91be9238 100644

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

net/mpls/mpls_gso.c +3 -0
index b1690149b6fa..1482259de9b5 100644

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

net/mptcp/protocol.c +15 -25
index b51872b9dd61..056846eb2e5b 100644

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

net/mptcp/protocol.h +9 -6
index d6ca1a5b94fc..18fef4273bdc 100644

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

net/mptcp/subflow.c +4 -0
index 9d28f6e3dc49..c3090003a17b 100644

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

net/netfilter/nf_nat_proto.c +21 -4
index e87b6bd6b3cd..4731d21fc3ad 100644

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

net/netfilter/x_tables.c +4 -2
index acce622582e3..bce6ca203d46 100644

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

net/netlabel/netlabel_cipso_v4.c +3 -0
index 726dda95934c..4f50a64315cf 100644

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

net/qrtr/qrtr.c +3 -1
index b34358282f37..ac2a4a7711da 100644

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

net/sched/sch_api.c +4 -4
index 6fe4e5cc807c..5f90ee76fd41 100644

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

net/sunrpc/sched.c +4 -1
index cf702a5f7fe5..39ed0e0afe6d 100644

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

samples/bpf/xdpsock_user.c +2 -0
index db0cb73513a5..1e2a1105d0e6 100644

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

security/commoncap.c +1 -11
index 78598be45f10..26c1cb725dcb 100644

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

sound/pci/hda/hda_bind.c +4 -0
index 6a8564566375..17a25e453f60 100644

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

sound/pci/hda/hda_controller.c +0 -7
index 80016b7b6849..b972d59eb1ec 100644

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

sound/pci/hda/hda_intel.c +2 -0
index 1233d4ee8a39..253d538251ae 100644

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

sound/pci/hda/patch_ca0132.c +1 -0
index 7e62aed172a9..65057a184559 100644

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

sound/pci/hda/patch_conexant.c +45 -17

62 lines not on this page · raw message

sound/pci/hda/patch_hdmi.c +13 -0
index e405be7929e3..d6387106619f 100644

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

sound/usb/card.c +6 -0
index e08fbf8e3ee0..3007922a8ed8 100644

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

sound/usb/quirks.c +10 -1
index 737b2729c0d3..d3001fb18141 100644

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

sound/usb/usbaudio.h +1 -0
index 215c1771dd57..60b9dd7df6bb 100644

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

tools/bpf/resolve_btfids/main.c +5 -0
index 7409d7860aa6..80d966cfcaa1 100644

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

tools/lib/bpf/xsk.c +3 -2
index e3e41ceeb1bc..06746d96742f 100644

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

tools/perf/Makefile.perf +1 -1
index 62f3deb1d3a8..e41a8f9b99d2 100644

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

tools/perf/util/sort.c +2 -2
index 80907bc32683..f564b210d761 100644

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

tools/perf/util/trace-event-read.c +1 -0
index f507dff713c9..8a01af783310 100644

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

tools/testing/selftests/bpf/progs/netif_receive_skb.c +10 -3
index 6b670039ea67..1d8918dfbd3f 100644

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

tools/testing/selftests/bpf/progs/test_tunnel_kern.c +2 -4
index a621b58ab079..9afe947cfae9 100644

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

tools/testing/selftests/bpf/verifier/array_access.c +2 -1
index bed53b561e04..1b138cd2b187 100644

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

tools/testing/selftests/net/forwarding/mirror_gre_bridge_1d_vlan.sh +9 -0
index 197e769c2ed1..f8cda822c1ce 100755

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.