int
 qlcnic_pcie_sem_lock(struct qlcnic_adapter *adapter, int sem, u32 id_reg)
 {
-       int timeout = 0;
-       int err = 0;
-       u32 done = 0;
+       int timeout = 0, err = 0, done = 0;
 
        while (!done) {
                done = QLCRD32(adapter, QLCNIC_PCIE_REG(PCIE_SEM_LOCK(sem)),
                if (done == 1)
                        break;
                if (++timeout >= QLCNIC_PCIE_SEM_TIMEOUT) {
-                       dev_err(&adapter->pdev->dev,
-                               "Failed to acquire sem=%d lock; holdby=%d\n",
-                               sem,
-                               id_reg ? QLCRD32(adapter, id_reg, &err) : -1);
+                       if (id_reg) {
+                               done = QLCRD32(adapter, id_reg, &err);
+                               if (done != -1)
+                                       dev_err(&adapter->pdev->dev,
+                                               "Failed to acquire sem=%d lock held by=%d\n",
+                                               sem, done);
+                               else
+                                       dev_err(&adapter->pdev->dev,
+                                               "Failed to acquire sem=%d lock",
+                                               sem);
+                       } else {
+                               dev_err(&adapter->pdev->dev,
+                                       "Failed to acquire sem=%d lock", sem);
+                       }
                        return -EIO;
                }
                msleep(1);