linux-stable/drivers/accel/ivpu
Karol Wachowski 645d694559 accel/ivpu: Use cached buffers for FW loading
Create buffers with cache coherency on the CPU side (write-back) while
disabling snooping on the VPU side. These buffers require an explicit
cache flush after each CPU-side modification.

Configuring pages as write-combined may introduce significant delays,
potentially taking hundreds of milliseconds for 64 MB buffers.

Added internal DRM_IVPU_BO_NOSNOOP mask which disables snooping on the
VPU side. Allocate FW runtime memory buffer (64 MB) as cached with
snooping-disabled.

This fixes random long FW loading times and boot params memory
corruption on warmboot (due to missed wmb).

Fixes: 02d5b0aacd ("accel/ivpu: Implement firmware parsing and booting")
Signed-off-by: Karol Wachowski <karol.wachowski@linux.intel.com>
Reviewed-by: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
Reviewed-by: Jeffrey Hugo <quic_jhugo@quicinc.com>
Signed-off-by: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230926120943.GD846747@linux.intel.com
2023-09-27 07:40:43 +02:00
..
ivpu_debugfs.c accel/ivpu: Add fw_name file to debugfs 2023-07-07 09:33:28 +02:00
ivpu_debugfs.h accel/ivpu: Initial debugfs support 2023-07-07 09:33:13 +02:00
ivpu_drv.c accel/ivpu: Don't flood dmesg with VPU ready message 2023-09-27 07:40:17 +02:00
ivpu_drv.h accel/ivpu: Add Arrow Lake pci id 2023-09-25 08:49:28 +02:00
ivpu_fw.c accel/ivpu: Use cached buffers for FW loading 2023-09-27 07:40:43 +02:00
ivpu_fw.h accel/ivpu: Print firmware name and version 2023-07-07 09:33:26 +02:00
ivpu_fw_log.c accel/ivpu: Add firmware tracing support 2023-07-07 09:33:20 +02:00
ivpu_fw_log.h accel/ivpu: Add firmware tracing support 2023-07-07 09:33:20 +02:00
ivpu_gem.c Linux 6.5-rc7 2023-08-24 07:26:06 +10:00
ivpu_gem.h accel/ivpu: Use cached buffers for FW loading 2023-09-27 07:40:43 +02:00
ivpu_hw.h accel/ivpu: Add initial support for VPU 4 2023-08-09 13:55:21 +02:00
ivpu_hw_37xx.c accel/ivpu: Refactor memory ranges logic 2023-08-09 13:52:15 +02:00
ivpu_hw_37xx_reg.h accel/ivpu: Use generation based function and registers names 2023-08-09 13:42:16 +02:00
ivpu_hw_40xx.c accel/ivpu/40xx: Fix missing VPUIP interrupts 2023-09-27 07:40:37 +02:00
ivpu_hw_40xx_reg.h accel/ivpu/40xx: Ensure clock resource ownership Ack before Power-Up 2023-09-27 07:40:23 +02:00
ivpu_hw_reg_io.h
ivpu_ipc.c accel/ivpu: Do not use wait event interruptible 2023-09-27 07:39:46 +02:00
ivpu_ipc.h accel/ivpu: Fix IPC buffer header status field value 2023-03-24 10:52:20 +01:00
ivpu_job.c Merge drm/drm-next into drm-misc-next 2023-06-19 16:33:14 +02:00
ivpu_job.h
ivpu_jsm_msg.c accel/ivpu: refactor deprecated strncpy 2023-08-25 11:09:40 +02:00
ivpu_jsm_msg.h
ivpu_mmu.c accel/ivpu: Use generation based function and registers names 2023-08-09 13:42:16 +02:00
ivpu_mmu.h
ivpu_mmu_context.c accel/ivpu: Refactor memory ranges logic 2023-08-09 13:52:15 +02:00
ivpu_mmu_context.h accel/ivpu: Rename and cleanup MMU600 page tables 2023-06-08 07:53:51 +02:00
ivpu_pm.c accel/ivpu: Add debugfs files for testing device reset 2023-07-07 09:33:23 +02:00
ivpu_pm.h accel/ivpu: Add debugfs files for testing device reset 2023-07-07 09:33:23 +02:00
Kconfig accel/ivpu: ivpu_ipc needs GENERIC_ALLOCATOR 2023-06-06 14:19:53 +02:00
Makefile accel/ivpu: Add initial support for VPU 4 2023-08-09 13:55:21 +02:00
TODO
vpu_boot_api.h
vpu_jsm_api.h