Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751778AbdIOM0s (ORCPT ); Fri, 15 Sep 2017 08:26:48 -0400 Received: from mx1.redhat.com ([209.132.183.28]:43504 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751735AbdIOM0q (ORCPT ); Fri, 15 Sep 2017 08:26:46 -0400 DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 2DB2461462 Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=eric.auger@redhat.com Subject: Re: [RFC] KVM: arm/arm64: Introduce KVM_DEV_ARM_ITS_CTRL_RESET To: Marc Zyngier References: <1505379448-19583-1-git-send-email-eric.auger@redhat.com> <864ls5rz0h.fsf@arm.com> Cc: eric.auger.pro@gmail.com, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, cdall@linaro.org, peter.maydell@linaro.org, andre.przywara@arm.com, wanghaibin.wang@huawei.com, wu.wubin@huawei.com From: Auger Eric Message-ID: <2bb2cec8-ff29-e5e7-59dc-727924a51898@redhat.com> Date: Fri, 15 Sep 2017 14:26:41 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 In-Reply-To: <864ls5rz0h.fsf@arm.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Fri, 15 Sep 2017 12:26:46 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1693 Lines: 47 Hi, On 14/09/2017 19:06, Marc Zyngier wrote: > On Thu, Sep 14 2017 at 10:57:28 am BST, Eric Auger wrote: >> At the moment, the in-kernel emulated ITS is not properly reset. >> On guest restart/reset some registers keep their old values and >> internal structures like device, ITE, collection lists are not emptied. >> >> This may lead to various bugs. Among them, we can have incorrect state >> backup or failure when saving the ITS state at early guest boot stage. >> >> This patch introduces a new attribute, KVM_DEV_ARM_ITS_CTRL_RESET in >> the KVM_DEV_ARM_VGIC_GRP_CTRL group. >> >> Upon this action, we can invalidate the various memory structures >> pointed by GITS_BASERn and GITS_CBASER, free the ITS internal caches >> and reset the relevant registers. >> >> Signed-off-by: Eric Auger >> >> --- >> >> An alternative would consist in having the userspace writing >> individual registers with default values: GITS_BASERn, GITS_CBASER >> and GITS_CTLR. On kernel side we would reset related lists when >> detecting the valid bit is set to false. > > I'm not sure this is necessarily a "either/or" situation. It looks to me > that we're not completely doing the right thing when writing to the > GITS_BASER registers, and that writing a new value (with the valid bit > set or not) should have an action of some sort on the fate of the > existing mappings. I agree. I think whenever the GITS_BASERn or GITS_CBASER validity bit is reset, we should empty the internal lists and assure the code does not attempt to read the data structures in caches/RAM anymore. I will follow up with some patches. Thanks Eric > > Thoughts? > > M. >