Thread (9 messages) 9 messages, 3 authors, 2021-06-18

Re: [PATCH v6 1/2] x86/sev: Make sure IRQs are disabled while GHCB is active

From: Peter Zijlstra <peterz@infradead.org>
Date: 2021-06-17 15:02:35
Also in: kvm, lkml, virtualization

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?
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help