"until the card startup has completed.");
 
 static DEFINE_IDA(rsxx_disk_ida);
-static DEFINE_SPINLOCK(rsxx_ida_lock);
 
 /* --------------------Debugfs Setup ------------------- */
 
        card->dev = dev;
        pci_set_drvdata(dev, card);
 
-       do {
-               if (!ida_pre_get(&rsxx_disk_ida, GFP_KERNEL)) {
-                       st = -ENOMEM;
-                       goto failed_ida_get;
-               }
-
-               spin_lock(&rsxx_ida_lock);
-               st = ida_get_new(&rsxx_disk_ida, &card->disk_id);
-               spin_unlock(&rsxx_ida_lock);
-       } while (st == -EAGAIN);
-
-       if (st)
+       st = ida_alloc(&rsxx_disk_ida, GFP_KERNEL);
+       if (st < 0)
                goto failed_ida_get;
+       card->disk_id = st;
 
        st = pci_enable_device(dev);
        if (st)
 failed_dma_mask:
        pci_disable_device(dev);
 failed_enable:
-       spin_lock(&rsxx_ida_lock);
-       ida_remove(&rsxx_disk_ida, card->disk_id);
-       spin_unlock(&rsxx_ida_lock);
+       ida_free(&rsxx_disk_ida, card->disk_id);
 failed_ida_get:
        kfree(card);
 
        pci_disable_device(dev);
        pci_release_regions(dev);
 
+       ida_free(&rsxx_disk_ida, card->disk_id);
        kfree(card);
 }