Linux 5.17.3
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.17.3 kernel.
All users of the 5.17 kernel series must upgrade.
The updated 5.17.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.17.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/virt/kvm/devices/vcpu.rst | 2 Makefile | 2 arch/arm64/include/asm/cputype.h | 2 arch/arm64/include/asm/kvm_host.h | 1 arch/arm64/kernel/patching.c | 4 arch/arm64/kernel/proton-pack.c | 1 arch/arm64/kernel/smp.c | 2 arch/arm64/kvm/arm.c | 4 arch/arm64/kvm/pmu-emul.c | 33 arch/mips/boot/dts/ingenic/jz4780.dtsi | 2 arch/mips/include/asm/setup.h | 2 arch/mips/kernel/traps.c | 22 arch/mips/ralink/ill_acc.c | 1 arch/parisc/kernel/patch.c | 25 arch/powerpc/boot/dts/fsl/t104xrdb.dtsi | 4 arch/powerpc/include/asm/interrupt.h | 2 arch/powerpc/include/asm/page.h | 6 arch/powerpc/kernel/rtas.c | 6 arch/powerpc/kernel/secvar-sysfs.c | 9 arch/powerpc/kexec/core.c | 15 arch/powerpc/kvm/book3s_64_entry.S | 10 arch/powerpc/lib/code-patching.c | 14 arch/powerpc/mm/book3s64/hash_utils.c | 54 arch/powerpc/mm/mem.c | 2 arch/powerpc/mm/pageattr.c | 32 arch/powerpc/perf/callchain.h | 9 arch/powerpc/perf/callchain_64.c | 27 arch/powerpc/platforms/Kconfig.cputype | 3 arch/powerpc/sysdev/xive/common.c | 2 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/asm.h | 20 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/cpu/mce/core.c | 64 + arch/x86/kernel/cpu/mce/internal.h | 5 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/pmu.c | 9 arch/x86/kvm/svm/svm.h | 2 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/acpi/processor_idle.c | 3 drivers/ata/sata_dwc_460ex.c | 6 drivers/block/drbd/drbd_int.h | 8 drivers/block/drbd/drbd_main.c | 6 drivers/block/drbd/drbd_nl.c | 41 drivers/block/drbd/drbd_state.c | 18 drivers/block/drbd/drbd_state_change.h | 8 drivers/bluetooth/btmtk.h | 1 drivers/bluetooth/btmtksdio.c | 9 drivers/bluetooth/btusb.c | 8 drivers/char/virtio_console.c | 8 drivers/clk/clk-si5341.c | 16 drivers/clk/clk.c | 24 drivers/clk/mediatek/clk-mt8192.c | 36 drivers/clk/rockchip/clk-rk3568.c | 6 drivers/clk/ti/clk.c | 13 drivers/cpufreq/cppc_cpufreq.c | 43 drivers/dma/sh/shdma-base.c | 4 drivers/gpio/gpiolib.c | 19 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 6 drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 1 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 4 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 | 14 drivers/gpu/drm/amd/amdkfd/kfd_crat.c | 2 drivers/gpu/drm/amd/amdkfd/kfd_process.c | 1 drivers/gpu/drm/amd/amdkfd/kfd_smi_events.c | 24 drivers/gpu/drm/amd/amdkfd/kfd_svm.c | 80 - drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 7 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h | 6 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c | 80 + drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_psr.c | 6 drivers/gpu/drm/amd/display/dc/core/dc.c | 66 + drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c | 15 drivers/gpu/drm/amd/display/dc/core/dc_resource.c | 3 drivers/gpu/drm/amd/display/dc/dc.h | 3 drivers/gpu/drm/amd/display/dc/dce/dmub_outbox.c | 25 drivers/gpu/drm/amd/display/dc/dce/dmub_outbox.h | 4 drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c | 11 drivers/gpu/drm/amd/display/dc/dcn21/dcn21_resource.c | 2 drivers/gpu/drm/amd/display/dc/dcn31/dcn31_hwseq.c | 2 drivers/gpu/drm/amd/display/dc/dcn31/dcn31_resource.c | 2 drivers/gpu/drm/amd/pm/amdgpu_dpm.c | 11 drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu10_hwmgr.c | 8 drivers/gpu/drm/bridge/nwl-dsi.c | 18 drivers/gpu/drm/drm_edid.c | 19 drivers/gpu/drm/drm_panel_orientation_quirks.c | 6 drivers/gpu/drm/imx/dw_hdmi-imx.c | 8 drivers/gpu/drm/imx/imx-ldb.c | 2 drivers/gpu/drm/imx/parallel-display.c | 4 drivers/gpu/drm/msm/dsi/dsi_host.c | 2 drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gm20b.c | 1 drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gp102.c | 2 drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gp10b.c | 1 drivers/gpu/drm/nouveau/nvkm/subdev/pmu/priv.h | 1 drivers/gpu/drm/panel/panel-ilitek-ili9341.c | 4 drivers/gpu/drm/sprd/sprd_dpu.c | 5 drivers/gpu/drm/sprd/sprd_drm.c | 2 drivers/gpu/drm/sprd/sprd_dsi.c | 5 drivers/gpu/drm/v3d/v3d_gem.c | 6 drivers/hid/hid-apple.c | 6 drivers/hv/channel_mgmt.c | 6 drivers/hv/vmbus_drv.c | 16 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/infiniband/ulp/rtrs/rtrs-clt.c | 40 drivers/infiniband/ulp/rtrs/rtrs-clt.h | 1 drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 1 drivers/iommu/omap-iommu.c | 2 drivers/irqchip/irq-gic-v3-its.c | 28 drivers/irqchip/irq-gic-v3.c | 14 drivers/irqchip/irq-gic.c | 6 drivers/md/dm-ioctl.c | 2 drivers/md/dm-rq.c | 7 drivers/md/dm.c | 11 drivers/misc/habanalabs/common/memory.c | 30 drivers/misc/habanalabs/common/mmu/mmu_v1.c | 2 drivers/misc/habanalabs/gaudi/gaudi.c | 48 drivers/mmc/core/block.c | 46 drivers/mmc/core/quirks.h | 5 drivers/mmc/host/mmci_stm32_sdmmc.c | 6 drivers/mmc/host/renesas_sdhi_core.c | 8 drivers/mmc/host/sdhci-xenon.c | 10 drivers/net/can/usb/etas_es58x/es58x_fd.c | 3 drivers/net/dsa/ocelot/felix_vsc9959.c | 4 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/i40e/i40e_common.c | 21 drivers/net/ethernet/intel/iavf/iavf.h | 5 drivers/net/ethernet/intel/iavf/iavf_main.c | 173 ++- drivers/net/ethernet/intel/iavf/iavf_virtchnl.c | 18 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 | 13 drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c | 4 drivers/net/ethernet/intel/ice/ice_xsk.c | 6 drivers/net/ethernet/marvell/mv643xx_eth.c | 2 drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/sample.c | 7 drivers/net/ethernet/mellanox/mlx5/core/en/tc/sample.c | 10 drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 1 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 1 drivers/net/ethernet/mellanox/mlx5/core/en_tc.h | 2 drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c | 6 drivers/net/ethernet/mellanox/mlx5/core/port.c | 23 drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 4 drivers/net/ethernet/mellanox/mlxsw/spectrum.h | 7 drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c | 3 drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c | 3 drivers/net/ethernet/qlogic/qed/qed_debug.c | 2 drivers/net/ethernet/qlogic/qede/qede_fp.c | 3 drivers/net/ethernet/sfc/efx_channels.c | 148 +- drivers/net/ethernet/sfc/rx_common.c | 3 drivers/net/ethernet/sfc/tx.c | 3 drivers/net/ethernet/sfc/tx_common.c | 2 drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c | 3 drivers/net/macvtap.c | 6 drivers/net/mdio/mdio-mscc-miim.c | 6 drivers/net/phy/sfp-bus.c | 6 drivers/net/tap.c | 3 drivers/net/tun.c | 3 drivers/net/vrf.c | 15 drivers/net/wireless/ath/ath11k/ahb.c | 2 drivers/net/wireless/ath/ath11k/mac.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/Kconfig | 1 drivers/net/wireless/intel/iwlwifi/fw/api/dbg-tlv.h | 5 drivers/net/wireless/intel/iwlwifi/mvm/phy-ctxt.c | 31 drivers/net/wireless/intel/iwlwifi/mvm/scan.c | 5 drivers/net/wireless/mediatek/mt76/dma.c | 1 drivers/net/wireless/mediatek/mt76/mt76.h | 2 drivers/net/wireless/mediatek/mt76/mt7615/mac.c | 2 drivers/net/wireless/mediatek/mt76/mt7915/mac.c | 1 drivers/net/wireless/mediatek/mt76/mt7921/main.c | 1 drivers/net/wireless/realtek/rtw88/debug.c | 2 drivers/net/wireless/realtek/rtw88/debug.h | 1 drivers/net/wireless/realtek/rtw88/fw.c | 2 drivers/net/wireless/realtek/rtw88/mac80211.c | 8 drivers/net/wireless/realtek/rtw88/main.c | 8 drivers/net/wireless/realtek/rtw88/rtw8821c.c | 2 drivers/net/wireless/realtek/rtw88/rtw8822b.c | 4 drivers/net/wireless/realtek/rtw88/rtw8822c.c | 4 drivers/net/wireless/realtek/rtw88/sar.c | 8 drivers/net/wireless/realtek/rtw89/core.c | 5 drivers/opp/debugfs.c | 5 drivers/opp/opp.h | 1 drivers/parisc/dino.c | 41 drivers/parisc/gsc.c | 31 drivers/parisc/gsc.h | 1 drivers/parisc/lasi.c | 7 drivers/parisc/wax.c | 7 drivers/pci/controller/pci-aardvark.c | 16 drivers/pci/endpoint/functions/pci-epf-test.c | 14 drivers/pci/hotplug/pciehp_hpc.c | 2 drivers/perf/qcom_l2_pmu.c | 6 drivers/phy/amlogic/phy-meson-gxl-usb2.c | 5 drivers/phy/amlogic/phy-meson8b-usb2.c | 9 drivers/platform/x86/Kconfig | 2 drivers/platform/x86/hp-wmi.c | 93 + drivers/platform/x86/thinkpad_acpi.c | 15 drivers/power/supply/Kconfig | 4 drivers/power/supply/axp20x_battery.c | 13 drivers/power/supply/axp288_charger.c | 21 drivers/power/supply/axp288_fuel_gauge.c | 14 drivers/ptp/ptp_sysfs.c | 4 drivers/regulator/atc260x-regulator.c | 1 drivers/regulator/rtq2134-regulator.c | 1 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.h | 4 drivers/scsi/mpi3mr/mpi3mr_fw.c | 4 drivers/scsi/mpi3mr/mpi3mr_os.c | 108 + drivers/scsi/mpt3sas/mpt3sas_scsih.c | 5 drivers/scsi/mvsas/mv_init.c | 4 drivers/scsi/pm8001/pm8001_hwi.c | 79 - drivers/scsi/pm8001/pm8001_init.c | 3 drivers/scsi/pm8001/pm8001_sas.c | 15 drivers/scsi/pm8001/pm8001_sas.h | 2 drivers/scsi/pm8001/pm80xx_hwi.c | 22 drivers/scsi/scsi_logging.c | 2 drivers/scsi/scsi_scan.c | 5 drivers/scsi/sd.c | 2 drivers/scsi/smartpqi/smartpqi_init.c | 45 drivers/scsi/sr.c | 2 drivers/scsi/ufs/ufshcd-pci.c | 17 drivers/scsi/ufs/ufshpb.c | 11 drivers/scsi/zorro7xx.c | 2 drivers/spi/spi-bcm-qspi.c | 4 drivers/spi/spi-rpc-if.c | 8 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/bus_sdio.c | 3 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/usb/host/xen-hcd.c | 57 - drivers/vdpa/mlx5/net/mlx5_vnet.c | 21 drivers/vfio/pci/vfio_pci_rdwr.c | 2 drivers/vhost/net.c | 1 drivers/video/fbdev/core/fbmem.c | 9 drivers/w1/slaves/w1_therm.c | 8 fs/btrfs/extent_io.h | 2 fs/btrfs/inode.c | 22 fs/btrfs/ioctl.c | 20 fs/btrfs/volumes.c | 65 - fs/btrfs/zoned.c | 9 fs/ceph/dir.c | 11 fs/ceph/inode.c | 10 fs/cifs/connect.c | 15 fs/cifs/netmisc.c | 2 fs/file_table.c | 1 fs/io-wq.h | 1 fs/io_uring.c | 388 +++---- 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/mmzone.h | 11 include/linux/nfs_fs.h | 10 include/linux/ref_tracker.h | 2 include/linux/static_call.h | 5 include/linux/vfio_pci_core.h | 9 include/net/arp.h | 1 include/net/bluetooth/bluetooth.h | 14 include/net/bluetooth/hci_core.h | 3 include/net/mctp.h | 2 include/net/net_namespace.h | 6 include/trace/events/sunrpc.h | 1 include/uapi/linux/bpf.h | 6 include/uapi/linux/can/isotp.h | 28 init/main.c | 8 kernel/Makefile | 3 kernel/events/core.c | 3 kernel/sched/core.c | 16 kernel/sched/idle.c | 1 kernel/sched/sched.h | 6 kernel/static_call.c | 542 --------- kernel/static_call_inline.c | 543 ++++++++++ lib/Kconfig.debug | 3 lib/logic_iomem.c | 8 lib/lz4/lz4_decompress.c | 8 lib/ref_tracker.c | 5 mm/highmem.c | 4 mm/kfence/core.c | 11 mm/kfence/kfence.h | 3 mm/mempolicy.c | 1 mm/mremap.c | 3 mm/rmap.c | 25 net/batman-adv/multicast.c | 2 net/bluetooth/hci_conn.c | 1 net/bluetooth/hci_event.c | 79 + net/bluetooth/hci_sync.c | 7 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 | 46 net/core/net_namespace.c | 17 net/core/rtnetlink.c | 13 net/core/skbuff.c | 15 net/dsa/master.c | 25 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/af_inet6.c | 24 net/ipv6/inet6_hashtables.c | 5 net/ipv6/ip6_input.c | 2 net/ipv6/ip6mr.c | 8 net/ipv6/ipv6_sockglue.c | 6 net/ipv6/route.c | 2 net/mctp/af_mctp.c | 46 net/mctp/device.c | 21 net/mctp/route.c | 21 net/mctp/test/utils.c | 1 net/netfilter/nf_conntrack_core.c | 85 + net/netfilter/nft_bitwise.c | 4 net/netlabel/netlabel_kapi.c | 2 net/openvswitch/actions.c | 2 net/openvswitch/flow_netlink.c | 99 + net/rxrpc/net_ns.c | 2 net/sctp/outqueue.c | 6 net/smc/af_smc.c | 8 net/smc/smc_core.c | 2 net/smc/smc_tx.c | 25 net/smc/smc_tx.h | 1 net/sunrpc/clnt.c | 7 net/sunrpc/sched.c | 7 net/sunrpc/svcsock.c | 4 net/sunrpc/xprt.c | 23 net/sunrpc/xprtrdma/transport.c | 2 net/sunrpc/xprtsock.c | 70 - net/tls/tls_sw.c | 2 net/wireless/scan.c | 9 tools/build/feature/Makefile | 9 tools/lib/bpf/Makefile | 4 tools/lib/bpf/bpf_tracing.h | 14 tools/objtool/check.c | 11 tools/perf/Makefile.config | 6 tools/perf/arch/arm64/util/arm-spe.c | 6 tools/perf/perf.c | 2 tools/perf/tests/dwarf-unwind.c | 2 tools/perf/util/arm64-frame-pointer-unwind-support.c | 2 tools/perf/util/machine.c | 2 tools/perf/util/session.c | 15 tools/perf/util/setup.py | 8 tools/perf/util/unwind-libdw.c | 10 tools/perf/util/unwind-libdw.h | 1 tools/perf/util/unwind-libunwind-local.c | 10 tools/perf/util/unwind-libunwind.c | 6 tools/perf/util/unwind.h | 13 tools/testing/selftests/bpf/progs/test_sk_lookup.c | 3 tools/testing/selftests/bpf/xdpxceiver.c | 80 - tools/testing/selftests/bpf/xdpxceiver.h | 2 tools/testing/selftests/kvm/aarch64/vgic_irq.c | 45 tools/testing/selftests/kvm/lib/aarch64/gic_v3.c | 12 tools/testing/selftests/kvm/lib/aarch64/vgic.c | 9 virt/kvm/kvm_main.c | 2 404 files changed, 4509 insertions(+), 2533 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
Akihiko Odaki (1):
Revert "ACPI: processor: idle: Only flush cache on entering C3"
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
Amit Cohen (1):
mlxsw: spectrum: Guard against invalid local ports
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) (2):
Drivers: hv: vmbus: Fix initialization of device object in vmbus_device_register()
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
Arnd Bergmann (1):
iwlwifi: mei: fix building iwlmei
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
Baochen Qiang (1):
ath11k: Fix frames flush failure caused by deadlock
Ben Greear (1):
mt76: mt7921: fix crash when startup fails.
Benjamin Beichler (1):
um: fix and optimize xor select template for CONFIG64 and timetravel mode
Benjamin Marty (1):
drm/amdgpu/display: change pipe policy for DCN 2.1
CHANDAN VURDIGERE NATARAJ (1):
drm/amd/display: Fix by adding FPU protection for dcn30_internal_validate_bw
Chanho Park (1):
arm64: Add part number for Arm Cortex-A78AE
Chen-Yu Tsai (1):
net: stmmac: Fix unset max_speed difference between DT and non-DT platforms
ChenXiaoSong (2):
Revert "NFSv4: Handle the special Linux file open access mode"
NFSv4: fix open failure with O_ACCMODE flag
Christian Lamparter (1):
ata: sata_dwc_460ex: Fix crash due to OOB write
Christian Löhle (1):
mmc: block: Check for errors after write on SPI
Christophe JAILLET (1):
scsi: zorro7xx: Fix a resource leak in zorro7xx_remove_one()
Christophe Leroy (3):
powerpc/set_memory: Avoid spinlock recursion in change_page_attr() powerpc/64: Fix build failure with allyesconfig in book3s_64_entry.S
static_call: Don't make __static_call_return0 static
Dale Zhao (1):
drm/amd/display: Add signal type check when verify stream backends same
Damien Le Moal (7):
scsi: pm8001: Fix pm80xx_pci_mem_copy() interface
scsi: pm8001: Fix pm8001_mpi_task_abort_resp()
scsi: pm8001: Fix tag values handling
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 (1):
drm/amdgpu: fix off by one in amdgpu_gfx_kiq_acquire()
Daniel Mack (1):
drm/panel: ili9341: fix optional regulator handling
Daniel Thompson (1):
drm/msm/dsi: Remove spurious IRQF_ONESHOT flag
Dave Hansen (1):
x86/mm/tlb: Revert retpoline avoidance approach
David Ahern (1):
ipv6: Fix stats accounting in ip6_pkt_drop
Denis Nikitin (1):
perf session: Remap buf if there is no space for event
Deren Wu (1):
mt76: fix monitor mode crash with sdio driver
Don Brace (1):
scsi: smartpqi: Fix rmmod stack trace
Dongli Zhang (1):
xen: delay xen_hvm_init_time_ops() if kdump is boot on vcpu>=32
Douglas Miller (1):
RDMA/hfi1: Fix use-after-free bug for mm struct
Dust Li (2):
net/smc: correct settings of RMB window update limit net/smc: send directly on setting TCP_NODELAY
Emily Deng (1):
drm/amdgpu/vcn: Fix the register setting for vcn1
Eric Dumazet (5):
ipv6: make mc_forwarding atomic
ref_tracker: implement use-after-free detection
net: initialize init_net earlier
ipv6: annotate some data-races around sk->sk_prot
rxrpc: fix a race in rxrpc_exit_net()
Eric Huang (1):
drm/amdkfd: enable heavy-weight TLB flush on Arcturus
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
Geert Uytterhoeven (1):
spi: rpc-if: Fix RPM imbalance in probe error path
Greg Kroah-Hartman (1):
Linux 5.17.3
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 (5):
power: supply: axp288-charger: Set Vhold to 4.4V
usb: dwc3: pci: Set the swnode from inside dwc3_pci_quirks()
power: supply: axp288_charger: Use acpi_quirk_skip_acpi_ac_and_battery()
power: supply: axp288_fuel_gauge: Use acpi_quirk_skip_acpi_ac_and_battery() platform/x86: x86-android-tablets: Depend on EFI and SPI
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 Leoshkevich (3):
libbpf: Fix accessing syscall arguments on powerpc
libbpf: Fix accessing the first syscall argument on arm64
libbpf: Fix accessing the first syscall argument on s390
Ilya Maximets (2):
net: openvswitch: don't send internal clone attribute to the userspace.
net: openvswitch: fix leak of nested actions
Ivan Vecera (2):
ice: Clear default forwarding VSI during VSI release
ice: Fix MAC address setting
Jack Wang (1):
RDMA/rtrs-clt: Do stop and failover outside reconnect work.
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 (4):
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
bpf: Treat bpf_sk_lookup remote_port as a 2-byte field
James Clark (2):
perf unwind: Don't show unwind error messages when augmenting frame pointer stack
perf: arm-spe: Fix perf report --mem-mode
Jamie Bainbridge (2):
sctp: count singleton chunks in assoc user stats
qede: confirm skb is allocated before using
Jani Nikula (1):
drm/edid: improve non-desktop quirk logging
Jason Wang (1):
vdpa: mlx5: prevent cvq work from hogging CPU
Jean-Philippe Brucker (1):
skbuff: fix coalescing for page_pool fragment recycling
Jedrzej Jagielski (1):
i40e: Add sending commands in atomic context
Jens Axboe (7):
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
io_uring: move read/write file prep state into actual opcode handler
io_uring: propagate issue_flags state down to file assignment
io_uring: defer file assignment
io_uring: drop the old style inflight file tracking
Jeremy Sowden (1):
netfilter: bitwise: fix reduce comparisons
Jianglei Nie (1):
scsi: libfc: Fix use after free in fc_exch_abts_resp()
Jiasheng Jiang (2):
rtc: wm8350: Handle error for wm8350_register_irq drm/imx: imx-ldb: Check for null pointer after calling kmemdup
Jim Mattson (2):
KVM: x86/pmu: Use different raw event masks for AMD and Intel
KVM: x86/svm: Clear reserved bits written to PerfEvtSeln MSRs
Jiri Kosina (1):
rtw89: fix RCU usage in rtw89_core_txq_push()
Jiri Slaby (1):
serial: samsung_tty: do not unlock port->lock for uart_write_wakeup()
Johan Almbladh (1):
mt76: mt7915: fix injected MPDU transmission to not use HW A-MSDU
Johannes Berg (1):
lib/logic_iomem: correct fallback config references
Johannes Thumshirn (1):
btrfs: zoned: traverse devices under chunk_mutex in btrfs_can_activate_zone
John David Anglin (1):
parisc: Fix patch code locking and flushing
John Garry (1):
scsi: core: Fix sbitmap depth in scsi_realloc_sdev_budget_map()
Jordy Zomer (1):
dm ioctl: prevent potential spectre v1 gadget
Jorge Lopez (2):
platform/x86: hp-wmi: Fix SW_TABLET_MODE detection method platform/x86: hp-wmi: Fix 0x05 error code reported by several WMI calls
José Expósito (4):
HID: apple: Report Magic Keyboard 2021 battery over USB
HID: apple: Report Magic Keyboard 2021 with fingerprint reader battery over USB
clk: mediatek: Fix memory leaks on probe
drm/imx: Fix memory leak in imx_pd_connector_get_modes
Jue Wang (1):
x86/mce: Work around an erratum on fast string copy instructions
Juergen Gross (1):
xen/usb: harden xen_hcd against malicious backends
Jérôme Pouiller (1):
staging: wfx: apply the necessary SDIO quirks for the Silabs WF200
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
Kefeng Wang (2):
powerpc: Fix virt_addr_valid() for 64-bit Book3E & 32-bit Revert "powerpc: Set max_mapnr correctly"
Kevin Groeneveld (1):
scsi: sr: Fix typo in CDROM(CLOSETRAY|EJECT) handling
Kevin Tang (2):
drm/sprd: fix potential NULL dereference drm/sprd: check the platform_get_resource() return value
Krzysztof Kozlowski (1):
MIPS: ingenic: correct unit node address
Lee Jones (1):
drm/amdkfd: Create file descriptor after client is added to smi_clients list
Li Chen (1):
PCI: endpoint: Fix misused goto label
Like Xu (1):
KVM: x86/pmu: Fix and isolate TSX-specific performance event logic
Liu Ying (1):
drm/imx: dw_hdmi-imx: Fix bailout in error cases of probe
Lorenzo Bianconi (1):
mt76: dma: initialize skip_unmap in mt76_dma_rx_fill
Luca Coelho (1):
iwlwifi: fix small doc mistake for iwl_fw_ini_addr_val
Lucas Denefle (1):
w1: w1_therm: fixes w1_seq for ds28ea00 sensors
Luiz Augusto von Dentz (4):
Bluetooth: hci_sync: Fix compilation warning
Bluetooth: hci_sync: Fix queuing commands when HCI_UNREGISTER is set
Bluetooth: Fix not checking for valid hdev on bt_dev_{info,warn,err,dbg}
Bluetooth: Fix use after free in hci_send_acl
Lv Yunlong (1):
drbd: Fix five use after free bugs in get_initial_state
Maciej Fijalkowski (3):
ice: synchronize_rcu() when terminating rings
ice: xsk: fix VSI state check in ice_xsk_wakeup()
ice: clear cmd_type_offset_bsz for TX rings
Magnus Karlsson (1):
selftests, xsk: Fix bpf_res cleanup test
Mahesh Rajashekhara (1):
scsi: smartpqi: Fix kdump issue when controller is locked up
Manish Chopra (1):
qed: fix ethtool register dump
Manivannan Sadhasivam (1):
PCI: pciehp: Add Qualcomm quirk for Command Completed erratum
Marc Zyngier (3):
KVM: arm64: Do not change the PMU event filter after a VCPU has run irqchip/gic-v3: Fix GICR_CTLR.RWP polling
irqchip/gic-v4: Wait for GICR_VPENDBASER.Dirty to clear before descheduling
Mark Pearson (1):
platform/x86: thinkpad_acpi: Add dual fan probe
Mark Zhang (1):
IB/cm: Cancel mad on the DREQ event when the state is MRA_REP_RCVD
Martin Habets (1):
sfc: Do not free an empty page_ring
Martin K. Petersen (1):
scsi: sd: sd_read_cpr() requires VPD pages
Mateusz Palczewski (1):
iavf: stop leaking iavf_status as "errno" values
Matt Johnston (3):
mctp: make __mctp_dev_get() take a refcount hold
mctp: Fix check for dev_hard_header() result
mctp: Use output netdev to allocate skb headroom
Mauricio Faria de Oliveira (1):
mm: fix race between MADV_FREE reclaim and blkdev direct IO read
Max Filippov (2):
xtensa: fix DTC warning unit_address_format
highmem: fix checks in __kmap_local_sched_{in,out}
Maxim Kiselev (1):
powerpc: dts: t104xrdb: fix phy type for FMAN 4/5
Maxim Mikityanskiy (2):
net/mlx5e: Disable TX queues before registering the netdev
bpf: Support dual-stack sockets in bpf_tcp_check_syncookie
Maxime Ripard (1):
clk: Enforce that disjoints limits are invalid
Meenakshikumar Somasundaram (1):
drm/amd/display: Fix for dmub outbox notification enable
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 (2):
powerpc/code-patching: Pre-map patch area 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
Muchun Song (1):
mm: kfence: fix objcgs vector allocation
Namhyung Kim (1):
perf/core: Inherit event_caps
Naresh Kamboju (1):
selftests: net: Add tls config dependency for tls selftests
Nathan Chancellor (1):
x86/Kconfig: Do not allow CONFIG_X86_X32_ABI=y with llvm-objcopy
Neal Liu (1):
usb: ehci: add pci device support for Aspeed platforms
NeilBrown (4):
SUNRPC/xprt: async tasks mustn't block waiting for memory
SUNRPC: remove scheduling boost for "SWAPPER" tasks.
NFS: swap IO handling is slightly different for O_DIRECT IO
NFS: swap-out must always use STABLE writes.
Nicholas Kazlauskas (1):
drm/amd/display: Use PSR version selected during set_psr_caps
Nicholas Piggin (1):
powerpc/64s/hash: Make hash faults work in NMI context
Nick Desaulniers (1):
x86/extable: Prefer local labels in .set directives
Niels Dossche (1):
IB/rdmavt: add lock to call to rvt_error_qp to prevent a race condition
Nikolay Aleksandrov (1):
net: ipv4: fix route with nexthop object delete warning
Oded Gabbay (2):
habanalabs: reject host map with mmu disabled habanalabs/gaudi: handle axi errors from NIC engines
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
Paulo Alcantara (2):
cifs: fix potential race with cifsd thread
cifs: force new session setup and tcon for dfs
Pavan Chebbi (1):
bnxt_en: Synchronize tx when xdp redirects happen on same ring
Pavel Begunkov (2):
io_uring: nospec index for tags on files update
io_uring: don't touch scm_fp_list after queueing skb
Pawan Gupta (2):
x86/pm: Save the MSR validity status at context setup x86/speculation: Restore speculation related MSRs during S3 resume
Pawel Laszczak (1):
usb: cdnsp: fix cdnsp_decode_trb function to properly handle ret value
Peter Gonda (1):
KVM: SVM: Fix kvm_cache_regs.h inclusions for is_guest_mode()
Peter Zijlstra (4):
x86: Annotate call_on_stack()
objtool: Fix SLS validation for kcov tail-call replacement sched/core: Fix forceidle balancing x86,static_call: Fix __static_call_return0 for i386
Phil Auld (1):
arch/arm64: Fix topology initialization for core scheduling
Philip Yang (4):
drm/amdkfd: Don't take process mutex for svm ioctls drm/amdkfd: Ensure mm remain valid in svm deferred_list work drm/amdkfd: svm range restore work deadlock when process exit drm/amdkfd: Fix variable set but not used warning
Philipp Zabel (1):
drm/edid: remove non_desktop quirk for HPN-3515 and LEN-B800.
Pierre Gondois (1):
cpufreq: CPPC: Fix performance/frequency conversion
Ping-Ke Shih (1):
rtw88: change rtw_info() to proper message level
Qi Liu (1):
scsi: hisi_sas: Free irq vectors in order for v3 HW
Qinghua Jin (1):
minix: fix bug when opening a file with O_DIRECT
Qu Wenruo (2):
btrfs: remove device item and update super block in the same transaction
btrfs: avoid defragging extents whose next extents are not targets
Rajneesh Bhardwaj (1):
drm/amdgpu: Fix recursive locking warning
Randy Dunlap (3):
scsi: aha152x: Fix aha152x_setup() __setup handler return value init/main.c: return 1 from handled __setup() functions
virtio_console: eliminate anonymous module_init & module_exit
Ray Jui (1):
bnxt_en: Prevent XDP redirect from running when stopping TX queue
Reto Buerki (1):
x86/msi: Fix msi message data shadow struct
Ricardo Koller (5):
kvm: selftests: aarch64: fix assert in gicv3_access_reg
kvm: selftests: aarch64: pass vgic_irq guest args as a pointer
kvm: selftests: aarch64: fix the failure check in kvm_set_gsi_routing_irqchip_check
kvm: selftests: aarch64: fix some vgic related comments
kvm: selftests: aarch64: use a tighter assert in vgic_poke_irq()
Roi Dayan (1):
net/mlx5e: TC, Hold sample_attr on stack instead of pointer
Roman Li (1):
drm/amd/display: Remove redundant dsc power gating from init_hw
Sachin Sant (1):
powerpc/xive: Export XIVE IPI information for online-only processors.
Sascha Hauer (1):
clk: rockchip: drop CLK_SET_RATE_PARENT from dclk_vop* on rk3568
Sean Wang (1):
Bluetooth: mediatek: fix the conflict between mtk and msft vendor event
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
Soenke Huster (2):
Bluetooth: fix null ptr deref on hci_sync_conn_complete_evt
Bluetooth: hci_event: Ignore multiple conn complete events
Sourabh Jain (1):
powerpc: Set crashkernel offset to mid of RMA region
Sreekanth Reddy (3):
scsi: mpi3mr: Fix deadlock while canceling the fw event
scsi: mpi3mr: Fix reporting of actual data transfer size
scsi: mpi3mr: Fix memory leaks
Stefan Wahren (2):
staging: vchiq_arm: Avoid NULL ptr deref in vchiq_dump_platform_instances
staging: vchiq_core: handle NULL result of find_service_by_handle
Sung Joon Kim (1):
drm/amd/display: reset lane settings after each PHY repeater LT
Sven Eckelmann (1):
macvtap: advertise link netns via netlink
Taehee Yoo (2):
net: sfc: add missing xdp queue reinitialization
net: sfc: fix using uninitialized xdp tx_queue
Thomas Zimmermann (1):
fbdev: Fix unregistering of framebuffers without device
Tianci.Yin (1):
drm/amdgpu: Fix an error message in rmmod
Tomas Henzl (1):
scsi: core: scsi_logging: Fix a BUG
Tony Lindgren (2):
clk: ti: Preserve node in ti_dt_clocks_register() iommu/omap: Fix regression in probe for NULL pointer dereference
Tony Lu (1):
net/smc: Send directly when TCP_CORK is cleared
Trond Myklebust (8):
NFSv4: Protect the state recovery thread against direct reclaim
SUNRPC: Fix socket waits for write buffer space
NFS: nfsiod should not block forever in mempool_alloc()
NFS: Avoid writeback threads getting stuck in mempool_alloc()
SUNRPC: Handle ENOMEM in call_transmit_status()
SUNRPC: Handle low memory situations in call_status()
SUNRPC: svc_tcp_sendmsg() should handle errors from xdr_alloc_bvec()
SUNRPC: Ensure we flush any closed sockets before xs_xprt_free()
Venkateswara Naralasetty (1):
ath11k: fix kernel panic during unload/load ath11k modules
Vincent Mailhol (2):
can: etas_es58x: es58x_fd_rx_event_msg(): initialize rx_event_msg before calling es58x_check_msg_len() x86/bug: Prevent shadowing in __WARN_FLAGS
Vinod Koul (2):
spi: core: add dma_map_dev for __spi_unmap_msg()
dmaengine: Revert "dmaengine: shdma: Fix runtime PM imbalance on error"
Viresh Kumar (1):
opp: Expose of-node's name in debugfs
Vladimir Oltean (1):
Revert "net: dsa: stop updating master MTU from master.c"
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 (2):
mmc: renesas_sdhi: special 4tap settings only apply to HS400
mmc: renesas_sdhi: don't overwrite TAP settings when HS400 tuning is complete
Xiang Chen (1):
scsi: hisi_sas: Limit users changing debugfs BIST count value
Xiaoke Wang (1):
staging: wfx: fix an error handling in wfx_init_common()
Xiaomeng Tong (3):
scsi: ufs: ufshpb: Fix a NULL check on list iterator
drbd: fix an invalid memory access caused by incorrect use of list iterator
perf: qcom_l2_pmu: fix an incorrect NULL check on list iterator
Xin Xiong (2):
drm/amd/amdgpu/amdgpu_cs: fix refcount leak of a dma_fence obj NFSv4.2: fix reference count leaks in _nfs42_proc_copy_notify()
Xiubo Li (2):
ceph: fix inode reference leakage in ceph_get_snapdir()
ceph: fix memory leak in ceph_readdir when note_last_dentry returns error
Yang Guang (3):
ptp: replace snprintf with sysfs_emit
scsi: mvsas: Replace snprintf() with sysfs_emit()
scsi: bfa: Replace snprintf() with sysfs_emit()
Yang Li (1):
mt76: mt7615: Fix assigning negative values to unsigned variable
Yann Gautier (1):
mmc: mmci: stm32: correctly check all elements of sg list
Yonghong Song (1):
libbpf: Fix build issue with llvm-readelf
Yongzhi Liu (3):
drm/amd/display: Fix memory leak
drm/bridge: Add missing pm_runtime_put_sync
drm/v3d: fix missing unlock
Zekun Shen (1):
ath5k: fix OOB in ath5k_eeprom_read_pcal_info_5111
Zheng Yongjun (1):
net: dsa: felix: fix possible NULL pointer dereference
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
Greg Kroah-Hartman
maintainerDocumentation/virt/kvm/devices/vcpu.rst +1 -1
@@ -70,7 +70,7 @@ irqchip. -ENODEV PMUv3 not supported or GIC not initialized -ENXIO PMUv3 not properly configured or in-kernel irqchip not configured as required prior to calling this attribute - -EBUSY PMUv3 already initialized + -EBUSY PMUv3 already initialized or a VCPU has already run -EINVAL Invalid filter range ======= ======================================================
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 17 -SUBLEVEL = 2 +SUBLEVEL = 3 EXTRAVERSION = NAME = Superb Owl
arch/arm64/include/asm/cputype.h +2 -0
@@ -75,6 +75,7 @@#define ARM_CPU_PART_CORTEX_A77 0xD0D#define ARM_CPU_PART_NEOVERSE_V1 0xD40#define ARM_CPU_PART_CORTEX_A78 0xD41 +#define ARM_CPU_PART_CORTEX_A78AE 0xD42#define ARM_CPU_PART_CORTEX_X1 0xD44#define ARM_CPU_PART_CORTEX_A510 0xD46#define ARM_CPU_PART_CORTEX_A710 0xD47
@@ -123,6 +124,7 @@#define MIDR_CORTEX_A77 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A77)#define MIDR_NEOVERSE_V1 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_NEOVERSE_V1)#define MIDR_CORTEX_A78 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A78) +#define MIDR_CORTEX_A78AE MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A78AE)#define MIDR_CORTEX_X1 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_X1)#define MIDR_CORTEX_A510 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A510)#define MIDR_CORTEX_A710 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A710)
arch/arm64/include/asm/kvm_host.h +1 -0
@@ -136,6 +136,7 @@ struct kvm_arch {/* Memory Tagging Extension enabled for the guest */ bool mte_enabled; +bool ran_once; };struct kvm_vcpu_fault_info {
arch/arm64/kernel/patching.c +2 -2
@@ -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
@@ -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
@@ -234,6 +234,7 @@ asmlinkage notrace void secondary_start_kernel(void)* Log the CPU info before it is marked online and might get read. */ cpuinfo_store_cpu (); +store_cpu_topology (cpu);/* * Enable GIC and timers.
@@ -242,7 +243,6 @@ asmlinkage notrace void secondary_start_kernel(void)ipi_setup (cpu); -store_cpu_topology (cpu);numa_add_cpu (cpu);/*
arch/arm64/kvm/arm.c +4 -0
@@ -634,6 +634,10 @@ int kvm_arch_vcpu_run_pid_change(struct kvm_vcpu *vcpu)if (kvm_vm_is_protected (kvm))kvm_call_hyp_nvhe (__pkvm_vcpu_init_traps, vcpu); +mutex_lock (&kvm->lock); + kvm->arch.ran_once = true; +mutex_unlock (&kvm->lock); +return ret; }
arch/arm64/kvm/pmu-emul.c +20 -13
@@ -924,6 +924,8 @@ static bool pmu_irq_is_valid(struct kvm *kvm, int irq)int kvm_arm_pmu_v3_set_attr (struct kvm_vcpu *vcpu,struct kvm_device_attr *attr) { +struct kvm *kvm = vcpu->kvm; +if (!kvm_vcpu_has_pmu (vcpu))return -ENODEV ;
@@ -941,7 +943,7 @@ int kvm_arm_pmu_v3_set_attr(struct kvm_vcpu *vcpu, struct kvm_device_attr *attr)int __user *uaddr = (int __user *)(long )attr->addr;int irq; -if (!irqchip_in_kernel (vcpu->kvm)) +if (!irqchip_in_kernel (kvm))return -EINVAL ;if (get_user (irq, uaddr))
@@ -951,7 +953,7 @@ int kvm_arm_pmu_v3_set_attr(struct kvm_vcpu *vcpu, struct kvm_device_attr *attr)if (!(irq_is_ppi (irq) ||irq_is_spi (irq)))return -EINVAL ; -if (!pmu_irq_is_valid (vcpu->kvm, irq)) +if (!pmu_irq_is_valid (kvm, irq))return -EINVAL ;if (kvm_arm_pmu_irq_initialized (vcpu))
@@ -966,7 +968,7 @@ int kvm_arm_pmu_v3_set_attr(struct kvm_vcpu *vcpu, struct kvm_device_attr *attr)struct kvm_pmu_event_filter filter;int nr_events; - nr_events =kvm_pmu_event_mask (vcpu->kvm) +1 ; + nr_events =kvm_pmu_event_mask (kvm) +1 ; uaddr = (struct kvm_pmu_event_filter __user *)(long )attr->addr;
@@ -978,12 +980,17 @@ int kvm_arm_pmu_v3_set_attr(struct kvm_vcpu *vcpu, struct kvm_device_attr *attr) filter.action != KVM_PMU_EVENT_DENY))return -EINVAL ; -mutex_lock (&vcpu->kvm->lock); +mutex_lock (&kvm->lock); + +if (kvm->arch.ran_once) { +mutex_unlock (&kvm->lock); +return -EBUSY ; + } -if (!vcpu->kvm->arch.pmu_filter) { - vcpu->kvm->arch.pmu_filter =bitmap_alloc (nr_events,GFP_KERNEL_ACCOUNT ); -if (!vcpu->kvm->arch.pmu_filter) { -mutex_unlock (&vcpu->kvm->lock); +if (!kvm->arch.pmu_filter) { + kvm->arch.pmu_filter =bitmap_alloc (nr_events,GFP_KERNEL_ACCOUNT ); +if (!kvm->arch.pmu_filter) { +mutex_unlock (&kvm->lock);return -ENOMEM ; }
@@ -994,17 +1001,17 @@ int kvm_arm_pmu_v3_set_attr(struct kvm_vcpu *vcpu, struct kvm_device_attr *attr)* events, the default is to allow. */ if (filter.action ==KVM_PMU_EVENT_ALLOW ) -bitmap_zero (vcpu->kvm->arch.pmu_filter, nr_events); +bitmap_zero (kvm->arch.pmu_filter, nr_events);else -bitmap_fill (vcpu->kvm->arch.pmu_filter, nr_events); +bitmap_fill (kvm->arch.pmu_filter, nr_events); }if (filter.action ==KVM_PMU_EVENT_ALLOW ) -bitmap_set (vcpu->kvm->arch.pmu_filter, filter.base_event, filter.nevents); +bitmap_set (kvm->arch.pmu_filter, filter.base_event, filter.nevents);else -bitmap_clear (vcpu->kvm->arch.pmu_filter, filter.base_event, filter.nevents); +bitmap_clear (kvm->arch.pmu_filter, filter.base_event, filter.nevents); -mutex_unlock (&vcpu->kvm->lock); +mutex_unlock (&kvm->lock);return 0 ; }
arch/mips/boot/dts/ingenic/jz4780.dtsi +1 -1
@@ -510,7 +510,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
@@ -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
@@ -2091,19 +2091,19 @@ static void *set_vi_srs_handler(int n, vi_handler_t addr, int srs)* If no shadow set is selected then use the default handler * that does normal register saving and standard interrupt exit */ -extern char except_vec_vi, except_vec_vi_lui; -extern char except_vec_vi_ori, except_vec_vi_end; -extern char rollback_except_vec_vi; -char *vec_start =using_rollback_handler () ? - &rollback_except_vec_vi : &except_vec_vi; +extern const u8 except_vec_vi[], except_vec_vi_lui[]; +extern const u8 except_vec_vi_ori[], except_vec_vi_end[]; +extern const u8 rollback_except_vec_vi[]; +const u8 *vec_start =using_rollback_handler () ? + rollback_except_vec_vi : except_vec_vi;#if defined(CONFIG_CPU_MICROMIPS ) || defined(CONFIG_CPU_BIG_ENDIAN ) -const int lui_offset = &except_vec_vi_lui - vec_start +2 ; -const int ori_offset = &except_vec_vi_ori - vec_start +2 ; +const int lui_offset = except_vec_vi_lui - vec_start +2 ; +const int ori_offset = except_vec_vi_ori - vec_start +2 ;#else -const int lui_offset = &except_vec_vi_lui - vec_start; -const int ori_offset = &except_vec_vi_ori - vec_start; +const int lui_offset = except_vec_vi_lui - vec_start; +const int ori_offset = except_vec_vi_ori - vec_start;#endif -const int handler_len = &except_vec_vi_end - vec_start; +const int handler_len = except_vec_vi_end - vec_start;if (handler_len >VECTORSPACING ) {/*
@@ -2311,7 +2311,7 @@ void per_cpu_trap_init(bool is_boot_cpu) }/* Install CPU exception handler */ -void set_handler (unsigned long offset,void *addr,unsigned long size) +void set_handler (unsigned long offset,const void *addr,unsigned long size) {#ifdef CONFIG_CPU_MICROMIPS memcpy ((void *)(ebase + offset), ((unsigned char *)addr -1 ), size);
arch/mips/ralink/ill_acc.c +1 -0
@@ -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
@@ -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
@@ -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
@@ -612,7 +612,7 @@ DECLARE_INTERRUPT_HANDLER_RAW(do_slb_fault);DECLARE_INTERRUPT_HANDLER (do_bad_segment_interrupt);/* 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
@@ -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
@@ -1313,6 +1313,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
@@ -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
@@ -134,11 +134,18 @@ void __init reserve_crashkernel(void)if (!crashk_res.start) {#ifdef CONFIG_PPC64 /* -* On 64bit we split the RMO in half but cap it at half of -* a small SLB (128MB) since the crash kernel needs to place -* itself and some stacks to be in the first segment. +* On the LPAR platform place the crash kernel to mid of +* RMA size (512MB or more) to ensure the crash kernel +* gets enough space to place itself and some stack to be +* in the first segment. At the same time normal kernel +* also get enough space to allocate memory for essential +* system resource in the first segment. Keep the crash +* kernel starts at 128MB offset on other platforms. */ - crashk_res.start =min (0x8000000ULL , (ppc64_rma_size /2 )); +if (firmware_has_feature (FW_FEATURE_LPAR )) + crashk_res.start = ppc64_rma_size /2 ; +else + crashk_res.start =min (0x8000000ULL , (ppc64_rma_size /2 ));#else crashk_res.start =KDUMP_KERNELBASE ;#endif
arch/powerpc/kvm/book3s_64_entry.S +8 -2
@@ -414,10 +414,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/lib/code-patching.c +14 -0
@@ -43,9 +43,14 @@ int raw_patch_instruction(u32 *addr, ppc_inst_t instr)#ifdef CONFIG_STRICT_KERNEL_RWX static DEFINE_PER_CPU(struct vm_struct *, text_poke_area); +static int map_patch_area (void *addr,unsigned long text_poke_addr); +static void unmap_patch_area (unsigned long addr); +static int text_area_cpu_up (unsigned int cpu) {struct vm_struct *area; +unsigned long addr; +int err; area =get_vm_area (PAGE_SIZE ,VM_ALLOC );if (!area) {
@@ -53,6 +58,15 @@ static int text_area_cpu_up(unsigned int cpu) cpu);return -1 ; } + +// Map/unmap the area to ensure all page tables are pre-allocated + addr = (unsigned long )area->addr; + err =map_patch_area (empty_zero_page, addr); +if (err) +return err; + +unmap_patch_area (addr); +this_cpu_write (text_poke_area, area);return 0 ;
arch/powerpc/mm/book3s64/hash_utils.c +8 -46
84 lines not on this page · raw message
arch/powerpc/mm/mem.c +1 -1
@@ -255,7 +255,7 @@ void __init mem_init(void)#endif high_memory = (void *)__va (max_low_pfn *PAGE_SIZE ); -set_max_mapnr (max_low_pfn); +set_max_mapnr (max_pfn);kasan_late_init ();
arch/powerpc/mm/pageattr.c +13 -19
@@ -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 ()) asmvolatile ("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
@@ -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
@@ -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
@@ -107,6 +107,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
@@ -295,7 +296,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 select PPC_KUEP
arch/powerpc/sysdev/xive/common.c +1 -1
@@ -1791,7 +1791,7 @@ static int xive_ipi_debug_show(struct seq_file *m, void *private)if (xive_ops->debug_show) xive_ops->debug_show (m, private); -for_each_possible_cpu (cpu) +for_each_online_cpu (cpu)xive_debug_show_ipi (m, cpu);return 0 ; }
arch/riscv/lib/memmove.S +310 -58
374 lines not on this page · raw message
arch/um/include/asm/xor.h +3 -1
@@ -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
@@ -2837,6 +2837,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
@@ -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
@@ -5515,7 +5515,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/asm.h +10 -10
@@ -154,24 +154,24 @@# define DEFINE_EXTABLE_TYPE_REG \ ".macro extable_type_reg type:req reg:req\n" \ - ".set found, 0\n" \ - ".set regnr, 0\n" \ + ".set .Lfound, 0\n" \ + ".set .Lregnr, 0\n" \ ".irp rs,rax,rcx,rdx,rbx,rsp,rbp,rsi,rdi,r8,r9,r10,r11,r12,r13,r14,r15\n" \ ".ifc \\reg, %%\\rs\n" \ - ".set found, found+1\n" \ - ".long \\type + (regnr << 8)\n" \ + ".set .Lfound, .Lfound+1\n" \ + ".long \\type + (.Lregnr << 8)\n" \ ".endif\n" \ - ".set regnr, regnr+1\n" \ + ".set .Lregnr, .Lregnr+1\n" \ ".endr\n" \ - ".set regnr, 0\n" \ + ".set .Lregnr, 0\n" \ ".irp rs,eax,ecx,edx,ebx,esp,ebp,esi,edi,r8d,r9d,r10d,r11d,r12d,r13d,r14d,r15d\n" \ ".ifc \\reg, %%\\rs\n" \ - ".set found, found+1\n" \ - ".long \\type + (regnr << 8)\n" \ + ".set .Lfound, .Lfound+1\n" \ + ".long \\type + (.Lregnr << 8)\n" \ ".endif\n" \ - ".set regnr, regnr+1\n" \ + ".set .Lregnr, .Lregnr+1\n" \ ".endr\n" \ - ".if (found != 1)\n" \ + ".if (.Lfound != 1)\n" \ ".error \"extable_type_reg: bad register argument\"\n" \ ".endif\n" \ ".endm\n"
arch/x86/include/asm/bug.h +2 -2
@@ -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
@@ -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
@@ -509,6 +509,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
@@ -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
@@ -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/cpu/mce/core.c +64 -0
88 lines not on this page · raw message
arch/x86/kernel/cpu/mce/internal.h +4 -1
@@ -170,7 +170,10 @@ struct mce_vendor_flags {/* SandyBridge IFU quirk */ snb_ifu_quirk : 1, - __reserved_0 : 57; + /* Skylake, Cascade Lake, Cooper Lake REP;MOVS* quirk */ + skx_repmov_quirk : 1, + + __reserved_0 : 56; };extern struct mce_vendor_flags mce_flags;
arch/x86/kernel/static_call.c +2 -3
@@ -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 const u8 retinsn[] = {RET_INSN_OPCODE ,0xcc ,0xcc ,0xcc ,0xcc };
arch/x86/kvm/emulate.c +3 -1
@@ -3523,8 +3523,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
@@ -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
@@ -96,8 +96,7 @@ static void kvm_perf_overflow(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 = {
@@ -116,16 +115,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,
@@ -185,6 +182,7 @@ void reprogram_gp_counter(struct kvm_pmc *pmc, u64 eventsel)u32 type =PERF_TYPE_RAW ;struct kvm *kvm = pmc->vcpu->kvm;struct kvm_pmu_event_filter *filter; +struct kvm_pmu *pmu =vcpu_to_pmu (pmc->vcpu);bool allow_event = true;if (eventsel &ARCH_PERFMON_EVENTSEL_PIN_CONTROL )
@@ -221,7 +219,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 ;
@@ -232,9 +230,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);
@@ -270,7 +266,7 @@ void reprogram_fixed_counter(struct kvm_pmc *pmc, u8 ctrl, int idx) kvm_x86_ops.pmu_ops->pmc_perf_hw_id (pmc), !(en_field &0x2 ),/* exclude user */ !(en_field &0x1 ),/* exclude kernel */ - pmi, false, false); + pmi); }EXPORT_SYMBOL_GPL (reprogram_fixed_counter);
arch/x86/kvm/svm/pmu.c +4 -5
@@ -262,12 +262,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 ;
@@ -284,6 +282,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 +2 -0
@@ -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
arch/x86/kvm/svm/svm_onhyperv.c +0 -1
@@ -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
@@ -389,6 +389,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 :
@@ -443,7 +444,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 ; }
@@ -485,6 +490,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 || !enable_pmu)
@@ -533,8 +539,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
@@ -7675,6 +7675,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);
@@ -7757,6 +7762,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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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/acpi/processor_idle.c +1 -2
@@ -570,8 +570,7 @@ static int acpi_idle_play_dead(struct cpuidle_device *dev, int index) {struct acpi_processor_cx *cx =per_cpu (acpi_cstate[index], dev->cpu); -if (cx->type ==ACPI_STATE_C3 ) -ACPI_FLUSH_CPU_CACHE (); +ACPI_FLUSH_CPU_CACHE ();while (1 ) {
drivers/ata/sata_dwc_460ex.c +5 -1
@@ -137,7 +137,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/block/drbd/drbd_int.h +4 -4
@@ -1642,22 +1642,22 @@ struct sib_info { };void drbd_bcast_event (struct drbd_device *device,const struct sib_info *sib); -extern void notify_resource_state (struct sk_buff *, +extern int notify_resource_state (struct sk_buff *,unsigned int ,struct drbd_resource *,struct resource_info *,enum drbd_notification_type ); -extern void notify_device_state (struct sk_buff *, +extern int notify_device_state (struct sk_buff *,unsigned int ,struct drbd_device *,struct device_info *,enum drbd_notification_type ); -extern void notify_connection_state (struct sk_buff *, +extern int notify_connection_state (struct sk_buff *,unsigned int ,struct drbd_connection *,struct connection_info *,enum drbd_notification_type ); -extern void notify_peer_device_state(struct sk_buff *, +extern int notify_peer_device_state(struct sk_buff *, unsigned int, struct drbd_peer_device *, struct peer_device_info *,
drivers/block/drbd/drbd_main.c +2 -4
@@ -2793,12 +2793,12 @@ enum drbd_ret_code drbd_create_device(struct drbd_config_context *adm_ctx, unsigif (init_submitter (device)) { err =ERR_NOMEM ; - goto out_idr_remove_vol; + goto out_idr_remove_from_resource; } err =add_disk (disk);if (err) - goto out_idr_remove_vol; + goto out_idr_remove_from_resource;/* inherit the connection state */ device->state.conn =first_connection (resource)->cstate;
@@ -2812,8 +2812,6 @@ enum drbd_ret_code drbd_create_device(struct drbd_config_context *adm_ctx, unsigdrbd_debugfs_device_add (device);return NO_ERROR ; -out_idr_remove_vol: -idr_remove (&connection->peer_devices, vnr); out_idr_remove_from_resource:for_each_connection (connection, resource) { peer_device =idr_remove (&connection->peer_devices, vnr);
drivers/block/drbd/drbd_nl.c +25 -16
156 lines not on this page · raw message
drivers/block/drbd/drbd_state.c +9 -9
@@ -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
@@ -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/bluetooth/btmtk.h +1 -0
@@ -5,6 +5,7 @@#define FIRMWARE_MT7668 "mediatek/mt7668pr2h.bin"#define FIRMWARE_MT7961 "mediatek/BT_RAM_CODE_MT7961_1_2_hdr.bin" +#define HCI_EV_WMT 0xe4#define HCI_WMT_MAX_EVENT_SIZE 64#define BTMTK_WMT_REG_READ 0x2
drivers/bluetooth/btmtksdio.c +1 -8
@@ -370,13 +370,6 @@ static int btmtksdio_recv_event(struct hci_dev *hdev, struct sk_buff *skb)struct hci_event_hdr *hdr = (void *)skb->data;int err; -/* Fix up the vendor event id with 0xff for vendor specific instead -* of 0xe4 so that event send via monitoring socket can be parsed -* properly. -*/ -if (hdr->evt ==0xe4 ) - hdr->evt =HCI_EV_VENDOR ; -/* When someone waits for the WMT event, the skb is being cloned * and being processed the events from there then. */
@@ -392,7 +385,7 @@ static int btmtksdio_recv_event(struct hci_dev *hdev, struct sk_buff *skb)if (err <0 ) goto err_free_skb; -if (hdr->evt ==HCI_EV_VENDOR ) { +if (hdr->evt ==HCI_EV_WMT ) {if (test_and_clear_bit (BTMTKSDIO_TX_WAIT_VND_EVT , &bdev->tx_state)) {/* Barrier to sync with other CPUs */
drivers/bluetooth/btusb.c +0 -8
@@ -2254,7 +2254,6 @@ static void btusb_mtk_wmt_recv(struct urb *urb) {struct hci_dev *hdev = urb->context;struct btusb_data *data =hci_get_drvdata (hdev); -struct hci_event_hdr *hdr;struct sk_buff *skb;int err;
@@ -2274,13 +2273,6 @@ static void btusb_mtk_wmt_recv(struct urb *urb)hci_skb_pkt_type (skb) =HCI_EVENT_PKT ;skb_put_data (skb, urb->transfer_buffer, urb->actual_length); - hdr = (void *)skb->data; -/* Fix up the vendor event id with 0xff for vendor specific -* instead of 0xe4 so that event send via monitoring socket can -* be parsed properly. -*/ - hdr->evt =0xff ; -/* When someone waits for the WMT event, the skb is being cloned * and being processed the events from there then. */
drivers/char/virtio_console.c +4 -4
@@ -2245,7 +2245,7 @@ static struct virtio_driver virtio_rproc_serial = { .remove = virtcons_remove, }; -static int __init init (void ) +static int __init virtio_console_init (void ) {int err;
@@ -2280,7 +2280,7 @@ static int __init init(void)return err; } -static void __exit fini(void) +static void __exit virtio_console_fini(void) {reclaim_dma_bufs ();
@@ -2290,8 +2290,8 @@ static void __exit fini(void)class_destroy (pdrvdata.class);debugfs_remove_recursive (pdrvdata.debugfs_dir); } -module_init (init); -module_exit (fini); +module_init (virtio_console_init); +module_exit (virtio_console_fini);MODULE_DESCRIPTION ("Virtio console driver" );MODULE_LICENSE ("GPL" );
drivers/clk/clk-si5341.c +9 -7
@@ -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
@@ -632,6 +632,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) {
@@ -2348,6 +2366,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) {/*
@@ -2376,6 +2399,7 @@ int clk_set_rate_range(struct clk *clk, unsigned long min, unsigned long max) } } +out:if (clk->exclusive_count)clk_core_rate_protect (clk->core);
drivers/clk/mediatek/clk-mt8192.c +30 -6
@@ -1236,9 +1236,17 @@ static int clk_mt8192_infra_probe(struct platform_device *pdev) r =mtk_clk_register_gates (node, infra_clks,ARRAY_SIZE (infra_clks), clk_data);if (r) -return r; + goto free_clk_data; + + r =of_clk_add_provider (node, of_clk_src_onecell_get, clk_data); +if (r) + goto free_clk_data; + +return r; -return of_clk_add_provider (node, of_clk_src_onecell_get, clk_data); +free_clk_data: +mtk_free_clk_data (clk_data); +return r; }static int clk_mt8192_peri_probe (struct platform_device *pdev)
@@ -1253,9 +1261,17 @@ static int clk_mt8192_peri_probe(struct platform_device *pdev) r =mtk_clk_register_gates (node, peri_clks,ARRAY_SIZE (peri_clks), clk_data);if (r) -return r; + goto free_clk_data; + + r =of_clk_add_provider (node, of_clk_src_onecell_get, clk_data); +if (r) + goto free_clk_data; -return of_clk_add_provider (node, of_clk_src_onecell_get, clk_data); +return r; + +free_clk_data: +mtk_free_clk_data (clk_data); +return r; }static int clk_mt8192_apmixed_probe (struct platform_device *pdev)
@@ -1271,9 +1287,17 @@ static int clk_mt8192_apmixed_probe(struct platform_device *pdev)mtk_clk_register_plls (node, plls,ARRAY_SIZE (plls), clk_data); r =mtk_clk_register_gates (node, apmixed_clks,ARRAY_SIZE (apmixed_clks), clk_data);if (r) -return r; + goto free_clk_data; -return of_clk_add_provider (node, of_clk_src_onecell_get, clk_data); + r =of_clk_add_provider (node, of_clk_src_onecell_get, clk_data); +if (r) + goto free_clk_data; + +return r; + +free_clk_data: +mtk_free_clk_data (clk_data); +return r; }static const struct of_device_id of_match_clk_mt8192[] = {
drivers/clk/rockchip/clk-rk3568.c +3 -3
@@ -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
@@ -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
@@ -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
@@ -1404,6 +1404,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 ;
@@ -1593,6 +1603,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_amdkfd_gpuvm.c +0 -6
@@ -1813,12 +1813,6 @@ int amdgpu_amdkfd_gpuvm_map_memory_to_gpu( true); ret =unreserve_bo_and_vms (&ctx, false, false); -/* Only apply no TLB flush on Aldebaran to -* workaround regressions on other Asics. -*/ -if (table_freed && (adev->asic_type !=CHIP_ALDEBARAN )) - *table_freed = true; - goto out; out_unreserve:
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +1 -0
@@ -1509,6 +1509,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_device.c +2 -2
@@ -2723,11 +2723,11 @@ static int amdgpu_device_ip_fini_early(struct amdgpu_device *adev) } } -amdgpu_amdkfd_suspend (adev, false); -amdgpu_device_set_pg_state (adev,AMD_PG_STATE_UNGATE );amdgpu_device_set_cg_state (adev,AMD_CG_STATE_UNGATE ); +amdgpu_amdkfd_suspend (adev, false); +/* Workaroud for ASICs need to disable SMC first */ amdgpu_device_smu_fini_early (adev);
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c +1 -1
@@ -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
@@ -1303,7 +1303,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
@@ -569,8 +569,8 @@ static void vcn_v3_0_mc_resume_dpg_mode(struct amdgpu_device *adev, int inst_idx AMDGPU_GPU_PAGE_ALIGN(sizeof(struct amdgpu_fw_shared)), 0, indirect);/* VCN global tiling registers */ -WREG32_SOC15_DPG_MODE (0 ,SOC15_DPG_MODE_OFFSET ( -UVD ,0 , mmUVD_GFX10_ADDR_CONFIG), adev->gfx.config.gb_addr_config,0 , indirect); +WREG32_SOC15_DPG_MODE (inst_idx,SOC15_DPG_MODE_OFFSET ( +UVD , inst_idx, mmUVD_GFX10_ADDR_CONFIG), adev->gfx.config.gb_addr_config,0 , indirect); }static void vcn_v3_0_disable_static_power_gating (struct amdgpu_device *adev,int inst)
drivers/gpu/drm/amd/amdkfd/kfd_chardev.c +8 -6
@@ -1416,6 +1416,12 @@ static int kfd_ioctl_free_memory_of_gpu(struct file *filep,return ret; } +static bool kfd_flush_tlb_after_unmap (struct kfd_dev *dev) { +return KFD_GC_VERSION (dev) ==IP_VERSION (9 ,4 ,2 ) || + (KFD_GC_VERSION (dev) ==IP_VERSION (9 ,4 ,1 ) && + dev->adev->sdma.instance[0 ].fw_version >=18 ); +} +static int kfd_ioctl_map_memory_to_gpu (struct file *filep,struct kfd_process *p,void *data) {
@@ -1503,7 +1509,7 @@ static int kfd_ioctl_map_memory_to_gpu(struct file *filep, }/* Flush TLBs after waiting for the page table updates to complete */ -if (table_freed) { +if (table_freed || !kfd_flush_tlb_after_unmap (dev)) {for (i =0 ; i < args->n_devices; i++) { peer =kfd_device_by_id (devices_arr[i]);if (WARN_ON_ONCE (!peer))
@@ -1603,7 +1609,7 @@ static int kfd_ioctl_unmap_memory_from_gpu(struct file *filep, }mutex_unlock (&p->mutex); -if (KFD_GC_VERSION (dev) ==IP_VERSION (9 ,4 ,2 )) { +if (kfd_flush_tlb_after_unmap (dev)) { err =amdgpu_amdkfd_gpuvm_sync_memory (dev->adev, (struct kgd_mem *) mem, true);if (err) {
@@ -1840,13 +1846,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
@@ -1567,7 +1567,7 @@ int kfd_create_crat_image_acpi(void **crat_image, size_t *size)/* Fetch the CRAT table from ACPI */ status =acpi_get_table (CRAT_SIGNATURE ,0 , &crat_table);if (status ==AE_NOT_FOUND ) { -pr_warn ("CRAT table not found\n" ); +pr_info ("CRAT table not found\n" );return -ENODATA ; }else if (ACPI_FAILURE (status)) {const char *err =acpi_format_exception (status);
drivers/gpu/drm/amd/amdkfd/kfd_process.c +0 -1
@@ -1150,7 +1150,6 @@ static void kfd_process_notifier_release(struct mmu_notifier *mn,cancel_delayed_work_sync (&p->eviction_work);cancel_delayed_work_sync (&p->restore_work); -cancel_delayed_work_sync (&p->svms.restore_work);mutex_lock (&p->mutex);
drivers/gpu/drm/amd/amdkfd/kfd_smi_events.c +15 -9
@@ -268,15 +268,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 ;
@@ -286,5 +277,20 @@ int kfd_smi_event_open(struct kfd_dev *dev, uint32_t *fd)list_add_rcu (&client->list, &dev->smi_clients);spin_unlock (&dev->smi_lock); + ret =anon_inode_getfd (kfd_smi_name, &kfd_smi_ev_fops, (void *)client, +O_RDWR ); +if (ret <0 ) { +spin_lock (&dev->smi_lock); +list_del_rcu (&client->list); +spin_unlock (&dev->smi_lock); + +synchronize_rcu (); + +kfifo_free (&client->fifo); +kfree (client); +return ret; + } + *fd = ret; +return 0 ; }
drivers/gpu/drm/amd/amdkfd/kfd_svm.c +45 -35
152 lines not on this page · raw message
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +4 -3
@@ -3951,7 +3951,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) {
@@ -3982,7 +3982,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)
@@ -9914,7 +9915,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
@@ -540,6 +540,12 @@ struct amdgpu_display_manager {* cached backlight values. */ u32 brightness[AMDGPU_DM_MAX_NUM_EDP ]; +/** +* @actual_brightness: +* +* last successfully applied backlight values. +*/ +u32 actual_brightness[AMDGPU_DM_MAX_NUM_EDP ]; };enum dsc_clock_force_state {
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c +60 -20
220 lines not on this page · raw message
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_psr.c +2 -4
@@ -149,10 +149,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.c +60 -6
92 lines not on this page · raw message
drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c +10 -5
@@ -2378,22 +2378,27 @@ static enum link_training_result dp_perform_8b_10b_link_training( repeater_id--) { status =perform_clock_recovery_sequence (link, link_res, lt_settings, repeater_id); -if (status !=LINK_TRAINING_SUCCESS ) +if (status !=LINK_TRAINING_SUCCESS ) { +repeater_training_done (link, repeater_id);
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/display/dc/core/dc_resource.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/display/dc/dce/dmub_outbox.c +14 -11
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/display/dc/dce/dmub_outbox.h +2 -2
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c +0 -11
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/display/dc/dcn21/dcn21_resource.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/display/dc/dcn31/dcn31_hwseq.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/display/dc/dcn31/dcn31_resource.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu10_hwmgr.c +4 -4
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/drm_panel_orientation_quirks.c +6 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gm20b.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gp102.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gp10b.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/nouveau/nvkm/subdev/pmu/priv.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/panel/panel-ilitek-ili9341.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/infiniband/ulp/rtrs/rtrs-clt.c +22 -18
Lines of this file are not shown. View the raw message.
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/misc/habanalabs/common/memory.c +11 -19
Lines of this file are not shown. View the raw message.
drivers/misc/habanalabs/common/mmu/mmu_v1.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/misc/habanalabs/gaudi/gaudi.c +48 -0
48 lines not on this page · raw message
drivers/mmc/core/block.c +42 -4
46 lines not on this page · raw message
drivers/net/can/usb/etas_es58x/es58x_fd.c +1 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/bnxt/bnxt.c +7 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/bnxt/bnxt.h +4 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c +1 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c +12 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.h +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/freescale/dpaa2/dpaa2-ptp.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_common.c +12 -9
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/iavf/iavf_main.c +143 -30
173 lines not on this page · raw message
drivers/net/ethernet/intel/iavf/iavf_virtchnl.c +10 -8
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_lib.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_main.c +9 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_xsk.c +4 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/mv643xx_eth.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/sample.c +1 -6
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en/tc/sample.c +5 -5
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_main.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +0 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_tc.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c +3 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/port.c +0 -23
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlxsw/spectrum.c +1 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlxsw/spectrum.h +7 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c +1 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c +1 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/qlogic/qed/qed_debug.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/qlogic/qede/qede_fp.c +3 -0
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/stmicro/stmmac/stmmac_platform.c +1 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/ath5k/eeprom.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/Kconfig +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/fw/api/dbg-tlv.h +2 -3
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/mvm/phy-ctxt.c +22 -9
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/mvm/scan.c +4 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/dma.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt76.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7615/mac.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7915/mac.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7921/main.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtw88/debug.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtw88/debug.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtw88/fw.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtw88/mac80211.c +4 -4
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtw88/main.c +4 -4
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtw88/rtw8821c.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtw88/rtw8822b.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtw88/rtw8822c.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtw88/sar.c +4 -4
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtw89/core.c +4 -1
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/pci/endpoint/functions/pci-epf-test.c +12 -2
Lines of this file are not shown. View the raw message.
drivers/phy/amlogic/phy-meson-gxl-usb2.c +4 -1
Lines of this file are not shown. View the raw message.
drivers/platform/x86/hp-wmi.c +63 -30
93 lines not on this page · raw message
drivers/power/supply/axp288_fuel_gauge.c +8 -6
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/mpi3mr/mpi3mr_os.c +88 -20
108 lines not on this page · raw message
drivers/scsi/pm8001/pm8001_hwi.c +38 -41
79 lines not on this page · raw message
drivers/scsi/smartpqi/smartpqi_init.c +25 -20
45 lines not on this page · raw message
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.c +6 -0
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/host/xen-hcd.c +43 -14
57 lines not on this page · raw message
fs/btrfs/volumes.c +28 -37
65 lines not on this page · raw message
fs/io_uring.c +197 -191
388 lines not on this page · raw message
fs/nfs/direct.c +32 -16
48 lines not on this page · 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
net/bluetooth/hci_event.c +63 -16
79 lines not on this page · raw message
net/core/filter.c +40 -6
46 lines not on this page · raw message
net/ipv4/inet_hashtables.c +32 -21
53 lines not on this page · raw message
net/mctp/af_mctp.c +33 -13
46 lines not on this page · raw message
net/netfilter/nf_conntrack_core.c +68 -17
85 lines not on this page · raw message
net/openvswitch/flow_netlink.c +93 -6
99 lines not on this page · raw message
net/sunrpc/xprtsock.c +52 -18
70 lines not on this page · raw message
tools/perf/util/arm64-frame-pointer-unwind-support.c +1 -1
Lines of this file are not shown. View the raw message.
tools/perf/util/unwind-libunwind-local.c +7 -3
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/progs/test_sk_lookup.c +1 -2
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/xdpxceiver.c +49 -31
80 lines not on this page · raw message
tools/testing/selftests/bpf/xdpxceiver.h +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/kvm/aarch64/vgic_irq.c +26 -19
45 lines not on this page · raw message
tools/testing/selftests/kvm/lib/aarch64/gic_v3.c +7 -5
Lines of this file are not shown. View the raw message.
tools/testing/selftests/kvm/lib/aarch64/vgic.c +5 -4
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.