Linux 6.6.78
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.6.78 kernel.
All users of the 6.6 kernel series must upgrade.
The updated 6.6.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.6.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Makefile | 2 arch/arm/boot/dts/ti/omap/dra7-l4.dtsi | 2 arch/arm/boot/dts/ti/omap/omap3-gta04.dtsi | 10 arch/arm64/boot/dts/nvidia/tegra234.dtsi | 6 arch/arm64/boot/dts/qcom/sm6115.dtsi | 8 arch/arm64/boot/dts/qcom/sm6350.dtsi | 6 arch/arm64/boot/dts/qcom/sm6375.dtsi | 10 arch/arm64/boot/dts/qcom/sm8350.dtsi | 492 +++++------ arch/arm64/boot/dts/qcom/sm8450.dtsi | 4 arch/arm64/boot/dts/qcom/sm8550.dtsi | 9 arch/arm64/boot/dts/rockchip/rk3399-puma.dtsi | 2 arch/arm64/kvm/arch_timer.c | 4 arch/arm64/mm/hugetlbpage.c | 12 arch/loongarch/include/uapi/asm/ptrace.h | 10 arch/loongarch/kernel/ptrace.c | 6 arch/m68k/include/asm/vga.h | 8 arch/mips/kernel/ftrace.c | 2 arch/mips/loongson64/boardinfo.c | 2 arch/mips/math-emu/cp1emu.c | 2 arch/powerpc/kvm/e500_mmu_host.c | 21 arch/powerpc/platforms/pseries/eeh_pseries.c | 6 arch/s390/include/asm/futex.h | 2 arch/s390/include/asm/processor.h | 3 arch/s390/kvm/vsie.c | 25 arch/x86/boot/compressed/Makefile | 1 arch/x86/include/asm/kexec.h | 18 arch/x86/include/asm/kvm_host.h | 2 arch/x86/kernel/amd_nb.c | 4 arch/x86/kernel/machine_kexec_64.c | 45 - arch/x86/kvm/lapic.c | 66 + arch/x86/kvm/svm/svm.c | 2 arch/x86/kvm/vmx/vmx.c | 2 arch/x86/mm/ident_map.c | 23 arch/x86/pci/fixup.c | 30 arch/x86/xen/xen-head.S | 5 block/blk-cgroup.c | 1 block/fops.c | 5 drivers/acpi/apei/ghes.c | 10 drivers/acpi/prmt.c | 4 drivers/acpi/property.c | 10 drivers/ata/libata-sff.c | 18 drivers/char/misc.c | 39 drivers/char/tpm/eventlog/acpi.c | 15 drivers/clk/mediatek/clk-mt2701-aud.c | 10 drivers/clk/mediatek/clk-mt2701-bdp.c | 1 drivers/clk/mediatek/clk-mt2701-img.c | 1 drivers/clk/mediatek/clk-mt2701-mm.c | 1 drivers/clk/mediatek/clk-mt2701-vdec.c | 1 drivers/clk/qcom/Kconfig | 1 drivers/clk/qcom/clk-alpha-pll.c | 2 drivers/clk/qcom/clk-rpmh.c | 2 drivers/clk/qcom/dispcc-sm6350.c | 7 drivers/clk/qcom/gcc-mdm9607.c | 2 drivers/clk/qcom/gcc-sm6350.c | 22 drivers/clk/qcom/gcc-sm8550.c | 8 drivers/clk/sunxi-ng/ccu-sun50i-a100.c | 6 drivers/cpufreq/s3c64xx-cpufreq.c | 11 drivers/crypto/qce/aead.c | 2 drivers/crypto/qce/core.c | 13 drivers/crypto/qce/sha.c | 2 drivers/crypto/qce/skcipher.c | 2 drivers/firmware/Kconfig | 2 drivers/firmware/efi/libstub/Makefile | 2 drivers/gpio/gpio-pca953x.c | 19 drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c | 7 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 2 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c | 6 drivers/gpu/drm/amd/display/dc/dce/dmub_hw_lock_mgr.c | 3 drivers/gpu/drm/amd/pm/swsmu/smu13/aldebaran_ppt.c | 1 drivers/gpu/drm/arm/display/komeda/komeda_wb_connector.c | 4 drivers/gpu/drm/bridge/analogix/anx7625.c | 2 drivers/gpu/drm/bridge/ite-it6505.c | 83 + drivers/gpu/drm/bridge/ite-it66121.c | 2 drivers/gpu/drm/display/drm_dp_cec.c | 14 drivers/gpu/drm/drm_connector.c | 1 drivers/gpu/drm/drm_edid.c | 6 drivers/gpu/drm/drm_fb_helper.c | 14 drivers/gpu/drm/exynos/exynos_hdmi.c | 2 drivers/gpu/drm/i915/display/skl_universal_plane.c | 4 drivers/gpu/drm/i915/gem/i915_gem_shmem.c | 6 drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c | 20 drivers/gpu/drm/radeon/radeon_audio.c | 2 drivers/gpu/drm/rockchip/cdn-dp-core.c | 9 drivers/gpu/drm/sti/sti_hdmi.c | 2 drivers/gpu/drm/vc4/vc4_hdmi.c | 4 drivers/gpu/drm/virtio/virtgpu_drv.h | 7 drivers/gpu/drm/virtio/virtgpu_plane.c | 58 - drivers/hid/hid-sensor-hub.c | 21 drivers/hid/wacom_wac.c | 5 drivers/i2c/i2c-core-acpi.c | 22 drivers/i3c/master.c | 2 drivers/iio/light/as73211.c | 24 drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 17 drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c | 1 drivers/irqchip/irq-apple-aic.c | 3 drivers/leds/leds-lp8860.c | 2 drivers/mailbox/tegra-hsp.c | 6 drivers/md/dm-crypt.c | 27 drivers/media/i2c/ccs/ccs-core.c | 6 drivers/media/i2c/ccs/ccs-data.c | 14 drivers/media/i2c/ds90ub913.c | 1 drivers/media/i2c/ds90ub953.c | 1 drivers/media/i2c/ds90ub960.c | 123 +- drivers/media/i2c/imx296.c | 2 drivers/media/i2c/ov5640.c | 1 drivers/media/platform/marvell/mmp-driver.c | 21 drivers/media/usb/uvc/uvc_ctrl.c | 8 drivers/media/usb/uvc/uvc_driver.c | 98 +- drivers/media/usb/uvc/uvc_video.c | 21 drivers/media/usb/uvc/uvcvideo.h | 1 drivers/media/v4l2-core/v4l2-mc.c | 2 drivers/mfd/lpc_ich.c | 3 drivers/misc/fastrpc.c | 8 drivers/mmc/core/sdio.c | 2 drivers/mmc/host/sdhci-msm.c | 53 + drivers/mtd/nand/onenand/onenand_base.c | 1 drivers/mtd/ubi/build.c | 2 drivers/net/ethernet/aquantia/atlantic/aq_nic.c | 4 drivers/net/ethernet/broadcom/genet/bcmgenet_wol.c | 16 drivers/net/ethernet/broadcom/tg3.c | 58 + drivers/net/ethernet/intel/ice/ice_devlink.c | 3 drivers/net/ethernet/intel/ice/ice_txrx.c | 79 + drivers/net/ethernet/mellanox/mlx5/core/lib/clock.c | 24 drivers/net/phy/nxp-c45-tja11xx.c | 2 drivers/net/tun.c | 2 drivers/net/usb/ipheth.c | 69 + drivers/net/vmxnet3/vmxnet3_xdp.c | 14 drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | 5 drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c | 8 drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy/phy_n.c | 3 drivers/net/wireless/intel/iwlwifi/fw/acpi.c | 13 drivers/net/wireless/mediatek/mt76/mt7915/eeprom.c | 21 drivers/net/wireless/mediatek/mt76/mt7915/init.c | 4 drivers/net/wireless/mediatek/mt76/mt7921/usb.c | 3 drivers/net/wireless/realtek/rtlwifi/rtl8821ae/fw.h | 4 drivers/net/wireless/realtek/rtw88/sdio.c | 2 drivers/net/wireless/realtek/rtw89/phy.c | 11 drivers/net/wireless/realtek/rtw89/phy.h | 2 drivers/net/wwan/iosm/iosm_ipc_pcie.c | 56 + drivers/nvme/host/core.c | 8 drivers/nvme/host/fc.c | 9 drivers/nvme/host/pci.c | 4 drivers/nvmem/core.c | 2 drivers/nvmem/imx-ocotp-ele.c | 16 drivers/nvmem/qcom-spmi-sdam.c | 1 drivers/of/base.c | 8 drivers/of/of_reserved_mem.c | 4 drivers/pci/endpoint/pci-epf-core.c | 1 drivers/pinctrl/samsung/pinctrl-samsung.c | 2 drivers/platform/x86/acer-wmi.c | 4 drivers/platform/x86/intel/int3472/discrete.c | 3 drivers/platform/x86/intel/int3472/tps68470.c | 3 drivers/ptp/ptp_clock.c | 8 drivers/pwm/pwm-microchip-core.c | 2 drivers/rtc/rtc-zynqmp.c | 4 drivers/scsi/qla2xxx/qla_def.h | 2 drivers/scsi/qla2xxx/qla_dfs.c | 124 ++ drivers/scsi/qla2xxx/qla_gbl.h | 3 drivers/scsi/qla2xxx/qla_init.c | 28 drivers/scsi/st.c | 6 drivers/scsi/st.h | 1 drivers/scsi/storvsc_drv.c | 1 drivers/soc/mediatek/mtk-devapc.c | 18 drivers/soc/qcom/smem_state.c | 3 drivers/soc/qcom/socinfo.c | 2 drivers/spi/atmel-quadspi.c | 118 +- drivers/tty/serial/sh-sci.c | 25 drivers/tty/serial/xilinx_uartps.c | 10 drivers/ufs/host/ufs-qcom.c | 18 drivers/usb/gadget/function/f_tcm.c | 54 - drivers/vfio/platform/vfio_platform_common.c | 10 fs/binfmt_flat.c | 2 fs/btrfs/file.c | 2 fs/btrfs/inode.c | 4 fs/btrfs/ordered-data.c | 12 fs/btrfs/relocation.c | 14 fs/btrfs/transaction.c | 4 fs/cachefiles/interface.c | 14 fs/cachefiles/ondemand.c | 30 fs/exec.c | 29 fs/nfs/flexfilelayout/flexfilelayout.c | 27 fs/nilfs2/inode.c | 6 fs/ocfs2/dir.c | 25 fs/ocfs2/super.c | 2 fs/ocfs2/symlink.c | 5 fs/proc/array.c | 2 fs/smb/client/cifsglob.h | 14 fs/smb/client/dir.c | 6 fs/smb/client/smb1ops.c | 2 fs/smb/client/smb2inode.c | 108 +- fs/smb/client/smb2ops.c | 18 fs/smb/client/smb2pdu.c | 2 fs/smb/client/smb2proto.h | 2 fs/smb/server/transport_ipc.c | 9 fs/xfs/xfs_inode.c | 7 fs/xfs/xfs_iomap.c | 6 include/drm/drm_connector.h | 5 include/linux/binfmts.h | 4 include/linux/kvm_host.h | 9 include/linux/mlx5/driver.h | 1 include/net/sch_generic.h | 2 include/rv/da_monitor.h | 4 include/trace/events/rxrpc.h | 1 include/uapi/linux/input-event-codes.h | 1 include/ufs/ufs.h | 4 io_uring/io_uring.c | 5 io_uring/net.c | 5 io_uring/poll.c | 4 io_uring/rw.c | 10 kernel/printk/printk.c | 2 kernel/sched/core.c | 6 kernel/trace/trace_osnoise.c | 17 lib/Kconfig.debug | 8 lib/maple_tree.c | 23 mm/kfence/core.c | 2 mm/kmemleak.c | 2 net/bluetooth/l2cap_sock.c | 7 net/bluetooth/mgmt.c | 12 net/ipv4/udp.c | 4 net/ipv6/udp.c | 4 net/mptcp/pm_netlink.c | 3 net/mptcp/protocol.c | 1 net/ncsi/internal.h | 2 net/ncsi/ncsi-cmd.c | 3 net/ncsi/ncsi-manage.c | 38 net/ncsi/ncsi-pkt.h | 10 net/ncsi/ncsi-rsp.c | 58 - net/nfc/nci/hci.c | 2 net/rose/af_rose.c | 24 net/rxrpc/ar-internal.h | 2 net/rxrpc/call_object.c | 6 net/rxrpc/conn_event.c | 21 net/rxrpc/conn_object.c | 1 net/rxrpc/input.c | 2 net/rxrpc/sendmsg.c | 2 net/sched/sch_netem.c | 2 net/tipc/crypto.c | 4 rust/kernel/init.rs | 2 scripts/Makefile.extrawarn | 5 scripts/gdb/linux/cpus.py | 2 security/safesetid/securityfs.c | 3 security/tomoyo/common.c | 2 sound/pci/hda/hda_auto_parser.c | 8 sound/pci/hda/hda_auto_parser.h | 1 sound/pci/hda/patch_realtek.c | 2 sound/soc/amd/Kconfig | 2 sound/soc/amd/yc/acp6x-mach.c | 28 sound/soc/soc-pcm.c | 32 tools/perf/bench/epoll-wait.c | 7 tools/testing/selftests/net/ipsec.c | 3 tools/testing/selftests/net/mptcp/mptcp_connect.c | 2 tools/testing/selftests/net/mptcp/mptcp_join.sh | 2 tools/testing/selftests/net/udpgso.c | 26 tools/tracing/rtla/src/osnoise.c | 2 tools/tracing/rtla/src/timerlat_hist.c | 26 tools/tracing/rtla/src/timerlat_top.c | 27 tools/tracing/rtla/src/trace.c | 8 tools/tracing/rtla/src/trace.h | 1 258 files changed, 2394 insertions(+), 1205 deletions(-)
Alex Williamson (1):
vfio/platform: check the bounds of read/write syscalls
Alexander Sverdlin (1):
leds: lp8860: Write full EEPROM, not only half of it
Anandu Krishnan E (1):
misc: fastrpc: Deregister device nodes properly in error scenarios
Anastasia Belova (1):
clk: qcom: clk-rpmh: prevent integer overflow in recalc_rate
Andreas Kemnade (1):
ARM: dts: ti/omap: gta04: fix pm issues caused by spi module
Andy Shevchenko (1):
ACPI: property: Fix return value for nval == 0 in acpi_data_prop_read()
Anshuman Khandual (1):
arm64/mm: Ensure adequate HUGE_MAX_HSTATE
Armin Wolf (1):
platform/x86: acer-wmi: Ignore AC events
Aubrey Li (1):
ACPI: PRM: Remove unnecessary strict handler address checks
Bao D. Nguyen (1):
scsi: ufs: core: Fix the HIGH/LOW_TEMP Bit Definitions
Bartosz Golaszewski (2):
crypto: qce - fix goto jump in error path
crypto: qce - unregister previously registered algos in error path
Bence Csókás (1):
spi: atmel-qspi: Memory barriers after memory-mapped I/O
Bitterblue Smith (1):
wifi: rtlwifi: rtl8821ae: Fix media status report
Borislav Petkov (1):
APEI: GHES: Have GHES honor the panic= setting
Brad Griffis (1):
arm64: tegra: Fix Tegra234 PCIe interrupt-map
Brian Geffon (1):
drm/i915: Fix page cleanup on DMA remap failure
Carlos Llamas (1):
lockdep: Fix upper limit for LOCKDEP_*_BITS configs
Catalin Marinas (1):
mm: kmemleak: fix upper boundary check for physical address objects
Chih-Kang Chang (1):
wifi: rtw89: add crystal_cap check to avoid setting as overflow value
Claudiu Beznea (2):
serial: sh-sci: Drop __initdata macro for port_cfg
serial: sh-sci: Do not probe the serial port if its slot in sci_ports[] is in use
Cody Eksal (1):
clk: sunxi-ng: a100: enable MMC clock reparenting
Cong Wang (1):
netem: Update sch->q.qlen before qdisc_tree_reduce_backlog()
Conor Dooley (1):
pwm: microchip-core: fix incorrect comparison with max period
Cosmin Tanislav (1):
media: mc: fix endpoint iteration
Csókás, Bence (1):
spi: atmel-quadspi: Create atmel_qspi_ops to support newer SoC families
Dan Carpenter (4):
tipc: re-order conditions in tipc_crypto_key_rcv()
binfmt_flat: Fix integer overflow bug on 32 bit systems
ksmbd: fix integer overflows on 32 bit systems
NFC: nci: Add bounds checking in nci_hci_create_pipe()
Daniel Golle (5):
clk: mediatek: mt2701-vdec: fix conversion to mtk_clk_simple_probe
clk: mediatek: mt2701-aud: fix conversion to mtk_clk_simple_probe
clk: mediatek: mt2701-bdp: add missing dummy clk
clk: mediatek: mt2701-img: add missing dummy clk
clk: mediatek: mt2701-mm: add missing dummy clk
Daniel Wagner (2):
nvme: handle connectivity loss in nvme_set_queue_count
nvme-fc: use ctrl state getter
Daniele Ceraolo Spurio (1):
drm/i915/guc: Debug print LRC state entries only if the context is pinned
David Hildenbrand (1):
KVM: s390: vsie: fix some corner-cases when grabbing vsie pages
David Howells (2):
rxrpc: Fix the rxrpc_connection attend queue handling
rxrpc: Fix call state set to not include the SERVER_SECURING state
David Woodhouse (1):
x86/kexec: Allocate PGD for x86_64 transition page tables separately
Denis Arefev (1):
ubi: Add a check for ubi_num
Dmitry Antipov (1):
wifi: brcmsmac: add gain range check to wlc_phy_iqcal_gainparams_nphy()
Dmitry Baryshkov (9):
drm/connector: add mutex to protect ELD from concurrent access
drm/bridge: anx7625: use eld_mutex to protect access to connector->eld
drm/bridge: ite-it66121: use eld_mutex to protect access to connector->eld
drm/amd/display: use eld_mutex to protect access to connector->eld
drm/exynos: hdmi: use eld_mutex to protect access to connector->eld
drm/radeon: use eld_mutex to protect access to connector->eld
drm/sti: hdmi: use eld_mutex to protect access to connector->eld
drm/vc4: hdmi: use eld_mutex to protect access to connector->eld
arm64: dts: qcom: sm8550: correct MDSS interconnectsDongwon Kim (1):
drm/virtio: New fence for every plane update
Edson Juliano Drosdeck (1):
ALSA: hda/realtek: Enable headset mic on Positivo C6400
Ekansh Gupta (2):
misc: fastrpc: Fix registered buffer page address
misc: fastrpc: Fix copy buffer page size
Eric Biggers (2):
scsi: ufs: qcom: Fix crypto key eviction
crypto: qce - fix priority to be less than ARMv8 CE
Eric Dumazet (1):
net: rose: lock the socket in rose_bind()
Even Xu (1):
HID: Wacom: Add PCI Wacom device support
Fangzhi Zuo (1):
drm/amd/display: Fix Mode Cutoff in DSC Passthrough to DP2.1 Monitor
Fedor Pchelkin (2):
Bluetooth: L2CAP: handle NULL sock pointer in l2cap_sock_alloc
Bluetooth: L2CAP: accept zero as a special value for MTU auto-selection
Filipe Manana (3):
btrfs: fix assertion failure when splitting ordered extent after transaction abort
btrfs: fix use-after-free when attempting to join an aborted transaction
btrfs: avoid monopolizing a core when activating a swap file
Fiona Klute (1):
wifi: rtw88: sdio: Fix disconnection after beacon loss
Florian Fainelli (1):
net: bcmgenet: Correct overlaying of PHY and MAC Wake-on-LAN
Foster Snowhill (7):
usbnet: ipheth: fix possible overflow in DPE length check
usbnet: ipheth: use static NDP16 location in URB
usbnet: ipheth: check that DPE points past NCM header
usbnet: ipheth: refactor NCM datagram loop
usbnet: ipheth: break up NCM header size computation
usbnet: ipheth: fix DPE OoB read
usbnet: ipheth: document scope of NCM implementation
Frank Li (1):
i3c: master: Fix missing 'ret' assignment in set_speed()
Gabor Juhos (1):
clk: qcom: clk-alpha-pll: fix alpha mode configuration
Gabriele Monaco (1):
rv: Reset per-task monitors also for idle tasks
Georg Gottleuber (2):
nvme-pci: Add TUXEDO InfinityFlex to Samsung sleep quirk
nvme-pci: Add TUXEDO IBP Gen9 to Samsung sleep quirk
Greg Kroah-Hartman (1):
Linux 6.6.78
Hans Verkuil (1):
gpu: drm_dp_cec: fix broken CEC adapter properties check
Hans de Goede (2):
mfd: lpc_ich: Add another Gemini Lake ISA bridge PCI device-id platform/x86: int3472: Check for adev == NULL
Hao-ran Zheng (1):
btrfs: fix data race when accessing the inode's disk_i_size at btrfs_drop_extents()
Haoxiang Li (1):
drm/komeda: Add check for komeda_get_layer_fourcc_list()
Heiko Carstens (1):
s390/futex: Fix FUTEX_OP_ANDN implementation
Heiko Stuebner (1):
HID: hid-sensor-hub: don't use stale platform-data on remove
Heming Zhao (1):
ocfs2: fix incorrect CPU endianness conversion causing mount failure
Hermes Wu (5):
drm/bridge: it6505: Change definition MAX_HDCP_DOWN_STREAM_COUNT drm/bridge: it6505: fix HDCP Bstatus check drm/bridge: it6505: fix HDCP encryption when R0 ready drm/bridge: it6505: fix HDCP CTS compare V matching drm/bridge: it6505: fix HDCP CTS KSV list wait timer
Hou Tao (2):
dm-crypt: don't update io->sector after kcryptd_crypt_write_io_submit()
dm-crypt: track tag_offset in convert_context
Ido Schimmel (1):
net: sched: Fix truncation of offloaded action statistics
Illia Ostapyshyn (1):
Input: allocate keycode for phone linking
Ivan Stepchenko (1):
mtd: onenand: Fix uninitialized retlen in do_otp_read()
Jacob Moroni (1):
net: atlantic: fix warning during hot unplug
Jakob Unterwurzacher (1):
arm64: dts: rockchip: increase gmac rx_delay on rk3399-puma
Jan Kiszka (1):
scripts/gdb: fix aarch64 userspace detection in get_current_task
Jarkko Sakkinen (1):
tpm: Change to kvalloc() in eventlog/acpi.c
Javier Carrasco (2):
iio: light: as73211: fix channel handling in only-color triggered buffer
pinctrl: samsung: fix fwnode refcount cleanup if platform_get_irq_optional() fails
Jennifer Berringer (1):
nvmem: core: improve range check for nvmem_cell_write()
Jens Axboe (2):
block: don't revert iter for -EIOCBQUEUED io_uring/net: don't retry connect operation on EPOLLERR
Jiasheng Jiang (1):
ice: Add check for devm_kzalloc()
Josef Bacik (1):
btrfs: convert BUG_ON in btrfs_reloc_cow_block() to proper error handling
Juergen Gross (2):
x86/xen: fix xen_hypercall_hvm() to not clobber %rbx x86/xen: add FRAME_END to xen_hypercall_hvm()
Kai Mäkisara (1):
scsi: st: Don't set pos_unknown just after device recognition
Kees Cook (1):
exec: fix up /proc/pid/comm in the execveat(AT_EMPTY_PATH) case
Kexy Biscuit (1):
MIPS: Loongson64: remove ROM Size unit in boardinfo
Koichiro Den (1):
Revert "btrfs: avoid monopolizing a core when activating a swap file"
Konrad Dybcio (1):
clk: qcom: Make GCC_8150 depend on QCOM_GDSC
Krzysztof Kozlowski (17):
arm64: dts: qcom: sm6115: Fix MPSS memory length
arm64: dts: qcom: sm6115: Fix CDSP memory length
arm64: dts: qcom: sm6115: Fix ADSP memory base and length
arm64: dts: qcom: sm6350: Fix ADSP memory length
arm64: dts: qcom: sm6350: Fix MPSS memory length
arm64: dts: qcom: sm6375: Fix ADSP memory length
arm64: dts: qcom: sm6375: Fix CDSP memory base and length
arm64: dts: qcom: sm6375: Fix MPSS memory base and length
arm64: dts: qcom: sm8350: Fix ADSP memory base and length
arm64: dts: qcom: sm8350: Fix CDSP memory base and length
arm64: dts: qcom: sm8350: Fix MPSS memory length
arm64: dts: qcom: sm8450: Fix CDSP memory length
arm64: dts: qcom: sm8450: Fix MPSS memory length
arm64: dts: qcom: sm8550: Fix CDSP memory length
arm64: dts: qcom: sm8550: Fix MPSS memory length
soc: mediatek: mtk-devapc: Fix leaking IO map on error paths
soc: qcom: smem_state: fix missing of_node_put in error path
Kuan-Wei Chiu (3):
printk: Fix signed integer overflow when defining LOG_BUF_LEN_MAX perf bench: Fix undefined behavior in cmpworker()
ALSA: hda: Fix headset detection failure due to unstable sort
Kuninori Morimoto (1):
ASoC: soc-pcm: don't use soc_pcm_ret() on .prepare callback
Lenny Szubowicz (1):
tg3: Disable tg3 PCIe AER on system reboot
Leo Stone (1):
safesetid: check size of policy writes
Lijo Lazar (1):
drm/amd/pm: Mark MM activity as unsupported
Liu Ye (1):
selftests/net/ipsec: Fix Null pointer dereference in rtattr_pack()
Long Li (1):
scsi: storvsc: Set correct data length for sending SCSI command without payload
Lubomir Rintel (1):
media: mmp: Bring back registration of the device
Luca Weiss (4):
clk: qcom: gcc-sm6350: Add missing parent_map for two clocks
clk: qcom: dispcc-sm6350: Add missing parent_map for a clock
arm64: dts: qcom: sm6350: Fix uart1 interconnect path
nvmem: qcom-spmi-sdam: Set size in struct nvmem_config
Maarten Lankhorst (1):
drm/modeset: Handle tiled displays in pan_display_atomic.
Maciej Fijalkowski (1):
ice: put Rx buffers after being done with current frame
Maciej S. Szmigiero (1):
net: wwan: iosm: Fix hibernation by re-binding the driver around it
Manivannan Sadhasivam (1):
clk: qcom: gcc-sm8550: Do not turn off PCIe GDSCs during gdsc_disable()
Marc Zyngier (1):
KVM: arm64: timer: Always evaluate the need for a soft timer
Marcel Hamer (1):
wifi: brcmfmac: fix NULL pointer dereference in brcmf_txfinalize()
Marco Elver (1):
kfence: skip __GFP_THISNODE allocations on NUMA systems
Mario Limonciello (1):
ASoC: acp: Support microphone from Lenovo Go S
Mark Tomlinson (1):
gpio: pca953x: Improve interrupt support
Mateusz Jończyk (1):
mips/math-emu: fix emulation of the prefx instruction
Matthew Wilcox (Oracle) (1):
ocfs2: handle a symlink read error correctly
Matthieu Baerts (NGI0) (3):
selftests: mptcp: connect: -f: no reconnect
mptcp: pm: only set fullmesh for subflow endp
selftests: mptcp: join: fix AF_INET6 variable
Mazin Al Haddad (1):
Bluetooth: MGMT: Fix slab-use-after-free Read in mgmt_remove_adv_monitor_sync
Meetakshi Setiya (1):
smb: client: change lease epoch type from unsigned int to __u16
Mehdi Djait (1):
media: ccs: Fix cleanup order in ccs_probe()
Michal Simek (1):
rtc: zynqmp: Fix optional clock name property
Miguel Ojeda (1):
rust: init: use explicit ABI to clean warning in future compilers
Mike Snitzer (1):
pnfs/flexfiles: retry getting layout segment for reads
Milos Reljin (1):
net: phy: c45-tjaxx: add delay between MDIO write and read in soft_reset
Miri Korenblit (1):
wifi: iwlwifi: avoid memory leak
Nam Cao (1):
fs/proc: do_task_stat: Fix ESP not readable during coredump
Narayana Murty N (1):
powerpc/pseries/eeh: Fix get PE state translation
Nathan Chancellor (3):
efi: libstub: Use '-std=gnu11' to fix build with GCC 15
kbuild: Move -Wenum-enum-conversion to W=2 x86/boot: Use '-std=gnu11' to fix build with GCC 15
Naushir Patuck (1):
media: imx296: Add standby delay during probe
Nick Chan (1):
irqchip/apple-aic: Only handle PMC interrupt as FIQ when configured so
Nick Morrow (1):
wifi: mt76: mt7921u: Add VID/PID for TP-Link TXE50UH
Nikita Zhandarovich (1):
nilfs2: fix possible int overflows in nilfs_fiemap()
Niklas Cassel (1):
ata: libata-sff: Ensure that we cannot write outside the allocated buffer
Paolo Abeni (1):
mptcp: prevent excessive coalescing on receive
Paolo Bonzini (1):
KVM: e500: always restore irqs
Paul Fertser (3):
net/ncsi: fix locking in Get MAC Address handling
net/ncsi: wait for the last response to Deselect Package before configuring channel net/ncsi: use dev_set_mac_address() for Get MC MAC Address handling
Pavel Begunkov (3):
io_uring: fix multishots with selected buffers
io_uring: fix io_req_prep_async with provided buffers io_uring/rw: commit provided buffer state on async
Pekka Pessi (1):
mailbox: tegra-hsp: Clear mailbox before using message
Peter Delevoryas (1):
net/ncsi: Add NC-SI 1.2 Get MC MAC Address command
Prasad Pandit (1):
firmware: iscsi_ibft: fix ISCSI_IBFT Kconfig entry
Prike Liang (1):
drm/amdkfd: only flush the validate MES contex
Quinn Tran (1):
scsi: qla2xxx: Move FCE Trace buffer allocation to user control
Randolph Ha (1):
i2c: Force ELAN06FA touchpad I2C bus freq to 100KHz
Ricardo Ribalda (4):
media: uvcvideo: Fix crash during unbind if gpio unit is in use
media: uvcvideo: Fix event flags in uvc_ctrl_send_events
media: uvcvideo: Support partial control reads
media: uvcvideo: Remove redundant NULL assignment
Richard Acayan (1):
iommu/arm-smmu-qcom: add sdm670 adreno iommu compatible
Robin Murphy (1):
iommu/arm-smmu-v3: Clean up more on probe failure
Romain Naour (1):
ARM: dts: dra7: Add bus_dma_limit for l4 cfg bus
Ruben Devos (1):
smb: client: fix order of arguments of tracepoints
Sakari Ailus (2):
media: ccs: Clean up parsed CCS static data on parse failure
media: ccs: Fix CCS static data parsing for large block sizes
Sam Bobrowicz (1):
media: ov5640: fix get_light_freq on auto
Sankararaman Jayaraman (1):
vmxnet3: Fix tx queue race condition with XDP
Sascha Hauer (3):
nvmem: imx-ocotp-ele: simplify read beyond device check
nvmem: imx-ocotp-ele: fix reading from non zero offset
nvmem: imx-ocotp-ele: set word length to 1
Satya Priya Kakitapalli (1):
clk: qcom: gcc-mdm9607: Fix cmd_rcgr offset for blsp1_uart6 rcg
Sean Anderson (1):
tty: xilinx_uartps: split sysrq handling
Sean Christopherson (6):
KVM: PPC: e500: Mark "struct page" dirty in kvmppc_e500_shadow_map()
KVM: PPC: e500: Mark "struct page" pfn accessed before dropping mmu_lock
KVM: PPC: e500: Use __kvm_faultin_pfn() to handle page faults
KVM: Explicitly verify target vCPU is online in kvm_get_vcpu()
KVM: x86: Make x2APIC ID 100% readonly
KVM: x86: Re-split x2APIC ICR into ICR+ICR2 for AMD (x2AVIC)
Sebastian Wiese-Wagner (1):
ALSA: hda/realtek: Enable Mute LED on HP Laptop 14s-fq1xxx
Shawn Lin (1):
mmc: core: Respect quirk_max_rate for non-UHS SDIO card
Shayne Chen (1):
wifi: mt76: mt7915: add module param to select 5 GHz or 6 GHz on MT7916
Stas Sergeev (1):
tun: fix group permission check
Stefan Dösinger (1):
wifi: brcmfmac: Check the return value of of_property_read_string_index()
Stephan Gerhold (1):
soc: qcom: socinfo: Avoid out of bounds read of serial number
Steve Wahl (1):
x86/mm/ident_map: Use gbpages only where full GB page should be mapped.
Steven Rostedt (1):
tracing/osnoise: Fix resetting of tracepoints
Su Yue (1):
ocfs2: check dir i_size in ocfs2_find_entry
Suleiman Souhlal (1):
sched: Don't try to catch up excess steal time.
Sumit Gupta (2):
arm64: tegra: Fix typo in Tegra234 dce-fabric compatible
arm64: tegra: Disable Tegra234 sce-fabric node
Sven Schnelle (1):
s390/stackleak: Use exrl instead of ex in __stackleak_poison()
Tetsuo Handa (1):
tomoyo: don't emit warning in tomoyo_write_control()
Thadeu Lima de Souza Cascardo (1):
Revert "media: uvcvideo: Require entities to have a non-zero unique ID"
Thinh Nguyen (4):
usb: gadget: f_tcm: Translate error to sense
usb: gadget: f_tcm: Decrement command ref count on cleanup
usb: gadget: f_tcm: ep_autoconfig with fullspeed endpoint
usb: gadget: f_tcm: Don't prepare BOT write request twice
Thomas Weißschuh (1):
ptp: Ensure info->enable callback is always set
Thomas Zimmermann (2):
m68k: vga: Fix I/O defines
drm/rockchip: cdn-dp: Use drm_connector_helper_hpd_irq_event()
Tiezhu Yang (1):
LoongArch: Extend the maximum number of watchpoints
Tom Chung (1):
Revert "drm/amd/display: Use HW lock mgr for PSR1"
Tomas Glozar (6):
rtla/osnoise: Distinguish missing workload option rtla/timerlat_hist: Set OSNOISE_WORKLOAD for kernel threads rtla/timerlat_top: Set OSNOISE_WORKLOAD for kernel threads
rtla: Add trace_instance_stop
rtla/timerlat_hist: Stop timerlat tracer on signal rtla/timerlat_top: Stop timerlat tracer on signal
Tomi Valkeinen (5):
media: i2c: ds90ub960: Fix UB9702 refclk register access
media: i2c: ds90ub9x3: Fix extra fwnode_handle_put()
media: i2c: ds90ub960: Fix use of non-existing registers on UB9702
media: i2c: ds90ub960: Fix UB9702 VC map
media: i2c: ds90ub960: Fix logging SP & EQ status only for UB9702
Vadim Fedorenko (1):
net/mlx5: use do_aux_work for PHC overflow checks
Ville Syrjälä (1):
drm/i915: Drop 64bpp YUV formats from ICL+ SDR planes
Vimal Agrawal (1):
misc: misc_minor_alloc to use ida for all dynamic/misc dynamic minors
Viresh Kumar (1):
cpufreq: s3c64xx: Fix compilation warning
WangYuli (1):
MIPS: ftrace: Declare ftrace_get_parent_ra_addr() as static
Wei Yang (1):
maple_tree: simplify split calculation
Wentao Liang (2):
xfs: Propagate errors from xfs_reflink_cancel_cow_range in xfs_dax_write_iomap_end
xfs: Add error handling for xfs_reflink_cancel_cow_range
Werner Sembach (1):
PCI: Avoid putting some root ports into D3 on TUXEDO Sirius Gen1
Willem de Bruijn (1):
tun: revert fix group permission check
Yan Zhai (1):
udp: gso: do not drop small packets when PMTU reduces
Yazen Ghannam (1):
x86/amd_nb: Restrict init function to AMD-based systems
Yu-Chun Lin (1):
ASoC: amd: Add ACPI dependency to fix build error
Yuanjie Yang (1):
mmc: sdhci-msm: Correctly set the load for the regulator
Zijun Hu (5):
blk-cgroup: Fix class @block_class's subsystem refcount leakage
of: Correct child specifier used as input of the 2nd nexus node
of: Fix of_find_node_opts_by_path() handling of alias+path+options
of: reserved-memory: Fix using wrong number of cells to get property 'alignment'
PCI: endpoint: Finish virtual EP removal in pci_epf_remove_vepf()
Zizhi Wo (1):
cachefiles: Fix NULL pointer dereference in object->file
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 6 -SUBLEVEL = 77 +SUBLEVEL = 78 EXTRAVERSION = NAME = Pinguïn Aangedreven
arch/arm/boot/dts/ti/omap/dra7-l4.dtsi +2 -0
@@ -12,6 +12,7 @@ &l4_cfg { /* 0x4a000000 */ ranges = <0x00000000 0x4a000000 0x100000>, /* segment 0 */ <0x00100000 0x4a100000 0x100000>, /* segment 1 */ <0x00200000 0x4a200000 0x100000>; /* segment 2 */ + dma-ranges; segment@0 { /* 0x4a000000 */ compatible = "simple-pm-bus";
@@ -557,6 +558,7 @@ segment@100000 { /* 0x4a100000 */ <0x0007e000 0x0017e000 0x001000>, /* ap 124 */ <0x00059000 0x00159000 0x001000>, /* ap 125 */ <0x0005a000 0x0015a000 0x001000>; /* ap 126 */ + dma-ranges; target-module@2000 { /* 0x4a102000, ap 27 3c.0 */ compatible = "ti,sysc";
arch/arm/boot/dts/ti/omap/omap3-gta04.dtsi +10 -0
@@ -446,6 +446,7 @@ &omap3_pmx_core2 { pinctrl-names = "default"; pinctrl-0 = < &hsusb2_2_pins + &mcspi3hog_pins >; hsusb2_2_pins: hsusb2-2-pins {
@@ -459,6 +460,15 @@ OMAP3630_CORE2_IOPAD(0x25fa, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d15.hsusb2_d >; }; + mcspi3hog_pins: mcspi3hog-pins { + pinctrl-single,pins = < + OMAP3630_CORE2_IOPAD(0x25dc, PIN_OUTPUT_PULLDOWN | MUX_MODE4) /* etk_d0 */ + OMAP3630_CORE2_IOPAD(0x25de, PIN_OUTPUT_PULLDOWN | MUX_MODE4) /* etk_d1 */ + OMAP3630_CORE2_IOPAD(0x25e0, PIN_OUTPUT_PULLDOWN | MUX_MODE4) /* etk_d2 */ + OMAP3630_CORE2_IOPAD(0x25e2, PIN_OUTPUT_PULLDOWN | MUX_MODE4) /* etk_d3 */ + >; + }; + spi_gpio_pins: spi-gpio-pinmux-pins { pinctrl-single,pins = < OMAP3630_CORE2_IOPAD(0x25d8, PIN_OUTPUT | MUX_MODE4) /* clk */
arch/arm64/boot/dts/nvidia/tegra234.dtsi +4 -2
@@ -1709,7 +1709,7 @@ sce-fabric@b600000 { compatible = "nvidia,tegra234-sce-fabric"; reg = <0x0 0xb600000 0x0 0x40000>; interrupts = <GIC_SPI 173 IRQ_TYPE_LEVEL_HIGH>; - status = "okay"; + status = "disabled"; }; rce-fabric@be00000 {
@@ -1889,7 +1889,7 @@ bpmp-fabric@d600000 { }; dce-fabric@de00000 { - compatible = "nvidia,tegra234-sce-fabric"; + compatible = "nvidia,tegra234-dce-fabric"; reg = <0x0 0xde00000 0x0 0x40000>; interrupts = <GIC_SPI 381 IRQ_TYPE_LEVEL_HIGH>; status = "okay";
@@ -1912,6 +1912,8 @@ gic: interrupt-controller@f400000 { #redistributor-regions = <1>; #interrupt-cells = <3>; interrupt-controller; + + #address-cells = <0>; }; smmu_iso: iommu@10000000 {
arch/arm64/boot/dts/qcom/sm6115.dtsi +4 -4
@@ -1667,7 +1667,7 @@ dispcc: clock-controller@5f00000 { remoteproc_mpss: remoteproc@6080000 { compatible = "qcom,sm6115-mpss-pas"; - reg = <0x0 0x06080000 0x0 0x100>; + reg = <0x0 0x06080000 0x0 0x10000>; interrupts-extended = <&intc GIC_SPI 307 IRQ_TYPE_EDGE_RISING>, <&modem_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
@@ -2310,9 +2310,9 @@ funnel_apss1_in: endpoint { }; }; - remoteproc_adsp: remoteproc@ab00000 { + remoteproc_adsp: remoteproc@a400000 { compatible = "qcom,sm6115-adsp-pas"; - reg = <0x0 0x0ab00000 0x0 0x100>; + reg = <0x0 0x0a400000 0x0 0x4040>; interrupts-extended = <&intc GIC_SPI 282 IRQ_TYPE_EDGE_RISING>, <&adsp_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
@@ -2384,7 +2384,7 @@ compute-cb@7 { remoteproc_cdsp: remoteproc@b300000 { compatible = "qcom,sm6115-cdsp-pas"; - reg = <0x0 0x0b300000 0x0 0x100000>; + reg = <0x0 0x0b300000 0x0 0x4040>; interrupts-extended = <&intc GIC_SPI 265 IRQ_TYPE_EDGE_RISING>, <&cdsp_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
arch/arm64/boot/dts/qcom/sm6350.dtsi +3 -3
@@ -935,7 +935,7 @@ uart1: serial@884000 { power-domains = <&rpmhpd SM6350_CX>; operating-points-v2 = <&qup_opp_table>; interconnects = <&clk_virt MASTER_QUP_CORE_0 0 &clk_virt SLAVE_QUP_CORE_0 0>, - <&aggre1_noc MASTER_QUP_0 0 &clk_virt SLAVE_EBI_CH0 0>; + <&gem_noc MASTER_AMPSS_M0 0 &config_noc SLAVE_QUP_0 0>; interconnect-names = "qup-core", "qup-config"; status = "disabled"; };
@@ -1259,7 +1259,7 @@ tcsr_mutex: hwlock@1f40000 { adsp: remoteproc@3000000 { compatible = "qcom,sm6350-adsp-pas"; - reg = <0 0x03000000 0 0x100>; + reg = <0x0 0x03000000 0x0 0x10000>; interrupts-extended = <&pdc 6 IRQ_TYPE_LEVEL_HIGH>, <&smp2p_adsp_in 0 IRQ_TYPE_EDGE_RISING>,
@@ -1480,7 +1480,7 @@ gpucc: clock-controller@3d90000 { mpss: remoteproc@4080000 { compatible = "qcom,sm6350-mpss-pas"; - reg = <0x0 0x04080000 0x0 0x4040>; + reg = <0x0 0x04080000 0x0 0x10000>; interrupts-extended = <&intc GIC_SPI 136 IRQ_TYPE_EDGE_RISING>, <&modem_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
arch/arm64/boot/dts/qcom/sm6375.dtsi +5 -5
@@ -1471,9 +1471,9 @@ gpucc: clock-controller@5990000 { #power-domain-cells = <1>; }; - remoteproc_mss: remoteproc@6000000 { + remoteproc_mss: remoteproc@6080000 { compatible = "qcom,sm6375-mpss-pas"; - reg = <0 0x06000000 0 0x4040>; + reg = <0x0 0x06080000 0x0 0x10000>; interrupts-extended = <&intc GIC_SPI 307 IRQ_TYPE_EDGE_RISING>, <&smp2p_modem_in 0 IRQ_TYPE_EDGE_RISING>,
@@ -1514,7 +1514,7 @@ IPCC_MPROC_SIGNAL_GLINK_QMP remoteproc_adsp: remoteproc@a400000 { compatible = "qcom,sm6375-adsp-pas"; - reg = <0 0x0a400000 0 0x100>; + reg = <0 0x0a400000 0 0x10000>; interrupts-extended = <&intc GIC_SPI 282 IRQ_TYPE_LEVEL_HIGH>, <&smp2p_adsp_in 0 IRQ_TYPE_EDGE_RISING>,
@@ -1550,9 +1550,9 @@ IPCC_MPROC_SIGNAL_GLINK_QMP }; }; - remoteproc_cdsp: remoteproc@b000000 { + remoteproc_cdsp: remoteproc@b300000 { compatible = "qcom,sm6375-cdsp-pas"; - reg = <0x0 0x0b000000 0x0 0x100000>; + reg = <0x0 0x0b300000 0x0 0x10000>; interrupts-extended = <&intc GIC_SPI 265 IRQ_TYPE_EDGE_RISING>, <&smp2p_cdsp_in 0 IRQ_TYPE_EDGE_RISING>,
arch/arm64/boot/dts/qcom/sm8350.dtsi +246 -246
522 lines not on this page · raw message
arch/arm64/boot/dts/qcom/sm8450.dtsi +2 -2
@@ -2475,7 +2475,7 @@ compute-cb@5 { remoteproc_cdsp: remoteproc@32300000 { compatible = "qcom,sm8450-cdsp-pas"; - reg = <0 0x32300000 0 0x1400000>; + reg = <0 0x32300000 0 0x10000>; interrupts-extended = <&intc GIC_SPI 578 IRQ_TYPE_EDGE_RISING>, <&smp2p_cdsp_in 0 IRQ_TYPE_EDGE_RISING>,
@@ -2581,7 +2581,7 @@ compute-cb@8 { remoteproc_mpss: remoteproc@4080000 { compatible = "qcom,sm8450-mpss-pas"; - reg = <0x0 0x04080000 0x0 0x4040>; + reg = <0x0 0x04080000 0x0 0x10000>; interrupts-extended = <&intc GIC_SPI 264 IRQ_TYPE_EDGE_RISING>, <&smp2p_modem_in 0 IRQ_TYPE_EDGE_RISING>,
arch/arm64/boot/dts/qcom/sm8550.dtsi +4 -5
@@ -1986,7 +1986,7 @@ gpucc: clock-controller@3d90000 { remoteproc_mpss: remoteproc@4080000 { compatible = "qcom,sm8550-mpss-pas"; - reg = <0x0 0x04080000 0x0 0x4040>; + reg = <0x0 0x04080000 0x0 0x10000>; interrupts-extended = <&intc GIC_SPI 264 IRQ_TYPE_EDGE_RISING>, <&smp2p_modem_in 0 IRQ_TYPE_EDGE_RISING>,
@@ -2448,9 +2448,8 @@ mdss: display-subsystem@ae00000 { power-domains = <&dispcc MDSS_GDSC>; - interconnects = <&mmss_noc MASTER_MDP 0 &gem_noc SLAVE_LLCC 0>, - <&mc_virt MASTER_LLCC 0 &mc_virt SLAVE_EBI1 0>; - interconnect-names = "mdp0-mem", "mdp1-mem"; + interconnects = <&mmss_noc MASTER_MDP 0 &mc_virt SLAVE_EBI1 0>; + interconnect-names = "mdp0-mem"; iommus = <&apps_smmu 0x1c00 0x2>;
@@ -4089,7 +4088,7 @@ nsp_noc: interconnect@320c0000 { remoteproc_cdsp: remoteproc@32300000 { compatible = "qcom,sm8550-cdsp-pas"; - reg = <0x0 0x32300000 0x0 0x1400000>; + reg = <0x0 0x32300000 0x0 0x10000>; interrupts-extended = <&intc GIC_SPI 578 IRQ_TYPE_EDGE_RISING>, <&smp2p_cdsp_in 0 IRQ_TYPE_EDGE_RISING>,
arch/arm64/boot/dts/rockchip/rk3399-puma.dtsi +1 -1
@@ -147,7 +147,7 @@ &gmac { snps,reset-active-low; snps,reset-delays-us = <0 10000 50000>; tx_delay = <0x10>; - rx_delay = <0x10>; + rx_delay = <0x23>; status = "okay"; };
arch/arm64/kvm/arch_timer.c +1 -3
@@ -467,10 +467,8 @@ static void timer_emulate(struct arch_timer_context *ctx)trace_kvm_timer_emulate (ctx, should_fire); -if (should_fire != ctx->irq.level) { +if (should_fire != ctx->irq.level)kvm_timer_update_irq (ctx->vcpu, should_fire, ctx); -return ; - }/* * If the timer can fire now, we don't need to have a soft timer
arch/arm64/mm/hugetlbpage.c +12 -0
@@ -526,6 +526,18 @@ pte_t huge_ptep_clear_flush(struct vm_area_struct *vma,static int __init hugetlbpage_init (void ) { +/* +* HugeTLB pages are supported on maximum four page table +* levels (PUD, CONT PMD, PMD, CONT PTE) for a given base +* page size, corresponding to hugetlb_add_hstate() calls +* here. +* +* HUGE_MAX_HSTATE should at least match maximum supported +* HugeTLB page sizes on the platform. Any new addition to +* supported HugeTLB page sizes will also require changing +* HUGE_MAX_HSTATE as well. +*/ +BUILD_BUG_ON (HUGE_MAX_HSTATE <4 );if (pud_sect_supported ())hugetlb_add_hstate (PUD_SHIFT -PAGE_SHIFT );
arch/loongarch/include/uapi/asm/ptrace.h +10 -0
@@ -72,6 +72,16 @@ struct user_watch_state { } dbg_regs[8 ]; }; +struct user_watch_state_v2 { +uint64_t dbg_info; +struct { +uint64_t addr; +uint64_t mask; +uint32_t ctrl; +uint32_t pad; + } dbg_regs[14 ]; +}; +#define PTRACE_SYSEMU 0x1f#define PTRACE_SYSEMU_SINGLESTEP 0x20
arch/loongarch/kernel/ptrace.c +3 -3
@@ -720,7 +720,7 @@ static int hw_break_set(struct task_struct *target,unsigned int note_type = regset->core_note_type;/* Resource info */ - offset = offsetof(struct user_watch_state , dbg_regs); + offset = offsetof(struct user_watch_state_v2 , dbg_regs);user_regset_copyin_ignore (&pos, &count, &kbuf, &ubuf,0 , offset);/* (address, mask, ctrl) registers */
@@ -920,7 +920,7 @@ static const struct user_regset loongarch64_regsets[] = { #ifdef CONFIG_HAVE_HW_BREAKPOINT [REGSET_HW_BREAK ] = { .core_note_type =NT_LOONGARCH_HW_BREAK , - .n =sizeof (struct user_watch_state ) /sizeof (u32), + .n =sizeof (struct user_watch_state_v2 ) /sizeof (u32), .size =sizeof (u32), .align =sizeof (u32), .regset_get = hw_break_get,
@@ -928,7 +928,7 @@ static const struct user_regset loongarch64_regsets[] = { }, [REGSET_HW_WATCH] = { .core_note_type = NT_LOONGARCH_HW_WATCH, - .n = sizeof(struct user_watch_state) / sizeof(u32), + .n = sizeof(struct user_watch_state_v2) / sizeof(u32), .size = sizeof(u32), .align = sizeof(u32), .regset_get = hw_break_get,
arch/m68k/include/asm/vga.h +4 -4
@@ -9,7 +9,7 @@*/ #ifndef CONFIG_PCI -#include <asm/raw_io.h> +#include <asm/io.h> #include <asm/kmap.h> /*
@@ -29,9 +29,9 @@#define inw_p (port) 0#define outb_p (port, val) do { } while (0)#define outw (port, val) do { } while (0) -#define readb raw_inb -#define writeb raw_outb -#define writew raw_outw +#define readb __raw_readb +#define writeb __raw_writeb +#define writew __raw_writew#endif /* CONFIG_PCI */ #endif /* _ASM_M68K_VGA_H */
arch/mips/kernel/ftrace.c +1 -1
@@ -248,7 +248,7 @@ int ftrace_disable_ftrace_graph_caller(void)#define S_R_SP (0xafb0 << 16)/* s{d,w} R, offset(sp) */ #define OFFSET_MASK 0xffff/* stack offset range: 0 ~ PT_SIZE */ -unsigned long ftrace_get_parent_ra_addr (unsigned long self_ra,unsigned long +static unsigned long ftrace_get_parent_ra_addr (unsigned long self_ra,unsigned long old_parent_ra,unsigned long parent_ra_addr,unsigned long fp) {unsigned long sp, ip, tmp;
arch/mips/loongson64/boardinfo.c +0 -2
@@ -21,13 +21,11 @@ static ssize_t boardinfo_show(struct kobject *kobj,"BIOS Info\n" "Vendor\t\t\t: %s\n" "Version\t\t\t: %s\n" -"ROM Size\t\t: %d KB\n" "Release Date\t\t: %s\n" ,strsep (&tmp_board_manufacturer,"-" ), eboard->name,strsep (&tmp_bios_vendor,"-" ), einter->description, - einter->size, especial->special_name); } static struct kobj_attribute boardinfo_attr = __ATTR(boardinfo, 0444,
arch/mips/math-emu/cp1emu.c +1 -1
@@ -1660,7 +1660,7 @@ static int fpux_emu(struct pt_regs *xcp, struct mips_fpu_struct *ctx,break ; } -case 0x3 : +case 0x7 :if (MIPSInst_FUNC (ir) != pfetch_op)return SIGILL ;
arch/powerpc/kvm/e500_mmu_host.c +8 -13
@@ -242,7 +242,7 @@ static inline int tlbe_is_writable(struct kvm_book3e_206_tlb_entry *tlbe)return tlbe->mas7_3 & (MAS3_SW |MAS3_UW ); } -static inline void kvmppc_e500_ref_setup (struct tlbe_ref *ref, +static inline bool kvmppc_e500_ref_setup (struct tlbe_ref *ref,struct kvm_book3e_206_tlb_entry *gtlbe,kvm_pfn_t pfn,unsigned int wimg) {
@@ -252,11 +252,7 @@ static inline void kvmppc_e500_ref_setup(struct tlbe_ref *ref,/* Use guest supplied MAS2_G and MAS2_E */ ref->flags |= (gtlbe->mas2 &MAS2_ATTRIB_MASK ) | wimg; -/* Mark the page accessed */ -kvm_set_pfn_accessed (pfn); - -if (tlbe_is_writable (gtlbe)) -kvm_set_pfn_dirty (pfn); +return tlbe_is_writable (gtlbe); }static inline void kvmppc_e500_ref_release (struct tlbe_ref *ref)
@@ -326,6 +322,7 @@ static inline int kvmppc_e500_shadow_map(struct kvmppc_vcpu_e500 *vcpu_e500, {struct kvm_memory_slot *slot;unsigned long pfn =0 ;/* silence GCC warning */ +struct page *page =NULL ;unsigned long hva;int pfnmap =0 ;int tsize =BOOK3E_PAGESZ_4K ;
@@ -337,6 +334,7 @@ static inline int kvmppc_e500_shadow_map(struct kvmppc_vcpu_e500 *vcpu_e500,unsigned int wimg =0 ;pgd_t *pgdir;unsigned long flags; +bool writable = false;/* used to check for invalidations in progress */ mmu_seq = kvm->mmu_invalidate_seq;
@@ -446,7 +444,7 @@ static inline int kvmppc_e500_shadow_map(struct kvmppc_vcpu_e500 *vcpu_e500,if (likely (!pfnmap)) { tsize_pages =1UL << (tsize +10 -PAGE_SHIFT ); - pfn =gfn_to_pfn_memslot (slot, gfn); + pfn =__kvm_faultin_pfn (slot, gfn,FOLL_WRITE ,NULL , &page);if (is_error_noslot_pfn (pfn)) {if (printk_ratelimit ()) pr_err("%s: real page not found for gfn %lx\n",
@@ -481,7 +479,6 @@ static inline int kvmppc_e500_shadow_map(struct kvmppc_vcpu_e500 *vcpu_e500,if (pte_present (pte)) { wimg = (pte_val (pte) >>PTE_WIMGE_SHIFT ) &MAS2_WIMGE_MASK ; -local_irq_restore (flags); }else {local_irq_restore (flags); pr_err_ratelimited("%s: pte not present: gfn %lx,pfn %lx\n",
@@ -490,8 +487,9 @@ static inline int kvmppc_e500_shadow_map(struct kvmppc_vcpu_e500 *vcpu_e500, goto out; } } -kvmppc_e500_ref_setup (ref, gtlbe, pfn, wimg); +local_irq_restore (flags); + writable =kvmppc_e500_ref_setup (ref, gtlbe, pfn, wimg);kvmppc_e500_setup_stlbe (&vcpu_e500->vcpu, gtlbe, tsize, ref, gvaddr, stlbe);
@@ -499,11 +497,8 @@ static inline int kvmppc_e500_shadow_map(struct kvmppc_vcpu_e500 *vcpu_e500,kvmppc_mmu_flush_icache (pfn); out: +kvm_release_faultin_page (kvm, page, !!ret, writable);spin_unlock (&kvm->mmu_lock); - -/* Drop refcount on page, so that mmu notifiers can clear it */ -kvm_release_pfn_clean (pfn); -return ret; }
arch/powerpc/platforms/pseries/eeh_pseries.c +4 -2
@@ -580,8 +580,10 @@ static int pseries_eeh_get_state(struct eeh_pe *pe, int *delay)switch (rets[0 ]) {case 0 : - result =EEH_STATE_MMIO_ACTIVE | -EEH_STATE_DMA_ACTIVE ; + result =EEH_STATE_MMIO_ACTIVE | +EEH_STATE_DMA_ACTIVE | +EEH_STATE_MMIO_ENABLED | +EEH_STATE_DMA_ENABLED ;break ;case 1 : result = EEH_STATE_RESET_ACTIVE |
arch/s390/include/asm/futex.h +1 -1
@@ -44,7 +44,7 @@ static inline int arch_futex_atomic_op_inuser(int op, int oparg, int *oval,break ;case FUTEX_OP_ANDN :__futex_atomic_op ("lr %2,%1\nnr %2,%5\n" , - ret, oldval, newval, uaddr, oparg); + ret, oldval, newval, uaddr, ~oparg);break ;case FUTEX_OP_XOR : __futex_atomic_op("lr %2,%1\nxr %2,%5\n",
arch/s390/include/asm/processor.h +1 -2
@@ -140,8 +140,7 @@ static __always_inline void __stackleak_poison(unsigned long erase_low," la %[addr],256(%[addr])\n" " brctg %[tmp],0b\n" "1: stg %[poison],0(%[addr])\n" -" larl %[tmp],3f\n" -" ex %[count],0(%[tmp])\n" +" exrl %[count],3f\n" " j 4f\n" "2: stg %[poison],0(%[addr])\n" " j 4f\n"
arch/s390/kvm/vsie.c +19 -6
@@ -1335,8 +1335,14 @@ static struct vsie_page *get_vsie_page(struct kvm *kvm, unsigned long addr) page =radix_tree_lookup (&kvm->arch.vsie.addr_to_page, addr >>9 );rcu_read_unlock ();if (page) { -if (page_ref_inc_return (page) ==2 ) -return page_to_virt (page); +if (page_ref_inc_return (page) ==2 ) { +if (page->index == addr) +return page_to_virt (page); +/* +* We raced with someone reusing + putting this vsie +* page before we grabbed it. +*/ + }page_ref_dec (page); }
@@ -1366,15 +1372,20 @@ static struct vsie_page *get_vsie_page(struct kvm *kvm, unsigned long addr) kvm->arch.vsie.next++; kvm->arch.vsie.next %= nr_vcpus; } -radix_tree_delete (&kvm->arch.vsie.addr_to_page, page->index >>9 ); +if (page->index !=ULONG_MAX ) +radix_tree_delete (&kvm->arch.vsie.addr_to_page, + page->index >>9 ); } - page->index = addr; -/* double use of the same address */ +/* Mark it as invalid until it resides in the tree. */ + page->index =ULONG_MAX ; + +/* Double use of the same address or allocation failure. */ if (radix_tree_insert (&kvm->arch.vsie.addr_to_page, addr >>9 , page)) {page_ref_dec (page);mutex_unlock (&kvm->arch.vsie.mutex);return NULL ; } + page->index = addr;mutex_unlock (&kvm->arch.vsie.mutex); vsie_page =page_to_virt (page);
@@ -1467,7 +1478,9 @@ void kvm_s390_vsie_destroy(struct kvm *kvm) vsie_page =page_to_virt (page);release_gmap_shadow (vsie_page);/* free the radix tree entry */ -radix_tree_delete (&kvm->arch.vsie.addr_to_page, page->index >>9 ); +if (page->index !=ULONG_MAX ) +radix_tree_delete (&kvm->arch.vsie.addr_to_page, + page->index >>9 );__free_page (page); } kvm->arch.vsie.page_count =0 ;
arch/x86/boot/compressed/Makefile +1 -0
@@ -34,6 +34,7 @@ targets := vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma \ # avoid errors with '-march=i386', and future flags may depend on the target to # be valid. KBUILD_CFLAGS := -m$(BITS) -O2 $(CLANG_FLAGS) +KBUILD_CFLAGS += -std=gnu11 KBUILD_CFLAGS += -fno-strict-aliasing -fPIE KBUILD_CFLAGS += -Wundef KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING
arch/x86/include/asm/kexec.h +14 -4
@@ -16,6 +16,7 @@# define PAGES_NR 4#endif +# define KEXEC_CONTROL_PAGE_SIZE 4096# define KEXEC_CONTROL_CODE_MAX_SIZE 2048#ifndef __ASSEMBLY__
@@ -44,7 +45,6 @@ struct kimage;/* Maximum address we can use for the control code buffer */ # define KEXEC_CONTROL_MEMORY_LIMIT TASK_SIZE -# define KEXEC_CONTROL_PAGE_SIZE 4096/* The native architecture */ # define KEXEC_ARCH KEXEC_ARCH_386
@@ -59,9 +59,6 @@ struct kimage;/* Maximum address we can use for the control pages */ # define KEXEC_CONTROL_MEMORY_LIMIT (MAXMEM-1) -/* Allocate one page for the pdp and the second for the code */ -# define KEXEC_CONTROL_PAGE_SIZE (4096UL + 4096UL) -/* The native architecture */ # define KEXEC_ARCH KEXEC_ARCH_X86_64#endif
@@ -146,6 +143,19 @@ struct kimage_arch { }; #else struct kimage_arch { + /* + * This is a kimage control page, as it must not overlap with either + * source or destination address ranges. + */ + pgd_t *pgd; + /* + * The virtual mapping of the control code page itself is used only + * during the transition, while the current kernel's pages are all + * in place. Thus the intermediate page table pages used to map it + * are not control pages, but instead just normal pages obtained + * with get_zeroed_page(). And have to be tracked (below) so that + * they can be freed. + */ p4d_t *p4d; pud_t *pud; pmd_t *pmd;
arch/x86/include/asm/kvm_host.h +2 -0
@@ -1650,6 +1650,8 @@ struct kvm_x86_ops {void (*enable_irq_window)(struct kvm_vcpu *vcpu);void (*update_cr8_intercept)(struct kvm_vcpu *vcpu,int tpr,int irr);bool (*check_apicv_inhibit_reasons)(enum kvm_apicv_inhibit reason); + +const bool x2apic_icr_is_split;const unsigned long required_apicv_inhibits;bool allow_apicv_in_x2apic_without_x2apic_virtualization;void (*refresh_apicv_exec_ctrl)(struct kvm_vcpu *vcpu);
arch/x86/kernel/amd_nb.c +4 -0
@@ -537,6 +537,10 @@ static __init void fix_erratum_688(void)static __init int init_amd_nbs (void ) { +if (boot_cpu_data.x86_vendor !=X86_VENDOR_AMD && + boot_cpu_data.x86_vendor !=X86_VENDOR_HYGON ) +return 0 ; +amd_cache_northbridges ();amd_cache_gart ();
arch/x86/kernel/machine_kexec_64.c +24 -21
123 lines not on this page · raw message
arch/x86/kvm/lapic.c +46 -20
115 lines not on this page · raw message
arch/x86/kvm/svm/svm.c +2 -0
@@ -5014,6 +5014,8 @@ static struct kvm_x86_ops svm_x86_ops __initdata = { .enable_nmi_window = svm_enable_nmi_window, .enable_irq_window = svm_enable_irq_window, .update_cr8_intercept = svm_update_cr8_intercept, + + .x2apic_icr_is_split = true, .set_virtual_apic_mode = avic_refresh_virtual_apic_mode, .refresh_apicv_exec_ctrl = avic_refresh_apicv_exec_ctrl, .apicv_post_state_restore = avic_apicv_post_state_restore,
arch/x86/kvm/vmx/vmx.c +2 -0
@@ -8323,6 +8323,8 @@ static struct kvm_x86_ops vmx_x86_ops __initdata = { .enable_nmi_window = vmx_enable_nmi_window, .enable_irq_window = vmx_enable_irq_window, .update_cr8_intercept = vmx_update_cr8_intercept, + + .x2apic_icr_is_split = false, .set_virtual_apic_mode = vmx_set_virtual_apic_mode, .set_apic_access_page_addr = vmx_set_apic_access_page_addr, .refresh_apicv_exec_ctrl = vmx_refresh_apicv_exec_ctrl,
arch/x86/mm/ident_map.c +18 -5
@@ -26,18 +26,31 @@ static int ident_pud_init(struct x86_mapping_info *info, pud_t *pud_page,for (; addr < end; addr = next) {pud_t *pud = pud_page +pud_index (addr);pmd_t *pmd; +bool use_gbpage; next = (addr &PUD_MASK ) +PUD_SIZE ;if (next > end) next = end; -if (info->direct_gbpages) { -pud_t pudval; +/* if this is already a gbpage, this portion is already mapped */ +if (pud_leaf (*pud)) +continue ; + +/* Is using a gbpage allowed? */ + use_gbpage = info->direct_gbpages; -if (pud_present (*pud)) -continue ; +/* Don't use gbpage if it maps more than the requested region. */ +/* at the begining: */ + use_gbpage &= ((addr & ~PUD_MASK ) ==0 ); +/* ... or at the end: */ + use_gbpage &= ((next & ~PUD_MASK ) ==0 ); + +/* Never overwrite existing mappings */ + use_gbpage &= !pud_present (*pud); + +if (use_gbpage) { +pud_t pudval; - addr &=PUD_MASK ; pudval =__pud ((addr - info->offset) | info->page_flag);set_pud (pud, pudval);continue ;
arch/x86/pci/fixup.c +30 -0
@@ -1010,4 +1010,34 @@ DECLARE_PCI_FIXUP_SUSPEND(PCI_VENDOR_ID_AMD, 0x1668, amd_rp_pme_suspend);DECLARE_PCI_FIXUP_RESUME (PCI_VENDOR_ID_AMD ,0x1668 , amd_rp_pme_resume);DECLARE_PCI_FIXUP_SUSPEND (PCI_VENDOR_ID_AMD ,0x1669 , amd_rp_pme_suspend);DECLARE_PCI_FIXUP_RESUME (PCI_VENDOR_ID_AMD ,0x1669 , amd_rp_pme_resume); + +/* +* Putting PCIe root ports on Ryzen SoCs with USB4 controllers into D3hot +* may cause problems when the system attempts wake up from s2idle. +* +* On the TUXEDO Sirius 16 Gen 1 with a specific old BIOS this manifests as +* a system hang. +*/ +static const struct dmi_system_id quirk_tuxeo_rp_d3_dmi_table[] = { + { + .matches = { +DMI_EXACT_MATCH (DMI_SYS_VENDOR ,"TUXEDO" ), +DMI_EXACT_MATCH (DMI_BOARD_NAME ,"APX958" ), +DMI_EXACT_MATCH (DMI_BIOS_VERSION ,"V1.00A00_20240108" ), + }, + }, + {} +}; + +static void quirk_tuxeo_rp_d3 (struct pci_dev *pdev) +{ +struct pci_dev *root_pdev; + +if (dmi_check_system (quirk_tuxeo_rp_d3_dmi_table)) { + root_pdev =pcie_find_root_port (pdev); +if (root_pdev) + root_pdev->dev_flags |=PCI_DEV_FLAGS_NO_D3 ; + } +} +DECLARE_PCI_FIXUP_FINAL (PCI_VENDOR_ID_AMD ,0x1502 , quirk_tuxeo_rp_d3);#endif /* CONFIG_SUSPEND */
arch/x86/xen/xen-head.S +3 -2
@@ -117,8 +117,8 @@ SYM_FUNC_START(xen_hypercall_hvm) pop %ebx pop %eax #else - lea xen_hypercall_amd(%rip), %rbx - cmp %rax, %rbx + lea xen_hypercall_amd(%rip), %rcx + cmp %rax, %rcx #ifdef CONFIG_FRAME_POINTER pop %rax /* Dummy pop. */ #endif
@@ -132,6 +132,7 @@ SYM_FUNC_START(xen_hypercall_hvm) pop %rcx pop %rax #endif + FRAME_END /* Use correct hypercall function. */ jz xen_hypercall_amd jmp xen_hypercall_intel
block/blk-cgroup.c +1 -0
@@ -1139,6 +1139,7 @@ static void blkcg_fill_root_iostats(void)blkg_iostat_set (&blkg->iostat.cur, &tmp);u64_stats_update_end_irqrestore (&blkg->iostat.sync, flags); } +class_dev_iter_exit (&iter); }static void blkcg_print_one_stat (struct blkcg_gq *blkg,struct seq_file *s)
block/fops.c +3 -2
@@ -718,11 +718,12 @@ static ssize_t blkdev_read_iter(struct kiocb *iocb, struct iov_iter *to)file_accessed (iocb->ki_filp); ret =blkdev_direct_IO (iocb, to); -if (ret >=0 ) { +if (ret >0 ) { iocb->ki_pos += ret; count -= ret; } -iov_iter_revert (to, count -iov_iter_count (to)); +if (ret != -EIOCBQUEUED ) +iov_iter_revert (to, count -iov_iter_count (to));if (ret <0 || !count) goto reexpand; }
drivers/acpi/apei/ghes.c +5 -5
@@ -170,8 +170,6 @@ static struct gen_pool *ghes_estatus_pool;static struct ghes_estatus_cache __rcu *ghes_estatus_caches[GHES_ESTATUS_CACHES_SIZE ];static atomic_t ghes_estatus_cache_alloced; -static int ghes_panic_timeout__read_mostly =30 ; -static void __iomem *ghes_map (u64 pfn,enum fixed_addresses fixmap_idx) {phys_addr_t paddr;
@@ -899,14 +897,16 @@ static void __ghes_panic(struct ghes *ghes,struct acpi_hest_generic_status *estatus, u64 buf_paddr, enum fixed_addresses fixmap_idx) { + const char *msg = GHES_PFX "Fatal hardware error"; +__ghes_print_estatus (KERN_EMERG , ghes->generic, estatus);ghes_clear_estatus (ghes, estatus, buf_paddr, fixmap_idx); -/* reboot to log the error! */ if (!panic_timeout) - panic_timeout = ghes_panic_timeout; -panic ("Fatal hardware error!" ); +pr_emerg ("%s but panic disabled\n" , msg); + +panic (msg); }static int ghes_proc (struct ghes *ghes)
drivers/acpi/prmt.c +1 -3
@@ -263,9 +263,7 @@ static acpi_status acpi_platformrt_space_handler(u32 function,if (!handler || !module) goto invalid_guid; -if (!handler->handler_addr || - !handler->static_data_buffer_addr || - !handler->acpi_param_buffer_addr) { +if (!handler->handler_addr) { buffer->prm_status =PRM_HANDLER_ERROR ;return AE_OK ; }
drivers/acpi/property.c +5 -5
@@ -1116,8 +1116,6 @@ static int acpi_data_prop_read(const struct acpi_device_data *data, }break ; } -if (nval ==0 ) -return -EINVAL ;if (obj->type ==ACPI_TYPE_BUFFER ) {if (proptype !=DEV_PROP_U8 )
@@ -1141,9 +1139,11 @@ static int acpi_data_prop_read(const struct acpi_device_data *data, ret =acpi_copy_property_array_uint (items, (u64 *)val, nval);break ;case DEV_PROP_STRING : - ret =acpi_copy_property_array_string ( - items, (char **)val, -min_t (u32, nval, obj->package.count)); + nval =min_t (u32, nval, obj->package.count); +if (nval ==0 ) +return -ENODATA ; + + ret =acpi_copy_property_array_string (items, (char **)val, nval);break ;default : ret = -EINVAL ;
drivers/ata/libata-sff.c +10 -8
@@ -602,7 +602,7 @@ static void ata_pio_sector(struct ata_queued_cmd *qc) {struct ata_port *ap = qc->ap;struct page *page; -unsigned int offset; +unsigned int offset, count;if (!qc->cursg) { qc->curbytes = qc->nbytes;
@@ -618,25 +618,27 @@ static void ata_pio_sector(struct ata_queued_cmd *qc) page =nth_page (page, (offset >>PAGE_SHIFT )); offset %=PAGE_SIZE ; -trace_ata_sff_pio_transfer_data (qc, offset, qc->sect_size); +/* don't overrun current sg */ + count =min (qc->cursg->length - qc->cursg_ofs, qc->sect_size); + +trace_ata_sff_pio_transfer_data (qc, offset, count);/* * Split the transfer when it splits a page boundary. Note that the * split still has to be dword aligned like all ATA data transfers. */ WARN_ON_ONCE (offset %4 ); -if (offset + qc->sect_size >PAGE_SIZE ) { +if (offset + count >PAGE_SIZE ) {unsigned int split_len =PAGE_SIZE - offset;ata_pio_xfer (qc, page, offset, split_len); -ata_pio_xfer (qc,nth_page (page,1 ),0 , - qc->sect_size - split_len); +ata_pio_xfer (qc,nth_page (page,1 ),0 , count - split_len); }else { -ata_pio_xfer (qc, page, offset, qc->sect_size); +ata_pio_xfer (qc, page, offset, count); } - qc->curbytes += qc->sect_size; - qc->cursg_ofs += qc->sect_size; + qc->curbytes += count; + qc->cursg_ofs += count;if (qc->cursg_ofs == qc->cursg->length) { qc->cursg =sg_next (qc->cursg);
drivers/char/misc.c +30 -9
@@ -63,16 +63,30 @@ static DEFINE_MUTEX(misc_mtx);#define DYNAMIC_MINORS 128/* like dynamic majors */ static DEFINE_IDA (misc_minors_ida); -static int misc_minor_alloc (void ) +static int misc_minor_alloc (int minor) { -int ret; - - ret =ida_alloc_max (&misc_minors_ida,DYNAMIC_MINORS -1 ,GFP_KERNEL ); -if (ret >=0 ) { - ret =DYNAMIC_MINORS - ret -1 ; +int ret =0 ; + +if (minor ==MISC_DYNAMIC_MINOR ) { +/* allocate free id */ + ret =ida_alloc_max (&misc_minors_ida,DYNAMIC_MINORS -1 ,GFP_KERNEL ); +if (ret >=0 ) { + ret =DYNAMIC_MINORS - ret -1 ; + }else { + ret =ida_alloc_range (&misc_minors_ida,MISC_DYNAMIC_MINOR +1 , +MINORMASK ,GFP_KERNEL ); + } }else { - ret =ida_alloc_range (&misc_minors_ida,MISC_DYNAMIC_MINOR +1 , -MINORMASK ,GFP_KERNEL ); +/* specific minor, check if it is in dynamic or misc dynamic range */ +if (minor <DYNAMIC_MINORS ) { + minor =DYNAMIC_MINORS - minor -1 ; + ret =ida_alloc_range (&misc_minors_ida, minor, minor,GFP_KERNEL ); + }else if (minor >MISC_DYNAMIC_MINOR ) { + ret =ida_alloc_range (&misc_minors_ida, minor, minor,GFP_KERNEL ); + }else { +/* case of non-dynamic minors, no need to allocate id */ + ret =0 ; + } }return ret; }
@@ -219,7 +233,7 @@ int misc_register(struct miscdevice *misc)mutex_lock (&misc_mtx);if (is_dynamic) { -int i =misc_minor_alloc (); +int i =misc_minor_alloc (misc->minor);if (i <0 ) { err = -EBUSY ;
@@ -228,6 +242,7 @@ int misc_register(struct miscdevice *misc) misc->minor = i; }else {struct miscdevice *c; +int i;list_for_each_entry (c, &misc_list, list) {if (c->minor == misc->minor) {
@@ -235,6 +250,12 @@ int misc_register(struct miscdevice *misc) goto out; } } + + i =misc_minor_alloc (misc->minor); +if (i <0 ) { + err = -EBUSY ; + goto out; + } } dev =MKDEV (MISC_MAJOR , misc->minor);
drivers/char/tpm/eventlog/acpi.c +13 -2
@@ -63,6 +63,11 @@ static bool tpm_is_tpm2_log(void *bios_event_log, u64 len)return n ==0 ; } +static void tpm_bios_log_free (void *data) +{ +kvfree (data); +} +/* read binary bios log */ int tpm_read_log_acpi (struct tpm_chip *chip) {
@@ -136,7 +141,7 @@ int tpm_read_log_acpi(struct tpm_chip *chip) }/* malloc EventLog space */ - log->bios_event_log =devm_kmalloc (&chip->dev, len,GFP_KERNEL ); + log->bios_event_log =kvmalloc (len,GFP_KERNEL );if (!log->bios_event_log)return -ENOMEM ;
@@ -162,10 +167,16 @@ int tpm_read_log_acpi(struct tpm_chip *chip) goto err; } + ret =devm_add_action (&chip->dev, tpm_bios_log_free, log->bios_event_log); +if (ret) { + log->bios_event_log =NULL ; + goto err; + } +return format; err: -devm_kfree (&chip->dev, log->bios_event_log); +tpm_bios_log_free (log->bios_event_log); log->bios_event_log =NULL ;return ret; }
drivers/clk/mediatek/clk-mt2701-aud.c +10 -0
@@ -55,10 +55,16 @@ static const struct mtk_gate audio_clks[] = {GATE_DUMMY (CLK_DUMMY ,"aud_dummy" ),/* AUDIO0 */ GATE_AUDIO0 (CLK_AUD_AFE ,"audio_afe" ,"aud_intbus_sel" ,2 ), +GATE_DUMMY (CLK_AUD_LRCK_DETECT ,"audio_lrck_detect_dummy" ), +GATE_DUMMY (CLK_AUD_I2S ,"audio_i2c_dummy" ), +GATE_DUMMY (CLK_AUD_APLL_TUNER ,"audio_apll_tuner_dummy" ),GATE_AUDIO0 (CLK_AUD_HDMI ,"audio_hdmi" ,"audpll_sel" ,20 ),GATE_AUDIO0 (CLK_AUD_SPDF ,"audio_spdf" ,"audpll_sel" ,21 ),GATE_AUDIO0 (CLK_AUD_SPDF2 ,"audio_spdf2" ,"audpll_sel" ,22 ),GATE_AUDIO0 (CLK_AUD_APLL ,"audio_apll" ,"audpll_sel" ,23 ), +GATE_DUMMY (CLK_AUD_TML ,"audio_tml_dummy" ), +GATE_DUMMY (CLK_AUD_AHB_IDLE_EXT ,"audio_ahb_idle_ext_dummy" ), +GATE_DUMMY (CLK_AUD_AHB_IDLE_INT ,"audio_ahb_idle_int_dummy" ),/* AUDIO1 */ GATE_AUDIO1 (CLK_AUD_I2SIN1 ,"audio_i2sin1" ,"aud_mux1_sel" ,0 ), GATE_AUDIO1(CLK_AUD_I2SIN2, "audio_i2sin2", "aud_mux1_sel", 1),
@@ -76,10 +82,12 @@ static const struct mtk_gate audio_clks[] = {GATE_AUDIO1 (CLK_AUD_ASRCI2 ,"audio_asrci2" ,"asm_h_sel" ,13 ),GATE_AUDIO1 (CLK_AUD_ASRCO1 ,"audio_asrco1" ,"asm_h_sel" ,14 ),GATE_AUDIO1 (CLK_AUD_ASRCO2 ,"audio_asrco2" ,"asm_h_sel" ,15 ), +GATE_DUMMY (CLK_AUD_HDMIRX ,"audio_hdmirx_dummy" ),GATE_AUDIO1 (CLK_AUD_INTDIR ,"audio_intdir" ,"intdir_sel" ,20 ),GATE_AUDIO1 (CLK_AUD_A1SYS ,"audio_a1sys" ,"aud_mux1_sel" ,21 ),GATE_AUDIO1 (CLK_AUD_A2SYS ,"audio_a2sys" ,"aud_mux2_sel" ,22 ),GATE_AUDIO1 (CLK_AUD_AFE_CONN ,"audio_afe_conn" ,"aud_mux1_sel" ,23 ), +GATE_DUMMY (CLK_AUD_AFE_PCMIF ,"audio_afe_pcmif_dummy" ),GATE_AUDIO1 (CLK_AUD_AFE_MRGIF ,"audio_afe_mrgif" ,"aud_mux1_sel" ,25 ),/* AUDIO2 */ GATE_AUDIO2(CLK_AUD_MMIF_UL1, "audio_ul1", "aud_mux1_sel", 0),
@@ -100,6 +108,8 @@ static const struct mtk_gate audio_clks[] = {GATE_AUDIO2 (CLK_AUD_MMIF_AWB2 ,"audio_awb2" ,"aud_mux1_sel" ,15 ),GATE_AUDIO2 (CLK_AUD_MMIF_DAI ,"audio_dai" ,"aud_mux1_sel" ,16 ),/* AUDIO3 */ +GATE_DUMMY (CLK_AUD_DMIC1 ,"audio_dmic1_dummy" ), +GATE_DUMMY (CLK_AUD_DMIC2 ,"audio_dmic2_dummy" ),GATE_AUDIO3 (CLK_AUD_ASRCI3 ,"audio_asrci3" ,"asm_h_sel" ,2 ),GATE_AUDIO3 (CLK_AUD_ASRCI4 ,"audio_asrci4" ,"asm_h_sel" ,3 ), GATE_AUDIO3(CLK_AUD_ASRCI5, "audio_asrci5", "asm_h_sel", 4),
drivers/clk/mediatek/clk-mt2701-bdp.c +1 -0
@@ -31,6 +31,7 @@ static const struct mtk_gate_regs bdp1_cg_regs = { GATE_MTK(_id, _name, _parent, &bdp1_cg_regs, _shift, &mtk_clk_gate_ops_setclr_inv)static const struct mtk_gate bdp_clks[] = { +GATE_DUMMY (CLK_DUMMY ,"bdp_dummy" ),GATE_BDP0 (CLK_BDP_BRG_BA ,"brg_baclk" ,"mm_sel" ,0 ),GATE_BDP0 (CLK_BDP_BRG_DRAM ,"brg_dram" ,"mm_sel" ,1 ),GATE_BDP0 (CLK_BDP_LARB_DRAM ,"larb_dram" ,"mm_sel" ,2 ),
drivers/clk/mediatek/clk-mt2701-img.c +1 -0
@@ -22,6 +22,7 @@ static const struct mtk_gate_regs img_cg_regs = { GATE_MTK(_id, _name, _parent, &img_cg_regs, _shift, &mtk_clk_gate_ops_setclr)static const struct mtk_gate img_clks[] = { +GATE_DUMMY (CLK_DUMMY ,"img_dummy" ),GATE_IMG (CLK_IMG_SMI_COMM ,"img_smi_comm" ,"mm_sel" ,0 ),GATE_IMG (CLK_IMG_RESZ ,"img_resz" ,"mm_sel" ,1 ),GATE_IMG (CLK_IMG_JPGDEC_SMI ,"img_jpgdec_smi" ,"mm_sel" ,5 ),
drivers/clk/mediatek/clk-mt2701-mm.c +1 -0
@@ -31,6 +31,7 @@ static const struct mtk_gate_regs disp1_cg_regs = { GATE_MTK(_id, _name, _parent, &disp1_cg_regs, _shift, &mtk_clk_gate_ops_setclr)static const struct mtk_gate mm_clks[] = { +GATE_DUMMY (CLK_DUMMY ,"mm_dummy" ),GATE_DISP0 (CLK_MM_SMI_COMMON ,"mm_smi_comm" ,"mm_sel" ,0 ),GATE_DISP0 (CLK_MM_SMI_LARB0 ,"mm_smi_larb0" ,"mm_sel" ,1 ),GATE_DISP0 (CLK_MM_CMDQ ,"mm_cmdq" ,"mm_sel" ,2 ),
drivers/clk/mediatek/clk-mt2701-vdec.c +1 -0
@@ -31,6 +31,7 @@ static const struct mtk_gate_regs vdec1_cg_regs = { GATE_MTK(_id, _name, _parent, &vdec1_cg_regs, _shift, &mtk_clk_gate_ops_setclr_inv)static const struct mtk_gate vdec_clks[] = { +GATE_DUMMY (CLK_DUMMY ,"vdec_dummy" ),GATE_VDEC0 (CLK_VDEC_CKGEN ,"vdec_cken" ,"vdec_sel" ,0 ),GATE_VDEC1 (CLK_VDEC_LARB ,"vdec_larb_cken" ,"mm_sel" ,0 ), };
drivers/clk/qcom/Kconfig +1 -0
@@ -881,6 +881,7 @@ config SM_GCC_7150 config SM_GCC_8150 tristate "SM8150 Global Clock Controller" depends on ARM64 || COMPILE_TEST + select QCOM_GDSC help Support for the global clock controller on SM8150 devices. Say Y if you want to use peripheral devices such as UART,
drivers/clk/qcom/clk-alpha-pll.c +2 -0
@@ -407,6 +407,8 @@ void clk_alpha_pll_configure(struct clk_alpha_pll *pll, struct regmap *regmap, mask |= config->pre_div_mask; mask |= config->post_div_mask; mask |= config->vco_mask; + mask |= config->alpha_en_mask; + mask |= config->alpha_mode_mask;regmap_update_bits (regmap,PLL_USER_CTL (pll), mask, val);
drivers/clk/qcom/clk-rpmh.c +1 -1
@@ -329,7 +329,7 @@ static unsigned long clk_rpmh_bcm_recalc_rate(struct clk_hw *hw, {struct clk_rpmh *c =to_clk_rpmh (hw); -return c->aggr_state * c->unit; +return (unsigned long )c->aggr_state * c->unit; }static const struct clk_ops clk_rpmh_bcm_ops = {
drivers/clk/qcom/dispcc-sm6350.c +3 -4
@@ -187,13 +187,12 @@ static struct clk_rcg2 disp_cc_mdss_dp_aux_clk_src = { .cmd_rcgr = 0x1144, .mnd_width = 0, .hid_width = 5, + .parent_map = disp_cc_parent_map_6, .freq_tbl = ftbl_disp_cc_mdss_dp_aux_clk_src, .clkr.hw.init = &(struct clk_init_data ){ .name ="disp_cc_mdss_dp_aux_clk_src" , - .parent_data = &(const struct clk_parent_data ){ - .fw_name ="bi_tcxo" , - }, - .num_parents =1 , + .parent_data = disp_cc_parent_data_6, + .num_parents =ARRAY_SIZE (disp_cc_parent_data_6), .ops = &clk_rcg2_ops, }, };
drivers/clk/qcom/gcc-mdm9607.c +1 -1
@@ -535,7 +535,7 @@ static struct clk_rcg2 blsp1_uart5_apps_clk_src = { };static struct clk_rcg2 blsp1_uart6_apps_clk_src = { - .cmd_rcgr =0x6044 , + .cmd_rcgr =0x7044 , .mnd_width =16 , .hid_width =5 , .parent_map = gcc_xo_gpll0_map,
drivers/clk/qcom/gcc-sm6350.c +14 -8
@@ -182,6 +182,14 @@ static const struct clk_parent_data gcc_parent_data_2_ao[] = { { .hw = &gpll0_out_odd.clkr.hw }, }; +static const struct parent_map gcc_parent_map_3[] = { + {P_BI_TCXO ,0 }, +}; + +static const struct clk_parent_data gcc_parent_data_3[] = { + { .fw_name ="bi_tcxo" }, +}; +static const struct parent_map gcc_parent_map_4[] = { {P_BI_TCXO ,0 }, {P_GPLL0_OUT_MAIN ,1 },
@@ -701,13 +709,12 @@ static struct clk_rcg2 gcc_ufs_phy_phy_aux_clk_src = { .cmd_rcgr = 0x3a0b0, .mnd_width = 0, .hid_width = 5, + .parent_map = gcc_parent_map_3, .freq_tbl = ftbl_gcc_ufs_phy_phy_aux_clk_src, .clkr.hw.init = &(struct clk_init_data ){ .name ="gcc_ufs_phy_phy_aux_clk_src" , - .parent_data = &(const struct clk_parent_data ){ - .fw_name ="bi_tcxo" , - }, - .num_parents =1 , + .parent_data = gcc_parent_data_3, + .num_parents =ARRAY_SIZE (gcc_parent_data_3), .ops = &clk_rcg2_ops, }, };
@@ -764,13 +771,12 @@ static struct clk_rcg2 gcc_usb30_prim_mock_utmi_clk_src = { .cmd_rcgr = 0x1a034, .mnd_width = 0, .hid_width = 5, + .parent_map = gcc_parent_map_3, .freq_tbl = ftbl_gcc_usb30_prim_mock_utmi_clk_src, .clkr.hw.init = &(struct clk_init_data ){ .name ="gcc_usb30_prim_mock_utmi_clk_src" , - .parent_data = &(const struct clk_parent_data ){ - .fw_name ="bi_tcxo" , - }, - .num_parents =1 , + .parent_data = gcc_parent_data_3, + .num_parents =ARRAY_SIZE (gcc_parent_data_3), .ops = &clk_rcg2_ops, }, };
drivers/clk/qcom/gcc-sm8550.c +4 -4
@@ -3003,7 +3003,7 @@ static struct gdsc pcie_0_gdsc = { .pd = { .name = "pcie_0_gdsc", }, - .pwrsts = PWRSTS_OFF_ON, + .pwrsts = PWRSTS_RET_ON, .flags = VOTABLE | POLL_CFG_GDSCR | RETAIN_FF_ENABLE, };
@@ -3014,7 +3014,7 @@ static struct gdsc pcie_0_phy_gdsc = { .pd = { .name = "pcie_0_phy_gdsc", }, - .pwrsts = PWRSTS_OFF_ON, + .pwrsts = PWRSTS_RET_ON, .flags = VOTABLE | POLL_CFG_GDSCR | RETAIN_FF_ENABLE, };
@@ -3025,7 +3025,7 @@ static struct gdsc pcie_1_gdsc = { .pd = { .name = "pcie_1_gdsc", }, - .pwrsts = PWRSTS_OFF_ON, + .pwrsts = PWRSTS_RET_ON, .flags = VOTABLE | POLL_CFG_GDSCR | RETAIN_FF_ENABLE, };
@@ -3036,7 +3036,7 @@ static struct gdsc pcie_1_phy_gdsc = { .pd = { .name = "pcie_1_phy_gdsc", }, - .pwrsts = PWRSTS_OFF_ON, + .pwrsts = PWRSTS_RET_ON, .flags = VOTABLE | POLL_CFG_GDSCR | RETAIN_FF_ENABLE, };
drivers/clk/sunxi-ng/ccu-sun50i-a100.c +3 -3
@@ -436,7 +436,7 @@ static SUNXI_CCU_MP_WITH_MUX_GATE_POSTDIV(mmc0_clk, "mmc0", mmc_parents, 0x830,24 ,2 ,/* mux */ BIT (31 ),/* gate */ 2 ,/* post-div */ - CLK_SET_RATE_NO_REPARENT); + 0); static SUNXI_CCU_MP_WITH_MUX_GATE_POSTDIV(mmc1_clk, "mmc1", mmc_parents, 0x834, 0, 4, /* M */
@@ -444,7 +444,7 @@ static SUNXI_CCU_MP_WITH_MUX_GATE_POSTDIV(mmc1_clk, "mmc1", mmc_parents, 0x834,24 ,2 ,/* mux */ BIT (31 ),/* gate */ 2 ,/* post-div */ - CLK_SET_RATE_NO_REPARENT); + 0); static SUNXI_CCU_MP_WITH_MUX_GATE_POSTDIV(mmc2_clk, "mmc2", mmc_parents, 0x838, 0, 4, /* M */
@@ -452,7 +452,7 @@ static SUNXI_CCU_MP_WITH_MUX_GATE_POSTDIV(mmc2_clk, "mmc2", mmc_parents, 0x838,24 ,2 ,/* mux */ BIT (31 ),/* gate */ 2 ,/* post-div */ - CLK_SET_RATE_NO_REPARENT); + 0); static SUNXI_CCU_GATE(bus_mmc0_clk, "bus-mmc0", "ahb3", 0x84c, BIT(0), 0); static SUNXI_CCU_GATE(bus_mmc1_clk, "bus-mmc1", "ahb3", 0x84c, BIT(1), 0);
drivers/cpufreq/s3c64xx-cpufreq.c +7 -4
@@ -24,6 +24,7 @@ struct s3c64xx_dvfs {unsigned int vddarm_max; }; +#ifdef CONFIG_REGULATOR static struct s3c64xx_dvfs s3c64xx_dvfs_table[] = { [0 ] = {1000000 ,1150000 }, [1] = { 1050000, 1150000 },
@@ -31,6 +32,7 @@ static struct s3c64xx_dvfs s3c64xx_dvfs_table[] = { [3] = { 1200000, 1350000 }, [4] = { 1300000, 1350000 }, }; +#endif static struct cpufreq_frequency_table s3c64xx_freq_table[] = { {0 ,0 ,66000 },
@@ -51,15 +53,16 @@ static struct cpufreq_frequency_table s3c64xx_freq_table[] = { static int s3c64xx_cpufreq_set_target(struct cpufreq_policy *policy, unsigned int index) { - struct s3c64xx_dvfs *dvfs; - unsigned int old_freq, new_freq; + unsigned int new_freq = s3c64xx_freq_table[index].frequency; int ret; +#ifdef CONFIG_REGULATOR + struct s3c64xx_dvfs *dvfs; + unsigned int old_freq; + old_freq = clk_get_rate(policy->clk) / 1000; - new_freq = s3c64xx_freq_table[index].frequency; dvfs = &s3c64xx_dvfs_table[s3c64xx_freq_table[index].driver_data]; -#ifdef CONFIG_REGULATOR if (vddarm && new_freq > old_freq) { ret = regulator_set_voltage(vddarm, dvfs->vddarm_min,
drivers/crypto/qce/aead.c +1 -1
@@ -786,7 +786,7 @@ static int qce_aead_register_one(const struct qce_aead_def *def, struct qce_devi alg->init = qce_aead_init; alg->exit = qce_aead_exit; - alg->base.cra_priority =300 ; + alg->base.cra_priority =275 ; alg->base.cra_flags =CRYPTO_ALG_ASYNC |CRYPTO_ALG_ALLOCATES_MEMORY | CRYPTO_ALG_KERN_DRIVER_ONLY |
drivers/crypto/qce/core.c +8 -5
@@ -51,16 +51,19 @@ static void qce_unregister_algs(struct qce_device *qce)static int qce_register_algs (struct qce_device *qce) {const struct qce_algo_ops *ops; -int i, ret = -ENODEV ; +int i, j, ret = -ENODEV ;for (i =0 ; i <ARRAY_SIZE (qce_ops); i++) { ops = qce_ops[i]; ret = ops->register_algs (qce); -if (ret) -break ; +if (ret) { +for (j = i -1 ; j >=0 ; j--) + ops->unregister_algs (qce); +return ret; + } } -return ret; +return 0 ; }static int qce_handle_request (struct crypto_async_request *async_req)
@@ -247,7 +250,7 @@ static int qce_crypto_probe(struct platform_device *pdev) ret =qce_check_version (qce);if (ret) - goto err_clks; + goto err_dma;spin_lock_init (&qce->lock); tasklet_init(&qce->done_tasklet, qce_tasklet_req_done,
drivers/crypto/qce/sha.c +1 -1
@@ -482,7 +482,7 @@ static int qce_ahash_register_one(const struct qce_ahash_def *def, base = &alg->halg.base; base->cra_blocksize = def->blocksize; - base->cra_priority =300 ; + base->cra_priority =175 ; base->cra_flags =CRYPTO_ALG_ASYNC |CRYPTO_ALG_KERN_DRIVER_ONLY ; base->cra_ctxsize =sizeof (struct qce_sha_ctx ); base->cra_alignmask =0 ;
drivers/crypto/qce/skcipher.c +1 -1
@@ -461,7 +461,7 @@ static int qce_skcipher_register_one(const struct qce_skcipher_def *def, alg->encrypt = qce_skcipher_encrypt; alg->decrypt = qce_skcipher_decrypt; - alg->base.cra_priority =300 ; + alg->base.cra_priority =275 ; alg->base.cra_flags =CRYPTO_ALG_ASYNC |CRYPTO_ALG_ALLOCATES_MEMORY |CRYPTO_ALG_KERN_DRIVER_ONLY ;
drivers/firmware/Kconfig +1 -1
@@ -139,7 +139,7 @@ config ISCSI_IBFT select ISCSI_BOOT_SYSFS select ISCSI_IBFT_FIND if X86 depends on ACPI && SCSI && SCSI_LOWLEVEL - default n + default n help This option enables support for detection and exposing of iSCSI Boot Firmware Table (iBFT) via sysfs to userspace. If you wish to
drivers/firmware/efi/libstub/Makefile +1 -1
@@ -11,7 +11,7 @@ cflags-y := $(KBUILD_CFLAGS) cflags-$(CONFIG_X86_32) := -march=i386 cflags-$(CONFIG_X86_64) := -mcmodel=small -cflags-$(CONFIG_X86) += -m$(BITS) -D__KERNEL__ \ +cflags-$(CONFIG_X86) += -m$(BITS) -D__KERNEL__ -std=gnu11 \ -fPIC -fno-strict-aliasing -mno-red-zone \ -mno-mmx -mno-sse -fshort-wchar \ -Wno-pointer-sign \
drivers/gpio/gpio-pca953x.c +0 -19
@@ -847,25 +847,6 @@ static bool pca953x_irq_pending(struct pca953x_chip *chip, unsigned long *pendinDECLARE_BITMAP (trigger,MAX_LINE );int ret; -if (chip->driver_data &PCA_PCAL ) { -/* Read the current interrupt status from the device */ - ret =pca953x_read_regs (chip,PCAL953X_INT_STAT , trigger); -if (ret) -return false; - -/* Check latched inputs and clear interrupt status */ - ret =pca953x_read_regs (chip, chip->regs->input, cur_stat); -if (ret) -return false; - -/* Apply filter for rising/falling edge selection */ -bitmap_replace (new_stat, chip->irq_trig_fall, chip->irq_trig_raise, cur_stat, gc->ngpio); - -bitmap_and (pending, new_stat, trigger, gc->ngpio); - -return !bitmap_empty (pending, gc->ngpio); - } - ret =pca953x_read_regs (chip, chip->regs->input, cur_stat);if (ret)return false;
drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c +5 -2
@@ -86,9 +86,12 @@ void kfd_process_dequeue_from_device(struct kfd_process_device *pdd)if (pdd->already_dequeued)return ; - +/* The MES context flush needs to filter out the case which the +* KFD process is created without setting up the MES context and +* queue for creating a compute queue. +*/ dev->dqm->ops.process_termination (dev->dqm, &pdd->qpd); -if (dev->kfd->shared_resources.enable_mes && +if (dev->kfd->shared_resources.enable_mes && !!pdd->proc_ctx_gpu_addr &&down_read_trylock (&dev->adev->reset_domain->sem)) {amdgpu_mes_flush_shader_debugger (dev->adev, pdd->proc_ctx_gpu_addr);
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +2 -0
@@ -955,8 +955,10 @@ static int amdgpu_dm_audio_component_get_eld(struct device *kdev, int port,continue ; *enabled = true; +mutex_lock (&connector->eld_mutex); ret =drm_eld_size (connector->eld);memcpy (buf, connector->eld,min (max_bytes, ret)); +mutex_unlock (&connector->eld_mutex);break ; }
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c +3 -3
@@ -1578,16 +1578,16 @@ int pre_validate_dsc(struct drm_atomic_state *state,return ret; } -static unsigned int kbps_from_pbn (unsigned int pbn) +static uint32_t kbps_from_pbn (unsigned int pbn) { -unsigned int kbps = pbn; +uint64_t kbps = (uint64_t )pbn; kbps *= (1000000 /PEAK_FACTOR_X1000 ); kbps *=8 ; kbps *=54 ; kbps /=64 ; -return kbps; +return (uint32_t )kbps; } static bool is_dsc_common_config_possible(struct dc_stream_state *stream,
drivers/gpu/drm/amd/display/dc/dce/dmub_hw_lock_mgr.c +1 -2
@@ -63,8 +63,7 @@ void dmub_hw_lock_mgr_inbox0_cmd(struct dc_dmub_srv *dmub_srv,bool should_use_dmub_lock (struct dc_link *link) { -if (link->psr_settings.psr_version ==DC_PSR_VERSION_SU_1 || - link->psr_settings.psr_version ==DC_PSR_VERSION_1 ) +if (link->psr_settings.psr_version ==DC_PSR_VERSION_SU_1 )return true;return false; }
drivers/gpu/drm/amd/pm/swsmu/smu13/aldebaran_ppt.c +0 -1
@@ -1752,7 +1752,6 @@ static ssize_t aldebaran_get_gpu_metrics(struct smu_context *smu, gpu_metrics->average_gfx_activity = metrics.AverageGfxActivity; gpu_metrics->average_umc_activity = metrics.AverageUclkActivity; - gpu_metrics->average_mm_activity =0 ;/* Valid power data is available only from primary die */ if (aldebaran_is_primary (smu)) {
drivers/gpu/drm/arm/display/komeda/komeda_wb_connector.c +4 -0
@@ -160,6 +160,10 @@ static int komeda_wb_connector_add(struct komeda_kms_dev *kms, formats =komeda_get_layer_fourcc_list (&mdev->fmt_tbl, kwb_conn->wb_layer->layer_type, &n_formats); +if (!formats) { +kfree (kwb_conn); +return -ENOMEM ; + } err = drm_writeback_connector_init(&kms->base, wb_conn, &komeda_wb_connector_funcs,
drivers/gpu/drm/bridge/analogix/anx7625.c +2 -0
@@ -2014,8 +2014,10 @@ static int anx7625_audio_get_eld(struct device *dev, void *data,memset (buf,0 , len); }else {dev_dbg (dev,"audio copy eld\n" ); +mutex_lock (&ctx->connector->eld_mutex);memcpy (buf, ctx->connector->eld,min (sizeof (ctx->connector->eld), len)); +mutex_unlock (&ctx->connector->eld_mutex); }return 0 ;
drivers/gpu/drm/bridge/ite-it6505.c +48 -35
144 lines not on this page · raw message
drivers/gpu/drm/bridge/ite-it66121.c +2 -0
@@ -1452,8 +1452,10 @@ static int it66121_audio_get_eld(struct device *dev, void *data,dev_dbg (dev,"No connector present, passing empty EDID data" );memset (buf,0 , len); }else { +mutex_lock (&ctx->connector->eld_mutex);memcpy (buf, ctx->connector->eld,min (sizeof (ctx->connector->eld), len)); +mutex_unlock (&ctx->connector->eld_mutex); }mutex_unlock (&ctx->lock);
drivers/gpu/drm/display/drm_dp_cec.c +3 -11
@@ -310,16 +310,6 @@ void drm_dp_cec_set_edid(struct drm_dp_aux *aux, const struct edid *edid)if (!aux->transfer)return ; -#ifndef CONFIG_MEDIA_CEC_RC -/* -* CEC_CAP_RC is part of CEC_CAP_DEFAULTS, but it is stripped by -* cec_allocate_adapter() if CONFIG_MEDIA_CEC_RC is undefined. -* -* Do this here as well to ensure the tests against cec_caps are -* correct. -*/ - cec_caps &= ~CEC_CAP_RC ; -#endif cancel_delayed_work_sync (&aux->cec.unregister_work);mutex_lock (&aux->cec.lock);
@@ -336,7 +326,9 @@ void drm_dp_cec_set_edid(struct drm_dp_aux *aux, const struct edid *edid) num_las =CEC_MAX_LOG_ADDRS ;if (aux->cec.adap) { -if (aux->cec.adap->capabilities == cec_caps && +/* Check if the adapter properties have changed */ +if ((aux->cec.adap->capabilities &CEC_CAP_MONITOR_ALL ) == + (cec_caps &CEC_CAP_MONITOR_ALL ) && aux->cec.adap->available_log_addrs == num_las) {/* Unchanged, so just set the phys addr */ cec_s_phys_addr_from_edid (aux->cec.adap, edid);
drivers/gpu/drm/drm_connector.c +1 -0
@@ -277,6 +277,7 @@ static int __drm_connector_init(struct drm_device *dev,INIT_LIST_HEAD (&connector->probed_modes);INIT_LIST_HEAD (&connector->modes);mutex_init (&connector->mutex); +mutex_init (&connector->eld_mutex);mutex_init (&connector->edid_override_mutex); connector->edid_blob_ptr =NULL ; connector->epoch_counter =0 ;
drivers/gpu/drm/drm_edid.c +6 -0
@@ -5499,7 +5499,9 @@ EXPORT_SYMBOL(drm_edid_get_monitor_name);static void clear_eld (struct drm_connector *connector) { +mutex_lock (&connector->eld_mutex);memset (connector->eld,0 ,sizeof (connector->eld)); +mutex_unlock (&connector->eld_mutex); connector->latency_present[0 ] = false; connector->latency_present[1 ] = false;
@@ -5530,6 +5532,8 @@ static void drm_edid_to_eld(struct drm_connector *connector,if (!drm_edid)return ; +mutex_lock (&connector->eld_mutex); + mnl =get_monitor_name (drm_edid, &eld[DRM_ELD_MONITOR_NAME_STRING ]); drm_dbg_kms(connector->dev, "[CONNECTOR:%d:%s] ELD monitor %s\n", connector->base.id, connector->name,
@@ -5590,6 +5594,8 @@ static void drm_edid_to_eld(struct drm_connector *connector,drm_dbg_kms (connector->dev,"[CONNECTOR:%d:%s] ELD size %d, SAD count %d\n" , connector->base.id, connector->name,drm_eld_size (eld), total_sad_count); + +mutex_unlock (&connector->eld_mutex); } static int _drm_edid_to_sad(const struct drm_edid *drm_edid,
drivers/gpu/drm/drm_fb_helper.c +8 -6
@@ -1361,14 +1361,14 @@ int drm_fb_helper_set_par(struct fb_info *info) }EXPORT_SYMBOL (drm_fb_helper_set_par); -static void pan_set (struct drm_fb_helper *fb_helper,int x,int y) +static void pan_set (struct drm_fb_helper *fb_helper,int dx,int dy) {struct drm_mode_set *mode_set;mutex_lock (&fb_helper->client.modeset_mutex);drm_client_for_each_modeset (mode_set, &fb_helper->client) { - mode_set->x = x; - mode_set->y = y; + mode_set->x += dx; + mode_set->y += dy; }mutex_unlock (&fb_helper->client.modeset_mutex); }
@@ -1377,16 +1377,18 @@ static int pan_display_atomic(struct fb_var_screeninfo *var, struct fb_info *info) {struct drm_fb_helper *fb_helper = info->par; -int ret; +int ret, dx, dy; -pan_set (fb_helper, var->xoffset, var->yoffset); + dx = var->xoffset - info->var.xoffset; + dy = var->yoffset - info->var.yoffset; +pan_set (fb_helper, dx, dy); ret =drm_client_modeset_commit_locked (&fb_helper->client);if (!ret) { info->var.xoffset = var->xoffset; info->var.yoffset = var->yoffset; }else -pan_set (fb_helper, info->var.xoffset, info->var.yoffset); +pan_set (fb_helper, -dx, -dy);return ret; }
drivers/gpu/drm/exynos/exynos_hdmi.c +2 -0
@@ -1643,7 +1643,9 @@ static int hdmi_audio_get_eld(struct device *dev, void *data, uint8_t *buf,struct hdmi_context *hdata =dev_get_drvdata (dev);struct drm_connector *connector = &hdata->connector; +mutex_lock (&connector->eld_mutex);memcpy (buf, connector->eld,min (sizeof (connector->eld), len)); +mutex_unlock (&connector->eld_mutex);return 0 ; }
drivers/gpu/drm/i915/display/skl_universal_plane.c +0 -4
@@ -102,8 +102,6 @@ static const u32 icl_sdr_y_plane_formats[] = {DRM_FORMAT_Y216 ,DRM_FORMAT_XYUV8888 , DRM_FORMAT_XVYU2101010, -DRM_FORMAT_XVYU12_16161616 , - DRM_FORMAT_XVYU16161616, }; static const u32 icl_sdr_uv_plane_formats[] = {
@@ -130,8 +128,6 @@ static const u32 icl_sdr_uv_plane_formats[] = {DRM_FORMAT_Y216 ,DRM_FORMAT_XYUV8888 , DRM_FORMAT_XVYU2101010, -DRM_FORMAT_XVYU12_16161616 , - DRM_FORMAT_XVYU16161616, }; static const u32 icl_hdr_plane_formats[] = {
drivers/gpu/drm/i915/gem/i915_gem_shmem.c +1 -5
@@ -209,8 +209,6 @@ static int shmem_get_pages(struct drm_i915_gem_object *obj)struct address_space *mapping = obj->base.filp->f_mapping;unsigned int max_segment =i915_sg_segment_size (i915->drm.dev);struct sg_table *st; -struct sgt_iter sgt_iter; -struct page *page;int ret;/*
@@ -239,9 +237,7 @@ static int shmem_get_pages(struct drm_i915_gem_object *obj)* for PAGE_SIZE chunks instead may be helpful. */ if (max_segment >PAGE_SIZE ) { -for_each_sgt_page (page, sgt_iter, st) -put_page (page); -sg_free_table (st); +shmem_sg_free_table (st, mapping, false, false);kfree (st); max_segment =PAGE_SIZE ;
drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c +14 -6
@@ -5154,12 +5154,20 @@ static inline void guc_log_context(struct drm_printer *p, {drm_printf (p,"GuC lrc descriptor %u:\n" , ce->guc_id.id);drm_printf (p,"\tHW Context Desc: 0x%08x\n" , ce->lrc.lrca); -drm_printf (p,"\t\tLRC Head: Internal %u, Memory %u\n" , - ce->ring->head, - ce->lrc_reg_state[CTX_RING_HEAD ]); -drm_printf (p,"\t\tLRC Tail: Internal %u, Memory %u\n" , - ce->ring->tail, - ce->lrc_reg_state[CTX_RING_TAIL ]); +if (intel_context_pin_if_active (ce)) { +drm_printf (p,"\t\tLRC Head: Internal %u, Memory %u\n" , + ce->ring->head, + ce->lrc_reg_state[CTX_RING_HEAD ]); +drm_printf (p,"\t\tLRC Tail: Internal %u, Memory %u\n" , + ce->ring->tail, + ce->lrc_reg_state[CTX_RING_TAIL ]); +intel_context_unpin (ce); + }else { +drm_printf (p,"\t\tLRC Head: Internal %u, Memory not pinned\n" , + ce->ring->head); +drm_printf (p,"\t\tLRC Tail: Internal %u, Memory not pinned\n" , + ce->ring->tail); + }drm_printf (p,"\t\tContext Pin Count: %u\n" ,atomic_read (&ce->pin_count)); drm_printf(p, "\t\tGuC ID Ref Count: %u\n",
drivers/gpu/drm/radeon/radeon_audio.c +2 -0
@@ -773,8 +773,10 @@ static int radeon_audio_component_get_eld(struct device *kdev, int port,if (!dig->pin || dig->pin->id != port)continue ; *enabled = true; +mutex_lock (&connector->eld_mutex); ret =drm_eld_size (connector->eld);memcpy (buf, connector->eld,min (max_bytes, ret)); +mutex_unlock (&connector->eld_mutex);break ; }
drivers/gpu/drm/rockchip/cdn-dp-core.c +1 -8
@@ -946,9 +946,6 @@ static void cdn_dp_pd_event_work(struct work_struct *work) { struct cdn_dp_device *dp = container_of(work, struct cdn_dp_device, event_work); -struct drm_connector *connector = &dp->connector; -enum drm_connector_status old_status; -int ret;mutex_lock (&dp->lock);
@@ -1010,11 +1007,7 @@ static void cdn_dp_pd_event_work(struct work_struct *work) out:mutex_unlock (&dp->lock); - - old_status = connector->status; - connector->status = connector->funcs->detect (connector, false); -if (old_status != connector->status) -drm_kms_helper_hotplug_event (dp->drm_dev); +drm_connector_helper_hpd_irq_event (&dp->connector); } static int cdn_dp_pd_event(struct notifier_block *nb,
drivers/gpu/drm/sti/sti_hdmi.c +2 -0
@@ -1221,7 +1221,9 @@ static int hdmi_audio_get_eld(struct device *dev, void *data, uint8_t *buf, sizestruct drm_connector *connector = hdmi->drm_connector;DRM_DEBUG_DRIVER ("\n" ); +mutex_lock (&connector->eld_mutex);memcpy (buf, connector->eld,min (sizeof (connector->eld), len)); +mutex_unlock (&connector->eld_mutex);return 0 ; }
drivers/gpu/drm/vc4/vc4_hdmi.c +2 -2
@@ -2655,9 +2655,9 @@ static int vc4_hdmi_audio_get_eld(struct device *dev, void *data,struct vc4_hdmi *vc4_hdmi =dev_get_drvdata (dev);struct drm_connector *connector = &vc4_hdmi->connector; -mutex_lock (&vc4_hdmi->mutex); +mutex_lock (&connector->eld_mutex);memcpy (buf, connector->eld,min (sizeof (connector->eld), len)); -mutex_unlock (&vc4_hdmi->mutex); +mutex_unlock (&connector->eld_mutex);return 0 ; }
drivers/gpu/drm/virtio/virtgpu_drv.h +7 -0
@@ -191,6 +191,13 @@ struct virtio_gpu_framebuffer {#define to_virtio_gpu_framebuffer (x) \ container_of(x, struct virtio_gpu_framebuffer, base) +struct virtio_gpu_plane_state { +struct drm_plane_state base; +struct virtio_gpu_fence *fence; +}; +#define to_virtio_gpu_plane_state (x) \ + container_of(x, struct virtio_gpu_plane_state, base) +struct virtio_gpu_queue {struct virtqueue *vq;spinlock_t qlock;
drivers/gpu/drm/virtio/virtgpu_plane.c +39 -19
132 lines not on this page · raw message
drivers/hid/hid-sensor-hub.c +14 -7
@@ -730,23 +730,30 @@ static int sensor_hub_probe(struct hid_device *hdev,return ret; } +static int sensor_hub_finalize_pending_fn (struct device *dev,void *data) +{ +struct hid_sensor_hub_device *hsdev = dev->platform_data; + +if (hsdev->pending.status) +complete (&hsdev->pending.ready); + +return 0 ; +} +static void sensor_hub_remove (struct hid_device *hdev) {struct sensor_hub_data *data =hid_get_drvdata (hdev);unsigned long flags; -int i;hid_dbg (hdev," hardware removed\n" );hid_hw_close (hdev);hid_hw_stop (hdev); +spin_lock_irqsave (&data->lock, flags); -for (i =0 ; i < data->hid_sensor_client_cnt; ++i) { -struct hid_sensor_hub_device *hsdev = - data->hid_sensor_hub_client_devs[i].platform_data; -if (hsdev->pending.status) -complete (&hsdev->pending.ready); - } +device_for_each_child (&hdev->dev,NULL , + sensor_hub_finalize_pending_fn);spin_unlock_irqrestore (&data->lock, flags); +mfd_remove_devices (&hdev->dev);mutex_destroy (&data->mutex); }
drivers/hid/wacom_wac.c +5 -0
@@ -4911,6 +4911,10 @@ static const struct wacom_features wacom_features_0x94 = HID_DEVICE(BUS_I2C, HID_GROUP_WACOM, USB_VENDOR_ID_WACOM, prod),\ .driver_data = (kernel_ulong_t)&wacom_features_##prod +#define PCI_DEVICE_WACOM (prod) \ + HID_DEVICE(BUS_PCI, HID_GROUP_WACOM, USB_VENDOR_ID_WACOM, prod),\ + .driver_data = (kernel_ulong_t)&wacom_features_##prod +#define USB_DEVICE_LENOVO (prod) \ HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, prod), \ .driver_data = (kernel_ulong_t)&wacom_features_##prod
@@ -5080,6 +5084,7 @@ const struct hid_device_id wacom_ids[] = { { USB_DEVICE_WACOM(HID_ANY_ID) }, { I2C_DEVICE_WACOM(HID_ANY_ID) }, + { PCI_DEVICE_WACOM(HID_ANY_ID) }, { BT_DEVICE_WACOM(HID_ANY_ID) }, { } };
drivers/i2c/i2c-core-acpi.c +22 -0
@@ -355,6 +355,25 @@ static const struct acpi_device_id i2c_acpi_force_400khz_device_ids[] = { {} }; +static const struct acpi_device_id i2c_acpi_force_100khz_device_ids[] = { +/* +* When a 400KHz freq is used on this model of ELAN touchpad in Linux, +* excessive smoothing (similar to when the touchpad's firmware detects +* a noisy signal) is sometimes applied. As some devices' (e.g, Lenovo +* V15 G4) ACPI tables specify a 400KHz frequency for this device and +* some I2C busses (e.g, Designware I2C) default to a 400KHz freq, +* force the speed to 100KHz as a workaround. +* +* For future investigation: This problem may be related to the default +* HCNT/LCNT values given by some busses' drivers, because they are not +* specified in the aforementioned devices' ACPI tables, and because +* the device works without issues on Windows at what is expected to be +* a 400KHz frequency. The root cause of the issue is not known. +*/ + {"ELAN06FA" ,0 }, + {} +}; +static acpi_status i2c_acpi_lookup_speed (acpi_handle handle,u32 level,void *data,void **return_value) {
@@ -373,6 +392,9 @@ static acpi_status i2c_acpi_lookup_speed(acpi_handle handle, u32 level,if (acpi_match_device_ids (adev, i2c_acpi_force_400khz_device_ids) ==0 ) lookup->force_speed =I2C_MAX_FAST_MODE_FREQ ; +if (acpi_match_device_ids (adev, i2c_acpi_force_100khz_device_ids) ==0 ) + lookup->force_speed =I2C_MAX_STANDARD_MODE_FREQ ; +return AE_OK ; }
drivers/i3c/master.c +1 -1
@@ -1878,7 +1878,7 @@ static int i3c_master_bus_init(struct i3c_master_controller *master) goto err_bus_cleanup;if (master->ops->set_speed) { - master->ops->set_speed (master,I3C_OPEN_DRAIN_NORMAL_SPEED ); + ret = master->ops->set_speed (master,I3C_OPEN_DRAIN_NORMAL_SPEED );if (ret) goto err_bus_cleanup; }
drivers/iio/light/as73211.c +20 -4
@@ -154,6 +154,12 @@ struct as73211_data { BIT(AS73211_SCAN_INDEX_TEMP) | \ AS73211_SCAN_MASK_COLOR) +static const unsigned long as73211_scan_masks[] = { +AS73211_SCAN_MASK_COLOR , +AS73211_SCAN_MASK_ALL , +0 +}; +static const struct iio_chan_spec as73211_channels[] = { { .type =IIO_TEMP ,
@@ -602,9 +608,12 @@ static irqreturn_t as73211_trigger_handler(int irq __always_unused, void *p)/* AS73211 starts reading at address 2 */ ret =i2c_master_recv (data->client, - (char *)&scan.chan[1 ],3 *sizeof (scan.chan[1 ])); + (char *)&scan.chan[0 ],3 *sizeof (scan.chan[0 ]));if (ret <0 ) goto done; + +/* Avoid pushing uninitialized data */ + scan.chan[3 ] =0 ; }if (data_result) {
@@ -612,9 +621,15 @@ static irqreturn_t as73211_trigger_handler(int irq __always_unused, void *p)* Saturate all channels (in case of overflows). Temperature channel * is not affected by overflows. */ - scan.chan[1 ] =cpu_to_le16 (U16_MAX ); - scan.chan[2 ] =cpu_to_le16 (U16_MAX ); - scan.chan[3 ] =cpu_to_le16 (U16_MAX ); +if (*indio_dev->active_scan_mask ==AS73211_SCAN_MASK_ALL ) { + scan.chan[1 ] =cpu_to_le16 (U16_MAX ); + scan.chan[2 ] =cpu_to_le16 (U16_MAX ); + scan.chan[3 ] =cpu_to_le16 (U16_MAX ); + }else { + scan.chan[0 ] =cpu_to_le16 (U16_MAX ); + scan.chan[1 ] =cpu_to_le16 (U16_MAX ); + scan.chan[2 ] =cpu_to_le16 (U16_MAX ); + } }iio_push_to_buffers_with_timestamp (indio_dev, &scan,iio_get_time_ns (indio_dev));
@@ -684,6 +699,7 @@ static int as73211_probe(struct i2c_client *client) indio_dev->channels = as73211_channels; indio_dev->num_channels =ARRAY_SIZE (as73211_channels); indio_dev->modes =INDIO_DIRECT_MODE ; + indio_dev->available_scan_masks = as73211_scan_masks; ret =i2c_smbus_read_byte_data (data->client,AS73211_REG_OSR );if (ret <0 )
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c +12 -5
@@ -3875,7 +3875,7 @@ static int arm_smmu_device_probe(struct platform_device *pdev)/* Initialise in-memory data structures */ ret =arm_smmu_init_structures (smmu);if (ret) -return ret; + goto err_free_iopf;/* Record our private device structure */ platform_set_drvdata (pdev, smmu);
@@ -3886,22 +3886,29 @@ static int arm_smmu_device_probe(struct platform_device *pdev)/* Reset the device */ ret =arm_smmu_device_reset (smmu, bypass);if (ret) -return ret; + goto err_disable;/* And we're up. Go go go! */ ret =iommu_device_sysfs_add (&smmu->iommu, dev,NULL ,"smmu3.%pa" , &ioaddr);if (ret) -return ret; + goto err_disable; ret =iommu_device_register (&smmu->iommu, &arm_smmu_ops, dev);if (ret) {dev_err (dev,"Failed to register iommu\n" ); -iommu_device_sysfs_remove (&smmu->iommu); -return ret; + goto err_free_sysfs; }return 0 ; + +err_free_sysfs: +iommu_device_sysfs_remove (&smmu->iommu); +err_disable: +arm_smmu_device_disable (smmu); +err_free_iopf: +iopf_queue_free (smmu->evtq.iopf); +return ret; }static void arm_smmu_device_remove (struct platform_device *pdev)
drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c +1 -0
@@ -554,6 +554,7 @@ static const struct of_device_id __maybe_unused qcom_smmu_impl_of_match[] = { { .compatible = "qcom,sc8180x-smmu-500", .data = &qcom_smmu_500_impl0_data }, { .compatible = "qcom,sc8280xp-smmu-500", .data = &qcom_smmu_500_impl0_data }, { .compatible = "qcom,sdm630-smmu-v2", .data = &qcom_smmu_v2_data }, + { .compatible = "qcom,sdm670-smmu-v2", .data = &qcom_smmu_v2_data }, { .compatible = "qcom,sdm845-smmu-v2", .data = &qcom_smmu_v2_data }, { .compatible = "qcom,sdm845-smmu-500", .data = &sdm845_smmu_500_data }, { .compatible = "qcom,sm6115-smmu-500", .data = &qcom_smmu_500_impl0_data},
drivers/irqchip/irq-apple-aic.c +2 -1
@@ -563,7 +563,8 @@ static void __exception_irq_entry aic_handle_fiq(struct pt_regs *regs) AIC_FIQ_HWIRQ(AIC_TMR_EL02_VIRT)); } -if (read_sysreg_s (SYS_IMP_APL_PMCR0_EL1 ) &PMCR0_IACT ) { +if ((read_sysreg_s (SYS_IMP_APL_PMCR0_EL1 ) & (PMCR0_IMODE |PMCR0_IACT )) == + (FIELD_PREP (PMCR0_IMODE ,PMCR0_IMODE_FIQ ) |PMCR0_IACT )) {int irq;if (cpumask_test_cpu (smp_processor_id (), &aic_irqc->fiq_aff[AIC_CPU_PMU_P ]->aff))
drivers/leds/leds-lp8860.c +1 -1
@@ -265,7 +265,7 @@ static int lp8860_init(struct lp8860_led *led) goto out; } - reg_count =ARRAY_SIZE (lp8860_eeprom_disp_regs) /sizeof (lp8860_eeprom_disp_regs[0 ]); + reg_count =ARRAY_SIZE (lp8860_eeprom_disp_regs);for (i =0 ; i < reg_count; i++) { ret = regmap_write(led->eeprom_regmap, lp8860_eeprom_disp_regs[i].reg,
drivers/mailbox/tegra-hsp.c +4 -2
@@ -388,7 +388,6 @@ static void tegra_hsp_sm_recv32(struct tegra_hsp_channel *channel) value =tegra_hsp_channel_readl (channel,HSP_SM_SHRD_MBOX ); value &= ~HSP_SM_SHRD_MBOX_FULL ; msg = (void *)(unsigned long )value; -mbox_chan_received_data (channel->chan, msg);/* * Need to clear all bits here since some producers, such as TCU, depend
@@ -398,6 +397,8 @@ static void tegra_hsp_sm_recv32(struct tegra_hsp_channel *channel)* explicitly, so we have to make sure we cover all possible cases. */ tegra_hsp_channel_writel (channel,0x0 ,HSP_SM_SHRD_MBOX ); + +mbox_chan_received_data (channel->chan, msg); }static const struct tegra_hsp_sm_ops tegra_hsp_sm_32bit_ops = {
@@ -433,7 +434,6 @@ static void tegra_hsp_sm_recv128(struct tegra_hsp_channel *channel) value[3 ] =tegra_hsp_channel_readl (channel,HSP_SHRD_MBOX_TYPE1_DATA3 ); msg = (void *)(unsigned long )value; -mbox_chan_received_data (channel->chan, msg);/* * Clear data registers and tag.
@@ -443,6 +443,8 @@ static void tegra_hsp_sm_recv128(struct tegra_hsp_channel *channel)tegra_hsp_channel_writel (channel,0x0 ,HSP_SHRD_MBOX_TYPE1_DATA2 );tegra_hsp_channel_writel (channel,0x0 ,HSP_SHRD_MBOX_TYPE1_DATA3 );tegra_hsp_channel_writel (channel,0x0 ,HSP_SHRD_MBOX_TYPE1_TAG ); + +mbox_chan_received_data (channel->chan, msg); }static const struct tegra_hsp_sm_ops tegra_hsp_sm_128bit_ops = {
drivers/md/dm-crypt.c +10 -17
@@ -57,6 +57,7 @@ struct convert_context {struct bio *bio_out;struct bvec_iter iter_out;atomic_t cc_pending; +unsigned int tag_offset;u64 cc_sector;union {struct skcipher_request *req;
@@ -1232,6 +1233,7 @@ static void crypt_convert_init(struct crypt_config *cc,if (bio_out) ctx->iter_out = bio_out->bi_iter; ctx->cc_sector = sector + cc->iv_offset; + ctx->tag_offset =0 ;init_completion (&ctx->restart); }
@@ -1564,7 +1566,6 @@ static void crypt_free_req(struct crypt_config *cc, void *req, struct bio *base_static blk_status_t crypt_convert (struct crypt_config *cc,struct convert_context *ctx,bool atomic,bool reset_pending) { -unsigned int tag_offset =0 ;unsigned int sector_step = cc->sector_size >>SECTOR_SHIFT ;int r;
@@ -1587,9 +1588,9 @@ static blk_status_t crypt_convert(struct crypt_config *cc,atomic_inc (&ctx->cc_pending);if (crypt_integrity_aead (cc)) - r =crypt_convert_block_aead (cc, ctx, ctx->r.req_aead, tag_offset); + r =crypt_convert_block_aead (cc, ctx, ctx->r.req_aead, ctx->tag_offset);else - r =crypt_convert_block_skcipher (cc, ctx, ctx->r.req, tag_offset); + r =crypt_convert_block_skcipher (cc, ctx, ctx->r.req, ctx->tag_offset);switch (r) {/*
@@ -1609,8 +1610,8 @@ static blk_status_t crypt_convert(struct crypt_config *cc,* exit and continue processing in a workqueue */ ctx->r.req =NULL ; + ctx->tag_offset++; ctx->cc_sector += sector_step; - tag_offset++;return BLK_STS_DEV_RESOURCE ; } }else {
@@ -1624,8 +1625,8 @@ static blk_status_t crypt_convert(struct crypt_config *cc,*/ case -EINPROGRESS : ctx->r.req =NULL ; + ctx->tag_offset++; ctx->cc_sector += sector_step; - tag_offset++;continue ;/* * The request was already processed (synchronously).
@@ -1633,7 +1634,7 @@ static blk_status_t crypt_convert(struct crypt_config *cc,case 0 :atomic_dec (&ctx->cc_pending); ctx->cc_sector += sector_step; - tag_offset++; + ctx->tag_offset++;if (!atomic)cond_resched ();continue ;
@@ -2068,7 +2069,6 @@ static void kcryptd_crypt_write_continue(struct work_struct *work)struct crypt_config *cc = io->cc;struct convert_context *ctx = &io->ctx;int crypt_finished; -sector_t sector = io->sector;blk_status_t r;wait_for_completion (&ctx->restart);
@@ -2085,10 +2085,8 @@ static void kcryptd_crypt_write_continue(struct work_struct *work) }/* Encryption was already finished, submit io now */ -if (crypt_finished) { +if (crypt_finished)kcryptd_crypt_write_io_submit (io,0 ); - io->sector = sector; - }crypt_dec_pending (io); }
@@ -2099,14 +2097,13 @@ static void kcryptd_crypt_write_convert(struct dm_crypt_io *io)struct convert_context *ctx = &io->ctx;struct bio *clone;int crypt_finished; -sector_t sector = io->sector;blk_status_t r;/* * Prevent io from disappearing until this function completes. */ crypt_inc_pending (io); -crypt_convert_init (cc, ctx,NULL , io->base_bio, sector); +crypt_convert_init (cc, ctx,NULL , io->base_bio, io->sector); clone =crypt_alloc_buffer (io, io->base_bio->bi_iter.bi_size);if (unlikely (!clone)) {
@@ -2123,8 +2120,6 @@ static void kcryptd_crypt_write_convert(struct dm_crypt_io *io) io->ctx.iter_in = clone->bi_iter; } - sector +=bio_sectors (clone); -crypt_inc_pending (io); r =crypt_convert (cc, ctx,test_bit (DM_CRYPT_NO_WRITE_WORKQUEUE , &cc->flags), true);
@@ -2148,10 +2143,8 @@ static void kcryptd_crypt_write_convert(struct dm_crypt_io *io) }/* Encryption was already finished, submit io now */ -if (crypt_finished) { +if (crypt_finished)kcryptd_crypt_write_io_submit (io,0 ); - io->sector = sector; - } dec:crypt_dec_pending (io);
drivers/media/i2c/ccs/ccs-core.c +3 -3
@@ -3658,15 +3658,15 @@ static int ccs_probe(struct i2c_client *client) out_cleanup:ccs_cleanup (sensor); +out_free_ccs_limits: +kfree (sensor->ccs_limits); + out_release_mdata:kvfree (sensor->mdata.backing); out_release_sdata:kvfree (sensor->sdata.backing); -out_free_ccs_limits: -kfree (sensor->ccs_limits); - out_power_off:ccs_power_off (&client->dev);mutex_destroy (&sensor->mutex);
drivers/media/i2c/ccs/ccs-data.c +8 -6
@@ -10,6 +10,7 @@#include <linux/limits.h> #include <linux/mm.h> #include <linux/slab.h> +#include <linux/string.h> #include "ccs-data-defs.h"
@@ -97,7 +98,7 @@ ccs_data_parse_length_specifier(const struct __ccs_data_length_specifier *__len, plen = ((size_t ) (__len3->length[0 ] & ((1 <<CCS_DATA_LENGTH_SPECIFIER_SIZE_SHIFT ) -1 )) - <<16 ) + (__len3->length[0 ] <<8 ) + __len3->length[1 ]; + <<16 ) + (__len3->length[1 ] <<8 ) + __len3->length[2 ];break ; }default :
@@ -948,15 +949,15 @@ int ccs_data_parse(struct ccs_data_container *ccsdata, const void *data, rval =__ccs_data_parse (&bin, ccsdata, data, len, dev, verbose);if (rval) -return rval; + goto out_cleanup; rval =bin_backing_alloc (&bin);if (rval) -return rval; + goto out_cleanup; rval =__ccs_data_parse (&bin, ccsdata, data, len, dev, false);if (rval) - goto out_free; + goto out_cleanup;if (verbose && ccsdata->version)print_ccs_data_version (dev, ccsdata->version);
@@ -965,15 +966,16 @@ int ccs_data_parse(struct ccs_data_container *ccsdata, const void *data, rval = -EPROTO ;dev_dbg (dev,"parsing mismatch; base %p; now %p; end %p\n" , bin.base, bin.now, bin.end); - goto out_free; + goto out_cleanup; } ccsdata->backing = bin.base;return 0 ; -out_free: +out_cleanup:kvfree (bin.base); +memset (ccsdata,0 ,sizeof (*ccsdata));return rval; }
drivers/media/i2c/ds90ub913.c +0 -1
@@ -792,7 +792,6 @@ static void ub913_subdev_uninit(struct ub913_data *priv)v4l2_async_unregister_subdev (&priv->sd);ub913_v4l2_nf_unregister (priv);v4l2_subdev_cleanup (&priv->sd); -fwnode_handle_put (priv->sd.fwnode);media_entity_cleanup (&priv->sd.entity); }
drivers/media/i2c/ds90ub953.c +0 -1
@@ -1290,7 +1290,6 @@ static void ub953_subdev_uninit(struct ub953_data *priv)v4l2_async_unregister_subdev (&priv->sd);ub953_v4l2_notifier_unregister (priv);v4l2_subdev_cleanup (&priv->sd); -fwnode_handle_put (priv->sd.fwnode);media_entity_cleanup (&priv->sd.entity); }
drivers/media/i2c/ds90ub960.c +73 -50
9 lines not on this page · raw message
drivers/media/platform/marvell/mmp-driver.c +17 -4
Lines of this file are not shown. View the raw message.
drivers/media/usb/uvc/uvc_driver.c +48 -50
98 lines not on this page · raw message
drivers/mmc/host/sdhci-msm.c +51 -2
53 lines not on this page · raw message
drivers/mtd/nand/onenand/onenand_base.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/aquantia/atlantic/aq_nic.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/genet/bcmgenet_wol.c +12 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/tg3.c +58 -0
58 lines not on this page · raw message
drivers/net/ethernet/intel/ice/ice_devlink.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_txrx.c +50 -29
79 lines not on this page · raw message
drivers/net/ethernet/mellanox/mlx5/core/lib/clock.c +13 -11
Lines of this file are not shown. View the raw message.
drivers/net/usb/ipheth.c +45 -24
69 lines not on this page · raw message
drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c +5 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c +4 -4
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy/phy_n.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/fw/acpi.c +8 -5
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7915/eeprom.c +19 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7915/init.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7921/usb.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtlwifi/rtl8821ae/fw.h +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtw88/sdio.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtw89/phy.c +6 -5
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtw89/phy.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wwan/iosm/iosm_ipc_pcie.c +55 -1
56 lines not on this page · raw message
drivers/pinctrl/samsung/pinctrl-samsung.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/platform/x86/intel/int3472/discrete.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/platform/x86/intel/int3472/tps68470.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/scsi/qla2xxx/qla_dfs.c +102 -22
124 lines not on this page · raw message
drivers/spi/atmel-quadspi.c +84 -34
118 lines not on this page · raw message
drivers/usb/gadget/function/f_tcm.c +17 -37
54 lines not on this page · raw message
drivers/vfio/platform/vfio_platform_common.c +10 -0
Lines of this file are not shown. View the raw message.
fs/nfs/flexfilelayout/flexfilelayout.c +21 -6
Lines of this file are not shown. View the raw message.
fs/smb/client/smb2inode.c +54 -54
108 lines not on this page · raw message
net/ncsi/ncsi-rsp.c +44 -14
58 lines not on this page · raw message
tools/testing/selftests/net/mptcp/mptcp_connect.c +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/mptcp/mptcp_join.sh +1 -1
Lines of this file are not shown. View the raw message.
tools/tracing/rtla/src/timerlat_hist.c +19 -7
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.
Hi
Quoted 9 lines
I'm announcing the release of the 6.6.78 kernel.
All users of the 6.6 kernel series must upgrade.
The updated 6.6.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.gitlinux-6.6.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
please revert these 2 patches.
because the struct member kernel_workload is yet not defined.
Quoted 3 lines
Tomas Glozar (6):
rtla/timerlat_hist: SetOSNOISE_WORKLOADfor kernel threads rtla/timerlat_top: SetOSNOISE_WORKLOADfor kernel threads
Best Regards
Wang Yugui ([email protected])
2025/02/24
Greg Kroah-Hartman
maintainerQuoted 6 lines · Wang Yugui
Hi
Quoted 4 lines
I'm announcing the release of the 6.6.78 kernel.
All users of the 6.6 kernel series must upgrade.
Quoted 12 lines
Quoted 5 lines
The updated 6.6.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.gitlinux-6.6.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=summaryplease revert these 2 patches.
because the struct memberkernel_workloadis yet not defined.Quoted 3 lines
Tomas Glozar (6):
rtla/timerlat_hist: SetOSNOISE_WORKLOADfor kernel threads rtla/timerlat_top: SetOSNOISE_WORKLOADfor kernel threads
Can you send a series of reverts for us to apply?
thanks,
greg k-h