Re: Problem with commit bf22ff45bed664aefb5c4e43029057a199b7070c

From: Marc Zyngier
Date: Fri Jul 07 2017 - 13:09:57 EST


On 07/07/17 15:51, Juergen Gross wrote:
> Commit bf22ff45bed664aefb5c4e43029057a199b7070c ("genirq: Avoid
> unnecessary low level irq function calls") breaks Xen guest
> save/restore handling.
>
> The main problem are the PV devices using Xen event channels as
> interrupt sources which are represented as an "irq chip" in the kernel.
> When saving the guest the event channels are masked internally. At
> restore time event channels are re-established and unmasked via
> irq_startup(). Unfortunately above commit will let the unmask operation
> be a nop as the irq handling doesn't know about the masking done before.
>
> I have a patch repairing the issue, but I'm not sure if this way to do
> it would be accepted. I have exported mask_irq() and I'm doing the
> masking now through this function. Would the attached patch be
> acceptable? Or is there a better way to solve the problem?

The correct API to prevent an interrupt from firing would be
disable_irq(), which is much more straightforward and is readily exported.

I'm unsure of what the expected flow is though, so there might be some
more fixes to be made in your code.

Thanks,

M.
--
Jazz is not dead. It just smells funny...