sme_postprocess_startup() marks the __start_bss_decrypted pages shared for AMD SME only, so here set_memory_encrypted() should be called for AMD SME only, i.e. don't call the set_memory_encrypted() for TDX, otherwise the error "failed to free unused decrypted pages" appears in 'dmesg'. Fixes: b3f0907c71e0 ("x86/mm: Add .bss..decrypted section to hold shared variables") Signed-off-by: Dexuan Cui <decui@xxxxxxxxxxxxx> --- arch/x86/mm/mem_encrypt_amd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/mm/mem_encrypt_amd.c b/arch/x86/mm/mem_encrypt_amd.c index 9c4d8dbcb129..fd9b58402a22 100644 --- a/arch/x86/mm/mem_encrypt_amd.c +++ b/arch/x86/mm/mem_encrypt_amd.c @@ -516,7 +516,7 @@ void __init mem_encrypt_free_decrypted_mem(void) * The unused memory range was mapped decrypted, change the encryption * attribute from decrypted to encrypted before freeing it. */ - if (cc_platform_has(CC_ATTR_MEM_ENCRYPT)) { + if (sme_me_mask && cc_platform_has(CC_ATTR_MEM_ENCRYPT)) { r = set_memory_encrypted(vaddr, npages); if (r) { pr_warn("failed to free unused decrypted pages\n"); -- 2.25.1