Re: [PATCH v5 8/8] rpmsg: Turn name service into a stand alone driver

From: Mathieu Poirier
Date: Fri Nov 06 2020 - 12:53:38 EST


On Fri, Nov 06, 2020 at 03:00:28PM +0100, Guennadi Liakhovetski wrote:
> On Fri, Nov 06, 2020 at 02:15:45PM +0100, Guennadi Liakhovetski wrote:
> > Hi Mathieu, Arnaud,
> >
> > On Thu, Nov 05, 2020 at 03:50:28PM -0700, Mathieu Poirier wrote:
> > > From: Arnaud Pouliquen <arnaud.pouliquen@xxxxxx>
> > >
> > > Make the RPMSG name service announcement a stand alone driver so that it
> > > can be reused by other subsystems. It is also the first step in making the
> > > functionatlity transport independent, i.e that is not tied to virtIO.
> >
> > Sorry, I just realised that my testing was incomplete. I haven't tested
> > automatic module loading and indeed it doesn't work. If rpmsg_ns is loaded
> > it probes and it's working, but if it isn't loaded and instead the rpmsg
> > bus driver is probed (e.g. virtio_rpmsg_bus), calling
> > rpmsg_ns_register_device() to create a new rpmsg_ns device doesn't cause
> > rpmsg_ns to be loaded.
>
> A simple fix for that is using MODULE_ALIAS("rpmsg:rpmsg_ns"); in rpmsg_ns.c
> but that alone doesn't fix the problem completely - the module does load then
> but not quickly enough, the NS announcement from the host / remote arrives
> before rpmsg_ns has properly registered. I think the best solution would be
> to link rpmsg_ns.c together with rpmsg_core.c. You'll probably want to keep
> the module name, so you could rename them to just core.c and ns.c.

I'm pretty sure it is because virtio_device_ready() in rpmsg_probe() is called
before the kernel has finished loading the name space driver. There has to be
a way to prevent that from happening - I will investigate further.

Thanks for reporting this,
Mathieu

>
> Thanks
> Guennadi