From: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx> commit b17155133391d7f6dd18d3fb94a7d492fdec18fa upstream. The rpm_requests device nodes have the compatible node. As such the rpmsg core uses OF modalias instead of a native rpmsg modalias. Thus if smd-rpm is built as a module, it doesn't get autoloaded for the device. Revert the commit bcabe1e09135 ("soc: qcom: smd-rpm: Match rpmsg channel instead of compatible") Fixes: bcabe1e09135 ("soc: qcom: smd-rpm: Match rpmsg channel instead of compatible") Cc: stable@xxxxxxxxxxxxxxx Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx> Link: https://lore.kernel.org/r/20240729-fix-smd-rpm-v2-1-0776408a94c5@xxxxxxxxxx Signed-off-by: Bjorn Andersson <andersson@xxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- drivers/soc/qcom/smd-rpm.c | 35 ++++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) --- a/drivers/soc/qcom/smd-rpm.c +++ b/drivers/soc/qcom/smd-rpm.c @@ -196,9 +196,6 @@ static int qcom_smd_rpm_probe(struct rpm { struct qcom_smd_rpm *rpm; - if (!rpdev->dev.of_node) - return -EINVAL; - rpm = devm_kzalloc(&rpdev->dev, sizeof(*rpm), GFP_KERNEL); if (!rpm) return -ENOMEM; @@ -218,18 +215,38 @@ static void qcom_smd_rpm_remove(struct r of_platform_depopulate(&rpdev->dev); } -static const struct rpmsg_device_id qcom_smd_rpm_id_table[] = { - { .name = "rpm_requests", }, - { /* sentinel */ } +static const struct of_device_id qcom_smd_rpm_of_match[] = { + { .compatible = "qcom,rpm-apq8084" }, + { .compatible = "qcom,rpm-ipq6018" }, + { .compatible = "qcom,rpm-ipq9574" }, + { .compatible = "qcom,rpm-msm8226" }, + { .compatible = "qcom,rpm-msm8909" }, + { .compatible = "qcom,rpm-msm8916" }, + { .compatible = "qcom,rpm-msm8936" }, + { .compatible = "qcom,rpm-msm8953" }, + { .compatible = "qcom,rpm-msm8974" }, + { .compatible = "qcom,rpm-msm8976" }, + { .compatible = "qcom,rpm-msm8994" }, + { .compatible = "qcom,rpm-msm8996" }, + { .compatible = "qcom,rpm-msm8998" }, + { .compatible = "qcom,rpm-sdm660" }, + { .compatible = "qcom,rpm-sm6115" }, + { .compatible = "qcom,rpm-sm6125" }, + { .compatible = "qcom,rpm-sm6375" }, + { .compatible = "qcom,rpm-qcm2290" }, + { .compatible = "qcom,rpm-qcs404" }, + {} }; -MODULE_DEVICE_TABLE(rpmsg, qcom_smd_rpm_id_table); +MODULE_DEVICE_TABLE(of, qcom_smd_rpm_of_match); static struct rpmsg_driver qcom_smd_rpm_driver = { .probe = qcom_smd_rpm_probe, .remove = qcom_smd_rpm_remove, .callback = qcom_smd_rpm_callback, - .id_table = qcom_smd_rpm_id_table, - .drv.name = "qcom_smd_rpm", + .drv = { + .name = "qcom_smd_rpm", + .of_match_table = qcom_smd_rpm_of_match, + }, }; static int __init qcom_smd_rpm_init(void) Patches currently in stable-queue which might be from dmitry.baryshkov@xxxxxxxxxx are queue-6.11/interconnect-qcom-sm8250-enable-sync_state.patch queue-6.11/drm-msm-fix-incorrect-file-name-output-in-adreno_req.patch queue-6.11/drm-msm-fix-s-null-argument-error.patch queue-6.11/drm-msm-dsi-correct-programming-sequence-for-sm8350-.patch queue-6.11/clk-qcom-dispcc-sm8650-update-the-gdsc-flags.patch queue-6.11/clk-qcom-dispcc-sm8550-use-rcg2_ops-for-mdss_dptx1_a.patch queue-6.11/clk-qcom-dispcc-sm8250-use-special-function-for-luci.patch queue-6.11/pci-qcom-ep-enable-controller-resources-like-phy-onl.patch queue-6.11/revert-soc-qcom-smd-rpm-match-rpmsg-channel-instead-of-compatible.patch queue-6.11/clk-qcom-dispcc-sm8550-fix-several-supposed-typos.patch queue-6.11/drm-msm-dp-enable-widebus-on-all-relevant-chipsets.patch queue-6.11/clk-qcom-dispcc-sm8550-use-rcg2_shared_ops-for-esc-r.patch queue-6.11/clk-qcom-ipq5332-register-gcc_qdss_tsctr_clk_src.patch queue-6.11/iommu-arm-smmu-qcom-apply-num_context_bank-fixes-for.patch