Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp2841902pxj; Mon, 10 May 2021 11:59:16 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz+ItRjBX3bQhlIcfpoKC8XNeaNOQk631EJh/0SHfMCxwku5FQAoBp2xXT1zdKhuqymJRrb X-Received: by 2002:a05:6402:4403:: with SMTP id y3mr31570616eda.369.1620673156459; Mon, 10 May 2021 11:59:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620673156; cv=none; d=google.com; s=arc-20160816; b=ZQ2e61JW6Pjz+KJRHdNHGBd0oP2+4l7u2E7p7uaaqx8DRUekaUQB/DEIs+0nPQ7UTT MlyWru2GZNzgVer9I40Tdi4GG6tFesDa+do9QNE/TvQYwUBv8n7t3LZM+6sD1onSh3VY 2k6xLXYjoL55TrWqz/ioTebuzJksQrkYVNcEDcktZwWnwi+hdanAIO5+7LA82jHuBeyn jRyA1AE+kNMIcAQ4xwY5HW8c1hQ5ZyrYE8xRsIvi+d/1L6NOZ/8AYT4TCkSEwqAwoUne FbF2OOP76Pg2C/jnKg0mzjemn8zwX5fLp+IP9L6c8X4/v+LsQBWIf3MRSp2M89iSgSnh 7gmw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=rHjqwVQjzMEV5GK54WowYNEUzQ+k4CK9chJTV5Okn7c=; b=aqufWKuHLc4GnrGTDQWauPCJ5BZaMd2Z71rajn6e9g26rzdvO9HsVsloicB0DrkDJQ Er8vZ2CO+HS/H8YES3rqmgYiE3jSRHSQ6R7cuZZO3GZEJea1htXhUzGf4o6EdeL9eclX Dtstk7zi43LPnuIaVQmneU9vh5GA3ygsWNak76hyY75slGF5U2wX04zuplw6xPeIAZEF x2m858mLjtVwL/ZOTD2IP7MT9ay0kHc2MUqhgt7Q2BZQRymxDgtOoUrDWPaxC3H1vOgH 2ynHFkFOVjr3mVQM/MTpUWgu5dPXAYyO7RSbOaCqnEczBRIUvE8BOxei6prjDjsbuDGi 9ong== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=QMjJbO1L; 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 co23si14241522edb.177.2021.05.10.11.58.52; Mon, 10 May 2021 11:59:16 -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=@google.com header.s=20161025 header.b=QMjJbO1L; 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 S232491AbhEJS6t (ORCPT + 99 others); Mon, 10 May 2021 14:58:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39826 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232301AbhEJS6r (ORCPT ); Mon, 10 May 2021 14:58:47 -0400 Received: from mail-lf1-x134.google.com (mail-lf1-x134.google.com [IPv6:2a00:1450:4864:20::134]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5B5FBC061574 for ; Mon, 10 May 2021 11:57:41 -0700 (PDT) Received: by mail-lf1-x134.google.com with SMTP id x20so24949132lfu.6 for ; Mon, 10 May 2021 11:57:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=rHjqwVQjzMEV5GK54WowYNEUzQ+k4CK9chJTV5Okn7c=; b=QMjJbO1L2Cxu9EqcoA2Dh2LjzMSrVFxlZPKXiltJd/6sQmrMeQxmH95UG0NicAqPUj WNZPpwMln6fAm4nod1Kpt1aNKY1MaRsPbYZoWlDMc9bQZsgZ7sJQh2ap2gK+rrTHhq3M rXmH3pAazUZliBie1fO20stm2CEZvezyK7PRArTr6i0RZFqSBe7z1CKS1zvYK1Rwqlsi jMbodNLYT7iIEDAxxKpv1Kut+KZtAe/W5wCfazhEJqRD15FENd3QWbMh8iwrNdcW94F5 qMz3DlZ5VbtODD74KEe0KpnwbXRKnPiM94zZ29/OIZjvuzA6ftBfv/rbBMVz2Btxvpqp 5iTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=rHjqwVQjzMEV5GK54WowYNEUzQ+k4CK9chJTV5Okn7c=; b=gvMazp0wYGbSxklnxJ8AAf1i+Jz8VUdXC750MaHqSG0TWX6dDCbXiZPq/Sj4wkHTZk yeXgocWo74okXis4nvXhiWvlV3ADgWyHcOJpCFq/HFx+Pxdb+288KYG+d8YIBIvDvHkU TMz0EkKb0oQZPrF9KIpICC+EPe5ve/KoNfxtcKxvGFU45BAOsLFTfKgXjHOEE4Mee4CM 2/Qqu8SIa8g4xJxhsyi5/Pagsr5L11B/qZOtWFQwRMNwcxsgvWkhNhcI/nzm2VXfJYhQ KIR8bcbg124/pJ74tpduo+BFztlFH1t/jk0zOI6iXewSWxYN9pt2/CzmMgIIVZxxK+YR 89PQ== X-Gm-Message-State: AOAM533J9/bS/rOq5DV+x2KdWqZTbS2U+DYhzUC8VitLS25oBQaObWjD i5cZlZt9dfup9BEhmWfgHUMRiFE67+M1bHd5+q7bJQ== X-Received: by 2002:ac2:532d:: with SMTP id f13mr17394936lfh.81.1620673059631; Mon, 10 May 2021 11:57:39 -0700 (PDT) MIME-Version: 1.0 References: <20210430123822.13825-1-brijesh.singh@amd.com> <20210430123822.13825-37-brijesh.singh@amd.com> In-Reply-To: <20210430123822.13825-37-brijesh.singh@amd.com> From: Peter Gonda Date: Mon, 10 May 2021 12:57:27 -0600 Message-ID: Subject: Re: [PATCH Part2 RFC v2 36/37] KVM: SVM: Provide support for SNP_GUEST_REQUEST NAE event To: Brijesh Singh Cc: x86@kernel.org, linux-kernel@vger.kernel.org, kvm list , Thomas Gleixner , Borislav Petkov , jroedel@suse.de, "Lendacky, Thomas" , Paolo Bonzini , Ingo Molnar , Dave Hansen , David Rientjes , Sean Christopherson , peterz@infradead.org, "H. Peter Anvin" , tony.luck@intel.com Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org > > +static void snp_handle_guest_request(struct vcpu_svm *svm, struct ghcb *ghcb, > + gpa_t req_gpa, gpa_t resp_gpa) > +{ > + struct sev_data_snp_guest_request data = {}; > + struct kvm_vcpu *vcpu = &svm->vcpu; > + struct kvm *kvm = vcpu->kvm; > + kvm_pfn_t req_pfn, resp_pfn; > + struct kvm_sev_info *sev; > + int rc, err = 0; > + > + if (!sev_snp_guest(vcpu->kvm)) { > + rc = -ENODEV; > + goto e_fail; > + } > + > + sev = &to_kvm_svm(kvm)->sev_info; > + > + if (!__ratelimit(&sev->snp_guest_msg_rs)) { > + pr_info_ratelimited("svm: too many guest message requests\n"); > + rc = -EAGAIN; > + goto e_fail; > + } > + > + if (!IS_ALIGNED(req_gpa, PAGE_SIZE) || !IS_ALIGNED(resp_gpa, PAGE_SIZE)) { > + pr_err("svm: guest request (%#llx) or response (%#llx) is not page aligned\n", > + req_gpa, resp_gpa); > + goto e_term; > + } > + > + req_pfn = gfn_to_pfn(kvm, gpa_to_gfn(req_gpa)); > + if (is_error_noslot_pfn(req_pfn)) { > + pr_err("svm: guest request invalid gpa=%#llx\n", req_gpa); > + goto e_term; > + } > + > + resp_pfn = gfn_to_pfn(kvm, gpa_to_gfn(resp_gpa)); > + if (is_error_noslot_pfn(resp_pfn)) { > + pr_err("svm: guest response invalid gpa=%#llx\n", resp_gpa); > + goto e_term; > + } > + > + data.gctx_paddr = __psp_pa(sev->snp_context); > + data.req_paddr = __sme_set(req_pfn << PAGE_SHIFT); > + data.res_paddr = __psp_pa(sev->snp_resp_page); > + > + mutex_lock(&kvm->lock); > + > + rc = sev_issue_cmd(kvm, SEV_CMD_SNP_GUEST_REQUEST, &data, &err); > + if (rc) { > + mutex_unlock(&kvm->lock); > + > + /* If we have a firmware error code then use it. */ > + if (err) > + rc = err; > + > + goto e_fail; > + } > + > + /* Copy the response after the firmware returns success. */ > + rc = kvm_write_guest(kvm, resp_gpa, sev->snp_resp_page, PAGE_SIZE); > + > + mutex_unlock(&kvm->lock); > + > +e_fail: > + ghcb_set_sw_exit_info_2(ghcb, rc); > + return; > + > +e_term: > + ghcb_set_sw_exit_info_1(ghcb, 1); > + ghcb_set_sw_exit_info_2(ghcb, > + X86_TRAP_GP | > + SVM_EVTINJ_TYPE_EXEPT | > + SVM_EVTINJ_VALID); > +} I am probably missing something in the spec but I don't see any references to #GP in the '4.1.7 SNP Guest Request' section. Why is this different from e_fail?