tools/arm: tee: add "tee" option for xl.cfg

This enumeration controls TEE type for a domain. Currently there is
two possible options: either 'none' or 'optee'.

'none' is the default value and it basically disables TEE support at
all.

'optee' enables access to the OP-TEE running on a host machine. This
requires special OP-TEE build with virtualization support enabled.

Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
This commit is contained in:
Volodymyr Babchuk authored and Julien Grall committed 2019-09-18 14:45:27 +01:00
1 parent dffb6c488a
commit 2e32cd9929
5 files changed
+62

No files matched your search

+29
View File
@@ -1544,6 +1544,35 @@ Set maximum height for pointer device.
=back
=item B<tee="STRING">
B<Arm only.> Set TEE type for the guest. TEE is a Trusted Execution
Environment -- separate secure OS found on some platforms. B<STRING> can be one of the:
=over 4
=item B<none>
"Don't allow the guest to use TEE if present on the platform. This is
the default value.
=item B<optee>
Allow a guest to access the host OP-TEE OS. Xen will mediate the
access to OP-TEE and the resource isolation will be provided directly
by OP-TEE. OP-TEE itself may limit the number of guests that can
concurrently use it. This requires a virtualization-aware OP-TEE for
this to work.
You can refer to
L<OP-TEE documentation|https://optee.readthedocs.io/architecture/virtualization.html>
for more information about how to enable and configure virtualization support
in OP-TEE.
This feature is a B<technology preview>.
=back
=back
=head2 Paravirtualised (PV) Guest Specific Options
+5
View File
@@ -273,6 +273,11 @@
*/
#define LIBXL_HAVE_BUILDINFO_ARM_GIC_VERSION 1
/*
* libxl_domain_build_info has the arch_arm.tee field.
*/
#define LIBXL_HAVE_BUILDINFO_ARCH_ARM_TEE 1
/*
* LIBXL_HAVE_SOFT_RESET indicates that libxl supports performing
* 'soft reset' for domains and there is 'soft_reset' shutdown reason
+13
View File
@@ -89,6 +89,19 @@ int libxl__arch_domain_prepare_config(libxl__gc *gc,
return ERROR_FAIL;
}
switch (d_config->b_info.tee) {
case LIBXL_TEE_TYPE_NONE:
config->arch.tee_type = XEN_DOMCTL_CONFIG_TEE_NONE;
break;
case LIBXL_TEE_TYPE_OPTEE:
config->arch.tee_type = XEN_DOMCTL_CONFIG_TEE_OPTEE;
break;
default:
LOG(ERROR, "Unknown TEE type %d",
d_config->b_info.tee);
return ERROR_FAIL;
}
return 0;
}
+6
View File
@@ -460,6 +460,11 @@ libxl_gic_version = Enumeration("gic_version", [
(0x30, "v3")
], init_val = "LIBXL_GIC_VERSION_DEFAULT")
libxl_tee_type = Enumeration("tee_type", [
(0, "none"),
(1, "optee")
], init_val = "LIBXL_TEE_TYPE_NONE")
libxl_rdm_reserve = Struct("rdm_reserve", [
("strategy", libxl_rdm_reserve_strategy),
("policy", libxl_rdm_reserve_policy),
@@ -537,6 +542,7 @@ libxl_domain_build_info = Struct("domain_build_info",[
("nested_hvm", libxl_defbool),
("apic", libxl_defbool),
("dm_restrict", libxl_defbool),
("tee", libxl_tee_type),
("u", KeyedUnion(None, libxl_domain_type, "type",
[("hvm", Struct(None, [("firmware", string),
("bios", libxl_bios_type),
+9
View File
@@ -2691,6 +2691,15 @@ skip_usbdev:
}
}
if (!xlu_cfg_get_string (config, "tee", &buf, 1)) {
e = libxl_tee_type_from_string(buf, &b_info->tee);
if (e) {
fprintf(stderr,
"Unknown tee \"%s\" specified\n", buf);
exit(-ERROR_FAIL);
}
}
parse_vkb_list(config, d_config);
xlu_cfg_destroy(config);
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.