Re: [Qemu-devel] ivshmem assertion failure with EventNotifier

2012-08-22 Thread Jan Kiszka
On 2012-08-22 06:29, Cam Macdonell wrote:
 Hi Paolo,
 
 I've noticed an assertion error when sending interrupts via ivshmem.
 I bisected to this patch.
 
 commit 563027cc0c94aa4846c18f9d665a4c90f8c42ba8
 Author: Paolo Bonzini pbonz...@redhat.com
 Date:   Thu Jul 5 17:16:25 2012 +0200
 
 ivshmem: use EventNotifier and memory API
 
 All of ivshmem's usage of eventfd now has a corresponding API in
 EventNotifier.  Simplify the code by using it, and also use the
 memory API consistently to set up and tear down the ioeventfds.
 
 Signed-off-by: Paolo Bonzini pbonz...@redhat.com
 Signed-off-by: Avi Kivity a...@redhat.com
 
 qemu-system-x86_64: /home/cam/src/git/qemu/memory.c:1244: 
 memory_region_del_even
 tfd: Assertion `i != mr-ioeventfd_nb' failed.  This assertion failure
 occurs when the eventfd is triggered.
 
 I'll continue to dig around, but can you explain what this assertion
 is catching.  Is there an initialization that might be missing?

Possibly a double-release of the eventfd. The assertion checks if the
parameters provided on del_eventfd match an existing one. Or that
matching is broken.

Jan




signature.asc
Description: OpenPGP digital signature


Re: [Qemu-devel] ivshmem assertion failure with EventNotifier

2012-08-22 Thread Paolo Bonzini
Il 22/08/2012 06:29, Cam Macdonell ha scritto:
 Hi Paolo,
 
 I've noticed an assertion error when sending interrupts via ivshmem.
 I bisected to this patch.

Does this help?

diff --git a/hw/ivshmem.c b/hw/ivshmem.c
index b4d65a6..47f2a16 100644
--- a/hw/ivshmem.c
+++ b/hw/ivshmem.c
@@ -366,6 +366,10 @@ static void close_guest_eventfds(IVShmemState *s,
int posn)
 {
 int i, guest_curr_max;

+if (!ivshmem_has_feature(s, IVSHMEM_IOEVENTFD)) {
+return;
+}
+
 guest_curr_max = s-peers[posn].nb_eventfds;

 memory_region_transaction_begin();

Paolo




Re: [Qemu-devel] ivshmem assertion failure with EventNotifier

2012-08-22 Thread Cam Macdonell
On Wed, Aug 22, 2012 at 6:01 AM, Paolo Bonzini pbonz...@redhat.com wrote:
 Il 22/08/2012 06:29, Cam Macdonell ha scritto:
 Hi Paolo,

 I've noticed an assertion error when sending interrupts via ivshmem.
 I bisected to this patch.

 Does this help?

Yes, that solves it.


 diff --git a/hw/ivshmem.c b/hw/ivshmem.c
 index b4d65a6..47f2a16 100644
 --- a/hw/ivshmem.c
 +++ b/hw/ivshmem.c
 @@ -366,6 +366,10 @@ static void close_guest_eventfds(IVShmemState *s,
 int posn)
  {
  int i, guest_curr_max;

 +if (!ivshmem_has_feature(s, IVSHMEM_IOEVENTFD)) {
 +return;
 +}
 +
  guest_curr_max = s-peers[posn].nb_eventfds;

  memory_region_transaction_begin();

 Paolo




[Qemu-devel] ivshmem assertion failure with EventNotifier

2012-08-21 Thread Cam Macdonell
Hi Paolo,

I've noticed an assertion error when sending interrupts via ivshmem.
I bisected to this patch.

commit 563027cc0c94aa4846c18f9d665a4c90f8c42ba8
Author: Paolo Bonzini pbonz...@redhat.com
Date:   Thu Jul 5 17:16:25 2012 +0200

ivshmem: use EventNotifier and memory API

All of ivshmem's usage of eventfd now has a corresponding API in
EventNotifier.  Simplify the code by using it, and also use the
memory API consistently to set up and tear down the ioeventfds.

Signed-off-by: Paolo Bonzini pbonz...@redhat.com
Signed-off-by: Avi Kivity a...@redhat.com

qemu-system-x86_64: /home/cam/src/git/qemu/memory.c:1244: memory_region_del_even
tfd: Assertion `i != mr-ioeventfd_nb' failed.  This assertion failure
occurs when the eventfd is triggered.

I'll continue to dig around, but can you explain what this assertion
is catching.  Is there an initialization that might be missing?

Thanks,
Cam