[ofw] RE: [PATCH] mthca patch [1/2] - vstat uplink info print
Reuven Amitai
reuven at mellanox.co.il
Sun Apr 13 03:57:24 PDT 2008
Hi,
This is more clean version of the patch.
The uplink info print was nothing due to pointer wrong location.
ca_attr buffer layout demands PTR_ALIGN of every field of vendor
specific, (after the mandatory fields of ca_attr).
Reuven.
Index: hw/mthca/kernel/hca_verbs.c
===================================================================
--- hw/mthca/kernel/hca_verbs.c (revision 1047)
+++ hw/mthca/kernel/hca_verbs.c (working copy)
@@ -43,7 +43,6 @@
#include "mx_abi.h"
#include "mt_pa_cash.h"
-#define PTR_ALIGN(size) (((size) + sizeof(void*) - 1) &
~(sizeof(void*) - 1))
// Local declarations
Index: inc/mthca/mthca_vc.h
===================================================================
--- inc/mthca/mthca_vc.h (revision 1047)
+++ inc/mthca/mthca_vc.h (working copy)
@@ -33,6 +33,8 @@
#ifndef MTHCA_VC_H
#define MTHCA_VC_H
+#define PTR_ALIGN(size) (((size) + sizeof(void*) - 1) &
~(sizeof(void*) - 1))
+
typedef
struct _map_crspace {
unsigned __int64 va; /* address of CRSPACE, mapped to
user space */
@@ -78,12 +80,12 @@
inline char* mthca_get_board_id(ib_ca_attr_t *ca_attr)
{
- return (char*)(ca_attr)+(ca_attr->size - MTHCA_BRD_ID_LEN -
sizeof(uplink_info_t));
+ return (char*)(ca_attr) + (ca_attr->size -
PTR_ALIGN(MTHCA_BRD_ID_LEN) - PTR_ALIGN(sizeof(uplink_info_t)));
}
inline void* mthca_get_uplink_info(ib_ca_attr_t *ca_attr)
{
- return (char*)(ca_attr)+(ca_attr->size - sizeof(uplink_info_t));
+ return (char*)(ca_attr) + (ca_attr->size -
PTR_ALIGN(sizeof(uplink_info_t)));
}
#endif
________________________________
From: Sean Hefty [mailto:sean.hefty at intel.com]
Sent: Thursday, April 10, 2008 9:26 PM
To: Leonid Keller; Fab Tillier; Reuven Amitai; ofw at lists.openfabrics.org
Subject: RE: [ofw] RE: [PATCH] mthca patch [1/2]
Just committing is not the right process to follow. This should not be
committed until the issue that Fab pointed out is addressed. The size
is being rounded down, which at least to me looks like the returned
pointers are referencing the wrong memory.
>From what you say, this fixes a print. Why is there a rush to commit a
patch just for a print?
________________________________
From: ofw-bounces at lists.openfabrics.org
[mailto:ofw-bounces at lists.openfabrics.org] On Behalf Of Leonid Keller
Sent: Wednesday, April 09, 2008 11:59 PM
To: Fab Tillier; Reuven Amitai; ofw at lists.openfabrics.org
Subject: RE: [ofw] RE: [PATCH] mthca patch [1/2]
Hi Fab,
This patch fixes printing of uplink information in VSTAT and i'm going
to commit it now, because it improves the current state.
But really all the implementation of vendor-specific information in
query_ca is bad.
We need to define a structure, describing all that info and to work with
names, not calculated offsets.
We'll put it on our todo list.
________________________________
From: ofw-bounces at lists.openfabrics.org
[mailto:ofw-bounces at lists.openfabrics.org] On Behalf Of Fab Tillier
Sent: Wednesday, April 09, 2008 7:44 PM
To: Reuven Amitai; ofw at lists.openfabrics.org
Subject: [ofw] RE: [PATCH] mthca patch [1/2]
Hi Reuven,
What is the problem with the alignment? The board ID is a
character string, so shouldn't need any special alignment. Also, you
are rounding the size down - is that the right thing to do?
What is the layout of the ca_attr buffer, and what are the
alignment requirements for the different structures appended to the end?
Is MTHCA_BRD_ID_LEN going to cause the uplink info to be
aligned?
Thanks,
-Fab
From: ofw-bounces at lists.openfabrics.org
[mailto:ofw-bounces at lists.openfabrics.org] On Behalf Of Reuven Amitai
Sent: Wednesday, April 09, 2008 6:04 AM
To: ofw at lists.openfabrics.org
Subject: [ofw] [PATCH] mthca patch [1/2]
Hi,
The following patch align the returned address.
Thanks, Reuven.
Index: inc/mthca/mthca_vc.h
===================================================================
--- inc/mthca/mthca_vc.h (revision 1047)
+++ inc/mthca/mthca_vc.h (working copy)
@@ -78,12 +78,18 @@
inline char* mthca_get_board_id(ib_ca_attr_t *ca_attr)
{
- return (char*)(ca_attr)+(ca_attr->size - MTHCA_BRD_ID_LEN -
sizeof(uplink_info_t));
+ int size = (ca_attr->size - MTHCA_BRD_ID_LEN -
sizeof(uplink_info_t));
+ size &= ~(sizeof(void*) - 1);
+
+ return (char*)(ca_attr)+ size;
}
inline void* mthca_get_uplink_info(ib_ca_attr_t *ca_attr)
{
- return (char*)(ca_attr)+(ca_attr->size -
sizeof(uplink_info_t));
+ int size = (ca_attr->size - sizeof(uplink_info_t));
+ size &= ~(sizeof(void*) - 1);
+
+ return (char*)(ca_attr)+ size;
}
#endif
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openfabrics.org/pipermail/ofw/attachments/20080413/3ef7115f/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: mthca_vc.patch
Type: application/octet-stream
Size: 1319 bytes
Desc: mthca_vc.patch
URL: <http://lists.openfabrics.org/pipermail/ofw/attachments/20080413/3ef7115f/attachment.obj>
More information about the ofw
mailing list