]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/staging/rdma/hfi1/file_ops.c
staging: rdma: hfi1: Prefer using BIT Macro
[karo-tx-linux.git] / drivers / staging / rdma / hfi1 / file_ops.c
index 469861750b762a86960495c03932cb1be964b7de..cbaf4f734add78be1e5dbd63ac5d2c7f2c4e09e9 100644 (file)
@@ -168,7 +168,7 @@ enum mmap_types {
        HFI1_MMAP_TOKEN_SET(TYPE, type) | \
        HFI1_MMAP_TOKEN_SET(CTXT, ctxt) | \
        HFI1_MMAP_TOKEN_SET(SUBCTXT, subctxt) | \
-       HFI1_MMAP_TOKEN_SET(OFFSET, ((unsigned long)addr & ~PAGE_MASK)))
+       HFI1_MMAP_TOKEN_SET(OFFSET, (offset_in_page(addr))))
 
 #define EXP_TID_SET(field, value)                      \
        (((value) & EXP_TID_TID##field##_MASK) <<       \
@@ -508,7 +508,7 @@ static int hfi1_file_mmap(struct file *fp, struct vm_area_struct *vma)
        case PIO_BUFS_SOP:
                memaddr = ((dd->physaddr + TXE_PIO_SEND) +
                                /* chip pio base */
-                          (uctxt->sc->hw_context * (1 << 16))) +
+                          (uctxt->sc->hw_context * BIT(16))) +
                                /* 64K PIO space / ctxt */
                        (type == PIO_BUFS_SOP ?
                                (TXE_PIO_SIZE / 2) : 0); /* sop? */
@@ -1181,6 +1181,7 @@ static int get_ctxt_info(struct file *fp, void __user *ubase, __u32 len)
        struct hfi1_filedata *fd = fp->private_data;
        int ret = 0;
 
+       memset(&cinfo, 0, sizeof(cinfo));
        ret = hfi1_get_base_kinfo(uctxt, &cinfo);
        if (ret < 0)
                goto done;
@@ -1334,9 +1335,9 @@ static int get_base_info(struct file *fp, void __user *ubase, __u32 len)
         */
        binfo.user_regbase = HFI1_MMAP_TOKEN(UREGS, uctxt->ctxt,
                                            subctxt_fp(fp), 0);
-       offset = ((((uctxt->ctxt - dd->first_user_ctxt) *
+       offset = offset_in_page((((uctxt->ctxt - dd->first_user_ctxt) *
                    HFI1_MAX_SHARED_CTXTS) + subctxt_fp(fp)) *
-                 sizeof(*dd->events)) & ~PAGE_MASK;
+                 sizeof(*dd->events));
        binfo.events_bufbase = HFI1_MMAP_TOKEN(EVENTS, uctxt->ctxt,
                                              subctxt_fp(fp),
                                              offset);
@@ -1572,7 +1573,7 @@ static int exp_tid_setup(struct file *fp, struct hfi1_tid_info *tinfo)
 
        vaddr = tinfo->vaddr;
 
-       if (vaddr & ~PAGE_MASK) {
+       if (offset_in_page(vaddr)) {
                ret = -EINVAL;
                goto bail;
        }
@@ -2065,6 +2066,7 @@ static const struct file_operations ui_file_ops = {
        .open = ui_open,
        .release = ui_release,
 };
+
 #define UI_OFFSET 192  /* device minor offset for UI devices */
 static int create_ui = 1;
 
@@ -2089,14 +2091,16 @@ static int user_add(struct hfi1_devdata *dd)
 
        if (atomic_inc_return(&user_count) == 1) {
                ret = hfi1_cdev_init(0, class_name(), &hfi1_file_ops,
-                                    &wildcard_cdev, &wildcard_device);
+                                    &wildcard_cdev, &wildcard_device,
+                                    true);
                if (ret)
                        goto done;
        }
 
        snprintf(name, sizeof(name), "%s_%d", class_name(), dd->unit);
        ret = hfi1_cdev_init(dd->unit + 1, name, &hfi1_file_ops,
-                            &dd->user_cdev, &dd->user_device);
+                            &dd->user_cdev, &dd->user_device,
+                            true);
        if (ret)
                goto done;
 
@@ -2104,7 +2108,8 @@ static int user_add(struct hfi1_devdata *dd)
                snprintf(name, sizeof(name),
                         "%s_ui%d", class_name(), dd->unit);
                ret = hfi1_cdev_init(dd->unit + UI_OFFSET, name, &ui_file_ops,
-                                    &dd->ui_cdev, &dd->ui_device);
+                                    &dd->ui_cdev, &dd->ui_device,
+                                    false);
                if (ret)
                        goto done;
        }