virtio-spec: balloon: MUST_TELL_HOST is optional
Michael S. Tsirkin
maintainerPATCH 1/1 virtio-spec: balloon: MUST_TELL_HOST is optional
Drivers treat MUST_TELL_HOST as optional: windows drivers do not ack it and expect this means they can tell host *after* deflate. This was not the intent but the documentation was not very clear on this point.
Luckily hyprevisors did not implement this feature yet so to provide guidance for future devices make spec match drivers expectations, and clarify that this feature only has effect if negotiated. This is needed as recent developments in kvm (memory region rework and the addition of vfio) finally make
it practical to implement this in devices.
---
OK how about this minimal patch for starters?
Other changes are possible on top but I think
both me and Paolo agree on this one.
Paolo?
virtio-spec.lyx | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-)
virtio-spec.lyx +15 -5
@@ -6331,8 +6331,13 @@ VIRTIO_CONSOLE_F_SIZE \begin_layout Description VIRTIO_CONSOLE_F_MULTIPORT(1) Device has support for multiple ports; configurati -on fields nr_ports and max_nr_ports are valid and control virtqueues will - be used. +on fields nr_ports and max_nr_ports are valid +\change_inserted 1986246365 1347188404 +; if this bit is negotiated, +\change_deleted 1986246365 1347188406 + and +\change_unchanged + control virtqueues will be used. \end_layout \end_deeper
@@ -6840,9 +6845,14 @@ The driver constructs an array of addresses of memory pages it has previously \end_layout \begin_layout Enumerate -If the VIRTIO_BALLOON_F_MUST_TELL_HOST feature is set, the guest may not - use these requested pages until that descriptor in the deflateq has been - used by the device. +If the VIRTIO_BALLOON_F_MUST_TELL_HOST feature is +\change_inserted 1986246365 1347188540 +negotiated +\change_deleted 1986246365 1347188542 +set +\change_unchanged +, the guest may not use these requested pages until that descriptor in the + deflateq has been used by the device. \end_layout \begin_layout Enumerate
Signature · 1 line
MST
Il 09/09/2012 13:36, Michael S. Tsirkin ha scritto:
virtio-spec.lyx The driver constructs an array of addresses of memory pages it has previously · line 6856
Quoted 13 lines
\begin_layout Enumerate
virtio-spec.lyx +8
-3-If the VIRTIO_BALLOON_F_MUST_TELL_HOST feature is set, the guest may not - use these requested pages until that descriptor in the deflateq has been - used by the device. +If the VIRTIO_BALLOON_F_MUST_TELL_HOST feature is +\change_inserted 1986246365 1347188540 +negotiated +\change_deleted 1986246365 1347188542 +set +\change_unchanged +, the guest may not use these requested pages until that descriptor in the + deflateq has been used by the device. \end_layout
Yeah, that's ok.
Paolo
Quoted 4 lines · Michael S. Tsirkin
Drivers treat
MUST_TELL_HOSTas optional: windows drivers do not ack it and expect this means they can tell host *after* deflate. This was not the intent but the documentation was not very clear on this point.
Quoted 8 lines
Luckily hyprevisors did not implement this feature yet so to provide guidance for future devices make spec match drivers expectations, and clarify that this feature only has effect if negotiated. This is needed as recent developments in kvm (memory region rework and the addition of vfio) finally make
it practical to implement this in devices.Signed-off-by Michael S. Tsirkin <[email protected]>
ping
Quoted 50 lines
---
OK how about this minimal patch for starters?
Other changes are possible on top but I think
both me and Paolo agree on this one.
Paolo?virtio-spec.lyx | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-)virtio-spec.lyx +15
-5@@ -6331,8 +6331,13 @@ VIRTIO_CONSOLE_F_SIZE \begin_layout Description VIRTIO_CONSOLE_F_MULTIPORT(1) Device has support for multiple ports; configurati -on fields nr_ports and max_nr_ports are valid and control virtqueues will - be used. +on fields nr_ports and max_nr_ports are valid +\change_inserted 1986246365 1347188404 +; if this bit is negotiated, +\change_deleted 1986246365 1347188406 + and +\change_unchanged + control virtqueues will be used. \end_layout \end_deeper@@ -6840,9 +6845,14 @@ The driver constructs an array of addresses of memory pages it has previously \end_layout \begin_layout Enumerate -If the VIRTIO_BALLOON_F_MUST_TELL_HOST feature is set, the guest may not - use these requested pages until that descriptor in the deflateq has been - used by the device. +If the VIRTIO_BALLOON_F_MUST_TELL_HOST feature is +\change_inserted 1986246365 1347188540 +negotiated +\change_deleted 1986246365 1347188542 +set +\change_unchanged +, the guest may not use these requested pages until that descriptor in the + deflateq has been used by the device. \end_layout \begin_layout EnumerateSignature · 1 line
MST
Quoted 12 lines · Michael S. Tsirkin
Quoted 11 lines · Michael S. Tsirkin
Drivers treat
MUST_TELL_HOSTas optional: windows drivers do not ack it and expect this means they can tell host *after* deflate. This was not the intent but the documentation was not very clear on this point.Luckily hyprevisors did not implement this feature yet so to provide guidance for future devices make spec match drivers expectations, and clarify that this feature only has effect if negotiated. This is needed as recent developments in kvm (memory region rework and the addition of vfio) finally make
it practical to implement this in devices.
Quoted 5 lines
Quoted 1 line
Signed-off-by Michael S. Tsirkin <[email protected]>Acked-by Paolo Bonzini <[email protected]>ping
OK, I just s/set/negotiated:
virtio-spec.txt renamed from virtio-spec.txt.old +3 -3
@@ -2411,9 +2411,9 @@ it has previously given to the balloon, as described above. This descriptor is added to the deflateq. - (b) If the VIRTIO_BALLOON_F_MUST_TELL_HOST feature is set, the - guest may not use these requested pages until that descriptor - in the deflateq has been used by the device. + (b) If the VIRTIO_BALLOON_F_MUST_TELL_HOST feature is + negotiated, the guest may not use these requested pages until + that descriptor in the deflateq has been used by the device. (c) Otherwise, the guest may begin to re-use pages previously given to the balloon before the device has acknowledged their
I'm think we get rid of the output queue for balloon in future.
Cheers,
Rusty.