From: Matt Fleming <matt-mF/unelCI9GS6iBeEJttW/XRex20P6io@public.gmane.org>
To: Ard Biesheuvel <ard.biesheuvel-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
Cc: linux-efi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
andy.shevchenko-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
pure.logic-SyKdqv6vbfZdzvEItQ6vdLNAH6kLmebB@public.gmane.org,
hock.leong.kweh-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org,
bp-Gina5bIWoIWzQB+pC5nmwQ@public.gmane.org,
sascha.weisenberger-kv7WeFo6aLtBDgjK7y7TUQ@public.gmane.org,
jan.kiszka-kv7WeFo6aLtBDgjK7y7TUQ@public.gmane.org
Subject: Re: [PATCH 8/8] efi/capsule: Add support for Quark security header
Date: Tue, 18 Apr 2017 13:48:53 +0100 [thread overview]
Message-ID: <20170418124853.GH24360@codeblueprint.co.uk> (raw)
In-Reply-To: <20170405092317.27921-9-ard.biesheuvel-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
On Wed, 05 Apr, at 10:23:17AM, Ard Biesheuvel wrote:
> From: Jan Kiszka <jan.kiszka-kv7WeFo6aLtBDgjK7y7TUQ@public.gmane.org>
>
> The firmware for Quark X102x prepends a security header to the capsule
> which is needed to support the mandatory secure boot on this processor.
> The header can be detected by checking for the "_CSH" signature and -
> to avoid any GUID conflict - validating its size field to contain the
> expected value. Then we need to look for the EFI header right after the
> security header and pass the real header to __efi_capsule_setup_info.
>
> To be minimally invasive and maximally safe, the quirk version of
> efi_capsule_identify_image is only effective on Quark processors.
>
> Signed-off-by: Jan Kiszka <jan.kiszka-kv7WeFo6aLtBDgjK7y7TUQ@public.gmane.org>
> Cc: Matt Fleming <matt-mF/unelCI9GS6iBeEJttW/XRex20P6io@public.gmane.org>
> [ardb: refactor using an override of efi_capsule_setup_info()]
> Signed-off-by: Ard Biesheuvel <ard.biesheuvel-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
> ---
> arch/x86/platform/efi/quirks.c | 112 ++++++++++++++++++++
> drivers/firmware/efi/Kconfig | 9 ++
> 2 files changed, 121 insertions(+)
[...]
> @@ -495,3 +549,61 @@ bool efi_poweroff_required(void)
> {
> return acpi_gbl_reduced_hardware || acpi_no_s5;
> }
> +
> +#ifdef CONFIG_EFI_CAPSULE_QUIRK_QUARK_CSH
> +
> +static const struct x86_cpu_id quark_ids[] = {
> + { X86_VENDOR_INTEL, 5, 9 }, /* Intel Quark X1000 */
> + { }
> +};
> +
> +int efi_capsule_setup_info(struct capsule_info *cap_info, void *kbuff,
> + size_t hdr_bytes)
> +{
> + struct quark_security_header *csh = kbuff;
> +
> + cap_info->total_size = 0;
> +
> + if (!x86_match_cpu(quark_ids))
> + goto fallback;
> +
I'd prefer to see the quark quirk pulled out into its own function and
referenced from the __weak efi_capsule_setup_info() function, which
makes it easier to people to read the EFI capsule code flow if they're
not interested in the Quark quick.
Something like this,
int efi_capsule_setup_info(...)
{
...
if (x86_match_cpu(quark_ids))
return efi_capsule_quark_setup_quirk(cap_info, kbuff, hdr_bytes);
> + if (hdr_bytes < sizeof(efi_capsule_header_t))
> + return 0;
> +
> + memcpy(&cap_info->header, kbuff, sizeof(cap_info->header));
> +
> + cap_info->total_size += cap_info->header.imagesize;
> +
> + return __efi_capsule_setup_info(cap_info);
> +}
Or something.
Otherwise this looks fine to me.
next prev parent reply other threads:[~2017-04-18 12:48 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-05 9:23 [PATCH 0/8] efi: add support for non-standard capsule headers Ard Biesheuvel
[not found] ` <20170405092317.27921-1-ard.biesheuvel-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2017-04-05 9:23 ` [PATCH 1/8] efi/capsule: Fix return code on failing kmap/vmap Ard Biesheuvel
[not found] ` <20170405092317.27921-2-ard.biesheuvel-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2017-04-18 12:30 ` Matt Fleming
2017-04-05 9:23 ` [PATCH 2/8] efi/capsule: Remove pr_debug on ENOMEM or EFAULT Ard Biesheuvel
[not found] ` <20170405092317.27921-3-ard.biesheuvel-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2017-04-18 12:30 ` Matt Fleming
2017-04-05 9:23 ` [PATCH 3/8] efi/capsule: Clean up pr_err/info messages Ard Biesheuvel
[not found] ` <20170405092317.27921-4-ard.biesheuvel-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2017-04-18 12:32 ` Matt Fleming
2017-04-05 9:23 ` [PATCH 4/8] efi/capsule: Adjust return type of efi_capsule_setup_info Ard Biesheuvel
[not found] ` <20170405092317.27921-5-ard.biesheuvel-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2017-04-18 12:33 ` Matt Fleming
2017-04-05 9:23 ` [PATCH 5/8] efi/capsule-loader: use cached copy of capsule header Ard Biesheuvel
[not found] ` <20170405092317.27921-6-ard.biesheuvel-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2017-04-18 12:34 ` Matt Fleming
2017-04-05 9:23 ` [PATCH 6/8] efi/capsule-loader: indirect calls to efi_capsule_setup_info via weak alias Ard Biesheuvel
[not found] ` <20170405092317.27921-7-ard.biesheuvel-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2017-04-18 12:44 ` Matt Fleming
2017-04-05 9:23 ` [PATCH 7/8] efi/capsule-loader: use page addresses rather than struct page pointers Ard Biesheuvel
[not found] ` <20170405092317.27921-8-ard.biesheuvel-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2017-04-18 12:56 ` Matt Fleming
[not found] ` <20170418125631.GI24360-mF/unelCI9GS6iBeEJttW/XRex20P6io@public.gmane.org>
2017-04-18 13:01 ` Ard Biesheuvel
[not found] ` <CAKv+Gu9kz89EVh3s0e+uaQ6AZd_5U6xzos+cXdsGvXyR4aogJQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-04-18 13:42 ` Matt Fleming
2017-04-05 9:23 ` [PATCH 8/8] efi/capsule: Add support for Quark security header Ard Biesheuvel
[not found] ` <20170405092317.27921-9-ard.biesheuvel-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2017-04-18 12:48 ` Matt Fleming [this message]
[not found] ` <20170418124853.GH24360-mF/unelCI9GS6iBeEJttW/XRex20P6io@public.gmane.org>
2017-04-18 12:55 ` Andy Shevchenko
[not found] ` <CAHp75VdqSim86_B=h9vu6veT3t8T8FAdOBfGDov-W9B5GNENwg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-04-18 12:59 ` Jan Kiszka
[not found] ` <4daca591-8937-8256-d7f5-a1075ad7714a-kv7WeFo6aLtBDgjK7y7TUQ@public.gmane.org>
2017-04-18 13:44 ` Matt Fleming
[not found] ` <20170418134426.GK24360-mF/unelCI9GS6iBeEJttW/XRex20P6io@public.gmane.org>
2017-04-18 13:46 ` Ard Biesheuvel
[not found] ` <CAKv+Gu_wM-TaZn9jgOW4yCwyjh4cTbszOagKmJdrAdov+3GCsQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-04-18 17:10 ` Ard Biesheuvel
[not found] ` <CAKv+Gu-uXd30gcUvi_9dErj2bzvTpwVzGR7yiZMgm1KcQHz0dw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-04-18 18:11 ` Jan Kiszka
2017-04-10 16:34 ` [PATCH 0/8] efi: add support for non-standard capsule headers Jan Kiszka
2017-04-18 16:26 ` Bryan O'Donoghue
[not found] ` <f417e914-7b95-9886-fb8f-bca79d5456a3-SyKdqv6vbfZdzvEItQ6vdLNAH6kLmebB@public.gmane.org>
2017-04-18 16:23 ` Ard Biesheuvel
[not found] ` <CAKv+Gu9b7ELU4RtcojrSwCmZg8p-oqXzmdTSVqzAhma1Rg+jQQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-04-18 16:28 ` Jan Kiszka
2017-04-18 16:31 ` Bryan O'Donoghue
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170418124853.GH24360@codeblueprint.co.uk \
--to=matt-mf/unelci9gs6ibeejttw/xrex20p6io@public.gmane.org \
--cc=andy.shevchenko-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=ard.biesheuvel-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
--cc=bp-Gina5bIWoIWzQB+pC5nmwQ@public.gmane.org \
--cc=hock.leong.kweh-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=jan.kiszka-kv7WeFo6aLtBDgjK7y7TUQ@public.gmane.org \
--cc=linux-efi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=pure.logic-SyKdqv6vbfZdzvEItQ6vdLNAH6kLmebB@public.gmane.org \
--cc=sascha.weisenberger-kv7WeFo6aLtBDgjK7y7TUQ@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.