Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp3757091pxv; Mon, 19 Jul 2021 08:04:34 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzj1aeY9gIx4t4UzndORv/3cd3h/AhWpHvm+QSctU5rWLMXHfweZxAO0GCe3G37mb1nciTX X-Received: by 2002:a02:4b04:: with SMTP id q4mr12685002jaa.89.1626707074293; Mon, 19 Jul 2021 08:04:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626707074; cv=none; d=google.com; s=arc-20160816; b=Gjt50O7wfikbCvMb358SbO3zuAatlZxCg+NKyzDu9OHCvD3dSvRm9r7357rKu6K5V4 XIp8strylKQnH21bupQX3h3APPrYQGhpnTL7z+S4ekVQY1jT77ALlc5urjQfvnvH30Mf PkOmjknOS1GFZD/PQ9tF+ehmz3P/fXmMTtsofWmV3hYg831sCIYAkGmb3AsJ8+5CTHXG WkHeiJyex80jYoynCQ70ygxUfts8wqSGDdeHUQj3fYO7Q09/5Ifwc7uDieCLfd8LEToh vxbJ22ap8Ucn8/rvAQRGqQN1wAZtKU0NEpvntd8G8Zp9AbBBTI7H1rgrqoJAGc23SU9+ 1u/Q== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=TsZtzogGO7LFNQTG1xRtNEmKaRsfC1m7Ro0e2V/kgRY=; b=0PYRpn+xDwmEpwmaVEUjUgZtPAMoqJWXd7v+GzS3V8Eppj58mfssM+HTY2qT9UZNxy 1Iv8DkTjmGGKKV4sKIQmOF68jTViitULmhUrbQxxN60WylNM0o+j76LEWjYl8PZ+kp2m 8vOyOmBeL85JwMnoKH67UdPorEyk1jtDKaqHs/pZNnCoqMFQqdhqDA41Hlrhzn9yis/a Vr1OzNRJJc7KKli5yjivvQLAqtnGcpkg7wJBH7ZgvcFcL0Kgqf+bVPbVOUsdUT+wwgHq cnZuqBiX3pww/2hMxLXMBP/FyCWOq+d5xcRcu3blLhaiKRFS+7hdglNkPPhVLJwTj2Lf hzUQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b="a3E6U/ei"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id w3si19148029ilv.30.2021.07.19.08.04.08; Mon, 19 Jul 2021 08:04:34 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b="a3E6U/ei"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242159AbhGSOW6 (ORCPT + 99 others); Mon, 19 Jul 2021 10:22:58 -0400 Received: from mail.kernel.org ([198.145.29.99]:57020 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242496AbhGSOVB (ORCPT ); Mon, 19 Jul 2021 10:21:01 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id D808F61175; Mon, 19 Jul 2021 15:01:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1626706895; bh=elHRXhYquqeshzOoiW+zIVsO6BJRMF/0n4cZpRZTw3s=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=a3E6U/eiRA7Wu+k2yUUgj8v2VDNVp4YHIcG/ic/mqlHrH7KgEpvv8UHiAtJDAKnch 8EvjgdV+VA4gn5vnhrK5xbCSumeDhVv3bNwg5T9uqCV9ZhAGOeevHiFrluIQ3tvdPg TTqArBlupRHIsbJE2Ov1BI6cdyqM/VDFeufk6hzc= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Sean Christopherson , Paolo Bonzini Subject: [PATCH 4.4 141/188] KVM: x86: Use guest MAXPHYADDR from CPUID.0x8000_0008 iff TDP is enabled Date: Mon, 19 Jul 2021 16:52:05 +0200 Message-Id: <20210719144941.104890091@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210719144913.076563739@linuxfoundation.org> References: <20210719144913.076563739@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Sean Christopherson commit 4bf48e3c0aafd32b960d341c4925b48f416f14a5 upstream. Ignore the guest MAXPHYADDR reported by CPUID.0x8000_0008 if TDP, i.e. NPT, is disabled, and instead use the host's MAXPHYADDR. Per AMD'S APM: Maximum guest physical address size in bits. This number applies only to guests using nested paging. When this field is zero, refer to the PhysAddrSize field for the maximum guest physical address size. Fixes: 24c82e576b78 ("KVM: Sanitize cpuid") Cc: stable@vger.kernel.org Signed-off-by: Sean Christopherson Message-Id: <20210623230552.4027702-2-seanjc@google.com> Signed-off-by: Paolo Bonzini Signed-off-by: Greg Kroah-Hartman --- arch/x86/kvm/cpuid.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) --- a/arch/x86/kvm/cpuid.c +++ b/arch/x86/kvm/cpuid.c @@ -611,8 +611,14 @@ static inline int __do_cpuid_ent(struct unsigned virt_as = max((entry->eax >> 8) & 0xff, 48U); unsigned phys_as = entry->eax & 0xff; - if (!g_phys_as) + /* + * Use bare metal's MAXPHADDR if the CPU doesn't report guest + * MAXPHYADDR separately, or if TDP (NPT) is disabled, as the + * guest version "applies only to guests using nested paging". + */ + if (!g_phys_as || !tdp_enabled) g_phys_as = phys_as; + entry->eax = g_phys_as | (virt_as << 8); entry->edx = 0; /*