mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
soc: qcom: pmic_glink: Avoid losing early rpmsg probe
The PMIC GLINK rpmsg device can appear before the platform device has
finished probing. In that case pmic_glink_rpmsg_probe() sees
__pmic_glink as NULL and returns -ENODEV, which is treated as a fatal
probe failure for the rpmsg endpoint.
If this race is hit, pg->ept is never installed and PMIC GLINK clients
never receive the service-up notification. This may leave the system
with no Type-C functionality and without battery/power supply
management.
Return -EPROBE_DEFER when the rpmsg endpoint arrives before the platform
device is ready.
Fixes: 58ef4ece1e ("soc: qcom: pmic_glink: Introduce base PMIC GLINK driver")
Assisted-by: Codex:GPT-5.5
Signed-off-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Link: https://patch.msgid.link/20260720-topic-pmic_glink_defer-v1-1-94c0f233f2f7@oss.qualcomm.com
Signed-off-by: Bjorn Andersson <bjorn.andersson@oss.qualcomm.com>
This commit is contained in:
parent
1cd31ba4f9
commit
0c79a829af
|
|
@ -250,7 +250,8 @@ static int pmic_glink_rpmsg_probe(struct rpmsg_device *rpdev)
|
|||
guard(mutex)(&__pmic_glink_lock);
|
||||
pg = __pmic_glink;
|
||||
if (!pg)
|
||||
return dev_err_probe(&rpdev->dev, -ENODEV, "no pmic_glink device to attach to\n");
|
||||
return dev_err_probe(&rpdev->dev, -EPROBE_DEFER,
|
||||
"no pmic_glink device to attach to\n");
|
||||
|
||||
dev_set_drvdata(&rpdev->dev, pg);
|
||||
pg->pdr_available = rpdev->id.driver_data;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user