[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen master] xen/arm: Prevent slipping hypervisor SError to guest



commit 70f18ea64a1d614d52989612155273b713114bbc
Author:     Wei Chen <Wei.Chen@xxxxxxx>
AuthorDate: Wed Apr 5 17:09:20 2017 +0800
Commit:     Stefano Stabellini <sstabellini@xxxxxxxxxx>
CommitDate: Wed Apr 5 12:15:15 2017 -0700

    xen/arm: Prevent slipping hypervisor SError to guest
    
    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.
    
    In previous patch, we will set SKIP_SYNCHRONIZE_SERROR_ENTRY_EXIT to
    cpu_hwcaps when option is NOT "DIVERSE". This means we can use the
    alternative to skip synchronizing SErrors for other SErrors handle options.
    
    Because we have umasked the Abort/SError bit in previous patch. We have
    to disable the Abort/SError before returning to guest as we have done
    for IRQ.
    
    Signed-off-by: Wei Chen <Wei.Chen@xxxxxxx>
    Reviewed-by: Julien Grall <julien.grall@xxxxxxx>
---
 xen/arch/arm/traps.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/xen/arch/arm/traps.c b/xen/arch/arm/traps.c
index c092e66..c8163db 100644
--- a/xen/arch/arm/traps.c
+++ b/xen/arch/arm/traps.c
@@ -2989,6 +2989,19 @@ 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. In this option, before
+             * returning from trap, we have to synchronize SErrors to guarantee
+             * that the pending SError would be caught in hypervisor.
+             *
+             * If option is NOT "DIVERSE", SKIP_SYNCHRONIZE_SERROR_ENTRY_EXIT
+             * will be set to cpu_hwcaps. This means we can use the alternative
+             * to skip synchronizing SErrors for other SErrors handle options.
+             */
+            SYNCHRONIZE_SERROR(SKIP_SYNCHRONIZE_SERROR_ENTRY_EXIT);
+
             return;
         }
         local_irq_enable();
--
generated by git-patchbot for /home/xen/git/xen.git#master

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
https://lists.xenproject.org/xen-changelog

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.