diff options
| author | Dave Airlie <[email protected]> | 2010-08-02 10:05:18 +1000 | 
|---|---|---|
| committer | Dave Airlie <[email protected]> | 2010-08-02 10:05:24 +1000 | 
| commit | d656ae53f64cb0f01dac8a02c4d31453d64ef97c (patch) | |
| tree | cf641d4e5828b8f7c430b42657237c5daf9571fd /drivers/infiniband/hw/qib/qib_init.c | |
| parent | 167ffc44caaee68ea60dadf6931a4d195a4ed1f0 (diff) | |
| parent | b37fa16e78d6f9790462b3181602a26b5af36260 (diff) | |
Merge tag 'v2.6.35-rc6' into drm-radeon-next
Need this to avoid conflicts with future radeon fixes
Diffstat (limited to 'drivers/infiniband/hw/qib/qib_init.c')
| -rw-r--r-- | drivers/infiniband/hw/qib/qib_init.c | 21 | 
1 files changed, 20 insertions, 1 deletions
diff --git a/drivers/infiniband/hw/qib/qib_init.c b/drivers/infiniband/hw/qib/qib_init.c index 9b40f345ac3f..a873dd596e81 100644 --- a/drivers/infiniband/hw/qib/qib_init.c +++ b/drivers/infiniband/hw/qib/qib_init.c @@ -1059,7 +1059,7 @@ static int __init qlogic_ib_init(void)  		goto bail_dev;  	} -	qib_cq_wq = create_workqueue("qib_cq"); +	qib_cq_wq = create_singlethread_workqueue("qib_cq");  	if (!qib_cq_wq) {  		ret = -ENOMEM;  		goto bail_wq; @@ -1289,8 +1289,18 @@ static int __devinit qib_init_one(struct pci_dev *pdev,  	if (qib_mini_init || initfail || ret) {  		qib_stop_timers(dd); +		flush_scheduled_work();  		for (pidx = 0; pidx < dd->num_pports; ++pidx)  			dd->f_quiet_serdes(dd->pport + pidx); +		if (qib_mini_init) +			goto bail; +		if (!j) { +			(void) qibfs_remove(dd); +			qib_device_remove(dd); +		} +		if (!ret) +			qib_unregister_ib_device(dd); +		qib_postinit_cleanup(dd);  		if (initfail)  			ret = initfail;  		goto bail; @@ -1472,6 +1482,9 @@ int qib_setup_eagerbufs(struct qib_ctxtdata *rcd)  		dma_addr_t pa = rcd->rcvegrbuf_phys[chunk];  		unsigned i; +		/* clear for security and sanity on each use */ +		memset(rcd->rcvegrbuf[chunk], 0, size); +  		for (i = 0; e < egrcnt && i < egrperchunk; e++, i++) {  			dd->f_put_tid(dd, e + egroff +  					  (u64 __iomem *) @@ -1499,6 +1512,12 @@ bail:  	return -ENOMEM;  } +/* + * Note: Changes to this routine should be mirrored + * for the diagnostics routine qib_remap_ioaddr32(). + * There is also related code for VL15 buffers in qib_init_7322_variables(). + * The teardown code that unmaps is in qib_pcie_ddcleanup() + */  int init_chip_wc_pat(struct qib_devdata *dd, u32 vl15buflen)  {  	u64 __iomem *qib_kregbase = NULL;  |