Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934091AbdIYJNY (ORCPT ); Mon, 25 Sep 2017 05:13:24 -0400 Received: from merlin.infradead.org ([205.233.59.134]:40524 "EHLO merlin.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932627AbdIYJNW (ORCPT ); Mon, 25 Sep 2017 05:13:22 -0400 Date: Mon, 25 Sep 2017 11:13:16 +0200 From: Peter Zijlstra To: Marcelo Tosatti Cc: Paolo Bonzini , Konrad Rzeszutek Wilk , mingo@redhat.com, kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Thomas Gleixner Subject: Re: [patch 3/3] x86: kvm guest side support for KVM_HC_RT_PRIO hypercall Message-ID: <20170925091316.bnwpiscs2bvpdxk5@hirez.programming.kicks-ass.net> References: <20170921113835.031375194@redhat.com> <20170922011039.GB20133@amt.cnet> <20170922100004.ydmaxvgpc2zx7j25@hirez.programming.kicks-ass.net> <20170922105609.deln6kylvvpaijg7@hirez.programming.kicks-ass.net> <20170922123305.GB29608@amt.cnet> <20170922125556.cyzybj6c7jqypbmo@hirez.programming.kicks-ass.net> <951aaa3f-b20d-6f67-9454-f193f4445fc7@redhat.com> <20170923134114.qdfdegrd6afqrkut@hirez.programming.kicks-ass.net> <855950672.7912001.1506258344142.JavaMail.zimbra@redhat.com> <20170925025751.GB30813@amt.cnet> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170925025751.GB30813@amt.cnet> User-Agent: NeoMutt/20170609 (1.8.3) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1081 Lines: 31 On Sun, Sep 24, 2017 at 11:57:53PM -0300, Marcelo Tosatti wrote: > I think you are missing the following point: > > "vcpu0 can be interrupted when its not in a spinlock protected section, > otherwise it can't." > > So you _have_ to communicate to the host when the guest enters/leaves a > critical section. > > So this point of "everything needs to be RT and the priorities must be > designed carefully", is this: > > WHEN in spinlock protected section (more specifically, when > spinlock protected section _shared with realtime vcpus_), > > priority of vcpu0 > priority of emulator thread > > OTHERWISE > > priority of vcpu0 < priority of emulator thread. > > (*) > > So emulator thread can interrupt and inject interrupts to vcpu0. spinlock protected regions are not everything. What about lock-free constructs where CPU's spin-wait on one another (there's plenty). And I'm clearly ignorant of how this emulation thread works, but why would it run for a long time? Either it is needed for forward progress of the VCPU or its not. If its not, it shouldn't run.