dect
/
linux-2.6
Archived
13
0
Fork 0

IB/qib: checkpatch fixes

Elminate some simple_strto* usage.

checkpatch also noted pr_ conversations, which have been done as
recommended.  The pr_fmt() define is used to shorten line length.

Other multi-line string warnings are also elmininated.

Reviewed-by: Dean Luick <dean.luick@intel.com>
Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
This commit is contained in:
Mike Marciniszyn 2012-07-19 13:04:25 +00:00 committed by Roland Dreier
parent 36a8f01cd2
commit 7fac33014f
16 changed files with 394 additions and 380 deletions

View File

@ -1,6 +1,6 @@
/* /*
* Copyright (c) 2010 QLogic Corporation. All rights reserved. * Copyright (c) 2012 Intel Corporation. All rights reserved.
* Copyright (c) 2006, 2007, 2008, 2009 QLogic Corporation. All rights reserved. * Copyright (c) 2006 - 2012 QLogic Corporation. All rights reserved.
* Copyright (c) 2003, 2004, 2005, 2006 PathScale, Inc. All rights reserved. * Copyright (c) 2003, 2004, 2005, 2006 PathScale, Inc. All rights reserved.
* *
* This software is available to you under a choice of one of two * This software is available to you under a choice of one of two
@ -53,6 +53,9 @@
#include "qib.h" #include "qib.h"
#include "qib_common.h" #include "qib_common.h"
#undef pr_fmt
#define pr_fmt(fmt) QIB_DRV_NAME ": " fmt
/* /*
* Each client that opens the diag device must read then write * Each client that opens the diag device must read then write
* offset 0, to prevent lossage from random cat or od. diag_state * offset 0, to prevent lossage from random cat or od. diag_state
@ -598,8 +601,8 @@ static ssize_t qib_diagpkt_write(struct file *fp,
} }
tmpbuf = vmalloc(plen); tmpbuf = vmalloc(plen);
if (!tmpbuf) { if (!tmpbuf) {
qib_devinfo(dd->pcidev, "Unable to allocate tmp buffer, " qib_devinfo(dd->pcidev,
"failing\n"); "Unable to allocate tmp buffer, failing\n");
ret = -ENOMEM; ret = -ENOMEM;
goto bail; goto bail;
} }
@ -693,7 +696,7 @@ int qib_register_observer(struct qib_devdata *dd,
ret = -ENOMEM; ret = -ENOMEM;
olp = vmalloc(sizeof *olp); olp = vmalloc(sizeof *olp);
if (!olp) { if (!olp) {
printk(KERN_ERR QIB_DRV_NAME ": vmalloc for observer failed\n"); pr_err("vmalloc for observer failed\n");
goto bail; goto bail;
} }
if (olp) { if (olp) {

View File

@ -764,8 +764,9 @@ int qib_reset_device(int unit)
qib_devinfo(dd->pcidev, "Reset on unit %u requested\n", unit); qib_devinfo(dd->pcidev, "Reset on unit %u requested\n", unit);
if (!dd->kregbase || !(dd->flags & QIB_PRESENT)) { if (!dd->kregbase || !(dd->flags & QIB_PRESENT)) {
qib_devinfo(dd->pcidev, "Invalid unit number %u or " qib_devinfo(dd->pcidev,
"not initialized or not present\n", unit); "Invalid unit number %u or not initialized or not present\n",
unit);
ret = -ENXIO; ret = -ENXIO;
goto bail; goto bail;
} }
@ -802,11 +803,13 @@ int qib_reset_device(int unit)
else else
ret = -EAGAIN; ret = -EAGAIN;
if (ret) if (ret)
qib_dev_err(dd, "Reinitialize unit %u after " qib_dev_err(dd,
"reset failed with %d\n", unit, ret); "Reinitialize unit %u after reset failed with %d\n",
unit, ret);
else else
qib_devinfo(dd->pcidev, "Reinitialized unit %u after " qib_devinfo(dd->pcidev,
"resetting\n", unit); "Reinitialized unit %u after resetting\n",
unit);
bail: bail:
return ret; return ret;

View File

@ -1,5 +1,6 @@
/* /*
* Copyright (c) 2006, 2007, 2008, 2009 QLogic Corporation. All rights reserved. * Copyright (c) 2012 Intel Corporation. All rights reserved.
* Copyright (c) 2006 - 2012 QLogic Corporation. All rights reserved.
* Copyright (c) 2003, 2004, 2005, 2006 PathScale, Inc. All rights reserved. * Copyright (c) 2003, 2004, 2005, 2006 PathScale, Inc. All rights reserved.
* *
* This software is available to you under a choice of one of two * This software is available to you under a choice of one of two
@ -160,10 +161,9 @@ void qib_get_eeprom_info(struct qib_devdata *dd)
if (oguid > bguid[7]) { if (oguid > bguid[7]) {
if (bguid[6] == 0xff) { if (bguid[6] == 0xff) {
if (bguid[5] == 0xff) { if (bguid[5] == 0xff) {
qib_dev_err(dd, "Can't set %s GUID" qib_dev_err(dd,
" from base, wraps to" "Can't set %s GUID from base, wraps to OUI!\n",
" OUI!\n", qib_get_unit_name(t));
qib_get_unit_name(t));
dd->base_guid = 0; dd->base_guid = 0;
goto bail; goto bail;
} }
@ -182,8 +182,9 @@ void qib_get_eeprom_info(struct qib_devdata *dd)
len = sizeof(struct qib_flash); len = sizeof(struct qib_flash);
buf = vmalloc(len); buf = vmalloc(len);
if (!buf) { if (!buf) {
qib_dev_err(dd, "Couldn't allocate memory to read %u " qib_dev_err(dd,
"bytes from eeprom for GUID\n", len); "Couldn't allocate memory to read %u bytes from eeprom for GUID\n",
len);
goto bail; goto bail;
} }
@ -201,23 +202,25 @@ void qib_get_eeprom_info(struct qib_devdata *dd)
csum = flash_csum(ifp, 0); csum = flash_csum(ifp, 0);
if (csum != ifp->if_csum) { if (csum != ifp->if_csum) {
qib_devinfo(dd->pcidev, "Bad I2C flash checksum: " qib_devinfo(dd->pcidev,
"0x%x, not 0x%x\n", csum, ifp->if_csum); "Bad I2C flash checksum: 0x%x, not 0x%x\n",
csum, ifp->if_csum);
goto done; goto done;
} }
if (*(__be64 *) ifp->if_guid == cpu_to_be64(0) || if (*(__be64 *) ifp->if_guid == cpu_to_be64(0) ||
*(__be64 *) ifp->if_guid == ~cpu_to_be64(0)) { *(__be64 *) ifp->if_guid == ~cpu_to_be64(0)) {
qib_dev_err(dd, "Invalid GUID %llx from flash; ignoring\n", qib_dev_err(dd,
*(unsigned long long *) ifp->if_guid); "Invalid GUID %llx from flash; ignoring\n",
*(unsigned long long *) ifp->if_guid);
/* don't allow GUID if all 0 or all 1's */ /* don't allow GUID if all 0 or all 1's */
goto done; goto done;
} }
/* complain, but allow it */ /* complain, but allow it */
if (*(u64 *) ifp->if_guid == 0x100007511000000ULL) if (*(u64 *) ifp->if_guid == 0x100007511000000ULL)
qib_devinfo(dd->pcidev, "Warning, GUID %llx is " qib_devinfo(dd->pcidev,
"default, probably not correct!\n", "Warning, GUID %llx is default, probably not correct!\n",
*(unsigned long long *) ifp->if_guid); *(unsigned long long *) ifp->if_guid);
bguid = ifp->if_guid; bguid = ifp->if_guid;
if (!bguid[0] && !bguid[1] && !bguid[2]) { if (!bguid[0] && !bguid[1] && !bguid[2]) {
@ -260,8 +263,9 @@ void qib_get_eeprom_info(struct qib_devdata *dd)
memcpy(dd->serial, ifp->if_serial, memcpy(dd->serial, ifp->if_serial,
sizeof ifp->if_serial); sizeof ifp->if_serial);
if (!strstr(ifp->if_comment, "Tested successfully")) if (!strstr(ifp->if_comment, "Tested successfully"))
qib_dev_err(dd, "Board SN %s did not pass functional " qib_dev_err(dd,
"test: %s\n", dd->serial, ifp->if_comment); "Board SN %s did not pass functional test: %s\n",
dd->serial, ifp->if_comment);
memcpy(&dd->eep_st_errs, &ifp->if_errcntp, QIB_EEP_LOG_CNT); memcpy(&dd->eep_st_errs, &ifp->if_errcntp, QIB_EEP_LOG_CNT);
/* /*
@ -323,8 +327,9 @@ int qib_update_eeprom_log(struct qib_devdata *dd)
buf = vmalloc(len); buf = vmalloc(len);
ret = 1; ret = 1;
if (!buf) { if (!buf) {
qib_dev_err(dd, "Couldn't allocate memory to read %u " qib_dev_err(dd,
"bytes from eeprom for logging\n", len); "Couldn't allocate memory to read %u bytes from eeprom for logging\n",
len);
goto bail; goto bail;
} }

View File

@ -1,6 +1,6 @@
/* /*
* Copyright (c) 2006, 2007, 2008, 2009, 2010 QLogic Corporation. * Copyright (c) 2012 Intel Corporation. All rights reserved.
* All rights reserved. * Copyright (c) 2006 - 2012 QLogic Corporation. All rights reserved.
* Copyright (c) 2003, 2004, 2005, 2006 PathScale, Inc. All rights reserved. * Copyright (c) 2003, 2004, 2005, 2006 PathScale, Inc. All rights reserved.
* *
* This software is available to you under a choice of one of two * This software is available to you under a choice of one of two
@ -49,6 +49,9 @@
#include "qib_common.h" #include "qib_common.h"
#include "qib_user_sdma.h" #include "qib_user_sdma.h"
#undef pr_fmt
#define pr_fmt(fmt) QIB_DRV_NAME ": " fmt
static int qib_open(struct inode *, struct file *); static int qib_open(struct inode *, struct file *);
static int qib_close(struct inode *, struct file *); static int qib_close(struct inode *, struct file *);
static ssize_t qib_write(struct file *, const char __user *, size_t, loff_t *); static ssize_t qib_write(struct file *, const char __user *, size_t, loff_t *);
@ -315,8 +318,9 @@ static int qib_tid_update(struct qib_ctxtdata *rcd, struct file *fp,
} }
if (cnt > tidcnt) { if (cnt > tidcnt) {
/* make sure it all fits in tid_pg_list */ /* make sure it all fits in tid_pg_list */
qib_devinfo(dd->pcidev, "Process tried to allocate %u " qib_devinfo(dd->pcidev,
"TIDs, only trying max (%u)\n", cnt, tidcnt); "Process tried to allocate %u TIDs, only trying max (%u)\n",
cnt, tidcnt);
cnt = tidcnt; cnt = tidcnt;
} }
pagep = (struct page **) rcd->tid_pg_list; pagep = (struct page **) rcd->tid_pg_list;
@ -750,9 +754,9 @@ static int qib_mmap_mem(struct vm_area_struct *vma, struct qib_ctxtdata *rcd,
ret = remap_pfn_range(vma, vma->vm_start, pfn, ret = remap_pfn_range(vma, vma->vm_start, pfn,
len, vma->vm_page_prot); len, vma->vm_page_prot);
if (ret) if (ret)
qib_devinfo(dd->pcidev, "%s ctxt%u mmap of %lx, %x " qib_devinfo(dd->pcidev,
"bytes failed: %d\n", what, rcd->ctxt, "%s ctxt%u mmap of %lx, %x bytes failed: %d\n",
pfn, len, ret); what, rcd->ctxt, pfn, len, ret);
bail: bail:
return ret; return ret;
} }
@ -771,8 +775,9 @@ static int mmap_ureg(struct vm_area_struct *vma, struct qib_devdata *dd,
*/ */
sz = dd->flags & QIB_HAS_HDRSUPP ? 2 * PAGE_SIZE : PAGE_SIZE; sz = dd->flags & QIB_HAS_HDRSUPP ? 2 * PAGE_SIZE : PAGE_SIZE;
if ((vma->vm_end - vma->vm_start) > sz) { if ((vma->vm_end - vma->vm_start) > sz) {
qib_devinfo(dd->pcidev, "FAIL mmap userreg: reqlen " qib_devinfo(dd->pcidev,
"%lx > PAGE\n", vma->vm_end - vma->vm_start); "FAIL mmap userreg: reqlen %lx > PAGE\n",
vma->vm_end - vma->vm_start);
ret = -EFAULT; ret = -EFAULT;
} else { } else {
phys = dd->physaddr + ureg; phys = dd->physaddr + ureg;
@ -802,8 +807,8 @@ static int mmap_piobufs(struct vm_area_struct *vma,
* for it. * for it.
*/ */
if ((vma->vm_end - vma->vm_start) > (piocnt * dd->palign)) { if ((vma->vm_end - vma->vm_start) > (piocnt * dd->palign)) {
qib_devinfo(dd->pcidev, "FAIL mmap piobufs: " qib_devinfo(dd->pcidev,
"reqlen %lx > PAGE\n", "FAIL mmap piobufs: reqlen %lx > PAGE\n",
vma->vm_end - vma->vm_start); vma->vm_end - vma->vm_start);
ret = -EINVAL; ret = -EINVAL;
goto bail; goto bail;
@ -847,8 +852,8 @@ static int mmap_rcvegrbufs(struct vm_area_struct *vma,
size = rcd->rcvegrbuf_size; size = rcd->rcvegrbuf_size;
total_size = rcd->rcvegrbuf_chunks * size; total_size = rcd->rcvegrbuf_chunks * size;
if ((vma->vm_end - vma->vm_start) > total_size) { if ((vma->vm_end - vma->vm_start) > total_size) {
qib_devinfo(dd->pcidev, "FAIL on egr bufs: " qib_devinfo(dd->pcidev,
"reqlen %lx > actual %lx\n", "FAIL on egr bufs: reqlen %lx > actual %lx\n",
vma->vm_end - vma->vm_start, vma->vm_end - vma->vm_start,
(unsigned long) total_size); (unsigned long) total_size);
ret = -EINVAL; ret = -EINVAL;
@ -856,8 +861,9 @@ static int mmap_rcvegrbufs(struct vm_area_struct *vma,
} }
if (vma->vm_flags & VM_WRITE) { if (vma->vm_flags & VM_WRITE) {
qib_devinfo(dd->pcidev, "Can't map eager buffers as " qib_devinfo(dd->pcidev,
"writable (flags=%lx)\n", vma->vm_flags); "Can't map eager buffers as writable (flags=%lx)\n",
vma->vm_flags);
ret = -EPERM; ret = -EPERM;
goto bail; goto bail;
} }
@ -1270,8 +1276,8 @@ static int setup_ctxt(struct qib_pportdata *ppd, int ctxt,
GFP_KERNEL); GFP_KERNEL);
if (!rcd || !ptmp) { if (!rcd || !ptmp) {
qib_dev_err(dd, "Unable to allocate ctxtdata " qib_dev_err(dd,
"memory, failing open\n"); "Unable to allocate ctxtdata memory, failing open\n");
ret = -ENOMEM; ret = -ENOMEM;
goto bailerr; goto bailerr;
} }
@ -1560,10 +1566,10 @@ done_chk_sdma:
} else if (weight == 1 && } else if (weight == 1 &&
test_bit(cpumask_first(tsk_cpus_allowed(current)), test_bit(cpumask_first(tsk_cpus_allowed(current)),
qib_cpulist)) qib_cpulist))
qib_devinfo(dd->pcidev, "%s PID %u affinity " qib_devinfo(dd->pcidev,
"set to cpu %d; already allocated\n", "%s PID %u affinity set to cpu %d; already allocated\n",
current->comm, current->pid, current->comm, current->pid,
cpumask_first(tsk_cpus_allowed(current))); cpumask_first(tsk_cpus_allowed(current)));
} }
mutex_unlock(&qib_mutex); mutex_unlock(&qib_mutex);
@ -2185,8 +2191,7 @@ int qib_cdev_init(int minor, const char *name,
cdev = cdev_alloc(); cdev = cdev_alloc();
if (!cdev) { if (!cdev) {
printk(KERN_ERR QIB_DRV_NAME pr_err("Could not allocate cdev for minor %d, %s\n",
": Could not allocate cdev for minor %d, %s\n",
minor, name); minor, name);
ret = -ENOMEM; ret = -ENOMEM;
goto done; goto done;
@ -2198,8 +2203,7 @@ int qib_cdev_init(int minor, const char *name,
ret = cdev_add(cdev, dev, 1); ret = cdev_add(cdev, dev, 1);
if (ret < 0) { if (ret < 0) {
printk(KERN_ERR QIB_DRV_NAME pr_err("Could not add cdev for minor %d, %s (err %d)\n",
": Could not add cdev for minor %d, %s (err %d)\n",
minor, name, -ret); minor, name, -ret);
goto err_cdev; goto err_cdev;
} }
@ -2209,8 +2213,7 @@ int qib_cdev_init(int minor, const char *name,
goto done; goto done;
ret = PTR_ERR(device); ret = PTR_ERR(device);
device = NULL; device = NULL;
printk(KERN_ERR QIB_DRV_NAME ": Could not create " pr_err("Could not create device for minor %d, %s (err %d)\n",
"device for minor %d, %s (err %d)\n",
minor, name, -ret); minor, name, -ret);
err_cdev: err_cdev:
cdev_del(cdev); cdev_del(cdev);
@ -2245,16 +2248,14 @@ int __init qib_dev_init(void)
ret = alloc_chrdev_region(&qib_dev, 0, QIB_NMINORS, QIB_DRV_NAME); ret = alloc_chrdev_region(&qib_dev, 0, QIB_NMINORS, QIB_DRV_NAME);
if (ret < 0) { if (ret < 0) {
printk(KERN_ERR QIB_DRV_NAME ": Could not allocate " pr_err("Could not allocate chrdev region (err %d)\n", -ret);
"chrdev region (err %d)\n", -ret);
goto done; goto done;
} }
qib_class = class_create(THIS_MODULE, "ipath"); qib_class = class_create(THIS_MODULE, "ipath");
if (IS_ERR(qib_class)) { if (IS_ERR(qib_class)) {
ret = PTR_ERR(qib_class); ret = PTR_ERR(qib_class);
printk(KERN_ERR QIB_DRV_NAME ": Could not create " pr_err("Could not create device class (err %d)\n", -ret);
"device class (err %d)\n", -ret);
unregister_chrdev_region(qib_dev, QIB_NMINORS); unregister_chrdev_region(qib_dev, QIB_NMINORS);
} }

View File

@ -1,5 +1,6 @@
/* /*
* Copyright (c) 2006, 2007, 2008, 2009 QLogic Corporation. All rights reserved. * Copyright (c) 2012 Intel Corporation. All rights reserved.
* Copyright (c) 2006 - 2012 QLogic Corporation. All rights reserved.
* Copyright (c) 2006 PathScale, Inc. All rights reserved. * Copyright (c) 2006 PathScale, Inc. All rights reserved.
* *
* This software is available to you under a choice of one of two * This software is available to you under a choice of one of two
@ -382,7 +383,7 @@ static int add_cntr_files(struct super_block *sb, struct qib_devdata *dd)
ret = create_file(unit, S_IFDIR|S_IRUGO|S_IXUGO, sb->s_root, &dir, ret = create_file(unit, S_IFDIR|S_IRUGO|S_IXUGO, sb->s_root, &dir,
&simple_dir_operations, dd); &simple_dir_operations, dd);
if (ret) { if (ret) {
printk(KERN_ERR "create_file(%s) failed: %d\n", unit, ret); pr_err("create_file(%s) failed: %d\n", unit, ret);
goto bail; goto bail;
} }
@ -390,21 +391,21 @@ static int add_cntr_files(struct super_block *sb, struct qib_devdata *dd)
ret = create_file("counters", S_IFREG|S_IRUGO, dir, &tmp, ret = create_file("counters", S_IFREG|S_IRUGO, dir, &tmp,
&cntr_ops[0], dd); &cntr_ops[0], dd);
if (ret) { if (ret) {
printk(KERN_ERR "create_file(%s/counters) failed: %d\n", pr_err("create_file(%s/counters) failed: %d\n",
unit, ret); unit, ret);
goto bail; goto bail;
} }
ret = create_file("counter_names", S_IFREG|S_IRUGO, dir, &tmp, ret = create_file("counter_names", S_IFREG|S_IRUGO, dir, &tmp,
&cntr_ops[1], dd); &cntr_ops[1], dd);
if (ret) { if (ret) {
printk(KERN_ERR "create_file(%s/counter_names) failed: %d\n", pr_err("create_file(%s/counter_names) failed: %d\n",
unit, ret); unit, ret);
goto bail; goto bail;
} }
ret = create_file("portcounter_names", S_IFREG|S_IRUGO, dir, &tmp, ret = create_file("portcounter_names", S_IFREG|S_IRUGO, dir, &tmp,
&portcntr_ops[0], dd); &portcntr_ops[0], dd);
if (ret) { if (ret) {
printk(KERN_ERR "create_file(%s/%s) failed: %d\n", pr_err("create_file(%s/%s) failed: %d\n",
unit, "portcounter_names", ret); unit, "portcounter_names", ret);
goto bail; goto bail;
} }
@ -416,7 +417,7 @@ static int add_cntr_files(struct super_block *sb, struct qib_devdata *dd)
ret = create_file(fname, S_IFREG|S_IRUGO, dir, &tmp, ret = create_file(fname, S_IFREG|S_IRUGO, dir, &tmp,
&portcntr_ops[i], dd); &portcntr_ops[i], dd);
if (ret) { if (ret) {
printk(KERN_ERR "create_file(%s/%s) failed: %d\n", pr_err("create_file(%s/%s) failed: %d\n",
unit, fname, ret); unit, fname, ret);
goto bail; goto bail;
} }
@ -426,7 +427,7 @@ static int add_cntr_files(struct super_block *sb, struct qib_devdata *dd)
ret = create_file(fname, S_IFREG|S_IRUGO, dir, &tmp, ret = create_file(fname, S_IFREG|S_IRUGO, dir, &tmp,
&qsfp_ops[i - 1], dd); &qsfp_ops[i - 1], dd);
if (ret) { if (ret) {
printk(KERN_ERR "create_file(%s/%s) failed: %d\n", pr_err("create_file(%s/%s) failed: %d\n",
unit, fname, ret); unit, fname, ret);
goto bail; goto bail;
} }
@ -435,7 +436,7 @@ static int add_cntr_files(struct super_block *sb, struct qib_devdata *dd)
ret = create_file("flash", S_IFREG|S_IWUSR|S_IRUGO, dir, &tmp, ret = create_file("flash", S_IFREG|S_IWUSR|S_IRUGO, dir, &tmp,
&flash_ops, dd); &flash_ops, dd);
if (ret) if (ret)
printk(KERN_ERR "create_file(%s/flash) failed: %d\n", pr_err("create_file(%s/flash) failed: %d\n",
unit, ret); unit, ret);
bail: bail:
return ret; return ret;
@ -486,7 +487,7 @@ static int remove_device_files(struct super_block *sb,
if (IS_ERR(dir)) { if (IS_ERR(dir)) {
ret = PTR_ERR(dir); ret = PTR_ERR(dir);
printk(KERN_ERR "Lookup of %s failed\n", unit); pr_err("Lookup of %s failed\n", unit);
goto bail; goto bail;
} }
@ -532,7 +533,7 @@ static int qibfs_fill_super(struct super_block *sb, void *data, int silent)
ret = simple_fill_super(sb, QIBFS_MAGIC, files); ret = simple_fill_super(sb, QIBFS_MAGIC, files);
if (ret) { if (ret) {
printk(KERN_ERR "simple_fill_super failed: %d\n", ret); pr_err("simple_fill_super failed: %d\n", ret);
goto bail; goto bail;
} }

View File

@ -753,8 +753,8 @@ static void qib_handle_6120_hwerrors(struct qib_devdata *dd, char *msg,
if (!hwerrs) if (!hwerrs)
return; return;
if (hwerrs == ~0ULL) { if (hwerrs == ~0ULL) {
qib_dev_err(dd, "Read of hardware error status failed " qib_dev_err(dd,
"(all bits set); ignoring\n"); "Read of hardware error status failed (all bits set); ignoring\n");
return; return;
} }
qib_stats.sps_hwerrs++; qib_stats.sps_hwerrs++;
@ -779,13 +779,14 @@ static void qib_handle_6120_hwerrors(struct qib_devdata *dd, char *msg,
* or it's occurred within the last 5 seconds. * or it's occurred within the last 5 seconds.
*/ */
if (hwerrs & ~(TXE_PIO_PARITY | RXEMEMPARITYERR_EAGERTID)) if (hwerrs & ~(TXE_PIO_PARITY | RXEMEMPARITYERR_EAGERTID))
qib_devinfo(dd->pcidev, "Hardware error: hwerr=0x%llx " qib_devinfo(dd->pcidev,
"(cleared)\n", (unsigned long long) hwerrs); "Hardware error: hwerr=0x%llx (cleared)\n",
(unsigned long long) hwerrs);
if (hwerrs & ~IB_HWE_BITSEXTANT) if (hwerrs & ~IB_HWE_BITSEXTANT)
qib_dev_err(dd, "hwerror interrupt with unknown errors " qib_dev_err(dd,
"%llx set\n", (unsigned long long) "hwerror interrupt with unknown errors %llx set\n",
(hwerrs & ~IB_HWE_BITSEXTANT)); (unsigned long long)(hwerrs & ~IB_HWE_BITSEXTANT));
ctrl = qib_read_kreg32(dd, kr_control); ctrl = qib_read_kreg32(dd, kr_control);
if ((ctrl & QLOGIC_IB_C_FREEZEMODE) && !dd->diag_client) { if ((ctrl & QLOGIC_IB_C_FREEZEMODE) && !dd->diag_client) {
@ -815,8 +816,9 @@ static void qib_handle_6120_hwerrors(struct qib_devdata *dd, char *msg,
if (hwerrs & HWE_MASK(PowerOnBISTFailed)) { if (hwerrs & HWE_MASK(PowerOnBISTFailed)) {
isfatal = 1; isfatal = 1;
strlcat(msg, "[Memory BIST test failed, InfiniPath hardware" strlcat(msg,
" unusable]", msgl); "[Memory BIST test failed, InfiniPath hardware unusable]",
msgl);
/* ignore from now on, so disable until driver reloaded */ /* ignore from now on, so disable until driver reloaded */
dd->cspec->hwerrmask &= ~HWE_MASK(PowerOnBISTFailed); dd->cspec->hwerrmask &= ~HWE_MASK(PowerOnBISTFailed);
qib_write_kreg(dd, kr_hwerrmask, dd->cspec->hwerrmask); qib_write_kreg(dd, kr_hwerrmask, dd->cspec->hwerrmask);
@ -868,8 +870,9 @@ static void qib_handle_6120_hwerrors(struct qib_devdata *dd, char *msg,
*msg = 0; /* recovered from all of them */ *msg = 0; /* recovered from all of them */
if (isfatal && !dd->diag_client) { if (isfatal && !dd->diag_client) {
qib_dev_err(dd, "Fatal Hardware Error, no longer" qib_dev_err(dd,
" usable, SN %.16s\n", dd->serial); "Fatal Hardware Error, no longer usable, SN %.16s\n",
dd->serial);
/* /*
* for /sys status file and user programs to print; if no * for /sys status file and user programs to print; if no
* trailing brace is copied, we'll know it was truncated. * trailing brace is copied, we'll know it was truncated.
@ -1017,9 +1020,9 @@ static void handle_6120_errors(struct qib_devdata *dd, u64 errs)
qib_inc_eeprom_err(dd, log_idx, 1); qib_inc_eeprom_err(dd, log_idx, 1);
if (errs & ~IB_E_BITSEXTANT) if (errs & ~IB_E_BITSEXTANT)
qib_dev_err(dd, "error interrupt with unknown errors " qib_dev_err(dd,
"%llx set\n", "error interrupt with unknown errors %llx set\n",
(unsigned long long) (errs & ~IB_E_BITSEXTANT)); (unsigned long long) (errs & ~IB_E_BITSEXTANT));
if (errs & E_SUM_ERRS) { if (errs & E_SUM_ERRS) {
qib_disarm_6120_senderrbufs(ppd); qib_disarm_6120_senderrbufs(ppd);
@ -1089,8 +1092,8 @@ static void handle_6120_errors(struct qib_devdata *dd, u64 errs)
} }
if (errs & ERR_MASK(ResetNegated)) { if (errs & ERR_MASK(ResetNegated)) {
qib_dev_err(dd, "Got reset, requires re-init " qib_dev_err(dd,
"(unload and reload driver)\n"); "Got reset, requires re-init (unload and reload driver)\n");
dd->flags &= ~QIB_INITTED; /* needs re-init */ dd->flags &= ~QIB_INITTED; /* needs re-init */
/* mark as having had error */ /* mark as having had error */
*dd->devstatusp |= QIB_STATUS_HWERROR; *dd->devstatusp |= QIB_STATUS_HWERROR;
@ -1541,8 +1544,9 @@ static noinline void unlikely_6120_intr(struct qib_devdata *dd, u64 istat)
qib_stats.sps_errints++; qib_stats.sps_errints++;
estat = qib_read_kreg64(dd, kr_errstatus); estat = qib_read_kreg64(dd, kr_errstatus);
if (!estat) if (!estat)
qib_devinfo(dd->pcidev, "error interrupt (%Lx), " qib_devinfo(dd->pcidev,
"but no error bits set!\n", istat); "error interrupt (%Lx), but no error bits set!\n",
istat);
handle_6120_errors(dd, estat); handle_6120_errors(dd, estat);
} }
@ -1715,16 +1719,16 @@ static void qib_setup_6120_interrupt(struct qib_devdata *dd)
} }
if (!dd->cspec->irq) if (!dd->cspec->irq)
qib_dev_err(dd, "irq is 0, BIOS error? Interrupts won't " qib_dev_err(dd,
"work\n"); "irq is 0, BIOS error? Interrupts won't work\n");
else { else {
int ret; int ret;
ret = request_irq(dd->cspec->irq, qib_6120intr, 0, ret = request_irq(dd->cspec->irq, qib_6120intr, 0,
QIB_DRV_NAME, dd); QIB_DRV_NAME, dd);
if (ret) if (ret)
qib_dev_err(dd, "Couldn't setup interrupt " qib_dev_err(dd,
"(irq=%d): %d\n", dd->cspec->irq, "Couldn't setup interrupt (irq=%d): %d\n",
ret); dd->cspec->irq, ret);
} }
} }
@ -1759,8 +1763,9 @@ static void pe_boardname(struct qib_devdata *dd)
snprintf(dd->boardname, namelen, "%s", n); snprintf(dd->boardname, namelen, "%s", n);
if (dd->majrev != 4 || !dd->minrev || dd->minrev > 2) if (dd->majrev != 4 || !dd->minrev || dd->minrev > 2)
qib_dev_err(dd, "Unsupported InfiniPath hardware revision " qib_dev_err(dd,
"%u.%u!\n", dd->majrev, dd->minrev); "Unsupported InfiniPath hardware revision %u.%u!\n",
dd->majrev, dd->minrev);
snprintf(dd->boardversion, sizeof(dd->boardversion), snprintf(dd->boardversion, sizeof(dd->boardversion),
"ChipABI %u.%u, %s, InfiniPath%u %u.%u, SW Compat %u\n", "ChipABI %u.%u, %s, InfiniPath%u %u.%u, SW Compat %u\n",
@ -1833,8 +1838,8 @@ static int qib_6120_setup_reset(struct qib_devdata *dd)
bail: bail:
if (ret) { if (ret) {
if (qib_pcie_params(dd, dd->lbus_width, NULL, NULL)) if (qib_pcie_params(dd, dd->lbus_width, NULL, NULL))
qib_dev_err(dd, "Reset failed to setup PCIe or " qib_dev_err(dd,
"interrupts; continuing anyway\n"); "Reset failed to setup PCIe or interrupts; continuing anyway\n");
/* clear the reset error, init error/hwerror mask */ /* clear the reset error, init error/hwerror mask */
qib_6120_init_hwerrors(dd); qib_6120_init_hwerrors(dd);
/* for Rev2 error interrupts; nop for rev 1 */ /* for Rev2 error interrupts; nop for rev 1 */
@ -1876,8 +1881,9 @@ static void qib_6120_put_tid(struct qib_devdata *dd, u64 __iomem *tidptr,
} }
pa >>= 11; pa >>= 11;
if (pa & ~QLOGIC_IB_RT_ADDR_MASK) { if (pa & ~QLOGIC_IB_RT_ADDR_MASK) {
qib_dev_err(dd, "Physical page address 0x%lx " qib_dev_err(dd,
"larger than supported\n", pa); "Physical page address 0x%lx larger than supported\n",
pa);
return; return;
} }
@ -1941,8 +1947,9 @@ static void qib_6120_put_tid_2(struct qib_devdata *dd, u64 __iomem *tidptr,
} }
pa >>= 11; pa >>= 11;
if (pa & ~QLOGIC_IB_RT_ADDR_MASK) { if (pa & ~QLOGIC_IB_RT_ADDR_MASK) {
qib_dev_err(dd, "Physical page address 0x%lx " qib_dev_err(dd,
"larger than supported\n", pa); "Physical page address 0x%lx larger than supported\n",
pa);
return; return;
} }
@ -2928,8 +2935,9 @@ static int qib_6120_set_loopback(struct qib_pportdata *ppd, const char *what)
ppd->dd->unit, ppd->port); ppd->dd->unit, ppd->port);
} else if (!strncmp(what, "off", 3)) { } else if (!strncmp(what, "off", 3)) {
ppd->dd->cspec->ibcctrl &= ~SYM_MASK(IBCCtrl, Loopback); ppd->dd->cspec->ibcctrl &= ~SYM_MASK(IBCCtrl, Loopback);
qib_devinfo(ppd->dd->pcidev, "Disabling IB%u:%u IBC loopback " qib_devinfo(ppd->dd->pcidev,
"(normal)\n", ppd->dd->unit, ppd->port); "Disabling IB%u:%u IBC loopback (normal)\n",
ppd->dd->unit, ppd->port);
} else } else
ret = -EINVAL; ret = -EINVAL;
if (!ret) { if (!ret) {
@ -3186,11 +3194,10 @@ static int qib_late_6120_initreg(struct qib_devdata *dd)
qib_write_kreg(dd, kr_sendpioavailaddr, dd->pioavailregs_phys); qib_write_kreg(dd, kr_sendpioavailaddr, dd->pioavailregs_phys);
val = qib_read_kreg64(dd, kr_sendpioavailaddr); val = qib_read_kreg64(dd, kr_sendpioavailaddr);
if (val != dd->pioavailregs_phys) { if (val != dd->pioavailregs_phys) {
qib_dev_err(dd, "Catastrophic software error, " qib_dev_err(dd,
"SendPIOAvailAddr written as %lx, " "Catastrophic software error, SendPIOAvailAddr written as %lx, read back as %llx\n",
"read back as %llx\n", (unsigned long) dd->pioavailregs_phys,
(unsigned long) dd->pioavailregs_phys, (unsigned long long) val);
(unsigned long long) val);
ret = -EINVAL; ret = -EINVAL;
} }
return ret; return ret;
@ -3218,8 +3225,8 @@ static int init_6120_variables(struct qib_devdata *dd)
dd->revision = readq(&dd->kregbase[kr_revision]); dd->revision = readq(&dd->kregbase[kr_revision]);
if ((dd->revision & 0xffffffffU) == 0xffffffffU) { if ((dd->revision & 0xffffffffU) == 0xffffffffU) {
qib_dev_err(dd, "Revision register read failure, " qib_dev_err(dd,
"giving up initialization\n"); "Revision register read failure, giving up initialization\n");
ret = -ENODEV; ret = -ENODEV;
goto bail; goto bail;
} }
@ -3551,8 +3558,8 @@ struct qib_devdata *qib_init_iba6120_funcs(struct pci_dev *pdev,
goto bail; goto bail;
if (qib_pcie_params(dd, 8, NULL, NULL)) if (qib_pcie_params(dd, 8, NULL, NULL))
qib_dev_err(dd, "Failed to setup PCIe or interrupts; " qib_dev_err(dd,
"continuing anyway\n"); "Failed to setup PCIe or interrupts; continuing anyway\n");
dd->cspec->irq = pdev->irq; /* save IRQ */ dd->cspec->irq = pdev->irq; /* save IRQ */
/* clear diagctrl register, in case diags were running and crashed */ /* clear diagctrl register, in case diags were running and crashed */

View File

@ -1111,9 +1111,9 @@ static void handle_7220_errors(struct qib_devdata *dd, u64 errs)
sdma_7220_errors(ppd, errs); sdma_7220_errors(ppd, errs);
if (errs & ~IB_E_BITSEXTANT) if (errs & ~IB_E_BITSEXTANT)
qib_dev_err(dd, "error interrupt with unknown errors " qib_dev_err(dd,
"%llx set\n", (unsigned long long) "error interrupt with unknown errors %llx set\n",
(errs & ~IB_E_BITSEXTANT)); (unsigned long long) (errs & ~IB_E_BITSEXTANT));
if (errs & E_SUM_ERRS) { if (errs & E_SUM_ERRS) {
qib_disarm_7220_senderrbufs(ppd); qib_disarm_7220_senderrbufs(ppd);
@ -1192,8 +1192,8 @@ static void handle_7220_errors(struct qib_devdata *dd, u64 errs)
} }
if (errs & ERR_MASK(ResetNegated)) { if (errs & ERR_MASK(ResetNegated)) {
qib_dev_err(dd, "Got reset, requires re-init " qib_dev_err(dd,
"(unload and reload driver)\n"); "Got reset, requires re-init (unload and reload driver)\n");
dd->flags &= ~QIB_INITTED; /* needs re-init */ dd->flags &= ~QIB_INITTED; /* needs re-init */
/* mark as having had error */ /* mark as having had error */
*dd->devstatusp |= QIB_STATUS_HWERROR; *dd->devstatusp |= QIB_STATUS_HWERROR;
@ -1305,8 +1305,8 @@ static void qib_7220_handle_hwerrors(struct qib_devdata *dd, char *msg,
if (!hwerrs) if (!hwerrs)
goto bail; goto bail;
if (hwerrs == ~0ULL) { if (hwerrs == ~0ULL) {
qib_dev_err(dd, "Read of hardware error status failed " qib_dev_err(dd,
"(all bits set); ignoring\n"); "Read of hardware error status failed (all bits set); ignoring\n");
goto bail; goto bail;
} }
qib_stats.sps_hwerrs++; qib_stats.sps_hwerrs++;
@ -1329,13 +1329,14 @@ static void qib_7220_handle_hwerrors(struct qib_devdata *dd, char *msg,
qib_inc_eeprom_err(dd, log_idx, 1); qib_inc_eeprom_err(dd, log_idx, 1);
if (hwerrs & ~(TXEMEMPARITYERR_PIOBUF | TXEMEMPARITYERR_PIOPBC | if (hwerrs & ~(TXEMEMPARITYERR_PIOBUF | TXEMEMPARITYERR_PIOPBC |
RXE_PARITY)) RXE_PARITY))
qib_devinfo(dd->pcidev, "Hardware error: hwerr=0x%llx " qib_devinfo(dd->pcidev,
"(cleared)\n", (unsigned long long) hwerrs); "Hardware error: hwerr=0x%llx (cleared)\n",
(unsigned long long) hwerrs);
if (hwerrs & ~IB_HWE_BITSEXTANT) if (hwerrs & ~IB_HWE_BITSEXTANT)
qib_dev_err(dd, "hwerror interrupt with unknown errors " qib_dev_err(dd,
"%llx set\n", (unsigned long long) "hwerror interrupt with unknown errors %llx set\n",
(hwerrs & ~IB_HWE_BITSEXTANT)); (unsigned long long) (hwerrs & ~IB_HWE_BITSEXTANT));
if (hwerrs & QLOGIC_IB_HWE_IB_UC_MEMORYPARITYERR) if (hwerrs & QLOGIC_IB_HWE_IB_UC_MEMORYPARITYERR)
qib_sd7220_clr_ibpar(dd); qib_sd7220_clr_ibpar(dd);
@ -1362,8 +1363,9 @@ static void qib_7220_handle_hwerrors(struct qib_devdata *dd, char *msg,
if (hwerrs & HWE_MASK(PowerOnBISTFailed)) { if (hwerrs & HWE_MASK(PowerOnBISTFailed)) {
isfatal = 1; isfatal = 1;
strlcat(msg, "[Memory BIST test failed, " strlcat(msg,
"InfiniPath hardware unusable]", msgl); "[Memory BIST test failed, InfiniPath hardware unusable]",
msgl);
/* ignore from now on, so disable until driver reloaded */ /* ignore from now on, so disable until driver reloaded */
dd->cspec->hwerrmask &= ~HWE_MASK(PowerOnBISTFailed); dd->cspec->hwerrmask &= ~HWE_MASK(PowerOnBISTFailed);
qib_write_kreg(dd, kr_hwerrmask, dd->cspec->hwerrmask); qib_write_kreg(dd, kr_hwerrmask, dd->cspec->hwerrmask);
@ -1409,8 +1411,9 @@ static void qib_7220_handle_hwerrors(struct qib_devdata *dd, char *msg,
qib_dev_err(dd, "%s hardware error\n", msg); qib_dev_err(dd, "%s hardware error\n", msg);
if (isfatal && !dd->diag_client) { if (isfatal && !dd->diag_client) {
qib_dev_err(dd, "Fatal Hardware Error, no longer" qib_dev_err(dd,
" usable, SN %.16s\n", dd->serial); "Fatal Hardware Error, no longer usable, SN %.16s\n",
dd->serial);
/* /*
* For /sys status file and user programs to print; if no * For /sys status file and user programs to print; if no
* trailing brace is copied, we'll know it was truncated. * trailing brace is copied, we'll know it was truncated.
@ -1918,8 +1921,9 @@ static noinline void unlikely_7220_intr(struct qib_devdata *dd, u64 istat)
qib_stats.sps_errints++; qib_stats.sps_errints++;
estat = qib_read_kreg64(dd, kr_errstatus); estat = qib_read_kreg64(dd, kr_errstatus);
if (!estat) if (!estat)
qib_devinfo(dd->pcidev, "error interrupt (%Lx), " qib_devinfo(dd->pcidev,
"but no error bits set!\n", istat); "error interrupt (%Lx), but no error bits set!\n",
istat);
else else
handle_7220_errors(dd, estat); handle_7220_errors(dd, estat);
} }
@ -2023,17 +2027,18 @@ bail:
static void qib_setup_7220_interrupt(struct qib_devdata *dd) static void qib_setup_7220_interrupt(struct qib_devdata *dd)
{ {
if (!dd->cspec->irq) if (!dd->cspec->irq)
qib_dev_err(dd, "irq is 0, BIOS error? Interrupts won't " qib_dev_err(dd,
"work\n"); "irq is 0, BIOS error? Interrupts won't work\n");
else { else {
int ret = request_irq(dd->cspec->irq, qib_7220intr, int ret = request_irq(dd->cspec->irq, qib_7220intr,
dd->msi_lo ? 0 : IRQF_SHARED, dd->msi_lo ? 0 : IRQF_SHARED,
QIB_DRV_NAME, dd); QIB_DRV_NAME, dd);
if (ret) if (ret)
qib_dev_err(dd, "Couldn't setup %s interrupt " qib_dev_err(dd,
"(irq=%d): %d\n", dd->msi_lo ? "Couldn't setup %s interrupt (irq=%d): %d\n",
"MSI" : "INTx", dd->cspec->irq, ret); dd->msi_lo ? "MSI" : "INTx",
dd->cspec->irq, ret);
} }
} }
@ -2072,9 +2077,9 @@ static void qib_7220_boardname(struct qib_devdata *dd)
snprintf(dd->boardname, namelen, "%s", n); snprintf(dd->boardname, namelen, "%s", n);
if (dd->majrev != 5 || !dd->minrev || dd->minrev > 2) if (dd->majrev != 5 || !dd->minrev || dd->minrev > 2)
qib_dev_err(dd, "Unsupported InfiniPath hardware " qib_dev_err(dd,
"revision %u.%u!\n", "Unsupported InfiniPath hardware revision %u.%u!\n",
dd->majrev, dd->minrev); dd->majrev, dd->minrev);
snprintf(dd->boardversion, sizeof(dd->boardversion), snprintf(dd->boardversion, sizeof(dd->boardversion),
"ChipABI %u.%u, %s, InfiniPath%u %u.%u, SW Compat %u\n", "ChipABI %u.%u, %s, InfiniPath%u %u.%u, SW Compat %u\n",
@ -2146,8 +2151,8 @@ static int qib_setup_7220_reset(struct qib_devdata *dd)
bail: bail:
if (ret) { if (ret) {
if (qib_pcie_params(dd, dd->lbus_width, NULL, NULL)) if (qib_pcie_params(dd, dd->lbus_width, NULL, NULL))
qib_dev_err(dd, "Reset failed to setup PCIe or " qib_dev_err(dd,
"interrupts; continuing anyway\n"); "Reset failed to setup PCIe or interrupts; continuing anyway\n");
/* hold IBC in reset, no sends, etc till later */ /* hold IBC in reset, no sends, etc till later */
qib_write_kreg(dd, kr_control, 0ULL); qib_write_kreg(dd, kr_control, 0ULL);
@ -2187,8 +2192,9 @@ static void qib_7220_put_tid(struct qib_devdata *dd, u64 __iomem *tidptr,
return; return;
} }
if (chippa >= (1UL << IBA7220_TID_SZ_SHIFT)) { if (chippa >= (1UL << IBA7220_TID_SZ_SHIFT)) {
qib_dev_err(dd, "Physical page address 0x%lx " qib_dev_err(dd,
"larger than supported\n", pa); "Physical page address 0x%lx larger than supported\n",
pa);
return; return;
} }
@ -2706,8 +2712,9 @@ static int qib_7220_set_loopback(struct qib_pportdata *ppd, const char *what)
ppd->cpspec->ibcctrl &= ~SYM_MASK(IBCCtrl, Loopback); ppd->cpspec->ibcctrl &= ~SYM_MASK(IBCCtrl, Loopback);
/* enable heart beat again */ /* enable heart beat again */
val = IBA7220_IBC_HRTBT_MASK << IBA7220_IBC_HRTBT_SHIFT; val = IBA7220_IBC_HRTBT_MASK << IBA7220_IBC_HRTBT_SHIFT;
qib_devinfo(ppd->dd->pcidev, "Disabling IB%u:%u IBC loopback " qib_devinfo(ppd->dd->pcidev,
"(normal)\n", ppd->dd->unit, ppd->port); "Disabling IB%u:%u IBC loopback (normal)\n",
ppd->dd->unit, ppd->port);
} else } else
ret = -EINVAL; ret = -EINVAL;
if (!ret) { if (!ret) {
@ -3307,8 +3314,8 @@ static int qib_7220_intr_fallback(struct qib_devdata *dd)
if (!dd->msi_lo) if (!dd->msi_lo)
return 0; return 0;
qib_devinfo(dd->pcidev, "MSI interrupt not detected," qib_devinfo(dd->pcidev,
" trying INTx interrupts\n"); "MSI interrupt not detected, trying INTx interrupts\n");
qib_7220_free_irq(dd); qib_7220_free_irq(dd);
qib_enable_intx(dd->pcidev); qib_enable_intx(dd->pcidev);
/* /*
@ -3980,11 +3987,10 @@ static int qib_late_7220_initreg(struct qib_devdata *dd)
qib_write_kreg(dd, kr_sendpioavailaddr, dd->pioavailregs_phys); qib_write_kreg(dd, kr_sendpioavailaddr, dd->pioavailregs_phys);
val = qib_read_kreg64(dd, kr_sendpioavailaddr); val = qib_read_kreg64(dd, kr_sendpioavailaddr);
if (val != dd->pioavailregs_phys) { if (val != dd->pioavailregs_phys) {
qib_dev_err(dd, "Catastrophic software error, " qib_dev_err(dd,
"SendPIOAvailAddr written as %lx, " "Catastrophic software error, SendPIOAvailAddr written as %lx, read back as %llx\n",
"read back as %llx\n", (unsigned long) dd->pioavailregs_phys,
(unsigned long) dd->pioavailregs_phys, (unsigned long long) val);
(unsigned long long) val);
ret = -EINVAL; ret = -EINVAL;
} }
qib_register_observer(dd, &sendctrl_observer); qib_register_observer(dd, &sendctrl_observer);
@ -4014,8 +4020,8 @@ static int qib_init_7220_variables(struct qib_devdata *dd)
dd->revision = readq(&dd->kregbase[kr_revision]); dd->revision = readq(&dd->kregbase[kr_revision]);
if ((dd->revision & 0xffffffffU) == 0xffffffffU) { if ((dd->revision & 0xffffffffU) == 0xffffffffU) {
qib_dev_err(dd, "Revision register read failure, " qib_dev_err(dd,
"giving up initialization\n"); "Revision register read failure, giving up initialization\n");
ret = -ENODEV; ret = -ENODEV;
goto bail; goto bail;
} }
@ -4613,8 +4619,8 @@ struct qib_devdata *qib_init_iba7220_funcs(struct pci_dev *pdev,
break; break;
} }
if (qib_pcie_params(dd, minwidth, NULL, NULL)) if (qib_pcie_params(dd, minwidth, NULL, NULL))
qib_dev_err(dd, "Failed to setup PCIe or interrupts; " qib_dev_err(dd,
"continuing anyway\n"); "Failed to setup PCIe or interrupts; continuing anyway\n");
/* save IRQ for possible later use */ /* save IRQ for possible later use */
dd->cspec->irq = pdev->irq; dd->cspec->irq = pdev->irq;

View File

@ -52,6 +52,9 @@
#include "qib_mad.h" #include "qib_mad.h"
#include "qib_verbs.h" #include "qib_verbs.h"
#undef pr_fmt
#define pr_fmt(fmt) QIB_DRV_NAME " " fmt
static void qib_setup_7322_setextled(struct qib_pportdata *, u32); static void qib_setup_7322_setextled(struct qib_pportdata *, u32);
static void qib_7322_handle_hwerrors(struct qib_devdata *, char *, size_t); static void qib_7322_handle_hwerrors(struct qib_devdata *, char *, size_t);
static void sendctrl_7322_mod(struct qib_pportdata *ppd, u32 op); static void sendctrl_7322_mod(struct qib_pportdata *ppd, u32 op);
@ -1577,8 +1580,8 @@ static noinline void handle_7322_errors(struct qib_devdata *dd)
qib_stats.sps_errints++; qib_stats.sps_errints++;
errs = qib_read_kreg64(dd, kr_errstatus); errs = qib_read_kreg64(dd, kr_errstatus);
if (!errs) { if (!errs) {
qib_devinfo(dd->pcidev, "device error interrupt, " qib_devinfo(dd->pcidev,
"but no error bits set!\n"); "device error interrupt, but no error bits set!\n");
goto done; goto done;
} }
@ -1624,8 +1627,8 @@ static noinline void handle_7322_errors(struct qib_devdata *dd)
if (errs & QIB_E_RESET) { if (errs & QIB_E_RESET) {
int pidx; int pidx;
qib_dev_err(dd, "Got reset, requires re-init " qib_dev_err(dd,
"(unload and reload driver)\n"); "Got reset, requires re-init (unload and reload driver)\n");
dd->flags &= ~QIB_INITTED; /* needs re-init */ dd->flags &= ~QIB_INITTED; /* needs re-init */
/* mark as having had error */ /* mark as having had error */
*dd->devstatusp |= QIB_STATUS_HWERROR; *dd->devstatusp |= QIB_STATUS_HWERROR;
@ -1762,9 +1765,9 @@ static void handle_serdes_issues(struct qib_pportdata *ppd, u64 ibcst)
ppd->dd->cspec->r1 ? ppd->dd->cspec->r1 ?
QDR_STATIC_ADAPT_DOWN_R1 : QDR_STATIC_ADAPT_DOWN_R1 :
QDR_STATIC_ADAPT_DOWN); QDR_STATIC_ADAPT_DOWN);
printk(KERN_INFO QIB_DRV_NAME pr_info(
" IB%u:%u re-enabled QDR adaptation " "IB%u:%u re-enabled QDR adaptation ibclt %x\n",
"ibclt %x\n", ppd->dd->unit, ppd->port, ibclt); ppd->dd->unit, ppd->port, ibclt);
} }
} }
} }
@ -1806,9 +1809,9 @@ static noinline void handle_7322_p_errors(struct qib_pportdata *ppd)
if (!*msg) if (!*msg)
snprintf(msg, sizeof ppd->cpspec->epmsgbuf, snprintf(msg, sizeof ppd->cpspec->epmsgbuf,
"no others"); "no others");
qib_dev_porterr(dd, ppd->port, "error interrupt with unknown" qib_dev_porterr(dd, ppd->port,
" errors 0x%016Lx set (and %s)\n", "error interrupt with unknown errors 0x%016Lx set (and %s)\n",
(errs & ~QIB_E_P_BITSEXTANT), msg); (errs & ~QIB_E_P_BITSEXTANT), msg);
*msg = '\0'; *msg = '\0';
} }
@ -2026,8 +2029,8 @@ static void qib_7322_handle_hwerrors(struct qib_devdata *dd, char *msg,
if (!hwerrs) if (!hwerrs)
goto bail; goto bail;
if (hwerrs == ~0ULL) { if (hwerrs == ~0ULL) {
qib_dev_err(dd, "Read of hardware error status failed " qib_dev_err(dd,
"(all bits set); ignoring\n"); "Read of hardware error status failed (all bits set); ignoring\n");
goto bail; goto bail;
} }
qib_stats.sps_hwerrs++; qib_stats.sps_hwerrs++;
@ -2041,8 +2044,9 @@ static void qib_7322_handle_hwerrors(struct qib_devdata *dd, char *msg,
/* no EEPROM logging, yet */ /* no EEPROM logging, yet */
if (hwerrs) if (hwerrs)
qib_devinfo(dd->pcidev, "Hardware error: hwerr=0x%llx " qib_devinfo(dd->pcidev,
"(cleared)\n", (unsigned long long) hwerrs); "Hardware error: hwerr=0x%llx (cleared)\n",
(unsigned long long) hwerrs);
ctrl = qib_read_kreg32(dd, kr_control); ctrl = qib_read_kreg32(dd, kr_control);
if ((ctrl & SYM_MASK(Control, FreezeMode)) && !dd->diag_client) { if ((ctrl & SYM_MASK(Control, FreezeMode)) && !dd->diag_client) {
@ -2066,8 +2070,9 @@ static void qib_7322_handle_hwerrors(struct qib_devdata *dd, char *msg,
if (hwerrs & HWE_MASK(PowerOnBISTFailed)) { if (hwerrs & HWE_MASK(PowerOnBISTFailed)) {
isfatal = 1; isfatal = 1;
strlcpy(msg, "[Memory BIST test failed, " strlcpy(msg,
"InfiniPath hardware unusable]", msgl); "[Memory BIST test failed, InfiniPath hardware unusable]",
msgl);
/* ignore from now on, so disable until driver reloaded */ /* ignore from now on, so disable until driver reloaded */
dd->cspec->hwerrmask &= ~HWE_MASK(PowerOnBISTFailed); dd->cspec->hwerrmask &= ~HWE_MASK(PowerOnBISTFailed);
qib_write_kreg(dd, kr_hwerrmask, dd->cspec->hwerrmask); qib_write_kreg(dd, kr_hwerrmask, dd->cspec->hwerrmask);
@ -2080,8 +2085,9 @@ static void qib_7322_handle_hwerrors(struct qib_devdata *dd, char *msg,
qib_dev_err(dd, "%s hardware error\n", msg); qib_dev_err(dd, "%s hardware error\n", msg);
if (isfatal && !dd->diag_client) { if (isfatal && !dd->diag_client) {
qib_dev_err(dd, "Fatal Hardware Error, no longer" qib_dev_err(dd,
" usable, SN %.16s\n", dd->serial); "Fatal Hardware Error, no longer usable, SN %.16s\n",
dd->serial);
/* /*
* for /sys status file and user programs to print; if no * for /sys status file and user programs to print; if no
* trailing brace is copied, we'll know it was truncated. * trailing brace is copied, we'll know it was truncated.
@ -2669,8 +2675,9 @@ static noinline void unknown_7322_ibits(struct qib_devdata *dd, u64 istat)
char msg[128]; char msg[128];
kills = istat & ~QIB_I_BITSEXTANT; kills = istat & ~QIB_I_BITSEXTANT;
qib_dev_err(dd, "Clearing reserved interrupt(s) 0x%016llx:" qib_dev_err(dd,
" %s\n", (unsigned long long) kills, msg); "Clearing reserved interrupt(s) 0x%016llx: %s\n",
(unsigned long long) kills, msg);
qib_write_kreg(dd, kr_intmask, (dd->cspec->int_enable_mask & ~kills)); qib_write_kreg(dd, kr_intmask, (dd->cspec->int_enable_mask & ~kills));
} }
@ -3103,16 +3110,16 @@ static void qib_setup_7322_interrupt(struct qib_devdata *dd, int clearpend)
/* Try to get INTx interrupt */ /* Try to get INTx interrupt */
try_intx: try_intx:
if (!dd->pcidev->irq) { if (!dd->pcidev->irq) {
qib_dev_err(dd, "irq is 0, BIOS error? " qib_dev_err(dd,
"Interrupts won't work\n"); "irq is 0, BIOS error? Interrupts won't work\n");
goto bail; goto bail;
} }
ret = request_irq(dd->pcidev->irq, qib_7322intr, ret = request_irq(dd->pcidev->irq, qib_7322intr,
IRQF_SHARED, QIB_DRV_NAME, dd); IRQF_SHARED, QIB_DRV_NAME, dd);
if (ret) { if (ret) {
qib_dev_err(dd, "Couldn't setup INTx " qib_dev_err(dd,
"interrupt (irq=%d): %d\n", "Couldn't setup INTx interrupt (irq=%d): %d\n",
dd->pcidev->irq, ret); dd->pcidev->irq, ret);
goto bail; goto bail;
} }
dd->cspec->irq = dd->pcidev->irq; dd->cspec->irq = dd->pcidev->irq;
@ -3187,8 +3194,9 @@ try_intx:
* Shouldn't happen since the enable said we could * Shouldn't happen since the enable said we could
* have as many as we are trying to setup here. * have as many as we are trying to setup here.
*/ */
qib_dev_err(dd, "Couldn't setup MSIx " qib_dev_err(dd,
"interrupt (vec=%d, irq=%d): %d\n", msixnum, "Couldn't setup MSIx interrupt (vec=%d, irq=%d): %d\n",
msixnum,
dd->cspec->msix_entries[msixnum].msix.vector, dd->cspec->msix_entries[msixnum].msix.vector,
ret); ret);
qib_7322_nomsix(dd); qib_7322_nomsix(dd);
@ -3307,8 +3315,9 @@ static unsigned qib_7322_boardname(struct qib_devdata *dd)
(unsigned)SYM_FIELD(dd->revision, Revision_R, SW)); (unsigned)SYM_FIELD(dd->revision, Revision_R, SW));
if (qib_singleport && (features >> PORT_SPD_CAP_SHIFT) & PORT_SPD_CAP) { if (qib_singleport && (features >> PORT_SPD_CAP_SHIFT) & PORT_SPD_CAP) {
qib_devinfo(dd->pcidev, "IB%u: Forced to single port mode" qib_devinfo(dd->pcidev,
" by module parameter\n", dd->unit); "IB%u: Forced to single port mode by module parameter\n",
dd->unit);
features &= PORT_SPD_CAP; features &= PORT_SPD_CAP;
} }
@ -3402,8 +3411,8 @@ static int qib_do_7322_reset(struct qib_devdata *dd)
if (val == dd->revision) if (val == dd->revision)
break; break;
if (i == 5) { if (i == 5) {
qib_dev_err(dd, "Failed to initialize after reset, " qib_dev_err(dd,
"unusable\n"); "Failed to initialize after reset, unusable\n");
ret = 0; ret = 0;
goto bail; goto bail;
} }
@ -3434,8 +3443,8 @@ static int qib_do_7322_reset(struct qib_devdata *dd)
if (qib_pcie_params(dd, dd->lbus_width, if (qib_pcie_params(dd, dd->lbus_width,
&dd->cspec->num_msix_entries, &dd->cspec->num_msix_entries,
dd->cspec->msix_entries)) dd->cspec->msix_entries))
qib_dev_err(dd, "Reset failed to setup PCIe or interrupts; " qib_dev_err(dd,
"continuing anyway\n"); "Reset failed to setup PCIe or interrupts; continuing anyway\n");
qib_setup_7322_interrupt(dd, 1); qib_setup_7322_interrupt(dd, 1);
@ -3476,8 +3485,9 @@ static void qib_7322_put_tid(struct qib_devdata *dd, u64 __iomem *tidptr,
return; return;
} }
if (chippa >= (1UL << IBA7322_TID_SZ_SHIFT)) { if (chippa >= (1UL << IBA7322_TID_SZ_SHIFT)) {
qib_dev_err(dd, "Physical page address 0x%lx " qib_dev_err(dd,
"larger than supported\n", pa); "Physical page address 0x%lx larger than supported\n",
pa);
return; return;
} }
@ -4031,8 +4041,9 @@ static int qib_7322_set_loopback(struct qib_pportdata *ppd, const char *what)
Loopback); Loopback);
/* enable heart beat again */ /* enable heart beat again */
val = IBA7322_IBC_HRTBT_RMASK << IBA7322_IBC_HRTBT_LSB; val = IBA7322_IBC_HRTBT_RMASK << IBA7322_IBC_HRTBT_LSB;
qib_devinfo(ppd->dd->pcidev, "Disabling IB%u:%u IBC loopback " qib_devinfo(ppd->dd->pcidev,
"(normal)\n", ppd->dd->unit, ppd->port); "Disabling IB%u:%u IBC loopback (normal)\n",
ppd->dd->unit, ppd->port);
} else } else
ret = -EINVAL; ret = -EINVAL;
if (!ret) { if (!ret) {
@ -4716,8 +4727,8 @@ static void init_7322_cntrnames(struct qib_devdata *dd)
dd->pport[i].cpspec->portcntrs = kmalloc(dd->cspec->nportcntrs dd->pport[i].cpspec->portcntrs = kmalloc(dd->cspec->nportcntrs
* sizeof(u64), GFP_KERNEL); * sizeof(u64), GFP_KERNEL);
if (!dd->pport[i].cpspec->portcntrs) if (!dd->pport[i].cpspec->portcntrs)
qib_dev_err(dd, "Failed allocation for" qib_dev_err(dd,
" portcounters\n"); "Failed allocation for portcounters\n");
} }
} }
@ -4867,8 +4878,8 @@ static int qib_7322_intr_fallback(struct qib_devdata *dd)
if (!dd->cspec->num_msix_entries) if (!dd->cspec->num_msix_entries)
return 0; /* already using INTx */ return 0; /* already using INTx */
qib_devinfo(dd->pcidev, "MSIx interrupt not detected," qib_devinfo(dd->pcidev,
" trying INTx interrupts\n"); "MSIx interrupt not detected, trying INTx interrupts\n");
qib_7322_nomsix(dd); qib_7322_nomsix(dd);
qib_enable_intx(dd->pcidev); qib_enable_intx(dd->pcidev);
qib_setup_7322_interrupt(dd, 0); qib_setup_7322_interrupt(dd, 0);
@ -5842,22 +5853,21 @@ static int setup_txselect(const char *str, struct kernel_param *kp)
{ {
struct qib_devdata *dd; struct qib_devdata *dd;
unsigned long val; unsigned long val;
char *n; int ret;
if (strlen(str) >= MAX_ATTEN_LEN) { if (strlen(str) >= MAX_ATTEN_LEN) {
printk(KERN_INFO QIB_DRV_NAME " txselect_values string " pr_info("txselect_values string too long\n");
"too long\n");
return -ENOSPC; return -ENOSPC;
} }
val = simple_strtoul(str, &n, 0); ret = kstrtoul(str, 0, &val);
if (n == str || val >= (TXDDS_TABLE_SZ + TXDDS_EXTRA_SZ + if (ret || val >= (TXDDS_TABLE_SZ + TXDDS_EXTRA_SZ +
TXDDS_MFG_SZ)) { TXDDS_MFG_SZ)) {
printk(KERN_INFO QIB_DRV_NAME pr_info("txselect_values must start with a number < %d\n",
"txselect_values must start with a number < %d\n",
TXDDS_TABLE_SZ + TXDDS_EXTRA_SZ + TXDDS_MFG_SZ); TXDDS_TABLE_SZ + TXDDS_EXTRA_SZ + TXDDS_MFG_SZ);
return -EINVAL; return ret ? ret : -EINVAL;
} }
strcpy(txselect_list, str);
strcpy(txselect_list, str);
list_for_each_entry(dd, &qib_dev_list, list) list_for_each_entry(dd, &qib_dev_list, list)
if (dd->deviceid == PCI_DEVICE_ID_QLOGIC_IB_7322) if (dd->deviceid == PCI_DEVICE_ID_QLOGIC_IB_7322)
set_no_qsfp_atten(dd, 1); set_no_qsfp_atten(dd, 1);
@ -5880,11 +5890,10 @@ static int qib_late_7322_initreg(struct qib_devdata *dd)
qib_write_kreg(dd, kr_sendpioavailaddr, dd->pioavailregs_phys); qib_write_kreg(dd, kr_sendpioavailaddr, dd->pioavailregs_phys);
val = qib_read_kreg64(dd, kr_sendpioavailaddr); val = qib_read_kreg64(dd, kr_sendpioavailaddr);
if (val != dd->pioavailregs_phys) { if (val != dd->pioavailregs_phys) {
qib_dev_err(dd, "Catastrophic software error, " qib_dev_err(dd,
"SendPIOAvailAddr written as %lx, " "Catastrophic software error, SendPIOAvailAddr written as %lx, read back as %llx\n",
"read back as %llx\n", (unsigned long) dd->pioavailregs_phys,
(unsigned long) dd->pioavailregs_phys, (unsigned long long) val);
(unsigned long long) val);
ret = -EINVAL; ret = -EINVAL;
} }
@ -6096,8 +6105,8 @@ static int qib_init_7322_variables(struct qib_devdata *dd)
dd->revision = readq(&dd->kregbase[kr_revision]); dd->revision = readq(&dd->kregbase[kr_revision]);
if ((dd->revision & 0xffffffffU) == 0xffffffffU) { if ((dd->revision & 0xffffffffU) == 0xffffffffU) {
qib_dev_err(dd, "Revision register read failure, " qib_dev_err(dd,
"giving up initialization\n"); "Revision register read failure, giving up initialization\n");
ret = -ENODEV; ret = -ENODEV;
goto bail; goto bail;
} }
@ -6263,9 +6272,9 @@ static int qib_init_7322_variables(struct qib_devdata *dd)
*/ */
if (!(dd->flags & QIB_HAS_QSFP)) { if (!(dd->flags & QIB_HAS_QSFP)) {
if (!IS_QMH(dd) && !IS_QME(dd)) if (!IS_QMH(dd) && !IS_QME(dd))
qib_devinfo(dd->pcidev, "IB%u:%u: " qib_devinfo(dd->pcidev,
"Unknown mezzanine card type\n", "IB%u:%u: Unknown mezzanine card type\n",
dd->unit, ppd->port); dd->unit, ppd->port);
cp->h1_val = IS_QMH(dd) ? H1_FORCE_QMH : H1_FORCE_QME; cp->h1_val = IS_QMH(dd) ? H1_FORCE_QMH : H1_FORCE_QME;
/* /*
* Choose center value as default tx serdes setting * Choose center value as default tx serdes setting
@ -6920,8 +6929,8 @@ struct qib_devdata *qib_init_iba7322_funcs(struct pci_dev *pdev,
dd->cspec->msix_entries[i].msix.entry = i; dd->cspec->msix_entries[i].msix.entry = i;
if (qib_pcie_params(dd, 8, &tabsize, dd->cspec->msix_entries)) if (qib_pcie_params(dd, 8, &tabsize, dd->cspec->msix_entries))
qib_dev_err(dd, "Failed to setup PCIe or interrupts; " qib_dev_err(dd,
"continuing anyway\n"); "Failed to setup PCIe or interrupts; continuing anyway\n");
/* may be less than we wanted, if not enough available */ /* may be less than we wanted, if not enough available */
dd->cspec->num_msix_entries = tabsize; dd->cspec->num_msix_entries = tabsize;
@ -7274,8 +7283,7 @@ static void find_best_ent(struct qib_pportdata *ppd,
ppd->cpspec->no_eep < (TXDDS_TABLE_SZ + TXDDS_EXTRA_SZ + ppd->cpspec->no_eep < (TXDDS_TABLE_SZ + TXDDS_EXTRA_SZ +
TXDDS_MFG_SZ)) { TXDDS_MFG_SZ)) {
idx = ppd->cpspec->no_eep - (TXDDS_TABLE_SZ + TXDDS_EXTRA_SZ); idx = ppd->cpspec->no_eep - (TXDDS_TABLE_SZ + TXDDS_EXTRA_SZ);
printk(KERN_INFO QIB_DRV_NAME pr_info("IB%u:%u use idx %u into txdds_mfg\n",
" IB%u:%u use idx %u into txdds_mfg\n",
ppd->dd->unit, ppd->port, idx); ppd->dd->unit, ppd->port, idx);
*sdr_dds = &txdds_extra_mfg[idx]; *sdr_dds = &txdds_extra_mfg[idx];
*ddr_dds = &txdds_extra_mfg[idx]; *ddr_dds = &txdds_extra_mfg[idx];
@ -7430,11 +7438,11 @@ static void serdes_7322_los_enable(struct qib_pportdata *ppd, int enable)
u8 state = SYM_FIELD(data, IBSerdesCtrl_0, RXLOSEN); u8 state = SYM_FIELD(data, IBSerdesCtrl_0, RXLOSEN);
if (enable && !state) { if (enable && !state) {
printk(KERN_INFO QIB_DRV_NAME " IB%u:%u Turning LOS on\n", pr_info("IB%u:%u Turning LOS on\n",
ppd->dd->unit, ppd->port); ppd->dd->unit, ppd->port);
data |= SYM_MASK(IBSerdesCtrl_0, RXLOSEN); data |= SYM_MASK(IBSerdesCtrl_0, RXLOSEN);
} else if (!enable && state) { } else if (!enable && state) {
printk(KERN_INFO QIB_DRV_NAME " IB%u:%u Turning LOS off\n", pr_info("IB%u:%u Turning LOS off\n",
ppd->dd->unit, ppd->port); ppd->dd->unit, ppd->port);
data &= ~SYM_MASK(IBSerdesCtrl_0, RXLOSEN); data &= ~SYM_MASK(IBSerdesCtrl_0, RXLOSEN);
} }
@ -7670,8 +7678,7 @@ static int serdes_7322_init_new(struct qib_pportdata *ppd)
} }
} }
if (chan_done) { if (chan_done) {
printk(KERN_INFO QIB_DRV_NAME pr_info("Serdes %d calibration not done after .5 sec: 0x%x\n",
" Serdes %d calibration not done after .5 sec: 0x%x\n",
IBSD(ppd->hw_pidx), chan_done); IBSD(ppd->hw_pidx), chan_done);
} else { } else {
for (chan = 0; chan < SERDES_CHANS; ++chan) { for (chan = 0; chan < SERDES_CHANS; ++chan) {
@ -7679,9 +7686,8 @@ static int serdes_7322_init_new(struct qib_pportdata *ppd)
(chan + (chan >> 1)), (chan + (chan >> 1)),
25, 0, 0); 25, 0, 0);
if ((~rxcaldone & (u32)BMASK(10, 10)) == 0) if ((~rxcaldone & (u32)BMASK(10, 10)) == 0)
printk(KERN_INFO QIB_DRV_NAME pr_info("Serdes %d chan %d calibration failed\n",
" Serdes %d chan %d calibration " IBSD(ppd->hw_pidx), chan);
"failed\n", IBSD(ppd->hw_pidx), chan);
} }
} }

View File

@ -38,11 +38,15 @@
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/idr.h> #include <linux/idr.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/printk.h>
#include "qib.h" #include "qib.h"
#include "qib_common.h" #include "qib_common.h"
#include "qib_mad.h" #include "qib_mad.h"
#undef pr_fmt
#define pr_fmt(fmt) QIB_DRV_NAME ": " fmt
/* /*
* min buffers we want to have per context, after driver * min buffers we want to have per context, after driver
*/ */
@ -124,8 +128,8 @@ int qib_create_ctxts(struct qib_devdata *dd)
*/ */
dd->rcd = kzalloc(sizeof(*dd->rcd) * dd->ctxtcnt, GFP_KERNEL); dd->rcd = kzalloc(sizeof(*dd->rcd) * dd->ctxtcnt, GFP_KERNEL);
if (!dd->rcd) { if (!dd->rcd) {
qib_dev_err(dd, "Unable to allocate ctxtdata array, " qib_dev_err(dd,
"failing\n"); "Unable to allocate ctxtdata array, failing\n");
ret = -ENOMEM; ret = -ENOMEM;
goto done; goto done;
} }
@ -141,8 +145,8 @@ int qib_create_ctxts(struct qib_devdata *dd)
ppd = dd->pport + (i % dd->num_pports); ppd = dd->pport + (i % dd->num_pports);
rcd = qib_create_ctxtdata(ppd, i); rcd = qib_create_ctxtdata(ppd, i);
if (!rcd) { if (!rcd) {
qib_dev_err(dd, "Unable to allocate ctxtdata" qib_dev_err(dd,
" for Kernel ctxt, failing\n"); "Unable to allocate ctxtdata for Kernel ctxt, failing\n");
ret = -ENOMEM; ret = -ENOMEM;
goto done; goto done;
} }
@ -303,8 +307,8 @@ static int init_pioavailregs(struct qib_devdata *dd)
&dd->pcidev->dev, PAGE_SIZE, &dd->pioavailregs_phys, &dd->pcidev->dev, PAGE_SIZE, &dd->pioavailregs_phys,
GFP_KERNEL); GFP_KERNEL);
if (!dd->pioavailregs_dma) { if (!dd->pioavailregs_dma) {
qib_dev_err(dd, "failed to allocate PIOavail reg area " qib_dev_err(dd,
"in memory\n"); "failed to allocate PIOavail reg area in memory\n");
ret = -ENOMEM; ret = -ENOMEM;
goto done; goto done;
} }
@ -359,15 +363,15 @@ static void init_shadow_tids(struct qib_devdata *dd)
pages = vzalloc(dd->cfgctxts * dd->rcvtidcnt * sizeof(struct page *)); pages = vzalloc(dd->cfgctxts * dd->rcvtidcnt * sizeof(struct page *));
if (!pages) { if (!pages) {
qib_dev_err(dd, "failed to allocate shadow page * " qib_dev_err(dd,
"array, no expected sends!\n"); "failed to allocate shadow page * array, no expected sends!\n");
goto bail; goto bail;
} }
addrs = vzalloc(dd->cfgctxts * dd->rcvtidcnt * sizeof(dma_addr_t)); addrs = vzalloc(dd->cfgctxts * dd->rcvtidcnt * sizeof(dma_addr_t));
if (!addrs) { if (!addrs) {
qib_dev_err(dd, "failed to allocate shadow dma handle " qib_dev_err(dd,
"array, no expected sends!\n"); "failed to allocate shadow dma handle array, no expected sends!\n");
goto bail_free; goto bail_free;
} }
@ -391,13 +395,13 @@ static int loadtime_init(struct qib_devdata *dd)
if (((dd->revision >> QLOGIC_IB_R_SOFTWARE_SHIFT) & if (((dd->revision >> QLOGIC_IB_R_SOFTWARE_SHIFT) &
QLOGIC_IB_R_SOFTWARE_MASK) != QIB_CHIP_SWVERSION) { QLOGIC_IB_R_SOFTWARE_MASK) != QIB_CHIP_SWVERSION) {
qib_dev_err(dd, "Driver only handles version %d, " qib_dev_err(dd,
"chip swversion is %d (%llx), failng\n", "Driver only handles version %d, chip swversion is %d (%llx), failng\n",
QIB_CHIP_SWVERSION, QIB_CHIP_SWVERSION,
(int)(dd->revision >> (int)(dd->revision >>
QLOGIC_IB_R_SOFTWARE_SHIFT) & QLOGIC_IB_R_SOFTWARE_SHIFT) &
QLOGIC_IB_R_SOFTWARE_MASK, QLOGIC_IB_R_SOFTWARE_MASK,
(unsigned long long) dd->revision); (unsigned long long) dd->revision);
ret = -ENOSYS; ret = -ENOSYS;
goto done; goto done;
} }
@ -501,8 +505,8 @@ static void verify_interrupt(unsigned long opaque)
*/ */
if (dd->int_counter == 0) { if (dd->int_counter == 0) {
if (!dd->f_intr_fallback(dd)) if (!dd->f_intr_fallback(dd))
dev_err(&dd->pcidev->dev, "No interrupts detected, " dev_err(&dd->pcidev->dev,
"not usable.\n"); "No interrupts detected, not usable.\n");
else /* re-arm the timer to see if fallback works */ else /* re-arm the timer to see if fallback works */
mod_timer(&dd->intrchk_timer, jiffies + HZ/2); mod_timer(&dd->intrchk_timer, jiffies + HZ/2);
} }
@ -587,9 +591,8 @@ static int qib_create_workqueues(struct qib_devdata *dd)
} }
return 0; return 0;
wq_error: wq_error:
pr_err( pr_err("create_singlethread_workqueue failed for port %d\n",
QIB_DRV_NAME ": create_singlethread_workqueue failed for port %d\n", pidx + 1);
pidx + 1);
for (pidx = 0; pidx < dd->num_pports; ++pidx) { for (pidx = 0; pidx < dd->num_pports; ++pidx) {
ppd = dd->pport + pidx; ppd = dd->pport + pidx;
if (ppd->qib_wq) { if (ppd->qib_wq) {
@ -665,8 +668,8 @@ int qib_init(struct qib_devdata *dd, int reinit)
if (!lastfail) if (!lastfail)
lastfail = qib_setup_eagerbufs(rcd); lastfail = qib_setup_eagerbufs(rcd);
if (lastfail) { if (lastfail) {
qib_dev_err(dd, "failed to allocate kernel ctxt's " qib_dev_err(dd,
"rcvhdrq and/or egr bufs\n"); "failed to allocate kernel ctxt's rcvhdrq and/or egr bufs\n");
continue; continue;
} }
} }
@ -1016,8 +1019,7 @@ static void qib_verify_pioperf(struct qib_devdata *dd)
/* 1 GiB/sec, slightly over IB SDR line rate */ /* 1 GiB/sec, slightly over IB SDR line rate */
if (lcnt < (emsecs * 1024U)) if (lcnt < (emsecs * 1024U))
qib_dev_err(dd, qib_dev_err(dd,
"Performance problem: bandwidth to PIO buffers is " "Performance problem: bandwidth to PIO buffers is only %u MiB/sec\n",
"only %u MiB/sec\n",
lcnt / (u32) emsecs); lcnt / (u32) emsecs);
preempt_enable(); preempt_enable();
@ -1090,8 +1092,8 @@ struct qib_devdata *qib_alloc_devdata(struct pci_dev *pdev, size_t extra)
if (qib_cpulist) if (qib_cpulist)
qib_cpulist_count = count; qib_cpulist_count = count;
else else
qib_early_err(&pdev->dev, "Could not alloc cpulist " qib_early_err(&pdev->dev,
"info, cpu affinity might be wrong\n"); "Could not alloc cpulist info, cpu affinity might be wrong\n");
} }
bail: bail:
@ -1180,21 +1182,20 @@ static int __init qlogic_ib_init(void)
*/ */
idr_init(&qib_unit_table); idr_init(&qib_unit_table);
if (!idr_pre_get(&qib_unit_table, GFP_KERNEL)) { if (!idr_pre_get(&qib_unit_table, GFP_KERNEL)) {
printk(KERN_ERR QIB_DRV_NAME ": idr_pre_get() failed\n"); pr_err("idr_pre_get() failed\n");
ret = -ENOMEM; ret = -ENOMEM;
goto bail_cq_wq; goto bail_cq_wq;
} }
ret = pci_register_driver(&qib_driver); ret = pci_register_driver(&qib_driver);
if (ret < 0) { if (ret < 0) {
printk(KERN_ERR QIB_DRV_NAME pr_err("Unable to register driver: error %d\n", -ret);
": Unable to register driver: error %d\n", -ret);
goto bail_unit; goto bail_unit;
} }
/* not fatal if it doesn't work */ /* not fatal if it doesn't work */
if (qib_init_qibfs()) if (qib_init_qibfs())
printk(KERN_ERR QIB_DRV_NAME ": Unable to register ipathfs\n"); pr_err("Unable to register ipathfs\n");
goto bail; /* all OK */ goto bail; /* all OK */
bail_unit: bail_unit:
@ -1218,9 +1219,9 @@ static void __exit qlogic_ib_cleanup(void)
ret = qib_exit_qibfs(); ret = qib_exit_qibfs();
if (ret) if (ret)
printk(KERN_ERR QIB_DRV_NAME ": " pr_err(
"Unable to cleanup counter filesystem: " "Unable to cleanup counter filesystem: error %d\n",
"error %d\n", -ret); -ret);
pci_unregister_driver(&qib_driver); pci_unregister_driver(&qib_driver);
@ -1360,9 +1361,9 @@ static int __devinit qib_init_one(struct pci_dev *pdev,
#ifdef CONFIG_PCI_MSI #ifdef CONFIG_PCI_MSI
dd = qib_init_iba6120_funcs(pdev, ent); dd = qib_init_iba6120_funcs(pdev, ent);
#else #else
qib_early_err(&pdev->dev, "QLogic PCIE device 0x%x cannot " qib_early_err(&pdev->dev,
"work if CONFIG_PCI_MSI is not enabled\n", "QLogic PCIE device 0x%x cannot work if CONFIG_PCI_MSI is not enabled\n",
ent->device); ent->device);
dd = ERR_PTR(-ENODEV); dd = ERR_PTR(-ENODEV);
#endif #endif
break; break;
@ -1376,8 +1377,9 @@ static int __devinit qib_init_one(struct pci_dev *pdev,
break; break;
default: default:
qib_early_err(&pdev->dev, "Failing on unknown QLogic " qib_early_err(&pdev->dev,
"deviceid 0x%x\n", ent->device); "Failing on unknown QLogic deviceid 0x%x\n",
ent->device);
ret = -ENODEV; ret = -ENODEV;
} }
@ -1434,9 +1436,9 @@ static int __devinit qib_init_one(struct pci_dev *pdev,
if (!qib_wc_pat) { if (!qib_wc_pat) {
ret = qib_enable_wc(dd); ret = qib_enable_wc(dd);
if (ret) { if (ret) {
qib_dev_err(dd, "Write combining not enabled " qib_dev_err(dd,
"(err %d): performance may be poor\n", "Write combining not enabled (err %d): performance may be poor\n",
-ret); -ret);
ret = 0; ret = 0;
} }
} }
@ -1502,9 +1504,9 @@ int qib_create_rcvhdrq(struct qib_devdata *dd, struct qib_ctxtdata *rcd)
gfp_flags | __GFP_COMP); gfp_flags | __GFP_COMP);
if (!rcd->rcvhdrq) { if (!rcd->rcvhdrq) {
qib_dev_err(dd, "attempt to allocate %d bytes " qib_dev_err(dd,
"for ctxt %u rcvhdrq failed\n", "attempt to allocate %d bytes for ctxt %u rcvhdrq failed\n",
amt, rcd->ctxt); amt, rcd->ctxt);
goto bail; goto bail;
} }
@ -1533,8 +1535,9 @@ int qib_create_rcvhdrq(struct qib_devdata *dd, struct qib_ctxtdata *rcd)
return 0; return 0;
bail_free: bail_free:
qib_dev_err(dd, "attempt to allocate 1 page for ctxt %u " qib_dev_err(dd,
"rcvhdrqtailaddr failed\n", rcd->ctxt); "attempt to allocate 1 page for ctxt %u rcvhdrqtailaddr failed\n",
rcd->ctxt);
vfree(rcd->user_event_mask); vfree(rcd->user_event_mask);
rcd->user_event_mask = NULL; rcd->user_event_mask = NULL;
bail_free_hdrq: bail_free_hdrq:

View File

@ -224,15 +224,15 @@ void qib_bad_intrstatus(struct qib_devdata *dd)
* We print the message and disable interrupts, in hope of * We print the message and disable interrupts, in hope of
* having a better chance of debugging the problem. * having a better chance of debugging the problem.
*/ */
qib_dev_err(dd, "Read of chip interrupt status failed" qib_dev_err(dd,
" disabling interrupts\n"); "Read of chip interrupt status failed disabling interrupts\n");
if (allbits++) { if (allbits++) {
/* disable interrupt delivery, something is very wrong */ /* disable interrupt delivery, something is very wrong */
if (allbits == 2) if (allbits == 2)
dd->f_set_intr_state(dd, 0); dd->f_set_intr_state(dd, 0);
if (allbits == 3) { if (allbits == 3) {
qib_dev_err(dd, "2nd bad interrupt status, " qib_dev_err(dd,
"unregistering interrupts\n"); "2nd bad interrupt status, unregistering interrupts\n");
dd->flags |= QIB_BADINTR; dd->flags |= QIB_BADINTR;
dd->flags &= ~QIB_INITTED; dd->flags &= ~QIB_INITTED;
dd->f_free_irq(dd); dd->f_free_irq(dd);

View File

@ -224,8 +224,9 @@ static void qib_msix_setup(struct qib_devdata *dd, int pos, u32 *msixcnt,
} }
do_intx: do_intx:
if (ret) { if (ret) {
qib_dev_err(dd, "pci_enable_msix %d vectors failed: %d, " qib_dev_err(dd,
"falling back to INTx\n", tabsize, ret); "pci_enable_msix %d vectors failed: %d, falling back to INTx\n",
tabsize, ret);
tabsize = 0; tabsize = 0;
} }
for (i = 0; i < tabsize; i++) for (i = 0; i < tabsize; i++)
@ -251,8 +252,9 @@ static int qib_msi_setup(struct qib_devdata *dd, int pos)
ret = pci_enable_msi(pdev); ret = pci_enable_msi(pdev);
if (ret) if (ret)
qib_dev_err(dd, "pci_enable_msi failed: %d, " qib_dev_err(dd,
"interrupts may not work\n", ret); "pci_enable_msi failed: %d, interrupts may not work\n",
ret);
/* continue even if it fails, we may still be OK... */ /* continue even if it fails, we may still be OK... */
pci_read_config_dword(pdev, pos + PCI_MSI_ADDRESS_LO, pci_read_config_dword(pdev, pos + PCI_MSI_ADDRESS_LO,
@ -358,8 +360,8 @@ int qib_reinit_intr(struct qib_devdata *dd)
pos = pci_find_capability(dd->pcidev, PCI_CAP_ID_MSI); pos = pci_find_capability(dd->pcidev, PCI_CAP_ID_MSI);
if (!pos) { if (!pos) {
qib_dev_err(dd, "Can't find MSI capability, " qib_dev_err(dd,
"can't restore MSI settings\n"); "Can't find MSI capability, can't restore MSI settings\n");
ret = 0; ret = 0;
/* nothing special for MSIx, just MSI */ /* nothing special for MSIx, just MSI */
goto bail; goto bail;
@ -471,8 +473,8 @@ void qib_pcie_reenable(struct qib_devdata *dd, u16 cmd, u8 iline, u8 cline)
pci_write_config_byte(dd->pcidev, PCI_CACHE_LINE_SIZE, cline); pci_write_config_byte(dd->pcidev, PCI_CACHE_LINE_SIZE, cline);
r = pci_enable_device(dd->pcidev); r = pci_enable_device(dd->pcidev);
if (r) if (r)
qib_dev_err(dd, "pci_enable_device failed after " qib_dev_err(dd,
"reset: %d\n", r); "pci_enable_device failed after reset: %d\n", r);
} }
/* code to adjust PCIe capabilities. */ /* code to adjust PCIe capabilities. */
@ -717,8 +719,9 @@ qib_pci_mmio_enabled(struct pci_dev *pdev)
if (words == ~0ULL) if (words == ~0ULL)
ret = PCI_ERS_RESULT_NEED_RESET; ret = PCI_ERS_RESULT_NEED_RESET;
} }
qib_devinfo(pdev, "QIB mmio_enabled function called, " qib_devinfo(pdev,
"read wordscntr %Lx, returning %d\n", words, ret); "QIB mmio_enabled function called, read wordscntr %Lx, returning %d\n",
words, ret);
return ret; return ret;
} }

View File

@ -1,6 +1,6 @@
/* /*
* Copyright (c) 2006, 2007, 2008, 2009, 2010 QLogic Corporation. * Copyright (c) 2012 Intel Corporation. All rights reserved.
* All rights reserved. * Copyright (c) 2006 - 2012 QLogic Corporation. All rights reserved.
* Copyright (c) 2003, 2004, 2005, 2006 PathScale, Inc. All rights reserved. * Copyright (c) 2003, 2004, 2005, 2006 PathScale, Inc. All rights reserved.
* *
* This software is available to you under a choice of one of two * This software is available to you under a choice of one of two
@ -342,15 +342,17 @@ static void qib_sd_trimdone_monitor(struct qib_devdata *dd,
ret = qib_sd7220_reg_mod(dd, IB_7220_SERDES, ret = qib_sd7220_reg_mod(dd, IB_7220_SERDES,
IB_CTRL2(chn), 0, 0); IB_CTRL2(chn), 0, 0);
if (ret < 0) if (ret < 0)
qib_dev_err(dd, "Failed checking TRIMDONE, chn %d" qib_dev_err(dd,
" (%s)\n", chn, where); "Failed checking TRIMDONE, chn %d (%s)\n",
chn, where);
if (!(ret & 0x10)) { if (!(ret & 0x10)) {
int probe; int probe;
baduns |= (1 << chn); baduns |= (1 << chn);
qib_dev_err(dd, "TRIMDONE cleared on chn %d (%02X)." qib_dev_err(dd,
" (%s)\n", chn, ret, where); "TRIMDONE cleared on chn %d (%02X). (%s)\n",
chn, ret, where);
probe = qib_sd7220_reg_mod(dd, IB_7220_SERDES, probe = qib_sd7220_reg_mod(dd, IB_7220_SERDES,
IB_PGUDP(0), 0, 0); IB_PGUDP(0), 0, 0);
qib_dev_err(dd, "probe is %d (%02X)\n", qib_dev_err(dd, "probe is %d (%02X)\n",
@ -375,8 +377,8 @@ static void qib_sd_trimdone_monitor(struct qib_devdata *dd,
ret = qib_sd7220_reg_mod(dd, IB_7220_SERDES, ret = qib_sd7220_reg_mod(dd, IB_7220_SERDES,
IB_CTRL2(chn), 0x10, 0x10); IB_CTRL2(chn), 0x10, 0x10);
if (ret < 0) if (ret < 0)
qib_dev_err(dd, "Failed re-setting " qib_dev_err(dd,
"TRIMDONE, chn %d (%s)\n", "Failed re-setting TRIMDONE, chn %d (%s)\n",
chn, where); chn, where);
} }
} }
@ -1144,10 +1146,10 @@ static int ibsd_mod_allchnls(struct qib_devdata *dd, int loc, int val,
if (ret < 0) { if (ret < 0) {
int sloc = loc >> EPB_ADDR_SHF; int sloc = loc >> EPB_ADDR_SHF;
qib_dev_err(dd, "pre-read failed: elt %d," qib_dev_err(dd,
" addr 0x%X, chnl %d\n", "pre-read failed: elt %d, addr 0x%X, chnl %d\n",
(sloc & 0xF), (sloc & 0xF),
(sloc >> 9) & 0x3f, chnl); (sloc >> 9) & 0x3f, chnl);
return ret; return ret;
} }
val = (ret & ~mask) | (val & mask); val = (ret & ~mask) | (val & mask);
@ -1157,9 +1159,9 @@ static int ibsd_mod_allchnls(struct qib_devdata *dd, int loc, int val,
if (ret < 0) { if (ret < 0) {
int sloc = loc >> EPB_ADDR_SHF; int sloc = loc >> EPB_ADDR_SHF;
qib_dev_err(dd, "Global WR failed: elt %d," qib_dev_err(dd,
" addr 0x%X, val %02X\n", "Global WR failed: elt %d, addr 0x%X, val %02X\n",
(sloc & 0xF), (sloc >> 9) & 0x3f, val); (sloc & 0xF), (sloc >> 9) & 0x3f, val);
} }
return ret; return ret;
} }
@ -1173,11 +1175,10 @@ static int ibsd_mod_allchnls(struct qib_devdata *dd, int loc, int val,
if (ret < 0) { if (ret < 0) {
int sloc = loc >> EPB_ADDR_SHF; int sloc = loc >> EPB_ADDR_SHF;
qib_dev_err(dd, "Write failed: elt %d," qib_dev_err(dd,
" addr 0x%X, chnl %d, val 0x%02X," "Write failed: elt %d, addr 0x%X, chnl %d, val 0x%02X, mask 0x%02X\n",
" mask 0x%02X\n", (sloc & 0xF), (sloc >> 9) & 0x3f, chnl,
(sloc & 0xF), (sloc >> 9) & 0x3f, chnl, val & 0xFF, mask & 0xFF);
val & 0xFF, mask & 0xFF);
break; break;
} }
} }

View File

@ -1,5 +1,6 @@
/* /*
* Copyright (c) 2007, 2008, 2009, 2010 QLogic Corporation. All rights reserved. * Copyright (c) 2012 Intel Corporation. All rights reserved.
* Copyright (c) 2007 - 2012 QLogic Corporation. All rights reserved.
* *
* This software is available to you under a choice of one of two * This software is available to you under a choice of one of two
* licenses. You may choose to be licensed under the terms of the GNU * licenses. You may choose to be licensed under the terms of the GNU
@ -276,8 +277,8 @@ static int alloc_sdma(struct qib_pportdata *ppd)
GFP_KERNEL); GFP_KERNEL);
if (!ppd->sdma_descq) { if (!ppd->sdma_descq) {
qib_dev_err(ppd->dd, "failed to allocate SendDMA descriptor " qib_dev_err(ppd->dd,
"FIFO memory\n"); "failed to allocate SendDMA descriptor FIFO memory\n");
goto bail; goto bail;
} }
@ -285,8 +286,8 @@ static int alloc_sdma(struct qib_pportdata *ppd)
ppd->sdma_head_dma = dma_alloc_coherent(&ppd->dd->pcidev->dev, ppd->sdma_head_dma = dma_alloc_coherent(&ppd->dd->pcidev->dev,
PAGE_SIZE, &ppd->sdma_head_phys, GFP_KERNEL); PAGE_SIZE, &ppd->sdma_head_phys, GFP_KERNEL);
if (!ppd->sdma_head_dma) { if (!ppd->sdma_head_dma) {
qib_dev_err(ppd->dd, "failed to allocate SendDMA " qib_dev_err(ppd->dd,
"head memory\n"); "failed to allocate SendDMA head memory\n");
goto cleanup_descq; goto cleanup_descq;
} }
ppd->sdma_head_dma[0] = 0; ppd->sdma_head_dma[0] = 0;

View File

@ -36,41 +36,6 @@
#include "qib.h" #include "qib.h"
#include "qib_mad.h" #include "qib_mad.h"
/**
* qib_parse_ushort - parse an unsigned short value in an arbitrary base
* @str: the string containing the number
* @valp: where to put the result
*
* Returns the number of bytes consumed, or negative value on error.
*/
static int qib_parse_ushort(const char *str, unsigned short *valp)
{
unsigned long val;
char *end;
int ret;
if (!isdigit(str[0])) {
ret = -EINVAL;
goto bail;
}
val = simple_strtoul(str, &end, 0);
if (val > 0xffff) {
ret = -EINVAL;
goto bail;
}
*valp = val;
ret = end + 1 - str;
if (ret == 0)
ret = -EINVAL;
bail:
return ret;
}
/* start of per-port functions */ /* start of per-port functions */
/* /*
* Get/Set heartbeat enable. OR of 1=enabled, 2=auto * Get/Set heartbeat enable. OR of 1=enabled, 2=auto
@ -92,7 +57,11 @@ static ssize_t store_hrtbt_enb(struct qib_pportdata *ppd, const char *buf,
int ret; int ret;
u16 val; u16 val;
ret = qib_parse_ushort(buf, &val); ret = kstrtou16(buf, 0, &val);
if (ret) {
qib_dev_err(dd, "attempt to set invalid Heartbeat enable\n");
return ret;
}
/* /*
* Set the "intentional" heartbeat enable per either of * Set the "intentional" heartbeat enable per either of
@ -101,10 +70,7 @@ static ssize_t store_hrtbt_enb(struct qib_pportdata *ppd, const char *buf,
* because entering loopback mode overrides it and automatically * because entering loopback mode overrides it and automatically
* disables heartbeat. * disables heartbeat.
*/ */
if (ret >= 0) ret = dd->f_set_ib_cfg(ppd, QIB_IB_CFG_HRTBT, val);
ret = dd->f_set_ib_cfg(ppd, QIB_IB_CFG_HRTBT, val);
if (ret < 0)
qib_dev_err(dd, "attempt to set invalid Heartbeat enable\n");
return ret < 0 ? ret : count; return ret < 0 ? ret : count;
} }
@ -128,12 +94,14 @@ static ssize_t store_led_override(struct qib_pportdata *ppd, const char *buf,
int ret; int ret;
u16 val; u16 val;
ret = qib_parse_ushort(buf, &val); ret = kstrtou16(buf, 0, &val);
if (ret > 0) if (ret) {
qib_set_led_override(ppd, val);
else
qib_dev_err(dd, "attempt to set invalid LED override\n"); qib_dev_err(dd, "attempt to set invalid LED override\n");
return ret < 0 ? ret : count; return ret;
}
qib_set_led_override(ppd, val);
return count;
} }
static ssize_t show_status(struct qib_pportdata *ppd, char *buf) static ssize_t show_status(struct qib_pportdata *ppd, char *buf)
@ -501,12 +469,12 @@ static ssize_t diagc_attr_store(struct kobject *kobj, struct attribute *attr,
struct qib_pportdata *ppd = struct qib_pportdata *ppd =
container_of(kobj, struct qib_pportdata, diagc_kobj); container_of(kobj, struct qib_pportdata, diagc_kobj);
struct qib_ibport *qibp = &ppd->ibport_data; struct qib_ibport *qibp = &ppd->ibport_data;
char *endp; u32 val;
long val = simple_strtol(buf, &endp, 0); int ret;
if (val < 0 || endp == buf)
return -EINVAL;
ret = kstrtou32(buf, 0, &val);
if (ret)
return ret;
*(u32 *)((char *) qibp + dattr->counter) = val; *(u32 *)((char *) qibp + dattr->counter) = val;
return size; return size;
} }
@ -739,8 +707,9 @@ int qib_create_port_files(struct ib_device *ibdev, u8 port_num,
int ret; int ret;
if (!port_num || port_num > dd->num_pports) { if (!port_num || port_num > dd->num_pports) {
qib_dev_err(dd, "Skipping infiniband class with " qib_dev_err(dd,
"invalid port %u\n", port_num); "Skipping infiniband class with invalid port %u\n",
port_num);
ret = -ENODEV; ret = -ENODEV;
goto bail; goto bail;
} }
@ -749,8 +718,9 @@ int qib_create_port_files(struct ib_device *ibdev, u8 port_num,
ret = kobject_init_and_add(&ppd->pport_kobj, &qib_port_ktype, kobj, ret = kobject_init_and_add(&ppd->pport_kobj, &qib_port_ktype, kobj,
"linkcontrol"); "linkcontrol");
if (ret) { if (ret) {
qib_dev_err(dd, "Skipping linkcontrol sysfs info, " qib_dev_err(dd,
"(err %d) port %u\n", ret, port_num); "Skipping linkcontrol sysfs info, (err %d) port %u\n",
ret, port_num);
goto bail; goto bail;
} }
kobject_uevent(&ppd->pport_kobj, KOBJ_ADD); kobject_uevent(&ppd->pport_kobj, KOBJ_ADD);
@ -758,8 +728,9 @@ int qib_create_port_files(struct ib_device *ibdev, u8 port_num,
ret = kobject_init_and_add(&ppd->sl2vl_kobj, &qib_sl2vl_ktype, kobj, ret = kobject_init_and_add(&ppd->sl2vl_kobj, &qib_sl2vl_ktype, kobj,
"sl2vl"); "sl2vl");
if (ret) { if (ret) {
qib_dev_err(dd, "Skipping sl2vl sysfs info, " qib_dev_err(dd,
"(err %d) port %u\n", ret, port_num); "Skipping sl2vl sysfs info, (err %d) port %u\n",
ret, port_num);
goto bail_link; goto bail_link;
} }
kobject_uevent(&ppd->sl2vl_kobj, KOBJ_ADD); kobject_uevent(&ppd->sl2vl_kobj, KOBJ_ADD);
@ -767,8 +738,9 @@ int qib_create_port_files(struct ib_device *ibdev, u8 port_num,
ret = kobject_init_and_add(&ppd->diagc_kobj, &qib_diagc_ktype, kobj, ret = kobject_init_and_add(&ppd->diagc_kobj, &qib_diagc_ktype, kobj,
"diag_counters"); "diag_counters");
if (ret) { if (ret) {
qib_dev_err(dd, "Skipping diag_counters sysfs info, " qib_dev_err(dd,
"(err %d) port %u\n", ret, port_num); "Skipping diag_counters sysfs info, (err %d) port %u\n",
ret, port_num);
goto bail_sl; goto bail_sl;
} }
kobject_uevent(&ppd->diagc_kobj, KOBJ_ADD); kobject_uevent(&ppd->diagc_kobj, KOBJ_ADD);

View File

@ -1,5 +1,6 @@
/* /*
* Copyright (c) 2006, 2007, 2008, 2009 QLogic Corporation. All rights reserved. * Copyright (c) 2012 Intel Corporation. All rights reserved.
* Copyright (c) 2006 - 2012 QLogic Corporation. All rights reserved.
* Copyright (c) 2003, 2004, 2005, 2006 PathScale, Inc. All rights reserved. * Copyright (c) 2003, 2004, 2005, 2006 PathScale, Inc. All rights reserved.
* *
* This software is available to you under a choice of one of two * This software is available to you under a choice of one of two
@ -449,8 +450,9 @@ int qib_twsi_blk_wr(struct qib_devdata *dd, int dev, int addr,
goto failed_write; goto failed_write;
ret = qib_twsi_wr(dd, addr, 0); ret = qib_twsi_wr(dd, addr, 0);
if (ret) { if (ret) {
qib_dev_err(dd, "Failed to write interface" qib_dev_err(dd,
" write addr %02X\n", addr); "Failed to write interface write addr %02X\n",
addr);
goto failed_write; goto failed_write;
} }
} }

View File

@ -1,5 +1,6 @@
/* /*
* Copyright (c) 2006, 2007, 2008, 2009 QLogic Corporation. All rights reserved. * Copyright (c) 2012 Intel Corporation. All rights reserved.
* Copyright (c) 2006 - 2012 QLogic Corporation. All rights reserved.
* Copyright (c) 2003, 2004, 2005, 2006 PathScale, Inc. All rights reserved. * Copyright (c) 2003, 2004, 2005, 2006 PathScale, Inc. All rights reserved.
* *
* This software is available to you under a choice of one of two * This software is available to you under a choice of one of two
@ -102,10 +103,10 @@ int qib_enable_wc(struct qib_devdata *dd)
u64 atmp; u64 atmp;
atmp = pioaddr & ~(piolen - 1); atmp = pioaddr & ~(piolen - 1);
if (atmp < addr || (atmp + piolen) > (addr + len)) { if (atmp < addr || (atmp + piolen) > (addr + len)) {
qib_dev_err(dd, "No way to align address/size " qib_dev_err(dd,
"(%llx/%llx), no WC mtrr\n", "No way to align address/size (%llx/%llx), no WC mtrr\n",
(unsigned long long) atmp, (unsigned long long) atmp,
(unsigned long long) piolen << 1); (unsigned long long) piolen << 1);
ret = -ENODEV; ret = -ENODEV;
} else { } else {
pioaddr = atmp; pioaddr = atmp;
@ -120,8 +121,7 @@ int qib_enable_wc(struct qib_devdata *dd)
if (cookie < 0) { if (cookie < 0) {
{ {
qib_devinfo(dd->pcidev, qib_devinfo(dd->pcidev,
"mtrr_add() WC for PIO bufs " "mtrr_add() WC for PIO bufs failed (%d)\n",
"failed (%d)\n",
cookie); cookie);
ret = -EINVAL; ret = -EINVAL;
} }