From: "Kwapulinski, Maciej" <maciej.kwapulinski@intel.com>
To: Daniel Vetter <daniel@ffwll.ch>, David Airlie <airlied@linux.ie>,
Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
Maxime Ripard <mripard@kernel.org>,
Thomas Zimmermann <tzimmermann@suse.de>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Arnd Bergmann <arnd@arndb.de>, Jonathan Corbet <corbet@lwn.net>,
Derek Kiernan <derek.kiernan@xilinx.com>,
Dragan Cvetic <dragan.cvetic@xilinx.com>,
Andy Shevchenko <andy.shevchenko@gmail.com>,
Linus Walleij <linus.walleij@linaro.org>,
Olof Johansson <olof@lixom.net>
Cc: Maciej Kwapulinski <maciej.kwapulinski@linux.intel.com>,
dri-devel@lists.freedesktop.org, linux-doc@vger.kernel.org
Subject: [PATCH v4 00/10] Driver of Intel(R) Gaussian & Neural Accelerator
Date: Thu, 20 Oct 2022 15:35:15 +0200 [thread overview]
Message-ID: <20221020133525.1810728-1-maciej.kwapulinski@intel.com> (raw)
From: Maciej Kwapulinski <maciej.kwapulinski@linux.intel.com>
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
---
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
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
--
2.25.1
---------------------------------------------------------------------
Intel Technology Poland sp. z o.o.
ul. Slowackiego 173 | 80-298 Gdansk | Sad Rejonowy Gdansk Polnoc | VII Wydzial Gospodarczy Krajowego Rejestru Sadowego - KRS 101882 | NIP 957-07-52-316 | Kapital zakladowy 200.000 PLN.
Spolka oswiadcza, ze posiada status duzego przedsiebiorcy w rozumieniu ustawy z dnia 8 marca 2013 r. o przeciwdzialaniu nadmiernym opoznieniom w transakcjach handlowych.
Ta wiadomosc wraz z zalacznikami jest przeznaczona dla okreslonego adresata i moze zawierac informacje poufne. W razie przypadkowego otrzymania tej wiadomosci, prosimy o powiadomienie nadawcy oraz trwale jej usuniecie; jakiekolwiek przegladanie lub rozpowszechnianie jest zabronione.
This e-mail and any attachments may contain confidential material for the sole use of the intended recipient(s). If you are not the intended recipient, please contact the sender and delete all copies; any review or distribution by others is strictly prohibited.
next reply other threads:[~2022-10-20 13:38 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-20 13:35 Kwapulinski, Maciej [this message]
2022-10-20 13:35 ` [PATCH v4 01/10] gna: add PCI driver module Kwapulinski, Maciej
2022-10-20 14:09 ` Matthew Wilcox
2022-10-20 17:59 ` Maciej Kwapulinski
2022-10-20 14:32 ` Greg Kroah-Hartman
2022-10-20 16:11 ` Maciej Kwapulinski
2022-10-20 18:00 ` Greg Kroah-Hartman
2022-10-20 18:10 ` Maciej Kwapulinski
2022-10-20 13:35 ` [PATCH v4 02/10] gna: add GNA DRM device Kwapulinski, Maciej
2022-10-20 13:35 ` [PATCH v4 03/10] gna: read hardware info Kwapulinski, Maciej
2022-10-20 13:35 ` [PATCH v4 04/10] gna: initialize MMU Kwapulinski, Maciej
2022-10-20 13:35 ` [PATCH v4 05/10] gna: add GNA_GET_PARAMETER ioctl Kwapulinski, Maciej
2022-10-20 13:35 ` [PATCH v4 06/10] gna: add GNA_GEM_NEW and GNA_GEM_FREE ioctls Kwapulinski, Maciej
2022-10-20 13:35 ` [PATCH v4 07/10] gna: add GNA_COMPUTE ioctl Kwapulinski, Maciej
2022-10-20 13:35 ` [PATCH v4 08/10] gna: add GNA_WAIT ioctl Kwapulinski, Maciej
2022-10-20 13:35 ` [PATCH v4 09/10] gna: add power management Kwapulinski, Maciej
2022-10-20 13:35 ` [PATCH v4 10/10] gna: add open and close operations on GNA device Kwapulinski, Maciej
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20221020133525.1810728-1-maciej.kwapulinski@intel.com \
--to=maciej.kwapulinski@intel.com \
--cc=airlied@linux.ie \
--cc=andy.shevchenko@gmail.com \
--cc=arnd@arndb.de \
--cc=corbet@lwn.net \
--cc=daniel@ffwll.ch \
--cc=derek.kiernan@xilinx.com \
--cc=dragan.cvetic@xilinx.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=gregkh@linuxfoundation.org \
--cc=linus.walleij@linaro.org \
--cc=linux-doc@vger.kernel.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=maciej.kwapulinski@linux.intel.com \
--cc=mripard@kernel.org \
--cc=olof@lixom.net \
--cc=tzimmermann@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).