Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756804Ab0BXLnN (ORCPT ); Wed, 24 Feb 2010 06:43:13 -0500 Received: from thoth.sbs.de ([192.35.17.2]:18591 "EHLO thoth.sbs.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756704Ab0BXLnM (ORCPT ); Wed, 24 Feb 2010 06:43:12 -0500 Message-ID: <4B8510BC.4060201@siemens.com> Date: Wed, 24 Feb 2010 12:42:52 +0100 From: Jan Kiszka User-Agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.8.1.12) Gecko/20080226 SUSE/2.0.0.12-1.1 Thunderbird/2.0.0.12 Mnenhy/0.7.5.666 MIME-Version: 1.0 To: Avi Kivity CC: Thomas Gleixner , KVM , Gleb Natapov , RT , Linux Kernel Mailing List Subject: Re: [PATCH] KVM: x86: Kick VCPU outside PIC lock again References: <20100217135901.331576359@linutronix.de> <4B842A1F.50601@siemens.com> <4B84F466.2080009@siemens.com> <4B84F5D4.5020202@redhat.com> <4B84F765.5040209@siemens.com> <4B84F9AF.8060804@redhat.com> <4B84FBDB.1070006@siemens.com> <4B84FCBB.8070702@redhat.com> <4B84FDF5.5080106@siemens.com> <4B84FF5C.5090603@siemens.com> <4B850266.3070706@redhat.com> In-Reply-To: <4B850266.3070706@redhat.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2000 Lines: 59 Avi Kivity wrote: > On 02/24/2010 12:28 PM, Jan Kiszka wrote: >> Jan Kiszka wrote: >> >>> Avi Kivity wrote: >>> >>>> On 02/24/2010 12:13 PM, Jan Kiszka wrote: >>>> >>>>> >>>>>> I see. Won't we hit the same issue when we call pic functions from >>>>>> atomic context during the guest entry sequence? >>>>>> >>>>>> >>>>>> >>>>> If there are such call paths, for sure. What concrete path(s) do you >>>>> have in mind? >>>>> >>>>> >>>>> >>>> vcpu_enter_guest() -> inject_pending_event() -> >>>> kvm_cpu_{has,get}_interrupt() -> various pic functions if you're unlucky. >>>> >>> But do they kick anyone or just check/pull information? Never saw any >>> warnings during my tests last year (granted: with older -rt and kvm >>> versions). >>> >> Mmh, they could if there is> 1 IRQ pending. Guess this just never >> triggered in real life due to typical APIC use and low IRQ load during >> PIC times in my tests. >> > > We could just ignore the wakeup in this path. It's called in vcpu > context, so obviously the vcpu is awake and kicking it will only hurt > your feet. Looking at kvm_vcpu_kick, this already happens: The wake queue is checked for pending waiters (ie. non if waking ourself), and no IPI is sent if we run on the same CPU like the VCPU is on. That explains why this path is practically safe. > > Longer term, we should clear up this mess. One possible path is to move > the pic/lapic/injection stuff out of the the critical section, and use > vcpu->requests to close the race between querying the pic/lapic and > entering the guest. > Sounds worthwhile as well. Jan -- Siemens AG, Corporate Technology, CT T DE IT 1 Corporate Competence Center Embedded Linux -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/