From 78683c25c80e54bf3e8015fdfb8cba2fcd03daa5 Mon Sep 17 00:00:00 2001 From: Konstantin Taranov Date: Mon, 20 Jan 2025 09:27:07 -0800 Subject: 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 Link: https://patch.msgid.link/1737394039-28772-2-git-send-email-kotaranov@linux.microsoft.com Reviewed-by: Shiraz Saleem Reviewed-by: Long Li Signed-off-by: Leon Romanovsky --- include/net/mana/gdma.h | 1 + 1 file changed, 1 insertion(+) (limited to 'include/net/mana') diff --git a/include/net/mana/gdma.h b/include/net/mana/gdma.h index 90f56656b572..03e1b257953e 100644 --- a/include/net/mana/gdma.h +++ b/include/net/mana/gdma.h @@ -775,6 +775,7 @@ struct gdma_destroy_dma_region_req { enum gdma_pd_flags { GDMA_PD_FLAG_INVALID = 0, + GDMA_PD_FLAG_ALLOW_GPA_MR = 1, }; struct gdma_create_pd_req { -- cgit v1.2.3 From 6e1b8bdcd04f4e84c924489e2f837cf620002b69 Mon Sep 17 00:00:00 2001 From: Konstantin Taranov Date: Mon, 20 Jan 2025 09:27:08 -0800 Subject: RDMA/mana_ib: implement get_dma_mr Implement allocation of DMA-mapped memory regions. Signed-off-by: Konstantin Taranov Link: https://patch.msgid.link/1737394039-28772-3-git-send-email-kotaranov@linux.microsoft.com Reviewed-by: Shiraz Saleem Reviewed-by: Long Li Signed-off-by: Leon Romanovsky --- include/net/mana/gdma.h | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'include/net/mana') diff --git a/include/net/mana/gdma.h b/include/net/mana/gdma.h index 03e1b257953e..a94b04ea926f 100644 --- a/include/net/mana/gdma.h +++ b/include/net/mana/gdma.h @@ -801,6 +801,11 @@ struct gdma_destory_pd_resp { };/* HW DATA */ enum gdma_mr_type { + /* + * Guest Physical Address - MRs of this type allow access + * to any DMA-mapped memory using bus-logical address + */ + GDMA_MR_TYPE_GPA = 1, /* Guest Virtual Address - MRs of this type allow access * to memory mapped by PTEs associated with this MR using a virtual * address that is set up in the MST -- cgit v1.2.3 From bad4480934c8227d8a03b6b76e276349506b2bfe Mon Sep 17 00:00:00 2001 From: Shiraz Saleem Date: Wed, 5 Feb 2025 02:35:12 -0800 Subject: 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 Signed-off-by: Konstantin Taranov Link: https://patch.msgid.link/1738751713-16169-2-git-send-email-kotaranov@linux.microsoft.com Signed-off-by: Leon Romanovsky --- include/net/mana/gdma.h | 1 + 1 file changed, 1 insertion(+) (limited to 'include/net/mana') diff --git a/include/net/mana/gdma.h b/include/net/mana/gdma.h index a94b04ea926f..50ffbc408346 100644 --- a/include/net/mana/gdma.h +++ b/include/net/mana/gdma.h @@ -152,6 +152,7 @@ struct gdma_general_req { #define GDMA_MESSAGE_V1 1 #define GDMA_MESSAGE_V2 2 #define GDMA_MESSAGE_V3 3 +#define GDMA_MESSAGE_V4 4 struct gdma_general_resp { struct gdma_resp_hdr hdr; -- cgit v1.2.3 From a8445cfec101c42e9d64cdb2dac13973b22c205c Mon Sep 17 00:00:00 2001 From: Long Li Date: Wed, 12 Mar 2025 16:15:31 -0700 Subject: net: mana: Change the function signature of mana_get_primary_netdev_rcu Change mana_get_primary_netdev_rcu() to mana_get_primary_netdev(), and return the ndev with refcount held. The caller is responsible for dropping the refcount. Also drop the check for IFF_SLAVE as it is not necessary if the upper device is present. Signed-off-by: Long Li Link: https://patch.msgid.link/1741821332-9392-1-git-send-email-longli@linuxonhyperv.com Signed-off-by: Leon Romanovsky --- include/net/mana/mana.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'include/net/mana') diff --git a/include/net/mana/mana.h b/include/net/mana/mana.h index 0d00b24eacaf..0f78065de8fe 100644 --- a/include/net/mana/mana.h +++ b/include/net/mana/mana.h @@ -827,5 +827,7 @@ int mana_cfg_vport(struct mana_port_context *apc, u32 protection_dom_id, u32 doorbell_pg_id); void mana_uncfg_vport(struct mana_port_context *apc); -struct net_device *mana_get_primary_netdev_rcu(struct mana_context *ac, u32 port_index); +struct net_device *mana_get_primary_netdev(struct mana_context *ac, + u32 port_index, + netdevice_tracker *tracker); #endif /* _MANA_H */ -- cgit v1.2.3