All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Patel, Mayurkumar" <mayurkumar.patel@intel.com>
To: Sinan Kaya <okaya@codeaurora.org>, Bjorn Helgaas <bhelgaas@google.com>
Cc: Rajat Jain <rajatxjain@gmail.com>,
	Myron Stowe <myron.stowe@redhat.com>,
	David Daney <david.daney@cavium.com>,
	"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
	Timur Tabi <timur@codeaurora.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Julia Lawall <Julia.Lawall@lip6.fr>,
	Bjorn Helgaas <helgaas@kernel.org>,
	linux-arm-msm <linux-arm-msm@vger.kernel.org>,
	Rajat Jain <rajatja@google.com>, Yinghai Lu <yinghai@kernel.org>,
	Shawn Lin <shawn.lin@rock-chips.com>,
	linux-arm <linux-arm-kernel@lists.infradead.org>
Subject: RE: [PATCH V8 4/5] PCI/ASPM: save power on values during bridge init
Date: Fri, 21 Apr 2017 07:46:27 +0000	[thread overview]
Message-ID: <92EBB4272BF81E4089A7126EC1E7B2846676C7EF@IRSMSX101.ger.corp.intel.com> (raw)
In-Reply-To: <c0c2f48f-d725-058e-a1ad-92ab4b6e7fb3@codeaurora.org>

Hi Bjorn/Kaya,


>
>On 4/17/2017 12:38 PM, Bjorn Helgaas wrote:
>>> Like you said, what do we do by default is the question. Should we opt
>>> for safe like we are doing, or try to save some power.
>> I think safety is paramount.  Every user should be able to boot safely
>> without any kernel parameters.  We don't want users to have a problem
>> booting and then have to search for a workaround like booting with
>> "pcie_aspm=off".  Most users will never do that.
>>
>
>OK, no problem with leaving the behavior as it is.
>
>My initial approach was #2. We knew this way that user had full control
>over the ASPM policy by changing the BIOS option. Then, Mayurkumar
>complained that ASPM is not enabled following a hotplug insertion to an
>empty slot. That's when I switched to #3 as it sounded like a good thing
>to have for us.
>
>> Here's a long-term strawman proposal, see what you think:
>>
>>   - Deprecate CONFIG_PCIEASPM_DEFAULT, CONFIG_PCIEASPM_POWERSAVE, etc.
>>   - Default aspm_policy is POLICY_DEFAULT always.
>>   - POLICY_DEFAULT means Linux doesn't touch anything: if BIOS enabled
>> ASPM, we leave it that way; we leave ASPM disabled on hot-added
>> devices.
>
I am also ok with leaving the same behavior as now.
But still following is something open I feel besides, Which may be there in your comments redundantly.
The current problem is, pcie_aspm_exit_link_state() disables the ASPM configuration even
if POLICY_DEFAULT was set.
I am seeing already following problem(or may be influence) with it. The Endpoint I have does not have
does not have "Presence detect change" mechanism. Hot plug is working with Link status events.
When link is in L1 or L1SS and if EP is powered off, no Link status change event are triggered (It might be
the expected behavior in L1 or L1SS).  When next time EP is powered on there are link down and
link up events coming one after other. BIOS enables ASPM on Root port and Endpoint, but while
processing link status down, pcie_aspm_exit_link_state() clears the ASPM already which were enabled by BIOS. 
If we want to follow above approach then shall we consider having something similar as following?

diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c
index 1dfa10c..bf5be6d 100644
--- a/drivers/pci/pcie/aspm.c
+++ b/drivers/pci/pcie/aspm.c
@@ -940,7 +940,8 @@ void pcie_aspm_exit_link_state(struct pci_dev *pdev)
        parent_link = link->parent;

        /* All functions are removed, so just disable ASPM for the link */
-       pcie_config_aspm_link(link, 0);
+       if (aspm_policy != POLICY_DEFAULT)
+               pcie_config_aspm_link(link, 0);
        list_del(&link->sibling);
        list_del(&link->link);
        /* Clock PM is for endpoint device */
 

>I can easily see people complaining the other way around. There
>could be some boot FW that doesn't know what ASPM is and this particular
>system could rely on the compile time option for enabling power options.
>Maybe, a command line option will be required for them to keep the existing
>behavior.
>
>>   - Deprecate kernel boot parameters (possibly keep pcie_aspm=off for
>> debugging use).
>>   - Use /sys/module/pcie_aspm/parameters/policy for run-time
>> system-wide  control, including for future hot-added devices.
>>   - Remove CONFIG_PCIEASPM_DEBUG and enable that code always, so we
>> have fine-grained run-time control.
>>
>
>Runtime control sounds like a better plan. We need hooks into the system
>power management policy.
>
>>> Maybe, we are missing a HPP option from the PCI spec.
>> That's an interesting idea.  _HPX does have provision for manipulating
>> Link Control bits (see ACPI r5.0, sec 6.2.8.3), but I don't think very
>> many systems implement it.  And there's currently no connection
>> between program_hpp_type2() and aspm.c, so I'm a little worried that
>> we might have issues if a system did implement an _HPX that sets any
>> of the ASPM bits.
>
>I looked at the spec some more. These are there to restore the register
>settings following hotplug insertion. I agree it won't play nice with ASPM
>as the control bits need to be enabled in coordination with the upstream
>device.
>
>I think the right approach is to let the userspace feed the required
>policy to the kernel like you suggested. Then, it needs to be per port
>via link_state to have the most flexibility.
>
>
>--
>Sinan Kaya
>Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
>Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.
Intel Deutschland GmbH
Registered Address: Am Campeon 10-12, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de
Managing Directors: Christin Eisenschmid, Christian Lamprechter
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928

WARNING: multiple messages have this Message-ID (diff)
From: "Patel, Mayurkumar" <mayurkumar.patel@intel.com>
To: Sinan Kaya <okaya@codeaurora.org>, Bjorn Helgaas <bhelgaas@google.com>
Cc: Bjorn Helgaas <helgaas@kernel.org>,
	Rajat Jain <rajatja@google.com>,
	"Rajat Jain" <rajatxjain@gmail.com>,
	David Daney <david.daney@cavium.com>,
	"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
	Timur Tabi <timur@codeaurora.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Julia Lawall <Julia.Lawall@lip6.fr>,
	linux-arm-msm <linux-arm-msm@vger.kernel.org>,
	Yinghai Lu <yinghai@kernel.org>,
	Shawn Lin <shawn.lin@rock-chips.com>,
	linux-arm <linux-arm-kernel@lists.infradead.org>,
	Myron Stowe <myron.stowe@redhat.com>
Subject: RE: [PATCH V8 4/5] PCI/ASPM: save power on values during bridge init
Date: Fri, 21 Apr 2017 07:46:27 +0000	[thread overview]
Message-ID: <92EBB4272BF81E4089A7126EC1E7B2846676C7EF@IRSMSX101.ger.corp.intel.com> (raw)
In-Reply-To: <c0c2f48f-d725-058e-a1ad-92ab4b6e7fb3@codeaurora.org>

Hi Bjorn/Kaya,


>
>On 4/17/2017 12:38 PM, Bjorn Helgaas wrote:
>>> Like you said, what do we do by default is the question. Should we opt
>>> for safe like we are doing, or try to save some power.
>> I think safety is paramount.  Every user should be able to boot safely
>> without any kernel parameters.  We don't want users to have a problem
>> booting and then have to search for a workaround like booting with
>> "pcie_aspm=off".  Most users will never do that.
>>
>
>OK, no problem with leaving the behavior as it is.
>
>My initial approach was #2. We knew this way that user had full control
>over the ASPM policy by changing the BIOS option. Then, Mayurkumar
>complained that ASPM is not enabled following a hotplug insertion to an
>empty slot. That's when I switched to #3 as it sounded like a good thing
>to have for us.
>
>> Here's a long-term strawman proposal, see what you think:
>>
>>   - Deprecate CONFIG_PCIEASPM_DEFAULT, CONFIG_PCIEASPM_POWERSAVE, etc.
>>   - Default aspm_policy is POLICY_DEFAULT always.
>>   - POLICY_DEFAULT means Linux doesn't touch anything: if BIOS enabled
>> ASPM, we leave it that way; we leave ASPM disabled on hot-added
>> devices.
>
I am also ok with leaving the same behavior as now.
But still following is something open I feel besides, Which may be there in your comments redundantly.
The current problem is, pcie_aspm_exit_link_state() disables the ASPM configuration even
if POLICY_DEFAULT was set.
I am seeing already following problem(or may be influence) with it. The Endpoint I have does not have
does not have "Presence detect change" mechanism. Hot plug is working with Link status events.
When link is in L1 or L1SS and if EP is powered off, no Link status change event are triggered (It might be
the expected behavior in L1 or L1SS).  When next time EP is powered on there are link down and
link up events coming one after other. BIOS enables ASPM on Root port and Endpoint, but while
processing link status down, pcie_aspm_exit_link_state() clears the ASPM already which were enabled by BIOS. 
If we want to follow above approach then shall we consider having something similar as following?

diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c
index 1dfa10c..bf5be6d 100644
--- a/drivers/pci/pcie/aspm.c
+++ b/drivers/pci/pcie/aspm.c
@@ -940,7 +940,8 @@ void pcie_aspm_exit_link_state(struct pci_dev *pdev)
        parent_link = link->parent;

        /* All functions are removed, so just disable ASPM for the link */
-       pcie_config_aspm_link(link, 0);
+       if (aspm_policy != POLICY_DEFAULT)
+               pcie_config_aspm_link(link, 0);
        list_del(&link->sibling);
        list_del(&link->link);
        /* Clock PM is for endpoint device */
 

>I can easily see people complaining the other way around. There
>could be some boot FW that doesn't know what ASPM is and this particular
>system could rely on the compile time option for enabling power options.
>Maybe, a command line option will be required for them to keep the existing
>behavior.
>
>>   - Deprecate kernel boot parameters (possibly keep pcie_aspm=off for
>> debugging use).
>>   - Use /sys/module/pcie_aspm/parameters/policy for run-time
>> system-wide  control, including for future hot-added devices.
>>   - Remove CONFIG_PCIEASPM_DEBUG and enable that code always, so we
>> have fine-grained run-time control.
>>
>
>Runtime control sounds like a better plan. We need hooks into the system
>power management policy.
>
>>> Maybe, we are missing a HPP option from the PCI spec.
>> That's an interesting idea.  _HPX does have provision for manipulating
>> Link Control bits (see ACPI r5.0, sec 6.2.8.3), but I don't think very
>> many systems implement it.  And there's currently no connection
>> between program_hpp_type2() and aspm.c, so I'm a little worried that
>> we might have issues if a system did implement an _HPX that sets any
>> of the ASPM bits.
>
>I looked at the spec some more. These are there to restore the register
>settings following hotplug insertion. I agree it won't play nice with ASPM
>as the control bits need to be enabled in coordination with the upstream
>device.
>
>I think the right approach is to let the userspace feed the required
>policy to the kernel like you suggested. Then, it needs to be per port
>via link_state to have the most flexibility.
>
>
>--
>Sinan Kaya
>Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
>Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.
Intel Deutschland GmbH
Registered Address: Am Campeon 10-12, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de
Managing Directors: Christin Eisenschmid, Christian Lamprechter
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928

WARNING: multiple messages have this Message-ID (diff)
From: "Patel, Mayurkumar" <mayurkumar.patel@intel.com>
To: Sinan Kaya <okaya@codeaurora.org>, Bjorn Helgaas <bhelgaas@google.com>
Cc: Bjorn Helgaas <helgaas@kernel.org>,
	Rajat Jain <rajatja@google.com>,
	"Rajat Jain" <rajatxjain@gmail.com>,
	David Daney <david.daney@cavium.com>,
	"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
	Timur Tabi <timur@codeaurora.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Julia Lawall <Julia.Lawall@lip6.fr>,
	linux-arm-msm <linux-arm-msm@vger.kernel.org>,
	Yinghai Lu <yinghai@kernel.org>,
	Shawn Lin <shawn.lin@rock-chips.com>,
	linux-arm <linux-arm-kernel@lists.infradead.org>,
	Myron Stowe <myron.stowe@redhat.com>
Subject: RE: [PATCH V8 4/5] PCI/ASPM: save power on values during bridge init
Date: Fri, 21 Apr 2017 07:46:27 +0000	[thread overview]
Message-ID: <92EBB4272BF81E4089A7126EC1E7B2846676C7EF@IRSMSX101.ger.corp.intel.com> (raw)
In-Reply-To: <c0c2f48f-d725-058e-a1ad-92ab4b6e7fb3@codeaurora.org>

SGkgQmpvcm4vS2F5YSwNCg0KDQo+DQo+T24gNC8xNy8yMDE3IDEyOjM4IFBNLCBCam9ybiBIZWxn
YWFzIHdyb3RlOg0KPj4+IExpa2UgeW91IHNhaWQsIHdoYXQgZG8gd2UgZG8gYnkgZGVmYXVsdCBp
cyB0aGUgcXVlc3Rpb24uIFNob3VsZCB3ZSBvcHQNCj4+PiBmb3Igc2FmZSBsaWtlIHdlIGFyZSBk
b2luZywgb3IgdHJ5IHRvIHNhdmUgc29tZSBwb3dlci4NCj4+IEkgdGhpbmsgc2FmZXR5IGlzIHBh
cmFtb3VudC4gIEV2ZXJ5IHVzZXIgc2hvdWxkIGJlIGFibGUgdG8gYm9vdCBzYWZlbHkNCj4+IHdp
dGhvdXQgYW55IGtlcm5lbCBwYXJhbWV0ZXJzLiAgV2UgZG9uJ3Qgd2FudCB1c2VycyB0byBoYXZl
IGEgcHJvYmxlbQ0KPj4gYm9vdGluZyBhbmQgdGhlbiBoYXZlIHRvIHNlYXJjaCBmb3IgYSB3b3Jr
YXJvdW5kIGxpa2UgYm9vdGluZyB3aXRoDQo+PiAicGNpZV9hc3BtPW9mZiIuICBNb3N0IHVzZXJz
IHdpbGwgbmV2ZXIgZG8gdGhhdC4NCj4+DQo+DQo+T0ssIG5vIHByb2JsZW0gd2l0aCBsZWF2aW5n
IHRoZSBiZWhhdmlvciBhcyBpdCBpcy4NCj4NCj5NeSBpbml0aWFsIGFwcHJvYWNoIHdhcyAjMi4g
V2Uga25ldyB0aGlzIHdheSB0aGF0IHVzZXIgaGFkIGZ1bGwgY29udHJvbA0KPm92ZXIgdGhlIEFT
UE0gcG9saWN5IGJ5IGNoYW5naW5nIHRoZSBCSU9TIG9wdGlvbi4gVGhlbiwgTWF5dXJrdW1hcg0K
PmNvbXBsYWluZWQgdGhhdCBBU1BNIGlzIG5vdCBlbmFibGVkIGZvbGxvd2luZyBhIGhvdHBsdWcg
aW5zZXJ0aW9uIHRvIGFuDQo+ZW1wdHkgc2xvdC4gVGhhdCdzIHdoZW4gSSBzd2l0Y2hlZCB0byAj
MyBhcyBpdCBzb3VuZGVkIGxpa2UgYSBnb29kIHRoaW5nDQo+dG8gaGF2ZSBmb3IgdXMuDQo+DQo+
PiBIZXJlJ3MgYSBsb25nLXRlcm0gc3RyYXdtYW4gcHJvcG9zYWwsIHNlZSB3aGF0IHlvdSB0aGlu
azoNCj4+DQo+PiAgIC0gRGVwcmVjYXRlIENPTkZJR19QQ0lFQVNQTV9ERUZBVUxULCBDT05GSUdf
UENJRUFTUE1fUE9XRVJTQVZFLCBldGMuDQo+PiAgIC0gRGVmYXVsdCBhc3BtX3BvbGljeSBpcyBQ
T0xJQ1lfREVGQVVMVCBhbHdheXMuDQo+PiAgIC0gUE9MSUNZX0RFRkFVTFQgbWVhbnMgTGludXgg
ZG9lc24ndCB0b3VjaCBhbnl0aGluZzogaWYgQklPUyBlbmFibGVkDQo+PiBBU1BNLCB3ZSBsZWF2
ZSBpdCB0aGF0IHdheTsgd2UgbGVhdmUgQVNQTSBkaXNhYmxlZCBvbiBob3QtYWRkZWQNCj4+IGRl
dmljZXMuDQo+DQpJIGFtIGFsc28gb2sgd2l0aCBsZWF2aW5nIHRoZSBzYW1lIGJlaGF2aW9yIGFz
IG5vdy4NCkJ1dCBzdGlsbCBmb2xsb3dpbmcgaXMgc29tZXRoaW5nIG9wZW4gSSBmZWVsIGJlc2lk
ZXMsIFdoaWNoIG1heSBiZSB0aGVyZSBpbiB5b3VyIGNvbW1lbnRzIHJlZHVuZGFudGx5Lg0KVGhl
IGN1cnJlbnQgcHJvYmxlbSBpcywgcGNpZV9hc3BtX2V4aXRfbGlua19zdGF0ZSgpIGRpc2FibGVz
IHRoZSBBU1BNIGNvbmZpZ3VyYXRpb24gZXZlbg0KaWYgUE9MSUNZX0RFRkFVTFQgd2FzIHNldC4N
CkkgYW0gc2VlaW5nIGFscmVhZHkgZm9sbG93aW5nIHByb2JsZW0ob3IgbWF5IGJlIGluZmx1ZW5j
ZSkgd2l0aCBpdC4gVGhlIEVuZHBvaW50IEkgaGF2ZSBkb2VzIG5vdCBoYXZlDQpkb2VzIG5vdCBo
YXZlICJQcmVzZW5jZSBkZXRlY3QgY2hhbmdlIiBtZWNoYW5pc20uIEhvdCBwbHVnIGlzIHdvcmtp
bmcgd2l0aCBMaW5rIHN0YXR1cyBldmVudHMuDQpXaGVuIGxpbmsgaXMgaW4gTDEgb3IgTDFTUyBh
bmQgaWYgRVAgaXMgcG93ZXJlZCBvZmYsIG5vIExpbmsgc3RhdHVzIGNoYW5nZSBldmVudCBhcmUg
dHJpZ2dlcmVkIChJdCBtaWdodCBiZQ0KdGhlIGV4cGVjdGVkIGJlaGF2aW9yIGluIEwxIG9yIEwx
U1MpLiAgV2hlbiBuZXh0IHRpbWUgRVAgaXMgcG93ZXJlZCBvbiB0aGVyZSBhcmUgbGluayBkb3du
IGFuZA0KbGluayB1cCBldmVudHMgY29taW5nIG9uZSBhZnRlciBvdGhlci4gQklPUyBlbmFibGVz
IEFTUE0gb24gUm9vdCBwb3J0IGFuZCBFbmRwb2ludCwgYnV0IHdoaWxlDQpwcm9jZXNzaW5nIGxp
bmsgc3RhdHVzIGRvd24sIHBjaWVfYXNwbV9leGl0X2xpbmtfc3RhdGUoKSBjbGVhcnMgdGhlIEFT
UE0gYWxyZWFkeSB3aGljaCB3ZXJlIGVuYWJsZWQgYnkgQklPUy4gDQpJZiB3ZSB3YW50IHRvIGZv
bGxvdyBhYm92ZSBhcHByb2FjaCB0aGVuIHNoYWxsIHdlIGNvbnNpZGVyIGhhdmluZyBzb21ldGhp
bmcgc2ltaWxhciBhcyBmb2xsb3dpbmc/DQoNCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9wY2ll
L2FzcG0uYyBiL2RyaXZlcnMvcGNpL3BjaWUvYXNwbS5jDQppbmRleCAxZGZhMTBjLi5iZjViZTZk
IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9wY2kvcGNpZS9hc3BtLmMNCisrKyBiL2RyaXZlcnMvcGNp
L3BjaWUvYXNwbS5jDQpAQCAtOTQwLDcgKzk0MCw4IEBAIHZvaWQgcGNpZV9hc3BtX2V4aXRfbGlu
a19zdGF0ZShzdHJ1Y3QgcGNpX2RldiAqcGRldikNCiAgICAgICAgcGFyZW50X2xpbmsgPSBsaW5r
LT5wYXJlbnQ7DQoNCiAgICAgICAgLyogQWxsIGZ1bmN0aW9ucyBhcmUgcmVtb3ZlZCwgc28ganVz
dCBkaXNhYmxlIEFTUE0gZm9yIHRoZSBsaW5rICovDQotICAgICAgIHBjaWVfY29uZmlnX2FzcG1f
bGluayhsaW5rLCAwKTsNCisgICAgICAgaWYgKGFzcG1fcG9saWN5ICE9IFBPTElDWV9ERUZBVUxU
KQ0KKyAgICAgICAgICAgICAgIHBjaWVfY29uZmlnX2FzcG1fbGluayhsaW5rLCAwKTsNCiAgICAg
ICAgbGlzdF9kZWwoJmxpbmstPnNpYmxpbmcpOw0KICAgICAgICBsaXN0X2RlbCgmbGluay0+bGlu
ayk7DQogICAgICAgIC8qIENsb2NrIFBNIGlzIGZvciBlbmRwb2ludCBkZXZpY2UgKi8NCiANCg0K
PkkgY2FuIGVhc2lseSBzZWUgcGVvcGxlIGNvbXBsYWluaW5nIHRoZSBvdGhlciB3YXkgYXJvdW5k
LiBUaGVyZQ0KPmNvdWxkIGJlIHNvbWUgYm9vdCBGVyB0aGF0IGRvZXNuJ3Qga25vdyB3aGF0IEFT
UE0gaXMgYW5kIHRoaXMgcGFydGljdWxhcg0KPnN5c3RlbSBjb3VsZCByZWx5IG9uIHRoZSBjb21w
aWxlIHRpbWUgb3B0aW9uIGZvciBlbmFibGluZyBwb3dlciBvcHRpb25zLg0KPk1heWJlLCBhIGNv
bW1hbmQgbGluZSBvcHRpb24gd2lsbCBiZSByZXF1aXJlZCBmb3IgdGhlbSB0byBrZWVwIHRoZSBl
eGlzdGluZw0KPmJlaGF2aW9yLg0KPg0KPj4gICAtIERlcHJlY2F0ZSBrZXJuZWwgYm9vdCBwYXJh
bWV0ZXJzIChwb3NzaWJseSBrZWVwIHBjaWVfYXNwbT1vZmYgZm9yDQo+PiBkZWJ1Z2dpbmcgdXNl
KS4NCj4+ICAgLSBVc2UgL3N5cy9tb2R1bGUvcGNpZV9hc3BtL3BhcmFtZXRlcnMvcG9saWN5IGZv
ciBydW4tdGltZQ0KPj4gc3lzdGVtLXdpZGUgIGNvbnRyb2wsIGluY2x1ZGluZyBmb3IgZnV0dXJl
IGhvdC1hZGRlZCBkZXZpY2VzLg0KPj4gICAtIFJlbW92ZSBDT05GSUdfUENJRUFTUE1fREVCVUcg
YW5kIGVuYWJsZSB0aGF0IGNvZGUgYWx3YXlzLCBzbyB3ZQ0KPj4gaGF2ZSBmaW5lLWdyYWluZWQg
cnVuLXRpbWUgY29udHJvbC4NCj4+DQo+DQo+UnVudGltZSBjb250cm9sIHNvdW5kcyBsaWtlIGEg
YmV0dGVyIHBsYW4uIFdlIG5lZWQgaG9va3MgaW50byB0aGUgc3lzdGVtDQo+cG93ZXIgbWFuYWdl
bWVudCBwb2xpY3kuDQo+DQo+Pj4gTWF5YmUsIHdlIGFyZSBtaXNzaW5nIGEgSFBQIG9wdGlvbiBm
cm9tIHRoZSBQQ0kgc3BlYy4NCj4+IFRoYXQncyBhbiBpbnRlcmVzdGluZyBpZGVhLiAgX0hQWCBk
b2VzIGhhdmUgcHJvdmlzaW9uIGZvciBtYW5pcHVsYXRpbmcNCj4+IExpbmsgQ29udHJvbCBiaXRz
IChzZWUgQUNQSSByNS4wLCBzZWMgNi4yLjguMyksIGJ1dCBJIGRvbid0IHRoaW5rIHZlcnkNCj4+
IG1hbnkgc3lzdGVtcyBpbXBsZW1lbnQgaXQuICBBbmQgdGhlcmUncyBjdXJyZW50bHkgbm8gY29u
bmVjdGlvbg0KPj4gYmV0d2VlbiBwcm9ncmFtX2hwcF90eXBlMigpIGFuZCBhc3BtLmMsIHNvIEkn
bSBhIGxpdHRsZSB3b3JyaWVkIHRoYXQNCj4+IHdlIG1pZ2h0IGhhdmUgaXNzdWVzIGlmIGEgc3lz
dGVtIGRpZCBpbXBsZW1lbnQgYW4gX0hQWCB0aGF0IHNldHMgYW55DQo+PiBvZiB0aGUgQVNQTSBi
aXRzLg0KPg0KPkkgbG9va2VkIGF0IHRoZSBzcGVjIHNvbWUgbW9yZS4gVGhlc2UgYXJlIHRoZXJl
IHRvIHJlc3RvcmUgdGhlIHJlZ2lzdGVyDQo+c2V0dGluZ3MgZm9sbG93aW5nIGhvdHBsdWcgaW5z
ZXJ0aW9uLiBJIGFncmVlIGl0IHdvbid0IHBsYXkgbmljZSB3aXRoIEFTUE0NCj5hcyB0aGUgY29u
dHJvbCBiaXRzIG5lZWQgdG8gYmUgZW5hYmxlZCBpbiBjb29yZGluYXRpb24gd2l0aCB0aGUgdXBz
dHJlYW0NCj5kZXZpY2UuDQo+DQo+SSB0aGluayB0aGUgcmlnaHQgYXBwcm9hY2ggaXMgdG8gbGV0
IHRoZSB1c2Vyc3BhY2UgZmVlZCB0aGUgcmVxdWlyZWQNCj5wb2xpY3kgdG8gdGhlIGtlcm5lbCBs
aWtlIHlvdSBzdWdnZXN0ZWQuIFRoZW4sIGl0IG5lZWRzIHRvIGJlIHBlciBwb3J0DQo+dmlhIGxp
bmtfc3RhdGUgdG8gaGF2ZSB0aGUgbW9zdCBmbGV4aWJpbGl0eS4NCj4NCj4NCj4tLQ0KPlNpbmFu
IEtheWENCj5RdWFsY29tbSBEYXRhY2VudGVyIFRlY2hub2xvZ2llcywgSW5jLiBhcyBhbiBhZmZp
bGlhdGUgb2YgUXVhbGNvbW0gVGVjaG5vbG9naWVzLCBJbmMuDQo+UXVhbGNvbW0gVGVjaG5vbG9n
aWVzLCBJbmMuIGlzIGEgbWVtYmVyIG9mIHRoZSBDb2RlIEF1cm9yYSBGb3J1bSwgYSBMaW51eCBG
b3VuZGF0aW9uIENvbGxhYm9yYXRpdmUgUHJvamVjdC4NCkludGVsIERldXRzY2hsYW5kIEdtYkgK
UmVnaXN0ZXJlZCBBZGRyZXNzOiBBbSBDYW1wZW9uIDEwLTEyLCA4NTU3OSBOZXViaWJlcmcsIEdl
cm1hbnkKVGVsOiArNDkgODkgOTkgODg1My0wLCB3d3cuaW50ZWwuZGUKTWFuYWdpbmcgRGlyZWN0
b3JzOiBDaHJpc3RpbiBFaXNlbnNjaG1pZCwgQ2hyaXN0aWFuIExhbXByZWNodGVyCkNoYWlycGVy
c29uIG9mIHRoZSBTdXBlcnZpc29yeSBCb2FyZDogTmljb2xlIExhdQpSZWdpc3RlcmVkIE9mZmlj
ZTogTXVuaWNoCkNvbW1lcmNpYWwgUmVnaXN0ZXI6IEFtdHNnZXJpY2h0IE11ZW5jaGVuIEhSQiAx
ODY5MjgK

WARNING: multiple messages have this Message-ID (diff)
From: mayurkumar.patel@intel.com (Patel, Mayurkumar)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH V8 4/5] PCI/ASPM: save power on values during bridge init
Date: Fri, 21 Apr 2017 07:46:27 +0000	[thread overview]
Message-ID: <92EBB4272BF81E4089A7126EC1E7B2846676C7EF@IRSMSX101.ger.corp.intel.com> (raw)
In-Reply-To: <c0c2f48f-d725-058e-a1ad-92ab4b6e7fb3@codeaurora.org>

Hi Bjorn/Kaya,


>
>On 4/17/2017 12:38 PM, Bjorn Helgaas wrote:
>>> Like you said, what do we do by default is the question. Should we opt
>>> for safe like we are doing, or try to save some power.
>> I think safety is paramount.  Every user should be able to boot safely
>> without any kernel parameters.  We don't want users to have a problem
>> booting and then have to search for a workaround like booting with
>> "pcie_aspm=off".  Most users will never do that.
>>
>
>OK, no problem with leaving the behavior as it is.
>
>My initial approach was #2. We knew this way that user had full control
>over the ASPM policy by changing the BIOS option. Then, Mayurkumar
>complained that ASPM is not enabled following a hotplug insertion to an
>empty slot. That's when I switched to #3 as it sounded like a good thing
>to have for us.
>
>> Here's a long-term strawman proposal, see what you think:
>>
>>   - Deprecate CONFIG_PCIEASPM_DEFAULT, CONFIG_PCIEASPM_POWERSAVE, etc.
>>   - Default aspm_policy is POLICY_DEFAULT always.
>>   - POLICY_DEFAULT means Linux doesn't touch anything: if BIOS enabled
>> ASPM, we leave it that way; we leave ASPM disabled on hot-added
>> devices.
>
I am also ok with leaving the same behavior as now.
But still following is something open I feel besides, Which may be there in your comments redundantly.
The current problem is, pcie_aspm_exit_link_state() disables the ASPM configuration even
if POLICY_DEFAULT was set.
I am seeing already following problem(or may be influence) with it. The Endpoint I have does not have
does not have "Presence detect change" mechanism. Hot plug is working with Link status events.
When link is in L1 or L1SS and if EP is powered off, no Link status change event are triggered (It might be
the expected behavior in L1 or L1SS).  When next time EP is powered on there are link down and
link up events coming one after other. BIOS enables ASPM on Root port and Endpoint, but while
processing link status down, pcie_aspm_exit_link_state() clears the ASPM already which were enabled by BIOS. 
If we want to follow above approach then shall we consider having something similar as following?

diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c
index 1dfa10c..bf5be6d 100644
--- a/drivers/pci/pcie/aspm.c
+++ b/drivers/pci/pcie/aspm.c
@@ -940,7 +940,8 @@ void pcie_aspm_exit_link_state(struct pci_dev *pdev)
        parent_link = link->parent;

        /* All functions are removed, so just disable ASPM for the link */
-       pcie_config_aspm_link(link, 0);
+       if (aspm_policy != POLICY_DEFAULT)
+               pcie_config_aspm_link(link, 0);
        list_del(&link->sibling);
        list_del(&link->link);
        /* Clock PM is for endpoint device */
 

>I can easily see people complaining the other way around. There
>could be some boot FW that doesn't know what ASPM is and this particular
>system could rely on the compile time option for enabling power options.
>Maybe, a command line option will be required for them to keep the existing
>behavior.
>
>>   - Deprecate kernel boot parameters (possibly keep pcie_aspm=off for
>> debugging use).
>>   - Use /sys/module/pcie_aspm/parameters/policy for run-time
>> system-wide  control, including for future hot-added devices.
>>   - Remove CONFIG_PCIEASPM_DEBUG and enable that code always, so we
>> have fine-grained run-time control.
>>
>
>Runtime control sounds like a better plan. We need hooks into the system
>power management policy.
>
>>> Maybe, we are missing a HPP option from the PCI spec.
>> That's an interesting idea.  _HPX does have provision for manipulating
>> Link Control bits (see ACPI r5.0, sec 6.2.8.3), but I don't think very
>> many systems implement it.  And there's currently no connection
>> between program_hpp_type2() and aspm.c, so I'm a little worried that
>> we might have issues if a system did implement an _HPX that sets any
>> of the ASPM bits.
>
>I looked at the spec some more. These are there to restore the register
>settings following hotplug insertion. I agree it won't play nice with ASPM
>as the control bits need to be enabled in coordination with the upstream
>device.
>
>I think the right approach is to let the userspace feed the required
>policy to the kernel like you suggested. Then, it needs to be per port
>via link_state to have the most flexibility.
>
>
>--
>Sinan Kaya
>Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
>Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.
Intel Deutschland GmbH
Registered Address: Am Campeon 10-12, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de
Managing Directors: Christin Eisenschmid, Christian Lamprechter
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928

  reply	other threads:[~2017-04-21  7:46 UTC|newest]

Thread overview: 94+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-08  4:55 [PATCH V8 0/5] PCI/ASPM: reconfigure ASPM following hotplug for POLICY_DEFAULT Sinan Kaya
2017-04-08  4:55 ` Sinan Kaya
2017-04-08  4:55 ` Sinan Kaya
2017-04-08  4:55 ` [PATCH V8 1/5] PCI/ASPM: introduce pci_aspm_init() and add to pci_init_capabilities() Sinan Kaya
2017-04-08  4:55   ` Sinan Kaya
2017-04-08  4:55   ` Sinan Kaya
2017-04-13 20:51   ` Bjorn Helgaas
2017-04-13 20:51     ` Bjorn Helgaas
2017-04-14 19:10     ` Sinan Kaya
2017-04-14 19:10       ` Sinan Kaya
2017-04-08  4:55 ` [PATCH V8 2/5] PCI/ASPM: split pci_aspm_init() into two Sinan Kaya
2017-04-08  4:55   ` Sinan Kaya
2017-04-08  4:55   ` Sinan Kaya
2017-04-12 19:16   ` Rajat Jain
2017-04-12 19:16     ` Rajat Jain
2017-04-13 18:25     ` Bjorn Helgaas
2017-04-13 18:25       ` Bjorn Helgaas
2017-04-13 18:25       ` Bjorn Helgaas
2017-04-14 19:10       ` Sinan Kaya
2017-04-14 19:10         ` Sinan Kaya
2017-04-14 19:10         ` Sinan Kaya
2017-04-08  4:55 ` [PATCH V8 3/5] PCI/ASPM: add init hook to device_add Sinan Kaya
2017-04-08  4:55   ` Sinan Kaya
2017-04-08  4:55   ` Sinan Kaya
2017-04-13 20:48   ` Bjorn Helgaas
2017-04-13 20:48     ` Bjorn Helgaas
2017-04-13 20:48     ` Bjorn Helgaas
2017-04-13 21:02     ` Bjorn Helgaas
2017-04-13 21:02       ` Bjorn Helgaas
2017-04-13 21:02       ` Bjorn Helgaas
2017-04-14  1:19       ` Sinan Kaya
2017-04-14  1:19         ` Sinan Kaya
2017-04-14  1:30         ` Bjorn Helgaas
2017-04-14  1:30           ` Bjorn Helgaas
2017-04-08  4:55 ` [PATCH V8 4/5] PCI/ASPM: save power on values during bridge init Sinan Kaya
2017-04-08  4:55   ` Sinan Kaya
2017-04-08  4:55   ` Sinan Kaya
2017-04-12 19:19   ` Rajat Jain
2017-04-12 19:19     ` Rajat Jain
2017-04-12 19:19     ` Rajat Jain
2017-04-14 19:12     ` Sinan Kaya
2017-04-14 19:12       ` Sinan Kaya
2017-04-14 19:12       ` Sinan Kaya
2017-04-14 21:44       ` Bjorn Helgaas
2017-04-14 21:44         ` Bjorn Helgaas
2017-04-14 21:44         ` Bjorn Helgaas
2017-04-14 22:17         ` Sinan Kaya
2017-04-14 22:17           ` Sinan Kaya
2017-04-17 16:38           ` Bjorn Helgaas
2017-04-17 16:38             ` Bjorn Helgaas
2017-04-17 17:50             ` Sinan Kaya
2017-04-17 17:50               ` Sinan Kaya
2017-04-21  7:46               ` Patel, Mayurkumar [this message]
2017-04-21  7:46                 ` Patel, Mayurkumar
2017-04-21  7:46                 ` Patel, Mayurkumar
2017-04-21  7:46                 ` Patel, Mayurkumar
2017-04-21 13:50                 ` Sinan Kaya
2017-04-21 13:50                   ` Sinan Kaya
2017-04-21 14:13                   ` Patel, Mayurkumar
2017-04-21 14:13                     ` Patel, Mayurkumar
2017-04-21 14:13                     ` Patel, Mayurkumar
2017-04-21 14:13                     ` Patel, Mayurkumar
2017-04-25 18:45                 ` Bjorn Helgaas
2017-04-25 18:45                   ` Bjorn Helgaas
2017-05-02 12:02                   ` Patel, Mayurkumar
2017-05-02 12:02                     ` Patel, Mayurkumar
2017-05-02 12:02                     ` Patel, Mayurkumar
2017-05-03 21:10                     ` Bjorn Helgaas
2017-05-03 21:10                       ` Bjorn Helgaas
2017-05-03 21:10                       ` Bjorn Helgaas
2017-05-15  9:10                       ` Patel, Mayurkumar
2017-05-15  9:10                         ` Patel, Mayurkumar
2017-05-15  9:10                         ` Patel, Mayurkumar
2017-05-15  9:10                         ` Patel, Mayurkumar
2017-04-08  4:55 ` [PATCH V8 5/5] PCI/ASPM: move link_state cleanup to bridge remove Sinan Kaya
2017-04-08  4:55   ` Sinan Kaya
2017-04-08  4:55   ` Sinan Kaya
2017-04-10 11:37 ` [PATCH V8 0/5] PCI/ASPM: reconfigure ASPM following hotplug for POLICY_DEFAULT Patel, Mayurkumar
2017-04-10 11:37   ` Patel, Mayurkumar
2017-04-10 11:37   ` Patel, Mayurkumar
2017-04-10 13:07   ` Sinan Kaya
2017-04-10 13:07     ` Sinan Kaya
2017-04-10 13:07     ` Sinan Kaya
2017-04-10 13:11     ` Patel, Mayurkumar
2017-04-10 13:11       ` Patel, Mayurkumar
2017-04-10 13:11       ` Patel, Mayurkumar
2017-04-11 21:19 ` Bjorn Helgaas
2017-04-11 21:19   ` Bjorn Helgaas
2017-04-11 21:19   ` Bjorn Helgaas
2017-04-11 21:27   ` Sinan Kaya
2017-04-11 21:27     ` Sinan Kaya
2017-04-11 22:41     ` Bjorn Helgaas
2017-04-11 22:41       ` Bjorn Helgaas
2017-04-11 22:41       ` Bjorn Helgaas

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=92EBB4272BF81E4089A7126EC1E7B2846676C7EF@IRSMSX101.ger.corp.intel.com \
    --to=mayurkumar.patel@intel.com \
    --cc=Julia.Lawall@lip6.fr \
    --cc=bhelgaas@google.com \
    --cc=david.daney@cavium.com \
    --cc=helgaas@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=myron.stowe@redhat.com \
    --cc=okaya@codeaurora.org \
    --cc=rajatja@google.com \
    --cc=rajatxjain@gmail.com \
    --cc=shawn.lin@rock-chips.com \
    --cc=timur@codeaurora.org \
    --cc=yinghai@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.