/* find device (with ACTIVE ports) with fewest ctxts in use */
                for (ndev = 0; ndev < devmax; ndev++) {
                        struct qib_devdata *dd = qib_lookup(ndev);
-                       unsigned cused = 0, cfree = 0;
+                       unsigned cused = 0, cfree = 0, pusable = 0;
                        if (!dd)
                                continue;
                        if (port && port <= dd->num_pports &&
                            usable(dd->pport + port - 1))
-                               dusable = 1;
+                               pusable = 1;
                        else
                                for (i = 0; i < dd->num_pports; i++)
                                        if (usable(dd->pport + i))
-                                               dusable++;
-                       if (!dusable)
+                                               pusable++;
+                       if (!pusable)
                                continue;
                        for (ctxt = dd->first_user_ctxt; ctxt < dd->cfgctxts;
                             ctxt++)
                                        cused++;
                                else
                                        cfree++;
-                       if (cfree && cused < inuse) {
+                       if (pusable && cfree && cused < inuse) {
                                udd = dd;
                                inuse = cused;
                        }