Re: [PATCH v1] s390/virtio_ccw: don't allocate/assign airqs for non-existing queues

From: David Hildenbrand
Date: Mon Apr 07 2025 - 04:45:14 EST


On 07.04.25 10:34, Michael S. Tsirkin wrote:
On Mon, Apr 07, 2025 at 10:17:10AM +0200, David Hildenbrand wrote:
On 07.04.25 09:52, Michael S. Tsirkin wrote:
On Fri, Apr 04, 2025 at 05:39:10PM +0200, Halil Pasic wrote:

Not perfect, but AFAIKS, not horrible.

It is like it is. QEMU does queue exist if the corresponding feature
is offered by the device, and that is what we have to live with.

I don't think we can live with this properly though.
It means a guest that does not know about some features
does not know where to find things.

Please describe a real scenario, I'm missing the point.


OK so.

Device has VIRTIO_BALLOON_F_FREE_PAGE_HINT and VIRTIO_BALLOON_F_REPORTING
Driver only knows about VIRTIO_BALLOON_F_REPORTING so
it does not know what does VIRTIO_BALLOON_F_FREE_PAGE_HINT do.
How does it know which vq to use for reporting?
It will try to use the free page hint one.

"only knows" -- VIRTIO_BALLOON_F_FREE_PAGE_HINT was proposed + specified in the spec.

So I think this is not a very good example.




Whoever adds new feat_X *must be aware* about all previous features,
otherwise we'd be reusing feature bits and everything falls to pieces.


The knowledge is supposed be limited to which feature bit to use.

I think we also have to know which virtqueue bits can be used, right?

I mean, I agree that it's all nasty ...


So now, I am inclined to add linux code to work with current qemu and
with spec compliant one, and add qemu code to work with current linux
and spec compliant one.

Document the bug in the spec, maybe, in a non conformance section.

I'm afraid this results in a lot of churn without really making things
better.

IMHO, documenting things how they actually behave, and maybe moving towards
fixed queue indexes for new features is the low hanging fruit.

I worry about how to we ensure that?
If old code is messed up people will just keep propagating that.
I would like to fix old code so that new code is correct.


As raised, it's not just qemu+linux, it's *at least* also cloud-hypervisor.

--
Cheers,

David / dhildenb

There's a slippery slope here in that people will come to us
with buggy devices and ask to change the spec.

I yet have to fully digest cross-vm: https://github.com/google/crosvm/blob/main/devices/src/virtio/balloon.rs

and how it would free-page-reporting work with upstream Linux ... :(

--
Cheers,

David / dhildenb