mirror of https://gitee.com/openkylin/linux.git
x86/platform/uv: 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 uv_ack_apic() implementation which is
merily a wrapper around ack_APIC_irq().
Preparatory change for the real fix
Fixes: dccfe3147b
("x86/vector: Simplify vector move cleanup")
Reported-by: Song Liu <liu.song.a23@gmail.com>
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: 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.721691398@linutronix.de
This commit is contained in:
parent
2b04e46d8d
commit
839b0f1c4e
|
@ -47,11 +47,6 @@ static void uv_program_mmr(struct irq_cfg *cfg, struct uv_irq_2_mmr_pnode *info)
|
||||||
|
|
||||||
static void uv_noop(struct irq_data *data) { }
|
static void uv_noop(struct irq_data *data) { }
|
||||||
|
|
||||||
static void uv_ack_apic(struct irq_data *data)
|
|
||||||
{
|
|
||||||
ack_APIC_irq();
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
uv_set_irq_affinity(struct irq_data *data, const struct cpumask *mask,
|
uv_set_irq_affinity(struct irq_data *data, const struct cpumask *mask,
|
||||||
bool force)
|
bool force)
|
||||||
|
@ -73,7 +68,7 @@ static struct irq_chip uv_irq_chip = {
|
||||||
.name = "UV-CORE",
|
.name = "UV-CORE",
|
||||||
.irq_mask = uv_noop,
|
.irq_mask = uv_noop,
|
||||||
.irq_unmask = uv_noop,
|
.irq_unmask = uv_noop,
|
||||||
.irq_eoi = uv_ack_apic,
|
.irq_eoi = apic_ack_irq,
|
||||||
.irq_set_affinity = uv_set_irq_affinity,
|
.irq_set_affinity = uv_set_irq_affinity,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue