return (pci->bus->number << 8) | pci->devfn;
 }
 
-static int dca_enabled_in_bios(void)
+static int dca_enabled_in_bios(struct pci_dev *pdev)
 {
        /* CPUID level 9 returns DCA configuration */
        /* Bit 0 indicates DCA enabled by the BIOS */
        cpuid_level_9 = cpuid_eax(9);
        res = test_bit(0, &cpuid_level_9);
        if (!res)
-               printk(KERN_ERR "ioat dma: DCA is disabled in BIOS\n");
+               dev_err(&pdev->dev, "DCA is disabled in BIOS\n");
 
        return res;
 }
 
-static int system_has_dca_enabled(void)
+static int system_has_dca_enabled(struct pci_dev *pdev)
 {
        if (boot_cpu_has(X86_FEATURE_DCA))
-               return dca_enabled_in_bios();
+               return dca_enabled_in_bios(pdev);
 
-       printk(KERN_ERR "ioat dma: boot cpu doesn't have X86_FEATURE_DCA\n");
+       dev_err(&pdev->dev, "boot cpu doesn't have X86_FEATURE_DCA\n");
        return 0;
 }
 
        int i;
        int err;
 
-       if (!system_has_dca_enabled())
+       if (!system_has_dca_enabled(pdev))
                return NULL;
 
        /* I/OAT v1 systems must have a known tag_map to support DCA */
 
        chanerr = readl(ioat_chan->reg_base + IOAT_CHANERR_OFFSET);
        if (chanerr) {
                dev_err(&ioat_chan->device->pdev->dev,
-                       "ioatdma: CHANERR = %x, clearing\n", chanerr);
+                       "CHANERR = %x, clearing\n", chanerr);
                writel(chanerr, ioat_chan->reg_base + IOAT_CHANERR_OFFSET);
        }
 
                desc = ioat_dma_alloc_descriptor(ioat_chan, GFP_KERNEL);
                if (!desc) {
                        dev_err(&ioat_chan->device->pdev->dev,
-                               "ioatdma: Only %d initial descriptors\n", i);
+                               "Only %d initial descriptors\n", i);
                        break;
                }
                list_add_tail(&desc->node, &tmp_list);
        /* one is ok since we left it on there on purpose */
        if (in_use_descs > 1)
                dev_err(&ioat_chan->device->pdev->dev,
-                       "ioatdma: Freeing %d in use descriptors!\n",
+                       "Freeing %d in use descriptors!\n",
                        in_use_descs - 1);
 
        ioat_chan->last_completion = ioat_chan->completion_addr = 0;
        if ((ioat_chan->completion_virt->full & IOAT_CHANSTS_DMA_TRANSFER_STATUS) ==
                                IOAT_CHANSTS_DMA_TRANSFER_STATUS_HALTED) {
                dev_err(&ioat_chan->device->pdev->dev,
-                       "ioatdma: Channel halted, chanerr = %x\n",
+                       "Channel halted, chanerr = %x\n",
                        readl(ioat_chan->reg_base + IOAT_CHANERR_OFFSET));
 
                /* TODO do something to salvage the situation */
        u8 *src;
        u8 *dest;
        struct dma_chan *dma_chan;
-       struct dma_async_tx_descriptor *tx;
+       struct dma_async_tx_descriptor *tx = NULL;
        dma_addr_t addr;
        dma_cookie_t cookie;
        int err = 0;
        }
 
        tx = ioat_dma_prep_memcpy(dma_chan, IOAT_TEST_SIZE, 0);
+       if (!tx) {
+               dev_err(&device->pdev->dev,
+                       "Self-test prep failed, disabling\n");
+               err = -ENODEV;
+               goto free_resources;
+       }
+
        async_tx_ack(tx);
        addr = dma_map_single(dma_chan->device->dev, src, IOAT_TEST_SIZE,
                        DMA_TO_DEVICE);
 
        if (ioat_dma_is_complete(dma_chan, cookie, NULL, NULL) != DMA_SUCCESS) {
                dev_err(&device->pdev->dev,
-                       "ioatdma: Self-test copy timed out, disabling\n");
+                       "Self-test copy timed out, disabling\n");
                err = -ENODEV;
                goto free_resources;
        }
        if (memcmp(src, dest, IOAT_TEST_SIZE)) {
                dev_err(&device->pdev->dev,
-                       "ioatdma: Self-test copy failed compare, disabling\n");
+                       "Self-test copy failed compare, disabling\n");
                err = -ENODEV;
                goto free_resources;
        }
                goto msi;
        if (!strcmp(ioat_interrupt_style, "intx"))
                goto intx;
+       dev_err(&device->pdev->dev, "invalid ioat_interrupt_style %s\n",
+               ioat_interrupt_style);
+       goto err_no_irq;
 
 msix:
        /* The number of MSI-X vectors should equal the number of channels */
        device->common.device_dependency_added = ioat_dma_dependency_added;
        device->common.dev = &pdev->dev;
        dev_err(&device->pdev->dev,
-               "ioatdma: Intel(R) I/OAT DMA Engine found,"
-               " %d channels, device version 0x%02x\n",
-               device->common.chancnt, device->version);
+               "Intel(R) I/OAT DMA Engine found,"
+               " %d channels, device version 0x%02x, driver version %s\n",
+               device->common.chancnt, device->version, IOAT_DMA_VERSION);
 
        err = ioat_dma_setup_interrupts(device);
        if (err)
        kfree(device);
 err_kzalloc:
        dev_err(&device->pdev->dev,
-               "ioatdma: Intel(R) I/OAT DMA Engine initialization failed\n");
+               "Intel(R) I/OAT DMA Engine initialization failed\n");
        return NULL;
 }