Re: [PATCH v2 19/24] vdpa: make sure set_features in invoked for legacy

From: Jason Wang
Date: Thu Aug 06 2020 - 23:00:58 EST

On 2020/8/6 下午6:00, Michael S. Tsirkin wrote:
On Thu, Aug 06, 2020 at 03:27:38PM +0800, Jason Wang wrote:
On 2020/8/6 下午1:53, Michael S. Tsirkin wrote:
On Thu, Aug 06, 2020 at 11:23:05AM +0800, Jason Wang wrote:
On 2020/8/5 下午7:40, Michael S. Tsirkin wrote:
On Wed, Aug 05, 2020 at 02:14:07PM +0800, Jason Wang wrote:
On 2020/8/4 上午5:00, Michael S. Tsirkin wrote:
Some legacy guests just assume features are 0 after reset.
We detect that config space is accessed before features are
set and set features to 0 automatically.
Note: some legacy guests might not even access config space, if this is
reported in the field we might need to catch a kick to handle these.
I wonder whether it's easier to just support modern device?

Well hardware vendors are I think interested in supporting legacy
guests. Limiting vdpa to modern only would make it uncompetitive.
My understanding is that, IOMMU_PLATFORM is mandatory for hardware vDPA to
Hmm I don't really see why. Assume host maps guest memory properly,
VM does not have an IOMMU, legacy guest can just work.

Yes, guest may not set IOMMU_PLATFORM.

Care explaining what's wrong with this picture?

The problem is virtio_vdpa, without IOMMU_PLATFORM it uses PA which can not
work if IOMMU is enabled.

So that's a virtio_vdpa limitation.

Probably not, I think this goes back to the long debate of whether to use DMA API unconditionally. If we did that, we can support legacy virtio driver.

The vDPA device needs to provide a DMA device and the virtio core and perform DMA API with that device which should work for all of the cases.

But a big question is, do upstream care about out of tree virtio drivers?


In the same way, if a device
does not have an on-device iommu *and* is not behind an iommu,
then vdpa can't bind to it.

But this virtio_vdpa specific hack does not belong in a generic vdpa code.

So it can only work for modern device ...