diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2018-06-04 11:33:56 -0400 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2018-06-06 09:18:20 -0400 |
commit | 8a2b7d142e7ac477d52f5f92251e59fc136d7ddd (patch) | |
tree | 0879d519f25b7077ced3a9e8b6b131d5ec54ccf2 | |
parent | c0255770ccdc77ef2184d2a0a2e0cde09d2b44a4 (diff) |
irq_remapping: Use apic_ack_irq()
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
-rw-r--r-- | drivers/iommu/amd_iommu.c | 2 | ||||
-rw-r--r-- | drivers/iommu/intel_irq_remapping.c | 2 | ||||
-rw-r--r-- | drivers/iommu/irq_remapping.c | 5 | ||||
-rw-r--r-- | drivers/iommu/irq_remapping.h | 2 |
4 files changed, 2 insertions, 9 deletions
diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c index 8fb8c737fffe..b0b30a568db7 100644 --- a/drivers/iommu/amd_iommu.c +++ b/drivers/iommu/amd_iommu.c | |||
@@ -4379,7 +4379,7 @@ static void ir_compose_msi_msg(struct irq_data *irq_data, struct msi_msg *msg) | |||
4379 | 4379 | ||
4380 | static struct irq_chip amd_ir_chip = { | 4380 | static struct irq_chip amd_ir_chip = { |
4381 | .name = "AMD-IR", | 4381 | .name = "AMD-IR", |
4382 | .irq_ack = ir_ack_apic_edge, | 4382 | .irq_ack = apic_ack_irq, |
4383 | .irq_set_affinity = amd_ir_set_affinity, | 4383 | .irq_set_affinity = amd_ir_set_affinity, |
4384 | .irq_set_vcpu_affinity = amd_ir_set_vcpu_affinity, | 4384 | .irq_set_vcpu_affinity = amd_ir_set_vcpu_affinity, |
4385 | .irq_compose_msi_msg = ir_compose_msi_msg, | 4385 | .irq_compose_msi_msg = ir_compose_msi_msg, |
diff --git a/drivers/iommu/intel_irq_remapping.c b/drivers/iommu/intel_irq_remapping.c index 3062a154a9fb..967450bd421a 100644 --- a/drivers/iommu/intel_irq_remapping.c +++ b/drivers/iommu/intel_irq_remapping.c | |||
@@ -1223,7 +1223,7 @@ static int intel_ir_set_vcpu_affinity(struct irq_data *data, void *info) | |||
1223 | 1223 | ||
1224 | static struct irq_chip intel_ir_chip = { | 1224 | static struct irq_chip intel_ir_chip = { |
1225 | .name = "INTEL-IR", | 1225 | .name = "INTEL-IR", |
1226 | .irq_ack = ir_ack_apic_edge, | 1226 | .irq_ack = apic_ack_irq, |
1227 | .irq_set_affinity = intel_ir_set_affinity, | 1227 | .irq_set_affinity = intel_ir_set_affinity, |
1228 | .irq_compose_msi_msg = intel_ir_compose_msi_msg, | 1228 | .irq_compose_msi_msg = intel_ir_compose_msi_msg, |
1229 | .irq_set_vcpu_affinity = intel_ir_set_vcpu_affinity, | 1229 | .irq_set_vcpu_affinity = intel_ir_set_vcpu_affinity, |
diff --git a/drivers/iommu/irq_remapping.c b/drivers/iommu/irq_remapping.c index 496deee3ae3a..7d0f3074d41d 100644 --- a/drivers/iommu/irq_remapping.c +++ b/drivers/iommu/irq_remapping.c | |||
@@ -156,11 +156,6 @@ void panic_if_irq_remap(const char *msg) | |||
156 | panic(msg); | 156 | panic(msg); |
157 | } | 157 | } |
158 | 158 | ||
159 | void ir_ack_apic_edge(struct irq_data *data) | ||
160 | { | ||
161 | ack_APIC_irq(); | ||
162 | } | ||
163 | |||
164 | /** | 159 | /** |
165 | * irq_remapping_get_ir_irq_domain - Get the irqdomain associated with the IOMMU | 160 | * irq_remapping_get_ir_irq_domain - Get the irqdomain associated with the IOMMU |
166 | * device serving request @info | 161 | * device serving request @info |
diff --git a/drivers/iommu/irq_remapping.h b/drivers/iommu/irq_remapping.h index 039c7af7b190..0afef6e43be4 100644 --- a/drivers/iommu/irq_remapping.h +++ b/drivers/iommu/irq_remapping.h | |||
@@ -65,8 +65,6 @@ struct irq_remap_ops { | |||
65 | extern struct irq_remap_ops intel_irq_remap_ops; | 65 | extern struct irq_remap_ops intel_irq_remap_ops; |
66 | extern struct irq_remap_ops amd_iommu_irq_ops; | 66 | extern struct irq_remap_ops amd_iommu_irq_ops; |
67 | 67 | ||
68 | extern void ir_ack_apic_edge(struct irq_data *data); | ||
69 | |||
70 | #else /* CONFIG_IRQ_REMAP */ | 68 | #else /* CONFIG_IRQ_REMAP */ |
71 | 69 | ||
72 | #define irq_remapping_enabled 0 | 70 | #define irq_remapping_enabled 0 |