On Sun, Sep 27, 2026 at 10:55:59AM +0200, Francesco Valla wrote:
> Hi Tanmay,
> 
> On Thu, Sep 24, 2026 at 01:59:02PM -0700, Tanmay Shah wrote:
> > The virtio device is removed when the remoteproc device is removed. The
> > driver should issue reset on the virtio device so the remote can do
> > corresponding cleanup.
> > 
> 
> Shouldn't be the driver, and not the transport, the one that calls
> virtio_reset_device()?

Function rproc_remove_virtio_dev() calls unregister_virtio_device(), which calls
device_unregister(), which should end up calling virtio_bus.remove(), in this
case virtio_dev_remove().  virtio_dev_remove() calls drv->remove().  If we take
the RPMSG driver, rpmsg_remove() calls virtio_reset_device(), so explicitly
resetting devices as part of rproc_remove_virtio_dev() is not needed.  

Tanmay, have you observed a scenario where the above isn't working?

> 
> > Fixes: 7a186941626d ("remoteproc: remove the single rpmsg vdev limitation")
> > Signed-off-by: Tanmay Shah <[email protected]>
> > ---
> >  drivers/remoteproc/remoteproc_virtio.c | 2 ++
> >  1 file changed, 2 insertions(+)
> > 
> > diff --git a/drivers/remoteproc/remoteproc_virtio.c 
> > b/drivers/remoteproc/remoteproc_virtio.c
> > index d5e9ff045a28..1cb0ee0ea656 100644
> > --- a/drivers/remoteproc/remoteproc_virtio.c
> > +++ b/drivers/remoteproc/remoteproc_virtio.c
> > @@ -469,6 +469,8 @@ static int rproc_remove_virtio_dev(struct device *dev, 
> > void *data)
> >  {
> >     struct virtio_device *vdev = dev_to_virtio(dev);
> >  
> > +   virtio_reset_device(vdev);
> > +
> >     unregister_virtio_device(vdev);
> >     return 0;
> >  }
> > 
> > base-commit: 5f639b3018c0026a5341949724b4b921cf3a3d5d
> > -- 
> > 2.43.0
> > 

Reply via email to