From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 A090E30F957; Tue, 17 Mar 2026 16:23:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773764612; cv=none; b=bDTVVeTaT1C4+K57XmxuDSerUuZSpG2isFn5GUXryOEP1Ru+k6VLmIehVt5wbu0SVEPY11FDWMP7lo59DzDBJdjYGoSpcC5AHEFYNbB0l6u4ysvDDrXmYzIcqgRqQULyKPQZ9YT0osxdh6357vYMD9yvZ1psj1l3KYg5ZzYn8V8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773764612; c=relaxed/simple; bh=4qhPs0u0MDTJre/3DNAo+CNY3QBGUHi6CuPNrOVlC7k=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ZP3Ywdhw4zE3+ejWF3cXwMwrvkWAXEu1do/trM+liuBY4DaE78cAmYQVBC2Sjqz1I0C4VhpxoiDJKyG+jhAW2oviSvcYnNMZJRXIffNUtLfdojCCUv2aYsEcWFevLk+QMevTSWEtf68CP3SUi+tpc7SIx7ycCtPf7AWx/Uhglx4= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=a1rkcNZI; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="a1rkcNZI" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3EC78C2BC86; Tue, 17 Mar 2026 16:23:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1773764612; bh=4qhPs0u0MDTJre/3DNAo+CNY3QBGUHi6CuPNrOVlC7k=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=a1rkcNZIMYXcSIZhq0m6fmSF2apMPmYwR33DLhOdI8og0z+RTdd3TXZ4jIIatZ1pJ xaQ0DopxjQWvmfXzC6GqzCaeQT9zikgouNNxSiWDyvzIWSPCEPAwJacyLOGJYabQj6 P3fGRqk6xGri3lrOcvpFUqeJQFSBsdZSpFw1esOHJdNeiV9cMPIqmZ7/bFlE+5Z7JO WiPBbgVSN2zkbOzCoOfng8M6IxFuLJYbsTMj0X2P+1I0BXXRuZT3FtIZqyyXYwYNDS WCelvq/pJTZbX6w4fcKf5NcgsZBzBotNxpNu2ixgd2EA9/U3v0SgzOW50t1AhM2L/p DKjBqIwOettIw== From: Tycho Andersen To: Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H. Peter Anvin" , Ashish Kalra , Tom Lendacky , John Allen , Herbert Xu , "David S. Miller" , Ard Biesheuvel , Neeraj Upadhyay , Kishon Vijay Abraham I , Alexey Kardashevskiy , Nikunj A Dadhania , "Peter Zijlstra (Intel)" , Kim Phillips , Sean Christopherson Cc: linux-kernel@vger.kernel.org, linux-crypto@vger.kernel.org, "Tycho Andersen (AMD)" Subject: [PATCH v3 7/7] crypto: ccp - Update HV_FIXED page states to allow freeing of memory Date: Tue, 17 Mar 2026 10:21:57 -0600 Message-ID: <20260317162157.150842-8-tycho@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260317162157.150842-1-tycho@kernel.org> References: <20260317162157.150842-1-tycho@kernel.org> Precedence: bulk X-Mailing-List: linux-crypto@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Tom Lendacky After SNP is disabled, any pages allocated as HV_FIXED can now be freed. Update the page state of these pages and the snp_leak_hv_fixed_pages() function to free pages on SNP_SHUTDOWN. Signed-off-by: Tom Lendacky Signed-off-by: Tycho Andersen (AMD) --- drivers/crypto/ccp/sev-dev.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/drivers/crypto/ccp/sev-dev.c b/drivers/crypto/ccp/sev-dev.c index be6f3720e929..eac1181c2f6a 100644 --- a/drivers/crypto/ccp/sev-dev.c +++ b/drivers/crypto/ccp/sev-dev.c @@ -1219,7 +1219,7 @@ static void snp_add_hv_fixed_pages(struct sev_device *sev, struct sev_data_range static void snp_leak_hv_fixed_pages(void) { - struct snp_hv_fixed_pages_entry *entry; + struct snp_hv_fixed_pages_entry *entry, *nentry; /* List is protected by sev_cmd_mutex */ lockdep_assert_held(&sev_cmd_mutex); @@ -1227,10 +1227,16 @@ static void snp_leak_hv_fixed_pages(void) if (list_empty(&snp_hv_fixed_pages)) return; - list_for_each_entry(entry, &snp_hv_fixed_pages, list) - if (entry->page_state == HV_FIXED) + list_for_each_entry_safe(entry, nentry, &snp_hv_fixed_pages, list) { + if (entry->free && entry->page_state != HV_FIXED) + __free_pages(entry->page, entry->order); + else __snp_leak_pages(page_to_pfn(entry->page), 1 << entry->order, false); + + list_del(&entry->list); + kfree(entry); + } } bool sev_is_snp_ciphertext_hiding_supported(void) @@ -2077,6 +2083,7 @@ static int __sev_snp_shutdown_locked(int *error, bool panic) if (data.x86_snp_shutdown) { if (!panic) snp_x86_shutdown(); + snp_hv_fixed_pages_state_update(sev, ALLOCATED); } else { /* * SNP_SHUTDOWN_EX with IOMMU_SNP_SHUTDOWN set to 1 disables SNP -- 2.53.0