mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [v9 0/9] Add VT-d Posted-Interrupts support - IOMMU part
@ 2015-06-05  5:42 Feng Wu
  2015-06-05  5:42 ` [v9 1/9] iommu: Add new member capability to struct irq_remap_ops Feng Wu
                   ` (9 more replies)
  0 siblings, 10 replies; 23+ messages in thread
From: Feng Wu @ 2015-06-05  5:42 UTC (permalink / raw)
  To: joro, dwmw2, tglx; +Cc: jiang.liu, iommu, linux-kernel, Feng Wu

VT-d Posted-Interrupts is an enhancement to CPU side Posted-Interrupt.
With VT-d Posted-Interrupts enabled, external interrupts from
direct-assigned devices can be delivered to guests without VMM
intervention when guest is running in non-root mode.

You can find the VT-d Posted-Interrtups Spec. in the following URL:
http://www.intel.com/content/www/us/en/intelligent-systems/intel-technology/vt-directed-io-spec.html

This series was part of http://thread.gmane.org/gmane.linux.kernel.iommu/7708. To make things clear, send out IOMMU part here.

This patch-set is based on the lastest x86/apic branch of tip tree.

Divide the whole series which contain multiple components into three parts:
- Prerequisite changes to irq subsystem (already merged in tip tree x86/apic branch)
- IOMMU part (in this series)
- KVM and VFIO parts (will send out this part once the first two parts are accepted)

v8->v9:
* Remove member "irte_pi_entry" in struct intel_ir_data.
* Some changes to the comments.

v7->v8:
* Save the irq mode (posted or remapped) of an IRTE in struct irq_2_iommu.
* Use this new mode to decide whether update the hardware when
modifying irte in intel_ir_set_affinity().

v6->v7:
* Add an static inline helper function set_irq_posting_cap() to set
the PI capability.
* Add some comments for the new member "ir_data->irte_pi_entry".

v5->v6:
* Extend 'struct irte' for VT-d Posted-Interrupts, combine remapped
and posted mode into one irte structure.

v4->v5:
* Abstract modify_irte() to accept two format of irte.

v3->v4:
* Change capability to a int variant flags instead of a function call.
* Add hotplug case for VT-d PI.

Feng Wu (8):
  iommu: Add new member capability to struct irq_remap_ops
  iommu, x86: Implement irq_set_vcpu_affinity for intel_ir_chip
  iommu, x86: Save the mode (posted or remapped) of an IRTE
  iommu, x86: No need to migrating irq for VT-d Posted-Interrupts
  iommu, x86: Add cap_pi_support() to detect VT-d PI capability
  iommu, x86: Setup Posted-Interrupts capability for Intel iommu
  iommu, x86: define irq_remapping_cap()
  iommu, x86: Properly handler PI for IOMMU hotplug

Thomas Gleixner (1):
  iommu: dmar: Extend struct irte for VT-d Posted-Interrupts

 arch/x86/include/asm/irq_remapping.h | 11 +++++
 drivers/iommu/intel_irq_remapping.c  | 90 +++++++++++++++++++++++++++++++++++-
 drivers/iommu/irq_remapping.c        | 11 +++++
 drivers/iommu/irq_remapping.h        |  6 +++
 include/linux/dmar.h                 | 70 ++++++++++++++++++++++------
 include/linux/intel-iommu.h          |  1 +
 6 files changed, 173 insertions(+), 16 deletions(-)

-- 
2.1.0


^ permalink raw reply	[flat|nested] 23+ messages in thread
* [v10 06/10] iommu, x86: Avoid migrating VT-d posted interrupts
@ 2015-06-09  5:20 Feng Wu
  2015-06-12  9:50 ` [tip:x86/apic] " tip-bot for Feng Wu
  0 siblings, 1 reply; 23+ messages in thread
From: Feng Wu @ 2015-06-09  5:20 UTC (permalink / raw)
  To: joro, dwmw2, tglx; +Cc: jiang.liu, iommu, linux-kernel, Feng Wu

When the interrupt is configured in posted mode, the destination of
the interrupt is set in the Posted-Interrupts Descriptor and the
migration of these interrupts happens during vCPU scheduling.

We still update the cached irte, which will be used when changing back
to remapping mode, but we avoid writing the table entry.

Signed-off-by: Feng Wu <feng.wu@intel.com>
Reviewed-by: Jiang Liu <jiang.liu@linux.intel.com>
Acked-by: David Woodhouse <David.Woodhouse@intel.com>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Joerg Roedel <joro@8bytes.org>
---
 drivers/iommu/intel_irq_remapping.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/iommu/intel_irq_remapping.c b/drivers/iommu/intel_irq_remapping.c
index 68bce0a..3bcb459 100644
--- a/drivers/iommu/intel_irq_remapping.c
+++ b/drivers/iommu/intel_irq_remapping.c
@@ -1003,7 +1003,10 @@ intel_ir_set_affinity(struct irq_data *data, const struct cpumask *mask,
 	 */
 	irte->vector = cfg->vector;
 	irte->dest_id = IRTE_DEST(cfg->dest_apicid);
-	modify_irte(&ir_data->irq_2_iommu, irte);
+
+	/* Update the hardware only if the interrupt is in remapped mode. */
+	if (ir_data->irq_2_iommu.mode == IRQ_REMAPPING)
+		modify_irte(&ir_data->irq_2_iommu, irte);
 
 	/*
 	 * After this point, all the interrupts will start arriving
-- 
2.1.0


^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2015-06-12  9:50 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-06-05  5:42 [v9 0/9] Add VT-d Posted-Interrupts support - IOMMU part Feng Wu
2015-06-05  5:42 ` [v9 1/9] iommu: Add new member capability to struct irq_remap_ops 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-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-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-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-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-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-08 13:45   ` [tip:x86/apic] " tip-bot for Feng Wu
2015-06-05  5:42 ` [v9 8/9] iommu, x86: define irq_remapping_cap() 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-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-08  1:23     ` Wu, Feng
2015-06-09  5:20 [v10 06/10] iommu, x86: Avoid migrating VT-d posted interrupts Feng Wu
2015-06-12  9:50 ` [tip:x86/apic] " tip-bot for Feng Wu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome