~ubuntu-branches/ubuntu/trusty/linux-lts-vivid/trusty-proposed

« back to all changes in this revision

Viewing changes to drivers/infiniband/hw/qib/qib_verbs.c

  • Committer: Package Import Robot
  • Author(s): Luis Henriques, Kamal Mostafa, K. Y. Srinivasan
  • Date: 2015-11-23 13:24:32 UTC
  • Revision ID: package-import@ubuntu.com-20151123132432-903xk653el60bfun
[ Kamal Mostafa ]

* Release Tracking Bug
  - LP: #1518519

[ K. Y. Srinivasan ]

* SAUCE: Drivers: hv: vmbus: Fix a Host signaling bug
  - LP: #1508706

Show diffs side-by-side

added added

removed removed

Lines of Context:
40
40
#include <linux/rculist.h>
41
41
#include <linux/mm.h>
42
42
#include <linux/random.h>
 
43
#include <linux/vmalloc.h>
43
44
 
44
45
#include "qib.h"
45
46
#include "qib_common.h"
2086
2087
         * the LKEY).  The remaining bits act as a generation number or tag.
2087
2088
         */
2088
2089
        spin_lock_init(&dev->lk_table.lock);
 
2090
        /* insure generation is at least 4 bits see keys.c */
 
2091
        if (ib_qib_lkey_table_size > MAX_LKEY_TABLE_BITS) {
 
2092
                qib_dev_warn(dd, "lkey bits %u too large, reduced to %u\n",
 
2093
                        ib_qib_lkey_table_size, MAX_LKEY_TABLE_BITS);
 
2094
                ib_qib_lkey_table_size = MAX_LKEY_TABLE_BITS;
 
2095
        }
2089
2096
        dev->lk_table.max = 1 << ib_qib_lkey_table_size;
2090
2097
        lk_tab_size = dev->lk_table.max * sizeof(*dev->lk_table.table);
2091
2098
        dev->lk_table.table = (struct qib_mregion __rcu **)
2092
 
                __get_free_pages(GFP_KERNEL, get_order(lk_tab_size));
 
2099
                vmalloc(lk_tab_size);
2093
2100
        if (dev->lk_table.table == NULL) {
2094
2101
                ret = -ENOMEM;
2095
2102
                goto err_lk;
2262
2269
                                        sizeof(struct qib_pio_header),
2263
2270
                                  dev->pio_hdrs, dev->pio_hdrs_phys);
2264
2271
err_hdrs:
2265
 
        free_pages((unsigned long) dev->lk_table.table, get_order(lk_tab_size));
 
2272
        vfree(dev->lk_table.table);
2266
2273
err_lk:
2267
2274
        kfree(dev->qp_table);
2268
2275
err_qpt:
2316
2323
                                        sizeof(struct qib_pio_header),
2317
2324
                                  dev->pio_hdrs, dev->pio_hdrs_phys);
2318
2325
        lk_tab_size = dev->lk_table.max * sizeof(*dev->lk_table.table);
2319
 
        free_pages((unsigned long) dev->lk_table.table,
2320
 
                   get_order(lk_tab_size));
 
2326
        vfree(dev->lk_table.table);
2321
2327
        kfree(dev->qp_table);
2322
2328
}
2323
2329