Re: [PATCH v5 00/10] Driver of Intel(R) Gaussian & Neural Accelerator

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi

Am 20.10.22 um 19:53 schrieb Maciej Kwapulinski:
Dear kernel maintainers,

This submission is a kernel driver to support Intel(R) Gaussian & Neural
Accelerator (Intel(R) GNA). Intel(R) GNA is a PCI-based neural co-processor
available on multiple Intel platforms. AI developers and users can offload
continuous inference workloads to an Intel(R) GNA device in order to free
processor resources and save power. Noise reduction and speech recognition
are the examples of the workloads Intel(R) GNA deals with while its usage
is not limited to the two.

For a list of processors equipped with Intel(R) GNA device, please refer to
this link:
https://docs.openvinotoolkit.org/latest/openvino_docs_IE_DG_supported_plugins_GNA.html

We think contributing this driver to the upstream kernel project is the
best way for developers and users to get the latest Intel(R) GNA support in
a Linux kernel, through the mainline to any Linux distributions installed
on their systems. Upstreaming also enables contribution from developers
around the world to the driver once it is merged.

The driver works with Intel(R) libraries in user space. The Intel(R) driver
exposes a few IOCTL interfaces for use by libraries in user space. The
libraries are open sourced and are available at:
https://github.com/intel/gna

This driver appears to be a candidate for the accel subsystem that has been proposed here. [1] At a minimum, you'd now get standardized file names. Longterm, I'd expect dedicated helpers for accel devices.

Best regards
Thomas


[1] https://lore.kernel.org/dri-devel/Y1VMX9J44FJZp0dl@xxxxxxxxx/T/#m977efaeb39fc5be581ae05e1dccbd896546db943


---

Changelogs:

  v1->v2:
  - driver's new layout:
    - driver name: gna -> intel_gna
    - module name: gna -> intel_gna
    - device file name: /dev/gnaN -> /dev/intel_gnaN
    - driver's source directory: drivers/misc/gna/ -> drivers/misc/intel/gna/
    - UAPI: include/uapi/misc/gna.h -> include/uapi/misc/intel/gna.h
    - DOC: Documentation/misc-devices/gna.rst ->
        Documentation/misc-devices/intel/gna.rst
  - 'MISC' device framework used
  - fixes throughout GNA device's PCI management
  - header files' includes and forward declarations cleanup
  - ISR made static
  - unused comments cleanup
  - "_priv_" segment removed from function names
  - tested: v5.11-rc3 -> v5.11
  - number of other/minor fixes

  v2->v3:
  - PCI glue driver part split.
  - GNA probe fail path made fully implicit.
  - 'recovery_timeout' module parameter present under 'CONFIG_DEBUG_INTEL_GNA' flag only.
  - build for X86_32 enabled.
  - module initialization through 'module_pci_driver()'.
  - gna_priv->file_list cleanup.
  - 'gna_' prefix removed from source files' names.
  - power management handling added.
  - number of other/minor fixes
  - tests performed on kernel v5.12

  v3->v4:
  - GNA driver adapted to DRM framework (+userspace GNA library adapted to use the driver)
    - drm_managed (drmm) feature is used for objects lifetime management
    - GNA memory objects use ~drm_gem_shmem_object~ objects as a base
  - patches reorganized to meet symbols' usage with their declarations/definitions
  - 'recovery_timeout' module parameter removed
  - number of other/minor fixes from v3 review
  - tests performed on kernel v6.0

  v4->v5:
  - indentation fixed in drivers/gpu/drm/gna/Kconfig

Maciej Kwapulinski (4):
   gna: add PCI driver module
   gna: add GNA DRM device
   gna: add GNA_GEM_NEW and GNA_GEM_FREE ioctls
   gna: add power management

Tomasz Jankowski (6):
   gna: read hardware info
   gna: initialize MMU
   gna: add GNA_GET_PARAMETER ioctl
   gna: add GNA_COMPUTE ioctl
   gna: add GNA_WAIT ioctl
   gna: add open and close operations on GNA device

  Documentation/gpu/drivers.rst     |   1 +
  Documentation/gpu/gna.rst         |  64 +++++
  MAINTAINERS                       |   7 +
  drivers/gpu/drm/Kconfig           |   2 +
  drivers/gpu/drm/Makefile          |   1 +
  drivers/gpu/drm/gna/Kbuild        |   5 +
  drivers/gpu/drm/gna/Kconfig       |  15 +
  drivers/gpu/drm/gna/gna_device.c  | 317 +++++++++++++++++++++
  drivers/gpu/drm/gna/gna_device.h  | 114 ++++++++
  drivers/gpu/drm/gna/gna_gem.h     |  22 ++
  drivers/gpu/drm/gna/gna_hw.c      | 110 ++++++++
  drivers/gpu/drm/gna/gna_hw.h      | 107 ++++++++
  drivers/gpu/drm/gna/gna_ioctl.c   | 208 ++++++++++++++
  drivers/gpu/drm/gna/gna_mem.c     | 249 +++++++++++++++++
  drivers/gpu/drm/gna/gna_mem.h     |  58 ++++
  drivers/gpu/drm/gna/gna_pci.c     | 148 ++++++++++
  drivers/gpu/drm/gna/gna_pci.h     |  12 +
  drivers/gpu/drm/gna/gna_request.c | 441 ++++++++++++++++++++++++++++++
  drivers/gpu/drm/gna/gna_request.h |  64 +++++
  drivers/gpu/drm/gna/gna_score.c   | 222 +++++++++++++++
  drivers/gpu/drm/gna/gna_score.h   |  11 +
  include/uapi/drm/gna_drm.h        | 169 ++++++++++++
  22 files changed, 2347 insertions(+)
  create mode 100644 Documentation/gpu/gna.rst
  create mode 100644 drivers/gpu/drm/gna/Kbuild
  create mode 100644 drivers/gpu/drm/gna/Kconfig
  create mode 100644 drivers/gpu/drm/gna/gna_device.c
  create mode 100644 drivers/gpu/drm/gna/gna_device.h
  create mode 100644 drivers/gpu/drm/gna/gna_gem.h
  create mode 100644 drivers/gpu/drm/gna/gna_hw.c
  create mode 100644 drivers/gpu/drm/gna/gna_hw.h
  create mode 100644 drivers/gpu/drm/gna/gna_ioctl.c
  create mode 100644 drivers/gpu/drm/gna/gna_mem.c
  create mode 100644 drivers/gpu/drm/gna/gna_mem.h
  create mode 100644 drivers/gpu/drm/gna/gna_pci.c
  create mode 100644 drivers/gpu/drm/gna/gna_pci.h
  create mode 100644 drivers/gpu/drm/gna/gna_request.c
  create mode 100644 drivers/gpu/drm/gna/gna_request.h
  create mode 100644 drivers/gpu/drm/gna/gna_score.c
  create mode 100644 drivers/gpu/drm/gna/gna_score.h
  create mode 100644 include/uapi/drm/gna_drm.h


--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Ivo Totev

Attachment: OpenPGP_signature
Description: OpenPGP digital signature


[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux