diff mbox series

accel/kvm: add PIO ioeventfds only in case kvm_eventfds_allowed is true

Message ID 20201017210102.26036-1-eafanasova@gmail.com
State Superseded
Headers show
Series accel/kvm: add PIO ioeventfds only in case kvm_eventfds_allowed is true | expand

Commit Message

Elena Afanasova Oct. 17, 2020, 9:01 p.m. UTC
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Elena Afanasova <eafanasova@gmail.com>
---
 accel/kvm/kvm-all.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Comments

Stefan Hajnoczi Oct. 19, 2020, 10:05 a.m. UTC | #1
On Sat, Oct 17, 2020 at 02:01:01PM -0700, Elena Afanasova wrote:
> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>

> Signed-off-by: Elena Afanasova <eafanasova@gmail.com>

> ---

>  accel/kvm/kvm-all.c | 6 ++++--

>  1 file changed, 4 insertions(+), 2 deletions(-)


Additional information for the commit description:

  MMIO eventfd_add/del are only registered when kvm_eventfds_allowed is
  true but for PIO they are registered unconditionally. This is a bug
  because kvm.ko ioeventfd should not be used if kvm_eventfds_allowed is
  false.

  This issue is a latent bug because ioeventfd is usually available when
  KVM is enabled.

> 

> diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c

> index 9ef5daf4c5..baaa54249d 100644

> --- a/accel/kvm/kvm-all.c

> +++ b/accel/kvm/kvm-all.c

> @@ -2239,8 +2239,10 @@ static int kvm_init(MachineState *ms)

>  

>      kvm_memory_listener_register(s, &s->memory_listener,

>                                   &address_space_memory, 0);

> -    memory_listener_register(&kvm_io_listener,

> -                             &address_space_io);

> +    if (kvm_eventfds_allowed) {

> +        memory_listener_register(&kvm_io_listener,

> +                                 &address_space_io);

> +    }

>      memory_listener_register(&kvm_coalesced_pio_listener,

>                               &address_space_io);

>  

> -- 

> 2.25.1

>
Stefan Hajnoczi Oct. 20, 2020, 3:40 p.m. UTC | #2
On Sat, Oct 17, 2020 at 02:01:01PM -0700, Elena Afanasova wrote:
> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>

> Signed-off-by: Elena Afanasova <eafanasova@gmail.com>

> ---

>  accel/kvm/kvm-all.c | 6 ++++--

>  1 file changed, 4 insertions(+), 2 deletions(-)


Thanks, applied just this patch to my block-next tree:
https://github.com/stefanha/qemu/commits/block-next

Stefan
diff mbox series

Patch

diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
index 9ef5daf4c5..baaa54249d 100644
--- a/accel/kvm/kvm-all.c
+++ b/accel/kvm/kvm-all.c
@@ -2239,8 +2239,10 @@  static int kvm_init(MachineState *ms)
 
     kvm_memory_listener_register(s, &s->memory_listener,
                                  &address_space_memory, 0);
-    memory_listener_register(&kvm_io_listener,
-                             &address_space_io);
+    if (kvm_eventfds_allowed) {
+        memory_listener_register(&kvm_io_listener,
+                                 &address_space_io);
+    }
     memory_listener_register(&kvm_coalesced_pio_listener,
                              &address_space_io);