# SPDX-License-Identifier: GPL-2.0
#
# Copyright 2020-2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.

# Amazon Nitro Enclaves (NE) support.
# Nitro is a hypervisor that has been developed by Amazon.

config NITRO_ENCLAVES
	tristate "Nitro Enclaves Support"
	depends on (ARM64 || X86) && HOTPLUG_CPU && PCI && SMP
	help
	  This driver consists of support for enclave lifetime management
	  for Nitro Enclaves (NE).

	  To compile this driver as a module, choose M here.
	  The module will be called nitro_enclaves.

config NITRO_ENCLAVES_MISC_DEV_TEST
	bool "Tests for the misc device functionality of the Nitro Enclaves" if !KUNIT_ALL_TESTS
	depends on NITRO_ENCLAVES && KUNIT
	default KUNIT_ALL_TESTS
	help
	  Enable KUnit tests for the misc device functionality of the Nitro
	  Enclaves. Select this option only if you will boot the kernel for
	  the purpose of running unit tests (e.g. under UML or qemu). If
	  unsure, say N.
