[ofw] RE: [PATCH] Add uverbs version
Reuven Amitai
reuven at mellanox.co.il
Wed Mar 26 09:27:09 PDT 2008
Hi,
I have reversed the uvp version setting. How about it now ?
Reuven.
Index: core/al/user/ual_ca.c
===================================================================
--- core/al/user/ual_ca.c (revision 992)
+++ core/al/user/ual_ca.c (working copy)
@@ -64,6 +64,7 @@
ual_get_uvp_name_ioctl_t al_ioctl;
uintn_t bytes_ret;
cl_status_t cl_status;
+ ib_api_status_t ib_status;
void *h_lib;
uvp_get_interface_t pfn_uvp_ifc;
@@ -131,7 +132,17 @@
}
/* Query the vendor-supported user-mode functions */
- pfn_uvp_ifc( &p_vca_intf->user_verbs );
+ p_vca_intf->user_verbs.version = UVERBS_VERSION;
+
+ ib_status = pfn_uvp_ifc( &p_vca_intf->user_verbs );
+ if (ib_status == IB_UNSUPPORTED)
+ {
+ al_unload_uvp( h_lib );
+ AL_PRINT_EXIT(TRACE_LEVEL_ERROR ,AL_DBG_CA,
+ ("Unsupported uvp interface version, expected =
0x%x\n", UVERBS_VERSION));
+ return IB_UNSUPPORTED;
+ }
+
p_vca_intf->h_uvp_lib = h_lib;
AL_EXIT( AL_DBG_CA );
return IB_SUCCESS;
Index: hw/mthca/user/mlnx_ual_main.c
===================================================================
--- hw/mthca/user/mlnx_ual_main.c (revision 992)
+++ hw/mthca/user/mlnx_ual_main.c (working copy)
@@ -143,7 +143,9 @@
/*
* Version of the header file this interface export can handle
*/
- p_uvp->version = 0x101;
+ if (p_uvp->version != UVERBS_VERSION)
+ return IB_UNSUPPORTED;
+
p_uvp->guid = 0x12345678;
/*
Index: inc/user/iba/ib_uvp.h
===================================================================
--- inc/user/iba/ib_uvp.h (revision 992)
+++ inc/user/iba/ib_uvp.h (working copy)
@@ -116,6 +116,17 @@
*
*/
+/*
+ * Version that identifies this version of the header file for
interface
+ * definition.
+ */
+#define UVERBS_MAJOR_VER (0x0002)
+#define UVERBS_MINOR_VER (0x0000)
+
+#define UVERBS_VERSION (((UVERBS_MAJOR_VER) << 16) |
(UVERBS_MINOR_VER))
+#define MK_UVERBS_VERSION(maj,min) ((((maj) & 0xFFFF) << 16) | \
+ ((min) & 0xFFFF))
+
/******/
/******/
@@ -3469,6 +3480,8 @@
* The registration is successful.
* IB_INSUFFICIENT_MEMORY
* Insufficient memory to satisfy request
+* IB_UNSUPPORTED
+* The interface version requested is not supported
*
* PORTABILITY
* User mode
________________________________
From: Fab Tillier [mailto:ftillier at windows.microsoft.com]
Sent: Wednesday, March 26, 2008 9:42 AM
To: Reuven Amitai; ofw at lists.openfabrics.org
Subject: RE: [PATCH] Add uverbs version
Hi Reuven,
The version needs to be supplied as input to the UVP, before it fills
the interface structure. Imagine a call into a version 2 UVP with a
version 1 interface that's smaller than the V2 interface. The UVP would
fill it as if it was a V2 interface and overrun the buffer.
Version should be set in the interface before calling open_vendor_lib,
and the UVP should check that it's an interface that it supports and
fill in the appropriate one. This also allows the UVP to support
multiple interfaces.
Cheers,
-Fab
From: ofw-bounces at lists.openfabrics.org
[mailto:ofw-bounces at lists.openfabrics.org] On Behalf Of Reuven Amitai
Sent: Wednesday, March 26, 2008 12:39 AM
To: ofw at lists.openfabrics.org
Subject: [ofw] [PATCH] Add uverbs version
Hi,
The patch adds version to uvp interface the same way the kvp has (
inc\iba\ib_ci.h ).
It also adds checking for the returned version of the uvp.
comments / suggestions are welcome.
Reuven.
Index: core/al/user/ual_ci_ca.c
===================================================================
--- core/al/user/ual_ci_ca.c (revision 992)
+++ core/al/user/ual_ci_ca.c (working copy)
@@ -162,6 +162,17 @@
add_ci_ca( p_ci_ca );
open_vendor_lib( ca_guid, &p_ci_ca->verbs );
+ /* Check vendor lib version */
+ if (p_ci_ca->verbs.user_verbs.version != UVERBS_VERSION)
+ {
+ p_ci_ca->obj.pfn_destroy( &p_ci_ca->obj, NULL );
+ AL_PRINT(TRACE_LEVEL_ERROR ,AL_DBG_ERROR,
+ ("Unsupported uvp interface version, "
+ "expected = 0x%x, actual = 0x%x.\n",
+ UVERBS_VERSION, p_ci_ca->verbs.user_verbs.version) );
+ return IB_UNSUPPORTED;
+ }
+
/* Now open the UAL CA to be assigned to p_ci_ca */
status = ib_open_ca( h_al, ca_guid, ca_event_cb, p_ci_ca,
&p_ci_ca->h_ca );
Index: hw/mthca/user/mlnx_ual_main.c
===================================================================
--- hw/mthca/user/mlnx_ual_main.c (revision 992)
+++ hw/mthca/user/mlnx_ual_main.c (working copy)
@@ -143,7 +143,7 @@
/*
* Version of the header file this interface export can handle
*/
- p_uvp->version = 0x101;
+ p_uvp->version = UVERBS_VERSION;
p_uvp->guid = 0x12345678;
/*
Index: inc/user/iba/ib_uvp.h
===================================================================
--- inc/user/iba/ib_uvp.h (revision 992)
+++ inc/user/iba/ib_uvp.h (working copy)
@@ -116,6 +116,17 @@
*
*/
+/*
+ * Version that identifies this version of the header file for
interface
+ * definition.
+ */
+#define UVERBS_MAJOR_VER (0x0002)
+#define UVERBS_MINOR_VER (0x0000)
+
+#define UVERBS_VERSION (((UVERBS_MAJOR_VER) << 16) |
(UVERBS_MINOR_VER))
+#define MK_UVERBS_VERSION(maj,min) ((((maj) & 0xFFFF) << 16) | \
+ ((min) & 0xFFFF))
+
/******/
/******/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openfabrics.org/pipermail/ofw/attachments/20080326/8d136691/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: uverbs_version.patch
Type: application/octet-stream
Size: 2251 bytes
Desc: uverbs_version.patch
URL: <http://lists.openfabrics.org/pipermail/ofw/attachments/20080326/8d136691/attachment.obj>
More information about the ofw
mailing list