[virtio-dev] RE: [PATCH v12 3/3] admin: Add group member legacy register access commands
> From: Michael S. Tsirkin > Sent: Friday, July 7, 2023 5:31 AM > ok getting there. mostly notification needs a bit more work but it's close. Fixed all the comments in v13. Thanks.
[virtio-dev] Re: [PATCH v12 3/3] admin: Add group member legacy register access commands
On Fri, Jul 07, 2023 at 01:26:56PM +, Parav Pandit wrote: > > > > From: Michael S. Tsirkin > > Sent: Friday, July 7, 2023 5:31 AM > > [..] > > > +For VIRTIO_ADMIN_CMD_LEGACY_DEV_CFG_WRITE and > > > +VIRTIO_ADMIN_CMD_LEGACY_DEV_CFG_READ commands, the driver > > SHOULD set > > > +\field{offset} and the length of the \field{data} to refer to a > > > +single field within the virtio device-specific configuration. > > > + > > > +If VIRTIO_ADMIN_CMD_LEGACY_NOTIFY_INFO command is supported, the > > > +group member driver SHOULD use the notification address to send a > > > +driver notification to the device. > > > > No group member driver is not involved. > Ok. > > > Just say the driver. And "driver notifications" - you want this for all of > > them no? > > > Didn’t understand the question. > Do you mean "all devices"? all driver notifications. -- MST - To unsubscribe, e-mail: virtio-dev-unsubscr...@lists.oasis-open.org For additional commands, e-mail: virtio-dev-h...@lists.oasis-open.org
[virtio-dev] RE: [PATCH v12 3/3] admin: Add group member legacy register access commands
> From: Michael S. Tsirkin > Sent: Friday, July 7, 2023 5:31 AM [..] > > +For VIRTIO_ADMIN_CMD_LEGACY_DEV_CFG_WRITE and > > +VIRTIO_ADMIN_CMD_LEGACY_DEV_CFG_READ commands, the driver > SHOULD set > > +\field{offset} and the length of the \field{data} to refer to a > > +single field within the virtio device-specific configuration. > > + > > +If VIRTIO_ADMIN_CMD_LEGACY_NOTIFY_INFO command is supported, the > > +group member driver SHOULD use the notification address to send a > > +driver notification to the device. > > No group member driver is not involved. Ok. > Just say the driver. And "driver notifications" - you want this for all of > them no? > Didn’t understand the question. Do you mean "all devices"?
[virtio-dev] Re: [PATCH v12 3/3] admin: Add group member legacy register access commands
On Fri, Jul 07, 2023 at 06:54:01AM +0300, Parav Pandit wrote: > Introduce group member legacy common configuration and legacy device > configuration access read/write commands. > > Group member legacy registers access commands enable group owner driver > software to access legacy registers on behalf of the guest virtual > machine. > > Usecase: > > 1. A hypervisor/system needs to provide transitional >virtio devices to the guest VM at scale of thousands, >typically, one to eight devices per VM. > > 2. A hypervisor/system needs to provide such devices using a >vendor agnostic driver in the hypervisor system. > > 3. A hypervisor system prefers to have single stack regardless of >virtio device type (net/blk) and be future compatible with a >single vfio stack using SR-IOV or other scalable device >virtualization technology to map PCI devices to the guest VM. >(as transitional or otherwise) > > Motivation/Background: > = > The existing virtio transitional PCI device is missing support for > PCI SR-IOV based devices. Currently it does not work beyond > PCI PF, or as software emulated device in reality. Currently it > has below cited system level limitations: > > [a] PCIe spec citation: > VFs do not support I/O Space and thus VF BARs shall not indicate I/O Space. > > [b] cpu arch citiation: > Intel 64 and IA-32 Architectures Software Developer’s Manual: > The processor’s I/O address space is separate and distinct from > the physical-memory address space. The I/O address space consists > of 64K individually addressable 8-bit I/O ports, numbered 0 through H. > > [c] PCIe spec citation: > If a bridge implements an I/O address range,...I/O address range will be > aligned to a 4 KB boundary. > > Overview: > = > Above usecase requirements is solved by PCI PF group owner accessing > its group member PCI VFs legacy registers using the administration > commands of the group owner PCI PF. > > Two types of administration commands are added which read/write PCI VF > registers. > > Software usage example: > === > > 1. One way to use and map to the guest VM is by using vfio driver > framework in Linux kernel. > > +--+ > |pci_dev_id = 0x100X | > +---|pci_rev_id = 0x0 |-+ > |vfio device|BAR0 = I/O region | | > | |Other attributes | | > | +--+ | > || > + +--+ +-+ | > | |I/O BAR to AQ | | Other vfio | | > | |rd/wr mapper& | | functionalities | | > | | forwarder| | | | > | +--+ +-+ | > || > +--+-+---+ >| | >Config region | > accessDriver notifications >| | > +++ +++ > | +-+ | | PCI VF device A | > | | AQ |-+>+-+ | > | +-+ | | | | legacy regs | | > | PCI PF device | | | +-+ | > +-+ | +-+ > | > | +++ > | | PCI VF device N | > +>+-+ | > | | legacy regs | | > | +-+ | > +-+ > > 2. Continue to use the virtio pci driver to bind to the >listed device id and use it as in the host. > > 3. Use it in a light weight hypervisor to run bare-metal OS. > > Fixes: https://github.com/oasis-tcs/virtio-spec/issues/167 > Signed-off-by: Parav Pandit ok getting there. mostly notification needs a bit more work but it's close. > --- > changelog: > v11->v12: > - added missing article the at few places > - rewrote group_member_id statements like other existing > commands which is cleaner and shorter > - added length and alignment lines to multiple commands > - rewrote fast path to separate dedicated mechanism > - rewrote example and description para for legacy notification command > - made separate paragraph for the notify info command > - dropped citation to virtio pci capabilities for member device > - notification region changed to notification address throughout > - added description to all the fields of the info struct > - avoided union in spirit of keeping all for pci > - used single listing > - moved description to end which was in between two structs > - added 4 entry and preference description > - added conformance line for notification via mmio works same way as > admin command > v10->v11: > - replaced tab with white spaces in read structure > -