Linux 6.18.19
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.18.19 kernel.
All users of the 6.18 kernel series must upgrade.
The updated 6.18.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.18.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/devicetree/bindings/display/msm/qcom,sm8750-mdss.yaml | 2 Documentation/virt/kvm/api.rst | 8 Makefile | 11 arch/arm64/include/asm/pgtable-prot.h | 10 arch/arm64/kvm/hyp/nvhe/mem_protect.c | 2 arch/arm64/kvm/mmu.c | 12 arch/arm64/kvm/vgic/vgic-init.c | 34 - arch/arm64/mm/contpte.c | 53 ++- arch/arm64/mm/mmap.c | 6 arch/parisc/include/asm/pgtable.h | 2 arch/parisc/kernel/head.S | 7 arch/parisc/kernel/setup.c | 20 - arch/powerpc/include/asm/uaccess.h | 2 arch/powerpc/kexec/core.c | 40 +- arch/powerpc/kexec/file_load_64.c | 14 arch/powerpc/net/bpf_jit_comp.c | 30 + arch/powerpc/net/bpf_jit_comp64.c | 101 +++++ arch/powerpc/perf/callchain.c | 5 arch/powerpc/perf/callchain_32.c | 1 arch/powerpc/perf/callchain_64.c | 1 arch/powerpc/platforms/83xx/km83xx.c | 4 arch/powerpc/platforms/pseries/msi.c | 2 arch/s390/include/asm/processor.h | 2 arch/s390/lib/xor.c | 5 arch/s390/mm/pfault.c | 4 arch/x86/include/asm/kvm_host.h | 3 arch/x86/include/uapi/asm/kvm.h | 1 arch/x86/kernel/apic/apic.c | 6 arch/x86/kvm/svm/avic.c | 30 + arch/x86/kvm/svm/svm.c | 9 arch/x86/kvm/vmx/nested.c | 22 + drivers/acpi/osi.c | 13 drivers/acpi/osl.c | 2 drivers/acpi/sleep.c | 8 drivers/android/binder/page_range.rs | 83 +++- drivers/android/binder/process.rs | 3 drivers/android/binder/range_alloc/array.rs | 35 + drivers/android/binder/range_alloc/mod.rs | 4 drivers/android/binder/range_alloc/tree.rs | 18 - drivers/android/binder/thread.rs | 17 drivers/ata/libata-core.c | 2 drivers/base/property.c | 27 - drivers/char/ipmi/ipmi_si_intf.c | 37 +- drivers/cpufreq/intel_pstate.c | 4 drivers/cpuidle/cpuidle.c | 10 drivers/crypto/ccp/sev-dev.c | 10 drivers/cxl/Kconfig | 1 drivers/gpio/gpiolib.c | 8 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 6 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 17 drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 2 drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c | 14 drivers/gpu/drm/amd/amdgpu/mes_v11_0.c | 5 drivers/gpu/drm/amd/amdgpu/mes_v12_0.c | 5 drivers/gpu/drm/amd/amdgpu/vcn_v5_0_0.c | 4 drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c | 1 drivers/gpu/drm/amd/display/dc/hwss/dcn401/dcn401_hwseq.c | 6 drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c | 11 drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c | 6 drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_2_ppt.c | 3 drivers/gpu/drm/bridge/samsung-dsim.c | 25 - drivers/gpu/drm/bridge/ti-sn65dsi83.c | 13 drivers/gpu/drm/bridge/ti-sn65dsi86.c | 118 ++++++ drivers/gpu/drm/gud/gud_drv.c | 54 +-- drivers/gpu/drm/gud/gud_internal.h | 4 drivers/gpu/drm/gud/gud_pipe.c | 54 ++- drivers/gpu/drm/i915/display/intel_alpm.c | 7 drivers/gpu/drm/i915/display/intel_psr.c | 50 ++ drivers/gpu/drm/i915/gem/i915_gem_shmem.c | 12 drivers/gpu/drm/msm/adreno/a2xx_gpummu.c | 2 drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_4_sa8775p.h | 4 drivers/gpu/drm/msm/dsi/dsi_host.c | 43 +- drivers/gpu/drm/nouveau/nouveau_connector.c | 3 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c | 12 drivers/gpu/drm/sitronix/st7586.c | 15 drivers/gpu/drm/xe/xe_sync.c | 24 - drivers/gpu/drm/xe/xe_wa.c | 13 drivers/hwmon/pmbus/q54sj108a2.c | 19 - drivers/i3c/master/dw-i3c-master.c | 4 drivers/i3c/master/mipi-i3c-hci/cmd.h | 1 drivers/i3c/master/mipi-i3c-hci/cmd_v1.c | 2 drivers/i3c/master/mipi-i3c-hci/cmd_v2.c | 2 drivers/i3c/master/mipi-i3c-hci/core.c | 9 drivers/i3c/master/mipi-i3c-hci/dma.c | 96 +++-- drivers/i3c/master/mipi-i3c-hci/hci.h | 2 drivers/i3c/master/mipi-i3c-hci/pio.c | 16 drivers/iio/chemical/bme680_core.c | 2 drivers/iio/chemical/sps30_i2c.c | 2 drivers/iio/chemical/sps30_serial.c | 2 drivers/iio/dac/ds4424.c | 2 drivers/iio/frequency/adf4377.c | 2 drivers/iio/gyro/mpu3050-core.c | 18 - drivers/iio/gyro/mpu3050-i2c.c | 3 drivers/iio/imu/adis.c | 2 drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c | 2 drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c | 4 drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c | 2 drivers/iio/imu/inv_mpu6050/inv_mpu_core.c | 8 drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h | 2 drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c | 5 drivers/iio/industrialio-buffer.c | 6 drivers/iio/light/bh1780.c | 2 drivers/iio/magnetometer/tlv493d.c | 2 drivers/iio/potentiometer/mcp4131.c | 2 drivers/iio/proximity/hx9023s.c | 6 drivers/irqchip/irq-gic-v3-its.c | 4 drivers/media/dvb-core/dvb_net.c | 3 drivers/mmc/host/dw_mmc-rockchip.c | 44 ++ drivers/mmc/host/mmci_qcom_dml.c | 1 drivers/net/bonding/bond_main.c | 153 +++----- drivers/net/caif/caif_serial.c | 3 drivers/net/can/spi/hi311x.c | 5 drivers/net/can/usb/gs_usb.c | 22 - drivers/net/dsa/microchip/ksz_ptp.c | 11 drivers/net/dsa/realtek/rtl8365mb.c | 3 drivers/net/dsa/realtek/rtl8366rb-leds.c | 6 drivers/net/ethernet/amd/xgbe/xgbe-drv.c | 4 drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c | 82 ++++ drivers/net/ethernet/amd/xgbe/xgbe.h | 4 drivers/net/ethernet/arc/emac_main.c | 11 drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 4 drivers/net/ethernet/broadcom/genet/bcmgenet.c | 31 - drivers/net/ethernet/broadcom/genet/bcmgenet.h | 5 drivers/net/ethernet/broadcom/genet/bcmmii.c | 10 drivers/net/ethernet/intel/e1000/e1000_main.c | 2 drivers/net/ethernet/intel/e1000e/netdev.c | 2 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 14 drivers/net/ethernet/intel/iavf/iavf.h | 3 drivers/net/ethernet/intel/iavf/iavf_ethtool.c | 19 - drivers/net/ethernet/intel/iavf/iavf_main.c | 81 +--- drivers/net/ethernet/intel/iavf/iavf_virtchnl.c | 1 drivers/net/ethernet/intel/ice/devlink/devlink.c | 4 drivers/net/ethernet/intel/ice/ice_common.c | 13 drivers/net/ethernet/intel/ice/ice_ethtool.c | 35 - drivers/net/ethernet/intel/ixgbevf/vf.c | 3 drivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c | 6 drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c | 1 drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c | 2 drivers/net/ethernet/mellanox/mlx5/core/en_rx.c | 23 - drivers/net/ethernet/mellanox/mlx5/core/eswitch.c | 7 drivers/net/ethernet/mellanox/mlx5/core/eswitch.h | 2 drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c | 45 +- drivers/net/ethernet/microsoft/mana/gdma_main.c | 1 drivers/net/ethernet/microsoft/mana/mana_en.c | 23 + drivers/net/ethernet/spacemit/k1_emac.c | 19 - drivers/net/ethernet/ti/am65-cpsw-nuss.c | 56 +-- drivers/net/ethernet/ti/am65-cpsw-nuss.h | 2 drivers/net/mctp/mctp-i2c.c | 1 drivers/net/mctp/mctp-usb.c | 3 drivers/net/phy/sfp.c | 8 drivers/net/usb/lan78xx.c | 12 drivers/net/usb/lan78xx.h | 3 drivers/net/usb/qmi_wwan.c | 4 drivers/net/usb/usbnet.c | 7 drivers/nvme/host/pci.c | 8 drivers/pinctrl/pinctrl-cy8c95x0.c | 4 drivers/pmdomain/bcm/bcm2835-power.c | 6 drivers/pmdomain/rockchip/pm-domains.c | 2 drivers/regulator/pca9450-regulator.c | 172 ++++++++- drivers/regulator/pf9453-regulator.c | 2 drivers/remoteproc/mtk_scp.c | 39 ++ drivers/remoteproc/qcom_sysmon.c | 2 drivers/s390/block/dasd_eckd.c | 16 drivers/s390/crypto/zcrypt_ccamisc.c | 12 drivers/s390/crypto/zcrypt_cex4.c | 3 drivers/scsi/hisi_sas/hisi_sas_main.c | 2 drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 2 drivers/scsi/mpi3mr/mpi3mr_fw.c | 34 + drivers/scsi/scsi_scan.c | 8 drivers/scsi/ses.c | 5 drivers/scsi/storvsc_drv.c | 5 drivers/spi/spi-amlogic-spifc-a4.c | 5 drivers/spi/spi-rockchip-sfc.c | 2 drivers/staging/rtl8723bs/core/rtw_ieee80211.c | 15 drivers/staging/rtl8723bs/core/rtw_mlme.c | 5 drivers/staging/sm750fb/sm750.c | 1 drivers/staging/sm750fb/sm750_hw.c | 22 - drivers/ufs/core/ufshcd.c | 11 drivers/usb/class/cdc-acm.c | 5 drivers/usb/class/cdc-acm.h | 1 drivers/usb/class/cdc-wdm.c | 4 drivers/usb/class/usbtmc.c | 6 drivers/usb/core/message.c | 100 ++++- drivers/usb/core/phy.c | 8 drivers/usb/core/quirks.c | 16 drivers/usb/dwc3/dwc3-pci.c | 2 drivers/usb/gadget/function/f_hid.c | 4 drivers/usb/gadget/function/f_mass_storage.c | 12 drivers/usb/gadget/function/f_ncm.c | 146 ++++---- drivers/usb/gadget/function/f_tcm.c | 14 drivers/usb/gadget/function/u_ether.c | 67 +-- drivers/usb/gadget/function/u_ether.h | 56 +-- drivers/usb/gadget/function/u_ether_configfs.h | 176 ---------- drivers/usb/gadget/function/u_ncm.h | 4 drivers/usb/gadget/function/uvc_video.c | 2 drivers/usb/host/xhci-ring.c | 1 drivers/usb/host/xhci.c | 4 drivers/usb/image/mdc800.c | 6 drivers/usb/misc/uss720.c | 2 drivers/usb/misc/yurex.c | 2 drivers/usb/renesas_usbhs/common.c | 9 drivers/usb/roles/class.c | 7 drivers/usb/typec/altmodes/displayport.c | 7 drivers/usb/typec/tcpm/tcpm.c | 2 fs/afs/addr_list.c | 8 fs/btrfs/extent_io.c | 1 fs/btrfs/inode.c | 19 + fs/btrfs/ioctl.c | 24 + fs/btrfs/space-info.c | 5 fs/btrfs/transaction.c | 16 fs/btrfs/uuid-tree.c | 38 ++ fs/btrfs/uuid-tree.h | 2 fs/btrfs/volumes.c | 6 fs/ceph/addr.c | 1 fs/ceph/debugfs.c | 4 fs/ceph/dir.c | 17 fs/ceph/file.c | 4 fs/ceph/inode.c | 2 fs/ceph/mds_client.c | 3 fs/file_attr.c | 2 fs/iomap/ioend.c | 13 fs/nfs/nfs3proc.c | 7 fs/nfsd/nfsctl.c | 2 fs/smb/client/cifsencrypt.c | 3 fs/smb/client/cifsglob.h | 11 fs/smb/client/dir.c | 1 fs/smb/client/file.c | 18 - fs/smb/client/fs_context.c | 2 fs/smb/client/smb2ops.c | 14 fs/smb/client/smb2pdu.c | 5 fs/smb/client/smb2transport.c | 4 fs/smb/server/Kconfig | 1 fs/smb/server/auth.c | 4 fs/smb/server/oplock.c | 35 + fs/smb/server/oplock.h | 5 fs/smb/server/smb2pdu.c | 13 fs/xfs/libxfs/xfs_defer.c | 2 fs/xfs/xfs_bmap_item.c | 2 fs/xfs/xfs_dquot.c | 8 fs/xfs/xfs_log.c | 2 include/kunit/run-in-irq-context.h | 44 +- include/linux/io_uring_types.h | 1 include/linux/irqchip/arm-gic-v3.h | 1 include/linux/kthread.h | 21 + include/linux/migrate.h | 8 include/linux/mm.h | 17 include/linux/mmc/host.h | 9 include/linux/netdevice.h | 32 + include/linux/regulator/pca9450.h | 32 + include/linux/usb.h | 8 include/linux/usb/usbnet.h | 1 include/net/ip6_tunnel.h | 14 include/net/ip_tunnels.h | 7 include/net/page_pool/types.h | 2 include/trace/events/kmem.h | 8 io_uring/eventfd.c | 10 io_uring/io_uring.c | 25 + io_uring/kbuf.c | 13 io_uring/net.c | 2 io_uring/register.c | 11 io_uring/zcrx.c | 5 kernel/bpf/verifier.c | 1 kernel/cgroup/cgroup.c | 1 kernel/exit.c | 6 kernel/fork.c | 2 kernel/kprobes.c | 8 kernel/kthread.c | 41 -- kernel/sched/ext.c | 6 kernel/sched/idle.c | 11 kernel/time/time.c | 2 kernel/trace/bpf_trace.c | 4 kernel/trace/trace.c | 6 kernel/trace/trace_events.c | 58 ++- kernel/workqueue.c | 2 lib/bootconfig.c | 6 lib/crypto/tests/Kconfig | 20 - mm/damon/core.c | 10 mm/filemap.c | 13 mm/kfence/core.c | 29 + mm/memcontrol.c | 2 mm/memory.c | 3 mm/page_alloc.c | 3 mm/slub.c | 54 ++- net/batman-adv/bat_v_elp.c | 10 net/batman-adv/hard-interface.c | 8 net/batman-adv/hard-interface.h | 1 net/ceph/auth.c | 6 net/ceph/messenger_v2.c | 31 + net/ceph/mon_client.c | 6 net/core/dev.h | 35 - net/core/neighbour.c | 3 net/core/page_pool_user.c | 4 net/ipv4/Kconfig | 1 net/ipv4/ip_tunnel_core.c | 15 net/ipv4/nexthop.c | 14 net/ipv4/tcp.c | 3 net/ipv4/tcp_ao.c | 3 net/ipv4/tcp_ipv4.c | 3 net/ipv6/tcp_ipv6.c | 3 net/mac80211/link.c | 2 net/mctp/route.c | 11 net/ncsi/ncsi-aen.c | 3 net/ncsi/ncsi-rsp.c | 16 net/netfilter/nf_tables_api.c | 4 net/netfilter/nfnetlink_cthelper.c | 8 net/netfilter/nfnetlink_queue.c | 4 net/netfilter/nft_chain_filter.c | 2 net/netfilter/nft_set_pipapo.c | 3 net/netfilter/xt_IDLETIMER.c | 6 net/netfilter/xt_dccp.c | 4 net/netfilter/xt_tcpudp.c | 6 net/rxrpc/af_rxrpc.c | 8 net/sched/sch_teql.c | 1 net/shaper/shaper.c | 11 net/sunrpc/xprtrdma/verbs.c | 7 net/tipc/socket.c | 2 rust/kernel/str.rs | 4 sound/core/pcm_native.c | 19 - sound/hda/codecs/realtek/alc269.c | 25 + sound/soc/amd/acp3x-rt5682-max9836.c | 9 sound/soc/amd/yc/acp6x-mach.c | 14 sound/soc/codecs/cs42l43-jack.c | 1 sound/soc/generic/simple-card-utils.c | 12 sound/soc/qcom/qdsp6/q6apm-dai.c | 1 sound/soc/qcom/qdsp6/q6apm-lpass-dais.c | 1 sound/soc/qcom/qdsp6/q6apm.c | 1 sound/soc/soc-core.c | 11 sound/usb/endpoint.c | 1 sound/usb/format.c | 70 +++ sound/usb/mixer_scarlett2.c | 2 sound/usb/quirks.c | 2 tools/objtool/Makefile | 8 tools/perf/builtin-ftrace.c | 9 tools/perf/util/annotate.c | 5 tools/perf/util/disasm.c | 2 tools/perf/util/synthetic-events.c | 5 tools/testing/selftests/filesystems/nsfs/iterate_mntns.c | 25 - 337 files changed, 3073 insertions(+), 1604 deletions(-)
A1RM4X (1):
USB: add QUIRK_NO_BOS for video capture several devices
Abhinav Kumar (1):
drm/msm/dpu: Correct the SA8775P intr_underrun/intr_underrun index
Adrian Hunter (7):
i3c: mipi-i3c-hci: Use ETIMEDOUT instead of ETIME for timeout errors
i3c: mipi-i3c-hci: Factor out DMA mapping from queuing path
i3c: mipi-i3c-hci: Consolidate spinlocks
i3c: mipi-i3c-hci: Restart DMA ring correctly after dequeue abort
i3c: mipi-i3c-hci: Add missing TID field to no-op command descriptor
i3c: mipi-i3c-hci: Fix race in DMA ring dequeue
i3c: mipi-i3c-hci: Correct RING_CTRL_ABORT handling in DMA dequeue
Adrian Ng Ho Yin (1):
i3c: dw-i3c-master: Set SIR_REJECT in DAT on device attach and reattach
Al Viro (1):
unshare: fix unshare_fs() handling
Alan Stern (3):
USB: usbcore: Introduce usb_bulk_msg_killable()
USB: usbtmc: Use usb_bulk_msg_killable() with user-specified timeouts
USB: core: Limit the length of unkillable synchronous timeouts
Alexander Gordeev (1):
s390/pfault: Fix virtual vs physical address confusion
Alexander Potapenko (2):
mm/kfence: fix KASAN hardware tag faults during late enablement mm/kfence: disable KFENCE upon KASAN HW tags enablement
Alexandre Courbot (1):
rust: str: make NullTerminatedFormatter public
Alice Ryhl (3):
rust_binder: check ownership before using vma
rust_binder: avoid reading the written value in offsets array
rust_binder: call set_notification_done() without proc lock
Alok Tiwari (3):
i40e: fix src IP mask checks and memcpy argument names in cloud filter
octeontx2-af: devlink: fix NIX RAS reporter recovery condition
octeontx2-af: devlink: fix NIX RAS reporter to use RAS interrupt status
Alysa Liu (1):
drm/amdgpu: Fix use-after-free race in VM acquire
Andreas Kemnade (1):
iio: imu: inv-mpu9150: fix irq ack preventing irq storms
Andrei-Alexandru Tachici (1):
tracing: Fix enabling multiple events on the kernel command line and bootconfig
Andy Shevchenko (2):
device property: Allow secondary lookup in fwnode_get_next_child_node()
pinctrl: cy8c95x0: Don't miss reading the last bank registers
Antoniu Miclaus (6):
iio: chemical: sps30_serial: fix buffer size in sps30_serial_read_meas()
iio: chemical: sps30_i2c: fix buffer size in sps30_i2c_read_meas()
iio: magnetometer: tlv493d: remove erroneous shift in X-axis data
iio: gyro: mpu3050-core: fix pm_runtime error handling
iio: gyro: mpu3050-i2c: fix pm_runtime error handling
iio: light: bh1780: fix PM runtime leak on error path
Ariel Silver (1):
media: dvb-net: fix OOB access in ULE extension header tables
Artem Lytkin (1):
staging: sm750fb: add missing pci_release_region on error and removal
Ashish Kalra (1):
crypto: ccp - allow callers to use HV-Fixed page API when SEV is disabled
Axel Rasmussen (1):
Revert "ptdesc: remove references to folios from __pagetable_ctor() and pagetable_dtor()"
Azamat Almazbek uulu (1):
ASoC: amd: yc: Add ASUS EXPERTBOOK BM1503CDA to quirk table
Bart Van Assche (1):
btrfs: add missing RCU unlock in error path in try_release_subpage_extent_buffer()
Bartosz Golaszewski (1):
gpiolib: normalize the return value of gc->get() on behalf of buggy drivers
Bastien Curutchet (Schneider Electric) (1):
net: dsa: microchip: Fix error path in PTP IRQ setup
Ben Collins (1):
kexec: Include kernel-end even without crashkernel
Ben Dooks (1):
ACPI: OSL: fix __iomem type on return from acpi_os_map_generic_address()
Bharath SM (1):
smb: client: fix in-place encryption corruption in SMB2_write()
Bjorn Andersson (1):
remoteproc: sysmon: Correct subsys_name_len type in QMI request
Breno Leitao (1):
workqueue: Use POOL_BH instead of WQ_BH when checking pool flags
Calvin Owens (1):
tracing: Fix trace_buf_size= cmdline parameter with sizes >= 2G
Carlos Llamas (1):
rust_binder: fix oneway spam detection
Carlos Maiolino (1):
xfs: fix returned valued from xfs_defer_can_append
Carolina Jubran (1):
net/mlx5: Fix peer miss rules host disabled checks
Casey Connolly (1):
ASoC: detect empty DMI strings
Catalin Marinas (2):
arm64: gcs: Honour mprotect(PROT_NONE) on shadow stack mappings
arm64: mm: Add PTE_DIRTY back to PAGE_KERNEL* to fix kexec/hibernation
Charles Keepax (1):
ASoC: cs42l43: Report insert for exotic peripherals
Chen Ni (3):
perf annotate: Fix hashmap__new() error checking
perf ftrace: Fix hashmap__new() error checking
ASoC: amd: acp3x-rt5682-max9836: Add missing error check for clock acquisition
Cheng-Yang Chou (1):
sched_ext: Remove redundant css_put() in scx_cgroup_init()
Chengfeng Ye (1):
mctp: route: hold key->lock in mctp_flow_prepare_output()
Chintan Vankar (1):
net: ethernet: ti: am65-cpsw-nuss: Fix rx_filter value for PTP support
Chris Spencer (1):
iio: chemical: bme680: Fix measurement wait duration calculation
Christian Brauner (2):
kthread: consolidate kthread exit paths to prevent use-after-free
selftests: fix mntns iteration selftests
Christian Loehle (1):
bpf: drop kthread_exit from noreturn_deny
Christoffer Sandberg (1):
usb/core/quirks: Add Huawei ME906S-device to wakeup quirk
Christophe Leroy (CS GROUP) (1):
powerpc/uaccess: Fix inline assembly for clang build on PPC32
Chuck Lever (1):
perf synthetic-events: Fix stale build ID in module MMAP2 records
Corey Minyard (4):
ipmi:si: Don't block module unload if the BMC is messed up ipmi:si: Use a long timeout when the BMC is misbehaving ipmi:si: Handle waiting messages when BMC failure detected ipmi:si: Fix check for a misbehaving BMC
Cosmin Ratiu (1):
net/mlx5: Fix deadlock between devlink lock and esw->wq
Darrick J. Wong (2):
iomap: reject delalloc mappings during writeback
xfs: fix undersized l_iclog_roundoff values
Dave Airlie (2):
nouveau/gsp: drop WARN_ON in ACPI probes nouveau/dpcd: return EBUSY for aux xfer if the device is asleep
David Arcari (1):
cpufreq: intel_pstate: Fix NULL pointer dereference in update_cpu_qos_request()
David Dull (1):
netfilter: x_tables: guard option walkers against 1-byte tail reads
David Lechner (1):
drm/sitronix/st7586: fix bad pixel data due to byte swap
Dayu Jiang (1):
usb: xhci: Prevent interrupt storm on host controller error (HCE)
Dillon Varone (1):
drm/amd/display: Fallback to boot snapshot for dispclk
Dragos Tatulea (2):
net/mlx5e: RX, Fix XDP multi-buf frag counting for striding RQ net/mlx5e: RX, Fix XDP multi-buf frag counting for legacy RQ
Edward Adam Davis (1):
fs: init flags_valid before calling vfs_fileattr_get
Eric Badger (1):
xprtrdma: Decrement re_receiving on the early exit paths
Eric Biggers (6):
kunit: irq: Ensure timer doesn't fire too frequently net/tcp-ao: Fix MAC comparison to be constant-time
smb: client: Compare MACs in constant time
ksmbd: Compare MACs in constant time
lib/crypto: tests: Depend on library options rather than selecting them net/tcp-md5: Fix MAC comparison to be constant-time
Eric Dumazet (1):
net: prevent NULL deref in ip[6]tunnel_xmit()
Fan Wu (2):
usb: renesas_usbhs: fix use-after-free in ISR during device removal
net: ethernet: arc: emac: quiesce interrupts before requesting IRQ
Felix Gu (3):
spi: amlogic: spifc-a4: Fix DMA mapping error handling
spi: rockchip-sfc: Fix double-free in remove() callback
mmc: mmci: Fix device_node reference leak in of_get_dml_pipe_index()
Filipe Manana (4):
btrfs: fix transaction abort when snapshotting received subvolumes
btrfs: fix transaction abort on file creation due to name hash collision
btrfs: fix transaction abort on set received ioctl due to item overflow
btrfs: abort transaction on failure to update root in the received subvol ioctl
Florian Westphal (1):
netfilter: nf_tables: always walk all pending catchall elements
Franz Schnyder (2):
drm/bridge: ti-sn65dsi86: Enable HPD polling if IRQ is not used
regulator: pf9453: Respect IRQ trigger settings from firmware
Gabor Juhos (1):
usb: core: don't power off roothub PHYs if phy_set_mode() fails
Gal Pressman (1):
net/mlx5e: Fix DMA FIFO desync on error CQE SQ recovery
Geoffrey D. Bennett (1):
ALSA: usb-audio: Improve Focusrite sample rate filtering
Greg Kroah-Hartman (3):
usb: misc: uss720: properly clean up reference in uss720_probe()
staging: rtl8723bs: properly validate the data in rtw_get_ie_ex() Linux 6.18.19
Guenter Roeck (1):
smb/server: Fix another refcount leak in smb2_open()
Haiyue Wang (1):
mctp: i2c: fix skb memory leak in receive path
Hangbin Liu (3):
bonding: do not set usable_slaves for broadcast mode
bonding: handle BOND_LINK_FAIL, BOND_LINK_BACK as valid link states
bonding: use common function to compute the features
Hao Li (1):
memcg: fix slab accounting in refill_obj_stock() trylock path
Harald Freudenberger (1):
s390/zcrypt: Enable AUTOSEL_DOM for CCA serialnr sysfs attribute
Hari Bathini (2):
powerpc64/bpf: fix kfunc call support powerpc64/bpf: fix the address returned by bpf_get_func_ip
Harry Yoo (1):
mm/slab: fix an incorrect check in obj_exts_alloc_size()
Heikki Krogerus (1):
usb: dwc3: pci: add support for the Intel Nova Lake -H
Heiko Carstens (2):
s390/stackleak: Fix __stackleak_poison() inline assembly constraint s390/xor: Fix xor_xc_2() inline assembly constraints
Helge Deller (3):
parisc: Increase initial mapping to 64 MB with KALLSYMS
parisc: Fix initial page table creation for boot
parisc: Check kernel mapping earlier at bootup
Henrique Carvalho (1):
smb: client: fix iface port assignment in parse_server_interfaces
Hristo Venev (1):
ceph: do not skip the first folio of the next object in writeback
Huiwen He (1):
tracing: Fix syscall events activation by ensuring refcount hits zero
Hyunwoo Kim (2):
netfilter: nfnetlink_queue: fix entry leak in bridge verdict error path
netfilter: nfnetlink_cthelper: fix OOB read in nfnl_cthelper_dump_table()
Ilya Dryomov (3):
libceph: reject preamble if control segment is empty
libceph: prevent potential out-of-bounds reads in process_message_header()
libceph: admit message frames only in CEPH_CON_S_OPEN state
J. Neuschäfer (1):
powerpc: 83xx: km83xx: Fix keymile vendor prefix
Jakub Kicinski (1):
page_pool: store detach_time as ktime_t to avoid false-negatives
Jakub Staniszewski (2):
ice: reintroduce retry mechanism for indirect AQ
ice: fix retry for AQ command 0x06EE
Jan Kiszka (1):
scsi: storvsc: Fix scheduling while atomic on PREEMPT_RT
Janusz Krzysztofik (1):
drm/i915: Fix potential overflow of shmem scatterlist length
Jean-Baptiste Maneyrol (2):
iio: imu: inv_icm42600: fix odr switch to the same value
iio: imu: inv_icm42600: fix odr switch when turning buffer off
Jedrzej Jagielski (1):
ixgbevf: fix link setup issue
Jenny Guanni Qu (1):
netfilter: nft_set_pipapo: fix stack out-of-bounds read in pipapo_drop()
Jens Axboe (3):
io_uring/kbuf: check if target buffer list is still legacy on recycle
io_uring: ensure ctx->rings is stable for task work flags manipulation
io_uring/eventfd: use ctx->rings_rcu for flags checkingJian Zhang (1):
net: ncsi: fix skb leak in error paths
Jiasheng Jiang (1):
usb: gadget: f_tcm: Fix NULL pointer dereferences in nexus handling
Jiayuan Chen (1):
bonding: fix type confusion in bond_setup_by_slave()
Jim Mattson (1):
KVM: x86: Introduce KVM_X86_QUIRK_VMCS12_ALLOW_FREEZE_IN_SMM
Jiri Olsa (1):
bpf: Fix kprobe_multi cookies access in show_fdinfo callback
Johan Hovold (1):
net: mctp: fix device leak on probe failure
John Keeping (1):
usb: gadget: f_hid: fix SuperSpeed descriptors
John Ripple (1):
drm/bridge: ti-sn65dsi86: Add support for DisplayPort mode with HPD
Josh Law (3):
lib/bootconfig: fix off-by-one in xbc_verify_tree() unclosed brace error lib/bootconfig: fix snprintf truncation check in xbc_node_compose_key_after() lib/bootconfig: check bounds before writing in __xbc_open_brace()
Jouni Högander (2):
drm/i915/alpm: ALPM disable fixes drm/i915/psr: Repeat Selective Update area alignment
Junxiao Bi (1):
scsi: core: Fix error handling for scsi_alloc_sdev()
Junzhong Pan (1):
usb: gadget: uvc: fix interval_duration calculation
Kalesh Singh (1):
mm/tracing: rss_stat: ensure curr is false from kthread context
Keith Busch (1):
cxl/acpi: Fix CXL_ACPI and CXL_PMEM Kconfig tristate mismatch
Krzysztof Kozlowski (1):
dt-bindings: display/msm: qcom,sm8750-mdss: Fix model typo
Kuen-Han Tsai (8):
usb: gadget: f_ncm: Fix atomic context locking issue
usb: legacy: ncm: Fix NPE in gncm_bind
Revert "usb: gadget: f_ncm: Fix atomic context locking issue" Revert "usb: legacy: ncm: Fix NPE in gncm_bind"
Revert "usb: gadget: u_ether: Add auto-cleanup helper for freeing net_device" Revert "usb: gadget: f_ncm: align net_device lifecycle with bind/unbind" Revert "usb: gadget: u_ether: add gether_opts for config caching"
usb: gadget: f_ncm: Fix net_device lifecycle with device_move
Kuniyuki Iwashima (1):
nfsd: Fix cred ref leak in nfsd_nl_listener_set_doit().
Laurent Vivier (1):
qmi_wwan: allow max_mtu above hard_mtu to control rx_urb_size
Long Li (3):
net: mana: Ring doorbell at 4 CQ wraparounds
xfs: fix integer overflow in bmap intent sort comparator
xfs: ensure dquot item is deleted from AIL only after log shutdown
Luca Ceresoli (2):
drm/bridge: ti-sn65dsi83: fix CHA_DSI_CLK_RANGE rounding drm/bridge: ti-sn65dsi83: halve horizontal syncs for dual LVDS output
Luka Gejak (1):
staging: rtl8723bs: fix potential out-of-bounds read in rtw_restruct_wmm_ie
Lukas Schmid (1):
iio: potentiometer: mcp4131: fix double application of wiper shift
Marc Kleine-Budde (1):
can: gs_usb: gs_can_open(): always configure bitrates before starting device
Marc Zyngier (5):
KVM: arm64: Fix protected mode handling of pages larger than 4kB
KVM: arm64: pkvm: Fallback to level-3 mapping on host stage-2 fault
usb: cdc-acm: Restore CAP_BRK functionnality to CH343 irqchip/gic-v3-its: Limit number of per-device MSIs to the range the ITS supports
KVM: arm64: Eagerly init vgic dist/redist on vgic creation
Marek Behún (1):
net: dsa: realtek: Fix LED group port bit for non-zero LED group
Mario Limonciello (4):
drm/amd: Disable MES LR compute W/A
drm/amd: Set num IP blocks to 0 if discovery fails drm/amd: Fix NULL pointer dereference in device cleanup drm/amd: Fix a few more NULL pointer dereference in device cleanup
Marios Makassikis (1):
smb: server: fix use-after-free in smb2_open()
Mark Harmstone (1):
btrfs: fix chunk map leak in btrfs_map_block() after btrfs_chunk_map_num_copies()
Martijn de Gouw (1):
regulator: pca9450: Add support for setting debounce settings
Masami Hiramatsu (Google) (2):
kprobes: avoid crash when rmmod/insmod after ftrace killed
kprobes: Remove unneeded warnings from __arm_kprobe_ftrace()
Matt Roper (1):
drm/xe/xe2_hpg: Correct implementation of Wa_16025250150
Matt Vollrath (1):
e1000/e1000e: Fix leak in DMA error cleanup
Max Kellermann (3):
ceph: add a bunch of missing ceph_path_info initializers
ceph: fix i_nlink underrun during async unlink
ceph: fix memory leaks in ceph_mdsc_build_path()
Maximilian Pezzullo (1):
ata: libata-core: Disable LPM on ST1000DM010-2EP102
Maíra Canal (1):
pmdomain: bcm: bcm2835-power: Fix broken reset status read
Mehul Rao (3):
ALSA: pcm: fix use-after-free on linked stream runtime in snd_pcm_drain()
tipc: fix divide-by-zero in tipc_sk_filter_connect()
net: nexthop: fix percpu use-after-free in remove_nh_grp_entry
Miaoqian Lin (1):
rxrpc, afs: Fix missing error pointer check after rxrpc_kernel_lookup_peer()
Mieczyslaw Nalewaj (1):
net: dsa: realtek: rtl8365mb: remove ifOutDiscards from rx_packets
Miguel Ojeda (1):
rust: kbuild: allow unused_features
Nam Cao (1):
powerpc/pseries: Correct MSI allocation tracking
Namjae Jeon (2):
ksmbd: fix use-after-free in smb_lazy_parent_lease_break_close()
ksmbd: fix use-after-free by using call_rcu() for oplock_info
Nathan Chancellor (1):
kbuild: Leave objtool binary around with 'make clean'
Naveen N Rao (2):
KVM: SVM: Limit AVIC physical max index based on configured max_vcpu_ids
KVM: SVM: Add a helper to look up the max physical ID for AVIC
Nicolai Buchwitz (1):
net: bcmgenet: fix broken EEE by converting to phylib-managed state
Nikolay Aleksandrov (1):
drivers: net: ice: fix devlink parameters get without irdma
Nuno Sá (1):
iio: buffer: Fix wait_queue not being removed
Oleksij Rempel (5):
net: usb: lan78xx: fix silent drop of packets with checksum errors
net: usb: lan78xx: fix TX byte statistics for small packets
net: usb: lan78xx: fix WARN in __netif_napi_del_locked on disconnect
net: usb: lan78xx: skip LTM configuration for LAN7850
iio: dac: ds4424: reject -128 RAW value
Oliver Neukum (3):
usb: yurex: fix race in probe
usb: class: cdc-wdm: fix reordering issue in read code path
usb: mdc800: handle signal and read racing
Osama Abdelkader (1):
drm/bridge: samsung-dsim: Fix memory leak in error path
Patrisious Haddad (1):
net/mlx5: Fix crash when moving to switchdev mode
Paul Moses (1):
net-shapers: don't free reply skb after genlmsg_reply()
Paulo Alcantara (1):
smb: client: fix atomic open with O_DIRECT & O_SYNC
Pavan Chebbi (1):
bnxt_en: Fix RSS table size check when changing ethtool channels
Pavel Begunkov (2):
io_uring/zcrx: use READ_ONCE with user shared RQEs io_uring/net: reject SEND_VECTORIZED when unsupported
Pedro Falcato (1):
ata: libata-core: Add BRIDGE_OK quirk for QEMU drives
Peng Fan (2):
regulator: pca9450: Correct interrupt type
regulator: pca9450: Correct probed name for PCA9452
Penghe Geng (1):
mmc: core: Avoid bitfield RMW for claim/retune flags
Pengyu Luo (2):
drm/msm/dsi: fix hdisplay calculation when programming dsi registers drm/msm/dsi: fix pclk rate calculation for bonded dsi
Perry Yuan (1):
drm/amdgpu: ensure no_hw_access is visible before MMIO
Peter Collingbourne (1):
perf disasm: Fix off-by-one bug in outside check
Peter Wang (1):
scsi: ufs: core: Fix possible NULL pointer dereference in ufshcd_add_command_trace()
Petr Oros (2):
iavf: fix PTP use-after-free during reset
iavf: fix incorrect reset handling in callbacks
Phil Sutter (1):
netfilter: nf_tables: Fix for duplicate device in netdev hooks
Philip Yang (1):
drm/amdkfd: Unreserve bo if queue update failed
Piotr Jaroszynski (1):
arm64: contpte: fix set_access_flags() no-op check for SMMU/ATS faults
Piotr Mazek (1):
ACPI: PM: Save NVS memory on Lenovo G70-35
Qingye Zhao (1):
cgroup: fix race between task migration and iteration
RD Babiera (1):
usb: typec: altmode/displayport: set displayport signaling rate in configure message
Radu Sabau (1):
iio: imu: adis: Fix NULL pointer dereference in adis_init
Rafael J. Wysocki (1):
sched: idle: Make skipping governor callbacks more consistent
Raju Rangoju (2):
amd-xgbe: fix link status handling in xgbe_rx_adaptation
amd-xgbe: prevent CRC errors during RX adaptation with AN disabled
Ramanathan Choodamani (1):
wifi: mac80211: set default WMM parameters on all links
Ranjan Kumar (1):
scsi: mpi3mr: Add NULL checks when resetting request and reply queues
Raphael Zimmer (2):
libceph: Fix potential out-of-bounds access in ceph_handle_auth_reply()
libceph: Use u32 for non-negative values in ceph_monmap_decode()
Raul Pazemecxas De Andrade (1):
mm/damon/core: clear walk_control on inactive context in damos_walk()
Ravi Hothi (1):
ASoC: qcom: qdsp6: Fix q6apm remove ordering during ADSP stop and start
Ricardo B. Marlière (1):
net: bonding: Fix nd_tbl NULL dereference when IPv6 is disabled
Roberto Bergantinos Corpas (1):
nfs: return EISDIR on nfs3_proc_create if d_alias is a dir
Ruben Wauters (1):
drm/gud: rearrange gud_probe() to prepare for function splitting
Sabrina Dubroca (1):
neighbour: restore protocol != 0 check in pneigh update
Sanman Pradhan (1):
hwmon: (pmbus/q54sj108a2) fix stack overflow in debugfs read
Sascha Bischoff (1):
KVM: arm64: gic: Set vgic_model before initing private IRQs
Sean Christopherson (2):
KVM: SVM: Initialize AVIC VMCB fields if AVIC is enabled with in-kernel APIC
KVM: SVM: Set/clear CR8 write interception when AVIC is (de)activated
Sean Rhodes (1):
ALSA: hda/realtek: Fix speaker pop on Star Labs StarFighter
Sen Wang (1):
ASoC: simple-card-utils: fix graph_util_is_ports0() for DT overlays
SeongJae Park (1):
mm/damon/core: disallow non-power of two min_region_sz
SeungJu Cheon (1):
iio: frequency: adf4377: Fix duplicated soft reset mask
Seungjin Bae (1):
usb: gadget: f_mass_storage: Fix potential integer overflow in check_command_size_in_blocks()
Shashank Balaji (1):
x86/apic: Disable x2apic on resume if the kernel expects so
Shawn Lin (3):
pmdomain: rockchip: Fix PD_VCODEC for RK3588
mmc: dw_mmc-rockchip: Add memory clock auto-gating support
mmc: dw_mmc-rockchip: Fix runtime PM support for internal phase support
Shenghao Yang (1):
drm/gud: fix NULL crtc dereference on display disable
Shiraz Saleem (1):
net/mana: Null service_wq on setup error to prevent double destroy
Shuangpeng Bai (1):
serial: caif: hold tty->link reference in ldisc_open and ser_release
Shuicheng Lin (1):
drm/xe/sync: Cleanup partially initialized sync on parse failure
Shyam Prasad N (1):
cifs: make default value of retrans as zero
Sofia Schneider (1):
ACPI: OSI: Add DMI quirk for Acer Aspire One D255
Sourabh Jain (2):
powerpc/kexec/core: use big-endian types for crash variables powerpc/crash: adjust the elfcorehdr size
Stefan Haberland (2):
s390/dasd: Move quiesce state with pprc swap s390/dasd: Copy detected format information to secondary device
Steven Rostedt (1):
time/jiffies: Mark jiffies_64_to_clock_t() notrace
Sun YangKai (1):
btrfs: hold space_info->lock when clearing periodic reclaim ready
Sungwoo Kim (2):
nvme-pci: Fix slab-out-of-bounds in nvme_dbbuf_set
nvme-pci: Fix race bug in nvme_poll_irqdisable()
Sunil Khatri (2):
drm/amdgpu: add upper bound check on user inputs in signal ioctl drm/amdgpu: add upper bound check on user inputs in wait ioctl
Sven Eckelmann (1):
batman-adv: Avoid double-rtnl_lock ELP metric worker
Takashi Iwai (3):
ALSA: usb-audio: Avoid implicit feedback mode on DIYINHK USB Audio 2.0
ALSA: usb-audio: Check max frame size for implicit feedback mode, too
ALSA: usb-audio: Check endpoint numbers at parsing Scarlett2 mixer interfaces
Tejun Heo (1):
sched_ext: Fix enqueue_task_scx() truncation of upper enqueue flags
Thomas Fourier (1):
drm/msm: Fix dma_free_attrs() buffer size
Thomas Hellström (1):
mm: Fix a hmm_range_fault() livelock / starvation problem
Tomas Henzl (1):
scsi: ses: Fix devices attaching to different hosts
Tvrtko Ursulin (1):
drm/amdgpu/userq: Fix reference leak in amdgpu_userq_wait_ioctl
Tzung-Bi Shih (1):
remoteproc: mediatek: Unprepare SCP clock during system suspend
Vadim Fedorenko (1):
net: ti: am65-cpsw: move hw timestamping to ndo callback
Vasily Gorbik (1):
s390/xor: Fix xor_xc_5() inline assembly
Viktor Malik (1):
powerpc, perf: Check that current->mm is alive before getting user callchain
Vivian Wang (2):
net: spacemit: Fix error handling in emac_alloc_rx_desc_buffers()
net: spacemit: Fix error handling in emac_tx_mem_map()
Vlastimil Babka (1):
slab: distinguish lock and trylock for sheaf_flush_main()
Vyacheslav Vahnenko (1):
USB: ezcap401 needs USB_QUIRK_NO_BOS to function on 10gbs usb speed
Wang Shuaiwei (1):
scsi: ufs: core: Fix SError in ufshcd_rtc_work() during UFS suspend
Weiming Shi (2):
net/sched: teql: fix NULL pointer dereference in iptunnel_xmit on TEQL slave xmit
net: add xmit recursion limit to tunnel xmit functions
Wenyuan Li (1):
can: hi311x: hi3110_open(): add check for hi3110_power_enable() return value
Won Jung (1):
scsi: ufs: core: Reset urgent_bkops_lvl to allow runtime PM power mode
Xingui Yang (1):
scsi: hisi_sas: Fix NULL pointer exception during user_scan()
Xu Yang (2):
usb: roles: get usb role switch from parent only for usb-b-connector Revert "tcpm: allow looking for role_sw device in the main node"
Yang Wang (3):
drm/amd/pm: add missing od setting PP_OD_FEATURE_ZERO_FAN_BIT for smu v13 drm/amd/pm: add missing od setting PP_OD_FEATURE_ZERO_FAN_BIT for smu v14 drm/amd/pm: remove invalid gpu_metrics.energy_accumulator on smu v13.0.x
Yasin Lee (2):
iio: proximity: hx9023s: fix assignment order for __counted_by
iio: proximity: hx9023s: Protect against division by zero in set_samp_freq
Yuan Tan (1):
netfilter: xt_IDLETIMER: reject rev0 reuse of ALARM timer labels
Zhang Heng (1):
ASoC: amd: yc: Add DMI quirk for ASUS EXPERTBOOK PM1503CDA
Zilin Guan (1):
usb: xhci: Fix memory leak in xhci_disable_slot()
Ziyi Guo (1):
usb: image: mdc800: kill download URB on timeout
matteo.cotifava (2):
ASoC: soc-core: drop delayed_work_pending() check before flush
ASoC: soc-core: flush delayed work before removing DAIs and widgets
sguttula (1):
drm/amdgpu/vcn5: Add SMU dpm interface type
wangshuaiwei (1):
scsi: ufs: core: Fix shift out of bounds when MAXQ=32
Álvaro Fernández Rojas (1):
net: sfp: improve Huawei MA5671a fixup
Greg Kroah-Hartman
maintainerDocumentation/devicetree/bindings/display/msm/qcom,sm8750-mdss.yaml +1 -1
@@ -10,7 +10,7 @@ maintainers: - Krzysztof Kozlowski <[email protected]> description: - SM8650 MSM Mobile Display Subsystem(MDSS), which encapsulates sub-blocks like + SM8750 MSM Mobile Display Subsystem(MDSS), which encapsulates sub-blocks like DPU display controller, DSI and DP interfaces etc. $ref: /schemas/display/msm/mdss-common.yaml#
Documentation/virt/kvm/api.rst +8 -0
@@ -8403,6 +8403,14 @@ KVM_X86_QUIRK_IGNORE_GUEST_PAT By default, on Intel platforms, KVM ignores guest software, for example if it does not expose a bochs graphics device (which is known to have had a buggy driver). + +KVM_X86_QUIRK_VMCS12_ALLOW_FREEZE_IN_SMM By default, KVM relaxes the consistency + check for GUEST_IA32_DEBUGCTL in vmcs12 + to allow FREEZE_IN_SMM to be set. When + this quirk is disabled, KVM requires this + bit to be cleared. Note that the vmcs02 + bit is still completely controlled by the + host, regardless of the quirk setting. =================================== ============================================ 7.32 KVM_CAP_MAX_VCPU_ID
Makefile +6 -5
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 18 -SUBLEVEL = 18 +SUBLEVEL = 19 EXTRAVERSION = NAME = Baby Opossum Posse
@@ -473,6 +473,7 @@ KBUILD_USERLDFLAGS := $(USERLDFLAGS) export rust_common_flags := --edition=2021 \ -Zbinary_dep_depinfo=y \ -Astable_features \ + -Aunused_features \ -Dnon_ascii_idents \ -Dunsafe_op_in_unsafe_fn \ -Wmissing_docs \
@@ -1440,13 +1441,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
@@ -1623,7 +1624,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/arm64/include/asm/pgtable-prot.h +5 -5
@@ -50,11 +50,11 @@#define _PAGE_DEFAULT (_PROT_DEFAULT | PTE_ATTRINDX(MT_NORMAL)) -#define _PAGE_KERNEL (PROT_NORMAL) -#define _PAGE_KERNEL_RO ((PROT_NORMAL & ~PTE_WRITE) | PTE_RDONLY) -#define _PAGE_KERNEL_ROX ((PROT_NORMAL & ~(PTE_WRITE | PTE_PXN)) | PTE_RDONLY) -#define _PAGE_KERNEL_EXEC (PROT_NORMAL & ~PTE_PXN) -#define _PAGE_KERNEL_EXEC_CONT ((PROT_NORMAL & ~PTE_PXN) | PTE_CONT) +#define _PAGE_KERNEL (PROT_NORMAL | PTE_DIRTY) +#define _PAGE_KERNEL_RO ((PROT_NORMAL & ~PTE_WRITE) | PTE_RDONLY | PTE_DIRTY) +#define _PAGE_KERNEL_ROX ((PROT_NORMAL & ~(PTE_WRITE | PTE_PXN)) | PTE_RDONLY | PTE_DIRTY) +#define _PAGE_KERNEL_EXEC ((PROT_NORMAL & ~PTE_PXN) | PTE_DIRTY) +#define _PAGE_KERNEL_EXEC_CONT ((PROT_NORMAL & ~PTE_PXN) | PTE_CONT | PTE_DIRTY)#define _PAGE_SHARED (_PAGE_DEFAULT | PTE_USER | PTE_RDONLY | PTE_NG | PTE_PXN | PTE_UXN | PTE_WRITE)#define _PAGE_SHARED_EXEC (_PAGE_DEFAULT | PTE_USER | PTE_RDONLY | PTE_NG | PTE_PXN | PTE_WRITE)
arch/arm64/kvm/hyp/nvhe/mem_protect.c +1 -1
@@ -516,7 +516,7 @@ static int host_stage2_adjust_range(u64 addr, struct kvm_mem_range *range) granule =kvm_granule_size (level); cur.start =ALIGN_DOWN (addr, granule); cur.end = cur.start + granule; -if (!range_included (&cur, range)) +if (!range_included (&cur, range) && level <KVM_PGTABLE_LAST_LEVEL )continue ; *range = cur;return 0 ;
arch/arm64/kvm/mmu.c +5 -7
@@ -1712,14 +1712,12 @@ static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa, }/* -* Both the canonical IPA and fault IPA must be hugepage-aligned to -* ensure we find the right PFN and lay down the mapping in the right -* place. +* Both the canonical IPA and fault IPA must be aligned to the +* mapping size to ensure we find the right PFN and lay down the +* mapping in the right place. */ -if (vma_pagesize ==PMD_SIZE || vma_pagesize ==PUD_SIZE ) { - fault_ipa &= ~(vma_pagesize -1 ); - ipa &= ~(vma_pagesize -1 ); - } + fault_ipa =ALIGN_DOWN (fault_ipa, vma_pagesize); + ipa =ALIGN_DOWN (ipa, vma_pagesize); gfn = ipa >>PAGE_SHIFT ; mte_allowed =kvm_vma_mte_allowed (vma);
arch/arm64/kvm/vgic/vgic-init.c +17 -17
@@ -140,26 +140,9 @@ int kvm_vgic_create(struct kvm *kvm, u32 type) goto out_unlock; } -kvm_for_each_vcpu (i, vcpu, kvm) { - ret =vgic_allocate_private_irqs_locked (vcpu, type); -if (ret) -break ; - } - -if (ret) { -kvm_for_each_vcpu (i, vcpu, kvm) { -struct vgic_cpu *vgic_cpu = &vcpu->arch.vgic_cpu; -kfree (vgic_cpu->private_irqs); - vgic_cpu->private_irqs =NULL ; - } - - goto out_unlock; - } - kvm->arch.vgic.in_kernel = true; kvm->arch.vgic.vgic_model = type; kvm->arch.vgic.implementation_rev =KVM_VGIC_IMP_REV_LATEST ; - kvm->arch.vgic.vgic_dist_base =VGIC_ADDR_UNDEF ; aa64pfr0 =kvm_read_vm_id_reg (kvm,SYS_ID_AA64PFR0_EL1 ) & ~ID_AA64PFR0_EL1_GIC ;
@@ -176,6 +159,23 @@ int kvm_vgic_create(struct kvm *kvm, u32 type)kvm_set_vm_id_reg (kvm,SYS_ID_AA64PFR0_EL1 , aa64pfr0);kvm_set_vm_id_reg (kvm,SYS_ID_PFR1_EL1 , pfr1); +kvm_for_each_vcpu (i, vcpu, kvm) { + ret =vgic_allocate_private_irqs_locked (vcpu, type); +if (ret) +break ; + } + +if (ret) { +kvm_for_each_vcpu (i, vcpu, kvm) { +struct vgic_cpu *vgic_cpu = &vcpu->arch.vgic_cpu; +kfree (vgic_cpu->private_irqs); + vgic_cpu->private_irqs =NULL ; + } + + kvm->arch.vgic.vgic_model =0 ; + goto out_unlock; + } +if (type ==KVM_DEV_TYPE_ARM_VGIC_V3 ) kvm->arch.vgic.nassgicap =system_supports_direct_sgis ();
arch/arm64/mm/contpte.c +49 -4
68 lines not on this page · raw message
arch/arm64/mm/mmap.c +5 -1
@@ -91,7 +91,11 @@ 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 = gcs_page_prot; +/* Honour mprotect(PROT_NONE) on shadow stack mappings */ +if (vm_flags &VM_ACCESS_FLAGS ) + prot = gcs_page_prot; +else + prot =pgprot_val (protection_map[VM_NONE ]); }else { prot =pgprot_val (protection_map[vm_flags & (VM_READ |VM_WRITE |VM_EXEC |VM_SHARED )]);
arch/parisc/include/asm/pgtable.h +1 -1
@@ -85,7 +85,7 @@ extern void __update_cache(pte_t pte);printk ("%s:%d: bad pgd %08lx.\n" , __FILE__, __LINE__, (unsigned long )pgd_val (e)) /* This is the size of the initially mapped kernel memory */ -#if defined(CONFIG_64BIT ) +#if defined(CONFIG_64BIT ) || defined(CONFIG_KALLSYMS )#define KERNEL_INITIAL_ORDER 26/* 1<<26 = 64MB */ #else #define KERNEL_INITIAL_ORDER 25/* 1<<25 = 32MB */
arch/parisc/kernel/head.S +6 -1
@@ -56,6 +56,7 @@ ENTRY(parisc_kernel_start) .import __bss_start,data .import __bss_stop,data + .import __end,data load32 PA(__bss_start),%r3 load32 PA(__bss_stop),%r4
@@ -149,7 +150,11 @@ $cpu_ok: * everything ... it will get remapped correctly later */ ldo 0+_PAGE_KERNEL_RWX(%r0),%r3 /* Hardwired 0 phys addr start */ load32 (1<<(KERNEL_INITIAL_ORDER-PAGE_SHIFT)),%r11 /* PFN count */ - load32 PA(pg0),%r1 + load32 PA(_end),%r1 + SHRREG %r1,PAGE_SHIFT,%r1 /* %r1 is PFN count for _end symbol */ + cmpb,<<,n %r11,%r1,1f + copy %r1,%r11 /* %r1 PFN count smaller than %r11 */ +1: load32 PA(pg0),%r1 $pgt_fill_loop: STREGM %r3,ASM_PTE_ENTRY_SIZE(%r1)
arch/parisc/kernel/setup.c +12 -8
@@ -120,14 +120,6 @@ void __init setup_arch(char **cmdline_p)#endif printk (KERN_CONT ".\n" ); -/* -* Check if initial kernel page mappings are sufficient. -* panic early if not, else we may access kernel functions -* and variables which can't be reached. -*/ -if (__pa ((unsigned long ) &_end) >=KERNEL_INITIAL_SIZE ) -panic ("KERNEL_INITIAL_ORDER too small!" ); -#ifdef CONFIG_64BIT if (parisc_narrow_firmware) {printk (KERN_INFO "Kernel is using PDC in 32-bit mode.\n" );
@@ -279,6 +271,18 @@ void __init start_parisc(void)int ret, cpunum;struct pdc_coproc_cfg coproc_cfg; +/* +* Check if initial kernel page mapping is sufficient. +* Print warning if not, because we may access kernel functions and +* variables which can't be reached yet through the initial mappings. +* Note that the panic() and printk() functions are not functional +* yet, so we need to use direct iodc() firmware calls instead. +*/ +const char warn1[] ="CRITICAL: Kernel may crash because " +"KERNEL_INITIAL_ORDER is too small.\n" ; +if (__pa ((unsigned long ) &_end) >=KERNEL_INITIAL_SIZE ) +pdc_iodc_print (warn1,sizeof (warn1) -1 ); +/* check QEMU/SeaBIOS marker in PAGE0 */ running_on_qemu = (memcmp (&PAGE0 ->pad0,"SeaBIOS" ,8 ) ==0 );
arch/powerpc/include/asm/uaccess.h +1 -1
@@ -253,7 +253,7 @@ __gus_failed: \".section .fixup,\"ax\"\n" \"4: li %0,%3\n" \" li %1,0\n" \ -" li %1+1,0\n" \ +" li %L1,0\n" \" b 3b\n" \".previous\n" \EX_TABLE (1b ,4b ) \
arch/powerpc/kexec/core.c +22 -18
@@ -22,6 +22,9 @@#include <asm/setup.h> #include <asm/firmware.h> +#define cpu_to_be_ulong __PASTE(cpu_to_be, BITS_PER_LONG) +#define __be_word __PASTE(__be, BITS_PER_LONG) +#ifdef CONFIG_CRASH_DUMP void machine_crash_shutdown (struct pt_regs *regs) {
@@ -136,37 +139,28 @@ int __init overlaps_crashkernel(unsigned long start, unsigned long size) }/* Values we need to export to the second kernel via the device tree. */ -static phys_addr_t kernel_end; -static phys_addr_t crashk_base; -static phys_addr_t crashk_size; -static unsigned long long mem_limit; - -static struct property kernel_end_prop = { - .name ="linux,kernel-end" , - .length =sizeof (phys_addr_t), - .value = &kernel_end, -}; +static __be_word crashk_base; +static __be_word crashk_size; +static __be_word mem_limit;static struct property crashk_base_prop = { .name ="linux,crashkernel-base" , - .length =sizeof (phys_addr_t), + .length =sizeof (__be_word), .value = &crashk_base };static struct property crashk_size_prop = { .name ="linux,crashkernel-size" , - .length =sizeof (phys_addr_t), + .length =sizeof (__be_word), .value = &crashk_size, };static struct property memory_limit_prop = { .name ="linux,memory-limit" , - .length =sizeof (unsigned long long ), + .length =sizeof (__be_word), .value = &mem_limit, }; -#define cpu_to_be_ulong __PASTE(cpu_to_be, BITS_PER_LONG) -static void __init export_crashk_values (struct device_node *node) {/* There might be existing crash kernel properties, but we can't
@@ -190,6 +184,15 @@ static void __init export_crashk_values(struct device_node *node) mem_limit =cpu_to_be_ulong (memory_limit); of_update_property(node, &memory_limit_prop); } +#endif /* CONFIG_CRASH_RESERVE */ + +static __be_word kernel_end; + +static struct property kernel_end_prop = { + .name ="linux,kernel-end" , + .length =sizeof (__be_word), + .value = &kernel_end, +};static int __init kexec_setup (void ) {
@@ -200,16 +203,17 @@ static int __init kexec_setup(void)return -ENOENT ;/* remove any stale properties so ours can be found */ -of_remove_property (node,of_find_property (node, kernel_end_prop.name,NULL )); +of_remove_property (node,of_find_property (node, kernel_end_prop.name, +NULL ));/* information needed by userspace when using default_machine_kexec */ kernel_end =cpu_to_be_ulong (__pa (_end));of_add_property (node, &kernel_end_prop); +#ifdef CONFIG_CRASH_RESERVE export_crashk_values (node); - +#endif of_node_put (node);return 0 ; }late_initcall (kexec_setup); -#endif /* CONFIG_CRASH_RESERVE */
arch/powerpc/kexec/file_load_64.c +13 -1
@@ -450,6 +450,11 @@ static int load_elfcorehdr_segment(struct kimage *image, struct kexec_buf *kbuf) kbuf->buffer = headers; kbuf->mem =KEXEC_BUF_MEM_UNKNOWN ; kbuf->bufsz = headers_sz; + +/* +* Account for extra space required to accommodate additional memory +* ranges in elfcorehdr due to memory hotplug events. +*/ kbuf->memsz = headers_sz +kdump_extra_elfcorehdr_size (cmem); kbuf->top_down = false;
@@ -460,7 +465,14 @@ static int load_elfcorehdr_segment(struct kimage *image, struct kexec_buf *kbuf) } image->elf_load_addr = kbuf->mem; - image->elf_headers_sz = headers_sz; + +/* +* If CONFIG_CRASH_HOTPLUG is enabled, the elfcorehdr kexec segment +* memsz can be larger than bufsz. Always initialize elf_headers_sz +* with memsz. This ensures the correct size is reserved for elfcorehdr +* memory in the FDT prepared for kdump. +*/ + image->elf_headers_sz = kbuf->memsz; image->elf_headers = headers; out:kfree (cmem);
arch/powerpc/net/bpf_jit_comp.c +20 -10
@@ -437,7 +437,7 @@ void bpf_jit_free(struct bpf_prog *fp)bool bpf_jit_supports_kfunc_call (void ) { -return true; +return IS_ENABLED (CONFIG_PPC64 ); }bool bpf_jit_supports_arena (void )
@@ -722,9 +722,9 @@ static int __arch_prepare_bpf_trampoline(struct bpf_tramp_image *im, void *rw_im* retval_off [ return value ] * [ reg argN ] * [ ... ] -* regs_off [ reg_arg1 ] prog ctx context -* nregs_off [ args count ] -* ip_off [ traced function ] +* regs_off [ reg_arg1 ] prog_ctx +* nregs_off [ args count ] ((u64 *)prog_ctx)[-1] +* ip_off [ traced function ] ((u64 *)prog_ctx)[-2] * [ ... ] * run_ctx_off [ bpf_tramp_run_ctx ] * [ reg argN ]
@@ -824,7 +824,7 @@ static int __arch_prepare_bpf_trampoline(struct bpf_tramp_image *im, void *rw_imbpf_trampoline_save_args (image, ctx, func_frame_offset, nr_regs, regs_off); -/* Save our return address */ +/* Save our LR/return address */ EMIT (PPC_RAW_MFLR (_R3));if (IS_ENABLED (CONFIG_PPC_FTRACE_OUT_OF_LINE ))EMIT (PPC_RAW_STL (_R3, _R1, alt_lr_off));
@@ -832,24 +832,34 @@ static int __arch_prepare_bpf_trampoline(struct bpf_tramp_image *im, void *rw_imEMIT (PPC_RAW_STL (_R3, _R1, bpf_frame_size +PPC_LR_STKOFF ));/* -* Save ip address of the traced function. -* We could recover this from LR, but we will need to address for OOL trampoline, -* and optional GEP area. +* Derive IP address of the traced function. +* In case of CONFIG_PPC_FTRACE_OUT_OF_LINE or BPF program, LR points to the instruction +* after the 'bl' instruction in the OOL stub. Refer to ftrace_init_ool_stub() and +* bpf_arch_text_poke() for OOL stub of kernel functions and bpf programs respectively. +* Relevant stub sequence: +* +* bl <tramp> +* LR (R3) => mtlr r0 +* b <func_addr+4> +* +* Recover kernel function/bpf program address from the unconditional +* branch instruction at the end of OOL stub. */ if (IS_ENABLED (CONFIG_PPC_FTRACE_OUT_OF_LINE ) || flags &BPF_TRAMP_F_IP_ARG ) {EMIT (PPC_RAW_LWZ (_R4, _R3,4 ));EMIT (PPC_RAW_SLWI (_R4, _R4,6 ));EMIT (PPC_RAW_SRAWI (_R4, _R4,6 ));EMIT (PPC_RAW_ADD (_R3, _R3, _R4)); -EMIT (PPC_RAW_ADDI (_R3, _R3,4 )); }if (flags &BPF_TRAMP_F_IP_ARG )EMIT (PPC_RAW_STL (_R3, _R1, ip_off)); -if (IS_ENABLED (CONFIG_PPC_FTRACE_OUT_OF_LINE )) +if (IS_ENABLED (CONFIG_PPC_FTRACE_OUT_OF_LINE )) {/* Fake our LR for unwind */ +EMIT (PPC_RAW_ADDI (_R3, _R3,4 ));EMIT (PPC_RAW_STL (_R3, _R1, bpf_frame_size +PPC_LR_STKOFF )); + }/* Save function arg count -- see bpf_get_func_arg_cnt() */ EMIT (PPC_RAW_LI (_R3, nr_regs));
arch/powerpc/net/bpf_jit_comp64.c +93 -8
119 lines not on this page · raw message
arch/powerpc/perf/callchain.c +5 -0
@@ -103,6 +103,11 @@ perf_callchain_kernel(struct perf_callchain_entry_ctx *entry, struct pt_regs *revoid perf_callchain_user (struct perf_callchain_entry_ctx *entry,struct pt_regs *regs) { +perf_callchain_store (entry,perf_arch_instruction_pointer (regs)); + +if (!current->mm) +return ; +if (!is_32bit_task ())perf_callchain_user_64 (entry, regs);else
arch/powerpc/perf/callchain_32.c +0 -1
@@ -142,7 +142,6 @@ void perf_callchain_user_32(struct perf_callchain_entry_ctx *entry, next_ip =perf_arch_instruction_pointer (regs); lr = regs->link; sp = regs->gpr[1 ]; -perf_callchain_store (entry, next_ip);while (entry->nr < entry->max_stack) { fp = (unsigned int __user *) (unsigned long ) sp;
arch/powerpc/perf/callchain_64.c +0 -1
@@ -77,7 +77,6 @@ void perf_callchain_user_64(struct perf_callchain_entry_ctx *entry, next_ip =perf_arch_instruction_pointer (regs); lr = regs->link; sp = regs->gpr[1 ]; -perf_callchain_store (entry, next_ip);while (entry->nr < entry->max_stack) { fp = (unsigned long __user *) sp;
arch/powerpc/platforms/83xx/km83xx.c +2 -2
@@ -155,8 +155,8 @@ machine_device_initcall(mpc83xx_km, mpc83xx_declare_of_platform_devices);/* list of the supported boards */ static char *board[]__initdata = { -"Keymile,KMETER1" , -"Keymile,kmpbec8321" , +"keymile,KMETER1" , +"keymile,kmpbec8321" ,NULL };
arch/powerpc/platforms/pseries/msi.c +1 -1
@@ -605,7 +605,7 @@ static int pseries_irq_domain_alloc(struct irq_domain *domain, unsigned int virq &pseries_msi_irq_chip, pseries_dev); } - pseries_dev->msi_used++; + pseries_dev->msi_used += nr_irqs;return 0 ; out:
arch/s390/include/asm/processor.h +1 -1
@@ -164,7 +164,7 @@ static __always_inline void __stackleak_poison(unsigned long erase_low," j 4f\n" "3: mvc 8(1,%[addr]),0(%[addr])\n" "4:" - : [addr] "+&a" (erase_low), [count] "+&d" (count), [tmp] "=&a" (tmp) + : [addr] "+&a" (erase_low), [count] "+&a" (count), [tmp] "=&a" (tmp) : [poison] "d" (poison) : "memory", "cc" );
arch/s390/lib/xor.c +2 -3
@@ -28,8 +28,8 @@ static void xor_xc_2(unsigned long bytes, unsigned long * __restrict p1," j 3f\n" "2: xc 0(1,%1),0(%2)\n" "3:" - : : "d" (bytes), "a" (p1), "a" (p2) - : "0", "cc", "memory"); + : "+d" (bytes), "+a" (p1), "+a" (p2) + : : "0", "cc", "memory"); } static void xor_xc_3(unsigned long bytes, unsigned long * __restrict p1,
@@ -96,7 +96,6 @@ static void xor_xc_5(unsigned long bytes, unsigned long * __restrict p1, const unsigned long * __restrict p5) { asmvolatile ( -" larl 1,2f\n" " aghi %0,-1\n" " jm 6f\n" " srlg 0,%0,8\n"
arch/s390/mm/pfault.c +2 -2
@@ -62,7 +62,7 @@ int __pfault_init(void)"0: nopr %%r7\n" EX_TABLE (0b ,0b ) : [rc] "+d" (rc) - : [refbk] "a" (&pfault_init_refbk), "m" (pfault_init_refbk) + : [refbk] "a" (virt_to_phys(&pfault_init_refbk)), "m" (pfault_init_refbk) : "cc"); return rc; }
@@ -84,7 +84,7 @@ void __pfault_fini(void)"0: nopr %%r7\n" EX_TABLE (0b ,0b ) : - : [refbk] "a" (&pfault_fini_refbk), "m" (pfault_fini_refbk) + : [refbk] "a" (virt_to_phys(&pfault_fini_refbk)), "m" (pfault_fini_refbk) : "cc"); }
arch/x86/include/asm/kvm_host.h +2 -1
@@ -2473,7 +2473,8 @@ int memslot_rmap_alloc(struct kvm_memory_slot *slot, unsigned long npages); KVM_X86_QUIRK_MWAIT_NEVER_UD_FAULTS | \ KVM_X86_QUIRK_SLOT_ZAP_ALL | \ KVM_X86_QUIRK_STUFF_FEATURE_MSRS | \ - KVM_X86_QUIRK_IGNORE_GUEST_PAT) + KVM_X86_QUIRK_IGNORE_GUEST_PAT | \ + KVM_X86_QUIRK_VMCS12_ALLOW_FREEZE_IN_SMM)#define KVM_X86_CONDITIONAL_QUIRKS \ (KVM_X86_QUIRK_CD_NW_CLEARED | \
arch/x86/include/uapi/asm/kvm.h +1 -0
@@ -476,6 +476,7 @@ struct kvm_sync_regs {#define KVM_X86_QUIRK_SLOT_ZAP_ALL (1 << 7)#define KVM_X86_QUIRK_STUFF_FEATURE_MSRS (1 << 8)#define KVM_X86_QUIRK_IGNORE_GUEST_PAT (1 << 9) +#define KVM_X86_QUIRK_VMCS12_ALLOW_FREEZE_IN_SMM (1 << 10)#define KVM_STATE_NESTED_FORMAT_VMX 0#define KVM_STATE_NESTED_FORMAT_SVM 1
arch/x86/kernel/apic/apic.c +6 -0
@@ -1890,6 +1890,7 @@ void __init check_x2apic(void)static inline void try_to_enable_x2apic (int remap_mode) { }static inline void __x2apic_enable (void ) { } +static inline void __x2apic_disable (void ) { }#endif /* !CONFIG_X86_X2APIC */ void __init enable_IR_x2apic (void )
@@ -2452,6 +2453,11 @@ static void lapic_resume(void)if (x2apic_mode) {__x2apic_enable (); }else { +if (x2apic_enabled ()) { +pr_warn_once ("x2apic: re-enabled by firmware during resume. Disabling\n" ); +__x2apic_disable (); + } +/* * Make sure the APICBASE points to the right address *
arch/x86/kvm/svm/avic.c +25 -5
@@ -158,15 +158,34 @@ static void avic_set_x2apic_msr_interception(struct vcpu_svm *svm, svm->x2avic_msrs_intercepted = intercept; } +static u32 avic_get_max_physical_id (struct kvm_vcpu *vcpu) +{ +u32 arch_max; + +if (x2avic_enabled &&apic_x2apic_mode (vcpu->arch.apic)) + arch_max =X2AVIC_MAX_PHYSICAL_ID ; +else + arch_max =AVIC_MAX_PHYSICAL_ID ; + +/* +* Despite its name, KVM_CAP_MAX_VCPU_ID represents the maximum APIC ID +* plus one, so the max possible APIC ID is one less than that. +*/ +return min (vcpu->kvm->arch.max_vcpu_ids -1 , arch_max); +} +static void avic_activate_vmcb (struct vcpu_svm *svm) {struct vmcb *vmcb = svm->vmcb01.ptr; +struct kvm_vcpu *vcpu = &svm->vcpu; vmcb->control.int_ctl &= ~(AVIC_ENABLE_MASK |X2APIC_MODE_MASK ); vmcb->control.avic_physical_id &= ~AVIC_PHYSICAL_MAX_INDEX_MASK ; - + vmcb->control.avic_physical_id |=avic_get_max_physical_id (vcpu); vmcb->control.int_ctl |=AVIC_ENABLE_MASK ; +svm_clr_intercept (svm,INTERCEPT_CR8_WRITE ); +/* * Note: KVM supports hybrid-AVIC mode, where KVM emulates x2APIC MSR * accesses, while interrupt injection to a running vCPU can be
@@ -176,7 +195,7 @@ static void avic_activate_vmcb(struct vcpu_svm *svm)*/ if (x2avic_enabled &&apic_x2apic_mode (svm->vcpu.arch.apic)) { vmcb->control.int_ctl |=X2APIC_MODE_MASK ; - vmcb->control.avic_physical_id |=X2AVIC_MAX_PHYSICAL_ID ; +/* Disabling MSR intercept for x2APIC registers */ avic_set_x2apic_msr_interception (svm, false); }else {
@@ -186,8 +205,6 @@ static void avic_activate_vmcb(struct vcpu_svm *svm)*/ kvm_make_request (KVM_REQ_TLB_FLUSH_CURRENT , &svm->vcpu); -/* For xAVIC and hybrid-xAVIC modes */ - vmcb->control.avic_physical_id |=AVIC_MAX_PHYSICAL_ID ;/* Enabling MSR intercept for x2APIC registers */ avic_set_x2apic_msr_interception (svm, true); }
@@ -200,6 +217,9 @@ static void avic_deactivate_vmcb(struct vcpu_svm *svm) vmcb->control.int_ctl &= ~(AVIC_ENABLE_MASK |X2APIC_MODE_MASK ); vmcb->control.avic_physical_id &= ~AVIC_PHYSICAL_MAX_INDEX_MASK ; +if (!sev_es_guest (svm->vcpu.kvm)) +svm_set_intercept (svm,INTERCEPT_CR8_WRITE ); +/* * If running nested and the guest uses its own MSR bitmap, there * is no need to update L0's msr bitmap
@@ -321,7 +341,7 @@ void avic_init_vmcb(struct vcpu_svm *svm, struct vmcb *vmcb) vmcb->control.avic_physical_id =__sme_set (__pa (kvm_svm->avic_physical_id_table)); vmcb->control.avic_vapic_bar =APIC_DEFAULT_PHYS_BASE ; -if (kvm_apicv_activated (svm->vcpu.kvm)) +if (kvm_vcpu_apicv_active (&svm->vcpu))avic_activate_vmcb (svm);else avic_deactivate_vmcb (svm);
arch/x86/kvm/svm/svm.c +5 -4
@@ -1032,8 +1032,7 @@ static void init_vmcb(struct kvm_vcpu *vcpu, bool init_event)svm_set_intercept (svm,INTERCEPT_CR0_WRITE );svm_set_intercept (svm,INTERCEPT_CR3_WRITE );svm_set_intercept (svm,INTERCEPT_CR4_WRITE ); -if (!kvm_vcpu_apicv_active (vcpu)) -svm_set_intercept (svm,INTERCEPT_CR8_WRITE ); +svm_set_intercept (svm,INTERCEPT_CR8_WRITE );set_dr_intercepts (svm);
@@ -1141,7 +1140,7 @@ static void init_vmcb(struct kvm_vcpu *vcpu, bool init_event)svm_clr_intercept (svm,INTERCEPT_PAUSE ); } -if (kvm_vcpu_apicv_active (vcpu)) +if (enable_apicv &&irqchip_in_kernel (vcpu->kvm))avic_init_vmcb (svm, vmcb);if (vnmi)
@@ -2598,9 +2597,11 @@ static int dr_interception(struct kvm_vcpu *vcpu)static int cr8_write_interception (struct kvm_vcpu *vcpu) { +u8 cr8_prev =kvm_get_cr8 (vcpu);int r; -u8 cr8_prev =kvm_get_cr8 (vcpu); +WARN_ON_ONCE (kvm_vcpu_apicv_active (vcpu)); +/* instruction emulation calls kvm_set_cr8() */ r =cr_interception (vcpu);if (lapic_in_kernel (vcpu))
arch/x86/kvm/vmx/nested.c +18 -4
@@ -3262,10 +3262,24 @@ static int nested_vmx_check_guest_state(struct kvm_vcpu *vcpu,if (CC (vmcs12->guest_cr4 &X86_CR4_CET && !(vmcs12->guest_cr0 &X86_CR0_WP )))return -EINVAL ; -if ((vmcs12->vm_entry_controls &VM_ENTRY_LOAD_DEBUG_CONTROLS ) && - (CC (!kvm_dr7_valid (vmcs12->guest_dr7)) || -CC (!vmx_is_valid_debugctl (vcpu, vmcs12->guest_ia32_debugctl, false)))) -return -EINVAL ; +if (vmcs12->vm_entry_controls &VM_ENTRY_LOAD_DEBUG_CONTROLS ) { +u64 debugctl = vmcs12->guest_ia32_debugctl; + +/* +* FREEZE_IN_SMM is not virtualized, but allow L1 to set it in +* vmcs12's DEBUGCTL under a quirk for backwards compatibility. +* Note that the quirk only relaxes the consistency check. The +* vmcc02 bit is still under the control of the host. In +* particular, if a host administrator decides to clear the bit, +* then L1 has no say in the matter. +*/ +if (kvm_check_has_quirk (vcpu->kvm,KVM_X86_QUIRK_VMCS12_ALLOW_FREEZE_IN_SMM )) + debugctl &= ~DEBUGCTLMSR_FREEZE_IN_SMM ; + +if (CC (!kvm_dr7_valid (vmcs12->guest_dr7)) || +CC (!vmx_is_valid_debugctl (vcpu, debugctl, false))) +return -EINVAL ; + }if ((vmcs12->vm_entry_controls &VM_ENTRY_LOAD_IA32_PAT ) &&CC (!kvm_pat_valid (vmcs12->guest_ia32_pat)))
drivers/acpi/osi.c +13 -0
@@ -389,6 +389,19 @@ static const struct dmi_system_id acpi_osi_dmi_table[] __initconst = { }, }, +/* +* The screen backlight turns off during udev device creation +* when returning true for _OSI("Windows 2009") +*/ + { + .callback = dmi_disable_osi_win7, + .ident = "Acer Aspire One D255", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Acer"), + DMI_MATCH(DMI_PRODUCT_NAME, "AOD255"), + }, + }, + /* * The wireless hotkey does not work on those machines when * returning true for _OSI("Windows 2012")
drivers/acpi/osl.c +1 -1
@@ -1681,7 +1681,7 @@ acpi_status __init acpi_os_initialize(void)* Use acpi_os_map_generic_address to pre-map the reset * register if it's in system memory. */ -void *rv; +void __iomem *rv; rv =acpi_os_map_generic_address (&acpi_gbl_FADT.reset_register); pr_debug("%s: Reset register mapping %s\n", __func__,
drivers/acpi/sleep.c +8 -0
@@ -386,6 +386,14 @@ static const struct dmi_system_id acpisleep_dmi_table[] __initconst = { DMI_MATCH(DMI_PRODUCT_NAME, "80E1"), }, }, + { + .callback = init_nvs_save_s3, + .ident = "Lenovo G70-35", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_NAME, "80Q5"), + }, + },/* * ThinkPad X1 Tablet(2016) cannot do suspend-to-idle using * the Low Power S0 Idle firmware interface (see
drivers/android/binder/page_range.rs +63 -20
118 lines not on this page · raw message
drivers/android/binder/process.rs +2 -1
@@ -1259,7 +1259,8 @@ pub(crate) fn clear_death(&self, reader: &mut UserSliceReader, thread: &Thread) }pub (crate )fn dead_binder_done (&self, cookie:u64 , thread: &Thread ) { -if let Some (death) = self.inner.lock ().pull_delivered_death (cookie) { +let death = self.inner.lock ().pull_delivered_death (cookie); +if let Some (death) = death { death.set_notification_done (thread); } }
drivers/android/binder/range_alloc/array.rs +33 -2
@@ -118,7 +118,7 @@ pub(crate) fn reserve_new( size: usize, is_oneway: bool, pid: Pid, - ) -> Result<usize> { + ) -> Result<(usize, bool)> {// Compute new value of free_oneway_space, which is set only on success. let new_oneway_space =if is_oneway {match self.free_oneway_space.checked_sub (size) {
@@ -146,7 +146,38 @@ pub(crate) fn reserve_new( .ok() .unwrap (); -Ok (insert_at_offset) +// Start detecting spammers once we have less than 20% +// of async space left (which is less than 10% of total +// buffer size). +// +// (This will short-circuit, so `low_oneway_space` is +// only called when necessary.) +let oneway_spam_detected = + is_oneway && new_oneway_space < self.size /10 && self.low_oneway_space (pid); + +Ok ((insert_at_offset, oneway_spam_detected)) + } + +/// Find the amount and size of buffers allocated by the current caller. +/// +/// The idea is that once we cross the threshold, whoever is responsible +/// for the low async space is likely to try to send another async transaction, +/// and at some point we'll catch them in the act. This is more efficient +/// than keeping a map per pid. +fn low_oneway_space (&self, calling_pid:Pid ) ->bool { +let mut total_alloc_size =0 ; +let mut num_buffers =0 ; + +// Warn if this pid has more than 50 transactions, or more than 50% of +// async space (which is 25% of total buffer size). Oneway spam is only +// detected when the threshold is exceeded. +for rangein &self.ranges { +if range.state.is_oneway () && range.state.pid () == calling_pid { + total_alloc_size += range.size; + num_buffers +=1 ; + } + } + num_buffers >50 || total_alloc_size > self.size /4 }pub (crate )fn reservation_abort (&mut self, offset:usize ) ->Result <FreedRange > {
drivers/android/binder/range_alloc/mod.rs +2 -2
@@ -188,11 +188,11 @@ pub(crate) fn reserve_new(&mut self, mut args: ReserveNewArgs<T>) -> Result<Rese self.reserve_new (args) } Impl::Array(array) => { - let offset = + let (offset, oneway_spam_detected) = array.reserve_new(args.debug_id, args.size, args.is_oneway, args.pid)?; Ok(ReserveNew::Success(ReserveNewSuccess { offset, - oneway_spam_detected: false, + oneway_spam_detected, _empty_array_alloc: args.empty_array_alloc, _new_tree_alloc: args.new_tree_alloc, _tree_alloc: args.tree_alloc,
drivers/android/binder/range_alloc/tree.rs +9 -9
@@ -164,15 +164,6 @@ pub(crate) fn reserve_new( self.free_oneway_space }; -// Start detecting spammers once we have less than 20% -// of async space left (which is less than 10% of total -// buffer size). -// -// (This will short-circut, so `low_oneway_space` is -// only called when necessary.) -let oneway_spam_detected = - is_oneway && new_oneway_space < self.size /10 && self.low_oneway_space (pid); -let (found_size, found_off, tree_node, free_tree_node) =match self.find_best_match (size) {None => {pr_warn! ("ENOSPC from range_alloc.reserve_new - size: {}" , size);
@@ -203,6 +194,15 @@ pub(crate) fn reserve_new( self.free_tree.insert (free_tree_node); } +// Start detecting spammers once we have less than 20% +// of async space left (which is less than 10% of total +// buffer size). +// +// (This will short-circuit, so `low_oneway_space` is +// only called when necessary.) +let oneway_spam_detected = + is_oneway && new_oneway_space < self.size /10 && self.low_oneway_space (pid); +Ok ((found_off, oneway_spam_detected)) }
drivers/android/binder/thread.rs +6 -11
@@ -1018,12 +1018,9 @@ pub(crate) fn copy_transaction_data(// Copy offsets if there are any. if offsets_size >0 { - { -let mut reader = -UserSlice ::new (UserPtr ::from_addr (trd_data_ptr.offsetsas _ ), offsets_size) - .reader (); - alloc.copy_into (&mut reader, aligned_data_size, offsets_size)?; - } +let mut offsets_reader = +UserSlice ::new (UserPtr ::from_addr (trd_data_ptr.offsetsas _ ), offsets_size) + .reader ();let offsets_start = aligned_data_size;let offsets_end = aligned_data_size + offsets_size;
@@ -1044,11 +1041,9 @@ pub(crate) fn copy_transaction_data( .step_by(size_of::<u64>()) .enumerate() { -let offset:usize = view - .alloc - .read ::<u64 >(index_offset)? - .try_into () - .map_err (|_|EINVAL )?; +let offset = offsets_reader.read ::<u64 >()?; + view.alloc.write (index_offset, &offset)?; +let offset:usize = offset.try_into ().map_err (|_|EINVAL )?;if offset < end_of_previous_object || !is_aligned (offset,size_of ::<u32 >()) {pr_warn! ("Got transaction with invalid offset." );
drivers/ata/libata-core.c +2 -0
@@ -4157,6 +4157,7 @@ static const struct ata_dev_quirks_entry __ata_dev_quirks[] = { ATA_QUIRK_FIRMWARE_WARN },/* Seagate disks with LPM issues */ + { "ST1000DM010-2EP102", NULL, ATA_QUIRK_NOLPM }, { "ST2000DM008-2FR102", NULL, ATA_QUIRK_NOLPM },/* drives which fail FPDMA_AA activation (some may freeze afterwards)
@@ -4199,6 +4200,7 @@ static const struct ata_dev_quirks_entry __ata_dev_quirks[] = {/* Devices that do not need bridging limits applied */ { "MTRON MSP-SATA*", NULL, ATA_QUIRK_BRIDGE_OK }, { "BUFFALO HD-QSU2/R5", NULL, ATA_QUIRK_BRIDGE_OK }, + { "QEMU HARDDISK", "2.5+", ATA_QUIRK_BRIDGE_OK },/* Devices which aren't very happy with higher link speeds */ { "WD My Book", NULL, ATA_QUIRK_1_5_GBPS },
drivers/base/property.c +13 -14
@@ -797,7 +797,18 @@ struct fwnode_handle * fwnode_get_next_child_node(const struct fwnode_handle *fwnode, struct fwnode_handle *child) { - return fwnode_call_ptr_op(fwnode, get_next_child_node, child); + struct fwnode_handle *next; + +if (IS_ERR_OR_NULL (fwnode)) +return NULL ; + +/* Try to find a child in primary fwnode */ + next =fwnode_call_ptr_op (fwnode, get_next_child_node, child); +if (next) +return next; + +/* When no more children in primary, continue with secondary */ +return fwnode_call_ptr_op (fwnode->secondary, get_next_child_node, child); }EXPORT_SYMBOL_GPL (fwnode_get_next_child_node);
@@ -841,19 +852,7 @@ EXPORT_SYMBOL_GPL(fwnode_get_next_available_child_node);struct fwnode_handle *device_get_next_child_node (const struct device *dev,struct fwnode_handle *child) { -const struct fwnode_handle *fwnode =dev_fwnode (dev); -struct fwnode_handle *next; - -if (IS_ERR_OR_NULL (fwnode)) -return NULL ; - -/* Try to find a child in primary fwnode */ - next =fwnode_get_next_child_node (fwnode, child); -if (next) -return next; - -/* When no more children in primary, continue with secondary */ -return fwnode_get_next_child_node (fwnode->secondary, child); +return fwnode_get_next_child_node (dev_fwnode (dev), child); }EXPORT_SYMBOL_GPL (device_get_next_child_node);
drivers/char/ipmi/ipmi_si_intf.c +24 -13
@@ -810,6 +810,12 @@ static enum si_sm_result smi_event_handler(struct smi_info *smi_info,*/ return_hosed_msg (smi_info,IPMI_BUS_ERR ); } +if (smi_info->waiting_msg !=NULL ) { +/* Also handle if there was a message waiting. */ + smi_info->curr_msg = smi_info->waiting_msg; + smi_info->waiting_msg =NULL ; +return_hosed_msg (smi_info,IPMI_BUS_ERR ); + }smi_mod_timer (smi_info, jiffies +SI_TIMEOUT_HOSED ); goto out; }
@@ -919,9 +925,14 @@ static int sender(void *send_info, struct ipmi_smi_msg *msg) {struct smi_info *smi_info = send_info;unsigned long flags; +int rv =IPMI_CC_NO_ERROR ;debug_timestamp (smi_info,"Enqueue" ); +/* +* Check here for run to completion mode. A check under lock is +* later. +*/ if (smi_info->si_state ==SI_HOSED )return IPMI_BUS_ERR ;
@@ -935,18 +946,15 @@ static int sender(void *send_info, struct ipmi_smi_msg *msg) }spin_lock_irqsave (&smi_info->si_lock, flags); -/* -* The following two lines don't need to be under the lock for -* the lock's sake, but they do need SMP memory barriers to -* avoid getting things out of order. We are already claiming -* the lock, anyway, so just do it under the lock to avoid the -* ordering problem. -*/ -BUG_ON (smi_info->waiting_msg); - smi_info->waiting_msg = msg; -check_start_timer_thread (smi_info); +if (smi_info->si_state ==SI_HOSED ) { + rv =IPMI_BUS_ERR ; + }else { +BUG_ON (smi_info->waiting_msg); + smi_info->waiting_msg = msg; +check_start_timer_thread (smi_info); + }spin_unlock_irqrestore (&smi_info->si_lock, flags); -return IPMI_CC_NO_ERROR ; +return rv; }static void set_run_to_completion (void *send_info,bool i_run_to_completion)
@@ -1114,7 +1122,9 @@ static void smi_timeout(struct timer_list *t) * SI_USEC_PER_JIFFY); smi_result =smi_event_handler (smi_info, time_diff); -if ((smi_info->io.irq) && (!smi_info->interrupt_disabled)) { +if (smi_info->si_state ==SI_HOSED ) { + timeout = jiffies +SI_TIMEOUT_HOSED ; + }else if ((smi_info->io.irq) && (!smi_info->interrupt_disabled)) {/* Running with interrupts, only do long timeouts. */ timeout = jiffies +SI_TIMEOUT_JIFFIES ;smi_inc_stat (smi_info, long_timeouts);
@@ -2227,7 +2237,8 @@ static void wait_msg_processed(struct smi_info *smi_info)unsigned long jiffies_now;long time_diff; -while (smi_info->curr_msg || (smi_info->si_state !=SI_NORMAL )) { +while (smi_info->si_state !=SI_HOSED && + (smi_info->curr_msg || (smi_info->si_state !=SI_NORMAL ))) { jiffies_now = jiffies; time_diff = (((long )jiffies_now - (long )smi_info->last_timeout_jiffies) *SI_USEC_PER_JIFFY );
drivers/cpufreq/intel_pstate.c +3 -1
@@ -1663,8 +1663,8 @@ static ssize_t store_no_turbo(struct kobject *a, struct kobj_attribute *b,static void update_cpu_qos_request (int cpu,enum freq_qos_req_type type) {struct cpudata *cpudata = all_cpu_data[cpu]; -unsigned int freq = cpudata->pstate.turbo_freq;struct freq_qos_request *req; +unsigned int freq; struct cpufreq_policy *policy __free(put_cpufreq_policy) = cpufreq_cpu_get(cpu);if (!policy)
@@ -1677,6 +1677,8 @@ static void update_cpu_qos_request(int cpu, enum freq_qos_req_type type)if (hwp_active)intel_pstate_get_hwp_cap (cpudata); + freq = cpudata->pstate.turbo_freq; +if (type ==FREQ_QOS_MIN ) { freq =DIV_ROUND_UP (freq * global.min_perf_pct,100 ); }else {
drivers/cpuidle/cpuidle.c +0 -10
@@ -357,16 +357,6 @@ noinstr int cpuidle_enter_state(struct cpuidle_device *dev,int cpuidle_select (struct cpuidle_driver *drv,struct cpuidle_device *dev,bool *stop_tick) { -/* -* If there is only a single idle state (or none), there is nothing -* meaningful for the governor to choose. Skip the governor and -* always use state 0 with the tick running. -*/ -if (drv->state_count <=1 ) { - *stop_tick = false; -return 0 ; - } -return cpuidle_curr_governor->select (drv, dev, stop_tick); }
drivers/crypto/ccp/sev-dev.c +4 -6
@@ -1109,15 +1109,12 @@ struct page *snp_alloc_hv_fixed_pages(unsigned int num_2mb_pages) {struct psp_device *psp_master =psp_get_master_device ();struct snp_hv_fixed_pages_entry *entry; -struct sev_device *sev;unsigned int order;struct page *page; -if (!psp_master || !psp_master->sev_data) +if (!psp_master)return NULL ; - sev = psp_master->sev_data; - order =get_order (PMD_SIZE * num_2mb_pages);/*
@@ -1130,7 +1127,8 @@ struct page *snp_alloc_hv_fixed_pages(unsigned int num_2mb_pages)* This API uses SNP_INIT_EX to transition allocated pages to HV_Fixed * page state, fail if SNP is already initialized. */ -if (sev->snp_initialized) +if (psp_master->sev_data && + ((struct sev_device *)psp_master->sev_data)->snp_initialized)return NULL ;/* Re-use freed pages that match the request */
@@ -1166,7 +1164,7 @@ void snp_free_hv_fixed_pages(struct page *page)struct psp_device *psp_master =psp_get_master_device ();struct snp_hv_fixed_pages_entry *entry, *nentry; -if (!psp_master || !psp_master->sev_data) +if (!psp_master)return ;/*
drivers/cxl/Kconfig +1 -0
@@ -58,6 +58,7 @@ config CXL_ACPI tristate "CXL ACPI: Platform Support" depends on ACPI depends on ACPI_NUMA + depends on CXL_PMEM || !CXL_PMEM default CXL_BUS select ACPI_TABLE_LIB select ACPI_HMAT
drivers/gpio/gpiolib.c +6 -2
@@ -3249,8 +3249,12 @@ static int gpiochip_get(struct gpio_chip *gc, unsigned int offset)/* Make sure this is called after checking for gc->get(). */ ret = gc->get (gc, offset); -if (ret >1 ) - ret = -EBADE ; +if (ret >1 ) { +gpiochip_warn (gc, +"invalid return value from gc->get(): %d, consider fixing the driver\n" , + ret); + ret = !!ret; + }return ret; }
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +5 -1
@@ -1421,7 +1421,10 @@ static int init_kfd_vm(struct amdgpu_vm *vm, void **process_info, *process_info = info; } - vm->process_info = *process_info; +if (cmpxchg (&vm->process_info,NULL , *process_info) !=NULL ) { + ret = -EINVAL ; + goto already_acquired; + }/* Validate page directory and attach eviction fence */ ret =amdgpu_bo_reserve (vm->root.bo, true);
@@ -1461,6 +1464,7 @@ static int init_kfd_vm(struct amdgpu_vm *vm, void **process_info,amdgpu_bo_unreserve (vm->root.bo); reserve_pd_fail: vm->process_info =NULL ; +already_acquired:if (info) {dma_fence_put (&info->eviction_fence->base); *process_info =NULL ;
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +16 -1
@@ -2814,8 +2814,10 @@ static int amdgpu_device_ip_early_init(struct amdgpu_device *adev)break ;default : r =amdgpu_discovery_set_ip_blocks (adev); -if (r) +if (r) { + adev->num_ip_blocks =0 ;return r; + }break ; }
@@ -3373,6 +3375,8 @@ int amdgpu_device_set_cg_state(struct amdgpu_device *adev, i = state ==AMD_CG_STATE_GATE ? j : adev->num_ip_blocks - j -1 ;if (!adev->ip_blocks[i].status.late_initialized)continue ; +if (!adev->ip_blocks[i].version) +continue ;/* skip CG for GFX, SDMA on S0ix */ if (adev->in_s0ix && (adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_GFX ||
@@ -3412,6 +3416,8 @@ int amdgpu_device_set_pg_state(struct amdgpu_device *adev, i = state ==AMD_PG_STATE_GATE ? j : adev->num_ip_blocks - j -1 ;if (!adev->ip_blocks[i].status.late_initialized)continue ; +if (!adev->ip_blocks[i].version) +continue ;/* skip PG for GFX, SDMA on S0ix */ if (adev->in_s0ix && (adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_GFX ||
@@ -3619,6 +3625,8 @@ static int amdgpu_device_ip_fini_early(struct amdgpu_device *adev)int i, r;for (i =0 ; i < adev->num_ip_blocks; i++) { +if (!adev->ip_blocks[i].version) +continue ;if (!adev->ip_blocks[i].version->funcs->early_fini)continue ;
@@ -3681,6 +3689,8 @@ static int amdgpu_device_ip_fini(struct amdgpu_device *adev)if (!adev->ip_blocks[i].status.sw)continue ; +if (!adev->ip_blocks[i].version) +continue ;if (adev->ip_blocks[i].version->type ==AMD_IP_BLOCK_TYPE_GMC ) {amdgpu_ucode_free_bo (adev);amdgpu_free_static_csa (&adev->virt.csa_obj);
@@ -3707,6 +3717,8 @@ static int amdgpu_device_ip_fini(struct amdgpu_device *adev)for (i = adev->num_ip_blocks -1 ; i >=0 ; i--) {if (!adev->ip_blocks[i].status.late_initialized)continue ; +if (!adev->ip_blocks[i].version) +continue ;if (adev->ip_blocks[i].version->funcs->late_fini) adev->ip_blocks[i].version->funcs->late_fini (&adev->ip_blocks[i]); adev->ip_blocks[i].status.late_initialized = false;
@@ -5743,6 +5755,9 @@ int amdgpu_device_mode1_reset(struct amdgpu_device *adev)/* enable mmio access after mode 1 reset completed */ adev->no_hw_access = false; +/* ensure no_hw_access is updated before we access hw */ +smp_mb (); +amdgpu_device_load_pci_state (adev->pdev); ret =amdgpu_psp_wait_for_bootloader (adev);if (ret)
drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c +1 -1
@@ -83,7 +83,7 @@ void amdgpu_driver_unload_kms(struct drm_device *dev) {struct amdgpu_device *adev =drm_to_adev (dev); -if (adev ==NULL ) +if (adev ==NULL || !adev->num_ip_blocks)return ;amdgpu_unregister_gpu_instance (adev);
drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c +14 -0
@@ -35,6 +35,8 @@static const struct dma_fence_ops amdgpu_userq_fence_ops;static struct kmem_cache *amdgpu_userq_fence_slab; +#define AMDGPU_USERQ_MAX_HANDLES (1U << 16) +int amdgpu_userq_fence_slab_init (void ) { amdgpu_userq_fence_slab = kmem_cache_create("amdgpu_userq_fence",
@@ -475,6 +477,11 @@ int amdgpu_userq_signal_ioctl(struct drm_device *dev, void *data,if (!amdgpu_userq_enabled (dev))return -ENOTSUPP ; +if (args->num_syncobj_handles >AMDGPU_USERQ_MAX_HANDLES || + args->num_bo_write_handles >AMDGPU_USERQ_MAX_HANDLES || + args->num_bo_read_handles >AMDGPU_USERQ_MAX_HANDLES ) +return -EINVAL ; + num_syncobj_handles = args->num_syncobj_handles; syncobj_handles =memdup_user (u64_to_user_ptr (args->syncobj_handles),size_mul (sizeof (u32), num_syncobj_handles));
@@ -660,6 +667,11 @@ int amdgpu_userq_wait_ioctl(struct drm_device *dev, void *data,if (!amdgpu_userq_enabled (dev))return -ENOTSUPP ; +if (wait_info->num_syncobj_handles >AMDGPU_USERQ_MAX_HANDLES || + wait_info->num_bo_write_handles >AMDGPU_USERQ_MAX_HANDLES || + wait_info->num_bo_read_handles >AMDGPU_USERQ_MAX_HANDLES ) +return -EINVAL ; + num_read_bo_handles = wait_info->num_bo_read_handles; bo_handles_read =memdup_user (u64_to_user_ptr (wait_info->bo_read_handles),size_mul (sizeof (u32), num_read_bo_handles));
@@ -872,6 +884,7 @@ int amdgpu_userq_wait_ioctl(struct drm_device *dev, void *data,dma_fence_unwrap_for_each (f, &iter, fence) {if (num_fences >= wait_info->num_fences) { r = -EINVAL ; +dma_fence_put (fence); goto free_fences; }
@@ -896,6 +909,7 @@ int amdgpu_userq_wait_ioctl(struct drm_device *dev, void *data,if (num_fences >= wait_info->num_fences) { r = -EINVAL ; +dma_fence_put (fence); goto free_fences; }
drivers/gpu/drm/amd/amdgpu/mes_v11_0.c +0 -5
@@ -714,11 +714,6 @@ static int mes_v11_0_set_hw_resources(struct amdgpu_mes *mes) mes_set_hw_res_pkt.enable_reg_active_poll =1 ; mes_set_hw_res_pkt.enable_level_process_quantum_check =1 ; mes_set_hw_res_pkt.oversubscription_timer =50 ; -if ((mes->adev->mes.sched_version &AMDGPU_MES_VERSION_MASK ) >=0x7f ) - mes_set_hw_res_pkt.enable_lr_compute_wa =1 ; -else -dev_info_once (mes->adev->dev, -"MES FW version must be >= 0x7f to enable LR compute workaround.\n" );if (amdgpu_mes_log_enable) { mes_set_hw_res_pkt.enable_mes_event_int_logging =1 ;
drivers/gpu/drm/amd/amdgpu/mes_v12_0.c +0 -5
@@ -775,11 +775,6 @@ static int mes_v12_0_set_hw_resources(struct amdgpu_mes *mes, int pipe) mes_set_hw_res_pkt.use_different_vmid_compute =1 ; mes_set_hw_res_pkt.enable_reg_active_poll =1 ; mes_set_hw_res_pkt.enable_level_process_quantum_check =1 ; -if ((mes->adev->mes.sched_version &AMDGPU_MES_VERSION_MASK ) >=0x82 ) - mes_set_hw_res_pkt.enable_lr_compute_wa =1 ; -else -dev_info_once (adev->dev, -"MES FW version must be >= 0x82 to enable LR compute workaround.\n" );/* * Keep oversubscribe timer for sdma . When we have unmapped doorbell
drivers/gpu/drm/amd/amdgpu/vcn_v5_0_0.c +4 -0
@@ -174,6 +174,10 @@ static int vcn_v5_0_0_sw_init(struct amdgpu_ip_block *ip_block) fw_shared->present_flag_0 =cpu_to_le32 (AMDGPU_FW_SHARED_FLAG_0_UNIFIED_QUEUE ); fw_shared->sq.is_enabled =1 ; + fw_shared->present_flag_0 |=cpu_to_le32 (AMDGPU_VCN_SMU_DPM_INTERFACE_FLAG ); + fw_shared->smu_dpm_interface.smu_interface_type = (adev->flags &AMD_IS_APU ) ? +AMDGPU_VCN_SMU_DPM_INTERFACE_APU :AMDGPU_VCN_SMU_DPM_INTERFACE_DGPU ; +if (amdgpu_vcnfw_log)amdgpu_vcn_fwlog_init (&adev->vcn.inst[i]);
drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c +1 -0
@@ -606,6 +606,7 @@ int pqm_update_queue_properties(struct process_queue_manager *pqm, p->queue_size)) {pr_debug ("ring buf 0x%llx size 0x%llx not mapped on GPU\n" , p->queue_address, p->queue_size); +amdgpu_bo_unreserve (vm->root.bo);return -EFAULT ; }
drivers/gpu/drm/amd/display/dc/hwss/dcn401/dcn401_hwseq.c +5 -1
@@ -68,7 +68,11 @@ void dcn401_initialize_min_clocks(struct dc *dc)* audio corruption. Read current DISPCLK from DENTIST and request the same * freq to ensure that the timing is valid and unchanged. */ - clocks->dispclk_khz = dc->clk_mgr->funcs->get_dispclk_from_dentist (dc->clk_mgr); +if (dc->clk_mgr->funcs->get_dispclk_from_dentist) { + clocks->dispclk_khz = dc->clk_mgr->funcs->get_dispclk_from_dentist (dc->clk_mgr); + }else { + clocks->dispclk_khz = dc->clk_mgr->boot_snapshot.dispclk *1000 ; + } } clocks->ref_dtbclk_khz = dc->clk_mgr->bw_params->clk_table.entries[0 ].dtbclk_mhz *1000 ; clocks->fclk_p_state_change_support = true;
drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c +9 -2
@@ -2109,6 +2109,7 @@ static ssize_t smu_v13_0_0_get_gpu_metrics(struct smu_context *smu, (struct gpu_metrics_v1_3 *)smu_table->gpu_metrics_table;SmuMetricsExternal_t metrics_ext;SmuMetrics_t *metrics = &metrics_ext.SmuMetrics; +uint32_t mp1_ver =amdgpu_ip_version (smu->adev,MP1_HWIP ,0 );int ret =0 ; ret = smu_cmn_get_metrics_table(smu,
@@ -2133,7 +2134,12 @@ static ssize_t smu_v13_0_0_get_gpu_metrics(struct smu_context *smu, metrics->Vcn1ActivityPercentage); gpu_metrics->average_socket_power = metrics->AverageSocketPower; - gpu_metrics->energy_accumulator = metrics->EnergyAccumulator; + +if ((mp1_ver ==IP_VERSION (13 ,0 ,0 ) && smu->smc_fw_version <=0x004e1e00 ) || + (mp1_ver ==IP_VERSION (13 ,0 ,10 ) && smu->smc_fw_version <=0x00500800 )) + gpu_metrics->energy_accumulator = metrics->EnergyAccumulator; +else + gpu_metrics->energy_accumulator =UINT_MAX ;if (metrics->AverageGfxActivity <=SMU_13_0_0_BUSY_THRESHOLD ) gpu_metrics->average_gfxclk_frequency = metrics->AverageGfxclkFrequencyPostDs;
@@ -2289,7 +2295,8 @@ static int smu_v13_0_0_restore_user_od_settings(struct smu_context *smu) user_od_table->OverDriveTable.FeatureCtrlMask =BIT (PP_OD_FEATURE_GFXCLK_BIT ) |BIT (PP_OD_FEATURE_UCLK_BIT ) |BIT (PP_OD_FEATURE_GFX_VF_CURVE_BIT ) | -BIT (PP_OD_FEATURE_FAN_CURVE_BIT ); +BIT (PP_OD_FEATURE_FAN_CURVE_BIT ) | +BIT (PP_OD_FEATURE_ZERO_FAN_BIT ); res =smu_v13_0_0_upload_overdrive_table (smu, user_od_table); user_od_table->OverDriveTable.FeatureCtrlMask =0 ;if (res ==0 )
drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c +4 -2
@@ -2119,7 +2119,8 @@ static ssize_t smu_v13_0_7_get_gpu_metrics(struct smu_context *smu, metrics->Vcn1ActivityPercentage); gpu_metrics->average_socket_power = metrics->AverageSocketPower; - gpu_metrics->energy_accumulator = metrics->EnergyAccumulator; + gpu_metrics->energy_accumulator = smu->smc_fw_version <=0x00521400 ? + metrics->EnergyAccumulator :UINT_MAX ;if (metrics->AverageGfxActivity <=SMU_13_0_7_BUSY_THRESHOLD ) gpu_metrics->average_gfxclk_frequency = metrics->AverageGfxclkFrequencyPostDs;
@@ -2275,7 +2276,8 @@ static int smu_v13_0_7_restore_user_od_settings(struct smu_context *smu) user_od_table->OverDriveTable.FeatureCtrlMask =BIT (PP_OD_FEATURE_GFXCLK_BIT ) |BIT (PP_OD_FEATURE_UCLK_BIT ) |BIT (PP_OD_FEATURE_GFX_VF_CURVE_BIT ) | -BIT (PP_OD_FEATURE_FAN_CURVE_BIT ); +BIT (PP_OD_FEATURE_FAN_CURVE_BIT ) | +BIT (PP_OD_FEATURE_ZERO_FAN_BIT ); res =smu_v13_0_7_upload_overdrive_table (smu, user_od_table); user_od_table->OverDriveTable.FeatureCtrlMask =0 ;if (res ==0 )
drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_2_ppt.c +2 -1
@@ -2412,7 +2412,8 @@ static int smu_v14_0_2_restore_user_od_settings(struct smu_context *smu) user_od_table->OverDriveTable.FeatureCtrlMask =BIT (PP_OD_FEATURE_GFXCLK_BIT ) |BIT (PP_OD_FEATURE_UCLK_BIT ) |BIT (PP_OD_FEATURE_GFX_VF_CURVE_BIT ) | -BIT (PP_OD_FEATURE_FAN_CURVE_BIT ); +BIT (PP_OD_FEATURE_FAN_CURVE_BIT ) | +BIT (PP_OD_FEATURE_ZERO_FAN_BIT ); res =smu_v14_0_2_upload_overdrive_table (smu, user_od_table); user_od_table->OverDriveTable.FeatureCtrlMask =0 ;if (res ==0 )
drivers/gpu/drm/bridge/samsung-dsim.c +16 -9
@@ -1881,6 +1881,14 @@ static int samsung_dsim_register_te_irq(struct samsung_dsim *dsi, struct devicereturn 0 ; } +static void samsung_dsim_unregister_te_irq (struct samsung_dsim *dsi) +{ +if (dsi->te_gpio) { +free_irq (gpiod_to_irq (dsi->te_gpio), dsi); +gpiod_put (dsi->te_gpio); + } +} +static int samsung_dsim_host_attach (struct mipi_dsi_host *host,struct mipi_dsi_device *device) {
@@ -1955,13 +1963,13 @@ static int samsung_dsim_host_attach(struct mipi_dsi_host *host,if (!(device->mode_flags &MIPI_DSI_MODE_VIDEO )) { ret =samsung_dsim_register_te_irq (dsi, &device->dev);if (ret) -return ret; + goto err_remove_bridge; }if (pdata->host_ops && pdata->host_ops->attach) { ret = pdata->host_ops->attach (dsi, device);if (ret) -return ret; + goto err_unregister_te_irq; } dsi->lanes = device->lanes;
@@ -1969,14 +1977,13 @@ static int samsung_dsim_host_attach(struct mipi_dsi_host *host, dsi->mode_flags = device->mode_flags;return 0 ; -} -static void samsung_dsim_unregister_te_irq (struct samsung_dsim *dsi) -{ -if (dsi->te_gpio) { -free_irq (gpiod_to_irq (dsi->te_gpio), dsi); -gpiod_put (dsi->te_gpio); - } +err_unregister_te_irq: +if (!(device->mode_flags &MIPI_DSI_MODE_VIDEO )) +samsung_dsim_unregister_te_irq (dsi); +err_remove_bridge: +drm_bridge_remove (&dsi->bridge); +return ret; } static int samsung_dsim_host_detach(struct mipi_dsi_host *host,
drivers/gpu/drm/bridge/ti-sn65dsi83.c +7 -6
@@ -351,9 +351,9 @@ static u8 sn65dsi83_get_dsi_range(struct sn65dsi83 *ctx,* DSI_CLK = mode clock * bpp / dsi_data_lanes / 2 * the 2 is there because the bus is DDR. */ -return DIV_ROUND_UP (clamp ((unsigned int )mode->clock * -mipi_dsi_pixel_format_to_bpp (ctx->dsi->format) / - ctx->dsi->lanes /2 ,40000U ,500000U ),5000U ); +return clamp ((unsigned int )mode->clock * +mipi_dsi_pixel_format_to_bpp (ctx->dsi->format) / + ctx->dsi->lanes /2 ,40000U ,500000U ) /5000U ; }static u8 sn65dsi83_get_dsi_div (struct sn65dsi83 *ctx)
@@ -474,6 +474,7 @@ static void sn65dsi83_atomic_pre_enable(struct drm_bridge *bridge, struct drm_atomic_state *state) {struct sn65dsi83 *ctx =bridge_to_sn65dsi83 (bridge); +const unsigned int dual_factor = ctx->lvds_dual_link ?2 :1 ;const struct drm_bridge_state *bridge_state;const struct drm_crtc_state *crtc_state;const struct drm_display_mode *mode;
@@ -606,18 +607,18 @@ static void sn65dsi83_atomic_pre_enable(struct drm_bridge *bridge,/* 32 + 1 pixel clock to ensure proper operation */ le16val =cpu_to_le16 (32 +1 );regmap_bulk_write (ctx->regmap,REG_VID_CHA_SYNC_DELAY_LOW , &le16val,2 ); - le16val =cpu_to_le16 (mode->hsync_end - mode->hsync_start); + le16val =cpu_to_le16 ((mode->hsync_end - mode->hsync_start) / dual_factor);regmap_bulk_write (ctx->regmap,REG_VID_CHA_HSYNC_PULSE_WIDTH_LOW , &le16val,2 ); le16val =cpu_to_le16 (mode->vsync_end - mode->vsync_start);regmap_bulk_write (ctx->regmap,REG_VID_CHA_VSYNC_PULSE_WIDTH_LOW , &le16val,2 );regmap_write (ctx->regmap,REG_VID_CHA_HORIZONTAL_BACK_PORCH , - mode->htotal - mode->hsync_end); + (mode->htotal - mode->hsync_end) / dual_factor);regmap_write (ctx->regmap,REG_VID_CHA_VERTICAL_BACK_PORCH , mode->vtotal - mode->vsync_end);regmap_write (ctx->regmap,REG_VID_CHA_HORIZONTAL_FRONT_PORCH , - mode->hsync_start - mode->hdisplay); + (mode->hsync_start - mode->hdisplay) / dual_factor);regmap_write (ctx->regmap,REG_VID_CHA_VERTICAL_FRONT_PORCH , mode->vsync_start - mode->vdisplay);regmap_write (ctx->regmap,REG_VID_CHA_TEST_PATTERN ,0x00 );
drivers/gpu/drm/bridge/ti-sn65dsi86.c +116 -2
206 lines not on this page · raw message
drivers/gpu/drm/gud/gud_drv.c +32 -22
114 lines not on this page · raw message
drivers/gpu/drm/gud/gud_internal.h +4 -0
@@ -62,6 +62,10 @@ int gud_usb_set_u8(struct gud_device *gdrm, u8 request, u8 val);void gud_clear_damage (struct gud_device *gdrm);void gud_flush_work (struct work_struct *work); +void gud_crtc_atomic_enable (struct drm_crtc *crtc, +struct drm_atomic_state *state); +void gud_crtc_atomic_disable (struct drm_crtc *crtc, +struct drm_atomic_state *state);int gud_plane_atomic_check (struct drm_plane *plane,struct drm_atomic_state *state); void gud_plane_atomic_update(struct drm_plane *plane,
drivers/gpu/drm/gud/gud_pipe.c +36 -18
75 lines not on this page · raw message
drivers/gpu/drm/i915/display/intel_alpm.c +1 -6
@@ -577,12 +577,7 @@ void intel_alpm_disable(struct intel_dp *intel_dp)mutex_lock (&intel_dp->alpm_parameters.lock);intel_de_rmw (display,ALPM_CTL (display, cpu_transcoder), -ALPM_CTL_ALPM_ENABLE |ALPM_CTL_LOBF_ENABLE | -ALPM_CTL_ALPM_AUX_LESS_ENABLE ,0 ); - -intel_de_rmw (display, -PORT_ALPM_CTL (cpu_transcoder), -PORT_ALPM_CTL_ALPM_AUX_LESS_ENABLE ,0 ); +ALPM_CTL_ALPM_ENABLE |ALPM_CTL_LOBF_ENABLE ,0 );drm_dbg_kms (display->drm,"Disabling ALPM\n" );mutex_unlock (&intel_dp->alpm_parameters.lock);
drivers/gpu/drm/i915/display/intel_psr.c +38 -12
81 lines not on this page · raw message
drivers/gpu/drm/i915/gem/i915_gem_shmem.c +9 -3
@@ -151,8 +151,12 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st, } }while (1 ); - nr_pages = min_t(unsigned long, -folio_nr_pages (folio), page_count - i); + nr_pages =min_array (((unsigned long []) { +folio_nr_pages (folio), + page_count - i, + max_segment /PAGE_SIZE , + }),3 ); +if (!i || sg->length >= max_segment ||folio_pfn (folio) != next_pfn) {
@@ -162,7 +166,9 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st, st->nents++;sg_set_folio (sg, folio, nr_pages *PAGE_SIZE ,0 ); }else { -/* XXX: could overflow? */ + nr_pages = min_t(unsigned long, nr_pages, + (max_segment - sg->length) /PAGE_SIZE ); + sg->length += nr_pages *PAGE_SIZE ; } next_pfn =folio_pfn (folio) + nr_pages;
drivers/gpu/drm/msm/adreno/a2xx_gpummu.c +1 -1
@@ -78,7 +78,7 @@ static void a2xx_gpummu_destroy(struct msm_mmu *mmu) {struct a2xx_gpummu *gpummu =to_a2xx_gpummu (mmu); -dma_free_attrs (mmu->dev,TABLE_SIZE , gpummu->table, gpummu->pt_base, +dma_free_attrs (mmu->dev,TABLE_SIZE +32 , gpummu->table, gpummu->pt_base,DMA_ATTR_FORCE_CONTIGUOUS );kfree (gpummu);
drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_4_sa8775p.h +2 -2
@@ -366,8 +366,8 @@ static const struct dpu_intf_cfg sa8775p_intf[] = { .type = INTF_NONE, .controller_id = MSM_DP_CONTROLLER_0, /* pair with intf_0 for DP MST */ .prog_fetch_lines_worst_case = 24, - .intr_underrun = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 17), - .intr_vsync = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 16), + .intr_underrun = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 16), + .intr_vsync = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 17), }, { .name = "intf_7", .id = INTF_7, .base = 0x3b000, .len = 0x280,
drivers/gpu/drm/msm/dsi/dsi_host.c +31 -12
77 lines not on this page · raw message
drivers/gpu/drm/nouveau/nouveau_connector.c +3 -0
@@ -1230,6 +1230,9 @@ nouveau_connector_aux_xfer(struct drm_dp_aux *obj, struct drm_dp_aux_msg *msg)u8 size = msg->size;int ret; +if (pm_runtime_suspended (nv_connector->base.dev->dev)) +return -EBUSY ; + nv_encoder =find_encoder (&nv_connector->base,DCB_OUTPUT_DP );if (!nv_encoder)return -ENODEV ;
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c +6 -6
@@ -737,8 +737,8 @@ r535_gsp_acpi_caps(acpi_handle handle, CAPS_METHOD_DATA *caps)if (!obj) goto done; -if (WARN_ON (obj->type !=ACPI_TYPE_BUFFER ) || -WARN_ON (obj->buffer.length !=4 )) +if (obj->type !=ACPI_TYPE_BUFFER || + obj->buffer.length !=4 ) goto done; caps->status =0 ;
@@ -773,8 +773,8 @@ r535_gsp_acpi_jt(acpi_handle handle, JT_METHOD_DATA *jt)if (!obj) goto done; -if (WARN_ON (obj->type !=ACPI_TYPE_BUFFER ) || -WARN_ON (obj->buffer.length !=4 )) +if (obj->type !=ACPI_TYPE_BUFFER || + obj->buffer.length !=4 ) goto done; jt->status =0 ;
@@ -861,8 +861,8 @@ r535_gsp_acpi_dod(acpi_handle handle, DOD_METHOD_DATA *dod) _DOD = output.pointer; -if (WARN_ON (_DOD->type !=ACPI_TYPE_PACKAGE ) || -WARN_ON (_DOD->package.count >ARRAY_SIZE (dod->acpiIdList))) +if (_DOD->type !=ACPI_TYPE_PACKAGE || + _DOD->package.count >ARRAY_SIZE (dod->acpiIdList))return ;for (int i =0 ; i < _DOD->package.count; i++) {
drivers/gpu/drm/sitronix/st7586.c +6 -9
@@ -346,6 +346,12 @@ static int st7586_probe(struct spi_device *spi)if (ret)return ret; +/* +* Override value set by mipi_dbi_spi_init(). This driver is a bit +* non-standard, so best to set it explicitly here. +*/ + dbi->write_memory_bpw =8 ; +/* Cannot read from this controller via SPI */ dbi->read_commands =NULL ;
@@ -355,15 +361,6 @@ static int st7586_probe(struct spi_device *spi)if (ret)return ret; -/* -* we are using 8-bit data, so we are not actually swapping anything, -* but setting mipi->swap_bytes makes mipi_dbi_typec3_command() do the -* right thing and not use 16-bit transfers (which results in swapped -* bytes on little-endian systems and causes out of order data to be -* sent to the display). -*/ - dbi->swap_bytes = true; -drm_mode_config_reset (drm); ret =drm_dev_register (drm,0 );
drivers/gpu/drm/xe/xe_sync.c +17 -7
@@ -146,8 +146,10 @@ int xe_sync_entry_parse(struct xe_device *xe, struct xe_file *xef,if (!signal) { sync->fence =drm_syncobj_fence_get (sync->syncobj); -if (XE_IOCTL_DBG (xe, !sync->fence)) -return -EINVAL ; +if (XE_IOCTL_DBG (xe, !sync->fence)) { + err = -EINVAL ; + goto free_sync; + } }break ;
@@ -167,17 +169,21 @@ int xe_sync_entry_parse(struct xe_device *xe, struct xe_file *xef,if (signal) { sync->chain_fence =dma_fence_chain_alloc (); -if (!sync->chain_fence) -return -ENOMEM ; +if (!sync->chain_fence) { + err = -ENOMEM ; + goto free_sync; + } }else { sync->fence =drm_syncobj_fence_get (sync->syncobj); -if (XE_IOCTL_DBG (xe, !sync->fence)) -return -EINVAL ; +if (XE_IOCTL_DBG (xe, !sync->fence)) { + err = -EINVAL ; + goto free_sync; + } err =dma_fence_chain_find_seqno (&sync->fence, sync_in.timeline_value);if (err) -return err; + goto free_sync; }break ;
@@ -216,6 +222,10 @@ int xe_sync_entry_parse(struct xe_device *xe, struct xe_file *xef, sync->timeline_value = sync_in.timeline_value;return 0 ; + +free_sync: +xe_sync_entry_cleanup (sync); +return err; }ALLOW_ERROR_INJECTION (xe_sync_entry_parse,ERRNO );
drivers/gpu/drm/xe/xe_wa.c +7 -6
@@ -255,12 +255,13 @@ static const struct xe_rtp_entry_sr gt_was[] = { {XE_RTP_NAME ("16025250150" ),XE_RTP_RULES (GRAPHICS_VERSION (2001 )), -XE_RTP_ACTIONS (SET (LSN_VC_REG2 , -LSN_LNI_WGT (1 ) | -LSN_LNE_WGT (1 ) | -LSN_DIM_X_WGT (1 ) | -LSN_DIM_Y_WGT (1 ) | -LSN_DIM_Z_WGT (1 ))) +XE_RTP_ACTIONS (FIELD_SET (LSN_VC_REG2 , +LSN_LNI_WGT_MASK |LSN_LNE_WGT_MASK | +LSN_DIM_X_WGT_MASK |LSN_DIM_Y_WGT_MASK | +LSN_DIM_Z_WGT_MASK , +LSN_LNI_WGT (1 ) |LSN_LNE_WGT (1 ) | +LSN_DIM_X_WGT (1 ) |LSN_DIM_Y_WGT (1 ) | +LSN_DIM_Z_WGT (1 ))) },/* Xe2_HPM */
drivers/hwmon/pmbus/q54sj108a2.c +10 -9
@@ -78,7 +78,8 @@ static ssize_t q54sj108a2_debugfs_read(struct file *file, char __user *buf,int idx = *idxp;struct q54sj108a2_data *psu =to_psu (idxp, idx);char data[I2C_SMBUS_BLOCK_MAX +2 ] = {0 }; -char data_char[I2C_SMBUS_BLOCK_MAX +2 ] = {0 }; +char data_char[I2C_SMBUS_BLOCK_MAX *2 +2 ] = {0 }; +char *out = data;char *res;switch (idx) {
@@ -149,27 +150,27 @@ static ssize_t q54sj108a2_debugfs_read(struct file *file, char __user *buf,if (rc <0 )return rc; - res =bin2hex (data, data_char,32 ); - rc = res - data; - + res =bin2hex (data_char, data, rc); + rc = res - data_char; + out = data_char;break ;case Q54SJ108A2_DEBUGFS_FLASH_KEY : rc =i2c_smbus_read_block_data (psu->client,PMBUS_FLASH_KEY_WRITE , data);if (rc <0 )return rc; - res =bin2hex (data, data_char,4 ); - rc = res - data; - + res =bin2hex (data_char, data, rc); + rc = res - data_char; + out = data_char;break ;default :return -EINVAL ; } - data[rc] ='\n' ; + out[rc] ='\n' ; rc +=2 ; -return simple_read_from_buffer (buf, count, ppos, data, rc); +return simple_read_from_buffer (buf, count, ppos, out, rc); } static ssize_t q54sj108a2_debugfs_write(struct file *file, const char __user *buf,
drivers/i3c/master/dw-i3c-master.c +2 -2
@@ -1005,7 +1005,7 @@ static int dw_i3c_master_reattach_i3c_dev(struct i3c_dev_desc *dev, master->free_pos &= ~BIT (pos); } -writel (DEV_ADDR_TABLE_DYNAMIC_ADDR (dev->info.dyn_addr), +writel (DEV_ADDR_TABLE_DYNAMIC_ADDR (dev->info.dyn_addr) |DEV_ADDR_TABLE_SIR_REJECT , master->regs +DEV_ADDR_TABLE_LOC (master->datstartaddr, data->index));
@@ -1034,7 +1034,7 @@ static int dw_i3c_master_attach_i3c_dev(struct i3c_dev_desc *dev) master->free_pos &= ~BIT (pos);i3c_dev_set_master_data (dev, data); -writel (DEV_ADDR_TABLE_DYNAMIC_ADDR (master->devs[pos].addr), +writel (DEV_ADDR_TABLE_DYNAMIC_ADDR (master->devs[pos].addr) |DEV_ADDR_TABLE_SIR_REJECT , master->regs +DEV_ADDR_TABLE_LOC (master->datstartaddr, data->index));
drivers/i3c/master/mipi-i3c-hci/cmd.h +1 -0
@@ -17,6 +17,7 @@#define CMD_0_TOC W0_BIT_(31)#define CMD_0_ROC W0_BIT_(30)#define CMD_0_ATTR W0_MASK(2, 0) +#define CMD_0_TID W0_MASK(6, 3)/* * Response Descriptor Structure
drivers/i3c/master/mipi-i3c-hci/cmd_v1.c +1 -1
@@ -336,7 +336,7 @@ static int hci_cmd_v1_daa(struct i3c_hci *hci) hci->io->queue_xfer (hci, xfer,1 );if (!wait_for_completion_timeout (&done,HZ ) && hci->io->dequeue_xfer (hci, xfer,1 )) { - ret = -ETIME ; + ret = -ETIMEDOUT ;break ; } if ((RESP_STATUS(xfer->response) == RESP_ERR_ADDR_HEADER ||
drivers/i3c/master/mipi-i3c-hci/cmd_v2.c +1 -1
@@ -277,7 +277,7 @@ static int hci_cmd_v2_daa(struct i3c_hci *hci) hci->io->queue_xfer (hci, xfer,2 );if (!wait_for_completion_timeout (&done,HZ ) && hci->io->dequeue_xfer (hci, xfer,2 )) { - ret = -ETIME ; + ret = -ETIMEDOUT ;break ; }if (RESP_STATUS (xfer[0 ].response) !=RESP_SUCCESS ) {
drivers/i3c/master/mipi-i3c-hci/core.c +6 -3
@@ -230,7 +230,7 @@ static int i3c_hci_send_ccc_cmd(struct i3c_master_controller *m, goto out;if (!wait_for_completion_timeout (&done,HZ ) && hci->io->dequeue_xfer (hci, xfer, nxfers)) { - ret = -ETIME ; + ret = -ETIMEDOUT ; goto out; }for (i = prefixed; i < nxfers; i++) {
@@ -309,7 +309,7 @@ static int i3c_hci_priv_xfers(struct i3c_dev_desc *dev, goto out;if (!wait_for_completion_timeout (&done,HZ ) && hci->io->dequeue_xfer (hci, xfer, nxfers)) { - ret = -ETIME ; + ret = -ETIMEDOUT ; goto out; }for (i =0 ; i < nxfers; i++) {
@@ -357,7 +357,7 @@ static int i3c_hci_i2c_xfers(struct i2c_dev_desc *dev, goto out;if (!wait_for_completion_timeout (&done, m->i2c.timeout) && hci->io->dequeue_xfer (hci, xfer, nxfers)) { - ret = -ETIME ; + ret = -ETIMEDOUT ; goto out; }for (i =0 ; i < nxfers; i++) {
@@ -631,6 +631,9 @@ static int i3c_hci_init(struct i3c_hci *hci)if (ret)return ret; +spin_lock_init (&hci->lock); +mutex_init (&hci->control_mutex); +/* * Now let's reset the hardware. * SOFT_RST must be clear before we write to it.
drivers/i3c/master/mipi-i3c-hci/dma.c +61 -35
186 lines not on this page · raw message
drivers/i3c/master/mipi-i3c-hci/hci.h +2 -0
@@ -45,6 +45,8 @@ struct i3c_hci {const struct hci_io_ops *io;void *io_data;const struct hci_cmd_ops *cmd; +spinlock_t lock; +struct mutex control_mutex;atomic_t next_cmd_tid;u32 caps;unsigned int quirks;
drivers/i3c/master/mipi-i3c-hci/pio.c +7 -9
@@ -124,7 +124,6 @@ struct hci_pio_ibi_data { };struct hci_pio_data { -spinlock_t lock;struct hci_xfer *curr_xfer, *xfer_queue;struct hci_xfer *curr_rx, *rx_queue;struct hci_xfer *curr_tx, *tx_queue;
@@ -146,7 +145,6 @@ static int hci_pio_init(struct i3c_hci *hci)return -ENOMEM ; hci->io_data = pio; -spin_lock_init (&pio->lock); size_val =pio_reg_read (QUEUE_SIZE ); dev_info(&hci->master.dev, "CMD/RESP FIFO = %ld entries\n",
@@ -609,7 +607,7 @@ static int hci_pio_queue_xfer(struct i3c_hci *hci, struct hci_xfer *xfer, int n) xfer[i].data_left = xfer[i].data_len; } -spin_lock_irq (&pio->lock); +spin_lock_irq (&hci->lock); prev_queue_tail = pio->xfer_queue; pio->xfer_queue = &xfer[n -1 ];if (pio->curr_xfer) {
@@ -623,7 +621,7 @@ static int hci_pio_queue_xfer(struct i3c_hci *hci, struct hci_xfer *xfer, int n)pio_reg_read (INTR_STATUS ), pio_reg_read(INTR_SIGNAL_ENABLE)); } -spin_unlock_irq (&pio->lock); +spin_unlock_irq (&hci->lock);return 0 ; }
@@ -694,14 +692,14 @@ static bool hci_pio_dequeue_xfer(struct i3c_hci *hci, struct hci_xfer *xfer, intstruct hci_pio_data *pio = hci->io_data;int ret; -spin_lock_irq (&pio->lock); +spin_lock_irq (&hci->lock);dev_dbg (&hci->master.dev,"n=%d status=%#x/%#x" , n,pio_reg_read (INTR_STATUS ),pio_reg_read (INTR_SIGNAL_ENABLE ));dev_dbg (&hci->master.dev,"main_status = %#x/%#x" ,readl (hci->base_regs +0x20 ),readl (hci->base_regs +0x28 )); ret =hci_pio_dequeue_xfer_common (hci, pio, xfer, n); -spin_unlock_irq (&pio->lock); +spin_unlock_irq (&hci->lock);return ret; }
@@ -994,13 +992,13 @@ static bool hci_pio_irq_handler(struct i3c_hci *hci)struct hci_pio_data *pio = hci->io_data;u32 status; -spin_lock (&pio->lock); +spin_lock (&hci->lock); status =pio_reg_read (INTR_STATUS );dev_dbg (&hci->master.dev,"PIO_INTR_STATUS %#x/%#x" , status, pio->enabled_irqs); status &= pio->enabled_irqs |STAT_LATENCY_WARNINGS ;if (!status) { -spin_unlock (&pio->lock); +spin_unlock (&hci->lock);return false; }
@@ -1036,7 +1034,7 @@ static bool hci_pio_irq_handler(struct i3c_hci *hci)pio_reg_write (INTR_SIGNAL_ENABLE , pio->enabled_irqs);dev_dbg (&hci->master.dev,"PIO_INTR_STATUS %#x/%#x" ,pio_reg_read (INTR_STATUS ),pio_reg_read (INTR_SIGNAL_ENABLE )); -spin_unlock (&pio->lock); +spin_unlock (&hci->lock);return true; }
drivers/iio/chemical/bme680_core.c +1 -1
@@ -613,7 +613,7 @@ static int bme680_wait_for_eoc(struct bme680_data *data)* + heater duration */ int wait_eoc_us = ((data->oversampling_temp + data->oversampling_press + - data->oversampling_humid) *1936 ) + (477 *4 ) + + data->oversampling_humid) *1963 ) + (477 *4 ) + (477 *5 ) +1000 + (data->heater_dur *1000 );fsleep (wait_eoc_us);
drivers/iio/chemical/sps30_i2c.c +1 -1
@@ -171,7 +171,7 @@ static int sps30_i2c_read_meas(struct sps30_state *state, __be32 *meas, size_t nif (!sps30_i2c_meas_ready (state))return -ETIMEDOUT ; -return sps30_i2c_command (state,SPS30_I2C_READ_MEAS ,NULL ,0 , meas,sizeof (num) * num); +return sps30_i2c_command (state,SPS30_I2C_READ_MEAS ,NULL ,0 , meas,sizeof (*meas) * num); }static int sps30_i2c_clean_fan (struct sps30_state *state)
drivers/iio/chemical/sps30_serial.c +1 -1
@@ -303,7 +303,7 @@ static int sps30_serial_read_meas(struct sps30_state *state, __be32 *meas, size_if (msleep_interruptible (1000 ))return -EINTR ; - ret =sps30_serial_command (state,SPS30_SERIAL_READ_MEAS ,NULL ,0 , meas, num *sizeof (num)); + ret =sps30_serial_command (state,SPS30_SERIAL_READ_MEAS ,NULL ,0 , meas, num *sizeof (*meas));if (ret <0 )return ret;/* if measurements aren't ready sensor returns empty frame */
drivers/iio/dac/ds4424.c +1 -1
@@ -141,7 +141,7 @@ static int ds4424_write_raw(struct iio_dev *indio_dev,switch (mask) {case IIO_CHAN_INFO_RAW : -if (val <S8_MIN || val >S8_MAX ) +if (val <=S8_MIN || val >S8_MAX )return -EINVAL ;if (val >0 ) {
drivers/iio/frequency/adf4377.c +1 -1
@@ -501,7 +501,7 @@ static int adf4377_soft_reset(struct adf4377_state *st)return ret;return regmap_read_poll_timeout (st->regmap,0x0 , read_val, - !(read_val & (ADF4377_0000_SOFT_RESET_R_MSK | + !(read_val & (ADF4377_0000_SOFT_RESET_MSK |ADF4377_0000_SOFT_RESET_R_MSK )),200 ,200 *100 ); }
drivers/iio/gyro/mpu3050-core.c +13 -5
@@ -322,7 +322,9 @@ static int mpu3050_read_raw(struct iio_dev *indio_dev, }case IIO_CHAN_INFO_RAW :/* Resume device */ -pm_runtime_get_sync (mpu3050->dev); + ret =pm_runtime_resume_and_get (mpu3050->dev); +if (ret) +return ret;mutex_lock (&mpu3050->lock); ret =mpu3050_set_8khz_samplerate (mpu3050);
@@ -647,14 +649,20 @@ static irqreturn_t mpu3050_trigger_handler(int irq, void *p)static int mpu3050_buffer_preenable (struct iio_dev *indio_dev) {struct mpu3050 *mpu3050 =iio_priv (indio_dev); +int ret; -pm_runtime_get_sync (mpu3050->dev); + ret =pm_runtime_resume_and_get (mpu3050->dev); +if (ret) +return ret;/* Unless we have OUR trigger active, run at full speed */ -if (!mpu3050->hw_irq_trigger) -return mpu3050_set_8khz_samplerate (mpu3050); +if (!mpu3050->hw_irq_trigger) { + ret =mpu3050_set_8khz_samplerate (mpu3050); +if (ret) +pm_runtime_put_autosuspend (mpu3050->dev); + } -return 0 ; +return ret; }static int mpu3050_buffer_postdisable (struct iio_dev *indio_dev)
drivers/iio/gyro/mpu3050-i2c.c +1 -2
@@ -19,8 +19,7 @@ static int mpu3050_i2c_bypass_select(struct i2c_mux_core *mux, u32 chan_id)struct mpu3050 *mpu3050 =i2c_mux_priv (mux);/* Just power up the device, that is all that is needed */ -pm_runtime_get_sync (mpu3050->dev); -return 0 ; +return pm_runtime_resume_and_get (mpu3050->dev); }static int mpu3050_i2c_bypass_deselect (struct i2c_mux_core *mux,u32 chan_id)
drivers/iio/imu/adis.c +1 -1
@@ -526,7 +526,7 @@ int adis_init(struct adis *adis, struct iio_dev *indio_dev, adis->spi = spi; adis->data = data; -if (!adis->ops->write && !adis->ops->read && !adis->ops->reset) +if (!adis->ops) adis->ops = &adis_default_ops;else if (!adis->ops->write || !adis->ops->read || !adis->ops->reset)return -EINVAL ;
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c +2 -0
@@ -651,6 +651,8 @@ static int inv_icm42600_accel_write_odr(struct iio_dev *indio_dev,return -EINVAL ; conf.odr = inv_icm42600_accel_odr_conv[idx /2 ]; +if (conf.odr == st->conf.accel.odr) +return 0 ;pm_runtime_get_sync (dev);mutex_lock (&st->lock);
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c +4 -0
@@ -371,6 +371,8 @@ static int inv_icm42600_buffer_predisable(struct iio_dev *indio_dev)static int inv_icm42600_buffer_postdisable (struct iio_dev *indio_dev) {struct inv_icm42600_state *st =iio_device_get_drvdata (indio_dev); +struct inv_icm42600_sensor_state *sensor_st =iio_priv (indio_dev); +struct inv_sensors_timestamp *ts = &sensor_st->ts;struct device *dev =regmap_get_device (st->map);unsigned int sensor;unsigned int *watermark;
@@ -392,6 +394,8 @@ static int inv_icm42600_buffer_postdisable(struct iio_dev *indio_dev)mutex_lock (&st->lock); +inv_sensors_timestamp_apply_odr (ts,0 ,0 ,0 ); + ret =inv_icm42600_buffer_set_fifo_en (st, st->fifo.en & ~sensor);if (ret) goto out_unlock;
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c +2 -0
@@ -358,6 +358,8 @@ static int inv_icm42600_gyro_write_odr(struct iio_dev *indio_dev,return -EINVAL ; conf.odr = inv_icm42600_gyro_odr_conv[idx /2 ]; +if (conf.odr == st->conf.gyro.odr) +return 0 ;pm_runtime_get_sync (dev);mutex_lock (&st->lock);
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c +8 -0
@@ -1943,6 +1943,14 @@ int inv_mpu_core_probe(struct regmap *regmap, int irq, const char *name, irq_type);return -EINVAL ; } + +/* +* Acking interrupts by status register does not work reliably +* but seem to work when this bit is set. +*/ +if (st->chip_type ==INV_MPU9150 ) + st->irq_mask |=INV_MPU6050_INT_RD_CLEAR ; +device_set_wakeup_capable (dev, true); st->vdd_supply =devm_regulator_get (dev,"vdd" );
drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h +2 -0
@@ -390,6 +390,8 @@ struct inv_mpu6050_state {/* enable level triggering */ #define INV_MPU6050_LATCH_INT_EN 0x20#define INV_MPU6050_BIT_BYPASS_EN 0x2 +/* allow acking interrupts by any register read */ +#define INV_MPU6050_INT_RD_CLEAR 0x10/* Allowed timestamp period jitter in percent */ #define INV_MPU6050_TS_PERIOD_JITTER 4
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c +4 -1
@@ -248,7 +248,6 @@ static irqreturn_t inv_mpu6050_interrupt_handle(int irq, void *p)switch (st->chip_type) {case INV_MPU6000 :case INV_MPU6050 : -case INV_MPU9150 :/* * WoM is not supported and interrupt status read seems to be broken for * some chips. Since data ready is the only interrupt, bypass interrupt
@@ -257,6 +256,10 @@ static irqreturn_t inv_mpu6050_interrupt_handle(int irq, void *p) wom_bits =0 ; int_status =INV_MPU6050_BIT_RAW_DATA_RDY_INT ; goto data_ready_interrupt; +case INV_MPU9150 : +/* IRQ needs to be acked */ + wom_bits =0 ; +break ;case INV_MPU6500 :case INV_MPU6515 :case INV_MPU6880 :
drivers/iio/industrialio-buffer.c +4 -2
@@ -228,8 +228,10 @@ static ssize_t iio_buffer_write(struct file *filp, const char __user *buf, written =0 ;add_wait_queue (&rb->pollq, &wait); do { - if (!indio_dev->info) - return -ENODEV; + if (!indio_dev->info) { + ret = -ENODEV; + break; + } if (!iio_buffer_space_available(rb)) { if (signal_pending(current)) {
drivers/iio/light/bh1780.c +1 -1
@@ -109,9 +109,9 @@ static int bh1780_read_raw(struct iio_dev *indio_dev,case IIO_LIGHT :pm_runtime_get_sync (&bh1780->client->dev); value =bh1780_read_word (bh1780,BH1780_REG_DLOW ); +pm_runtime_put_autosuspend (&bh1780->client->dev);if (value <0 )return value; -pm_runtime_put_autosuspend (&bh1780->client->dev); *val = value;return IIO_VAL_INT ;
drivers/iio/magnetometer/tlv493d.c +1 -1
@@ -171,7 +171,7 @@ static s16 tlv493d_get_channel_data(u8 *b, enum tlv493d_channels ch)switch (ch) {case TLV493D_AXIS_X : val =FIELD_GET (TLV493D_BX_MAG_X_AXIS_MSB , b[TLV493D_RD_REG_BX ]) <<4 | -FIELD_GET (TLV493D_BX2_MAG_X_AXIS_LSB , b[TLV493D_RD_REG_BX2 ]) >>4 ; +FIELD_GET (TLV493D_BX2_MAG_X_AXIS_LSB , b[TLV493D_RD_REG_BX2 ]);break ;case TLV493D_AXIS_Y : val = FIELD_GET(TLV493D_BY_MAG_Y_AXIS_MSB, b[TLV493D_RD_REG_BY]) << 4 |
drivers/iio/potentiometer/mcp4131.c +1 -1
@@ -221,7 +221,7 @@ static int mcp4131_write_raw(struct iio_dev *indio_dev,mutex_lock (&data->lock); - data->buf[0 ] = address <<MCP4131_WIPER_SHIFT ; + data->buf[0 ] = address; data->buf[0 ] |=MCP4131_WRITE | (val >>8 ); data->buf[1 ] = val &0xFF ;/* 8 bits here */
drivers/iio/proximity/hx9023s.c +4 -2
@@ -719,6 +719,9 @@ static int hx9023s_set_samp_freq(struct hx9023s_data *data, int val, int val2)struct device *dev =regmap_get_device (data->regmap);unsigned int i, period_ms; +if (!val && !val2)
Lines of this file are not shown. View the raw message.
drivers/mmc/host/dw_mmc-rockchip.c +43 -1
44 lines not on this page · raw message
drivers/net/bonding/bond_main.c +59 -94
153 lines not on this page · raw message
drivers/net/dsa/realtek/rtl8366rb-leds.c +3 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/amd/xgbe/xgbe-drv.c +4 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c +75 -7
82 lines not on this page · raw message
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/genet/bcmgenet.c +12 -19
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/genet/bcmgenet.h +1 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/genet/bcmmii.c +5 -5
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/e1000/e1000_main.c +0 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/e1000e/netdev.c +0 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c +7 -7
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/iavf/iavf_ethtool.c +6 -13
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/iavf/iavf_main.c +28 -53
81 lines not on this page · raw message
drivers/net/ethernet/intel/iavf/iavf_virtchnl.c +0 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/devlink/devlink.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_common.c +10 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_ethtool.c +14 -21
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ixgbevf/vf.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c +3 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c +0 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_rx.c +9 -14
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/eswitch.c +4 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/eswitch.h +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c +25 -20
45 lines not on this page · raw message
drivers/net/ethernet/microsoft/mana/gdma_main.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microsoft/mana/mana_en.c +18 -5
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/spacemit/k1_emac.c +13 -6
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/ti/am65-cpsw-nuss.c +27 -29
56 lines not on this page · raw message
drivers/net/ethernet/ti/am65-cpsw-nuss.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/regulator/pca9450-regulator.c +149 -23
172 lines not on this page · raw message
drivers/staging/rtl8723bs/core/rtw_ieee80211.c +10 -5
Lines of this file are not shown. View the raw message.
drivers/staging/rtl8723bs/core/rtw_mlme.c +4 -1
Lines of this file are not shown. View the raw message.
drivers/usb/core/message.c +79 -21
100 lines not on this page · raw message
drivers/usb/gadget/function/f_mass_storage.c +10 -2
Lines of this file are not shown. View the raw message.
drivers/usb/gadget/function/f_ncm.c +80 -66
146 lines not on this page · raw message
drivers/usb/gadget/function/u_ether.c +22 -45
67 lines not on this page · raw message
drivers/usb/gadget/function/u_ether.h +26 -30
56 lines not on this page · raw message
drivers/usb/gadget/function/u_ether_configfs.h +0 -176
176 lines not on this page · raw message
drivers/usb/gadget/function/uvc_video.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/usb/typec/altmodes/displayport.c +6 -1
Lines of this file are not shown. View the raw message.
include/kunit/run-in-irq-context.h +28 -16
44 lines not on this page · raw message
kernel/kthread.c +5 -36
41 lines not on this page · raw message
kernel/trace/trace_events.c +42 -16
58 lines not on this page · raw message
mm/slub.c +37 -17
54 lines not on this page · raw message
sound/soc/qcom/qdsp6/q6apm-lpass-dais.c +1 -0
Lines of this file are not shown. View the raw message.
sound/usb/format.c +65 -5
70 lines not on this page · raw message
tools/testing/selftests/filesystems/nsfs/iterate_mntns.c +15 -10
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.
Re: Linux 6.18.19 -- amdgpu bug and a new warning
In reply to Greg Kroah-HartmanHi,
A commit in 6.18.19 has introduced a bug and a new warning when doing amdgpu driver re-binding. In addition to the bug, the last line of the output below is a new warning re: the thermal alert
This bug doesn't seem to cause any show-stopping problems, but it is a bug and it persists into 6.18.20.
I can do a bisect if needed, but I'm hoping one of our AMD guys can more quickly spot what's going on :)
amdgpu 0000:14:00.0: amdgpu: amdgpu: finishing device.
------------[ cut here ]------------ WARNING: CPU: 1 PID: 2773 at drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c:639 amdgpu_irq_put+0xa4/0xc0 [amdgpu] Modules linked in: iptable_nat nf_nat ipt_REJECT nf_reject_ipv4 xt_multiport xt_LOG nf_log_syslog xt_state xt_conntrack nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 xt_tcpudp iptable_filter ip_tables x_tables bridge stp llc ipv6 nct6775 tun sg pcspkr nct6775_core nct6683 hwmon_vid edac_mce_amd uas usb_storage onboard_usb_dev joydev hid_generic usbhid hid amdgpu tpm_crb amdxcp drm_panel_backlight_quirks gpu_sched drm_buddy drm_ttm_helper snd_hda_codec_alc882 snd_hda_codec_realtek_lib ttm drm_exec intel_rapl_msr amd_atl snd_hda_codec_generic drm_suballoc_helper drm_client_lib intel_rapl_common snd_hda_codec_atihdmi snd_hda_codec_hdmi drm_display_helper cec snd_hda_intel rc_core snd_hda_codec kvm_amd snd_hda_core drm_kms_helper ee1004 wmi_bmof r8169 snd_intel_dspcfg realtek snd_intel_sdw_acpi mdio_devres kvm snd_hwdep drm of_mdio snd_pcm agpgart polyval_clmulni i2c_designware_pci fixed_phy ghash_clmulni_intel snd_timer i2c_algo_bit i2c_piix4 fwnode_mdio i2c_designware_core rapl! video i2c_smbus i2c_ccgx_ucsi snd libphy xhci_pci mfd_core soundcore ccp k10temp i2c_core mdio_bus igc xhci_hcd wmi gpio_amdpt tpm_tis gpio_generic tpm_tis_core evdev loop dm_snapshot dm_bufio vfio_pci vfio_pci_core vfio_iommu_type1 vfio iommufd irqbypass CPU: 1 UID: 0 PID: 2773 Comm: bind-device.sh Not tainted 6.18.20 #1 PREEMPT(lazy) Hardware name: To Be Filled By O.E.M. To Be Filled By O.E.M./B550 Taichi, BIOS P2.00 08/05/2021 RIP: 0010:amdgpu_irq_put+0xa4/0xc0 [amdgpu] Code: ea 48 8d 14 90 8b 12 85 d2 75 ae 5b b8 ea ff ff ff 5d 41 5c e9 a8 c9 e1 d1 89 ea 48 89 de 4c 89 e7 5b 5d 41 5c e9 9c fd ff ff <0f> 0b b8 ea ff ff ff eb a8 b8 fe ff ff ff eb a1 90 66 66 2e 0f 1f RSP: 0018:ffffcf4a8777fce0 EFLAGS: 00010246 RAX: ffff8c634233a908 RBX: ffff8c6345564008 RCX: 0000000000000000 RDX: 0000000000000000 RSI: ffff8c6345564008 RDI: ffff8c6348900000 RBP: 0000000000000000 R08: 0000000000000001 R09: ffff8c63455648e4 R10: ffffffffc14935d0 R11: ffff8c6375dd8470 R12: ffff8c6348900000 R13: ffff8c6345564000 R14: ffff8c6348900000 R15: 0000000000000000 FS: 00007f0549119740(0000) GS:ffff8c8268c28000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 000000002d3fa810 CR3: 0000000282aa9000 CR4: 0000000000f50ef0 PKRU: 55555554 Call Trace: <TASK> smu_smc_hw_cleanup+0x61/0x490 [amdgpu] smu_hw_fini+0xef/0x180 [amdgpu] amdgpu_ip_block_hw_fini+0x37/0x41 [amdgpu] amdgpu_device_fini_hw+0x20d/0x284 [amdgpu] amdgpu_pci_remove+0x48/0x80 [amdgpu] pci_device_remove+0x46/0xb0 device_release_driver_internal+0x19a/0x200 unbind_store+0xa0/0xb0 kernfs_fop_write_iter+0x149/0x200 vfs_write+0x259/0x4b0 ksys_write+0x6f/0xe0 do_syscall_64+0x4c/0x1130 entry_SYSCALL_64_after_hwframe+0x76/0x7e RIP: 0033:0x7f0548e98bfa Code: b8 04 00 00 00 48 8b 15 ec 71 16 00 64 89 02 48 c7 c2 ff ff ff ff 48 83 c4 18 48 89 d0 c3 66 90 49 89 ca 48 8b 44 24 20 0f 05 <48> 63 d0 3d 00 f0 ff ff 77 0c 48 89 d0 48 83 c4 18 c3 0f 1f 40 00 RSP: 002b:00007ffeeb12b470 EFLAGS: 00000202 ORIG_RAX: 0000000000000001 RAX: ffffffffffffffda RBX: 00007f0549001780 RCX: 00007f0548e98bfa RDX: 000000000000000d RSI: 000000002d3fa810 RDI: 0000000000000001 RBP: 000000000000000d R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000202 R12: 000000000000000d R13: 000000002d3fa810 R14: 000000002d3fa810 R15: 0000000000000000 </TASK> ---[ end trace 0000000000000000 ]--- amdgpu 0000:14:00.0: amdgpu: Fail to disable thermal alert!
Signature · 1 line
Cal Peake
Re: Linux 6.18.19 -- amdgpu bug and a new warning
Quoted 8 lines · Cal Peake
[Some people who received this message don't often get email from [email protected]. Learn why this is important at https://aka.ms/LearnAboutSenderIdentification ]
Hi,
A commit in 6.18.19 has introduced a bug and a new warning when doing amdgpu driver re-binding. In addition to the bug, the last line of the output below is a new warning re: the thermal alert
Quoted 5 lines
This bug doesn't seem to cause any show-stopping problems, but it is a bug and it persists into 6.18.20.
I can do a bisect if needed, but I'm hoping one of our AMD guys can more quickly spot what's going on :)
Are you saying it is from 6.18.18 to 6.18.19 it was introduced? Nothing immediately jumps out to me. So I would say bisect please.
Quoted 52 lines
amdgpu 0000:14:00.0: amdgpu: amdgpu: finishing device. ------------[ cut here ]------------ WARNING: CPU: 1 PID: 2773 at drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c:639 amdgpu_irq_put+0xa4/0xc0 [amdgpu] Modules linked in: iptable_nat nf_nat ipt_REJECT nf_reject_ipv4 xt_multiport xt_LOG nf_log_syslog xt_state xt_conntrack nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 xt_tcpudp iptable_filter ip_tables x_tables bridge stp llc ipv6 nct6775 tun sg pcspkr nct6775_core nct6683 hwmon_vid edac_mce_amd uas usb_storage onboard_usb_dev joydev hid_generic usbhid hid amdgpu tpm_crb amdxcp drm_panel_backlight_quirks gpu_sched drm_buddy drm_ttm_helper snd_hda_codec_alc882 snd_hda_codec_realtek_lib ttm drm_exec intel_rapl_msr amd_atl snd_hda_codec_generic drm_suballoc_helper drm_client_lib intel_rapl_common snd_hda_codec_atihdmi snd_hda_codec_hdmi drm_display_helper cec snd_hda_intel rc_core snd_hda_codec kvm_amd snd_hda_core drm_kms_helper ee1004 wmi_bmof r8169 snd_intel_dspcfg realtek snd_intel_sdw_acpi mdio_devres kvm snd_hwdep drm of_mdio snd_pcm agpgart polyval_clmulni i2c_designware_pci fixed_phy ghash_clmulni_intel snd_timer i2c_algo_bit i2c_piix4 fwnode_mdio i2c_designware_core rapl! video i2c_smbus i2c_ccgx_ucsi snd libphy xhci_pci mfd_core soundcore ccp k10temp i2c_core mdio_bus igc xhci_hcd wmi gpio_amdpt tpm_tis gpio_generic tpm_tis_core evdev loop dm_snapshot dm_bufio vfio_pci vfio_pci_core vfio_iommu_type1 vfio iommufd irqbypass CPU: 1 UID: 0 PID: 2773 Comm: bind-device.sh Not tainted 6.18.20 #1 PREEMPT(lazy) Hardware name: To Be Filled By O.E.M. To Be Filled By O.E.M./B550 Taichi, BIOS P2.00 08/05/2021 RIP: 0010:amdgpu_irq_put+0xa4/0xc0 [amdgpu] Code: ea 48 8d 14 90 8b 12 85 d2 75 ae 5b b8 ea ff ff ff 5d 41 5c e9 a8 c9 e1 d1 89 ea 48 89 de 4c 89 e7 5b 5d 41 5c e9 9c fd ff ff <0f> 0b b8 ea ff ff ff eb a8 b8 fe ff ff ff eb a1 90 66 66 2e 0f 1f RSP: 0018:ffffcf4a8777fce0 EFLAGS: 00010246 RAX: ffff8c634233a908 RBX: ffff8c6345564008 RCX: 0000000000000000 RDX: 0000000000000000 RSI: ffff8c6345564008 RDI: ffff8c6348900000 RBP: 0000000000000000 R08: 0000000000000001 R09: ffff8c63455648e4 R10: ffffffffc14935d0 R11: ffff8c6375dd8470 R12: ffff8c6348900000 R13: ffff8c6345564000 R14: ffff8c6348900000 R15: 0000000000000000 FS: 00007f0549119740(0000) GS:ffff8c8268c28000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 000000002d3fa810 CR3: 0000000282aa9000 CR4: 0000000000f50ef0 PKRU: 55555554 Call Trace: <TASK> smu_smc_hw_cleanup+0x61/0x490 [amdgpu] smu_hw_fini+0xef/0x180 [amdgpu] amdgpu_ip_block_hw_fini+0x37/0x41 [amdgpu] amdgpu_device_fini_hw+0x20d/0x284 [amdgpu] amdgpu_pci_remove+0x48/0x80 [amdgpu] pci_device_remove+0x46/0xb0 device_release_driver_internal+0x19a/0x200 unbind_store+0xa0/0xb0 kernfs_fop_write_iter+0x149/0x200 vfs_write+0x259/0x4b0 ksys_write+0x6f/0xe0 do_syscall_64+0x4c/0x1130 entry_SYSCALL_64_after_hwframe+0x76/0x7e RIP: 0033:0x7f0548e98bfa Code: b8 04 00 00 00 48 8b 15 ec 71 16 00 64 89 02 48 c7 c2 ff ff ff ff 48 83 c4 18 48 89 d0 c3 66 90 49 89 ca 48 8b 44 24 20 0f 05 <48> 63 d0 3d 00 f0 ff ff 77 0c 48 89 d0 48 83 c4 18 c3 0f 1f 40 00 RSP: 002b:00007ffeeb12b470 EFLAGS: 00000202 ORIG_RAX: 0000000000000001 RAX: ffffffffffffffda RBX: 00007f0549001780 RCX: 00007f0548e98bfa RDX: 000000000000000d RSI: 000000002d3fa810 RDI: 0000000000000001 RBP: 000000000000000d R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000202 R12: 000000000000000d R13: 000000002d3fa810 R14: 000000002d3fa810 R15: 0000000000000000 </TASK> ---[ end trace 0000000000000000 ]--- amdgpu 0000:14:00.0: amdgpu: Fail to disable thermal alert!--
Cal Peake
Re: Linux 6.18.19 -- amdgpu bug and a new warning
Hi,
Quoted 5 lines
Quoted 5 lines
A commit in 6.18.19 has introduced a bug and a new warning when doing amdgpu driver re-binding. In addition to the bug, the last line of the output below is a new warning re: the thermal alert
Quoted 8 lines
Quoted 5 lines
This bug doesn't seem to cause any show-stopping problems, but it is a bug and it persists into 6.18.20.
I can do a bisect if needed, but I'm hoping one of our AMD guys can more quickly spot what's going on :)
Are you saying it is from 6.18.18 to 6.18.19 it was introduced? Nothing immediately jumps out to me. So I would say bisect please.
I think backporting this would help ?
commit: e12603bf2c3d ("drm/amd/pm: fix amdgpu_irq enabled counter unbalanced on smu v11.0")
Quoted 5 lines
Quoted 5 lines
amdgpu 0000:14:00.0: amdgpu: amdgpu: finishing device.
------------[ cut here ]------------ WARNING: CPU: 1 PID: 2773 at drivers/gpu/drm/amd/amdgpu/ amdgpu_irq.c:639 amdgpu_irq_put+0xa4/0xc0 [amdgpu]
...
Quoted 1 line
Quoted 1 line
CPU: 1 UID: 0 PID: 2773 Comm: bind-device.sh Not tainted 6.18.20 #1 PREEMPT(lazy)
..
Quoted 4 lines
Quoted 4 lines
<TASK> smu_smc_hw_cleanup+0x61/0x490 [amdgpu] smu_hw_fini+0xef/0x180 [amdgpu] amdgpu_ip_block_hw_fini+0x37/0x41 [amdgpu]
Thanks,
Harshit
Re: Linux 6.18.19 -- amdgpu bug and a new warning
Quoted 5 lines · Harshit Mogalapalli
I think backporting this would help ?
commit:
e12603bf2c3d("drm/amd/pm: fixamdgpu_irqenabled counter unbalanced on smu v11.0")
Ah, very good find! Thank you, Harshit, this fixes things up.
Greg, please consider commit e12603bf2c3d in mainline for 6.18 stable.
Signature · 1 line
Cal Peake
Greg Kroah-Hartman
maintainerRe: Linux 6.18.19 -- amdgpu bug and a new warning
Quoted 11 lines · Cal Peake
Quoted 5 lines · Harshit Mogalapalli
I think backporting this would help ?
commit:
e12603bf2c3d("drm/amd/pm: fixamdgpu_irqenabled counter unbalanced on smu v11.0")Ah, very good find! Thank you, Harshit, this fixes things up.
Greg, please consider commit
e12603bf2c3din mainline for 6.18 stable.
Now queued up, thanks.
greg k-h