@@ -6,7 +6,6 @@
#include <hyp/adjust_pc.h>
-#include <linux/compiler.h>
#include <linux/irqchip/arm-gic-v3.h>
#include <linux/kvm_host.h>
@@ -55,7 +54,7 @@ static u64 __gic_v3_get_lr(unsigned int lr)
return read_gicreg(ICH_LR15_EL2);
}
- unreachable();
+ return -EINVAL;
}
static void __gic_v3_set_lr(u64 val, int lr)
@@ -166,7 +165,7 @@ static u32 __vgic_v3_read_ap0rn(int n)
val = read_gicreg(ICH_AP0R3_EL2);
break;
default:
- unreachable();
+ val = -EINVAL;
}
return val;
@@ -190,7 +189,7 @@ static u32 __vgic_v3_read_ap1rn(int n)
val = read_gicreg(ICH_AP1R3_EL2);
break;
default:
- unreachable();
+ val = -EINVAL;
}
return val;
@@ -475,7 +475,7 @@ static u32 __gic_get_ppi_index(irq_hw_number_t hwirq)
case EPPI_RANGE:
return hwirq - EPPI_BASE_INTID + 16;
default:
- unreachable();
+ return -EINVAL;
}
}
Using unreachable() at end of function generates an extra NOP for .unreachable section. It can confuse objtool to warn this NOP as fall through instruction. Considering that these branches are actually unreachable, replace unreachable() with returning a -EINVAL value. Signed-off-by: Chen Zhongjin <chenzhongjin@huawei.com> --- arch/arm64/kvm/hyp/vgic-v3-sr.c | 7 +++---- drivers/irqchip/irq-gic-v3.c | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-)