summaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel/exceptions-64s.S
diff options
context:
space:
mode:
authorNicholas Piggin2017-08-11 18:39:04 +0200
committerMichael Ellerman2017-08-23 15:15:23 +0200
commite6c1203d5ce9b3bd36a7951bc7f075b8db4ba971 (patch)
treeb01d88fb1db0e9b8e498fd323c27e891e2300f77 /arch/powerpc/kernel/exceptions-64s.S
parentpowerpc/64s: Merge HV and non-HV paths for doorbell IRQ replay (diff)
downloadkernel-qcow2-linux-e6c1203d5ce9b3bd36a7951bc7f075b8db4ba971.tar.gz
kernel-qcow2-linux-e6c1203d5ce9b3bd36a7951bc7f075b8db4ba971.tar.xz
kernel-qcow2-linux-e6c1203d5ce9b3bd36a7951bc7f075b8db4ba971.zip
powerpc/64s: Use the HV handler for external IRQ replay in HV mode on POWER9
POWER9 host external interrupts use the h_virt_irq_common handler, so use that to replay them rather than using the hardware_interrupt_common handler. Both call do_IRQ, but using the correct handler reduces i-cache footprint. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'arch/powerpc/kernel/exceptions-64s.S')
-rw-r--r--arch/powerpc/kernel/exceptions-64s.S4
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S
index ab1dc98b73d0..72098638b0b9 100644
--- a/arch/powerpc/kernel/exceptions-64s.S
+++ b/arch/powerpc/kernel/exceptions-64s.S
@@ -1674,7 +1674,11 @@ _GLOBAL(__replay_interrupt)
cmpwi r3,0x900
beq decrementer_common
cmpwi r3,0x500
+BEGIN_FTR_SECTION
+ beq h_virt_irq_common
+FTR_SECTION_ELSE
beq hardware_interrupt_common
+ALT_FTR_SECTION_END_IFSET(CPU_FTR_HVMODE | CPU_FTR_ARCH_300)
BEGIN_FTR_SECTION
cmpwi r3,0xa00
beq h_doorbell_common_msgclr