Re: Problem with commit bf22ff45bed664aefb5c4e43029057a199b7070c

From: Thomas Gleixner
Date: Fri Jul 07 2017 - 12:41:56 EST

On Fri, 7 Jul 2017, 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.

Rightfully so. Making assumptions about the inner workings of core code is
always wrong.

> 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?

Without looking at the patch (too lazy to fiddle with attachments right
now), this is definitely wrong. I'll have a look later tonight.