Re: [PATCH V4 14/14] i3c: mipi-i3c-hci: Advertise IBI wakeup capability

[email protected]
Newsgroups org.infradead.lists.linux-i3c,org.kernel.vger.linux-pci
Message-ID <[email protected]>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] The platform driver sets the I3C master `ibi_wakeup` flag but fails to propagate the wakeup state during system suspend for non-PCI platform devices, breaking IBI wakeup functionality.
--

--- Patch [14]: [PATCH V4 14/14] i3c: mipi-i3c-hci: Advertise IBI wakeup capability ---
commit 443a5c0d5859df8fbad91b6e456865274a7f7ca9
Author: Adrian Hunter <[email protected]>

i3c: mipi-i3c-hci: Advertise IBI wakeup capability

This commit sets master->ibi_wakeup during probe when the associated system
device advertises wakeup capability. This allows the I3C core to mark
IBI-capable I3C devices as wakeup capable.

> diff --git a/drivers/i3c/master/mipi-i3c-hci/core.c b/drivers/i3c/master/mipi-i3c-hci/core.c
> index f95da427d7a9e..06acf6cf5a0db 100644
> --- a/drivers/i3c/master/mipi-i3c-hci/core.c
> +++ b/drivers/i3c/master/mipi-i3c-hci/core.c
[ ... ]
> @@ -1180,6 +1181,9 @@ static int i3c_hci_probe(struct platform_device *pdev)
>  	if (hci->quirks & HCI_QUIRK_RPM_IBI_ALLOWED)
>  		hci->master.rpm_ibi_allowed = true;
>  
> +	if (device_can_wakeup(i3c_hci_sysdev(&pdev->dev)))
> +		hci->master.ibi_wakeup = true;
> +

[Severity: Medium]
If we advertise ibi_wakeup here for non-PCI platform devices, how does the
suspend path know to actually arm the system wakeup?

While the PCI glue driver aggregates wakeup states by checking
i3c_master_has_wakeup_enabled_devs() during suspend, the native platform
suspend routine i3c_hci_suspend() does not appear to check this or enable
wakeups:

drivers/i3c/master/mipi-i3c-hci/core.c:i3c_hci_suspend() {
	struct i3c_hci *hci = dev_get_drvdata(dev);

	if (!(hci->quirks & HCI_QUIRK_RPM_ALLOWED))
		return 0;

	return pm_runtime_force_suspend(dev);
}

Does this mean IBI wakeups will silently fail to wake the system for non-PCI
platform devices, or is there another mechanism handling the wakeup
propagation for them?

>  	return i3c_master_register(&hci->master, &pdev->dev, &i3c_hci_ops, false);
>  }

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/[email protected]?part=14

-- 
linux-i3c mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-i3c
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.