Skip to content

Commit

Permalink
powerpc/64s: Merge HV and non-HV paths for doorbell IRQ replay
Browse files Browse the repository at this point in the history
This results in smaller code, and fewer branches. This relies on the
fact that both the 0xe80 and 0xa00 handlers call the same upper level
code, namely doorbell_exception().

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
[mpe: Mention we rely on the implementation of the 0xe80/0xa00 handlers]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
  • Loading branch information
Nicholas Piggin authored and Michael Ellerman committed Aug 23, 2017
1 parent 6f881ea commit d6f73fc
Showing 3 changed files with 2 additions and 8 deletions.
6 changes: 1 addition & 5 deletions arch/powerpc/kernel/entry_64.S
Original file line number Diff line number Diff line change
@@ -966,11 +966,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_HAS_PPR)
#ifdef CONFIG_PPC_BOOK3E
cmpwi cr0,r3,0x280
#else
BEGIN_FTR_SECTION
cmpwi cr0,r3,0xe80
FTR_SECTION_ELSE
cmpwi cr0,r3,0xa00
ALT_FTR_SECTION_END_IFSET(CPU_FTR_HVMODE)
cmpwi cr0,r3,0xa00
#endif /* CONFIG_PPC_BOOK3E */
bne 1f
addi r3,r1,STACK_FRAME_OVERHEAD;
2 changes: 1 addition & 1 deletion arch/powerpc/kernel/exceptions-64s.S
Original file line number Diff line number Diff line change
@@ -1676,7 +1676,7 @@ _GLOBAL(__replay_interrupt)
cmpwi r3,0x500
beq hardware_interrupt_common
BEGIN_FTR_SECTION
cmpwi r3,0xe80
cmpwi r3,0xa00
beq h_doorbell_common_msgclr
cmpwi r3,0xea0
beq h_virt_irq_common
2 changes: 0 additions & 2 deletions arch/powerpc/kernel/irq.c
Original file line number Diff line number Diff line change
@@ -207,8 +207,6 @@ notrace unsigned int __check_irq_replay(void)
#else
if (happened & PACA_IRQ_DBELL) {
local_paca->irq_happened &= ~PACA_IRQ_DBELL;
if (cpu_has_feature(CPU_FTR_HVMODE))
return 0xe80;
return 0xa00;
}
#endif /* CONFIG_PPC_BOOK3E */

0 comments on commit d6f73fc

Please sign in to comment.