From: David Woodhouse <dwmw2@infradead.org>
To: Dan Williams <dan.j.williams@intel.com>
Cc: Chris Li <lkml@chrisli.org>,
linux-kernel <linux-kernel@vger.kernel.org>,
Matthew Wilcox <willy@linux.intel.com>
Subject: Re: BUG in drivers/dma/ioat/dma_v2.c:314
Date: Wed, 07 Jul 2010 04:40:39 +0100 [thread overview]
Message-ID: <1278474039.31393.8.camel@localhost> (raw)
In-Reply-To: <1278463901.20082.34.camel@dwillia2-linux>
On Tue, 2010-07-06 at 17:51 -0700, Dan Williams wrote:
> It should always trigger, and I have verified as much with the attached
> replacement patch (by forcing the error on a working system), but we run
> into a new problem.
>
> IOMMU: can't find DMAR for device 0000:00:0f.0
> Allocating domain for 0000:00:0f.0 failed
Yeah, we're actually doing the check in the wrong place. This should
work better, I think.
(I'm still only checking for include_all rather than checking for
!cap_write_drain() because that _really_ ought to work; looking at
Chris' latest dmesg it _is_ being assigned to the catch-all unit.)
diff --git a/drivers/pci/intel-iommu.c b/drivers/pci/intel-iommu.c
index c9171be..7df8102 100644
--- a/drivers/pci/intel-iommu.c
+++ b/drivers/pci/intel-iommu.c
@@ -3030,6 +3030,32 @@ static void __init iommu_exit_mempool(void)
}
+static void quirk_ioat_snb_no_catchall(struct pci_dev *pdev)
+{
+ struct dmar_drhd_unit *drhd;
+ int i;
+
+ /* We know that this device on this chipset has its own
+ IOMMU. If we find it under the catch-all IOMMU, then
+ the BIOS is lying to us. Hope that the IOMMU for
+ this device is actually disabled, and it needs no
+ translation... */
+
+ for_each_drhd_unit(drhd) {
+ if (!drhd->include_all)
+ continue;
+ for (i = 0; i < drhd->devices_cnt; i++) {
+ if (drhd->devices[i] == pdev) {
+ WARN_TAINT_ONCE(1, TAINT_FIRMWARE_WORKAROUND,
+ "BIOS wrongly included I/OAT device under catch-all VT-d unit\n");
+ pdev->dev.archdata.iommu = DUMMY_DEVICE_DOMAIN_INFO;
+ return;
+ }
+ }
+ }
+}
+DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_IOAT_SNB, quirk_ioat_snb_no_catchall);
+
static void __init init_no_remapping_devices(void)
{
struct dmar_drhd_unit *drhd;
--
David Woodhouse Open Source Technology Centre
David.Woodhouse@intel.com Intel Corporation
next prev parent reply other threads:[~2010-07-07 3:40 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-06-28 23:50 BUG in drivers/dma/ioat/dma_v2.c:314 Chris Li
2010-06-29 0:45 ` Dan Williams
2010-06-29 7:17 ` Chris Li
2010-06-29 23:20 ` Chris Li
2010-06-29 23:57 ` Dan Williams
2010-06-30 1:07 ` Chris Li
2010-06-30 4:17 ` Dan Williams
2010-06-30 18:26 ` Chris Li
2010-06-30 18:43 ` Chris Li
2010-06-30 18:43 ` David Woodhouse
2010-06-30 19:40 ` Dan Williams
2010-06-30 20:02 ` David Woodhouse
2010-06-30 21:44 ` Dan Williams
2010-06-30 21:59 ` Chris Li
2010-06-30 22:04 ` Dan Williams
2010-07-01 6:21 ` David Woodhouse
2010-07-01 6:51 ` Dan Williams
2010-07-01 7:12 ` David Woodhouse
2010-07-01 7:26 ` Dan Williams
2010-07-01 8:15 ` David Woodhouse
2010-07-01 17:20 ` Dan Williams
2010-07-01 17:58 ` Chris Li
2010-07-02 19:00 ` Chris Li
2010-07-05 10:16 ` David Woodhouse
2010-07-06 23:40 ` Chris Li
2010-07-07 0:51 ` Dan Williams
2010-07-07 0:51 ` Chris Li
2010-07-07 0:58 ` Dan Williams
2010-07-07 1:03 ` Chris Li
2010-07-07 3:22 ` David Woodhouse
2010-07-07 3:40 ` David Woodhouse [this message]
2010-07-07 17:47 ` Dan Williams
2010-07-07 18:07 ` David Woodhouse
2010-07-07 21:56 ` Chris Li
2010-07-09 21:28 ` Dan Williams
2010-07-09 22:00 ` Chris Li
2010-07-10 0:09 ` David Woodhouse
2010-07-15 5:41 ` Dan Williams
2010-07-16 21:29 ` Chris Li
2010-07-16 22:12 ` David Woodhouse
2010-07-16 22:40 ` Chris Li
2010-07-22 1:15 ` Dan Williams
2010-07-22 21:39 ` Chris Li
2010-07-22 22:00 ` Dan Williams
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1278474039.31393.8.camel@localhost \
--to=dwmw2@infradead.org \
--cc=dan.j.williams@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lkml@chrisli.org \
--cc=willy@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.