From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.3 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id EE8D6C4332B for ; Mon, 23 Mar 2020 12:40:57 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id CBB9D20663 for ; Mon, 23 Mar 2020 12:40:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728095AbgCWMk4 (ORCPT ); Mon, 23 Mar 2020 08:40:56 -0400 Received: from szxga05-in.huawei.com ([45.249.212.191]:12178 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727130AbgCWMk4 (ORCPT ); Mon, 23 Mar 2020 08:40:56 -0400 Received: from DGGEMS406-HUB.china.huawei.com (unknown [172.30.72.58]) by Forcepoint Email with ESMTP id 63E252ECE21C08DF8A96; Mon, 23 Mar 2020 20:40:18 +0800 (CST) Received: from [127.0.0.1] (10.173.222.27) by DGGEMS406-HUB.china.huawei.com (10.3.19.206) with Microsoft SMTP Server id 14.3.487.0; Mon, 23 Mar 2020 20:40:11 +0800 Subject: Re: [PATCH v5 20/23] KVM: arm64: GICv4.1: Plumb SGI implementation selection in the distributor To: Marc Zyngier CC: , , , , Lorenzo Pieralisi , Jason Cooper , "Robert Richter" , Thomas Gleixner , "Eric Auger" , James Morse , "Julien Thierry" , Suzuki K Poulose References: <20200304203330.4967-1-maz@kernel.org> <20200304203330.4967-21-maz@kernel.org> <72832f51-bbde-8502-3e03-189ac20a0143@huawei.com> <4a06fae9c93e10351276d173747d17f4@kernel.org> <1c9fdfc8-bdb2-88b6-4bdc-2b9254dfa55c@huawei.com> <256b58a9679412c96600217f316f424f@kernel.org> <1c10593ac5b75f37c6853fbc74daa481@kernel.org> From: Zenghui Yu Message-ID: <49fedfb3-ea4a-a18b-f453-86f43be7f18f@huawei.com> Date: Mon, 23 Mar 2020 20:40:10 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.2.0 MIME-Version: 1.0 In-Reply-To: <1c10593ac5b75f37c6853fbc74daa481@kernel.org> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit X-Originating-IP: [10.173.222.27] X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Marc, On 2020/3/23 16:25, Marc Zyngier wrote: > Hi Zenghui, > > [...] > >>> And actually, maybe we can handle that pretty cheaply. If userspace >>> tries to restore GICD_TYPER2 to a value that isn't what KVM can >>> offer, we just return an error. Exactly like we do for GICD_IIDR. >>> Hence the following patch: >>> >>> diff --git a/virt/kvm/arm/vgic/vgic-mmio-v3.c >>> b/virt/kvm/arm/vgic/vgic-mmio-v3.c >>> index 28b639fd1abc..e72dcc454247 100644 >>> --- a/virt/kvm/arm/vgic/vgic-mmio-v3.c >>> +++ b/virt/kvm/arm/vgic/vgic-mmio-v3.c >>> @@ -156,6 +156,7 @@ static int vgic_mmio_uaccess_write_v3_misc(struct >>> kvm_vcpu *vcpu, >>>       struct vgic_dist *dist = &vcpu->kvm->arch.vgic; >>> >>>       switch (addr & 0x0c) { >>> +    case GICD_TYPER2: >>>       case GICD_IIDR: >>>           if (val != vgic_mmio_read_v3_misc(vcpu, addr, len)) >>>               return -EINVAL; >>> >>> Being a RO register, writing something that isn't compatible with the >>> possible behaviour of the hypervisor will just return an error. >> >> This is really a nice point to address my concern! I'm happy to see >> this in v6 now. >> >>> >>> What do you think? >> >> I agreed with you, with a bit nervous though. Some old guests (which >> have no knowledge about GICv4.1 vSGIs and don't care about nASSGIcap >> at all) will also fail to migrate from A to B, just because now we >> present two different (unused) GICD_TYPER2 registers to them. >> >> Is it a little unfair to them :-) ? > > I never pretended to be fair! ;-) > > I'm happy to prevent migrating from a v4.1 system (A) to a v4.0 > system (B). As soon as the guest has run, it isn't safe to do so > (it may have read TYPER2, and now knows about vSGIs). We *could* > track this and find ways to migrate this state as well, but it > feels fragile. > > Migrating from B to A is more appealing. It should be possible to > do so without much difficulty (just check that the nASSGIcap bit > is either 0 or equal to KVM's view of the capability). > > But overall I seriously doubt we can easily migrate guests across > very different HW. We've been talking about this for years, and > we still don't have a good solution for it given the diversity > of the ecosystem... :-/ Fair enough. Thanks for your detailed explanation! Zenghui