* return value
  *      true if device removed, else false
  */
-static bool mtip_check_surprise_removal(struct pci_dev *pdev)
+static bool mtip_check_surprise_removal(struct driver_data *dd)
 {
        u16 vendor_id = 0;
-       struct driver_data *dd = pci_get_drvdata(pdev);
 
        if (dd->sr)
                return true;
 
        /* Read the vendorID from the configuration space */
-       pci_read_config_word(pdev, 0x00, &vendor_id);
+       pci_read_config_word(dd->pdev, 0x00, &vendor_id);
        if (vendor_id == 0xFFFF) {
                dd->sr = true;
                if (dd->queue)
 {
        int rv = 0;
 
-       if (mtip_check_surprise_removal(dd->pdev))
+       if (mtip_check_surprise_removal(dd))
                return 0;
 
        if (mtip_hba_reset(dd) < 0)
                dev_warn(&dd->pdev->dev,
                        "Port stat errors %x unhandled\n",
                        (port_stat & ~PORT_IRQ_HANDLED));
-               if (mtip_check_surprise_removal(dd->pdev))
+               if (mtip_check_surprise_removal(dd))
                        return;
        }
        if (likely(port_stat & (PORT_IRQ_TF_ERR | PORT_IRQ_IF_ERR))) {
                /* Acknowledge the interrupt status on the port.*/
                port_stat = readl(port->mmio + PORT_IRQ_STAT);
                if (unlikely(port_stat == 0xFFFFFFFF)) {
-                       mtip_check_surprise_removal(dd->pdev);
+                       mtip_check_surprise_removal(dd);
                        return IRQ_HANDLED;
                }
                writel(port_stat, port->mmio + PORT_IRQ_STAT);
                }
 
                if (unlikely(port_stat & PORT_IRQ_ERR)) {
-                       if (unlikely(mtip_check_surprise_removal(dd->pdev))) {
+                       if (unlikely(mtip_check_surprise_removal(dd))) {
                                /* don't proceed further */
                                return IRQ_HANDLED;
                        }
 
                msleep(100);
 
-               if (mtip_check_surprise_removal(port->dd->pdev))
+               if (mtip_check_surprise_removal(port->dd))
                        goto err_fault;
 
                active = mtip_commands_active(port);
                return -EFAULT;
        }
 
-       if (mtip_check_surprise_removal(dd->pdev))
+       if (mtip_check_surprise_removal(dd))
                return -EFAULT;
 
        rq = blk_mq_alloc_request(dd->queue, REQ_OP_DRV_IN, BLK_MQ_REQ_RESERVED);
                                fis->command, int_cmd->status);
                rv = -EIO;
 
-               if (mtip_check_surprise_removal(dd->pdev) ||
+               if (mtip_check_surprise_removal(dd) ||
                        test_bit(MTIP_DDF_REMOVE_PENDING_BIT,
                                        &dd->dd_flag)) {
                        dev_err(&dd->pdev->dev,
                if (unlikely(test_bit(MTIP_DDF_REMOVE_PENDING_BIT,
                                &dd->dd_flag)))
                        return -EFAULT;
-               if (mtip_check_surprise_removal(dd->pdev))
+               if (mtip_check_surprise_removal(dd))
                        return -EFAULT;
 
                if (mtip_get_identify(dd->port, NULL) < 0)
                 time_before(jiffies, timeout)) {
                mdelay(100);
        }
-       if (unlikely(mtip_check_surprise_removal(dd->pdev))) {
+       if (unlikely(mtip_check_surprise_removal(dd))) {
                timetaken = jiffies - timetaken;
                dev_warn(&dd->pdev->dev,
                        "Surprise removal detected at %u ms\n",
        list_add(&dd->remove_list, &removing_list);
        spin_unlock_irqrestore(&dev_lock, flags);
 
-       mtip_check_surprise_removal(pdev);
+       mtip_check_surprise_removal(dd);
        synchronize_irq(dd->pdev->irq);
 
        /* Spin until workers are done */