From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 91171EB64D9 for ; Mon, 19 Jun 2023 13:00:26 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E2B1C8D0009; Mon, 19 Jun 2023 09:00:25 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id DDAC88D0001; Mon, 19 Jun 2023 09:00:25 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CA2488D0009; Mon, 19 Jun 2023 09:00:25 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id B9A118D0001 for ; Mon, 19 Jun 2023 09:00:25 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 134ED80AAB for ; Mon, 19 Jun 2023 13:00:25 +0000 (UTC) X-FDA: 80919506010.12.A64410A Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf06.hostedemail.com (Postfix) with ESMTP id 71D6518002A for ; Mon, 19 Jun 2023 13:00:17 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=HZj0rqOk; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf06.hostedemail.com: domain of david@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=david@redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1687179618; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=TKBMHseotjxiKusjampIv0TaP0HFVwPGsCYt7fffA9Q=; b=x+BN7t4Z18+QtucXmfzTn4grsKqFpUr9cSmRgnQsRPBmWdro29LSrvme/J1zKrng9dQ/sz 28xWqWsXO3bWX9FpFbcwZNDI4DQFC5CzflrrthCuB4EPyAmY0UXGPGZXTVpP9p/VOozeZB Pa30HjLl0lHgTIidy0pDpogvD2Bp1HI= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=HZj0rqOk; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf06.hostedemail.com: domain of david@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=david@redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1687179618; a=rsa-sha256; cv=none; b=0PVMhePVWFw5a+d75/ZhVLvjc6Cz+lD8NsiIfmgtLtqTE5rGQlRKb0Es4faPh9mjrm+FOs r0ufzuRXBdA/lWdtFiS7BNWo0bpX5/xZTRYs1zv44pCSIQ0x6WBB7GBX5CtLGEGESVhyJC gaeZ7GdA7gS7Y6EQ5iy7EYCcmuFKIFg= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1687179617; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=TKBMHseotjxiKusjampIv0TaP0HFVwPGsCYt7fffA9Q=; b=HZj0rqOkN8mBlJ/6koevTvZZCAHlGz78AOCgdrbfUSJ+biYAH/J9GyesnnbWoWaMjNyQrY ohUEtA/LONZJKV5bhot55690jCc97THkjo74zo6QgPdaTmsx2tiyURvd2srN9V49uIVliB peBJ9Kwq17OEkTy03/FDLROQKKKyFEY= Received: from mail-lf1-f72.google.com (mail-lf1-f72.google.com [209.85.167.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-206-8kGY9NUOMIux-Z57vCm0Sg-1; Mon, 19 Jun 2023 09:00:15 -0400 X-MC-Unique: 8kGY9NUOMIux-Z57vCm0Sg-1 Received: by mail-lf1-f72.google.com with SMTP id 2adb3069b0e04-4f618172ed6so2240697e87.3 for ; Mon, 19 Jun 2023 06:00:15 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687179614; x=1689771614; h=content-transfer-encoding:in-reply-to:subject:organization:from :references:cc:to:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=TKBMHseotjxiKusjampIv0TaP0HFVwPGsCYt7fffA9Q=; b=laag1vtNemOwAIw0ODgST54IY/FfRbErloMlQ61cnMNIqhYmcv1SSb+LvImqTd6Vte zARXnpG3vRi3rmc27gnGhbr7/7YDty5UalwppoFFN5OTj09q15N1RIHD456mnKljSF6J VTtBy5Bjd+AqZo7+7S+HWbzRovP1kZoU3gfnNh8x1nb+jA//MPS0N30ZYM6NPgFT7QOp ZBuq8qgkS0dKlgLJe6SAihH7rolbCpiYSzSW7asmxx3tt80i+UZXylsJGB9uRSsJwrOf xT87bDKHyhjSw3JEiBgUDObwgoOsOyGKkJiGSaefvPMF/lcWSyCyUlgQE7LPQkWWZ4g9 Q8hw== X-Gm-Message-State: AC+VfDwCSjkaa3u+n4wqNS+oX5twEcD7R8/XPppl0mxejNE84KYaOHs+ Dj/RUfDeDmQJLwF6qaxuvRBwkaYrSKkGZo/pqLB3GL/K/ZuwZ9EcKsJ5xTcRDlc27UiIH8LC5Hn oUJ64T0W7SOA= X-Received: by 2002:a19:6d1b:0:b0:4f6:2cd8:5ff4 with SMTP id i27-20020a196d1b000000b004f62cd85ff4mr4649420lfc.2.1687179614315; Mon, 19 Jun 2023 06:00:14 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5Qa1d1c/tAFqnOnK6Tb7BXNstNr9Yajz/8+X/50nfQeyGwmKwVC0dI0IBR37Be8JKlraaH9Q== X-Received: by 2002:a19:6d1b:0:b0:4f6:2cd8:5ff4 with SMTP id i27-20020a196d1b000000b004f62cd85ff4mr4649388lfc.2.1687179613869; Mon, 19 Jun 2023 06:00:13 -0700 (PDT) Received: from ?IPV6:2003:cb:c72f:7100:cede:6433:a77b:41e9? (p200300cbc72f7100cede6433a77b41e9.dip0.t-ipconnect.de. [2003:cb:c72f:7100:cede:6433:a77b:41e9]) by smtp.gmail.com with ESMTPSA id p19-20020a05600c469300b003f7f475c3bcsm19951929wmo.1.2023.06.19.06.00.12 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 19 Jun 2023 06:00:13 -0700 (PDT) Message-ID: Date: Mon, 19 Jun 2023 15:00:11 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.12.0 To: Kai Huang , linux-kernel@vger.kernel.org, kvm@vger.kernel.org Cc: linux-mm@kvack.org, dave.hansen@intel.com, kirill.shutemov@linux.intel.com, tony.luck@intel.com, peterz@infradead.org, tglx@linutronix.de, seanjc@google.com, pbonzini@redhat.com, dan.j.williams@intel.com, rafael.j.wysocki@intel.com, ying.huang@intel.com, reinette.chatre@intel.com, len.brown@intel.com, ak@linux.intel.com, isaku.yamahata@intel.com, chao.gao@intel.com, sathyanarayanan.kuppuswamy@linux.intel.com, bagasdotme@gmail.com, sagis@google.com, imammedo@redhat.com References: <9b3582c9f3a81ae68b32d9997fcd20baecb63b9b.1685887183.git.kai.huang@intel.com> From: David Hildenbrand Organization: Red Hat Subject: Re: [PATCH v11 06/20] x86/virt/tdx: Handle SEAMCALL running out of entropy error In-Reply-To: <9b3582c9f3a81ae68b32d9997fcd20baecb63b9b.1685887183.git.kai.huang@intel.com> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 71D6518002A X-Stat-Signature: 8srma8861zp48ydo6j94bw7egkni6f71 X-HE-Tag: 1687179617-17955 X-HE-Meta: U2FsdGVkX1/Jatp6vA/V21mXnqyeQyZI5cbEbpeTRVnPFQTU4nEdn5KXv84ZVPhY4ql9mhDzTlVuHZLafV5ZxsUKug6U4EGVcK4jF39vaa+VGtDSFh0GwHjoXsUsyi3dxtk3t/aj8wza2gdSWe30mkEFubp7RW6MtKBRZ18nq8s2YPF7NVI3XPECtOuRRkrGo+J0By4xhkg+YTQFvgtrR5RS/0dOhcSf827gODRNBQUPh0+QY4GX4853xS6lsCAsskiQbF3o8Df68aDlkT/STUDMniZoJDDiSxo24XgCuDH91zieiFgeQg+OLKDC9rTwXMcKYn147BptXvbNyMqAR+UKhMvfBQiuDXFbCHtuGzrCpMKW7vd2BKrHfdDAKBt5qZ7eXUK3J/emB4TqhCE3dj17tjUlfj+r+hmpfqs14YCC5MTEuT+tL7K43x2vFFUEbOGF7CemOhkBDBuG1z5FPklYBGuocO0G5+PwSBlbGmP27qz3XTrpX78HYUHh7IOLHFjP03ehtkcZC/Qp/l6p2ICh2QR4d30LAAb0mB/NeYwVX6PYrE/HtAI5VF3B2oWrRV8Qc6JOzyV9Th/gwPS/3XfXMXjfEl2zFOSEIOSEebLddto4XVug/VczWqMN7hbJVSI/ghTm9OPJJg/+Y0ZEPgAh6eh/5fq9wkbPbMc7WyQ1deuz6/iZq87cX9/9hr7tYXi7UokzfriDncx9u2aldF8oY+YaQbjrua2JFeUP0EdCrJt5GSPUajklaE7BnL8jG6e1KpctEbqC2AQ0KGxtq85coJmy1A4/DMqu/lj9XTmvFS9znmvzSlHjz5PJvuld/ZRZDWIKWIxWyZFvPoqoGOoljC5dzW0lV2o8zNAmOK2YGPAC0S3MSKuSbvEvbl2E5owQNCwVpEq8E8NrQfw8ATWDb3/zV5r1dAU1SNbNx1SKROgGkw3GAc9oVKwgpHuOeQpfxLE9YP7X9ZhRQRG NT2nGJ8d kq9cfBcxRdcM50VPfCuU7hLen6DfWaVkd+cxHTebQz99IE+WhAloK4SZEA8hEGCzsKHM27/2T+YfV/BzqhzBoB1zlU2a6Sn3G25T7ZuUbkE/jRMIMdSeicHQktfj77uf1XKYBgPjYHiswnSBsOIXh3fmyIHjjjxm2hwzEdz7JkmTOM9Ia7xhmXK5NwHBRTQrr7RdB0WvuyTJjX5riiisbLKrSsu59Ol/06wNeaAaaEQCB5FaNXSCAx0neNErrSvG7YaF2ozE0ClIghFpvxqh+9khf3WaMe1jOzvZVbXLudGry7FlMvbtibBq0YsAOb+mSlzZlKAonCzioTY2nGQA3yznEI1d0PMjCUmGJsyoUPcQFGomUHXvgE8Mk4K3sI6n2odqtgf5knQt7rFSVQ9L1La3069DBkqLd/l32+WMSGcaIHUxtg09GNg0oEw== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On 04.06.23 16:27, Kai Huang wrote: > Certain SEAMCALL leaf functions may return error due to running out of > entropy, in which case the SEAMCALL should be retried as suggested by > the TDX spec. > > Handle this case in SEAMCALL common function. Mimic the existing > rdrand_long() to retry RDRAND_RETRY_LOOPS times. > > Signed-off-by: Kai Huang > --- > > v10 -> v11: > - New patch > > --- > arch/x86/virt/vmx/tdx/tdx.c | 15 ++++++++++++++- > arch/x86/virt/vmx/tdx/tdx.h | 17 +++++++++++++++++ > 2 files changed, 31 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/virt/vmx/tdx/tdx.c b/arch/x86/virt/vmx/tdx/tdx.c > index e82713dd5d54..e62e978eba1b 100644 > --- a/arch/x86/virt/vmx/tdx/tdx.c > +++ b/arch/x86/virt/vmx/tdx/tdx.c > @@ -15,6 +15,7 @@ > #include > #include > #include > +#include > #include > #include "tdx.h" > > @@ -33,12 +34,24 @@ static int __always_unused seamcall(u64 fn, u64 rcx, u64 rdx, u64 r8, u64 r9, > struct tdx_module_output *out) > { > int cpu, ret = 0; > + int retry; > u64 sret; > > /* Need a stable CPU id for printing error message */ > cpu = get_cpu(); > > - sret = __seamcall(fn, rcx, rdx, r8, r9, out); > + /* > + * Certain SEAMCALL leaf functions may return error due to > + * running out of entropy, in which case the SEAMCALL should > + * be retried. Handle this in SEAMCALL common function. > + * > + * Mimic the existing rdrand_long() to retry > + * RDRAND_RETRY_LOOPS times. > + */ > + retry = RDRAND_RETRY_LOOPS; Nit: I'd just do a "int retry = RDRAND_RETRY_LOOPS" and simplify this comment to "Mimic rdrand_long() retry behavior." > + do { > + sret = __seamcall(fn, rcx, rdx, r8, r9, out); > + } while (sret == TDX_RND_NO_ENTROPY && --retry); > > /* Save SEAMCALL return code if the caller wants it */ > if (seamcall_ret) > diff --git a/arch/x86/virt/vmx/tdx/tdx.h b/arch/x86/virt/vmx/tdx/tdx.h > index 48ad1a1ba737..55dbb1b8c971 100644 > --- a/arch/x86/virt/vmx/tdx/tdx.h > +++ b/arch/x86/virt/vmx/tdx/tdx.h > @@ -4,6 +4,23 @@ > > #include > > +/* > + * This file contains both macros and data structures defined by the TDX > + * architecture and Linux defined software data structures and functions. > + * The two should not be mixed together for better readability. The > + * architectural definitions come first. > + */ > + > +/* > + * TDX SEAMCALL error codes > + */ > +#define TDX_RND_NO_ENTROPY 0x8000020300000000ULL > + > +/* > + * Do not put any hardware-defined TDX structure representations below > + * this comment! > + */ > + > struct tdx_module_output; > u64 __seamcall(u64 fn, u64 rcx, u64 rdx, u64 r8, u64 r9, > struct tdx_module_output *out); In general, LGTM Reviewed-by: David Hildenbrand -- Cheers, David / dhildenb