On Wed, Jun 16, 2021 at 08:49:12PM +0200, Joerg Roedel wrote:
quoted hunk ↗ jump to hunk
static void sev_es_ap_hlt_loop(void)
{
struct ghcb_state state;
+ unsigned long flags;
struct ghcb *ghcb;
- ghcb = sev_es_get_ghcb(&state);
+ local_irq_save(flags);
+
+ ghcb = __sev_get_ghcb(&state);
while (true) {
vc_ghcb_invalidate(ghcb);@@ -692,7 +704,9 @@ static void sev_es_ap_hlt_loop(void)
break;
}
- sev_es_put_ghcb(&state);
+ __sev_put_ghcb(&state);
+
+ local_irq_restore(flags);
}
I think this is broken, at this point RCU is quite dead on this CPU and
local_irq_save/restore include tracing and all sorts.
Also, shouldn't IRQs already be disabled by the time we get here?
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization