Skip to contentSkip to conversation

x86/ioapic: Return suitable error code in mp_map_gsi_to_irq()

PATCH Superseded Andy Shevchenko 2 participants 3 messages Jan 16, 2017 x86

v1 of 4 Superseded Latest is v4 →

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 x86/ioapic: Return suitable error code in mp_map_gsi_to_irq()

mp_map_gsi_to_irq() in some cases might return legacy -1, which would be wrongly interpreted as -EPERM.

Correct those cases to return proper error codes.

---
 arch/x86/kernel/apic/io_apic.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
arch/x86/kernel/apic/io_apic.c +2 -2
index 945e512a112a..99cee86b7d17 100644
@@ -1107,12 +1107,12 @@ int mp_map_gsi_to_irq(u32 gsi, unsigned int flags, struct irq_alloc_info *info)
 
 	ioapic = mp_find_ioapic(gsi);
 	if (ioapic < 0)
-		return -1;
+		return -EINVAL;
 
 	pin = mp_find_ioapic_pin(ioapic, gsi);
 	idx = find_irq_entry(ioapic, pin, mp_INT);
 	if ((flags & IOAPIC_MAP_CHECK) && idx < 0)
-		return -1;
+		return -ENODEV;
 
 	return mp_map_pin_to_irq(gsi, idx, ioapic, pin, flags, info);
 }
Signature · 1 line
2.11.0
#1 lore raw
Quoted 27 lines · Andy Shevchenko

mp_map_gsi_to_irq() in some cases might return legacy -1, which would be
wrongly interpreted as -EPERM.

Correct those cases to return proper error codes.

---
 arch/x86/kernel/apic/io_apic.c | 4 ++--

 1 file changed, 2 insertions(+), 2 deletions(-)
arch/x86/kernel/apic/io_apic.c +0 -0
index 945e512a112a..99cee86b7d17 100644
@@ -1107,12 +1107,12 @@ int mp_map_gsi_to_irq(u32 gsi, unsigned int
 flags, struct irq_alloc_info *info)


  ioapic = mp_find_ioapic(gsi);
  if (ioapic < 0)

arch/x86/kernel/apic/io_apic.c +1 -1
-		return -1;
+		return -EINVAL;


  pin = mp_find_ioapic_pin(ioapic, gsi); idx = find_irq_entry(ioapic, pin, mp_INT); if ((flags & IOAPIC_MAP_CHECK) && idx < 0)

arch/x86/kernel/apic/io_apic.c

Quoted 2 lines
arch/x86/kernel/apic/io_apic.c +1 -1
-		return -1;
+		return -ENODEV;

Looking one more time...
Or should it be other way around: -ENODEV (ioapic < 0), -EINVAL (here)?

Quoted 3 lines


  return mp_map_pin_to_irq(gsi, idx, ioapic, pin, flags, info); }

Signature · 2 lines
Andy Shevchenko <[email protected]>
Intel Finland Oy
#2 lore raw
Quoted 25 lines · Andy Shevchenko
Quoted 24 lines · Andy Shevchenko

mp_map_gsi_to_irq() in some cases might return legacy -1, which would be
wrongly interpreted as -EPERM.

Correct those cases to return proper error codes.

---
 arch/x86/kernel/apic/io_apic.c | 4 ++--

 1 file changed, 2 insertions(+), 2 deletions(-)
arch/x86/kernel/apic/io_apic.c +0 -0
index 945e512a112a..99cee86b7d17 100644
@@ -1107,12 +1107,12 @@ int mp_map_gsi_to_irq(u32 gsi, unsigned int
 flags, struct irq_alloc_info *info)


  ioapic = mp_find_ioapic(gsi);
  if (ioapic < 0)

arch/x86/kernel/apic/io_apic.c +1 -1
-		return -1;
+		return -EINVAL;

Quoted 8 lines

arch/x86/kernel/apic/io_apic.c

Quoted 5 lines

  pin = mp_find_ioapic_pin(ioapic, gsi); idx = find_irq_entry(ioapic, pin, mp_INT); if ((flags & IOAPIC_MAP_CHECK) && idx < 0)

arch/x86/kernel/apic/io_apic.c +1 -1
-		return -1;
+		return -ENODEV;

Looking one more time...
Or should it be other way around: -ENODEV (ioapic < 0), -EINVAL (here)?

ENODEV for both cases I think,