Skip to contentSkip to conversation

Linux 5.15.34

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

I'm announcing the release of the 5.15.34 kernel.

All users of the 5.15 kernel series must upgrade.

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

thanks,

greg k-h

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

 Makefile                                                       |    2 
 arch/alpha/kernel/rtc.c                                        |    7 
 arch/arm64/include/asm/cputype.h                               |    2 
 arch/arm64/kernel/patching.c                                   |    4 
 arch/arm64/kernel/proton-pack.c                                |    1 
 arch/arm64/kernel/smp.c                                        |    2 
 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/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/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_nl.c                                   |   41 
 drivers/block/drbd/drbd_state.c                                |   18 
 drivers/block/drbd/drbd_state_change.h                         |    8 
 drivers/block/nbd.c                                            |   40 
 drivers/char/virtio_console.c                                  |    8 
 drivers/clk/clk-si5341.c                                       |   16 
 drivers/clk/clk.c                                              |   24 
 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_smi_events.c                    |   24 
 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_resource.c              |    3 
 drivers/gpu/drm/amd/display/dc/dcn21/dcn21_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_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/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                      |    4 
 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/devlink.c              |   12 
 drivers/net/ethernet/mellanox/mlx5/core/en_main.c              |    1 
 drivers/net/ethernet/mellanox/mlx5/core/main.c                 |    2 
 drivers/net/ethernet/mellanox/mlx5/core/port.c                 |   23 
 drivers/net/ethernet/mellanox/mlx5/core/sf/dev/driver.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/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/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/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/smartpqi/smartpqi_init.c                          |   39 
 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/core/mlx5_vdpa.h                             |    2 
 drivers/vdpa/mlx5/net/mlx5_vnet.c                              |  121 +-
 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/ceph/dir.c                                                  |   11 
 fs/ceph/inode.c                                                |   10 
 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/stackdepot.h                                     |    2 
 include/linux/stacktrace.h                                     |    1 
 include/linux/static_call.h                                    |    5 
 include/linux/sunrpc/xprtsock.h                                |    1 
 include/linux/vfio_pci_core.h                                  |    9 
 include/net/arp.h                                              |    1 
 include/net/bluetooth/bluetooth.h                              |   14 
 include/net/net_namespace.h                                    |    6 
 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/stacktrace.c                                            |   30 
 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/stackdepot.c                                               |   24 
 lib/test_ubsan.c                                               |   22 
 mm/highmem.c                                                   |    4 
 mm/kfence/core.c                                               |  156 ++
 mm/kfence/kfence.h                                             |    2 
 mm/memory.c                                                    |   25 
 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/route.c                                               |    2 
 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                                             |   11 
 net/sunrpc/svcsock.c                                           |    4 
 net/sunrpc/xprt.c                                              |   19 
 net/sunrpc/xprtrdma/transport.c                                |    6 
 net/sunrpc/xprtsock.c                                          |   73 -
 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/cgroup/cgroup_util.c                   |    2 
 tools/testing/selftests/cgroup/test_core.c                     |  165 +++
 virt/kvm/kvm_main.c                                            |    2 
 310 files changed, 3564 insertions(+), 1908 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

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

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

Eli Cohen (2):
vdpa/mlx5: Rename control VQ workqueue to vdpa wq vdpa/mlx5: Propagate link status from device to vdpa driver

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

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

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 (4):
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 Revert "nbd: fix possible overflow on 'first_minor' in nbd_dev_add()"

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

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

José Expósito (1):
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 (1):
powerpc: Fix virt_addr_valid() for 64-bit Book3E & 32-bit

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

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

Luis Chamberlain (1):
nbd: add error handling support for add_disk()

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 (2):
ice: synchronize_rcu() when terminating rings
ice: xsk: fix VSI state check in ice_xsk_wakeup()

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

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

Marc Zyngier (2):
irqchip/gic-v3: Fix GICR_CTLR.RWP polling
irqchip/gic-v4: Wait for GICR_VPENDBASER.Dirty to clear before descheduling

Marco Elver (4):
kfence: count unexpectedly skipped allocations
kfence: move saving stack trace of allocations into __kfence_alloc()
kfence: limit currently covered allocations when pool nearly full
stacktrace: move filter_irq_stacks() to kernel/stacktrace.c

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

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 (1):
mctp: Fix check for dev_hard_header() result

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 (5):
SUNRPC/call_alloc: async tasks mustn't block waiting for memory 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

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 Xu (1):
mm: don't skip swap entry even if zap_details specified

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 (1):
drm/amdkfd: Don't take process mutex for svm ioctls

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

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

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

Tejun Heo (3):
selftests: cgroup: Make cg_create() use 0755 for permission instead of 0644
selftests: cgroup: Test open-time credential usage for migration checks
selftests: cgroup: Test open-time cgroup namespace usage for migration checks

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 (9):
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: Prevent immediate close+reconnect
SUNRPC: Don't call connect() more than once on a TCP socket

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 (2):
scsi: ufs: ufshpb: Fix a NULL check on 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

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

Ye Bin (2):
nbd: Fix incorrect error handle when first_minor is illegal in nbd_dev_add
nbd: Fix hungtask when nbd_config_put

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

Zhang Wensheng (1):
nbd: fix possible overflow on 'first_minor' in nbd_dev_add()

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

dann frazier (1):
Revert "net/mlx5: Accept devlink user input after driver initialization complete"

author maintainer
#1 lore raw
Makefile +1 -1
index a3e7c7683bac..b6920025dfa3 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 5
 PATCHLEVEL = 15
-SUBLEVEL = 33
+SUBLEVEL = 34
 EXTRAVERSION =
 NAME = Trick or Treat
 
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/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 6f6ff072acbd..3beaa6640ab3 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/mips/boot/dts/ingenic/jz4780.dtsi +1 -1
index 9e34f433b9b5..efbbddaf0fde 100644
@@ -450,7 +450,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 6f07362de5ce..edd93430b954 100644
@@ -2085,19 +2085,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) {
 			/*
@@ -2305,7 +2305,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 48525e8b5730..71b1bfdadd76 100644
@@ -147,11 +147,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/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 1f96809606ac..819f8c2e2c67 100644
@@ -2798,6 +2798,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 97ede6fb15f2..265cb203d9d5 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
@@ -5466,7 +5466,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 8d55bd11848c..e087cd7837c3 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 01759199d723..d9bb5cdb5db2 100644
@@ -505,6 +505,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/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 ea028e736831..3d68dfb10aaa 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 4cf0938a876b..3747a754a8e8 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 f256f01056bd..62333f9756a3 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 b9d21c526692..3d3f8dfb8045 100644
@@ -947,15 +947,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 06f8034f62e4..3faf1d9c6c91 100644
@@ -261,12 +261,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;
@@ -283,6 +281,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 ff0855c03c91..cf2d8365aeb4 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
@@ -497,7 +499,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 6427d95de01c..7abe77c8b5d0 100644
@@ -396,6 +396,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:
@@ -451,7 +452,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;
 			}
@@ -478,6 +483,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)
@@ -524,8 +530,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 3e606a6940dc..5e2983959f23 100644
@@ -7393,6 +7393,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);
@@ -7475,6 +7480,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 6665f8802098..736008f2fccc 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 5d9181382ce1..0a5766a2f161 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_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/block/nbd.c +20 -20
index 577c7dba5d78..582b23befb5c 100644
@@ -254,7 +254,7 @@ static void nbd_dev_remove(struct nbd_device *nbd)
 	mutex_lock(&nbd_index_mutex);
 	idr_remove(&nbd_index_idr, nbd->index);
 	mutex_unlock(&nbd_index_mutex);
-
+	destroy_workqueue(nbd->recv_workq);
 	kfree(nbd);
 }
 
@@ -1260,10 +1260,6 @@ static void nbd_config_put(struct nbd_device *nbd)
 		kfree(nbd->config);
 		nbd->config = NULL;
 
-		if (nbd->recv_workq)
-			destroy_workqueue(nbd->recv_workq);
-		nbd->recv_workq = NULL;
-
 		nbd->tag_set.timeout = 0;
 		nbd->disk->queue->limits.discard_granularity = 0;
 		nbd->disk->queue->limits.discard_alignment = 0;
@@ -1292,14 +1288,6 @@ static int nbd_start_device(struct nbd_device *nbd)
 		return -EINVAL;
 	}
 
-	nbd->recv_workq = alloc_workqueue("knbd%d-recv",
-					  WQ_MEM_RECLAIM | WQ_HIGHPRI |
-					  WQ_UNBOUND, 0, nbd->index);
-	if (!nbd->recv_workq) {
-		dev_err(disk_to_dev(nbd->disk), "Could not allocate knbd recv work queue.\n");
-		return -ENOMEM;
-	}
-
 	blk_mq_update_nr_hw_queues(&nbd->tag_set, config->num_connections);
 	nbd->pid = task_pid_nr(current);
 
@@ -1725,6 +1713,15 @@ static struct nbd_device *nbd_dev_add(int index, unsigned int refs)
 	}
 	nbd->disk = disk;
 
+	nbd->recv_workq = alloc_workqueue("nbd%d-recv",
+					  WQ_MEM_RECLAIM | WQ_HIGHPRI |
+					  WQ_UNBOUND, 0, nbd->index);
+	if (!nbd->recv_workq) {
+		dev_err(disk_to_dev(nbd->disk), "Could not allocate knbd recv work queue.\n");
+		err = -ENOMEM;
+		goto out_err_disk;
+	}
+
 	/*
 	 * Tell the block layer that we are not a rotational device
 	 */
@@ -1755,14 +1752,16 @@ static struct nbd_device *nbd_dev_add(int index, unsigned int refs)
 	disk->first_minor = index << part_shift;
 	if (disk->first_minor < index || disk->first_minor > MINORMASK) {
 		err = -EINVAL;
-		goto out_free_idr;
+		goto out_free_work;
 	}
 
 	disk->minors = 1 << part_shift;
 	disk->fops = &nbd_fops;
 	disk->private_data = nbd;
 	sprintf(disk->disk_name, "nbd%d", index);
-	add_disk(disk);
+	err = add_disk(disk);
+	if (err)
+		goto out_free_work;
 
 	/*
 	 * Now publish the device.
@@ -1771,6 +1770,10 @@ static struct nbd_device *nbd_dev_add(int index, unsigned int refs)
 	nbd_total_devices++;
 	return nbd;
 
+out_free_work:
+	destroy_workqueue(nbd->recv_workq);
+out_err_disk:
+	blk_cleanup_disk(disk);
 out_free_idr:
 	mutex_lock(&nbd_index_mutex);
 	idr_remove(&nbd_index_idr, index);
@@ -2024,13 +2027,10 @@ static void nbd_disconnect_and_put(struct nbd_device *nbd)
 	nbd_disconnect(nbd);
 	sock_shutdown(nbd);
 	/*
-	 * Make sure recv thread has finished, so it does not drop the last
-	 * config ref and try to destroy the workqueue from inside the work
-	 * queue. And this also ensure that we can safely call nbd_clear_que()
+	 * Make sure recv thread has finished, we can safely call nbd_clear_que()
 	 * to cancel the inflight I/Os.
 	 */
-	if (nbd->recv_workq)
-		flush_workqueue(nbd->recv_workq);
+	flush_workqueue(nbd->recv_workq);
 	nbd_clear_que(nbd);
 	nbd->task_setup = NULL;
 	mutex_unlock(&nbd->config_lock);
drivers/char/virtio_console.c +4 -4
index 3adf04766e98..77bc993d7513 100644
@@ -2236,7 +2236,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;
 
@@ -2271,7 +2271,7 @@ static int __init init(void)
 	return err;
 }
 
-static void __exit fini(void)
+static void __exit virtio_console_fini(void)
 {
 	reclaim_dma_bufs();
 
@@ -2281,8 +2281,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 5cef73a85901..d6dc58bd07b3 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/rockchip/clk-rk3568.c +3 -3
index 75ca855e720d..6e5440841d1e 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 358f0ad9d0f8..91628edad2c6 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;
 
@@ -1552,6 +1562,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 913f9eaa9cd6..aa823f154199 100644
@@ -1508,6 +1508,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 01a78c786536..d62b770cc9dc 100644
@@ -1343,7 +1343,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 3d18aab88b4e..54b405fc600d 100644
@@ -601,8 +601,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 86afd37b098d..6688129df240 100644
@@ -1807,13 +1807,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_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/display/amdgpu_dm/amdgpu_dm.c +4 -3
index b9859e52ad92..7e9e2eb85eca 100644
@@ -3522,7 +3522,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)
 {
@@ -3550,7 +3550,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)
@@ -9316,7 +9317,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 d1d353a7c77d..46d6e65f6bd4 100644
@@ -446,6 +446,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 70a554f1e725..7072fb2ec07f 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_resource.c +3 -0
index 7ae409f7dcf8..108f3854cd2a 100644
@@ -1599,6 +1599,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 92a308ad1213..fbbdf9976183 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/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_panel_orientation_quirks.c +6 -0
index 448c2f2d803a..f5ab891731d0 100644
@@ -166,6 +166,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 dc85974c7897..eea679a52e86 100644
@@ -1909,7 +1909,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 772b5831bcc6..805d6f6cba0e 100644
@@ -625,7 +625,7 @@ v3d_submit_cl_ioctl(struct drm_device *dev, void *data,
 
 		if (!render->base.perfmon) {
 			ret = -ENOENT;
-			goto fail;
+			goto fail_perfmon;
 		}
 	}
 
@@ -678,6 +678,7 @@ v3d_submit_cl_ioctl(struct drm_device *dev, void *data,
 
 fail_unreserve:
 	mutex_unlock(&v3d->sched_lock);
+fail_perfmon:
 	drm_gem_unlock_reservations(last_job->bo,
 				    last_job->bo_count, &acquire_ctx);
 fail:
@@ -854,7 +855,7 @@ v3d_submit_csd_ioctl(struct drm_device *dev, void *data,
 						     args->perfmon_id);
 		if (!job->base.perfmon) {
 			ret = -ENOENT;
-			goto fail;
+			goto fail_perfmon;
 		}
 	}
 
@@ -886,6 +887,7 @@ v3d_submit_csd_ioctl(struct drm_device *dev, void *data,
 
 fail_unreserve:
 	mutex_unlock(&v3d->sched_lock);
+fail_perfmon:
 	drm_gem_unlock_reservations(clean_job->bo, clean_job->bo_count,
 				    &acquire_ctx);
 fail:
drivers/hv/channel_mgmt.c +3 -3
index 142308526ec6..ce76fc382799 100644
@@ -380,7 +380,7 @@ void vmbus_channel_map_relid(struct vmbus_channel *channel)
 	 * execute:
 	 *
 	 *  (a) In the "normal (i.e., not resuming from hibernation)" path,
-	 *      the full barrier in smp_store_mb() guarantees that the store
+	 *      the full barrier in virt_store_mb() guarantees that the store
 	 *      is propagated to all CPUs before the add_channel_work work
 	 *      is queued.  In turn, add_channel_work is queued before the
 	 *      channel's ring buffer is allocated/initialized and the
@@ -392,14 +392,14 @@ void vmbus_channel_map_relid(struct vmbus_channel *channel)
 	 *      recv_int_page before retrieving the channel pointer from the
 	 *      array of channels.
 	 *
-	 *  (b) In the "resuming from hibernation" path, the smp_store_mb()
+	 *  (b) In the "resuming from hibernation" path, the virt_store_mb()
 	 *      guarantees that the store is propagated to all CPUs before
 	 *      the VMBus connection is marked as ready for the resume event
 	 *      (cf. check_ready_for_resume_event()).  The interrupt handler
 	 *      of the VMBus driver and vmbus_chan_sched() can not run before
 	 *      vmbus_bus_resume() has completed execution (cf. resume_noirq).
 	 */
-	smp_store_mb(
+	virt_store_mb(
 		vmbus_connection.channels[channel->offermsg.child_relid],
 		channel);
 }
drivers/hv/vmbus_drv.c +7 -2
index 44bd0b6ff505..a939ca1a8d54 100644
@@ -2776,10 +2776,15 @@ static void __exit vmbus_exit(void)
 	if (ms_hyperv.misc_features & HV_FEATURE_GUEST_CRASH_MSR_AVAILABLE) {
 		kmsg_dump_unregister(&hv_kmsg_dumper);
 		unregister_die_notifier(&hyperv_die_block);
-		atomic_notifier_chain_unregister(&panic_notifier_list,
-						 &hyperv_panic_block);
 	}
 
+	/*
+	 * The panic notifier is always registered, hence we should
+	 * also unconditionally unregister it here as well.
+	 */
+	atomic_notifier_chain_unregister(&panic_notifier_list,
+					 &hyperv_panic_block);
+
 	free_page((unsigned long)hv_panic_page);
 	unregister_sysctl_table(hv_ctl_table_hdr);
 	hv_ctl_table_hdr = NULL;
drivers/infiniband/core/cm.c +1 -2
index 35f0d5e7533d..1c107d6d03b9 100644
@@ -2824,6 +2824,7 @@ static int cm_dreq_handler(struct cm_work *work)
 	switch (cm_id_priv->id.state) {
 	case IB_CM_REP_SENT:
 	case IB_CM_DREQ_SENT:
+	case IB_CM_MRA_REP_RCVD:
 		ib_cancel_mad(cm_id_priv->msg);
 		break;
 	case IB_CM_ESTABLISHED:
@@ -2831,8 +2832,6 @@ static int cm_dreq_handler(struct cm_work *work)
 		    cm_id_priv->id.lap_state == IB_CM_MRA_LAP_RCVD)
 			ib_cancel_mad(cm_id_priv->msg);
 		break;
-	case IB_CM_MRA_REP_RCVD:
-		break;
 	case IB_CM_TIMEWAIT:
 		atomic_long_inc(&work->port->counters[CM_RECV_DUPLICATES]
 						     [CM_DREQ_COUNTER]);
drivers/infiniband/hw/hfi1/mmu_rb.c +6 -0
index 876cc78a22cc..7333646021bb 100644
@@ -80,6 +80,9 @@ void hfi1_mmu_rb_unregister(struct mmu_rb_handler *handler)
 	unsigned long flags;
 	struct list_head del_list;
 
+	/* Prevent freeing of mm until we are completely finished. */
+	mmgrab(handler->mn.mm);
+
 	/* Unregister first so we don't get any more notifications. */
 	mmu_notifier_unregister(&handler->mn, handler->mn.mm);
 
@@ -102,6 +105,9 @@ void hfi1_mmu_rb_unregister(struct mmu_rb_handler *handler)
 
 	do_remove(handler, &del_list);
 
+	/* Now the mm may be freed. */
+	mmdrop(handler->mn.mm);
+
 	kfree(handler);
 }
 
drivers/infiniband/hw/mlx5/mr.c +4 -1
index 7bb1b9d0941c..cf203f879d34 100644
@@ -536,8 +536,10 @@ static void __cache_work_func(struct mlx5_cache_ent *ent)
 		spin_lock_irq(&ent->lock);
 		if (ent->disabled)
 			goto out;
-		if (need_delay)
+		if (need_delay) {
 			queue_delayed_work(cache->wq, &ent->dwork, 300 * HZ);
+			goto out;
+		}
 		remove_cache_mr_locked(ent);
 		queue_adjust_cache_locked(ent);
 	}
@@ -633,6 +635,7 @@ static void mlx5_mr_cache_free(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr)
 {
 	struct mlx5_cache_ent *ent = mr->cache_ent;
 
+	WRITE_ONCE(dev->cache.last_add, jiffies);
 	spin_lock_irq(&ent->lock);
 	list_add_tail(&mr->list, &ent->head);
 	ent->available_mrs++;
drivers/infiniband/sw/rdmavt/qp.c +5 -1
index ae50b56e8913..8ef112f883a7 100644
@@ -3190,7 +3190,11 @@ void rvt_ruc_loopback(struct rvt_qp *sqp)
 	spin_lock_irqsave(&sqp->s_lock, flags);
 	rvt_send_complete(sqp, wqe, send_status);
 	if (sqp->ibqp.qp_type == IB_QPT_RC) {
-		int lastwqe = rvt_error_qp(sqp, IB_WC_WR_FLUSH_ERR);
+		int lastwqe;
+
+		spin_lock(&sqp->r_lock);
+		lastwqe = rvt_error_qp(sqp, IB_WC_WR_FLUSH_ERR);
+		spin_unlock(&sqp->r_lock);
 
 		sqp->s_flags &= ~RVT_S_BUSY;
 		spin_unlock_irqrestore(&sqp->s_lock, flags);
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c +1 -0
index a388e318f86e..430315135cff 100644
@@ -1552,6 +1552,7 @@ static irqreturn_t arm_smmu_evtq_thread(int irq, void *dev)
 				dev_info(smmu->dev, "\t0x%016llx\n",
 					 (unsigned long long)evt[i]);
 
+			cond_resched();
 		}
 
 		/*
drivers/iommu/omap-iommu.c +1 -1
index 91749654fd49..be60f6f3a265 100644
@@ -1661,7 +1661,7 @@ static struct iommu_device *omap_iommu_probe_device(struct device *dev)
 	num_iommus = of_property_count_elems_of_size(dev->of_node, "iommus",
 						     sizeof(phandle));
 	if (num_iommus < 0)
-		return 0;
+		return ERR_PTR(-ENODEV);
 
 	arch_data = kcalloc(num_iommus + 1, sizeof(*arch_data), GFP_KERNEL);
 	if (!arch_data)
drivers/irqchip/irq-gic-v3-its.c +19 -9
index 0cb584d9815b..fc1bfffc468f 100644
@@ -3007,18 +3007,12 @@ static int __init allocate_lpi_tables(void)
 	return 0;
 }
 
-static u64 its_clear_vpend_valid(void __iomem *vlpi_base, u64 clr, u64 set)
+static u64 read_vpend_dirty_clear(void __iomem *vlpi_base)
 {
 	u32 count = 1000000;	/* 1s! */
 	bool clean;
 	u64 val;
 
-	val = gicr_read_vpendbaser(vlpi_base + GICR_VPENDBASER);
-	val &= ~GICR_VPENDBASER_Valid;
-	val &= ~clr;
-	val |= set;
-	gicr_write_vpendbaser(val, vlpi_base + GICR_VPENDBASER);
-
 	do {
 		val = gicr_read_vpendbaser(vlpi_base + GICR_VPENDBASER);
 		clean = !(val & GICR_VPENDBASER_Dirty);
@@ -3029,10 +3023,26 @@ static u64 its_clear_vpend_valid(void __iomem *vlpi_base, u64 clr, u64 set)
 		}
 	} while (!clean && count);
 
-	if (unlikely(val & GICR_VPENDBASER_Dirty)) {
+	if (unlikely(!clean))
 		pr_err_ratelimited("ITS virtual pending table not cleaning\n");
+
+	return val;
+}
+
+static u64 its_clear_vpend_valid(void __iomem *vlpi_base, u64 clr, u64 set)
+{
+	u64 val;
+
+	/* Make sure we wait until the RD is done with the initial scan */
+	val = read_vpend_dirty_clear(vlpi_base);
+	val &= ~GICR_VPENDBASER_Valid;
+	val &= ~clr;
+	val |= set;
+	gicr_write_vpendbaser(val, vlpi_base + GICR_VPENDBASER);
+
+	val = read_vpend_dirty_clear(vlpi_base);
+	if (unlikely(val & GICR_VPENDBASER_Dirty))
 		val |= GICR_VPENDBASER_PendingLast;
-	}
 
 	return val;
 }
drivers/irqchip/irq-gic-v3.c +10 -4
index 7bbccb13b896..1269284461da 100644
@@ -206,11 +206,11 @@ static inline void __iomem *gic_dist_base(struct irq_data *d)
 	}
 }
 
-static void gic_do_wait_for_rwp(void __iomem *base)
+static void gic_do_wait_for_rwp(void __iomem *base, u32 bit)
 {
 	u32 count = 1000000;	/* 1s! */
 
-	while (readl_relaxed(base + GICD_CTLR) & GICD_CTLR_RWP) {
+	while (readl_relaxed(base + GICD_CTLR) & bit) {
 		count--;
 		if (!count) {
 			pr_err_ratelimited("RWP timeout, gone fishing\n");
@@ -224,13 +224,13 @@ static void gic_do_wait_for_rwp(void __iomem *base)
 /* Wait for completion of a distributor change */
 static void gic_dist_wait_for_rwp(void)
 {
-	gic_do_wait_for_rwp(gic_data.dist_base);
+	gic_do_wait_for_rwp(gic_data.dist_base, GICD_CTLR_RWP);
 }
 
 /* Wait for completion of a redistributor change */
 static void gic_redist_wait_for_rwp(void)
 {
-	gic_do_wait_for_rwp(gic_data_rdist_rd_base());
+	gic_do_wait_for_rwp(gic_data_rdist_rd_base(), GICR_CTLR_RWP);
 }
 
 #ifdef CONFIG_ARM64
@@ -1466,6 +1466,12 @@ static int gic_irq_domain_translate(struct irq_domain *d,
 		if(fwspec->param_count != 2)
 			return -EINVAL;
 
+		if (fwspec->param[0] < 16) {
+			pr_err(FW_BUG "Illegal GSI%d translation request\n",
+			       fwspec->param[0]);
+			return -EINVAL;
+		}
+
 		*hwirq = fwspec->param[0];
 		*type = fwspec->param[1];
 
drivers/irqchip/irq-gic.c +6 -0
index 5f22c9d65e57..99077f30f699 100644
@@ -1085,6 +1085,12 @@ static int gic_irq_domain_translate(struct irq_domain *d,
 		if(fwspec->param_count != 2)
 			return -EINVAL;
 
+		if (fwspec->param[0] < 16) {
+			pr_err(FW_BUG "Illegal GSI%d translation request\n",
+			       fwspec->param[0]);
+			return -EINVAL;
+		}
+
 		*hwirq = fwspec->param[0];
 		*type = fwspec->param[1];
 
drivers/md/dm-ioctl.c +2 -0
index 21fe8652b095..901abd6dea41 100644
@@ -18,6 +18,7 @@
 #include <linux/dm-ioctl.h>
 #include <linux/hdreg.h>
 #include <linux/compat.h>
+#include <linux/nospec.h>
 
 #include <linux/uaccess.h>
 #include <linux/ima.h>
@@ -1788,6 +1789,7 @@ static ioctl_fn lookup_ioctl(unsigned int cmd, int *ioctl_flags)
 	if (unlikely(cmd >= ARRAY_SIZE(_ioctls)))
 		return NULL;
 
+	cmd = array_index_nospec(cmd, ARRAY_SIZE(_ioctls));
 	*ioctl_flags = _ioctls[cmd].flags;
 	return _ioctls[cmd].fn;
 }
drivers/md/dm-rq.c +6 -1
index a896dea9750e..53a9b16c7b2e 100644
@@ -500,8 +500,13 @@ static blk_status_t dm_mq_queue_rq(struct blk_mq_hw_ctx *hctx,
 
 	if (unlikely(!ti)) {
 		int srcu_idx;
-		struct dm_table *map = dm_get_live_table(md, &srcu_idx);
+		struct dm_table *map;
 
+		map = dm_get_live_table(md, &srcu_idx);
+		if (unlikely(!map)) {
+			dm_put_live_table(md, srcu_idx);
+			return BLK_STS_RESOURCE;
+		}
 		ti = dm_table_find_target(map, 0);
 		dm_put_live_table(md, srcu_idx);
 	}
drivers/md/dm.c +3 -8
index 443478a08857..36449422e7e0 100644
@@ -1594,15 +1594,10 @@ static blk_qc_t dm_submit_bio(struct bio *bio)
 	struct dm_table *map;
 
 	map = dm_get_live_table(md, &srcu_idx);
-	if (unlikely(!map)) {
-		DMERR_LIMIT("%s: mapping table unavailable, erroring io",
-			    dm_device_name(md));
-		bio_io_error(bio);
-		goto out;
-	}
 
-	/* If suspended, queue this IO for later */
-	if (unlikely(test_bit(DMF_BLOCK_IO_FOR_SUSPEND, &md->flags))) {
+	/* If suspended, or map not yet available, queue this IO for later */
+	if (unlikely(test_bit(DMF_BLOCK_IO_FOR_SUSPEND, &md->flags)) ||
+	    unlikely(!map)) {
 		if (bio->bi_opf & REQ_NOWAIT)
 			bio_wouldblock_error(bio);
 		else if (bio->bi_opf & REQ_RAHEAD)
drivers/misc/habanalabs/common/mmu/mmu_v1.c +1 -1
index 0f536f79dd9c..e68e9f71c546 100644
@@ -467,7 +467,7 @@ static void hl_mmu_v1_fini(struct hl_device *hdev)
 {
 	/* MMU H/W fini was already done in device hw_fini() */
 
-	if (!ZERO_OR_NULL_PTR(hdev->mmu_priv.hr.mmu_shadow_hop0)) {
+	if (!ZERO_OR_NULL_PTR(hdev->mmu_priv.dr.mmu_shadow_hop0)) {
 		kvfree(hdev->mmu_priv.dr.mmu_shadow_hop0);
 		gen_pool_destroy(hdev->mmu_priv.dr.mmu_pgt_pool);
 
drivers/mmc/core/block.c +42 -4

63 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 af042aa55f59..26bf4775e884 100644

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

drivers/net/ethernet/broadcom/bnxt/bnxt.c +7 -0
index ce36ee5a250f..8b078c319872 100644

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

drivers/net/ethernet/broadcom/bnxt/bnxt.h +4 -1
index ca6fdf03e586..e5874c829226 100644

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

drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c +1 -3
index af7de9ee66cf..0f276ce2d1eb 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 7e5daede3a2e..df65bb494695 100644

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

drivers/net/ethernet/intel/ice/ice_lib.c +3 -0
index 8c08997dcef6..653996e8fd30 100644

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

drivers/net/ethernet/intel/ice/ice_main.c +3 -1
index 7f68132b8a1f..f330bd0acf9f 100644

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

drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c +2 -2
index 4338e4ff7e85..9d4d58757e04 100644

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

drivers/net/ethernet/intel/ice/ice_xsk.c +4 -2
index 37c7dc6b44a9..2b1873061912 100644

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

drivers/net/ethernet/marvell/mv643xx_eth.c +1 -1
index 1b61fe2e9b4d..90fd5588e20d 100644

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

drivers/net/ethernet/mellanox/mlx5/core/devlink.c +10 -2
index d7576b6fa43b..7d56a927081d 100644

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

drivers/net/ethernet/mellanox/mlx5/core/en_main.c +1 -0
index f075bb8ccd00..01301bee420c 100644

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

drivers/net/ethernet/mellanox/mlx5/core/main.c +0 -2
index 097ab6fe371c..4ed740994279 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/mellanox/mlx5/core/sf/dev/driver.c +0 -2
index 3cf272fa2164..052f48068dc1 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 694e2f5dbbe5..39801c31e507 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 ef2c6a09eb0f..4369d6249e7b 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 54ce08f1c6e0..353a2d669fcd 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/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 5461bf399959..65e382756de6 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 4d01fd85283d..6e4d69715927 100644

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

drivers/net/wireless/mediatek/mt76/mt7615/mac.c +1 -1
index eb7bda91f2b3..8f4a5d4929e0 100644

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

drivers/net/wireless/mediatek/mt76/mt7915/mac.c +1 -0
index ff613d705611..7691292526e0 100644

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

drivers/net/wireless/mediatek/mt76/mt7921/main.c +1 -0
index 9eb90e6f0103..30252f408ddc 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 c0985316649d..8bedbc77fe95 100644

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

drivers/perf/qcom_l2_pmu.c +3 -3
index 5b093badd0f6..f60e79fac202 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/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 b9553be9bed5..fb9db7f43895 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 b13b5c85f3de..75a5a4765f42 100644

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

drivers/scsi/bfa/bfad_attr.c +13 -13
index 5ae1e3f78910..e049cdb3c286 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 5af36c54cb59..3ef6b6edef46 100644

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

drivers/scsi/mpi3mr/mpi3mr_os.c +2 -0
index 3cae8803383b..b2c650542bac 100644

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

drivers/scsi/mpt3sas/mpt3sas_scsih.c +4 -1
index c1f900c6ea00..af275ac42795 100644

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

drivers/scsi/mvsas/mv_init.c +2 -2
index f18dd9703595..787cf439ba57 100644

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

drivers/scsi/pm8001/pm8001_hwi.c +20 -7
index bed06ed0f1cb..32fc450bf84b 100644

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

drivers/scsi/pm8001/pm8001_sas.c +1 -1
index 491cecbbe1aa..5fb08acbc0e5 100644

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

drivers/scsi/pm8001/pm80xx_hwi.c +10 -7
index b0a108e1a3d9..5561057109de 100644

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

drivers/scsi/scsi_scan.c +5 -0
index 7266880c70c2..9466474ff01b 100644

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

drivers/scsi/smartpqi/smartpqi_init.c +23 -16
index a5453f5e87c3..2e690d8a3444 100644

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

drivers/scsi/sr.c +1 -1
index 973d6e079b02..652cd81d7775 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 a86d0cc50de2..f7eaf64293a4 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 ae8c86be7786..bd7c7fc73961 100644

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

drivers/spi/spi.c +4 -0
index cb7eb1e2e0e9..d0bbf8f9414d 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 ea9a53bdb417..099359fc0115 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 9429b8a642fb..630ed0dc24c3 100644

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

drivers/staging/wfx/main.c +6 -1
index 4b9fdf99981b..9ff69c5e0ae9 100644

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

drivers/tty/serial/samsung_tty.c +1 -4
index e2f49863e9c2..319533b3c32a 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/core/mlx5_vdpa.h +1 -1
index 01a848adf590..81dc3d88d3dd 100644

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

drivers/vdpa/mlx5/net/mlx5_vnet.c +104 -17

121 lines not on this page · 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 91145d93990a..0371ad233fdf 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 53abdc280451..f7ab6ba8238e 100644

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

fs/btrfs/inode.c +22 -0
index 58053b5f0ce1..e478fd916216 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 1c7574105478..42e449d3f18b 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 9adc6f57a008..78219396788b 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 aa353fd58240..42a16993913a 100644

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

fs/nfs/inode.c +0 -1
index 410f87bc48cc..f4f75db7a825 100644

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

fs/nfs/internal.h +17 -0
index 66fc936834f2..c8845242d422 100644

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

fs/nfs/nfs42proc.c +6 -3
index 9865b5c37d88..93f4d8257525 100644

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

fs/nfs/nfs4file.c +4 -2
index c91565227ea2..4120e1cb3fee 100644

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

fs/nfs/nfs4state.c +12 -0
index 51f5cb41e87a..57ea63e2cdb4 100644

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

fs/nfs/pagelist.c +5 -5
index b1130dc200d2..f2fe23e6c51f 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 0691b0b02147..d21b25511499 100644

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

include/linux/gpio/driver.h +9 -0
index a0f9901dcae6..e3c29d2e6826 100644

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

include/linux/ipv6.h +1 -1
index 07cba0b3496d..d1f386430795 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 fa1ef98614bc..6ba100216530 100644

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

include/linux/nfs_fs.h +5 -5
index 4a733f140939..5ffcde9ac413 100644

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

include/linux/stackdepot.h +0 -2
index 6bb4bc1a5f54..22919a94ca19 100644

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

include/linux/stacktrace.h +1 -0
index 9edecb494e9e..bef158815e83 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/sunrpc/xprtsock.h +1 -0
index 8c2a712cb242..689062afdd61 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 9125effbf448..3fecc4a411a1 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/uapi/linux/bpf.h +4 -2
index e3fb5e520511..a887e582f0e7 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 bcd132d4e7bd..06b98350ebd2 100644

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

kernel/Makefile +2 -1
index 4df609be42d0..0e119c52a2cd 100644

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

kernel/events/core.c +3 -0
index 62022380ad8d..699446d60b6b 100644

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

kernel/sched/core.c +1 -1
index c51bd3692316..779f3198b17d 100644

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

kernel/stacktrace.c +30 -0
index 9f8117c7cfdd..9c625257023d 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 2a9b6dcdac4f..55e89b237b6f 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/stackdepot.c +0 -24
index 0a2e417f83cb..e90f0f19e77f 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 1f0c8a52fd80..4f942678e9da 100644

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

mm/kfence/core.c +142 -14

156 lines not on this page · raw message

mm/kfence/kfence.h +2 -0
index c1f23c61e5f9..2a2d5de9d379 100644

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

mm/memory.c +19 -6
index c267a9957537..bdf7185f1bf2 100644

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

mm/mempolicy.c +1 -0
index dd4eddf1d35f..e75872035c76 100644

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

mm/mremap.c +3 -0
index badfe17ade1f..3a3cf4cc2c63 100644

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

mm/rmap.c +24 -1
index 6aebd1747251..3e340ee380cb 100644

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

net/batman-adv/multicast.c +1 -1
index 6e3419beca09..2853634a3979 100644

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

net/bluetooth/hci_event.c +2 -1
index 868a22df3285..e984a8b4b914 100644

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

net/bluetooth/l2cap_core.c +1 -0
index 77ba68209dbd..c57a45df7a26 100644

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

net/bpf/test_run.c +2 -2
index b5f4ef35357c..655ee0e2de86 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 33dc2a3ff7d7..804aba2228c2 100644

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

net/core/filter.c +24 -6
index 76e406965b6f..cdd7e92db303 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 91d7a5a5a08d..9c0e8ccf9bc5 100644

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

net/core/skbuff.c +11 -4
index 5956c84cb274..e4badc189e37 100644

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

net/ipv4/arp.c +7 -2
index 922dd73e5740..83a47998c4b1 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 1fe27807e471..3a8838b79bb6 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 e0766bdf20e7..6b269595efaa 100644

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

net/mctp/route.c +1 -1
index fb1bf4ec8529..bbb13dbc9227 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 5c4c0320e822..fa8897497dcc 100644

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

net/smc/smc_core.c +1 -1
index dee336eef6d2..7401ec67ebcf 100644

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

net/smc/smc_tx.c +15 -10
index 738a4a99c827..31ee76131a79 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 5d5627bf3b18..3286add1a958 100644

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

net/sunrpc/sched.c +3 -8
index c045f63d11fa..f0f55fbd1375 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 +6 -13
index d95426c0bd3a..e4adb780b69e 100644

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

net/sunrpc/xprtrdma/transport.c +4 -2
index 16e5696314a4..32df23796747 100644

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

net/sunrpc/xprtsock.c +49 -24

73 lines not on this page · raw message

net/tls/tls_sw.c +1 -1
index bd96ec26f4f9..794ef3b3d7d4 100644

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

net/wireless/scan.c +8 -1
index adc0d14cfd86..8e1e578d64bc 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 e1e670014bd0..0e6d685b8617 100644

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

tools/lib/bpf/Makefile +2 -2
index 74c3b73a5fbe..089b73b3cb37 100644

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

tools/perf/Makefile.config +6 -0
index 71772b20ea73..a92f0f025ec7 100644

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

tools/perf/arch/arm64/util/arm-spe.c +6 -0
index a4420d4df503..7d589a705fc8 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 352f16076e01..562e9b808027 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 ac6f7f205e25..cb0aa46b20d1 100644

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

tools/testing/selftests/cgroup/cgroup_util.c +1 -1
index 623cec04ad42..0cf7e90c0052 100644

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

tools/testing/selftests/cgroup/test_core.c +165 -0

165 lines not on this page · raw message

virt/kvm/kvm_main.c +1 -1
index 6cad7dea5d0b..fefdf3a6dae3 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.