On Wed, Sep 09, 2026 at 03:01:22PM +0530, Naman Jain wrote: > > > On 9/8/2026 5:00 PM, Sahil Chandna wrote: > > A guest can wait indefinitely in wait_for_response() for the host to > > send either a rescind message or a packet completion. If the > > host does not send either, the guest can remain blocked with no > > diagnostic indicating a reason. > > This was observed during a guest kernel upgrade in which the > > host-side application handling the PCI channel faulted, causing the > > guest to never receive the completion request. > > Add a warning in wait_for_response() when the wait exceeds > > a timeout so that such a hang is visible in the guest's kernel log > > and can be correlated with host-side state. > > > > Suggested-by: Michael Kelley <[email protected]> > > Signed-off-by: Sahil Chandna <[email protected]> > > --- > > Changes since v2: > > - Add counter based timeout instead of introducing another timer > > Link to v2: > > https://lore.kernel.org/all/[email protected]/ > > > > Changes since v1: > > - Removed periodic warning to one time warning in 2 minutes > > - Include vmbus relid and stuck PCI msg. > > Link to v1: > > https://lore.kernel.org/all/[email protected]/ > > drivers/pci/controller/pci-hyperv.c | 46 ++++++++++++++++++++++------- > > 1 file changed, 36 insertions(+), 10 deletions(-) > > > > diff --git a/drivers/pci/controller/pci-hyperv.c > > b/drivers/pci/controller/pci-hyperv.c > > index 89816a2bd7cd..bd07402c47ed 100644 > > --- a/drivers/pci/controller/pci-hyperv.c > > +++ b/drivers/pci/controller/pci-hyperv.c > > @@ -1040,19 +1040,38 @@ static void put_pcichild(struct hv_pci_dev *hpdev) > > > > /* > > * There is no good way to get notified from vmbus_onoffer_rescind(), > > - * so let's use polling here, since this is not a hot path. > > + * so let's use polling here, since this is not a hot path. If > > + * wait_for_response() has been polling for 2 minutes > > + * without either a rescind or completion, add a warning. > > */ > > +#define PCI_RESPONSE_HANG_TICKS 1200 > > + > > Nit, I think this variable name could be misleading, as this represents a > loop counter for a retry logic, but not exactly *ticks* from kernel > terminology. > > I would have preferred something like: PCI_RESPONSE_WARN_POLL_COUNT. >
PCI_RESPONSE_POLL_COUNT? - Mani -- மணிவண்ணன் சதாசிவம்

