lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <3b3d2bea-c8be-4438-9c71-876ce55dce35@amd.com>
Date:   Thu, 7 Dec 2023 13:18:15 -0600
From:   Mario Limonciello <mario.limonciello@....com>
To:     Hans de Goede <hdegoede@...hat.com>,
        "David E. Box" <david.e.box@...ux.intel.com>,
        jahutchinson99@...glemail.com, ilpo.jarvinen@...ux.intel.com,
        xi.pardee@...el.com, platform-driver-x86@...r.kernel.org,
        linux-kernel@...r.kernel.org, rajvi.jingar@...ux.intel.com
Subject: Re: [PATCH] platform/x86/intel/pmc: Remove GBE LTR ignore

On 12/7/2023 13:02, Hans de Goede wrote:
> Hi David,
> 
> On 12/7/23 19:23, David E. Box wrote:
>> Commit 804951203aa5 ("platform/x86:intel/pmc: Combine core_init() and
>> core_configure()") moved the GBE LTR ignore workaround from core.c to PCH
>> code and added it new for Cannon Lake PCH in cnp.c. This introduced a
>> network performance regression on a CNP PCH system [1] which has been
>> observed on other PCH architectures during testing. Remove the probe-time
>> GBE LTR ignore for all platforms. While this will prevent performance
>> degradation, it will also limit the deepest SoC Package C state that can be
>> entered at runtime while a LAN cable is attached.
>>
>> Reported-by: James Hutchinson <jahutchinson99@...glemail.com>
>> Closes: https://bugzilla.kernel.org/show_bug.cgi?id=218143 [1]
>> Fixes: 804951203aa5 ("platform/x86:intel/pmc: Combine core_init() and core_configure()")
>> Signed-off-by: David E. Box <david.e.box@...ux.intel.com>
>> Tested-by: James Hutchinson <jahutchinson99@...glemail.com>
> 
> So it seems to me that to fix 804951203aa5 the only thing
> which needs to be done is remove the pmc_core_send_ltr_ignore()
> call from cnp_core_init(), the other changes here are NOT
> related to fixing the regression.
> 
> So IMHO it seems better to split this into 2 patches?
> 
> Also if this block the system from reaching PC10 should
> this then not at least be done at suspend time and
> undone at resume ?  I'm not seeing anything in the current
> code which does an equivalent on suspend/resume, so it
> seems to me like this will cause a significant increase
> on suspended power-usage if an ethernet cable is attached ?

In addition to system suspend on these system does GBE support runtime PM?

If so, would it make sense to also have a Linux communication path from 
the GBE driver to this driver as part of the runtime PM callbacks?

Then if the the GBE goes into runtime PM it could tell this driver to 
waive LTR and if exits runtime PM it could tell this driver to stop 
waiving LTR.

> 
> Regards,
> 
> Hans
> 
> 
> 
>> ---
>>   drivers/platform/x86/intel/pmc/adl.c  | 6 ------
>>   drivers/platform/x86/intel/pmc/cnp.c  | 6 ------
>>   drivers/platform/x86/intel/pmc/core.c | 2 +-
>>   drivers/platform/x86/intel/pmc/core.h | 1 -
>>   drivers/platform/x86/intel/pmc/mtl.c  | 6 ------
>>   drivers/platform/x86/intel/pmc/tgl.c  | 5 -----
>>   6 files changed, 1 insertion(+), 25 deletions(-)
>>
>> diff --git a/drivers/platform/x86/intel/pmc/adl.c b/drivers/platform/x86/intel/pmc/adl.c
>> index 64c492391ede..e4a421ca64be 100644
>> --- a/drivers/platform/x86/intel/pmc/adl.c
>> +++ b/drivers/platform/x86/intel/pmc/adl.c
>> @@ -321,11 +321,5 @@ int adl_core_init(struct pmc_dev *pmcdev)
>>   
>>   	pmc_core_get_low_power_modes(pmcdev);
>>   
>> -	/* Due to a hardware limitation, the GBE LTR blocks PC10
>> -	 * when a cable is attached. Tell the PMC to ignore it.
>> -	 */
>> -	dev_dbg(&pmcdev->pdev->dev, "ignoring GBE LTR\n");
>> -	pmc_core_send_ltr_ignore(pmcdev, 3);
>> -
>>   	return 0;
>>   }
>> diff --git a/drivers/platform/x86/intel/pmc/cnp.c b/drivers/platform/x86/intel/pmc/cnp.c
>> index 59298f184d0e..416d3a0c3615 100644
>> --- a/drivers/platform/x86/intel/pmc/cnp.c
>> +++ b/drivers/platform/x86/intel/pmc/cnp.c
>> @@ -216,11 +216,5 @@ int cnp_core_init(struct pmc_dev *pmcdev)
>>   
>>   	pmc_core_get_low_power_modes(pmcdev);
>>   
>> -	/* Due to a hardware limitation, the GBE LTR blocks PC10
>> -	 * when a cable is attached. Tell the PMC to ignore it.
>> -	 */
>> -	dev_dbg(&pmcdev->pdev->dev, "ignoring GBE LTR\n");
>> -	pmc_core_send_ltr_ignore(pmcdev, 3);
>> -
>>   	return 0;
>>   }
>> diff --git a/drivers/platform/x86/intel/pmc/core.c b/drivers/platform/x86/intel/pmc/core.c
>> index 983e3a8f4910..7c6a74957d57 100644
>> --- a/drivers/platform/x86/intel/pmc/core.c
>> +++ b/drivers/platform/x86/intel/pmc/core.c
>> @@ -462,7 +462,7 @@ static int pmc_core_pll_show(struct seq_file *s, void *unused)
>>   }
>>   DEFINE_SHOW_ATTRIBUTE(pmc_core_pll);
>>   
>> -int pmc_core_send_ltr_ignore(struct pmc_dev *pmcdev, u32 value)
>> +static int pmc_core_send_ltr_ignore(struct pmc_dev *pmcdev, u32 value)
>>   {
>>   	struct pmc *pmc;
>>   	const struct pmc_reg_map *map;
>> diff --git a/drivers/platform/x86/intel/pmc/core.h b/drivers/platform/x86/intel/pmc/core.h
>> index 6d7673145f90..3bbdb41a754f 100644
>> --- a/drivers/platform/x86/intel/pmc/core.h
>> +++ b/drivers/platform/x86/intel/pmc/core.h
>> @@ -493,7 +493,6 @@ extern const struct pmc_reg_map mtl_ioem_reg_map;
>>   
>>   extern void pmc_core_get_tgl_lpm_reqs(struct platform_device *pdev);
>>   extern int pmc_core_ssram_get_lpm_reqs(struct pmc_dev *pmcdev);
>> -extern int pmc_core_send_ltr_ignore(struct pmc_dev *pmcdev, u32 value);
>>   
>>   int pmc_core_resume_common(struct pmc_dev *pmcdev);
>>   int get_primary_reg_base(struct pmc *pmc);
>> diff --git a/drivers/platform/x86/intel/pmc/mtl.c b/drivers/platform/x86/intel/pmc/mtl.c
>> index 38c2f946ec23..33d32a76c43a 100644
>> --- a/drivers/platform/x86/intel/pmc/mtl.c
>> +++ b/drivers/platform/x86/intel/pmc/mtl.c
>> @@ -1065,11 +1065,5 @@ int mtl_core_init(struct pmc_dev *pmcdev)
>>   	pmc_core_get_low_power_modes(pmcdev);
>>   	mtl_punit_pmt_init(pmcdev);
>>   
>> -	/* Due to a hardware limitation, the GBE LTR blocks PC10
>> -	 * when a cable is attached. Tell the PMC to ignore it.
>> -	 */
>> -	dev_dbg(&pmcdev->pdev->dev, "ignoring GBE LTR\n");
>> -	pmc_core_send_ltr_ignore(pmcdev, 3);
>> -
>>   	return pmc_core_ssram_get_lpm_reqs(pmcdev);
>>   }
>> diff --git a/drivers/platform/x86/intel/pmc/tgl.c b/drivers/platform/x86/intel/pmc/tgl.c
>> index d5f1d2223c5a..7e6f5739a197 100644
>> --- a/drivers/platform/x86/intel/pmc/tgl.c
>> +++ b/drivers/platform/x86/intel/pmc/tgl.c
>> @@ -265,11 +265,6 @@ int tgl_core_init(struct pmc_dev *pmcdev)
>>   
>>   	pmc_core_get_low_power_modes(pmcdev);
>>   	pmc_core_get_tgl_lpm_reqs(pmcdev->pdev);
>> -	/* Due to a hardware limitation, the GBE LTR blocks PC10
>> -	 * when a cable is attached. Tell the PMC to ignore it.
>> -	 */
>> -	dev_dbg(&pmcdev->pdev->dev, "ignoring GBE LTR\n");
>> -	pmc_core_send_ltr_ignore(pmcdev, 3);
>>   
>>   	return 0;
>>   }
>>
>> base-commit: 35ddd61cf023b5deb2b7e9f1627abef053281c0a
> 
> 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ