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

Oded Gabbay ogabbay at kernel.org
Tue Jan 24 08:25:02 UTC 2023


On Mon, Oct 24, 2022 at 2:29 PM Thomas Zimmermann <tzimmermann at suse.de> wrote:
>
> 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@kroah.com/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

Hi Maciej,
I just wanted to touch base with you about gna, asking whether you are
going (or maybe started) to port the gna to the accel subsystem ?
fyi, ivpu driver was just merged to the accel subsystem, so we already have our
first driver tested & merged.

Thanks,
Oded


More information about the dri-devel mailing list