Re: [RFC] On the Current Troubles of Mainlining Loongson Platform Drivers
From: Maciej W. Rozycki
Date: Wed Jun 12 2019 - 02:00:07 EST
On Tue, 11 Jun 2019, Aaro Koskinen wrote:
> However, with your patch the "nobody cared" is never reached so all is
> good. I tried 10 boots with the patch and all were successful. Without
> the patch 8 out of 10 failed with the "nobody cared" warning.
I wouldn't call it "good", just less obvious or painful. This is still
causing wasted CPU cycles that are used for taking the phantom interrupts.
There is clearly a completion barrier missing somewhere that causes the
interrupt request to linger beyond the point interrupts are reenabled at
One way to attempt to narrow it down might be taking a backtrace from
where IRQ 14 is found to be spurious. This would indicate the offending
interrupt unmask action. E.g. I see no explicit completion barrier
between the final `outb' in `mask_and_ack_8259A' and the following call to
`raw_spin_unlock_irqrestore', which are obviously otherwise unordered WRT
each other (because `outb' is I/O or MMIO and `raw_spin_unlock_irqrestore'
is contained within the CPU on UP). I can see provisions however for
issuing an architecture-specific barrier in `do_raw_spin_unlock', which is
the workhorse for `raw_spin_unlock_irqrestore', so maybe this is the place
to look into?
Also how's IRQ 14 registered as indicated by /proc/interrupts?