Re: [PATCH v2] PCI: hv: fix reading of PCI_INTERRUPT_PIN

From: Bjorn Helgaas
Date: Mon Jul 01 2024 - 13:21:54 EST


On Mon, Jul 01, 2024 at 06:16:18AM +0000, Wei Liu wrote:
> On Wed, Jun 26, 2024 at 10:10:39AM -0500, Bjorn Helgaas wrote:
> > 1) Capitalize subject to match history
>
> What do you mean here? I got the "PCI: hv: ..." format from recent
> commits. "PCI" is capitalized. You want to to capitalize "fix"?

Yes. Look at the history:

$ git log --oneline --no-merges drivers/pci/controller/pci-hyperv.c
b5ff74c1ef50 PCI: hv: Fix ring buffer size calculation
07e8f88568f5 x86/apic: Drop apic::delivery_mode
f741bcadfe52 PCI: hv: Annotate struct hv_dr_state with __counted_by
04bbe863241a PCI: hv: Fix a crash in hv_pci_restore_msi_msg() during hibernation
067d6ec7ed5b PCI: hv: Add a per-bus mutex state_lock
a847234e24d0 Revert "PCI: hv: Fix a timing issue which causes kdump to fail occasionally"
add9195e69c9 PCI: hv: Remove the useless hv_pcichild_state from struct hv_pci_dev
2738d5ab7929 PCI: hv: Fix a race condition in hv_irq_unmask() that can cause panic
...

> > 2) Say something more specific than "fix reading ..."
> >
> > Apparently this returns garbage in some case where you want to return
> > zero?
>
> Yes. *val is not changed in the old code, so garbage is returned.
>
> Here is the updated commit message. I can resend once you confirm you're
> happy with it.
>
> PCI: hv: Fix reading of PCI_INTERRUPT_PIN

Maybe:

PCI: hv: Return zero, not garbage, when reading PCI_INTERRUPT_PIN

> The intent of the code snippet is to always return 0 for both
> PCI_INTERRUPT_LINE and PCI_INTERRUPT_PIN.
>
> The check misses PCI_INTERRUPT_PIN. This patch fixes that.
>
> This is discovered by this call in VFIO:
>
> pci_read_config_byte(vdev->pdev, PCI_INTERRUPT_PIN, &pin);
>
> The old code does not set *val to 0 because it misses the check for
> PCI_INTERRUPT_PIN. Garbage is returned in this case.
>
> Fixes: 4daace0d8ce8 ("PCI: hv: Add paravirtual PCI front-end for Microsoft Hyper-V VMs")
> Cc: stable@xxxxxxxxxx
> Signed-off-by: Wei Liu <wei.liu@xxxxxxxxxx>

Looks fine.