Skip to contentSkip to conversation

apic: Make APIC ID limit error message clearer

PATCH In review Eduardo Habkost 3 participants 4 messages Nov 26, 2018 – Dec 5, 2018

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 apic: Make APIC ID limit error message clearer

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
  Possible solutions:
  * Lowering the number of VCPUs on the -smp option
  * Using accel=kvm,kernel-irqchip=on or accel=kvm,kernel-irqchip=split

---
I'm not sure this is the best way to provide usage hints to the user. Any suggestions?

---
 hw/intc/apic.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
hw/intc/apic.c +5 -2
index 97ffdd820f..f08006334d 100644
@@ -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;
     }
 
Signature · 1 line
2.18.0.rc1.1.g3f1ff2140
#1 lore raw
Quoted 6 lines · Eduardo Habkost

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:

Quoted 7 lines
   $ 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

I would keep the problem "apic initialization failed" sentence. "APIC ID 255 is too large" is just the cause.

Quoted 8 lines

Possible solutions:
* Lowering the number of VCPUs on the -smp option
* Using accel=kvm,kernel-irqchip=on or accel=kvm,kernel-irqchip=split

---
I'm not sure this is the best way to provide usage hints to the user. Any suggestions?

As a noob, I can testify that this kind of suggestion is very useful although there seems to not have many on QEMU. On the other hand, I understand it can make qemu verbose and so annoy people. Thus, maybe those suggestions could be enabled/disabled via options (e.g. -show-hints)?

- Wainer

Quoted 22 lines
---
  hw/intc/apic.c | 7 +++++--
  1 file changed, 5 insertions(+), 2 deletions(-)
hw/intc/apic.c +5 -2
index 97ffdd820f..f08006334d 100644
@@ -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;
      }
 
#2 lore raw
Quoted 11 lines · Wainer dos Santos Moschetta
Quoted 9 lines · Eduardo Habkost

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
Quoted 7 lines
Quoted 4 lines

After:

   $ qemu-system-x86_64 -machine q35 -smp 256 -display none
   qemu-system-x86_64: APIC ID 255 is too large

I would keep the problem "apic initialization failed" sentence. "APIC ID 255 is too large" is just the cause.

I'm not sure I agree. "APIC initialization failed" doesn't convey any useful information to the user, does it?

Quoted 10 lines
Quoted 9 lines

Possible solutions:
* Lowering the number of VCPUs on the -smp option
* Using accel=kvm,kernel-irqchip=on or accel=kvm,kernel-irqchip=split

---
I'm not sure this is the best way to provide usage hints to the user. Any suggestions?

Quoted 4 lines

As a noob, I can testify that this kind of suggestion is very useful although there seems to not have many on QEMU. On the other hand, I understand it can make qemu verbose and so annoy people. Thus, maybe those suggestions could be enabled/disabled via options (e.g. -show-hints)?

I can't imagine who would be annoyed by them.

Quoted 24 lines

- Wainer

Quoted 20 lines
---
  hw/intc/apic.c | 7 +++++--
  1 file changed, 5 insertions(+), 2 deletions(-)
hw/intc/apic.c +5 -2
index 97ffdd820f..f08006334d 100644
@@ -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;
      }
Signature · 1 line
Eduardo
#3 lore raw
Quoted 14 lines · Eduardo Habkost
Quoted 13 lines · Wainer dos Santos Moschetta
Quoted 11 lines · Eduardo Habkost

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:

Quoted 8 lines
Quoted 5 lines
Quoted 2 lines
   $ qemu-system-x86_64 -machine q35 -smp 256 -display none
   qemu-system-x86_64: APIC ID 255 is too large

I would keep the problem "apic initialization failed" sentence. "APIC ID 255 is too large" is just the cause.

I'm not sure I agree. "APIC initialization failed" doesn't convey any useful information to the user, does it?

Concur.

Quoted 9 lines
Quoted 9 lines
Quoted 8 lines

Possible solutions:
* Lowering the number of VCPUs on the -smp option
* Using accel=kvm,kernel-irqchip=on or accel=kvm,kernel-irqchip=split

---
I'm not sure this is the best way to provide usage hints to the user. Any suggestions?

Quoted 6 lines
Quoted 4 lines

As a noob, I can testify that this kind of suggestion is very useful although there seems to not have many on QEMU. On the other hand, I understand it can make qemu verbose and so annoy people. Thus, maybe those suggestions could be enabled/disabled via options (e.g. -show-hints)?

I can't imagine who would be annoyed by them.

A few lines of hints are fine. Longer than that and the error becomes hard to spot among the hints.