Skip to contentSkip to conversation

Linux 5.10.24

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.10.24 kernel.

All users of the 5.10 kernel series must upgrade.

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

thanks,

greg k-h

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

 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                             |   78 ---
 Documentation/process/stable-kernel-rules.rst                       |    6 
 Documentation/process/submitting-patches.rst                        |    5 
 Documentation/virt/kvm/api.rst                                      |    3 
 Makefile                                                            |   14 
 arch/arm/boot/compressed/head.S                                     |    3 
 arch/arm/include/asm/assembler.h                                    |   84 ++++
 arch/arm/kernel/iwmmxt.S                                            |   89 ++--
 arch/arm/kernel/iwmmxt.h                                            |   47 ++
 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                                  |    4 
 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/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/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                                             |   37 -
 arch/x86/entry/entry_64_compat.S                                    |    2 
 arch/x86/events/intel/core.c                                        |    5 
 arch/x86/include/asm/idtentry.h                                     |    3 
 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/cpu/mce/core.c                                      |    6 
 arch/x86/kernel/kvmclock.c                                          |   19 
 arch/x86/kernel/nmi.c                                               |    6 
 arch/x86/kernel/sev-es.c                                            |   22 -
 arch/x86/kernel/traps.c                                             |   16 
 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                                       |   11 
 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_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/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_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/qxl/qxl_display.c                                   |    1 
 drivers/gpu/drm/tiny/gm12u320.c                                     |   44 +-
 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/infiniband/core/umem.c                                      |    8 
 drivers/input/keyboard/applespi.c                                   |   21 -
 drivers/iommu/amd/init.c                                            |   45 +-
 drivers/iommu/intel/svm.c                                           |   13 
 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/mmc/host/sdhci.c                                            |    8 
 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/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                     |  117 ++++-
 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                                  |   13 
 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/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/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/core.c                              |    1 
 drivers/net/wireless/ath/ath11k/core.h                              |    1 
 drivers/net/wireless/ath/ath11k/mac.c                               |   25 +
 drivers/net/wireless/ath/ath11k/peer.c                              |   61 ++-
 drivers/net/wireless/ath/ath11k/peer.h                              |    4 
 drivers/net/wireless/ath/ath11k/wmi.c                               |   17 
 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/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/portdrv.h                                          |    6 
 drivers/pci/pcie/portdrv_pci.c                                      |    1 
 drivers/platform/olpc/olpc-ec.c                                     |   15 
 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                                        |    5 
 drivers/s390/net/qeth_core_main.c                                   |  200 ++++------
 drivers/scsi/libiscsi.c                                             |   11 
 drivers/scsi/ufs/ufs-sysfs.c                                        |    3 
 drivers/scsi/ufs/ufs.h                                              |    6 
 drivers/scsi/ufs/ufshcd.c                                           |    2 
 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/media/rkisp1/rkisp1-params.c                        |    1 
 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                                    |  140 +++++--
 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/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/entry-common.h                                        |   39 +
 include/linux/gpio/consumer.h                                       |    2 
 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/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/entry/common.c                                               |   36 +
 kernel/events/core.c                                                |   42 +-
 kernel/sched/membarrier.c                                           |    4 
 kernel/sysctl.c                                                     |    8 
 kernel/time/hrtimer.c                                               |   60 +--
 lib/logic_pio.c                                                     |    3 
 lib/test_kasan.c                                                    |   10 
 mm/madvise.c                                                        |   13 
 mm/memory.c                                                         |    8 
 mm/memory_hotplug.c                                                 |    2 
 mm/page_alloc.c                                                     |  158 +++----
 mm/slub.c                                                           |    2 
 net/dsa/slave.c                                                     |   45 ++
 net/dsa/tag_ar9331.c                                                |    3 
 net/dsa/tag_brcm.c                                                  |    3 
 net/dsa/tag_dsa.c                                                   |    5 
 net/dsa/tag_edsa.c                                                  |    4 
 net/dsa/tag_gswip.c                                                 |    5 
 net/dsa/tag_ksz.c                                                   |   73 ---
 net/dsa/tag_lan9303.c                                               |    9 
 net/dsa/tag_mtk.c                                                   |   22 -
 net/dsa/tag_ocelot.c                                                |    7 
 net/dsa/tag_qca.c                                                   |    3 
 net/dsa/tag_rtl4_a.c                                                |   12 
 net/dsa/tag_trailer.c                                               |   31 -
 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/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 
 332 files changed, 3001 insertions(+), 1732 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 (3):
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

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 (2):
kasan: fix memory corruption in kasan_bitops_tags test
arm64: kasan: fix page_alloc tagging with DEBUG_VIRTUAL

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

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 (4):
ARM: assembler: introduce adr_l, ldr_l and str_l macros
ARM: efistub: replace adrl pseudo-op with adr_l macro invocation
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
enetc: Fix unused var build warning for CONFIG_OF drivers/base: build kunit tests without structleak plugin
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

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

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

Carl Huang (1):
ath11k: start vdev if a bss peer is already created

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 Eggers (2):
net: dsa: tag_ksz: don't allocate additional memory for padding/tagging
net: dsa: trailer: don't allocate additional memory for padding/tagging

Christoph Hellwig (1):
RDMA/umem: Use ib_dma_max_seg_size instead of dma_get_max_seg_size

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

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

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")

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 (1):
netfilter: nf_nat: undo erroneous tcp edemux lookup

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.10.24

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 (1):
nexthop: Do not flush blackhole nexthops when loopback goes down

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

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

Jeremy Linton (2):
mmc: sdhci-iproc: Add ACPI bindings for the RPi
mmc: sdhci: Update firmware interface API

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 Cai (1):
ARM: 9029/1: Make iwmmxt.S support Clang's integrated assembler

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

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

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 (5):
s390/qeth: fix memory leak after failed TX Buffer allocation s390/qeth: don't replace a fully completed async TX buffer s390/qeth: remove QETH_QDIO_BUF_HANDLED_DELAYED state s390/qeth: improve completion of pending TX buffers s390/qeth: fix notification for pending buffers during teardown

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

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: Reject VM creation when the default IPA size is unsupported
KVM: arm64: Fix exclusive limit for IPA size
KVM: arm64: Ensure I-cache isolation between vcpus of a same VM

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 (1):
zram: fix return value on writeback_store

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

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

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 (1):
seqlock,lockdep: Fix seqcount_latch_init()

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

Ritesh Singh (1):
ath11k: peer delete synchronization with firmware

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 Gleixner (1):
x86/entry: Move nmi entry/exit into common code

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

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 (21):
net: enetc: don't overwrite the RSS indirection table when initializing
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
net: dsa: implement a central TX reallocation procedure
net: dsa: tag_qca: let DSA core deal with TX reallocation
net: dsa: tag_ocelot: let DSA core deal with TX reallocation
net: dsa: tag_mtk: let DSA core deal with TX reallocation
net: dsa: tag_lan9303: let DSA core deal with TX reallocation
net: dsa: tag_edsa: let DSA core deal with TX reallocation
net: dsa: tag_brcm: let DSA core deal with TX reallocation
net: dsa: tag_dsa: let DSA core deal with TX reallocation
net: dsa: tag_gswip: let DSA core deal with TX reallocation
net: dsa: tag_ar9331: let DSA core deal with TX reallocation
net: enetc: initialize RFS/RSS memories for unused ports too

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 (2):
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()

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

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

author maintainer
#1 lore raw
Documentation/ABI/testing/sysfs-devices-memory +3 -2
index 2da2b1fba2c1..16a727a611b1 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 654649556306..7272a4bd74dd 100644
@@ -560,6 +560,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 +7 -71

84 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 83d9a82055a7..5a267f5d1a50 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 4ba0df574eb2..a5d27553d59c 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 7fdb78b48f55..3a435c928e75 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 5
 PATCHLEVEL = 10
-SUBLEVEL = 23
+SUBLEVEL = 24
 EXTRAVERSION =
 NAME = Dare mighty things
 
@@ -1247,9 +1247,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/arm/boot/compressed/head.S +1 -2
index a0de09f994d8..247ce9055990 100644
@@ -1440,8 +1440,7 @@ ENTRY(efi_enter_kernel)
 		mov	r4, r0			@ preserve image base
 		mov	r8, r1			@ preserve DT pointer
 
- ARM(		adrl	r0, call_cache_fn	)
- THUMB(		adr	r0, call_cache_fn	)
+		adr_l	r0, call_cache_fn
 		adr	r1, 0f			@ clean the region of code we
 		bl	cache_clean_flush	@ may run with the MMU off
 
arch/arm/include/asm/assembler.h +84 -0

88 lines not on this page · raw message

arch/arm/kernel/iwmmxt.S +45 -44

114 lines not on this page · raw message

arch/arm/kernel/iwmmxt.h new file +47 -0

47 lines not on this page · raw message

arch/arm64/include/asm/kvm_asm.h +2 -2
index 54387ccd1ab2..044bb9e2cd74 100644
@@ -49,7 +49,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
@@ -180,10 +180,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 6b664de5ec1f..123e67cb8505 100644
@@ -82,6 +82,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);
 
@@ -94,7 +99,8 @@ u64 __guest_enter(struct kvm_vcpu *vcpu);
 
 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 75c8e9a350cc..505bdd75b541 100644
@@ -306,6 +306,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 0672236e1aea..4e2ba9477845 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 5628289b9d5e..717f13d52ecc 100644
@@ -484,6 +484,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 e7550a5289fe..78cdd6b24172 100644
@@ -334,7 +334,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 c0ffb019ca8b..a1c2c955474e 100644
@@ -352,11 +352,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 ed27f06a31ba..4ce934fc1f72 100644
@@ -64,10 +64,15 @@ __host_enter_without_restoring:
 SYM_FUNC_END(__host_exit)
 
 /*
- * 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
 
@@ -82,13 +87,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)
 
@@ -144,7 +144,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 +2 -2
index e2eafe2c93af..3df30b459215 100644
@@ -46,11 +46,11 @@ static void handle_host_hcall(unsigned long func_id,
 		__kvm_tlb_flush_vmid(kern_hyp_va(mmu));
 		break;
 	}
-	case KVM_HOST_SMCCC_FUNC(__kvm_tlb_flush_local_vmid): {
+	case KVM_HOST_SMCCC_FUNC(__kvm_flush_cpu_context): {
 		unsigned long r1 = host_ctxt->regs.regs[1];
 		struct kvm_s2_mmu *mmu = (struct kvm_s2_mmu *)r1;
 
-		__kvm_tlb_flush_local_vmid(kern_hyp_va(mmu));
+		__kvm_flush_cpu_context(kern_hyp_va(mmu));
 		break;
 	}
 	case KVM_HOST_SMCCC_FUNC(__kvm_timer_set_cntvoff): {
arch/arm64/kvm/hyp/nvhe/switch.c +11 -3
index 8ae8160bc93a..6624596846d3 100644
@@ -188,6 +188,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);
 
 	/*
 	 * We must restore the 32-bit state before the sysregs, thanks
@@ -228,11 +236,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);
@@ -251,7 +260,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;
 
@@ -265,7 +273,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 75814a02d189..26068456ec0f 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 f32490229a4c..e911eea36eb0 100644
@@ -373,10 +373,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;
 }
@@ -405,6 +404,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 b913844ab740..916e0547fdcc 100644
@@ -218,6 +218,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 ca692a815731..6aabf1eced31 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;
@@ -502,7 +502,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/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 475687f24f4a..d319160d790c 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 e2c778c176a3..d6f262df4f34 100644
@@ -62,6 +62,9 @@ struct pt_regs
 };
 #endif
 
+
+#define STACK_FRAME_WITH_PT_REGS (STACK_FRAME_OVERHEAD + sizeof(struct pt_regs))
+
 #ifdef __powerpc64__
 
 /*
@@ -190,7 +193,7 @@ extern int ptrace_put_reg(struct task_struct *task, int regno,
 #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
@@ -205,7 +208,7 @@ extern int ptrace_put_reg(struct task_struct *task, int regno,
 #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 c2722ff36e98..5c125255571c 100644
@@ -307,7 +307,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 3cde2fbd74fc..9d3b468bd2d7 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 2729d8fa6e77..96b45901da64 100644
@@ -461,10 +461,11 @@ InstructionTLBMiss:
 	cmplw	0,r1,r3
 #endif
 	mfspr	r2, SPRN_SPRG_PGDIR
-	li	r1,_PAGE_PRESENT | _PAGE_ACCESSED | _PAGE_EXEC
+	li	r1,_PAGE_PRESENT | _PAGE_ACCESSED | _PAGE_EXEC | _PAGE_USER
 #if defined(CONFIG_MODULES) || defined(CONFIG_DEBUG_PAGEALLOC)
 	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 */
@@ -523,9 +524,10 @@ DataLoadTLBMiss:
 	lis	r1, TASK_SIZE@h		/* check if kernel address */
 	cmplw	0,r1,r3
 	mfspr	r2, SPRN_SPRG_PGDIR
-	li	r1, _PAGE_PRESENT | _PAGE_ACCESSED
+	li	r1, _PAGE_PRESENT | _PAGE_ACCESSED | _PAGE_USER
 	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 */
@@ -599,9 +601,10 @@ DataStoreTLBMiss:
 	lis	r1, TASK_SIZE@h		/* check if kernel address */
 	cmplw	0,r1,r3
 	mfspr	r2, SPRN_SPRG_PGDIR
-	li	r1, _PAGE_RW | _PAGE_DIRTY | _PAGE_PRESENT | _PAGE_ACCESSED
+	li	r1, _PAGE_RW | _PAGE_DIRTY | _PAGE_PRESENT | _PAGE_ACCESSED | _PAGE_USER
 	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 be108616a721..7920559a1ca8 100644
@@ -1625,3 +1625,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 d421a2c7f822..1a1d2657fe8d 100644
@@ -2170,7 +2170,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 5006dcbe1d9f..77dffea3d537 100644
@@ -509,8 +509,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/perf/core-book3s.c +17 -6
index 43599e671d38..ded4a3efd3f0 100644
@@ -211,7 +211,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;
 }
 
@@ -477,7 +477,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
@@ -2112,7 +2112,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)
@@ -2130,9 +2140,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 3a0d545f0ce8..791bc373418b 100644
@@ -775,7 +775,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 -35
index de5358671750..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;
 	}
 
@@ -213,40 +214,6 @@ SYSCALL_DEFINE0(ni_syscall)
 	return -ENOSYS;
 }
 
-noinstr bool idtentry_enter_nmi(struct pt_regs *regs)
-{
-	bool irq_state = lockdep_hardirqs_enabled();
-
-	__nmi_enter();
-	lockdep_hardirqs_off(CALLER_ADDR0);
-	lockdep_hardirq_enter();
-	rcu_nmi_enter();
-
-	instrumentation_begin();
-	trace_hardirqs_off_finish();
-	ftrace_nmi_enter();
-	instrumentation_end();
-
-	return irq_state;
-}
-
-noinstr void idtentry_exit_nmi(struct pt_regs *regs, bool restore)
-{
-	instrumentation_begin();
-	ftrace_nmi_exit();
-	if (restore) {
-		trace_hardirqs_on_prepare();
-		lockdep_hardirqs_on_prepare(CALLER_ADDR0);
-	}
-	instrumentation_end();
-
-	rcu_nmi_exit();
-	lockdep_hardirq_exit();
-	if (restore)
-		lockdep_hardirqs_on(CALLER_ADDR0);
-	__nmi_exit();
-}
-
 #ifdef CONFIG_XEN_PV
 #ifndef CONFIG_PREEMPTION
 /*
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 aaa7bffdb20f..4b05c876f9f6 100644
@@ -3565,8 +3565,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);
@@ -3579,6 +3581,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/idtentry.h +0 -3
index eb01c2618a9d..f656aabd1545 100644
@@ -11,9 +11,6 @@
 
 #include <asm/irq_stack.h>
 
-bool idtentry_enter_nmi(struct pt_regs *regs);
-void idtentry_exit_nmi(struct pt_regs *regs, bool irq_state);
-
 /**
  * DECLARE_IDTENTRY - Declare functions for simple IDT entry points
  *		      No error code pushed by hardware
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/cpu/mce/core.c +3 -3
index 311688202ea5..b7a27589dfa0 100644
@@ -1986,7 +1986,7 @@ void (*machine_check_vector)(struct pt_regs *) = unexpected_machine_check;
 
 static __always_inline void exc_machine_check_kernel(struct pt_regs *regs)
 {
-	bool irq_state;
+	irqentry_state_t irq_state;
 
 	WARN_ON_ONCE(user_mode(regs));
 
@@ -1998,7 +1998,7 @@ static __always_inline void exc_machine_check_kernel(struct pt_regs *regs)
 	    mce_check_crashing_cpu())
 		return;
 
-	irq_state = idtentry_enter_nmi(regs);
+	irq_state = irqentry_nmi_enter(regs);
 	/*
 	 * The call targets are marked noinstr, but objtool can't figure
 	 * that out because it's an indirect call. Annotate it.
@@ -2009,7 +2009,7 @@ static __always_inline void exc_machine_check_kernel(struct pt_regs *regs)
 	if (regs->flags & X86_EFLAGS_IF)
 		trace_hardirqs_on_prepare();
 	instrumentation_end();
-	idtentry_exit_nmi(regs, irq_state);
+	irqentry_nmi_exit(regs, irq_state);
 }
 
 static __always_inline void exc_machine_check_user(struct pt_regs *regs)
arch/x86/kernel/kvmclock.c +9 -10
index 34b18f6eeb2c..5ee705b44560 100644
@@ -269,21 +269,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/nmi.c +3 -3
index 4bc77aaf1303..bf250a339655 100644
@@ -475,7 +475,7 @@ static DEFINE_PER_CPU(unsigned long, nmi_dr7);
 
 DEFINE_IDTENTRY_RAW(exc_nmi)
 {
-	bool irq_state;
+	irqentry_state_t irq_state;
 
 	/*
 	 * Re-enable NMIs right here when running as an SEV-ES guest. This might
@@ -502,14 +502,14 @@ DEFINE_IDTENTRY_RAW(exc_nmi)
 
 	this_cpu_write(nmi_dr7, local_db_save());
 
-	irq_state = idtentry_enter_nmi(regs);
+	irq_state = irqentry_nmi_enter(regs);
 
 	inc_irq_stat(__nmi_count);
 
 	if (!ignore_nmis)
 		default_do_nmi(regs);
 
-	idtentry_exit_nmi(regs, irq_state);
+	irqentry_nmi_exit(regs, irq_state);
 
 	local_db_restore(this_cpu_read(nmi_dr7));
 
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 +8 -8
index 170c94ec0068..7692bf7908e6 100644
@@ -406,7 +406,7 @@ DEFINE_IDTENTRY_DF(exc_double_fault)
 	}
 #endif
 
-	idtentry_enter_nmi(regs);
+	irqentry_nmi_enter(regs);
 	instrumentation_begin();
 	notify_die(DIE_TRAP, str, regs, error_code, X86_TRAP_DF, SIGSEGV);
 
@@ -652,12 +652,13 @@ DEFINE_IDTENTRY_RAW(exc_int3)
 		instrumentation_end();
 		irqentry_exit_to_user_mode(regs);
 	} else {
-		bool irq_state = idtentry_enter_nmi(regs);
+		irqentry_state_t irq_state = irqentry_nmi_enter(regs);
+
 		instrumentation_begin();
 		if (!do_int3(regs))
 			die("int3", regs, 0);
 		instrumentation_end();
-		idtentry_exit_nmi(regs, irq_state);
+		irqentry_nmi_exit(regs, irq_state);
 	}
 }
 
@@ -686,8 +687,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;
 	}
@@ -852,7 +852,7 @@ static __always_inline void exc_debug_kernel(struct pt_regs *regs,
 	 * includes the entry stack is excluded for everything.
 	 */
 	unsigned long dr7 = local_db_save();
-	bool irq_state = idtentry_enter_nmi(regs);
+	irqentry_state_t irq_state = irqentry_nmi_enter(regs);
 	instrumentation_begin();
 
 	/*
@@ -909,7 +909,7 @@ static __always_inline void exc_debug_kernel(struct pt_regs *regs,
 		regs->flags &= ~X86_EFLAGS_TF;
 out:
 	instrumentation_end();
-	idtentry_exit_nmi(regs, irq_state);
+	irqentry_nmi_exit(regs, irq_state);
 
 	local_db_restore(dr7);
 }
@@ -927,7 +927,7 @@ static __always_inline void exc_debug_user(struct pt_regs *regs,
 
 	/*
 	 * NB: We can't easily clear DR7 here because
-	 * idtentry_exit_to_usermode() can invoke ptrace, schedule, access
+	 * irqentry_exit_to_usermode() can invoke ptrace, schedule, access
 	 * user memory, etc.  This means that a recursive #DB is possible.  If
 	 * this happens, that #DB will hit exc_debug_kernel() and clear DR7.
 	 * Since we're not on the IST stack right now, everything will be
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 86c33d53c90a..4ca81ae9bc8a 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 6817a673e5ce..4676c6f00489 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 37de7d006858..774adc9846fa 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 615a0c93e116..206bd4d7d7e2 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 +8 -3
index 711168451e9e..7dce17fd59ba 100644
@@ -633,7 +633,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"))
@@ -725,12 +725,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 914a343c7785..0ab439c53eee 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 834a12f3219e..49a1f8ce4baa 100644
@@ -649,6 +649,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;
 		int pin_index;
 
 		if (lookup->info.quirks & ACPI_GPIO_QUIRK_ONLY_GPIOIO && gpioint)
@@ -661,8 +662,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.gpioint = gpioint;
 
@@ -911,8 +916,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
@@ -922,9 +928,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;
@@ -934,7 +943,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)
@@ -971,7 +980,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 7e17d4edccb1..7f557ea90542 100644
@@ -472,8 +472,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 87f095dc385c..76c31aa7b84d 100644
@@ -178,6 +178,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_drv.c +4 -0
index 0b786d8dd8bc..1a880cb48d19 100644
@@ -768,6 +768,10 @@ uint amdgpu_dm_abm_level = 0;
 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 21c7b642a8b4..f0039599e02f 100644
@@ -2555,7 +2555,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 4e2dcf259428..b5fe2a008bd4 100644
@@ -1058,8 +1058,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 =
@@ -1084,8 +1082,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(
@@ -1183,7 +1179,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/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_gem_shmem_helper.c +22 -10
index e00616d94f26..cfacce0418a4 100644
@@ -340,13 +340,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, shmem->vaddr);
-	else
+	} else {
 		vunmap(shmem->vaddr);
+		drm_gem_shmem_put_pages(shmem);
+	}
 
 	shmem->vaddr = NULL;
-	drm_gem_shmem_put_pages(shmem);
 }
 
 /*
@@ -534,14 +535,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)
@@ -590,9 +605,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 efdeb7b7b2a0..a19537706ed1 100644
@@ -708,9 +708,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);
 
@@ -724,6 +727,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 e7362ec22ade..9ce174950340 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 fa830e77bb64..6909901b3551 100644
@@ -1946,7 +1946,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 3d1de9cbb1c8..db56732bdd26 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/qxl/qxl_display.c +1 -0
index 6063f3a15329..862ef59d4d03 100644
@@ -327,6 +327,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/tiny/gm12u320.c +36 -8

109 lines not on this page · raw message

drivers/gpu/drm/udl/udl_drv.c +17 -0
index 96d4317a2c1b..bcf32d188c1b 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 struct drm_driver driver = {
@@ -42,6 +58,7 @@ static struct drm_driver driver = {
 
 	.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 b1461f30780b..8aab14871e1b 100644
@@ -50,6 +50,7 @@ struct urb_list {
 struct udl_device {
 	struct drm_device drm;
 	struct device *dev;
+	struct device *dmadev;
 	struct usb_device *udev;
 
 	struct drm_simple_display_pipe display_pipe;
drivers/gpu/drm/udl/udl_main.c +10 -0
index f5d27f2a5654..5f1d3891ed54 100644
@@ -314,6 +314,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(dev, udl->udev)) {
@@ -342,12 +346,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/infiniband/core/umem.c +4 -4
index 5157ae29a446..076526710fe3 100644
@@ -220,10 +220,10 @@ struct ib_umem *ib_umem_get(struct ib_device *device, unsigned long addr,
 
 		cur_base += ret * PAGE_SIZE;
 		npages -= ret;
-		sg = __sg_alloc_table_from_pages(
-			&umem->sg_head, page_list, ret, 0, ret << PAGE_SHIFT,
-			dma_get_max_seg_size(device->dma_device), sg, npages,
-			GFP_KERNEL);
+		sg = __sg_alloc_table_from_pages(&umem->sg_head, page_list, ret,
+				0, ret << PAGE_SHIFT,
+				ib_dma_max_seg_size(device), sg, npages,
+				GFP_KERNEL);
 		umem->sg_nents = umem->sg_head.nents;
 		if (IS_ERR(sg)) {
 			unpin_user_pages_dirty_lock(page_list, ret, 0);
drivers/input/keyboard/applespi.c +15 -6
index 14362ebab9a9..0b46bc014cde 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>
@@ -400,7 +401,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;
@@ -716,7 +717,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);
 	}
 
@@ -758,8 +759,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);
@@ -856,7 +865,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;
@@ -1908,7 +1917,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 43f392d27d31..b200a3acc6ed 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/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 aaa1bf81d00d..3581761e9797 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 */
 };
[… more lines in the raw message]

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

drivers/media/rc/rc-main.c +6 -0
index 1fd62c1dac76..8e88dc8ea6c5 100644

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

drivers/media/usb/usbtv/usbtv-audio.c +1 -1
index b57e94fb1977..333bd305a4f9 100644

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

drivers/misc/fastrpc.c +5 -0
index 815d01f785df..273d9c159179 100644

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

drivers/misc/pvpanic.c +1 -0
index e16a5e51006e..d9140e75602d 100644

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

drivers/mmc/core/bus.c +5 -6
index c2e70b757dd1..4383c262b3f5 100644

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

drivers/mmc/core/mmc.c +11 -4
index ff3063ce2acd..9ce34e880033 100644

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

drivers/mmc/host/mmci.c +9 -1
index b5a41a7ce165..9bde0def114b 100644

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

drivers/mmc/host/mtk-sd.c +10 -8
index 004fbfc23672..dc84e2dff408 100644

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

drivers/mmc/host/mxs-mmc.c +1 -1
index 75007f61df97..4fbbff03137c 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/mmc/host/sdhci.c +4 -4
index 3561ae8a481a..6edf9fffd934 100644

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

drivers/net/Kconfig +1 -1
index 13e0a8caf3b6..600b9d09ec08 100644

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

drivers/net/can/flexcan.c +15 -9
index 99e5f272205d..d712c6fdbc87 100644

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

drivers/net/can/m_can/tcan4x5x.c +3 -3
index f726c5112294..01f5b6e03a2d 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 c7c5c01a783a..a59c1f1fb31e 100644

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

drivers/net/ethernet/davicom/dm9000.c +17 -4
index 5c6c8c5ec747..ba7f857d1710 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 dd0fb0c066d7..15d19cbd5a95 100644

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

drivers/net/ethernet/freescale/enetc/enetc_hw.h +15 -3
index 014ca6ae121f..21a6ce415cb2 100644

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

drivers/net/ethernet/freescale/enetc/enetc_pf.c +90 -27

117 lines not on this page · raw message

drivers/net/ethernet/freescale/enetc/enetc_vf.c +7 -0
index 7b5c82c7e4e5..33c125735db7 100644

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

drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_cmd.h +3 -3
index 096e26a2e16b..36690fc5c1af 100644

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

drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c +3 -4
index c40820baf48a..b856dbe4db73 100644

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

drivers/net/ethernet/ibm/ibmvnic.c +5 -8
index 5e1f4e71af7b..f184f4a79cc3 100644

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

drivers/net/ethernet/intel/i40e/i40e_main.c +2 -0
index 59971f62e626..3e4a4d6f0419 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 6f290319b617..d8a20e83d904 100644

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

drivers/net/ethernet/mellanox/mlx4/mlx4_en.h +1 -0
index 30378e4c90b5..0aa4a23ad3de 100644

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

drivers/net/ethernet/mellanox/mlxsw/reg.h +1 -0
index 39eff6a57ba2..3c3069afc0a3 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/switchx2.c +2 -1
index 5023d91269f4..28bfe1ea9d94 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 b7d5eaa70a67..1591715c9717 100644

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

drivers/net/ethernet/renesas/sh_eth.c +7 -0
index d5d236d687e9..6d84266c03ca 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 e2dca9b6e992..afe7ec496545 100644

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

drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +14 -5
index b3d6d8e3f4de..7d01c5cf60c9 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/phy.c +4 -2
index 35525a671400..49e96ca585ff 100644

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

drivers/net/phy/phy_device.c +2 -4
index dd1f711140c3..2d4eed2d61ce 100644

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

drivers/net/usb/qmi_wwan.c +0 -14
index c7320861943b..6e033ba71703 100644

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

drivers/net/wan/lapbether.c +0 -3
index b6be2454b8bd..605c01fb73f1 100644

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

drivers/net/wireless/ath/ath11k/core.c +1 -0
index ebd6886a8c18..a68fe3a45a74 100644

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

drivers/net/wireless/ath/ath11k/core.h +1 -0
index 5a7915f75e1e..c8e36251068c 100644

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

drivers/net/wireless/ath/ath11k/mac.c +22 -3
index b5bd9b06da89..ee0edd918560 100644

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

drivers/net/wireless/ath/ath11k/peer.c +58 -3

61 lines not on this page · raw message

drivers/net/wireless/ath/ath11k/peer.h +4 -0
index 5d125ce8984e..8553ed061aea 100644

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

drivers/net/wireless/ath/ath11k/wmi.c +14 -3
index 04b8b002edfe..173ab6ceed1f 100644

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

drivers/net/wireless/ath/ath9k/ath9k.h +2 -1
index e06b74a54a69..01d85f250936 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 917617aad8d3..262c40dc14a6 100644

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

drivers/nvme/host/fc.c +1 -1
index 5ead217ac2bc..fab068c8ba02 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 5c9345072510..9e971fffeb6a 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 68da9280ff11..9a7085668466 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/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 3a3ce40ae1ab..d4559cf88f79 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/s390/block/dasd.c +3 -3
index 217a7b84abdf..2adfab552e22 100644

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

drivers/s390/cio/vfio_ccw_ops.c +3 -3
index 8b3ed5b45277..1ad5f7018ec2 100644

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

drivers/s390/crypto/vfio_ap_ops.c +1 -1
index 7ceb6c433b3b..72eb8f984534 100644

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

drivers/s390/net/qeth_core.h +2 -3
index 2f7e06ec9a30..bf8404b0e74f 100644

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

drivers/s390/net/qeth_core_main.c +99 -101

200 lines not on this page · raw message

drivers/scsi/libiscsi.c +3 -8
index 5125a6c7f70e..41b8192d207d 100644

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

drivers/scsi/ufs/ufs-sysfs.c +2 -1
index bdcd27faa054..34b424ad96a2 100644

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

drivers/scsi/ufs/ufs.h +4 -2
index f8ab16f30fdc..07ca39008b84 100644

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

drivers/scsi/ufs/ufshcd.c +1 -1
index 5a7cc2e42ffd..97d9d5d99adc 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/media/rkisp1/rkisp1-params.c +0 -1
index 986d293201e6..3eb3fb2d64bc 100644

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

drivers/staging/rtl8188eu/core/rtw_ap.c +5 -0
index 2078d87055bf..d25a5734249f 100644

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

drivers/staging/rtl8188eu/os_dep/ioctl_linux.c +4 -2
index 8e10462f1fbe..d487528b5fc9 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 5f79ea05f9b8..b42193c554fb 100644

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

drivers/target/target_core_transport.c +11 -4
index ff26ab0a5f60..484f0ba0a65b 100644

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

drivers/tty/serial/max310x.c +5 -24
index 21130af106bb..8434bd5a8ec7 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 9b4ac4415f1a..db4de5367737 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 061d5c51405f..054840a69eb4 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 045740ad9c1e..d01241f1daf3 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 bf11f8689683..b5f4e584f3c9 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 +105 -35

140 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 2ea189c1b4ff..fe201b757baa 100644

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

fs/cifs/cifsfs.c +1 -1
index 472cb7777e3e..f0ed29a9a6f1 100644

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

fs/cifs/cifsglob.h +6 -5
index 484ec2d8c5c9..3295516af2ae 100644

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

fs/cifs/connect.c +5 -5
index ad3ecda1314d..fa359f473e3d 100644

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

fs/cifs/sess.c +1 -0
index de564368a887..c2fe85ca2ded 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 2da6b41cb552..db22d686c61f 100644

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

fs/cifs/smb2ops.c +5 -5
index 22f1d8dc12b0..02998c79bb90 100644

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

fs/cifs/smb2proto.h +1 -2
index d4110447ee3a..4eb0ca84355a 100644

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

fs/cifs/transport.c +1 -1
index 9391cd17a2b5..0b9f1a0cba1a 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 ea5aefa23a20..e30bf8f342c2 100644

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

fs/nfs/dir.c +25 -15
index 4e011adaf967..c837675cd395 100644

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

fs/nfs/nfs4proc.c +1 -1
index a811d42ffbd1..ba2dfba4854b 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 5b1dc1ad4fb3..9e173c6f312d 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/entry-common.h +38 -1
index 474f29638d2c..7dff07713a07 100644

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

include/linux/gpio/consumer.h +2 -0
index 901aab89d025..79f450e93abf 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 96450f6fb1de..22ce0604b448 100644

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

include/linux/pgtable.h +4 -0
index e237004d498d..7c869ea8dffc 100644

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

include/linux/sched/mm.h +2 -1
index d5ece7a9a403..dc1f4dcd9a82 100644

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

include/linux/seqlock.h +1 -4
index cbfc78b92b65..1ac20d75b061 100644

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

include/linux/stop_machine.h +6 -5
index 76d8b09384a7..63ea9aff368f 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 7dbb91c601a7..c3effcdf2a64 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/entry/common.c +36 -0
index e9e2df3f3f9e..e289e6773292 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/membarrier.c +1 -3
index 9d8df34bea75..16f57e71f9c4 100644

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

kernel/sysctl.c +4 -4
index afad085960b8..b9306d2bb426 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/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 662f862702fc..400507f1e5db 100644

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

mm/madvise.c +12 -1
index 9abf4c5f2bce..24abc79f8914 100644

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

mm/memory.c +8 -0
index 827d42f9ebf7..4d565d7c8016 100644

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

mm/memory_hotplug.c +1 -1
index aa453a433143..b9de2df5b835 100644

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

mm/page_alloc.c +75 -83

158 lines not on this page · raw message

mm/slub.c +1 -1
index 7b378e2ce270..fbc415c34009 100644

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

net/dsa/slave.c +45 -0

45 lines not on this page · raw message

net/dsa/tag_ar9331.c +0 -3
index 55b00694cdba..002cf7f952e2 100644

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

net/dsa/tag_brcm.c +0 -3
index ad72dff8d524..e934dace3922 100644

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

net/dsa/tag_dsa.c +0 -5
index 0b756fae68a5..63d690a0fca6 100644

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

net/dsa/tag_edsa.c +0 -4
index 120614240319..abf70a29deb4 100644

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

net/dsa/tag_gswip.c +0 -5
index 408d4af390a0..2f5bd5e338ab 100644

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

net/dsa/tag_ksz.c +9 -64

73 lines not on this page · raw message

net/dsa/tag_lan9303.c +0 -9
index ccfb6f641bbf..aa1318dccaf0 100644

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

net/dsa/tag_mtk.c +13 -9
index 4cdd9cf428fb..59748487664f 100644

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

net/dsa/tag_ocelot.c +0 -7
index 3b468aca5c53..16a1afd5b8e1 100644

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

net/dsa/tag_qca.c +0 -3
index 1b9e8507112b..88181b52f480 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/dsa/tag_trailer.c +2 -29
index 3a1cc24a4f0a..5b97ede56a0f 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 b957cbee2cf7..84a818b09bee 100644

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

net/ipv4/nexthop.c +7 -3
index f63f7ada51b3..f2d313c5900d 100644

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

net/ipv4/tcp.c +17 -9
index 41d03683b13d..2384ac048bea 100644

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

net/ipv4/udp_offload.c +1 -1
index cfdaac4a57e4..6e2b02cf7841 100644

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

net/ipv6/calipso.c +5 -9
index 78f766019b7e..0ea66e9db249 100644

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

net/ipv6/ip6_gre.c +8 -8
index cf6e1380b527..640f71a7b29d 100644

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

net/ipv6/ip6_tunnel.c +5 -5
index 648db3fe508f..5d27b5c63121 100644

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

net/ipv6/ip6_vti.c +3 -3
index 5f9c4fdc120d..ecfeffc06c55 100644

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

net/ipv6/sit.c +1 -1
index ff048cb8d807..b26f469a3fb8 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/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 d7134c558993..38de24af24c4 100644

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

net/sched/sch_api.c +4 -4
index 5e8e49c4ab5c..54a8c363bcdd 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 33c58de58626..3edae9018893 100644

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

security/commoncap.c +1 -11
index b2a656947504..a6c9bb4441d5 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 145f4ff47d54..d244616d28d8 100644

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

sound/pci/hda/patch_ca0132.c +1 -0
index ee500e46dd4f..f774b2ac9720 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 c67d5915ce24..8c6f10cbced3 100644

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

sound/usb/card.c +6 -0
index 57d6d4ff01e0..fc7c359ae215 100644

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

sound/usb/quirks.c +10 -1
index f82c2ab809c1..10b3a8006bdb 100644

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

sound/usb/usbaudio.h +1 -0
index 0805b7f21272..9667060ff92b 100644

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

tools/bpf/resolve_btfids/main.c +5 -0
index dfa540d8a02d..d636643ddd35 100644

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

tools/lib/bpf/xsk.c +3 -2
index 9bc537d0b92d..f6e8831673f9 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 d42339df20f8..8a3b7d5a4737 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.