Re: BUG in drivers/dma/ioat/dma_v2.c:314

From: David Woodhouse
Date: Fri Jul 16 2010 - 18:12:54 EST


On Wed, 2010-07-14 at 22:41 -0700, Dan Williams wrote:
> + for_each_drhd_unit(drhd)
> + for (i = 0; i < drhd->devices_cnt; i++) {
> + /* we know that the this device's iommu is at
> + * offset 0xa000 from vtbar
> + */
> + if (drhd->devices[i] == pdev &&
> + drhd->reg_base_addr - vtbar != 0xa000) {
> + WARN_TAINT_ONCE(1, TAINT_FIRMWARE_WORKAROUND,
> + "BIOS assigned incorrect VT-d unit for Intel(R) QuickData Technology device\n");
> + pdev->dev.archdata.iommu = DUMMY_DEVICE_DOMAIN_INFO;
> + return;
> + }
> + }
> +}

Ah, that's the problem. Sorry, should have noticed this before. Since
this is the catch-all IOMMU, the device isn't explicitly listed.

You want 'drhd = dmar_find_matched_drhd_unit(pdev);' and then compare
vtbar with the reg_base_addr of that one.

--
dwmw2

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/