Message ID | 20220924151149.323622-1-jacek.lawrynowicz@linux.intel.com (mailing list archive) |
---|---|
Headers | show |
Series | New DRM driver for Intel VPU | expand |
Hi Am 24.09.22 um 17:11 schrieb Jacek Lawrynowicz: > Hi, > > This patchset contains a new Linux* Kernel Driver for Intel® VPUs. > > VPU stands for Versatile Processing Unit and it is an AI inference accelerator > integrated with Intel non-server CPUs starting from 14th generation. > VPU enables efficient execution of Deep Learning applications > like object detection, classification etc. > > Driver is part of gpu/drm subsystem because VPU is similar in operation to > an integrated GPU. Reusing drm driver init, ioctl handling, gem and prime > helpers and drm_mm allows to minimize code duplication in the kernel. > > The whole driver is licensed under GPL-2.0-only except for two headers imported > from the firmware that are MIT licensed. > > User mode driver stack consists of Level Zero API driver and OpenVINO plugin. > Both should be open-sourced by the end of Q4. > The firmware for the VPU will be distributed as a closed source binary. > > I'm resending v3 patchset with correct Dave's email. > > Regards, > Jacek > > v3: > - Fixed alignment warning in ivpu_ipc.c when building with W=1 > > v2: https://lore.kernel.org/all/20220913121017.993825-1-jacek.lawrynowicz@linux.intel.com/ > - Rename the driver from "drm/vpu" to "drm/ivpu" > - Add a TODO file > - Add support for WC buffers > > v1: https://lore.kernel.org/all/20220728131709.1087188-1-jacek.lawrynowicz@linux.intel.com/ > > Jacek Lawrynowicz (7): > drm/ivpu: Introduce a new DRM driver for Intel VPU > drm/ivpu: Add Intel VPU MMU support > drm/ivpu: Add GEM buffer object management > drm/ivpu: Add IPC driver and JSM messages > drm/ivpu: Implement firmware parsing and booting > drm/ivpu: Add command buffer submission logic > drm/ivpu: Add PM support > > MAINTAINERS | 8 + > drivers/gpu/drm/Kconfig | 2 + > drivers/gpu/drm/Makefile | 1 + > drivers/gpu/drm/ivpu/Kconfig | 12 + > drivers/gpu/drm/ivpu/Makefile | 16 + > drivers/gpu/drm/ivpu/TODO | 7 + > drivers/gpu/drm/ivpu/ivpu_drv.c | 643 ++++++++++++++ > drivers/gpu/drm/ivpu/ivpu_drv.h | 178 ++++ > drivers/gpu/drm/ivpu/ivpu_fw.c | 426 +++++++++ > drivers/gpu/drm/ivpu/ivpu_fw.h | 38 + > drivers/gpu/drm/ivpu/ivpu_gem.c | 836 ++++++++++++++++++ > drivers/gpu/drm/ivpu/ivpu_gem.h | 128 +++ > drivers/gpu/drm/ivpu/ivpu_hw.h | 169 ++++ > drivers/gpu/drm/ivpu/ivpu_hw_mtl.c | 1060 +++++++++++++++++++++++ > drivers/gpu/drm/ivpu/ivpu_hw_mtl_reg.h | 468 ++++++++++ > drivers/gpu/drm/ivpu/ivpu_hw_reg_io.h | 115 +++ > drivers/gpu/drm/ivpu/ivpu_ipc.c | 508 +++++++++++ > drivers/gpu/drm/ivpu/ivpu_ipc.h | 90 ++ > drivers/gpu/drm/ivpu/ivpu_job.c | 629 ++++++++++++++ > drivers/gpu/drm/ivpu/ivpu_job.h | 73 ++ > drivers/gpu/drm/ivpu/ivpu_jsm_msg.c | 220 +++++ > drivers/gpu/drm/ivpu/ivpu_jsm_msg.h | 25 + > drivers/gpu/drm/ivpu/ivpu_mmu.c | 888 +++++++++++++++++++ > drivers/gpu/drm/ivpu/ivpu_mmu.h | 53 ++ > drivers/gpu/drm/ivpu/ivpu_mmu_context.c | 419 +++++++++ > drivers/gpu/drm/ivpu/ivpu_mmu_context.h | 49 ++ > drivers/gpu/drm/ivpu/ivpu_pm.c | 352 ++++++++ > drivers/gpu/drm/ivpu/ivpu_pm.h | 38 + > drivers/gpu/drm/ivpu/vpu_boot_api.h | 241 ++++++ > drivers/gpu/drm/ivpu/vpu_jsm_api.h | 616 +++++++++++++ > include/uapi/drm/ivpu_drm.h | 343 ++++++++ You have to add yourself to MAINTAINERS. I assume that there's a FOSS userspace available? Best regards Thomas > 31 files changed, 8651 insertions(+) > create mode 100644 drivers/gpu/drm/ivpu/Kconfig > create mode 100644 drivers/gpu/drm/ivpu/Makefile > create mode 100644 drivers/gpu/drm/ivpu/TODO > create mode 100644 drivers/gpu/drm/ivpu/ivpu_drv.c > create mode 100644 drivers/gpu/drm/ivpu/ivpu_drv.h > create mode 100644 drivers/gpu/drm/ivpu/ivpu_fw.c > create mode 100644 drivers/gpu/drm/ivpu/ivpu_fw.h > create mode 100644 drivers/gpu/drm/ivpu/ivpu_gem.c > create mode 100644 drivers/gpu/drm/ivpu/ivpu_gem.h > create mode 100644 drivers/gpu/drm/ivpu/ivpu_hw.h > create mode 100644 drivers/gpu/drm/ivpu/ivpu_hw_mtl.c > create mode 100644 drivers/gpu/drm/ivpu/ivpu_hw_mtl_reg.h > create mode 100644 drivers/gpu/drm/ivpu/ivpu_hw_reg_io.h > create mode 100644 drivers/gpu/drm/ivpu/ivpu_ipc.c > create mode 100644 drivers/gpu/drm/ivpu/ivpu_ipc.h > create mode 100644 drivers/gpu/drm/ivpu/ivpu_job.c > create mode 100644 drivers/gpu/drm/ivpu/ivpu_job.h > create mode 100644 drivers/gpu/drm/ivpu/ivpu_jsm_msg.c > create mode 100644 drivers/gpu/drm/ivpu/ivpu_jsm_msg.h > create mode 100644 drivers/gpu/drm/ivpu/ivpu_mmu.c > create mode 100644 drivers/gpu/drm/ivpu/ivpu_mmu.h > create mode 100644 drivers/gpu/drm/ivpu/ivpu_mmu_context.c > create mode 100644 drivers/gpu/drm/ivpu/ivpu_mmu_context.h > create mode 100644 drivers/gpu/drm/ivpu/ivpu_pm.c > create mode 100644 drivers/gpu/drm/ivpu/ivpu_pm.h > create mode 100644 drivers/gpu/drm/ivpu/vpu_boot_api.h > create mode 100644 drivers/gpu/drm/ivpu/vpu_jsm_api.h > create mode 100644 include/uapi/drm/ivpu_drm.h > > -- > 2.34.1
Hi Am 01.11.22 um 09:58 schrieb Thomas Zimmermann: > Hi > > Am 24.09.22 um 17:11 schrieb Jacek Lawrynowicz: >> Hi, >> >> This patchset contains a new Linux* Kernel Driver for Intel® VPUs. >> >> VPU stands for Versatile Processing Unit and it is an AI inference >> accelerator >> integrated with Intel non-server CPUs starting from 14th generation. >> VPU enables efficient execution of Deep Learning applications >> like object detection, classification etc. >> >> Driver is part of gpu/drm subsystem because VPU is similar in >> operation to >> an integrated GPU. Reusing drm driver init, ioctl handling, gem and prime >> helpers and drm_mm allows to minimize code duplication in the kernel. >> >> The whole driver is licensed under GPL-2.0-only except for two headers >> imported >> from the firmware that are MIT licensed. >> >> User mode driver stack consists of Level Zero API driver and OpenVINO >> plugin. >> Both should be open-sourced by the end of Q4. >> The firmware for the VPU will be distributed as a closed source binary. >> >> I'm resending v3 patchset with correct Dave's email. >> >> Regards, >> Jacek >> >> v3: >> - Fixed alignment warning in ivpu_ipc.c when building with W=1 >> >> v2: >> https://lore.kernel.org/all/20220913121017.993825-1-jacek.lawrynowicz@linux.intel.com/ >> - Rename the driver from "drm/vpu" to "drm/ivpu" >> - Add a TODO file >> - Add support for WC buffers >> >> v1: >> https://lore.kernel.org/all/20220728131709.1087188-1-jacek.lawrynowicz@linux.intel.com/ >> >> Jacek Lawrynowicz (7): >> drm/ivpu: Introduce a new DRM driver for Intel VPU >> drm/ivpu: Add Intel VPU MMU support >> drm/ivpu: Add GEM buffer object management >> drm/ivpu: Add IPC driver and JSM messages >> drm/ivpu: Implement firmware parsing and booting >> drm/ivpu: Add command buffer submission logic >> drm/ivpu: Add PM support >> >> MAINTAINERS | 8 + >> drivers/gpu/drm/Kconfig | 2 + >> drivers/gpu/drm/Makefile | 1 + >> drivers/gpu/drm/ivpu/Kconfig | 12 + >> drivers/gpu/drm/ivpu/Makefile | 16 + >> drivers/gpu/drm/ivpu/TODO | 7 + >> drivers/gpu/drm/ivpu/ivpu_drv.c | 643 ++++++++++++++ >> drivers/gpu/drm/ivpu/ivpu_drv.h | 178 ++++ >> drivers/gpu/drm/ivpu/ivpu_fw.c | 426 +++++++++ >> drivers/gpu/drm/ivpu/ivpu_fw.h | 38 + >> drivers/gpu/drm/ivpu/ivpu_gem.c | 836 ++++++++++++++++++ >> drivers/gpu/drm/ivpu/ivpu_gem.h | 128 +++ >> drivers/gpu/drm/ivpu/ivpu_hw.h | 169 ++++ >> drivers/gpu/drm/ivpu/ivpu_hw_mtl.c | 1060 +++++++++++++++++++++++ >> drivers/gpu/drm/ivpu/ivpu_hw_mtl_reg.h | 468 ++++++++++ >> drivers/gpu/drm/ivpu/ivpu_hw_reg_io.h | 115 +++ >> drivers/gpu/drm/ivpu/ivpu_ipc.c | 508 +++++++++++ >> drivers/gpu/drm/ivpu/ivpu_ipc.h | 90 ++ >> drivers/gpu/drm/ivpu/ivpu_job.c | 629 ++++++++++++++ >> drivers/gpu/drm/ivpu/ivpu_job.h | 73 ++ >> drivers/gpu/drm/ivpu/ivpu_jsm_msg.c | 220 +++++ >> drivers/gpu/drm/ivpu/ivpu_jsm_msg.h | 25 + >> drivers/gpu/drm/ivpu/ivpu_mmu.c | 888 +++++++++++++++++++ >> drivers/gpu/drm/ivpu/ivpu_mmu.h | 53 ++ >> drivers/gpu/drm/ivpu/ivpu_mmu_context.c | 419 +++++++++ >> drivers/gpu/drm/ivpu/ivpu_mmu_context.h | 49 ++ >> drivers/gpu/drm/ivpu/ivpu_pm.c | 352 ++++++++ >> drivers/gpu/drm/ivpu/ivpu_pm.h | 38 + >> drivers/gpu/drm/ivpu/vpu_boot_api.h | 241 ++++++ >> drivers/gpu/drm/ivpu/vpu_jsm_api.h | 616 +++++++++++++ >> include/uapi/drm/ivpu_drm.h | 343 ++++++++ > > You have to add yourself to MAINTAINERS. > > I assume that there's a FOSS userspace available? Rereading the cover letter, it will be opensourced. I think DRM policy is that we first need an OSS userspace befor the kernel driver get's merged. Nevertheless it's now a good time to get the driver in shape. I've finished looking trough the patchset and left comments on some of them. Best regards Thomas > > Best regards > Thomas > >> 31 files changed, 8651 insertions(+) >> create mode 100644 drivers/gpu/drm/ivpu/Kconfig >> create mode 100644 drivers/gpu/drm/ivpu/Makefile >> create mode 100644 drivers/gpu/drm/ivpu/TODO >> create mode 100644 drivers/gpu/drm/ivpu/ivpu_drv.c >> create mode 100644 drivers/gpu/drm/ivpu/ivpu_drv.h >> create mode 100644 drivers/gpu/drm/ivpu/ivpu_fw.c >> create mode 100644 drivers/gpu/drm/ivpu/ivpu_fw.h >> create mode 100644 drivers/gpu/drm/ivpu/ivpu_gem.c >> create mode 100644 drivers/gpu/drm/ivpu/ivpu_gem.h >> create mode 100644 drivers/gpu/drm/ivpu/ivpu_hw.h >> create mode 100644 drivers/gpu/drm/ivpu/ivpu_hw_mtl.c >> create mode 100644 drivers/gpu/drm/ivpu/ivpu_hw_mtl_reg.h >> create mode 100644 drivers/gpu/drm/ivpu/ivpu_hw_reg_io.h >> create mode 100644 drivers/gpu/drm/ivpu/ivpu_ipc.c >> create mode 100644 drivers/gpu/drm/ivpu/ivpu_ipc.h >> create mode 100644 drivers/gpu/drm/ivpu/ivpu_job.c >> create mode 100644 drivers/gpu/drm/ivpu/ivpu_job.h >> create mode 100644 drivers/gpu/drm/ivpu/ivpu_jsm_msg.c >> create mode 100644 drivers/gpu/drm/ivpu/ivpu_jsm_msg.h >> create mode 100644 drivers/gpu/drm/ivpu/ivpu_mmu.c >> create mode 100644 drivers/gpu/drm/ivpu/ivpu_mmu.h >> create mode 100644 drivers/gpu/drm/ivpu/ivpu_mmu_context.c >> create mode 100644 drivers/gpu/drm/ivpu/ivpu_mmu_context.h >> create mode 100644 drivers/gpu/drm/ivpu/ivpu_pm.c >> create mode 100644 drivers/gpu/drm/ivpu/ivpu_pm.h >> create mode 100644 drivers/gpu/drm/ivpu/vpu_boot_api.h >> create mode 100644 drivers/gpu/drm/ivpu/vpu_jsm_api.h >> create mode 100644 include/uapi/drm/ivpu_drm.h >> >> -- >> 2.34.1 >
Hi, On 11/1/2022 11:17 AM, Thomas Zimmermann wrote: > Hi > > Am 01.11.22 um 09:58 schrieb Thomas Zimmermann: >> Hi >> >> Am 24.09.22 um 17:11 schrieb Jacek Lawrynowicz: >>> Hi, >>> >>> This patchset contains a new Linux* Kernel Driver for Intel® VPUs. >>> >>> VPU stands for Versatile Processing Unit and it is an AI inference accelerator >>> integrated with Intel non-server CPUs starting from 14th generation. >>> VPU enables efficient execution of Deep Learning applications >>> like object detection, classification etc. >>> >>> Driver is part of gpu/drm subsystem because VPU is similar in operation to >>> an integrated GPU. Reusing drm driver init, ioctl handling, gem and prime >>> helpers and drm_mm allows to minimize code duplication in the kernel. >>> >>> The whole driver is licensed under GPL-2.0-only except for two headers imported >>> from the firmware that are MIT licensed. >>> >>> User mode driver stack consists of Level Zero API driver and OpenVINO plugin. >>> Both should be open-sourced by the end of Q4. >>> The firmware for the VPU will be distributed as a closed source binary. >>> >>> I'm resending v3 patchset with correct Dave's email. >>> >>> Regards, >>> Jacek >>> >>> v3: >>> - Fixed alignment warning in ivpu_ipc.c when building with W=1 >>> >>> v2: https://lore.kernel.org/all/20220913121017.993825-1-jacek.lawrynowicz@linux.intel.com/ >>> - Rename the driver from "drm/vpu" to "drm/ivpu" >>> - Add a TODO file >>> - Add support for WC buffers >>> >>> v1: https://lore.kernel.org/all/20220728131709.1087188-1-jacek.lawrynowicz@linux.intel.com/ >>> >>> Jacek Lawrynowicz (7): >>> drm/ivpu: Introduce a new DRM driver for Intel VPU >>> drm/ivpu: Add Intel VPU MMU support >>> drm/ivpu: Add GEM buffer object management >>> drm/ivpu: Add IPC driver and JSM messages >>> drm/ivpu: Implement firmware parsing and booting >>> drm/ivpu: Add command buffer submission logic >>> drm/ivpu: Add PM support >>> >>> MAINTAINERS | 8 + >>> drivers/gpu/drm/Kconfig | 2 + >>> drivers/gpu/drm/Makefile | 1 + >>> drivers/gpu/drm/ivpu/Kconfig | 12 + >>> drivers/gpu/drm/ivpu/Makefile | 16 + >>> drivers/gpu/drm/ivpu/TODO | 7 + >>> drivers/gpu/drm/ivpu/ivpu_drv.c | 643 ++++++++++++++ >>> drivers/gpu/drm/ivpu/ivpu_drv.h | 178 ++++ >>> drivers/gpu/drm/ivpu/ivpu_fw.c | 426 +++++++++ >>> drivers/gpu/drm/ivpu/ivpu_fw.h | 38 + >>> drivers/gpu/drm/ivpu/ivpu_gem.c | 836 ++++++++++++++++++ >>> drivers/gpu/drm/ivpu/ivpu_gem.h | 128 +++ >>> drivers/gpu/drm/ivpu/ivpu_hw.h | 169 ++++ >>> drivers/gpu/drm/ivpu/ivpu_hw_mtl.c | 1060 +++++++++++++++++++++++ >>> drivers/gpu/drm/ivpu/ivpu_hw_mtl_reg.h | 468 ++++++++++ >>> drivers/gpu/drm/ivpu/ivpu_hw_reg_io.h | 115 +++ >>> drivers/gpu/drm/ivpu/ivpu_ipc.c | 508 +++++++++++ >>> drivers/gpu/drm/ivpu/ivpu_ipc.h | 90 ++ >>> drivers/gpu/drm/ivpu/ivpu_job.c | 629 ++++++++++++++ >>> drivers/gpu/drm/ivpu/ivpu_job.h | 73 ++ >>> drivers/gpu/drm/ivpu/ivpu_jsm_msg.c | 220 +++++ >>> drivers/gpu/drm/ivpu/ivpu_jsm_msg.h | 25 + >>> drivers/gpu/drm/ivpu/ivpu_mmu.c | 888 +++++++++++++++++++ >>> drivers/gpu/drm/ivpu/ivpu_mmu.h | 53 ++ >>> drivers/gpu/drm/ivpu/ivpu_mmu_context.c | 419 +++++++++ >>> drivers/gpu/drm/ivpu/ivpu_mmu_context.h | 49 ++ >>> drivers/gpu/drm/ivpu/ivpu_pm.c | 352 ++++++++ >>> drivers/gpu/drm/ivpu/ivpu_pm.h | 38 + >>> drivers/gpu/drm/ivpu/vpu_boot_api.h | 241 ++++++ >>> drivers/gpu/drm/ivpu/vpu_jsm_api.h | 616 +++++++++++++ >>> include/uapi/drm/ivpu_drm.h | 343 ++++++++ >> >> You have to add yourself to MAINTAINERS. >> >> I assume that there's a FOSS userspace available? > > Rereading the cover letter, it will be opensourced. I think DRM policy is that we first need an OSS userspace befor the kernel driver get's merged. Nevertheless it's now a good time to get the driver in shape. > > I've finished looking trough the patchset and left comments on some of them. Thanks for the in-depth review and sorry for late response but it took us some time to implement all review changes. The user space should be opensourced in coming weeks. Regards, Jacek