[virtio-dev] Re: [virtio-comment] [PATCH 00/11] Introduce transitional mmr pci device

Parav Pandit
2023-04-03T14:53:37Z

On 4/3/2023 10:45 AM, Stefan Hajnoczi wrote:
> On Fri, Mar 31, 2023 at 01:58:23AM +0300, Parav Pandit wrote:
>> Overview:
>> ---------
>> The Transitional MMR device is a variant of the transitional PCI device.
>
> What does "MMR" mean?
>
memory mapped registers.
Explained below in the design section and also in relevant patches 6 to 11.

>> It has its own small Device ID range. It does not have I/O
>> region BAR; instead it exposes legacy configuration and device
>> specific registers at an offset in the memory region BAR.
>>
>> Such transitional MMR devices will be used at the scale of
>> thousands of devices using PCI SR-IOV and/or future scalable
>> virtualization technology to provide backward
>> compatibility (for legacy devices) and also future
>> compatibility with new features.
>>
>> 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.
>
> Is the idea that the hypervisor configures the new Transitional MMR
> devices and makes them appear like virtio-pci Transitional devices?
>
Yes, but hypervisor is not involved in any configuration parsing or
anything of that nature.
It is only a passthrough fowarder from emulated IOBAR to memory mapped
legacy registers.
In other words, hypervisor do not care for the registers content at all.

> In other words, the guest doesn't know about Transitional MMR and does
> not need any code changes.
>
>> 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)
>
> What does this paragraph mean?
>
It means regardless of a VF being transitional MMR VF or 1.x VF without
any MMR extensions, there is single vfio virtio driver handling both
type of devices to map to the guest VM.

>
> Modern devices were added to Linux in 2014 and support SR-IOV.

> Why is it
> important to support Transitional (which really means Legacy devices,
> otherwise Modern devices would be sufficient)?
>
To support guest VMs which only understand legacy devices and
unfortunately they are still in much wider use by the users.