<entry><varname>protvirt</varname></entry>
<entry>IBM Protected Virtualization (Secure Execution)</entry>
</row>
+ <row>
+ <entry>arm64</entry>
+ <entry><varname>cca</varname></entry>
+ <entry>Arm Confidential Compute Architecture</entry>
+ </row>
</tbody>
</tgroup>
</table>
#include "confidential-virt-fundamental.h"
#include "confidential-virt.h"
+#include "errno-util.h"
#include "fd-util.h"
#include "fileio.h"
#include "missing_threads.h"
return CONFIDENTIAL_VIRTUALIZATION_NONE;
}
+#elif defined(__aarch64__)
+static ConfidentialVirtualization detect_confidential_virtualization_impl(void) {
+ int r;
+ r = RET_NERRNO(access("/sys/devices/platform/arm-cca-dev", F_OK));
+ if (r < 0) {
+ log_debug_errno(r, "Unable to check /sys/devices/platform/arm-cca-dev: %m");
+ return CONFIDENTIAL_VIRTUALIZATION_NONE;
+ }
+
+ return CONFIDENTIAL_VIRTUALIZATION_CCA;
+}
#else /* ! x86_64 */
static ConfidentialVirtualization detect_confidential_virtualization_impl(void) {
log_debug("No confidential virtualization detection on this architecture");
[CONFIDENTIAL_VIRTUALIZATION_SEV_SNP] = "sev-snp",
[CONFIDENTIAL_VIRTUALIZATION_TDX] = "tdx",
[CONFIDENTIAL_VIRTUALIZATION_PROTVIRT] = "protvirt",
+ [CONFIDENTIAL_VIRTUALIZATION_CCA] = "cca",
};
DEFINE_STRING_TABLE_LOOKUP(confidential_virtualization, ConfidentialVirtualization);
CONFIDENTIAL_VIRTUALIZATION_SEV_SNP,
CONFIDENTIAL_VIRTUALIZATION_TDX,
CONFIDENTIAL_VIRTUALIZATION_PROTVIRT,
+ CONFIDENTIAL_VIRTUALIZATION_CCA,
_CONFIDENTIAL_VIRTUALIZATION_MAX,
_CONFIDENTIAL_VIRTUALIZATION_INVALID = -EINVAL,