From: Daniel Black <daniel@linux.ibm.com>
To: qemu-devel@nongnu.org
Cc: "open list:sPAPR" <qemu-ppc@nongnu.org>,
Greg Kurz <groug@kaod.org>, Daniel Black <daniel@linux.ibm.com>,
David Gibson <david@gibson.dropbear.id.au>
Subject: [Qemu-devel] [PATCH v3] spapr: quantify error messages regarding capability settings
Date: Mon, 5 Aug 2019 15:09:58 +1000 [thread overview]
Message-ID: <20190805050959.19935-1-daniel@linux.ibm.com> (raw)
Its not immediately obvious how cap-X=Y setting need to be applied
to the command line so, for spapr capability hints, this has been clarified to:
..try appending -machine cap-X=Y
The wrong value messages have been left as is, as the user has found the right
location.
Warning messages have been left as is for now.
Reviewed-by: Greg Kurz <groug@kaod.org>
Signed-off-by: Daniel Black <daniel@linux.ibm.com>
---
tcg (broken only for cap-{cfpc|sbbc|ibs}:
$ ppc64-softmmu/qemu-system-ppc64 -nodefaults -nographic -machine pseries,accel=tcg
qemu-system-ppc64: warning: TCG doesn't support requested feature, cap-cfpc=workaround
qemu-system-ppc64: warning: TCG doesn't support requested feature, cap-sbbc=workaround
qemu-system-ppc64: warning: TCG doesn't support requested feature, cap-ibs=workaround
^Cqemu-system-ppc64: terminating on signal 2
$ ppc64-softmmu/qemu-system-ppc64 -nodefaults -nographic -machine pseries,accel=tcg -machine cap-cfpc=workaround
qemu-system-ppc64: warning: TCG doesn't support requested feature, cap-cfpc=workaround
qemu-system-ppc64: warning: TCG doesn't support requested feature, cap-sbbc=workaround
qemu-system-ppc64: warning: TCG doesn't support requested feature, cap-ibs=workaround
$ ppc64-softmmu/qemu-system-ppc64 -nodefaults -nographic -machine pseries,accel=tcg -machine cap-cfpc=broken
qemu-system-ppc64: warning: TCG doesn't support requested feature, cap-sbbc=workaround
qemu-system-ppc64: warning: TCG doesn't support requested feature, cap-ibs=workaround
^Cqemu-system-ppc64: terminating on signal 2
$ ppc64-softmmu/qemu-system-ppc64 -nodefaults -nographic -machine pseries,accel=tcg -machine cap-cfpc=fixed
qemu-system-ppc64: warning: TCG doesn't support requested feature, cap-cfpc=fixed
qemu-system-ppc64: warning: TCG doesn't support requested feature, cap-sbbc=workaround
qemu-system-ppc64: warning: TCG doesn't support requested feature, cap-ibs=workaround
^Cqemu-system-ppc64: terminating on signal 2
$ ppc64-softmmu/qemu-system-ppc64 -nodefaults -nographic -machine pseries,accel=tcg -machine cap-cfpc=broken -machine cap-sbbc=fixed
qemu-system-ppc64: warning: TCG doesn't support requested feature, cap-sbbc=fixed
qemu-system-ppc64: warning: TCG doesn't support requested feature, cap-ibs=workaround
^Cqemu-system-ppc64: terminating on signal 2
$ ppc64-softmmu/qemu-system-ppc64 -nodefaults -nographic -machine pseries,accel=tcg -machine cap-cfpc=broken -machine cap-sbbc=broken
qemu-system-ppc64: warning: TCG doesn't support requested feature, cap-ibs=workaround
^Cqemu-system-ppc64: terminating on signal 2
$ ppc64-softmmu/qemu-system-ppc64 -nodefaults -nographic -machine pseries,accel=tcg -machine cap-cfpc=broken -machine cap-sbbc=broken -machine cap-ibs=fixed-ibs
qemu-system-ppc64: warning: TCG doesn't support requested feature, cap-ibs=fixed-ibs
^Cqemu-system-ppc64: terminating on signal 2
$ ppc64-softmmu/qemu-system-ppc64 -nodefaults -nographic -machine pseries,accel=tcg -machine cap-cfpc=broken -machine cap-sbbc=broken -machine cap-ibs=fixed-ccd
qemu-system-ppc64: warning: TCG doesn't support requested feature, cap-ibs=fixed-ccd
^Cqemu-system-ppc64: terminating on signal 2
$ ppc64-softmmu/qemu-system-ppc64 -nodefaults -nographic -machine pseries,accel=tcg -machine cap-cfpc=broken -machine cap-sbbc=broken -machine cap-ibs=fixed-na
qemu-system-ppc64: warning: TCG doesn't support requested feature, cap-ibs=fixed-na
^Cqemu-system-ppc64: terminating on signal 2
$ ppc64-softmmu/qemu-system-ppc64 -nodefaults -nographic -machine pseries,accel=tcg -machine cap-cfpc=broken -machine cap-sbbc=broken -machine cap-ibs=fixed-broken
qemu-system-ppc64: Invalid capability mode "fixed-broken" for cap-ibs
$ ppc64-softmmu/qemu-system-ppc64 -nodefaults -nographic -machine pseries,accel=tcg -machine cap-cfpc=broken -machine cap-sbbc=broken -machine cap-ibs=broken
^Cqemu-system-ppc64: terminating on signal 2
result: No silly messages
kvm (older firmware without features "for testing"):
$ ppc64-softmmu/qemu-system-ppc64 -nodefaults -nographic -machine pseries -accel kvm -machine cap-cfpc=workaround
qemu-system-ppc64: Requested safe cache capability level not supported by kvm, try appending -machine cap-cfpc=broken
$ ppc64-softmmu/qemu-system-ppc64 -nodefaults -nographic -machine pseries -accel kvm -machine cap-cfpc=fixed
qemu-system-ppc64: Requested safe cache capability level not supported by kvm, try appending -machine cap-cfpc=broken
$ ppc64-softmmu/qemu-system-ppc64 -nodefaults -nographic -machine pseries -accel kvm -machine cap-sbbc=broken
qemu-system-ppc64: Requested safe cache capability level not supported by kvm, try appending -machine cap-cfpc=broken
$ ppc64-softmmu/qemu-system-ppc64 -nodefaults -nographic -machine pseries -accel kvm -machine cap-cfpc=broken -machine cap-sbbc=broken
qemu-system-ppc64: Requested safe indirect branch capability level not supported by kvm, try appending -machine cap-ibs=broken
$ ppc64-softmmu/qemu-system-ppc64 -nodefaults -nographic -machine pseries -accel kvm -machine cap-cfpc=broken -machine cap-sbbc=fixed
qemu-system-ppc64: Requested safe bounds check capability level not supported by kvm, try appending -machine cap-sbbc=broken
$ ppc64-softmmu/qemu-system-ppc64 -nodefaults -nographic -machine pseries -accel kvm -machine cap-cfpc=broken -machine cap-sbbc=workaround
qemu-system-ppc64: Requested safe bounds check capability level not supported by kvm, try appending -machine cap-sbbc=broken
$ ppc64-softmmu/qemu-system-ppc64 -nodefaults -nographic -machine pseries -accel kvm -machine cap-cfpc=broken -machine cap-sbbc=broken
qemu-system-ppc64: Requested safe indirect branch capability level not supported by kvm, try appending -machine cap-ibs=broken
$ ppc64-softmmu/qemu-system-ppc64 -nodefaults -nographic -machine pseries -accel kvm -machine cap-cfpc=broken -machine cap-sbbc=broken -machine cap-ibs=workaround
qemu-system-ppc64: Requested safe indirect branch capability level not supported by kvm, try appending -machine cap-ibs=broken
$ ppc64-softmmu/qemu-system-ppc64 -nodefaults -nographic -machine pseries -accel kvm -machine cap-cfpc=broken -machine cap-sbbc=broken -machine cap-ibs=fixed
qemu-system-ppc64: Invalid capability mode "fixed" for cap-ibs
$ ppc64-softmmu/qemu-system-ppc64 -nodefaults -nographic -machine pseries -accel kvm -machine cap-cfpc=broken -machine cap-sbbc=broken -machine cap-ibs=fixed-ibs
qemu-system-ppc64: Requested safe indirect branch capability level not supported by kvm, try appending -machine cap-ibs=broken
$ ppc64-softmmu/qemu-system-ppc64 -nodefaults -nographic -machine pseries -accel kvm -machine cap-cfpc=broken -machine cap-sbbc=broken -machine cap-ibs=fixed-ccd
qemu-system-ppc64: Requested safe indirect branch capability level not supported by kvm, try appending -machine cap-ibs=broken
$ ppc64-softmmu/qemu-system-ppc64 -nodefaults -nographic -machine pseries -accel kvm -machine cap-cfpc=broken -machine cap-sbbc=broken -machine cap-ibs=fixed-na
qemu-system-ppc64: Requested safe indirect branch capability level not supported by kvm, try appending -machine cap-ibs=broken
$ ppc64-softmmu/qemu-system-ppc64 -nodefaults -nographic -machine pseries -accel kvm -machine cap-cfpc=broken -machine cap-sbbc=broken -machine cap-ibs=broken
KVM: Failed to create TCE64 table for liobn 0x80000000
result: instructions can be followed.
v3 Hint, and not all messages, (can't use error_append_hint on
error_fatal) from Greg Kurz
v2 Improved error message thanks David Gibson
---
hw/ppc/spapr_caps.c | 44 ++++++++++++++++++++++++++++++--------------
1 file changed, 30 insertions(+), 14 deletions(-)
diff --git a/hw/ppc/spapr_caps.c b/hw/ppc/spapr_caps.c
index bbb001f84a..b06faee7f6 100644
--- a/hw/ppc/spapr_caps.c
+++ b/hw/ppc/spapr_caps.c
@@ -37,6 +37,8 @@
#include "hw/ppc/spapr.h"
+#define CAPABILITY_HINT(X) " try appending -machine " X
+
typedef struct SpaprCapPossible {
int num; /* size of vals array below */
const char *help; /* help text for vals */
@@ -194,10 +196,12 @@ static void cap_htm_apply(SpaprMachineState *spapr, uint8_t val, Error **errp)
}
if (tcg_enabled()) {
error_setg(errp,
- "No Transactional Memory support in TCG, try cap-htm=off");
+ "No Transactional Memory support in TCG,"
+ CAPABILITY_HINT("cap-htm=off"));
} else if (kvm_enabled() && !kvmppc_has_cap_htm()) {
error_setg(errp,
-"KVM implementation does not support Transactional Memory, try cap-htm=off"
+"KVM implementation does not support Transactional Memory,"
+ CAPABILITY_HINT("cap-htm=off")
);
}
}
@@ -215,7 +219,8 @@ static void cap_vsx_apply(SpaprMachineState *spapr, uint8_t val, Error **errp)
* rid of anything that doesn't do VMX */
g_assert(env->insns_flags & PPC_ALTIVEC);
if (!(env->insns_flags2 & PPC2_VSX)) {
- error_setg(errp, "VSX support not available, try cap-vsx=off");
+ error_setg(errp, "VSX support not available,"
+ CAPABILITY_HINT("cap-vsx=off"));
}
}
@@ -229,7 +234,8 @@ static void cap_dfp_apply(SpaprMachineState *spapr, uint8_t val, Error **errp)
return;
}
if (!(env->insns_flags2 & PPC2_DFP)) {
- error_setg(errp, "DFP support not available, try cap-dfp=off");
+ error_setg(errp, "DFP support not available,"
+ CAPABILITY_HINT("cap-dfp=off"));
}
}
@@ -253,7 +259,8 @@ static void cap_safe_cache_apply(SpaprMachineState *spapr, uint8_t val,
cap_cfpc_possible.vals[val]);
} else if (kvm_enabled() && (val > kvm_val)) {
error_setg(errp,
-"Requested safe cache capability level not supported by kvm, try cap-cfpc=%s",
+ "Requested safe cache capability level not supported by kvm,"
+ CAPABILITY_HINT("cap-cfpc=%s"),
cap_cfpc_possible.vals[kvm_val]);
}
@@ -281,7 +288,8 @@ static void cap_safe_bounds_check_apply(SpaprMachineState *spapr, uint8_t val,
cap_sbbc_possible.vals[val]);
} else if (kvm_enabled() && (val > kvm_val)) {
error_setg(errp,
-"Requested safe bounds check capability level not supported by kvm, try cap-sbbc=%s",
+"Requested safe bounds check capability level not supported by kvm,"
+ CAPABILITY_HINT("cap-sbbc=%s"),
cap_sbbc_possible.vals[kvm_val]);
}
@@ -312,7 +320,8 @@ static void cap_safe_indirect_branch_apply(SpaprMachineState *spapr,
cap_ibs_possible.vals[val]);
} else if (kvm_enabled() && (val > kvm_val)) {
error_setg(errp,
-"Requested safe indirect branch capability level not supported by kvm, try cap-ibs=%s",
+"Requested safe indirect branch capability level not supported by kvm,"
+ CAPABILITY_HINT("cap-ibs=%s"),
cap_ibs_possible.vals[kvm_val]);
}
@@ -401,11 +410,13 @@ static void cap_nested_kvm_hv_apply(SpaprMachineState *spapr,
if (tcg_enabled()) {
error_setg(errp,
- "No Nested KVM-HV support in tcg, try cap-nested-hv=off");
+ "No Nested KVM-HV support in tcg,"
+ CAPABILITY_HINT("cap-nested-hv=off"));
} else if (kvm_enabled()) {
if (!kvmppc_has_cap_nested_kvm_hv()) {
error_setg(errp,
-"KVM implementation does not support Nested KVM-HV, try cap-nested-hv=off");
+"KVM implementation does not support Nested KVM-HV,"
+ CAPABILITY_HINT("cap-nested-hv=off"));
} else if (kvmppc_set_cap_nested_kvm_hv(val) < 0) {
error_setg(errp,
"Error enabling cap-nested-hv with KVM, try cap-nested-hv=off");
@@ -435,10 +446,12 @@ static void cap_large_decr_apply(SpaprMachineState *spapr,
if (!kvm_nr_bits) {
error_setg(errp,
- "No large decrementer support, try cap-large-decr=off");
+ "No large decrementer support,"
+ CAPABILITY_HINT("cap-large-decr=off"));
} else if (pcc->lrg_decr_bits != kvm_nr_bits) {
error_setg(errp,
-"KVM large decrementer size (%d) differs to model (%d), try -cap-large-decr=off",
+"KVM large decrementer size (%d) differs to model (%d),"
+ CAPABILITY_HINT("cap-large-decr=off"),
kvm_nr_bits, pcc->lrg_decr_bits);
}
}
@@ -454,7 +467,8 @@ static void cap_large_decr_cpu_apply(SpaprMachineState *spapr,
if (kvm_enabled()) {
if (kvmppc_enable_cap_large_decr(cpu, val)) {
error_setg(errp,
- "No large decrementer support, try cap-large-decr=off");
+ "No large decrementer support,"
+ CAPABILITY_HINT("cap-large-decr=off"));
}
}
@@ -474,10 +488,12 @@ static void cap_ccf_assist_apply(SpaprMachineState *spapr, uint8_t val,
if (tcg_enabled() && val) {
/* TODO - for now only allow broken for TCG */
error_setg(errp,
-"Requested count cache flush assist capability level not supported by tcg, try cap-ccf-assist=off");
+"Requested count cache flush assist capability level not supported by tcg,"
+ CAPABILITY_HINT("cap-ccf-assist=off"));
} else if (kvm_enabled() && (val > kvm_val)) {
error_setg(errp,
-"Requested count cache flush assist capability level not supported by kvm, try cap-ccf-assist=off");
+"Requested count cache flush assist capability level not supported by kvm,"
+ CAPABILITY_HINT("cap-ccf-assist=off"));
}
}
--
2.21.0
next reply other threads:[~2019-08-05 5:10 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-05 5:09 Daniel Black [this message]
2019-08-09 4:58 ` [Qemu-devel] [PATCH v3] spapr: quantify error messages regarding capability settings David Gibson
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=20190805050959.19935-1-daniel@linux.ibm.com \
--to=daniel@linux.ibm.com \
--cc=david@gibson.dropbear.id.au \
--cc=groug@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.