mbox series

[0/5] PCI/pwrctl: Ensure that the pwrctl drivers are probed before PCI client drivers

Message ID 20241022-pci-pwrctl-rework-v1-0-94a7e90f58c5@linaro.org
Headers show
Series PCI/pwrctl: Ensure that the pwrctl drivers are probed before PCI client drivers | expand

Message

Manivannan Sadhasivam via B4 Relay Oct. 22, 2024, 10:27 a.m. UTC
Hi,

This series reworks the PCI/pwrctl integration to ensure that the pwrctl drivers
are always probed before the PCI client drivers. This series addresses a race
condition when both pwrctl and pwrctl/pwrseq drivers probe parallely (even when
the later one probes last). One such issue was reported for the Qcom X13s
platform with WLAN module and fixed with 'commit a9aaf1ff88a8 ("power:
sequencing: request the WLAN enable GPIO as-is")'.

Though the issue was fixed with a hack in the pwrseq driver, it was clear that
the issue is applicable to all pwrctl drivers. Hence, this series tries to
address the issue in the PCI/pwrctl integration.

- Mani

Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
---
Manivannan Sadhasivam (5):
      PCI/pwrctl: Use of_platform_device_create() to create pwrctl devices
      PCI/pwrctl: Create pwrctl devices only if at least one power supply is present
      PCI/pwrctl: Ensure that the pwrctl drivers are probed before the PCI client drivers
      PCI/pwrctl: Move pwrctl device creation to its own helper function
      PCI/pwrctl: Remove pwrctl device without iterating over all children of pwrctl parent

 drivers/pci/bus.c         | 64 +++++++++++++++++++++++++++++++++++++++++------
 drivers/pci/of.c          | 27 ++++++++++++++++++++
 drivers/pci/pci.h         |  5 ++++
 drivers/pci/pwrctl/core.c | 10 --------
 drivers/pci/remove.c      | 17 ++++++-------
 5 files changed, 96 insertions(+), 27 deletions(-)
---
base-commit: 48dc7986beb60522eb217c0016f999cc7afaf0b7
change-id: 20241022-pci-pwrctl-rework-a1b024158555

Best regards,

Comments

Bartosz Golaszewski Oct. 23, 2024, 10:30 a.m. UTC | #1
On Tue, 22 Oct 2024 at 12:28, Manivannan Sadhasivam via B4 Relay
<devnull+manivannan.sadhasivam.linaro.org@kernel.org> wrote:
>
> Hi,
>
> This series reworks the PCI/pwrctl integration to ensure that the pwrctl drivers
> are always probed before the PCI client drivers. This series addresses a race
> condition when both pwrctl and pwrctl/pwrseq drivers probe parallely (even when
> the later one probes last). One such issue was reported for the Qcom X13s
> platform with WLAN module and fixed with 'commit a9aaf1ff88a8 ("power:
> sequencing: request the WLAN enable GPIO as-is")'.
>
> Though the issue was fixed with a hack in the pwrseq driver, it was clear that
> the issue is applicable to all pwrctl drivers. Hence, this series tries to
> address the issue in the PCI/pwrctl integration.
>
> - Mani
>
> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
> ---
> Manivannan Sadhasivam (5):
>       PCI/pwrctl: Use of_platform_device_create() to create pwrctl devices
>       PCI/pwrctl: Create pwrctl devices only if at least one power supply is present
>       PCI/pwrctl: Ensure that the pwrctl drivers are probed before the PCI client drivers
>       PCI/pwrctl: Move pwrctl device creation to its own helper function
>       PCI/pwrctl: Remove pwrctl device without iterating over all children of pwrctl parent
>
>  drivers/pci/bus.c         | 64 +++++++++++++++++++++++++++++++++++++++++------
>  drivers/pci/of.c          | 27 ++++++++++++++++++++
>  drivers/pci/pci.h         |  5 ++++
>  drivers/pci/pwrctl/core.c | 10 --------
>  drivers/pci/remove.c      | 17 ++++++-------
>  5 files changed, 96 insertions(+), 27 deletions(-)
> ---
> base-commit: 48dc7986beb60522eb217c0016f999cc7afaf0b7
> change-id: 20241022-pci-pwrctl-rework-a1b024158555
>
> Best regards,
> --
> Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
>
>

Excellent work, thanks for doing this.

Tested on: sc8280xp-crd, RB5 and sm8450-hdk.

Tested-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>

Just a couple nits from my side under respective patches.

Bart
Krishna Chaitanya Chundru Oct. 24, 2024, 10:13 a.m. UTC | #2
On 10/23/2024 4:00 PM, Bartosz Golaszewski wrote:
> On Tue, 22 Oct 2024 at 12:28, Manivannan Sadhasivam via B4 Relay
> <devnull+manivannan.sadhasivam.linaro.org@kernel.org> wrote:
>>
>> Hi,
>>
>> This series reworks the PCI/pwrctl integration to ensure that the pwrctl drivers
>> are always probed before the PCI client drivers. This series addresses a race
>> condition when both pwrctl and pwrctl/pwrseq drivers probe parallely (even when
>> the later one probes last). One such issue was reported for the Qcom X13s
>> platform with WLAN module and fixed with 'commit a9aaf1ff88a8 ("power:
>> sequencing: request the WLAN enable GPIO as-is")'.
>>
>> Though the issue was fixed with a hack in the pwrseq driver, it was clear that
>> the issue is applicable to all pwrctl drivers. Hence, this series tries to
>> address the issue in the PCI/pwrctl integration.
>>
>> - Mani
>>
>> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
>> ---
>> Manivannan Sadhasivam (5):
>>        PCI/pwrctl: Use of_platform_device_create() to create pwrctl devices
>>        PCI/pwrctl: Create pwrctl devices only if at least one power supply is present
>>        PCI/pwrctl: Ensure that the pwrctl drivers are probed before the PCI client drivers
>>        PCI/pwrctl: Move pwrctl device creation to its own helper function
>>        PCI/pwrctl: Remove pwrctl device without iterating over all children of pwrctl parent
>>
>>   drivers/pci/bus.c         | 64 +++++++++++++++++++++++++++++++++++++++++------
>>   drivers/pci/of.c          | 27 ++++++++++++++++++++
>>   drivers/pci/pci.h         |  5 ++++
>>   drivers/pci/pwrctl/core.c | 10 --------
>>   drivers/pci/remove.c      | 17 ++++++-------
>>   5 files changed, 96 insertions(+), 27 deletions(-)
>> ---
>> base-commit: 48dc7986beb60522eb217c0016f999cc7afaf0b7
>> change-id: 20241022-pci-pwrctl-rework-a1b024158555
>>
>> Best regards,
>> --
>> Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
>>
>>
> 
> Excellent work, thanks for doing this.
> 
> Tested on: sc8280xp-crd, RB5 and sm8450-hdk.
> 
> Tested-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
> 
> Just a couple nits from my side under respective patches.
> 
> Bart
Tested on: qcs6490-rb3gen board with work in progress qps615 pcie switch

Tested-by: Krishna chaitanya chundru <quic_krichai@quicinc.com>

- Krishna Chaitanya.
>
Krzysztof Wilczy��ski Nov. 3, 2024, 8:31 p.m. UTC | #3
Hello,

> This series reworks the PCI/pwrctl integration to ensure that the pwrctl drivers
> are always probed before the PCI client drivers. This series addresses a race
> condition when both pwrctl and pwrctl/pwrseq drivers probe parallely (even when
> the later one probes last). One such issue was reported for the Qcom X13s
> platform with WLAN module and fixed with 'commit a9aaf1ff88a8 ("power:
> sequencing: request the WLAN enable GPIO as-is")'.
> 
> Though the issue was fixed with a hack in the pwrseq driver, it was clear that
> the issue is applicable to all pwrctl drivers. Hence, this series tries to
> address the issue in the PCI/pwrctl integration.

Applied to bwctrl, thank you!

[01/05] PCI/pwrctl: Use of_platform_device_create() to create pwrctl devices
        https://git.kernel.org/pci/pci/c/d2b6619e7419

[02/05] PCI/pwrctl: Create pwrctl devices only if at least one power supply is present
        https://git.kernel.org/pci/pci/c/5f2710a4c275

[03/05] PCI/pwrctl: Ensure that the pwrctl drivers are probed before the PCI client drivers
        https://git.kernel.org/pci/pci/c/4c963d4c13b9

[04/05] PCI/pwrctl: Move pwrctl device creation to its own helper function
        https://git.kernel.org/pci/pci/c/73ae23a6af78

[05/05] PCI/pwrctl: Remove pwrctl device without iterating over all children of pwrctl parent
        https://git.kernel.org/pci/pci/c/5ccc52fd1e5a

	Krzysztof
Bjorn Helgaas Nov. 5, 2024, 12:12 a.m. UTC | #4
On Mon, Nov 04, 2024 at 05:31:07AM +0900, Krzysztof Wilczyński wrote:
> Hello,
> 
> > This series reworks the PCI/pwrctl integration to ensure that the pwrctl drivers
> > are always probed before the PCI client drivers. This series addresses a race
> > condition when both pwrctl and pwrctl/pwrseq drivers probe parallely (even when
> > the later one probes last). One such issue was reported for the Qcom X13s
> > platform with WLAN module and fixed with 'commit a9aaf1ff88a8 ("power:
> > sequencing: request the WLAN enable GPIO as-is")'.
> > 
> > Though the issue was fixed with a hack in the pwrseq driver, it was clear that
> > the issue is applicable to all pwrctl drivers. Hence, this series tries to
> > address the issue in the PCI/pwrctl integration.
> 
> Applied to bwctrl, thank you!

Should be pci/pwrctl.  bwctrl (bandwidth control) and pwrctl (power
control) are quite different despite the confusingly similar names.

> [01/05] PCI/pwrctl: Use of_platform_device_create() to create pwrctl devices
>         https://git.kernel.org/pci/pci/c/d2b6619e7419
> 
> [02/05] PCI/pwrctl: Create pwrctl devices only if at least one power supply is present
>         https://git.kernel.org/pci/pci/c/5f2710a4c275
> 
> [03/05] PCI/pwrctl: Ensure that the pwrctl drivers are probed before the PCI client drivers
>         https://git.kernel.org/pci/pci/c/4c963d4c13b9
> 
> [04/05] PCI/pwrctl: Move pwrctl device creation to its own helper function
>         https://git.kernel.org/pci/pci/c/73ae23a6af78
> 
> [05/05] PCI/pwrctl: Remove pwrctl device without iterating over all children of pwrctl parent
>         https://git.kernel.org/pci/pci/c/5ccc52fd1e5a
> 
> 	Krzysztof
Krzysztof Wilczy��ski Nov. 5, 2024, 12:32 a.m. UTC | #5
Hello,

> > > This series reworks the PCI/pwrctl integration to ensure that the pwrctl drivers
> > > are always probed before the PCI client drivers. This series addresses a race
> > > condition when both pwrctl and pwrctl/pwrseq drivers probe parallely (even when
> > > the later one probes last). One such issue was reported for the Qcom X13s
> > > platform with WLAN module and fixed with 'commit a9aaf1ff88a8 ("power:
> > > sequencing: request the WLAN enable GPIO as-is")'.
> > > 
> > > Though the issue was fixed with a hack in the pwrseq driver, it was clear that
> > > the issue is applicable to all pwrctl drivers. Hence, this series tries to
> > > address the issue in the PCI/pwrctl integration.
> > 
> > Applied to bwctrl, thank you!
> 
> Should be pci/pwrctl.  bwctrl (bandwidth control) and pwrctl (power
> control) are quite different despite the confusingly similar names.

Correct.  I moved patches to the correct branch.  Sorry about that!

	Krzysztof