All of lore.kernel.org
 help / color / mirror / Atom feed
From: tip-bot for Feng Wu <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: mingo@kernel.org, linux-kernel@vger.kernel.org,
	feng.wu@intel.com, hpa@zytor.com, tglx@linutronix.de,
	joro@8bytes.org
Subject: [tip:x86/apic] iommu, x86: Setup Posted-Interrupts capability for Intel iommu
Date: Mon, 8 Jun 2015 06:45:16 -0700	[thread overview]
Message-ID: <tip-01c87cc1d2fc041821a6ff2e489650759116dec6@git.kernel.org> (raw)
In-Reply-To: <1433482974-14614-8-git-send-email-feng.wu@intel.com>

Commit-ID:  01c87cc1d2fc041821a6ff2e489650759116dec6
Gitweb:     http://git.kernel.org/tip/01c87cc1d2fc041821a6ff2e489650759116dec6
Author:     Feng Wu <feng.wu@intel.com>
AuthorDate: Fri, 5 Jun 2015 13:42:52 +0800
Committer:  Thomas Gleixner <tglx@linutronix.de>
CommitDate: Mon, 8 Jun 2015 15:41:32 +0200

iommu, x86: Setup Posted-Interrupts capability for Intel iommu

Set Posted-Interrupts capability for Intel iommu when Interrupt
Remapping is enabled, clear it when disabled.

Signed-off-by: Feng Wu <feng.wu@intel.com>
Acked-by: Joerg Roedel <joro@8bytes.org>
Cc: jiang.liu@linux.intel.com
Cc: iommu@lists.linux-foundation.org
Cc: dwmw2@infradead.org
Link: http://lkml.kernel.org/r/1433482974-14614-8-git-send-email-feng.wu@intel.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
 drivers/iommu/intel_irq_remapping.c | 30 ++++++++++++++++++++++++++++++
 drivers/iommu/irq_remapping.c       |  2 ++
 drivers/iommu/irq_remapping.h       |  3 +++
 3 files changed, 35 insertions(+)

diff --git a/drivers/iommu/intel_irq_remapping.c b/drivers/iommu/intel_irq_remapping.c
index 3bcb459..0f57af7 100644
--- a/drivers/iommu/intel_irq_remapping.c
+++ b/drivers/iommu/intel_irq_remapping.c
@@ -581,6 +581,26 @@ error:
 	return -ENODEV;
 }
 
+/*
+ * Set Posted-Interrupts capability.
+ */
+static inline void set_irq_posting_cap(void)
+{
+	struct dmar_drhd_unit *drhd;
+	struct intel_iommu *iommu;
+
+	if (!disable_irq_post) {
+		intel_irq_remap_ops.capability |= 1 << IRQ_POSTING_CAP;
+
+		for_each_iommu(iommu, drhd)
+			if (!cap_pi_support(iommu->cap)) {
+				intel_irq_remap_ops.capability &=
+						~(1 << IRQ_POSTING_CAP);
+				break;
+			}
+	}
+}
+
 static int __init intel_enable_irq_remapping(void)
 {
 	struct dmar_drhd_unit *drhd;
@@ -656,6 +676,8 @@ static int __init intel_enable_irq_remapping(void)
 
 	irq_remapping_enabled = 1;
 
+	set_irq_posting_cap();
+
 	pr_info("Enabled IRQ remapping in %s mode\n", eim ? "x2apic" : "xapic");
 
 	return eim ? IRQ_REMAP_X2APIC_MODE : IRQ_REMAP_XAPIC_MODE;
@@ -856,6 +878,12 @@ static void disable_irq_remapping(void)
 
 		iommu_disable_irq_remapping(iommu);
 	}
+
+	/*
+	 * Clear Posted-Interrupts capability.
+	 */
+	if (!disable_irq_post)
+		intel_irq_remap_ops.capability &= ~(1 << IRQ_POSTING_CAP);
 }
 
 static int reenable_irq_remapping(int eim)
@@ -883,6 +911,8 @@ static int reenable_irq_remapping(int eim)
 	if (!setup)
 		goto error;
 
+	set_irq_posting_cap();
+
 	return 0;
 
 error:
diff --git a/drivers/iommu/irq_remapping.c b/drivers/iommu/irq_remapping.c
index fc78b0d..ed605a9 100644
--- a/drivers/iommu/irq_remapping.c
+++ b/drivers/iommu/irq_remapping.c
@@ -22,6 +22,8 @@ int irq_remap_broken;
 int disable_sourceid_checking;
 int no_x2apic_optout;
 
+int disable_irq_post = 1;
+
 static int disable_irq_remap;
 static struct irq_remap_ops *remap_ops;
 
diff --git a/drivers/iommu/irq_remapping.h b/drivers/iommu/irq_remapping.h
index b6ca30d..039c7af 100644
--- a/drivers/iommu/irq_remapping.h
+++ b/drivers/iommu/irq_remapping.h
@@ -34,6 +34,8 @@ extern int disable_sourceid_checking;
 extern int no_x2apic_optout;
 extern int irq_remapping_enabled;
 
+extern int disable_irq_post;
+
 struct irq_remap_ops {
 	/* The supported capabilities */
 	int capability;
@@ -69,6 +71,7 @@ extern void ir_ack_apic_edge(struct irq_data *data);
 
 #define irq_remapping_enabled 0
 #define irq_remap_broken      0
+#define disable_irq_post      1
 
 #endif /* CONFIG_IRQ_REMAP */
 

  reply	other threads:[~2015-06-08 13:47 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-05  5:42 [v9 0/9] Add VT-d Posted-Interrupts support - IOMMU part Feng Wu
2015-06-05  5:42 ` Feng Wu
     [not found] ` <1433482974-14614-1-git-send-email-feng.wu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2015-06-05  5:42   ` [v9 1/9] iommu: Add new member capability to struct irq_remap_ops Feng Wu
2015-06-05  5:42     ` Feng Wu
2015-06-08 13:42     ` [tip:x86/apic] " tip-bot for Feng Wu
2015-06-05  5:42   ` [v9 2/9] iommu: dmar: Extend struct irte for VT-d Posted-Interrupts Feng Wu
2015-06-05  5:42     ` Feng Wu
2015-06-08 13:43     ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2015-06-05  5:42   ` [v9 3/9] iommu, x86: Implement irq_set_vcpu_affinity for intel_ir_chip Feng Wu
2015-06-05  5:42     ` Feng Wu
2015-06-08 13:43     ` [tip:x86/apic] " tip-bot for Feng Wu
2015-06-05  5:42   ` [v9 4/9] iommu, x86: Save the mode (posted or remapped) of an IRTE Feng Wu
2015-06-05  5:42     ` Feng Wu
2015-06-08 13:44     ` [tip:x86/apic] " tip-bot for Feng Wu
2015-06-05  5:42   ` [v9 5/9] iommu, x86: No need to migrating irq for VT-d Posted-Interrupts Feng Wu
2015-06-05  5:42     ` Feng Wu
2015-06-08 13:44     ` [tip:x86/apic] iommu, x86: Avoid migrating VT-d posted interrupts tip-bot for Feng Wu
2015-06-05  5:42   ` [v9 6/9] iommu, x86: Add cap_pi_support() to detect VT-d PI capability Feng Wu
2015-06-05  5:42     ` Feng Wu
2015-06-08 13:44     ` [tip:x86/apic] " tip-bot for Feng Wu
2015-06-05  5:42   ` [v9 7/9] iommu, x86: Setup Posted-Interrupts capability for Intel iommu Feng Wu
2015-06-05  5:42     ` Feng Wu
2015-06-08 13:45     ` tip-bot for Feng Wu [this message]
2015-06-05  5:42   ` [v9 8/9] iommu, x86: define irq_remapping_cap() Feng Wu
2015-06-05  5:42     ` Feng Wu
2015-06-08 13:45     ` [tip:x86/apic] iommu, x86: Provide irq_remapping_cap() interface tip-bot for Feng Wu
2015-06-05  5:42   ` [v9 9/9] iommu, x86: Properly handler PI for IOMMU hotplug Feng Wu
2015-06-05  5:42     ` Feng Wu
2015-06-08 13:45     ` [tip:x86/apic] iommu, x86: Properly handle posted interrupts " tip-bot for Feng Wu
2015-06-05 11:47 ` [v9 0/9] Add VT-d Posted-Interrupts support - IOMMU part Thomas Gleixner
2015-06-05 13:33   ` Joerg Roedel
2015-06-05 13:33     ` Joerg Roedel
     [not found]     ` <20150605133333.GU20384-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2015-06-08  1:23       ` Wu, Feng
2015-06-08  1:23         ` Wu, Feng
  -- strict thread matches above, loose matches on Subject: below --
2015-06-09  5:20 [v10 08/10] iommu, x86: Setup Posted-Interrupts capability for Intel iommu Feng Wu
2015-06-12  9:50 ` [tip:x86/apic] " tip-bot for Feng Wu

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=tip-01c87cc1d2fc041821a6ff2e489650759116dec6@git.kernel.org \
    --to=tipbot@zytor.com \
    --cc=feng.wu@intel.com \
    --cc=hpa@zytor.com \
    --cc=joro@8bytes.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=tglx@linutronix.de \
    /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.