From: Niklas Schnelle <schnelle@linux.ibm.com>
To: Heiko Carstens <hca@linux.ibm.com>, Farhan Ali <alifm@linux.ibm.com>
Cc: linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org,
mjrosato@linux.ibm.com, agordeev@linux.ibm.com,
gor@linux.ibm.com
Subject: Re: [PATCH v1 1/1] s390/pci: Restore IRQ unconditionally for the zPCI device
Date: Thu, 23 Oct 2025 13:18:54 +0200 [thread overview]
Message-ID: <d611c17f342acc0d00b9921686474007a7d29213.camel@linux.ibm.com> (raw)
In-Reply-To: <20251023074028.9536A84-hca@linux.ibm.com>
On Thu, 2025-10-23 at 09:40 +0200, Heiko Carstens wrote:
> On Wed, Oct 22, 2025 at 09:47:26AM -0700, Farhan Ali wrote:
> > Commit c1e18c17bda6 ("s390/pci: add zpci_set_irq()/zpci_clear_irq()"),
> > introduced the zpci_set_irq() and zpci_clear_irq(), to be used while
> > resetting a zPCI device.
> >
> > Commit da995d538d3a ("s390/pci: implement reset_slot for hotplug slot"),
> > mentions zpci_clear_irq() being called in the path for zpci_hot_reset_device().
> > But that is not the case anymore and these functions are not called
> > outside of this file. Instead zpci_hot_reset_device() relies on
> > zpci_disable_device() also clearing the IRQs, but misses to reset the
> > zdev->irqs_registered flag.
> >
> > However after a CLP disable/enable reset, the device's IRQ are
> > unregistered, but the flag zdev->irq_registered does not get cleared. It
> > creates an inconsistent state and so arch_restore_msi_irqs() doesn't
> > correctly restore the device's IRQ. This becomes a problem when a PCI
> > driver tries to restore the state of the device through
> > pci_restore_state(). Restore IRQ unconditionally for the device and remove
> > the irq_registered flag as its redundant.
> >
> > Reviewed-by: Niklas Schnelle <schnelle@linux.ibm.com>
> > Reviewed-by: Matthew Rosato <mjrosato@linux.ibm.com>
> > Signed-off-by: Farhan Ali <alifm@linux.ibm.com>
> > ---
> > arch/s390/include/asm/pci.h | 1 -
> > arch/s390/pci/pci_irq.c | 9 +--------
> > 2 files changed, 1 insertion(+), 9 deletions(-)
>
> The above sounds like this fixes a regression. Is there a reason why
> there are no Fixes and stable tags?
It doesn't have a fixes tag because at the moment the problem is
theoretical because no driver uses plain pci_restore_state() in
recovery. Farhan is working on patches where this would be used in
vfio-pci / PCI pass-through scenarios though.
The existing drivers re-use their shutdown and initialization routines
to restore state and end up calling arch_teardown_msi_irqs() and
arch_setup_msi_irqs() so it works out ok there.
That said, I agree this could and probably should carry a fixes tag
since the logic is kind of broken even if it doesn't break anything at
the moment.
Thanks,
Niklas
next prev parent reply other threads:[~2025-10-23 11:19 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-22 16:47 [PATCH v1 1/1] s390/pci: Restore IRQ unconditionally for the zPCI device Farhan Ali
2025-10-23 7:40 ` Heiko Carstens
2025-10-23 11:18 ` Niklas Schnelle [this message]
2025-10-23 12:00 ` Heiko Carstens
2025-10-23 12:09 ` Niklas Schnelle
2025-10-23 15:19 ` Heiko Carstens
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=d611c17f342acc0d00b9921686474007a7d29213.camel@linux.ibm.com \
--to=schnelle@linux.ibm.com \
--cc=agordeev@linux.ibm.com \
--cc=alifm@linux.ibm.com \
--cc=gor@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=mjrosato@linux.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox