On Wed, May 13, 2020 at 07:28:34PM -0400, Mathieu Desnoyers wrote:
> ----- On May 5, 2020, at 9:16 AM, Thomas Gleixner [email protected] wrote:
> 
> > +#define arch_nmi_enter()                                           \
> [...]                                                 \
> > +   ___hcr = read_sysreg(hcr_el2);                                  \
> > +   if (!(___hcr & HCR_TGE)) {                                      \
> > +           write_sysreg(___hcr | HCR_TGE, hcr_el2);                \
> > +           isb();                                                  \
> 
> Why is there an isb() above ^ ....
> 
> > +   }                                                               \
> > +   /*                                                              \
> [...]
> > -#define arch_nmi_exit()                                                    
> >         \
> [...]
> > +   /*                                                              \
> > +    * Make sure ___ctx->cnt release is visible before we           \
> > +    * restore the sysreg. Otherwise a new NMI occurring            \
> > +    * right after write_sysreg() can be fooled and think           \
> > +    * we secured things for it.                                    \
> > +    */                                                             \
> > +   barrier();                                                      \
> > +   if (!___ctx->cnt && !(___hcr & HCR_TGE))                        \
> > +           write_sysreg(___hcr, hcr_el2);                          \
> 
> And not here ?

I have to defer to Will on this detail...

Reply via email to