mbox series

[v5,0/7] New DRM accel driver for Intel VPU

Message ID 20230109122344.253994-1-jacek.lawrynowicz@linux.intel.com (mailing list archive)
Headers show
Series New DRM accel driver for Intel VPU | expand

Message

Jacek Lawrynowicz Jan. 9, 2023, 12:23 p.m. UTC
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.

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 was open sourced in December 2022 and it is available at:
https://github.com/intel/linux-vpu-driver

The firmware for the VPU will be distributed as a closed source binary.

There are no major chcnages in this version of the patchset.
Detailed changes are listed below.

Regards,
Jacek

Changelog

v5:
- Rename ivpu_drm.h to ivpu_accel.h
- Cleanup ivpu_mmu_config_check()
- Optimize locking in ivpu_mmu_cd_add()
- Invalidate user context if it has MMU faults
- Move ivpu_ipc_match_consumer() outside ivpu_ipc_dispatch()

v4: https://lore.kernel.org/all/20221208110733.5498-1-jacek.lawrynowicz@linux.intel.com/
- Switch to the accel framework (DRIVER_COMPUTE_ACCEL)
- Move the driver from drivers/gpu/drm to drivers/accel
- Rename kconfig DRM_IVPU option to DRM_ACCEL_IVPU and update dependencies
- Create context on open() instead of lazy allocating it
- Remove status_offset from submit ioctl, as status is now reported in bo_wait ioctl
- Use managed resources in ivpu_drv.c
- Optimize locking in ivpu_ipc.c - add new rx_msg_lock for consumer msg list
- Refactor vpu_hw_mtl_reg.h to use BIT_MASK() and GENMASK() macros
- Use module_pci_driver() for mudule init
- Remove mutex from "struct ivpu_pm_info"
- Add explicit "vdev" arg to ivpu_dbg()
- Use drm_WARN_ON() instead of WARN_ON() where possible
- Add comments for boot related functions
- Update firmware API headers

v3: https://lore.kernel.org/all/20220924151149.323622-1-jacek.lawrynowicz@linux.intel.com/
- 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):
  accel/ivpu: Introduce a new DRM driver for Intel VPU
  accel/ivpu: Add Intel VPU MMU support
  accel/ivpu: Add GEM buffer object management
  accel/ivpu: Add IPC driver and JSM messages
  accel/ivpu: Implement firmware parsing and booting
  accel/ivpu: Add command buffer submission logic
  accel/ivpu: Add PM support

 MAINTAINERS                           |    9 +
 drivers/Makefile                      |    1 +
 drivers/accel/Kconfig                 |    2 +
 drivers/accel/Makefile                |    3 +
 drivers/accel/ivpu/Kconfig            |   15 +
 drivers/accel/ivpu/Makefile           |   16 +
 drivers/accel/ivpu/TODO               |    9 +
 drivers/accel/ivpu/ivpu_drv.c         |  661 +++++++++++++++
 drivers/accel/ivpu/ivpu_drv.h         |  190 +++++
 drivers/accel/ivpu/ivpu_fw.c          |  423 ++++++++++
 drivers/accel/ivpu/ivpu_fw.h          |   38 +
 drivers/accel/ivpu/ivpu_gem.c         |  846 +++++++++++++++++++
 drivers/accel/ivpu/ivpu_gem.h         |  129 +++
 drivers/accel/ivpu/ivpu_hw.h          |  170 ++++
 drivers/accel/ivpu/ivpu_hw_mtl.c      | 1084 +++++++++++++++++++++++++
 drivers/accel/ivpu/ivpu_hw_mtl_reg.h  |  280 +++++++
 drivers/accel/ivpu/ivpu_hw_reg_io.h   |  115 +++
 drivers/accel/ivpu/ivpu_ipc.c         |  508 ++++++++++++
 drivers/accel/ivpu/ivpu_ipc.h         |   93 +++
 drivers/accel/ivpu/ivpu_job.c         |  614 ++++++++++++++
 drivers/accel/ivpu/ivpu_job.h         |   67 ++
 drivers/accel/ivpu/ivpu_jsm_msg.c     |  170 ++++
 drivers/accel/ivpu/ivpu_jsm_msg.h     |   23 +
 drivers/accel/ivpu/ivpu_mmu.c         |  883 ++++++++++++++++++++
 drivers/accel/ivpu/ivpu_mmu.h         |   50 ++
 drivers/accel/ivpu/ivpu_mmu_context.c |  398 +++++++++
 drivers/accel/ivpu/ivpu_mmu_context.h |   50 ++
 drivers/accel/ivpu/ivpu_pm.c          |  329 ++++++++
 drivers/accel/ivpu/ivpu_pm.h          |   38 +
 drivers/accel/ivpu/vpu_boot_api.h     |  349 ++++++++
 drivers/accel/ivpu/vpu_jsm_api.h      |  999 +++++++++++++++++++++++
 include/uapi/drm/ivpu_accel.h         |  339 ++++++++
 32 files changed, 8901 insertions(+)
 create mode 100644 drivers/accel/Makefile
 create mode 100644 drivers/accel/ivpu/Kconfig
 create mode 100644 drivers/accel/ivpu/Makefile
 create mode 100644 drivers/accel/ivpu/TODO
 create mode 100644 drivers/accel/ivpu/ivpu_drv.c
 create mode 100644 drivers/accel/ivpu/ivpu_drv.h
 create mode 100644 drivers/accel/ivpu/ivpu_fw.c
 create mode 100644 drivers/accel/ivpu/ivpu_fw.h
 create mode 100644 drivers/accel/ivpu/ivpu_gem.c
 create mode 100644 drivers/accel/ivpu/ivpu_gem.h
 create mode 100644 drivers/accel/ivpu/ivpu_hw.h
 create mode 100644 drivers/accel/ivpu/ivpu_hw_mtl.c
 create mode 100644 drivers/accel/ivpu/ivpu_hw_mtl_reg.h
 create mode 100644 drivers/accel/ivpu/ivpu_hw_reg_io.h
 create mode 100644 drivers/accel/ivpu/ivpu_ipc.c
 create mode 100644 drivers/accel/ivpu/ivpu_ipc.h
 create mode 100644 drivers/accel/ivpu/ivpu_job.c
 create mode 100644 drivers/accel/ivpu/ivpu_job.h
 create mode 100644 drivers/accel/ivpu/ivpu_jsm_msg.c
 create mode 100644 drivers/accel/ivpu/ivpu_jsm_msg.h
 create mode 100644 drivers/accel/ivpu/ivpu_mmu.c
 create mode 100644 drivers/accel/ivpu/ivpu_mmu.h
 create mode 100644 drivers/accel/ivpu/ivpu_mmu_context.c
 create mode 100644 drivers/accel/ivpu/ivpu_mmu_context.h
 create mode 100644 drivers/accel/ivpu/ivpu_pm.c
 create mode 100644 drivers/accel/ivpu/ivpu_pm.h
 create mode 100644 drivers/accel/ivpu/vpu_boot_api.h
 create mode 100644 drivers/accel/ivpu/vpu_jsm_api.h
 create mode 100644 include/uapi/drm/ivpu_accel.h


base-commit: 03a0a1040895711e12c15ab28d4d1812928e171d
prerequisite-patch-id: 1283b537f4791511769ad3446d0eafd98193e86f
--
2.34.1

Comments

Oded Gabbay Jan. 10, 2023, 7:34 p.m. UTC | #1
On Mon, Jan 9, 2023 at 2:23 PM Jacek Lawrynowicz
<jacek.lawrynowicz@linux.intel.com> wrote:
>
> 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.
>
> 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 was open sourced in December 2022 and it is available at:
> https://github.com/intel/linux-vpu-driver
>
> The firmware for the VPU will be distributed as a closed source binary.
>
> There are no major chcnages in this version of the patchset.
> Detailed changes are listed below.
>
> Regards,
> Jacek

Hi Jacek,
For patches 1-4 and 6 (assuming you fix the small issue in patch 3) you can add
Reviewed-by: Oded Gabbay <ogabbay@kernel.org>

For patch 5 I had a comment/question, please reply to it. Once we sort
that thing that patch is also r-b by me.

Patch 7 - I prefer someone else who knows about PM to look at it. In
habana we don't support power management (in the driver) so I have
never dealt with that and therefore I have no idea if you use the kapi
correctly.

Thanks,
Oded


>
> Changelog
>
> v5:
> - Rename ivpu_drm.h to ivpu_accel.h
> - Cleanup ivpu_mmu_config_check()
> - Optimize locking in ivpu_mmu_cd_add()
> - Invalidate user context if it has MMU faults
> - Move ivpu_ipc_match_consumer() outside ivpu_ipc_dispatch()
>
> v4: https://lore.kernel.org/all/20221208110733.5498-1-jacek.lawrynowicz@linux.intel.com/
> - Switch to the accel framework (DRIVER_COMPUTE_ACCEL)
> - Move the driver from drivers/gpu/drm to drivers/accel
> - Rename kconfig DRM_IVPU option to DRM_ACCEL_IVPU and update dependencies
> - Create context on open() instead of lazy allocating it
> - Remove status_offset from submit ioctl, as status is now reported in bo_wait ioctl
> - Use managed resources in ivpu_drv.c
> - Optimize locking in ivpu_ipc.c - add new rx_msg_lock for consumer msg list
> - Refactor vpu_hw_mtl_reg.h to use BIT_MASK() and GENMASK() macros
> - Use module_pci_driver() for mudule init
> - Remove mutex from "struct ivpu_pm_info"
> - Add explicit "vdev" arg to ivpu_dbg()
> - Use drm_WARN_ON() instead of WARN_ON() where possible
> - Add comments for boot related functions
> - Update firmware API headers
>
> v3: https://lore.kernel.org/all/20220924151149.323622-1-jacek.lawrynowicz@linux.intel.com/
> - 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):
>   accel/ivpu: Introduce a new DRM driver for Intel VPU
>   accel/ivpu: Add Intel VPU MMU support
>   accel/ivpu: Add GEM buffer object management
>   accel/ivpu: Add IPC driver and JSM messages
>   accel/ivpu: Implement firmware parsing and booting
>   accel/ivpu: Add command buffer submission logic
>   accel/ivpu: Add PM support
>
>  MAINTAINERS                           |    9 +
>  drivers/Makefile                      |    1 +
>  drivers/accel/Kconfig                 |    2 +
>  drivers/accel/Makefile                |    3 +
>  drivers/accel/ivpu/Kconfig            |   15 +
>  drivers/accel/ivpu/Makefile           |   16 +
>  drivers/accel/ivpu/TODO               |    9 +
>  drivers/accel/ivpu/ivpu_drv.c         |  661 +++++++++++++++
>  drivers/accel/ivpu/ivpu_drv.h         |  190 +++++
>  drivers/accel/ivpu/ivpu_fw.c          |  423 ++++++++++
>  drivers/accel/ivpu/ivpu_fw.h          |   38 +
>  drivers/accel/ivpu/ivpu_gem.c         |  846 +++++++++++++++++++
>  drivers/accel/ivpu/ivpu_gem.h         |  129 +++
>  drivers/accel/ivpu/ivpu_hw.h          |  170 ++++
>  drivers/accel/ivpu/ivpu_hw_mtl.c      | 1084 +++++++++++++++++++++++++
>  drivers/accel/ivpu/ivpu_hw_mtl_reg.h  |  280 +++++++
>  drivers/accel/ivpu/ivpu_hw_reg_io.h   |  115 +++
>  drivers/accel/ivpu/ivpu_ipc.c         |  508 ++++++++++++
>  drivers/accel/ivpu/ivpu_ipc.h         |   93 +++
>  drivers/accel/ivpu/ivpu_job.c         |  614 ++++++++++++++
>  drivers/accel/ivpu/ivpu_job.h         |   67 ++
>  drivers/accel/ivpu/ivpu_jsm_msg.c     |  170 ++++
>  drivers/accel/ivpu/ivpu_jsm_msg.h     |   23 +
>  drivers/accel/ivpu/ivpu_mmu.c         |  883 ++++++++++++++++++++
>  drivers/accel/ivpu/ivpu_mmu.h         |   50 ++
>  drivers/accel/ivpu/ivpu_mmu_context.c |  398 +++++++++
>  drivers/accel/ivpu/ivpu_mmu_context.h |   50 ++
>  drivers/accel/ivpu/ivpu_pm.c          |  329 ++++++++
>  drivers/accel/ivpu/ivpu_pm.h          |   38 +
>  drivers/accel/ivpu/vpu_boot_api.h     |  349 ++++++++
>  drivers/accel/ivpu/vpu_jsm_api.h      |  999 +++++++++++++++++++++++
>  include/uapi/drm/ivpu_accel.h         |  339 ++++++++
>  32 files changed, 8901 insertions(+)
>  create mode 100644 drivers/accel/Makefile
>  create mode 100644 drivers/accel/ivpu/Kconfig
>  create mode 100644 drivers/accel/ivpu/Makefile
>  create mode 100644 drivers/accel/ivpu/TODO
>  create mode 100644 drivers/accel/ivpu/ivpu_drv.c
>  create mode 100644 drivers/accel/ivpu/ivpu_drv.h
>  create mode 100644 drivers/accel/ivpu/ivpu_fw.c
>  create mode 100644 drivers/accel/ivpu/ivpu_fw.h
>  create mode 100644 drivers/accel/ivpu/ivpu_gem.c
>  create mode 100644 drivers/accel/ivpu/ivpu_gem.h
>  create mode 100644 drivers/accel/ivpu/ivpu_hw.h
>  create mode 100644 drivers/accel/ivpu/ivpu_hw_mtl.c
>  create mode 100644 drivers/accel/ivpu/ivpu_hw_mtl_reg.h
>  create mode 100644 drivers/accel/ivpu/ivpu_hw_reg_io.h
>  create mode 100644 drivers/accel/ivpu/ivpu_ipc.c
>  create mode 100644 drivers/accel/ivpu/ivpu_ipc.h
>  create mode 100644 drivers/accel/ivpu/ivpu_job.c
>  create mode 100644 drivers/accel/ivpu/ivpu_job.h
>  create mode 100644 drivers/accel/ivpu/ivpu_jsm_msg.c
>  create mode 100644 drivers/accel/ivpu/ivpu_jsm_msg.h
>  create mode 100644 drivers/accel/ivpu/ivpu_mmu.c
>  create mode 100644 drivers/accel/ivpu/ivpu_mmu.h
>  create mode 100644 drivers/accel/ivpu/ivpu_mmu_context.c
>  create mode 100644 drivers/accel/ivpu/ivpu_mmu_context.h
>  create mode 100644 drivers/accel/ivpu/ivpu_pm.c
>  create mode 100644 drivers/accel/ivpu/ivpu_pm.h
>  create mode 100644 drivers/accel/ivpu/vpu_boot_api.h
>  create mode 100644 drivers/accel/ivpu/vpu_jsm_api.h
>  create mode 100644 include/uapi/drm/ivpu_accel.h
>
>
> base-commit: 03a0a1040895711e12c15ab28d4d1812928e171d
> prerequisite-patch-id: 1283b537f4791511769ad3446d0eafd98193e86f
> --
> 2.34.1
Jeffrey Hugo Jan. 12, 2023, 5:10 p.m. UTC | #2
On 1/9/2023 5:23 AM, Jacek Lawrynowicz wrote:
> 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.
> 
> 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 was open sourced in December 2022 and it is available at:
> https://github.com/intel/linux-vpu-driver

I feel like I forgot to mention this earlier because I can't find a 
reference to it in my mails.  I would like to see something in 
Documentation for this driver/device.  Would be nice to get an overview 
of how it works (system block diagram?), how it is intended to be used, 
etc.  Include relevant references.  This would be a great place to 
document the UMD and the compiler (I am positive you have mentioned the 
compiler before, but I am currently failing to find a reference to it).

I feel that traditional DRM gets away from not needing this since their 
stuff is pretty well established.  Everyone uses Mesa/igt and so how 
things are structured/used is fairly well implied.  Accel is brand new 
and doesn't have that yet so I suspect we'll be well situated if we take 
the extra effort to spell out these things which might be just assumed 
elsewhere.  Hopefully, over time, such documentation helps in 
identifying useful areas to build up the common code of the subsystem.

I can't justify holding up this series for this though.  Please put it 
on some todo list  :)

-Jeff
Jacek Lawrynowicz Jan. 13, 2023, 9:32 a.m. UTC | #3
Hi,

On 12.01.2023 18:10, Jeffrey Hugo wrote:
> On 1/9/2023 5:23 AM, Jacek Lawrynowicz wrote:
>> 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.
>>
>> 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 was open sourced in December 2022 and it is available at:
>> https://github.com/intel/linux-vpu-driver
> 
> I feel like I forgot to mention this earlier because I can't find a reference to it in my mails.  I would like to see something in Documentation for this driver/device.  Would be nice to get an overview of how it works (system block diagram?), how it is intended to be used, etc.  Include relevant references.  This would be a great place to document the UMD and the compiler (I am positive you have mentioned the compiler before, but I am currently failing to find a reference to it).
> 
> I feel that traditional DRM gets away from not needing this since their stuff is pretty well established.  Everyone uses Mesa/igt and so how things are structured/used is fairly well implied.  Accel is brand new and doesn't have that yet so I suspect we'll be well situated if we take the extra effort to spell out these things which might be just assumed elsewhere.  Hopefully, over time, such documentation helps in identifying useful areas to build up the common code of the subsystem.
> 
> I can't justify holding up this series for this though.  Please put it on some todo list  :)

OK, I've added the documentation to TODO.
For now I will add info about the compiler to v6 cover letter.
It is available at https://github.com/openvinotoolkit/vpux-plugin.

Regards,
Jacek
Daniel Vetter Jan. 19, 2023, 9:07 a.m. UTC | #4
On Tue, Jan 10, 2023 at 09:34:00PM +0200, Oded Gabbay wrote:
> On Mon, Jan 9, 2023 at 2:23 PM Jacek Lawrynowicz
> <jacek.lawrynowicz@linux.intel.com> wrote:
> >
> > 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.
> >
> > 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 was open sourced in December 2022 and it is available at:
> > https://github.com/intel/linux-vpu-driver
> >
> > The firmware for the VPU will be distributed as a closed source binary.
> >
> > There are no major chcnages in this version of the patchset.
> > Detailed changes are listed below.
> >
> > Regards,
> > Jacek
> 
> Hi Jacek,
> For patches 1-4 and 6 (assuming you fix the small issue in patch 3) you can add
> Reviewed-by: Oded Gabbay <ogabbay@kernel.org>
> 
> For patch 5 I had a comment/question, please reply to it. Once we sort
> that thing that patch is also r-b by me.
> 
> Patch 7 - I prefer someone else who knows about PM to look at it. In
> habana we don't support power management (in the driver) so I have
> never dealt with that and therefore I have no idea if you use the kapi
> correctly.

Usually the hard part is deadlocks between runtime_resume calls and the
rpm suspend callback. I'm not sure whether lockdep catches these I'm not
sure whether lockdep catches these.

From a very quick look it looks reasonable.
-Daniel

> 
> Thanks,
> Oded
> 
> 
> >
> > Changelog
> >
> > v5:
> > - Rename ivpu_drm.h to ivpu_accel.h
> > - Cleanup ivpu_mmu_config_check()
> > - Optimize locking in ivpu_mmu_cd_add()
> > - Invalidate user context if it has MMU faults
> > - Move ivpu_ipc_match_consumer() outside ivpu_ipc_dispatch()
> >
> > v4: https://lore.kernel.org/all/20221208110733.5498-1-jacek.lawrynowicz@linux.intel.com/
> > - Switch to the accel framework (DRIVER_COMPUTE_ACCEL)
> > - Move the driver from drivers/gpu/drm to drivers/accel
> > - Rename kconfig DRM_IVPU option to DRM_ACCEL_IVPU and update dependencies
> > - Create context on open() instead of lazy allocating it
> > - Remove status_offset from submit ioctl, as status is now reported in bo_wait ioctl
> > - Use managed resources in ivpu_drv.c
> > - Optimize locking in ivpu_ipc.c - add new rx_msg_lock for consumer msg list
> > - Refactor vpu_hw_mtl_reg.h to use BIT_MASK() and GENMASK() macros
> > - Use module_pci_driver() for mudule init
> > - Remove mutex from "struct ivpu_pm_info"
> > - Add explicit "vdev" arg to ivpu_dbg()
> > - Use drm_WARN_ON() instead of WARN_ON() where possible
> > - Add comments for boot related functions
> > - Update firmware API headers
> >
> > v3: https://lore.kernel.org/all/20220924151149.323622-1-jacek.lawrynowicz@linux.intel.com/
> > - 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):
> >   accel/ivpu: Introduce a new DRM driver for Intel VPU
> >   accel/ivpu: Add Intel VPU MMU support
> >   accel/ivpu: Add GEM buffer object management
> >   accel/ivpu: Add IPC driver and JSM messages
> >   accel/ivpu: Implement firmware parsing and booting
> >   accel/ivpu: Add command buffer submission logic
> >   accel/ivpu: Add PM support
> >
> >  MAINTAINERS                           |    9 +
> >  drivers/Makefile                      |    1 +
> >  drivers/accel/Kconfig                 |    2 +
> >  drivers/accel/Makefile                |    3 +
> >  drivers/accel/ivpu/Kconfig            |   15 +
> >  drivers/accel/ivpu/Makefile           |   16 +
> >  drivers/accel/ivpu/TODO               |    9 +
> >  drivers/accel/ivpu/ivpu_drv.c         |  661 +++++++++++++++
> >  drivers/accel/ivpu/ivpu_drv.h         |  190 +++++
> >  drivers/accel/ivpu/ivpu_fw.c          |  423 ++++++++++
> >  drivers/accel/ivpu/ivpu_fw.h          |   38 +
> >  drivers/accel/ivpu/ivpu_gem.c         |  846 +++++++++++++++++++
> >  drivers/accel/ivpu/ivpu_gem.h         |  129 +++
> >  drivers/accel/ivpu/ivpu_hw.h          |  170 ++++
> >  drivers/accel/ivpu/ivpu_hw_mtl.c      | 1084 +++++++++++++++++++++++++
> >  drivers/accel/ivpu/ivpu_hw_mtl_reg.h  |  280 +++++++
> >  drivers/accel/ivpu/ivpu_hw_reg_io.h   |  115 +++
> >  drivers/accel/ivpu/ivpu_ipc.c         |  508 ++++++++++++
> >  drivers/accel/ivpu/ivpu_ipc.h         |   93 +++
> >  drivers/accel/ivpu/ivpu_job.c         |  614 ++++++++++++++
> >  drivers/accel/ivpu/ivpu_job.h         |   67 ++
> >  drivers/accel/ivpu/ivpu_jsm_msg.c     |  170 ++++
> >  drivers/accel/ivpu/ivpu_jsm_msg.h     |   23 +
> >  drivers/accel/ivpu/ivpu_mmu.c         |  883 ++++++++++++++++++++
> >  drivers/accel/ivpu/ivpu_mmu.h         |   50 ++
> >  drivers/accel/ivpu/ivpu_mmu_context.c |  398 +++++++++
> >  drivers/accel/ivpu/ivpu_mmu_context.h |   50 ++
> >  drivers/accel/ivpu/ivpu_pm.c          |  329 ++++++++
> >  drivers/accel/ivpu/ivpu_pm.h          |   38 +
> >  drivers/accel/ivpu/vpu_boot_api.h     |  349 ++++++++
> >  drivers/accel/ivpu/vpu_jsm_api.h      |  999 +++++++++++++++++++++++
> >  include/uapi/drm/ivpu_accel.h         |  339 ++++++++
> >  32 files changed, 8901 insertions(+)
> >  create mode 100644 drivers/accel/Makefile
> >  create mode 100644 drivers/accel/ivpu/Kconfig
> >  create mode 100644 drivers/accel/ivpu/Makefile
> >  create mode 100644 drivers/accel/ivpu/TODO
> >  create mode 100644 drivers/accel/ivpu/ivpu_drv.c
> >  create mode 100644 drivers/accel/ivpu/ivpu_drv.h
> >  create mode 100644 drivers/accel/ivpu/ivpu_fw.c
> >  create mode 100644 drivers/accel/ivpu/ivpu_fw.h
> >  create mode 100644 drivers/accel/ivpu/ivpu_gem.c
> >  create mode 100644 drivers/accel/ivpu/ivpu_gem.h
> >  create mode 100644 drivers/accel/ivpu/ivpu_hw.h
> >  create mode 100644 drivers/accel/ivpu/ivpu_hw_mtl.c
> >  create mode 100644 drivers/accel/ivpu/ivpu_hw_mtl_reg.h
> >  create mode 100644 drivers/accel/ivpu/ivpu_hw_reg_io.h
> >  create mode 100644 drivers/accel/ivpu/ivpu_ipc.c
> >  create mode 100644 drivers/accel/ivpu/ivpu_ipc.h
> >  create mode 100644 drivers/accel/ivpu/ivpu_job.c
> >  create mode 100644 drivers/accel/ivpu/ivpu_job.h
> >  create mode 100644 drivers/accel/ivpu/ivpu_jsm_msg.c
> >  create mode 100644 drivers/accel/ivpu/ivpu_jsm_msg.h
> >  create mode 100644 drivers/accel/ivpu/ivpu_mmu.c
> >  create mode 100644 drivers/accel/ivpu/ivpu_mmu.h
> >  create mode 100644 drivers/accel/ivpu/ivpu_mmu_context.c
> >  create mode 100644 drivers/accel/ivpu/ivpu_mmu_context.h
> >  create mode 100644 drivers/accel/ivpu/ivpu_pm.c
> >  create mode 100644 drivers/accel/ivpu/ivpu_pm.h
> >  create mode 100644 drivers/accel/ivpu/vpu_boot_api.h
> >  create mode 100644 drivers/accel/ivpu/vpu_jsm_api.h
> >  create mode 100644 include/uapi/drm/ivpu_accel.h
> >
> >
> > base-commit: 03a0a1040895711e12c15ab28d4d1812928e171d
> > prerequisite-patch-id: 1283b537f4791511769ad3446d0eafd98193e86f
> > --
> > 2.34.1