On Wed, Mar 24, 2021 at 8:38 PM Maciej Kwapulinski <maciej.kwapulinski@xxxxxxxxxxxxxxx> wrote: > > 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 Not sure we need this, but if Greg asked for that (I haven't followed) than it's okay. > - 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 We are at v5.12-rc4. The rule of thumb is latest rc or release + subsystem tree against which the driver is created. > - number of other/minor fixes > > --- > > Maciej Kwapulinski (1): > intel_gna: add a 'misc' device > > Tomasz Jankowski (12): > intel_gna: add driver module > intel_gna: add component of hardware operation > intel_gna: read hardware info in the driver > intel_gna: add memory handling > intel_gna: initialize mmu > intel_gna: add hardware ids > intel_gna: add request component > intel_gna: implement scoring > intel_gna: add a work queue to process scoring requests > intel_gna: add interrupt handler > intel_gna: add ioctl handler > intel_gna: add file operations to a 'misc' device > > Documentation/misc-devices/index.rst | 1 + > Documentation/misc-devices/intel/gna.rst | 48 ++ > .../userspace-api/ioctl/ioctl-number.rst | 1 + > MAINTAINERS | 7 + > drivers/misc/Kconfig | 1 + > drivers/misc/Makefile | 1 + > drivers/misc/intel/gna/Kbuild | 5 + > drivers/misc/intel/gna/Kconfig | 13 + > drivers/misc/intel/gna/gna_device.c | 429 ++++++++++++++++ > drivers/misc/intel/gna/gna_device.h | 89 ++++ > drivers/misc/intel/gna/gna_driver.c | 43 ++ > drivers/misc/intel/gna/gna_driver.h | 33 ++ > drivers/misc/intel/gna/gna_hw.c | 125 +++++ > drivers/misc/intel/gna/gna_hw.h | 61 +++ > drivers/misc/intel/gna/gna_ioctl.c | 249 +++++++++ > drivers/misc/intel/gna/gna_ioctl.h | 11 + > drivers/misc/intel/gna/gna_mem.c | 473 ++++++++++++++++++ > drivers/misc/intel/gna/gna_mem.h | 107 ++++ > drivers/misc/intel/gna/gna_request.c | 463 +++++++++++++++++ > drivers/misc/intel/gna/gna_request.h | 62 +++ > drivers/misc/intel/gna/gna_score.c | 298 +++++++++++ > drivers/misc/intel/gna/gna_score.h | 18 + > include/uapi/misc/intel/gna.h | 155 ++++++ > 23 files changed, 2693 insertions(+) > create mode 100644 Documentation/misc-devices/intel/gna.rst > create mode 100644 drivers/misc/intel/gna/Kbuild > create mode 100644 drivers/misc/intel/gna/Kconfig > create mode 100644 drivers/misc/intel/gna/gna_device.c > create mode 100644 drivers/misc/intel/gna/gna_device.h > create mode 100644 drivers/misc/intel/gna/gna_driver.c > create mode 100644 drivers/misc/intel/gna/gna_driver.h > create mode 100644 drivers/misc/intel/gna/gna_hw.c > create mode 100644 drivers/misc/intel/gna/gna_hw.h > create mode 100644 drivers/misc/intel/gna/gna_ioctl.c > create mode 100644 drivers/misc/intel/gna/gna_ioctl.h > create mode 100644 drivers/misc/intel/gna/gna_mem.c > create mode 100644 drivers/misc/intel/gna/gna_mem.h > create mode 100644 drivers/misc/intel/gna/gna_request.c > create mode 100644 drivers/misc/intel/gna/gna_request.h > create mode 100644 drivers/misc/intel/gna/gna_score.c > create mode 100644 drivers/misc/intel/gna/gna_score.h > create mode 100644 include/uapi/misc/intel/gna.h > > -- > 2.28.0 > -- With Best Regards, Andy Shevchenko