mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00

Doing: #include <linux/mem_encrypt.h> Causes a bunch of compiler failures due to missing implicit includes that don't happen on x86: ../arch/arm64/include/asm/rsi_cmds.h:117:2: error: call to undeclared library function 'memcpy' with type 'void *(void *, const void *, unsigned long)'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] 117 | memcpy(®s.a1, challenge, size); ../arch/arm64/include/asm/mem_encrypt.h:19:49: warning: declaration of 'struct device' will not be visible outside of this function [-Wvisibility] 19 | static inline bool force_dma_unencrypted(struct device *dev) ../arch/arm64/include/asm/rsi_cmds.h:44:38: error: call to undeclared function 'virt_to_phys'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] 44 | arm_smccc_smc(SMC_RSI_REALM_CONFIG, virt_to_phys(cfg), Add the missing includes to the arch/arm headers to avoid this. Signed-off-by: Jason Gunthorpe <jgg@nvidia.com> Link: https://lore.kernel.org/r/0-v1-47aadfbd64cd+25795-arm_memenc_h_jgg@nvidia.com Signed-off-by: Will Deacon <will@kernel.org>
37 lines
1,015 B
C
37 lines
1,015 B
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
#ifndef __ASM_MEM_ENCRYPT_H
|
|
#define __ASM_MEM_ENCRYPT_H
|
|
|
|
#include <asm/rsi.h>
|
|
|
|
struct device;
|
|
|
|
struct arm64_mem_crypt_ops {
|
|
int (*encrypt)(unsigned long addr, int numpages);
|
|
int (*decrypt)(unsigned long addr, int numpages);
|
|
};
|
|
|
|
int arm64_mem_crypt_ops_register(const struct arm64_mem_crypt_ops *ops);
|
|
|
|
int set_memory_encrypted(unsigned long addr, int numpages);
|
|
int set_memory_decrypted(unsigned long addr, int numpages);
|
|
|
|
int realm_register_memory_enc_ops(void);
|
|
|
|
static inline bool force_dma_unencrypted(struct device *dev)
|
|
{
|
|
return is_realm_world();
|
|
}
|
|
|
|
/*
|
|
* For Arm CCA guests, canonical addresses are "encrypted", so no changes
|
|
* required for dma_addr_encrypted().
|
|
* The unencrypted DMA buffers must be accessed via the unprotected IPA,
|
|
* "top IPA bit" set.
|
|
*/
|
|
#define dma_addr_unencrypted(x) ((x) | PROT_NS_SHARED)
|
|
|
|
/* Clear the "top" IPA bit while converting back */
|
|
#define dma_addr_canonical(x) ((x) & ~PROT_NS_SHARED)
|
|
|
|
#endif /* __ASM_MEM_ENCRYPT_H */
|