Re: [PATCH v3 01/11] PCI: Update current bus speed as part of pci_pwrctrl_notify()

From: Ilpo Järvinen
Date: Mon May 19 2025 - 09:10:09 EST


On Mon, 19 May 2025, Krishna Chaitanya Chundru wrote:

> If the link is not up till the pwrctl drivers enable power to endpoints
> then cur_bus_speed will not be updated with correct speed.
>
> As part of rescan, pci_pwrctrl_notify() will be called when new devices
> are added and as part of it update the link bus speed.
>
> Suggested-by: Manivannan Sadhasivam <manivannan.sadhasivam@xxxxxxxxxx>
> Signed-off-by: Krishna Chaitanya Chundru <krishna.chundru@xxxxxxxxxxxxxxxx>
> ---
> drivers/pci/pwrctrl/core.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/drivers/pci/pwrctrl/core.c b/drivers/pci/pwrctrl/core.c
> index 9cc7e2b7f2b5608ee67c838b6500b2ae4a07ad52..034f0a5d7868fe956e3fc6a9b7ed485bb69caa04 100644
> --- a/drivers/pci/pwrctrl/core.c
> +++ b/drivers/pci/pwrctrl/core.c
> @@ -10,16 +10,21 @@
> #include <linux/pci-pwrctrl.h>
> #include <linux/property.h>
> #include <linux/slab.h>
> +#include "../pci.h"
>
> static int pci_pwrctrl_notify(struct notifier_block *nb, unsigned long action,
> void *data)
> {
> struct pci_pwrctrl *pwrctrl = container_of(nb, struct pci_pwrctrl, nb);
> struct device *dev = data;
> + struct pci_bus *bus = to_pci_dev(dev)->bus;
>
> if (dev_fwnode(dev) != dev_fwnode(pwrctrl->dev))
> return NOTIFY_DONE;
>
> + if (bus->self)
> + pcie_update_link_speed((struct pci_bus *)bus);

Why are you casting here?? (Perhaps it's a leftover).

> +
> switch (action) {
> case BUS_NOTIFY_ADD_DEVICE:
> /*
>
>

--
i.