[PATCH 2/2] ARM: hyp: simplify __hyp_stub_install epilog
dave.martin at linaro.org
Mon Jan 7 08:49:06 EST 2013
On Mon, Jan 07, 2013 at 01:27:51PM +0000, Marc Zyngier wrote:
> On 07/01/13 12:18, Dave Martin wrote:
> > On Fri, Jan 04, 2013 at 05:44:15PM +0000, Marc Zyngier wrote:
> >> __hyp_stub_install duplicates quite a bit of safe_svcmode_maskall
> >> by forcing the CPU back to SVC. This is unnecessary, as
> >> safe_svcmode_maskall is called just after.
> >> Furthermore, the way we build SPSR_hyp is buggy as we fail to mask
> >> the interrupts, leading to interesting behaviours on TC2 + UEFI.
> >> The fix is to simply remove this code and rely on safe_svcmode_maskall
> >> to do the right thing.
> >> Cc: Dave Martin <dave.martin at linaro.org>
> >> Reported-by: Harry Liebel <harry.liebel at arm.com>
> >> Signed-off-by: Marc Zyngier <marc.zyngier at arm.com>
> > Although there is clearly a bug here, it looks like interrupts will
> > promptly get masked afterwards due to save_svcmode_maskall. This would
> > only fail if there is an interrupts asserted during this hazard ...?
> That's exactly the failure case. It's been observed on TC2 with UEFI,
> where the secondaries are woken up with a SGI. When they get out of WFI,
> the interrupt is still pending. After reaching this code and doing an
> eret, the interrupt fires immediately, with deadly consequences.
Ah right. In which case we also have good evidence that the proposed
fix fixes it.
More information about the linux-arm-kernel