Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp2819197pxj; Mon, 10 May 2021 11:24:57 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx7CWwHsYA5PdrAD7673kzJzdaHNGUHTelaUic3/lPmjKIyWV0YyCOQtCHbZlwnayStSNPp X-Received: by 2002:a17:906:5a96:: with SMTP id l22mr27303118ejq.450.1620671097560; Mon, 10 May 2021 11:24:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620671097; cv=none; d=google.com; s=arc-20160816; b=pJdO5Qh/CfJlrRYlAj6ROXV9ylJe1GLqdvepK+MdSElqSm0kmJUQTTCCgBOQtrTCFu en5UaylFoCqQsZsyM0yXuwk03BTYZ/7RTLJOeOvtD6o5D1B9jGc3mluBoEr3H3O+7xZ/ /9IRMMKbvFAhuyGuckk5Ue08svzZH7DdgwwLEAb9HNu065VWB4QiopD+QMersolyxUfD xALBRfBm9NVT0pXPOI5dVBR/UIqn2rXZyFX7pAmKzJcEYJS+taZGuE/u/bNfSLWiufDF gRjnVfcxL6tTvERbUtfG02aNdQANFICx+4lmb9DhDW4aV8vl2y5NWj8eHAex+xWJMFlx Vq6A== 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=lzeEt2iLZsv/e10Yd+9MeGfoznQwyzGkrL9B5lma3LM=; b=TKxDxEZKCDvZOqbd86yf0MfvbtbrJFCGyPUBQwXs8xKLEXSh3dra8k8LODVXD8ZcnT oskKEIiiHarlTVkm15euFVNhkL93b4a6QpOUrVOIvAOfv+2k0ibiw0LIBPTcNoAvHla7 vROYzGJa2lDjZhiX9AZnh0M/KirW0fZO6/V32tbrqqs+Rmw3EEWIPaO8hjMx+lnHmKK7 GzFkrMpJ9aDkUmfqvfhsGO17IfuNxvITZh3f83ROb7r1+SOoUHarpNjAkWG6YaIDA9F9 X2G/XIyEj6cnhxefb+LCgrZ4vFaNFqy4ZGkjSdE4LACrk/SXqj+9aiy0IVvheYxVrDiW 6iLg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=PTHzuMmd; 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 5si10300550ejw.423.2021.05.10.11.24.33; Mon, 10 May 2021 11:24:57 -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=PTHzuMmd; 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 S232196AbhEJSYr (ORCPT + 99 others); Mon, 10 May 2021 14:24:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60480 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231586AbhEJSYp (ORCPT ); Mon, 10 May 2021 14:24:45 -0400 Received: from mail-pl1-x635.google.com (mail-pl1-x635.google.com [IPv6:2607:f8b0:4864:20::635]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 55211C06175F for ; Mon, 10 May 2021 11:23:39 -0700 (PDT) Received: by mail-pl1-x635.google.com with SMTP id h7so9574522plt.1 for ; Mon, 10 May 2021 11:23:39 -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=lzeEt2iLZsv/e10Yd+9MeGfoznQwyzGkrL9B5lma3LM=; b=PTHzuMmdV5rppvtqXsnyDqNTwha1kpVo0YQxNMxa82x8VXCB1LLyT2SALRi+SijsWw WC9b4IEGZJ0UY8rWLq5au1RduDqesgiz0ibZlHrO4y+0eI1u7Dfc6q0cHXE2/MPQVJJ2 SsA9k8B1a8KB+K/q0lzGDuS7KiFJW30CG1EbyHdYAGtplirZ/pTxYOCvQdc0zlYfWKb/ SvEsx9ZM3/d+QagYl50vecHVoZ1WtgyIxzqFh4xyzXLISw16wwDhDli5tkF9dlCqmbIw kgGgf/tRrW/f6G0YilyXYsRyi2JH+PY86iB22FjcHORB3Z6dP07f0Djhv44TCDFbLmD+ Jgrw== 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=lzeEt2iLZsv/e10Yd+9MeGfoznQwyzGkrL9B5lma3LM=; b=Ex30OTAGRoNKYL/Da/RZPowi50urOf+7je9myW0v8dz3/nt04X1eGq1OWTdoQAg9eS CAf2fh7F1+C98f0cfPh7r4YDwwDRj0bGHbC7Dba1NW9DjDrsafWwhtXR5lW6b3HA7W4q NgE3BlyirJmZ3xPEk9ECSYTlfXoXaXIDermg5GfYEtbl0Gy5IfAxgU5VcoMGys0zGpLJ +kgcqNLkwvxUdOXVVvRLKYo7lVRhVQuyEKMZveMjNqLgZkWu27SDv+MZj85wiGcY988L bHD6jeAISudbjWY3mDo/86FjwTlOx4/PAhwFOrJp+BhYBqWfiY062E7Dr4V/ZlHnE6fB Pl4Q== X-Gm-Message-State: AOAM532wpxvnks1+lENgzecv9QaU3zp1ntYfgEH3Yr60CG044MTJUlXT gM6cfgzoW9vQ9sJYoCtofezz4+gGsTR/lyxA6bTABnVWsn9dEA== X-Received: by 2002:a17:90a:17a2:: with SMTP id q31mr539529pja.32.1620671018477; Mon, 10 May 2021 11:23:38 -0700 (PDT) MIME-Version: 1.0 References: <20210430123822.13825-1-brijesh.singh@amd.com> <20210430123822.13825-17-brijesh.singh@amd.com> In-Reply-To: <20210430123822.13825-17-brijesh.singh@amd.com> From: Peter Gonda Date: Mon, 10 May 2021 12:23:27 -0600 Message-ID: Subject: Re: [PATCH Part2 RFC v2 16/37] crypto: ccp: Handle the legacy TMR allocation when SNP is enabled 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 int snp_set_rmptable_state(unsigned long paddr, int npages, > + struct rmpupdate *val, bool locked, bool need_reclaim) > +{ > + unsigned long pfn = __sme_clr(paddr) >> PAGE_SHIFT; > + unsigned long pfn_end = pfn + npages; > + int rc; > + > + while (pfn < pfn_end) { > + if (need_reclaim) > + if (snp_reclaim_page(pfn_to_page(pfn), locked)) > + return -EFAULT; > + > + rc = rmpupdate(pfn_to_page(pfn), val); > + if (rc) > + return rc; This functional can return an error but have partially converted some of the npages requested by the caller. Should this function return the number of affected pages or something to allow the caller to know if some pages need to be reverted? Or should the function attempt to do that itself? > + > + pfn++; > + } > + > + return 0; > +} > + > +static void __snp_free_firmware_pages(struct page *page, int order) > +{ > + struct rmpupdate val = {}; > + unsigned long paddr; > + > + if (!page) > + return; > + > + paddr = __pa((unsigned long)page_address(page)); > + > + if (snp_set_rmptable_state(paddr, 1 << order, &val, false, true)) > + return; We now have leaked the given pages right? Should some warning be logged or should we track these leaked pages and maybe try and free them with a kworker? > + > + __free_pages(page, order); > +} > +