Skip to contentSkip to conversation

Linux 5.16.20

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Apr 13, 2022 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

----------------------------
Note, this is the LAST 5.16.y kernel release. It is now end-of-life.

Please move to the 5.17.y branch at this point in time.
----------------------------

I'm announcing the release of the 5.16.20 kernel.

All users of the 5.16 kernel series must upgrade.

The updated 5.16.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.16.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/virt/kvm/devices/vcpu.rst                        |    2 
 Makefile                                                       |    2 
 arch/alpha/kernel/rtc.c                                        |    7 
 arch/arm64/include/asm/cputype.h                               |    2 
 arch/arm64/include/asm/kvm_host.h                              |    1 
 arch/arm64/kernel/patching.c                                   |    4 
 arch/arm64/kernel/proton-pack.c                                |    1 
 arch/arm64/kernel/smp.c                                        |    2 
 arch/arm64/kvm/arm.c                                           |    4 
 arch/arm64/kvm/pmu-emul.c                                      |   33 
 arch/mips/boot/dts/ingenic/jz4780.dtsi                         |    2 
 arch/mips/include/asm/setup.h                                  |    2 
 arch/mips/kernel/traps.c                                       |   22 
 arch/mips/ralink/ill_acc.c                                     |    1 
 arch/parisc/kernel/patch.c                                     |   25 
 arch/powerpc/boot/dts/fsl/t104xrdb.dtsi                        |    4 
 arch/powerpc/include/asm/interrupt.h                           |    2 
 arch/powerpc/include/asm/page.h                                |    6 
 arch/powerpc/kernel/rtas.c                                     |    6 
 arch/powerpc/kernel/secvar-sysfs.c                             |    9 
 arch/powerpc/kexec/core.c                                      |   15 
 arch/powerpc/kvm/book3s_64_entry.S                             |   10 
 arch/powerpc/mm/book3s64/hash_utils.c                          |   54 
 arch/powerpc/mm/mem.c                                          |    2 
 arch/powerpc/mm/pageattr.c                                     |   32 
 arch/powerpc/perf/callchain.h                                  |    9 
 arch/powerpc/perf/callchain_64.c                               |   27 
 arch/powerpc/platforms/Kconfig.cputype                         |    3 
 arch/riscv/lib/memmove.S                                       |  368 +++++-
 arch/um/include/asm/xor.h                                      |    4 
 arch/x86/Kconfig                                               |    5 
 arch/x86/events/intel/core.c                                   |    8 
 arch/x86/include/asm/bug.h                                     |    4 
 arch/x86/include/asm/irq_stack.h                               |    3 
 arch/x86/include/asm/kvm_host.h                                |    1 
 arch/x86/include/asm/msi.h                                     |   19 
 arch/x86/include/asm/perf_event.h                              |    5 
 arch/x86/kernel/fpu/xstate.c                                   |    2 
 arch/x86/kernel/hpet.c                                         |    8 
 arch/x86/kernel/static_call.c                                  |    5 
 arch/x86/kvm/emulate.c                                         |    4 
 arch/x86/kvm/kvm_emulate.h                                     |    1 
 arch/x86/kvm/pmu.c                                             |   18 
 arch/x86/kvm/svm/avic.c                                        |    7 
 arch/x86/kvm/svm/pmu.c                                         |    9 
 arch/x86/kvm/svm/svm.h                                         |    4 
 arch/x86/kvm/svm/svm_onhyperv.c                                |    1 
 arch/x86/kvm/vmx/pmu_intel.c                                   |   14 
 arch/x86/kvm/x86.c                                             |    6 
 arch/x86/mm/tlb.c                                              |   37 
 arch/x86/power/cpu.c                                           |   21 
 arch/x86/xen/smp_hvm.c                                         |    6 
 arch/x86/xen/time.c                                            |   24 
 arch/xtensa/boot/dts/xtfpga-flash-128m.dtsi                    |    8 
 arch/xtensa/boot/dts/xtfpga-flash-16m.dtsi                     |    8 
 arch/xtensa/boot/dts/xtfpga-flash-4m.dtsi                      |    4 
 drivers/ata/sata_dwc_460ex.c                                   |    6 
 drivers/base/power/trace.c                                     |    6 
 drivers/block/drbd/drbd_int.h                                  |    8 
 drivers/block/drbd/drbd_main.c                                 |    6 
 drivers/block/drbd/drbd_nl.c                                   |   41 
 drivers/block/drbd/drbd_state.c                                |   18 
 drivers/block/drbd/drbd_state_change.h                         |    8 
 drivers/char/virtio_console.c                                  |    8 
 drivers/clk/clk-si5341.c                                       |   16 
 drivers/clk/clk.c                                              |   24 
 drivers/clk/mediatek/clk-mt8192.c                              |   36 
 drivers/clk/rockchip/clk-rk3568.c                              |    6 
 drivers/clk/ti/clk.c                                           |   13 
 drivers/cpufreq/cppc_cpufreq.c                                 |   43 
 drivers/dma/sh/shdma-base.c                                    |    4 
 drivers/gpio/gpiolib.c                                         |   19 
 drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c                         |    1 
 drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c                        |    2 
 drivers/gpu/drm/amd/amdgpu/amdgpu_object.c                     |    3 
 drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c                          |    4 
 drivers/gpu/drm/amd/amdkfd/kfd_chardev.c                       |    4 
 drivers/gpu/drm/amd/amdkfd/kfd_crat.c                          |    2 
 drivers/gpu/drm/amd/amdkfd/kfd_process.c                       |    1 
 drivers/gpu/drm/amd/amdkfd/kfd_smi_events.c                    |   24 
 drivers/gpu/drm/amd/amdkfd/kfd_svm.c                           |   80 -
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c              |    7 
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h              |    6 
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c      |   80 +
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_psr.c          |    6 
 drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c               |   15 
 drivers/gpu/drm/amd/display/dc/core/dc_resource.c              |    3 
 drivers/gpu/drm/amd/display/dc/dcn21/dcn21_resource.c          |    2 
 drivers/gpu/drm/amd/display/dc/dcn31/dcn31_resource.c          |    2 
 drivers/gpu/drm/amd/pm/amdgpu_dpm.c                            |   11 
 drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu10_hwmgr.c           |    8 
 drivers/gpu/drm/bridge/nwl-dsi.c                               |   18 
 drivers/gpu/drm/drm_edid.c                                     |   19 
 drivers/gpu/drm/drm_panel_orientation_quirks.c                 |    6 
 drivers/gpu/drm/imx/dw_hdmi-imx.c                              |    8 
 drivers/gpu/drm/imx/imx-ldb.c                                  |    2 
 drivers/gpu/drm/imx/parallel-display.c                         |    4 
 drivers/gpu/drm/msm/dsi/dsi_host.c                             |    2 
 drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gm20b.c                |    1 
 drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gp102.c                |    2 
 drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gp10b.c                |    1 
 drivers/gpu/drm/nouveau/nvkm/subdev/pmu/priv.h                 |    1 
 drivers/gpu/drm/panel/panel-ilitek-ili9341.c                   |    4 
 drivers/gpu/drm/v3d/v3d_gem.c                                  |    6 
 drivers/hv/channel_mgmt.c                                      |    6 
 drivers/hv/vmbus_drv.c                                         |    9 
 drivers/infiniband/core/cm.c                                   |    3 
 drivers/infiniband/hw/hfi1/mmu_rb.c                            |    6 
 drivers/infiniband/hw/mlx5/mr.c                                |    5 
 drivers/infiniband/sw/rdmavt/qp.c                              |    6 
 drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c                    |    1 
 drivers/iommu/omap-iommu.c                                     |    2 
 drivers/irqchip/irq-gic-v3-its.c                               |   28 
 drivers/irqchip/irq-gic-v3.c                                   |   14 
 drivers/irqchip/irq-gic.c                                      |    6 
 drivers/md/dm-ioctl.c                                          |    2 
 drivers/md/dm-rq.c                                             |    7 
 drivers/md/dm.c                                                |   11 
 drivers/misc/habanalabs/common/memory.c                        |   30 
 drivers/misc/habanalabs/common/mmu/mmu_v1.c                    |    2 
 drivers/mmc/core/block.c                                       |   46 
 drivers/mmc/host/mmci_stm32_sdmmc.c                            |    6 
 drivers/mmc/host/renesas_sdhi_core.c                           |    4 
 drivers/mmc/host/sdhci-xenon.c                                 |   10 
 drivers/net/can/usb/etas_es58x/es58x_fd.c                      |    3 
 drivers/net/ethernet/broadcom/bnxt/bnxt.c                      |    7 
 drivers/net/ethernet/broadcom/bnxt/bnxt.h                      |    5 
 drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c              |    4 
 drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c                  |   14 
 drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.h                  |    2 
 drivers/net/ethernet/freescale/dpaa2/dpaa2-ptp.c               |    4 
 drivers/net/ethernet/intel/ice/ice.h                           |    2 
 drivers/net/ethernet/intel/ice/ice_lib.c                       |    3 
 drivers/net/ethernet/intel/ice/ice_main.c                      |    6 
 drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c               |    4 
 drivers/net/ethernet/intel/ice/ice_xsk.c                       |    6 
 drivers/net/ethernet/marvell/mv643xx_eth.c                     |    2 
 drivers/net/ethernet/mellanox/mlx5/core/en_main.c              |    1 
 drivers/net/ethernet/mellanox/mlx5/core/port.c                 |   23 
 drivers/net/ethernet/qlogic/qed/qed_debug.c                    |    2 
 drivers/net/ethernet/qlogic/qede/qede_fp.c                     |    3 
 drivers/net/ethernet/sfc/efx_channels.c                        |  148 +-
 drivers/net/ethernet/sfc/rx_common.c                           |    3 
 drivers/net/ethernet/sfc/tx.c                                  |    3 
 drivers/net/ethernet/sfc/tx_common.c                           |    2 
 drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c          |    3 
 drivers/net/macvtap.c                                          |    6 
 drivers/net/mdio/mdio-mscc-miim.c                              |    6 
 drivers/net/phy/sfp-bus.c                                      |    6 
 drivers/net/tap.c                                              |    3 
 drivers/net/tun.c                                              |    3 
 drivers/net/vrf.c                                              |   15 
 drivers/net/wireless/ath/ath11k/ahb.c                          |    2 
 drivers/net/wireless/ath/ath11k/mhi.c                          |    2 
 drivers/net/wireless/ath/ath11k/pci.c                          |   10 
 drivers/net/wireless/ath/ath5k/eeprom.c                        |    3 
 drivers/net/wireless/intel/iwlwifi/fw/api/dbg-tlv.h            |    5 
 drivers/net/wireless/intel/iwlwifi/mvm/phy-ctxt.c              |   31 
 drivers/net/wireless/intel/iwlwifi/mvm/scan.c                  |    5 
 drivers/net/wireless/mediatek/mt76/dma.c                       |    1 
 drivers/net/wireless/mediatek/mt76/mt76.h                      |    2 
 drivers/net/wireless/mediatek/mt76/mt7615/mac.c                |    2 
 drivers/net/wireless/mediatek/mt76/mt7915/mac.c                |    1 
 drivers/net/wireless/mediatek/mt76/mt7921/main.c               |    1 
 drivers/net/wireless/realtek/rtw89/core.c                      |    5 
 drivers/opp/debugfs.c                                          |    5 
 drivers/opp/opp.h                                              |    1 
 drivers/parisc/dino.c                                          |   41 
 drivers/parisc/gsc.c                                           |   31 
 drivers/parisc/gsc.h                                           |    1 
 drivers/parisc/lasi.c                                          |    7 
 drivers/parisc/wax.c                                           |    7 
 drivers/pci/controller/pci-aardvark.c                          |   16 
 drivers/pci/endpoint/functions/pci-epf-test.c                  |   14 
 drivers/pci/hotplug/pciehp_hpc.c                               |    2 
 drivers/perf/qcom_l2_pmu.c                                     |    6 
 drivers/phy/amlogic/phy-meson-gxl-usb2.c                       |    5 
 drivers/phy/amlogic/phy-meson8b-usb2.c                         |    9 
 drivers/platform/x86/hp-wmi.c                                  |   93 +
 drivers/power/supply/axp20x_battery.c                          |   13 
 drivers/power/supply/axp288_charger.c                          |   14 
 drivers/ptp/ptp_sysfs.c                                        |    4 
 drivers/regulator/atc260x-regulator.c                          |    1 
 drivers/regulator/rtq2134-regulator.c                          |    1 
 drivers/rtc/rtc-cmos.c                                         |   19 
 drivers/rtc/rtc-mc146818-lib.c                                 |   42 
 drivers/rtc/rtc-wm8350.c                                       |   11 
 drivers/scsi/aha152x.c                                         |    6 
 drivers/scsi/bfa/bfad_attr.c                                   |   26 
 drivers/scsi/hisi_sas/hisi_sas_v3_hw.c                         |   68 +
 drivers/scsi/libfc/fc_exch.c                                   |    1 
 drivers/scsi/mpi3mr/mpi3mr_fw.c                                |    2 
 drivers/scsi/mpi3mr/mpi3mr_os.c                                |    2 
 drivers/scsi/mpt3sas/mpt3sas_scsih.c                           |    5 
 drivers/scsi/mvsas/mv_init.c                                   |    4 
 drivers/scsi/pm8001/pm8001_hwi.c                               |   27 
 drivers/scsi/pm8001/pm8001_sas.c                               |    2 
 drivers/scsi/pm8001/pm80xx_hwi.c                               |   17 
 drivers/scsi/scsi_scan.c                                       |    5 
 drivers/scsi/sd.c                                              |    2 
 drivers/scsi/smartpqi/smartpqi_init.c                          |   45 
 drivers/scsi/sr.c                                              |    2 
 drivers/scsi/ufs/ufshcd-pci.c                                  |   17 
 drivers/scsi/ufs/ufshpb.c                                      |   11 
 drivers/scsi/zorro7xx.c                                        |    2 
 drivers/spi/spi-bcm-qspi.c                                     |    4 
 drivers/spi/spi.c                                              |    4 
 drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c  |    3 
 drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.c |    6 
 drivers/staging/wfx/main.c                                     |    7 
 drivers/tty/serial/samsung_tty.c                               |    5 
 drivers/usb/cdns3/cdnsp-debug.h                                |  305 ++---
 drivers/usb/dwc3/dwc3-omap.c                                   |    2 
 drivers/usb/dwc3/dwc3-pci.c                                    |   11 
 drivers/usb/gadget/udc/tegra-xudc.c                            |   20 
 drivers/usb/host/ehci-pci.c                                    |    9 
 drivers/vdpa/mlx5/net/mlx5_vnet.c                              |   21 
 drivers/vfio/pci/vfio_pci_rdwr.c                               |    2 
 drivers/vhost/net.c                                            |    1 
 drivers/video/fbdev/core/fbmem.c                               |    9 
 drivers/w1/slaves/w1_therm.c                                   |    8 
 fs/btrfs/extent_io.h                                           |    2 
 fs/btrfs/inode.c                                               |   22 
 fs/btrfs/ioctl.c                                               |   20 
 fs/btrfs/volumes.c                                             |   65 -
 fs/btrfs/zoned.c                                               |    9 
 fs/ceph/dir.c                                                  |   11 
 fs/ceph/inode.c                                                |   10 
 fs/file_table.c                                                |    1 
 fs/io_uring.c                                                  |   79 -
 fs/jfs/inode.c                                                 |    3 
 fs/minix/inode.c                                               |    3 
 fs/nfs/dir.c                                                   |   10 
 fs/nfs/direct.c                                                |   48 
 fs/nfs/file.c                                                  |    4 
 fs/nfs/inode.c                                                 |    1 
 fs/nfs/internal.h                                              |   17 
 fs/nfs/nfs42proc.c                                             |    9 
 fs/nfs/nfs4file.c                                              |    6 
 fs/nfs/nfs4state.c                                             |   12 
 fs/nfs/pagelist.c                                              |   10 
 fs/nfs/pnfs_nfs.c                                              |    8 
 fs/nfs/write.c                                                 |   34 
 include/linux/gpio/driver.h                                    |    9 
 include/linux/ipv6.h                                           |    2 
 include/linux/mc146818rtc.h                                    |    3 
 include/linux/mmzone.h                                         |   11 
 include/linux/nfs_fs.h                                         |   10 
 include/linux/static_call.h                                    |    5 
 include/linux/vfio_pci_core.h                                  |    9 
 include/net/arp.h                                              |    1 
 include/net/bluetooth/bluetooth.h                              |   14 
 include/net/mctp.h                                             |    2 
 include/net/net_namespace.h                                    |    6 
 include/trace/events/sunrpc.h                                  |    1 
 include/uapi/linux/bpf.h                                       |    6 
 include/uapi/linux/can/isotp.h                                 |   28 
 init/main.c                                                    |    8 
 kernel/Makefile                                                |    3 
 kernel/events/core.c                                           |    3 
 kernel/sched/core.c                                            |    2 
 kernel/static_call.c                                           |  542 ---------
 kernel/static_call_inline.c                                    |  543 ++++++++++
 lib/Kconfig.debug                                              |    3 
 lib/Kconfig.ubsan                                              |   13 
 lib/logic_iomem.c                                              |    8 
 lib/lz4/lz4_decompress.c                                       |    8 
 lib/test_ubsan.c                                               |   22 
 mm/highmem.c                                                   |    4 
 mm/mempolicy.c                                                 |    1 
 mm/mremap.c                                                    |    3 
 mm/rmap.c                                                      |   25 
 net/batman-adv/multicast.c                                     |    2 
 net/bluetooth/hci_event.c                                      |    3 
 net/bluetooth/l2cap_core.c                                     |    1 
 net/bpf/test_run.c                                             |    4 
 net/can/isotp.c                                                |   12 
 net/core/dev.c                                                 |    3 
 net/core/filter.c                                              |   30 
 net/core/net_namespace.c                                       |   17 
 net/core/rtnetlink.c                                           |   13 
 net/core/skbuff.c                                              |   15 
 net/ipv4/arp.c                                                 |    9 
 net/ipv4/fib_frontend.c                                        |    5 
 net/ipv4/fib_semantics.c                                       |    7 
 net/ipv4/inet_hashtables.c                                     |   53 
 net/ipv6/addrconf.c                                            |    4 
 net/ipv6/inet6_hashtables.c                                    |    5 
 net/ipv6/ip6_input.c                                           |    2 
 net/ipv6/ip6mr.c                                               |    8 
 net/ipv6/route.c                                               |    2 
 net/mctp/af_mctp.c                                             |   46 
 net/mctp/route.c                                               |   16 
 net/netfilter/nf_conntrack_core.c                              |   85 +
 net/netlabel/netlabel_kapi.c                                   |    2 
 net/openvswitch/actions.c                                      |    2 
 net/openvswitch/flow_netlink.c                                 |   99 +
 net/rxrpc/net_ns.c                                             |    2 
 net/sctp/outqueue.c                                            |    6 
 net/smc/af_smc.c                                               |    8 
 net/smc/smc_core.c                                             |    2 
 net/smc/smc_tx.c                                               |   25 
 net/smc/smc_tx.h                                               |    1 
 net/sunrpc/clnt.c                                              |    7 
 net/sunrpc/sched.c                                             |    7 
 net/sunrpc/svcsock.c                                           |    4 
 net/sunrpc/xprt.c                                              |   23 
 net/sunrpc/xprtrdma/transport.c                                |    2 
 net/sunrpc/xprtsock.c                                          |   70 -
 net/tls/tls_sw.c                                               |    2 
 net/wireless/scan.c                                            |    9 
 scripts/Makefile.ubsan                                         |    1 
 tools/build/feature/Makefile                                   |    9 
 tools/lib/bpf/Makefile                                         |    4 
 tools/perf/Makefile.config                                     |    6 
 tools/perf/arch/arm64/util/arm-spe.c                           |    6 
 tools/perf/perf.c                                              |    2 
 tools/perf/util/session.c                                      |   15 
 tools/perf/util/setup.py                                       |    8 
 tools/testing/selftests/bpf/progs/test_sk_lookup.c             |    3 
 tools/testing/selftests/bpf/xdpxceiver.c                       |   80 -
 tools/testing/selftests/bpf/xdpxceiver.h                       |    2 
 virt/kvm/kvm_main.c                                            |    2 
 323 files changed, 3427 insertions(+), 2060 deletions(-)

Adam Wujek (1):
clk: si5341: fix reported clk_rate when output divider is 2

Adrian Hunter (2):
perf tools: Fix perf's libperf_print callback
scsi: ufs: ufs-pci: Add support for Intel MTL

Aharon Landau (2):
RDMA/mlx5: Don't remove cache MRs when a delay is needed RDMA/mlx5: Add a missing update of cache->last_add

Alex Deucher (3):
drm/amdkfd: make CRAT table missing message informational only drm/amdgpu/smu10: fix SoC/fclk units in auto mode drm/amdgpu: don't use BACO for reset in S3

Alex Williamson (1):
vfio/pci: Stub vfio_pci_vga_rw when !CONFIG_VFIO_PCI_VGA

Alexander Lobakin (1):
MIPS: fix fortify panic when copying asm exception handlers

Amjad Ouled-Ameur (3):
phy: amlogic: phy-meson-gxl-usb2: fix shared reset controller use
phy: amlogic: meson8b-usb2: Use dev_err_probe()
phy: amlogic: meson8b-usb2: fix shared reset control use

Anatolii Gerasymenko (2):
ice: Set txq_teid to ICE_INVAL_TEID on ring creation
ice: Do not skip not enabled queues in ice_vc_dis_qs_msg

Andre Przywara (1):
irqchip/gic, gic-v3: Prevent GSI to SGI translations

Andrea Parri (Microsoft) (1):
Drivers: hv: vmbus: Replace smp_store_mb() with virt_store_mb()

Andrew Lunn (1):
net: ethernet: mv643xx: Fix over zealous checking of_get_mac_address()

Andy Gospodarek (1):
bnxt_en: reserve space inside receive page for skb_shared_info

Anisse Astier (1):
drm: Add orientation quirk for GPD Win Max

Arnaldo Carvalho de Melo (4):
perf build: Don't use -ffat-lto-objects in the python feature test when building with clang-13 perf python: Fix probing for some clang command line options
tools build: Filter out options and warnings not supported by clang
tools build: Use $(shell ) instead of `` to get embedded libperl's ccopts

Avraham Stern (1):
cfg80211: don't add non transmitted BSS to 6GHz scanned channels

Axel Lin (2):
regulator: rtq2134: Fix missing active_discharge_on setting
regulator: atc260x: Fix missing active_discharge_on setting

Ben Greear (1):
mt76: mt7921: fix crash when startup fails.

Benjamin Beichler (1):
um: fix and optimize xor select template for CONFIG64 and timetravel mode

Benjamin Marty (1):
drm/amdgpu/display: change pipe policy for DCN 2.1

CHANDAN VURDIGERE NATARAJ (1):
drm/amd/display: Fix by adding FPU protection for dcn30_internal_validate_bw

Chanho Park (1):
arm64: Add part number for Arm Cortex-A78AE

Chen-Yu Tsai (1):
net: stmmac: Fix unset max_speed difference between DT and non-DT platforms

ChenXiaoSong (2):
Revert "NFSv4: Handle the special Linux file open access mode"
NFSv4: fix open failure with O_ACCMODE flag

Christian Lamparter (1):
ata: sata_dwc_460ex: Fix crash due to OOB write

Christian Löhle (1):
mmc: block: Check for errors after write on SPI

Christophe JAILLET (1):
scsi: zorro7xx: Fix a resource leak in zorro7xx_remove_one()

Christophe Leroy (3):
powerpc/set_memory: Avoid spinlock recursion in change_page_attr() powerpc/64: Fix build failure with allyesconfig in book3s_64_entry.S
static_call: Don't make __static_call_return0 static

Dale Zhao (1):
drm/amd/display: Add signal type check when verify stream backends same

Damien Le Moal (6):

      scsi: pm8001: Fix pm80xx_pci_mem_copy() interface
      scsi: pm8001: Fix pm8001_mpi_task_abort_resp()
      scsi: pm8001: Fix task leak in pm8001_send_abort_all()
      scsi: pm8001: Fix tag leaks on error
      scsi: pm8001: Fix memory leak in pm8001_chip_fw_flash_update_req()
      scsi: mpt3sas: Fix use after free in _scsih_expander_node_remove()

Dan Carpenter (2):
drm/amdgpu: fix off by one in amdgpu_gfx_kiq_acquire()
rtc: mc146818-lib: fix signedness bug in mc146818_get_time()

Daniel Mack (1):
drm/panel: ili9341: fix optional regulator handling

Daniel Thompson (1):
drm/msm/dsi: Remove spurious IRQF_ONESHOT flag

Dave Hansen (1):
x86/mm/tlb: Revert retpoline avoidance approach

David Ahern (1):
ipv6: Fix stats accounting in ip6_pkt_drop

Denis Nikitin (1):
perf session: Remap buf if there is no space for event

Deren Wu (1):
mt76: fix monitor mode crash with sdio driver

Don Brace (1):
scsi: smartpqi: Fix rmmod stack trace

Dongli Zhang (1):
xen: delay xen_hvm_init_time_ops() if kdump is boot on vcpu>=32

Douglas Miller (1):
RDMA/hfi1: Fix use-after-free bug for mm struct

Dust Li (2):
net/smc: correct settings of RMB window update limit net/smc: send directly on setting TCP_NODELAY

Emily Deng (1):
drm/amdgpu/vcn: Fix the register setting for vcn1

Eric Dumazet (3):
ipv6: make mc_forwarding atomic
net: initialize init_net earlier
rxrpc: fix a race in rxrpc_exit_net()

Ethan Lien (1):
btrfs: fix qgroup reserve overflow the qgroup limit

Eugene Syromiatnikov (1):
io_uring: implement compat handling for IORING_REGISTER_IOWQ_AFF

Evgeny Boger (1):

      power: supply: axp20x_battery: properly report current when discharging

Eyal Birger (1):
vrf: fix packet sniffing for traffic originating from ip tunnels

Feng Tang (1):
lib/Kconfig.debug: add ARCH dependency for FUNCTION_ALIGN option

Florian Westphal (1):
netfilter: conntrack: revisit gc autotuning

Gal Pressman (1):
net/mlx5e: Remove overzealous validations in netlink EEPROM query

Greg Kroah-Hartman (1):

      Linux 5.16.20

Guilherme G. Piccoli (1):
Drivers: hv: vmbus: Fix potential crash on module unload

Guo Ren (1):
arm64: patch_text: Fixup last cpu should be master

Guo Xuenan (1):
lz4: fix LZ4_decompress_safe_partial read out of bound

H. Nikolaus Schaller (1):
usb: dwc3: omap: fix "unbalanced disables for smps10_out1" on omap5evm

Haimin Zhang (1):
jfs: prevent NULL deref in diFree

Hangyu Hua (2):
mips: ralink: fix a refcount leak in ill_acc_of_setup() powerpc/secvar: fix refcount leak in format_show()

Hans de Goede (2):
power: supply: axp288-charger: Set Vhold to 4.4V
usb: dwc3: pci: Set the swnode from inside dwc3_pci_quirks()

Harold Huang (1):
tuntap: add sanity checks about msg_controllen in sendmsg

Helge Deller (1):
parisc: Fix CPU affinity for Lasi, WAX and Dino chips

Hou Wenlong (1):
KVM: x86/emulator: Emulate RDPID only if it is enabled in guest

Hou Zhiqiang (1):
PCI: endpoint: Fix alignment fault error in copy tests

Ido Schimmel (1):
ipv4: Invalidate neighbour for broadcast address upon address addition

Ilan Peer (1):
iwlwifi: mvm: Correctly set fragmented EBS

Ilya Maximets (2):
net: openvswitch: don't send internal clone attribute to the userspace.
net: openvswitch: fix leak of nested actions

Ivan Vecera (1):
ice: Clear default forwarding VSI during VSI release

Jakub Kicinski (3):
net: account alternate interface name memory
net: limit altnames to 64k total
Revert "selftests: net: Add tls config dependency for tls selftests"

Jakub Sitnicki (3):
bpf: Make dst_port field in struct bpf_sock 16-bit wide
bpf: Make remote_port field in struct bpf_sk_lookup 16-bit wide selftests/bpf: Fix u8 narrow load checks for bpf_sk_lookup remote_port

James Clark (1):

      perf: arm-spe: Fix perf report --mem-mode

Jamie Bainbridge (2):
sctp: count singleton chunks in assoc user stats
qede: confirm skb is allocated before using

Jani Nikula (1):
drm/edid: improve non-desktop quirk logging

Jason Wang (1):
vdpa: mlx5: prevent cvq work from hogging CPU

Jean-Philippe Brucker (1):
skbuff: fix coalescing for page_pool fragment recycling

Jens Axboe (3):
io_uring: don't check req->file in io_fsync_prep()
io_uring: defer splice/tee file validity check until command issue
io_uring: fix race between timeout flush and removal

Jianglei Nie (1):
scsi: libfc: Fix use after free in fc_exch_abts_resp()

Jiasheng Jiang (2):
rtc: wm8350: Handle error for wm8350_register_irq drm/imx: imx-ldb: Check for null pointer after calling kmemdup

Jim Mattson (2):
KVM: x86/pmu: Use different raw event masks for AMD and Intel
KVM: x86/svm: Clear reserved bits written to PerfEvtSeln MSRs

Jiri Kosina (1):
rtw89: fix RCU usage in rtw89_core_txq_push()

Jiri Slaby (1):

      serial: samsung_tty: do not unlock port->lock for uart_write_wakeup()

Johan Almbladh (1):
mt76: mt7915: fix injected MPDU transmission to not use HW A-MSDU

Johannes Berg (1):
lib/logic_iomem: correct fallback config references

Johannes Thumshirn (1):
btrfs: zoned: traverse devices under chunk_mutex in btrfs_can_activate_zone

John David Anglin (1):
parisc: Fix patch code locking and flushing

John Garry (1):
scsi: core: Fix sbitmap depth in scsi_realloc_sdev_budget_map()

Jordy Zomer (1):
dm ioctl: prevent potential spectre v1 gadget

Jorge Lopez (2):
platform/x86: hp-wmi: Fix SW_TABLET_MODE detection method platform/x86: hp-wmi: Fix 0x05 error code reported by several WMI calls

José Expósito (2):
clk: mediatek: Fix memory leaks on probe drm/imx: Fix memory leak in imx_pd_connector_get_modes

Kaiwen Hu (1):
btrfs: prevent subvol with swapfile from being deleted

Kalle Valo (2):
ath11k: pci: fix crash on suspend if board file is not found
ath11k: mhi: use mhi_sync_power_up()

Kamal Dasu (1):
spi: bcm-qspi: fix MSPI only access with bcm_qspi_exec_mem_op()

Kan Liang (2):
perf/x86/intel: Update the FRONTEND MSR mask on Sapphire Rapids perf/x86/intel: Don't extend the pseudo-encoding to GP counters

Karol Herbst (1):
drm/nouveau/pmu: Add missing callbacks for Tegra devices

Kees Cook (1):
ubsan: remove CONFIG_UBSAN_OBJECT_SIZE

Kefeng Wang (2):
powerpc: Fix virt_addr_valid() for 64-bit Book3E & 32-bit Revert "powerpc: Set max_mapnr correctly"

Kevin Groeneveld (1):
scsi: sr: Fix typo in CDROM(CLOSETRAY|EJECT) handling

Krzysztof Kozlowski (1):
MIPS: ingenic: correct unit node address

Lee Jones (1):
drm/amdkfd: Create file descriptor after client is added to smi_clients list

Li Chen (1):
PCI: endpoint: Fix misused goto label

Like Xu (1):
KVM: x86/pmu: Fix and isolate TSX-specific performance event logic

Liu Ying (1):
drm/imx: dw_hdmi-imx: Fix bailout in error cases of probe

Lorenzo Bianconi (1):
mt76: dma: initialize skip_unmap in mt76_dma_rx_fill

Luca Coelho (1):
iwlwifi: fix small doc mistake for iwl_fw_ini_addr_val

Lucas Denefle (1):
w1: w1_therm: fixes w1_seq for ds28ea00 sensors

Luiz Augusto von Dentz (2):
Bluetooth: Fix not checking for valid hdev on bt_dev_{info,warn,err,dbg}
Bluetooth: Fix use after free in hci_send_acl

Lv Yunlong (1):
drbd: Fix five use after free bugs in get_initial_state

Maciej Fijalkowski (3):
ice: synchronize_rcu() when terminating rings
ice: xsk: fix VSI state check in ice_xsk_wakeup()
ice: clear cmd_type_offset_bsz for TX rings

Magnus Karlsson (1):
selftests, xsk: Fix bpf_res cleanup test

Mahesh Rajashekhara (1):
scsi: smartpqi: Fix kdump issue when controller is locked up

Manish Chopra (1):
qed: fix ethtool register dump

Manivannan Sadhasivam (1):
PCI: pciehp: Add Qualcomm quirk for Command Completed erratum

Marc Zyngier (3):
KVM: arm64: Do not change the PMU event filter after a VCPU has run irqchip/gic-v3: Fix GICR_CTLR.RWP polling
irqchip/gic-v4: Wait for GICR_VPENDBASER.Dirty to clear before descheduling

Mark Zhang (1):
IB/cm: Cancel mad on the DREQ event when the state is MRA_REP_RCVD

Martin Habets (1):
sfc: Do not free an empty page_ring

Martin K. Petersen (1):
scsi: sd: sd_read_cpr() requires VPD pages

Mateusz Jończyk (3):
rtc: mc146818-lib: change return values of mc146818_get_time()
rtc: Check return value from mc146818_get_time()
rtc: mc146818-lib: fix RTC presence check

Matt Johnston (2):
mctp: Fix check for dev_hard_header() result
mctp: Use output netdev to allocate skb headroom

Mauricio Faria de Oliveira (1):
mm: fix race between MADV_FREE reclaim and blkdev direct IO read

Max Filippov (2):
xtensa: fix DTC warning unit_address_format
highmem: fix checks in __kmap_local_sched_{in,out}

Maxim Kiselev (1):
powerpc: dts: t104xrdb: fix phy type for FMAN 4/5

Maxim Mikityanskiy (2):
net/mlx5e: Disable TX queues before registering the netdev
bpf: Support dual-stack sockets in bpf_tcp_check_syncookie

Maxime Ripard (1):
clk: Enforce that disjoints limits are invalid

Miaohe Lin (1):
mm/mempolicy: fix mpol_new leak in shared_policy_replace

Miaoqian Lin (1):
dpaa2-ptp: Fix refcount leak in dpaa2_ptp_probe

Michael Chan (1):
bnxt_en: Eliminate unintended link toggle during FW reset

Michael Ellerman (1):
powerpc/64e: Tie PPC_BOOK3E_64 to PPC_FSL_BOOK3E

Michael T. Kloos (1):
riscv: Fixed misaligned memory access. Fixed pointer comparison.

Michael Walle (2):
net: sfp: add 2500base-X quirk for Lantech SFP module
net: phy: mscc-miim: reject clause 45 register accesses

Michael Wu (1):
mmc: core: Fixup support for writeback-cache for eMMC and SD

Mike Snitzer (1):
dm: requeue IO if mapping table not yet available

Minghao Chi (CGEL ZTE) (1):
Bluetooth: use memset avoid memory leaks

Miri Korenblit (1):
iwlwifi: mvm: move only to an enabled channel

Namhyung Kim (1):
perf/core: Inherit event_caps

Naresh Kamboju (1):
selftests: net: Add tls config dependency for tls selftests

Nathan Chancellor (1):
x86/Kconfig: Do not allow CONFIG_X86_X32_ABI=y with llvm-objcopy

Neal Liu (1):
usb: ehci: add pci device support for Aspeed platforms

NeilBrown (4):
SUNRPC/xprt: async tasks mustn't block waiting for memory
SUNRPC: remove scheduling boost for "SWAPPER" tasks.
NFS: swap IO handling is slightly different for O_DIRECT IO
NFS: swap-out must always use STABLE writes.

Nicholas Kazlauskas (1):
drm/amd/display: Use PSR version selected during set_psr_caps

Nicholas Piggin (1):
powerpc/64s/hash: Make hash faults work in NMI context

Niels Dossche (1):
IB/rdmavt: add lock to call to rvt_error_qp to prevent a race condition

Nikolay Aleksandrov (1):
net: ipv4: fix route with nexthop object delete warning

Oded Gabbay (1):
habanalabs: reject host map with mmu disabled

Ohad Sharabi (1):
habanalabs: fix possible memory leak in MMU DR fini

Oliver Hartkopp (1):
can: isotp: set default value for N_As to 50 micro seconds

Pali Rohár (2):
PCI: aardvark: Fix support for MSI interrupts Revert "mmc: sdhci-xenon: fix annoying 1.8V regulator warning"

Paolo Bonzini (2):
mmmremap.c: avoid pointless invalidate_range_start/end on mremap(old_size=0)
KVM: avoid NULL pointer dereference in kvm_dirty_ring_push

Pavan Chebbi (1):
bnxt_en: Synchronize tx when xdp redirects happen on same ring

Pavel Begunkov (2):
io_uring: nospec index for tags on files update
io_uring: don't touch scm_fp_list after queueing skb

Pawan Gupta (2):
x86/pm: Save the MSR validity status at context setup x86/speculation: Restore speculation related MSRs during S3 resume

Pawel Laszczak (1):
usb: cdnsp: fix cdnsp_decode_trb function to properly handle ret value

Peter Gonda (1):
KVM: SVM: Fix kvm_cache_regs.h inclusions for is_guest_mode()

Peter Zijlstra (2):
x86: Annotate call_on_stack() x86,static_call: Fix __static_call_return0 for i386

Phil Auld (1):
arch/arm64: Fix topology initialization for core scheduling

Philip Yang (4):
drm/amdkfd: Don't take process mutex for svm ioctls drm/amdkfd: Ensure mm remain valid in svm deferred_list work drm/amdkfd: svm range restore work deadlock when process exit drm/amdkfd: Fix variable set but not used warning

Philipp Zabel (1):
drm/edid: remove non_desktop quirk for HPN-3515 and LEN-B800.

Pierre Gondois (1):
cpufreq: CPPC: Fix performance/frequency conversion

Qi Liu (1):
scsi: hisi_sas: Free irq vectors in order for v3 HW

Qinghua Jin (1):
minix: fix bug when opening a file with O_DIRECT

Qu Wenruo (2):
btrfs: remove device item and update super block in the same transaction
btrfs: avoid defragging extents whose next extents are not targets

Rajneesh Bhardwaj (1):
drm/amdgpu: Fix recursive locking warning

Randy Dunlap (3):
scsi: aha152x: Fix aha152x_setup() __setup handler return value init/main.c: return 1 from handled __setup() functions
virtio_console: eliminate anonymous module_init & module_exit

Ray Jui (1):
bnxt_en: Prevent XDP redirect from running when stopping TX queue

Reto Buerki (1):
x86/msi: Fix msi message data shadow struct

Sascha Hauer (1):
clk: rockchip: drop CLK_SET_RATE_PARENT from dclk_vop* on rk3568

Sebastian Andrzej Siewior (2):
tcp: Don't acquire inet_listen_hashbucket::lock with disabled BH.
sched: Teach the forced-newidle balancer about CPU affinity limitation.

Shirish S (1):
amd/display: set backlight only if required

Shreeya Patel (1):
gpio: Restrict usage of GPIO chip irq members before initialization

Sourabh Jain (1):
powerpc: Set crashkernel offset to mid of RMA region

Sreekanth Reddy (2):
scsi: mpi3mr: Fix reporting of actual data transfer size
scsi: mpi3mr: Fix memory leaks

Stefan Wahren (2):
staging: vchiq_arm: Avoid NULL ptr deref in vchiq_dump_platform_instances
staging: vchiq_core: handle NULL result of find_service_by_handle

Sung Joon Kim (1):
drm/amd/display: reset lane settings after each PHY repeater LT

Suravee Suthikulpanit (1):
KVM: SVM: Allow AVIC support on system w/ physical APIC ID > 255

Sven Eckelmann (1):
macvtap: advertise link netns via netlink

Taehee Yoo (2):
net: sfc: add missing xdp queue reinitialization
net: sfc: fix using uninitialized xdp tx_queue

Thomas Zimmermann (1):
fbdev: Fix unregistering of framebuffers without device

Tony Lindgren (2):
clk: ti: Preserve node in ti_dt_clocks_register() iommu/omap: Fix regression in probe for NULL pointer dereference

Tony Lu (1):
net/smc: Send directly when TCP_CORK is cleared

Trond Myklebust (8):
NFSv4: Protect the state recovery thread against direct reclaim
SUNRPC: Fix socket waits for write buffer space
NFS: nfsiod should not block forever in mempool_alloc()
NFS: Avoid writeback threads getting stuck in mempool_alloc()
SUNRPC: Handle ENOMEM in call_transmit_status()
SUNRPC: Handle low memory situations in call_status()
SUNRPC: svc_tcp_sendmsg() should handle errors from xdr_alloc_bvec()
SUNRPC: Ensure we flush any closed sockets before xs_xprt_free()

Venkateswara Naralasetty (1):
ath11k: fix kernel panic during unload/load ath11k modules

Vincent Mailhol (2):
can: etas_es58x: es58x_fd_rx_event_msg(): initialize rx_event_msg before calling es58x_check_msg_len() x86/bug: Prevent shadowing in __WARN_FLAGS

Vinod Koul (2):
spi: core: add dma_map_dev for __spi_unmap_msg()
dmaengine: Revert "dmaengine: shdma: Fix runtime PM imbalance on error"

Viresh Kumar (1):
opp: Expose of-node's name in debugfs

Waiman Long (1):
mm/sparsemem: fix 'mem_section' will never be NULL gcc 12 warning

Wang Yufen (1):
netlabel: fix out-of-bounds memory accesses

Wayne Chang (2):
usb: gadget: tegra-xudc: Do not program SPARAM
usb: gadget: tegra-xudc: Fix control endpoint's definitions

Wolfram Sang (1):
mmc: renesas_sdhi: don't overwrite TAP settings when HS400 tuning is complete

Xiang Chen (1):
scsi: hisi_sas: Limit users changing debugfs BIST count value

Xiaoke Wang (1):
staging: wfx: fix an error handling in wfx_init_common()

Xiaomeng Tong (3):
scsi: ufs: ufshpb: Fix a NULL check on list iterator
drbd: fix an invalid memory access caused by incorrect use of list iterator
perf: qcom_l2_pmu: fix an incorrect NULL check on list iterator

Xin Xiong (2):
drm/amd/amdgpu/amdgpu_cs: fix refcount leak of a dma_fence obj NFSv4.2: fix reference count leaks in _nfs42_proc_copy_notify()

Xiubo Li (2):
ceph: fix inode reference leakage in ceph_get_snapdir()
ceph: fix memory leak in ceph_readdir when note_last_dentry returns error

Yang Guang (3):
ptp: replace snprintf with sysfs_emit
scsi: mvsas: Replace snprintf() with sysfs_emit()
scsi: bfa: Replace snprintf() with sysfs_emit()

Yang Li (1):
mt76: mt7615: Fix assigning negative values to unsigned variable

Yang Zhong (1):
x86/fpu/xstate: Fix the ARCH_REQ_XCOMP_PERM implementation

Yann Gautier (1):
mmc: mmci: stm32: correctly check all elements of sg list

Yonghong Song (1):
libbpf: Fix build issue with llvm-readelf

Yongzhi Liu (3):
drm/amd/display: Fix memory leak
drm/bridge: Add missing pm_runtime_put_sync
drm/v3d: fix missing unlock

Zekun Shen (1):
ath5k: fix OOB in ath5k_eeprom_read_pcal_info_5111

Zhou Guanghui (1):
iommu/arm-smmu-v3: fix event handling soft lockup

Ziyang Xuan (1):
net/tls: fix slab-out-of-bounds bug in decrypt_internal

author maintainer
#1 lore raw
Documentation/virt/kvm/devices/vcpu.rst +1 -1
index 60a29972d3f1..d063aaee5bb7 100644
@@ -70,7 +70,7 @@ irqchip.
 	 -ENODEV  PMUv3 not supported or GIC not initialized
 	 -ENXIO   PMUv3 not properly configured or in-kernel irqchip not
 	 	  configured as required prior to calling this attribute
-	 -EBUSY   PMUv3 already initialized
+	 -EBUSY   PMUv3 already initialized or a VCPU has already run
 	 -EINVAL  Invalid filter range
 	 =======  ======================================================
 
Makefile +1 -1
index c16a8a2ffd73..1e8d249c996b 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 5
 PATCHLEVEL = 16
-SUBLEVEL = 19
+SUBLEVEL = 20
 EXTRAVERSION =
 NAME = Gobble Gobble
 
arch/alpha/kernel/rtc.c +6 -1
index ce3077946e1d..fb3025396ac9 100644
@@ -80,7 +80,12 @@ init_rtc_epoch(void)
 static int
 alpha_rtc_read_time(struct device *dev, struct rtc_time *tm)
 {
-	mc146818_get_time(tm);
+	int ret = mc146818_get_time(tm);
+
+	if (ret < 0) {
+		dev_err_ratelimited(dev, "unable to read current time\n");
+		return ret;
+	}
 
 	/* Adjust for non-default epochs.  It's easier to depend on the
 	   generic __get_rtc_time and adjust the epoch here than create
arch/arm64/include/asm/cputype.h +2 -0
index bfbf0c4c7c5e..39f5c1672f48 100644
@@ -75,6 +75,7 @@
 #define ARM_CPU_PART_CORTEX_A77		0xD0D
 #define ARM_CPU_PART_NEOVERSE_V1	0xD40
 #define ARM_CPU_PART_CORTEX_A78		0xD41
+#define ARM_CPU_PART_CORTEX_A78AE	0xD42
 #define ARM_CPU_PART_CORTEX_X1		0xD44
 #define ARM_CPU_PART_CORTEX_A510	0xD46
 #define ARM_CPU_PART_CORTEX_A710	0xD47
@@ -123,6 +124,7 @@
 #define MIDR_CORTEX_A77	MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A77)
 #define MIDR_NEOVERSE_V1	MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_NEOVERSE_V1)
 #define MIDR_CORTEX_A78	MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A78)
+#define MIDR_CORTEX_A78AE	MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A78AE)
 #define MIDR_CORTEX_X1	MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_X1)
 #define MIDR_CORTEX_A510 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A510)
 #define MIDR_CORTEX_A710 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A710)
arch/arm64/include/asm/kvm_host.h +1 -0
index d016f27af6da..8c7ba346d713 100644
@@ -137,6 +137,7 @@ struct kvm_arch {
 
 	/* Memory Tagging Extension enabled for the guest */
 	bool mte_enabled;
+	bool ran_once;
 };
 
 struct kvm_vcpu_fault_info {
arch/arm64/kernel/patching.c +2 -2
index 771f543464e0..33e0fabc0b79 100644
@@ -117,8 +117,8 @@ static int __kprobes aarch64_insn_patch_text_cb(void *arg)
 	int i, ret = 0;
 	struct aarch64_insn_patch *pp = arg;
 
-	/* The first CPU becomes master */
-	if (atomic_inc_return(&pp->cpu_count) == 1) {
+	/* The last CPU becomes master */
+	if (atomic_inc_return(&pp->cpu_count) == num_online_cpus()) {
 		for (i = 0; ret == 0 && i < pp->insn_cnt; i++)
 			ret = aarch64_insn_patch_text_nosync(pp->text_addrs[i],
 							     pp->new_insns[i]);
arch/arm64/kernel/proton-pack.c +1 -0
index 5777929d35bf..40be3a7c2c53 100644
@@ -853,6 +853,7 @@ u8 spectre_bhb_loop_affected(int scope)
 	if (scope == SCOPE_LOCAL_CPU) {
 		static const struct midr_range spectre_bhb_k32_list[] = {
 			MIDR_ALL_VERSIONS(MIDR_CORTEX_A78),
+			MIDR_ALL_VERSIONS(MIDR_CORTEX_A78AE),
 			MIDR_ALL_VERSIONS(MIDR_CORTEX_A78C),
 			MIDR_ALL_VERSIONS(MIDR_CORTEX_X1),
 			MIDR_ALL_VERSIONS(MIDR_CORTEX_A710),
arch/arm64/kernel/smp.c +1 -1
index 27df5c1e6baa..3b46041f2b97 100644
@@ -234,6 +234,7 @@ asmlinkage notrace void secondary_start_kernel(void)
 	 * Log the CPU info before it is marked online and might get read.
 	 */
 	cpuinfo_store_cpu();
+	store_cpu_topology(cpu);
 
 	/*
 	 * Enable GIC and timers.
@@ -242,7 +243,6 @@ asmlinkage notrace void secondary_start_kernel(void)
 
 	ipi_setup(cpu);
 
-	store_cpu_topology(cpu);
 	numa_add_cpu(cpu);
 
 	/*
arch/arm64/kvm/arm.c +4 -0
index 1eadf9088880..6f3be4d44abe 100644
@@ -629,6 +629,10 @@ static int kvm_vcpu_first_run_init(struct kvm_vcpu *vcpu)
 	if (kvm_vm_is_protected(kvm))
 		kvm_call_hyp_nvhe(__pkvm_vcpu_init_traps, vcpu);
 
+	mutex_lock(&kvm->lock);
+	kvm->arch.ran_once = true;
+	mutex_unlock(&kvm->lock);
+
 	return ret;
 }
 
arch/arm64/kvm/pmu-emul.c +20 -13
index a5e4bbf5e68f..c996fc562da4 100644
@@ -921,6 +921,8 @@ static bool pmu_irq_is_valid(struct kvm *kvm, int irq)
 
 int kvm_arm_pmu_v3_set_attr(struct kvm_vcpu *vcpu, struct kvm_device_attr *attr)
 {
+	struct kvm *kvm = vcpu->kvm;
+
 	if (!kvm_vcpu_has_pmu(vcpu))
 		return -ENODEV;
 
@@ -938,7 +940,7 @@ int kvm_arm_pmu_v3_set_attr(struct kvm_vcpu *vcpu, struct kvm_device_attr *attr)
 		int __user *uaddr = (int __user *)(long)attr->addr;
 		int irq;
 
-		if (!irqchip_in_kernel(vcpu->kvm))
+		if (!irqchip_in_kernel(kvm))
 			return -EINVAL;
 
 		if (get_user(irq, uaddr))
@@ -948,7 +950,7 @@ int kvm_arm_pmu_v3_set_attr(struct kvm_vcpu *vcpu, struct kvm_device_attr *attr)
 		if (!(irq_is_ppi(irq) || irq_is_spi(irq)))
 			return -EINVAL;
 
-		if (!pmu_irq_is_valid(vcpu->kvm, irq))
+		if (!pmu_irq_is_valid(kvm, irq))
 			return -EINVAL;
 
 		if (kvm_arm_pmu_irq_initialized(vcpu))
@@ -963,7 +965,7 @@ int kvm_arm_pmu_v3_set_attr(struct kvm_vcpu *vcpu, struct kvm_device_attr *attr)
 		struct kvm_pmu_event_filter filter;
 		int nr_events;
 
-		nr_events = kvm_pmu_event_mask(vcpu->kvm) + 1;
+		nr_events = kvm_pmu_event_mask(kvm) + 1;
 
 		uaddr = (struct kvm_pmu_event_filter __user *)(long)attr->addr;
 
@@ -975,12 +977,17 @@ int kvm_arm_pmu_v3_set_attr(struct kvm_vcpu *vcpu, struct kvm_device_attr *attr)
 		     filter.action != KVM_PMU_EVENT_DENY))
 			return -EINVAL;
 
-		mutex_lock(&vcpu->kvm->lock);
+		mutex_lock(&kvm->lock);
+
+		if (kvm->arch.ran_once) {
+			mutex_unlock(&kvm->lock);
+			return -EBUSY;
+		}
 
-		if (!vcpu->kvm->arch.pmu_filter) {
-			vcpu->kvm->arch.pmu_filter = bitmap_alloc(nr_events, GFP_KERNEL_ACCOUNT);
-			if (!vcpu->kvm->arch.pmu_filter) {
-				mutex_unlock(&vcpu->kvm->lock);
+		if (!kvm->arch.pmu_filter) {
+			kvm->arch.pmu_filter = bitmap_alloc(nr_events, GFP_KERNEL_ACCOUNT);
+			if (!kvm->arch.pmu_filter) {
+				mutex_unlock(&kvm->lock);
 				return -ENOMEM;
 			}
 
@@ -991,17 +998,17 @@ int kvm_arm_pmu_v3_set_attr(struct kvm_vcpu *vcpu, struct kvm_device_attr *attr)
 			 * events, the default is to allow.
 			 */
 			if (filter.action == KVM_PMU_EVENT_ALLOW)
-				bitmap_zero(vcpu->kvm->arch.pmu_filter, nr_events);
+				bitmap_zero(kvm->arch.pmu_filter, nr_events);
 			else
-				bitmap_fill(vcpu->kvm->arch.pmu_filter, nr_events);
+				bitmap_fill(kvm->arch.pmu_filter, nr_events);
 		}
 
 		if (filter.action == KVM_PMU_EVENT_ALLOW)
-			bitmap_set(vcpu->kvm->arch.pmu_filter, filter.base_event, filter.nevents);
+			bitmap_set(kvm->arch.pmu_filter, filter.base_event, filter.nevents);
 		else
-			bitmap_clear(vcpu->kvm->arch.pmu_filter, filter.base_event, filter.nevents);
+			bitmap_clear(kvm->arch.pmu_filter, filter.base_event, filter.nevents);
 
-		mutex_unlock(&vcpu->kvm->lock);
+		mutex_unlock(&kvm->lock);
 
 		return 0;
 	}
arch/mips/boot/dts/ingenic/jz4780.dtsi +1 -1
index b0a4e2e019c3..af6cd32c706c 100644
@@ -470,7 +470,7 @@ efuse: efuse@d0 {
 			#address-cells = <1>;
 			#size-cells = <1>;
 
-			eth0_addr: eth-mac-addr@0x22 {
+			eth0_addr: eth-mac-addr@22 {
 				reg = <0x22 0x6>;
 			};
 		};
arch/mips/include/asm/setup.h +1 -1
index bb36a400203d..8c56b862fd9c 100644
@@ -16,7 +16,7 @@ static inline void setup_8250_early_printk_port(unsigned long base,
 	unsigned int reg_shift, unsigned int timeout) {}
 #endif
 
-extern void set_handler(unsigned long offset, void *addr, unsigned long len);
+void set_handler(unsigned long offset, const void *addr, unsigned long len);
 extern void set_uncached_handler(unsigned long offset, void *addr, unsigned long len);
 
 typedef void (*vi_handler_t)(void);
arch/mips/kernel/traps.c +11 -11
index d26b0fb8ea06..b9b31b13062d 100644
@@ -2091,19 +2091,19 @@ static void *set_vi_srs_handler(int n, vi_handler_t addr, int srs)
 		 * If no shadow set is selected then use the default handler
 		 * that does normal register saving and standard interrupt exit
 		 */
-		extern char except_vec_vi, except_vec_vi_lui;
-		extern char except_vec_vi_ori, except_vec_vi_end;
-		extern char rollback_except_vec_vi;
-		char *vec_start = using_rollback_handler() ?
-			&rollback_except_vec_vi : &except_vec_vi;
+		extern const u8 except_vec_vi[], except_vec_vi_lui[];
+		extern const u8 except_vec_vi_ori[], except_vec_vi_end[];
+		extern const u8 rollback_except_vec_vi[];
+		const u8 *vec_start = using_rollback_handler() ?
+				      rollback_except_vec_vi : except_vec_vi;
 #if defined(CONFIG_CPU_MICROMIPS) || defined(CONFIG_CPU_BIG_ENDIAN)
-		const int lui_offset = &except_vec_vi_lui - vec_start + 2;
-		const int ori_offset = &except_vec_vi_ori - vec_start + 2;
+		const int lui_offset = except_vec_vi_lui - vec_start + 2;
+		const int ori_offset = except_vec_vi_ori - vec_start + 2;
 #else
-		const int lui_offset = &except_vec_vi_lui - vec_start;
-		const int ori_offset = &except_vec_vi_ori - vec_start;
+		const int lui_offset = except_vec_vi_lui - vec_start;
+		const int ori_offset = except_vec_vi_ori - vec_start;
 #endif
-		const int handler_len = &except_vec_vi_end - vec_start;
+		const int handler_len = except_vec_vi_end - vec_start;
 
 		if (handler_len > VECTORSPACING) {
 			/*
@@ -2311,7 +2311,7 @@ void per_cpu_trap_init(bool is_boot_cpu)
 }
 
 /* Install CPU exception handler */
-void set_handler(unsigned long offset, void *addr, unsigned long size)
+void set_handler(unsigned long offset, const void *addr, unsigned long size)
 {
 #ifdef CONFIG_CPU_MICROMIPS
 	memcpy((void *)(ebase + offset), ((unsigned char *)addr - 1), size);
arch/mips/ralink/ill_acc.c +1 -0
index bdf53807d7c2..bea857c9da8b 100644
@@ -61,6 +61,7 @@ static int __init ill_acc_of_setup(void)
 	pdev = of_find_device_by_node(np);
 	if (!pdev) {
 		pr_err("%pOFn: failed to lookup pdev\n", np);
+		of_node_put(np);
 		return -EINVAL;
 	}
 
arch/parisc/kernel/patch.c +11 -14
index 80a0ab372802..e59574f65e64 100644
@@ -40,10 +40,7 @@ static void __kprobes *patch_map(void *addr, int fixmap, unsigned long *flags,
 
 	*need_unmap = 1;
 	set_fixmap(fixmap, page_to_phys(page));
-	if (flags)
-		raw_spin_lock_irqsave(&patch_lock, *flags);
-	else
-		__acquire(&patch_lock);
+	raw_spin_lock_irqsave(&patch_lock, *flags);
 
 	return (void *) (__fix_to_virt(fixmap) + (uintaddr & ~PAGE_MASK));
 }
@@ -52,10 +49,7 @@ static void __kprobes patch_unmap(int fixmap, unsigned long *flags)
 {
 	clear_fixmap(fixmap);
 
-	if (flags)
-		raw_spin_unlock_irqrestore(&patch_lock, *flags);
-	else
-		__release(&patch_lock);
+	raw_spin_unlock_irqrestore(&patch_lock, *flags);
 }
 
 void __kprobes __patch_text_multiple(void *addr, u32 *insn, unsigned int len)
@@ -67,8 +61,9 @@ void __kprobes __patch_text_multiple(void *addr, u32 *insn, unsigned int len)
 	int mapped;
 
 	/* Make sure we don't have any aliases in cache */
-	flush_kernel_vmap_range(addr, len);
-	flush_icache_range(start, end);
+	flush_kernel_dcache_range_asm(start, end);
+	flush_kernel_icache_range_asm(start, end);
+	flush_tlb_kernel_range(start, end);
 
 	p = fixmap = patch_map(addr, FIX_TEXT_POKE0, &flags, &mapped);
 
@@ -81,8 +76,10 @@ void __kprobes __patch_text_multiple(void *addr, u32 *insn, unsigned int len)
 			 * We're crossing a page boundary, so
 			 * need to remap
 			 */
-			flush_kernel_vmap_range((void *)fixmap,
-						(p-fixmap) * sizeof(*p));
+			flush_kernel_dcache_range_asm((unsigned long)fixmap,
+						      (unsigned long)p);
+			flush_tlb_kernel_range((unsigned long)fixmap,
+					       (unsigned long)p);
 			if (mapped)
 				patch_unmap(FIX_TEXT_POKE0, &flags);
 			p = fixmap = patch_map(addr, FIX_TEXT_POKE0, &flags,
@@ -90,10 +87,10 @@ void __kprobes __patch_text_multiple(void *addr, u32 *insn, unsigned int len)
 		}
 	}
 
-	flush_kernel_vmap_range((void *)fixmap, (p-fixmap) * sizeof(*p));
+	flush_kernel_dcache_range_asm((unsigned long)fixmap, (unsigned long)p);
+	flush_tlb_kernel_range((unsigned long)fixmap, (unsigned long)p);
 	if (mapped)
 		patch_unmap(FIX_TEXT_POKE0, &flags);
-	flush_icache_range(start, end);
 }
 
 void __kprobes __patch_text(void *addr, u32 insn)
arch/powerpc/boot/dts/fsl/t104xrdb.dtsi +2 -2
index 099a598c74c0..bfe1ed5be337 100644
@@ -139,12 +139,12 @@ pca9546@77 {
 		fman@400000 {
 			ethernet@e6000 {
 				phy-handle = <&phy_rgmii_0>;
-				phy-connection-type = "rgmii";
+				phy-connection-type = "rgmii-id";
 			};
 
 			ethernet@e8000 {
 				phy-handle = <&phy_rgmii_1>;
-				phy-connection-type = "rgmii";
+				phy-connection-type = "rgmii-id";
 			};
 
 			mdio0: mdio@fc000 {
arch/powerpc/include/asm/interrupt.h +1 -1
index a1d238255f07..a07960066b5f 100644
@@ -567,7 +567,7 @@ DECLARE_INTERRUPT_HANDLER_RAW(do_slb_fault);
 DECLARE_INTERRUPT_HANDLER(do_bad_slb_fault);
 
 /* hash_utils.c */
-DECLARE_INTERRUPT_HANDLER_RAW(do_hash_fault);
+DECLARE_INTERRUPT_HANDLER(do_hash_fault);
 
 /* fault.c */
 DECLARE_INTERRUPT_HANDLER(do_page_fault);
arch/powerpc/include/asm/page.h +5 -1
index 254687258f42..f2c5c26869f1 100644
@@ -132,7 +132,11 @@ static inline bool pfn_valid(unsigned long pfn)
 #define virt_to_page(kaddr)	pfn_to_page(virt_to_pfn(kaddr))
 #define pfn_to_kaddr(pfn)	__va((pfn) << PAGE_SHIFT)
 
-#define virt_addr_valid(kaddr)	pfn_valid(virt_to_pfn(kaddr))
+#define virt_addr_valid(vaddr)	({					\
+	unsigned long _addr = (unsigned long)vaddr;			\
+	_addr >= PAGE_OFFSET && _addr < (unsigned long)high_memory &&	\
+	pfn_valid(virt_to_pfn(_addr));					\
+})
 
 /*
  * On Book-E parts we need __va to parse the device tree and we can't
arch/powerpc/kernel/rtas.c +6 -0
index ff80bbad22a5..e18a725a8e5d 100644
@@ -1235,6 +1235,12 @@ int __init early_init_dt_scan_rtas(unsigned long node,
 	entryp = of_get_flat_dt_prop(node, "linux,rtas-entry", NULL);
 	sizep  = of_get_flat_dt_prop(node, "rtas-size", NULL);
 
+#ifdef CONFIG_PPC64
+	/* need this feature to decide the crashkernel offset */
+	if (of_get_flat_dt_prop(node, "ibm,hypertas-functions", NULL))
+		powerpc_firmware_features |= FW_FEATURE_LPAR;
+#endif
+
 	if (basep && entryp && sizep) {
 		rtas.base = *basep;
 		rtas.entry = *entryp;
arch/powerpc/kernel/secvar-sysfs.c +6 -3
index a0a78aba2083..1ee4640a2641 100644
@@ -26,15 +26,18 @@ static ssize_t format_show(struct kobject *kobj, struct kobj_attribute *attr,
 	const char *format;
 
 	node = of_find_compatible_node(NULL, NULL, "ibm,secvar-backend");
-	if (!of_device_is_available(node))
-		return -ENODEV;
+	if (!of_device_is_available(node)) {
+		rc = -ENODEV;
+		goto out;
+	}
 
 	rc = of_property_read_string(node, "format", &format);
 	if (rc)
-		return rc;
+		goto out;
 
 	rc = sprintf(buf, "%s\n", format);
 
+out:
 	of_node_put(node);
 
 	return rc;
arch/powerpc/kexec/core.c +11 -4
index a2242017e55f..11b327fa135c 100644
@@ -134,11 +134,18 @@ void __init reserve_crashkernel(void)
 	if (!crashk_res.start) {
 #ifdef CONFIG_PPC64
 		/*
-		 * On 64bit we split the RMO in half but cap it at half of
-		 * a small SLB (128MB) since the crash kernel needs to place
-		 * itself and some stacks to be in the first segment.
+		 * On the LPAR platform place the crash kernel to mid of
+		 * RMA size (512MB or more) to ensure the crash kernel
+		 * gets enough space to place itself and some stack to be
+		 * in the first segment. At the same time normal kernel
+		 * also get enough space to allocate memory for essential
+		 * system resource in the first segment. Keep the crash
+		 * kernel starts at 128MB offset on other platforms.
 		 */
-		crashk_res.start = min(0x8000000ULL, (ppc64_rma_size / 2));
+		if (firmware_has_feature(FW_FEATURE_LPAR))
+			crashk_res.start = ppc64_rma_size / 2;
+		else
+			crashk_res.start = min(0x8000000ULL, (ppc64_rma_size / 2));
 #else
 		crashk_res.start = KDUMP_KERNELBASE;
 #endif
arch/powerpc/kvm/book3s_64_entry.S +8 -2
index 983b8c18bc31..a644003603da 100644
@@ -407,10 +407,16 @@ END_FTR_SECTION_IFSET(CPU_FTR_DAWR1)
 	 */
 	ld	r10,HSTATE_SCRATCH0(r13)
 	cmpwi	r10,BOOK3S_INTERRUPT_MACHINE_CHECK
-	beq	machine_check_common
+	beq	.Lcall_machine_check_common
 
 	cmpwi	r10,BOOK3S_INTERRUPT_SYSTEM_RESET
-	beq	system_reset_common
+	beq	.Lcall_system_reset_common
 
 	b	.
+
+.Lcall_machine_check_common:
+	b	machine_check_common
+
+.Lcall_system_reset_common:
+	b	system_reset_common
 #endif
arch/powerpc/mm/book3s64/hash_utils.c +8 -46

84 lines not on this page · raw message

arch/powerpc/mm/mem.c +1 -1
index bd5d91a31183..05b9c3f31456 100644
@@ -256,7 +256,7 @@ void __init mem_init(void)
 #endif
 
 	high_memory = (void *) __va(max_low_pfn * PAGE_SIZE);
-	set_max_mapnr(max_low_pfn);
+	set_max_mapnr(max_pfn);
 
 	kasan_late_init();
 
arch/powerpc/mm/pageattr.c +13 -19
index 3bb9d168e3b3..85753e32a4de 100644
@@ -15,12 +15,14 @@
 #include <asm/pgtable.h>
 
 
+static pte_basic_t pte_update_delta(pte_t *ptep, unsigned long addr,
+				    unsigned long old, unsigned long new)
+{
+	return pte_update(&init_mm, addr, ptep, old & ~new, new & ~old, 0);
+}
+
 /*
- * Updates the attributes of a page in three steps:
- *
- * 1. take the page_table_lock
- * 2. install the new entry with the updated attributes
- * 3. flush the TLB
+ * Updates the attributes of a page atomically.
  *
  * This sequence is safe against concurrent updates, and also allows updating the
  * attributes of a page currently being executed or accessed.
@@ -28,25 +30,21 @@
 static int change_page_attr(pte_t *ptep, unsigned long addr, void *data)
 {
 	long action = (long)data;
-	pte_t pte;
 
-	spin_lock(&init_mm.page_table_lock);
-
-	pte = ptep_get(ptep);
-
-	/* modify the PTE bits as desired, then apply */
+	/* modify the PTE bits as desired */
 	switch (action) {
 	case SET_MEMORY_RO:
-		pte = pte_wrprotect(pte);
+		/* Don't clear DIRTY bit */
+		pte_update_delta(ptep, addr, _PAGE_KERNEL_RW & ~_PAGE_DIRTY, _PAGE_KERNEL_RO);
 		break;
 	case SET_MEMORY_RW:
-		pte = pte_mkwrite(pte_mkdirty(pte));
+		pte_update_delta(ptep, addr, _PAGE_KERNEL_RO, _PAGE_KERNEL_RW);
 		break;
 	case SET_MEMORY_NX:
-		pte = pte_exprotect(pte);
+		pte_update_delta(ptep, addr, _PAGE_KERNEL_ROX, _PAGE_KERNEL_RO);
 		break;
 	case SET_MEMORY_X:
-		pte = pte_mkexec(pte);
+		pte_update_delta(ptep, addr, _PAGE_KERNEL_RO, _PAGE_KERNEL_ROX);
 		break;
 	case SET_MEMORY_NP:
 		pte_update(&init_mm, addr, ptep, _PAGE_PRESENT, 0, 0);
@@ -59,16 +57,12 @@ static int change_page_attr(pte_t *ptep, unsigned long addr, void *data)
 		break;
 	}
 
-	pte_update(&init_mm, addr, ptep, ~0UL, pte_val(pte), 0);
-
 	/* See ptesync comment in radix__set_pte_at() */
 	if (radix_enabled())
 		asm volatile("ptesync": : :"memory");
 
 	flush_tlb_kernel_range(addr, addr + PAGE_SIZE);
 
-	spin_unlock(&init_mm.page_table_lock);
-
 	return 0;
 }
 
arch/powerpc/perf/callchain.h +1 -8
index d6fa6e25234f..19a8d051ddf1 100644
@@ -2,7 +2,6 @@
 #ifndef _POWERPC_PERF_CALLCHAIN_H
 #define _POWERPC_PERF_CALLCHAIN_H
 
-int read_user_stack_slow(const void __user *ptr, void *buf, int nb);
 void perf_callchain_user_64(struct perf_callchain_entry_ctx *entry,
 			    struct pt_regs *regs);
 void perf_callchain_user_32(struct perf_callchain_entry_ctx *entry,
@@ -26,17 +25,11 @@ static inline int __read_user_stack(const void __user *ptr, void *ret,
 				    size_t size)
 {
 	unsigned long addr = (unsigned long)ptr;
-	int rc;
 
 	if (addr > TASK_SIZE - size || (addr & (size - 1)))
 		return -EFAULT;
 
-	rc = copy_from_user_nofault(ret, ptr, size);
-
-	if (IS_ENABLED(CONFIG_PPC64) && !radix_enabled() && rc)
-		return read_user_stack_slow(ptr, ret, size);
-
-	return rc;
+	return copy_from_user_nofault(ret, ptr, size);
 }
 
 #endif /* _POWERPC_PERF_CALLCHAIN_H */
arch/powerpc/perf/callchain_64.c +0 -27
index 8d0df4226328..488e8a21a11e 100644
@@ -18,33 +18,6 @@
 
 #include "callchain.h"
 
-/*
- * On 64-bit we don't want to invoke hash_page on user addresses from
- * interrupt context, so if the access faults, we read the page tables
- * to find which page (if any) is mapped and access it directly. Radix
- * has no need for this so it doesn't use read_user_stack_slow.
- */
-int read_user_stack_slow(const void __user *ptr, void *buf, int nb)
-{
-
-	unsigned long addr = (unsigned long) ptr;
-	unsigned long offset;
-	struct page *page;
-	void *kaddr;
-
-	if (get_user_page_fast_only(addr, FOLL_WRITE, &page)) {
-		kaddr = page_address(page);
-
-		/* align address to page boundary */
-		offset = addr & ~PAGE_MASK;
-
-		memcpy(buf, kaddr + offset, nb);
-		put_page(page);
-		return 0;
-	}
-	return -EFAULT;
-}
-
 static int read_user_stack_64(const unsigned long __user *ptr, unsigned long *ret)
 {
 	return __read_user_stack(ptr, ret, sizeof(*ret));
arch/powerpc/platforms/Kconfig.cputype +2 -1
index a208997ade88..87a95cbff2f3 100644
@@ -111,6 +111,7 @@ config PPC_BOOK3S_64
 
 config PPC_BOOK3E_64
 	bool "Embedded processors"
+	select PPC_FSL_BOOK3E
 	select PPC_FPU # Make it a choice ?
 	select PPC_SMP_MUXED_IPI
 	select PPC_DOORBELL
@@ -287,7 +288,7 @@ config FSL_BOOKE
 config PPC_FSL_BOOK3E
 	bool
 	select ARCH_SUPPORTS_HUGETLBFS if PHYS_64BIT || PPC64
-	select FSL_EMB_PERFMON
+	imply FSL_EMB_PERFMON
 	select PPC_SMP_MUXED_IPI
 	select PPC_DOORBELL
 	default y if FSL_BOOKE
arch/riscv/lib/memmove.S +310 -58

374 lines not on this page · raw message

arch/um/include/asm/xor.h +3 -1
index f512704a9ec7..22b39de73c24 100644
@@ -4,8 +4,10 @@
 
 #ifdef CONFIG_64BIT
 #undef CONFIG_X86_32
+#define TT_CPU_INF_XOR_DEFAULT (AVX_SELECT(&xor_block_sse_pf64))
 #else
 #define CONFIG_X86_32 1
+#define TT_CPU_INF_XOR_DEFAULT (AVX_SELECT(&xor_block_8regs))
 #endif
 
 #include <asm/cpufeature.h>
@@ -16,7 +18,7 @@
 #undef XOR_SELECT_TEMPLATE
 /* pick an arbitrary one - measuring isn't possible with inf-cpu */
 #define XOR_SELECT_TEMPLATE(x)	\
-	(time_travel_mode == TT_MODE_INFCPU ? &xor_block_8regs : NULL)
+	(time_travel_mode == TT_MODE_INFCPU ? TT_CPU_INF_XOR_DEFAULT : x))
 #endif
 
 #endif
arch/x86/Kconfig +5 -0
index 5c2ccb85f2ef..d377d8af5a9f 100644
@@ -2827,6 +2827,11 @@ config IA32_AOUT
 config X86_X32
 	bool "x32 ABI for 64-bit mode"
 	depends on X86_64
+	# llvm-objcopy does not convert x86_64 .note.gnu.property or
+	# compressed debug sections to x86_x32 properly:
+	# https://github.com/ClangBuiltLinux/linux/issues/514
+	# https://github.com/ClangBuiltLinux/linux/issues/1141
+	depends on $(success,$(OBJCOPY) --version | head -n1 | grep -qv llvm)
 	help
 	  Include code to run binaries for the x32 native 32-bit ABI
 	  for 64-bit processors.  An x32 process gets access to the
arch/x86/events/intel/core.c +6 -2
index 5434030e851e..aa2daa1f3624 100644
@@ -281,7 +281,7 @@ static struct extra_reg intel_spr_extra_regs[] __read_mostly = {
 	INTEL_UEVENT_EXTRA_REG(0x012a, MSR_OFFCORE_RSP_0, 0x3fffffffffull, RSP_0),
 	INTEL_UEVENT_EXTRA_REG(0x012b, MSR_OFFCORE_RSP_1, 0x3fffffffffull, RSP_1),
 	INTEL_UEVENT_PEBS_LDLAT_EXTRA_REG(0x01cd),
-	INTEL_UEVENT_EXTRA_REG(0x01c6, MSR_PEBS_FRONTEND, 0x7fff17, FE),
+	INTEL_UEVENT_EXTRA_REG(0x01c6, MSR_PEBS_FRONTEND, 0x7fff1f, FE),
 	INTEL_UEVENT_EXTRA_REG(0x40ad, MSR_PEBS_FRONTEND, 0x7, FE),
 	INTEL_UEVENT_EXTRA_REG(0x04c2, MSR_PEBS_FRONTEND, 0x8, FE),
 	EVENT_EXTRA_END
@@ -5521,7 +5521,11 @@ static void intel_pmu_check_event_constraints(struct event_constraint *event_con
 			/* Disabled fixed counters which are not in CPUID */
 			c->idxmsk64 &= intel_ctrl;
 
-			if (c->idxmsk64 != INTEL_PMC_MSK_FIXED_REF_CYCLES)
+			/*
+			 * Don't extend the pseudo-encoding to the
+			 * generic counters
+			 */
+			if (!use_fixed_pseudo_encoding(c->code))
 				c->idxmsk64 |= (1ULL << num_counters) - 1;
 		}
 		c->idxmsk64 &=
arch/x86/include/asm/bug.h +2 -2
index bab883c0b6fe..66570e95af39 100644
@@ -77,9 +77,9 @@ do {								\
  */
 #define __WARN_FLAGS(flags)					\
 do {								\
-	__auto_type f = BUGFLAG_WARNING|(flags);		\
+	__auto_type __flags = BUGFLAG_WARNING|(flags);		\
 	instrumentation_begin();				\
-	_BUG_FLAGS(ASM_UD2, f, ASM_REACHABLE);			\
+	_BUG_FLAGS(ASM_UD2, __flags, ASM_REACHABLE);		\
 	instrumentation_end();					\
 } while (0)
 
arch/x86/include/asm/irq_stack.h +2 -1
index ae9d40f6c706..05af249d6bec 100644
@@ -99,7 +99,8 @@
 }
 
 #define ASM_CALL_ARG0							\
-	"call %P[__func]				\n"
+	"call %P[__func]				\n"		\
+	ASM_REACHABLE
 
 #define ASM_CALL_ARG1							\
 	"movq	%[arg1], %%rdi				\n"		\
arch/x86/include/asm/kvm_host.h +1 -0
index 5d3645b325e2..92c119831ed4 100644
@@ -503,6 +503,7 @@ struct kvm_pmu {
 	u64 global_ctrl_mask;
 	u64 global_ovf_ctrl_mask;
 	u64 reserved_bits;
+	u64 raw_event_mask;
 	u8 version;
 	struct kvm_pmc gp_counters[INTEL_PMC_MAX_GENERIC];
 	struct kvm_pmc fixed_counters[INTEL_PMC_MAX_FIXED];
arch/x86/include/asm/msi.h +11 -8
index b85147d75626..d71c7e8b738d 100644
@@ -12,14 +12,17 @@ int pci_msi_prepare(struct irq_domain *domain, struct device *dev, int nvec,
 /* Structs and defines for the X86 specific MSI message format */
 
 typedef struct x86_msi_data {
-	u32	vector			:  8,
-		delivery_mode		:  3,
-		dest_mode_logical	:  1,
-		reserved		:  2,
-		active_low		:  1,
-		is_level		:  1;
-
-	u32	dmar_subhandle;
+	union {
+		struct {
+			u32	vector			:  8,
+				delivery_mode		:  3,
+				dest_mode_logical	:  1,
+				reserved		:  2,
+				active_low		:  1,
+				is_level		:  1;
+		};
+		u32	dmar_subhandle;
+	};
 } __attribute__ ((packed)) arch_msi_msg_data_t;
 #define arch_msi_msg_data	x86_msi_data
 
arch/x86/include/asm/perf_event.h +5 -0
index 8fc1b5003713..a2b6626c681f 100644
@@ -241,6 +241,11 @@ struct x86_pmu_capability {
 #define INTEL_PMC_IDX_FIXED_SLOTS	(INTEL_PMC_IDX_FIXED + 3)
 #define INTEL_PMC_MSK_FIXED_SLOTS	(1ULL << INTEL_PMC_IDX_FIXED_SLOTS)
 
+static inline bool use_fixed_pseudo_encoding(u64 code)
+{
+	return !(code & 0xff);
+}
+
 /*
  * We model BTS tracing as another fixed-mode PMC.
  *
arch/x86/kernel/fpu/xstate.c +1 -1
index d28829403ed0..fc1ab0116f4e 100644
@@ -1626,7 +1626,7 @@ static int __xstate_request_perm(u64 permitted, u64 requested)
 		return ret;
 
 	/* Pairs with the READ_ONCE() in xstate_get_group_perm() */
-	WRITE_ONCE(fpu->perm.__state_perm, requested);
+	WRITE_ONCE(fpu->perm.__state_perm, mask);
 	/* Protected by sighand lock */
 	fpu->perm.__state_size = ksize;
 	fpu->perm.__user_state_size = usize;
arch/x86/kernel/hpet.c +6 -2
index 882213df3713..71f336425e58 100644
@@ -1435,8 +1435,12 @@ irqreturn_t hpet_rtc_interrupt(int irq, void *dev_id)
 	hpet_rtc_timer_reinit();
 	memset(&curr_time, 0, sizeof(struct rtc_time));
 
-	if (hpet_rtc_flags & (RTC_UIE | RTC_AIE))
-		mc146818_get_time(&curr_time);
+	if (hpet_rtc_flags & (RTC_UIE | RTC_AIE)) {
+		if (unlikely(mc146818_get_time(&curr_time) < 0)) {
+			pr_err_ratelimited("unable to read current time from RTC\n");
+			return IRQ_HANDLED;
+		}
+	}
 
 	if (hpet_rtc_flags & RTC_UIE &&
 	    curr_time.tm_sec != hpet_prev_update_sec) {
arch/x86/kernel/static_call.c +2 -3
index 9c407a33a774..af58a5bc17cd 100644
@@ -12,10 +12,9 @@ enum insn_type {
 };
 
 /*
- * data16 data16 xorq %rax, %rax - a single 5 byte instruction that clears %rax
- * The REX.W cancels the effect of any data16.
+ * cs cs cs xorl %eax, %eax - a single 5 byte instruction that clears %[er]ax
  */
-static const u8 xor5rax[] = { 0x66, 0x66, 0x48, 0x31, 0xc0 };
+static const u8 xor5rax[] = { 0x2e, 0x2e, 0x2e, 0x31, 0xc0 };
 
 static void __ref __static_call_transform(void *insn, enum insn_type type, void *func)
 {
arch/x86/kvm/emulate.c +3 -1
index 5705446c1213..769ba8ffd700 100644
@@ -3514,8 +3514,10 @@ static int em_rdpid(struct x86_emulate_ctxt *ctxt)
 {
 	u64 tsc_aux = 0;
 
-	if (ctxt->ops->get_msr(ctxt, MSR_TSC_AUX, &tsc_aux))
+	if (!ctxt->ops->guest_has_rdpid(ctxt))
 		return emulate_ud(ctxt);
+
+	ctxt->ops->get_msr(ctxt, MSR_TSC_AUX, &tsc_aux);
 	ctxt->dst.val = tsc_aux;
 	return X86EMUL_CONTINUE;
 }
arch/x86/kvm/kvm_emulate.h +1 -0
index 68b420289d7e..fb09cd22cb7f 100644
@@ -226,6 +226,7 @@ struct x86_emulate_ops {
 	bool (*guest_has_long_mode)(struct x86_emulate_ctxt *ctxt);
 	bool (*guest_has_movbe)(struct x86_emulate_ctxt *ctxt);
 	bool (*guest_has_fxsr)(struct x86_emulate_ctxt *ctxt);
+	bool (*guest_has_rdpid)(struct x86_emulate_ctxt *ctxt);
 
 	void (*set_nmi_mask)(struct x86_emulate_ctxt *ctxt, bool masked);
 
arch/x86/kvm/pmu.c +7 -11
index de955ca58d17..227b06dd1fea 100644
@@ -96,8 +96,7 @@ static void kvm_perf_overflow_intr(struct perf_event *perf_event,
 
 static void pmc_reprogram_counter(struct kvm_pmc *pmc, u32 type,
 				  u64 config, bool exclude_user,
-				  bool exclude_kernel, bool intr,
-				  bool in_tx, bool in_tx_cp)
+				  bool exclude_kernel, bool intr)
 {
 	struct perf_event *event;
 	struct perf_event_attr attr = {
@@ -113,16 +112,14 @@ static void pmc_reprogram_counter(struct kvm_pmc *pmc, u32 type,
 
 	attr.sample_period = get_sample_period(pmc, pmc->counter);
 
-	if (in_tx)
-		attr.config |= HSW_IN_TX;
-	if (in_tx_cp) {
+	if ((attr.config & HSW_IN_TX_CHECKPOINTED) &&
+	    guest_cpuid_is_intel(pmc->vcpu)) {
 		/*
 		 * HSW_IN_TX_CHECKPOINTED is not supported with nonzero
 		 * period. Just clear the sample period so at least
 		 * allocating the counter doesn't fail.
 		 */
 		attr.sample_period = 0;
-		attr.config |= HSW_IN_TX_CHECKPOINTED;
 	}
 
 	event = perf_event_create_kernel_counter(&attr, -1, current,
@@ -178,6 +175,7 @@ void reprogram_gp_counter(struct kvm_pmc *pmc, u64 eventsel)
 	struct kvm *kvm = pmc->vcpu->kvm;
 	struct kvm_pmu_event_filter *filter;
 	int i;
+	struct kvm_pmu *pmu = vcpu_to_pmu(pmc->vcpu);
 	bool allow_event = true;
 
 	if (eventsel & ARCH_PERFMON_EVENTSEL_PIN_CONTROL)
@@ -217,7 +215,7 @@ void reprogram_gp_counter(struct kvm_pmc *pmc, u64 eventsel)
 	}
 
 	if (type == PERF_TYPE_RAW)
-		config = eventsel & AMD64_RAW_EVENT_MASK;
+		config = eventsel & pmu->raw_event_mask;
 
 	if (pmc->current_config == eventsel && pmc_resume_counter(pmc))
 		return;
@@ -228,9 +226,7 @@ void reprogram_gp_counter(struct kvm_pmc *pmc, u64 eventsel)
 	pmc_reprogram_counter(pmc, type, config,
 			      !(eventsel & ARCH_PERFMON_EVENTSEL_USR),
 			      !(eventsel & ARCH_PERFMON_EVENTSEL_OS),
-			      eventsel & ARCH_PERFMON_EVENTSEL_INT,
-			      (eventsel & HSW_IN_TX),
-			      (eventsel & HSW_IN_TX_CHECKPOINTED));
+			      eventsel & ARCH_PERFMON_EVENTSEL_INT);
 }
 EXPORT_SYMBOL_GPL(reprogram_gp_counter);
 
@@ -266,7 +262,7 @@ void reprogram_fixed_counter(struct kvm_pmc *pmc, u8 ctrl, int idx)
 			      kvm_x86_ops.pmu_ops->find_fixed_event(idx),
 			      !(en_field & 0x2), /* exclude user */
 			      !(en_field & 0x1), /* exclude kernel */
-			      pmi, false, false);
+			      pmi);
 }
 EXPORT_SYMBOL_GPL(reprogram_fixed_counter);
 
arch/x86/kvm/svm/avic.c +1 -6
index 72713324f3bf..9399550a461c 100644
@@ -949,15 +949,10 @@ avic_update_iommu_vcpu_affinity(struct kvm_vcpu *vcpu, int cpu, bool r)
 void avic_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
 {
 	u64 entry;
-	/* ID = 0xff (broadcast), ID > 0xff (reserved) */
 	int h_physical_id = kvm_cpu_get_apicid(cpu);
 	struct vcpu_svm *svm = to_svm(vcpu);
 
-	/*
-	 * Since the host physical APIC id is 8 bits,
-	 * we can support host APIC ID upto 255.
-	 */
-	if (WARN_ON(h_physical_id > AVIC_PHYSICAL_ID_ENTRY_HOST_PHYSICAL_ID_MASK))
+	if (WARN_ON(h_physical_id & ~AVIC_PHYSICAL_ID_ENTRY_HOST_PHYSICAL_ID_MASK))
 		return;
 
 	entry = READ_ONCE(*(svm->avic_physical_id_cache));
arch/x86/kvm/svm/pmu.c +4 -5
index 7fadfe3c67e7..39ee0e271d9c 100644
@@ -260,12 +260,10 @@ static int amd_pmu_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
 	/* MSR_EVNTSELn */
 	pmc = get_gp_pmc_amd(pmu, msr, PMU_TYPE_EVNTSEL);
 	if (pmc) {
-		if (data == pmc->eventsel)
-			return 0;
-		if (!(data & pmu->reserved_bits)) {
+		data &= ~pmu->reserved_bits;
+		if (data != pmc->eventsel)
 			reprogram_gp_counter(pmc, data);
-			return 0;
-		}
+		return 0;
 	}
 
 	return 1;
@@ -282,6 +280,7 @@ static void amd_pmu_refresh(struct kvm_vcpu *vcpu)
 
 	pmu->counter_bitmask[KVM_PMC_GP] = ((u64)1 << 48) - 1;
 	pmu->reserved_bits = 0xfffffff000280000ull;
+	pmu->raw_event_mask = AMD64_RAW_EVENT_MASK;
 	pmu->version = 1;
 	/* not applicable to AMD; but clean them to prevent any fall out */
 	pmu->counter_bitmask[KVM_PMC_FIXED] = 0;
arch/x86/kvm/svm/svm.h +3 -1
index 1b460e539926..f7caba158cc7 100644
@@ -22,6 +22,8 @@
 #include <asm/svm.h>
 #include <asm/sev-common.h>
 
+#include "kvm_cache_regs.h"
+
 #define __sme_page_pa(x) __sme_set(page_to_pfn(x) << PAGE_SHIFT)
 
 #define	IOPM_SIZE PAGE_SIZE * 3
@@ -508,7 +510,7 @@ extern struct kvm_x86_nested_ops svm_nested_ops;
 #define AVIC_LOGICAL_ID_ENTRY_VALID_BIT			31
 #define AVIC_LOGICAL_ID_ENTRY_VALID_MASK		(1 << 31)
 
-#define AVIC_PHYSICAL_ID_ENTRY_HOST_PHYSICAL_ID_MASK	(0xFFULL)
+#define AVIC_PHYSICAL_ID_ENTRY_HOST_PHYSICAL_ID_MASK	GENMASK_ULL(11, 0)
 #define AVIC_PHYSICAL_ID_ENTRY_BACKING_PAGE_MASK	(0xFFFFFFFFFFULL << 12)
 #define AVIC_PHYSICAL_ID_ENTRY_IS_RUNNING_MASK		(1ULL << 62)
 #define AVIC_PHYSICAL_ID_ENTRY_VALID_MASK		(1ULL << 63)
arch/x86/kvm/svm/svm_onhyperv.c +0 -1
index 98aa981c04ec..8cdc62c74a96 100644
@@ -4,7 +4,6 @@
  */
 
 #include <linux/kvm_host.h>
-#include "kvm_cache_regs.h"
 
 #include <asm/mshyperv.h>
 
arch/x86/kvm/vmx/pmu_intel.c +11 -3
index 60563a45f3eb..ee2452215e93 100644
@@ -395,6 +395,7 @@ static int intel_pmu_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
 	struct kvm_pmc *pmc;
 	u32 msr = msr_info->index;
 	u64 data = msr_info->data;
+	u64 reserved_bits;
 
 	switch (msr) {
 	case MSR_CORE_PERF_FIXED_CTR_CTRL:
@@ -449,7 +450,11 @@ static int intel_pmu_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
 		} else if ((pmc = get_gp_pmc(pmu, msr, MSR_P6_EVNTSEL0))) {
 			if (data == pmc->eventsel)
 				return 0;
-			if (!(data & pmu->reserved_bits)) {
+			reserved_bits = pmu->reserved_bits;
+			if ((pmc->idx == 2) &&
+			    (pmu->raw_event_mask & HSW_IN_TX_CHECKPOINTED))
+				reserved_bits ^= HSW_IN_TX_CHECKPOINTED;
+			if (!(data & reserved_bits)) {
 				reprogram_gp_counter(pmc, data);
 				return 0;
 			}
@@ -476,6 +481,7 @@ static void intel_pmu_refresh(struct kvm_vcpu *vcpu)
 	pmu->counter_bitmask[KVM_PMC_FIXED] = 0;
 	pmu->version = 0;
 	pmu->reserved_bits = 0xffffffff00200000ull;
+	pmu->raw_event_mask = X86_RAW_EVENT_MASK;
 
 	entry = kvm_find_cpuid_entry(vcpu, 0xa, 0);
 	if (!entry)
@@ -522,8 +528,10 @@ static void intel_pmu_refresh(struct kvm_vcpu *vcpu)
 	entry = kvm_find_cpuid_entry(vcpu, 7, 0);
 	if (entry &&
 	    (boot_cpu_has(X86_FEATURE_HLE) || boot_cpu_has(X86_FEATURE_RTM)) &&
-	    (entry->ebx & (X86_FEATURE_HLE|X86_FEATURE_RTM)))
-		pmu->reserved_bits ^= HSW_IN_TX|HSW_IN_TX_CHECKPOINTED;
+	    (entry->ebx & (X86_FEATURE_HLE|X86_FEATURE_RTM))) {
+		pmu->reserved_bits ^= HSW_IN_TX;
+		pmu->raw_event_mask |= (HSW_IN_TX|HSW_IN_TX_CHECKPOINTED);
+	}
 
 	bitmap_set(pmu->all_valid_pmc_idx,
 		0, pmu->nr_arch_gp_counters);
arch/x86/kvm/x86.c +6 -0
index ff181a6c1005..08522041df59 100644
@@ -7466,6 +7466,11 @@ static bool emulator_guest_has_fxsr(struct x86_emulate_ctxt *ctxt)
 	return guest_cpuid_has(emul_to_vcpu(ctxt), X86_FEATURE_FXSR);
 }
 
+static bool emulator_guest_has_rdpid(struct x86_emulate_ctxt *ctxt)
+{
+	return guest_cpuid_has(emul_to_vcpu(ctxt), X86_FEATURE_RDPID);
+}
+
 static ulong emulator_read_gpr(struct x86_emulate_ctxt *ctxt, unsigned reg)
 {
 	return kvm_register_read_raw(emul_to_vcpu(ctxt), reg);
@@ -7548,6 +7553,7 @@ static const struct x86_emulate_ops emulate_ops = {
 	.guest_has_long_mode = emulator_guest_has_long_mode,
 	.guest_has_movbe     = emulator_guest_has_movbe,
 	.guest_has_fxsr      = emulator_guest_has_fxsr,
+	.guest_has_rdpid     = emulator_guest_has_rdpid,
 	.set_nmi_mask        = emulator_set_nmi_mask,
 	.get_hflags          = emulator_get_hflags,
 	.exiting_smm         = emulator_exiting_smm,
arch/x86/mm/tlb.c +5 -32
index 59ba2968af1b..511172d70825 100644
@@ -854,13 +854,11 @@ static void flush_tlb_func(void *info)
 			nr_invalidate);
 }
 
-static bool tlb_is_not_lazy(int cpu)
+static bool tlb_is_not_lazy(int cpu, void *data)
 {
 	return !per_cpu(cpu_tlbstate_shared.is_lazy, cpu);
 }
 
-static DEFINE_PER_CPU(cpumask_t, flush_tlb_mask);
-
 DEFINE_PER_CPU_SHARED_ALIGNED(struct tlb_state_shared, cpu_tlbstate_shared);
 EXPORT_PER_CPU_SYMBOL(cpu_tlbstate_shared);
 
@@ -889,36 +887,11 @@ STATIC_NOPV void native_flush_tlb_multi(const struct cpumask *cpumask,
 	 * up on the new contents of what used to be page tables, while
 	 * doing a speculative memory access.
 	 */
-	if (info->freed_tables) {
+	if (info->freed_tables)
 		on_each_cpu_mask(cpumask, flush_tlb_func, (void *)info, true);
-	} else {
-		/*
-		 * Although we could have used on_each_cpu_cond_mask(),
-		 * open-coding it has performance advantages, as it eliminates
-		 * the need for indirect calls or retpolines. In addition, it
-		 * allows to use a designated cpumask for evaluating the
-		 * condition, instead of allocating one.
-		 *
-		 * This code works under the assumption that there are no nested
-		 * TLB flushes, an assumption that is already made in
-		 * flush_tlb_mm_range().
-		 *
-		 * cond_cpumask is logically a stack-local variable, but it is
-		 * more efficient to have it off the stack and not to allocate
-		 * it on demand. Preemption is disabled and this code is
-		 * non-reentrant.
-		 */
-		struct cpumask *cond_cpumask = this_cpu_ptr(&flush_tlb_mask);
-		int cpu;
-
-		cpumask_clear(cond_cpumask);
-
-		for_each_cpu(cpu, cpumask) {
-			if (tlb_is_not_lazy(cpu))
-				__cpumask_set_cpu(cpu, cond_cpumask);
-		}
-		on_each_cpu_mask(cond_cpumask, flush_tlb_func, (void *)info, true);
-	}
+	else
+		on_each_cpu_cond_mask(tlb_is_not_lazy, flush_tlb_func,
+				(void *)info, 1, cpumask);
 }
 
 void flush_tlb_multi(const struct cpumask *cpumask,
arch/x86/power/cpu.c +19 -2
index 9f2b251e83c5..3822666fb73d 100644
@@ -40,7 +40,8 @@ static void msr_save_context(struct saved_context *ctxt)
 	struct saved_msr *end = msr + ctxt->saved_msrs.num;
 
 	while (msr < end) {
-		msr->valid = !rdmsrl_safe(msr->info.msr_no, &msr->info.reg.q);
+		if (msr->valid)
+			rdmsrl(msr->info.msr_no, msr->info.reg.q);
 		msr++;
 	}
 }
@@ -424,8 +425,10 @@ static int msr_build_context(const u32 *msr_id, const int num)
 	}
 
 	for (i = saved_msrs->num, j = 0; i < total_num; i++, j++) {
+		u64 dummy;
+
 		msr_array[i].info.msr_no	= msr_id[j];
-		msr_array[i].valid		= false;
+		msr_array[i].valid		= !rdmsrl_safe(msr_id[j], &dummy);
 		msr_array[i].info.reg.q		= 0;
 	}
 	saved_msrs->num   = total_num;
@@ -500,10 +503,24 @@ static int pm_cpu_check(const struct x86_cpu_id *c)
 	return ret;
 }
 
+static void pm_save_spec_msr(void)
+{
+	u32 spec_msr_id[] = {
+		MSR_IA32_SPEC_CTRL,
+		MSR_IA32_TSX_CTRL,
+		MSR_TSX_FORCE_ABORT,
+		MSR_IA32_MCU_OPT_CTRL,
+		MSR_AMD64_LS_CFG,
+	};
+
+	msr_build_context(spec_msr_id, ARRAY_SIZE(spec_msr_id));
+}
+
 static int pm_check_save_msr(void)
 {
 	dmi_check_system(msr_save_dmi_table);
 	pm_cpu_check(msr_save_cpu_table);
+	pm_save_spec_msr();
 
 	return 0;
 }
arch/x86/xen/smp_hvm.c +6 -0
index 6ff3c887e0b9..b70afdff419c 100644
@@ -19,6 +19,12 @@ static void __init xen_hvm_smp_prepare_boot_cpu(void)
 	 */
 	xen_vcpu_setup(0);
 
+	/*
+	 * Called again in case the kernel boots on vcpu >= MAX_VIRT_CPUS.
+	 * Refer to comments in xen_hvm_init_time_ops().
+	 */
+	xen_hvm_init_time_ops();
+
 	/*
 	 * The alternative logic (which patches the unlock/lock) runs before
 	 * the smp bootup up code is activated. Hence we need to set this up
arch/x86/xen/time.c +23 -1
index d9c945ee1100..9ef0a5cca96e 100644
@@ -558,6 +558,11 @@ static void xen_hvm_setup_cpu_clockevents(void)
 
 void __init xen_hvm_init_time_ops(void)
 {
+	static bool hvm_time_initialized;
+
+	if (hvm_time_initialized)
+		return;
+
 	/*
 	 * vector callback is needed otherwise we cannot receive interrupts
 	 * on cpu > 0 and at this point we don't know how many cpus are
@@ -567,7 +572,22 @@ void __init xen_hvm_init_time_ops(void)
 		return;
 
 	if (!xen_feature(XENFEAT_hvm_safe_pvclock)) {
-		pr_info("Xen doesn't support pvclock on HVM, disable pv timer");
+		pr_info_once("Xen doesn't support pvclock on HVM, disable pv timer");
+		return;
+	}
+
+	/*
+	 * Only MAX_VIRT_CPUS 'vcpu_info' are embedded inside 'shared_info'.
+	 * The __this_cpu_read(xen_vcpu) is still NULL when Xen HVM guest
+	 * boots on vcpu >= MAX_VIRT_CPUS (e.g., kexec), To access
+	 * __this_cpu_read(xen_vcpu) via xen_clocksource_read() will panic.
+	 *
+	 * The xen_hvm_init_time_ops() should be called again later after
+	 * __this_cpu_read(xen_vcpu) is available.
+	 */
+	if (!__this_cpu_read(xen_vcpu)) {
+		pr_info("Delay xen_init_time_common() as kernel is running on vcpu=%d\n",
+			xen_vcpu_nr(0));
 		return;
 	}
 
@@ -577,6 +597,8 @@ void __init xen_hvm_init_time_ops(void)
 	x86_cpuinit.setup_percpu_clockev = xen_hvm_setup_cpu_clockevents;
 
 	x86_platform.set_wallclock = xen_set_wallclock;
+
+	hvm_time_initialized = true;
 }
 #endif
 
arch/xtensa/boot/dts/xtfpga-flash-128m.dtsi +4 -4
index 9bf8bad1dd18..c33932568aa7 100644
@@ -8,19 +8,19 @@ flash: flash@00000000 {
 			reg = <0x00000000 0x08000000>;
 			bank-width = <2>;
 			device-width = <2>;
-			partition@0x0 {
+			partition@0 {
 				label = "data";
 				reg = <0x00000000 0x06000000>;
 			};
-			partition@0x6000000 {
+			partition@6000000 {
 				label = "boot loader area";
 				reg = <0x06000000 0x00800000>;
 			};
-			partition@0x6800000 {
+			partition@6800000 {
 				label = "kernel image";
 				reg = <0x06800000 0x017e0000>;
 			};
-			partition@0x7fe0000 {
+			partition@7fe0000 {
 				label = "boot environment";
 				reg = <0x07fe0000 0x00020000>;
 			};
arch/xtensa/boot/dts/xtfpga-flash-16m.dtsi +4 -4
index 40c2f81f7cb6..7bde2ab2d6fb 100644
@@ -8,19 +8,19 @@ flash: flash@08000000 {
 			reg = <0x08000000 0x01000000>;
 			bank-width = <2>;
 			device-width = <2>;
-			partition@0x0 {
+			partition@0 {
 				label = "boot loader area";
 				reg = <0x00000000 0x00400000>;
 			};
-			partition@0x400000 {
+			partition@400000 {
 				label = "kernel image";
 				reg = <0x00400000 0x00600000>;
 			};
-			partition@0xa00000 {
+			partition@a00000 {
 				label = "data";
 				reg = <0x00a00000 0x005e0000>;
 			};
-			partition@0xfe0000 {
+			partition@fe0000 {
 				label = "boot environment";
 				reg = <0x00fe0000 0x00020000>;
 			};
arch/xtensa/boot/dts/xtfpga-flash-4m.dtsi +2 -2
index fb8d3a9f33c2..0655b868749a 100644
@@ -8,11 +8,11 @@ flash: flash@08000000 {
 			reg = <0x08000000 0x00400000>;
 			bank-width = <2>;
 			device-width = <2>;
-			partition@0x0 {
+			partition@0 {
 				label = "boot loader area";
 				reg = <0x00000000 0x003f0000>;
 			};
-			partition@0x3f0000 {
+			partition@3f0000 {
 				label = "boot environment";
 				reg = <0x003f0000 0x00010000>;
 			};
drivers/ata/sata_dwc_460ex.c +5 -1
index 338c2e50f759..29e2b0dfba30 100644
@@ -145,7 +145,11 @@ struct sata_dwc_device {
 #endif
 };
 
-#define SATA_DWC_QCMD_MAX	32
+/*
+ * Allow one extra special slot for commands and DMA management
+ * to account for libata internal commands.
+ */
+#define SATA_DWC_QCMD_MAX	(ATA_MAX_QUEUE + 1)
 
 struct sata_dwc_device_port {
 	struct sata_dwc_device	*hsdev;
drivers/base/power/trace.c +5 -1
index 94665037f4a3..72b7a92337b1 100644
@@ -120,7 +120,11 @@ static unsigned int read_magic_time(void)
 	struct rtc_time time;
 	unsigned int val;
 
-	mc146818_get_time(&time);
+	if (mc146818_get_time(&time) < 0) {
+		pr_err("Unable to read current time from RTC\n");
+		return 0;
+	}
+
 	pr_info("RTC time: %ptRt, date: %ptRd\n", &time, &time);
 	val = time.tm_year;				/* 100 years */
 	if (val > 100)
drivers/block/drbd/drbd_int.h +4 -4
index f27d5b0f9a0b..a98bfcf4a5f0 100644
@@ -1642,22 +1642,22 @@ struct sib_info {
 };
 void drbd_bcast_event(struct drbd_device *device, const struct sib_info *sib);
 
-extern void notify_resource_state(struct sk_buff *,
+extern int notify_resource_state(struct sk_buff *,
 				  unsigned int,
 				  struct drbd_resource *,
 				  struct resource_info *,
 				  enum drbd_notification_type);
-extern void notify_device_state(struct sk_buff *,
+extern int notify_device_state(struct sk_buff *,
 				unsigned int,
 				struct drbd_device *,
 				struct device_info *,
 				enum drbd_notification_type);
-extern void notify_connection_state(struct sk_buff *,
+extern int notify_connection_state(struct sk_buff *,
 				    unsigned int,
 				    struct drbd_connection *,
 				    struct connection_info *,
 				    enum drbd_notification_type);
-extern void notify_peer_device_state(struct sk_buff *,
+extern int notify_peer_device_state(struct sk_buff *,
 				     unsigned int,
 				     struct drbd_peer_device *,
 				     struct peer_device_info *,
drivers/block/drbd/drbd_main.c +2 -4
index 53ba2dddba6e..b1676c632996 100644
@@ -2791,12 +2791,12 @@ enum drbd_ret_code drbd_create_device(struct drbd_config_context *adm_ctx, unsig
 
 	if (init_submitter(device)) {
 		err = ERR_NOMEM;
-		goto out_idr_remove_vol;
+		goto out_idr_remove_from_resource;
 	}
 
 	err = add_disk(disk);
 	if (err)
-		goto out_idr_remove_vol;
+		goto out_idr_remove_from_resource;
 
 	/* inherit the connection state */
 	device->state.conn = first_connection(resource)->cstate;
@@ -2810,8 +2810,6 @@ enum drbd_ret_code drbd_create_device(struct drbd_config_context *adm_ctx, unsig
 	drbd_debugfs_device_add(device);
 	return NO_ERROR;
 
-out_idr_remove_vol:
-	idr_remove(&connection->peer_devices, vnr);
 out_idr_remove_from_resource:
 	for_each_connection(connection, resource) {
 		peer_device = idr_remove(&connection->peer_devices, vnr);
drivers/block/drbd/drbd_nl.c +25 -16

156 lines not on this page · raw message

drivers/block/drbd/drbd_state.c +9 -9
index b8a27818ab3f..4ee11aef6672 100644
@@ -1537,7 +1537,7 @@ int drbd_bitmap_io_from_worker(struct drbd_device *device,
 	return rv;
 }
 
-void notify_resource_state_change(struct sk_buff *skb,
+int notify_resource_state_change(struct sk_buff *skb,
 				  unsigned int seq,
 				  struct drbd_resource_state_change *resource_state_change,
 				  enum drbd_notification_type type)
@@ -1550,10 +1550,10 @@ void notify_resource_state_change(struct sk_buff *skb,
 		.res_susp_fen = resource_state_change->susp_fen[NEW],
 	};
 
-	notify_resource_state(skb, seq, resource, &resource_info, type);
+	return notify_resource_state(skb, seq, resource, &resource_info, type);
 }
 
-void notify_connection_state_change(struct sk_buff *skb,
+int notify_connection_state_change(struct sk_buff *skb,
 				    unsigned int seq,
 				    struct drbd_connection_state_change *connection_state_change,
 				    enum drbd_notification_type type)
@@ -1564,10 +1564,10 @@ void notify_connection_state_change(struct sk_buff *skb,
 		.conn_role = connection_state_change->peer_role[NEW],
 	};
 
-	notify_connection_state(skb, seq, connection, &connection_info, type);
+	return notify_connection_state(skb, seq, connection, &connection_info, type);
 }
 
-void notify_device_state_change(struct sk_buff *skb,
+int notify_device_state_change(struct sk_buff *skb,
 				unsigned int seq,
 				struct drbd_device_state_change *device_state_change,
 				enum drbd_notification_type type)
@@ -1577,10 +1577,10 @@ void notify_device_state_change(struct sk_buff *skb,
 		.dev_disk_state = device_state_change->disk_state[NEW],
 	};
 
-	notify_device_state(skb, seq, device, &device_info, type);
+	return notify_device_state(skb, seq, device, &device_info, type);
 }
 
-void notify_peer_device_state_change(struct sk_buff *skb,
+int notify_peer_device_state_change(struct sk_buff *skb,
 				     unsigned int seq,
 				     struct drbd_peer_device_state_change *p,
 				     enum drbd_notification_type type)
@@ -1594,7 +1594,7 @@ void notify_peer_device_state_change(struct sk_buff *skb,
 		.peer_resync_susp_dependency = p->resync_susp_dependency[NEW],
 	};
 
-	notify_peer_device_state(skb, seq, peer_device, &peer_device_info, type);
+	return notify_peer_device_state(skb, seq, peer_device, &peer_device_info, type);
 }
 
 static void broadcast_state_change(struct drbd_state_change *state_change)
@@ -1602,7 +1602,7 @@ static void broadcast_state_change(struct drbd_state_change *state_change)
 	struct drbd_resource_state_change *resource_state_change = &state_change->resource[0];
 	bool resource_state_has_changed;
 	unsigned int n_device, n_connection, n_peer_device, n_peer_devices;
-	void (*last_func)(struct sk_buff *, unsigned int, void *,
+	int (*last_func)(struct sk_buff *, unsigned int, void *,
 			  enum drbd_notification_type) = NULL;
 	void *last_arg = NULL;
 
drivers/block/drbd/drbd_state_change.h +4 -4
index ba80f612d6ab..d5b0479bc9a6 100644
@@ -44,19 +44,19 @@ extern struct drbd_state_change *remember_old_state(struct drbd_resource *, gfp_
 extern void copy_old_to_new_state_change(struct drbd_state_change *);
 extern void forget_state_change(struct drbd_state_change *);
 
-extern void notify_resource_state_change(struct sk_buff *,
+extern int notify_resource_state_change(struct sk_buff *,
 					 unsigned int,
 					 struct drbd_resource_state_change *,
 					 enum drbd_notification_type type);
-extern void notify_connection_state_change(struct sk_buff *,
+extern int notify_connection_state_change(struct sk_buff *,
 					   unsigned int,
 					   struct drbd_connection_state_change *,
 					   enum drbd_notification_type type);
-extern void notify_device_state_change(struct sk_buff *,
+extern int notify_device_state_change(struct sk_buff *,
 				       unsigned int,
 				       struct drbd_device_state_change *,
 				       enum drbd_notification_type type);
-extern void notify_peer_device_state_change(struct sk_buff *,
+extern int notify_peer_device_state_change(struct sk_buff *,
 					    unsigned int,
 					    struct drbd_peer_device_state_change *,
 					    enum drbd_notification_type type);
drivers/char/virtio_console.c +4 -4
index f864b17be7e3..35025f283bf6 100644
@@ -2245,7 +2245,7 @@ static struct virtio_driver virtio_rproc_serial = {
 	.remove =	virtcons_remove,
 };
 
-static int __init init(void)
+static int __init virtio_console_init(void)
 {
 	int err;
 
@@ -2280,7 +2280,7 @@ static int __init init(void)
 	return err;
 }
 
-static void __exit fini(void)
+static void __exit virtio_console_fini(void)
 {
 	reclaim_dma_bufs();
 
@@ -2290,8 +2290,8 @@ static void __exit fini(void)
 	class_destroy(pdrvdata.class);
 	debugfs_remove_recursive(pdrvdata.debugfs_dir);
 }
-module_init(init);
-module_exit(fini);
+module_init(virtio_console_init);
+module_exit(virtio_console_fini);
 
 MODULE_DESCRIPTION("Virtio console driver");
 MODULE_LICENSE("GPL");
drivers/clk/clk-si5341.c +9 -7
index f7b41366666e..4de098b6b0d4 100644
@@ -798,6 +798,15 @@ static unsigned long si5341_output_clk_recalc_rate(struct clk_hw *hw,
 	u32 r_divider;
 	u8 r[3];
 
+	err = regmap_read(output->data->regmap,
+			SI5341_OUT_CONFIG(output), &val);
+	if (err < 0)
+		return err;
+
+	/* If SI5341_OUT_CFG_RDIV_FORCE2 is set, r_divider is 2 */
+	if (val & SI5341_OUT_CFG_RDIV_FORCE2)
+		return parent_rate / 2;
+
 	err = regmap_bulk_read(output->data->regmap,
 			SI5341_OUT_R_REG(output), r, 3);
 	if (err < 0)
@@ -814,13 +823,6 @@ static unsigned long si5341_output_clk_recalc_rate(struct clk_hw *hw,
 	r_divider += 1;
 	r_divider <<= 1;
 
-	err = regmap_read(output->data->regmap,
-			SI5341_OUT_CONFIG(output), &val);
-	if (err < 0)
-		return err;
-
-	if (val & SI5341_OUT_CFG_RDIV_FORCE2)
-		r_divider = 2;
 
 	return parent_rate / r_divider;
 }
drivers/clk/clk.c +24 -0
index 2c5db2df9d42..aaf2793ef638 100644
@@ -631,6 +631,24 @@ static void clk_core_get_boundaries(struct clk_core *core,
 		*max_rate = min(*max_rate, clk_user->max_rate);
 }
 
+static bool clk_core_check_boundaries(struct clk_core *core,
+				      unsigned long min_rate,
+				      unsigned long max_rate)
+{
+	struct clk *user;
+
+	lockdep_assert_held(&prepare_lock);
+
+	if (min_rate > core->max_rate || max_rate < core->min_rate)
+		return false;
+
+	hlist_for_each_entry(user, &core->clks, clks_node)
+		if (min_rate > user->max_rate || max_rate < user->min_rate)
+			return false;
+
+	return true;
+}
+
 void clk_hw_set_rate_range(struct clk_hw *hw, unsigned long min_rate,
 			   unsigned long max_rate)
 {
@@ -2347,6 +2365,11 @@ int clk_set_rate_range(struct clk *clk, unsigned long min, unsigned long max)
 	clk->min_rate = min;
 	clk->max_rate = max;
 
+	if (!clk_core_check_boundaries(clk->core, min, max)) {
+		ret = -EINVAL;
+		goto out;
+	}
+
 	rate = clk_core_get_rate_nolock(clk->core);
 	if (rate < min || rate > max) {
 		/*
@@ -2375,6 +2398,7 @@ int clk_set_rate_range(struct clk *clk, unsigned long min, unsigned long max)
 		}
 	}
 
+out:
 	if (clk->exclusive_count)
 		clk_core_rate_protect(clk->core);
 
drivers/clk/mediatek/clk-mt8192.c +30 -6
index cbc7c6dbe0f4..79ddb3cc0b98 100644
@@ -1236,9 +1236,17 @@ static int clk_mt8192_infra_probe(struct platform_device *pdev)
 
 	r = mtk_clk_register_gates(node, infra_clks, ARRAY_SIZE(infra_clks), clk_data);
 	if (r)
-		return r;
+		goto free_clk_data;
+
+	r = of_clk_add_provider(node, of_clk_src_onecell_get, clk_data);
+	if (r)
+		goto free_clk_data;
+
+	return r;
 
-	return of_clk_add_provider(node, of_clk_src_onecell_get, clk_data);
+free_clk_data:
+	mtk_free_clk_data(clk_data);
+	return r;
 }
 
 static int clk_mt8192_peri_probe(struct platform_device *pdev)
@@ -1253,9 +1261,17 @@ static int clk_mt8192_peri_probe(struct platform_device *pdev)
 
 	r = mtk_clk_register_gates(node, peri_clks, ARRAY_SIZE(peri_clks), clk_data);
 	if (r)
-		return r;
+		goto free_clk_data;
+
+	r = of_clk_add_provider(node, of_clk_src_onecell_get, clk_data);
+	if (r)
+		goto free_clk_data;
 
-	return of_clk_add_provider(node, of_clk_src_onecell_get, clk_data);
+	return r;
+
+free_clk_data:
+	mtk_free_clk_data(clk_data);
+	return r;
 }
 
 static int clk_mt8192_apmixed_probe(struct platform_device *pdev)
@@ -1271,9 +1287,17 @@ static int clk_mt8192_apmixed_probe(struct platform_device *pdev)
 	mtk_clk_register_plls(node, plls, ARRAY_SIZE(plls), clk_data);
 	r = mtk_clk_register_gates(node, apmixed_clks, ARRAY_SIZE(apmixed_clks), clk_data);
 	if (r)
-		return r;
+		goto free_clk_data;
 
-	return of_clk_add_provider(node, of_clk_src_onecell_get, clk_data);
+	r = of_clk_add_provider(node, of_clk_src_onecell_get, clk_data);
+	if (r)
+		goto free_clk_data;
+
+	return r;
+
+free_clk_data:
+	mtk_free_clk_data(clk_data);
+	return r;
 }
 
 static const struct of_device_id of_match_clk_mt8192[] = {
drivers/clk/rockchip/clk-rk3568.c +3 -3
index 69a9e8069a48..604a367bc498 100644
@@ -1038,13 +1038,13 @@ static struct rockchip_clk_branch rk3568_clk_branches[] __initdata = {
 			RK3568_CLKGATE_CON(20), 8, GFLAGS),
 	GATE(HCLK_VOP, "hclk_vop", "hclk_vo", 0,
 			RK3568_CLKGATE_CON(20), 9, GFLAGS),
-	COMPOSITE(DCLK_VOP0, "dclk_vop0", hpll_vpll_gpll_cpll_p, CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT,
+	COMPOSITE(DCLK_VOP0, "dclk_vop0", hpll_vpll_gpll_cpll_p, CLK_SET_RATE_NO_REPARENT,
 			RK3568_CLKSEL_CON(39), 10, 2, MFLAGS, 0, 8, DFLAGS,
 			RK3568_CLKGATE_CON(20), 10, GFLAGS),
-	COMPOSITE(DCLK_VOP1, "dclk_vop1", hpll_vpll_gpll_cpll_p, CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT,
+	COMPOSITE(DCLK_VOP1, "dclk_vop1", hpll_vpll_gpll_cpll_p, CLK_SET_RATE_NO_REPARENT,
 			RK3568_CLKSEL_CON(40), 10, 2, MFLAGS, 0, 8, DFLAGS,
 			RK3568_CLKGATE_CON(20), 11, GFLAGS),
-	COMPOSITE(DCLK_VOP2, "dclk_vop2", hpll_vpll_gpll_cpll_p, 0,
+	COMPOSITE(DCLK_VOP2, "dclk_vop2", hpll_vpll_gpll_cpll_p, CLK_SET_RATE_NO_REPARENT,
 			RK3568_CLKSEL_CON(41), 10, 2, MFLAGS, 0, 8, DFLAGS,
 			RK3568_CLKGATE_CON(20), 12, GFLAGS),
 	GATE(CLK_VOP_PWM, "clk_vop_pwm", "xin24m", 0,
drivers/clk/ti/clk.c +8 -5
index 3da33c786d77..29eafab4353e 100644
@@ -131,7 +131,7 @@ int ti_clk_setup_ll_ops(struct ti_clk_ll_ops *ops)
 void __init ti_dt_clocks_register(struct ti_dt_clk oclks[])
 {
 	struct ti_dt_clk *c;
-	struct device_node *node, *parent;
+	struct device_node *node, *parent, *child;
 	struct clk *clk;
 	struct of_phandle_args clkspec;
 	char buf[64];
@@ -171,10 +171,13 @@ void __init ti_dt_clocks_register(struct ti_dt_clk oclks[])
 		node = of_find_node_by_name(NULL, buf);
 		if (num_args && compat_mode) {
 			parent = node;
-			node = of_get_child_by_name(parent, "clock");
-			if (!node)
-				node = of_get_child_by_name(parent, "clk");
-			of_node_put(parent);
+			child = of_get_child_by_name(parent, "clock");
+			if (!child)
+				child = of_get_child_by_name(parent, "clk");
+			if (child) {
+				of_node_put(parent);
+				node = child;
+			}
 		}
 
 		clkspec.np = node;
drivers/cpufreq/cppc_cpufreq.c +21 -22

80 lines not on this page · raw message

drivers/dma/sh/shdma-base.c +1 -3
index 19ac95c0098f..7f72b3f4cd1a 100644
@@ -115,10 +115,8 @@ static dma_cookie_t shdma_tx_submit(struct dma_async_tx_descriptor *tx)
 		ret = pm_runtime_get(schan->dev);
 
 		spin_unlock_irq(&schan->chan_lock);
-		if (ret < 0) {
+		if (ret < 0)
 			dev_err(schan->dev, "%s(): GET = %d\n", __func__, ret);
-			pm_runtime_put(schan->dev);
-		}
 
 		pm_runtime_barrier(schan->dev);
 
drivers/gpio/gpiolib.c +19 -0
index dcb0dca651ac..7ccdd3820343 100644
@@ -1368,6 +1368,16 @@ static int gpiochip_to_irq(struct gpio_chip *gc, unsigned int offset)
 {
 	struct irq_domain *domain = gc->irq.domain;
 
+#ifdef CONFIG_GPIOLIB_IRQCHIP
+	/*
+	 * Avoid race condition with other code, which tries to lookup
+	 * an IRQ before the irqchip has been properly registered,
+	 * i.e. while gpiochip is still being brought up.
+	 */
+	if (!gc->irq.initialized)
+		return -EPROBE_DEFER;
+#endif
+
 	if (!gpiochip_irqchip_irq_valid(gc, offset))
 		return -ENXIO;
 
@@ -1557,6 +1567,15 @@ static int gpiochip_add_irqchip(struct gpio_chip *gc,
 
 	acpi_gpiochip_request_interrupts(gc);
 
+	/*
+	 * Using barrier() here to prevent compiler from reordering
+	 * gc->irq.initialized before initialization of above
+	 * GPIO chip irq members.
+	 */
+	barrier();
+
+	gc->irq.initialized = true;
+
 	return 0;
 }
 
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +1 -0
index 0311d799a010..894869789041 100644
@@ -1510,6 +1510,7 @@ int amdgpu_cs_fence_to_handle_ioctl(struct drm_device *dev, void *data,
 		return 0;
 
 	default:
+		dma_fence_put(fence);
 		return -EINVAL;
 	}
 }
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c +1 -1
index 1916ec84dd71..e7845df6cad2 100644
@@ -266,7 +266,7 @@ static int amdgpu_gfx_kiq_acquire(struct amdgpu_device *adev,
 		    * adev->gfx.mec.num_pipe_per_mec
 		    * adev->gfx.mec.num_queue_per_pipe;
 
-	while (queue_bit-- >= 0) {
+	while (--queue_bit >= 0) {
 		if (test_bit(queue_bit, adev->gfx.mec.queue_bitmap))
 			continue;
 
drivers/gpu/drm/amd/amdgpu/amdgpu_object.c +2 -1
index 4fcfc2313b8c..ea792b6a1c0f 100644
@@ -1286,7 +1286,8 @@ void amdgpu_bo_release_notify(struct ttm_buffer_object *bo)
 	    !(abo->flags & AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE))
 		return;
 
-	dma_resv_lock(bo->base.resv, NULL);
+	if (WARN_ON_ONCE(!dma_resv_trylock(bo->base.resv)))
+		return;
 
 	r = amdgpu_fill_buffer(abo, AMDGPU_POISON, bo->base.resv, &fence);
 	if (!WARN_ON(r)) {
drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c +2 -2
index da11ceba0698..0ce2a7aa400b 100644
@@ -569,8 +569,8 @@ static void vcn_v3_0_mc_resume_dpg_mode(struct amdgpu_device *adev, int inst_idx
 			AMDGPU_GPU_PAGE_ALIGN(sizeof(struct amdgpu_fw_shared)), 0, indirect);
 
 	/* VCN global tiling registers */
-	WREG32_SOC15_DPG_MODE(0, SOC15_DPG_MODE_OFFSET(
-		UVD, 0, mmUVD_GFX10_ADDR_CONFIG), adev->gfx.config.gb_addr_config, 0, indirect);
+	WREG32_SOC15_DPG_MODE(inst_idx, SOC15_DPG_MODE_OFFSET(
+		UVD, inst_idx, mmUVD_GFX10_ADDR_CONFIG), adev->gfx.config.gb_addr_config, 0, indirect);
 }
 
 static void vcn_v3_0_disable_static_power_gating(struct amdgpu_device *adev, int inst)
drivers/gpu/drm/amd/amdkfd/kfd_chardev.c +0 -4
index 24ebd61395d8..3aaf10c778d7 100644
@@ -1840,13 +1840,9 @@ static int kfd_ioctl_svm(struct file *filep, struct kfd_process *p, void *data)
 	if (!args->start_addr || !args->size)
 		return -EINVAL;
 
-	mutex_lock(&p->mutex);
-
 	r = svm_ioctl(p, args->op, args->start_addr, args->size, args->nattr,
 		      args->attrs);
 
-	mutex_unlock(&p->mutex);
-
 	return r;
 }
 #else
drivers/gpu/drm/amd/amdkfd/kfd_crat.c +1 -1
index c33d689f29e8..e574aa32a111 100644
@@ -1563,7 +1563,7 @@ int kfd_create_crat_image_acpi(void **crat_image, size_t *size)
 	/* Fetch the CRAT table from ACPI */
 	status = acpi_get_table(CRAT_SIGNATURE, 0, &crat_table);
 	if (status == AE_NOT_FOUND) {
-		pr_warn("CRAT table not found\n");
+		pr_info("CRAT table not found\n");
 		return -ENODATA;
 	} else if (ACPI_FAILURE(status)) {
 		const char *err = acpi_format_exception(status);
drivers/gpu/drm/amd/amdkfd/kfd_process.c +0 -1
index b993011cfa64..990228711108 100644
@@ -1150,7 +1150,6 @@ static void kfd_process_notifier_release(struct mmu_notifier *mn,
 
 	cancel_delayed_work_sync(&p->eviction_work);
 	cancel_delayed_work_sync(&p->restore_work);
-	cancel_delayed_work_sync(&p->svms.restore_work);
 
 	mutex_lock(&p->mutex);
 
drivers/gpu/drm/amd/amdkfd/kfd_smi_events.c +15 -9
index ed4bc5f844ce..766b3660c8c8 100644
@@ -270,15 +270,6 @@ int kfd_smi_event_open(struct kfd_dev *dev, uint32_t *fd)
 		return ret;
 	}
 
-	ret = anon_inode_getfd(kfd_smi_name, &kfd_smi_ev_fops, (void *)client,
-			       O_RDWR);
-	if (ret < 0) {
-		kfifo_free(&client->fifo);
-		kfree(client);
-		return ret;
-	}
-	*fd = ret;
-
 	init_waitqueue_head(&client->wait_queue);
 	spin_lock_init(&client->lock);
 	client->events = 0;
@@ -288,5 +279,20 @@ int kfd_smi_event_open(struct kfd_dev *dev, uint32_t *fd)
 	list_add_rcu(&client->list, &dev->smi_clients);
 	spin_unlock(&dev->smi_lock);
 
+	ret = anon_inode_getfd(kfd_smi_name, &kfd_smi_ev_fops, (void *)client,
+			       O_RDWR);
+	if (ret < 0) {
+		spin_lock(&dev->smi_lock);
+		list_del_rcu(&client->list);
+		spin_unlock(&dev->smi_lock);
+
+		synchronize_rcu();
+
+		kfifo_free(&client->fifo);
+		kfree(client);
+		return ret;
+	}
+	*fd = ret;
+
 	return 0;
 }
drivers/gpu/drm/amd/amdkfd/kfd_svm.c +45 -35

152 lines not on this page · raw message

drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +4 -3
index 7cadb9e81d9d..4cb807b7b0d6 100644
@@ -3924,7 +3924,7 @@ static u32 convert_brightness_to_user(const struct amdgpu_dm_backlight_caps *cap
 				 max - min);
 }
 
-static int amdgpu_dm_backlight_set_level(struct amdgpu_display_manager *dm,
+static void amdgpu_dm_backlight_set_level(struct amdgpu_display_manager *dm,
 					 int bl_idx,
 					 u32 user_brightness)
 {
@@ -3955,7 +3955,8 @@ static int amdgpu_dm_backlight_set_level(struct amdgpu_display_manager *dm,
 			DRM_DEBUG("DM: Failed to update backlight on eDP[%d]\n", bl_idx);
 	}
 
-	return rc ? 0 : 1;
+	if (rc)
+		dm->actual_brightness[bl_idx] = user_brightness;
 }
 
 static int amdgpu_dm_backlight_update_status(struct backlight_device *bd)
@@ -9804,7 +9805,7 @@ static void amdgpu_dm_atomic_commit_tail(struct drm_atomic_state *state)
 	/* restore the backlight level */
 	for (i = 0; i < dm->num_of_edps; i++) {
 		if (dm->backlight_dev[i] &&
-		    (amdgpu_dm_backlight_get_level(dm, i) != dm->brightness[i]))
+		    (dm->actual_brightness[i] != dm->brightness[i]))
 			amdgpu_dm_backlight_set_level(dm, i, dm->brightness[i]);
 	}
 #endif
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h +6 -0
index 37e61a88d49e..db85b7c3d052 100644
@@ -540,6 +540,12 @@ struct amdgpu_display_manager {
 	 * cached backlight values.
 	 */
 	u32 brightness[AMDGPU_DM_MAX_NUM_EDP];
+	/**
+	 * @actual_brightness:
+	 *
+	 * last successfully applied backlight values.
+	 */
+	u32 actual_brightness[AMDGPU_DM_MAX_NUM_EDP];
 };
 
 enum dsc_clock_force_state {
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c +60 -20

220 lines not on this page · raw message

drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_psr.c +2 -4
index c022e56f9459..90962fb91916 100644
@@ -74,10 +74,8 @@ bool amdgpu_dm_link_setup_psr(struct dc_stream_state *stream)
 
 	link = stream->link;
 
-	psr_config.psr_version = link->dpcd_caps.psr_caps.psr_version;
-
-	if (psr_config.psr_version > 0) {
-		psr_config.psr_exit_link_training_required = 0x1;
+	if (link->psr_settings.psr_version != DC_PSR_VERSION_UNSUPPORTED) {
+		psr_config.psr_version = link->psr_settings.psr_version;
 		psr_config.psr_frame_capture_indication_req = 0;
 		psr_config.psr_rfb_setup_time = 0x37;
 		psr_config.psr_sdp_transmit_line_num_deadline = 0x20;
drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c +10 -5
index 135ea1c422f2..f46aa7f8c35d 100644
@@ -2124,21 +2124,26 @@ static enum link_training_result dp_perform_8b_10b_link_training(
 				repeater_id--) {
 			status = perform_clock_recovery_sequence(link, lt_settings, repeater_id);
 
-			if (status != LINK_TRAINING_SUCCESS)
+			if (status != LINK_TRAINING_SUCCESS) {
+				repeater_training_done(link, repeater_id);
 				break;
+			}
 
 			status = perform_channel_equalization_sequence(link,
 					lt_settings,
 					repeater_id);
 
+			repeater_training_done(link, repeater_id);
+
 			if (status != LINK_TRAINING_SUCCESS)
 				break;
 
-			repeater_training_done(link, repeater_id);
+			for (lane = 0; lane < LANE_COUNT_DP_MAX; lane++) {
+				lt_settings->dpcd_lane_settings[lane].raw = 0;
+				lt_settings->hw_lane_settings[lane].VOLTAGE_SWING = 0;
+				lt_settings->hw_lane_settings[lane].PRE_EMPHASIS = 0;
+			}
 		}
-
-		for (lane = 0; lane < (uint8_t)lt_settings->link_settings.lane_count; lane++)
-			lt_settings->dpcd_lane_settings[lane].raw = 0;
 	}
 
 	if (status == LINK_TRAINING_SUCCESS) {
drivers/gpu/drm/amd/display/dc/core/dc_resource.c +3 -0
index 6b066ceab412..3aa2040d2475 100644
@@ -1640,6 +1640,9 @@ static bool are_stream_backends_same(
 	if (is_timing_changed(stream_a, stream_b))
 		return false;
 
+	if (stream_a->signal != stream_b->signal)
+		return false;
+
 	if (stream_a->dpms_off != stream_b->dpms_off)
 		return false;
 
drivers/gpu/drm/amd/display/dc/dcn21/dcn21_resource.c +1 -1
index 79313d1ab5d9..d452a0d1777e 100644
@@ -874,7 +874,7 @@ static const struct dc_debug_options debug_defaults_drv = {
 		.clock_trace = true,
 		.disable_pplib_clock_request = true,
 		.min_disp_clk_khz = 100000,
-		.pipe_split_policy = MPC_SPLIT_DYNAMIC,
+		.pipe_split_policy = MPC_SPLIT_AVOID_MULT_DISP,
 		.force_single_disp_pipe_split = false,
 		.disable_dcc = DCC_ENABLE,
 		.vsr_support = true,
drivers/gpu/drm/amd/display/dc/dcn31/dcn31_resource.c +2 -0
index f969ff65f802..d3eb99b5648e 100644
@@ -2013,7 +2013,9 @@ bool dcn31_validate_bandwidth(struct dc *dc,
 
 	BW_VAL_TRACE_COUNT();
 
+	DC_FP_START();
 	out = dcn30_internal_validate_bw(dc, context, pipes, &pipe_cnt, &vlevel, fast_validate);
+	DC_FP_END();
 
 	// Disable fast_validate to set min dcfclk in alculate_wm_and_dlg
 	if (pipe_cnt == 0)
drivers/gpu/drm/amd/pm/amdgpu_dpm.c +11 -0
index 08362d506534..a68496b3f929 100644
@@ -1045,6 +1045,17 @@ bool amdgpu_dpm_is_baco_supported(struct amdgpu_device *adev)
 
 	if (!pp_funcs || !pp_funcs->get_asic_baco_capability)
 		return false;
+	/* Don't use baco for reset in S3.
+	 * This is a workaround for some platforms
+	 * where entering BACO during suspend
+	 * seems to cause reboots or hangs.
+	 * This might be related to the fact that BACO controls
+	 * power to the whole GPU including devices like audio and USB.
+	 * Powering down/up everything may adversely affect these other
+	 * devices.  Needs more investigation.
+	 */
+	if (adev->in_s3)
+		return false;
 
 	if (pp_funcs->get_asic_baco_capability(pp_handle, &baco_cap))
 		return false;
drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu10_hwmgr.c +4 -4
index 1f406f21b452..cf74621f94a7 100644
@@ -773,13 +773,13 @@ static int smu10_dpm_force_dpm_level(struct pp_hwmgr *hwmgr,
 		smum_send_msg_to_smc_with_parameter(hwmgr,
 						PPSMC_MSG_SetHardMinFclkByFreq,
 						hwmgr->display_config->num_display > 3 ?
-						data->clock_vol_info.vdd_dep_on_fclk->entries[0].clk :
+						(data->clock_vol_info.vdd_dep_on_fclk->entries[0].clk / 100) :
 						min_mclk,
 						NULL);
 
 		smum_send_msg_to_smc_with_parameter(hwmgr,
 						PPSMC_MSG_SetHardMinSocclkByFreq,
-						data->clock_vol_info.vdd_dep_on_socclk->entries[0].clk,
+						data->clock_vol_info.vdd_dep_on_socclk->entries[0].clk / 100,
 						NULL);
 		smum_send_msg_to_smc_with_parameter(hwmgr,
 						PPSMC_MSG_SetHardMinVcn,
@@ -792,11 +792,11 @@ static int smu10_dpm_force_dpm_level(struct pp_hwmgr *hwmgr,
 						NULL);
 		smum_send_msg_to_smc_with_parameter(hwmgr,
 						PPSMC_MSG_SetSoftMaxFclkByFreq,
-						data->clock_vol_info.vdd_dep_on_fclk->entries[index_fclk].clk,
+						data->clock_vol_info.vdd_dep_on_fclk->entries[index_fclk].clk / 100,
 						NULL);
 		smum_send_msg_to_smc_with_parameter(hwmgr,
 						PPSMC_MSG_SetSoftMaxSocclkByFreq,
-						data->clock_vol_info.vdd_dep_on_socclk->entries[index_socclk].clk,
+						data->clock_vol_info.vdd_dep_on_socclk->entries[index_socclk].clk / 100,
 						NULL);
 		smum_send_msg_to_smc_with_parameter(hwmgr,
 						PPSMC_MSG_SetSoftMaxVcn,
drivers/gpu/drm/bridge/nwl-dsi.c +12 -6
index 6e484d836cfe..691039aba87f 100644
@@ -861,18 +861,19 @@ nwl_dsi_bridge_mode_set(struct drm_bridge *bridge,
 	memcpy(&dsi->mode, adjusted_mode, sizeof(dsi->mode));
 	drm_mode_debug_printmodeline(adjusted_mode);
 
-	pm_runtime_get_sync(dev);
+	if (pm_runtime_resume_and_get(dev) < 0)
+		return;
 
 	if (clk_prepare_enable(dsi->lcdif_clk) < 0)
-		return;
+		goto runtime_put;
 	if (clk_prepare_enable(dsi->core_clk) < 0)
-		return;
+		goto runtime_put;
 
 	/* Step 1 from DSI reset-out instructions */
 	ret = reset_control_deassert(dsi->rst_pclk);
 	if (ret < 0) {
 		DRM_DEV_ERROR(dev, "Failed to deassert PCLK: %d\n", ret);
-		return;
+		goto runtime_put;
 	}
 
 	/* Step 2 from DSI reset-out instructions */
@@ -882,13 +883,18 @@ nwl_dsi_bridge_mode_set(struct drm_bridge *bridge,
 	ret = reset_control_deassert(dsi->rst_esc);
 	if (ret < 0) {
 		DRM_DEV_ERROR(dev, "Failed to deassert ESC: %d\n", ret);
-		return;
+		goto runtime_put;
 	}
 	ret = reset_control_deassert(dsi->rst_byte);
 	if (ret < 0) {
 		DRM_DEV_ERROR(dev, "Failed to deassert BYTE: %d\n", ret);
-		return;
+		goto runtime_put;
 	}
+
+	return;
+
+runtime_put:
+	pm_runtime_put_sync(dev);
 }
 
 static void
drivers/gpu/drm/drm_edid.c +10 -9
index b8f5419e514a..83e5c115e754 100644
@@ -212,9 +212,7 @@ static const struct edid_quirk {
 
 	/* Windows Mixed Reality Headsets */
 	EDID_QUIRK('A', 'C', 'R', 0x7fce, EDID_QUIRK_NON_DESKTOP),
-	EDID_QUIRK('H', 'P', 'N', 0x3515, EDID_QUIRK_NON_DESKTOP),
 	EDID_QUIRK('L', 'E', 'N', 0x0408, EDID_QUIRK_NON_DESKTOP),
-	EDID_QUIRK('L', 'E', 'N', 0xb800, EDID_QUIRK_NON_DESKTOP),
 	EDID_QUIRK('F', 'U', 'J', 0x1970, EDID_QUIRK_NON_DESKTOP),
 	EDID_QUIRK('D', 'E', 'L', 0x7fce, EDID_QUIRK_NON_DESKTOP),
 	EDID_QUIRK('S', 'E', 'C', 0x144a, EDID_QUIRK_NON_DESKTOP),
@@ -5327,17 +5325,13 @@ u32 drm_add_display_info(struct drm_connector *connector, const struct edid *edi
 	info->width_mm = edid->width_cm * 10;
 	info->height_mm = edid->height_cm * 10;
 
-	info->non_desktop = !!(quirks & EDID_QUIRK_NON_DESKTOP);
-
 	drm_get_monitor_range(connector, edid);
 
-	DRM_DEBUG_KMS("non_desktop set to %d\n", info->non_desktop);
-
 	if (edid->revision < 3)
-		return quirks;
+		goto out;
 
 	if (!(edid->input & DRM_EDID_INPUT_DIGITAL))
-		return quirks;
+		goto out;
 
 	info->color_formats |= DRM_COLOR_FORMAT_RGB444;
 	drm_parse_cea_ext(connector, edid);
@@ -5358,7 +5352,7 @@ u32 drm_add_display_info(struct drm_connector *connector, const struct edid *edi
 
 	/* Only defined for 1.4 with digital displays */
 	if (edid->revision < 4)
-		return quirks;
+		goto out;
 
 	switch (edid->input & DRM_EDID_DIGITAL_DEPTH_MASK) {
 	case DRM_EDID_DIGITAL_DEPTH_6:
@@ -5395,6 +5389,13 @@ u32 drm_add_display_info(struct drm_connector *connector, const struct edid *edi
 
 	drm_update_mso(connector, edid);
 
+out:
+	if (quirks & EDID_QUIRK_NON_DESKTOP) {
+		drm_dbg_kms(connector->dev, "Non-desktop display%s\n",
+			    info->non_desktop ? " (redundant quirk)" : "");
+		info->non_desktop = true;
+	}
+
 	return quirks;
 }
 
drivers/gpu/drm/drm_panel_orientation_quirks.c +6 -0
index b910978d3e48..4e853acfd1e8 100644
@@ -180,6 +180,12 @@ static const struct dmi_system_id orientation_data[] = {
 		  DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "MicroPC"),
 		},
 		.driver_data = (void *)&lcd720x1280_rightside_up,
+	}, {	/* GPD Win Max */
+		.matches = {
+		  DMI_EXACT_MATCH(DMI_SYS_VENDOR, "GPD"),
+		  DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "G1619-01"),
+		},
+		.driver_data = (void *)&lcd800x1280_rightside_up,
 	}, {	/*
 		 * GPD Pocket, note that the the DMI data is less generic then
 		 * it seems, devices with a board-vendor of "AMI Corporation"
drivers/gpu/drm/imx/dw_hdmi-imx.c +7 -1
index 87428fb23d9f..a2277a0d6d06 100644
@@ -222,6 +222,7 @@ static int dw_hdmi_imx_probe(struct platform_device *pdev)
 	struct device_node *np = pdev->dev.of_node;
 	const struct of_device_id *match = of_match_node(dw_hdmi_imx_dt_ids, np);
 	struct imx_hdmi *hdmi;
+	int ret;
 
 	hdmi = devm_kzalloc(&pdev->dev, sizeof(*hdmi), GFP_KERNEL);
 	if (!hdmi)
@@ -243,10 +244,15 @@ static int dw_hdmi_imx_probe(struct platform_device *pdev)
 	hdmi->bridge = of_drm_find_bridge(np);
 	if (!hdmi->bridge) {
 		dev_err(hdmi->dev, "Unable to find bridge\n");
+		dw_hdmi_remove(hdmi->hdmi);
 		return -ENODEV;
 	}
 
-	return component_add(&pdev->dev, &dw_hdmi_imx_ops);
+	ret = component_add(&pdev->dev, &dw_hdmi_imx_ops);
+	if (ret)
+		dw_hdmi_remove(hdmi->hdmi);
+
+	return ret;
 }
 
 static int dw_hdmi_imx_remove(struct platform_device *pdev)
drivers/gpu/drm/imx/imx-ldb.c +2 -0
index e5078d03020d..fb0e951248f6 100644
@@ -572,6 +572,8 @@ static int imx_ldb_panel_ddc(struct device *dev,
 		edidp = of_get_property(child, "edid", &edid_len);
 		if (edidp) {
 			channel->edid = kmemdup(edidp, edid_len, GFP_KERNEL);
+			if (!channel->edid)
+				return -ENOMEM;
 		} else if (!channel->panel) {
 			/* fallback to display-timings node */
 			ret = of_get_drm_display_mode(child,
drivers/gpu/drm/imx/parallel-display.c +3 -1
index 06cb1a59b9bc..63ba2ad84679 100644
@@ -75,8 +75,10 @@ static int imx_pd_connector_get_modes(struct drm_connector *connector)
 		ret = of_get_drm_display_mode(np, &imxpd->mode,
 					      &imxpd->bus_flags,
 					      OF_USE_NATIVE_MODE);
-		if (ret)
+		if (ret) {
+			drm_mode_destroy(connector->dev, mode);
 			return ret;
+		}
 
 		drm_mode_copy(mode, &imxpd->mode);
 		mode->type |= DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED;
drivers/gpu/drm/msm/dsi/dsi_host.c +1 -1
index 0afc3b756f92..09f8fa111dcc 100644
@@ -1871,7 +1871,7 @@ int msm_dsi_host_init(struct msm_dsi *msm_dsi)
 
 	/* do not autoenable, will be enabled later */
 	ret = devm_request_irq(&pdev->dev, msm_host->irq, dsi_host_irq,
-			IRQF_TRIGGER_HIGH | IRQF_ONESHOT | IRQF_NO_AUTOEN,
+			IRQF_TRIGGER_HIGH | IRQF_NO_AUTOEN,
 			"dsi_isr", msm_host);
 	if (ret < 0) {
 		dev_err(&pdev->dev, "failed to request IRQ%u: %d\n",
drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gm20b.c +1 -0
index e1772211b0a4..612310d5d481 100644
@@ -216,6 +216,7 @@ gm20b_pmu = {
 	.intr = gt215_pmu_intr,
 	.recv = gm20b_pmu_recv,
 	.initmsg = gm20b_pmu_initmsg,
+	.reset = gf100_pmu_reset,
 };
 
 #if IS_ENABLED(CONFIG_ARCH_TEGRA_210_SOC)
drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gp102.c +1 -1
index 6bf7fc1bd1e3..1a6f9c3af5ec 100644
@@ -23,7 +23,7 @@
  */
 #include "priv.h"
 
-static void
+void
 gp102_pmu_reset(struct nvkm_pmu *pmu)
 {
 	struct nvkm_device *device = pmu->subdev.device;
drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gp10b.c +1 -0
index ba1583bb618b..94cfb1791af6 100644
@@ -83,6 +83,7 @@ gp10b_pmu = {
 	.intr = gt215_pmu_intr,
 	.recv = gm20b_pmu_recv,
 	.initmsg = gm20b_pmu_initmsg,
+	.reset = gp102_pmu_reset,
 };
 
 #if IS_ENABLED(CONFIG_ARCH_TEGRA_210_SOC)
drivers/gpu/drm/nouveau/nvkm/subdev/pmu/priv.h +1 -0
index bcaade758ff7..21abf31f4442 100644
@@ -41,6 +41,7 @@ int gt215_pmu_send(struct nvkm_pmu *, u32[2], u32, u32, u32, u32);
 
 bool gf100_pmu_enabled(struct nvkm_pmu *);
 void gf100_pmu_reset(struct nvkm_pmu *);
+void gp102_pmu_reset(struct nvkm_pmu *pmu);
 
 void gk110_pmu_pgob(struct nvkm_pmu *, bool);
 
drivers/gpu/drm/panel/panel-ilitek-ili9341.c +3 -1
index 2c3378a259b1..e1542451ef9d 100644
@@ -612,8 +612,10 @@ static int ili9341_dbi_probe(struct spi_device *spi, struct gpio_desc *dc,
 	int ret;
 
 	vcc = devm_regulator_get_optional(dev, "vcc");
-	if (IS_ERR(vcc))
+	if (IS_ERR(vcc)) {
 		dev_err(dev, "get optional vcc failed\n");
+		vcc = NULL;
+	}
 
 	dbidev = devm_drm_dev_alloc(dev, &ili9341_dbi_driver,
 				    struct mipi_dbi_dev, drm);
drivers/gpu/drm/v3d/v3d_gem.c +4 -2
index e47ae40a865a..91bdec3e0ef7 100644
@@ -798,7 +798,7 @@ v3d_submit_cl_ioctl(struct drm_device *dev, void *data,
 
 		if (!render->base.perfmon) {
 			ret = -ENOENT;
-			goto fail;
+			goto fail_perfmon;
 		}
 	}
 
@@ -847,6 +847,7 @@ v3d_submit_cl_ioctl(struct drm_device *dev, void *data,
 
 fail_unreserve:
 	mutex_unlock(&v3d->sched_lock);
[… more lines in the raw message]

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

drivers/hv/channel_mgmt.c +3 -3
index 2829575fd9b7..958b002c57ec 100644

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

drivers/hv/vmbus_drv.c +7 -2
index 44bd0b6ff505..a939ca1a8d54 100644

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

drivers/infiniband/core/cm.c +1 -2
index 35f0d5e7533d..1c107d6d03b9 100644

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

drivers/infiniband/hw/hfi1/mmu_rb.c +6 -0
index 876cc78a22cc..7333646021bb 100644

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

drivers/infiniband/hw/mlx5/mr.c +4 -1
index 2910d7833313..d40a1460ef97 100644

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

drivers/infiniband/sw/rdmavt/qp.c +5 -1
index ae50b56e8913..8ef112f883a7 100644

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

drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c +1 -0
index f5848b351b19..af00714c8056 100644

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

drivers/iommu/omap-iommu.c +1 -1
index 91749654fd49..be60f6f3a265 100644

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

drivers/irqchip/irq-gic-v3-its.c +19 -9
index 0cb584d9815b..fc1bfffc468f 100644

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

drivers/irqchip/irq-gic-v3.c +10 -4
index 86397522e786..b93dd5b9f83d 100644

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

drivers/irqchip/irq-gic.c +6 -0
index b8bb46c65a97..3dbac62c932d 100644

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

drivers/md/dm-ioctl.c +2 -0
index 21fe8652b095..901abd6dea41 100644

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

drivers/md/dm-rq.c +6 -1
index 579ab6183d4d..dffeb47a9efb 100644

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

drivers/md/dm.c +3 -8
index 5fd3660e07b5..af12c0accb59 100644

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

drivers/misc/habanalabs/common/memory.c +11 -19
index 9bd626a00de3..03416b4ee0b7 100644

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

drivers/misc/habanalabs/common/mmu/mmu_v1.c +1 -1
index 0f536f79dd9c..e68e9f71c546 100644

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

drivers/mmc/core/block.c +42 -4

46 lines not on this page · raw message

drivers/mmc/host/mmci_stm32_sdmmc.c +3 -3
index a75d3dd34d18..4cceb9bab036 100644

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

drivers/mmc/host/renesas_sdhi_core.c +2 -2
index f5b2684ad805..ae689bf54686 100644

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

drivers/mmc/host/sdhci-xenon.c +0 -10
index 666cee4c7f7c..08e838400b52 100644

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

drivers/net/can/usb/etas_es58x/es58x_fd.c +1 -2
index 4f0cae29f4d8..b71d1530638b 100644

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

drivers/net/ethernet/broadcom/bnxt/bnxt.c +7 -0
index fab8dd73fa84..fdbcd48d991d 100644

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

drivers/net/ethernet/broadcom/bnxt/bnxt.h +4 -1
index 2846d1475667..bbf93310da1f 100644

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

drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c +1 -3
index f147ad5a6531..a47753a4498e 100644

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

drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c +12 -2
index c8083df5e0ab..148b58f3468b 100644

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

drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.h +2 -0
index 0df40c3beb05..067bb5e821f5 100644

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

drivers/net/ethernet/freescale/dpaa2/dpaa2-ptp.c +3 -1
index 32b5faa87bb8..208a3459f2e2 100644

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

drivers/net/ethernet/intel/ice/ice.h +1 -1
index a47471586047..446373623f47 100644

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

drivers/net/ethernet/intel/ice/ice_lib.c +3 -0
index edba96845baf..a3514a5e067a 100644

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

drivers/net/ethernet/intel/ice/ice_main.c +4 -2
index 523877c2f8b6..65742f296b0d 100644

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

drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c +2 -2
index e17813fb71a1..91182a6bc137 100644

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

drivers/net/ethernet/intel/ice/ice_xsk.c +4 -2
index ac97cf3c5804..28c4f90ad07f 100644

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

drivers/net/ethernet/marvell/mv643xx_eth.c +1 -1
index 0636783f7bc0..ffa131d2bb52 100644

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

drivers/net/ethernet/mellanox/mlx5/core/en_main.c +1 -0
index 22de7327c5a8..4730d6c14aeb 100644

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

drivers/net/ethernet/mellanox/mlx5/core/port.c +0 -23
index 7b16a1188aab..fd79860de723 100644

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

drivers/net/ethernet/qlogic/qed/qed_debug.c +1 -1
index e3edca187ddf..5250d1d1e49c 100644

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

drivers/net/ethernet/qlogic/qede/qede_fp.c +3 -0
index 999abcfe3310..17f895250e04 100644

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

drivers/net/ethernet/sfc/efx_channels.c +82 -66

148 lines not on this page · raw message

drivers/net/ethernet/sfc/rx_common.c +3 -0
index 633ca77a26fd..b925de9b4302 100644

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

drivers/net/ethernet/sfc/tx.c +3 -0
index d16e031e95f4..6983799e1c05 100644

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

drivers/net/ethernet/sfc/tx_common.c +2 -0
index d530cde2b864..9bc8281b7f5b 100644

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

drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c +1 -2
index 5d29f336315b..11e1055e8260 100644

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

drivers/net/macvtap.c +6 -0
index 6b12902a803f..cecf8c63096c 100644

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

drivers/net/mdio/mdio-mscc-miim.c +6 -0
index 17f98f609ec8..5070ca2f2637 100644

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

drivers/net/phy/sfp-bus.c +6 -0
index c1512c9925a6..15aa5ac1ff49 100644

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

drivers/net/tap.c +2 -1
index 8e3a28ba6b28..ba2ef5437e16 100644

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

drivers/net/tun.c +2 -1
index 45a67e72a02c..02de8d998bfa 100644

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

drivers/net/vrf.c +11 -4
index b2242a082431..091dd7caf10c 100644

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

drivers/net/wireless/ath/ath11k/ahb.c +2 -0
index 3fb0aa000825..24bd0520926b 100644

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

drivers/net/wireless/ath/ath11k/mhi.c +1 -1
index 49c0b1ad40a0..f2149241fb13 100644

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

drivers/net/wireless/ath/ath11k/pci.c +10 -0
index 4c348bacf2cb..754578f3dcf1 100644

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

drivers/net/wireless/ath/ath5k/eeprom.c +3 -0
index 1fbc2c19848f..d444b3d70ba2 100644

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

drivers/net/wireless/intel/iwlwifi/fw/api/dbg-tlv.h +2 -3
index 3988f5fea33a..6b2a2828cb83 100644

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

drivers/net/wireless/intel/iwlwifi/mvm/phy-ctxt.c +22 -9
index 035336a9e755..6d82725cb87d 100644

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

drivers/net/wireless/intel/iwlwifi/mvm/scan.c +4 -1
index 960b21719b80..e3eefc55beaf 100644

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

drivers/net/wireless/mediatek/mt76/dma.c +1 -0
index 5e1c1506a4c6..7aecde35cb9a 100644

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

drivers/net/wireless/mediatek/mt76/mt76.h +1 -1
index e2da720a91b6..f740a8ba164d 100644

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

drivers/net/wireless/mediatek/mt76/mt7615/mac.c +1 -1
index ed8f7bc18977..f8f3c1db488c 100644

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

drivers/net/wireless/mediatek/mt76/mt7915/mac.c +1 -0
index a1da514ca256..d1a00cd47073 100644

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

drivers/net/wireless/mediatek/mt76/mt7921/main.c +1 -0
index 8c55562c1a8d..b3bd090a13f4 100644

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

drivers/net/wireless/realtek/rtw89/core.c +4 -1
index d02ec5a735cb..9d9c0984903f 100644

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

drivers/opp/debugfs.c +5 -0
index 596c185b5dda..b5f2f9f39392 100644

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

drivers/opp/opp.h +1 -0
index 407c3bfe51d9..45e3a55239a1 100644

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

drivers/parisc/dino.c +33 -8

41 lines not on this page · raw message

drivers/parisc/gsc.c +31 -0
index ed9371acf37e..ec175ae99873 100644

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

drivers/parisc/gsc.h +1 -0
index 86abad3fa215..73cbd0bb1975 100644

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

drivers/parisc/lasi.c +3 -4
index 4e4fd12c2112..6ef621adb63a 100644

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

drivers/parisc/wax.c +3 -4
index 5b6df1516235..73a2b01f8d9c 100644

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

drivers/pci/controller/pci-aardvark.c +6 -10
index a924564fdbbc..6277b3f3031a 100644

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

drivers/pci/endpoint/functions/pci-epf-test.c +12 -2
index 90d84d3bc868..5b833f00e980 100644

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

drivers/pci/hotplug/pciehp_hpc.c +2 -0
index 0e765e0644c2..60098a701e83 100644

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

drivers/perf/qcom_l2_pmu.c +3 -3
index 7640491aab12..30234c261b05 100644

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

drivers/phy/amlogic/phy-meson-gxl-usb2.c +4 -1
index 2b3c0d730f20..db17c3448bfe 100644

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

drivers/phy/amlogic/phy-meson8b-usb2.c +7 -2
index cf10bed40528..dd96763911b8 100644

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

drivers/platform/x86/hp-wmi.c +63 -30

93 lines not on this page · raw message

drivers/power/supply/axp20x_battery.c +6 -7
index 18a9db0df4b1..335e12cc5e2f 100644

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

drivers/power/supply/axp288_charger.c +12 -2
index ec41f6cd3f93..c498e62ab4e2 100644

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

drivers/ptp/ptp_sysfs.c +2 -2
index 41b92dc2f011..9233bfedeb17 100644

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

drivers/regulator/atc260x-regulator.c +1 -0
index 05147d2c3842..485e58b264c0 100644

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

drivers/regulator/rtq2134-regulator.c +1 -0
index f21e3f8b21f2..8e13dea354a2 100644

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

drivers/rtc/rtc-cmos.c +12 -7
index dc3f8b0dde98..b90a603d6b12 100644

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

drivers/rtc/rtc-mc146818-lib.c +34 -8

42 lines not on this page · raw message

drivers/rtc/rtc-wm8350.c +9 -2
index 2018614f258f..6eaa9321c074 100644

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

drivers/scsi/aha152x.c +2 -4
index d17880b57d17..2449b4215b32 100644

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

drivers/scsi/bfa/bfad_attr.c +13 -13
index c8b947c16069..0254e610ea8f 100644

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

drivers/scsi/hisi_sas/hisi_sas_v3_hw.c +61 -7

68 lines not on this page · raw message

drivers/scsi/libfc/fc_exch.c +1 -0
index 841000445b9a..aa223db4cf53 100644

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

drivers/scsi/mpi3mr/mpi3mr_fw.c +1 -1
index 2daf633ea295..9bb64a7b2af7 100644

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

drivers/scsi/mpi3mr/mpi3mr_os.c +2 -0
index fe10f257b5a4..224a4155d9b4 100644

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

drivers/scsi/mpt3sas/mpt3sas_scsih.c +4 -1
index 00792767c620..7e476f50935b 100644

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

drivers/scsi/mvsas/mv_init.c +2 -2
index dcae2d4464f9..44df7c03aab8 100644

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

drivers/scsi/pm8001/pm8001_hwi.c +20 -7
index 6332cf23bf6b..1a5338917a89 100644

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

drivers/scsi/pm8001/pm8001_sas.c +1 -1
index c0b45b8a513d..2a9ea08c7fe6 100644

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

drivers/scsi/pm8001/pm80xx_hwi.c +10 -7
index 48b0154211c7..d7c88d0f1899 100644

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

drivers/scsi/scsi_scan.c +5 -0
index d0ce723299bf..6bc0f5f511e1 100644

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

drivers/scsi/sd.c +1 -1
index dfca484dd0c4..95f4788619ed 100644

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

drivers/scsi/smartpqi/smartpqi_init.c +25 -20

45 lines not on this page · raw message

drivers/scsi/sr.c +1 -1
index f5a2eed54345..9f683fed8f2c 100644

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

drivers/scsi/ufs/ufshcd-pci.c +17 -0
index f76692053ca1..e892b9feffb1 100644

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

drivers/scsi/ufs/ufshpb.c +5 -6
index ded5ba9b1466..54c3b8f34c0a 100644

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

drivers/scsi/zorro7xx.c +2 -0
index 27b9e2baab1a..7acf9193a9e8 100644

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

drivers/spi/spi-bcm-qspi.c +2 -2
index 44744c55304e..c943908e5281 100644

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

drivers/spi/spi.c +4 -0
index 4e459516b74c..501339121050 100644

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

drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c +3 -0
index b9505bb51f45..de25140159e3 100644

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

drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.c +6 -0
index 7fe20d4b7ba2..b7295236671c 100644

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

drivers/staging/wfx/main.c +6 -1
index 858d778cc589..e3999e95ce85 100644

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

drivers/tty/serial/samsung_tty.c +1 -4
index ca084c10d0bb..78f01ddab1c6 100644

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

drivers/usb/cdns3/cdnsp-debug.h +154 -151

305 lines not on this page · raw message

drivers/usb/dwc3/dwc3-omap.c +1 -1
index e196673f5c64..efaf0db595f4 100644

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

drivers/usb/dwc3/dwc3-pci.c +4 -7
index 06d0e88ec8af..4d9608cc55f7 100644

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

drivers/usb/gadget/udc/tegra-xudc.c +10 -10
index 43f1b0d461c1..be76f891b9c5 100644

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

drivers/usb/host/ehci-pci.c +9 -0
index e87cf3a00fa4..638f03b89739 100644

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

drivers/vdpa/mlx5/net/mlx5_vnet.c +9 -12
index 57bed3d74060..be50c15609b7 100644

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

drivers/vfio/pci/vfio_pci_rdwr.c +2 -0
index 57d3b2cbbd8e..82ac1569deb0 100644

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

drivers/vhost/net.c +1 -0
index 28ef323882fb..792ab5f23647 100644

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

drivers/video/fbdev/core/fbmem.c +8 -1
index b585339509b0..66da07f87065 100644

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

drivers/w1/slaves/w1_therm.c +6 -2
index ca70c5f03206..9cbeeb4923ec 100644

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

fs/btrfs/extent_io.h +1 -1
index 0399cf8e3c32..151e9da5da2d 100644

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

fs/btrfs/inode.c +22 -0
index 68f5a94c82b7..96a8f3d87f68 100644

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

fs/btrfs/ioctl.c +14 -6
index 3d3d6e2f110a..8fdb68ac45d2 100644

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

fs/btrfs/volumes.c +28 -37

65 lines not on this page · raw message

fs/btrfs/zoned.c +5 -4
index e2ccbb339499..e3bf3fc1cbbf 100644

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

fs/ceph/dir.c +10 -1
index 133dbd9338e7..d91fa53e12b3 100644

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

fs/ceph/inode.c +8 -2
index e3322fcb2e8d..6d87991cf67e 100644

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

fs/file_table.c +1 -0
index 45437f8e1003..e8c9016703ad 100644

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

fs/io_uring.c +40 -39

79 lines not on this page · raw message

fs/jfs/inode.c +2 -1
index 57ab424c05ff..072821b50ab9 100644

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

fs/minix/inode.c +2 -1
index a71f1cf894b9..d4bd94234ef7 100644

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

fs/nfs/dir.c +0 -10
index 877f72433f43..503b9eef4533 100644

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

fs/nfs/direct.c +32 -16

48 lines not on this page · raw message

fs/nfs/file.c +2 -2
index 24e7dccce355..510541665219 100644

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

fs/nfs/inode.c +0 -1
index a09d3ff627c2..4da8a4a7bad7 100644

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

fs/nfs/internal.h +17 -0
index 12f6acb483bb..dd62f0525e80 100644

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

fs/nfs/nfs42proc.c +6 -3
index 8b21ff1be717..438de4f93ce7 100644

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

fs/nfs/nfs4file.c +4 -2
index e79ae4cbc395..e34af48fb4f4 100644

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

fs/nfs/nfs4state.c +12 -0
index 499bef9fe118..94f1876afab2 100644

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

fs/nfs/pagelist.c +5 -5
index 815d63080245..9157dd19b8b4 100644

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

fs/nfs/pnfs_nfs.c +6 -2
index 316f68f96e57..657c242a18ff 100644

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

fs/nfs/write.c +17 -17
index e86aff429993..fdaca2a55f36 100644

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

include/linux/gpio/driver.h +9 -0
index a673a359e20b..7b2a13f03cc7 100644

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

include/linux/ipv6.h +1 -1
index a59d25f19385..b8641dc0ee66 100644

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

include/linux/mc146818rtc.h +2 -1
index 0661af17a758..37c74e25f53d 100644

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

include/linux/mmzone.h +7 -4
index aed44e9b5d89..c7a0d500b396 100644

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

include/linux/nfs_fs.h +5 -5
index 29a2ab5de1da..445e9343be3e 100644

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

include/linux/static_call.h +1 -4
index 3e56a9751c06..fcc5b48989b3 100644

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

include/linux/vfio_pci_core.h +9 -0
index ef9a44b6cf5d..ae6f4838ab75 100644

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

include/net/arp.h +1 -0
index 4950191f6b2b..4a23a97195f3 100644

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

include/net/bluetooth/bluetooth.h +8 -6
index a1093994e5e4..720316467127 100644

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

include/net/mctp.h +0 -2
index 7e35ec79b909..204ae3aebc0d 100644

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

include/net/net_namespace.h +6 -0
index bb5fa5914032..2ba326f9e004 100644

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

include/trace/events/sunrpc.h +0 -1
index 54eb1654d9ec..5c6a5e11c4bc 100644

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

include/uapi/linux/bpf.h +4 -2
index 2b3c3f83076c..7cb2e58a67fd 100644

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

include/uapi/linux/can/isotp.h +22 -6
index c55935b64ccc..590f8aea2b6d 100644

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

init/main.c +6 -2
index bb984ed79de0..792a8d9cc560 100644

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

kernel/Makefile +2 -1
index 186c49582f45..8020b4a07b87 100644

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

kernel/events/core.c +3 -0
index a0e196f973b9..85929109e588 100644

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

kernel/sched/core.c +1 -1
index 0e4b8214af31..4810503f79a5 100644

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

kernel/static_call.c +1 -541

542 lines not on this page · raw message

kernel/static_call_inline.c new file +543 -0

543 lines not on this page · raw message

lib/Kconfig.debug +2 -1
index 5e14e32056ad..166e67b98506 100644

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

lib/Kconfig.ubsan +0 -13
index e5372a13511d..236c5cefc4cc 100644

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

lib/logic_iomem.c +4 -4
index 549b22d4bcde..e7ea9b28d8db 100644

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

lib/lz4/lz4_decompress.c +6 -2
index 926f4823d5ea..fd1728d94bab 100644

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

lib/test_ubsan.c +0 -22
index 7e7bbd0f3fd2..2062be1f2e80 100644

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

mm/highmem.c +2 -2
index 762679050c9a..916b66e0776c 100644

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

mm/mempolicy.c +1 -0
index dd5daddb6257..4f724469b7df 100644

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

mm/mremap.c +3 -0
index 002eec83e91e..0e175aef536e 100644

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

mm/rmap.c +24 -1
index 163ac4e6bcee..26d3d4824c3a 100644

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

net/batman-adv/multicast.c +1 -1
index f4004cf0ff6f..9f311fddfaf9 100644

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

net/bluetooth/hci_event.c +2 -1
index 816a0f6823a3..e06802d31469 100644

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

net/bluetooth/l2cap_core.c +1 -0
index 4f8f37599962..e06baffc0dc6 100644

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

net/bpf/test_run.c +2 -2
index 46dd95755967..eb43aaac0392 100644

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

net/can/isotp.c +11 -1
index a95d171b3a64..5bce7c66c121 100644

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

net/core/dev.c +1 -2
index 2078d04c6482..8c47e0f2075d 100644

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

net/core/filter.c +24 -6
index d4cdf11656b3..734defee989f 100644

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

net/core/net_namespace.c +5 -12
index 9702d2b0d920..9745cb6fdf51 100644

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

net/core/rtnetlink.c +12 -1
index 8b5c5703d758..ef56dc8d7c44 100644

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

net/core/skbuff.c +11 -4
index fdd804120600..001152c8def9 100644

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

net/ipv4/arp.c +7 -2
index 857a144b1ea9..5ee382309a9d 100644

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

net/ipv4/fib_frontend.c +4 -1
index 4d61ddd8a0ec..1eb7795edb9d 100644

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

net/ipv4/fib_semantics.c +6 -1
index d244c57b7303..b5563f5ff176 100644

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

net/ipv4/inet_hashtables.c +32 -21

53 lines not on this page · raw message

net/ipv6/addrconf.c +2 -2
index e92ca415756a..4f64fb285af7 100644

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

net/ipv6/inet6_hashtables.c +1 -4
index 67c9114835c8..0a2e7f228391 100644

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

net/ipv6/ip6_input.c +1 -1
index 80256717868e..d4b1e2c5aa76 100644

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

net/ipv6/ip6mr.c +4 -4
index 6a4065d81aa9..91f1c5f56d5f 100644

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

net/ipv6/route.c +1 -1
index 75f916b7460c..cac0d65ed124 100644

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

net/mctp/af_mctp.c +33 -13

46 lines not on this page · raw message

net/mctp/route.c +12 -4
index f8c0cb2de98b..caa042ea777e 100644

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

net/netfilter/nf_conntrack_core.c +68 -17

85 lines not on this page · raw message

net/netlabel/netlabel_kapi.c +2 -0
index beb0e573266d..54c083003947 100644

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

net/openvswitch/actions.c +1 -1
index 780d9e2246f3..8955f31fa47e 100644

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

net/openvswitch/flow_netlink.c +93 -6

99 lines not on this page · raw message

net/rxrpc/net_ns.c +1 -1
index 25bbc4cc8b13..f15d6942da45 100644

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

net/sctp/outqueue.c +5 -1
index ff47091c385e..b3950963fc8f 100644

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

net/smc/af_smc.c +4 -4
index a0fb596459a3..88bf88b7ed78 100644

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

net/smc/smc_core.c +1 -1
index d1cdc891c211..f1dc5b914771 100644

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

net/smc/smc_tx.c +15 -10
index be241d53020f..7b0b6e24582f 100644

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

net/smc/smc_tx.h +1 -0
index 07e6ad76224a..a59f370b8b43 100644

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

net/sunrpc/clnt.c +7 -0
index b36d235d2d6d..0222ad4523a9 100644

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

net/sunrpc/sched.c +0 -7
index ae295844ac55..9020cedb7c95 100644

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

net/sunrpc/svcsock.c +3 -1
index 478f857cdaed..6ea3d87e1147 100644

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

net/sunrpc/xprt.c +5 -18
index 396a74974f60..d557a3cb2ad4 100644

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

net/sunrpc/xprtrdma/transport.c +1 -1
index 6268af7e0310..256b06a92391 100644

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

net/sunrpc/xprtsock.c +52 -18

70 lines not on this page · raw message

net/tls/tls_sw.c +1 -1
index dfe623a4e72f..3aecd770ef99 100644

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

net/wireless/scan.c +8 -1
index 22e92be61938..ea0b768def5e 100644

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

scripts/Makefile.ubsan +0 -1
index 9e2092fd5206..7099c603ff0a 100644

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

tools/build/feature/Makefile +8 -1
index 1480910c792e..de66e1cc0734 100644

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

tools/lib/bpf/Makefile +2 -2
index b393b5e82380..d1b474f3c586 100644

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

tools/perf/Makefile.config +6 -0
index 83c04ebc940c..fecd7e842ffd 100644

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

tools/perf/arch/arm64/util/arm-spe.c +6 -0
index 2100d46ccf5e..bb4ab99afa7f 100644

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

tools/perf/perf.c +1 -1
index 2f6b67189b42..6aae7b6c376b 100644

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

tools/perf/util/session.c +12 -3
index d8857d1b6d7c..c64953dabcf5 100644

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

tools/perf/util/setup.py +6 -2
index 483f05004e68..c255a2c90cd6 100644

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

tools/testing/selftests/bpf/progs/test_sk_lookup.c +1 -2
index 19d2465d9442..4e38234d80c4 100644

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

tools/testing/selftests/bpf/xdpxceiver.c +49 -31

80 lines not on this page · raw message

tools/testing/selftests/bpf/xdpxceiver.h +1 -1
index 2f705f44b748..62a3e6388632 100644

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

virt/kvm/kvm_main.c +1 -1
index 74798e50e3f9..6896d384858a 100644

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

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

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