]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
irq_remapping: Use apic_ack_irq()
authorThomas Gleixner <tglx@linutronix.de>
Mon, 4 Jun 2018 15:33:56 +0000 (17:33 +0200)
committerThadeu Lima de Souza Cascardo <cascardo@canonical.com>
Fri, 9 Nov 2018 19:00:37 +0000 (17:00 -0200)
BugLink: http://bugs.launchpad.net/bugs/1800537
commit 8a2b7d142e7ac477d52f5f92251e59fc136d7ddd upstream.

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
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Khalid Elmously <khalid.elmously@canonical.com>
drivers/iommu/amd_iommu.c
drivers/iommu/intel_irq_remapping.c
drivers/iommu/irq_remapping.c
drivers/iommu/irq_remapping.h

index 8d887e6984585e77e6d71ac4e5f4def8574a1af7..b2c8ec7337e2f7458185b76aa2d81c65f10fd814 100644 (file)
@@ -4339,7 +4339,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 49721b4e1975c3c1b038665aa9f18749d95e06e6..65cdf09c25994dad36753264a9b8a6947cb442e6 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