[Skiboot] [PATCH v2 02/20] libstb: import stb_init() breaking it into multiple files
Claudio Carvalho
cclaudio at linux.vnet.ibm.com
Fri Dec 15 05:06:36 AEDT 2017
On 13/12/2017 22:56, Stewart Smith wrote:
> Claudio Carvalho <cclaudio at linux.vnet.ibm.com> writes:
>> On 13/12/2017 07:51, Stewart Smith wrote:
>>> Claudio Carvalho <cclaudio at linux.vnet.ibm.com> writes:
>>>> diff --git a/libstb/secureboot.c b/libstb/secureboot.c
>>>> new file mode 100644
>>>> index 0000000..cdb6ea5
>>>> --- /dev/null
>>>> +++ b/libstb/secureboot.c
>>> <snip>
>>>> +void secureboot_init(void)
>>>> +{
>>>> + struct dt_node *node;
>>>> + const char *hash_algo;
>>>> + const char *compat = NULL;
>>>> + int version;
>>>> + size_t size;
>>>> +
>>>> + node = dt_find_by_path(dt_root, "/ibm,secureboot");
>>>> + if (!node) {
>>>> + prlog(PR_NOTICE, "secure boot not supported\n");
>>>> + return;
>>>> + }
>>>> +
>>>> + if (!secureboot_is_compatible(node, &version, &compat)) {
>>>> + /**
>>>> + * @fwts-label SecureBootNotCompatible
>>>> + * @fwts-advice Compatible secureboot driver not found. Probably,
>>>> + * hostboot/mambo/skiboot has updated the
>>>> + * /ibm,secureboot/compatible without adding a driver that
>>>> + * supports it.
>>>> + */
>>>> + prlog(PR_ERR, "%s FAILED, /ibm,secureboot not compatible.\n",
>>>> + __func__);
>>>> + return;
>>>> + }
>>>> +
>>>> + prlog(PR_NOTICE, "Found %s\n", compat);
>>>> +
>>>> + if (nvram_query_eq("force-secure-mode", "always")) {
>>>> + secure_mode = true;
>>>> + prlog(PR_NOTICE, "secure mode on (FORCED by nvram)\n");
>>>> + } else {
>>>> + secure_mode = dt_has_node_property(node, "secure-enabled", NULL);
>>>> + prlog(PR_NOTICE, "secure mode %s\n",
>>>> + secure_mode ? "on" : "off");
>>>> + }
>>>> +
>>>> + if (!secure_mode)
>>>> + return;
>>> I'm thinking we should skip this check here, and do the verification and
>>> measurement no matter what, keeping only the check in
>>> secureboot_enforce(). IIRC this is a change from P8 behavior, but
>>> considering we're aiming for "secure boot everywhere", it seems like a
>>> good idea.
>>>
>>> (It's also useful for testing that things are still working well without
>>> having to use the nvram trick).
>>>
>>> I can do that as part of merging if you like.
>>>
>> I think we still need to keep this check here. If the system is *not*
>> booting in secure mode, why do we need to spend cpu cycles and resources
>> initializing the secureboot dependencies such as the Container
>> Verification Code? The dependencies won't be used during boot (and at
>> runtime).
> I was going along the line of thought that we may be able to spot some
> corruption/problem using that infrastructure or at least *warn* the user
> that their firmware *might* not be what they want it to be.
>
> Also, it saves me having to go and flip the jumper on remote machines to
> ensure that the code still works :)
>
> (to be honest, the "not having to go flip a jumper" motivation is pretty
> high for me)
Yep, fair enough. You can remove the secure_mode check as part of
merging if a V3 is not required.
Thanks,
Claudio
More information about the Skiboot
mailing list