Re: [PATCH] idpf: disable PCIe PTM on device removal
From: Myeonghun Pak <hidden>
Date: 2026-07-15 07:40:27
Also in:
intel-wired-lan, lkml
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 [off-list ref]님이 작성:
On 7/14/2026 1:11 AM, Myeonghun Pak wrote:quoted
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 <redacted> Signed-off-by: Ijae Kim <redacted> Signed-off-by: Myeonghun Pak <redacted> --- 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