On Sat, Oct 17, 2026 at 12:12:00AM +0000, [email protected] wrote:
> Thank you for your contribution! Sashiko AI review found 1 potential issue(s)
> to consider:
> - [Low] PCI: hv: hv_pci_reset_device() passes 3 arguments to
> wait_for_response()
> --
>
> commit 5767f2b6950e5dc7da0b5c142f971d8282c27a56
> Author: Hamza Mahfooz <[email protected]>
>
> PCI: hv: add vPCI device reset support
>
> This commit negotiates Hyper-V vPCI protocol version 1.5 and implements the
> reset_root_port() callback on pci_host_bridge by sending a PCI_RESET_DEVICE
> request over the vPCI VMBus channel.
>
> > diff --git a/drivers/pci/controller/pci-hyperv.c
> > b/drivers/pci/controller/pci-hyperv.c
> > index 89816a2bd7cd3..4bb4ca6da1f7b 100644
> > --- a/drivers/pci/controller/pci-hyperv.c
> > +++ b/drivers/pci/controller/pci-hyperv.c
>
> [ ... ]
>
> > @@ -1397,6 +1401,52 @@ static int hv_pcifront_write_config(struct pci_bus
> > *bus, unsigned int devfn,
> > return PCIBIOS_SUCCESSFUL;
> > }
> >
> > +static int hv_pci_reset_device(struct pci_host_bridge *bridge,
> > + struct pci_dev *pdev)
> > +{
> > + struct hv_pcibus_device *hbus =
> > + container_of(bridge->sysdata, struct hv_pcibus_device, sysdata);
> > + struct pci_child_message reset = {};
> > + struct hv_pci_compl comp_pkt;
> > + struct pci_packet pkt = {
> > + .completion_func = hv_pci_generic_compl,
> > + .compl_ctxt = &comp_pkt,
> > + };
> > + enum hv_pcibus_state state;
> > + int ret;
> > +
> > + /* Do not take state_lock: eject holds it while removing/locking pdev.
> > */
> > + state = READ_ONCE(hbus->state);
> > + if (state != hv_pcibus_probed && state != hv_pcibus_installed)
> > + return -ENODEV;
> > +
> > + init_completion(&comp_pkt.host_event);
> > + reset.message_type.type = PCI_RESET_DEVICE;
> > + reset.wslot.slot = devfn_to_wslot(pdev->devfn);
> > +
> > + ret = vmbus_sendpacket(hbus->hdev->channel, &reset, sizeof(reset),
> > + (unsigned long)&pkt, VM_PKT_DATA_INBAND,
> > + VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED);
> > + if (ret)
> > + return ret;
> > +
> > + ret = wait_for_response(hbus->hdev, &comp_pkt.host_event,
> > + "PCI_RESET_DEVICE");
>
> [Severity: Low]
> Does this compile when CONFIG_PCI_HYPERV is enabled?
>
> In drivers/pci/controller/pci-hyperv.c, wait_for_response() only accepts two
> arguments:
>
> static int wait_for_response(struct hv_device *hdev,
> struct completion *comp)
>
> Passing "PCI_RESET_DEVICE" as a third argument in hv_pci_reset_device()
> causes the build to fail with too many arguments to wait_for_response().
>
Not sure what tree this was applied to, but that function has 3 params
as of mainline commit ca039df94983 ("PCI: hv: Warn when
wait_for_response() waits indefinitely").
> > + if (ret)
> > + return ret;
> > +
> > + if (comp_pkt.completion_status == STATUS_NOT_SUPPORTED)
> > + return -ENOTTY;
> > +
> > + if (comp_pkt.completion_status) {
> > + pci_err(pdev, "Hyper-V device reset failed: %#x\n",
> > + comp_pkt.completion_status);
> > + return -EIO;
> > + }
> > +
> > + return 0;
> > +}
>
> [ ... ]
>
> --
> Sashiko AI review ยท
> https://sashiko.dev/#/patchset/[email protected]?part=2