Received: by 2002:a05:7412:b10a:b0:f3:1519:9f41 with SMTP id az10csp938818rdb; Fri, 1 Dec 2023 02:46:38 -0800 (PST) X-Google-Smtp-Source: AGHT+IF5af8fSSO6AmO1UEmQ/DVjfuthjeGc3BhtIkO9wNTdZg/+SkP7CYEn/rvJoTlBFDss6ZxT X-Received: by 2002:a17:90b:4c03:b0:286:47f5:bbb2 with SMTP id na3-20020a17090b4c0300b0028647f5bbb2mr3300021pjb.48.1701427598162; Fri, 01 Dec 2023 02:46:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701427598; cv=none; d=google.com; s=arc-20160816; b=Gz0qtrFIVKvKKSZ7tR3OEYYNCwz5/GA7Bu9/FO7s+seTHXdcKaESIQAWkULYU82kn3 kaVwxYTZELvMhPNpxuFwpUBh8IAza1ZhNsqFqnXHvi2vJAV3da3ndt8tndM9C9jw3EnD PKFONosRdnQGVwCrNOFIo4xDFGgazHI9Y4tw2RBHwVuFXygN/voeuTc9IDsF6wfiyfJJ oih/UFDauWcUMcA7IA6zgC4Xhf3KRR+z264DC6hfHPp9xXWAi91xd78jF9E1yDTILzPF fW1F0KAjiN6lgcwU3UNP94YI56e+3XjLf+Pq6ZD8tV+zSNMhUiRVIw60+H0xjEQTfs1+ y6tA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=wFdaNfSO3kHrtdA/nDJtCTrlH575cz0J84l58QN9+OU=; fh=Cum1qOF0YrAzH/5yQjcCBfU63B+V0l01YtzsDBRUOAc=; b=aE4n8ATabWZGYwd8lqv7PybQI4pYwf4rYScSsmWKEoXbGX2pGNEl9vt7zBJpzD3QQ7 jlAHnFGXMM6PK/abH0sZycSBWuTzyOV7meL0tOO3XCarcZDs05ziLCj3wB0v7kWaugB6 fNIhykiP7JCNqWGF7fgvoGva+GSC+enuzaZn21UFxXfYIW52u8qE7R2CUX5UIa/vOcpl Bwq7qg2cQepe0pb0LPnBReKXFl2v2w9D76yjQ8hNgHRPeGvbr5ckYjfWuyPqEW3FZ8Oy zL27rfW1nMKlNHv2rPzEcOYqn1+JFigB8EBh6nQskfqX5QIy91CIE+XW6czWjazXwx1i NwsA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@xen.org header.s=20200302mail header.b=d6NBEYP0; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from lipwig.vger.email (lipwig.vger.email. [23.128.96.33]) by mx.google.com with ESMTPS id jn13-20020a170903050d00b001cfcd30890esi3050660plb.257.2023.12.01.02.46.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 Dec 2023 02:46:38 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) client-ip=23.128.96.33; Authentication-Results: mx.google.com; dkim=pass header.i=@xen.org header.s=20200302mail header.b=d6NBEYP0; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id EC1F78167DA0; Fri, 1 Dec 2023 02:46:33 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1378325AbjLAKqP (ORCPT + 99 others); Fri, 1 Dec 2023 05:46:15 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44472 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1378309AbjLAKqN (ORCPT ); Fri, 1 Dec 2023 05:46:13 -0500 Received: from mail.xenproject.org (mail.xenproject.org [104.130.215.37]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C8C5110E5; Fri, 1 Dec 2023 02:46:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org; s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:References: In-Reply-To:Message-Id:Date:Subject:To:From; bh=wFdaNfSO3kHrtdA/nDJtCTrlH575cz0J84l58QN9+OU=; b=d6NBEYP0mST7ARp0cVbuoc07p2 YzAjQQvJAKV5ODtHtFuEKZXdsW/oieEAI2nZ7FXcAT9PnCD5KrCHou6L3RNXtDMQ01oLoJG0CS++A mhMPng0hKPvGT6uFXHOXjVOh4aAdBvM+nCadD0bi/pO89VdnE4JfVIstxGL7KlPr1iZk=; Received: from xenbits.xenproject.org ([104.239.192.120]) by mail.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1r911v-0005P6-3k; Fri, 01 Dec 2023 10:45:55 +0000 Received: from 54-240-197-231.amazon.com ([54.240.197.231] helo=REM-PW02S00X.ant.amazon.com) by xenbits.xenproject.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1r911u-0003dT-QB; Fri, 01 Dec 2023 10:45:55 +0000 From: Paul Durrant To: David Woodhouse , Paul Durrant , Sean Christopherson , Paolo Bonzini , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H. Peter Anvin" , kvm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/2] KVM: xen: (re-)initialize shared_info if guest (32/64-bit) mode is set Date: Fri, 1 Dec 2023 10:45:36 +0000 Message-Id: <20231201104536.947-3-paul@xen.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231201104536.947-1-paul@xen.org> References: <20231201104536.947-1-paul@xen.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Fri, 01 Dec 2023 02:46:34 -0800 (PST) From: Paul Durrant If the shared_info PFN cache has already been initialized then the content of the shared_info page needs to be (re-)initialized if the guest mode is set. It is no lnger done when the PFN cache is activated. Setting the guest mode is either done explicitly by the VMM via the KVM_XEN_ATTR_TYPE_LONG_MODE attribute, or implicitly when the guest writes the MSR to set up the hypercall page. Signed-off-by: Paul Durrant --- arch/x86/kvm/xen.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/arch/x86/kvm/xen.c b/arch/x86/kvm/xen.c index 7bead3f65e55..bfc8f6698cbc 100644 --- a/arch/x86/kvm/xen.c +++ b/arch/x86/kvm/xen.c @@ -624,8 +624,15 @@ int kvm_xen_hvm_set_attr(struct kvm *kvm, struct kvm_xen_hvm_attr *data) } else { mutex_lock(&kvm->arch.xen.xen_lock); kvm->arch.xen.long_mode = !!data->u.long_mode; + + /* + * If shared_info has already been initialized + * then re-initialize it with the new width. + */ + r = kvm->arch.xen.shinfo_cache.active ? + kvm_xen_shared_info_init(kvm) : 0; + mutex_unlock(&kvm->arch.xen.xen_lock); - r = 0; } break; @@ -657,9 +664,6 @@ int kvm_xen_hvm_set_attr(struct kvm *kvm, struct kvm_xen_hvm_attr *data) } srcu_read_unlock(&kvm->srcu, idx); - if (!r && kvm->arch.xen.shinfo_cache.active) - r = kvm_xen_shared_info_init(kvm); - mutex_unlock(&kvm->arch.xen.xen_lock); break; } @@ -1144,7 +1148,13 @@ int kvm_xen_write_hypercall_page(struct kvm_vcpu *vcpu, u64 data) bool lm = is_long_mode(vcpu); /* Latch long_mode for shared_info pages etc. */ - vcpu->kvm->arch.xen.long_mode = lm; + kvm->arch.xen.long_mode = lm; + + if (kvm->arch.xen.shinfo_cache.active && + kvm_xen_shared_info_init(kvm)) { + mutex_unlock(&kvm->arch.xen.xen_lock); + return 1; + } /* * If Xen hypercall intercept is enabled, fill the hypercall -- 2.39.2