From mboxrd@z Thu Jan 1 00:00:00 1970 From: Radim =?utf-8?B?S3LEjW3DocWZ?= Subject: Re: [PATCH v2 08/14] KVM: x86: remove notifiers from PIT discard policy Date: Fri, 19 Feb 2016 16:04:35 +0100 Message-ID: <20160219150434.GA25910@potion.brq.redhat.com> References: <1455736496-374-1-git-send-email-rkrcmar@redhat.com> <1455736496-374-9-git-send-email-rkrcmar@redhat.com> <56C6088A.5080207@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: QUOTED-PRINTABLE Cc: linux-kernel@vger.kernel.org, kvm@vger.kernel.org, Yuki Shibuya To: Paolo Bonzini Return-path: Received: from mx1.redhat.com ([209.132.183.28]:58154 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1427834AbcBSPEi (ORCPT ); Fri, 19 Feb 2016 10:04:38 -0500 Content-Disposition: inline In-Reply-To: <56C6088A.5080207@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: 2016-02-18 19:08+0100, Paolo Bonzini: > On 17/02/2016 20:14, Radim Kr=C4=8Dm=C3=A1=C5=99 wrote: >> + /* pit->pit_state.lock was overloaded to prevent userspace from ge= tting >> + * an inconsistent state after running multiple KVM_REINJECT_CONTR= OL >> + * ioctls in parallel. Use a separate lock if that ioctl isn't ra= re. >> + */ >> + mutex_lock(&pit->pit_state.lock); >> + kvm_pit_set_reinject(pit, control->pit_reinject); >> + mutex_unlock(&pit->pit_state.lock); >=20 > ... so in patch 7 concurrent _writes_ of reinject are protected by th= e > lock, but reads are done outside it (in pit_timer_fn). WDYT about > making reinject an atomic_t? There was/is no harm in having reinject non-atomic. This patch added notifiers, which is the reason for re-introducing a mutex. Userspace can (and SHOULDN'T) call this function multiple times, concurrently, so the mutex prevents a situations where, e.g. only one notifier is registered in the end. I thought about really stupid stuff when doing this series ...