From: "Hervé Poussineau" <hpoussin@reactos.org>
To: qemu-devel@nongnu.org
Cc: qemu-trivial@nongnu.org, "Paolo Bonzini" <pbonzini@redhat.com>,
"Hervé Poussineau" <hpoussin@reactos.org>
Subject: [Qemu-trivial] [PATCH] ioport/memory: check that both .read and .write callbacks are defined
Date: Wed, 5 Jun 2013 21:42:28 +0800 [thread overview]
Message-ID: <1370439748-18092-1-git-send-email-hpoussin@reactos.org> (raw)
If that's not the case, QEMU will may during execution.
This has recently been fixed for:
- acpi (2d3b989529727ccace243b953a181fbae04a30d1)
- kvmapic (0c1cd0ae2a4faabeb948b9a07ea1696e853de174)
- xhci (6d3bc22e31bcee74dc1e05a5370cabb33b7c3fda)
Signed-off-by: Hervé Poussineau <hpoussin@reactos.org>
---
I started all current QEMU system emulations with
qemu-system-{arch} -M {machine} , and none broke on these
additionnal asserts.
However, lots of them exited for other reasons, like not having the
right number of CPUs, no -kernel argument, or fetching invalid
instructions from RAM.
ioport.c | 1 +
memory.c | 2 ++
2 files changed, 3 insertions(+)
diff --git a/ioport.c b/ioport.c
index a0ac2a0..8dd9d50 100644
--- a/ioport.c
+++ b/ioport.c
@@ -337,6 +337,7 @@ void portio_list_init(PortioList *piolist,
unsigned n = 0;
while (callbacks[n].size) {
+ assert(callbacks[n].read && callbacks[n].write);
++n;
}
diff --git a/memory.c b/memory.c
index 5cb8f4a..654d1ce 100644
--- a/memory.c
+++ b/memory.c
@@ -1008,6 +1008,8 @@ void memory_region_init_io(MemoryRegion *mr,
uint64_t size)
{
memory_region_init(mr, name, size);
+ assert(ops->read || ops->old_mmio.read);
+ assert(ops->write || ops->old_mmio.write);
mr->ops = ops;
mr->opaque = opaque;
mr->terminates = true;
--
1.7.10.4
WARNING: multiple messages have this Message-ID (diff)
From: "Hervé Poussineau" <hpoussin@reactos.org>
To: qemu-devel@nongnu.org
Cc: qemu-trivial@nongnu.org, "Paolo Bonzini" <pbonzini@redhat.com>,
"Hervé Poussineau" <hpoussin@reactos.org>
Subject: [Qemu-devel] [PATCH] ioport/memory: check that both .read and .write callbacks are defined
Date: Wed, 5 Jun 2013 21:42:28 +0800 [thread overview]
Message-ID: <1370439748-18092-1-git-send-email-hpoussin@reactos.org> (raw)
If that's not the case, QEMU will may during execution.
This has recently been fixed for:
- acpi (2d3b989529727ccace243b953a181fbae04a30d1)
- kvmapic (0c1cd0ae2a4faabeb948b9a07ea1696e853de174)
- xhci (6d3bc22e31bcee74dc1e05a5370cabb33b7c3fda)
Signed-off-by: Hervé Poussineau <hpoussin@reactos.org>
---
I started all current QEMU system emulations with
qemu-system-{arch} -M {machine} , and none broke on these
additionnal asserts.
However, lots of them exited for other reasons, like not having the
right number of CPUs, no -kernel argument, or fetching invalid
instructions from RAM.
ioport.c | 1 +
memory.c | 2 ++
2 files changed, 3 insertions(+)
diff --git a/ioport.c b/ioport.c
index a0ac2a0..8dd9d50 100644
--- a/ioport.c
+++ b/ioport.c
@@ -337,6 +337,7 @@ void portio_list_init(PortioList *piolist,
unsigned n = 0;
while (callbacks[n].size) {
+ assert(callbacks[n].read && callbacks[n].write);
++n;
}
diff --git a/memory.c b/memory.c
index 5cb8f4a..654d1ce 100644
--- a/memory.c
+++ b/memory.c
@@ -1008,6 +1008,8 @@ void memory_region_init_io(MemoryRegion *mr,
uint64_t size)
{
memory_region_init(mr, name, size);
+ assert(ops->read || ops->old_mmio.read);
+ assert(ops->write || ops->old_mmio.write);
mr->ops = ops;
mr->opaque = opaque;
mr->terminates = true;
--
1.7.10.4
next reply other threads:[~2013-06-05 13:41 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-05 13:42 Hervé Poussineau [this message]
2013-06-05 13:42 ` [Qemu-devel] [PATCH] ioport/memory: check that both .read and .write callbacks are defined Hervé Poussineau
2013-06-08 7:51 ` [Qemu-trivial] " Michael Tokarev
2013-06-08 7:51 ` [Qemu-devel] " Michael Tokarev
2013-06-10 5:27 ` Gerd Hoffmann
2013-06-10 5:27 ` [Qemu-devel] " Gerd Hoffmann
2013-06-10 9:14 ` Peter Crosthwaite
2013-06-10 9:14 ` [Qemu-devel] " Peter Crosthwaite
2013-06-10 17:06 ` Michael S. Tsirkin
2013-06-10 17:06 ` [Qemu-devel] " Michael S. Tsirkin
2013-06-10 22:30 ` [Qemu-trivial] [Qemu-devel] " Peter Crosthwaite
2013-06-10 22:30 ` [Qemu-devel] [Qemu-trivial] " Peter Crosthwaite
2013-06-10 22:53 ` [Qemu-trivial] [Qemu-devel] " Edgar E. Iglesias
2013-06-10 22:53 ` [Qemu-devel] [Qemu-trivial] " Edgar E. Iglesias
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1370439748-18092-1-git-send-email-hpoussin@reactos.org \
--to=hpoussin@reactos.org \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-trivial@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.