xref: /openbmc/linux/arch/x86/include/asm/unaccepted_memory.h (revision 2612e3bbc0386368a850140a6c9b990cd496a5ec)
175d090fdSKirill A. Shutemov #ifndef _ASM_X86_UNACCEPTED_MEMORY_H
275d090fdSKirill A. Shutemov #define _ASM_X86_UNACCEPTED_MEMORY_H
375d090fdSKirill A. Shutemov 
475d090fdSKirill A. Shutemov #include <linux/efi.h>
575d090fdSKirill A. Shutemov #include <asm/tdx.h>
6*6c321179STom Lendacky #include <asm/sev.h>
775d090fdSKirill A. Shutemov 
arch_accept_memory(phys_addr_t start,phys_addr_t end)875d090fdSKirill A. Shutemov static inline void arch_accept_memory(phys_addr_t start, phys_addr_t end)
975d090fdSKirill A. Shutemov {
1075d090fdSKirill A. Shutemov 	/* Platform-specific memory-acceptance call goes here */
1175d090fdSKirill A. Shutemov 	if (cpu_feature_enabled(X86_FEATURE_TDX_GUEST)) {
1275d090fdSKirill A. Shutemov 		if (!tdx_accept_memory(start, end))
1375d090fdSKirill A. Shutemov 			panic("TDX: Failed to accept memory\n");
14*6c321179STom Lendacky 	} else if (cc_platform_has(CC_ATTR_GUEST_SEV_SNP)) {
15*6c321179STom Lendacky 		snp_accept_memory(start, end);
1675d090fdSKirill A. Shutemov 	} else {
1775d090fdSKirill A. Shutemov 		panic("Cannot accept memory: unknown platform\n");
1875d090fdSKirill A. Shutemov 	}
1975d090fdSKirill A. Shutemov }
2075d090fdSKirill A. Shutemov 
efi_get_unaccepted_table(void)2175d090fdSKirill A. Shutemov static inline struct efi_unaccepted_memory *efi_get_unaccepted_table(void)
2275d090fdSKirill A. Shutemov {
2375d090fdSKirill A. Shutemov 	if (efi.unaccepted == EFI_INVALID_TABLE_ADDR)
2475d090fdSKirill A. Shutemov 		return NULL;
2575d090fdSKirill A. Shutemov 	return __va(efi.unaccepted);
2675d090fdSKirill A. Shutemov }
2775d090fdSKirill A. Shutemov #endif
28