Re: [PATCH] idpf: disable PCIe PTM on device removal
From: Myeonghun Pak
Date: Wed Jul 15 2026 - 03:45:43 EST
Thanks, you're right. A successful pci_enable_ptm() is followed by
several operations that may fail, and those paths currently return
without disabling PTM.
I'll add pci_disable_ptm() to the common probe error unwind path and
send a v2.
Thanks,
Myeonghun
2026년 7월 15일 (수) 오전 1:37, Tantilov, Emil S <emil.s.tantilov@xxxxxxxxx>님이 작성:
>
> On 7/14/2026 1:11 AM, Myeonghun Pak wrote:
> > idpf_probe() enables PCIe Precision Time Measurement with
> > pci_enable_ptm(pdev, NULL), which programs the PTM control bits and sets
> > pdev->ptm_enabled when the bus/controller supports it. The teardown path
> > in idpf_remove() releases the workqueues, vports, mutexes and the adapter
> > memory but never calls pci_disable_ptm(), so PTM is left enabled on the
> > device after the driver detaches.
> >
> > This leaves the PCI core's software PTM state and the device's PTM control
> > bits set with no bound driver. pcim_enable_device() only arranges for
> > pci_disable_device() on teardown and does not undo the PTM enable, so it
> > is not a substitute here.
> >
> > Pair the enable with pci_disable_ptm(pdev) in idpf_remove(), matching the
> > igc and mlx5 drivers which already disable PTM on their remove paths.
> >
> > Fixes: 8d5e12c5921c ("idpf: add initial PTP support")
> > Co-developed-by: Ijae Kim <ae878000@xxxxxxxxx>
> > Signed-off-by: Ijae Kim <ae878000@xxxxxxxxx>
> > Signed-off-by: Myeonghun Pak <mhun512@xxxxxxxxx>
> > ---
> > drivers/net/ethernet/intel/idpf/idpf_main.c | 1 +
> > 1 file changed, 1 insertion(+)
> >
> > diff --git a/drivers/net/ethernet/intel/idpf/idpf_main.c b/drivers/net/ethernet/intel/idpf/idpf_main.c
> > index 0dd741dcfc..3d3471d3f7 100644
> > --- a/drivers/net/ethernet/intel/idpf/idpf_main.c
> > +++ b/drivers/net/ethernet/intel/idpf/idpf_main.c
> > @@ -159,6 +159,7 @@ static void idpf_remove(struct pci_dev *pdev)
> > mutex_destroy(&adapter->queue_lock);
> > mutex_destroy(&adapter->vc_buf_lock);
> >
> > + pci_disable_ptm(pdev);
> > pci_set_drvdata(pdev, NULL);
> > kfree(adapter);
> > }
>
> I think another call will also be needed in idpf_probe() in the error
> path, following pci_enable_ptm().
>
> Thanks,
> Emil