On Mon, 27 Oct 2025 12:39:47 -0500, Daniel Jurgens <[email protected]> wrote: > This will allow device drivers to issue administration commands. > > Signed-off-by: Daniel Jurgens <[email protected]> > Reviewed-by: Parav Pandit <[email protected]>
Reviewed-by: Xuan Zhuo <[email protected]> > > --- > v4: New patch for v4 > --- > drivers/virtio/virtio_pci_modern.c | 2 ++ > include/linux/virtio_config.h | 6 ++++++ > 2 files changed, 8 insertions(+) > > diff --git a/drivers/virtio/virtio_pci_modern.c > b/drivers/virtio/virtio_pci_modern.c > index ff11de5b3d69..acc3f958f96a 100644 > --- a/drivers/virtio/virtio_pci_modern.c > +++ b/drivers/virtio/virtio_pci_modern.c > @@ -1236,6 +1236,7 @@ static const struct virtio_config_ops > virtio_pci_config_nodev_ops = { > .get_shm_region = vp_get_shm_region, > .disable_vq_and_reset = vp_modern_disable_vq_and_reset, > .enable_vq_after_reset = vp_modern_enable_vq_after_reset, > + .admin_cmd_exec = vp_modern_admin_cmd_exec, > }; > > static const struct virtio_config_ops virtio_pci_config_ops = { > @@ -1256,6 +1257,7 @@ static const struct virtio_config_ops > virtio_pci_config_ops = { > .get_shm_region = vp_get_shm_region, > .disable_vq_and_reset = vp_modern_disable_vq_and_reset, > .enable_vq_after_reset = vp_modern_enable_vq_after_reset, > + .admin_cmd_exec = vp_modern_admin_cmd_exec, > }; > > /* the PCI probing function */ > diff --git a/include/linux/virtio_config.h b/include/linux/virtio_config.h > index 16001e9f9b39..19606609254e 100644 > --- a/include/linux/virtio_config.h > +++ b/include/linux/virtio_config.h > @@ -108,6 +108,10 @@ struct virtqueue_info { > * Returns 0 on success or error status > * If disable_vq_and_reset is set, then enable_vq_after_reset must also be > * set. > + * @admin_cmd_exec: Execute an admin VQ command. > + * vdev: the virtio_device > + * cmd: the command to execute > + * Returns 0 on success or error status > */ > struct virtio_config_ops { > void (*get)(struct virtio_device *vdev, unsigned offset, > @@ -137,6 +141,8 @@ struct virtio_config_ops { > struct virtio_shm_region *region, u8 id); > int (*disable_vq_and_reset)(struct virtqueue *vq); > int (*enable_vq_after_reset)(struct virtqueue *vq); > + int (*admin_cmd_exec)(struct virtio_device *vdev, > + struct virtio_admin_cmd *cmd); > }; > > /** > -- > 2.50.1 >
