Konstantin Taranov
d4293f96ce
RDMA/mana_ib: unify mana_ib functions to support any gdma device
...
Use the installed gdma_device instead of hard-coded device
in requests to the HW.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://patch.msgid.link/1746633545-17653-4-git-send-email-kotaranov@linux.microsoft.com
Reviewed-by: Long Li <longli@microsoft.com >
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-05-12 06:44:52 -04:00
Konstantin Taranov
c390828d4d
RDMA/mana_ib: Add support of mana_ib for RNIC and ETH nic
...
Allow mana_ib to be created over ethernet gdma device and
over rnic gdma device. The HW has two devices with different
capabilities and different use-cases. Initialize required
resources depending on the used gdma device.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://patch.msgid.link/1746633545-17653-3-git-send-email-kotaranov@linux.microsoft.com
Reviewed-by: Long Li <longli@microsoft.com >
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-05-12 06:44:52 -04:00
Konstantin Taranov
f1652d76f4
RDMA/mana_ib: Add support of 4M, 1G, and 2G pages
...
Check PF capability flag whether the 4M, 1G, and 2G pages are
supported. Add these pages sizes to mana_ib, if supported.
Define possible page sizes in enum gdma_page_type and
remove unused enum atb_page_size.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://patch.msgid.link/1744621234-26114-4-git-send-email-kotaranov@linux.microsoft.com
Reviewed-by: Long Li <longli@microsoft.com >
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-04-20 06:36:26 -04:00
Linus Torvalds
092e335082
Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma
...
Pull rdma updates from Jason Gunthorpe:
- Usual minor updates and fixes for bnxt_re, hfi1, rxe, mana, iser,
mlx5, vmw_pvrdma, hns
- Make rxe work on tun devices
- mana gains more standard verbs as it moves toward supporting
in-kernel verbs
- DMABUF support for mana
- Fix page size calculations when memory registration exceeds 4G
- On Demand Paging support for rxe
- mlx5 support for RDMA TRANSPORT flow tables and a new ucap mechanism
to access control use of them
- Optional RDMA_TX/RX counters per QP in mlx5
* tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma: (73 commits)
IB/mad: Check available slots before posting receive WRs
RDMA/mana_ib: Fix integer overflow during queue creation
RDMA/mlx5: Fix calculation of total invalidated pages
RDMA/mlx5: Fix mlx5_poll_one() cur_qp update flow
RDMA/mlx5: Fix page_size variable overflow
RDMA/mlx5: Drop access_flags from _mlx5_mr_cache_alloc()
RDMA/mlx5: Fix cache entry update on dereg error
RDMA/mlx5: Fix MR cache initialization error flow
RDMA/mlx5: Support optional-counters binding for QPs
RDMA/mlx5: Compile fs.c regardless of INFINIBAND_USER_ACCESS config
RDMA/core: Pass port to counter bind/unbind operations
RDMA/core: Add support to optional-counters binding configuration
RDMA/core: Create and destroy rdma_counter using rdma_zalloc_drv_obj()
RDMA/mlx5: Add optional counters for RDMA_TX/RX_packets/bytes
RDMA/core: Fix use-after-free when rename device name
RDMA/bnxt_re: Support perf management counters
RDMA/rxe: Fix incorrect return value of rxe_odp_atomic_op()
RDMA/uverbs: Propagate errors from rdma_lookup_get_uobject()
RDMA/mana_ib: Handle net event for pointing to the current netdev
net: mana: Change the function signature of mana_get_primary_netdev_rcu
...
2025-03-29 11:12:28 -07:00
Kees Bakker
be35a3127d
RDMA/mana_ib: Ensure variable err is initialized
...
In the function mana_ib_gd_create_dma_region if there are no dma blocks
to process the variable `err` remains uninitialized.
Fixes: 0266a17763 ("RDMA/mana_ib: Add a driver for Microsoft Azure Network Adapter")
Signed-off-by: Kees Bakker <kees@ijzerbout.nl >
Link: https://patch.msgid.link/20250221195833.7516C16290A@bout3.ijzerbout.nl
Reviewed-by: Long Li <longli@microsoft.com >
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-02-23 06:27:52 -05:00
Konstantin Taranov
29b7bb9823
RDMA/mana_ib: Allocate PAGE aligned doorbell index
...
Allocate a PAGE aligned doorbell index to ensure each process gets a
separate PAGE sized doorbell area space remapped to it in mana_ib_mmap
Fixes: 0266a17763 ("RDMA/mana_ib: Add a driver for Microsoft Azure Network Adapter")
Signed-off-by: Shiraz Saleem <shirazsaleem@microsoft.com >
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://patch.msgid.link/1738751405-15041-1-git-send-email-kotaranov@linux.microsoft.com
Reviewed-by: Long Li <longli@microsoft.com >
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-02-06 04:03:10 -05:00
Konstantin Taranov
cd3c5ddf82
RDMA/mana_ib: request error CQEs when supported
...
Request an adapter with error CQEs when it is supported.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://patch.msgid.link/1738751713-16169-3-git-send-email-kotaranov@linux.microsoft.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-02-06 03:51:13 -05:00
Shiraz Saleem
bad4480934
RDMA/mana_ib: Query feature_flags bitmask from FW
...
Extend the mana_ib_gd_query_adapter_caps function to retrieve and store
the feature_flags from the firmware response.
Signed-off-by: Shiraz Saleem <shirazsaleem@microsoft.com >
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://patch.msgid.link/1738751713-16169-2-git-send-email-kotaranov@linux.microsoft.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-02-06 03:51:13 -05:00
Konstantin Taranov
6c53bf9cff
RDMA/mana_ib: indicate CM support
...
Set max_mad_size and IB_PORT_CM_SUP capability
to enable connection manager.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://patch.msgid.link/1737394039-28772-14-git-send-email-kotaranov@linux.microsoft.com
Reviewed-by: Shiraz Saleem <shirazsaleem@microsoft.com >
Reviewed-by: Long Li <longli@microsoft.com >
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-02-04 08:27:03 -05:00
Konstantin Taranov
8001e9257e
RDMA/mana_ib: extend mana QP table
...
Enable mana QP table to store UD/GSI QPs.
For send queues, set the most significant bit to one,
as send and receive WQs can have the same ID in mana.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://patch.msgid.link/1737394039-28772-12-git-send-email-kotaranov@linux.microsoft.com
Reviewed-by: Shiraz Saleem <shirazsaleem@microsoft.com >
Reviewed-by: Long Li <longli@microsoft.com >
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-02-04 08:27:03 -05:00
Konstantin Taranov
7f5192a82b
RDMA/mana_ib: Create and destroy UD/GSI QP
...
Implement HW requests to create and destroy UD/GSI QPs.
An UD/GSI QP has send and receive queues.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://patch.msgid.link/1737394039-28772-6-git-send-email-kotaranov@linux.microsoft.com
Reviewed-by: Shiraz Saleem <shirazsaleem@microsoft.com >
Reviewed-by: Long Li <longli@microsoft.com >
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-02-04 08:27:03 -05:00
Konstantin Taranov
1440bdbd9c
RDMA/mana_ib: helpers to allocate kernel queues
...
Introduce helpers to allocate queues for kernel-level use.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://patch.msgid.link/1737394039-28772-4-git-send-email-kotaranov@linux.microsoft.com
Reviewed-by: Shiraz Saleem <shirazsaleem@microsoft.com >
Reviewed-by: Long Li <longli@microsoft.com >
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-02-04 08:27:03 -05:00
Konstantin Taranov
78683c25c8
RDMA/mana_ib: Allow registration of DMA-mapped memory in PDs
...
Allow the HW to register DMA-mapped memory for kernel-level PDs.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://patch.msgid.link/1737394039-28772-2-git-send-email-kotaranov@linux.microsoft.com
Reviewed-by: Shiraz Saleem <shirazsaleem@microsoft.com >
Reviewed-by: Long Li <longli@microsoft.com >
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2025-02-03 06:56:19 -05:00
Long Li
4a3b99bc04
RDMA/mana_ib: use the correct page size for mapping user-mode doorbell page
...
When mapping doorbell page from user-mode, the driver should use the system
page size as this memory is allocated via mmap() from user-mode.
Cc: stable@vger.kernel.org
Fixes: 0266a17763 ("RDMA/mana_ib: Add a driver for Microsoft Azure Network Adapter")
Signed-off-by: Long Li <longli@microsoft.com >
Link: https://patch.msgid.link/1725030993-16213-2-git-send-email-longli@linuxonhyperv.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2024-09-02 10:32:08 +03:00
Long Li
9e517a8e9d
RDMA/mana_ib: use the correct page table index based on hardware page size
...
MANA hardware uses 4k page size. When calculating the page table index,
it should use the hardware page size, not the system page size.
Cc: stable@vger.kernel.org
Fixes: 0266a17763 ("RDMA/mana_ib: Add a driver for Microsoft Azure Network Adapter")
Signed-off-by: Long Li <longli@microsoft.com >
Link: https://patch.msgid.link/1725030993-16213-1-git-send-email-longli@linuxonhyperv.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2024-09-02 10:32:08 +03:00
Konstantin Taranov
2a1251e3db
RDMA/mana_ib: Process QP error events in mana_ib
...
Process QP fatal events from the error event queue.
For that, find the QP, using QPN from the event, and then call its
event_handler. To find the QPs, store created RC QPs in an xarray.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://lore.kernel.org/r/1717754897-19858-1-git-send-email-kotaranov@linux.microsoft.com
Reviewed-by: Wei Hu <weh@microsoft.com >
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2024-06-09 13:46:44 +03:00
Konstantin Taranov
c8683b995d
RDMA/mana_ib: extend query device
...
Fill in properties of the ib device.
Order the assignment in the order of fields in the struct ib_device_attr.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://lore.kernel.org/r/1717070117-1234-3-git-send-email-kotaranov@linux.microsoft.com
Reviewed-by: Long Li <longli@microsoft.com >
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2024-06-02 11:50:15 +03:00
Konstantin Taranov
53657a0419
RDMA/mana_ib: Create and destroy RC QP
...
Implement HW requests to create and destroy an RC QP.
An RC QP may have 5 queues.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://lore.kernel.org/r/1716366242-558-2-git-send-email-kotaranov@linux.microsoft.com
Reviewed-by: Long Li <longli@microsoft.com >
Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev >
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2024-05-30 15:26:57 +03:00
Konstantin Taranov
5843415916
RDMA/mana_ib: create and destroy RNIC cqs
...
Implement RNIC requests for creation and destruction of RNIC CQs.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://lore.kernel.org/r/1714137160-5222-3-git-send-email-kotaranov@linux.microsoft.com
Reviewed-by: Long Li <longli@microsoft.com >
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2024-05-05 15:27:23 +03:00
Konstantin Taranov
e73c882f0a
RDMA/mana_ib: create EQs for RNIC CQs
...
Create EQs within mana_ib device. Such EQs are required
for creation of RNIC CQs.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://lore.kernel.org/r/1714137160-5222-2-git-send-email-kotaranov@linux.microsoft.com
Reviewed-by: Long Li <longli@microsoft.com >
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2024-05-05 15:27:23 +03:00
Konstantin Taranov
8859f009ac
RDMA/mana_ib: Configure mac address in RNIC
...
Set local mac address in RNIC, which is required by the HW.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://lore.kernel.org/r/1712738551-22075-7-git-send-email-kotaranov@linux.microsoft.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2024-04-16 14:28:26 +03:00
Konstantin Taranov
faafb8b126
RDMA/mana_ib: Adding and deleting GIDs
...
Implement add_gid and del_gid for RNIC.
IPv4 and IPv6 addresses are supported.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://lore.kernel.org/r/1712738551-22075-6-git-send-email-kotaranov@linux.microsoft.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2024-04-16 14:28:26 +03:00
Konstantin Taranov
8b184e4f1c
RDMA/mana_ib: Enable RoCE on port 1
...
Set netdev and RoCEv2 flag to enable GID population on port 1.
Use GIDs of the master netdev. As mc->ports[] stores slave devices,
use a helper to get the master netdev.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://lore.kernel.org/r/1712738551-22075-5-git-send-email-kotaranov@linux.microsoft.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2024-04-16 14:28:26 +03:00
Konstantin Taranov
4bda1d5332
RDMA/mana_ib: Implement port parameters
...
Implement port parameters for RNIC:
1) extend query_port() method
2) implement get_link_layer()
3) implement query_pkey()
Only port 1 can store GIDs.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://lore.kernel.org/r/1712738551-22075-4-git-send-email-kotaranov@linux.microsoft.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2024-04-16 14:28:26 +03:00
Konstantin Taranov
1a79c2b9d4
RDMA/mana_ib: Create and destroy rnic adapter
...
Add functions for RNIC creation and destruction.
If creation fails, the ib_probe fails as well.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://lore.kernel.org/r/1712738551-22075-3-git-send-email-kotaranov@linux.microsoft.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2024-04-16 14:28:26 +03:00
Konstantin Taranov
98b889c439
RDMA/mana_ib: Add EQ creation for rnic adapter
...
Create an error EQ for the RNIC adapter.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://lore.kernel.org/r/1712738551-22075-2-git-send-email-kotaranov@linux.microsoft.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2024-04-16 14:28:26 +03:00
Konstantin Taranov
c8fc935f4b
RDMA/mana_ib: remove useless return values from dbg prints
...
Remove printing ret value on success as it was always 0.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://lore.kernel.org/r/1712672465-29960-1-git-send-email-kotaranov@linux.microsoft.com
Reviewed-by: Long Li <longli@microsoft.com >
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2024-04-11 14:30:24 +03:00
Konstantin Taranov
46f5be7cd4
RDMA/mana_ib: Introduce helpers to create and destroy mana queues
...
Intoduce helpers to work with mana ib queues (struct mana_ib_queue).
A queue always consists of umem, gdma_region, and id.
A queue can become a WQ or a CQ.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://lore.kernel.org/r/1711483688-24358-2-git-send-email-kotaranov@linux.microsoft.com
Reviewed-by: Long Li <longli@microsoft.com >
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2024-04-02 11:30:22 +03:00
Konstantin Taranov
2d5c008157
RDMA/mana_ib: Use virtual address in dma regions for MRs
...
Introduce mana_ib_create_dma_region() to create dma regions with iova
for MRs. It allows creating MRs with any page offset. Previously,
only page-aligned addresses worked.
For dma regions that must have a zero dma offset (e.g., for queues),
mana_ib_create_zero_offset_dma_region() is added.
To get the zero offset, ib_umem_find_best_pgoff() is used with zero
pgoff_bitmask.
Fixes: 0266a17763 ("RDMA/mana_ib: Add a driver for Microsoft Azure Network Adapter")
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://lore.kernel.org/r/1709560361-26393-3-git-send-email-kotaranov@linux.microsoft.com
Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev >
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2024-03-07 11:32:33 +02:00
Konstantin Taranov
e02497fb65
RDMA/mana_ib: Fix bug in creation of dma regions
...
Use ib_umem_dma_offset() helper to calculate correct dma offset.
Fixes: 0266a17763 ("RDMA/mana_ib: Add a driver for Microsoft Azure Network Adapter")
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://lore.kernel.org/r/1709560361-26393-2-git-send-email-kotaranov@linux.microsoft.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2024-03-07 11:32:33 +02:00
Konstantin Taranov
3b73eb3a4a
RDMA/mana_ib: Introduce mana_ib_get_netdev helper function
...
Use a helper function to access netdevs using a port number.
This patch removes code repetitions as well as removes the need
to explicitly use gdma_dev, which was error-prone.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://lore.kernel.org/r/1705965781-3235-3-git-send-email-kotaranov@linux.microsoft.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2024-01-25 12:03:07 +02:00
Konstantin Taranov
71c8cbfcdc
RDMA/mana_ib: Introduce mdev_to_gc helper function
...
Use a helper function to access gdma_context from mana_ib_dev.
This patch removes code repetitions as well as removes the need
to explicitly use gdma_dev, which was error-prone.
Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com >
Link: https://lore.kernel.org/r/1705965781-3235-2-git-send-email-kotaranov@linux.microsoft.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2024-01-25 12:03:00 +02:00
Long Li
2c20e20b22
RDMA/mana_ib: query device capabilities
...
With RDMA device registered, use it to query on hardware capabilities and
cache this information for future query requests to the driver.
Signed-off-by: Long Li <longli@microsoft.com >
Link: https://lore.kernel.org/r/1702692255-23640-3-git-send-email-longli@linuxonhyperv.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2023-12-20 10:25:40 +02:00
Long Li
a7f0636d22
RDMA/mana_ib: register RDMA device with GDMA
...
Software client needs to register with the RDMA management interface on
the SoC to access more features, including querying device capabilities
and RC queue pair.
Signed-off-by: Long Li <longli@microsoft.com >
Link: https://lore.kernel.org/r/1702692255-23640-2-git-send-email-longli@linuxonhyperv.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2023-12-20 10:25:40 +02:00
Long Li
89d42b8c85
RDMA/mana_ib: Fix a bug when the PF indicates more entries for registering memory on first packet
...
When registering memory in a large chunk that doesn't fit into a single PF
message, the PF may return GDMA_STATUS_MORE_ENTRIES on the first message if
there are more messages needed for registering more chunks.
Fix the VF to make it process the correct return code.
Fixes: 0266a17763 ("RDMA/mana_ib: Add a driver for Microsoft Azure Network Adapter")
Link: https://lore.kernel.org/r/1676507522-21018-1-git-send-email-longli@linuxonhyperv.com
Signed-off-by: Long Li <longli@microsoft.com >
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com >
2023-02-16 12:03:16 -04:00
Long Li
0266a17763
RDMA/mana_ib: Add a driver for Microsoft Azure Network Adapter
...
Add a RDMA VF driver for Microsoft Azure Network Adapter (MANA).
Co-developed-by: Ajay Sharma <sharmaajay@microsoft.com >
Signed-off-by: Ajay Sharma <sharmaajay@microsoft.com >
Reviewed-by: Dexuan Cui <decui@microsoft.com >
Signed-off-by: Long Li <longli@microsoft.com >
Link: https://lore.kernel.org/r/1667502990-2559-13-git-send-email-longli@linuxonhyperv.com
Signed-off-by: Leon Romanovsky <leon@kernel.org >
2022-11-11 11:40:09 +02:00