From: Daniel Henrique Barboza <danielhb413@gmail.com>
To: qemu-devel@nongnu.org
Cc: qemu-ppc@nongnu.org, clg@kaod.org,
Daniel Henrique Barboza <danielhb413@gmail.com>
Subject: [PATCH v3 2/4] target/ppc: enhance error report in kvmppc_read_int_cpu_dt()
Date: Thu, 7 Jul 2022 18:30:13 -0300 [thread overview]
Message-ID: <20220707213015.552104-3-danielhb413@gmail.com> (raw)
In-Reply-To: <20220707213015.552104-1-danielhb413@gmail.com>
First and foremost, the function can't return '-1' when an error occurs
because the return type is set to uint64_t. Let's fix that.
After that, the function can't simply return 0 whether an error happened
and call it a day. We must provide a way of letting callers know if the
zero return is legitimate or due to an error.
Add an Error pointer to kvmppc_read_int_cpu_dt() that will be filled
with an appropriate error, if one occurs. Callers are then free to pass
an Error pointer and handle it.
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
---
target/ppc/kvm.c | 20 +++++++++++---------
1 file changed, 11 insertions(+), 9 deletions(-)
diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c
index 65d136ed5a..cf4610b6fa 100644
--- a/target/ppc/kvm.c
+++ b/target/ppc/kvm.c
@@ -1926,20 +1926,22 @@ static uint64_t kvmppc_read_int_dt(const char *filename, Error **errp)
/*
* Read a CPU node property from the host device tree that's a single
- * integer (32-bit or 64-bit). Returns 0 if anything goes wrong
- * (can't find or open the property, or doesn't understand the format)
+ * integer (32-bit or 64-bit). Returns 0 and set errp if anything goes
+ * wrong (can't find or open the property, or doesn't understand the
+ * format)
*/
-static uint64_t kvmppc_read_int_cpu_dt(const char *propname)
+static uint64_t kvmppc_read_int_cpu_dt(const char *propname, Error **errp)
{
char buf[PATH_MAX], *tmp;
uint64_t val;
if (kvmppc_find_cpu_dt(buf, sizeof(buf))) {
- return -1;
+ error_setg(errp, "Failed to read CPU property %s", propname);
+ return 0;
}
tmp = g_strdup_printf("%s/%s", buf, propname);
- val = kvmppc_read_int_dt(tmp, NULL);
+ val = kvmppc_read_int_dt(tmp, errp);
g_free(tmp);
return val;
@@ -1947,12 +1949,12 @@ static uint64_t kvmppc_read_int_cpu_dt(const char *propname)
uint64_t kvmppc_get_clockfreq(void)
{
- return kvmppc_read_int_cpu_dt("clock-frequency");
+ return kvmppc_read_int_cpu_dt("clock-frequency", NULL);
}
static int kvmppc_get_dec_bits(void)
{
- int nr_bits = kvmppc_read_int_cpu_dt("ibm,dec-bits");
+ int nr_bits = kvmppc_read_int_cpu_dt("ibm,dec-bits", NULL);
if (nr_bits > 0) {
return nr_bits;
@@ -2337,8 +2339,8 @@ static void alter_insns(uint64_t *word, uint64_t flags, bool on)
static void kvmppc_host_cpu_class_init(ObjectClass *oc, void *data)
{
PowerPCCPUClass *pcc = POWERPC_CPU_CLASS(oc);
- uint32_t dcache_size = kvmppc_read_int_cpu_dt("d-cache-size");
- uint32_t icache_size = kvmppc_read_int_cpu_dt("i-cache-size");
+ uint32_t dcache_size = kvmppc_read_int_cpu_dt("d-cache-size", NULL);
+ uint32_t icache_size = kvmppc_read_int_cpu_dt("i-cache-size", NULL);
/* Now fix up the class with information we can query from the host */
pcc->pvr = mfpvr();
--
2.36.1
next prev parent reply other threads:[~2022-07-07 21:33 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-07 21:30 [PATCH v3 0/4] enhance error handling in kvmppc_read_int* Daniel Henrique Barboza
2022-07-07 21:30 ` [PATCH v3 1/4] target/ppc: add error report when fopen fails in kvmppc_read_int_dt() Daniel Henrique Barboza
2022-07-07 21:30 ` Daniel Henrique Barboza [this message]
2022-07-07 21:30 ` [PATCH v3 3/4] target/ppc: use g_autofree in kvmppc_read_int_cpu_dt() Daniel Henrique Barboza
2022-07-07 21:30 ` [PATCH v3 4/4] target/ppc: exit(1) on failure in kvmppc_get_clockfreq() Daniel Henrique Barboza
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=20220707213015.552104-3-danielhb413@gmail.com \
--to=danielhb413@gmail.com \
--cc=clg@kaod.org \
--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 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.