From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.11]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7357E2DAFBA for ; Tue, 25 Nov 2025 09:14:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.11 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764062051; cv=none; b=eQwu7C5KeAObElvxfL3wEzEvf7VWADNBa0fHHpfGk5PsWYw1OUhxyVQw4ltxjnwMyveu7k02/XE5VFLr5h7U0pAtjxTCCu6rQElwm0EMtDHmFbCQhL1+kLQSO72df7v0nDoanmS5PVm1XigOh05CTS3C4PvI15eYD5O6yogwQ/I= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764062051; c=relaxed/simple; bh=3lhJ6hy1eRtw+FaDUJ3gGgqvzhLKanxpNv7sYm/ergk=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=FUwgNyelPDOq58Mi1u1NgBUlL4+QEup6b13MAwFs6t6SqDdg6U4bEpkQ6q1flu3LY8Sd+UNDnyYZf1ByRIFrqEs3+qs+TtRA89naY0wM5K8LAzIJvuuR9PHnkHlpCZLSvkCt18ZWEvcOyE+JazUhElY2fcPHMarAXOpaZojt/YE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=pass smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=KSR6H/nZ; arc=none smtp.client-ip=192.198.163.11 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="KSR6H/nZ" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1764062048; x=1795598048; h=message-id:date:mime-version:subject:to:cc:references: from:in-reply-to:content-transfer-encoding; bh=3lhJ6hy1eRtw+FaDUJ3gGgqvzhLKanxpNv7sYm/ergk=; b=KSR6H/nZQoeo1SdeAExN2LV5iHrTZRrPyAJ/6prBOrPvf+N1oKjOMDvp 7A8D/BKhqnPENu72J/0GDM8uNnArp0COkGVI7hiovbxjbw2rHomdiKcki ySF7VgS2asCkAeAC5gw5YvCUfT+fZq+y9g3SEPqFMabtlNjs7weeJ3XGh PqKqUBRO5ZeGAPHaH1kWEXlM7kApKP4pjGkXNc78OYm8pbFY2xH1PltLs ZrWCqZYdi+nuNOGl4zPPNnmi1BzEntdbg7zuzoUiOptL3wCbIxALdaIHh 2UY2rUjIUi2kg67EWk7wZB+PBQlDuHkPjwXmOUciu//5jma2YACxqPtEf A==; X-CSE-ConnectionGUID: L84ZM0QjR4GXQNzB5OxWGQ== X-CSE-MsgGUID: 96XY71p+SAyIhlsANgemGA== X-IronPort-AV: E=McAfee;i="6800,10657,11623"; a="76698420" X-IronPort-AV: E=Sophos;i="6.20,225,1758610800"; d="scan'208";a="76698420" Received: from orviesa004.jf.intel.com ([10.64.159.144]) by fmvoesa105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Nov 2025 01:14:08 -0800 X-CSE-ConnectionGUID: 5v6NpJF/QVmKtgmtwRIr5g== X-CSE-MsgGUID: po6x+6lgTyeUIEXLTACSbg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.20,225,1758610800"; d="scan'208";a="197064494" Received: from yinghaoj-desk.ccr.corp.intel.com (HELO [10.238.1.225]) ([10.238.1.225]) by orviesa004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Nov 2025 01:14:03 -0800 Message-ID: <3e09b8fb-a24c-4c50-9203-30dce333c4fc@linux.intel.com> Date: Tue, 25 Nov 2025 17:14:01 +0800 Precedence: bulk X-Mailing-List: linux-coco@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v4 10/16] KVM: TDX: Allocate PAMT memory for vCPU control structures To: Rick Edgecombe Cc: bp@alien8.de, chao.gao@intel.com, dave.hansen@intel.com, isaku.yamahata@intel.com, kai.huang@intel.com, kas@kernel.org, kvm@vger.kernel.org, linux-coco@lists.linux.dev, linux-kernel@vger.kernel.org, mingo@redhat.com, pbonzini@redhat.com, seanjc@google.com, tglx@linutronix.de, vannapurve@google.com, x86@kernel.org, yan.y.zhao@intel.com, xiaoyao.li@intel.com, binbin.wu@intel.com References: <20251121005125.417831-1-rick.p.edgecombe@intel.com> <20251121005125.417831-11-rick.p.edgecombe@intel.com> Content-Language: en-US From: Binbin Wu In-Reply-To: <20251121005125.417831-11-rick.p.edgecombe@intel.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 11/21/2025 8:51 AM, Rick Edgecombe wrote: > From: "Kirill A. Shutemov" > > TDX vCPU control structures are provided to the TDX module at 4KB page > size and require PAMT backing. This means for Dynamic PAMT they need to > also have 4KB backings installed. > > Previous changes introduced tdx_alloc_page()/tdx_free_page() that can > allocate a page and automatically handle the DPAMT maintenance. Use them > for vCPU control structures instead of alloc_page()/__free_page(). > > Signed-off-by: Kirill A. Shutemov > [update log] > Signed-off-by: Rick Edgecombe Reviewed-by: Binbin Wu > --- > v3: > - Write log. Reame from “Allocate PAMT memory for TDH.VP.CREATE and > TDH.VP.ADDCX”. > - Remove new line damage > --- > arch/x86/kvm/vmx/tdx.c | 12 +++++------- > 1 file changed, 5 insertions(+), 7 deletions(-) > > diff --git a/arch/x86/kvm/vmx/tdx.c b/arch/x86/kvm/vmx/tdx.c > index 8c4c1221e311..b6d7f4b5f40f 100644 > --- a/arch/x86/kvm/vmx/tdx.c > +++ b/arch/x86/kvm/vmx/tdx.c > @@ -2882,7 +2882,7 @@ static int tdx_td_vcpu_init(struct kvm_vcpu *vcpu, u64 vcpu_rcx) > int ret, i; > u64 err; > > - page = alloc_page(GFP_KERNEL); > + page = tdx_alloc_page(); > if (!page) > return -ENOMEM; > tdx->vp.tdvpr_page = page; > @@ -2902,7 +2902,7 @@ static int tdx_td_vcpu_init(struct kvm_vcpu *vcpu, u64 vcpu_rcx) > } > > for (i = 0; i < kvm_tdx->td.tdcx_nr_pages; i++) { > - page = alloc_page(GFP_KERNEL); > + page = tdx_alloc_page(); > if (!page) { > ret = -ENOMEM; > goto free_tdcx; > @@ -2924,7 +2924,7 @@ static int tdx_td_vcpu_init(struct kvm_vcpu *vcpu, u64 vcpu_rcx) > * method, but the rest are freed here. > */ > for (; i < kvm_tdx->td.tdcx_nr_pages; i++) { > - __free_page(tdx->vp.tdcx_pages[i]); > + tdx_free_page(tdx->vp.tdcx_pages[i]); > tdx->vp.tdcx_pages[i] = NULL; > } > return -EIO; > @@ -2952,16 +2952,14 @@ static int tdx_td_vcpu_init(struct kvm_vcpu *vcpu, u64 vcpu_rcx) > > free_tdcx: > for (i = 0; i < kvm_tdx->td.tdcx_nr_pages; i++) { > - if (tdx->vp.tdcx_pages[i]) > - __free_page(tdx->vp.tdcx_pages[i]); > + tdx_free_page(tdx->vp.tdcx_pages[i]); > tdx->vp.tdcx_pages[i] = NULL; > } > kfree(tdx->vp.tdcx_pages); > tdx->vp.tdcx_pages = NULL; > > free_tdvpr: > - if (tdx->vp.tdvpr_page) > - __free_page(tdx->vp.tdvpr_page); > + tdx_free_page(tdx->vp.tdvpr_page); > tdx->vp.tdvpr_page = NULL; > tdx->vp.tdvpr_pa = 0; >