Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp1230204pxb; Fri, 21 Jan 2022 12:52:31 -0800 (PST) X-Google-Smtp-Source: ABdhPJxqEsVOX0RljrbUbVxAIOoGoWnPl/pTrSbHinG10stKHXsqB/+k6sBJwOjYEJpagptRM6iy X-Received: by 2002:a05:6a00:2310:b0:4c3:d3e:3667 with SMTP id h16-20020a056a00231000b004c30d3e3667mr5362946pfh.69.1642798351603; Fri, 21 Jan 2022 12:52:31 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1642798351; cv=none; d=google.com; s=arc-20160816; b=S0u9WXUdRvAhQ9/OICskrUu90OtIYMXWpw67KRfgRLdt0JW9DROO3i5+QSPi7ejZEE ztyzNf6/PvCspftlb1GCnBopT6Dg+BHU14tnou8KoemDDJL5kbrTBY4KH7mootcBbgdU JpiCqBqqw8i1A5q17npgA0j62ZCordxHyejRXHfiK0f6r8Jnal/sauX2Fm2fewwiQqO8 JOF8Wrchmy14GRcNoGbhOBMc04HPJvCNZCO9HnsO8HdqVTApavzdkgNIKn9tMhX6csj5 b2KZzep0V6UbbPBChvXRC8ZdHqoQ5rULPJXtIonuyoDLvAMq0Ghm+tZgvoqJ9/odBn8A Ft0Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:references:mime-version :message-id:in-reply-to:date:reply-to:dkim-signature; bh=SYLTfRN0UdpLZb7rj/xZArHK2NjDhiJ3xTDdO+xMLpw=; b=tSe7mVU6kKfteqvda7ofV7jQGfYB8wZT7hG5mwdFySK+L8/bpCkiDOJfBAmDpQAdxV QqEPyHpD8nXtBr+jXn3DbmihZ2Q1q/kE+4Hn3y7gh6c4tN3aNvxsNiSiKbS9THaeXx2k KdkOEzhllhviNSgpu97zWKbd5wn7s/yz0FhVaAR97rr9QyaHPQsF7rMgB6DfozQjdbh2 gxOi+8DljFUwapVF6zzaqnlMLrHbPZ79KUiELCh8CauCi/cPo4t0Oy/WX54MIgn3o+9B nSZSg00cvzyHDpVoB4rImPAU4iG2rD4el8zErJnT2XlpCrP098H39l3PAvSOhA9aAkGd Lfew== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b="e/ddioxU"; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id p10si7528721pgr.135.2022.01.21.12.52.19; Fri, 21 Jan 2022 12:52:31 -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=@google.com header.s=20210112 header.b="e/ddioxU"; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1358061AbiATBH3 (ORCPT + 99 others); Wed, 19 Jan 2022 20:07:29 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49054 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1358030AbiATBH0 (ORCPT ); Wed, 19 Jan 2022 20:07:26 -0500 Received: from mail-pg1-x54a.google.com (mail-pg1-x54a.google.com [IPv6:2607:f8b0:4864:20::54a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 545A9C06161C for ; Wed, 19 Jan 2022 17:07:26 -0800 (PST) Received: by mail-pg1-x54a.google.com with SMTP id o20-20020a656a54000000b003441a994d60so2680707pgu.6 for ; Wed, 19 Jan 2022 17:07:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=SYLTfRN0UdpLZb7rj/xZArHK2NjDhiJ3xTDdO+xMLpw=; b=e/ddioxUJ2mGT/zPwMN6e7mbsWUnUxxxhQxEVYvACcfWAQZcWx0nzK28hvkIJENFKX XH2iEDb2gVbVia2qJwA6c/NSm70agmWw6VhQlSe+7UHL8HrSEhfEwdImJeRfSXzT+dnO bjGrBLZfvF+/f/9BCMxWfuAFLuc49tZ2WMvGZYePJ8BMWfAlHReGyXdEXMT6RiWekqXt /mHKG8P6cHuyPkOKEd73Gmcq6NiHsrdztLlRqxjZ/jRZ1sZVrqT+ECTPTAvjCZkUw4IZ H37d3TjzTBk7oW2VPuqnhydCTFsoXCgkqQKUQ9qMyRfoN6rSBcw6VHS6c4LpgvrO8ACT 15dw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=SYLTfRN0UdpLZb7rj/xZArHK2NjDhiJ3xTDdO+xMLpw=; b=l7Oq5R+s7rmjXsJOCLhlG2jpxaLvUETmRGD3+h3qMdB/yfDFpbeqzX9sYrcTwaFTXf I3+Eqfvc1jWXD8Vw8TTWrDAS+DVe/mmUK+YClOrgVDgXcDBUmwRY6Ix/OhEGrbC/mOL3 cX870Ovv2ytWS5aw6tWxJDhuuqD8DYGnoH/rk26CYsfM8vmZjyvwPFwi+ofDdaHsW6HA gylH1+Bg7NhLINyzVonyR9OmRMLqv0H7c71OVD8ll7m2KtqfJkveCP/HYULx6Cv5usk1 EcGofURfsR3LBxTAVSxcDj3/Uc69D5jTO7hvVwRHPyp9H6tky6G2BtYvaSISQA5ZuiBq DBLA== X-Gm-Message-State: AOAM5324CLa5Xo7Kgmx1+q3oKd9qIo9KQMnUytFoATSnIuM8sdrF9ULR Tyx2CgcKgD4waU5+N2WY83q0Zpdhg4M= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:90b:4d84:: with SMTP id oj4mr791349pjb.0.1642640845477; Wed, 19 Jan 2022 17:07:25 -0800 (PST) Reply-To: Sean Christopherson Date: Thu, 20 Jan 2022 01:07:11 +0000 In-Reply-To: <20220120010719.711476-1-seanjc@google.com> Message-Id: <20220120010719.711476-2-seanjc@google.com> Mime-Version: 1.0 References: <20220120010719.711476-1-seanjc@google.com> X-Mailer: git-send-email 2.34.1.703.g22d0c6ccf7-goog Subject: [PATCH 1/9] KVM: SVM: Never reject emulation due to SMAP errata for !SEV guests From: Sean Christopherson To: Paolo Bonzini Cc: Sean Christopherson , Vitaly Kuznetsov , Wanpeng Li , Jim Mattson , Joerg Roedel , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Tom Lendacky , Brijesh Singh , Liam Merwick Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Always signal that emulation is possible for !SEV guests regardless of whether or not the CPU provided a valid instruction byte stream. KVM can read all guest state (memory and registers) for !SEV guests, i.e. can fetch the code stream from memory even if the CPU failed to do so because of the SMAP errata. Fixes: 05d5a4863525 ("KVM: SVM: Workaround errata#1096 (insn_len maybe zero on SMAP violation)") Cc: stable@vger.kernel.org Cc: Tom Lendacky Cc: Brijesh Singh Signed-off-by: Sean Christopherson --- arch/x86/kvm/svm/svm.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c index 6d31d357a83b..aa1649b8cd8f 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -4257,8 +4257,13 @@ static bool svm_can_emulate_instruction(struct kvm_vcpu *vcpu, void *insn, int i bool smep, smap, is_user; unsigned long cr4; + /* Emulation is always possible when KVM has access to all guest state. */ + if (!sev_guest(vcpu->kvm)) + return true; + /* - * When the guest is an SEV-ES guest, emulation is not possible. + * Emulation is impossible for SEV-ES guests as KVM doesn't have access + * to guest register state. */ if (sev_es_guest(vcpu->kvm)) return false; @@ -4318,9 +4323,6 @@ static bool svm_can_emulate_instruction(struct kvm_vcpu *vcpu, void *insn, int i smap = cr4 & X86_CR4_SMAP; is_user = svm_get_cpl(vcpu) == 3; if (smap && (!smep || is_user)) { - if (!sev_guest(vcpu->kvm)) - return true; - pr_err_ratelimited("KVM: SEV Guest triggered AMD Erratum 1096\n"); kvm_make_request(KVM_REQ_TRIPLE_FAULT, vcpu); } -- 2.34.1.703.g22d0c6ccf7-goog