RE: [Resend PATCH 1/2 v3] pci-hyperv: properly handle pci bus remove

From: Long Li
Date: Mon Feb 13 2017 - 14:02:38 EST


> -----Original Message-----
> From: Bjorn Helgaas [mailto:bhelgaas@xxxxxxxxxx]
> Sent: Saturday, February 11, 2017 9:35 AM
> To: Long Li <longli@xxxxxxxxxxxxx>
> Cc: KY Srinivasan <kys@xxxxxxxxxxxxx>; Haiyang Zhang
> <haiyangz@xxxxxxxxxxxxx>; devel@xxxxxxxxxxxxxxxxxxxxxx; linux-
> pci@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx
> Subject: Re: [Resend PATCH 1/2 v3] pci-hyperv: properly handle pci bus
> remove
>
> On Fri, Feb 10, 2017 at 7:18 PM, Long Li <longli@xxxxxxxxxxxxx> wrote:
> > Hi Bjorn,
> >
> > This patch and the other one in the series ([Resend PATCH 2/2 v3] pci-
> hyperv: lock pci bus on device eject) have been Acked.
> >
> > Is there anything else should be done before it can be merged? Please let
> me know.
>
> Sorry, I don't know what happened here. I see your Jan 23 posting in my
> work email (bhelgaas@xxxxxxxxxx), but I don't see it on the linux-pci or
> linux-kernel lists, and patchwork [1] doesn't have a copy
> either. I suspect there was something about your email that made
> vger drop it (maybe an HTML or other "fancy" stuff per
> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fvger.ke
> rnel.org%2Fmajordomo-
> info.html&data=02%7C01%7Clongli%40microsoft.com%7Cd3d9fb666bdd4244
> 901b08d452a4692b%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C63
> 6224313474452403&sdata=UcQu75mTXO3xh5ot%2FZTRDgL5GXayaXjs%2Fugt
> wWe91Ko%3D&reserved=0).
>
> Patchwork works by subscribing to linux-pci and collecting things that look
> like patches. Then I work from patchwork as a to-do list.
> That's a convenient way to ensure that patches appear on the mailing list
> before I apply them. It also means that if a patch doesn't appear on linux-pci
> and subsequently in patchwork, I don't know about it.
>
> Patchwork does have copies of previous versions, but I marked them
> "changes requested". When I do that, the patch drops off the to-do list
> because I'm expecting a new version, which *will* appear on the list. I don't
> mark things "changes requested" if I'm only waiting for an ack, so it looks like
> the only change I was looking for was a changelog revision. Normally I just
> tweak changelogs myself, so I apologize for not doing that in this case.
>
> Anyway, can you just post the current version, including the acks, and make
> sure it shows up on the mailing list?
>
> I'm sorry this has languished so long. Thanks for reminding me about it so we
> can sort this out.

Thank you. I will fix the email and resend the patch.

>
> [1]
> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatch
> work.ozlabs.org%2Fproject%2Flinux-
> pci%2Flist%2F%3Fsubmitter%3D69886%26state%3D*%26q%3D%26archive%3
> Dboth%26delegate&data=02%7C01%7Clongli%40microsoft.com%7Cd3d9fb66
> 6bdd4244901b08d452a4692b%7C72f988bf86f141af91ab2d7cd011db47%7C1%
> 7C0%7C636224313474452403&sdata=ELx04yDnSbe1fxXLy7z2iFoKwazKEMlDLrl
> p4CWhXbk%3D&reserved=0=
>
> >> -----Original Message-----
> >> From: KY Srinivasan
> >> Sent: Friday, January 27, 2017 10:42 AM
> >> To: Long Li <longli@xxxxxxxxxxxxx>; Haiyang Zhang
> >> <haiyangz@xxxxxxxxxxxxx>; Bjorn Helgaas <bhelgaas@xxxxxxxxxx>
> >> Cc: devel@xxxxxxxxxxxxxxxxxxxxxx; linux-pci@xxxxxxxxxxxxxxx; linux-
> >> kernel@xxxxxxxxxxxxxxx; Long Li <longli@xxxxxxxxxxxxx>
> >> Subject: RE: [Resend PATCH 1/2 v3] pci-hyperv: properly handle pci
> >> bus remove
> >>
> >>
> >>
> >> > -----Original Message-----
> >> > From: Long Li [mailto:longli@xxxxxxxxxxxxxxxxxxxxxx]
> >> > Sent: Monday, January 23, 2017 9:45 PM
> >> > To: KY Srinivasan <kys@xxxxxxxxxxxxx>; Haiyang Zhang
> >> > <haiyangz@xxxxxxxxxxxxx>; Bjorn Helgaas <bhelgaas@xxxxxxxxxx>
> >> > Cc: devel@xxxxxxxxxxxxxxxxxxxxxx; linux-pci@xxxxxxxxxxxxxxx; linux-
> >> > kernel@xxxxxxxxxxxxxxx; Long Li <longli@xxxxxxxxxxxxx>
> >> > Subject: [Resend PATCH 1/2 v3] pci-hyperv: properly handle pci bus
> >> > remove
> >> >
> >> > [This sender failed our fraud detection checks and may not be who
> >> > they appear to be. Learn about spoofing at
> >> >
> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Faka
> >> >
> .ms%2FLearnAboutSpoofing&data=02%7C01%7Clongli%40microsoft.com%7C
> d3
> >> >
> d9fb666bdd4244901b08d452a4692b%7C72f988bf86f141af91ab2d7cd011db47
> %7
> >> >
> C1%7C0%7C636224313474452403&sdata=jlfhIYsJJT4HbcPGSPTk43AApcip%2F
> 9m
> >> > w7snnFn%2FvI74%3D&reserved=0]
> >> >
> >> > From: Long Li <longli@xxxxxxxxxxxxx>
> >> >
> >> > hv_pci_devices_present is called in hv_pci_remove when we remove a
> >> > PCI device from host (e.g. by disabling SRIOV on a device). In
> >> > hv_pci_remove, the bus is already removed before the call, so we
> >> > don't need to rescan the bus in the workqueue scheduled from
> >> > hv_pci_devices_present. By introducing status hv_pcibus_removed, we
> >> can avoid this situation.
> >> >
> >> > Signed-off-by: Long Li <longli@xxxxxxxxxxxxx>
> >> > Reported-by: Xiaofeng Wang <xiaofwan@xxxxxxxxxx>
> >> Acked-by: K. Y. Srinivasan <kys@xxxxxxxxxxxxx>
> >> > ---
> >> > drivers/pci/host/pci-hyperv.c | 20 +++++++++++++++++---
> >> > 1 file changed, 17 insertions(+), 3 deletions(-)
> >> >
> >> > diff --git a/drivers/pci/host/pci-hyperv.c
> >> > b/drivers/pci/host/pci-hyperv.c index a8deeca..4a37598 100644
> >> > --- a/drivers/pci/host/pci-hyperv.c
> >> > +++ b/drivers/pci/host/pci-hyperv.c
> >> > @@ -348,6 +348,7 @@ enum hv_pcibus_state {
> >> > hv_pcibus_init = 0,
> >> > hv_pcibus_probed,
> >> > hv_pcibus_installed,
> >> > + hv_pcibus_removed,
> >> > hv_pcibus_maximum
> >> > };
> >> >
> >> > @@ -1481,13 +1482,24 @@ static void pci_devices_present_work(struct
> >> > work_struct *work)
> >> > put_pcichild(hpdev, hv_pcidev_ref_initial);
> >> > }
> >> >
> >> > - /* Tell the core to rescan bus because there may have been
> changes.
> >> */
> >> > - if (hbus->state == hv_pcibus_installed) {
> >> > + switch (hbus->state) {
> >> > + case hv_pcibus_installed:
> >> > + /*
> >> > + * Tell the core to rescan bus
> >> > + * because there may have been changes.
> >> > + */
> >> > pci_lock_rescan_remove();
> >> > pci_scan_child_bus(hbus->pci_bus);
> >> > pci_unlock_rescan_remove();
> >> > - } else {
> >> > + break;
> >> > +
> >> > + case hv_pcibus_init:
> >> > + case hv_pcibus_probed:
> >> > survey_child_resources(hbus);
> >> > + break;
> >> > +
> >> > + default:
> >> > + break;
> >> > }
> >> >
> >> > up(&hbus->enum_sem);
> >> > @@ -2163,6 +2175,7 @@ static int hv_pci_probe(struct hv_device
> *hdev,
> >> > hbus = kzalloc(sizeof(*hbus), GFP_KERNEL);
> >> > if (!hbus)
> >> > return -ENOMEM;
> >> > + hbus->state = hv_pcibus_init;
> >> >
> >> > /*
> >> > * The PCI bus "domain" is what is called "segment" in ACPI
> >> > and @@ -2305,6 +2318,7 @@ static int hv_pci_remove(struct hv_device
> >> *hdev)
> >> > pci_stop_root_bus(hbus->pci_bus);
> >> > pci_remove_root_bus(hbus->pci_bus);
> >> > pci_unlock_rescan_remove();
> >> > + hbus->state = hv_pcibus_removed;
> >> > }
> >> >
> >> > ret = hv_send_resources_released(hdev);
> >> > --
> >> > 1.8.5.6
> >