Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp4134235pxb; Mon, 8 Feb 2021 08:43:13 -0800 (PST) X-Google-Smtp-Source: ABdhPJwgkckvvxKi+75HC5K/Pk2Exf63mIdGX/82Bxc/hrNPmUNFI3kDeGshR7xFI3CAo3l04OFt X-Received: by 2002:aa7:c889:: with SMTP id p9mr7498813eds.224.1612802593565; Mon, 08 Feb 2021 08:43:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1612802593; cv=none; d=google.com; s=arc-20160816; b=TB9Ijzq6UjXic0nwpXExuuhpGvRWCwsy5ot9hnDhTH4p1IPp/GT43WvkVtCJhqftE5 7/bS+DlXegUEwsFhVDtvyRmTxD8nxXJ9UGX/z4EdJ3Y8U406gt5S8+W/NlEdTsRWitD2 sklkwr1KwOorpDEDwNs5U5BSu4O0AehZet0nurU+1NNs395VhFhutmquGHyn+X/BdwLs 3Mr8QH+pr/jomMoZq7XTqMkT2GG90JfZNN3ARS7bu2xeeLAAX0B2+WZvuM1wgo2q+no+ q4kAMydEYKMAUD8HmweO74Rr5eDu+wl0OFG9uXqTLO1pLGI3J+j3Yhqcq3MuWNM9XY5J 6MRg== 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=jNuUCbVVrJ4rUo+YCa0bF6+Z3aforQ1zWofmB02QxrI=; b=CeSZy1QLqbvNuoGSC73H3flEw/+FJn/V49QdMriXqPHpl2dyPFJ3oKNsueox5mq/V/ 5NGrES5SzrwJCoJf9r/ZDRz+6wWSMuEwEKm0Bbd0To2DaOOhdRizA+bCBADCFOIXmODY tgXQgDJ9esU21XUV7mefJZggYhfzuS88bP3HGLQ5ZrPg2wMF6Gwv6T9e1nNY+Uvw12EC 7fGR4oCXdMkZoXflnn0G0SfXz/NUo2lGa1dpjb44bct7nhBlPVhlIHeM6v3d6C4qh17T 9jjVMeMC+8hGan/cCImXjj9HSUoqglPkummGttH9YTJwDXr+MF5ll/ttsx+6lvJF5InZ CVSg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=fG6m15bV; 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 i8si4694290edg.104.2021.02.08.08.42.49; Mon, 08 Feb 2021 08:43:13 -0800 (PST) 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=fG6m15bV; 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 S233358AbhBHQkG (ORCPT + 99 others); Mon, 8 Feb 2021 11:40:06 -0500 Received: from mail.kernel.org ([198.145.29.99]:56630 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233520AbhBHPOt (ORCPT ); Mon, 8 Feb 2021 10:14:49 -0500 Received: by mail.kernel.org (Postfix) with ESMTPSA id BA6F364ED0; Mon, 8 Feb 2021 15:11:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1612797065; bh=gjkRdFUKqHbORY7oZ1IXEXpkKVAh0vDsgCycMe2TIEY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fG6m15bVsVkn/3e/G/PauEAn6mFquKWHhnrzDrfsMj0ER7y+D9CnTyIVoCDfSJruW /9uMgDBEr0cP5oEFI1yrz69l8yvPqKplqjQYZV64co7ohqEEVfTOyjRn5snGG8Aucl kwqpWcuDjEbTFUcgTnKvlRnkCUH0ae+hpTy5qdWs= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Sean Christopherson , Paolo Bonzini Subject: [PATCH 5.4 45/65] KVM: SVM: Treat SVM as unsupported when running as an SEV guest Date: Mon, 8 Feb 2021 16:01:17 +0100 Message-Id: <20210208145811.960794021@linuxfoundation.org> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20210208145810.230485165@linuxfoundation.org> References: <20210208145810.230485165@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 ccd85d90ce092bdb047a7f6580f3955393833b22 upstream. Don't let KVM load when running as an SEV guest, regardless of what CPUID says. Memory is encrypted with a key that is not accessible to the host (L0), thus it's impossible for L0 to emulate SVM, e.g. it'll see garbage when reading the VMCB. Technically, KVM could decrypt all memory that needs to be accessible to the L0 and use shadow paging so that L0 does not need to shadow NPT, but exposing such information to L0 largely defeats the purpose of running as an SEV guest. This can always be revisited if someone comes up with a use case for running VMs inside SEV guests. Note, VMLOAD, VMRUN, etc... will also #GP on GPAs with C-bit set, i.e. KVM is doomed even if the SEV guest is debuggable and the hypervisor is willing to decrypt the VMCB. This may or may not be fixed on CPUs that have the SVME_ADDR_CHK fix. Cc: stable@vger.kernel.org Signed-off-by: Sean Christopherson Message-Id: <20210202212017.2486595-1-seanjc@google.com> Signed-off-by: Paolo Bonzini Signed-off-by: Greg Kroah-Hartman --- arch/x86/kvm/svm.c | 5 +++++ arch/x86/mm/mem_encrypt.c | 1 + 2 files changed, 6 insertions(+) --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -889,6 +889,11 @@ static int has_svm(void) return 0; } + if (sev_active()) { + pr_info("KVM is unsupported when running as an SEV guest\n"); + return 0; + } + return 1; } --- a/arch/x86/mm/mem_encrypt.c +++ b/arch/x86/mm/mem_encrypt.c @@ -375,6 +375,7 @@ bool force_dma_unencrypted(struct device return false; } +EXPORT_SYMBOL_GPL(sev_active); /* Architecture __weak replacement functions */ void __init mem_encrypt_free_decrypted_mem(void)