diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-07-22 14:50:12 -0700 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-07-22 14:50:12 -0700 | 
| commit | ece236ce2fad9c27a6fd2530f899289025194bce (patch) | |
| tree | 474b793205872206a2a3f7d409ff9b1f81f3a9a8 /drivers/infiniband/hw/qib/qib_file_ops.c | |
| parent | 441c196e84b11aad3123baa9320eee7abc6b5c98 (diff) | |
| parent | 4460207561290c3be7e6c7538f22690028170c1d (diff) | |
| download | olio-linux-3.10-ece236ce2fad9c27a6fd2530f899289025194bce.tar.xz olio-linux-3.10-ece236ce2fad9c27a6fd2530f899289025194bce.zip  | |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband: (26 commits)
  IB/qib: Defer HCA error events to tasklet
  mlx4_core: Bump the driver version to 1.0
  RDMA/cxgb4: Use printk_ratelimited() instead of printk_ratelimit()
  IB/mlx4: Support PMA counters for IBoE
  IB/mlx4: Use flow counters on IBoE ports
  IB/pma: Add include file for IBA performance counters definitions
  mlx4_core: Add network flow counters
  mlx4_core: Fix location of counter index in QP context struct
  mlx4_core: Read extended capabilities into the flags field
  mlx4_core: Extend capability flags to 64 bits
  IB/mlx4: Generate GID change events in IBoE code
  IB/core: Add GID change event
  RDMA/cma: Don't allow IPoIB port space for IBoE
  RDMA: Allow for NULL .modify_device() and .modify_port() methods
  IB/qib: Update active link width
  IB/qib: Fix potential deadlock with link down interrupt
  IB/qib: Add sysfs interface to read free contexts
  IB/mthca: Remove unnecessary read of PCI_CAP_ID_EXP
  IB/qib: Remove double define
  IB/qib: Remove unnecessary read of PCI_CAP_ID_EXP
  ...
Diffstat (limited to 'drivers/infiniband/hw/qib/qib_file_ops.c')
| -rw-r--r-- | drivers/infiniband/hw/qib/qib_file_ops.c | 16 | 
1 files changed, 9 insertions, 7 deletions
diff --git a/drivers/infiniband/hw/qib/qib_file_ops.c b/drivers/infiniband/hw/qib/qib_file_ops.c index 406fca50d03..26253039d2c 100644 --- a/drivers/infiniband/hw/qib/qib_file_ops.c +++ b/drivers/infiniband/hw/qib/qib_file_ops.c @@ -1527,6 +1527,7 @@ done_chk_sdma:  		struct qib_filedata *fd = fp->private_data;  		const struct qib_ctxtdata *rcd = fd->rcd;  		const struct qib_devdata *dd = rcd->dd; +		unsigned int weight;  		if (dd->flags & QIB_HAS_SEND_DMA) {  			fd->pq = qib_user_sdma_queue_create(&dd->pcidev->dev, @@ -1545,8 +1546,8 @@ done_chk_sdma:  		 * it just means that sooner or later we don't recommend  		 * a cpu, and let the scheduler do it's best.  		 */ -		if (!ret && cpus_weight(current->cpus_allowed) >= -		    qib_cpulist_count) { +		weight = cpumask_weight(tsk_cpus_allowed(current)); +		if (!ret && weight >= qib_cpulist_count) {  			int cpu;  			cpu = find_first_zero_bit(qib_cpulist,  						  qib_cpulist_count); @@ -1554,13 +1555,13 @@ done_chk_sdma:  				__set_bit(cpu, qib_cpulist);  				fd->rec_cpu_num = cpu;  			} -		} else if (cpus_weight(current->cpus_allowed) == 1 && -			test_bit(first_cpu(current->cpus_allowed), +		} else if (weight == 1 && +			test_bit(cpumask_first(tsk_cpus_allowed(current)),  				 qib_cpulist))  			qib_devinfo(dd->pcidev, "%s PID %u affinity "  				    "set to cpu %d; already allocated\n",  				    current->comm, current->pid, -				    first_cpu(current->cpus_allowed)); +				    cpumask_first(tsk_cpus_allowed(current)));  	}  	mutex_unlock(&qib_mutex); @@ -1904,8 +1905,9 @@ int qib_set_uevent_bits(struct qib_pportdata *ppd, const int evtbit)  	struct qib_ctxtdata *rcd;  	unsigned ctxt;  	int ret = 0; +	unsigned long flags; -	spin_lock(&ppd->dd->uctxt_lock); +	spin_lock_irqsave(&ppd->dd->uctxt_lock, flags);  	for (ctxt = ppd->dd->first_user_ctxt; ctxt < ppd->dd->cfgctxts;  	     ctxt++) {  		rcd = ppd->dd->rcd[ctxt]; @@ -1924,7 +1926,7 @@ int qib_set_uevent_bits(struct qib_pportdata *ppd, const int evtbit)  		ret = 1;  		break;  	} -	spin_unlock(&ppd->dd->uctxt_lock); +	spin_unlock_irqrestore(&ppd->dd->uctxt_lock, flags);  	return ret;  }  |