irq_remapping: Use apic_ack_irq()
authorThomas Gleixner <tglx@linutronix.de>
Mon, 4 Jun 2018 15:33:56 +0000 (17:33 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Wed, 6 Jun 2018 13:18:20 +0000 (15:18 +0200)
To address the EBUSY fail of interrupt affinity settings in case that the
previous setting has not been cleaned up yet, use the new apic_ack_irq()
function instead of the special ir_ack_apic_edge() implementation which is
merily a wrapper around ack_APIC_irq().

Preparatory change for the real fix

Fixes: dccfe3147b42 ("x86/vector: Simplify vector move cleanup")
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Song Liu <songliubraving@fb.com>
Cc: Joerg Roedel <jroedel@suse.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Song Liu <liu.song.a23@gmail.com>
Cc: Dmitry Safonov <0x7f454c46@gmail.com>
Cc: stable@vger.kernel.org
Cc: Mike Travis <mike.travis@hpe.com>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Tariq Toukan <tariqt@mellanox.com>
Link: https://lkml.kernel.org/r/20180604162224.555716895@linutronix.de
drivers/iommu/amd_iommu.c
drivers/iommu/intel_irq_remapping.c
drivers/iommu/irq_remapping.c
drivers/iommu/irq_remapping.h

index 8fb8c737fffefa18ac3ae716474a40002a36ff05..b0b30a568db71180ad03a129f54ca14d9338528f 100644 (file)
@@ -4379,7 +4379,7 @@ static void ir_compose_msi_msg(struct irq_data *irq_data, struct msi_msg *msg)
 
 static struct irq_chip amd_ir_chip = {
        .name                   = "AMD-IR",
-       .irq_ack                = ir_ack_apic_edge,
+       .irq_ack                = apic_ack_irq,
        .irq_set_affinity       = amd_ir_set_affinity,
        .irq_set_vcpu_affinity  = amd_ir_set_vcpu_affinity,
        .irq_compose_msi_msg    = ir_compose_msi_msg,
index 3062a154a9fbf31cfa296ad6b50c2cd3471ad400..967450bd421a171c97adec77faf50c92d46a5c67 100644 (file)
@@ -1223,7 +1223,7 @@ static int intel_ir_set_vcpu_affinity(struct irq_data *data, void *info)
 
 static struct irq_chip intel_ir_chip = {
        .name                   = "INTEL-IR",
-       .irq_ack                = ir_ack_apic_edge,
+       .irq_ack                = apic_ack_irq,
        .irq_set_affinity       = intel_ir_set_affinity,
        .irq_compose_msi_msg    = intel_ir_compose_msi_msg,
        .irq_set_vcpu_affinity  = intel_ir_set_vcpu_affinity,
index 496deee3ae3a8132bca58acda9d9cd8cfe013860..7d0f3074d41df3323599573ceea427ed1f71e48f 100644 (file)
@@ -156,11 +156,6 @@ void panic_if_irq_remap(const char *msg)
                panic(msg);
 }
 
-void ir_ack_apic_edge(struct irq_data *data)
-{
-       ack_APIC_irq();
-}
-
 /**
  * irq_remapping_get_ir_irq_domain - Get the irqdomain associated with the IOMMU
  *                                  device serving request @info
index 039c7af7b190f9c3481e46bb81f34d4fcbecc099..0afef6e43be40b96664e2f28cec97c38cbd0a683 100644 (file)
@@ -65,8 +65,6 @@ struct irq_remap_ops {
 extern struct irq_remap_ops intel_irq_remap_ops;
 extern struct irq_remap_ops amd_iommu_irq_ops;
 
-extern void ir_ack_apic_edge(struct irq_data *data);
-
 #else  /* CONFIG_IRQ_REMAP */
 
 #define irq_remapping_enabled 0