Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753870AbbHFOFs (ORCPT ); Thu, 6 Aug 2015 10:05:48 -0400 Received: from mx1.redhat.com ([209.132.183.28]:35345 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752741AbbHFOFr (ORCPT ); Thu, 6 Aug 2015 10:05:47 -0400 Subject: Re: [PATCH v2 4/5] KVM: add KVM_USER_EXIT vcpu ioctl for userspace exit To: =?UTF-8?B?UmFkaW0gS3LEjW3DocWZ?= References: <1438792381-19453-1-git-send-email-rkrcmar@redhat.com> <1438792381-19453-5-git-send-email-rkrcmar@redhat.com> <55C23B91.4010900@redhat.com> <20150806134415.GB31952@potion.brq.redhat.com> Cc: linux-kernel@vger.kernel.org, kvm@vger.kernel.org From: Paolo Bonzini X-Enigmail-Draft-Status: N1110 Message-ID: <55C36683.9050703@redhat.com> Date: Thu, 6 Aug 2015 15:52:03 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0 MIME-Version: 1.0 In-Reply-To: <20150806134415.GB31952@potion.brq.redhat.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1508 Lines: 41 On 06/08/2015 15:44, Radim Krčmář wrote: >> > Can we just return EINVAL if the parameter is not NULL? > It complicates handling if we extend the ioctl, but removes the useless > clearing/copying/checking now ... Yes. > The two obvious extensions are flags to skip kvm_make_request() or > kvm_vcpu_kick(), both of dubious use. Skipping kvm_make_request() would make some sense if you can set vcpu->run->request_interrupt_window asynchronously. So you could do vcpu->run->request_interrupt_window = 1; ioctl(vcpu_fd, KVM_USER_EXIT, KVM_USER_EXIT_LAZY); and only cause a lightweight vmexit if the interrupt window is currently closed. I haven't thought of any races that could happen, but it looks like it could work. Skipping kvm_vcpu_kick() makes much less sense. > Another possibility is setting up > conditional exits, but that would be better as a separate control, like > most other sophisticated extensions. > > I think that u32 flags would be sufficient -- is casting the 'unsigned > long arg' (data pointer) to a value still an accepted solution? Yeah, that would work for me as well. Also because, for now, you'd return EINVAL if the unsigned long is not zero, which boils down to "return EINVAL if the parameter is not NULL". :) Paolo -- 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/