Message ID | d58f9ba966e402eca73bf437ee39e28007bf7d21.1585544197.git.sbobroff@linux.ibm.com (mailing list archive) |
---|---|
State | Changes Requested |
Headers | show |
Series | powerpc/eeh: Release EEH device state synchronously | expand |
Context | Check | Description |
---|---|---|
snowpatch_ozlabs/apply_patch | warning | Failed to apply on branch powerpc/merge (c6624071c338732402e8c726df6a4074473eaa0e) |
snowpatch_ozlabs/apply_patch | warning | Failed to apply on branch powerpc/next (7074695ac6fb965d478f373b95bc5c636e9f21b0) |
snowpatch_ozlabs/apply_patch | success | Successfully applied on branch linus/master (7111951b8d4973bda27ff663f2cf18b663d15b48) |
snowpatch_ozlabs/build-ppc64le | success | Build succeeded |
snowpatch_ozlabs/build-ppc64be | success | Build succeeded |
snowpatch_ozlabs/build-ppc64e | success | Build succeeded |
snowpatch_ozlabs/build-pmac32 | success | Build succeeded |
snowpatch_ozlabs/checkpatch | success | total: 0 errors, 0 warnings, 0 checks, 15 lines checked |
snowpatch_ozlabs/needsstable | success | Patch has no Fixes tags |
On Mon, 2020-03-30 at 15:56 +1100, Sam Bobroff wrote: > Because the bus notifier calls eeh_rmv_from_parent_pe() (via > eeh_remove_device()) when a VF is removed, the call in > remove_sriov_vf_pdns() is redundant. eeh_rmv_from_parent_pe() won't actually remove the device if the recovering flag is set on the PE. Are you sure we're not introducing a race here?
On Fri, Apr 03, 2020 at 04:45:47PM +1100, Oliver O'Halloran wrote: > On Mon, 2020-03-30 at 15:56 +1100, Sam Bobroff wrote: > > Because the bus notifier calls eeh_rmv_from_parent_pe() (via > > eeh_remove_device()) when a VF is removed, the call in > > remove_sriov_vf_pdns() is redundant. > > eeh_rmv_from_parent_pe() won't actually remove the device if the > recovering flag is set on the PE. Are you sure we're not introducing a > race here? > Ah, I assume you're referring to the difference between calling eeh_remove_device() and directly calling eeh_rmv_from_parent_pe(), where the behaviour for PE's with EEH_PE_KEEP set is subtly different. I'll take a closer look at it and make sure to explain it better in v2.
diff --git a/arch/powerpc/kernel/pci_dn.c b/arch/powerpc/kernel/pci_dn.c index 4e654df55969..f6ac25f7af63 100644 --- a/arch/powerpc/kernel/pci_dn.c +++ b/arch/powerpc/kernel/pci_dn.c @@ -236,14 +236,7 @@ void remove_sriov_vf_pdns(struct pci_dev *pdev) */ edev = pdn_to_eeh_dev(pdn); if (edev) { - /* - * We allocate pci_dn's for the totalvfs count, - * but only only the vfs that were activated - * have a configured PE. - */ - if (edev->pe) - eeh_rmv_from_parent_pe(edev); - + WARN_ON_ONCE(edev->pe); pdn->edev = NULL; kfree(edev); }
Because the bus notifier calls eeh_rmv_from_parent_pe() (via eeh_remove_device()) when a VF is removed, the call in remove_sriov_vf_pdns() is redundant. So remove the call. Signed-off-by: Sam Bobroff <sbobroff@linux.ibm.com> --- arch/powerpc/kernel/pci_dn.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-)