Linux 6.5.5
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.5.5 kernel.
All users of the 6.5 kernel series must upgrade.
The updated 6.5.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.5.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/admin-guide/cgroup-v1/memory.rst | 2 Documentation/arch/arm64/silicon-errata.rst | 3 Makefile | 2 arch/arm/kernel/hw_breakpoint.c | 8 arch/arm/kernel/machine_kexec.c | 14 - arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts | 16 + arch/arm64/boot/dts/qcom/sm6125-sony-xperia-seine-pdx201.dts | 2 arch/arm64/boot/dts/qcom/sm6125-xiaomi-laurel-sprout.dts | 2 arch/arm64/boot/dts/qcom/sm6350.dtsi | 2 arch/arm64/boot/dts/qcom/sm8150-sony-xperia-kumano.dtsi | 2 arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo.dtsi | 2 arch/arm64/kernel/hw_breakpoint.c | 4 arch/mips/cavium-octeon/octeon-usb.c | 8 arch/powerpc/platforms/pseries/ibmebus.c | 1 arch/riscv/kernel/elf_kexec.c | 8 arch/s390/boot/startup.c | 9 arch/x86/boot/compressed/ident_map_64.c | 8 arch/x86/include/asm/boot.h | 45 ++- arch/x86/include/asm/linkage.h | 8 arch/x86/include/asm/uaccess_64.h | 2 arch/x86/kernel/alternative.c | 9 arch/x86/kernel/amd_nb.c | 8 arch/x86/kernel/apic/x2apic_uv_x.c | 11 arch/x86/kernel/callthunks.c | 1 arch/x86/kernel/smpboot.c | 12 arch/x86/lib/copy_user_64.S | 57 ---- arch/x86/lib/putuser.S | 4 arch/x86/purgatory/Makefile | 4 block/blk-mq.c | 19 + crypto/lrw.c | 6 crypto/xts.c | 6 drivers/acpi/acpica/psopcode.c | 2 drivers/acpi/arm64/iort.c | 5 drivers/acpi/video_detect.c | 27 + drivers/acpi/x86/s2idle.c | 6 drivers/ata/ahci.c | 9 drivers/ata/libahci.c | 35 +- drivers/ata/libata-core.c | 7 drivers/ata/libata-sata.c | 19 + drivers/bluetooth/btusb.c | 15 + drivers/bus/ti-sysc.c | 2 drivers/char/tpm/tpm_tis_core.c | 13 drivers/comedi/Kconfig | 103 ++----- drivers/firewire/core-device.c | 2 drivers/firewire/core-topology.c | 2 drivers/gpu/drm/amd/amdgpu/amdgpu.h | 1 drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 18 - drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 26 - drivers/gpu/drm/amd/amdgpu/amdgpu_ih.c | 8 drivers/gpu/drm/amd/amdgpu/amdgpu_ih.h | 7 drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c | 2 drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c | 2 drivers/gpu/drm/amd/amdgpu/aqua_vanjaram_reg_init.c | 2 drivers/gpu/drm/amd/amdgpu/ih_v6_0.c | 4 drivers/gpu/drm/amd/amdgpu/navi10_ih.c | 4 drivers/gpu/drm/amd/amdgpu/vega10_ih.c | 4 drivers/gpu/drm/amd/amdgpu/vega20_ih.c | 4 drivers/gpu/drm/amd/amdkfd/kfd_priv.h | 3 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 112 ++++++-- drivers/gpu/drm/amd/display/dc/clk_mgr/dcn32/dcn32_clk_mgr.c | 2 drivers/gpu/drm/amd/display/dc/core/dc_link_enc_cfg.c | 35 ++ drivers/gpu/drm/amd/display/dc/dc.h | 1 drivers/gpu/drm/amd/display/dc/dcn314/dcn314_resource.c | 23 + drivers/gpu/drm/amd/display/dc/dcn32/dcn32_dccg.c | 3 drivers/gpu/drm/amd/display/dc/dml/dcn31/display_mode_vba_31.c | 4 drivers/gpu/drm/amd/display/dc/dml/dcn314/display_mode_vba_314.c | 4 drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c | 7 drivers/gpu/drm/amd/display/dc/inc/core_types.h | 1 drivers/gpu/drm/amd/display/dc/link/link_factory.c | 4 drivers/gpu/drm/bridge/samsung-dsim.c | 2 drivers/gpu/drm/bridge/tc358762.c | 2 drivers/gpu/drm/drm_edid.c | 1 drivers/gpu/drm/exynos/exynos_drm_crtc.c | 5 drivers/gpu/drm/i915/display/intel_bios.c | 21 + drivers/gpu/drm/i915/display/intel_bios.h | 1 drivers/gpu/drm/i915/display/intel_dp.c | 7 drivers/gpu/drm/mediatek/mtk_dp.c | 6 drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 3 drivers/gpu/drm/msm/adreno/adreno_device.c | 19 + drivers/gpu/drm/msm/adreno/adreno_gpu.h | 2 drivers/gpu/drm/radeon/radeon_sa.c | 2 drivers/gpu/drm/tiny/gm12u320.c | 10 drivers/i2c/busses/i2c-aspeed.c | 7 drivers/interconnect/core.c | 18 + drivers/md/dm-core.h | 1 drivers/md/dm-ioctl.c | 7 drivers/md/dm-table.c | 32 +- drivers/md/dm.c | 23 - drivers/md/md.c | 23 + drivers/md/md.h | 3 drivers/md/raid1.c | 3 drivers/media/pci/cx23885/cx23885-video.c | 2 drivers/media/pci/intel/ipu3/ipu3-cio2-main.c | 2 drivers/media/platform/mediatek/mdp3/mtk-mdp3-comp.c | 2 drivers/media/tuners/qt1010.c | 11 drivers/media/usb/dvb-usb-v2/af9035.c | 9 drivers/media/usb/dvb-usb-v2/anysee.c | 2 drivers/media/usb/dvb-usb-v2/az6007.c | 8 drivers/media/usb/dvb-usb-v2/gl861.c | 2 drivers/media/usb/dvb-usb/af9005.c | 5 drivers/media/usb/dvb-usb/dw2102.c | 24 + drivers/misc/Kconfig | 1 drivers/mmc/host/sdhci-esdhc-imx.c | 7 drivers/mtd/spi-nor/atmel.c | 8 drivers/mtd/spi-nor/core.c | 23 + drivers/mtd/spi-nor/core.h | 4 drivers/mtd/spi-nor/issi.c | 4 drivers/mtd/spi-nor/macronix.c | 4 drivers/mtd/spi-nor/micron-st.c | 4 drivers/mtd/spi-nor/spansion.c | 86 +++++- drivers/mtd/spi-nor/sst.c | 8 drivers/mtd/spi-nor/winbond.c | 4 drivers/mtd/spi-nor/xilinx.c | 4 drivers/net/can/Kconfig | 4 drivers/net/can/sun4i_can.c | 22 + drivers/net/ethernet/atheros/alx/ethtool.c | 5 drivers/net/ethernet/intel/ice/ice_eswitch.c | 3 drivers/net/wireless/ath/ath10k/pci.c | 2 drivers/net/wireless/ath/ath10k/usb.c | 2 drivers/net/wireless/ath/ath11k/pci.c | 2 drivers/net/wireless/ath/ath12k/dp.c | 30 ++ drivers/net/wireless/ath/ath12k/dp.h | 2 drivers/net/wireless/ath/ath12k/mac.c | 7 drivers/net/wireless/ath/ath12k/pci.c | 2 drivers/net/wireless/ath/ath12k/wmi.c | 24 + drivers/net/wireless/ath/ath9k/ahb.c | 4 drivers/net/wireless/ath/ath9k/mac.h | 6 drivers/net/wireless/ath/ath9k/pci.c | 4 drivers/net/wireless/ath/ath9k/xmit.c | 4 drivers/net/wireless/ath/wil6210/txrx.c | 2 drivers/net/wireless/ath/wil6210/txrx.h | 6 drivers/net/wireless/ath/wil6210/txrx_edma.c | 2 drivers/net/wireless/ath/wil6210/txrx_edma.h | 6 drivers/net/wireless/atmel/at76c50x-usb.c | 8 drivers/net/wireless/intel/iwlwifi/pcie/drv.c | 11 drivers/net/wireless/intersil/orinoco/orinoco_usb.c | 12 drivers/net/wireless/legacy/rndis_wlan.c | 2 drivers/net/wireless/marvell/mwifiex/tdls.c | 9 drivers/net/wireless/mediatek/mt76/mt7603/Kconfig | 2 drivers/net/wireless/mediatek/mt76/mt7615/Kconfig | 2 drivers/net/wireless/mediatek/mt76/mt76x0/Kconfig | 4 drivers/net/wireless/mediatek/mt76/mt76x2/Kconfig | 4 drivers/net/wireless/mediatek/mt76/mt7915/Kconfig | 2 drivers/net/wireless/mediatek/mt76/mt7921/mac.c | 4 drivers/net/wireless/mediatek/mt76/mt7996/Kconfig | 2 drivers/net/wireless/mediatek/mt7601u/Kconfig | 2 drivers/net/wireless/purelifi/plfxlc/Kconfig | 2 drivers/net/wireless/ralink/rt2x00/Kconfig | 2 drivers/net/wireless/realtek/rtw88/main.c | 4 drivers/net/wireless/realtek/rtw88/pci.c | 2 drivers/net/wireless/realtek/rtw88/usb.c | 2 drivers/net/wireless/realtek/rtw89/pci.c | 2 drivers/net/wireless/virtual/mac80211_hwsim.c | 12 drivers/net/wireless/zydas/zd1201.c | 6 drivers/nvme/host/core.c | 54 ++- drivers/nvme/target/tcp.c | 2 drivers/pci/controller/dwc/pci-imx6.c | 1 drivers/pci/controller/dwc/pcie-fu740.c | 1 drivers/pci/controller/vmd.c | 19 + drivers/perf/arm_smmuv3_pmu.c | 46 +++ drivers/perf/fsl_imx8_ddr_perf.c | 21 + drivers/platform/chrome/cros_ec_lpc.c | 4 drivers/platform/x86/eeepc-laptop.c | 2 drivers/scsi/lpfc/lpfc.h | 1 drivers/scsi/lpfc/lpfc_debugfs.c | 14 - drivers/scsi/lpfc/lpfc_els.c | 25 + drivers/scsi/lpfc/lpfc_init.c | 20 + drivers/scsi/lpfc/lpfc_sli.c | 8 drivers/scsi/megaraid/megaraid_sas.h | 2 drivers/scsi/megaraid/megaraid_sas_base.c | 21 - drivers/scsi/pm8001/pm8001_init.c | 51 +-- drivers/scsi/qla2xxx/qla_dfs.c | 6 drivers/scsi/qla2xxx/qla_inline.h | 2 drivers/scsi/qla2xxx/qla_isr.c | 6 drivers/scsi/qla2xxx/qla_target.c | 3 drivers/scsi/qla2xxx/tcm_qla2xxx.c | 4 drivers/spi/spi-sun6i.c | 29 +- drivers/staging/wlan-ng/prism2usb.c | 48 +-- drivers/target/iscsi/iscsi_target_configfs.c | 54 +-- drivers/target/target_core_transport.c | 1 drivers/tty/serial/cpm_uart/cpm_uart_core.c | 13 drivers/usb/cdns3/cdns3-plat.c | 3 drivers/usb/cdns3/cdnsp-pci.c | 3 drivers/usb/cdns3/core.c | 15 - drivers/usb/cdns3/core.h | 7 drivers/usb/chipidea/ci.h | 1 drivers/usb/chipidea/ci_hdrc_imx.c | 4 drivers/usb/chipidea/core.c | 2 drivers/usb/chipidea/host.c | 1 drivers/usb/gadget/udc/fsl_qe_udc.c | 2 drivers/usb/host/ehci-hcd.c | 8 drivers/usb/host/ehci-hub.c | 10 drivers/usb/host/ehci.h | 10 drivers/usb/typec/mux/intel_pmc_mux.c | 25 + drivers/usb/typec/tcpm/Kconfig | 1 drivers/usb/typec/tcpm/qcom/qcom_pmic_typec.c | 37 ++ fs/attr.c | 20 + fs/autofs/waitq.c | 3 fs/btrfs/block-group.c | 23 + fs/btrfs/delayed-inode.c | 19 + fs/btrfs/disk-io.c | 22 - fs/btrfs/extent-tree.c | 78 ++++- fs/btrfs/extent_io.c | 43 +-- fs/btrfs/extent_io.h | 7 fs/btrfs/fs.h | 3 fs/btrfs/ioctl.c | 8 fs/btrfs/ordered-data.c | 2 fs/btrfs/volumes.c | 8 fs/btrfs/volumes.h | 1 fs/btrfs/zoned.c | 131 +++++++-- fs/btrfs/zoned.h | 20 - fs/efivarfs/super.c | 14 - fs/ext2/xattr.c | 4 fs/ext4/mballoc.c | 61 +--- fs/ext4/mballoc.h | 14 + fs/ext4/namei.c | 26 + fs/iomap/buffered-io.c | 2 fs/jfs/jfs_dmap.c | 1 fs/jfs/jfs_imap.c | 1 fs/locks.c | 2 fs/nfsd/nfs4proc.c | 4 fs/overlayfs/copy_up.c | 3 fs/overlayfs/file.c | 9 fs/tracefs/inode.c | 3 include/drm/drm_kunit_helpers.h | 4 include/linux/acpi_iort.h | 1 include/linux/bpf.h | 3 include/linux/bpf_verifier.h | 2 include/linux/instruction_pointer.h | 5 include/linux/libata.h | 4 include/linux/pci_ids.h | 2 include/linux/perf_event.h | 22 + include/linux/sched/task.h | 28 +- include/linux/trace_events.h | 6 include/linux/usb/chipidea.h | 1 include/uapi/linux/netfilter_bridge/ebtables.h | 14 - io_uring/io_uring.c | 16 + io_uring/net.c | 5 kernel/bpf/verifier.c | 13 kernel/fork.c | 8 kernel/panic.c | 1 kernel/power/hibernate.c | 12 kernel/printk/internal.h | 2 kernel/printk/printk.c | 139 +++++++--- kernel/printk/printk_safe.c | 9 kernel/rcu/rcuscale.c | 2 kernel/scftorture.c | 6 kernel/trace/trace.c | 68 ++++ kernel/trace/trace.h | 2 kernel/trace/trace_events.c | 6 kernel/trace/trace_events_inject.c | 3 kernel/trace/trace_events_synth.c | 2 lib/kobject.c | 5 lib/mpi/mpi-cmp.c | 8 mm/memcontrol.c | 10 net/bluetooth/hci_core.c | 4 net/bridge/netfilter/ebtables.c | 3 net/core/sock.c | 6 net/devlink/leftover.c | 4 net/ipv4/ip_output.c | 2 net/mac80211/cfg.c | 15 - net/mac80211/rx.c | 4 net/netlink/af_netlink.c | 90 ++---- net/netlink/af_netlink.h | 22 - net/netlink/diag.c | 10 net/sunrpc/clnt.c | 2 net/wireless/mlme.c | 13 net/wireless/ocb.c | 3 samples/hw_breakpoint/data_breakpoint.c | 4 security/selinux/hooks.c | 10 sound/hda/intel-dsp-config.c | 8 sound/soc/intel/boards/sof_sdw.c | 4 sound/soc/sof/amd/acp-ipc.c | 4 sound/soc/sof/topology.c | 5 tools/iio/iio_generic_buffer.c | 17 - tools/lib/bpf/libbpf.c | 1 tools/testing/selftests/arm64/signal/testcases/zt_regs.c | 1 tools/testing/selftests/ftrace/ftracetest | 8 tools/testing/selftests/nolibc/nolibc-test.c | 35 ++ 279 files changed, 2255 insertions(+), 1018 deletions(-)
Abhishek Mainkar (1):
ACPICA: Add AML_NO_OPERAND_RESOLVE flag to Timer
Alan Stern (1):
Fix nomenclature for USB and PCI wireless devices
Alex Deucher (1):
drm/radeon: make fence wait in suballocator uninterrruptable
Alexander Gordeev (1):
s390/boot: cleanup number of page table levels setup
Alexander Steffen (1):
tpm_tis: Resend command to recover from data transfer errors
Alvin Lee (1):
drm/amd/display: Use max memclk variable when setting max memclk
Amir Goldstein (2):
ovl: fix failed copyup of fileattr on a symlink
ovl: fix incorrect fdput() on aio completion
Anand Jain (2):
btrfs: add a helper to read the superblock metadata_uuid
btrfs: compare the correct fsid/metadata_uuid in btrfs_validate_super
Andrew Kanner (1):
fs/jfs: prevent double-free in dbUnmount() after failed jfs_remount()
AngeloGioacchino Del Regno (1):
drm/mediatek: dp: Change logging to dev for mtk_dp_aux_transfer()
Arnd Bergmann (1):
samples/hw_breakpoint: fix building without module unloading
Austin Zheng (1):
drm/amd/display: Use DTBCLK as refclk instead of DPREFCLK
Avadhut Naik (1):
x86/amd_nb: Add PCI IDs for AMD Family 1Ah-based models
Avraham Stern (1):
wifi: iwlwifi: pcie: avoid a warning in case prepare card failed
Azeem Shaikh (1):
crypto: lrw,xts - Replace strlcpy with strscpy
Baokun Li (3):
ext4: add two helper functions extent_logical_end() and pa_logical_end()
ext4: avoid overlapping preallocations due to overflow
ext4: fix BUG in ext4_mb_new_inode_pa() due to overflow
Baoquan He (1):
misc: open-dice: make OPEN_DICE depend on HAS_IOMEM
Chen Yu (1):
PM: hibernate: Fix the exclusive get block device in test_resume mode
Chengming Zhou (3):
blk-mq: fix tags leak when shrink nr_hw_queues
blk-mq: prealloc tags when increase tagset nr_hw_queues
blk-mq: fix tags UAF when shrinking q->nr_hw_queues
Chenyuan Mi (1):
tools: iio: iio_generic_buffer: Fix some integer type and calculation
Chris Lu (3):
Bluetooth: btusb: Add a new VID/PID 0489/e0f6 for MT7922
Bluetooth: btusb: Add new VID/PID 0489/e102 for MT7922
Bluetooth: btusb: Add new VID/PID 04ca/3804 for MT7922Christian Brauner (1):
attr: block mode changes of symlinks
Christian König (1):
drm/amdgpu: fix amdgpu_cs_p1_user_fence
Christophe Leroy (1):
serial: cpm_uart: Avoid suspicious locking
Damien Le Moal (1):
scsi: pm8001: Setup IRQs on resume
Dave Marchevsky (2):
bpf: Consider non-owning refs trusted
bpf: Consider non-owning refs to refcounted nodes RCU protected
David Disseldorp (1):
scsi: target: core: Fix target_cmd_counter leak
Ding Xiang (1):
kselftest/arm64: fix a memleak in zt_regs_run()
Dmitry Antipov (4):
wifi: ath9k: fix fortify warnings
wifi: rtw88: delete timer and free skb queue when unloading
wifi: mwifiex: fix fortify warning
wifi: wil6210: fix fortify warnings
Dmitry Baryshkov (1):
usb: typec: qcom-pmic-typec: register drm_bridge
Dongliang Mu (1):
wifi: ath9k: fix printk specifier
Eric Dumazet (1):
netlink: convert nlk->flags to atomic flags
Fedor Pchelkin (1):
autofs: fix memory leak of waitqueues in autofs_catatonic_mode
Filipe Manana (3):
btrfs: fix lockdep splat and potential deadlock after failure running delayed items
btrfs: fix race between finishing block group creation and its item update
btrfs: release path before inode lookup during the ino lookup ioctl
GONG, Ruiqi (2):
alx: fix OOB-read compiler warning
netfilter: ebtables: fix fortify warnings in size_entry_mwt()
Georg Ottinger (1):
ext2: fix datatype of block number in ext2_xattr_set2()
Giulio Benetti (1):
mmc: sdhci-esdhc-imx: improve ESDHC_FLAG_ERR010450
Greg Kroah-Hartman (2):
Revert "memcg: drop kmem.limit_in_bytes"
Linux 6.5.5
Hamza Mahfooz (1):
Revert "drm/amd: Disable S/G for APUs when 64GB or more host memory"
Hans Verkuil (2):
media: tuners: qt1010: replace BUG_ON with a regular error
media: pci: cx23885: replace BUG with error return
Hans de Goede (1):
ACPI: video: Add backlight=native DMI quirk for Apple iMac12,1 and iMac12,2
Hao Luo (1):
libbpf: Free btf_vmlinux when closing bpf_object
Harish Kasiviswanathan (1):
drm/amdkfd: Insert missing TLB flush on GFX10 and later
Heinrich Schuchardt (1):
efivarfs: fix statfs() on efivarfs
Ian Abbott (1):
Revert "comedi: add HAS_IOPORT dependencies"
Jeff Layton (1):
nfsd: fix change_info in NFSv4 RENAME replies
Jens Axboe (2):
io_uring: annotate the struct io_kiocb slab for appropriate user copy
dm: don't attempt to queue IO under RCU protection
Jinjie Ruan (3):
drm: gm12u320: Fix the timeout usage for usb_bulk_msg()
scsi: qla2xxx: Fix NULL vs IS_ERR() bug for debugfs_create_dir()
scsi: lpfc: Fix the NULL vs IS_ERR() bug for debugfs_create_file()
Jiri Pirko (1):
devlink: remove reload failed checks in params get/set callbacks
Jiri Slaby (SUSE) (1):
ACPI: video: Add backlight=native DMI quirk for Lenovo Ideapad Z470
Johannes Berg (6):
wifi: mac80211: check S1G action frame size
wifi: cfg80211: reject auth/assoc to AP with our address
wifi: cfg80211: ocb: don't leave if not joined
wifi: mac80211: check for station first in client probe
wifi: mac80211_hwsim: drop short frames
Revert "wifi: mac80211_hwsim: check the return value of nla_put_u32"
John Ogness (5):
printk: Reduce console_unblank() usage in unsafe scenarios
printk: Keep non-panic-CPUs out of console lock
printk: Do not take console lock for console_flush_on_panic()
printk: Consolidate console deferred printing
printk: Rename abandon_console_lock_in_panic() to other_cpu_in_panic()
John Watts (2):
can: sun4i_can: Add acceptance register quirk
can: sun4i_can: Add support for the Allwinner D1
Josef Bacik (1):
btrfs: check for BTRFS_FS_ERROR in pending ordered assert
Josh Poimboeuf (1):
x86/alternatives: Remove faulty optimization
Junxiao Bi (1):
scsi: megaraid_sas: Fix deadlock on firmware crashdump
Justin Tee (1):
scsi: lpfc: Abort outstanding ELS cmds when mailbox timeout error is detected
Keith Busch (1):
nvme: avoid bogus CRTO values
Kirill A. Shutemov (1):
x86/boot/compressed: Reserve more memory for page tables
Konrad Dybcio (1):
arm64: dts: qcom: sc8280xp-x13s: Add camera activity LED
Konstantin Shelekhin (1):
scsi: target: iscsi: Fix buffer overflow in lio_target_nacl_info_show()
Krzysztof Kozlowski (5):
arm64: dts: qcom: sm6125-pdx201: correct ramoops pmsg-size
arm64: dts: qcom: sm6125-sprout: correct ramoops pmsg-size
arm64: dts: qcom: sm6350: correct ramoops pmsg-size
arm64: dts: qcom: sm8150-kumano: correct ramoops pmsg-size
arm64: dts: qcom: sm8250-edo: correct ramoops pmsg-size
Kuniyuki Iwashima (1):
net: Use sockaddr_storage for getsockopt(SO_PEERNAME).
Ladislav Michl (1):
usb: dwc3: dwc3-octeon: Verify clock divider
Leo Chen (2):
drm/amd/display: Blocking invalid 420 modes on HDMI TMDS for DCN31 drm/amd/display: Blocking invalid 420 modes on HDMI TMDS for DCN314
Leo Ma (1):
drm/amd/display: Fix underflow issue on 175hz timing
Lijo Lazar (1):
drm/amdgpu: Update ring scheduler info as needed
Liu Shixin via Jfs-discussion (1):
jfs: fix invalid free of JFS_IP(ipimap)->i_imap in diUnmount
Lu Hongfei (1):
media: mdp3: Fix resource leaks in of_find_device_by_node
Lukas Wunner (1):
panic: Reenable preemption in WARN slowpath
Ma Ke (1):
usb: gadget: fsl_qe_udc: validate endpoint index for ch9 udc
Madhu M (1):
usb: typec: intel_pmc_mux: Add new ACPI ID for Lunar Lake IOM device
Maksim Kiselev (1):
spi: sun6i: add quirk for dual and quad SPI modes support
Marek Vasut (2):
drm/bridge: tc358762: Instruct DSI host to generate HSE packets
drm: bridge: samsung-dsim: Drain command transfer FIFO before transfer
Mario Limonciello (1):
ACPI: x86: s2idle: Catch multiple ACPI_TYPE_PACKAGE objects
Mariusz Tkaczyk (1):
md: Put the right device in md_seq_next
Mark Brown (1):
PCI: dwc: Provide deinit callback for i.MX
Mark O'Donovan (1):
crypto: lib/mpi - avoid null pointer deref in mpi_cmp_ui()
Masami Hiramatsu (Google) (1):
selftests: tracing: Fix to unmount tracefs for recovering environment
Mateusz Guzik (1):
x86: bring back rep movsq for user access on CPUs without ERMS
Matt Whitlock (1):
mt76: mt7921: don't assume adequate headroom for SDIO headers
Mikulas Patocka (1):
dm: fix a race condition in retrieve_deps
Mustapha Ghaddar (2):
drm/amd/display: Add DPIA Link Encoder Assignment Fix drm/amd/display: Fix 2nd DPIA encoder Assignment
Mårten Lindahl (1):
ARM: 9317/1: kexec: Make smp stop calls asynchronous
Naohiro Aota (5):
btrfs: introduce struct to consolidate extent buffer write context
btrfs: zoned: introduce block group context to btrfs_eb_write_context
btrfs: zoned: return int from btrfs_check_meta_write_pointer
btrfs: zoned: defer advancing meta write pointer
btrfs: zoned: activate metadata block group on write time
Nigel Croxon (1):
md/raid1: fix error: ISO C90 forbids mixed declarations
Niklas Cassel (2):
ata: libata-core: fetch sense data for successful commands iff CDL enabled
ata: libata: disallow dev-initiated LPM transitions to unsupported states
Nilesh Javali (1):
scsi: qla2xxx: Use raw_smp_processor_id() instead of smp_processor_id()
Nirmal Patel (1):
PCI: vmd: Disable bridge window for domain reset
Ondrej Mosnacek (1):
selinux: fix handling of empty opts in selinux_fs_context_submount()
Paul E. McKenney (1):
scftorture: Forgive memory-allocation failure if KASAN
Pavel Begunkov (1):
io_uring/net: fix iter retargeting for selected buf
Peter Zijlstra (3):
x86/ibt: Suppress spurious ENDBR
x86/ibt: Avoid duplicate ENDBR in __put_user_nocheck*() x86,static_call: Fix static-call vs return-thunk
Philip Yang (1):
drm/amdgpu: Increase soft IH ring size
Pierre-Louis Bossart (2):
ASoC: SOF: topology: simplify code to prevent static analysis warnings
ALSA: hda: intel-dsp-cfg: add LunarLake support
Qu Wenruo (3):
btrfs: handle errors properly in update_inline_extent_backref()
btrfs: output extra debug info if we failed to find an inline backref
btrfs: fix a compilation error if DEBUG is defined in btree_dirty_folio
Rajat Soni (1):
wifi: ath12k: Fix memory leak in rx_desc and tx_desc
Ralph Campbell (1):
drm/edid: Add quirk for OSVR HDK 2.0
Ricardo Neri (1):
x86/sched: Restore the SD_ASYM_PACKING flag in the DIE domain
Ritesh Harjani (IBM) (1):
iomap: Fix possible overflow condition in iomap_write_delalloc_scan
Rob Barnes (1):
platform/chrome: cros_ec_lpc: Remove EC panic shutdown timeout
Rob Clark (4):
drm/msm/adreno: Use quirk identify hw_apriv drm/msm/adreno: Use quirk to identify cached-coherent support
interconnect: Fix locking for runpm vs reclaim
interconnect: Teach lockdep about icc_bw_lock order
Roger Gammans (1):
Bluetooth: btusb: Add support for another MediaTek 7922 VID/PID
Rong Tao (1):
samples/hw_breakpoint: Fix kernel BUG 'invalid opcode: 0000'
Sakari Ailus (1):
media: pci: ipu3-cio2: Initialise timing struct to avoid a compiler warning
Shida Zhang (1):
ext4: fix rec_len verify error
Simon Pilkington (1):
drm/amd: Make fence wait in suballocator uninterruptible
Song Liu (1):
x86/purgatory: Remove LTO flags
Song Shuai (1):
riscv: kexec: Align the kexeced kernel entry
Steve Wahl (1):
x86/platform/uv: Use alternate source for socket to node data
Steven Rostedt (Google) (7):
tracing/synthetic: Fix order of struct trace_dynamic_info
tracing: Have tracing_max_latency inc the trace array ref count
tracing: Have event inject files inc the trace array ref count
tracing: Increase trace array ref count on enable and filter files
tracing: Have current_trace inc the trace array ref count
tracing: Have option files inc the trace array ref count
tracefs: Add missing lockdown check to tracefs_create_dir()
Szuying Chen (1):
ata: libahci: clear pending interrupt status
Takahiro Kuwano (2):
mtd: spi-nor: spansion: use CLPEF as an alternative to CLSR
mtd: spi-nor: spansion: preserve CFR2V[7] when writing MEMLAT
Takashi Sakamoto (1):
Revert "firewire: core: obsolete usage of GFP_ATOMIC at building node tree"
Tero Kristo (1):
tracing/synthetic: Print out u64 values properly
Thomas Hellström (1):
drm/tests: helpers: Avoid a driver uaf
Thomas Weißschuh (1):
selftests/nolibc: prevent out of bounds access in expect_vfprintf
Tomislav Novak (1):
hw_breakpoint: fix single-stepping when using bpf_overflow_handler
Tommy Huang (1):
i2c: aspeed: Reset the i2c controller when timeout occurs
Tony Lindgren (1):
bus: ti-sysc: Configure uart quirks for k3 SoC
Trond Myklebust (1):
Revert "SUNRPC: Fail faster on bad verifier"
Tuo Li (1):
drm/exynos: fix a possible null-pointer dereference due to data race in exynos_drm_crtc_atomic_disable()
Uday M Bhat (1):
ASoC: Intel: sof_sdw: Update BT offload config for soundwire config
Valentin David (1):
Bluetooth: btusb: Add device 0489:e0f5 as MT7922 device
Varun Prakash (1):
nvmet-tcp: pass iov_len instead of sg->length to bvec_set_page()
Vijendar Mukunda (1):
ASoC: SOF: amd: clear panic mask status when panic occurs
Ville Syrjälä (1):
drm/i915: Only check eDP HPD when AUX CH is shared
Wander Lairson Costa (1):
kernel/fork: beware of __put_task_struct() calling context
Wayne Lin (1):
drm/amd/display: Adjust the MST resume flow
Wen Gong (3):
wifi: ath12k: Fix a NULL pointer dereference in ath12k_mac_op_hw_scan()
wifi: ath12k: avoid array overflow of hw mode for preferred_hw_mode
wifi: ath12k: add check max message length while scanning with extraie
Will Shiu (1):
locks: fix KASAN: use-after-free in trace_event_raw_event_filelock_lock
Wojciech Drewek (1):
ice: Don't tx before switchdev is fully configured
Xiaolei Wang (1):
usb: cdns3: Put the cdns set active part outside the spin lock
Xu Yang (3):
perf/imx_ddr: speed up overflow frequency of cycle
usb: ehci: add workaround for chipidea PORTSC.PEC bug
usb: chipidea: add workaround for chipidea PEC bug
Yicong Yang (1):
perf/smmuv3: Enable HiSilicon Erratum 162001900 quirk for HIP08/09
Yifan Zhang (1):
drm/amd/display: fix the white screen issue when >= 64GB DRAM
Ying Hsu (1):
Bluetooth: Fix hci_suspend_sync crash
Yong-Xuan Wang (1):
PCI: fu740: Set the number of MSI vectors
Yu Kuai (2):
md: don't dereference mddev after export_rdev()
md: fix warning for holder mismatch from export_rdev()
Zhang Shurong (7):
md: raid1: fix potential OOB in raid1_remove_disk()
media: dvb-usb-v2: af9035: Fix null-ptr-deref in af9035_i2c_master_xfer
media: dw2102: Fix null-ptr-deref in dw2102_i2c_transfer()
media: af9005: Fix null-ptr-deref in af9005_i2c_xfer
media: anysee: fix null-ptr-deref in anysee_master_xfer
media: az6007: Fix null-ptr-deref in az6007_i2c_xfer()
media: dvb-usb-v2: gl861: Fix null-ptr-deref in gl861_i2c_master_xferZhangjin Wu (1):
selftests/nolibc: fix up kernel parameters support
Zhen Lei (1):
kobject: Add sanity check for kset->kobj.ktype in kset_register()
Zqiang (1):
rcuscale: Move rcu_scale_writer() schedule_timeout_uninterruptible() to _idle()
ruanjinjie (1):
powerpc/pseries: fix possible memory leak in ibmebus_bus_init()
xu xin (1):
net/ipv4: return the real errno instead of -EINVAL
Greg Kroah-Hartman
maintainerDocumentation/admin-guide/cgroup-v1/memory.rst +2 -0
@@ -92,6 +92,8 @@ Brief summary of control files. memory.oom_control set/show oom controls. memory.numa_stat show the number of memory usage per numa node + memory.kmem.limit_in_bytes This knob is deprecated and writing to + it will return -ENOTSUPP. memory.kmem.usage_in_bytes show current kernel memory allocation memory.kmem.failcnt show the number of kernel memory usage hits limits
Documentation/arch/arm64/silicon-errata.rst +3 -0
@@ -198,6 +198,9 @@ stable kernels. +----------------+-----------------+-----------------+-----------------------------+ | Hisilicon | Hip08 SMMU PMCG | #162001800 | N/A | +----------------+-----------------+-----------------+-----------------------------+ +| Hisilicon | Hip08 SMMU PMCG | #162001900 | N/A | +| | Hip09 SMMU PMCG | | | ++----------------+-----------------+-----------------+-----------------------------+ +----------------+-----------------+-----------------+-----------------------------+ | Qualcomm Tech. | Kryo/Falkor v1 | E1003 | QCOM_FALKOR_ERRATUM_1003 | +----------------+-----------------+-----------------+-----------------------------+
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 5 -SUBLEVEL = 4 +SUBLEVEL = 5 EXTRAVERSION = NAME = Hurr durr I'ma ninja sloth
arch/arm/kernel/hw_breakpoint.c +4 -4
@@ -626,7 +626,7 @@ int hw_breakpoint_arch_parse(struct perf_event *bp, hw->address &= ~alignment_mask; hw->ctrl.len <<= offset; -if (is_default_overflow_handler (bp)) { +if (uses_default_overflow_handler (bp)) {/* * Mismatch breakpoints are required for single-stepping * breakpoints.
@@ -798,7 +798,7 @@ static void watchpoint_handler(unsigned long addr, unsigned int fsr,* Otherwise, insert a temporary mismatch breakpoint so that * we can single-step over the watchpoint trigger. */ -if (!is_default_overflow_handler (wp)) +if (!uses_default_overflow_handler (wp))continue ; step:enable_single_step (wp,instruction_pointer (regs));
@@ -811,7 +811,7 @@ static void watchpoint_handler(unsigned long addr, unsigned int fsr, info->trigger = addr;pr_debug ("watchpoint fired: address = 0x%x\n" , info->trigger);perf_bp_event (wp, regs); -if (is_default_overflow_handler (wp)) +if (uses_default_overflow_handler (wp))enable_single_step (wp,instruction_pointer (regs)); }
@@ -886,7 +886,7 @@ static void breakpoint_handler(unsigned long unknown, struct pt_regs *regs) info->trigger = addr;pr_debug ("breakpoint fired: address = 0x%x\n" , addr);perf_bp_event (bp, regs); -if (is_default_overflow_handler (bp)) +if (uses_default_overflow_handler (bp))enable_single_step (bp, addr); goto unlock; }
arch/arm/kernel/machine_kexec.c +13 -1
@@ -94,16 +94,28 @@ static void machine_crash_nonpanic_core(void *unused) } } +static DEFINE_PER_CPU(call_single_data_t, cpu_stop_csd) = +CSD_INIT (machine_crash_nonpanic_core, NULL); +void crash_smp_send_stop (void ) {static int cpus_stopped;unsigned long msecs; +call_single_data_t *csd; +int cpu, this_cpu =raw_smp_processor_id ();if (cpus_stopped)return ;atomic_set (&waiting_for_crash_ipi,num_online_cpus () -1 ); -smp_call_function (machine_crash_nonpanic_core,NULL , false); +for_each_online_cpu (cpu) { +if (cpu == this_cpu) +continue ; + + csd = &per_cpu (cpu_stop_csd, cpu); +smp_call_function_single_async (cpu, csd); + } + msecs =1000 ;/* Wait at most a second for the other cpus to stop */ while ((atomic_read (&waiting_for_crash_ipi) >0 ) && msecs) {mdelay (1 );
arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts +16 -0
@@ -12,6 +12,7 @@ #include <dt-bindings/iio/qcom,spmi-adc7-pmr735a.h> #include <dt-bindings/input/gpio-keys.h> #include <dt-bindings/input/input.h> +#include <dt-bindings/leds/common.h> #include <dt-bindings/regulator/qcom,rpmh-regulator.h> #include "sc8280xp.dtsi"
@@ -78,6 +79,21 @@ switch-lid { }; }; + leds { + compatible = "gpio-leds"; + + led-camera-indicator { + label = "white:camera-indicator"; + function = LED_FUNCTION_INDICATOR; + color = <LED_COLOR_ID_WHITE>; + gpios = <&tlmm 28 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "none"; + default-state = "off"; + /* Reuse as a panic indicator until we get a "camera on" trigger */ + panic-indicator; + }; + }; + pmic-glink { compatible = "qcom,sc8280xp-pmic-glink", "qcom,pmic-glink";
arch/arm64/boot/dts/qcom/sm6125-sony-xperia-seine-pdx201.dts +1 -1
@@ -79,7 +79,7 @@ pstore_mem: ramoops@ffc00000 { reg = <0x0 0xffc40000 0x0 0xc0000>; record-size = <0x1000>; console-size = <0x40000>; - msg-size = <0x20000 0x20000>; + pmsg-size = <0x20000>; }; cmdline_mem: memory@ffd00000 {
arch/arm64/boot/dts/qcom/sm6125-xiaomi-laurel-sprout.dts +1 -1
@@ -52,7 +52,7 @@ pstore_mem: ramoops@ffc00000 { reg = <0x0 0xffc40000 0x0 0xc0000>; record-size = <0x1000>; console-size = <0x40000>; - msg-size = <0x20000 0x20000>; + pmsg-size = <0x20000>; }; cmdline_mem: memory@ffd00000 {
arch/arm64/boot/dts/qcom/sm6350.dtsi +1 -1
@@ -673,7 +673,7 @@ ramoops: ramoops@ffc00000 { reg = <0 0xffc00000 0 0x100000>; record-size = <0x1000>; console-size = <0x40000>; - msg-size = <0x20000 0x20000>; + pmsg-size = <0x20000>; ecc-size = <16>; no-map; };
arch/arm64/boot/dts/qcom/sm8150-sony-xperia-kumano.dtsi +1 -1
@@ -222,7 +222,7 @@ ramoops@ffc00000 { reg = <0x0 0xffc00000 0x0 0x100000>; record-size = <0x1000>; console-size = <0x40000>; - msg-size = <0x20000 0x20000>; + pmsg-size = <0x20000>; ecc-size = <16>; no-map; };
arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo.dtsi +1 -1
@@ -126,7 +126,7 @@ ramoops@ffc00000 { reg = <0x0 0xffc00000 0x0 0x100000>; record-size = <0x1000>; console-size = <0x40000>; - msg-size = <0x20000 0x20000>; + pmsg-size = <0x20000>; ecc-size = <16>; no-map; };
arch/arm64/kernel/hw_breakpoint.c +2 -2
@@ -654,7 +654,7 @@ static int breakpoint_handler(unsigned long unused, unsigned long esr,perf_bp_event (bp, regs);/* Do we need to handle the stepping? */ -if (is_default_overflow_handler (bp)) +if (uses_default_overflow_handler (bp)) step =1 ; unlock:rcu_read_unlock ();
@@ -733,7 +733,7 @@ static u64 get_distance_from_watchpoint(unsigned long addr, u64 val,static int watchpoint_report (struct perf_event *wp,unsigned long addr,struct pt_regs *regs) { -int step =is_default_overflow_handler (wp); +int step =uses_default_overflow_handler (wp);struct arch_hw_breakpoint *info =counter_arch_bp (wp); info->trigger = addr;
arch/mips/cavium-octeon/octeon-usb.c +6 -2
@@ -243,11 +243,11 @@ static int dwc3_octeon_get_divider(void)while (div <ARRAY_SIZE (clk_div)) {uint64_t rate =octeon_get_io_clock_rate () / clk_div[div];if (rate <=300000000 && rate >=150000000 ) -break ; +return div; div++; } -return div; +return -EINVAL ; }static int dwc3_octeon_config_power (struct device *dev,void __iomem *base)
@@ -374,6 +374,10 @@ static int dwc3_octeon_clocks_start(struct device *dev, void __iomem *base)/* Step 4b: Select controller clock frequency. */ div =dwc3_octeon_get_divider (); +if (div <0 ) { +dev_err (dev,"clock divider invalid\n" ); +return div; + } val =dwc3_octeon_readq (uctl_ctl_reg); val &= ~USBDRD_UCTL_CTL_H_CLKDIV_SEL ; val |=FIELD_PREP (USBDRD_UCTL_CTL_H_CLKDIV_SEL , div);
arch/powerpc/platforms/pseries/ibmebus.c +1 -0
@@ -460,6 +460,7 @@ static int __init ibmebus_bus_init(void)if (err) {printk (KERN_WARNING "%s: device_register returned %i\n" , __func__, err); +put_device (&ibmebus_bus_device);bus_unregister (&ibmebus_bus_type);return err;
arch/riscv/kernel/elf_kexec.c +7 -1
@@ -98,7 +98,13 @@ static int elf_find_pbase(struct kimage *image, unsigned long kernel_len, kbuf.image = image; kbuf.buf_min = lowest_paddr; kbuf.buf_max =ULONG_MAX ; - kbuf.buf_align =PAGE_SIZE ; + +/* +* Current riscv boot protocol requires 2MB alignment for +* RV64 and 4MB alignment for RV32 +* +*/ + kbuf.buf_align =PMD_SIZE ; kbuf.mem =KEXEC_BUF_MEM_UNKNOWN ; kbuf.memsz =ALIGN (kernel_len,PAGE_SIZE ); kbuf.top_down = false;
arch/s390/boot/startup.c +4 -5
@@ -176,6 +176,7 @@ static unsigned long setup_kernel_memory_layout(void)unsigned long asce_limit;unsigned long rte_size;unsigned long pages; +unsigned long vsize;unsigned long vmax; pages = ident_map_size /PAGE_SIZE ;
@@ -183,11 +184,9 @@ static unsigned long setup_kernel_memory_layout(void) vmemmap_size =SECTION_ALIGN_UP (pages) *sizeof (struct page );/* choose kernel address space layout: 4 or 3 levels. */ - vmemmap_start =round_up (ident_map_size, _REGION3_SIZE); -if (IS_ENABLED (CONFIG_KASAN ) || - vmalloc_size > _REGION2_SIZE || - vmemmap_start + vmemmap_size + vmalloc_size +MODULES_LEN > - _REGION2_SIZE) { + vsize =round_up (ident_map_size, _REGION3_SIZE) + vmemmap_size +MODULES_LEN ; + vsize =size_add (vsize, vmalloc_size); +if (IS_ENABLED (CONFIG_KASAN ) || (vsize > _REGION2_SIZE)) { asce_limit = _REGION1_SIZE; rte_size = _REGION2_SIZE; }else {
arch/x86/boot/compressed/ident_map_64.c +8 -0
@@ -59,6 +59,14 @@ static void *alloc_pgt_page(void *context)return NULL ; } +/* Consumed more tables than expected? */ +if (pages->pgt_buf_offset ==BOOT_PGT_SIZE_WARN ) { +debug_putstr ("pgt_buf running low in " __FILE__"\n" ); +debug_putstr ("Need to raise BOOT_PGT_SIZE?\n" ); +debug_putaddr (pages->pgt_buf_offset); +debug_putaddr (pages->pgt_buf_size); + } + entry = pages->pgt_buf + pages->pgt_buf_offset; pages->pgt_buf_offset +=PAGE_SIZE ;
arch/x86/include/asm/boot.h +31 -14
54 lines not on this page · raw message
arch/x86/include/asm/linkage.h +8 -0
@@ -8,6 +8,14 @@#undef notrace#define notrace __attribute__((no_instrument_function)) +#ifdef CONFIG_64BIT +/* +* The generic version tends to create spurious ENDBR instructions under +* certain conditions. +*/ +#define _THIS_IP_ ({ unsigned long __here; asm ("lea 0(%%rip), %0" : "=r" (__here)); __here; }) +#endif +#ifdef CONFIG_X86_32 #define asmlinkage CPP_ASMLINKAGE __attribute__((regparm(0)))#endif /* CONFIG_X86_32 */
arch/x86/include/asm/uaccess_64.h +1 -1
@@ -116,7 +116,7 @@ copy_user_generic(void *to, const void *from, unsigned long len)"2:\n" _ASM_EXTABLE_UA(1b ,2b ) :"+c" (len), "+D" (to), "+S" (from), ASM_CALL_CONSTRAINT - : : "memory", "rax", "r8", "r9", "r10", "r11"); + : : "memory", "rax"); clac();return len; }
arch/x86/kernel/alternative.c +2 -7
@@ -720,13 +720,8 @@ void __init_or_module noinline apply_returns(s32 *start, s32 *end) {s32 *s; -/* -* Do not patch out the default return thunks if those needed are the -* ones generated by the compiler. -*/ -if (cpu_feature_enabled (X86_FEATURE_RETHUNK ) && - (x86_return_thunk == __x86_return_thunk)) -return ; +if (cpu_feature_enabled (X86_FEATURE_RETHUNK )) +static_call_force_reinit ();for (s = start; s < end; s++) {void *dest =NULL , *addr = (void *)s + *s;
arch/x86/kernel/amd_nb.c +8 -0
@@ -24,6 +24,8 @@#define PCI_DEVICE_ID_AMD_19H_M40H_ROOT 0x14b5#define PCI_DEVICE_ID_AMD_19H_M60H_ROOT 0x14d8#define PCI_DEVICE_ID_AMD_19H_M70H_ROOT 0x14e8 +#define PCI_DEVICE_ID_AMD_1AH_M00H_ROOT 0x153a +#define PCI_DEVICE_ID_AMD_1AH_M20H_ROOT 0x1507#define PCI_DEVICE_ID_AMD_MI200_ROOT 0x14bb#define PCI_DEVICE_ID_AMD_17H_DF_F4 0x1464
@@ -39,6 +41,7 @@#define PCI_DEVICE_ID_AMD_19H_M60H_DF_F4 0x14e4#define PCI_DEVICE_ID_AMD_19H_M70H_DF_F4 0x14f4#define PCI_DEVICE_ID_AMD_19H_M78H_DF_F4 0x12fc +#define PCI_DEVICE_ID_AMD_1AH_M00H_DF_F4 0x12c4#define PCI_DEVICE_ID_AMD_MI200_DF_F4 0x14d4/* Protect the PCI config register pairs used for SMN. */
@@ -56,6 +59,8 @@ static const struct pci_device_id amd_root_ids[] = { { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_19H_M40H_ROOT) }, { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_19H_M60H_ROOT) }, { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_19H_M70H_ROOT) }, + { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M00H_ROOT) }, + { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M20H_ROOT) }, { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_MI200_ROOT) }, {} };
@@ -85,6 +90,8 @@ static const struct pci_device_id amd_nb_misc_ids[] = { { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_19H_M60H_DF_F3) }, { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_19H_M70H_DF_F3) }, { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_19H_M78H_DF_F3) }, + { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M00H_DF_F3) }, + { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M20H_DF_F3) }, { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_MI200_DF_F3) }, {} };
@@ -106,6 +113,7 @@ static const struct pci_device_id amd_nb_link_ids[] = { { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_19H_M40H_DF_F4) }, { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_19H_M50H_DF_F4) }, { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_CNB17H_F4) }, + { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M00H_DF_F4) }, { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_MI200_DF_F4) }, {} };
arch/x86/kernel/apic/x2apic_uv_x.c +5 -6
@@ -1571,7 +1571,7 @@ static void __init build_socket_tables(void) {struct uv_gam_range_entry *gre = uv_gre_table;int nums, numn, nump; -int cpu, i, lnid; +int i, lnid, apicid;int minsock = _min_socket;int maxsock = _max_socket;int minpnode = _min_pnode;
@@ -1622,15 +1622,14 @@ static void __init build_socket_tables(void)/* Set socket -> node values: */ lnid =NUMA_NO_NODE ; -for_each_possible_cpu (cpu) { -int nid =cpu_to_node (cpu); -int apicid, sockid; +for (apicid =0 ; apicid <ARRAY_SIZE (__apicid_to_node); apicid++) { +int nid = __apicid_to_node[apicid]; +int sockid; -if (lnid == nid) +if ((nid ==NUMA_NO_NODE ) || (lnid == nid))continue ; lnid = nid; - apicid =per_cpu (x86_cpu_to_apicid, cpu); sockid = apicid >> uv_cpuid.socketid_shift;if (_socket_to_node[sockid - minsock] ==SOCK_EMPTY )
arch/x86/kernel/callthunks.c +0 -1
@@ -272,7 +272,6 @@ void __init callthunks_patch_builtin_calls(void)pr_info ("Setting up call depth tracking\n" );mutex_lock (&text_mutex);callthunks_setup (&cs, &builtin_coretext); -static_call_force_reinit (); thunks_initialized = true;mutex_unlock (&text_mutex); }
arch/x86/kernel/smpboot.c +9 -3
@@ -587,7 +587,6 @@ static bool match_llc(struct cpuinfo_x86 *c, struct cpuinfo_x86 *o) } -#if defined(CONFIG_SCHED_SMT ) || defined(CONFIG_SCHED_CLUSTER ) || defined(CONFIG_SCHED_MC )static inline int x86_sched_itmt_flags (void ) {return sysctl_sched_itmt_enabled ?SD_ASYM_PACKING :0 ;
@@ -611,7 +610,14 @@ static int x86_cluster_flags(void) return cpu_cluster_flags() | x86_sched_itmt_flags(); }#endif -#endif + +static int x86_die_flags (void ) +{ +if (cpu_feature_enabled (X86_FEATURE_HYBRID_CPU )) +return x86_sched_itmt_flags (); + +return 0 ; +}/* * Set if a package/die has multiple NUMA nodes inside.
@@ -653,7 +659,7 @@ static void __init build_sched_topology(void)*/ if (!x86_has_numa_in_package) { x86_topology[i++] = (struct sched_domain_topology_level ){ - cpu_cpu_mask,SD_INIT_NAME (DIE ) + cpu_cpu_mask, x86_die_flags,SD_INIT_NAME (DIE ) }; }
arch/x86/lib/copy_user_64.S +13 -44
75 lines not on this page · raw message
arch/x86/lib/putuser.S +0 -4
@@ -56,7 +56,6 @@ SYM_FUNC_END(__put_user_1) EXPORT_SYMBOL(__put_user_1) SYM_FUNC_START(__put_user_nocheck_1) - ENDBR ASM_STAC 2: movb %al,(%_ASM_CX) xor %ecx,%ecx
@@ -76,7 +75,6 @@ SYM_FUNC_END(__put_user_2) EXPORT_SYMBOL(__put_user_2) SYM_FUNC_START(__put_user_nocheck_2) - ENDBR ASM_STAC 4: movw %ax,(%_ASM_CX) xor %ecx,%ecx
@@ -96,7 +94,6 @@ SYM_FUNC_END(__put_user_4) EXPORT_SYMBOL(__put_user_4) SYM_FUNC_START(__put_user_nocheck_4) - ENDBR ASM_STAC 6: movl %eax,(%_ASM_CX) xor %ecx,%ecx
@@ -119,7 +116,6 @@ SYM_FUNC_END(__put_user_8) EXPORT_SYMBOL(__put_user_8) SYM_FUNC_START(__put_user_nocheck_8) - ENDBR ASM_STAC 9: mov %_ASM_AX,(%_ASM_CX) #ifdef CONFIG_X86_32
arch/x86/purgatory/Makefile +4 -0
@@ -19,6 +19,10 @@ CFLAGS_sha256.o := -D__DISABLE_EXPORTS -D__NO_FORTIFY # optimization flags. KBUILD_CFLAGS := $(filter-out -fprofile-sample-use=% -fprofile-use=%,$(KBUILD_CFLAGS)) +# When LTO is enabled, llvm emits many text sections, which is not supported +# by kexec. Remove -flto=* flags. +KBUILD_CFLAGS := $(filter-out $(CC_FLAGS_LTO),$(KBUILD_CFLAGS)) + # When linking purgatory.ro with -r unresolved symbols are not checked, # also link a purgatory.chk binary without -r to check for unresolved symbols. PURGATORY_LDFLAGS := -e purgatory_start -z nodefaultlib
block/blk-mq.c +17 -2
@@ -4402,6 +4402,7 @@ static int blk_mq_realloc_tag_set_tags(struct blk_mq_tag_set *set, int new_nr_hw_queues) {struct blk_mq_tags **new_tags; +int i;if (set->nr_hw_queues >= new_nr_hw_queues) goto done;
@@ -4416,6 +4417,16 @@ static int blk_mq_realloc_tag_set_tags(struct blk_mq_tag_set *set, sizeof(*set->tags));kfree (set->tags); set->tags = new_tags; + +for (i = set->nr_hw_queues; i < new_nr_hw_queues; i++) { +if (!__blk_mq_alloc_map_and_rqs (set, i)) { +while (--i >= set->nr_hw_queues) +__blk_mq_free_map_and_rqs (set, i); +return -ENOMEM ; + } +cond_resched (); + } + done: set->nr_hw_queues = new_nr_hw_queues;return 0 ;
@@ -4704,7 +4715,8 @@ static void __blk_mq_update_nr_hw_queues(struct blk_mq_tag_set *set, {struct request_queue *q;LIST_HEAD (head); -int prev_nr_hw_queues; +int prev_nr_hw_queues = set->nr_hw_queues; +int i;lockdep_assert_held (&set->tag_list_lock);
@@ -4731,7 +4743,6 @@ static void __blk_mq_update_nr_hw_queues(struct blk_mq_tag_set *set,blk_mq_sysfs_unregister_hctxs (q); } - prev_nr_hw_queues = set->nr_hw_queues;if (blk_mq_realloc_tag_set_tags (set, nr_hw_queues) <0 ) goto reregister;
@@ -4767,6 +4778,10 @@ static void __blk_mq_update_nr_hw_queues(struct blk_mq_tag_set *set,list_for_each_entry (q, &set->tag_list, tag_set_list)blk_mq_unfreeze_queue (q); + +/* Free the excess tags when nr_hw_queues shrink. */ +for (i = set->nr_hw_queues; i < prev_nr_hw_queues; i++) +__blk_mq_free_map_and_rqs (set, i); }void blk_mq_update_nr_hw_queues (struct blk_mq_tag_set *set,int nr_hw_queues)
crypto/lrw.c +3 -3
@@ -357,10 +357,10 @@ static int lrw_create(struct crypto_template *tmpl, struct rtattr **tb)* cipher name. */ if (!strncmp (cipher_name,"ecb(" ,4 )) { -unsigned len; +int len; - len =strlcpy (ecb_name, cipher_name +4 ,sizeof (ecb_name)); -if (len <2 || len >=sizeof (ecb_name)) + len =strscpy (ecb_name, cipher_name +4 ,sizeof (ecb_name)); +if (len <2 ) goto err_free_inst;if (ecb_name[len -1 ] !=')' )
crypto/xts.c +3 -3
@@ -396,10 +396,10 @@ static int xts_create(struct crypto_template *tmpl, struct rtattr **tb)* cipher name. */ if (!strncmp (cipher_name,"ecb(" ,4 )) { -unsigned len; +int len; - len =strlcpy (ctx->name, cipher_name +4 ,sizeof (ctx->name)); -if (len <2 || len >=sizeof (ctx->name)) + len =strscpy (ctx->name, cipher_name +4 ,sizeof (ctx->name)); +if (len <2 ) goto err_free_inst;if (ctx->name[len -1 ] !=')' )
drivers/acpi/acpica/psopcode.c +1 -1
@@ -603,7 +603,7 @@ const struct acpi_opcode_info acpi_gbl_aml_op_info[AML_NUM_OPCODES] = {/* 7E */ ACPI_OP ("Timer" ,ARGP_TIMER_OP ,ARGI_TIMER_OP ,ACPI_TYPE_ANY ,AML_CLASS_EXECUTE ,AML_TYPE_EXEC_0A_0T_1R , - AML_FLAGS_EXEC_0A_0T_1R), + AML_FLAGS_EXEC_0A_0T_1R | AML_NO_OPERAND_RESOLVE),/* ACPI 5.0 opcodes */
drivers/acpi/arm64/iort.c +4 -1
@@ -1708,7 +1708,10 @@ static void __init arm_smmu_v3_pmcg_init_resources(struct resource *res,static struct acpi_platform_list pmcg_plat_info[]__initdata = {/* HiSilicon Hip08 Platform */ {"HISI " ,"HIP08 " ,0 ,ACPI_SIG_IORT , greater_than_or_equal, -"Erratum #162001800" ,IORT_SMMU_V3_PMCG_HISI_HIP08 }, +"Erratum #162001800, Erratum #162001900" ,IORT_SMMU_V3_PMCG_HISI_HIP08 }, +/* HiSilicon Hip09 Platform */ + {"HISI " ,"HIP09 " ,0 ,ACPI_SIG_IORT , greater_than_or_equal, +"Erratum #162001900" ,IORT_SMMU_V3_PMCG_HISI_HIP09 }, { } };
drivers/acpi/video_detect.c +27 -0
@@ -445,6 +445,15 @@ static const struct dmi_system_id video_detect_dmi_table[] = { DMI_MATCH(DMI_BOARD_NAME, "Lenovo IdeaPad S405"), }, }, + { +/* https://bugzilla.suse.com/show_bug.cgi?id=1208724 */ + .callback = video_detect_force_native, +/* Lenovo Ideapad Z470 */ + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"LENOVO" ), + DMI_MATCH(DMI_PRODUCT_VERSION, "IdeaPad Z470"), + }, + }, {/* https://bugzilla.redhat.com/show_bug.cgi?id=1187004 */ .callback = video_detect_force_native,
@@ -486,6 +495,24 @@ static const struct dmi_system_id video_detect_dmi_table[] = { DMI_MATCH(DMI_PRODUCT_NAME, "iMac11,3"), }, }, + { +/* https://gitlab.freedesktop.org/drm/amd/-/issues/1838 */ + .callback = video_detect_force_native, +/* Apple iMac12,1 */ + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"Apple Inc." ), + DMI_MATCH(DMI_PRODUCT_NAME, "iMac12,1"), + }, + }, + { +/* https://gitlab.freedesktop.org/drm/amd/-/issues/2753 */ + .callback = video_detect_force_native, +/* Apple iMac12,2 */ + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"Apple Inc." ), + DMI_MATCH(DMI_PRODUCT_NAME, "iMac12,2"), + }, + }, {/* https://bugzilla.redhat.com/show_bug.cgi?id=1217249 */ .callback = video_detect_force_native,
drivers/acpi/x86/s2idle.c +6 -0
@@ -113,6 +113,12 @@ static void lpi_device_get_constraints_amd(void)union acpi_object *package = &out_obj->package.elements[i];if (package->type ==ACPI_TYPE_PACKAGE ) { +if (lpi_constraints_table) { +acpi_handle_err (lps0_device_handle, +"Duplicate constraints list\n" ); + goto free_acpi_buffer; + } + lpi_constraints_table =kcalloc (package->package.count,sizeof (*lpi_constraints_table),GFP_KERNEL );
drivers/ata/ahci.c +9 -0
@@ -1883,6 +1883,15 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)else dev_info (&pdev->dev,"SSS flag set, parallel bus scan disabled\n" ); +if (!(hpriv->cap &HOST_CAP_PART )) + host->flags |=ATA_HOST_NO_PART ; + +if (!(hpriv->cap &HOST_CAP_SSC )) + host->flags |=ATA_HOST_NO_SSC ; + +if (!(hpriv->cap2 &HOST_CAP2_SDS )) + host->flags |=ATA_HOST_NO_DEVSLP ; +if (pi.flags &ATA_FLAG_EM )ahci_reset_em (host);
drivers/ata/libahci.c +23 -12
@@ -1256,6 +1256,26 @@ static ssize_t ahci_activity_show(struct ata_device *dev, char *buf)return sprintf (buf,"%d\n" , emp->blink_policy); } +static void ahci_port_clear_pending_irq (struct ata_port *ap) +{ +struct ahci_host_priv *hpriv = ap->host->private_data; +void __iomem *port_mmio =ahci_port_base (ap); +u32 tmp; + +/* clear SError */ + tmp =readl (port_mmio +PORT_SCR_ERR ); +dev_dbg (ap->host->dev,"PORT_SCR_ERR 0x%x\n" , tmp); +writel (tmp, port_mmio +PORT_SCR_ERR ); + +/* clear port IRQ */ + tmp =readl (port_mmio +PORT_IRQ_STAT ); +dev_dbg (ap->host->dev,"PORT_IRQ_STAT 0x%x\n" , tmp); +if (tmp) +writel (tmp, port_mmio +PORT_IRQ_STAT ); + +writel (1 << ap->port_no, hpriv->mmio +HOST_IRQ_STAT ); +} +static void ahci_port_init (struct device *dev,struct ata_port *ap,int port_no,void __iomem *mmio,void __iomem *port_mmio)
@@ -1270,18 +1290,7 @@ static void ahci_port_init(struct device *dev, struct ata_port *ap,if (rc)dev_warn (dev,"%s (%d)\n" , emsg, rc); -/* clear SError */ - tmp =readl (port_mmio +PORT_SCR_ERR ); -dev_dbg (dev,"PORT_SCR_ERR 0x%x\n" , tmp); -writel (tmp, port_mmio +PORT_SCR_ERR ); - -/* clear port IRQ */ - tmp =readl (port_mmio +PORT_IRQ_STAT ); -dev_dbg (dev,"PORT_IRQ_STAT 0x%x\n" , tmp); -if (tmp) -writel (tmp, port_mmio +PORT_IRQ_STAT ); - -writel (1 << port_no, mmio +HOST_IRQ_STAT ); +ahci_port_clear_pending_irq (ap);/* mark esata ports */ tmp =readl (port_mmio +PORT_CMD );
@@ -1602,6 +1611,8 @@ int ahci_do_hardreset(struct ata_link *link, unsigned int *class, tf.status =ATA_BUSY ;ata_tf_to_fis (&tf,0 ,0 , d2h_fis); +ahci_port_clear_pending_irq (ap); + rc =sata_link_hardreset (link, timing, deadline, online, ahci_check_ready);
drivers/ata/libata-core.c +2 -5
@@ -4935,11 +4935,8 @@ void ata_qc_complete(struct ata_queued_cmd *qc)* timeout using the policy 0xD. For these commands, invoke EH * to get the command sense data. */ -if (qc->result_tf.status &ATA_SENSE && - ((ata_is_ncq (qc->tf.protocol) && - dev->flags &ATA_DFLAG_CDL_ENABLED ) || - (!ata_is_ncq (qc->tf.protocol) && -ata_id_sense_reporting_enabled (dev->id)))) { +if (qc->flags &ATA_QCFLAG_HAS_CDL && + qc->result_tf.status &ATA_SENSE ) {/* * Tell SCSI EH to not overwrite scmd->result even if * this command is finished with result SAM_STAT_GOOD.
drivers/ata/libata-sata.c +16 -3
@@ -396,10 +396,23 @@ int sata_link_scr_lpm(struct ata_link *link, enum ata_lpm_policy policy,case ATA_LPM_MED_POWER_WITH_DIPM :case ATA_LPM_MIN_POWER_WITH_PARTIAL :case ATA_LPM_MIN_POWER : -if (ata_link_nr_enabled (link) >0 ) -/* no restrictions on LPM transitions */ +if (ata_link_nr_enabled (link) >0 ) { +/* assume no restrictions on LPM transitions */ scontrol &= ~(0x7 <<8 ); -else { + +/* +* If the controller does not support partial, slumber, +* or devsleep, then disallow these transitions. +*/ +if (link->ap->host->flags &ATA_HOST_NO_PART ) + scontrol |= (0x1 <<8 ); + +if (link->ap->host->flags &ATA_HOST_NO_SSC ) + scontrol |= (0x2 <<8 ); + +if (link->ap->host->flags &ATA_HOST_NO_DEVSLP ) + scontrol |= (0x4 <<8 ); + }else {/* empty port, power off */ scontrol &= ~0xf ; scontrol |= (0x1 <<2 );
drivers/bluetooth/btusb.c +15 -0
@@ -625,9 +625,24 @@ static const struct usb_device_id blacklist_table[] = { { USB_DEVICE(0x0489, 0xe0e4), .driver_info = BTUSB_MEDIATEK |BTUSB_WIDEBAND_SPEECH | BTUSB_VALID_LE_STATES }, + { USB_DEVICE(0x0489, 0xe0f1), .driver_info = BTUSB_MEDIATEK | +BTUSB_WIDEBAND_SPEECH | + BTUSB_VALID_LE_STATES }, { USB_DEVICE(0x0489, 0xe0f2), .driver_info = BTUSB_MEDIATEK |BTUSB_WIDEBAND_SPEECH | BTUSB_VALID_LE_STATES }, + { USB_DEVICE(0x0489, 0xe0f5), .driver_info = BTUSB_MEDIATEK | +BTUSB_WIDEBAND_SPEECH | + BTUSB_VALID_LE_STATES }, + { USB_DEVICE(0x0489, 0xe0f6), .driver_info = BTUSB_MEDIATEK | +BTUSB_WIDEBAND_SPEECH | + BTUSB_VALID_LE_STATES }, + { USB_DEVICE(0x0489, 0xe102), .driver_info = BTUSB_MEDIATEK | +BTUSB_WIDEBAND_SPEECH | + BTUSB_VALID_LE_STATES }, + { USB_DEVICE(0x04ca, 0x3804), .driver_info = BTUSB_MEDIATEK | +BTUSB_WIDEBAND_SPEECH | + BTUSB_VALID_LE_STATES }, /* Additional Realtek 8723AE Bluetooth devices */ { USB_DEVICE(0x0930, 0x021d), .driver_info = BTUSB_REALTEK },
drivers/bus/ti-sysc.c +2 -0
@@ -1525,6 +1525,8 @@ static const struct sysc_revision_quirk sysc_revision_quirks[] = { SYSC_QUIRK_SWSUP_SIDLE | SYSC_QUIRK_LEGACY_IDLE),SYSC_QUIRK ("uart" ,0 ,0x50 ,0x54 ,0x58 ,0x47422e03 ,0xffffffff ,SYSC_QUIRK_SWSUP_SIDLE |SYSC_QUIRK_LEGACY_IDLE ), +SYSC_QUIRK ("uart" ,0 ,0x50 ,0x54 ,0x58 ,0x47424e03 ,0xffffffff , +SYSC_QUIRK_SWSUP_SIDLE |SYSC_QUIRK_LEGACY_IDLE ),/* Quirks that need to be set based on the module address */ SYSC_QUIRK("mcpdm", 0x40132000, 0, 0x10, -ENODEV, 0x50000800, 0xffffffff,
drivers/char/tpm/tpm_tis_core.c +10 -3
@@ -512,10 +512,17 @@ static int tpm_tis_send_main(struct tpm_chip *chip, const u8 *buf, size_t len)int rc;u32 ordinal;unsigned long dur; +unsigned int try; - rc =tpm_tis_send_data (chip, buf, len); -if (rc <0 ) -return rc; +for (try =0 ; try <TPM_RETRY ; try++) { + rc =tpm_tis_send_data (chip, buf, len); +if (rc >=0 ) +/* Data transfer done successfully */ +break ; +else if (rc != -EIO ) +/* Data transfer failed, not recoverable */ +return rc; + } rc =tpm_tis_verify_crc (priv, len, buf);if (rc <0 ) {
drivers/comedi/Kconfig +35 -68
379 lines not on this page · raw message
drivers/firewire/core-device.c +1 -1
@@ -1211,7 +1211,7 @@ void fw_node_event(struct fw_card *card, struct fw_node *node, int event)* without actually having a link. */ create: - device =kzalloc (sizeof (*device),GFP_KERNEL ); + device =kzalloc (sizeof (*device),GFP_ATOMIC );if (device ==NULL )break ;
drivers/firewire/core-topology.c +1 -1
@@ -101,7 +101,7 @@ static struct fw_node *fw_node_create(u32 sid, int port_count, int color) {struct fw_node *node; - node =kzalloc (struct_size (node, ports, port_count),GFP_KERNEL ); + node =kzalloc (struct_size (node, ports, port_count),GFP_ATOMIC );if (node ==NULL )return NULL ;
drivers/gpu/drm/amd/amdgpu/amdgpu.h +0 -1
@@ -1296,7 +1296,6 @@ int amdgpu_device_gpu_recover(struct amdgpu_device *adev,void amdgpu_device_pci_config_reset (struct amdgpu_device *adev);int amdgpu_device_pci_reset (struct amdgpu_device *adev);bool amdgpu_device_need_post (struct amdgpu_device *adev); -bool amdgpu_sg_display_supported (struct amdgpu_device *adev);bool amdgpu_device_pcie_dynamic_switching_supported (void );bool amdgpu_device_should_use_aspm (struct amdgpu_device *adev);bool amdgpu_device_aspm_support_quirk (void );
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +4 -14
@@ -127,7 +127,6 @@ static int amdgpu_cs_p1_user_fence(struct amdgpu_cs_parser *p,struct drm_gem_object *gobj;struct amdgpu_bo *bo;unsigned long size; -int r; gobj =drm_gem_object_lookup (p->filp, data->handle);if (gobj ==NULL )
@@ -139,23 +138,14 @@ static int amdgpu_cs_p1_user_fence(struct amdgpu_cs_parser *p,drm_gem_object_put (gobj); size =amdgpu_bo_size (bo); -if (size !=PAGE_SIZE || (data->offset +8 ) > size) { - r = -EINVAL ; - goto error_unref; - } +if (size !=PAGE_SIZE || data->offset > (size -8 )) +return -EINVAL ; -if (amdgpu_ttm_tt_get_usermm (bo->tbo.ttm)) { - r = -EINVAL ; - goto error_unref; - } +if (amdgpu_ttm_tt_get_usermm (bo->tbo.ttm)) +return -EINVAL ; *offset = data->offset; -return 0 ; - -error_unref: -amdgpu_bo_unref (&bo); -return r; } static int amdgpu_cs_p1_bo_handles(struct amdgpu_cs_parser *p,
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +0 -26
@@ -1461,32 +1461,6 @@ bool amdgpu_device_need_post(struct amdgpu_device *adev)return true; } -/* -* On APUs with >= 64GB white flickering has been observed w/ SG enabled. -* Disable S/G on such systems until we have a proper fix. -* https://gitlab.freedesktop.org/drm/amd/-/issues/2354 -* https://gitlab.freedesktop.org/drm/amd/-/issues/2735 -*/ -bool amdgpu_sg_display_supported (struct amdgpu_device *adev) -{ -switch (amdgpu_sg_display) { -case -1 : -break ; -case 0 : -return false; -case 1 : -return true; -default : -return false; - } -if ((totalram_pages () << (PAGE_SHIFT -10 )) + - (adev->gmc.real_vram_size /1024 ) >=64000000 ) { -DRM_WARN ("Disabling S/G due to >=64GB RAM\n" ); -return false; - } -return true; -} -/* * Intel hosts such as Raptor Lake and Sapphire Rapids don't support dynamic * speed switching. Until we have confirmation from Intel that a specific host
drivers/gpu/drm/amd/amdgpu/amdgpu_ih.c +6 -2
@@ -138,6 +138,7 @@ void amdgpu_ih_ring_fini(struct amdgpu_device *adev, struct amdgpu_ih_ring *ih)/** * amdgpu_ih_ring_write - write IV to the ring buffer * +* @adev: amdgpu_device pointer * @ih: ih ring to write to * @iv: the iv to write * @num_dw: size of the iv in dw
@@ -145,8 +146,8 @@ void amdgpu_ih_ring_fini(struct amdgpu_device *adev, struct amdgpu_ih_ring *ih)* Writes an IV to the ring buffer using the CPU and increment the wptr. * Used for testing and delegating IVs to a software ring. */ -void amdgpu_ih_ring_write (struct amdgpu_ih_ring *ih,const uint32_t *iv, -unsigned int num_dw) +void amdgpu_ih_ring_write (struct amdgpu_device *adev,struct amdgpu_ih_ring *ih, +const uint32_t *iv,unsigned int num_dw) {uint32_t wptr =le32_to_cpu (*ih->wptr_cpu) >>2 ;unsigned int i;
@@ -161,6 +162,9 @@ void amdgpu_ih_ring_write(struct amdgpu_ih_ring *ih, const uint32_t *iv,if (wptr !=READ_ONCE (ih->rptr)) {wmb ();WRITE_ONCE (*ih->wptr_cpu,cpu_to_le32 (wptr)); + }else if (adev->irq.retry_cam_enabled) { +dev_warn_once (adev->dev,"IH soft ring buffer overflow 0x%X, 0x%X\n" , + wptr, ih->rptr); } }
drivers/gpu/drm/amd/amdgpu/amdgpu_ih.h +5 -2
@@ -27,6 +27,9 @@/* Maximum number of IVs processed at once */ #define AMDGPU_IH_MAX_NUM_IVS 32 +#define IH_RING_SIZE (256 * 1024) +#define IH_SW_RING_SIZE (8 * 1024)/* enough for 256 CAM entries */ +struct amdgpu_device ;struct amdgpu_iv_entry ;
@@ -97,8 +100,8 @@ struct amdgpu_ih_funcs {int amdgpu_ih_ring_init (struct amdgpu_device *adev,struct amdgpu_ih_ring *ih,unsigned ring_size,bool use_bus_addr);void amdgpu_ih_ring_fini (struct amdgpu_device *adev,struct amdgpu_ih_ring *ih); -void amdgpu_ih_ring_write (struct amdgpu_ih_ring *ih,const uint32_t *iv, -unsigned int num_dw); +void amdgpu_ih_ring_write (struct amdgpu_device *adev,struct amdgpu_ih_ring *ih, +const uint32_t *iv,unsigned int num_dw);int amdgpu_ih_wait_on_checkpoint_process_ts (struct amdgpu_device *adev,struct amdgpu_ih_ring *ih);int amdgpu_ih_process (struct amdgpu_device *adev,struct amdgpu_ih_ring *ih);
drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c +1 -1
@@ -493,7 +493,7 @@ void amdgpu_irq_delegate(struct amdgpu_device *adev,struct amdgpu_iv_entry *entry, unsigned int num_dw) { - amdgpu_ih_ring_write(&adev->irq.ih_soft, entry->iv_entry, num_dw); + amdgpu_ih_ring_write(adev, &adev->irq.ih_soft, entry->iv_entry, num_dw);schedule_work (&adev->irq.ih_soft_work); }
drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c +1 -1
@@ -81,7 +81,7 @@ int amdgpu_sa_bo_new(struct amdgpu_sa_manager *sa_manager, unsigned int size) {struct drm_suballoc *sa =drm_suballoc_new (&sa_manager->base, size, -GFP_KERNEL , true,0 ); +GFP_KERNEL , false,0 );if (IS_ERR (sa)) { *sa_bo =NULL ;
drivers/gpu/drm/amd/amdgpu/aqua_vanjaram_reg_init.c +1 -1
@@ -134,7 +134,7 @@ static int aqua_vanjaram_xcp_sched_list_update(for (i =0 ; i <AMDGPU_MAX_RINGS ; i++) { ring = adev->rings[i]; -if (!ring || !ring->sched.ready) +if (!ring || !ring->sched.ready || ring->no_scheduler)continue ;aqua_vanjaram_xcp_gpu_sched_update (adev, ring, ring->xcp_id);
drivers/gpu/drm/amd/amdgpu/ih_v6_0.c +2 -2
@@ -535,7 +535,7 @@ static int ih_v6_0_sw_init(void *handle)* use bus address for ih ring by psp bl */ use_bus_addr = (adev->firmware.load_type ==AMDGPU_FW_LOAD_PSP ) ? false : true; - r =amdgpu_ih_ring_init (adev, &adev->irq.ih,256 *1024 , use_bus_addr); + r =amdgpu_ih_ring_init (adev, &adev->irq.ih,IH_RING_SIZE , use_bus_addr);if (r)return r;
@@ -548,7 +548,7 @@ static int ih_v6_0_sw_init(void *handle)/* initialize ih control register offset */ ih_v6_0_init_register_offset (adev); - r =amdgpu_ih_ring_init (adev, &adev->irq.ih_soft,PAGE_SIZE , true); + r =amdgpu_ih_ring_init (adev, &adev->irq.ih_soft,IH_SW_RING_SIZE , true);if (r)return r;
drivers/gpu/drm/amd/amdgpu/navi10_ih.c +2 -2
@@ -565,7 +565,7 @@ static int navi10_ih_sw_init(void *handle) use_bus_addr = false; else use_bus_addr = true; - r =amdgpu_ih_ring_init (adev, &adev->irq.ih,256 *1024 , use_bus_addr); + r =amdgpu_ih_ring_init (adev, &adev->irq.ih,IH_RING_SIZE , use_bus_addr);if (r)return r;
@@ -578,7 +578,7 @@ static int navi10_ih_sw_init(void *handle)/* initialize ih control registers offset */ navi10_ih_init_register_offset (adev); - r =amdgpu_ih_ring_init (adev, &adev->irq.ih_soft,PAGE_SIZE , true); + r =amdgpu_ih_ring_init (adev, &adev->irq.ih_soft,IH_SW_RING_SIZE , true);if (r)return r;
drivers/gpu/drm/amd/amdgpu/vega10_ih.c +2 -2
@@ -485,7 +485,7 @@ static int vega10_ih_sw_init(void *handle)if (r)return r; - r =amdgpu_ih_ring_init (adev, &adev->irq.ih,256 *1024 , true); + r =amdgpu_ih_ring_init (adev, &adev->irq.ih,IH_RING_SIZE , true);if (r)return r;
@@ -510,7 +510,7 @@ static int vega10_ih_sw_init(void *handle)/* initialize ih control registers offset */ vega10_ih_init_register_offset (adev); - r =amdgpu_ih_ring_init (adev, &adev->irq.ih_soft,PAGE_SIZE , true); + r =amdgpu_ih_ring_init (adev, &adev->irq.ih_soft,IH_SW_RING_SIZE , true);if (r)return r;
drivers/gpu/drm/amd/amdgpu/vega20_ih.c +2 -2
@@ -539,7 +539,7 @@ static int vega20_ih_sw_init(void *handle) (adev->ip_versions[OSSSYS_HWIP][0] == IP_VERSION(4, 4, 2))) use_bus_addr = false; - r =amdgpu_ih_ring_init (adev, &adev->irq.ih,256 *1024 , use_bus_addr); + r =amdgpu_ih_ring_init (adev, &adev->irq.ih,IH_RING_SIZE , use_bus_addr);if (r)return r;
@@ -565,7 +565,7 @@ static int vega20_ih_sw_init(void *handle)/* initialize ih control registers offset */ vega20_ih_init_register_offset (adev); - r =amdgpu_ih_ring_init (adev, &adev->irq.ih_soft,PAGE_SIZE , use_bus_addr); + r =amdgpu_ih_ring_init (adev, &adev->irq.ih_soft,IH_SW_RING_SIZE , use_bus_addr);if (r)return r;
drivers/gpu/drm/amd/amdkfd/kfd_priv.h +1 -2
@@ -1487,8 +1487,7 @@ void kfd_flush_tlb(struct kfd_process_device *pdd, enum TLB_FLUSH_TYPE type);static inline bool kfd_flush_tlb_after_unmap (struct kfd_dev *dev) { -return KFD_GC_VERSION (dev) ==IP_VERSION (9 ,4 ,3 ) || -KFD_GC_VERSION (dev) ==IP_VERSION (9 ,4 ,2 ) || +return KFD_GC_VERSION (dev) >IP_VERSION (9 ,4 ,2 ) || (KFD_GC_VERSION (dev) ==IP_VERSION (9 ,4 ,1 ) && dev->sdma_fw_version >=18 ) ||KFD_GC_VERSION (dev) ==IP_VERSION (9 ,4 ,0 ); }
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +92 -20
163 lines not on this page · raw message
drivers/gpu/drm/amd/display/dc/clk_mgr/dcn32/dcn32_clk_mgr.c +1 -1
@@ -802,7 +802,7 @@ static void dcn32_set_hard_min_memclk(struct clk_mgr *clk_mgr_base, bool current khz_to_mhz_ceil(clk_mgr_base->clks.dramclk_khz)); else dcn32_smu_set_hard_min_by_freq(clk_mgr, PPCLK_UCLK, - clk_mgr_base->bw_params->clk_table.entries[clk_mgr_base->bw_params->clk_table.num_entries_per_clk.num_memclk_levels - 1].memclk_mhz); + clk_mgr_base->bw_params->max_memclk_mhz); }else {dcn32_smu_set_hard_min_by_freq (clk_mgr,PPCLK_UCLK , clk_mgr_base->bw_params->clk_table.entries[0 ].memclk_mhz);
drivers/gpu/drm/amd/display/dc/core/dc_link_enc_cfg.c +28 -7
@@ -169,11 +169,23 @@ static void add_link_enc_assignment(/* Return first available DIG link encoder. */ static enum engine_id find_first_avail_link_enc (const struct dc_context *ctx, -const struct dc_state *state) +const struct dc_state *state, +enum engine_id eng_id_requested) {enum engine_id eng_id =ENGINE_ID_UNKNOWN ;int i; +if (eng_id_requested !=ENGINE_ID_UNKNOWN ) { + +for (i =0 ; i < ctx->dc->res_pool->res_cap->num_dig_link_enc; i++) { + eng_id = state->res_ctx.link_enc_cfg_ctx.link_enc_avail[i]; +if (eng_id == eng_id_requested) +return eng_id; + } + } + + eng_id =ENGINE_ID_UNKNOWN ; +for (i =0 ; i < ctx->dc->res_pool->res_cap->num_dig_link_enc; i++) { eng_id = state->res_ctx.link_enc_cfg_ctx.link_enc_avail[i];if (eng_id !=ENGINE_ID_UNKNOWN )
@@ -287,7 +299,7 @@ void link_enc_cfg_link_encs_assign( struct dc_stream_state *streams[], uint8_t stream_count) { -enum engine_id eng_id =ENGINE_ID_UNKNOWN ; +enum engine_id eng_id =ENGINE_ID_UNKNOWN , eng_id_req =ENGINE_ID_UNKNOWN ;int i;int j;
@@ -377,8 +389,14 @@ void link_enc_cfg_link_encs_assign(* assigned to that endpoint. */ link_enc =get_link_enc_used_by_link (state, stream->link); -if (link_enc ==NULL ) - eng_id =find_first_avail_link_enc (stream->ctx, state); +if (link_enc ==NULL ) { + +if (stream->link->ep_type ==DISPLAY_ENDPOINT_USB4_DPIA && + stream->link->dpia_preferred_eng_id !=ENGINE_ID_UNKNOWN ) + eng_id_req = stream->link->dpia_preferred_eng_id; + + eng_id =find_first_avail_link_enc (stream->ctx, state, eng_id_req); + }else eng_id = link_enc->preferred_engine;
@@ -402,7 +420,9 @@ void link_enc_cfg_link_encs_assign(DC_LOG_DEBUG ("%s: CUR %s(%d) - enc_id(%d)\n" , __func__, assignment.ep_id.ep_type ==DISPLAY_ENDPOINT_PHY ?"PHY" :"DPIA" , - assignment.ep_id.link_id.enum_id -1 , + assignment.ep_id.ep_type ==DISPLAY_ENDPOINT_PHY ? + assignment.ep_id.link_id.enum_id : + assignment.ep_id.link_id.enum_id -1 , assignment.eng_id); }for (i =0 ; i <MAX_PIPES ; i++) {
@@ -413,7 +433,9 @@ void link_enc_cfg_link_encs_assign(DC_LOG_DEBUG ("%s: NEW %s(%d) - enc_id(%d)\n" , __func__, assignment.ep_id.ep_type ==DISPLAY_ENDPOINT_PHY ?"PHY" :"DPIA" , - assignment.ep_id.link_id.enum_id -1 , + assignment.ep_id.ep_type ==DISPLAY_ENDPOINT_PHY ? + assignment.ep_id.link_id.enum_id : + assignment.ep_id.link_id.enum_id -1 , assignment.eng_id); }
@@ -478,7 +500,6 @@ struct dc_link *link_enc_cfg_get_link_using_link_enc(if (stream) link = stream->link; -// dm_output_to_console("%s: No link using DIG(%d).\n", __func__, eng_id); return link; }
drivers/gpu/drm/amd/display/dc/dc.h +1 -0
@@ -1479,6 +1479,7 @@ struct dc_link {* object creation. */ enum engine_id eng_id; +enum engine_id dpia_preferred_eng_id;bool test_pattern_enabled;union compliance_test_state compliance_test_state;
drivers/gpu/drm/amd/display/dc/dcn314/dcn314_resource.c +23 -0
@@ -1029,6 +1029,28 @@ static const struct dce_i2c_mask i2c_masks = { I2C_COMMON_MASK_SH_LIST_DCN30(_MASK) }; +/* ========================================================== */ + +/* +* DPIA index | Preferred Encoder | Host Router +* 0 | C | 0 +* 1 | First Available | 0 +* 2 | D | 1 +* 3 | First Available | 1 +*/ +/* ========================================================== */ +static const enum engine_id dpia_to_preferred_enc_id_table[] = { +ENGINE_ID_DIGC , +ENGINE_ID_DIGC , +ENGINE_ID_DIGD , +ENGINE_ID_DIGD +}; + +static enum engine_id dcn314_get_preferred_eng_id_dpia (unsigned int dpia_index) +{ +return dpia_to_preferred_enc_id_table[dpia_index]; +} +static struct dce_i2c_hw *dcn31_i2c_hw_create (struct dc_context *ctx,uint32_t inst)
@@ -1777,6 +1799,7 @@ static struct resource_funcs dcn314_res_pool_funcs = { .update_bw_bounding_box = dcn314_update_bw_bounding_box, .patch_unknown_plane_state = dcn20_patch_unknown_plane_state, .get_panel_config_defaults = dcn314_get_panel_config_defaults, + .get_preferred_eng_id_dpia = dcn314_get_preferred_eng_id_dpia, }; static struct clock_source *dcn30_clock_source_create(
drivers/gpu/drm/amd/display/dc/dcn32/dcn32_dccg.c +2 -1
@@ -281,7 +281,8 @@ static void dccg32_set_dpstreamclk(struct dcn_dccg *dccg_dcn =TO_DCN_DCCG (dccg);/* set the dtbclk_p source */ -dccg32_set_dtbclk_p_src (dccg, src, otg_inst); +/* always program refclk as DTBCLK. No use-case expected to require DPREFCLK as refclk */ +dccg32_set_dtbclk_p_src (dccg,DTBCLK0 , otg_inst);/* enabled to select one of the DTBCLKs for pipe */ switch (dp_hpo_inst) {
drivers/gpu/drm/amd/display/dc/dml/dcn31/display_mode_vba_31.c +3 -1
@@ -4135,7 +4135,9 @@ void dml31_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l }if (v->OutputFormat[k] == dm_420 && v->HActive[k] >DCN31_MAX_FMT_420_BUFFER_WIDTH && v->ODMCombineEnablePerState[i][k] != dm_odm_combine_mode_4to1) { -if (v->HActive[k] /2 >DCN31_MAX_FMT_420_BUFFER_WIDTH ) { +if (v->Output[k] == dm_hdmi) { + FMTBufferExceeded = true; + }else if (v->HActive[k] /2 >DCN31_MAX_FMT_420_BUFFER_WIDTH ) { v->ODMCombineEnablePerState[i][k] = dm_odm_combine_mode_4to1; v->PlaneRequiredDISPCLK = v->PlaneRequiredDISPCLKWithODMCombine4To1;
drivers/gpu/drm/amd/display/dc/dml/dcn314/display_mode_vba_314.c +3 -1
@@ -4227,7 +4227,9 @@ void dml314_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_ }if (v->OutputFormat[k] == dm_420 && v->HActive[k] >DCN314_MAX_FMT_420_BUFFER_WIDTH && v->ODMCombineEnablePerState[i][k] != dm_odm_combine_mode_4to1) { -if (v->HActive[k] /2 >DCN314_MAX_FMT_420_BUFFER_WIDTH ) { +if (v->Output[k] == dm_hdmi) { + FMTBufferExceeded = true; + }else if (v->HActive[k] /2 >DCN314_MAX_FMT_420_BUFFER_WIDTH ) { v->ODMCombineEnablePerState[i][k] = dm_odm_combine_mode_4to1; v->PlaneRequiredDISPCLK = v->PlaneRequiredDISPCLKWithODMCombine4To1;
drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c +6 -1
@@ -3459,6 +3459,7 @@ bool dml32_CalculatePrefetchSchedule(double TimeForFetchingMetaPTE =0 ;double TimeForFetchingRowInVBlank =0 ;double LinesToRequestPrefetchPixelData =0 ; +double LinesForPrefetchBandwidth =0 ;unsigned int HostVMDynamicLevelsTrips;double trip_to_mem;double Tvm_trips;
@@ -3888,11 +3889,15 @@ bool dml32_CalculatePrefetchSchedule( TimeForFetchingMetaPTE = Tvm_oto; TimeForFetchingRowInVBlank = Tr0_oto; *PrefetchBandwidth = prefetch_bw_oto; +/* Clamp to oto for bandwidth calculation */ + LinesForPrefetchBandwidth = dst_y_prefetch_oto; }else { *DestinationLinesForPrefetch = dst_y_prefetch_equ; TimeForFetchingMetaPTE = Tvm_equ; TimeForFetchingRowInVBlank = Tr0_equ; *PrefetchBandwidth = prefetch_bw_equ; +/* Clamp to equ for bandwidth calculation */ + LinesForPrefetchBandwidth = dst_y_prefetch_equ; } *DestinationLinesToRequestVMInVBlank =dml_ceil (4.0 * TimeForFetchingMetaPTE / LineTime,1.0 ) /4.0 ;
@@ -3900,7 +3905,7 @@ bool dml32_CalculatePrefetchSchedule( *DestinationLinesToRequestRowInVBlank =dml_ceil (4.0 * TimeForFetchingRowInVBlank / LineTime,1.0 ) /4.0 ; - LinesToRequestPrefetchPixelData = *DestinationLinesForPrefetch - + LinesToRequestPrefetchPixelData = LinesForPrefetchBandwidth - *DestinationLinesToRequestVMInVBlank -2 * *DestinationLinesToRequestRowInVBlank;#ifdef __DML_VBA_DEBUG__
drivers/gpu/drm/amd/display/dc/inc/core_types.h +1 -0
@@ -65,6 +65,7 @@ struct resource_context;struct clk_bw_params ;struct resource_funcs { +enum engine_id (*get_preferred_eng_id_dpia)(unsigned int dpia_index);void (*destroy)(struct resource_pool **pool);void (*link_init)(struct dc_link *link); struct panel_cntl*(*panel_cntl_create)(
drivers/gpu/drm/amd/display/dc/link/link_factory.c +4 -0
@@ -783,6 +783,10 @@ static bool construct_dpia(struct dc_link *link,/* Set dpia port index : 0 to number of dpia ports */ link->ddc_hw_inst = init_params->connector_index; +// Assign Dpia preferred eng_id +if (link->dc->res_pool->funcs->get_preferred_eng_id_dpia) + link->dpia_preferred_eng_id = link->dc->res_pool->funcs->get_preferred_eng_id_dpia (link->ddc_hw_inst); +/* TODO: Create link encoder */ link->psr_settings.psr_version =DC_PSR_VERSION_UNSUPPORTED ;
drivers/gpu/drm/bridge/samsung-dsim.c +1 -1
@@ -1009,7 +1009,7 @@ static int samsung_dsim_wait_for_hdr_fifo(struct samsung_dsim *dsi) do { u32 reg = samsung_dsim_read(dsi, DSIM_FIFOCTRL_REG); - if (!(reg & DSIM_SFR_HEADER_FULL)) + if (reg & DSIM_SFR_HEADER_EMPTY) return 0; if (!cond_resched())
drivers/gpu/drm/bridge/tc358762.c +1 -1
@@ -231,7 +231,7 @@ static int tc358762_probe(struct mipi_dsi_device *dsi) dsi->lanes =1 ; dsi->format =MIPI_DSI_FMT_RGB888 ; dsi->mode_flags =MIPI_DSI_MODE_VIDEO |MIPI_DSI_MODE_VIDEO_SYNC_PULSE | -MIPI_DSI_MODE_LPM ; +MIPI_DSI_MODE_LPM |MIPI_DSI_MODE_VIDEO_HSE ; ret =tc358762_parse_dt (ctx);if (ret <0 )
drivers/gpu/drm/drm_edid.c +1 -0
@@ -230,6 +230,7 @@ static const struct edid_quirk {/* OSVR HDK and HDK2 VR Headsets */ EDID_QUIRK ('S' ,'V' ,'R' ,0x1019 ,EDID_QUIRK_NON_DESKTOP ), + EDID_QUIRK('A', 'U', 'O', 0x1111, EDID_QUIRK_NON_DESKTOP), };/*
drivers/gpu/drm/exynos/exynos_drm_crtc.c +2 -3
@@ -39,13 +39,12 @@ static void exynos_drm_crtc_atomic_disable(struct drm_crtc *crtc,if (exynos_crtc->ops->atomic_disable) exynos_crtc->ops->atomic_disable (exynos_crtc); +spin_lock_irq (&crtc->dev->event_lock);if (crtc->state->event && !crtc->state->active) { -spin_lock_irq (&crtc->dev->event_lock);drm_crtc_send_vblank_event (crtc, crtc->state->event); -spin_unlock_irq (&crtc->dev->event_lock); - crtc->state->event =NULL ; } +spin_unlock_irq (&crtc->dev->event_lock); } static int exynos_crtc_atomic_check(struct drm_crtc *crtc,
drivers/gpu/drm/i915/display/intel_bios.c +21 -0
@@ -3659,6 +3659,27 @@ enum aux_ch intel_bios_dp_aux_ch(const struct intel_bios_encoder_data *devdata)return map_aux_ch (devdata->i915, devdata->child.aux_channel); } +bool intel_bios_dp_has_shared_aux_ch (const struct intel_bios_encoder_data *devdata) +{ +struct drm_i915_private *i915; +u8 aux_channel; +int count =0 ; + +if (!devdata || !devdata->child.aux_channel) +return false; + + i915 = devdata->i915; + aux_channel = devdata->child.aux_channel; + +list_for_each_entry (devdata, &i915->display.vbt.display_devices, node) { +if (intel_bios_encoder_supports_dp (devdata) && + aux_channel == devdata->child.aux_channel) + count++; + } + +return count >1 ; +} +int intel_bios_dp_boost_level (const struct intel_bios_encoder_data *devdata) {if (!devdata || devdata->i915->display.vbt.version <196 || !devdata->child.iboost)
drivers/gpu/drm/i915/display/intel_bios.h +1 -0
@@ -271,6 +271,7 @@ enum aux_ch intel_bios_dp_aux_ch(const struct intel_bios_encoder_data *devdata);int intel_bios_dp_boost_level (const struct intel_bios_encoder_data *devdata);int intel_bios_dp_max_lane_count (const struct intel_bios_encoder_data *devdata);int intel_bios_dp_max_link_rate (const struct intel_bios_encoder_data *devdata); +bool intel_bios_dp_has_shared_aux_ch (const struct intel_bios_encoder_data *devdata);int intel_bios_hdmi_boost_level (const struct intel_bios_encoder_data *devdata);int intel_bios_hdmi_ddc_pin (const struct intel_bios_encoder_data *devdata);int intel_bios_hdmi_level_shift (const struct intel_bios_encoder_data *devdata);
drivers/gpu/drm/i915/display/intel_dp.c +6 -1
@@ -5503,8 +5503,13 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp,/* * VBT and straps are liars. Also check HPD as that seems * to be the most reliable piece of information available. +* +* ... expect on devices that forgot to hook HPD up for eDP +* (eg. Acer Chromebook C710), so we'll check it only if multiple +* ports are attempting to use the same AUX CH, according to VBT. */ -if (!intel_digital_port_connected (encoder)) { +if (intel_bios_dp_has_shared_aux_ch (encoder->devdata) && + !intel_digital_port_connected (encoder)) {/* * If this fails, presume the DPCD answer came * from some other port using the same AUX CH.
drivers/gpu/drm/mediatek/mtk_dp.c +3 -3
@@ -847,7 +847,7 @@ static int mtk_dp_aux_do_transfer(struct mtk_dp *mtk_dp, bool is_read, u8 cmd,u32 phy_status =mtk_dp_read (mtk_dp,MTK_DP_AUX_P0_3628 ) &AUX_RX_PHY_STATE_AUX_TX_P0_MASK ;if (phy_status !=AUX_RX_PHY_STATE_AUX_TX_P0_RX_IDLE ) { -drm_err (mtk_dp->drm_dev, +dev_err (mtk_dp->dev,"AUX Rx Aux hang, need SW reset\n" );return -EIO ; }
@@ -2062,7 +2062,7 @@ static ssize_t mtk_dp_aux_transfer(struct drm_dp_aux *mtk_aux, is_read = true;break ;default : -drm_err (mtk_aux->drm_dev,"invalid aux cmd = %d\n" , +dev_err (mtk_dp->dev,"invalid aux cmd = %d\n" , msg->request); ret = -EINVAL ; goto err;
@@ -2078,7 +2078,7 @@ static ssize_t mtk_dp_aux_transfer(struct drm_dp_aux *mtk_aux, to_access, &msg->reply);if (ret) { -drm_info (mtk_dp->drm_dev, +dev_info (mtk_dp->dev,"Failed to do AUX transfer: %d\n" , ret); goto err; }
drivers/gpu/drm/msm/adreno/a6xx_gpu.c +1 -2
@@ -2489,8 +2489,7 @@ struct msm_gpu *a6xx_gpu_init(struct drm_device *dev)/* Quirk data */ adreno_gpu->info = info; -if (adreno_is_a650 (adreno_gpu) ||adreno_is_a660_family (adreno_gpu)) - adreno_gpu->base.hw_apriv = true; + adreno_gpu->base.hw_apriv = !!(info->quirks &ADRENO_QUIRK_HAS_HW_APRIV );a6xx_llc_slices_init (pdev, a6xx_gpu);
drivers/gpu/drm/msm/adreno/adreno_device.c +16 -3
@@ -275,6 +275,7 @@ static const struct adreno_info gpulist[] = { }, .gmem = SZ_512K, .inactive_period = DRM_MSM_INACTIVE_PERIOD, + .quirks = ADRENO_QUIRK_HAS_CACHED_COHERENT, .init = a6xx_gpu_init, }, { .rev = ADRENO_REV(6, 1, 9, ANY_ID),
@@ -286,6 +287,7 @@ static const struct adreno_info gpulist[] = { }, .gmem = SZ_512K, .inactive_period = DRM_MSM_INACTIVE_PERIOD, + .quirks = ADRENO_QUIRK_HAS_CACHED_COHERENT, .init = a6xx_gpu_init, .zapfw = "a615_zap.mdt", .hwcg = a615_hwcg,
@@ -299,6 +301,7 @@ static const struct adreno_info gpulist[] = { }, .gmem = SZ_1M, .inactive_period = DRM_MSM_INACTIVE_PERIOD, + .quirks = ADRENO_QUIRK_HAS_CACHED_COHERENT, .init = a6xx_gpu_init, .zapfw = "a630_zap.mdt", .hwcg = a630_hwcg,
@@ -312,6 +315,7 @@ static const struct adreno_info gpulist[] = { }, .gmem = SZ_1M, .inactive_period = DRM_MSM_INACTIVE_PERIOD, + .quirks = ADRENO_QUIRK_HAS_CACHED_COHERENT, .init = a6xx_gpu_init, .zapfw = "a640_zap.mdt", .hwcg = a640_hwcg,
@@ -325,6 +329,8 @@ static const struct adreno_info gpulist[] = { }, .gmem = SZ_1M + SZ_128K, .inactive_period = DRM_MSM_INACTIVE_PERIOD, + .quirks =ADRENO_QUIRK_HAS_CACHED_COHERENT | + ADRENO_QUIRK_HAS_HW_APRIV, .init = a6xx_gpu_init, .zapfw = "a650_zap.mdt", .hwcg = a650_hwcg,
@@ -339,6 +345,8 @@ static const struct adreno_info gpulist[] = { }, .gmem = SZ_1M + SZ_512K, .inactive_period = DRM_MSM_INACTIVE_PERIOD, + .quirks =ADRENO_QUIRK_HAS_CACHED_COHERENT | + ADRENO_QUIRK_HAS_HW_APRIV, .init = a6xx_gpu_init, .zapfw = "a660_zap.mdt", .hwcg = a660_hwcg,
@@ -351,6 +359,8 @@ static const struct adreno_info gpulist[] = { }, .gmem = SZ_512K, .inactive_period = DRM_MSM_INACTIVE_PERIOD, + .quirks =ADRENO_QUIRK_HAS_CACHED_COHERENT | + ADRENO_QUIRK_HAS_HW_APRIV, .init = a6xx_gpu_init, .hwcg = a660_hwcg, .address_space_size = SZ_16G,
@@ -364,6 +374,7 @@ static const struct adreno_info gpulist[] = { }, .gmem = SZ_2M, .inactive_period = DRM_MSM_INACTIVE_PERIOD, + .quirks = ADRENO_QUIRK_HAS_CACHED_COHERENT, .init = a6xx_gpu_init, .zapfw = "a640_zap.mdt", .hwcg = a640_hwcg,
@@ -375,6 +386,8 @@ static const struct adreno_info gpulist[] = { }, .gmem = SZ_4M, .inactive_period = DRM_MSM_INACTIVE_PERIOD, + .quirks =ADRENO_QUIRK_HAS_CACHED_COHERENT | + ADRENO_QUIRK_HAS_HW_APRIV, .init = a6xx_gpu_init, .zapfw = "a690_zap.mdt", .hwcg = a690_hwcg,
@@ -586,9 +599,9 @@ static int adreno_bind(struct device *dev, struct device *master, void *data)if (ret)return ret; -if (config.rev.core >=6 ) -if (!adreno_has_gmu_wrapper (to_adreno_gpu (gpu))) - priv->has_cached_coherent = true; + priv->has_cached_coherent = + !!(info->quirks &ADRENO_QUIRK_HAS_CACHED_COHERENT ) && + !adreno_has_gmu_wrapper (to_adreno_gpu (gpu));return 0 ; }
drivers/gpu/drm/msm/adreno/adreno_gpu.h +2 -0
@@ -32,6 +32,8 @@ enum {#define ADRENO_QUIRK_TWO_PASS_USE_WFI BIT(0)#define ADRENO_QUIRK_FAULT_DETECT_MASK BIT(1)#define ADRENO_QUIRK_LMLOADKILL_DISABLE BIT(2) +#define ADRENO_QUIRK_HAS_HW_APRIV BIT(3) +#define ADRENO_QUIRK_HAS_CACHED_COHERENT BIT(4)struct adreno_rev {uint8_t core;
drivers/gpu/drm/radeon/radeon_sa.c +1 -1
@@ -123,7 +123,7 @@ int radeon_sa_bo_new(struct radeon_sa_manager *sa_manager, unsigned int size, unsigned int align) {struct drm_suballoc *sa =drm_suballoc_new (&sa_manager->base, size, -GFP_KERNEL , true, align); +GFP_KERNEL , false, align);if (IS_ERR (sa)) { *sa_bo =NULL ;
drivers/gpu/drm/tiny/gm12u320.c +5 -5
@@ -70,10 +70,10 @@ MODULE_PARM_DESC(eco_mode, "Turn on Eco mode (less bright, more silent)");#define READ_STATUS_SIZE 13#define MISC_VALUE_SIZE 4 -#define CMD_TIMEOUT msecs_to_jiffies(200) -#define DATA_TIMEOUT msecs_to_jiffies(1000) -#define IDLE_TIMEOUT msecs_to_jiffies(2000) -#define FIRST_FRAME_TIMEOUT msecs_to_jiffies(2000) +#define CMD_TIMEOUT 200 +#define DATA_TIMEOUT 1000 +#define IDLE_TIMEOUT 2000 +#define FIRST_FRAME_TIMEOUT 2000#define MISC_REQ_GET_SET_ECO_A 0xff#define MISC_REQ_GET_SET_ECO_B 0x35
@@ -389,7 +389,7 @@ static void gm12u320_fb_update_work(struct work_struct *work)* switches back to showing its logo. */ queue_delayed_work (system_long_wq, &gm12u320->fb_update.work, -IDLE_TIMEOUT ); +msecs_to_jiffies (IDLE_TIMEOUT ));return ; err:
drivers/i2c/busses/i2c-aspeed.c +5 -2
@@ -698,13 +698,16 @@ static int aspeed_i2c_master_xfer(struct i2c_adapter *adap,if (time_left ==0 ) {/* -* If timed out and bus is still busy in a multi master -* environment, attempt recovery at here. +* In a multi-master setup, if a timeout occurs, attempt +* recovery. But if the bus is idle, we still need to reset the +* i2c controller to clear the remaining interrupts. */ if (bus->multi_master && (readl (bus->base +ASPEED_I2C_CMD_REG ) &ASPEED_I2CD_BUS_BUSY_STS ))aspeed_i2c_recover_bus (bus); +else +aspeed_i2c_reset (bus);/* * If timed out and the state is still pending, drop the pending
drivers/interconnect/core.c +15 -3
@@ -28,6 +28,7 @@ static LIST_HEAD(icc_providers);static int providers_count;static bool synced_state;static DEFINE_MUTEX (icc_lock); +static DEFINE_MUTEX (icc_bw_lock);static struct dentry *icc_debugfs_dir;static void icc_summary_show_one (struct seq_file *s,struct icc_node *n)
@@ -631,7 +632,7 @@ int icc_set_bw(struct icc_path *path, u32 avg_bw, u32 peak_bw)if (WARN_ON (IS_ERR (path) || !path->num_nodes))return -EINVAL ; -mutex_lock (&icc_lock); +mutex_lock (&icc_bw_lock); old_avg = path->reqs[0 ].avg_bw; old_peak = path->reqs[0 ].peak_bw;
@@ -663,7 +664,7 @@ int icc_set_bw(struct icc_path *path, u32 avg_bw, u32 peak_bw)apply_constraints (path); } -mutex_unlock (&icc_lock); +mutex_unlock (&icc_bw_lock);trace_icc_set_bw_end (path, ret);
@@ -872,6 +873,7 @@ void icc_node_add(struct icc_node *node, struct icc_provider *provider)return ;mutex_lock (&icc_lock); +mutex_lock (&icc_bw_lock); node->provider = provider;list_add_tail (&node->node_list, &provider->nodes);
@@ -900,6 +902,7 @@ void icc_node_add(struct icc_node *node, struct icc_provider *provider) node->avg_bw =0 ; node->peak_bw =0 ; +mutex_unlock (&icc_bw_lock);mutex_unlock (&icc_lock); }EXPORT_SYMBOL_GPL (icc_node_add);
@@ -1025,6 +1028,7 @@ void icc_sync_state(struct device *dev)return ;mutex_lock (&icc_lock); +mutex_lock (&icc_bw_lock); synced_state = true;list_for_each_entry (p, &icc_providers, provider_list) {dev_dbg (p->dev,"interconnect provider is in synced state\n" );
@@ -1037,13 +1041,21 @@ void icc_sync_state(struct device *dev) } } } +mutex_unlock (&icc_bw_lock);mutex_unlock (&icc_lock); }EXPORT_SYMBOL_GPL (icc_sync_state);static int __init icc_init (void ) { -struct device_node *root =of_find_node_by_path ("/" ); +struct device_node *root; + +/* Teach lockdep about lock ordering wrt. shrinker: */ +fs_reclaim_acquire (GFP_KERNEL ); +might_lock (&icc_bw_lock); +fs_reclaim_release (GFP_KERNEL ); + + root =of_find_node_by_path ("/" ); providers_count =of_count_icc_providers (root);of_node_put (root);
drivers/md/dm-core.h +1 -0
@@ -214,6 +214,7 @@ struct dm_table {/* a list of devices used by this table */ struct list_head devices; +struct rw_semaphore devices_lock;/* events get handed up using this callback */ void (*event_fn)(void *data);
drivers/md/dm-ioctl.c +6 -1
@@ -1630,6 +1630,8 @@ static void retrieve_deps(struct dm_table *table,struct dm_dev_internal *dd;struct dm_target_deps *deps; +down_read (&table->devices_lock); + deps =get_result_buffer (param, param_size, &len);/*
@@ -1644,7 +1646,7 @@ static void retrieve_deps(struct dm_table *table, needed =struct_size (deps, dev, count);if (len < needed) { param->flags |=DM_BUFFER_FULL_FLAG ; -return ; + goto out; }/*
@@ -1656,6 +1658,9 @@ static void retrieve_deps(struct dm_table *table, deps->dev[count++] =huge_encode_dev (dd->dm_dev->bdev->bd_dev); param->data_size = param->data_start + needed; + +out: +up_read (&table->devices_lock); }static int table_deps (struct file *filp,struct dm_ioctl *param,size_t param_size)
drivers/md/dm-table.c +24 -8
@@ -135,6 +135,7 @@ int dm_table_create(struct dm_table **result, blk_mode_t mode,return -ENOMEM ;INIT_LIST_HEAD (&t->devices); +init_rwsem (&t->devices_lock);if (!num_targets) num_targets =KEYS_PER_NODE ;
@@ -359,16 +360,20 @@ int __ref dm_get_device(struct dm_target *ti, const char *path, blk_mode_t mode,if (dev ==disk_devt (t->md->disk))return -EINVAL ; +down_write (&t->devices_lock); + dd =find_device (&t->devices, dev);if (!dd) { dd =kmalloc (sizeof (*dd),GFP_KERNEL ); -if (!dd) -return -ENOMEM ; +if (!dd) { + r = -ENOMEM ; + goto unlock_ret_r; + } r =dm_get_table_device (t->md, dev, mode, &dd->dm_dev);if (r) {kfree (dd); -return r; + goto unlock_ret_r; }refcount_set (&dd->count,1 );
@@ -378,12 +383,17 @@ int __ref dm_get_device(struct dm_target *ti, const char *path, blk_mode_t mode, }else if (dd->dm_dev->mode != (mode | dd->dm_dev->mode)) { r =upgrade_mode (dd, mode, t->md);if (r) -return r; + goto unlock_ret_r; }refcount_inc (&dd->count); out: +up_write (&t->devices_lock); *result = dd->dm_dev;return 0 ; + +unlock_ret_r: +up_write (&t->devices_lock); +return r; }EXPORT_SYMBOL (dm_get_device);
@@ -419,9 +429,12 @@ static int dm_set_device_limits(struct dm_target *ti, struct dm_dev *dev,void dm_put_device (struct dm_target *ti,struct dm_dev *d) {int found =0 ; -struct list_head *devices = &ti->table->devices; +struct dm_table *t = ti->table; +struct list_head *devices = &t->devices;struct dm_dev_internal *dd; +down_write (&t->devices_lock); +list_for_each_entry (dd, devices, list) {if (dd->dm_dev == d) { found =1 ;
@@ -430,14 +443,17 @@ void dm_put_device(struct dm_target *ti, struct dm_dev *d) }if (!found) {DMERR ("%s: device %s not in table devices list" , -dm_device_name (ti->table->md), d->name); -return ; +dm_device_name (t->md), d->name); + goto unlock_ret; }if (refcount_dec_and_test (&dd->count)) { -dm_put_table_device (ti->table->md, d); +dm_put_table_device (t->md, d);list_del (&dd->list);kfree (dd); } + +unlock_ret: +up_write (&t->devices_lock); }EXPORT_SYMBOL (dm_put_device);
drivers/md/dm.c +2 -21
@@ -715,24 +715,6 @@ static void dm_put_live_table_fast(struct mapped_device *md) __releases(RCU)rcu_read_unlock (); } -static inline struct dm_table *dm_get_live_table_bio (struct mapped_device *md, -int *srcu_idx,blk_opf_t bio_opf) -{ -if (bio_opf &REQ_NOWAIT ) -return dm_get_live_table_fast (md); -else -return dm_get_live_table (md, srcu_idx); -} - -static inline void dm_put_live_table_bio (struct mapped_device *md,int srcu_idx, -blk_opf_t bio_opf) -{ -if (bio_opf &REQ_NOWAIT ) -dm_put_live_table_fast (md); -else -dm_put_live_table (md, srcu_idx); -} -static char *_dm_claim_ptr ="I belong to device-mapper" ;/*
@@ -1833,9 +1815,8 @@ static void dm_submit_bio(struct bio *bio)struct mapped_device *md = bio->bi_bdev->bd_disk->private_data;int srcu_idx;struct dm_table *map; -blk_opf_t bio_opf = bio->bi_opf; - map =dm_get_live_table_bio (md, &srcu_idx, bio_opf); + map =dm_get_live_table (md, &srcu_idx);/* If suspended, or map not yet available, queue this IO for later */ if (unlikely(test_bit(DMF_BLOCK_IO_FOR_SUSPEND, &md->flags)) ||
@@ -1851,7 +1832,7 @@ static void dm_submit_bio(struct bio *bio)dm_split_and_process_bio (md, map, bio); out: -dm_put_live_table_bio (md, srcu_idx, bio_opf); +dm_put_live_table (md, srcu_idx); } static bool dm_poll_dm_io(struct dm_io *io, struct io_comp_batch *iob,
drivers/md/md.c +16 -7
@@ -798,14 +798,14 @@ void mddev_unlock(struct mddev *mddev) }else mutex_unlock (&mddev->reconfig_mutex); +md_wakeup_thread (mddev->thread); +wake_up (&mddev->sb_wait); +list_for_each_entry_safe (rdev, tmp, &delete, same_set) {list_del_init (&rdev->same_set);kobject_del (&rdev->kobj);export_rdev (rdev, mddev); } - -md_wakeup_thread (mddev->thread); -wake_up (&mddev->sb_wait); }EXPORT_SYMBOL_GPL (mddev_unlock);
@@ -2452,7 +2452,8 @@ static void export_rdev(struct md_rdev *rdev, struct mddev *mddev)if (test_bit (AutoDetected, &rdev->flags))md_autodetect_dev (rdev->bdev->bd_dev);#endif -blkdev_put (rdev->bdev, mddev->external ? &claim_rdev : rdev); +blkdev_put (rdev->bdev, +test_bit (Holder, &rdev->flags) ? rdev : &claim_rdev); rdev->bdev =NULL ;kobject_put (&rdev->kobj); }
@@ -3632,6 +3633,7 @@ EXPORT_SYMBOL_GPL(md_rdev_init);static struct md_rdev *md_import_device (dev_t newdev,int super_format,int super_minor) {struct md_rdev *rdev; +struct md_rdev *holder;sector_t size;int err;
@@ -3646,8 +3648,15 @@ static struct md_rdev *md_import_device(dev_t newdev, int super_format, int supeif (err) goto out_clear_rdev; +if (super_format ==-2 ) { + holder = &claim_rdev; + }else { + holder = rdev; +set_bit (Holder, &rdev->flags); + } + rdev->bdev =blkdev_get_by_dev (newdev,BLK_OPEN_READ |BLK_OPEN_WRITE , - super_format ==-2 ? &claim_rdev : rdev,NULL ); + holder,NULL );if (IS_ERR (rdev->bdev)) {pr_warn ("md: could not open device unknown-block(%u,%u).\n" ,MAJOR (newdev),MINOR (newdev));
@@ -3684,7 +3693,7 @@ static struct md_rdev *md_import_device(dev_t newdev, int super_format, int supereturn rdev; out_blkdev_put: -blkdev_put (rdev->bdev, super_format ==-2 ? &claim_rdev : rdev); +blkdev_put (rdev->bdev, holder); out_clear_rdev:md_rdev_clear (rdev); out_free_rdev:
@@ -8205,7 +8214,7 @@ static void *md_seq_next(struct seq_file *seq, void *v, loff_t *pos)spin_unlock (&all_mddevs_lock);if (to_put) -mddev_put (mddev); +mddev_put (to_put);return next_mddev; }
drivers/md/md.h +3 -0
@@ -211,6 +211,9 @@ enum flag_bits {* check if there is collision between raid1 * serial bios. */ + Holder, /* rdev is used as holder while opening +* underlying disk exclusively. +*/ }; static inline int is_badblock(struct md_rdev *rdev, sector_t s, int sectors,
drivers/md/raid1.c +3 -0
@@ -1831,6 +1831,9 @@ static int raid1_remove_disk(struct mddev *mddev, struct md_rdev *rdev)int number = rdev->raid_disk;struct raid1_info *p = conf->mirrors + number; +if (unlikely (number >= conf->raid_disks)) + goto abort; +if (rdev != p->rdev) p = conf->mirrors + conf->raid_disks + number;
drivers/media/pci/cx23885/cx23885-video.c +1 -1
@@ -413,7 +413,7 @@ static int buffer_prepare(struct vb2_buffer *vb) dev->height >> 1);break ;default : -BUG (); +return -EINVAL ;/* should not happen */ } dprintk(2, "[%p/%d] buffer_init - %dx%d %dbpp 0x%08x - dma=0x%08lx\n", buf, buf->vb.vb2_buf.index,
drivers/media/pci/intel/ipu3/ipu3-cio2-main.c +1 -1
@@ -355,7 +355,7 @@ static int cio2_hw_init(struct cio2_device *cio2, struct cio2_queue *q)void __iomem *const base = cio2->base;u8 lanes, csi2bus = q->csi2.port;u8 sensor_vc =SENSOR_VIR_CH_DFLT ; -struct cio2_csi2_timing timing; +struct cio2_csi2_timing timing = {0 };int i, r; fmt =cio2_find_format (NULL , &q->subdev_fmt.code);
drivers/media/platform/mediatek/mdp3/mtk-mdp3-comp.c +2 -0
@@ -892,11 +892,13 @@ static int mdp_get_subsys_id(struct mdp_dev *mdp, struct device *dev, ret =cmdq_dev_get_client_reg (&comp_pdev->dev, &cmdq_reg, index);if (ret !=0 ) {dev_err (&comp_pdev->dev,"cmdq_dev_get_subsys fail!\n" ); +put_device (&comp_pdev->dev);return -EINVAL ; } comp->subsys_id = cmdq_reg.subsys;dev_dbg (&comp_pdev->dev,"subsys id=%d\n" , cmdq_reg.subsys); +put_device (&comp_pdev->dev);return 0 ; }
drivers/media/tuners/qt1010.c +6 -5
@@ -345,11 +345,12 @@ static int qt1010_init(struct dvb_frontend *fe)else valptr = &tmpval; -BUG_ON (i >=ARRAY_SIZE (i2c_data) -1 ); - - err =qt1010_init_meas1 (priv, i2c_data[i+1 ].reg, - i2c_data[i].reg, - i2c_data[i].val, valptr); +if (i >=ARRAY_SIZE (i2c_data) -1 ) + err = -EIO ; +else + err =qt1010_init_meas1 (priv, i2c_data[i +1 ].reg, + i2c_data[i].reg, + i2c_data[i].val, valptr); i++;break ; }
drivers/media/usb/dvb-usb-v2/af9035.c +5 -4
@@ -322,6 +322,8 @@ static int af9035_i2c_master_xfer(struct i2c_adapter *adap, ret = -EOPNOTSUPP ; }else if ((msg[0 ].addr == state->af9033_i2c_addr[0 ]) || (msg[0 ].addr == state->af9033_i2c_addr[1 ])) { +if (msg[0 ].len <3 || msg[1 ].len <1 ) +return -EOPNOTSUPP ;/* demod access via firmware interface */ u32 reg = msg[0 ].buf[0 ] <<16 | msg[0 ].buf[1 ] <<8 | msg[0 ].buf[2 ];
@@ -381,6 +383,8 @@ static int af9035_i2c_master_xfer(struct i2c_adapter *adap, ret = -EOPNOTSUPP ; }else if ((msg[0 ].addr == state->af9033_i2c_addr[0 ]) || (msg[0 ].addr == state->af9033_i2c_addr[1 ])) { +if (msg[0 ].len <3 ) +return -EOPNOTSUPP ;/* demod access via firmware interface */ u32 reg = msg[0 ].buf[0 ] <<16 | msg[0 ].buf[1 ] <<8 | msg[0 ].buf[2 ];
@@ -388,10 +392,7 @@ static int af9035_i2c_master_xfer(struct i2c_adapter *adap,if (msg[0 ].addr == state->af9033_i2c_addr[1 ]) reg |=0x100000 ; - ret = (msg[0 ].len >=3 ) ?af9035_wr_regs (d, reg, - &msg[0 ].buf[3 ], - msg[0 ].len -3 ) - : -EOPNOTSUPP ; + ret =af9035_wr_regs (d, reg, &msg[0 ].buf[3 ], msg[0 ].len -3 ); }else {/* I2C write */ u8 buf[MAX_XFER_SIZE ];
drivers/media/usb/dvb-usb-v2/anysee.c +1 -1
@@ -202,7 +202,7 @@ static int anysee_master_xfer(struct i2c_adapter *adap, struct i2c_msg *msg,while (i < num) {if (num > i +1 && (msg[i+1 ].flags &I2C_M_RD )) { -if (msg[i].len >2 || msg[i+1 ].len >60 ) { +if (msg[i].len !=2 || msg[i +1 ].len >60 ) { ret = -EOPNOTSUPP ;break ; }
drivers/media/usb/dvb-usb-v2/az6007.c +8 -0
@@ -788,6 +788,10 @@ static int az6007_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[],if (az6007_xfer_debug)printk (KERN_DEBUG "az6007: I2C W addr=0x%x len=%d\n" , addr, msgs[i].len); +if (msgs[i].len <1 ) { + ret = -EIO ; + goto err; + } req =AZ6007_I2C_WR ; index = msgs[i].buf[0 ]; value = addr | (1 <<8 );
@@ -802,6 +806,10 @@ static int az6007_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[],if (az6007_xfer_debug)printk (KERN_DEBUG "az6007: I2C R addr=0x%x len=%d\n" , addr, msgs[i].len); +if (msgs[i].len <1 ) { + ret = -EIO ; + goto err; + } req =AZ6007_I2C_RD ; index = msgs[i].buf[0 ]; value = addr;
drivers/media/usb/dvb-usb-v2/gl861.c +1 -1
@@ -120,7 +120,7 @@ static int gl861_i2c_master_xfer(struct i2c_adapter *adap, struct i2c_msg msg[], }else if (num ==2 && !(msg[0 ].flags &I2C_M_RD ) && (msg[1 ].flags &I2C_M_RD )) {/* I2C write + read */ -if (msg[0 ].len >1 || msg[1 ].len >sizeof (ctx->buf)) { +if (msg[0 ].len !=1 || msg[1 ].len >sizeof (ctx->buf)) { ret = -EOPNOTSUPP ; goto err; }
drivers/media/usb/dvb-usb/af9005.c +5 -0
@@ -422,6 +422,10 @@ static int af9005_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msg[],if (ret ==0 ) ret =2 ; }else { +if (msg[0 ].len <2 ) { + ret = -EOPNOTSUPP ; + goto unlock; + }/* write one or more registers */ reg = msg[0 ].buf[0 ]; addr = msg[0 ].addr;
@@ -431,6 +435,7 @@ static int af9005_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msg[], ret =1 ; } +unlock:mutex_unlock (&d->i2c_mutex);return ret; }
drivers/media/usb/dvb-usb/dw2102.c +24 -0
@@ -128,6 +128,10 @@ static int dw2102_i2c_transfer(struct i2c_adapter *adap, struct i2c_msg msg[],switch (num) {case 2 : +if (msg[0 ].len <1 ) { + num = -EOPNOTSUPP ; +break ; + }/* read stv0299 register */ value = msg[0 ].buf[0 ];/* register */ for (i =0 ; i < msg[1 ].len; i++) {
@@ -139,6 +143,10 @@ static int dw2102_i2c_transfer(struct i2c_adapter *adap, struct i2c_msg msg[],case 1 :switch (msg[0 ].addr) {case 0x68 : +if (msg[0 ].len <2 ) { + num = -EOPNOTSUPP ; +break ; + }/* write to stv0299 register */ buf6[0 ] =0x2a ; buf6[1 ] = msg[0 ].buf[0 ];
@@ -148,6 +156,10 @@ static int dw2102_i2c_transfer(struct i2c_adapter *adap, struct i2c_msg msg[],break ;case 0x60 :if (msg[0 ].flags ==0 ) { +if (msg[0 ].len <4 ) { + num = -EOPNOTSUPP ; +break ; + }/* write to tuner pll */ buf6[0 ] =0x2c ; buf6[1 ] =5 ;
@@ -159,6 +171,10 @@ static int dw2102_i2c_transfer(struct i2c_adapter *adap, struct i2c_msg msg[],dw210x_op_rw (d->udev,0xb2 ,0 ,0 , buf6,7 ,DW210X_WRITE_MSG ); }else { +if (msg[0 ].len <1 ) { + num = -EOPNOTSUPP ; +break ; + }/* read from tuner */ dw210x_op_rw (d->udev,0xb5 ,0 ,0 , buf6,1 ,DW210X_READ_MSG );
@@ -166,12 +182,20 @@ static int dw2102_i2c_transfer(struct i2c_adapter *adap, struct i2c_msg msg[], }break ;case (DW2102_RC_QUERY ): +if (msg[0 ].len <2 ) { + num = -EOPNOTSUPP ; +break ; + }dw210x_op_rw (d->udev,0xb8 ,0 ,0 , buf6,2 ,DW210X_READ_MSG ); msg[0 ].buf[0 ] = buf6[0 ]; msg[0 ].buf[1 ] = buf6[1 ];break ;case (DW2102_VOLTAGE_CTRL ): +if (msg[0 ].len <1 ) { + num = -EOPNOTSUPP ; +break ; + } buf6[0 ] =0x30 ; buf6[1 ] = msg[0 ].buf[0 ]; dw210x_op_rw(d->udev, 0xb2, 0, 0,
drivers/misc/Kconfig +1 -0
@@ -496,6 +496,7 @@ config HISI_HIKEY_USB config OPEN_DICE tristate "Open Profile for DICE driver" depends on OF_RESERVED_MEM + depends on HAS_IOMEM help This driver exposes a DICE reserved memory region to userspace via a character device. The memory region contains Compound Device
drivers/mmc/host/sdhci-esdhc-imx.c +4 -3
@@ -171,8 +171,8 @@#define ESDHC_FLAG_HS400 BIT(9)/* * The IP has errata ERR010450 -* uSDHC: Due to the I/O timing limit, for SDR mode, SD card clock can't -* exceed 150MHz, for DDR mode, SD card clock can't exceed 45MHz. +* uSDHC: At 1.8V due to the I/O timing limit, for SDR mode, SD card +* clock can't exceed 150MHz, for DDR mode, SD card clock can't exceed 45MHz. */ #define ESDHC_FLAG_ERR010450 BIT(10)/* The IP supports HS400ES mode */
@@ -961,7 +961,8 @@ static inline void esdhc_pltfm_set_clock(struct sdhci_host *host, | ESDHC_CLOCK_MASK);sdhci_writel (host, temp,ESDHC_SYSTEM_CONTROL ); -if (imx_data->socdata->flags &ESDHC_FLAG_ERR010450 ) { +if ((imx_data->socdata->flags &ESDHC_FLAG_ERR010450 ) && + (!(host->quirks2 &SDHCI_QUIRK2_NO_1_8_V ))) {unsigned int max_clock; max_clock = imx_data->is_ddr ?45000000 :150000000 ;
drivers/mtd/spi-nor/atmel.c +6 -2
@@ -48,9 +48,11 @@ static const struct spi_nor_locking_ops at25fs_nor_locking_ops = { .is_locked = at25fs_nor_is_locked, }; -static void at25fs_nor_late_init (struct spi_nor *nor) +static int at25fs_nor_late_init (struct spi_nor *nor) { nor->params->locking_ops = &at25fs_nor_locking_ops; + +return 0 ; }static const struct spi_nor_fixups at25fs_nor_fixups = {
@@ -149,9 +151,11 @@ static const struct spi_nor_locking_ops atmel_nor_global_protection_ops = { .is_locked = atmel_nor_is_global_protected, }; -static void atmel_nor_global_protection_late_init (struct spi_nor *nor) +static int atmel_nor_global_protection_late_init (struct spi_nor *nor) { nor->params->locking_ops = &atmel_nor_global_protection_ops; + +return 0 ; }static const struct spi_nor_fixups atmel_nor_global_protection_fixups = {
drivers/mtd/spi-nor/core.c +15 -8
@@ -2898,16 +2898,23 @@ static void spi_nor_init_fixup_flags(struct spi_nor *nor)* SFDP standard, or where SFDP tables are not defined at all. * Will replace the spi_nor_manufacturer_init_params() method. */ -static void spi_nor_late_init_params (struct spi_nor *nor) +static int spi_nor_late_init_params (struct spi_nor *nor) {struct spi_nor_flash_parameter *params = nor->params; +int ret;if (nor->manufacturer && nor->manufacturer->fixups && - nor->manufacturer->fixups->late_init) - nor->manufacturer->fixups->late_init (nor); + nor->manufacturer->fixups->late_init) { + ret = nor->manufacturer->fixups->late_init (nor); +if (ret) +return ret; + } -if (nor->info->fixups && nor->info->fixups->late_init) - nor->info->fixups->late_init (nor); +if (nor->info->fixups && nor->info->fixups->late_init) { + ret = nor->info->fixups->late_init (nor); +if (ret) +return ret; + }/* Default method kept for backward compatibility. */ if (!params->set_4byte_addr_mode)
@@ -2925,6 +2932,8 @@ static void spi_nor_late_init_params(struct spi_nor *nor)if (nor->info->n_banks >1 ) params->bank_size =div64_u64 (params->size, nor->info->n_banks); + +return 0 ; }/**
@@ -3083,9 +3092,7 @@ static int spi_nor_init_params(struct spi_nor *nor)spi_nor_init_params_deprecated (nor); } -spi_nor_late_init_params (nor); - -return 0 ; +return spi_nor_late_init_params (nor); }/** spi_nor_octal_dtr_enable() - enable Octal DTR I/O if needed
drivers/mtd/spi-nor/core.h +3 -1
@@ -377,6 +377,7 @@ struct spi_nor_otp {* than reading the status register to indicate they * are ready for a new command * @locking_ops: SPI NOR locking methods. +* @priv: flash's private data. */ struct spi_nor_flash_parameter {u64 bank_size;
@@ -405,6 +406,7 @@ struct spi_nor_flash_parameter {int (*ready)(struct spi_nor *nor);const struct spi_nor_locking_ops *locking_ops; +void *priv; };/**
@@ -431,7 +433,7 @@ struct spi_nor_fixups {const struct sfdp_parameter_header *bfpt_header, const struct sfdp_bfpt *bfpt);int (*post_sfdp)(struct spi_nor *nor); -void (*late_init)(struct spi_nor *nor); +int (*late_init)(struct spi_nor *nor); };/**
drivers/mtd/spi-nor/issi.c +3 -1
@@ -29,7 +29,7 @@ static const struct spi_nor_fixups is25lp256_fixups = { .post_bfpt = is25lp256_post_bfpt_fixups, }; -static void pm25lv_nor_late_init (struct spi_nor *nor) +static int pm25lv_nor_late_init (struct spi_nor *nor) {struct spi_nor_erase_map *map = &nor->params->erase_map;int i;
@@ -38,6 +38,8 @@ static void pm25lv_nor_late_init(struct spi_nor *nor)for (i =0 ; i <SNOR_ERASE_TYPE_MAX ; i++)if (map->erase_type[i].size ==4096 ) map->erase_type[i].opcode =SPINOR_OP_BE_4K_PMC ; + +return 0 ; }static const struct spi_nor_fixups pm25lv_nor_fixups = {
drivers/mtd/spi-nor/macronix.c +3 -1
@@ -110,10 +110,12 @@ static void macronix_nor_default_init(struct spi_nor *nor) nor->params->quad_enable = spi_nor_sr1_bit6_quad_enable; } -static void macronix_nor_late_init (struct spi_nor *nor) +static int macronix_nor_late_init (struct spi_nor *nor) {if (!nor->params->set_4byte_addr_mode) nor->params->set_4byte_addr_mode = spi_nor_set_4byte_addr_mode_en4b_ex4b; + +return 0 ; }static const struct spi_nor_fixups macronix_nor_fixups = {
drivers/mtd/spi-nor/micron-st.c +3 -1
@@ -429,7 +429,7 @@ static void micron_st_nor_default_init(struct spi_nor *nor) nor->params->quad_enable =NULL ; } -static void micron_st_nor_late_init (struct spi_nor *nor) +static int micron_st_nor_late_init (struct spi_nor *nor) {struct spi_nor_flash_parameter *params = nor->params;
@@ -438,6 +438,8 @@ static void micron_st_nor_late_init(struct spi_nor *nor)if (!params->set_4byte_addr_mode) params->set_4byte_addr_mode = spi_nor_set_4byte_addr_mode_wren_en4b_ex4b; + +return 0 ; }static const struct spi_nor_fixups micron_st_nor_fixups = {
drivers/mtd/spi-nor/spansion.c +71 -15
217 lines not on this page · raw message
drivers/mtd/spi-nor/sst.c +6 -2
@@ -49,9 +49,11 @@ static const struct spi_nor_locking_ops sst26vf_nor_locking_ops = { .is_locked = sst26vf_nor_is_locked, }; -static void sst26vf_nor_late_init (struct spi_nor *nor) +static int sst26vf_nor_late_init (struct spi_nor *nor) { nor->params->locking_ops = &sst26vf_nor_locking_ops; + +return 0 ; }static const struct spi_nor_fixups sst26vf_nor_fixups = {
@@ -203,10 +205,12 @@ static int sst_nor_write(struct mtd_info *mtd, loff_t to, size_t len,return ret; } -static void sst_nor_late_init (struct spi_nor *nor) +static int sst_nor_late_init (struct spi_nor *nor) {if (nor->info->mfr_flags &SST_WRITE ) nor->mtd._write = sst_nor_write; + +return 0 ; }static const struct spi_nor_fixups sst_nor_fixups = {
drivers/mtd/spi-nor/winbond.c +3 -1
@@ -217,7 +217,7 @@ static const struct spi_nor_otp_ops winbond_nor_otp_ops = { .is_locked = spi_nor_otp_is_locked_sr2, }; -static void winbond_nor_late_init (struct spi_nor *nor) +static int winbond_nor_late_init (struct spi_nor *nor) {struct spi_nor_flash_parameter *params = nor->params;
@@ -233,6 +233,8 @@ static void winbond_nor_late_init(struct spi_nor *nor)* from BFPT, if any. */ params->set_4byte_addr_mode = winbond_nor_set_4byte_addr_mode; + +return 0 ; }static const struct spi_nor_fixups winbond_nor_fixups = {
drivers/mtd/spi-nor/xilinx.c +3 -1
@@ -155,10 +155,12 @@ static int xilinx_nor_setup(struct spi_nor *nor,return 0 ; }
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/atheros/alx/ethtool.c +2 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_eswitch.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/wil6210/txrx.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/wil6210/txrx.h +4 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/wil6210/txrx_edma.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/wil6210/txrx_edma.h +4 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/atmel/at76c50x-usb.c +4 -4
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/pcie/drv.c +1 -10
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intersil/orinoco/orinoco_usb.c +6 -6
Lines of this file are not shown. View the raw message.
drivers/net/wireless/legacy/rndis_wlan.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/marvell/mwifiex/tdls.c +6 -3
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7603/Kconfig +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7615/Kconfig +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt76x0/Kconfig +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt76x2/Kconfig +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7915/Kconfig +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7921/mac.c +4 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7996/Kconfig +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt7601u/Kconfig +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/purelifi/plfxlc/Kconfig +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ralink/rt2x00/Kconfig +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtw88/main.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtw88/pci.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtw88/usb.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtw89/pci.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/virtual/mac80211_hwsim.c +6 -6
Lines of this file are not shown. View the raw message.
drivers/nvme/host/core.c +35 -19
54 lines not on this page · raw message
drivers/pci/controller/dwc/pcie-fu740.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/perf/arm_smmuv3_pmu.c +45 -1
46 lines not on this page · raw message
drivers/scsi/megaraid/megaraid_sas_base.c +9 -12
Lines of this file are not shown. View the raw message.
drivers/scsi/pm8001/pm8001_init.c +17 -34
51 lines not on this page · raw message
drivers/staging/wlan-ng/prism2usb.c +24 -24
48 lines not on this page · raw message
drivers/target/iscsi/iscsi_target_configfs.c +27 -27
54 lines not on this page · raw message
drivers/tty/serial/cpm_uart/cpm_uart_core.c +4 -9
Lines of this file are not shown. View the raw message.
drivers/usb/typec/tcpm/qcom/qcom_pmic_typec.c +37 -0
Lines of this file are not shown. View the raw message.
fs/btrfs/extent-tree.c +66 -12
78 lines not on this page · raw message
fs/btrfs/extent_io.c +18 -25
43 lines not on this page · raw message
fs/btrfs/zoned.c +107 -24
131 lines not on this page · raw message
fs/ext4/mballoc.c +27 -34
61 lines not on this page · raw message
include/uapi/linux/netfilter_bridge/ebtables.h +8 -6
Lines of this file are not shown. View the raw message.
kernel/printk/printk.c +103 -36
139 lines not on this page · raw message
kernel/trace/trace.c +61 -7
68 lines not on this page · raw message
net/netlink/af_netlink.c +30 -60
90 lines not on this page · raw message
samples/hw_breakpoint/data_breakpoint.c +3 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/arm64/signal/testcases/zt_regs.c +1 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/ftrace/ftracetest +8 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/nolibc/nolibc-test.c +32 -3
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.