Received: by 2002:ab2:6857:0:b0:1ef:ffd0:ce49 with SMTP id l23csp2719129lqp; Mon, 25 Mar 2024 07:29:13 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCUcYreM7imHiz4VQTT2W52I2vNknXwO/aLHZbIaWMFm3CJsRSEXhXBJfLlK4EnKhznIBj03Qd/qpDYFweWFLuRp7080WFK5tqk9AuLIKw== X-Google-Smtp-Source: AGHT+IHKAb3jKf3/Oml/jyMtIpmvVYK7TmYeR9ox6WWTPODdxzJK0GKRGZrp7RY4wOVdtBk8jXZ/ X-Received: by 2002:ac2:5b87:0:b0:515:8564:28c8 with SMTP id o7-20020ac25b87000000b00515856428c8mr4788830lfn.67.1711376951482; Mon, 25 Mar 2024 07:29:11 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1711376951; cv=pass; d=google.com; s=arc-20160816; b=U88n6/Kg6ETNR0TngYWLZk1Q0KPd3iImFU0uau+4LRfHRHf/QiOoi5M4WKpEmhlAkA mzj8ryVcqcU3c3wnLQ7R8j3pilCowYeHDvocCZ76S5J8EfIg2xU1nArzu/v6b+6O1Cs6 yUOdxbfRk1HTyIrYc3+bdI5+7+NcXjPH6aYYz8FM6+mnFxm8jLU/CVNx897cngwG3AFk WYzyzM6WmQNXG/HsuwBj4ukHWmj0vAvwc/qvX5UuqXVp2US9UYAGal6Te8RhTeXvM1N8 x+AxQL8OWUQ4wlxJu7BVgC4FPdKRIj1cuRyxEhfmEDEHBUN7+s8o0cNHgZpmOBzkPCMG gvCg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=lMlTrFTrr7klW2adN5JqkbNkQ8V2FIXm7+yroDer/Yc=; fh=OvJRnOqsMTm9XoNmEwebcqh9Ud7yh1CTeKAP84ols98=; b=iTxbI0OxZsE0IjpvCeXFKCyid2q85VSYTw55fbvct3Dfx8rrKhklucEdvCZA/E77cJ G371L7homAUStsCs2/zpmU/ku6wbkFWiR/mrQS30JnMXAQgOOYiKlFwhRPEBE0kG2ZRH 6R5gjz4Qfc2qaMT4KSGOzAaq6hOSgKlg3JYgV/ogcbN6+oneO6RdzbtS72O+0XvLPVuw kzf+KsgHidJvAy6wswCOz0tUq/XURCi1VGqg9BaCD1mIuUmOkFQZBn9EbkLthrsL3YTp iXqfBXi+jz79U1w3bYulI+ea6qZ2ak8QBg4Rzi4G5fO4qSSryrOFIdgmFXTb99eJMUX+ /x3w==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=G7Z3tn2I; arc=pass (i=1 dkim=pass dkdomain=intel.com dmarc=pass fromdomain=linux.intel.com); spf=pass (google.com: domain of linux-kernel+bounces-116858-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-116858-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [147.75.80.249]) by mx.google.com with ESMTPS id z18-20020a170906075200b00a46bcf2e1a8si2478697ejb.240.2024.03.25.07.29.11 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Mar 2024 07:29:11 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-116858-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) client-ip=147.75.80.249; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=G7Z3tn2I; arc=pass (i=1 dkim=pass dkdomain=intel.com dmarc=pass fromdomain=linux.intel.com); spf=pass (google.com: domain of linux-kernel+bounces-116858-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-116858-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 2094C1F62508 for ; Mon, 25 Mar 2024 14:29:11 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id A062D1BDB89; Mon, 25 Mar 2024 11:25:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="G7Z3tn2I" Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.14]) (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 22B30149C76 for ; Mon, 25 Mar 2024 10:40:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.14 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711363219; cv=none; b=bFmChVL+3SJsGMuuR1u4LL6cxu0WvhHxY2644TRirF+TkZRic1kMZHv2wrD9jqIEX59o+m00p8fi/yqyeoomvQgbjaHKcdzmKllGPnqaL7kMP4t328kvOlrG10R1ci6g6W0ux1nUGb3JZmNU73QqshBEJu0ANsZzOeEO2tKEB8M= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711363219; c=relaxed/simple; bh=W80pqKoVc1vqxX/XGuHFDF0b+nJhSWWU10+X3joqYlo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=geqrbjvkzzL2RMs6KEDfEwrL2G21aEHmm9fuLiLMEyD+yydi7F2bCEydpN1u/xTQbcavExVp4bwqUy3IlSQxLf1jtbLyFI0Zw+7VF/1e3dIhQw2HZzXIRCjeR3dZD/9RHSOKZ1uN6zxSG3LvaH8IMIijiYwhnNBzKfPdkYn8OrM= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.helo=mgamail.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=G7Z3tn2I; arc=none smtp.client-ip=192.198.163.14 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.helo=mgamail.intel.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1711363218; x=1742899218; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=W80pqKoVc1vqxX/XGuHFDF0b+nJhSWWU10+X3joqYlo=; b=G7Z3tn2I4P37PP88W4L5IEhqk2lb8ynnp3PlK94MaiWoGv9CdaqAqui9 1Mc/htibamLA+HkOGNJxabWezfA1egZeatdsdIRASaul+C9YVrxKxRgEa umSCqE4mnrWpTHcksFqqSmZCJvU103xBx27RUv4qOcEzkLbPDwNnEc3+a k6PLaij854XfBPmGB0U03XYrJ3RErKSWLbMVAguMnD08hbez2U5dwN1r8 NvnQWiRR1HH6Pv3xV4ljK6cv2RY8UI5iFWXcdgTytRKO/WKCExEuAxc/m w0r2RTLwr5PZ1GzSPGl1r9EjC1PTZScqIzYqFdKgppc57EetZvOEVFMKb w==; X-IronPort-AV: E=McAfee;i="6600,9927,11023"; a="6561377" X-IronPort-AV: E=Sophos;i="6.07,152,1708416000"; d="scan'208";a="6561377" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmvoesa108.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Mar 2024 03:40:17 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,11023"; a="937070153" X-IronPort-AV: E=Sophos;i="6.07,152,1708416000"; d="scan'208";a="937070153" Received: from black.fi.intel.com ([10.237.72.28]) by fmsmga001.fm.intel.com with ESMTP; 25 Mar 2024 03:40:11 -0700 Received: by black.fi.intel.com (Postfix, from userid 1000) id 3F720815; Mon, 25 Mar 2024 12:40:05 +0200 (EET) From: "Kirill A. Shutemov" To: Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org Cc: "Rafael J. Wysocki" , Peter Zijlstra , Adrian Hunter , Kuppuswamy Sathyanarayanan , Elena Reshetova , Jun Nakajima , Rick Edgecombe , Tom Lendacky , "Kalra, Ashish" , Sean Christopherson , "Huang, Kai" , Baoquan He , kexec@lists.infradead.org, linux-coco@lists.linux.dev, linux-kernel@vger.kernel.org, "Kirill A. Shutemov" Subject: [PATCHv9 08/17] x86/tdx: Account shared memory Date: Mon, 25 Mar 2024 12:39:02 +0200 Message-ID: <20240325103911.2651793-9-kirill.shutemov@linux.intel.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240325103911.2651793-1-kirill.shutemov@linux.intel.com> References: <20240325103911.2651793-1-kirill.shutemov@linux.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit The kernel will convert all shared memory back to private during kexec. The direct mapping page tables will provide information on which memory is shared. It is extremely important to convert all shared memory. If a page is missed, it will cause the second kernel to crash when it accesses it. Keep track of the number of shared pages. This will allow for cross-checking against the shared information in the direct mapping and reporting if the shared bit is lost. Signed-off-by: Kirill A. Shutemov --- arch/x86/coco/tdx/tdx.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/arch/x86/coco/tdx/tdx.c b/arch/x86/coco/tdx/tdx.c index 26fa47db5782..979891e97d83 100644 --- a/arch/x86/coco/tdx/tdx.c +++ b/arch/x86/coco/tdx/tdx.c @@ -38,6 +38,8 @@ #define TDREPORT_SUBTYPE_0 0 +static atomic_long_t nr_shared; + /* Called from __tdx_hypercall() for unrecoverable failure */ noinstr void __noreturn __tdx_hypercall_failed(void) { @@ -821,6 +823,11 @@ static int tdx_enc_status_change_finish(unsigned long vaddr, int numpages, if (!enc && !tdx_enc_status_changed(vaddr, numpages, enc)) return -EIO; + if (enc) + atomic_long_sub(numpages, &nr_shared); + else + atomic_long_add(numpages, &nr_shared); + return 0; } -- 2.43.0