[openib-general] abi_version file not created on SLES9SP3 or RHEL4U4

Woodruff, Robert J robert.j.woodruff at intel.com
Fri Jan 19 11:06:56 PST 2007


Steve wrote,
>Sean,

>I'm testing the latest ofed_1_2 code on RHEL4U4 and SLES9SP3.  After
>loading the rdma_ucm module, there isn't a abi_version file installed
>in /sys/class/misc/rdma_cm.  There is no error logged from the ucma so
I
>_think_ it created the file ok in ucma_init(). 

>Have you seen this?  

I ran into the same problem when backporting Sean's latest
multicast+sa_cache
branches to EL4.

This backport patch can be applied to sean's latest code to
allow it to work on EL4.
I also had to make other fixes to get Sean latest code base to work on
EL4
My complete backport patch set is located in my directory on the open
fabrics
server under, 
/home/woody/ofa_patches_and_backports/trunk/kernel/backports/EL4-U4


diff -Naurp linux-2.6.9/drivers/infiniband/core/ucma.c
linux-2.6.9-openib-drivers-git011107-fixups/drivers/infiniband/core/ucma
.c
--- linux-2.6.9/drivers/infiniband/core/ucma.c  2007-01-11
15:54:57.000000000 -0800
+++
linux-2.6.9-openib-drivers-git011107-fixups/drivers/infiniband/core/ucma
.c  2007-01-12 13:19:15.000000000 -0800
@@ -1034,13 +1034,13 @@ static struct miscdevice ucma_misc = {
        .fops   = &ucma_fops,
 };

-static ssize_t show_abi_version(struct device *dev,
-                               struct device_attribute *attr,
-                               char *buf)
+static struct class *ucma_class;
+static ssize_t show_abi_version(struct class *class_dev, char *buf)
 {
-       return sprintf(buf, "%d\n", RDMA_USER_CM_ABI_VERSION);
+        return sprintf(buf, "%d\n", RDMA_USER_CM_ABI_VERSION);
 }
-static DEVICE_ATTR(abi_version, S_IRUGO, show_abi_version, NULL);
+static CLASS_ATTR(abi_version, S_IRUGO, show_abi_version, NULL);
+

 static int __init ucma_init(void)
 {
@@ -1050,22 +1050,28 @@ static int __init ucma_init(void)
        if (ret)
                return ret;

-       ret = device_create_file(ucma_misc.this_device,
&dev_attr_abi_version);
-       if (ret) {
-               printk(KERN_ERR "rdma_ucm: couldn't create abi_version
attr\n");
-               goto err;
-       }
-       return 0;
+        ucma_class = class_create(THIS_MODULE, "infiniband_ucma");
+        if (IS_ERR(ucma_class)) {
+                printk(KERN_ERR "rdma_ucm: couldn't create class
infiniband_ucma\n");
+                goto err;
+        }
+
+        ret = class_create_file(ucma_class, &class_attr_abi_version);
+        if (ret) {
+                printk(KERN_ERR "user_verbs: couldn't create
abi_version attribute\n");
+                goto err;
+        }
+
+        return 0;
 err:
-       misc_deregister(&ucma_misc);
-       return ret;
+        misc_deregister(&ucma_misc);
+        return ret;
 }

+
 static void __exit ucma_cleanup(void)
 {
-       device_remove_file(ucma_misc.this_device,
&dev_attr_abi_version);
        misc_deregister(&ucma_misc);
-       idr_destroy(&ctx_idr);
 }

 module_init(ucma_init); 




More information about the general mailing list