On Mon, 13 Mar 2017, Wei Chen wrote: > If there is a pending SError while we're returning from trap. If the > SError handle option is "DIVERSE", we have to prevent slipping this > hypervisor SError to guest. So we have to use the dsb/isb to guarantee > that the pending hypervisor SError would be caught in hypervisor before > return to guest. > > Signed-off-by: Wei Chen <wei.c...@arm.com>
Reviewed-by: Stefano Stabellini <sstabell...@kernel.org> > --- > xen/arch/arm/traps.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/xen/arch/arm/traps.c b/xen/arch/arm/traps.c > index b8c8389..3b84e80 100644 > --- a/xen/arch/arm/traps.c > +++ b/xen/arch/arm/traps.c > @@ -2953,6 +2953,16 @@ asmlinkage void leave_hypervisor_tail(void) > local_irq_disable(); > if (!softirq_pending(smp_processor_id())) { > gic_inject(); > + > + /* > + * If the SErrors handle option is "DIVERSE", we have to prevent > + * slipping the hypervisor SError to guest. So before returning > + * from trap, we use the synchronize_serror to guarantee that the > + * pending SError would be caught in hypervisor. > + */ > + if ( serrors_op == SERRORS_DIVERSE ) > + synchronize_serror(); > + > WRITE_SYSREG(current->arch.hcr_el2, HCR_EL2); > return; > } > -- > 2.7.4 > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > https://lists.xen.org/xen-devel > _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org https://lists.xen.org/xen-devel