From: Wei Wang <wei.wang2@amd.com>
To: Jan Beulich <JBeulich@suse.com>,
Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Jeremy Fitzhardinge <jeremy@goop.org>,
"xen-devel@lists.xensource.com" <xen-devel@lists.xensource.com>,
Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Subject: [PATCH V2] amd iommu: re-enable iommu msi if dom0 disabled it
Date: Tue, 12 Jun 2012 14:02:44 +0200 [thread overview]
Message-ID: <4FD72FE4.80009@amd.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 397 bytes --]
Hi Jan & Andrew
I had attached a revised patch, please check it.
I found that the following Linux commit triggers this issue. It has been
included into 3.4 pv_ops.
" commit a776c491ca5e38c26d9f66923ff574d041e747f4
Author: Eric W. Biederman <ebiederm@xmission.com>
Date: Mon Oct 17 11:46:06 2011 -0700
PCI: msi: Disable msi interrupts when we initialize a pci device "
Thanks,
Wei
[-- Attachment #2: iommu-msi.patch --]
[-- Type: text/x-patch, Size: 1991 bytes --]
# HG changeset patch
# Parent f6bfaf9daa508c31b2bca0e461202db2759426fc
# User Wei Wang <wei.wang2@amd.com>
Re-enable iommu msi capability block if it is disabled by dom0
Linux commit a776c491ca5e38c26d9f66923ff574d041e747f4 disables msi interrupts. If is
running as a dom0, iommu interrupt will be disabled and hypervisor cannot process any
event and ppr logs afterwards.
Signed-off-by: Wei Wang <wei.wang2@amd.com>
diff -r f6bfaf9daa50 xen/drivers/passthrough/amd/pci_amd_iommu.c
--- a/xen/drivers/passthrough/amd/pci_amd_iommu.c Wed Jun 06 16:37:05 2012 +0100
+++ b/xen/drivers/passthrough/amd/pci_amd_iommu.c Tue Jun 12 13:58:40 2012 +0200
@@ -81,6 +81,30 @@ static void disable_translation(u32 *dte
dte[0] = entry;
}
+static void iommu_msi_check_enable(struct amd_iommu *iommu)
+{
+ unsigned long flags;
+ uint16_t control;
+ uint8_t bus = PCI_BUS(iommu->bdf);
+ uint8_t dev = PCI_SLOT(iommu->bdf);
+ uint8_t func = PCI_FUNC(iommu->bdf);
+
+ ASSERT( iommu->msi_cap );
+
+ spin_lock_irqsave(&iommu->lock, flags);
+
+ control = pci_conf_read16(iommu->seg, bus, dev, func,
+ iommu->msi_cap + PCI_MSI_FLAGS);
+ if ( !(control & PCI_MSI_FLAGS_ENABLE) )
+ {
+ control |= PCI_MSI_FLAGS_ENABLE;
+ pci_conf_write16(iommu->seg, bus, dev, func,
+ iommu->msi_cap + PCI_MSI_FLAGS, control);
+ }
+
+ spin_unlock_irqrestore(&iommu->lock, flags);
+}
+
static void amd_iommu_setup_domain_device(
struct domain *domain, struct amd_iommu *iommu, int bdf)
{
@@ -101,6 +125,12 @@ static void amd_iommu_setup_domain_devic
if ( ats_enabled )
dte_i = 1;
+ /*
+ * In some cases, dom0 disables iommu msi capability,
+ * check and re-enable it here.
+ */
+ iommu_msi_check_enable(iommu);
+
/* get device-table entry */
req_id = get_dma_requestor_id(iommu->seg, bdf);
dte = iommu->dev_table.buffer + (req_id * IOMMU_DEV_TABLE_ENTRY_SIZE);
[-- Attachment #3: Type: text/plain, Size: 126 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
next reply other threads:[~2012-06-12 12:02 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-12 12:02 Wei Wang [this message]
2012-06-12 15:13 ` [PATCH V2] amd iommu: re-enable iommu msi if dom0 disabled it Jan Beulich
2012-06-12 16:08 ` Andrew Cooper
2012-06-12 16:43 ` Jan Beulich
2012-06-14 12:13 ` Wei Wang
2012-06-14 14:18 ` Jan Beulich
2012-06-14 15:15 ` Wei Wang
2012-06-14 15:27 ` Jan Beulich
2012-06-21 9:59 ` [PATCH] PCI/MSI: don't disable AMD IOMMU MSI on Xen dom0 (was: Re: [PATCH V2] amd iommu: re-enable iommu msi if dom0 disabled it) Jan Beulich
2012-06-21 11:08 ` [PATCH] PCI/MSI: don't disable AMD IOMMU MSI on Xen dom0 Eric W. Biederman
2012-06-21 12:28 ` Jan Beulich
2012-06-21 11:21 ` Wei Wang
2012-06-21 12:06 ` Jan Beulich
2012-06-21 12:28 ` Wei Wang
2012-06-21 12:45 ` Jan Beulich
2012-06-21 13:10 ` Wei Wang
2012-06-21 13:24 ` Jan Beulich
2012-06-21 13:27 ` Wei Wang
2012-06-20 15:45 ` [PATCH V2] amd iommu: re-enable iommu msi if dom0 disabled it Jan Beulich
2012-06-21 15:29 ` Wei Wang
2012-06-21 15:49 ` Jan Beulich
2012-06-21 16:31 ` Keir Fraser
2012-06-22 9:03 ` Wei Wang
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=4FD72FE4.80009@amd.com \
--to=wei.wang2@amd.com \
--cc=JBeulich@suse.com \
--cc=andrew.cooper3@citrix.com \
--cc=jeremy@goop.org \
--cc=konrad.wilk@oracle.com \
--cc=xen-devel@lists.xensource.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).