Message ID | 20200422130724.3581-1-maxim.uvarov@linaro.org |
---|---|
State | New |
Headers | show |
Series | [PATCHv2] add optee dts entry for secure machine | expand |
Kindly ping to merge this patch. For more detail. This patch creates a dtb entry to load the optee driver which is needed for secure boot (atf+optee+uboot+linux). Kernel part is already there: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/tee/optee/core.c?h=v5.7-rc3#n705 .compatible = "linaro,optee-tz" Thank you, Maxim. On Wed, 22 Apr 2020 at 16:07, Maxim Uvarov <maxim.uvarov@linaro.org> wrote: > > Add optee compatible string for dtb to force linux > to boot optee module. > > Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org> > --- > v2: added method. > hw/arm/virt.c | 18 ++++++++++++++++++ > 1 file changed, 18 insertions(+) > > diff --git a/hw/arm/virt.c b/hw/arm/virt.c > index 656b008..c937a82 100644 > --- a/hw/arm/virt.c > +++ b/hw/arm/virt.c > @@ -1335,6 +1335,23 @@ static void create_platform_bus(VirtMachineState *vms) > sysbus_mmio_get_region(s, 0)); > } > > +static void create_secure_tee(VirtMachineState *vms) > +{ > + char *firmware; > + char *optee; > + > + firmware = g_strdup_printf("/firmware"); > + qemu_fdt_add_subnode(vms->fdt, firmware); > + > + optee = g_strdup_printf("/firmware/optee"); > + qemu_fdt_add_subnode(vms->fdt, optee); > + qemu_fdt_setprop_string(vms->fdt, optee, "compatible", "linaro,optee-tz"); > + qemu_fdt_setprop_string(vms->fdt, optee, "method", "smc"); > + > + g_free(optee); > + g_free(firmware); > +} > + > static void create_secure_ram(VirtMachineState *vms, > MemoryRegion *secure_sysmem) > { > @@ -1720,6 +1737,7 @@ static void machvirt_init(MachineState *machine) > if (vms->secure) { > create_secure_ram(vms, secure_sysmem); > create_uart(vms, VIRT_SECURE_UART, secure_sysmem, serial_hd(1)); > + create_secure_tee(vms); > } > > vms->highmem_ecam &= vms->highmem && (!firmware_loaded || aarch64); > -- > 2.17.1 >
diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 656b008..c937a82 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -1335,6 +1335,23 @@ static void create_platform_bus(VirtMachineState *vms) sysbus_mmio_get_region(s, 0)); } +static void create_secure_tee(VirtMachineState *vms) +{ + char *firmware; + char *optee; + + firmware = g_strdup_printf("/firmware"); + qemu_fdt_add_subnode(vms->fdt, firmware); + + optee = g_strdup_printf("/firmware/optee"); + qemu_fdt_add_subnode(vms->fdt, optee); + qemu_fdt_setprop_string(vms->fdt, optee, "compatible", "linaro,optee-tz"); + qemu_fdt_setprop_string(vms->fdt, optee, "method", "smc"); + + g_free(optee); + g_free(firmware); +} + static void create_secure_ram(VirtMachineState *vms, MemoryRegion *secure_sysmem) { @@ -1720,6 +1737,7 @@ static void machvirt_init(MachineState *machine) if (vms->secure) { create_secure_ram(vms, secure_sysmem); create_uart(vms, VIRT_SECURE_UART, secure_sysmem, serial_hd(1)); + create_secure_tee(vms); } vms->highmem_ecam &= vms->highmem && (!firmware_loaded || aarch64);
Add optee compatible string for dtb to force linux to boot optee module. Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org> --- v2: added method. hw/arm/virt.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) -- 2.17.1