Re: [PATCH RFC] virtio-pci: flexible configuration layout

Michael S. Tsirkin
2011-11-03T13:29:20Z

> 2. Move device specific features into the device specific region.
> Currently the features field is a mix between virtio-pci and device
> specific features.

A single feature field with bits partitioned to transport
specific and device specific fields is a generic virtio
thing. So there's relatively little to be gained from
moving the device bits out.

> I did more similar things in the spec suggestion I've sent,

What lacked there is the motivation.

I am aware of several issues that need to be addressed,
as they block extending virtio going forward:
- There's no place to put more transport registers.
For MSIX I hacked around that with moving device config when a feature
bit is set, but in hindsight this setup is fragile
and is panful to extend any further.
Splitting out device and transport helps.
- PIO space is limited. We are wasting it on non data path
configuration. There might also be a wish to have largish data
in configuration space, like a 1024 byte ID field.
- PIO is faster than MMIO on x86 KVM so we need to keep
using it for data path on that architecture
- Support architectures which have host/guest at different
endian-ness.

I addressed the first 3 and added capability infrastructure
which we can use in the future to support the last one
(by nature of using little endian format for capabilities).

> could you
> look at the second part for more ideas please?

I saw the per-queue features - but I don't see how it will work really
or what is the issue they solve.
Any more ideas I missed?

> --
>
> Sasha.