On Fri, 21 Jun 2019, Hodaszi, Robert wrote: > > Also, it seems, if I'm running the serial port opening-closing process > on the same core as the interrupt is assigned to, I'm not getting the > error message. If I'm running it on a different core, most of the time, > I'm getting the error message. ... > Unfortunately, I'm stuck at this point a bit. Don't really know, what > would be the proper solution (how could I avoid free'ing up a pending > IRQ's vector), also I'm not knowing the x86 part of the kernel very well > yet. Not freeing the vector would just paper over the problem. Can you try the patch below? Thanks, tglx 8<------------------ diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c index 53aa234a6803..189db40b0524 100644 --- a/arch/x86/kernel/apic/io_apic.c +++ b/arch/x86/kernel/apic/io_apic.c @@ -3003,8 +3003,8 @@ void mp_irqdomain_deactivate(struct irq_domain *domain, struct irq_data *irq_data) { /* It won't be called for IRQ with multiple IOAPIC pins associated */ - ioapic_mask_entry(mp_irqdomain_ioapic_idx(domain), - (int)irq_data->hwirq); + clear_IO_APIC_pin(mp_irqdomain_ioapic_idx(domain), + (unsigned int)irq_data->hwirq); } int mp_irqdomain_ioapic_idx(struct irq_domain *domain)