From f29053373b38021dbe183ac77b13e7649d0a8054 Mon Sep 17 00:00:00 2001 From: David Woodhouse Date: Wed, 14 Dec 2022 21:50:41 +0000 Subject: [PATCH] i386/xen: Implement SCHEDOP_poll Just a dummy implementation which will sched_yield(), but it's enough to stop the Linux guest panicking when running on a host kernel which doesn't intercept SCHEDOP_poll and lets it reach userspace. Signed-off-by: David Woodhouse --- target/i386/kvm/xen-emu.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/target/i386/kvm/xen-emu.c b/target/i386/kvm/xen-emu.c index 055afba627..a8c953e3ca 100644 --- a/target/i386/kvm/xen-emu.c +++ b/target/i386/kvm/xen-emu.c @@ -919,6 +919,17 @@ static bool kvm_xen_hcall_sched_op(struct kvm_xen_exit *exit, X86CPU *cpu, err = schedop_shutdown(cs, arg); break; + case SCHEDOP_poll: + /* + * Linux will panic if this doesn't work. Just yield; it's not + * worth overthinking it because wWith event channel handling + * in KVM, the kernel will intercept this and it will never + * reach QEMU anyway. + */ + sched_yield(); + err = 0; + break; + default: return false; } -- 2.50.1