Received: by 2002:a89:413:0:b0:1fd:dba5:e537 with SMTP id m19csp696329lqs; Fri, 14 Jun 2024 03:02:53 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCVhxJ+h22TnJ9IMffykyZ90uNW6PeWwdAz/01UxlUN7s3m3GnvkofAEoceDqVU4amGnk6HWgPNcKMDjFWK92mLgpLNSL7/tTmDrZ5wyuw== X-Google-Smtp-Source: AGHT+IExKsWGjgQHoMWiPvxnShXyMs3h89tHIfdoP1E5G9rX7PfHwbE0VDkqwk2wbc4Qc+otEkxC X-Received: by 2002:a05:6808:171b:b0:3d2:3811:bc84 with SMTP id 5614622812f47-3d24ea0cbc1mr1937354b6e.58.1718359372775; Fri, 14 Jun 2024 03:02:52 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1718359372; cv=pass; d=google.com; s=arc-20160816; b=NKmWEAkLV6uTCWe8jhXUtLGn2/UkgJ5tV6/3e6dKAnubnILjQsjisGUQZQfuQX5sTC ggkH5qokDEndpJGpsrx0CzwuAPk9+BNEuXEI0/HFLVpyBM1pqW5cHFiElgPcSGFHkfN2 DA/s0z+lm/XM8Pz9KnBsr68pVDDhzLYXazGw3wY2QUPftxMJVqG4kfxe9eZVv+fC5yNL CgjaGopMJfaFh80vGY8f7zpY/IYXKfzvsaIFCG6F5T6F67ofRzbYcrUiV3Kwx8o2XD2u 0M7YMd/w5zICeYKp+b0/XSenKAPKDRzZvuH/BXnZidkPFn3ZvkmOM2fpc2KCQr8J6R7e zfQQ== 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=MWW1oVYd6Xj2ms9jAipZ2GRSWZTMn3mUItthmusj1oY=; fh=jKzY+IJTxktZ685R93VhJUbGF0rvTl3iTwtLazyIugI=; b=jJcmuY4f2zrr4XZQZbjw3OkwQVkYbyArQWdyvehSbQf1QzpRFyZlpz90ROwEzyLN3L 00kGOz30q0i00dvSBH2IkVENi7MsKtOYq0NsMGPBh7H/FsAbT81aKJol7zUQZFKX27la v9CXpejZD2W2cmlkLTNZXlAZnrSiPs0XA51bCzh+4bV4XhPh4FEjOPsiAeDBO3j8vboM cMBIH8qLxEdTvcQYNM9RMomnETPbphBBx6f93b/jWPbmidJgC/LrHzs39jO9v/mCvwqr PsPWlb80Z7CwlrtKzaWWsCvP4m9RA40mEf56FenXue53TLyv4E1QXGdpKi4LgS34nw2E n3uQ==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=TKo1scMc; arc=pass (i=1 dkim=pass dkdomain=intel.com dmarc=pass fromdomain=linux.intel.com); spf=pass (google.com: domain of linux-kernel+bounces-214714-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-214714-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [2604:1380:45d1:ec00::1]) by mx.google.com with ESMTPS id af79cd13be357-798abe59848si332479785a.594.2024.06.14.03.02.52 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Jun 2024 03:02:52 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-214714-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) client-ip=2604:1380:45d1:ec00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=TKo1scMc; arc=pass (i=1 dkim=pass dkdomain=intel.com dmarc=pass fromdomain=linux.intel.com); spf=pass (google.com: domain of linux-kernel+bounces-214714-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-214714-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 ny.mirrors.kernel.org (Postfix) with ESMTPS id 3B6C81C2611B for ; Fri, 14 Jun 2024 10:02:23 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id A941719A29F; Fri, 14 Jun 2024 09:59:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="TKo1scMc" Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.16]) (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 E5FDD195FE5; Fri, 14 Jun 2024 09:59:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.16 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718359166; cv=none; b=XF8ECXQYL4kXJYoJuCF/KbzC/4GN9JZK4S2l1zpHmsNkMP4NveDXWq61k8zeZ+LqTHFRaxFyg6hc6Ls1rsZRNkBGNqOmPfzPdv50bVrZufppcD9N25kA78vl23qR1o7LCi7UwLNsaPA1fBqkVv5Nfvx7/YIc2Hfwn9Jga/DRFzY= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718359166; c=relaxed/simple; bh=vMAUzycpMKArP020PRsibNB/a1B3MTtv6nj6DDJJbg4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=vFIOjCYumU4k12JuoHfMmL9H8pl85rfIsEQLTaqsf6rLKVCj4hZqECG6JdxyIf3RUQ6/VRoyxDPC6RdImPDEYdQBiGGHjwK7oQ/vwKv1WcNJOsGq+iVVhIB6jnKfPe7ZBTOVx7xgMwTJPm2UDlnC7ZCR98LIjGnqGyyhbRtrKmU= 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=TKo1scMc; arc=none smtp.client-ip=192.198.163.16 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=1718359164; x=1749895164; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=vMAUzycpMKArP020PRsibNB/a1B3MTtv6nj6DDJJbg4=; b=TKo1scMcC9dCQ5aLaTpcw1tFYO+D2KIQwJVD+o6VPohTylCgCNKiK2+U JcKycP1FXPH2/MMqgiDVrsjSNMRN97eF+29fcgsJO1qKp6YnrS5/v7sda zBbHcyfBd2+X//JtAI7vAIq1/YQkB/8mhWEWLLIk/W/ETtvMlOqEAPgLe xAEK73tJEzDFfYsPjnixeisQyaIRtXZZXJLf3n6mB2cnybNVDggBKjbgv Tv6feY9kL5T0O7Dx29inv1KnmqccbW4P7Y2VRzr775cAMB5v3Kna2jia/ uZMwRaOF1Czms6IkcUmXTu5tv1lrgLMgt6WwDaO6YlH94VxETqDK4c6Ln Q==; X-CSE-ConnectionGUID: 1PAp0eKgQfmk3F4bCCsiog== X-CSE-MsgGUID: Zb6TuuBlQlmIfbcVjZJCWg== X-IronPort-AV: E=McAfee;i="6700,10204,11102"; a="12072383" X-IronPort-AV: E=Sophos;i="6.08,237,1712646000"; d="scan'208";a="12072383" Received: from fmviesa004.fm.intel.com ([10.60.135.144]) by fmvoesa110.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Jun 2024 02:59:23 -0700 X-CSE-ConnectionGUID: yg2GzZ0nR0mCYXIueUV0tQ== X-CSE-MsgGUID: CghLlVdVThaOPXPOp4nOSw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.08,237,1712646000"; d="scan'208";a="44995849" Received: from black.fi.intel.com ([10.237.72.28]) by fmviesa004.fm.intel.com with ESMTP; 14 Jun 2024 02:59:17 -0700 Received: by black.fi.intel.com (Postfix, from userid 1000) id EBD162A3B; Fri, 14 Jun 2024 12:59:08 +0300 (EEST) 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" , Ard Biesheuvel , Baoquan He , "H. Peter Anvin" , "Kirill A. Shutemov" , "K. Y. Srinivasan" , Haiyang Zhang , kexec@lists.infradead.org, linux-hyperv@vger.kernel.org, linux-acpi@vger.kernel.org, linux-coco@lists.linux.dev, linux-kernel@vger.kernel.org, Tao Liu Subject: [PATCHv12 09/19] x86/tdx: Account shared memory Date: Fri, 14 Jun 2024 12:58:54 +0300 Message-ID: <20240614095904.1345461-10-kirill.shutemov@linux.intel.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240614095904.1345461-1-kirill.shutemov@linux.intel.com> References: <20240614095904.1345461-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. Memory conversion is slow and does not happen often. Global atomic is not going to be a bottleneck. Signed-off-by: Kirill A. Shutemov Reviewed-by: Kai Huang Tested-by: Tao Liu --- 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