From: Alexander Graf <agraf@suse.de>
To: qemu-devel qemu-devel <qemu-devel@nongnu.org>
Cc: Blue Swirl <blauwirbel@gmail.com>,
"qemu-ppc@nongnu.org List" <qemu-ppc@nongnu.org>,
Aurelien Jarno <aurelien@aurel32.net>,
David Gibson <david@gibson.dropbear.id.au>
Subject: [Qemu-devel] [PATCH 06/22] pseries: Don't allow duplicate registration of hcalls or RTAS calls
Date: Mon, 29 Oct 2012 11:25:55 +0100 [thread overview]
Message-ID: <1351506371-23632-7-git-send-email-agraf@suse.de> (raw)
In-Reply-To: <1351506371-23632-1-git-send-email-agraf@suse.de>
From: David Gibson <david@gibson.dropbear.id.au>
Currently the pseries machine code allows a callback to be registered
for a hypercall number twice, as long as it's the same callback the second
time. We don't test for duplicate registrations of RTAS callbacks at all
so it will effectively be last registratiojn wins.
This was originally done because it was awkward to ensure that the
registration happened exactly once, but the code has since been
restructured so that's no longer the case.
Duplicate registration of a hypercall or RTAS call could well suggest
a duplicate initialization which could cause other problems, so this patch
makes duplicate registrations a bug, to prevent the old behaviour from
hiding other bugs.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
hw/spapr_hcall.c | 3 +--
hw/spapr_rtas.c | 9 +++++++++
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/hw/spapr_hcall.c b/hw/spapr_hcall.c
index 194d9c2..762493a 100644
--- a/hw/spapr_hcall.c
+++ b/hw/spapr_hcall.c
@@ -670,11 +670,10 @@ void spapr_register_hypercall(target_ulong opcode, spapr_hcall_fn fn)
} else {
assert((opcode >= KVMPPC_HCALL_BASE) && (opcode <= KVMPPC_HCALL_MAX));
-
slot = &kvmppc_hypercall_table[opcode - KVMPPC_HCALL_BASE];
}
- assert(!(*slot) || (fn == *slot));
+ assert(!(*slot));
*slot = fn;
}
diff --git a/hw/spapr_rtas.c b/hw/spapr_rtas.c
index 67da27b..ce76c58 100644
--- a/hw/spapr_rtas.c
+++ b/hw/spapr_rtas.c
@@ -241,6 +241,15 @@ target_ulong spapr_rtas_call(sPAPREnvironment *spapr,
void spapr_rtas_register(const char *name, spapr_rtas_fn fn)
{
+ int i;
+
+ for (i = 0; i < (rtas_next - rtas_table); i++) {
+ if (strcmp(name, rtas_table[i].name) == 0) {
+ fprintf(stderr, "RTAS call \"%s\" registered twice\n", name);
+ exit(1);
+ }
+ }
+
assert(rtas_next < (rtas_table + TOKEN_MAX));
rtas_next->name = name;
--
1.6.0.2
next prev parent reply other threads:[~2012-10-29 10:26 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-29 10:25 [Qemu-devel] [PULL 00/22] ppc patch queue 2012-10-29 Alexander Graf
2012-10-29 10:25 ` [Qemu-devel] [PATCH 01/22] Remove TARGET_PHYS_ADDR_BITS define completely Alexander Graf
2012-10-29 10:38 ` Peter Maydell
2012-10-29 10:46 ` Alexander Graf
2012-10-29 10:25 ` [Qemu-devel] [PATCH 02/22] PPC: Bamboo: Fix memory size DT property Alexander Graf
2012-10-29 10:25 ` [Qemu-devel] [PATCH 03/22] PPC: 440: Emulate DCBR0 Alexander Graf
2012-10-29 10:25 ` [Qemu-devel] [PATCH 04/22] e500: Fix serial initialization Alexander Graf
2012-10-29 10:25 ` [Qemu-devel] [PATCH 05/22] Add USB option in machine options Alexander Graf
2012-10-29 10:25 ` Alexander Graf [this message]
2012-10-29 10:25 ` [Qemu-devel] [PATCH 07/22] target-ppc: Rework storage of VPA registration state Alexander Graf
2012-10-29 10:25 ` [Qemu-devel] [PATCH 08/22] pseries: Implement qemu initiated shutdowns using EPOW events Alexander Graf
2012-10-29 10:25 ` [Qemu-devel] [PATCH 09/22] ac97: convert PIO to new memory api read/write Alexander Graf
2012-10-29 10:25 ` [Qemu-devel] [PATCH 10/22] virtio-pci: " Alexander Graf
2012-10-29 10:26 ` [Qemu-devel] [PATCH 11/22] es1370: " Alexander Graf
2012-10-29 10:26 ` [Qemu-devel] [PATCH 12/22] i8254: " Alexander Graf
2012-10-29 10:26 ` [Qemu-devel] [PATCH 13/22] m48t59: " Alexander Graf
2012-10-29 10:26 ` [Qemu-devel] [PATCH 14/22] mc146818rtc: " Alexander Graf
2012-10-29 10:26 ` [Qemu-devel] [PATCH 15/22] pc port92: " Alexander Graf
2012-10-29 10:26 ` [Qemu-devel] [PATCH 16/22] pckbd: " Alexander Graf
2012-10-29 10:26 ` [Qemu-devel] [PATCH 17/22] rtl8139: " Alexander Graf
2012-10-29 10:26 ` [Qemu-devel] [PATCH 18/22] serial: " Alexander Graf
2012-10-29 10:26 ` [Qemu-devel] [PATCH 19/22] vmport: " Alexander Graf
2012-10-29 10:26 ` [Qemu-devel] [PATCH 20/22] xen_platform: " Alexander Graf
2012-10-29 10:26 ` [Qemu-devel] [PATCH 21/22] PPC: e500: Map PIO space into core memory region Alexander Graf
2012-10-29 10:26 ` [Qemu-devel] [PATCH 22/22] PPC: pseries: Remove hack for PIO window Alexander Graf
2012-10-29 11:01 ` [Qemu-devel] [PULL 00/22] ppc patch queue 2012-10-29 Andreas Färber
2012-10-29 11:03 ` Alexander Graf
2012-10-29 14:34 ` Aurelien Jarno
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=1351506371-23632-7-git-send-email-agraf@suse.de \
--to=agraf@suse.de \
--cc=aurelien@aurel32.net \
--cc=blauwirbel@gmail.com \
--cc=david@gibson.dropbear.id.au \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).