On 01/21/2016 10:09 PM, Emil Velikov wrote: > Hi Alexandre, > > On 18 January 2016 at 06:10, Alexandre Courbot <acourbot@xxxxxxxxxx> wrote: > > [snip] >> +static const char * >> +managed_falcons_names[] = { >> + [NVKM_SECBOOT_FALCON_PMU] = "PMU", >> + [NVKM_SECBOOT_FALCON_RESERVED] = "<invalid>", > "<reserved>" perhaps ? we already have one invalid below. Does <reserved> really mean: "we don't want to tell you?" here? :) > >> + [NVKM_SECBOOT_FALCON_FECS] = "FECS", >> + [NVKM_SECBOOT_FALCON_GPCCS] = "GPCCS", >> + [NVKM_SECBOOT_FALCON_END] = "<invalid>", >> +}; >> + > > [snip] >> +int >> +nvkm_secboot_ctor(const struct nvkm_secboot_func *func, >> + struct nvkm_device *device, int index, >> + struct nvkm_secboot *sb) >> +{ >> + unsigned long fid; >> + >> + nvkm_subdev_ctor(&nvkm_secboot, device, index, 0, &sb->subdev); >> + sb->func = func; >> + > Move these two after the switch statement ? They need to be done here to make the failure path cleanup stuff work correctly, so it's correct as-is. > >> + /* setup the performing falcon's base address and masks */ >> + switch (func->boot_falcon) { >> + case NVKM_SECBOOT_FALCON_PMU: >> + sb->base = 0x10a000; >> + sb->irq_mask = 0x1000000; >> + sb->enable_mask = 0x2000; >> + break; >> + default: >> + nvdev_error(device, "invalid secure boot falcon\n"); >> + return -EINVAL; >> + }; >> + >> + nvkm_info(&sb->subdev, "securely managed falcons:\n"); >> + for_each_set_bit(fid, &sb->func->managed_falcons, >> + NVKM_SECBOOT_FALCON_END) >> + nvkm_info(&sb->subdev, "- %s\n", managed_falcons_names[fid]); >> + >> + return 0; >> +} > > Cheers, > Emil >
Attachment:
signature.asc
Description: OpenPGP digital signature