-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
accel/ivpu: Introduce a new DRM driver for Intel VPU
VPU stands for Versatile Processing Unit and it's a CPU-integrated inference accelerator for Computer Vision and Deep Learning applications. The VPU device consist of following components: - Buttress - provides CPU to VPU integration, interrupt, frequency and power management. - Memory Management Unit (based on ARM MMU-600) - translates VPU to host DMA addresses, isolates user workloads. - RISC based microcontroller - executes firmware that provides job execution API for the kernel-mode driver - Neural Compute Subsystem (NCS) - does the actual work, provides Compute and Copy engines. - Network on Chip (NoC) - network fabric connecting all the components This driver supports VPU IP v2.7 integrated into Intel Meteor Lake client CPUs (14th generation). Module sources are at drivers/accel/ivpu and module name is "intel_vpu.ko". This patch includes only very besic functionality: - module, PCI device and IRQ initialization - register definitions and low level register manipulation functions - SET/GET_PARAM ioctls - power up without firmware Co-developed-by: Krystian Pradzynski <krystian.pradzynski@linux.intel.com> Signed-off-by: Krystian Pradzynski <krystian.pradzynski@linux.intel.com> Signed-off-by: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com> Reviewed-by: Oded Gabbay <ogabbay@kernel.org> Reviewed-by: Jeffrey Hugo <quic_jhugo@quicinc.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Link: https://patchwork.freedesktop.org/patch/msgid/20230117092723.60441-2-jacek.lawrynowicz@linux.intel.com
- Loading branch information
Jacek Lawrynowicz
authored and
Daniel Vetter
committed
Jan 19, 2023
1 parent
6f84981
commit 35b1376
Showing
14 changed files
with
2,272 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
# SPDX-License-Identifier: GPL-2.0-only | ||
|
||
obj-y += ivpu/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
# SPDX-License-Identifier: GPL-2.0-only | ||
|
||
config DRM_ACCEL_IVPU | ||
tristate "Intel VPU for Meteor Lake and newer" | ||
depends on DRM_ACCEL | ||
depends on X86_64 && !UML | ||
depends on PCI && PCI_MSI | ||
select FW_LOADER | ||
select SHMEM | ||
help | ||
Choose this option if you have a system that has an 14th generation Intel CPU | ||
or newer. VPU stands for Versatile Processing Unit and it's a CPU-integrated | ||
inference accelerator for Computer Vision and Deep Learning applications. | ||
|
||
If "M" is selected, the module will be called intel_vpu. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
# SPDX-License-Identifier: GPL-2.0-only | ||
# Copyright (C) 2023 Intel Corporation | ||
|
||
intel_vpu-y := \ | ||
ivpu_drv.o \ | ||
ivpu_hw_mtl.o | ||
|
||
obj-$(CONFIG_DRM_ACCEL_IVPU) += intel_vpu.o |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
- Move to threaded_irqs to mitigate potential infinite loop in ivpu_ipc_irq_handler() | ||
- Implement support for BLOB IDs | ||
- Add debugfs support to improve debugging and testing | ||
- Add tracing events for performance debugging | ||
- Implement HW based scheduling support | ||
- Use syncobjs for submit/sync | ||
- Refactor IPC protocol to improve message latency | ||
- Implement BO cache and MADVISE IOCTL | ||
- Add support for user allocated buffers using prime import and dma-buf heaps | ||
- Refactor struct ivpu_bo to use struct drm_gem_shmem_object | ||
- Add driver/device documentation |
Oops, something went wrong.