Received: by 2002:a05:7412:b130:b0:e2:908c:2ebd with SMTP id az48csp1522738rdb; Sat, 18 Nov 2023 22:31:01 -0800 (PST) X-Google-Smtp-Source: AGHT+IGnkskxn/5V8gip18yzH53Uiv3oRkTmdnTWwTwDFfL3IT91UDWx5OCOsUUfy67rwENDtNS3 X-Received: by 2002:a81:6dd6:0:b0:5a7:ec51:9218 with SMTP id i205-20020a816dd6000000b005a7ec519218mr4603716ywc.25.1700375461702; Sat, 18 Nov 2023 22:31:01 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700375461; cv=none; d=google.com; s=arc-20160816; b=BgoFtAbZ8M4Gkw2IwdN0ivcbXgb+o1JVQ5LguaXI0EIGPfjd8VtU5Nu25Nvwds8bOC zDSsptUjNL2FsDuMnU1uf1uQa85QMQztv+fVJUzKmZtWiSAuu7V62ED2rz2z1E2klzF8 V4moxoTenRmIQ3gwgIodUjb6GKVOfvv/l3afwPkTrWj6Bo6VT9RQzUpSuGfOUXWgmZPy TXX+FMzBI3SQHHQsbA7bI1XQLM+QXyi6VJ2kxURIXvZJfyJv7VJGmWfFVMucwOu/kJVb JhnHLgpN+zVu9mIos1ssRgVYTRcpdV/QumD2g842jXtFiCDsGAXBjinrUJixsIe24euY tHPA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:subject:user-agent:mime-version:date:message-id :dkim-signature; bh=bI/lAlkzqwTqfk3WqDC4Q+3Y4F6ZmvVj7XT0322iC7Q=; fh=jl2YI9KMyINyV9YV+dfcKTZAAIvCChgBgsib/rSRh5Y=; b=S93OW9kONWjhSzXomXXSso0VU2Ft+Yui2cmkDRwhe7tnsRN3lBKt4IZZsll8EyeDAR iltrTPaG9OqxtgFnzbtOU+nVMbfznn0u8haxk9V3BCvYgyXuJFvLM7VMRjMPEDPFxgJW GaKavinHlXUakZT2Z28whb8MYe7Wutf0xqyhR9ep/LYPNaGaMTeoACrZbMkHLr3/Cuh4 Z7i7VZstRZdp0LXknEQKGBijcpjxGIuqbk/K0zJLH+HylHmWrF2j72DeK+ki2zWYEtnr hvXnEoNNtDXMHxBxe6rhgcYpzfx+uUvD0d7iTnzUXWV0YlMPA3deJrTfx5ITSd1mxi0E ml7g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="neLJOy/5"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from agentk.vger.email (agentk.vger.email. [23.128.96.32]) by mx.google.com with ESMTPS id f35-20020a635123000000b005be232472e6si5788045pgb.474.2023.11.18.22.31.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Nov 2023 22:31:01 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) client-ip=23.128.96.32; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="neLJOy/5"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id 0DEAE8054ED1; Sat, 18 Nov 2023 22:30:59 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229668AbjKSGae (ORCPT + 99 others); Sun, 19 Nov 2023 01:30:34 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42778 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229454AbjKSGac (ORCPT ); Sun, 19 Nov 2023 01:30:32 -0500 Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.120]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 757AF192; Sat, 18 Nov 2023 22:30:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1700375427; x=1731911427; h=message-id:date:mime-version:subject:to:cc:references: from:in-reply-to:content-transfer-encoding; bh=fhSYPSwlbRdQhxu9SEMKRyeeuCTTrwd3mBt02oFDXq8=; b=neLJOy/59k1fMHpsDrvyHL58ubIbLSO+X3/IL0uyAHQQJci2LcmYWxGI 8gv6Be5Ou+Odv4pNsQgUx4wySh1Ny6Bz2vhyQoxE5CtqqcZ6I8QJiXxuZ Mu0DiKEpaBS6QgsUackE7m1ZsdAcu0Ae/65ZYrpcxcff9xL1D37qutu0u meJHUVvJJqNAhgyBQOBcORSCqelbgSzZA5teOmPDiLbAvtx44RnJDMN5M Yl6ErP8/RioyrxIepchIwKgDSJkoQbB6AVmGiL6hurkHMO/D7stOOG+fw HAI4sTJLUScnztTGDjGDTgY765w/dDR+4FPHC8/ATujLcsbHORMxucW2m A==; X-IronPort-AV: E=McAfee;i="6600,9927,10898"; a="390333290" X-IronPort-AV: E=Sophos;i="6.04,210,1695711600"; d="scan'208";a="390333290" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Nov 2023 22:30:26 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10898"; a="795180209" X-IronPort-AV: E=Sophos;i="6.04,210,1695711600"; d="scan'208";a="795180209" Received: from binbinwu-mobl.ccr.corp.intel.com (HELO [10.93.8.180]) ([10.93.8.180]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Nov 2023 22:30:22 -0800 Message-ID: <2a5a38d9-28e2-4718-b8fc-2b8f27610706@linux.intel.com> Date: Sun, 19 Nov 2023 14:30:19 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v17 020/116] KVM: TDX: create/destroy VM structure To: isaku.yamahata@intel.com Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, isaku.yamahata@gmail.com, Paolo Bonzini , erdemaktas@google.com, Sean Christopherson , Sagi Shahar , David Matlack , Kai Huang , Zhi Wang , chen.bo@intel.com, hang.yuan@intel.com, tina.zhang@intel.com, Sean Christopherson References: <997a92e4f667b497166ff8cc777ec8025b0f22bc.1699368322.git.isaku.yamahata@intel.com> From: Binbin Wu In-Reply-To: <997a92e4f667b497166ff8cc777ec8025b0f22bc.1699368322.git.isaku.yamahata@intel.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (agentk.vger.email [0.0.0.0]); Sat, 18 Nov 2023 22:30:59 -0800 (PST) On 11/7/2023 10:55 PM, isaku.yamahata@intel.com wrote: > From: Isaku Yamahata > > As the first step to create TDX guest, create/destroy VM struct. Assign > TDX private Host Key ID (HKID) to the TDX guest for memory encryption and > allocate extra pages for the TDX guest. On destruction, free allocated > pages, and HKID. > > Before tearing down private page tables, TDX requires some resources of the > guest TD to be destroyed (i.e. HKID must have been reclaimed, etc). Add > mmu notifier release callback before tearing down private page tables for > it. > > Add vm_free() of kvm_x86_ops hook at the end of kvm_arch_destroy_vm() > because some per-VM TDX resources, e.g. TDR, need to be freed after other > TDX resources, e.g. HKID, were freed. > > Co-developed-by: Kai Huang > Signed-off-by: Kai Huang > Signed-off-by: Sean Christopherson > Signed-off-by: Isaku Yamahata > > --- [...] > + > +static int tdx_reclaim_page(hpa_t pa) > +{ > + int r; > + > + r = __tdx_reclaim_page(pa); > + if (!r) > + tdx_clear_page(pa); > + return r; > +} > + > +static void tdx_reclaim_td_page(unsigned long td_page_pa) This function is used to reclaim td control sturcture pages like TDCX, TDVPX, TDVPR. Should this function name be more specific? For me, it is a bit confusing. Or maybe do "td page" have specific meaning referring to these control structures pages in TDX? > +{ > + WARN_ON_ONCE(!td_page_pa); > + > + /* > + * TDCX are being reclaimed. TDX module maps TDCX with HKID > + * assigned to the TD. Here the cache associated to the TD > + * was already flushed by TDH.PHYMEM.CACHE.WB before here, So > + * cache doesn't need to be flushed again. > + */ > + if (tdx_reclaim_page(td_page_pa)) > + /* > + * Leak the page on failure: > + * tdx_reclaim_page() returns an error if and only if there's an > + * unexpected, fatal error, e.g. a SEAMCALL with bad params, > + * incorrect concurrency in KVM, a TDX Module bug, etc. > + * Retrying at a later point is highly unlikely to be > + * successful. > + * No log here as tdx_reclaim_page() already did. > + */ > + return; > + free_page((unsigned long)__va(td_page_pa)); > +} > + [...]