[Intel-wired-lan] [PATCH net-queue v1] igc: Fix suspending when PTM is active

Paul Menzel pmenzel at molgen.mpg.de
Mon Apr 11 11:50:52 UTC 2022


Dear Vinicius,


Thank you for your patch.

Am 05.04.22 um 22:54 schrieb Vinicius Costa Gomes:
> Some mainboard/CPU combinations have shown problems with
> suspend/resume when PCIe PTM is enabled and active.

Please give a concrete example of a mainboard/CPU combination with that 
problem, and document exactly what the problem is (system hangs, when, 
where, just no network device)?

Also, please use 75 characters per line in commit messages.

> The best we can do is to stop PTM dialogs from the downstream/device
> side before the interface is brought down. PCIe PTM will be
> re-enabled when the interface is being brought up.
> 
> Fixes: a90ec8483732 ("igc: Add support for PTP getcrosststamp()")
> Signed-off-by: Vinicius Costa Gomes <vinicius.gomes at intel.com>
> ---
> Stefan,
> 
> I believe that this should be a more general solution to the problem you reported in
> https://lore.kernel.org/all/924175a188159f4e03bd69908a91e606b574139b.camel@gmx.de/
> 
> Would it be possible for you revert commit 1e81dcc1ab7d ("igc: Do not
> enable crosstimestamping for i225-V models") and apply this one, and
> see if it works for you? I don't have your exact setup.
> 
> Cheers,
> 
>   drivers/net/ethernet/intel/igc/igc_ptp.c | 15 ++++++++++++++-
>   1 file changed, 14 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/ethernet/intel/igc/igc_ptp.c b/drivers/net/ethernet/intel/igc/igc_ptp.c
> index 0d6e3215e98f..653e9f1e35b5 100644
> --- a/drivers/net/ethernet/intel/igc/igc_ptp.c
> +++ b/drivers/net/ethernet/intel/igc/igc_ptp.c
> @@ -992,6 +992,17 @@ static void igc_ptp_time_restore(struct igc_adapter *adapter)
>   	igc_ptp_write_i225(adapter, &ts);
>   }
>   
> +static void igc_ptm_stop(struct igc_adapter *adapter)
> +{
> +	struct igc_hw *hw = &adapter->hw;
> +	u32 ctrl;
> +
> +	ctrl = rd32(IGC_PTM_CTRL);
> +	ctrl &= ~IGC_PTM_CTRL_EN;
> +
> +	wr32(IGC_PTM_CTRL, ctrl);
> +}
> +
>   /**
>    * igc_ptp_suspend - Disable PTP work items and prepare for suspend
>    * @adapter: Board private structure
> @@ -1009,8 +1020,10 @@ void igc_ptp_suspend(struct igc_adapter *adapter)
>   	adapter->ptp_tx_skb = NULL;
>   	clear_bit_unlock(__IGC_PTP_TX_IN_PROGRESS, &adapter->state);
>   
> -	if (pci_device_is_present(adapter->pdev))
> +	if (pci_device_is_present(adapter->pdev)) {
>   		igc_ptp_time_save(adapter);
> +		igc_ptm_stop(adapter);
> +	}
>   }
>   
>   /**

Acked-by: Paul Menzel <pmenzel at molgen.mpg.de>


Kind regards,

Paul


More information about the Intel-wired-lan mailing list