| From: |
| Dennis Dalessandro <dennis.dalessandro-AT-cornelisnetworks.com> |
| To: |
| jgg-AT-ziepe.ca, leon-AT-kernel.org |
| Subject: |
| [PATCH v2 for-next 00/24] Migrate to hfi2 driver |
| Date: |
| Sat, 27 Jun 2026 12:24:54 -0400 |
| Message-ID: |
| <178257721001.371918.6610421101075283586.stgit@awdrv-04> |
| Cc: |
| Dean Luick <dean.luick-AT-cornelisnetworks.com>, Arnd Bergmann <arnd-AT-arndb.de>, Douglas Miller <doug.miller-AT-cornelisnetworks.com>, Breandan Cunningham <brendan.cunningham-AT-cornelisnetworks.com>, linux-rdma-AT-vger.kernel.org |
| Archive-link: |
| Article |
While sharing similar bones, the chip for the Cornelis Networks next
generation fabric technology has some fundamental differences that
resulted in a near complete re-write of the driver. It also does not
use the private cdev interface that the hfi1 driver exposes. After
discussing this with the RDMA maintainers we have decided to go with
the approach of moving to a new driver and declaring hfi1 obsolete.
It is desirable to keep hfi1 around temporarily to let user APIs
catch up to support access through the uverbs device rather than the
private hfi1 cdev.
This driver is designed to support future products as well.
This series applies on top of the rdma/for-next branch.
This series will be followed up to pick up any remaining changes from
hfi1 that were not yet incorporated in our internal development tree.
Changelogs in individual patches but the highligths are as follows…
Changes since v1:
- Broke up the large MAD and verbs patches that exceeded 3K LOC.
Machine-generated counter accessor functions are now separated
from real logic into their own patches (Leon Romanovsky).
- Removed all TODO stubs (e.g., jkr_handle_link_bounce()) that only
printed a warning. Cleaned up unnecessary casts, unused parameters,
and other minor style issues (Jason Gunthorpe).
- Removed dead declarations from system core headers, including
hfi2_cdev_cleanup() and similar functions that were declared but
never defined (Jason Gunthorpe).
- Modernized hfi2_rdma_mmap() to use the rdma_user_mmap_io /
rdma_user_mmap_entry infrastructure as required for new drivers
(Jason Gunthorpe).
- The opa_vnic removal was submitted as a separate independent
series per reviewer request (Leon Romanovsky).
- Replaced the writev-on-uverbs-fd approach with an anonymous
'hfi2-sdma' file descriptor returned via ioctl. The data path
write_iter is registered on the anonymous fd, avoiding any changes
to the uverbs core.
---
Dennis Dalessandro (24):
RDMA/hfi2: Start hfi2 driver by basing off of hfi1
RDMA/hfi2: Add in HW register definition files
RDMA/hfi2: Add counter accessor functions
RDMA/hfi2: Add in HW register access support
RDMA/hfi2: Add in trace header files
RDMA/hfi2: Add in trace support
RDMA/hfi2: Add system core header files
RDMA/hfi2: Add driver and interrupt infrastructure
RDMA/hfi2: Add initialization and firmware support
RDMA/hfi2: Add in MAD handling related headers
RDMA/hfi2: Add cport management
RDMA/hfi2: Implement MAD handling
RDMA/hfi2: Add IO related headers
RDMA/hfi2: Add PIO send infrastructure
RDMA/hfi2: Add SDMA infrastructure
RDMA/hfi2: Implement data moving infrastructure
RDMA/hfi2: Add verbs core
RDMA/hfi2: Add RC protocol support
RDMA/hfi2: Add in support for verbs
RDMA/hfi2: Add misc header files
RDMA/hfi2: Add the rest of the driver
RDMA/hfi2: Make it build and add TODO list
RDMA/hfi2: Modernize mmap to use rdma_user_mmap_entry infrastructure
RDMA/hfi2: Support ipoib
drivers/infiniband/hw/hfi1/Kconfig | 5 +-
drivers/infiniband/hw/hfi2/Kconfig | 32 +
drivers/infiniband/hw/hfi2/Makefile | 75 +
drivers/infiniband/hw/hfi2/TODO | 6 +
drivers/infiniband/hw/hfi2/affinity.c | 75 +
drivers/infiniband/hw/hfi2/affinity.h | 26 +
drivers/infiniband/hw/hfi2/chip.c | 12948 ++++++++++++++++
drivers/infiniband/hw/hfi2/chip.h | 1445 ++
drivers/infiniband/hw/hfi2/chip_counters.c | 4162 +++++
drivers/infiniband/hw/hfi2/chip_gen.c | 1151 ++
drivers/infiniband/hw/hfi2/chip_gen.h | 44 +
drivers/infiniband/hw/hfi2/chip_jkr.c | 1017 ++
drivers/infiniband/hw/hfi2/chip_jkr.h | 128 +
drivers/infiniband/hw/hfi2/chip_registers.h | 1301 ++
.../infiniband/hw/hfi2/chip_registers_jkr.h | 251 +
drivers/infiniband/hw/hfi2/common.h | 331 +
drivers/infiniband/hw/hfi2/cport.c | 1017 ++
drivers/infiniband/hw/hfi2/cport.h | 275 +
drivers/infiniband/hw/hfi2/cport_traps.h | 43 +
drivers/infiniband/hw/hfi2/debugfs.c | 1535 ++
drivers/infiniband/hw/hfi2/debugfs.h | 66 +
drivers/infiniband/hw/hfi2/driver.c | 1917 +++
drivers/infiniband/hw/hfi2/efivar.c | 139 +
drivers/infiniband/hw/hfi2/efivar.h | 17 +
drivers/infiniband/hw/hfi2/eprom.c | 451 +
drivers/infiniband/hw/hfi2/eprom.h | 11 +
drivers/infiniband/hw/hfi2/exp_rcv.c | 79 +
drivers/infiniband/hw/hfi2/exp_rcv.h | 157 +
drivers/infiniband/hw/hfi2/fault.c | 325 +
drivers/infiniband/hw/hfi2/fault.h | 70 +
drivers/infiniband/hw/hfi2/file_ops.c | 1168 ++
drivers/infiniband/hw/hfi2/file_ops.h | 49 +
drivers/infiniband/hw/hfi2/firmware.c | 2267 +++
drivers/infiniband/hw/hfi2/hfi2.h | 3461 +++++
drivers/infiniband/hw/hfi2/init.c | 2924 ++++
drivers/infiniband/hw/hfi2/intr.c | 296 +
drivers/infiniband/hw/hfi2/iowait.c | 129 +
drivers/infiniband/hw/hfi2/iowait.h | 458 +
drivers/infiniband/hw/hfi2/ipoib.h | 173 +
drivers/infiniband/hw/hfi2/ipoib_main.c | 252 +
drivers/infiniband/hw/hfi2/ipoib_rx.c | 93 +
drivers/infiniband/hw/hfi2/ipoib_tx.c | 872 ++
drivers/infiniband/hw/hfi2/mad.c | 6503 ++++++++
drivers/infiniband/hw/hfi2/mad.h | 441 +
drivers/infiniband/hw/hfi2/mmu_rb.c | 344 +
drivers/infiniband/hw/hfi2/mmu_rb.h | 78 +
drivers/infiniband/hw/hfi2/msix.c | 422 +
drivers/infiniband/hw/hfi2/msix.h | 32 +
drivers/infiniband/hw/hfi2/netdev.h | 94 +
drivers/infiniband/hw/hfi2/netdev_rx.c | 494 +
drivers/infiniband/hw/hfi2/opa_compat.h | 87 +
drivers/infiniband/hw/hfi2/opfn.c | 324 +
drivers/infiniband/hw/hfi2/opfn.h | 88 +
drivers/infiniband/hw/hfi2/pcie.c | 1444 ++
drivers/infiniband/hw/hfi2/pin_system.c | 539 +
drivers/infiniband/hw/hfi2/pinning.c | 66 +
drivers/infiniband/hw/hfi2/pinning.h | 74 +
drivers/infiniband/hw/hfi2/pio.c | 2241 +++
drivers/infiniband/hw/hfi2/pio.h | 307 +
drivers/infiniband/hw/hfi2/pio_copy.c | 733 +
drivers/infiniband/hw/hfi2/platform.c | 982 ++
drivers/infiniband/hw/hfi2/platform.h | 372 +
drivers/infiniband/hw/hfi2/qp.c | 1048 ++
drivers/infiniband/hw/hfi2/qp.h | 112 +
drivers/infiniband/hw/hfi2/qsfp.c | 788 +
drivers/infiniband/hw/hfi2/qsfp.h | 202 +
drivers/infiniband/hw/hfi2/rc.c | 3276 ++++
drivers/infiniband/hw/hfi2/rc.h | 60 +
drivers/infiniband/hw/hfi2/ruc.c | 622 +
drivers/infiniband/hw/hfi2/sdma.c | 3989 +++++
drivers/infiniband/hw/hfi2/sdma.h | 1209 ++
drivers/infiniband/hw/hfi2/sdma_defs.h | 113 +
drivers/infiniband/hw/hfi2/sdma_txreq.h | 105 +
drivers/infiniband/hw/hfi2/sriov.c | 418 +
drivers/infiniband/hw/hfi2/sriov.h | 34 +
drivers/infiniband/hw/hfi2/sysfs.c | 878 ++
drivers/infiniband/hw/hfi2/tid_rdma.c | 5485 +++++++
drivers/infiniband/hw/hfi2/tid_rdma.h | 321 +
drivers/infiniband/hw/hfi2/tid_system.c | 481 +
drivers/infiniband/hw/hfi2/trace.c | 536 +
drivers/infiniband/hw/hfi2/trace.h | 26 +
drivers/infiniband/hw/hfi2/trace_ctxts.h | 116 +
drivers/infiniband/hw/hfi2/trace_dbg.h | 119 +
drivers/infiniband/hw/hfi2/trace_ibhdrs.h | 458 +
drivers/infiniband/hw/hfi2/trace_iowait.h | 55 +
drivers/infiniband/hw/hfi2/trace_misc.h | 109 +
drivers/infiniband/hw/hfi2/trace_mmu.h | 73 +
drivers/infiniband/hw/hfi2/trace_pin.h | 201 +
drivers/infiniband/hw/hfi2/trace_rc.h | 126 +
drivers/infiniband/hw/hfi2/trace_rx.h | 112 +
drivers/infiniband/hw/hfi2/trace_tid.h | 1687 ++
drivers/infiniband/hw/hfi2/trace_tx.h | 1187 ++
drivers/infiniband/hw/hfi2/uc.c | 543 +
drivers/infiniband/hw/hfi2/ud.c | 1037 ++
drivers/infiniband/hw/hfi2/user_exp_rcv.c | 1014 ++
drivers/infiniband/hw/hfi2/user_exp_rcv.h | 404 +
drivers/infiniband/hw/hfi2/user_pages.c | 106 +
drivers/infiniband/hw/hfi2/user_sdma.c | 1671 ++
drivers/infiniband/hw/hfi2/user_sdma.h | 261 +
drivers/infiniband/hw/hfi2/uverbs.c | 798 +
drivers/infiniband/hw/hfi2/uverbs.h | 39 +
drivers/infiniband/hw/hfi2/verbs.c | 2034 +++
drivers/infiniband/hw/hfi2/verbs.h | 463 +
drivers/infiniband/hw/hfi2/verbs_txreq.c | 101 +
drivers/infiniband/hw/hfi2/verbs_txreq.h | 98 +
drivers/infiniband/hw/hfi2/vf2pf.c | 1106 ++
drivers/infiniband/hw/hfi2/vf2pf.h | 54 +
drivers/infiniband/hw/hfi2/vf2pf_int.h | 181 +
drivers/infiniband/hw/hfi2/vf2pf_lb.c | 967 ++
drivers/infiniband/hw/hfi2/vf2pf_lb.h | 52 +
drivers/infiniband/sw/rdmavt/mmap.c | 7 +-
include/uapi/rdma/hfi2-abi.h | 678 +
include/uapi/rdma/ib_user_ioctl_verbs.h | 47 +-
113 files changed, 92484 insertions(+), 29 deletions(-)
create mode 100644 drivers/infiniband/hw/hfi2/Kconfig
create mode 100644 drivers/infiniband/hw/hfi2/Makefile
create mode 100644 drivers/infiniband/hw/hfi2/TODO
create mode 100644 drivers/infiniband/hw/hfi2/affinity.c
create mode 100644 drivers/infiniband/hw/hfi2/affinity.h
create mode 100644 drivers/infiniband/hw/hfi2/chip.c
create mode 100644 drivers/infiniband/hw/hfi2/chip.h
create mode 100644 drivers/infiniband/hw/hfi2/chip_counters.c
create mode 100644 drivers/infiniband/hw/hfi2/chip_gen.c
create mode 100644 drivers/infiniband/hw/hfi2/chip_gen.h
create mode 100644 drivers/infiniband/hw/hfi2/chip_jkr.c
create mode 100644 drivers/infiniband/hw/hfi2/chip_jkr.h
create mode 100644 drivers/infiniband/hw/hfi2/chip_registers.h
create mode 100644 drivers/infiniband/hw/hfi2/chip_registers_jkr.h
create mode 100644 drivers/infiniband/hw/hfi2/common.h
create mode 100644 drivers/infiniband/hw/hfi2/cport.c
create mode 100644 drivers/infiniband/hw/hfi2/cport.h
create mode 100644 drivers/infiniband/hw/hfi2/cport_traps.h
create mode 100644 drivers/infiniband/hw/hfi2/debugfs.c
create mode 100644 drivers/infiniband/hw/hfi2/debugfs.h
create mode 100644 drivers/infiniband/hw/hfi2/driver.c
create mode 100644 drivers/infiniband/hw/hfi2/efivar.c
create mode 100644 drivers/infiniband/hw/hfi2/efivar.h
create mode 100644 drivers/infiniband/hw/hfi2/eprom.c
create mode 100644 drivers/infiniband/hw/hfi2/eprom.h
create mode 100644 drivers/infiniband/hw/hfi2/exp_rcv.c
create mode 100644 drivers/infiniband/hw/hfi2/exp_rcv.h
create mode 100644 drivers/infiniband/hw/hfi2/fault.c
create mode 100644 drivers/infiniband/hw/hfi2/fault.h
create mode 100644 drivers/infiniband/hw/hfi2/file_ops.c
create mode 100644 drivers/infiniband/hw/hfi2/file_ops.h
create mode 100644 drivers/infiniband/hw/hfi2/firmware.c
create mode 100644 drivers/infiniband/hw/hfi2/hfi2.h
create mode 100644 drivers/infiniband/hw/hfi2/init.c
create mode 100644 drivers/infiniband/hw/hfi2/intr.c
create mode 100644 drivers/infiniband/hw/hfi2/iowait.c
create mode 100644 drivers/infiniband/hw/hfi2/iowait.h
create mode 100644 drivers/infiniband/hw/hfi2/ipoib.h
create mode 100644 drivers/infiniband/hw/hfi2/ipoib_main.c
create mode 100644 drivers/infiniband/hw/hfi2/ipoib_rx.c
create mode 100644 drivers/infiniband/hw/hfi2/ipoib_tx.c
create mode 100644 drivers/infiniband/hw/hfi2/mad.c
create mode 100644 drivers/infiniband/hw/hfi2/mad.h
create mode 100644 drivers/infiniband/hw/hfi2/mmu_rb.c
create mode 100644 drivers/infiniband/hw/hfi2/mmu_rb.h
create mode 100644 drivers/infiniband/hw/hfi2/msix.c
create mode 100644 drivers/infiniband/hw/hfi2/msix.h
create mode 100644 drivers/infiniband/hw/hfi2/netdev.h
create mode 100644 drivers/infiniband/hw/hfi2/netdev_rx.c
create mode 100644 drivers/infiniband/hw/hfi2/opa_compat.h
create mode 100644 drivers/infiniband/hw/hfi2/opfn.c
create mode 100644 drivers/infiniband/hw/hfi2/opfn.h
create mode 100644 drivers/infiniband/hw/hfi2/pcie.c
create mode 100644 drivers/infiniband/hw/hfi2/pin_system.c
create mode 100644 drivers/infiniband/hw/hfi2/pinning.c
create mode 100644 drivers/infiniband/hw/hfi2/pinning.h
create mode 100644 drivers/infiniband/hw/hfi2/pio.c
create mode 100644 drivers/infiniband/hw/hfi2/pio.h
create mode 100644 drivers/infiniband/hw/hfi2/pio_copy.c
create mode 100644 drivers/infiniband/hw/hfi2/platform.c
create mode 100644 drivers/infiniband/hw/hfi2/platform.h
create mode 100644 drivers/infiniband/hw/hfi2/qp.c
create mode 100644 drivers/infiniband/hw/hfi2/qp.h
create mode 100644 drivers/infiniband/hw/hfi2/qsfp.c
create mode 100644 drivers/infiniband/hw/hfi2/qsfp.h
create mode 100644 drivers/infiniband/hw/hfi2/rc.c
create mode 100644 drivers/infiniband/hw/hfi2/rc.h
create mode 100644 drivers/infiniband/hw/hfi2/ruc.c
create mode 100644 drivers/infiniband/hw/hfi2/sdma.c
create mode 100644 drivers/infiniband/hw/hfi2/sdma.h
create mode 100644 drivers/infiniband/hw/hfi2/sdma_defs.h
create mode 100644 drivers/infiniband/hw/hfi2/sdma_txreq.h
create mode 100644 drivers/infiniband/hw/hfi2/sriov.c
create mode 100644 drivers/infiniband/hw/hfi2/sriov.h
create mode 100644 drivers/infiniband/hw/hfi2/sysfs.c
create mode 100644 drivers/infiniband/hw/hfi2/tid_rdma.c
create mode 100644 drivers/infiniband/hw/hfi2/tid_rdma.h
create mode 100644 drivers/infiniband/hw/hfi2/tid_system.c
create mode 100644 drivers/infiniband/hw/hfi2/trace.c
create mode 100644 drivers/infiniband/hw/hfi2/trace.h
create mode 100644 drivers/infiniband/hw/hfi2/trace_ctxts.h
create mode 100644 drivers/infiniband/hw/hfi2/trace_dbg.h
create mode 100644 drivers/infiniband/hw/hfi2/trace_ibhdrs.h
create mode 100644 drivers/infiniband/hw/hfi2/trace_iowait.h
create mode 100644 drivers/infiniband/hw/hfi2/trace_misc.h
create mode 100644 drivers/infiniband/hw/hfi2/trace_mmu.h
create mode 100644 drivers/infiniband/hw/hfi2/trace_pin.h
create mode 100644 drivers/infiniband/hw/hfi2/trace_rc.h
create mode 100644 drivers/infiniband/hw/hfi2/trace_rx.h
create mode 100644 drivers/infiniband/hw/hfi2/trace_tid.h
create mode 100644 drivers/infiniband/hw/hfi2/trace_tx.h
create mode 100644 drivers/infiniband/hw/hfi2/uc.c
create mode 100644 drivers/infiniband/hw/hfi2/ud.c
create mode 100644 drivers/infiniband/hw/hfi2/user_exp_rcv.c
create mode 100644 drivers/infiniband/hw/hfi2/user_exp_rcv.h
create mode 100644 drivers/infiniband/hw/hfi2/user_pages.c
create mode 100644 drivers/infiniband/hw/hfi2/user_sdma.c
create mode 100644 drivers/infiniband/hw/hfi2/user_sdma.h
create mode 100644 drivers/infiniband/hw/hfi2/uverbs.c
create mode 100644 drivers/infiniband/hw/hfi2/uverbs.h
create mode 100644 drivers/infiniband/hw/hfi2/verbs.c
create mode 100644 drivers/infiniband/hw/hfi2/verbs.h
create mode 100644 drivers/infiniband/hw/hfi2/verbs_txreq.c
create mode 100644 drivers/infiniband/hw/hfi2/verbs_txreq.h
create mode 100644 drivers/infiniband/hw/hfi2/vf2pf.c
create mode 100644 drivers/infiniband/hw/hfi2/vf2pf.h
create mode 100644 drivers/infiniband/hw/hfi2/vf2pf_int.h
create mode 100644 drivers/infiniband/hw/hfi2/vf2pf_lb.c
create mode 100644 drivers/infiniband/hw/hfi2/vf2pf_lb.h
create mode 100644 include/uapi/rdma/hfi2-abi.h
--
-Denny