Remove the "apic initialization failed" prefix (it conveys no
useful information), replace "invalid" with "too large", and add
an error hint with two possible solutions for the problem.
Before:
$ qemu-system-x86_64 -machine q35 -smp 256
qemu-system-x86_64: apic initialization failed. APIC ID 255 is invalid
After:
$ qemu-system-x86_64 -machine q35 -smp 256 -display none
qemu-system-x86_64: APIC ID 255 is too large
---
hw/intc/apic.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/hw/intc/apic.c b/hw/intc/apic.c
index 97ffdd820f..f08006334d 100644
--- a/hw/intc/apic.c
+++ b/hw/intc/apic.c
@@ -886,8 +886,11 @@ static void apic_realize(DeviceState *dev, Error **errp)
APICCommonState *s = APIC(dev);
if (s->id >= MAX_APICS) {
- error_setg(errp, "%s initialization failed. APIC ID %d is invalid",
- object_get_typename(OBJECT(dev)), s->id);
+ error_setg(errp, "APIC ID %d is too large", s->id);
+ error_append_hint(errp,
+ "Possible solutions:\n"
+ "* Lowering the number of VCPUs on the -smp option\n"
+ "* Using accel=kvm,kernel-irqchip=on or
accel=kvm,kernel-irqchip=split\n");
return;
}