Linux 6.19.7
Sasha Levin
maintainer-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
I'm announcing the release of the 6.19.7 kernel.
All users of the 6.19 kernel series must upgrade.
The updated 6.19.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.19.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,
Sasha
- ------------
Documentation/sound/alsa-configuration.rst | 4 + Documentation/virt/kvm/api.rst | 28 ++- Makefile | 10 +- arch/alpha/kernel/vmlinux.lds.S | 1 + arch/arc/kernel/vmlinux.lds.S | 1 + arch/arm/boot/compressed/vmlinux.lds.S | 1 + arch/arm/include/asm/string.h | 14 +- arch/arm/kernel/vmlinux-xip.lds.S | 1 + arch/arm/kernel/vmlinux.lds.S | 1 + arch/arm64/include/asm/io.h | 26 ++- arch/arm64/include/asm/pgtable-prot.h | 3 - arch/arm64/kernel/acpi.c | 2 +- arch/arm64/kernel/vmlinux.lds.S | 1 + arch/arm64/kvm/hyp/nvhe/pkvm.c | 35 ++- arch/arm64/kvm/sys_regs.c | 3 + arch/arm64/mm/ioremap.c | 6 +- arch/arm64/mm/mmap.c | 8 +- arch/arm64/net/bpf_jit_comp.c | 2 +- arch/csky/kernel/vmlinux.lds.S | 1 + arch/hexagon/kernel/vmlinux.lds.S | 1 + arch/loongarch/kernel/vmlinux.lds.S | 1 + arch/m68k/kernel/vmlinux-nommu.lds | 1 + arch/m68k/kernel/vmlinux-std.lds | 1 + arch/m68k/kernel/vmlinux-sun3.lds | 1 + arch/mips/kernel/vmlinux.lds.S | 1 + arch/nios2/kernel/vmlinux.lds.S | 1 + arch/openrisc/kernel/vmlinux.lds.S | 1 + arch/parisc/boot/compressed/vmlinux.lds.S | 1 + arch/parisc/kernel/vmlinux.lds.S | 1 + arch/powerpc/kernel/vmlinux.lds.S | 1 + arch/riscv/kernel/vmlinux.lds.S | 1 + arch/s390/include/asm/idle.h | 1 + arch/s390/kernel/idle.c | 13 +- arch/s390/kernel/ipl.c | 2 +- arch/s390/kernel/irq.c | 10 +- arch/s390/kernel/vmlinux.lds.S | 1 + arch/s390/kernel/vtime.c | 18 +- arch/sh/kernel/vmlinux.lds.S | 1 + arch/sparc/kernel/vmlinux.lds.S | 1 + arch/um/kernel/dyn.lds.S | 1 + arch/um/kernel/uml.lds.S | 1 + arch/x86/boot/compressed/Makefile | 1 + arch/x86/boot/compressed/sev.c | 9 +- arch/x86/boot/compressed/vmlinux.lds.S | 2 +- arch/x86/boot/startup/sev-shared.c | 2 +- arch/x86/coco/sev/core.c | 1 + arch/x86/entry/entry_fred.c | 5 +- arch/x86/events/intel/uncore_snbep.c | 28 ++- arch/x86/include/asm/cfi.h | 12 +- arch/x86/include/asm/efi.h | 2 +- arch/x86/include/asm/kvm_host.h | 7 + arch/x86/include/asm/linkage.h | 4 +- arch/x86/include/asm/msr-index.h | 5 +- arch/x86/include/asm/numa.h | 6 + arch/x86/include/asm/topology.h | 6 + arch/x86/include/asm/traps.h | 2 + arch/x86/include/uapi/asm/kvm.h | 6 +- arch/x86/kernel/alternative.c | 29 ++- arch/x86/kernel/cpu/common.c | 3 + arch/x86/kernel/cpu/topology.c | 13 +- arch/x86/kernel/smpboot.c | 201 ++++++++++++----- arch/x86/kernel/traps.c | 2 +- arch/x86/kernel/vmlinux.lds.S | 1 + arch/x86/kvm/ioapic.c | 2 +- arch/x86/kvm/lapic.c | 76 ++++++- arch/x86/kvm/lapic.h | 2 + arch/x86/kvm/x86.c | 21 +- arch/x86/mm/extable.c | 7 +- arch/x86/mm/numa.c | 8 + arch/x86/mm/srat.c | 2 + arch/x86/net/bpf_jit_comp.c | 13 +- arch/x86/platform/efi/efi.c | 2 +- arch/x86/platform/efi/quirks.c | 55 ++++- block/blk-sysfs.c | 8 +- block/elevator.c | 12 +- drivers/accel/amdxdna/aie2_ctx.c | 55 +++-- drivers/accel/amdxdna/aie2_message.c | 36 +++- drivers/accel/amdxdna/aie2_pci.c | 23 +- drivers/accel/amdxdna/aie2_pci.h | 1 + drivers/accel/amdxdna/aie2_pm.c | 2 +- drivers/accel/amdxdna/amdxdna_ctx.c | 51 +++-- drivers/accel/amdxdna/amdxdna_ctx.h | 3 + drivers/accel/amdxdna/amdxdna_gem.c | 38 ++-- drivers/accel/amdxdna/amdxdna_pm.c | 2 + drivers/accel/amdxdna/amdxdna_pm.h | 11 + drivers/accel/amdxdna/amdxdna_ubuf.c | 6 +- drivers/accel/ethosu/ethosu_gem.c | 7 +- drivers/accel/ethosu/ethosu_job.c | 26 ++- drivers/accel/rocket/rocket_core.c | 7 +- drivers/accel/rocket/rocket_drv.c | 15 +- drivers/ata/libata-eh.c | 3 +- drivers/ata/libata-scsi.c | 1 + drivers/block/drbd/drbd_actlog.c | 53 ++--- drivers/block/drbd/drbd_interval.h | 5 +- drivers/block/drbd/drbd_req.c | 3 +- drivers/block/zloop.c | 31 ++- drivers/char/ipmi/ipmi_msghandler.c | 11 +- drivers/clk/imx/clk-imx8qxp.c | 24 ++- drivers/clk/imx/clk-scu.c | 12 +- drivers/clk/imx/clk-scu.h | 2 + drivers/cpufreq/intel_pstate.c | 10 +- drivers/crypto/ccp/sev-dev-tsm.c | 2 +- drivers/cxl/core/mbox.c | 11 +- drivers/cxl/core/pmem.c | 42 +++- drivers/cxl/cxl.h | 7 + drivers/cxl/pmem.c | 22 +- drivers/firmware/efi/mokvar-table.c | 2 +- drivers/gpio/gpiolib-shared.c | 6 +- drivers/gpu/drm/amd/amdgpu/amdgpu_aca.c | 1 + drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 17 +- drivers/gpu/drm/amd/amdgpu/amdgpu_psp_ta.c | 12 +- drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c | 8 +- .../drm/amd/display/amdgpu_dm/amdgpu_dm_color.c | 6 +- .../drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c | 3 +- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c | 16 +- .../drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c | 8 + drivers/gpu/drm/amd/display/dc/core/dc_stream.c | 2 +- drivers/gpu/drm/bridge/synopsys/dw-dp.c | 4 +- drivers/gpu/drm/drm_client_modeset.c | 3 +- drivers/gpu/drm/drm_syncobj.c | 4 +- drivers/gpu/drm/imx/ipuv3/parallel-display.c | 4 +- drivers/gpu/drm/logicvc/logicvc_drm.c | 4 +- drivers/gpu/drm/scheduler/sched_main.c | 1 + drivers/gpu/drm/solomon/ssd130x.c | 6 +- drivers/gpu/drm/tiny/sharp-memory.c | 4 +- drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c | 4 +- drivers/gpu/drm/vmwgfx/vmwgfx_page_dirty.c | 9 +- drivers/gpu/drm/xe/regs/xe_engine_regs.h | 6 + drivers/gpu/drm/xe/xe_configfs.c | 1 + drivers/gpu/drm/xe/xe_exec_queue.c | 23 +- drivers/gpu/drm/xe/xe_gsc_proxy.c | 43 +++- drivers/gpu/drm/xe/xe_gsc_types.h | 2 + drivers/gpu/drm/xe/xe_gt.c | 66 ++++-- drivers/gpu/drm/xe/xe_lrc.h | 3 +- drivers/gpu/drm/xe/xe_reg_sr.c | 4 +- drivers/gpu/drm/xe/xe_ring_ops.c | 9 + drivers/hid/hid-cmedia.c | 2 +- drivers/hid/hid-creative-sb0540.c | 2 +- drivers/hid/hid-multitouch.c | 43 +++- drivers/hid/hid-zydacron.c | 2 +- drivers/hid/usbhid/hid-pidff.c | 11 +- drivers/hwmon/aht10.c | 6 +- drivers/hwmon/it87.c | 5 +- drivers/hwmon/macsmc-hwmon.c | 53 ++--- drivers/hwmon/max6639.c | 2 +- drivers/i2c/busses/i2c-i801.c | 14 +- drivers/infiniband/hw/ionic/ionic_controlpath.c | 2 +- drivers/infiniband/hw/irdma/verbs.c | 2 +- drivers/infiniband/hw/mthca/mthca_provider.c | 5 +- drivers/irqchip/irq-ls-extirq.c | 6 +- drivers/irqchip/irq-sifive-plic.c | 7 +- drivers/media/dvb-core/dmxdev.c | 4 +- drivers/net/bonding/bond_main.c | 9 +- drivers/net/bonding/bond_options.c | 2 + drivers/net/can/dummy_can.c | 1 + drivers/net/can/spi/mcp251x.c | 15 +- drivers/net/can/usb/ems_usb.c | 7 +- drivers/net/can/usb/etas_es58x/es58x_core.c | 8 +- drivers/net/can/usb/f81604.c | 45 +++- drivers/net/can/usb/ucan.c | 2 +- drivers/net/dsa/realtek/rtl8365mb.c | 2 +- drivers/net/ethernet/amd/xgbe/xgbe-common.h | 2 +- drivers/net/ethernet/amd/xgbe/xgbe-drv.c | 10 - drivers/net/ethernet/amd/xgbe/xgbe-main.c | 1 - drivers/net/ethernet/amd/xgbe/xgbe.h | 3 - .../net/ethernet/freescale/dpaa2/dpaa2-switch.c | 3 +- drivers/net/ethernet/freescale/enetc/enetc.c | 2 +- drivers/net/ethernet/google/gve/gve_tx_dqo.c | 56 +++-- drivers/net/ethernet/intel/e1000e/defines.h | 1 + drivers/net/ethernet/intel/e1000e/ich8lan.c | 9 + drivers/net/ethernet/intel/i40e/i40e_main.c | 41 ++-- drivers/net/ethernet/intel/i40e/i40e_trace.h | 2 +- drivers/net/ethernet/intel/i40e/i40e_txrx.c | 5 +- drivers/net/ethernet/intel/iavf/iavf_main.c | 17 +- drivers/net/ethernet/intel/ice/ice.h | 1 + drivers/net/ethernet/intel/ice/ice_base.c | 38 ++-- drivers/net/ethernet/intel/ice/ice_common.c | 2 +- drivers/net/ethernet/intel/ice/ice_ethtool.c | 16 +- drivers/net/ethernet/intel/ice/ice_idc.c | 44 +++- drivers/net/ethernet/intel/ice/ice_lib.c | 15 +- drivers/net/ethernet/intel/ice/ice_main.c | 7 +- drivers/net/ethernet/intel/ice/ice_txrx.c | 4 +- drivers/net/ethernet/intel/ice/ice_xsk.c | 3 + drivers/net/ethernet/intel/idpf/idpf_ethtool.c | 3 - drivers/net/ethernet/intel/idpf/idpf_txrx.c | 8 +- drivers/net/ethernet/intel/igb/igb_xsk.c | 38 +++- drivers/net/ethernet/intel/igc/igc_main.c | 34 ++- drivers/net/ethernet/intel/igc/igc_ptp.c | 3 +- drivers/net/ethernet/intel/libie/fwlog.c | 4 + .../net/ethernet/marvell/octeon_ep/octep_main.c | 40 ++-- drivers/net/ethernet/marvell/octeon_ep/octep_rx.c | 27 ++- .../ethernet/marvell/octeon_ep_vf/octep_vf_main.c | 38 +++- .../ethernet/marvell/octeon_ep_vf/octep_vf_rx.c | 28 ++- drivers/net/ethernet/mediatek/mtk_eth_soc.c | 15 +- drivers/net/ethernet/stmicro/stmmac/common.h | 1 - drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c | 4 - .../net/ethernet/stmicro/stmmac/dwmac-loongson.c | 7 - drivers/net/ethernet/stmicro/stmmac/stmmac.h | 3 +- drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 89 ++++---- .../net/ethernet/stmicro/stmmac/stmmac_platform.c | 8 - drivers/net/ethernet/stmicro/stmmac/stmmac_vlan.c | 60 +++--- drivers/net/ethernet/ti/am65-cpsw-nuss.c | 2 +- drivers/net/ethernet/ti/cpsw_ale.c | 9 +- drivers/net/ethernet/ti/icssg/icssg_prueth.c | 8 + drivers/net/phy/phy_device.c | 25 ++- drivers/net/usb/kalmia.c | 7 + drivers/net/usb/kaweth.c | 13 ++ drivers/net/usb/pegasus.c | 13 +- drivers/net/vxlan/vxlan_core.c | 5 + drivers/net/wireless/marvell/libertas/main.c | 4 +- .../net/wireless/mediatek/mt76/mt76_connac_mac.c | 1 + drivers/net/wireless/mediatek/mt76/mt7925/mac.c | 1 + drivers/net/wireless/mediatek/mt76/mt7996/mac.c | 1 + drivers/net/wireless/rsi/rsi_91x_mac80211.c | 2 +- drivers/net/wireless/st/cw1200/pm.c | 2 + drivers/net/wireless/ti/wlcore/main.c | 4 +- drivers/nfc/pn533/usb.c | 1 + drivers/nvme/host/core.c | 7 + drivers/nvme/host/multipath.c | 12 +- drivers/nvme/host/pr.c | 4 +- drivers/nvme/target/fcloop.c | 15 +- drivers/pci/controller/dwc/pcie-designware-ep.c | 25 ++- drivers/pinctrl/cirrus/pinctrl-cs42l43.c | 5 +- drivers/pinctrl/meson/pinctrl-amlogic-a4.c | 70 +++++- drivers/pinctrl/pinconf-generic.c | 73 +------ drivers/pinctrl/pinctrl-equilibrium.c | 31 +-- drivers/pinctrl/qcom/pinctrl-qcs615.c | 1 + drivers/platform/x86/dell/alienware-wmi-wmax.c | 2 +- drivers/platform/x86/dell/dell-wmi-base.c | 6 + .../dell/dell-wmi-sysman/passwordattr-interface.c | 1 - .../platform/x86/hp/hp-bioscfg/enum-attributes.c | 9 +- drivers/platform/x86/lenovo/thinkpad_acpi.c | 6 +- drivers/regulator/bq257xx-regulator.c | 3 +- drivers/regulator/fp9931.c | 7 +- drivers/regulator/mt6363-regulator.c | 4 +- drivers/scsi/lpfc/lpfc_init.c | 2 + drivers/scsi/lpfc/lpfc_sli.c | 36 +++- drivers/scsi/lpfc/lpfc_sli4.h | 3 + drivers/scsi/pm8001/pm8001_sas.c | 5 +- drivers/scsi/scsi_scan.c | 1 + drivers/spi/spi-stm32.c | 3 + drivers/target/target_core_configfs.c | 15 +- drivers/ufs/core/ufshcd.c | 38 +++- drivers/usb/gadget/function/f_ncm.c | 128 ++++++----- drivers/usb/gadget/function/u_ether.c | 45 ++++ drivers/usb/gadget/function/u_ether.h | 30 +++ drivers/usb/gadget/function/u_ether_configfs.h | 176 +++++++++++++++ drivers/usb/gadget/function/u_ncm.h | 4 +- drivers/xen/xen-acpi-processor.c | 7 +- fs/btrfs/delayed-inode.c | 2 +- fs/btrfs/disk-io.c | 6 +- fs/btrfs/inode.c | 2 +- fs/btrfs/ioctl.c | 7 +- fs/btrfs/scrub.c | 2 +- fs/btrfs/tree-checker.c | 4 +- fs/eventpoll.c | 5 +- fs/namespace.c | 20 +- fs/netfs/direct_write.c | 228 ++++++++++++++++++-- fs/netfs/internal.h | 4 +- fs/netfs/write_collect.c | 21 -- fs/netfs/write_issue.c | 41 +--- fs/nfsd/nfsctl.c | 2 +- fs/smb/client/connect.c | 1 - fs/smb/client/smb2inode.c | 8 +- fs/smb/client/smb2pdu.c | 24 +-- fs/smb/client/transport.c | 21 +- fs/smb/server/Kconfig | 1 + fs/smb/server/auth.c | 4 +- fs/smb/server/smb2pdu.c | 5 +- fs/squashfs/cache.c | 3 + fs/xfs/scrub/orphanage.c | 7 +- fs/xfs/xfs_notify_failure.c | 4 +- include/asm-generic/vmlinux.lds.h | 4 +- include/linux/indirect_call_wrapper.h | 18 +- include/linux/netdevice.h | 27 ++- include/linux/pinctrl/pinconf-generic.h | 5 - include/linux/ring_buffer.h | 1 + include/linux/sched.h | 1 + include/linux/stmmac.h | 1 - include/linux/tnum.h | 8 + include/linux/uaccess.h | 54 ++--- include/net/bonding.h | 1 + include/net/inet6_hashtables.h | 2 +- include/net/inet_hashtables.h | 2 +- include/net/ip.h | 2 +- include/net/ip_fib.h | 2 +- include/net/netfilter/nf_tables.h | 11 +- include/net/sch_generic.h | 10 + include/net/secure_seq.h | 45 +++- include/net/tc_act/tc_ife.h | 4 +- include/net/tcp.h | 6 +- include/net/xdp_sock_drv.h | 16 +- include/trace/events/netfs.h | 4 +- include/uapi/drm/drm_fourcc.h | 12 +- include/uapi/linux/pci_regs.h | 2 +- io_uring/cmd_net.c | 2 +- kernel/bpf/cpumap.c | 17 +- kernel/bpf/devmap.c | 47 +++- kernel/bpf/tnum.c | 72 +++++++ kernel/bpf/trampoline.c | 4 +- kernel/bpf/verifier.c | 103 ++++++++- kernel/cgroup/cpuset.c | 4 +- kernel/events/core.c | 83 +++++-- kernel/module/main.c | 6 - kernel/rseq.c | 5 +- kernel/sched/ext_internal.h | 2 +- kernel/sched/fair.c | 238 +++++++++++++++------ kernel/sched/sched.h | 4 +- kernel/sched/syscalls.c | 30 +++ kernel/time/jiffies.c | 2 - kernel/time/timekeeping.c | 6 +- kernel/trace/blktrace.c | 3 +- kernel/trace/ring_buffer.c | 21 ++ kernel/trace/trace.c | 13 ++ kernel/trace/trace_events_trigger.c | 3 + lib/Kconfig.debug | 1 + lib/debugobjects.c | 19 +- mm/huge_memory.c | 3 + mm/slub.c | 13 +- net/atm/lec.c | 26 ++- net/bluetooth/hci_sock.c | 1 + net/bluetooth/hci_sync.c | 2 +- net/bluetooth/iso.c | 1 + net/bluetooth/l2cap_sock.c | 1 + net/bluetooth/sco.c | 1 + net/bridge/br_device.c | 2 +- net/bridge/br_input.c | 2 +- net/bridge/br_private.h | 10 + net/bridge/br_vlan_options.c | 26 ++- net/can/bcm.c | 1 + net/core/dev.c | 7 +- net/core/devmem.c | 6 +- net/core/filter.c | 6 +- net/core/netpoll.c | 2 +- net/core/secure_seq.c | 80 +++---- net/core/skmsg.c | 14 +- net/ipv4/inet_hashtables.c | 8 +- net/ipv4/syncookies.c | 11 +- net/ipv4/sysctl_net_ipv4.c | 5 +- net/ipv4/tcp.c | 4 +- net/ipv4/tcp_bpf.c | 2 +- net/ipv4/tcp_diag.c | 2 +- net/ipv4/tcp_input.c | 38 ++-- net/ipv4/tcp_ipv4.c | 37 ++-- net/ipv4/tcp_minisocks.c | 2 +- net/ipv4/udp.c | 27 ++- net/ipv4/udp_bpf.c | 2 +- net/ipv6/inet6_hashtables.c | 3 +- net/ipv6/route.c | 11 +- net/ipv6/syncookies.c | 11 +- net/ipv6/tcp_ipv6.c | 37 ++-- net/mac80211/mesh.c | 3 + net/mac80211/mlme.c | 3 + net/mptcp/pm.c | 55 +++-- net/mptcp/pm_kernel.c | 9 + net/netfilter/nf_tables_api.c | 66 +++--- net/netfilter/nft_set_hash.c | 1 + net/netfilter/nft_set_pipapo.c | 62 +++++- net/netfilter/nft_set_pipapo.h | 2 + net/netfilter/nft_set_rbtree.c | 79 ++----- net/nfc/nci/core.c | 30 ++- net/nfc/nci/data.c | 12 +- net/nfc/rawsock.c | 11 + net/rds/tcp.c | 14 +- net/sched/act_ife.c | 93 ++++---- net/sched/sch_ets.c | 12 +- net/sched/sch_fq.c | 1 + net/unix/af_unix.c | 8 +- net/wireless/core.c | 1 + net/wireless/radiotap.c | 4 +- net/xdp/xsk.c | 26 ++- rust/kernel/kunit.rs | 8 + sound/hda/codecs/realtek/alc269.c | 13 +- sound/hda/codecs/side-codecs/cs35l56_hda.c | 2 +- sound/hda/controllers/intel.c | 2 + sound/soc/sdca/Kconfig | 2 + sound/soc/sdca/sdca_functions.c | 5 +- sound/soc/sdca/sdca_interrupts.c | 4 +- sound/usb/endpoint.c | 9 +- sound/usb/mixer_scarlett2.c | 10 +- sound/usb/qcom/qc_audio_offload.c | 2 +- sound/usb/quirks.c | 3 +- sound/usb/stream.c | 3 + sound/usb/usbaudio.h | 6 + sound/usb/validate.c | 2 +- tools/objtool/Makefile | 8 +- tools/testing/kunit/kunit_kernel.py | 6 +- tools/testing/kunit/kunit_tool_test.py | 26 +++ tools/testing/selftests/arm64/abi/hwcap.c | 4 +- .../testing/selftests/bpf/prog_tests/reg_bounds.c | 2 +- tools/testing/selftests/bpf/progs/dmabuf_iter.c | 2 +- .../selftests/bpf/progs/exceptions_assert.c | 34 +-- .../selftests/bpf/progs/verifier_scalar_ids.c | 56 +++-- tools/testing/selftests/bpf/verifier/precise.c | 8 +- tools/testing/selftests/kselftest_harness.h | 7 +- tools/testing/selftests/net/mptcp/mptcp_join.sh | 49 +++++ tools/testing/selftests/net/mptcp/simult_flows.sh | 11 +- 397 files changed, 4121 insertions(+), 1792 deletions(-)
Aaron Ma (1):
ice: recap the VSI and QoS info after rebuild
Alain Volmat (1):
spi: stm32: fix missing pointer assignment in case of dma chaining
Alban Bedel (1):
can: mcp251x: fix deadlock in error path of mcp251x_open
Alex Hung (2):
drm/amd/display: Use mpc.preblend flag to indicate 3D LUT drm/amd/display: Enable DEGAMMA and reject COLOR_PIPELINE+DEGAMMA_LUT
Alexandre Courbot (1):
rust: kunit: fix warning when !CONFIG_PRINTK
Alexey Charkov (1):
scsi: ufs: core: Fix RPMB region size detection for UFS 2.2
Allison Henderson (1):
net/rds: Fix circular locking dependency in rds_tcp_tune
Alper Ak (1):
crypto: ccp - Fix use-after-free on error path
Andrew Cooper (1):
x86/fred: Correct speculative safety in fred_extint()
Andrew Lunn (1):
net: phy: register phy led_triggers during probe to avoid AB-BA deadlock
Ankit Garg (1):
gve: fix incorrect buffer cleanup in gve_tx_clean_pending_packets for QPL
Ariel Silver (1):
wifi: mac80211: bounds-check link_id in ieee80211_ml_reconfiguration
Bart Van Assche (5):
drm/amdgpu: Unlock a mutex before destroying it drm/amdgpu: Fix locking bugs in error paths
hwmon: (it87) Check the it87_lock() return value
wifi: cw1200: Fix locking in error paths
wifi: wlcore: Fix a locking bug
Bjorn Helgaas (1):
PCI: Correct PCI_CAP_EXP_ENDPOINT_SIZEOF_V2 value
Bobby Eshleman (1):
net: devmem: use READ_ONCE/WRITE_ONCE on binding->dev
Boris Faure (1):
ASoC: sdca: Fix missing regmap dependencies in Kconfig
Brad Spengler (1):
drm/vmwgfx: Fix invalid kref_put callback in vmw_bo_dirty_release
Brian Vazquez (1):
idpf: change IRQ naming to match netdev and ethtool queue numbering
Catalin Marinas (1):
arm64: gcs: Do not set PTE_SHARED on GCS mappings if FEAT_LPA2 is enabled
Chaitanya Kulkarni (1):
blktrace: fix __this_cpu_read/write in preemptible context
Charles Haithcock (1):
i2c: i801: Revert "i2c: i801: replace acpi_lock with I2C bus lock"
Charles Keepax (1):
ASoC: SDCA: Add allocation failure check for Entity name
Chen Ni (2):
drm/imx: parallel-display: check return value of devm_drm_bridge_add() in imx_pd_probe() drm/bridge: synopsys: dw-dp: Check return value of devm_drm_bridge_add() in dw_dp_bind()
Chintan Vankar (1):
net: ethernet: ti: am65-cpsw-nuss/cpsw-ale: Fix multicast entry handling in ALE table
Christian Brauner (1):
namespace: fix proc mount iteration
Christoph Böhmwalder (1):
drbd: fix null-pointer dereference on local read error
Christoph Hellwig (2):
zloop: advertise a volatile write cache
zloop: check for spurious options passed to remove
Conor Dooley (1):
pinctrl: generic: move function to amlogic-am4 driver
Corey Minyard (1):
ipmi: Fix use-after-free and list corruption on sender error
Dan Carpenter (1):
accel: ethosu: Fix shift overflow in cmd_to_addr()
Daniel Hodges (1):
wifi: libertas: fix use-after-free in lbs_free_adapter()
Daniel J Blueman (1):
gpio: shared: fix memory leaks
Danielle Ratson (1):
bridge: Check relevant per-VLAN options in VLAN range grouping
Daniil Dulov (1):
wifi: cfg80211: cancel rfkill_block work in wiphy_unregister()
Danilo Krummrich (1):
clk: scu/imx8qxp: do not register driver in probe()
Darrick J. Wong (1):
xfs: fix xfs_group release bug in xfs_dax_notify_dev_failure
Dave Jiang (2):
cxl: Move devm_cxl_add_nvdimm_bridge() to cxl_pmem.ko
cxl: Fix race of nvdimm_bus object when creating nvdimm objects
David Carlier (1):
sched_ext: Fix SCX_EFLAG_INITIALIZED being a no-op flag
David Howells (1):
netfs: Fix unbuffered/DIO writes to dispatch subrequests in strict sequence
David Laight (1):
uaccess: Fix scoped_user_read_access() for 'pointer to const'
David Thomson (1):
xen/acpi-processor: fix _CST detection using undersized evaluation buffer
Davide Caratti (1):
net/sched: ets: fix divide by zero in the offload path
Davidlohr Bueso (1):
cxl/mbox: validate payload size before accessing contents in cxl_payload_from_user_allowed()
Deepanshu Kartikey (1):
mm: thp: deny THP for files on anonymous inodes
Eduard Zingerman (1):
bpf: collect only live registers in linked regs
Eric Biggers (1):
ksmbd: Compare MACs in constant time
Eric Dumazet (5):
net: annotate data-races around sk->sk_{data_ready,write_space}
inet: annotate data-races around isk->inet_num
indirect_call_wrapper: do not reevaluate function pointer
tcp: secure_seq: add back ports to TS offset
net_sched: sch_fq: clear q->band_pkt_count[] in fq_reset()Ethan Tidmore (2):
drm/tiny: sharp-memory: fix pointer error dereference
xfs: Fix error pointer dereference
Felix Gu (7):
drm/logicvc: Fix device node reference leak in logicvc_drm_config_parse()
regulator: fp9931: Fix PM runtime reference leak in fp9931_hwmon_read()
regulator: bq257xx: Fix device node reference leak in bq257xx_reg_dt_parse_gpio()
pinctrl: pinconf-generic: Fix memory leak in pinconf_generic_parse_dt_config()
pinctrl: meson: amlogic-a4: Fix device node reference leak in aml_dt_node_to_map_pinmux()
pinctrl: cirrus: cs42l43: Fix double-put in cs42l43_pin_probe()
regulator: mt6363: Fix incorrect and redundant IRQ disposal in probe
Fernando Fernandez Mancera (2):
net: bridge: fix nd_tbl NULL dereference when IPv6 is disabled
net: vxlan: fix nd_tbl NULL dereference when IPv6 is disabled
Florian Eckert (2):
pinctrl: equilibrium: rename irq_chip function callbacks
pinctrl: equilibrium: fix warning trace on load
Florian Westphal (1):
netfilter: nft_set_pipapo: split gc into unlink and reclaim phase
Francesco Lavra (1):
drm/solomon: Fix page start when updating rectangle in page addressing mode
Fuad Tabba (3):
KVM: arm64: Hide S1POE from guests when not supported by the host
KVM: arm64: Fix ID register initialization for non-protected pKVM guests bpf, arm64: Force 8-byte alignment for JIT buffer to prevent atomic tearing
Geoffrey D. Bennett (3):
ALSA: scarlett2: Fix DSP filter control array handling
ALSA: usb-audio: Remove VALIDATE_RATES quirk for Focusrite devices
ALSA: usb-audio: Add QUIRK_FLAG_SKIP_IFACE_SETUP
Gerd Rausch (1):
time/jiffies: Fix sysctl file error on configurations where USER_HZ < HZ
Greg Kroah-Hartman (12):
nfc: pn533: properly drop the usb interface reference on disconnect
net: usb: kaweth: validate USB endpoints
net: usb: kalmia: validate USB endpoints
net: usb: pegasus: validate USB endpoints
can: ems_usb: ems_usb_read_bulk_callback(): check the proper length of a message
can: usb: f81604: correctly anchor the urb in the read bulk callback
can: ucan: Fix infinite loop from zero-length messages
can: usb: etas_es58x: correctly anchor the urb in the read bulk callback
can: usb: f81604: handle short interrupt urb messages properly
can: usb: f81604: handle bulk write errors properly
HID: Add HID_CLAIMED_INPUT guards in raw_event callbacks missing them Revert "netfilter: nft_set_rbtree: validate open interval overlap"
Guenter Roeck (5):
hwmon: (macsmc) Fix regressions in Apple Silicon SMC hwmon driver
hwmon: (macsmc) Fix overflows, underflows, and sign extension
dpaa2-switch: Fix interrupt storm after receiving bad if_id in IRQ handler
ata: libata-eh: Fix detection of deferred qc timeouts
tracing: Add NULL pointer check to trigger_data_free()
Hao Yu (1):
hwmon: (aht10) Fix initialization commands for AHT20
Haocheng Yu (1):
perf/core: Fix refcount bug and potential UAF in perf_mmap
Harishankar Vishwanathan (1):
bpf: Introduce tnum_step to step through tnum's members
Harry Yoo (1):
mm/slab: pass __GFP_NOWARN to refill_sheaf() if fallback is available
Heiko Carstens (2):
s390/idle: Fix cpu idle exit cpu time accounting s390/vtime: Fix virtual timer forwarding
Heitor Alves de Siqueira (1):
Bluetooth: purge error queues in socket destructors
Henrique Carvalho (1):
smb: client: fix cifs_pick_channel when channels are equally loaded
Hou Wenlong (1):
x86/bug: Handle __WARN_printf() trap in early_fixup_exception()
Ian Forbes (1):
drm/vmwgfx: Return the correct value in vmw_translate_ptr functions
Ian Ray (2):
HID: multitouch: new class MT_CLS_EGALAX_P80H84
net: nfc: nci: Fix zero-length proprietary notifications
Ingo Molnar (3):
sched/fair: Rename cfs_rq::avg_load to cfs_rq::sum_weight
sched/fair: Rename cfs_rq::avg_vruntime to ::sum_w_vruntime, and helper functions sched/fair: Introduce and use the vruntime_cmp() and vruntime_op() wrappers for wrapped-signed aritmetics
Ioana Ciornei (1):
irqchip/ls-extirq: Fix devm_of_iomap() error check
Jakub Kicinski (6):
tcp: give up on stronger sk_rcvbuf checks (for now)
ipv6: fix NULL pointer deref in ip6_rt_get_dev_rcu()
nfc: nci: free skb on nci_transceive early error paths
nfc: nci: complete pending data exchange on device close
nfc: nci: clear NCI_DATA_EXCHANGE before calling completion callback
nfc: rawsock: cancel tx_work before socket teardown
Jamal Hadi Salim (1):
net/sched: act_ife: Fix metalist update behavior
Jan Stancek (1):
x86/boot: Handle relative CONFIG_EFI_SBAT_FILE file paths
Jann Horn (1):
eventpoll: Fix integer overflow in ep_loop_check_proc()
Jason Gunthorpe (3):
IB/mthca: Add missed mthca_unmap_user_db() for mthca_create_srq() RDMA/irdma: Fix kernel stack leak in irdma_create_user_ah() RDMA/ionic: Fix kernel stack leak in ionic_create_cq()
Jens Axboe (2):
io_uring/cmd_net: use READ_ONCE() for ->addr3 read
media: dvb-core: fix wrong reinitialization of ringbuffer on reopen
Jiayuan Chen (5):
bpf: Fix race in cpumap on PREEMPT_RT
bpf: Fix race in devmap on PREEMPT_RT
atm: lec: fix null-ptr-deref in lec_arp_clear_vccs bpf/bonding: reject vlan+srcmac xmit_hash_policy change when XDP is loaded
net: ipv6: fix panic when IPv4 route references loopback IPv6 nexthop
Johannes Berg (1):
wifi: radiotap: reject radiotap with unknown bits
Jonathan Cavitt (1):
drm/client: Do not destroy NULL modes
Jonathan Teh (1):
platform/x86: thinkpad_acpi: Fix errors reading battery thresholds
Juhyung Park (2):
ALSA: hda/realtek: fix model name typo for Samsung Galaxy Book Flex (NT950QCG-X716)
ALSA: hda/realtek: add quirk for Samsung Galaxy Book Flex (NT950QCT-A38A)
Julian Orth (1):
drm/syncobj: Fix handle <-> fd ioctls with dirty stack
Jun Seo (1):
ALSA: usb-audio: Use correct version for UAC3 header validation
Junxiao Bi (1):
scsi: core: Fix refcount leak for tagset_refcnt
Juri Lelli (1):
sched/deadline: Fix missing ENQUEUE_REPLENISH during PI de-boosting
Justin Tee (1):
nvmet-fcloop: Check remoteport port_state before calling done callback
Keith Busch (1):
nvme-multipath: fix leak on try_module_get failure
Khushit Shah (1):
KVM: x86: Add x2APIC "features" to control EOI broadcast suppression
Kim Phillips (1):
x86/sev: Allow IBPB-on-Entry feature for SNP guests
Kohei Enju (2):
bpf: Fix stack-out-of-bounds write in devmap
iavf: fix netdev->max_mtu to respect actual hardware limit
Koichiro Den (1):
net: sched: avoid qdisc_reset_all_tx_gt() vs dequeue race for lockless qdiscs
Kuen-Han Tsai (3):
usb: gadget: u_ether: add gether_opts for config caching
usb: gadget: u_ether: Add auto-cleanup helper for freeing net_device
usb: gadget: f_ncm: align net_device lifecycle with bind/unbind
Kuniyuki Iwashima (2):
nfsd: Fix cred ref leak in nfsd_nl_threads_set_doit().
udp: Unhash auto-bound connected sk from 4-tuple hash table when disconnected.
Kurt Borja (2):
platform/x86: alienware-wmi-wmax: Add G-Mode support to m18 laptops platform/x86: dell-wmi: Add audio/mic mute key codes
Lang Xu (1):
bpf: Fix a UAF issue in bpf_trampoline_link_cgroup_shim
Lars Ellenberg (1):
drbd: fix "LOGIC BUG" in drbd_al_begin_io_nonblock()
Larysa Zaremba (9):
ice: fix adding AQ LLDP filter for VF
xdp: use modulo operation to calculate XDP frag tailroom
xsk: introduce helper to determine rxq->frag_size
ice: fix rxq info registering in mbuf packets
ice: change XDP RxQ frag_size from DMA write length to xdp.frame_sz
i40e: fix registering XDP RxQ info
i40e: use xdp.frame_sz as XDP RxQ info frag_size
net: enetc: use truesize as XDP RxQ info frag_size
xdp: produce a warning when calculated tailroom is negative
Li Li (1):
idpf: increment completion queue next_to_clean in sw marker wait routine
Lijo Lazar (1):
drm/amdgpu: Fix error handling in slot reset
Lizhi Hou (11):
accel/amdxdna: Remove buffer size check when creating command BO accel/amdxdna: Switch to always use chained command accel/amdxdna: Fix crash when destroying a suspended hardware context accel/amdxdna: Fix dead lock for suspend and resume accel/amdxdna: Fix suspend failure after enabling turbo mode accel/amdxdna: Fix command hang on suspended hardware context accel/amdxdna: Fix out-of-bounds memset in command slot handling accel/amdxdna: Prevent ubuf size overflow
accel/amdxdna: Validate command buffer payload count accel/amdxdna: Fill invalid payload for failed command accel/amdxdna: Fix NULL pointer dereference of mgmt_chann
Lorenzo Bianconi (4):
wifi: mt76: mt7996: Fix possible oob access in mt7996_mac_write_txwi_80211()
wifi: mt76: mt7925: Fix possible oob access in mt7925_mac_write_txwi_80211()
wifi: mt76: Fix possible oob access in mt76_connac2_mac_write_txwi_80211()
net: ethernet: mtk_eth_soc: Reset prog ptr to old_prog in case of error in mtk_xdp_setup()MD Danish Anwar (1):
net: ti: icssg-prueth: Fix ping failure after offload mode setup when link speed is not 1G
Mario Limonciello (2):
accel/amdxdna: Reduce log noise during process termination platform/x86: hp-bioscfg: Support allocations of larger data
Mariusz Skamra (1):
Bluetooth: Fix CIS host feature condition
Mark Harmstone (6):
btrfs: fix error message order of parameters in btrfs_delete_delayed_dir_index()
btrfs: fix incorrect key offset in error message in check_dev_extent_item()
btrfs: fix objectid value in error message in check_extent_data_ref()
btrfs: fix warning in scrub_verify_one_metadata()
btrfs: print correct subvol num if active swapfile prevents deletion
btrfs: fix compat mask in error messages in btrfs_check_features()
Mathias Krause (1):
scsi: lpfc: Properly set WC for DPP mapping
Mathieu Desnoyers (1):
rseq: Clarify rseq registration rseq_size bound check comment
Matt Roper (1):
drm/xe/wa: Steer RMW of MCR registers while building default LRC
Matthew Brost (1):
drm/xe: Do not preempt fence signaling CS instructions
Matthieu Baerts (NGI0) (4):
mptcp: pm: avoid sending RM_ADDR over same subflow
mptcp: pm: in-kernel: always mark signal+subflow endp as used
selftests: mptcp: join: check RM_ADDR not sent over same subflow
selftests: mptcp: join: check removing signal+subflow endp
Maulik Shah (1):
pinctrl: qcom: qcs615: Add missing dual edge GPIO IRQ errata flag
Michal Schmidt (1):
ice: fix crash in ethtool offline loopback test
Michal Swiatkowski (1):
libie: don't unroll if fwlog isn't supported
Mieczyslaw Nalewaj (1):
net: dsa: realtek: rtl8365mb: fix rtl8365mb_phy_ocp_write return value
Mike Rapoport (Microsoft) (1):
x86/efi: defer freeing of boot services memory
Ming Lei (2):
nvme: fix admin queue leak on controller reset
block: use trylock to avoid lockdep circular dependency in sysfs
Miquel Sabaté Solà (1):
btrfs: free pages on error in btrfs_uring_read_extent()
Miroslav Lichvar (1):
timekeeping: Fix timex status validation for auxiliary clocks
Nam Cao (1):
irqchip/sifive-plic: Fix frozen interrupt due to affinity setting
Namhyung Kim (1):
perf/core: Fix invalid wait context in ctx_sched_in()
Natalie Vock (1):
drm/amd/display: Use GFP_ATOMIC in dc_create_stream_for_sink
Nathan Chancellor (2):
kbuild: Split .modinfo out from ELF_DETAILS
kbuild: Leave objtool binary around with 'make clean'
Nikhil P. Rao (2):
xsk: Fix fragment node deletion to prevent buffer leak
xsk: Fix zero-copy AF_XDP fragment drop
Niklas Cassel (3):
PCI: dwc: ep: Refresh MSI Message Address cache on change
PCI: dwc: ep: Flush MSI-X write before unmapping its ATU entry
ata: libata: cancel pending work after clearing deferred_qc
Oliver Hartkopp (2):
can: bcm: fix locking for bcm_op runtime updates
can: dummy_can: dummy_can_init(): fix packet statistics
Olivier Sobrie (1):
hwmon: (max6639) fix inverted polarity
Ovidiu Panait (4):
net: stmmac: Fix error handling in VLAN add and delete paths
net: stmmac: Improve double VLAN handling
net: stmmac: Fix VLAN HW state restore
net: stmmac: Defer VLAN HW configuration when interface is down
Pablo Neira Ayuso (2):
netfilter: nf_tables: unconditionally bump set->nelems before insertion
netfilter: nf_tables: clone set on flush only
Panagiotis Foliadis (2):
ALSA: hda/intel: increase default bdl_pos_adj for Nvidia controllers
ALSA: hda/realtek: Add quirk for Acer Aspire V3-572G
Paolo Abeni (1):
selftests: mptcp: more stable simult_flows tests
Paul Chaignon (2):
bpf: Improve bounds when tnum has a single possible value selftests/bpf: Avoid simplification of crafted bounds test
Paulo Alcantara (2):
smb: client: fix broken multichannel with krb5+signing
smb: client: fix oops due to uninitialised var in smb2_unlink()
Peter Wang (1):
scsi: ufs: core: Move link recovery for hibern8 exit failure to wl_resume
Peter Zijlstra (9):
x86/cfi: Fix CFI rewrite for odd alignments
sched/fair: Fix zero_vruntime tracking
sched/fair: Only set slice protection at pick time sched/fair: Fix lag clamp
perf: Fix __perf_event_overflow() vs perf_remove_from_context() race x86/numa: Store extra copy of numa_nodes_parsed x86/topo: Add topology_num_nodes_per_package()
x86/topo: Replace x86_has_numa_in_package
x86/topo: Fix SNC topology mess
Petr Pavlu (1):
module: Remove duplicate freeing of lockdep classes
Phillip Lougher (1):
Squashfs: check metadata block offset is within range
Prithvi Tambewagh (1):
scsi: target: Fix recursive locking in __configfs_open_file()
Qing Wang (1):
tracing: Fix WARN_ON in tracing_buffers_mmap_close
Quentin Schulz (2):
accel/rocket: fix unwinding in error path in rocket_core_init accel/rocket: fix unwinding in error path in rocket_probe
Raju Rangoju (2):
amd-xgbe: fix MAC_TCR_SS register width for 2.5G and 10M speeds
amd-xgbe: fix sleep while atomic on suspend/resume
Richard Fitzgerald (1):
ALSA: hda: cs35l56: Fix signedness error in cs35l56_hda_posture_put()
Rob Herring (Arm) (2):
accel: ethosu: Fix job submit error clean-up refcount underflows
accel: ethosu: Fix NPU_OP_ELEMENTWISE validation with scalar
Rong Zhang (1):
ALSA: doc: usb-audio: Add doc for QUIRK_FLAG_SKIP_IFACE_SETUP
Russell King (Oracle) (1):
net: stmmac: remove support for lpi_intr_o
Salomon Dushimirimana (1):
scsi: pm8001: Fix use-after-free in pm8001_queue_command()
Sasha Levin (1):
Linux 6.19.7
Sebastian Andrzej Siewior (1):
net: Provide a PREEMPT_RT specific check for netdev_queue::_xmit_lock
Sebastian Krzyszkowiak (1):
wifi: rsi: Don't default to -EOPNOTSUPP in rsi_mac80211_config
Shuicheng Lin (2):
drm/xe/configfs: Free ctx_restore_mid_bb in release drm/xe/reg_sr: Fix leak on xa_store failure
Shuvam Pandey (1):
kunit: tool: copy caller args in run_kernel to prevent mutation
Simon Ser (1):
drm/fourcc: fix plane order for 10/12/16-bit YCbCr formats
Sreedevi Joshi (1):
idpf: Fix flow rule delete failure due to invalid validation
Srinivas Pandruvada (1):
cpufreq: intel_pstate: Fix crash during turbo disable
Sun Jian (1):
selftests/harness: order TEST_F and XFAIL_ADD constructors
Sungwoo Kim (1):
nvme: fix memory allocation in nvme_pr_read_keys()
T.J. Mercier (1):
selftests/bpf: Fix OOB read in dmabuf_collector
Takashi Iwai (4):
ALSA: usb-audio: Cap the packet size pre-calculations
ALSA: usb-audio: Use inclusive terms
ALSA: usb: qcom: Correct parameter comment for uaudio_transfer_buffer_setup()
ASoC: SDCA: Fix comments for sdca_irq_request()
Thomas Gleixner (2):
debugobject: Make it work with deferred page initialization - again
i40e: Fix preempt count leak in napi poll tracepoint
Thomas Weißschuh (1):
ARM: clean up the memset64() C wrapper
Thorsten Blum (2):
platform/x86: dell-wmi-sysman: Don't hex dump plaintext password data
smb: client: Don't log plaintext credentials in cifs_set_cifscreds
Tianci Cao (1):
bpf: Add bitwise tracking for BPF_END
Tom Lendacky (1):
x86/boot/sev: Move SEV decompressor variables into the .data section
Tomasz Lis (1):
drm/xe/queue: Call fini on exec queue creation fail
Tomasz Pakuła (1):
HID: pidff: Fix condition effect bit clearing
Tvrtko Ursulin (1):
drm/amdgpu/userq: Do not allow userspace to trivially triger kernel warnings
Vahagn Vardanian (1):
wifi: mac80211: fix NULL pointer dereference in mesh_rx_csa_frame()
Vasily Gorbik (1):
s390/kexec: Disable stack protector in s390_reset_system()
Vimlesh Kumar (4):
octeon_ep: Relocate counter updates before NAPI
octeon_ep: avoid compiler and IQ/OQ reordering
octeon_ep_vf: Relocate counter updates before NAPI
octeon_ep_vf: avoid compiler and IQ/OQ reordering
Vitaly Lifshits (1):
e1000e: clear DPG_EN after reset to avoid autonomous power-gating
Vivek Behera (2):
igb: Fix trigger of incorrect irq in igb_xsk_wakeup
igc: Fix trigger of incorrect irq in igc_xsk_wakeup function
Waiman Long (2):
cgroup/cpuset: Fix incorrect change to effective_xcpus in partition_xcpus_del() cgroup/cpuset: Fix incorrect use of cpuset_update_tasks_cpumask() in update_cpumasks_hier()
Wang Tao (1):
sched/eevdf: Update se->vprot in reweight_entity()
Werner Sembach (1):
HID: multitouch: Keep latency normal on deactivate for reactivation gesture
Will Deacon (2):
arm64: io: Rename ioremap_prot() to __ioremap_prot()
arm64: io: Extract user memory type in ioremap_prot()
Yifan Wu (1):
selftest/arm64: Fix sve2p1_sigill() to hwcap test
Yujie Liu (1):
drm/sched: Fix kernel-doc warning for drm_sched_job_done()
Yung Chih Su (1):
net: ipv4: fix ARM64 alignment fault in multipath hash seed
Zhang Heng (2):
ALSA: hda/realtek: Add quirk for HP Pavilion 15-eh1xxx to enable mute LED
ALSA: hda/realtek: add quirk for Acer Nitro ANV15-51
ZhangGuoDong (2):
smb/client: fix buffer size for smb311_posix_qinfo in smb2_compound_op() smb/client: fix buffer size for smb311_posix_qinfo in SMB311_posix_query_info()
Zhanjun Dong (1):
drm/xe/gsc: Fix GSC proxy cleanup on early initialization failure
Zide Chen (1):
perf/x86/intel/uncore: Add per-scheduler IMC CAS count events
Zilin Guan (1):
ice: Fix memory leak in ice_set_ringparam()
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCgAdFiEE4n5dijQDou9mhzu83qZv95d3LNwFAmmyolUACgkQ3qZv95d3 LNx0rg//ZvEqjhIZG3ewdlLqOGIN3bABxM/jgCG2s0oFQTfYQWTzyKHyXaYsdUvb F0llvHTM1vVAKVZesOkAnJHFBxe0jfr80gQO/ZDRoyIDYvdSi/uIv+AjTiQBv5j7 rmwgumaWFYhCVMR4et3cziGnyLAZDCUAltMuzzRdJiXUSaBR3gkCYKt2mqsmAaPB q5wGrxOd/mdD43C8AS7iB2O1reQs5eeDb+TGcBY0AfJ1q7Yjdjb7P7mucnfxw05P VYVh8qwY8Q9SmjCsMux/5TwnjWTYw4EfLihkTvW5wBJDxU8z1GV+74HmgAlX0uhl Wpj5YznVUTTHXIwkqI+KSvJR9UV0LX+16SXKugbjhfD/fXQTz0NG9xYjAqfuOUA7 Rod1Hy2j8aMEFXRnFPDSrQNuy5rTXCGX4hKQ6USZc4dpg3cMYcbDLxF37l1ShoFE RWOj/BOEVA4aJJjuJVwhzcZ/y8afuFwNpsygSGIE4nff1to8fBdJHm6/PsLmMjIo UnN9UCeZ7cVC1NLYgXUVwiBN7zG7I7o90P7xlQ5w/E7tDH1dPsabrVsIPpbojlwY 2TdRegzo4Tk6HqFD4fuwdxkhNp9CNtzyjnVlVQG7TULcZOdRHmsvpZUaYkNXC+CZ pCdSBIDUVf2Cs+q40WDanIE+RlZgI4sj2O2IvnCi5OKynsnyPAA= =3dae
-----END PGP SIGNATURE-----
Sasha Levin
maintainerDocumentation/sound/alsa-configuration.rst +4 -0
@@ -2372,6 +2372,10 @@ quirk_flags audible volume * bit 25: ``mixer_capture_min_mute`` Similar to bit 24 but for capture streams + * bit 26: ``skip_iface_setup`` + Skip the probe-time interface setup (usb_set_interface, + init_pitch, init_sample_rate); redundant with + snd_usb_endpoint_prepare() at stream-open time This module supports multiple devices, autoprobe and hotplugging.
Documentation/virt/kvm/api.rst +26 -2
@@ -7835,8 +7835,10 @@ Will return -EBUSY if a VCPU has already been created. Valid feature flags in args[0] are:: - #define KVM_X2APIC_API_USE_32BIT_IDS (1ULL << 0) - #define KVM_X2APIC_API_DISABLE_BROADCAST_QUIRK (1ULL << 1) + #define KVM_X2APIC_API_USE_32BIT_IDS (1ULL << 0) + #define KVM_X2APIC_API_DISABLE_BROADCAST_QUIRK (1ULL << 1) + #define KVM_X2APIC_ENABLE_SUPPRESS_EOI_BROADCAST (1ULL << 2) + #define KVM_X2APIC_DISABLE_SUPPRESS_EOI_BROADCAST (1ULL << 3) Enabling KVM_X2APIC_API_USE_32BIT_IDS changes the behavior of KVM_SET_GSI_ROUTING, KVM_SIGNAL_MSI, KVM_SET_LAPIC, and KVM_GET_LAPIC,
@@ -7849,6 +7851,28 @@ as a broadcast even in x2APIC mode in order to support physical x2APIC without interrupt remapping. This is undesirable in logical mode, where 0xff represents CPUs 0-7 in cluster 0. +Setting KVM_X2APIC_ENABLE_SUPPRESS_EOI_BROADCAST instructs KVM to enable +Suppress EOI Broadcasts. KVM will advertise support for Suppress EOI +Broadcast to the guest and suppress LAPIC EOI broadcasts when the guest +sets the Suppress EOI Broadcast bit in the SPIV register. This flag is +supported only when using a split IRQCHIP. + +Setting KVM_X2APIC_DISABLE_SUPPRESS_EOI_BROADCAST disables support for +Suppress EOI Broadcasts entirely, i.e. instructs KVM to NOT advertise +support to the guest. + +Modern VMMs should either enable KVM_X2APIC_ENABLE_SUPPRESS_EOI_BROADCAST +or KVM_X2APIC_DISABLE_SUPPRESS_EOI_BROADCAST. If not, legacy quirky +behavior will be used by KVM: in split IRQCHIP mode, KVM will advertise +support for Suppress EOI Broadcasts but not actually suppress EOI +broadcasts; for in-kernel IRQCHIP mode, KVM will not advertise support for +Suppress EOI Broadcasts. + +Setting both KVM_X2APIC_ENABLE_SUPPRESS_EOI_BROADCAST and +KVM_X2APIC_DISABLE_SUPPRESS_EOI_BROADCAST will fail with an EINVAL error, +as will setting KVM_X2APIC_ENABLE_SUPPRESS_EOI_BROADCAST without a split +IRCHIP. + 7.8 KVM_CAP_S390_USER_INSTR0 ----------------------------
Makefile +5 -5
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 19 -SUBLEVEL = 6 +SUBLEVEL = 7 EXTRAVERSION = NAME = Baby Opossum Posse
@@ -1474,13 +1474,13 @@ ifneq ($(wildcard $(resolve_btfids_O)),) $(Q)$(MAKE) -sC $(srctree)/tools/bpf/resolve_btfids O=$(resolve_btfids_O) clean endif -PHONY += objtool_clean +PHONY += objtool_clean objtool_mrproper objtool_O = $(abspath $(objtree))/tools/objtool -objtool_clean: +objtool_clean objtool_mrproper: ifneq ($(wildcard $(objtool_O)),) - $(Q)$(MAKE) -sC $(abs_srctree)/tools/objtool O=$(objtool_O) srctree=$(abs_srctree) clean + $(Q)$(MAKE) -sC $(abs_srctree)/tools/objtool O=$(objtool_O) srctree=$(abs_srctree) $(patsubst objtool_%,%,$@) endif tools/: FORCE
@@ -1657,7 +1657,7 @@ PHONY += $(mrproper-dirs) mrproper $(mrproper-dirs): $(Q)$(MAKE) $(clean)=$(patsubst _mrproper_%,%,$@) -mrproper: clean $(mrproper-dirs) +mrproper: clean objtool_mrproper $(mrproper-dirs) $(call cmd,rmfiles) @find . $(RCS_FIND_IGNORE) \ \( -name '*.rmeta' \) \
arch/alpha/kernel/vmlinux.lds.S +1 -0
@@ -71,6 +71,7 @@ SECTIONS STABS_DEBUG DWARF_DEBUG + MODINFO ELF_DETAILS DISCARDS
arch/arc/kernel/vmlinux.lds.S +1 -0
@@ -123,6 +123,7 @@ SECTIONS _end = . ; STABS_DEBUG + MODINFO ELF_DETAILS DISCARDS
arch/arm/boot/compressed/vmlinux.lds.S +1 -0
@@ -21,6 +21,7 @@ SECTIONS COMMON_DISCARDS *(.ARM.exidx*) *(.ARM.extab*) + *(.modinfo) *(.note.*) *(.rel.*) *(.printk_index)
arch/arm/include/asm/string.h +9 -5
@@ -39,13 +39,17 @@ static inline void *memset32(uint32_t *p, uint32_t v, __kernel_size_t n) }#define __HAVE_ARCH_MEMSET64 -extern void *__memset64 (uint64_t *,uint32_t low,__kernel_size_t ,uint32_t hi); +extern void *__memset64 (uint64_t *,uint32_t first,__kernel_size_t ,uint32_t second);static inline void *memset64 (uint64_t *p,uint64_t v,__kernel_size_t n) { -if (IS_ENABLED (CONFIG_CPU_LITTLE_ENDIAN )) -return __memset64 (p, v, n *8 , v >>32 ); -else -return __memset64 (p, v >>32 , n *8 , v); +union { +uint64_t val; +struct { +uint32_t first, second; + }; + } word = { .val = v }; + +return __memset64 (p, word.first, n *8 , word.second); }/*
arch/arm/kernel/vmlinux-xip.lds.S +1 -0
@@ -154,6 +154,7 @@ SECTIONS STABS_DEBUG DWARF_DEBUG + MODINFO ARM_DETAILS ARM_ASSERTS
arch/arm/kernel/vmlinux.lds.S +1 -0
@@ -153,6 +153,7 @@ SECTIONS STABS_DEBUG DWARF_DEBUG + MODINFO ARM_DETAILS ARM_ASSERTS
arch/arm64/include/asm/io.h +20 -6
@@ -264,19 +264,33 @@ __iowrite64_copy(void __iomem *to, const void *from, size_t count)typedef int (*ioremap_prot_hook_t )(phys_addr_t phys_addr,size_t size,pgprot_t *prot);int arm64_ioremap_prot_hook_register (const ioremap_prot_hook_t hook); +void __iomem *__ioremap_prot (phys_addr_t phys,size_t size,pgprot_t prot); -#define ioremap_prot ioremap_prot +static inline void __iomem *ioremap_prot (phys_addr_t phys,size_t size, +pgprot_t user_prot) +{ +pgprot_t prot; +ptdesc_t user_prot_val =pgprot_val (user_prot); + +if (WARN_ON_ONCE (!(user_prot_val &PTE_USER ))) +return NULL ; -#define _PAGE_IOREMAP PROT_DEVICE_nGnRE + prot =__pgprot_modify (PAGE_KERNEL ,PTE_ATTRINDX_MASK , + user_prot_val &PTE_ATTRINDX_MASK ); +return __ioremap_prot (phys, size, prot); +} +#define ioremap_prot ioremap_prot +#define ioremap (addr, size) \ + __ioremap_prot((addr), (size), __pgprot(PROT_DEVICE_nGnRE))#define ioremap_wc (addr, size) \ - ioremap_prot((addr), (size), __pgprot(PROT_NORMAL_NC)) + __ioremap_prot((addr), (size), __pgprot(PROT_NORMAL_NC))#define ioremap_np (addr, size) \ - ioremap_prot((addr), (size), __pgprot(PROT_DEVICE_nGnRnE)) + __ioremap_prot((addr), (size), __pgprot(PROT_DEVICE_nGnRnE))#define ioremap_encrypted (addr, size) \ - ioremap_prot((addr), (size), PAGE_KERNEL) + __ioremap_prot((addr), (size), PAGE_KERNEL)/* * io{read,write}{16,32,64}be() macros
@@ -297,7 +311,7 @@ static inline void __iomem *ioremap_cache(phys_addr_t addr, size_t size)if (pfn_is_map_memory (__phys_to_pfn (addr)))return (void __iomem *)__phys_to_virt (addr); -return ioremap_prot (addr, size,__pgprot (PROT_NORMAL )); +return __ioremap_prot (addr, size,__pgprot (PROT_NORMAL )); }/*
arch/arm64/include/asm/pgtable-prot.h +0 -3
@@ -164,9 +164,6 @@ static inline bool __pure lpa2_is_enabled(void)#define _PAGE_GCS (_PAGE_DEFAULT | PTE_NG | PTE_UXN | PTE_WRITE | PTE_USER)#define _PAGE_GCS_RO (_PAGE_DEFAULT | PTE_NG | PTE_UXN | PTE_USER) -#define PAGE_GCS __pgprot(_PAGE_GCS) -#define PAGE_GCS_RO __pgprot(_PAGE_GCS_RO) -#define PIE_E0 ( \ PIRx_ELx_PERM_PREP(pte_pi_index(_PAGE_GCS), PIE_GCS) | \ PIRx_ELx_PERM_PREP(pte_pi_index(_PAGE_GCS_RO), PIE_R) | \
arch/arm64/kernel/acpi.c +1 -1
@@ -377,7 +377,7 @@ void __iomem *acpi_os_ioremap(acpi_physical_address phys, acpi_size size) prot =__acpi_get_writethrough_mem_attribute (); } } -return ioremap_prot (phys, size, prot); +return __ioremap_prot (phys, size, prot); }/*
arch/arm64/kernel/vmlinux.lds.S +1 -0
@@ -349,6 +349,7 @@ SECTIONS STABS_DEBUG DWARF_DEBUG + MODINFO ELF_DETAILS HEAD_SYMBOLS
arch/arm64/kvm/hyp/nvhe/pkvm.c +33 -2
@@ -345,6 +345,7 @@ static void pkvm_init_features_from_host(struct pkvm_hyp_vm *hyp_vm, const struc/* No restrictions for non-protected VMs. */ if (!kvm_vm_is_protected (kvm)) { hyp_vm->kvm.arch.flags = host_arch_flags; + hyp_vm->kvm.arch.flags &= ~BIT_ULL (KVM_ARCH_FLAG_ID_REGS_INITIALIZED ); bitmap_copy(kvm->arch.vcpu_features, host_kvm->arch.vcpu_features,
@@ -471,6 +472,35 @@ static int pkvm_vcpu_init_sve(struct pkvm_hyp_vcpu *hyp_vcpu, struct kvm_vcpu *hreturn ret; } +static int vm_copy_id_regs (struct pkvm_hyp_vcpu *hyp_vcpu) +{ +struct pkvm_hyp_vm *hyp_vm =pkvm_hyp_vcpu_to_hyp_vm (hyp_vcpu); +const struct kvm *host_kvm = hyp_vm->host_kvm; +struct kvm *kvm = &hyp_vm->kvm; + +if (!test_bit (KVM_ARCH_FLAG_ID_REGS_INITIALIZED , &host_kvm->arch.flags)) +return -EINVAL ; + +if (test_and_set_bit (KVM_ARCH_FLAG_ID_REGS_INITIALIZED , &kvm->arch.flags)) +return 0 ; + +memcpy (kvm->arch.id_regs, host_kvm->arch.id_regs,sizeof (kvm->arch.id_regs)); + +return 0 ; +} + +static int pkvm_vcpu_init_sysregs (struct pkvm_hyp_vcpu *hyp_vcpu) +{ +int ret =0 ; + +if (pkvm_hyp_vcpu_is_protected (hyp_vcpu)) +kvm_init_pvm_id_regs (&hyp_vcpu->vcpu); +else + ret =vm_copy_id_regs (hyp_vcpu); + +return ret; +} +static int init_pkvm_hyp_vcpu (struct pkvm_hyp_vcpu *hyp_vcpu,struct pkvm_hyp_vm *hyp_vm,struct kvm_vcpu *host_vcpu)
@@ -490,8 +520,9 @@ static int init_pkvm_hyp_vcpu(struct pkvm_hyp_vcpu *hyp_vcpu, hyp_vcpu->vcpu.arch.cflags =READ_ONCE (host_vcpu->arch.cflags); hyp_vcpu->vcpu.arch.mp_state.mp_state =KVM_MP_STATE_STOPPED ; -if (pkvm_hyp_vcpu_is_protected (hyp_vcpu)) -kvm_init_pvm_id_regs (&hyp_vcpu->vcpu); + ret =pkvm_vcpu_init_sysregs (hyp_vcpu); +if (ret) + goto done; ret =pkvm_vcpu_init_traps (hyp_vcpu);if (ret)
arch/arm64/kvm/sys_regs.c +3 -0
@@ -1816,6 +1816,9 @@ static u64 __kvm_read_sanitised_id_reg(const struct kvm_vcpu *vcpu,ID_AA64MMFR3_EL1_SCTLRX |ID_AA64MMFR3_EL1_S1POE |ID_AA64MMFR3_EL1_S1PIE ; + +if (!system_supports_poe ()) + val &= ~ID_AA64MMFR3_EL1_S1POE ;break ;case SYS_ID_MMFR4_EL1 : val &= ~ID_MMFR4_EL1_CCIDX ;
arch/arm64/mm/ioremap.c +3 -3
@@ -14,8 +14,8 @@ int arm64_ioremap_prot_hook_register(ioremap_prot_hook_t hook)return 0 ; } -void __iomem *ioremap_prot (phys_addr_t phys_addr,size_t size, -pgprot_t pgprot) +void __iomem *__ioremap_prot (phys_addr_t phys_addr,size_t size, +pgprot_t pgprot) {unsigned long last_addr = phys_addr + size -1 ;
@@ -38,7 +38,7 @@ void __iomem *ioremap_prot(phys_addr_t phys_addr, size_t size,return generic_ioremap_prot (phys_addr, size, pgprot); } -EXPORT_SYMBOL (ioremap_prot); +EXPORT_SYMBOL (__ioremap_prot);/* * Must be called after early_fixmap_init
arch/arm64/mm/mmap.c +6 -2
@@ -34,6 +34,8 @@ static pgprot_t protection_map[16] __ro_after_init = { [VM_SHARED | VM_EXEC | VM_WRITE | VM_READ] = PAGE_SHARED_EXEC }; +static ptdesc_t gcs_page_prot__ro_after_init = _PAGE_GCS_RO; +/* * You really shouldn't be using read() or write() on /dev/mem. This might go * away in the future.
@@ -73,9 +75,11 @@ static int __init adjust_protection_map(void) protection_map[VM_EXEC |VM_SHARED ] =PAGE_EXECONLY ; } -if (lpa2_is_enabled ()) +if (lpa2_is_enabled ()) {for (int i =0 ; i <ARRAY_SIZE (protection_map); i++)pgprot_val (protection_map[i]) &= ~PTE_SHARED ; + gcs_page_prot &= ~PTE_SHARED ; + }return 0 ; }
@@ -87,7 +91,7 @@ pgprot_t vm_get_page_prot(vm_flags_t vm_flags)/* Short circuit GCS to avoid bloating the table. */ if (system_supports_gcs () && (vm_flags &VM_SHADOW_STACK )) { - prot = _PAGE_GCS_RO; + prot = gcs_page_prot; }else { prot =pgprot_val (protection_map[vm_flags & (VM_READ |VM_WRITE |VM_EXEC |VM_SHARED )]);
arch/arm64/net/bpf_jit_comp.c +1 -1
@@ -2126,7 +2126,7 @@ struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *prog) extable_offset =round_up (prog_size +PLT_TARGET_SIZE , extable_align); image_size = extable_offset + extable_size; ro_header =bpf_jit_binary_pack_alloc (image_size, &ro_image_ptr, -sizeof (u32), &header, &image_ptr, +sizeof (u64), &header, &image_ptr, jit_fill_hole);if (!ro_header) { prog = orig_prog;
arch/csky/kernel/vmlinux.lds.S +1 -0
@@ -109,6 +109,7 @@ SECTIONS STABS_DEBUG DWARF_DEBUG + MODINFO ELF_DETAILS DISCARDS
arch/hexagon/kernel/vmlinux.lds.S +1 -0
@@ -62,6 +62,7 @@ SECTIONS STABS_DEBUG DWARF_DEBUG + MODINFO ELF_DETAILS .hexagon.attributes 0 : { *(.hexagon.attributes) }
arch/loongarch/kernel/vmlinux.lds.S +1 -0
@@ -147,6 +147,7 @@ SECTIONS STABS_DEBUG DWARF_DEBUG + MODINFO ELF_DETAILS #ifdef CONFIG_EFI_STUB
arch/m68k/kernel/vmlinux-nommu.lds +1 -0
@@ -85,6 +85,7 @@ SECTIONS { _end = .; STABS_DEBUG + MODINFO ELF_DETAILS /* Sections to be discarded */
arch/m68k/kernel/vmlinux-std.lds +1 -0
@@ -58,6 +58,7 @@ SECTIONS _end = . ; STABS_DEBUG + MODINFO ELF_DETAILS /* Sections to be discarded */
arch/m68k/kernel/vmlinux-sun3.lds +1 -0
@@ -51,6 +51,7 @@ __init_begin = .; _end = . ; STABS_DEBUG + MODINFO ELF_DETAILS /* Sections to be discarded */
arch/mips/kernel/vmlinux.lds.S +1 -0
@@ -217,6 +217,7 @@ SECTIONS STABS_DEBUG DWARF_DEBUG + MODINFO ELF_DETAILS /* These must appear regardless of . */
arch/nios2/kernel/vmlinux.lds.S +1 -0
@@ -57,6 +57,7 @@ SECTIONS STABS_DEBUG DWARF_DEBUG + MODINFO ELF_DETAILS DISCARDS
arch/openrisc/kernel/vmlinux.lds.S +1 -0
@@ -101,6 +101,7 @@ SECTIONS /* Throw in the debugging sections */ STABS_DEBUG DWARF_DEBUG + MODINFO ELF_DETAILS /* Sections to be discarded -- must be last */
arch/parisc/boot/compressed/vmlinux.lds.S +1 -0
@@ -90,6 +90,7 @@ SECTIONS /* Sections to be discarded */ DISCARDS /DISCARD/ : { + *(.modinfo) #ifdef CONFIG_64BIT /* temporary hack until binutils is fixed to not emit these * for static binaries
arch/parisc/kernel/vmlinux.lds.S +1 -0
@@ -165,6 +165,7 @@ SECTIONS _end = . ; STABS_DEBUG + MODINFO ELF_DETAILS .note 0 : { *(.note) }
arch/powerpc/kernel/vmlinux.lds.S +1 -0
@@ -397,6 +397,7 @@ SECTIONS _end = . ; DWARF_DEBUG + MODINFO ELF_DETAILS DISCARDS
arch/riscv/kernel/vmlinux.lds.S +1 -0
@@ -170,6 +170,7 @@ SECTIONS STABS_DEBUG DWARF_DEBUG + MODINFO ELF_DETAILS .riscv.attributes 0 : { *(.riscv.attributes) }
arch/s390/include/asm/idle.h +1 -0
@@ -23,5 +23,6 @@ extern struct device_attribute dev_attr_idle_count;extern struct device_attribute dev_attr_idle_time_us;void psw_idle (struct s390_idle_data *data,unsigned long psw_mask); +void update_timer_idle (void );#endif /* _S390_IDLE_H */
arch/s390/kernel/idle.c +9 -4
@@ -21,11 +21,10 @@ static DEFINE_PER_CPU(struct s390_idle_data, s390_idle); -void account_idle_time_irq (void ) +void update_timer_idle (void ) {struct s390_idle_data *idle =this_cpu_ptr (&s390_idle);struct lowcore *lc =get_lowcore (); -unsigned long idle_time;u64 cycles_new[8 ];int i;
@@ -35,13 +34,19 @@ void account_idle_time_irq(void)this_cpu_add (mt_cycles[i], cycles_new[i] - idle->mt_cycles_enter[i]); } - idle_time = lc->int_clock - idle->clock_idle_enter; - lc->steal_timer += idle->clock_idle_enter - lc->last_update_clock; lc->last_update_clock = lc->int_clock; lc->system_timer += lc->last_update_timer - idle->timer_idle_enter; lc->last_update_timer = lc->sys_enter_timer; +} + +void account_idle_time_irq (void ) +{ +struct s390_idle_data *idle =this_cpu_ptr (&s390_idle); +unsigned long idle_time; + + idle_time =get_lowcore ()->int_clock - idle->clock_idle_enter;/* Account time spent with enabled wait psw loaded as idle time. */ WRITE_ONCE (idle->idle_time,READ_ONCE (idle->idle_time) + idle_time);
arch/s390/kernel/ipl.c +1 -1
@@ -2377,7 +2377,7 @@ void __init setup_ipl(void)atomic_notifier_chain_register (&panic_notifier_list, &on_panic_nb); } -void s390_reset_system (void ) +void __no_stack_protector s390_reset_system(void) {/* Disable prefixing */ set_prefix (0 );
arch/s390/kernel/irq.c +8 -2
@@ -146,6 +146,10 @@ void noinstr do_io_irq(struct pt_regs *regs)struct pt_regs *old_regs =set_irq_regs (regs);bool from_idle; + from_idle =test_and_clear_cpu_flag (CIF_ENABLED_WAIT ); +if (from_idle) +update_timer_idle (); +irq_enter_rcu ();if (user_mode (regs)) {
@@ -154,7 +158,6 @@ void noinstr do_io_irq(struct pt_regs *regs) current->thread.last_break = regs->last_break; } - from_idle =test_and_clear_cpu_flag (CIF_ENABLED_WAIT );if (from_idle)account_idle_time_irq ();
@@ -182,6 +185,10 @@ void noinstr do_ext_irq(struct pt_regs *regs)struct pt_regs *old_regs =set_irq_regs (regs);bool from_idle; + from_idle =test_and_clear_cpu_flag (CIF_ENABLED_WAIT ); +if (from_idle) +update_timer_idle (); +irq_enter_rcu ();if (user_mode (regs)) {
@@ -194,7 +201,6 @@ void noinstr do_ext_irq(struct pt_regs *regs) regs->int_parm =get_lowcore ()->ext_params; regs->int_parm_long =get_lowcore ()->ext_params2; - from_idle =test_and_clear_cpu_flag (CIF_ENABLED_WAIT );if (from_idle)account_idle_time_irq ();
arch/s390/kernel/vmlinux.lds.S +1 -0
@@ -221,6 +221,7 @@ SECTIONS /* Debugging sections. */ STABS_DEBUG DWARF_DEBUG + MODINFO ELF_DETAILS /*
arch/s390/kernel/vtime.c +2 -16
@@ -225,10 +225,6 @@ static u64 vtime_delta(void)return timer - lc->last_update_timer; } -/* -* Update process times based on virtual cpu times stored by entry.S -* to the lowcore fields user_timer, system_timer & steal_clock. -*/ void vtime_account_kernel (struct task_struct *tsk) {struct lowcore *lc =get_lowcore ();
@@ -238,27 +234,17 @@ void vtime_account_kernel(struct task_struct *tsk) lc->guest_timer += delta; else lc->system_timer += delta; - -virt_timer_forward (delta); }EXPORT_SYMBOL_GPL (vtime_account_kernel);void vtime_account_softirq (struct task_struct *tsk) { -u64 delta =vtime_delta (); - -get_lowcore ()->softirq_timer += delta; - -virt_timer_forward (delta); +get_lowcore ()->softirq_timer +=vtime_delta (); }void vtime_account_hardirq (struct task_struct *tsk) { -u64 delta =vtime_delta (); - -get_lowcore ()->hardirq_timer += delta; - -virt_timer_forward (delta); +get_lowcore ()->hardirq_timer +=vtime_delta (); }/*
arch/sh/kernel/vmlinux.lds.S +1 -0
@@ -89,6 +89,7 @@ SECTIONS STABS_DEBUG DWARF_DEBUG + MODINFO ELF_DETAILS DISCARDS
arch/sparc/kernel/vmlinux.lds.S +1 -0
@@ -191,6 +191,7 @@ SECTIONS STABS_DEBUG DWARF_DEBUG + MODINFO ELF_DETAILS DISCARDS
arch/um/kernel/dyn.lds.S +1 -0
@@ -172,6 +172,7 @@ SECTIONS STABS_DEBUG DWARF_DEBUG + MODINFO ELF_DETAILS DISCARDS
arch/um/kernel/uml.lds.S +1 -0
@@ -113,6 +113,7 @@ SECTIONS STABS_DEBUG DWARF_DEBUG + MODINFO ELF_DETAILS DISCARDS
arch/x86/boot/compressed/Makefile +1 -0
@@ -113,6 +113,7 @@ vmlinux-objs-$(CONFIG_EFI_SBAT) += $(obj)/sbat.o ifdef CONFIG_EFI_SBAT $(obj)/sbat.o: $(CONFIG_EFI_SBAT_FILE) +AFLAGS_sbat.o += -I $(srctree) endif $(obj)/vmlinux: $(vmlinux-objs-y) $(vmlinux-libs-y) FORCE
arch/x86/boot/compressed/sev.c +5 -4
@@ -28,17 +28,17 @@#include "sev.h" static struct ghcb boot_ghcb_page__aligned(PAGE_SIZE) ; -struct ghcb *boot_ghcb; +struct ghcb *boot_ghcb __section(".data");#undef __init#define __init#define __BOOT_COMPRESSED -u8 snp_vmpl; -u16 ghcb_version; +u8 snp_vmpl __section(".data"); +u16 ghcb_version __section(".data"); -u64 boot_svsm_caa_pa; +u64 boot_svsm_caa_pa __section(".data");/* Include code for early handlers */ #include "../../boot/startup/sev-shared.c"
@@ -188,6 +188,7 @@ bool sev_es_check_ghcb_fault(unsigned long address)MSR_AMD64_SNP_RESERVED_BIT13 | \MSR_AMD64_SNP_RESERVED_BIT15 | \MSR_AMD64_SNP_SECURE_AVIC | \ +MSR_AMD64_SNP_RESERVED_BITS19_22 | \ MSR_AMD64_SNP_RESERVED_MASK) #ifdef CONFIG_AMD_SECURE_AVIC
arch/x86/boot/compressed/vmlinux.lds.S +1 -1
@@ -88,7 +88,7 @@ SECTIONS /DISCARD/ : { *(.dynamic) *(.dynsym) *(.dynstr) *(.dynbss) *(.hash) *(.gnu.hash) - *(.note.*) + *(.note.*) *(.modinfo) } .got.plt (INFO) : {
arch/x86/boot/startup/sev-shared.c +1 -1
@@ -31,7 +31,7 @@ static u32 cpuid_std_range_max __ro_after_init;static u32 cpuid_hyp_range_max__ro_after_init ;static u32 cpuid_ext_range_max__ro_after_init ; -bool sev_snp_needs_sfw; +bool sev_snp_needs_sfw __section(".data");void __noreturn sev_es_terminate (unsigned int set,unsigned int reason)
arch/x86/coco/sev/core.c +1 -0
@@ -122,6 +122,7 @@ static const char * const sev_status_feat_names[] = { [MSR_AMD64_SNP_VMSA_REG_PROT_BIT] = "VMSARegProt", [MSR_AMD64_SNP_SMT_PROT_BIT] = "SMTProt", [MSR_AMD64_SNP_SECURE_AVIC_BIT] = "SecureAVIC", + [MSR_AMD64_SNP_IBPB_ON_ENTRY_BIT] = "IBPBOnEntry", };/*
arch/x86/entry/entry_fred.c +2 -3
@@ -159,8 +159,6 @@ void __init fred_complete_exception_setup(void) static noinstr void fred_extint(struct pt_regs *regs) {unsigned int vector = regs->fred_ss.vector; -unsigned int index =array_index_nospec (vector -FIRST_SYSTEM_VECTOR , -NR_SYSTEM_VECTORS );if (WARN_ON_ONCE (vector <FIRST_EXTERNAL_VECTOR ))return ;
@@ -169,7 +167,8 @@ static noinstr void fred_extint(struct pt_regs *regs)irqentry_state_t state =irqentry_enter (regs);instrumentation_begin (); - sysvec_table[index](regs); + sysvec_table[array_index_nospec (vector -FIRST_SYSTEM_VECTOR , +NR_SYSTEM_VECTORS )](regs);instrumentation_end ();irqentry_exit (regs, state); }else {
arch/x86/events/intel/uncore_snbep.c +27 -1
@@ -6610,6 +6610,32 @@ static struct intel_uncore_type gnr_uncore_ubox = { .attr_update = uncore_alias_groups, }; +static struct uncore_event_desc gnr_uncore_imc_events[] = { +INTEL_UNCORE_EVENT_DESC (clockticks,"event=0x01,umask=0x00" ), +INTEL_UNCORE_EVENT_DESC (cas_count_read_sch0,"event=0x05,umask=0xcf" ), +INTEL_UNCORE_EVENT_DESC (cas_count_read_sch0.scale,"6.103515625e-5" ), +INTEL_UNCORE_EVENT_DESC (cas_count_read_sch0.unit,"MiB" ), +INTEL_UNCORE_EVENT_DESC (cas_count_read_sch1,"event=0x06,umask=0xcf" ), +INTEL_UNCORE_EVENT_DESC (cas_count_read_sch1.scale,"6.103515625e-5" ), +INTEL_UNCORE_EVENT_DESC (cas_count_read_sch1.unit,"MiB" ), +INTEL_UNCORE_EVENT_DESC (cas_count_write_sch0,"event=0x05,umask=0xf0" ), +INTEL_UNCORE_EVENT_DESC (cas_count_write_sch0.scale,"6.103515625e-5" ), +INTEL_UNCORE_EVENT_DESC (cas_count_write_sch0.unit,"MiB" ), +INTEL_UNCORE_EVENT_DESC (cas_count_write_sch1,"event=0x06,umask=0xf0" ), +INTEL_UNCORE_EVENT_DESC (cas_count_write_sch1.scale,"6.103515625e-5" ), +INTEL_UNCORE_EVENT_DESC (cas_count_write_sch1.unit,"MiB" ), + {/* end: all zeroes */ }, +}; + +static struct intel_uncore_type gnr_uncore_imc = { +SPR_UNCORE_MMIO_COMMON_FORMAT (), + .name ="imc" , + .fixed_ctr_bits =48 , + .fixed_ctr =SNR_IMC_MMIO_PMON_FIXED_CTR , + .fixed_ctl =SNR_IMC_MMIO_PMON_FIXED_CTL , + .event_descs = gnr_uncore_imc_events, +}; +static struct intel_uncore_type gnr_uncore_pciex8 = {SPR_UNCORE_PCI_COMMON_FORMAT (), .name ="pciex8" ,
@@ -6657,7 +6683,7 @@ static struct intel_uncore_type *gnr_uncores[UNCORE_GNR_NUM_UNCORE_TYPES] = {NULL , &spr_uncore_pcu, &gnr_uncore_ubox, - &spr_uncore_imc, + &gnr_uncore_imc,NULL , &gnr_uncore_upi, NULL,
arch/x86/include/asm/cfi.h +8 -4
@@ -111,6 +111,12 @@ extern bhi_thunk __bhi_args_end[];struct pt_regs ; +#ifdef CONFIG_CALL_PADDING +#define CFI_OFFSET (CONFIG_FUNCTION_PADDING_CFI+5) +#else +#define CFI_OFFSET 5 +#endif +#ifdef CONFIG_CFI enum bug_trap_type handle_cfi_failure (struct pt_regs *regs);#define __bpfcall
@@ -119,11 +125,9 @@ static inline int cfi_get_offset(void) {switch (cfi_mode) {case CFI_FINEIBT : -return 16 ; +return /* fineibt_prefix_size */ 16 ;case CFI_KCFI : -if (IS_ENABLED (CONFIG_CALL_PADDING )) -return 16 ; -return 5 ; +return CFI_OFFSET ;default :return 0 ; }
arch/x86/include/asm/efi.h +1 -1
@@ -138,7 +138,7 @@ extern void __init efi_apply_memmap_quirks(void);extern int __init efi_reuse_config (u64 tables,int nr_tables);extern void efi_delete_dummy_variable (void );extern void efi_crash_gracefully_on_page_fault (unsigned long phys_addr); -extern void efi_free_boot_services (void ); +extern void efi_unmap_boot_services (void );void arch_efi_call_virt_setup (void );void arch_efi_call_virt_teardown (void );
arch/x86/include/asm/kvm_host.h +7 -0
@@ -1226,6 +1226,12 @@ enum kvm_irqchip_mode { KVM_IRQCHIP_SPLIT, /* created with KVM_CAP_SPLIT_IRQCHIP */ }; +enum kvm_suppress_eoi_broadcast_mode { +KVM_SUPPRESS_EOI_BROADCAST_QUIRKED ,/* Legacy behavior */ +KVM_SUPPRESS_EOI_BROADCAST_ENABLED ,/* Enable Suppress EOI broadcast */ +KVM_SUPPRESS_EOI_BROADCAST_DISABLED /* Disable Suppress EOI broadcast */ +}; +struct kvm_x86_msr_filter {u8 count;bool default_allow:1 ;
@@ -1475,6 +1481,7 @@ struct kvm_arch {bool x2apic_format;bool x2apic_broadcast_quirk_disabled; +enum kvm_suppress_eoi_broadcast_mode suppress_eoi_broadcast_mode;bool has_mapped_host_mmio;bool guest_can_read_msr_platform_info;
arch/x86/include/asm/linkage.h +2 -2
@@ -68,7 +68,7 @@* Depending on -fpatchable-function-entry=N,N usage (CONFIG_CALL_PADDING) the * CFI symbol layout changes. * -* Without CALL_THUNKS: +* Without CALL_PADDING: * * .align FUNCTION_ALIGNMENT * __cfi_##name:
@@ -77,7 +77,7 @@* .long __kcfi_typeid_##name * name: * -* With CALL_THUNKS: +* With CALL_PADDING: * * .align FUNCTION_ALIGNMENT * __cfi_##name:
arch/x86/include/asm/msr-index.h +4 -1
@@ -735,7 +735,10 @@#define MSR_AMD64_SNP_SMT_PROT BIT_ULL(MSR_AMD64_SNP_SMT_PROT_BIT)#define MSR_AMD64_SNP_SECURE_AVIC_BIT 18#define MSR_AMD64_SNP_SECURE_AVIC BIT_ULL(MSR_AMD64_SNP_SECURE_AVIC_BIT) -#define MSR_AMD64_SNP_RESV_BIT 19 +#define MSR_AMD64_SNP_RESERVED_BITS19_22 GENMASK_ULL(22, 19) +#define MSR_AMD64_SNP_IBPB_ON_ENTRY_BIT 23 +#define MSR_AMD64_SNP_IBPB_ON_ENTRY BIT_ULL(MSR_AMD64_SNP_IBPB_ON_ENTRY_BIT) +#define MSR_AMD64_SNP_RESV_BIT 24#define MSR_AMD64_SNP_RESERVED_MASK GENMASK_ULL(63, MSR_AMD64_SNP_RESV_BIT)#define MSR_AMD64_SAVIC_CONTROL 0xc0010138#define MSR_AMD64_SAVIC_EN_BIT 0
arch/x86/include/asm/numa.h +6 -0
@@ -22,6 +22,7 @@ extern int numa_off;*/ extern s16 __apicid_to_node[MAX_LOCAL_APIC ];extern nodemask_t numa_nodes_parsed__initdata ; +extern nodemask_t numa_phys_nodes_parsed__initdata ;static inline void set_apicid_to_node (int apicid,s16 node) {
@@ -48,6 +49,7 @@ extern void __init init_cpu_to_node(void);extern void numa_add_cpu (unsigned int cpu);extern void numa_remove_cpu (unsigned int cpu);extern void init_gi_nodes (void ); +extern int num_phys_nodes (void );#else /* CONFIG_NUMA */ static inline void numa_set_node (int cpu,int node) { }static inline void numa_clear_node (int cpu) { }
@@ -55,6 +57,10 @@ static inline void init_cpu_to_node(void) { }static inline void numa_add_cpu (unsigned int cpu) { }static inline void numa_remove_cpu (unsigned int cpu) { }static inline void init_gi_nodes (void ) { } +static inline int num_phys_nodes (void ) +{ +return 1 ; +}#endif /* CONFIG_NUMA */ #ifdef CONFIG_DEBUG_PER_CPU_MAPS
arch/x86/include/asm/topology.h +6 -0
@@ -155,6 +155,7 @@ extern unsigned int __max_logical_packages;extern unsigned int __max_threads_per_core;extern unsigned int __num_threads_per_package;extern unsigned int __num_cores_per_package; +extern unsigned int __num_nodes_per_package;const char *get_topology_cpu_type_name (struct cpuinfo_x86 *c);enum x86_topology_cpu_type get_topology_cpu_type (struct cpuinfo_x86 *c);
@@ -179,6 +180,11 @@ static inline unsigned int topology_num_threads_per_package(void)return __num_threads_per_package; } +static inline unsigned int topology_num_nodes_per_package (void ) +{ +return __num_nodes_per_package; +} +#ifdef CONFIG_X86_LOCAL_APIC int topology_get_logical_id (u32 apicid,enum x86_topology_domains at_level);#else
arch/x86/include/asm/traps.h +2 -0
@@ -25,6 +25,8 @@ extern int ibt_selftest_noendbr(void);void handle_invalid_op (struct pt_regs *regs);#endif +noinstr bool handle_bug(struct pt_regs *regs); +static inline int get_si_code (unsigned long condition) {if (condition &DR_STEP )
arch/x86/include/uapi/asm/kvm.h +4 -2
@@ -914,8 +914,10 @@ struct kvm_sev_snp_launch_finish {__u64 pad1[4 ]; }; -#define KVM_X2APIC_API_USE_32BIT_IDS (1ULL << 0) -#define KVM_X2APIC_API_DISABLE_BROADCAST_QUIRK (1ULL << 1) +#define KVM_X2APIC_API_USE_32BIT_IDS _BITULL(0) +#define KVM_X2APIC_API_DISABLE_BROADCAST_QUIRK _BITULL(1) +#define KVM_X2APIC_ENABLE_SUPPRESS_EOI_BROADCAST _BITULL(2) +#define KVM_X2APIC_DISABLE_SUPPRESS_EOI_BROADCAST _BITULL(3)struct kvm_hyperv_eventfd {__u32 conn_id;
arch/x86/kernel/alternative.c +22 -7
@@ -1147,7 +1147,7 @@ void __init_or_module noinline apply_seal_endbr(s32 *start, s32 *end)poison_endbr (addr);if (IS_ENABLED (CONFIG_FINEIBT )) -poison_cfi (addr -16 ); +poison_cfi (addr -CFI_OFFSET ); } }
@@ -1354,6 +1354,8 @@ extern u8 fineibt_preamble_end[];#define fineibt_preamble_ud 0x13#define fineibt_preamble_hash 5 +#define fineibt_prefix_size (fineibt_preamble_size - ENDBR_INSN_SIZE) +/* * <fineibt_caller_start>: * 0: b8 78 56 34 12 mov $0x12345678, %eax
@@ -1599,7 +1601,7 @@ static int cfi_rewrite_preamble(s32 *start, s32 *end)* have determined there are no indirect calls to it and we * don't need no CFI either. */ -if (!is_endbr (addr +16 )) +if (!is_endbr (addr +CFI_OFFSET ))continue ; hash =decode_preamble_hash (addr, &arity);
@@ -1607,6 +1609,15 @@ static int cfi_rewrite_preamble(s32 *start, s32 *end) addr, addr, 5, addr))return -EINVAL ; +/* +* FineIBT relies on being at func-16, so if the preamble is +* actually larger than that, place it the tail end. +* +* NOTE: this is possible with things like DEBUG_CALL_THUNKS +* and DEBUG_FORCE_FUNCTION_ALIGN_64B. +*/ + addr +=CFI_OFFSET - fineibt_prefix_size; +text_poke_early (addr, fineibt_preamble_start, fineibt_preamble_size);WARN_ON (*(u32 *)(addr + fineibt_preamble_hash) !=0x12345678 );text_poke_early (addr + fineibt_preamble_hash, &hash,4 );
@@ -1629,10 +1640,10 @@ static void cfi_rewrite_endbr(s32 *start, s32 *end)for (s = start; s < end; s++) {void *addr = (void *)s + *s; -if (!exact_endbr (addr +16 )) +if (!exact_endbr (addr +CFI_OFFSET ))continue ; -poison_endbr (addr +16 ); +poison_endbr (addr +CFI_OFFSET ); } }
@@ -1737,7 +1748,8 @@ static void __apply_fineibt(s32 *start_retpoline, s32 *end_retpoline,if (FINEIBT_WARN (fineibt_preamble_size,20 ) ||FINEIBT_WARN (fineibt_preamble_bhi + fineibt_bhi1_size,20 ) ||FINEIBT_WARN (fineibt_caller_size,14 ) || -FINEIBT_WARN (fineibt_paranoid_size,20 )) +FINEIBT_WARN (fineibt_paranoid_size,20 ) || +WARN_ON_ONCE (CFI_OFFSET < fineibt_prefix_size))return ;if (cfi_mode ==CFI_AUTO ) {
@@ -1850,6 +1862,11 @@ static void poison_cfi(void *addr)*/ switch (cfi_mode) {case CFI_FINEIBT : +/* +* FineIBT preamble is at func-16. +*/ + addr +=CFI_OFFSET - fineibt_prefix_size; +/* * FineIBT prefix should start with an ENDBR. */
@@ -1888,8 +1905,6 @@ static void poison_cfi(void *addr) } } -#define fineibt_prefix_size (fineibt_preamble_size - ENDBR_INSN_SIZE) -/* * When regs->ip points to a 0xD6 byte in the FineIBT preamble, * return true and fill out target and type.
arch/x86/kernel/cpu/common.c +3 -0
@@ -95,6 +95,9 @@ EXPORT_SYMBOL(__max_dies_per_package);unsigned int __max_logical_packages__ro_after_init =1 ;EXPORT_SYMBOL (__max_logical_packages); +unsigned int __num_nodes_per_package__ro_after_init =1 ; +EXPORT_SYMBOL (__num_nodes_per_package); +unsigned int __num_cores_per_package__ro_after_init =1 ;EXPORT_SYMBOL (__num_cores_per_package);
arch/x86/kernel/cpu/topology.c +11 -2
@@ -31,6 +31,7 @@#include <asm/mpspec.h> #include <asm/msr.h> #include <asm/smp.h> +#include <asm/numa.h> #include "cpu.h"
@@ -492,11 +493,19 @@ void __init topology_init_possible_cpus(void)set_nr_cpu_ids (allowed); cnta =domain_weight (TOPO_PKG_DOMAIN ); - cntb =domain_weight (TOPO_DIE_DOMAIN ); __max_logical_packages = cnta; + +pr_info ("Max. logical packages: %3u\n" , __max_logical_packages); + + cntb =num_phys_nodes (); + __num_nodes_per_package =DIV_ROUND_UP (cntb, cnta); + +pr_info ("Max. logical nodes: %3u\n" , cntb); +pr_info ("Num. nodes per package:%3u\n" , __num_nodes_per_package); + + cntb =domain_weight (TOPO_DIE_DOMAIN ); __max_dies_per_package =1U << (get_count_order (cntb) -get_count_order (cnta)); -pr_info ("Max. logical packages: %3u\n" , cnta);pr_info ("Max. logical dies: %3u\n" , cntb);pr_info ("Max. dies per package: %3u\n" , __max_dies_per_package);
arch/x86/kernel/smpboot.c +145 -56
239 lines not on this page · raw message
arch/x86/kernel/traps.c +1 -1
@@ -397,7 +397,7 @@ static inline void handle_invalid_op(struct pt_regs *regs) ILL_ILLOPN, error_get_trap_addr(regs)); } -static noinstr bool handle_bug(struct pt_regs *regs) +noinstr bool handle_bug(struct pt_regs *regs) {unsigned long addr = regs->ip;bool handled = false;
arch/x86/kernel/vmlinux.lds.S +1 -0
@@ -424,6 +424,7 @@ SECTIONS .llvm_bb_addr_map : { *(.llvm_bb_addr_map) } #endif + MODINFO ELF_DETAILS DISCARDS
arch/x86/kvm/ioapic.c +1 -1
@@ -561,7 +561,7 @@ static void kvm_ioapic_update_eoi_one(struct kvm_vcpu *vcpu,spin_lock (&ioapic->lock);if (trigger_mode !=IOAPIC_LEVEL_TRIG || -kvm_lapic_get_reg (apic,APIC_SPIV ) &APIC_SPIV_DIRECTED_EOI ) +kvm_lapic_suppress_eoi_broadcast (apic))return ;ASSERT (ent->fields.trig_mode ==IOAPIC_LEVEL_TRIG );
arch/x86/kvm/lapic.c +68 -8
95 lines not on this page · raw message
arch/x86/kvm/lapic.h +2 -0
@@ -231,6 +231,8 @@ static inline int kvm_lapic_latched_init(struct kvm_vcpu *vcpu)bool kvm_apic_pending_eoi (struct kvm_vcpu *vcpu,int vector); +bool kvm_lapic_suppress_eoi_broadcast (struct kvm_lapic *apic); +void kvm_wait_lapic_expire (struct kvm_vcpu *vcpu); void kvm_bitmap_or_dest_vcpus(struct kvm *kvm, struct kvm_lapic_irq *irq,
arch/x86/kvm/x86.c +19 -2
@@ -121,8 +121,10 @@ static u64 __read_mostly efer_reserved_bits = ~((u64)EFER_SCE);#define KVM_CAP_PMU_VALID_MASK KVM_PMU_CAP_DISABLE -#define KVM_X2APIC_API_VALID_FLAGS (KVM_X2APIC_API_USE_32BIT_IDS | \ - KVM_X2APIC_API_DISABLE_BROADCAST_QUIRK) +#define KVM_X2APIC_API_VALID_FLAGS (KVM_X2APIC_API_USE_32BIT_IDS | \ + KVM_X2APIC_API_DISABLE_BROADCAST_QUIRK | \ + KVM_X2APIC_ENABLE_SUPPRESS_EOI_BROADCAST | \ + KVM_X2APIC_DISABLE_SUPPRESS_EOI_BROADCAST)static void update_cr8_intercept (struct kvm_vcpu *vcpu);static void process_nmi (struct kvm_vcpu *vcpu);
@@ -4931,6 +4933,8 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)break ;case KVM_CAP_X2APIC_API : r =KVM_X2APIC_API_VALID_FLAGS ; +if (kvm && !irqchip_split (kvm)) + r &= ~KVM_X2APIC_ENABLE_SUPPRESS_EOI_BROADCAST ;break ;case KVM_CAP_NESTED_STATE : r = kvm_x86_ops.nested_ops->get_state ?
@@ -6748,11 +6752,24 @@ int kvm_vm_ioctl_enable_cap(struct kvm *kvm,if (cap->args[0 ] & ~KVM_X2APIC_API_VALID_FLAGS )break ; +if ((cap->args[0 ] &KVM_X2APIC_ENABLE_SUPPRESS_EOI_BROADCAST ) && + (cap->args[0 ] &KVM_X2APIC_DISABLE_SUPPRESS_EOI_BROADCAST )) +break ; + +if ((cap->args[0 ] &KVM_X2APIC_ENABLE_SUPPRESS_EOI_BROADCAST ) && + !irqchip_split (kvm)) +break ; +if (cap->args[0 ] &KVM_X2APIC_API_USE_32BIT_IDS ) kvm->arch.x2apic_format = true;if (cap->args[0 ] &KVM_X2APIC_API_DISABLE_BROADCAST_QUIRK ) kvm->arch.x2apic_broadcast_quirk_disabled = true; +if (cap->args[0 ] &KVM_X2APIC_ENABLE_SUPPRESS_EOI_BROADCAST ) + kvm->arch.suppress_eoi_broadcast_mode =KVM_SUPPRESS_EOI_BROADCAST_ENABLED ; +if (cap->args[0 ] &KVM_X2APIC_DISABLE_SUPPRESS_EOI_BROADCAST ) + kvm->arch.suppress_eoi_broadcast_mode =KVM_SUPPRESS_EOI_BROADCAST_DISABLED ; + r =0 ;break ;case KVM_CAP_X86_DISABLE_EXITS :
arch/x86/mm/extable.c +2 -5
@@ -411,14 +411,11 @@ void __init early_fixup_exception(struct pt_regs *regs, int trapnr)return ;if (trapnr ==X86_TRAP_UD ) { -if (report_bug (regs->ip, regs) ==BUG_TRAP_TYPE_WARN ) { -/* Skip the ud2. */ - regs->ip +=LEN_UD2 ; +if (handle_bug (regs))return ; - }/* -* If this was a BUG and report_bug returns or if this +* If this was a BUG and handle_bug returns or if this * was just a normal #UD, we want to continue onward and * crash. */
arch/x86/mm/numa.c +8 -0
@@ -48,6 +48,8 @@ s16 __apicid_to_node[MAX_LOCAL_APIC] = { [0 ... MAX_LOCAL_APIC-1] = NUMA_NO_NODE }; +nodemask_t numa_phys_nodes_parsed__initdata ; +int numa_cpu_node (int cpu) {u32 apicid =early_per_cpu (x86_cpu_to_apicid, cpu);
@@ -57,6 +59,11 @@ int numa_cpu_node(int cpu)return NUMA_NO_NODE ; } +int __init num_phys_nodes (void ) +{ +return bitmap_weight (numa_phys_nodes_parsed.bits,MAX_NUMNODES ); +} +cpumask_var_t node_to_cpumask_map[MAX_NUMNODES ];EXPORT_SYMBOL (node_to_cpumask_map);
@@ -210,6 +217,7 @@ static int __init dummy_numa_init(void) 0LLU, PFN_PHYS(max_pfn) - 1);node_set (0 , numa_nodes_parsed); +node_set (0 , numa_phys_nodes_parsed);numa_add_memblk (0 ,0 ,PFN_PHYS (max_pfn));return 0 ;
arch/x86/mm/srat.c +2 -0
@@ -57,6 +57,7 @@ acpi_numa_x2apic_affinity_init(struct acpi_srat_x2apic_cpu_affinity *pa) }set_apicid_to_node (apic_id, node);node_set (node, numa_nodes_parsed); +node_set (node, numa_phys_nodes_parsed);pr_debug ("SRAT: PXM %u -> APIC 0x%04x -> Node %u\n" , pxm, apic_id, node); }
@@ -97,6 +98,7 @@ acpi_numa_processor_affinity_init(struct acpi_srat_cpu_affinity *pa)set_apicid_to_node (apic_id, node);node_set (node, numa_nodes_parsed); +node_set (node, numa_phys_nodes_parsed);pr_debug ("SRAT: PXM %u -> APIC 0x%02x -> Node %u\n" , pxm, apic_id, node); }
arch/x86/net/bpf_jit_comp.c +2 -11
@@ -438,17 +438,8 @@ static void emit_kcfi(u8 **pprog, u32 hash)EMIT1_off32 (0xb8 , hash);/* movl $hash, %eax */ #ifdef CONFIG_CALL_PADDING -EMIT1 (0x90 ); -EMIT1 (0x90 ); -EMIT1 (0x90 ); -EMIT1 (0x90 ); -EMIT1 (0x90 ); -EMIT1 (0x90 ); -EMIT1 (0x90 ); -EMIT1 (0x90 ); -EMIT1 (0x90 ); -EMIT1 (0x90 ); -EMIT1 (0x90 ); +for (int i =0 ; i <CONFIG_FUNCTION_PADDING_CFI ; i++) +EMIT1 (0x90 );#endif EMIT_ENDBR ();
arch/x86/platform/efi/efi.c +1 -1
@@ -837,7 +837,7 @@ static void __init __efi_enter_virtual_mode(void) }efi_check_for_embedded_firmwares (); -efi_free_boot_services (); +efi_unmap_boot_services ();if (!efi_is_mixed ())efi_native_runtime_setup ();
arch/x86/platform/efi/quirks.c +52 -3
89 lines not on this page · raw message
block/blk-sysfs.c +7 -1
@@ -78,8 +78,14 @@ queue_requests_store(struct gendisk *disk, const char *page, size_t count)/* * Serialize updating nr_requests with concurrent queue_requests_store() * and switching elevator. +* +* Use trylock to avoid circular lock dependency with kernfs active +* reference during concurrent disk deletion: +* update_nr_hwq_lock -> kn->active (via del_gendisk -> kobject_del) +* kn->active -> update_nr_hwq_lock (via this sysfs write path) */ -down_write (&set->update_nr_hwq_lock); +if (!down_write_trylock (&set->update_nr_hwq_lock)) +return -EBUSY ;if (nr == q->nr_requests) goto unlock;
block/elevator.c +11 -1
@@ -806,7 +806,16 @@ ssize_t elv_iosched_store(struct gendisk *disk, const char *buf,elv_iosched_load_module (ctx.name); ctx.type =elevator_find_get (ctx.name); -down_read (&set->update_nr_hwq_lock); +/* +* Use trylock to avoid circular lock dependency with kernfs active +* reference during concurrent disk deletion: +* update_nr_hwq_lock -> kn->active (via del_gendisk -> kobject_del) +* kn->active -> update_nr_hwq_lock (via this sysfs write path) +*/ +if (!down_read_trylock (&set->update_nr_hwq_lock)) { + ret = -EBUSY ; + goto out; + }if (!blk_queue_no_elv_switch (q)) { ret =elevator_change (q, &ctx);if (!ret)
@@ -816,6 +825,7 @@ ssize_t elv_iosched_store(struct gendisk *disk, const char *buf, }up_read (&set->update_nr_hwq_lock); +out:if (ctx.type)elevator_put (ctx.type);return ret;
drivers/accel/amdxdna/aie2_ctx.c +27 -28
147 lines not on this page · raw message
drivers/accel/amdxdna/aie2_message.c +26 -10
@@ -40,11 +40,8 @@ static int aie2_send_mgmt_msg_wait(struct amdxdna_dev_hdl *ndev,return -ENODEV ; ret =xdna_send_msg_wait (xdna, ndev->mgmt_chann, msg); -if (ret == -ETIME ) { -xdna_mailbox_stop_channel (ndev->mgmt_chann); -xdna_mailbox_destroy_channel (ndev->mgmt_chann); - ndev->mgmt_chann =NULL ; - } +if (ret == -ETIME ) +aie2_destroy_mgmt_chann (ndev);if (!ret && *hdl->status !=AIE2_STATUS_SUCCESS ) { XDNA_ERR(xdna, "command opcode 0x%x failed, status 0x%x",
@@ -193,8 +190,10 @@ static int aie2_destroy_context_req(struct amdxdna_dev_hdl *ndev, u32 id) req.context_id = id; ret =aie2_send_mgmt_msg_wait (ndev, &msg); -if (ret) +if (ret && ret != -ENODEV )XDNA_WARN (xdna,"Destroy context failed, ret %d" , ret); +else if (ret == -ENODEV ) +XDNA_DBG (xdna,"Destroy context: device already stopped" );return ret; }
@@ -274,6 +273,9 @@ int aie2_destroy_context(struct amdxdna_dev_hdl *ndev, struct amdxdna_hwctx *hwcstruct amdxdna_dev *xdna = ndev->xdna;int ret; +if (!hwctx->priv->mbox_chann) +return 0 ; +xdna_mailbox_stop_channel (hwctx->priv->mbox_chann); ret =aie2_destroy_context_req (ndev, hwctx->fw_ctx_id);xdna_mailbox_destroy_channel (hwctx->priv->mbox_chann);
@@ -651,11 +653,11 @@ aie2_cmdlist_fill_npu_cf(struct amdxdna_gem_obj *cmd_bo, void *slot, size_t *sizu32 cmd_len;void *cmd; -memset (npu_slot,0 ,sizeof (*npu_slot)); cmd =amdxdna_cmd_get_payload (cmd_bo, &cmd_len);if (*size <sizeof (*npu_slot) + cmd_len)return -EINVAL ; +memset (npu_slot,0 ,sizeof (*npu_slot)); npu_slot->cu_idx =amdxdna_cmd_get_cu_idx (cmd_bo);if (npu_slot->cu_idx ==INVALID_CU_IDX )return -EINVAL ;
@@ -676,7 +678,6 @@ aie2_cmdlist_fill_npu_dpu(struct amdxdna_gem_obj *cmd_bo, void *slot, size_t *siu32 cmd_len;u32 arg_sz; -memset (npu_slot,0 ,sizeof (*npu_slot)); sn =amdxdna_cmd_get_payload (cmd_bo, &cmd_len); arg_sz = cmd_len -sizeof (*sn);if (cmd_len <sizeof (*sn) || arg_sz >MAX_NPU_ARGS_SIZE )
@@ -685,6 +686,7 @@ aie2_cmdlist_fill_npu_dpu(struct amdxdna_gem_obj *cmd_bo, void *slot, size_t *siif (*size <sizeof (*npu_slot) + arg_sz)return -EINVAL ; +memset (npu_slot,0 ,sizeof (*npu_slot)); npu_slot->cu_idx =amdxdna_cmd_get_cu_idx (cmd_bo);if (npu_slot->cu_idx ==INVALID_CU_IDX )return -EINVAL ;
@@ -708,7 +710,6 @@ aie2_cmdlist_fill_npu_preempt(struct amdxdna_gem_obj *cmd_bo, void *slot, size_tu32 cmd_len;u32 arg_sz; -memset (npu_slot,0 ,sizeof (*npu_slot)); pd =amdxdna_cmd_get_payload (cmd_bo, &cmd_len); arg_sz = cmd_len -sizeof (*pd);if (cmd_len <sizeof (*pd) || arg_sz >MAX_NPU_ARGS_SIZE )
@@ -717,6 +718,7 @@ aie2_cmdlist_fill_npu_preempt(struct amdxdna_gem_obj *cmd_bo, void *slot, size_tif (*size <sizeof (*npu_slot) + arg_sz)return -EINVAL ; +memset (npu_slot,0 ,sizeof (*npu_slot)); npu_slot->cu_idx =amdxdna_cmd_get_cu_idx (cmd_bo);if (npu_slot->cu_idx ==INVALID_CU_IDX )return -EINVAL ;
@@ -744,7 +746,6 @@ aie2_cmdlist_fill_npu_elf(struct amdxdna_gem_obj *cmd_bo, void *slot, size_t *siu32 cmd_len;u32 arg_sz; -memset (npu_slot,0 ,sizeof (*npu_slot)); pd =amdxdna_cmd_get_payload (cmd_bo, &cmd_len); arg_sz = cmd_len -sizeof (*pd);if (cmd_len <sizeof (*pd) || arg_sz >MAX_NPU_ARGS_SIZE )
@@ -753,6 +754,7 @@ aie2_cmdlist_fill_npu_elf(struct amdxdna_gem_obj *cmd_bo, void *slot, size_t *siif (*size <sizeof (*npu_slot) + arg_sz)return -EINVAL ; +memset (npu_slot,0 ,sizeof (*npu_slot)); npu_slot->type =EXEC_NPU_TYPE_ELF ; npu_slot->inst_buf_addr = pd->inst_buf; npu_slot->save_buf_addr = pd->save_buf;
@@ -866,6 +868,20 @@ void aie2_msg_init(struct amdxdna_dev_hdl *ndev) ndev->exec_msg_ops = &legacy_exec_message_ops; } +void aie2_destroy_mgmt_chann (struct amdxdna_dev_hdl *ndev) +{ +struct amdxdna_dev *xdna = ndev->xdna; + +drm_WARN_ON (&xdna->ddev, !mutex_is_locked (&xdna->dev_lock)); + +if (!ndev->mgmt_chann) +return ; + +xdna_mailbox_stop_channel (ndev->mgmt_chann); +xdna_mailbox_destroy_channel (ndev->mgmt_chann); + ndev->mgmt_chann =NULL ; +} +static inline struct amdxdna_gem_obj *aie2_cmdlist_get_cmd_buf (struct amdxdna_sched_job *job) {
drivers/accel/amdxdna/aie2_pci.c +10 -13
@@ -341,10 +341,9 @@ static void aie2_hw_stop(struct amdxdna_dev *xdna)return ; } +aie2_runtime_cfg (ndev,AIE2_RT_CFG_CLK_GATING ,NULL );aie2_mgmt_fw_fini (ndev); -xdna_mailbox_stop_channel (ndev->mgmt_chann); -xdna_mailbox_destroy_channel (ndev->mgmt_chann); - ndev->mgmt_chann =NULL ; +aie2_destroy_mgmt_chann (ndev);drmm_kfree (&xdna->ddev, ndev->mbox); ndev->mbox =NULL ;aie2_psp_stop (ndev->psp_hdl);
@@ -424,15 +423,15 @@ static int aie2_hw_start(struct amdxdna_dev *xdna) goto stop_psp; } - ret =aie2_pm_init (ndev); + ret =aie2_mgmt_fw_init (ndev);if (ret) { -XDNA_ERR (xdna,"failed to init pm, ret %d" , ret); +XDNA_ERR (xdna,"initial mgmt firmware failed, ret %d" , ret); goto destroy_mgmt_chann; } - ret =aie2_mgmt_fw_init (ndev); + ret =aie2_pm_init (ndev);if (ret) { -XDNA_ERR (xdna,"initial mgmt firmware failed, ret %d" , ret); +XDNA_ERR (xdna,"failed to init pm, ret %d" , ret); goto destroy_mgmt_chann; }
@@ -453,8 +452,7 @@ static int aie2_hw_start(struct amdxdna_dev *xdna)return 0 ; destroy_mgmt_chann: -xdna_mailbox_stop_channel (ndev->mgmt_chann); -xdna_mailbox_destroy_channel (ndev->mgmt_chann); +aie2_destroy_mgmt_chann (ndev); stop_psp:aie2_psp_stop (ndev->psp_hdl); fini_smu:
@@ -469,7 +467,6 @@ static int aie2_hw_suspend(struct amdxdna_dev *xdna) {struct amdxdna_client *client; -guard (mutex)(&xdna->dev_lock);list_for_each_entry (client, &xdna->client_list, node)aie2_hwctx_suspend (client);
@@ -969,7 +966,7 @@ static int aie2_get_info(struct amdxdna_client *client, struct amdxdna_drm_get_iif (!drm_dev_enter (&xdna->ddev, &idx))return -ENODEV ; - ret =amdxdna_pm_resume_get (xdna); + ret =amdxdna_pm_resume_get_locked (xdna);if (ret) goto dev_exit;
@@ -1062,7 +1059,7 @@ static int aie2_get_array(struct amdxdna_client *client,if (!drm_dev_enter (&xdna->ddev, &idx))return -ENODEV ; - ret =amdxdna_pm_resume_get (xdna); + ret =amdxdna_pm_resume_get_locked (xdna);if (ret) goto dev_exit;
@@ -1152,7 +1149,7 @@ static int aie2_set_state(struct amdxdna_client *client,if (!drm_dev_enter (&xdna->ddev, &idx))return -ENODEV ; - ret =amdxdna_pm_resume_get (xdna); + ret =amdxdna_pm_resume_get_locked (xdna);if (ret) goto dev_exit;
drivers/accel/amdxdna/aie2_pci.h +1 -0
@@ -302,6 +302,7 @@ int aie2_get_array_async_error(struct amdxdna_dev_hdl *ndev,/* aie2_message.c */ void aie2_msg_init (struct amdxdna_dev_hdl *ndev); +void aie2_destroy_mgmt_chann (struct amdxdna_dev_hdl *ndev);int aie2_suspend_fw (struct amdxdna_dev_hdl *ndev);int aie2_resume_fw (struct amdxdna_dev_hdl *ndev);int aie2_set_runtime_cfg (struct amdxdna_dev_hdl *ndev,u32 type,u64 value);
drivers/accel/amdxdna/aie2_pm.c +1 -1
@@ -31,7 +31,7 @@ int aie2_pm_set_dpm(struct amdxdna_dev_hdl *ndev, u32 dpm_level) {int ret; - ret =amdxdna_pm_resume_get (ndev->xdna); + ret =amdxdna_pm_resume_get_locked (ndev->xdna);if (ret)return ret;
drivers/accel/amdxdna/amdxdna_ctx.c +38 -13
104 lines not on this page · raw message
drivers/accel/amdxdna/amdxdna_ctx.h +3 -0
@@ -167,6 +167,9 @@ amdxdna_cmd_get_state(struct amdxdna_gem_obj *abo)void *amdxdna_cmd_get_payload (struct amdxdna_gem_obj *abo,u32 *size);u32 amdxdna_cmd_get_cu_idx (struct amdxdna_gem_obj *abo); +int amdxdna_cmd_set_error (struct amdxdna_gem_obj *abo, +struct amdxdna_sched_job *job,u32 cmd_idx, +enum ert_cmd_state error_state);void amdxdna_sched_job_cleanup (struct amdxdna_sched_job *job);void amdxdna_hwctx_remove_all (struct amdxdna_client *client);
drivers/accel/amdxdna/amdxdna_gem.c +19 -19
@@ -21,8 +21,6 @@#include "amdxdna_pci_drv.h" #include "amdxdna_ubuf.h" -#define XDNA_MAX_CMD_BO_SIZE SZ_32K -MODULE_IMPORT_NS ("DMA_BUF" ); static int
@@ -746,12 +744,6 @@ amdxdna_drm_create_cmd_bo(struct drm_device *dev, {struct amdxdna_dev *xdna =to_xdna_dev (dev);struct amdxdna_gem_obj *abo; -int ret; - -if (args->size >XDNA_MAX_CMD_BO_SIZE ) { -XDNA_ERR (xdna,"Command bo size 0x%llx too large" , args->size); -return ERR_PTR (-EINVAL ); - }if (args->size <sizeof (struct amdxdna_cmd )) {XDNA_DBG (xdna,"Command BO size 0x%llx too small" , args->size);
@@ -765,17 +757,7 @@ amdxdna_drm_create_cmd_bo(struct drm_device *dev, abo->type =AMDXDNA_BO_CMD ; abo->client = filp->driver_priv; - ret =amdxdna_gem_obj_vmap (abo, &abo->mem.kva); -if (ret) { -XDNA_ERR (xdna,"Vmap cmd bo failed, ret %d" , ret); - goto release_obj; - } -return abo; - -release_obj: -drm_gem_object_put (to_gobj (abo)); -return ERR_PTR (ret); }int amdxdna_drm_create_bo_ioctl (struct drm_device *dev,void *data,struct drm_file *filp)
@@ -872,6 +854,7 @@ struct amdxdna_gem_obj *amdxdna_gem_get_obj(struct amdxdna_client *client,struct amdxdna_dev *xdna = client->xdna;struct amdxdna_gem_obj *abo;struct drm_gem_object *gobj; +int ret; gobj =drm_gem_object_lookup (client->filp, bo_hdl);if (!gobj) {
@@ -880,9 +863,26 @@ struct amdxdna_gem_obj *amdxdna_gem_get_obj(struct amdxdna_client *client, } abo =to_xdna_obj (gobj); -if (bo_type ==AMDXDNA_BO_INVALID || abo->type == bo_type) +if (bo_type !=AMDXDNA_BO_INVALID && abo->type != bo_type) + goto put_obj; + +if (bo_type !=AMDXDNA_BO_CMD || abo->mem.kva)return abo; +if (abo->mem.size >SZ_32K ) { +XDNA_ERR (xdna,"Cmd bo is too big %ld" , abo->mem.size); + goto put_obj; + } + + ret =amdxdna_gem_obj_vmap (abo, &abo->mem.kva); +if (ret) { +XDNA_ERR (xdna,"Vmap cmd bo failed, ret %d" , ret); + goto put_obj; + } + +return abo; + +put_obj:drm_gem_object_put (gobj);return NULL ; }
drivers/accel/amdxdna/amdxdna_pm.c +2 -0
@@ -16,6 +16,7 @@ int amdxdna_pm_suspend(struct device *dev)struct amdxdna_dev *xdna =to_xdna_dev (dev_get_drvdata (dev));int ret = -EOPNOTSUPP ; +guard (mutex)(&xdna->dev_lock);if (xdna->dev_info->ops->suspend) ret = xdna->dev_info->ops->suspend (xdna);
@@ -28,6 +29,7 @@ int amdxdna_pm_resume(struct device *dev)struct amdxdna_dev *xdna =to_xdna_dev (dev_get_drvdata (dev));int ret = -EOPNOTSUPP ; +guard (mutex)(&xdna->dev_lock);if (xdna->dev_info->ops->resume) ret = xdna->dev_info->ops->resume (xdna);
drivers/accel/amdxdna/amdxdna_pm.h +11 -0
@@ -15,4 +15,15 @@ void amdxdna_pm_suspend_put(struct amdxdna_dev *xdna);void amdxdna_pm_init (struct amdxdna_dev *xdna);void amdxdna_pm_fini (struct amdxdna_dev *xdna); +static inline int amdxdna_pm_resume_get_locked (struct amdxdna_dev *xdna) +{ +int ret; + +mutex_unlock (&xdna->dev_lock); + ret =amdxdna_pm_resume_get (xdna); +mutex_lock (&xdna->dev_lock); + +return ret; +} +#endif /* _AMDXDNA_PM_H_ */
drivers/accel/amdxdna/amdxdna_ubuf.c +5 -1
@@ -7,6 +7,7 @@#include <drm/drm_device.h> #include <drm/drm_print.h> #include <linux/dma-buf.h> +#include <linux/overflow.h> #include <linux/pagemap.h> #include <linux/vmalloc.h>
@@ -176,7 +177,10 @@ struct dma_buf *amdxdna_get_ubuf(struct drm_device *dev, goto free_ent; } - exp_info.size += va_ent[i].len; +if (check_add_overflow (exp_info.size, va_ent[i].len, &exp_info.size)) { + ret = -EINVAL ; + goto free_ent; + } } ubuf->nr_pages = exp_info.size >>PAGE_SHIFT ;
drivers/accel/ethosu/ethosu_gem.c +5 -2
@@ -154,7 +154,7 @@ static void cmd_state_init(struct cmd_state *st)static u64 cmd_to_addr (u32 *cmd) { -return ((u64)((cmd[0 ] &0xff0000 ) <<16 )) | cmd[1 ]; +return (((u64 )cmd[0 ] &0xff0000 ) <<16 ) | cmd[1 ]; } static u64 dma_length(struct ethosu_validated_cmdstream_info *info,
@@ -417,7 +417,10 @@ static int ethosu_gem_cmdstream_copy_and_validate(struct drm_device *ddev,return ret;break ;case NPU_OP_ELEMENTWISE : - use_ifm2 = !((st.ifm2.broadcast ==8 ) || (param ==5 ) || + use_scale =ethosu_is_u65 (edev) ? + (st.ifm2.broadcast &0x80 ) : + (st.ifm2.broadcast ==8 ); + use_ifm2 = !(use_scale || (param ==5 ) || (param ==6 ) || (param ==7 ) || (param ==0x24 )); use_ifm = st.ifm.broadcast !=8 ; ret =calc_sizes_elemwise (ddev, info, cmd, &st, use_ifm, use_ifm2);
drivers/accel/ethosu/ethosu_job.c +18 -8
@@ -143,23 +143,29 @@ static int ethosu_job_push(struct ethosu_job *job)return ret; } +static void ethosu_job_err_cleanup (struct ethosu_job *job) +{ +unsigned int i; + +for (i =0 ; i < job->region_cnt; i++) +drm_gem_object_put (job->region_bo[i]); + +drm_gem_object_put (job->cmd_bo); + +kfree (job); +} +static void ethosu_job_cleanup (struct kref *ref) { struct ethosu_job *job = container_of(ref, struct ethosu_job, refcount); -unsigned int i;pm_runtime_put_autosuspend (job->dev->base.dev);dma_fence_put (job->done_fence);dma_fence_put (job->inference_done_fence); -for (i =0 ; i < job->region_cnt; i++) -drm_gem_object_put (job->region_bo[i]); - -drm_gem_object_put (job->cmd_bo); - -kfree (job); +ethosu_job_err_cleanup (job); }static void ethosu_job_put (struct ethosu_job *job)
@@ -454,12 +460,16 @@ static int ethosu_ioctl_submit_job(struct drm_device *dev, struct drm_file *file } } ret =ethosu_job_push (ejob); +if (!ret) { +ethosu_job_put (ejob); +return 0 ; + } out_cleanup_job:if (ret)drm_sched_job_cleanup (&ejob->base); out_put_job: -ethosu_job_put (ejob); +ethosu_job_err_cleanup (ejob);return ret; }
drivers/accel/rocket/rocket_core.c +5 -2
@@ -59,8 +59,11 @@ int rocket_core_init(struct rocket_core *core) core->iommu_group =iommu_group_get (dev); err =rocket_job_init (core); -if (err) +if (err) { +iommu_group_put (core->iommu_group); + core->iommu_group =NULL ;return err; + }pm_runtime_use_autosuspend (dev);
@@ -76,7 +79,7 @@ int rocket_core_init(struct rocket_core *core) err =pm_runtime_resume_and_get (dev);if (err) { -rocket_job_fini (core); +rocket_core_fini (core);return err; }
drivers/accel/rocket/rocket_drv.c +14 -1
@@ -13,6 +13,7 @@#include <linux/platform_device.h> #include <linux/pm_runtime.h> +#include "rocket_device.h" #include "rocket_drv.h" #include "rocket_gem.h" #include "rocket_job.h"
@@ -158,6 +159,8 @@ static const struct drm_driver rocket_drm_driver = {static int rocket_probe (struct platform_device *pdev) { +int ret; +if (rdev ==NULL ) {/* First core probing, initialize DRM device. */ rdev =rocket_device_init (drm_dev, &rocket_drm_driver);
@@ -177,7 +180,17 @@ static int rocket_probe(struct platform_device *pdev) rdev->num_cores++; -return rocket_core_init (&rdev->cores[core]); + ret =rocket_core_init (&rdev->cores[core]); +if (ret) { + rdev->num_cores--; + +if (rdev->num_cores ==0 ) { +rocket_device_fini (rdev); + rdev =NULL ; + } + } + +return ret; }static void rocket_remove (struct platform_device *pdev)
drivers/ata/libata-eh.c +2 -1
@@ -647,7 +647,7 @@ void ata_scsi_cmd_error_handler(struct Scsi_Host *host, struct ata_port *ap,break ; } -if (qc == ap->deferred_qc) { +if (i <ATA_MAX_QUEUE && qc == ap->deferred_qc) {/* * This is a deferred command that timed out while * waiting for the command queue to drain. Since the qc
@@ -659,6 +659,7 @@ void ata_scsi_cmd_error_handler(struct Scsi_Host *host, struct ata_port *ap,*/ WARN_ON_ONCE (qc->flags &ATA_QCFLAG_ACTIVE ); ap->deferred_qc =NULL ; +cancel_work (&ap->deferred_qc_work);set_host_byte (scmd,DID_TIME_OUT );scsi_eh_finish_cmd (scmd, &ap->eh_done_q); }else if (i <ATA_MAX_QUEUE ) {
drivers/ata/libata-scsi.c +1 -0
@@ -1699,6 +1699,7 @@ void ata_scsi_requeue_deferred_qc(struct ata_port *ap) scmd = qc->scsicmd; ap->deferred_qc =NULL ; +cancel_work (&ap->deferred_qc_work);ata_qc_free (qc); scmd->result = (DID_SOFT_ERROR <<16 );scsi_done (scmd);
drivers/block/drbd/drbd_actlog.c +23 -30
82 lines not on this page · raw message
drivers/block/drbd/drbd_interval.h +4 -1
@@ -8,12 +8,15 @@struct drbd_interval {struct rb_node rb;sector_t sector;/* start sector of the interval */ -unsigned int size;/* size in bytes */ sector_t end;/* highest interval end in subtree */ +unsigned int size;/* size in bytes */ unsigned int local:1 /* local or remote request? */ ;unsigned int waiting:1 ;/* someone is waiting for completion */ unsigned int completed:1 ;/* this has been completed already; * ignore for conflict detection */ + +/* to resume a partially successful drbd_al_begin_io_nonblock(); */ +unsigned int partially_in_al_next_enr; };static inline void drbd_clear_interval (struct drbd_interval *i)
drivers/block/drbd/drbd_req.c +2 -1
@@ -621,7 +621,8 @@ int __req_mod(struct drbd_request *req, enum drbd_req_event what,break ;case READ_COMPLETED_WITH_ERROR : -drbd_set_out_of_sync (peer_device, req->i.sector, req->i.size); +drbd_set_out_of_sync (first_peer_device (device), + req->i.sector, req->i.size);drbd_report_io_error (device, req);__drbd_chk_io_error (device,DRBD_READ_ERROR ); fallthrough;
drivers/block/zloop.c +24 -7
@@ -542,6 +542,21 @@ static void zloop_rw(struct zloop_cmd *cmd)zloop_put_cmd (cmd); } +/* +* Sync the entire FS containing the zone files instead of walking all files. +*/ +static int zloop_flush (struct zloop_device *zlo) +{ +struct super_block *sb =file_inode (zlo->data_dir)->i_sb; +int ret; + +down_read (&sb->s_umount); + ret =sync_filesystem (sb); +up_read (&sb->s_umount); + +return ret; +} +static void zloop_handle_cmd (struct zloop_cmd *cmd) {struct request *rq =blk_mq_rq_from_pdu (cmd);
@@ -562,11 +577,7 @@ static void zloop_handle_cmd(struct zloop_cmd *cmd)zloop_rw (cmd);return ;case REQ_OP_FLUSH : -/* -* Sync the entire FS containing the zone files instead of -* walking all files -*/ - cmd->ret =sync_filesystem (file_inode (zlo->data_dir)->i_sb); + cmd->ret =zloop_flush (zlo);break ;case REQ_OP_ZONE_RESET : cmd->ret =zloop_reset_zone (zlo,rq_zone_no (rq));
@@ -981,7 +992,8 @@ static int zloop_ctl_add(struct zloop_options *opts)struct queue_limits lim = { .max_hw_sectors =SZ_1M >>SECTOR_SHIFT , .chunk_sectors = opts->zone_size, - .features =BLK_FEAT_ZONED , + .features =BLK_FEAT_ZONED |BLK_FEAT_WRITE_CACHE , + };unsigned int nr_zones, i, j;struct zloop_device *zlo;
@@ -1162,7 +1174,12 @@ static int zloop_ctl_remove(struct zloop_options *opts)int ret;if (!(opts->mask &ZLOOP_OPT_ID )) { -pr_err ("No ID specified\n" ); +pr_err ("No ID specified for remove\n" ); +return -EINVAL ; + } + +if (opts->mask & ~ZLOOP_OPT_ID ) { +pr_err ("Invalid option specified for remove\n" );return -EINVAL ; }
drivers/char/ipmi/ipmi_msghandler.c +9 -2
@@ -4852,8 +4852,15 @@ static void smi_work(struct work_struct *t)if (newmsg->recv_msg)deliver_err_response (intf, newmsg->recv_msg, cc); -else -ipmi_free_smi_msg (newmsg); +if (!run_to_completion) +spin_lock_irqsave (&intf->xmit_msgs_lock, + flags); + intf->curr_msg =NULL ; +if (!run_to_completion) +spin_unlock_irqrestore (&intf->xmit_msgs_lock, + flags); +ipmi_free_smi_msg (newmsg); + newmsg =NULL ; goto restart; } }
drivers/clk/imx/clk-imx8qxp.c +23 -1
@@ -346,7 +346,29 @@ static struct platform_driver imx8qxp_clk_driver = { }, .probe = imx8qxp_clk_probe, }; -module_platform_driver (imx8qxp_clk_driver); + +static int __init imx8qxp_clk_init (void ) +{ +int ret; + + ret =platform_driver_register (&imx8qxp_clk_driver); +if (ret) +return ret; + + ret =imx_clk_scu_module_init (); +if (ret) +platform_driver_unregister (&imx8qxp_clk_driver); + +return ret; +} +module_init (imx8qxp_clk_init); + +static void __exit imx8qxp_clk_exit(void) +{ +imx_clk_scu_module_exit (); +platform_driver_unregister (&imx8qxp_clk_driver); +} +module_exit (imx8qxp_clk_exit);MODULE_AUTHOR ("Aisheng Dong <[email protected]>" );MODULE_DESCRIPTION ("NXP i.MX8QXP clock driver" );
drivers/clk/imx/clk-scu.c +11 -1
@@ -191,6 +191,16 @@ static bool imx_scu_clk_is_valid(u32 rsrc_id)return p !=NULL ; } +int __init imx_clk_scu_module_init (void ) +{ +return platform_driver_register (&imx_clk_scu_driver); +} + +void __exit imx_clk_scu_module_exit(void) +{ +return platform_driver_unregister (&imx_clk_scu_driver); +} +int imx_clk_scu_init (struct device_node *np,const struct imx_clk_scu_rsrc_table *data) {
@@ -215,7 +225,7 @@ int imx_clk_scu_init(struct device_node *np, rsrc_table = data; } -return platform_driver_register (&imx_clk_scu_driver); +return 0 ; }/*
drivers/clk/imx/clk-scu.h +2 -0
@@ -25,6 +25,8 @@ extern const struct imx_clk_scu_rsrc_table imx_clk_scu_rsrc_imx8dxl;extern const struct imx_clk_scu_rsrc_table imx_clk_scu_rsrc_imx8qxp;extern const struct imx_clk_scu_rsrc_table imx_clk_scu_rsrc_imx8qm; +int __init imx_clk_scu_module_init (void ); +void __exit imx_clk_scu_module_exit(void);int imx_clk_scu_init (struct device_node *np,const struct imx_clk_scu_rsrc_table *data); struct clk_hw *imx_scu_of_clk_src_get(struct of_phandle_args *clkspec,
drivers/cpufreq/intel_pstate.c +5 -5
@@ -1476,13 +1476,13 @@ static void __intel_pstate_update_max_freq(struct cpufreq_policy *policy,refresh_frequency_limits (policy); } -static bool intel_pstate_update_max_freq (struct cpudata *cpudata) +static bool intel_pstate_update_max_freq (int cpu) { - struct cpufreq_policy *policy __free(put_cpufreq_policy) = cpufreq_cpu_get(cpudata->cpu); + struct cpufreq_policy *policy __free(put_cpufreq_policy) = cpufreq_cpu_get(cpu);if (!policy)return false; -__intel_pstate_update_max_freq (policy, cpudata); +__intel_pstate_update_max_freq (policy, all_cpu_data[cpu]);return true; }
@@ -1501,7 +1501,7 @@ static void intel_pstate_update_limits_for_all(void)int cpu;for_each_possible_cpu (cpu) -intel_pstate_update_max_freq (all_cpu_data[cpu]); +intel_pstate_update_max_freq (cpu);mutex_lock (&hybrid_capacity_lock);
@@ -1908,7 +1908,7 @@ static void intel_pstate_notify_work(struct work_struct *work)struct cpudata *cpudata = container_of(to_delayed_work(work), struct cpudata, hwp_notify_work); -if (intel_pstate_update_max_freq (cpudata)) { +if (intel_pstate_update_max_freq (cpudata->cpu)) {/* * The driver will not be unregistered while this function is * running, so update the capacity without acquiring the driver
drivers/crypto/ccp/sev-dev-tsm.c +1 -1
@@ -378,9 +378,9 @@ void sev_tsm_init_locked(struct sev_device *sev, void *tio_status_page)return ; error_exit: -kfree (t);pr_err ("Failed to enable SEV-TIO: ret=%d en=%d initdone=%d SEV=%d\n" , ret, t->tio_en, t->tio_init_done,boot_cpu_has (X86_FEATURE_SEV )); +kfree (t); }void sev_tsm_uninit (struct sev_device *sev)
drivers/cxl/core/mbox.c +9 -2
@@ -311,6 +311,7 @@ static bool cxl_mem_raw_command_allowed(u16 opcode)* cxl_payload_from_user_allowed() - Check contents of in_payload. * @opcode: The mailbox command opcode. * @payload_in: Pointer to the input payload passed in from user space. +* @in_size: Size of @payload_in in bytes. * * Return: * * true - payload_in passes check for @opcode.
@@ -325,12 +326,15 @@ static bool cxl_mem_raw_command_allowed(u16 opcode)* * The specific checks are determined by the opcode. */ -static bool cxl_payload_from_user_allowed (u16 opcode,void *payload_in) +static bool cxl_payload_from_user_allowed (u16 opcode,void *payload_in, +size_t in_size) {switch (opcode) {case CXL_MBOX_OP_SET_PARTITION_INFO : {struct cxl_mbox_set_partition_info *pi = payload_in; +if (in_size <sizeof (*pi)) +return false;if (pi->flags &CXL_SET_PARTITION_IMMEDIATE_FLAG )return false;break ;
@@ -338,6 +342,8 @@ static bool cxl_payload_from_user_allowed(u16 opcode, void *payload_in)case CXL_MBOX_OP_CLEAR_LOG : {const uuid_t *uuid = (uuid_t *)payload_in; +if (in_size <sizeof (uuid_t)) +return false;/* * Restrict the ‘Clear log’ action to only apply to * Vendor debug logs.
@@ -365,7 +371,8 @@ static int cxl_mbox_cmd_ctor(struct cxl_mbox_cmd *mbox_cmd,if (IS_ERR (mbox_cmd->payload_in))return PTR_ERR (mbox_cmd->payload_in); -if (!cxl_payload_from_user_allowed (opcode, mbox_cmd->payload_in)) { +if (!cxl_payload_from_user_allowed (opcode, mbox_cmd->payload_in, + in_size)) {dev_dbg (cxl_mbox->host,"%s: input payload not allowed\n" ,cxl_mem_opcode_to_name (opcode));kvfree (mbox_cmd->payload_in);
drivers/cxl/core/pmem.c +32 -10
66 lines not on this page · raw message
drivers/cxl/cxl.h +7 -0
@@ -563,11 +563,16 @@ struct cxl_nvdimm_bridge {#define CXL_DEV_ID_LEN 19 +enum { +CXL_NVD_F_INVALIDATED =0 , +}; +struct cxl_nvdimm {struct device dev;struct cxl_memdev *cxlmd;u8 dev_id[CXL_DEV_ID_LEN ];/* for nvdimm, string of 'serial' */ u64 dirty_shutdowns; +unsigned long flags; };struct cxl_pmem_region_mapping {
@@ -893,6 +898,8 @@ void cxl_driver_unregister(struct cxl_driver *cxl_drv);struct cxl_nvdimm_bridge *to_cxl_nvdimm_bridge (struct device *dev);struct cxl_nvdimm_bridge *devm_cxl_add_nvdimm_bridge (struct device *host,struct cxl_port *port); +struct cxl_nvdimm_bridge *__devm_cxl_add_nvdimm_bridge (struct device *host, +struct cxl_port *port);struct cxl_nvdimm *to_cxl_nvdimm (struct device *dev);bool is_cxl_nvdimm (struct device *dev);int devm_cxl_add_nvdimm (struct cxl_port *parent_port,struct cxl_memdev *cxlmd);
drivers/cxl/pmem.c +21 -1
@@ -13,6 +13,20 @@ static __read_mostly DECLARE_BITMAP(exclusive_cmds, CXL_MEM_COMMAND_ID_MAX); +/** +* devm_cxl_add_nvdimm_bridge() - add the root of a LIBNVDIMM topology +* @host: platform firmware root device +* @port: CXL port at the root of a CXL topology +* +* Return: bridge device that can host cxl_nvdimm objects +*/ +struct cxl_nvdimm_bridge *devm_cxl_add_nvdimm_bridge (struct device *host, +struct cxl_port *port) +{ +return __devm_cxl_add_nvdimm_bridge (host, port); +} +EXPORT_SYMBOL_NS_GPL (devm_cxl_add_nvdimm_bridge,"CXL" ); +static void clear_exclusive (void *mds) {clear_exclusive_cxl_commands (mds, exclusive_cmds);
@@ -129,6 +143,9 @@ static int cxl_nvdimm_probe(struct device *dev)struct nvdimm *nvdimm;int rc; +if (test_bit (CXL_NVD_F_INVALIDATED , &cxl_nvd->flags)) +return -EBUSY ; +set_exclusive_cxl_commands (mds, exclusive_cmds); rc =devm_add_action_or_reset (dev, clear_exclusive, mds);if (rc)
@@ -309,8 +326,10 @@ static int detach_nvdimm(struct device *dev, void *data) scoped_guard(device, dev) {if (dev->driver) { cxl_nvd =to_cxl_nvdimm (dev); -if (cxl_nvd->cxlmd && cxl_nvd->cxlmd->cxl_nvb == data) +if (cxl_nvd->cxlmd && cxl_nvd->cxlmd->cxl_nvb == data) { release = true; +set_bit (CXL_NVD_F_INVALIDATED , &cxl_nvd->flags); + } } }if (release)
@@ -353,6 +372,7 @@ static struct cxl_driver cxl_nvdimm_bridge_driver = { .probe = cxl_nvdimm_bridge_probe, .id = CXL_DEVICE_NVDIMM_BRIDGE, .drv = { + .probe_type = PROBE_FORCE_SYNCHRONOUS, .suppress_bind_attrs = true, }, };
drivers/firmware/efi/mokvar-table.c +1 -1
@@ -85,7 +85,7 @@ static struct kobject *mokvar_kobj;* as an alternative to ordinary EFI variables, due to platform-dependent * limitations. The memory occupied by this table is marked as reserved. * -* This routine must be called before efi_free_boot_services() in order +* This routine must be called before efi_unmap_boot_services() in order * to guarantee that it can mark the table as reserved. * * Implicit inputs:
drivers/gpio/gpiolib-shared.c +3 -3
@@ -753,14 +753,14 @@ static bool gpio_shared_entry_is_really_shared(struct gpio_shared_entry *entry)static void gpio_shared_free_exclusive (void ) {struct gpio_shared_entry *entry, *epos; +struct gpio_shared_ref *ref, *rpos;list_for_each_entry_safe (entry, epos, &gpio_shared_list, list) {if (gpio_shared_entry_is_really_shared (entry))continue ; -gpio_shared_drop_ref (list_first_entry (&entry->refs, - struct gpio_shared_ref, - list)); +list_for_each_entry_safe (ref, rpos, &entry->refs, list) +gpio_shared_drop_ref (ref);gpio_shared_drop_entry (entry); } }
drivers/gpu/drm/amd/amdgpu/amdgpu_aca.c +1 -0
@@ -641,6 +641,7 @@ static void aca_error_fini(struct aca_error *aerr)aca_bank_error_remove (aerr, bank_error); out_unlock: +mutex_unlock (&aerr->lock);mutex_destroy (&aerr->lock); }
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +10 -7
@@ -7203,6 +7203,15 @@ pci_ers_result_t amdgpu_pci_slot_reset(struct pci_dev *pdev)dev_info (adev->dev,"PCI error: slot reset callback!!\n" );memset (&reset_context,0 ,sizeof (reset_context)); +INIT_LIST_HEAD (&device_list); + hive =amdgpu_get_xgmi_hive (adev); +if (hive) { +mutex_lock (&hive->hive_lock); +list_for_each_entry (tmp_adev, &hive->device_list, gmc.xgmi.head) +list_add_tail (&tmp_adev->reset_list, &device_list); + }else { +list_add_tail (&adev->reset_list, &device_list); + }if (adev->pcie_reset_ctx.swus) link_dev = adev->pcie_reset_ctx.swus;
@@ -7243,19 +7252,13 @@ pci_ers_result_t amdgpu_pci_slot_reset(struct pci_dev *pdev) reset_context.reset_req_dev = adev;set_bit (AMDGPU_NEED_FULL_RESET , &reset_context.flags);set_bit (AMDGPU_SKIP_COREDUMP , &reset_context.flags); -INIT_LIST_HEAD (&device_list); - hive =amdgpu_get_xgmi_hive (adev);if (hive) { -mutex_lock (&hive->hive_lock); reset_context.hive = hive; -list_for_each_entry (tmp_adev, &hive->device_list, gmc.xgmi.head) { +list_for_each_entry (tmp_adev, &hive->device_list, gmc.xgmi.head) tmp_adev->pcie_reset_ctx.in_link_reset = true; -list_add_tail (&tmp_adev->reset_list, &device_list); - } }else {set_bit (AMDGPU_SKIP_HW_RESET , &reset_context.flags); -list_add_tail (&adev->reset_list, &device_list); } r =amdgpu_device_asic_reset (adev, &device_list, &reset_context);
drivers/gpu/drm/amd/amdgpu/amdgpu_psp_ta.c +7 -5
@@ -332,13 +332,13 @@ static ssize_t ta_if_invoke_debugfs_write(struct file *fp, const char *buf, sizeif (!context || !context->initialized) {dev_err (adev->dev,"TA is not initialized\n" ); ret = -EINVAL ; - goto err_free_shared_buf; + goto free_shared_buf; }if (!psp->ta_funcs || !psp->ta_funcs->fn_ta_invoke) {dev_err (adev->dev,"Unsupported function to invoke TA\n" ); ret = -EOPNOTSUPP ; - goto err_free_shared_buf; + goto free_shared_buf; } context->session_id = ta_id;
@@ -346,7 +346,7 @@ static ssize_t ta_if_invoke_debugfs_write(struct file *fp, const char *buf, sizemutex_lock (&psp->ras_context.mutex); ret =prep_ta_mem_context (&context->mem_context, shared_buf, shared_buf_len);if (ret) - goto err_free_shared_buf; + goto unlock; ret =psp_fn_ta_invoke (psp, cmd_id);if (ret || context->resp_status) {
@@ -354,15 +354,17 @@ static ssize_t ta_if_invoke_debugfs_write(struct file *fp, const char *buf, size ret, context->resp_status);if (!ret) { ret = -EINVAL ; - goto err_free_shared_buf; + goto unlock; } }if (copy_to_user ((char *)&buf[copy_pos], context->mem_context.shared_buf, shared_buf_len)) ret = -EFAULT ; -err_free_shared_buf: +unlock:mutex_unlock (&psp->ras_context.mutex); + +free_shared_buf:kfree (shared_buf);return ret;
drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c +4 -4
@@ -830,7 +830,7 @@ int amdgpu_userq_wait_ioctl(struct drm_device *dev, void *data,dma_resv_for_each_fence (&resv_cursor, gobj_read[i]->resv,DMA_RESV_USAGE_READ , fence) { -if (WARN_ON_ONCE (num_fences >= wait_info->num_fences)) { +if (num_fences >= wait_info->num_fences) { r = -EINVAL ; goto free_fences; }
@@ -847,7 +847,7 @@ int amdgpu_userq_wait_ioctl(struct drm_device *dev, void *data,dma_resv_for_each_fence (&resv_cursor, gobj_write[i]->resv,DMA_RESV_USAGE_WRITE , fence) { -if (WARN_ON_ONCE (num_fences >= wait_info->num_fences)) { +if (num_fences >= wait_info->num_fences) { r = -EINVAL ; goto free_fences; }
@@ -871,7 +871,7 @@ int amdgpu_userq_wait_ioctl(struct drm_device *dev, void *data, goto free_fences;dma_fence_unwrap_for_each (f, &iter, fence) { -if (WARN_ON_ONCE (num_fences >= wait_info->num_fences)) { +if (num_fences >= wait_info->num_fences) { r = -EINVAL ; goto free_fences; }
@@ -895,7 +895,7 @@ int amdgpu_userq_wait_ioctl(struct drm_device *dev, void *data,if (r) goto free_fences; -if (WARN_ON_ONCE (num_fences >= wait_info->num_fences)) { +if (num_fences >= wait_info->num_fences) { r = -EINVAL ; goto free_fences; }
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c +4 -2
@@ -1706,6 +1706,7 @@ __set_dm_plane_colorop_3dlut(struct drm_plane_state *plane_state,struct dc_transfer_func *tf = &dc_plane_state->in_shaper_func;struct drm_atomic_state *state = plane_state->state;const struct amdgpu_device *adev =drm_to_adev (colorop->dev); +bool has_3dlut = adev->dm.dc->caps.color.dpp.hw_3d_lut || adev->dm.dc->caps.color.mpc.preblend;const struct drm_device *dev = colorop->dev;const struct drm_color_lut32 *lut3d;uint32_t lut3d_size;
@@ -1722,7 +1723,7 @@ __set_dm_plane_colorop_3dlut(struct drm_plane_state *plane_state, }if (colorop_state && !colorop_state->bypass && colorop->type ==DRM_COLOROP_3D_LUT ) { -if (!adev->dm.dc->caps.color.dpp.hw_3d_lut) { +if (!has_3dlut) {drm_dbg (dev,"3D LUT is not supported by hardware\n" );return -EINVAL ; }
@@ -1875,6 +1876,7 @@ amdgpu_dm_plane_set_colorop_properties(struct drm_plane_state *plane_state,struct drm_colorop *colorop = plane_state->color_pipeline;struct drm_device *dev = plane_state->plane->dev;struct amdgpu_device *adev =drm_to_adev (dev); +bool has_3dlut = adev->dm.dc->caps.color.dpp.hw_3d_lut || adev->dm.dc->caps.color.mpc.preblend;int ret;/* 1D Curve - DEGAM TF */
@@ -1907,7 +1909,7 @@ amdgpu_dm_plane_set_colorop_properties(struct drm_plane_state *plane_state,if (ret)return ret; -if (adev->dm.dc->caps.color.dpp.hw_3d_lut) { +if (has_3dlut) {/* 1D Curve & LUT - SHAPER TF & LUT */ colorop = colorop->next;if (!colorop) {
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c +2 -1
@@ -60,6 +60,7 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_prstruct drm_colorop *ops[MAX_COLOR_PIPELINE_OPS ];struct drm_device *dev = plane->dev;struct amdgpu_device *adev =drm_to_adev (dev); +bool has_3dlut = adev->dm.dc->caps.color.dpp.hw_3d_lut || adev->dm.dc->caps.color.mpc.preblend;int ret;int i =0 ;
@@ -112,7 +113,7 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_pr i++; -if (adev->dm.dc->caps.color.dpp.hw_3d_lut) { +if (has_3dlut) {/* 1D curve - SHAPER TF */ ops[i] =kzalloc (sizeof (*ops[0 ]),GFP_KERNEL );if (!ops[i]) {
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c +8 -8
@@ -765,15 +765,15 @@ int amdgpu_dm_crtc_init(struct amdgpu_display_manager *dm, dm->adev->mode_info.crtcs[crtc_index] = acrtc;/* Don't enable DRM CRTC degamma property for -* 1. Degamma is replaced by color pipeline. -* 2. DCE since it doesn't support programmable degamma anywhere. -* 3. DCN401 since pre-blending degamma LUT doesn't apply to cursor. +* 1. DCE since it doesn't support programmable degamma anywhere. +* 2. DCN401 since pre-blending degamma LUT doesn't apply to cursor. +* Note: DEGAMMA properties are created even if the primary plane has the +* COLOR_PIPELINE property. User space can use either the DEGAMMA properties +* or the COLOR_PIPELINE property. An atomic commit which attempts to enable +* both is rejected. */ -if (plane->color_pipeline_property) - has_degamma = false; -else - has_degamma = dm->adev->dm.dc->caps.color.dpp.dcn_arch && - dm->adev->dm.dc->ctx->dce_version !=DCN_VERSION_4_01 ; + has_degamma = dm->adev->dm.dc->caps.color.dpp.dcn_arch && + dm->adev->dm.dc->ctx->dce_version !=DCN_VERSION_4_01 ;drm_crtc_enable_color_mgmt (&acrtc->base, has_degamma ?MAX_COLOR_LUT_ENTRIES :0 , true,MAX_COLOR_LUT_ENTRIES );
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c +8 -0
@@ -1256,6 +1256,14 @@ static int amdgpu_dm_plane_atomic_check(struct drm_plane *plane,if (ret)return ret; +/* Reject commits that attempt to use both COLOR_PIPELINE and CRTC DEGAMMA_LUT */ +if (new_plane_state->color_pipeline && new_crtc_state->degamma_lut) { +drm_dbg_atomic (plane->dev, +"[PLANE:%d:%s] COLOR_PIPELINE and CRTC DEGAMMA_LUT cannot be enabled simultaneously\n" , + plane->base.id, plane->name); +return -EINVAL ; + } + ret =amdgpu_dm_plane_fill_dc_scaling_info (adev, new_plane_state, &scaling_info);if (ret)return ret;
drivers/gpu/drm/amd/display/dc/core/dc_stream.c +1 -1
@@ -169,7 +169,7 @@ struct dc_stream_state *dc_create_stream_for_sink(if (sink ==NULL )return NULL ; - stream =kzalloc (sizeof (struct dc_stream_state ),GFP_KERNEL ); + stream =kzalloc (sizeof (struct dc_stream_state ),GFP_ATOMIC );if (stream ==NULL ) goto alloc_fail;
drivers/gpu/drm/bridge/synopsys/dw-dp.c +3 -1
@@ -2049,7 +2049,9 @@ struct dw_dp *dw_dp_bind(struct device *dev, struct drm_encoder *encoder, bridge->type = DRM_MODE_CONNECTOR_DisplayPort; bridge->ycbcr_420_allowed = true; -devm_drm_bridge_add (dev, bridge); + ret =devm_drm_bridge_add (dev, bridge); +if (ret) +return ERR_PTR (ret); dp->aux.dev = dev; dp->aux.drm_dev = encoder->dev;
drivers/gpu/drm/drm_client_modeset.c +2 -1
@@ -930,7 +930,8 @@ int drm_client_modeset_probe(struct drm_client_dev *client, unsigned int width,mutex_unlock (&client->modeset_mutex); out:kfree (crtcs); -modes_destroy (dev, modes, connector_count); +if (modes) +modes_destroy (dev, modes, connector_count);kfree (modes);kfree (offsets);kfree (enabled);
drivers/gpu/drm/drm_syncobj.c +2 -2
@@ -900,7 +900,7 @@ drm_syncobj_handle_to_fd_ioctl(struct drm_device *dev, void *data,return drm_syncobj_export_sync_file (file_private, args->handle, point, &args->fd); -if (args->point) +if (point)return -EINVAL ; return drm_syncobj_handle_to_fd(file_private, args->handle,
@@ -934,7 +934,7 @@ drm_syncobj_fd_to_handle_ioctl(struct drm_device *dev, void *data, args->handle,
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/imx/ipuv3/parallel-display.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/vmwgfx/vmwgfx_page_dirty.c +8 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/xe/regs/xe_engine_regs.h +6 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/xe/xe_gsc_proxy.c +35 -8
43 lines not on this page · raw message
drivers/gpu/drm/xe/xe_gt.c +54 -12
66 lines not on this page · raw message
drivers/hid/hid-multitouch.c +38 -5
43 lines not on this page · raw message
drivers/hwmon/macsmc-hwmon.c +27 -26
53 lines not on this page · raw message
drivers/infiniband/hw/ionic/ionic_controlpath.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/infiniband/hw/mthca/mthca_provider.c +3 -2
Lines of this file are not shown. View the raw message.
drivers/net/can/usb/etas_es58x/es58x_core.c +7 -1
Lines of this file are not shown. View the raw message.
drivers/net/can/usb/f81604.c +40 -5
45 lines not on this page · raw message
drivers/net/ethernet/amd/xgbe/xgbe-common.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/amd/xgbe/xgbe-drv.c +0 -10
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/amd/xgbe/xgbe-main.c +0 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/freescale/enetc/enetc.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/google/gve/gve_tx_dqo.c +25 -31
56 lines not on this page · raw message
drivers/net/ethernet/intel/e1000e/defines.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/e1000e/ich8lan.c +9 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_main.c +24 -17
41 lines not on this page · raw message
drivers/net/ethernet/intel/i40e/i40e_trace.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_txrx.c +3 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/iavf/iavf_main.c +16 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_base.c +14 -24
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_common.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_ethtool.c +14 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_idc.c +34 -10
44 lines not on this page · raw message
drivers/net/ethernet/intel/ice/ice_lib.c +10 -5
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_main.c +6 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_txrx.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_xsk.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/idpf/idpf_ethtool.c +0 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/idpf/idpf_txrx.c +4 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/igb/igb_xsk.c +30 -8
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/igc/igc_main.c +24 -10
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/igc/igc_ptp.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/libie/fwlog.c +4 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeon_ep/octep_main.c +28 -12
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeon_ep/octep_rx.c +19 -8
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeon_ep_vf/octep_vf_main.c +28 -10
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeon_ep_vf/octep_vf_rx.c +20 -8
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mediatek/mtk_eth_soc.c +12 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/common.h +0 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c +0 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c +0 -7
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac.h +1 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +47 -42
89 lines not on this page · raw message
drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c +0 -8
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_vlan.c +31 -29
60 lines not on this page · raw message
drivers/net/ethernet/ti/am65-cpsw-nuss.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/ti/icssg/icssg_prueth.c +8 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/marvell/libertas/main.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt76_connac_mac.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7925/mac.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7996/mac.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/rsi/rsi_91x_mac80211.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/pci/controller/dwc/pcie-designware-ep.c +16 -9
Lines of this file are not shown. View the raw message.
drivers/pinctrl/cirrus/pinctrl-cs42l43.c +2 -3
Lines of this file are not shown. View the raw message.
drivers/pinctrl/meson/pinctrl-amlogic-a4.c +69 -1
70 lines not on this page · raw message
drivers/pinctrl/pinconf-generic.c +2 -71
73 lines not on this page · raw message
drivers/pinctrl/pinctrl-equilibrium.c +19 -12
Lines of this file are not shown. View the raw message.
drivers/platform/x86/dell/alienware-wmi-wmax.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/platform/x86/dell/dell-wmi-base.c +6 -0
Lines of this file are not shown. View the raw message.
drivers/platform/x86/dell/dell-wmi-sysman/passwordattr-interface.c +0 -1
Lines of this file are not shown. View the raw message.
drivers/platform/x86/hp/hp-bioscfg/enum-attributes.c +6 -3
Lines of this file are not shown. View the raw message.
drivers/platform/x86/lenovo/thinkpad_acpi.c +4 -2
Lines of this file are not shown. View the raw message.
drivers/usb/gadget/function/f_ncm.c +63 -65
128 lines not on this page · raw message
drivers/usb/gadget/function/u_ether.c +45 -0
45 lines not on this page · raw message
drivers/usb/gadget/function/u_ether_configfs.h +176 -0
176 lines not on this page · raw message
fs/netfs/direct_write.c +212 -16
228 lines not on this page · raw message
fs/netfs/write_issue.c +3 -38
41 lines not on this page · raw message
include/linux/pinctrl/pinconf-generic.h +0 -5
Lines of this file are not shown. View the raw message.
include/linux/uaccess.h +20 -34
54 lines not on this page · raw message
include/net/secure_seq.h +38 -7
45 lines not on this page · raw message
kernel/bpf/devmap.c +38 -9
47 lines not on this page · raw message
kernel/bpf/tnum.c +72 -0
72 lines not on this page · raw message
kernel/bpf/verifier.c +97 -6
103 lines not on this page · raw message
kernel/events/core.c +62 -21
83 lines not on this page · raw message
kernel/sched/fair.c +174 -64
238 lines not on this page · raw message
net/core/secure_seq.c +29 -51
80 lines not on this page · raw message
net/mptcp/pm.c +43 -12
55 lines not on this page · raw message
net/netfilter/nf_tables_api.c +29 -37
66 lines not on this page · raw message
net/netfilter/nft_set_pipapo.c +52 -10
62 lines not on this page · raw message
net/netfilter/nft_set_rbtree.c +15 -64
79 lines not on this page · raw message
net/sched/act_ife.c +44 -49
93 lines not on this page · raw message
sound/hda/codecs/side-codecs/cs35l56_hda.c +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/kunit/kunit_tool_test.py +26 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/arm64/abi/hwcap.c +2 -2
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/prog_tests/reg_bounds.c +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/progs/dmabuf_iter.c +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/progs/exceptions_assert.c +17 -17
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/progs/verifier_scalar_ids.c +42 -14
56 lines not on this page · raw message
tools/testing/selftests/bpf/verifier/precise.c +4 -4
Lines of this file are not shown. View the raw message.
tools/testing/selftests/kselftest_harness.h +5 -2
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/mptcp/mptcp_join.sh +49 -0
49 lines not on this page · raw message
tools/testing/selftests/net/mptcp/simult_flows.sh +7 -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.