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: dccfe3147b
("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
This commit is contained in:
parent
c0255770cc
commit
8a2b7d142e
@ -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 = {
|
static struct irq_chip amd_ir_chip = {
|
||||||
.name = "AMD-IR",
|
.name = "AMD-IR",
|
||||||
.irq_ack = ir_ack_apic_edge,
|
.irq_ack = apic_ack_irq,
|
||||||
.irq_set_affinity = amd_ir_set_affinity,
|
.irq_set_affinity = amd_ir_set_affinity,
|
||||||
.irq_set_vcpu_affinity = amd_ir_set_vcpu_affinity,
|
.irq_set_vcpu_affinity = amd_ir_set_vcpu_affinity,
|
||||||
.irq_compose_msi_msg = ir_compose_msi_msg,
|
.irq_compose_msi_msg = ir_compose_msi_msg,
|
||||||
|
@ -1223,7 +1223,7 @@ static int intel_ir_set_vcpu_affinity(struct irq_data *data, void *info)
|
|||||||
|
|
||||||
static struct irq_chip intel_ir_chip = {
|
static struct irq_chip intel_ir_chip = {
|
||||||
.name = "INTEL-IR",
|
.name = "INTEL-IR",
|
||||||
.irq_ack = ir_ack_apic_edge,
|
.irq_ack = apic_ack_irq,
|
||||||
.irq_set_affinity = intel_ir_set_affinity,
|
.irq_set_affinity = intel_ir_set_affinity,
|
||||||
.irq_compose_msi_msg = intel_ir_compose_msi_msg,
|
.irq_compose_msi_msg = intel_ir_compose_msi_msg,
|
||||||
.irq_set_vcpu_affinity = intel_ir_set_vcpu_affinity,
|
.irq_set_vcpu_affinity = intel_ir_set_vcpu_affinity,
|
||||||
|
@ -156,11 +156,6 @@ void panic_if_irq_remap(const char *msg)
|
|||||||
panic(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
|
* irq_remapping_get_ir_irq_domain - Get the irqdomain associated with the IOMMU
|
||||||
* device serving request @info
|
* device serving request @info
|
||||||
|
@ -65,8 +65,6 @@ struct irq_remap_ops {
|
|||||||
extern struct irq_remap_ops intel_irq_remap_ops;
|
extern struct irq_remap_ops intel_irq_remap_ops;
|
||||||
extern struct irq_remap_ops amd_iommu_irq_ops;
|
extern struct irq_remap_ops amd_iommu_irq_ops;
|
||||||
|
|
||||||
extern void ir_ack_apic_edge(struct irq_data *data);
|
|
||||||
|
|
||||||
#else /* CONFIG_IRQ_REMAP */
|
#else /* CONFIG_IRQ_REMAP */
|
||||||
|
|
||||||
#define irq_remapping_enabled 0
|
#define irq_remapping_enabled 0
|
||||||
|
Loading…
Reference in New Issue
Block a user