lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <d611c17f342acc0d00b9921686474007a7d29213.camel@linux.ibm.com>
Date: Thu, 23 Oct 2025 13:18:54 +0200
From: Niklas Schnelle <schnelle@...ux.ibm.com>
To: Heiko Carstens <hca@...ux.ibm.com>, Farhan Ali <alifm@...ux.ibm.com>
Cc: linux-s390@...r.kernel.org, linux-kernel@...r.kernel.org,
        mjrosato@...ux.ibm.com, agordeev@...ux.ibm.com, gor@...ux.ibm.com
Subject: Re: [PATCH v1 1/1] s390/pci: Restore IRQ unconditionally for the
 zPCI device

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@...ux.ibm.com>
> > Reviewed-by: Matthew Rosato <mjrosato@...ux.ibm.com>
> > Signed-off-by: Farhan Ali <alifm@...ux.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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ