virtualization.lists.linux-foundation.org archive mirror
 help / color / mirror / Atom feed
* virtio_pci: Question about virtio_pci kernel module refcnt
@ 2025-10-22 11:21 Zhang Tianci
  2025-10-22 11:31 ` Michael S. Tsirkin
  0 siblings, 1 reply; 6+ messages in thread
From: Zhang Tianci @ 2025-10-22 11:21 UTC (permalink / raw)
  To: mst, jasowang, xuanzhuo, eperezma, virtualization
  Cc: xieyongji, 天赐张

Hi,
I noticed that the reference count of the virtio_pci kernel module
in the VM is always 0, even though there are at least two
virtio block devices and one virtiofs device in the VM.

Using rmmod virtio_pci can unload the virtio_pci module,
but this renders the virtio block devices unusable.

I wonder if this result is expected? Why don't the virtio block devices
and virtiofs device hold a reference count to the virtio_pci kernel module?

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: virtio_pci: Question about virtio_pci kernel module refcnt
  2025-10-22 11:21 virtio_pci: Question about virtio_pci kernel module refcnt Zhang Tianci
@ 2025-10-22 11:31 ` Michael S. Tsirkin
  2025-10-23  2:34   ` [External] " Zhang Tianci
  0 siblings, 1 reply; 6+ messages in thread
From: Michael S. Tsirkin @ 2025-10-22 11:31 UTC (permalink / raw)
  To: Zhang Tianci; +Cc: jasowang, xuanzhuo, eperezma, virtualization, xieyongji

On Wed, Oct 22, 2025 at 07:21:45PM +0800, Zhang Tianci wrote:
> Hi,
> I noticed that the reference count of the virtio_pci kernel module
> in the VM is always 0, even though there are at least two
> virtio block devices and one virtiofs device in the VM.
> 
> Using rmmod virtio_pci can unload the virtio_pci module,
> but this renders the virtio block devices unusable.

it removes them. you can put it back in and you will
get devices again.

> I wonder if this result is expected? Why don't the virtio block devices
> and virtiofs device hold a reference count to the virtio_pci kernel module?

because they don't have to.

-- 
MST


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [External] Re: virtio_pci: Question about virtio_pci kernel module refcnt
  2025-10-22 11:31 ` Michael S. Tsirkin
@ 2025-10-23  2:34   ` Zhang Tianci
  2025-10-24  1:53     ` Jason Wang
  0 siblings, 1 reply; 6+ messages in thread
From: Zhang Tianci @ 2025-10-23  2:34 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: jasowang, xuanzhuo, eperezma, virtualization, xieyongji

Hi, thank you for your reply, but I still have a few questions:

On Wed, Oct 22, 2025 at 7:31 PM Michael S. Tsirkin <mst@redhat.com> wrote:
>
> On Wed, Oct 22, 2025 at 07:21:45PM +0800, Zhang Tianci wrote:
> > Hi,
> > I noticed that the reference count of the virtio_pci kernel module
> > in the VM is always 0, even though there are at least two
> > virtio block devices and one virtiofs device in the VM.
> >
> > Using rmmod virtio_pci can unload the virtio_pci module,
> > but this renders the virtio block devices unusable.
>
> it removes them. you can put it back in and you will
> get devices again.

But I can't do it anymore because the rootfs is no longer available,
or rather, the OS is no longer available.

>
> > I wonder if this result is expected? Why don't the virtio block devices
> > and virtiofs device hold a reference count to the virtio_pci kernel module?
>
> because they don't have to.

Is it due to design reasons or implementation reasons?
Is it because the semantics of kernel module refcnt does not include such
logical dependency?

Thanks,
Tianci

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [External] Re: virtio_pci: Question about virtio_pci kernel module refcnt
  2025-10-23  2:34   ` [External] " Zhang Tianci
@ 2025-10-24  1:53     ` Jason Wang
  2025-10-24  2:34       ` Zhang Tianci
  0 siblings, 1 reply; 6+ messages in thread
From: Jason Wang @ 2025-10-24  1:53 UTC (permalink / raw)
  To: Zhang Tianci
  Cc: Michael S. Tsirkin, xuanzhuo, eperezma, virtualization, xieyongji

On Thu, Oct 23, 2025 at 10:34 AM Zhang Tianci
<zhangtianci.1997@bytedance.com> wrote:
>
> Hi, thank you for your reply, but I still have a few questions:
>
> On Wed, Oct 22, 2025 at 7:31 PM Michael S. Tsirkin <mst@redhat.com> wrote:
> >
> > On Wed, Oct 22, 2025 at 07:21:45PM +0800, Zhang Tianci wrote:
> > > Hi,
> > > I noticed that the reference count of the virtio_pci kernel module
> > > in the VM is always 0, even though there are at least two
> > > virtio block devices and one virtiofs device in the VM.
> > >
> > > Using rmmod virtio_pci can unload the virtio_pci module,
> > > but this renders the virtio block devices unusable.
> >
> > it removes them. you can put it back in and you will
> > get devices again.
>
> But I can't do it anymore because the rootfs is no longer available,
> or rather, the OS is no longer available.
>
> >
> > > I wonder if this result is expected? Why don't the virtio block devices
> > > and virtiofs device hold a reference count to the virtio_pci kernel module?
> >
> > because they don't have to.
>
> Is it due to design reasons or implementation reasons?
> Is it because the semantics of kernel module refcnt does not include such
> logical dependency?

Note that virito has a bus so it follows the device/driver model so if
I was not wrong the refcnt was handled by the driver core.

Thanks

>
> Thanks,
> Tianci
>


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [External] Re: virtio_pci: Question about virtio_pci kernel module refcnt
  2025-10-24  1:53     ` Jason Wang
@ 2025-10-24  2:34       ` Zhang Tianci
  2025-10-24  4:00         ` Jason Wang
  0 siblings, 1 reply; 6+ messages in thread
From: Zhang Tianci @ 2025-10-24  2:34 UTC (permalink / raw)
  To: Jason Wang
  Cc: Michael S. Tsirkin, xuanzhuo, eperezma, virtualization, xieyongji,
	gregkh, rafael, dakr, linux-kernel

Hi, thanks for your reply

On Fri, Oct 24, 2025 at 9:53 AM Jason Wang <jasowang@redhat.com> wrote:
>
> On Thu, Oct 23, 2025 at 10:34 AM Zhang Tianci
> <zhangtianci.1997@bytedance.com> wrote:
> >
> > Hi, thank you for your reply, but I still have a few questions:
> >
> > On Wed, Oct 22, 2025 at 7:31 PM Michael S. Tsirkin <mst@redhat.com> wrote:
> > >
> > > On Wed, Oct 22, 2025 at 07:21:45PM +0800, Zhang Tianci wrote:
> > > > Hi,
> > > > I noticed that the reference count of the virtio_pci kernel module
> > > > in the VM is always 0, even though there are at least two
> > > > virtio block devices and one virtiofs device in the VM.
> > > >
> > > > Using rmmod virtio_pci can unload the virtio_pci module,
> > > > but this renders the virtio block devices unusable.
> > >
> > > it removes them. you can put it back in and you will
> > > get devices again.
> >
> > But I can't do it anymore because the rootfs is no longer available,
> > or rather, the OS is no longer available.
> >
> > >
> > > > I wonder if this result is expected? Why don't the virtio block devices
> > > > and virtiofs device hold a reference count to the virtio_pci kernel module?
> > >
> > > because they don't have to.
> >
> > Is it due to design reasons or implementation reasons?
> > Is it because the semantics of kernel module refcnt does not include such
> > logical dependency?
>
> Note that virito has a bus so it follows the device/driver model so if
> I was not wrong the refcnt was handled by the driver core.

Let's look at an example:

$ lsmod | grep virtio
virtio_balloon                 20480  0
virtio_console                40960  1
virtiofs                            32768  1  <-  one virtiofs
fuse                                172032  2 virtiofs
virtio_net                         73728  0
net_failover                     20480  1 virtio_net
virtio_blk                         32768  2  <- two block devices
virtio_pci                         24576  0
virtio_pci_legacy_dev     16384  1 virtio_pci
virtio_pci_modern_dev   16384  1 virtio_pci
virtio                                16384  6
virtio_console,virtio_balloon,virtiofs,virtio_pci,virtio_blk,virtio_net
virtio_ring                         49152  6
virtio_console,virtio_balloon,virtiofs,virtio_pci,virtio_blk,virtio_net

There are two virtio_blk devices which are vda and vdb, and one virtiofs device.
We can find the block device and fs instance are holding virtio_blk
and virtiofs' refcnts.
But they don't hold virtio_pci(pci bus) or virtio(virtio bus) refcnts
even though they logically depend on
them.
So I might need to consult the driver core maintainers?(I have cc'd
them in this email.)

Thanks,
Tianci

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [External] Re: virtio_pci: Question about virtio_pci kernel module refcnt
  2025-10-24  2:34       ` Zhang Tianci
@ 2025-10-24  4:00         ` Jason Wang
  0 siblings, 0 replies; 6+ messages in thread
From: Jason Wang @ 2025-10-24  4:00 UTC (permalink / raw)
  To: Zhang Tianci
  Cc: Michael S. Tsirkin, xuanzhuo, eperezma, virtualization, xieyongji,
	gregkh, rafael, dakr, linux-kernel

On Fri, Oct 24, 2025 at 10:34 AM Zhang Tianci
<zhangtianci.1997@bytedance.com> wrote:
>
> Hi, thanks for your reply
>
> On Fri, Oct 24, 2025 at 9:53 AM Jason Wang <jasowang@redhat.com> wrote:
> >
> > On Thu, Oct 23, 2025 at 10:34 AM Zhang Tianci
> > <zhangtianci.1997@bytedance.com> wrote:
> > >
> > > Hi, thank you for your reply, but I still have a few questions:
> > >
> > > On Wed, Oct 22, 2025 at 7:31 PM Michael S. Tsirkin <mst@redhat.com> wrote:
> > > >
> > > > On Wed, Oct 22, 2025 at 07:21:45PM +0800, Zhang Tianci wrote:
> > > > > Hi,
> > > > > I noticed that the reference count of the virtio_pci kernel module
> > > > > in the VM is always 0, even though there are at least two
> > > > > virtio block devices and one virtiofs device in the VM.
> > > > >
> > > > > Using rmmod virtio_pci can unload the virtio_pci module,
> > > > > but this renders the virtio block devices unusable.
> > > >
> > > > it removes them. you can put it back in and you will
> > > > get devices again.
> > >
> > > But I can't do it anymore because the rootfs is no longer available,
> > > or rather, the OS is no longer available.
> > >
> > > >
> > > > > I wonder if this result is expected? Why don't the virtio block devices
> > > > > and virtiofs device hold a reference count to the virtio_pci kernel module?
> > > >
> > > > because they don't have to.
> > >
> > > Is it due to design reasons or implementation reasons?
> > > Is it because the semantics of kernel module refcnt does not include such
> > > logical dependency?
> >
> > Note that virito has a bus so it follows the device/driver model so if
> > I was not wrong the refcnt was handled by the driver core.
>
> Let's look at an example:
>
> $ lsmod | grep virtio
> virtio_balloon                 20480  0
> virtio_console                40960  1
> virtiofs                            32768  1  <-  one virtiofs
> fuse                                172032  2 virtiofs
> virtio_net                         73728  0
> net_failover                     20480  1 virtio_net
> virtio_blk                         32768  2  <- two block devices
> virtio_pci                         24576  0
> virtio_pci_legacy_dev     16384  1 virtio_pci
> virtio_pci_modern_dev   16384  1 virtio_pci
> virtio                                16384  6
> virtio_console,virtio_balloon,virtiofs,virtio_pci,virtio_blk,virtio_net
> virtio_ring                         49152  6
> virtio_console,virtio_balloon,virtiofs,virtio_pci,virtio_blk,virtio_net
>
> There are two virtio_blk devices which are vda and vdb, and one virtiofs device.
> We can find the block device and fs instance are holding virtio_blk
> and virtiofs' refcnts.
> But they don't hold virtio_pci(pci bus) or virtio(virtio bus) refcnts
> even though they logically depend on
> them.

My understanding is the driver must be unregistered while the device
is being unregistered.

> So I might need to consult the driver core maintainers?(I have cc'd
> them in this email.)
>
> Thanks,
> Tianci
>

Thanks


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-10-24  4:01 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-22 11:21 virtio_pci: Question about virtio_pci kernel module refcnt Zhang Tianci
2025-10-22 11:31 ` Michael S. Tsirkin
2025-10-23  2:34   ` [External] " Zhang Tianci
2025-10-24  1:53     ` Jason Wang
2025-10-24  2:34       ` Zhang Tianci
2025-10-24  4:00         ` Jason Wang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).