Re: [Bugfix 0/2] Fix bugs caused by "use irqdomain to dynamically allocate IRQ for IOAPIC"

Jiang Liu
2014-08-06T10:27:57Z

On 2014/8/6 1:58, Konrad Rzeszutek Wilk wrote:
> On Wed, Aug 06, 2014 at 12:07:18AM +0800, Jiang Liu wrote:
>>
>>
>> On 2014/8/5 21:04, Konrad Rzeszutek Wilk wrote:
>>> On Tue, Aug 05, 2014 at 11:26:16AM +0800, Jiang Liu wrote:
>>>> Two issues have been reported against patch set "use irqdomain to
>>>> dynamically allocate IRQ for IOAPIC" at https://lkml.org/lkml/2014/6/9/44.
>>>>
>>>> This first one causes failure of suspend/hibernation, please refer to
>>>> https://lkml.org/lkml/2014/7/28/822 for more information. And we have
>>>> worked out a patch to fix it (https://lkml.org/lkml/2014/7/30/725) and
>>>> Borislav has tested it. But with more testing and analysis, I found the
>>>> provided patch still has some issues:
>>>> 1) It may cause regression to Xen
>>>
>>> Could you elaborate please?
>>>
>>> Is there a git tree with all of these patches to test it?
>> Hi Konrad,
>> The patch at https://lkml.org/lkml/2014/7/30/725 skips invoking
>> xen_pcifront_enable_irq() on resume from suspend or restore from
>> hibernation. I'm not sure whether that will affect suspend/hibernation
>> with Xen. This patch series won't affect Xen anymore.
>
> Ah, it looks like:
>
> 415 pcibios_enable_irq = xen_pcifront_enable_irq;
> 416 pcibios_disable_irq = NULL;
>
> Is the culprit right? If there was an pcibios_disable_irq set, then said
> patch would not been needed?
>
>
>> I have prepared a tree for you at
>> https://github.com/jiangliu/linux.git suspend
>
> Thank you. Will give it a spin tomorrow.
Hi Konrad,
Thanks for review.
I think no need to test it anymore. We are trying to fix an
issue caused by IOAPIC related work. The previous version of patch
is too coarse grain and may affect Xen. And now we have reworked it,
so it shouldn't affect Xen anymore.
Regards!
Gerry

>>
>> Thanks for help!
>> Gerry
>>
>>>> 2) Flag dev->dev.power.is_prepared has already been cleared when
>>>> pcibios_enable_device() gets called, so it will cause IOAPIC pin
>>>> reference count leak.
>>>>
>>>> So I reworked the patch to fix above issues. The first patch fixes issue
>>>> 1 by moving check of dev->dev.power.is_prepared pcibios_enable_irq, so
>>>> it won't affect Xen. The second patch fixes the IOAPIC pin reference
>>>> count leakage issue. It also solves the issue we have discussed at
>>>> http://www.spinics.net/lists/linux-pci/msg32902.html
>>>>
>>>> Regards!
>>>> Gerry
>>>>
>>>> Jiang Liu (2):
>>>> x86, irq, PCI: Keep IRQ assignment for PCI devices during
>>>> suspend/hibernation
>>>> x86, irq: Keep balance of IOAPIC pin reference count
>>>>
>>>> arch/x86/pci/intel_mid_pci.c | 9 ++++++++-
>>>> arch/x86/pci/irq.c | 8 +++++++-
>>>> drivers/acpi/pci_irq.c | 15 +++++++++++++--
>>>> include/linux/pci.h | 1 +
>>>> 4 files changed, 29 insertions(+), 4 deletions(-)
>>>>
>>>> --
>>>> 1.7.10.4
>>>>