lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250919195132.1088515-1-xiangrongl@nvidia.com>
Date: Fri, 19 Sep 2025 19:51:29 +0000
From: Ron Li <xiangrongl@...dia.com>
To: <hdegoede@...hat.com>, <ilpo.jarvinen@...ux.intel.com>,
	<vadimp@...dia.com>, <alok.a.tiwari@...cle.com>, <kblaiech@...dia.com>,
	<davthompson@...dia.com>
CC: <platform-driver-x86@...r.kernel.org>, <linux-kernel@...r.kernel.org>,
	<linux-crypto@...r.kernel.org>, Ron Li <xiangrongl@...dia.com>
Subject: [PATCH v3 0/3] platform/mellanox: Add mlxbf_pka driver for BlueField DPU

This patch series adds the mlxbf_pka driver to support the BlueField DPU Public
Key Acceleration (PKA) hardware. The three patches in this series are:

Patch 1: Base implementation that wires up the platform driver and the
         device/shim layer:

Patch 2: Add userspace PKA ring device interface.

Patch 3: Add True Random Number Generator support to the BlueField PKA driver
         and wire it into the HWRNG core to feed kernel entropy (/dev/hwrng).

Testing:
- Kernel builds for ARM64
- Tested ARM64 build on several Mellanox BlueField 2 and 3 SoC boards that
  include the PKA hardware.
- PKA shim devices probe and remove successfully
- The PKA ring devices presented at /dev/mlxbf_pka/.
- The PKA device validation test passed.
- /dev/hwrng present; rng_available lists mlxbf_pka
- Generating random numbers succeeds on BlueField platforms

Signed-off-by: Ron Li <xiangrongl@...dia.com>
---
v2->v3:
- Split the source code into three patches to improve the readability. Each
  patch introduces new device features and functions.
- The latest kernel APIs are used for each patch in the series.
- Updated some variable names to improve the readability.
- Fixed the logic in the mlxbf_pka_ring_mem_addr() function.
- Update all the pr_xxx() to dev_xxx(). Except for one pr_xxx() print when
  the PKA device is not available yet.

v1->v2:
For patch 0001:
- Move ioctl related definition to include/uapi/linux/mlxbf-pka.h.
- Changed the ioctl number from 0xB7 to 0xBF, to avoid conflict with other
  drivers.
- Remove interrupt related code, since the PKA driver uses polling instread
  of interrupt.
- Use devm_kcalloc() to allocate memory with calculated length.
- Use read_poll_timeout() to handle infinite loop checking.
- Use lockdep_assert_held() to enforce serialization.
- Create mlxbf_pka_drv_verify_bootup_status() to handle duplicated code.
- Remove error handling in ***_remove_device functions since nothing useful
  can be done.
- Fix the rollbacks in some functions by adding proper goto rollback path.
- Updated all comments to under 80 characters per line.
- Upgrade some constant with kernel definitions.
- Include missing kernel libraries.
- Update some pr_xxx() to dev_xxx().
- Use FIELD_PREP and GENMASK to handle mask and offset of register access.
- Refactor some code snippet to improve readability.
- Update the comments of some functions and type definitions.
- The FRO in the source code stands for Free Running Oscillator.
- Fix typos.
---

Ron Li (3):
  platform/mellanox/mlxbf_pka: Add core BlueField PKA platform driver
  platform/mellanox/mlxbf_pka: Add userspace PKA ring device interface
  platform/mellanox/mlxbf_pka: Add TRNG support and hwrng integration

 .../ABI/testing/sysfs-platform-mellanox-pka   |   35 +
 .../userspace-api/ioctl/ioctl-number.rst      |    2 +
 MAINTAINERS                                   |    8 +
 drivers/platform/mellanox/Kconfig             |   10 +
 drivers/platform/mellanox/Makefile            |    1 +
 drivers/platform/mellanox/mlxbf_pka/Makefile  |   12 +
 .../mellanox/mlxbf_pka/mlxbf_pka_dev.c        |  481 ++++++++
 .../mellanox/mlxbf_pka/mlxbf_pka_dev.h        |  327 ++++++
 .../mellanox/mlxbf_pka/mlxbf_pka_drv.c        | 1016 +++++++++++++++++
 .../mellanox/mlxbf_pka/mlxbf_pka_ring.c       |  563 +++++++++
 .../mellanox/mlxbf_pka/mlxbf_pka_ring.h       |  255 +++++
 .../mellanox/mlxbf_pka/mlxbf_pka_trng.c       |  874 ++++++++++++++
 .../mellanox/mlxbf_pka/mlxbf_pka_trng.h       |  152 +++
 include/uapi/linux/mlxbf-pka.h                |  112 ++
 14 files changed, 3848 insertions(+)
 create mode 100644 Documentation/ABI/testing/sysfs-platform-mellanox-pka
 create mode 100644 drivers/platform/mellanox/mlxbf_pka/Makefile
 create mode 100644 drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_dev.c
 create mode 100644 drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_dev.h
 create mode 100644 drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_drv.c
 create mode 100644 drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_ring.c
 create mode 100644 drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_ring.h
 create mode 100644 drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_trng.c
 create mode 100644 drivers/platform/mellanox/mlxbf_pka/mlxbf_pka_trng.h
 create mode 100644 include/uapi/linux/mlxbf-pka.h

-- 
2.34.1


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ