Hi Srinivas, On 06/15/2018 04:59 AM, Srinivas Kandagatla wrote: > Some of the rpmsg devices need to switch on power domains to communicate > with remote processor. For example on Qualcomm DB820c platform LPASS > power domain needs to switched on for any kind of audio services. > This patch adds the missing power domain support in rpmsg core. > > Without this patch attempting to play audio via QDSP on DB820c would > reboot the system. > > Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@xxxxxxxxxx> > --- > drivers/rpmsg/rpmsg_core.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/drivers/rpmsg/rpmsg_core.c b/drivers/rpmsg/rpmsg_core.c > index b714a543a91d..8122807db380 100644 > --- a/drivers/rpmsg/rpmsg_core.c > +++ b/drivers/rpmsg/rpmsg_core.c > @@ -15,6 +15,7 @@ > #include <linux/module.h> > #include <linux/rpmsg.h> > #include <linux/of_device.h> > +#include <linux/pm_domain.h> > #include <linux/slab.h> > > #include "rpmsg_internal.h" > @@ -449,6 +450,10 @@ static int rpmsg_dev_probe(struct device *dev) > struct rpmsg_endpoint *ept = NULL; > int err; > > + err = dev_pm_domain_attach(dev, true); > + if (err) > + goto out; This patch has broken the virtio-rpmsg stack based rpmsg devices. These devices are non-DT and the rpmsg_dev_probe() is now failing with -19 (-ENODEV) error code. Loic, Arnaud, Can one of you double-confirm this behavior on ST platforms as well? The patch came through 4.14.71 stable release and broke our downstream kernels. regards Suman > + > if (rpdrv->callback) { > strncpy(chinfo.name, rpdev->id.name, RPMSG_NAME_SIZE); > chinfo.src = rpdev->src; > @@ -490,6 +495,8 @@ static int rpmsg_dev_remove(struct device *dev) > > rpdrv->remove(rpdev); > > + dev_pm_domain_detach(dev, true); > + > if (rpdev->ept) > rpmsg_destroy_ept(rpdev->ept); > >