IB/qib: Fix multi-Florida HCA host panic on reboot
authorMike Marciniszyn <mike.marciniszyn@qlogic.com>
Tue, 11 Jan 2011 01:42:20 +0000 (17:42 -0800)
committerRoland Dreier <rolandd@cisco.com>
Tue, 11 Jan 2011 01:42:20 +0000 (17:42 -0800)
Add check when setting configured contexts that the value does not
exceed the number of contexts allocated for the card.  If the value
exceeds the already allocated count, set it to what is already
allocated.

Signed-off-by: Mike Marciniszyn <mike.marciniszyn@qlogic.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
drivers/infiniband/hw/qib/qib_init.c

index f3b50393604307a92fd1ee0b4e1f2e9bd706607c..7896afbb9ce8fe14a4c285c02758ddfb729fff80 100644 (file)
@@ -92,9 +92,11 @@ unsigned long *qib_cpulist;
 /* set number of contexts we'll actually use */
 void qib_set_ctxtcnt(struct qib_devdata *dd)
 {
-       if (!qib_cfgctxts)
+       if (!qib_cfgctxts) {
                dd->cfgctxts = dd->first_user_ctxt + num_online_cpus();
-       else if (qib_cfgctxts < dd->num_pports)
+               if (dd->cfgctxts > dd->ctxtcnt)
+                       dd->cfgctxts = dd->ctxtcnt;
+       } else if (qib_cfgctxts < dd->num_pports)
                dd->cfgctxts = dd->ctxtcnt;
        else if (qib_cfgctxts <= dd->ctxtcnt)
                dd->cfgctxts = qib_cfgctxts;