From: Sunil V L <sunilvl@ventanamicro.com>
To: Ard Biesheuvel <ardb@kernel.org>
Cc: Paul Walmsley <paul.walmsley@sifive.com>,
Palmer Dabbelt <palmer@dabbelt.com>,
Albert Ou <aou@eecs.berkeley.edu>,
linux-efi <linux-efi@vger.kernel.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
linux-riscv <linux-riscv@lists.infradead.org>,
Heinrich Schuchardt <xypron.glpk@gmx.de>,
Anup Patel <apatel@ventanamicro.com>,
Atish Patra <atishp@rivosinc.com>,
Abner Chang <abner.chang@hpe.com>,
Jessica Clarke <jrtc27@jrtc27.com>
Subject: Re: [RFC PATCH 1/1] riscv/efi_stub: Add support for RISCV_EFI_BOOT_PROTOCOL
Date: Wed, 26 Jan 2022 17:15:49 +0530 [thread overview]
Message-ID: <20220126114549.GA35654@sunil-ThinkPad-T490> (raw)
In-Reply-To: <CAMj1kXGaBJX9qVXQXiFHPySfDz7SWYQ6+cbHvV5v3sw3tEv0Ow@mail.gmail.com>
On Wed, Jan 26, 2022 at 12:13:42PM +0100, Ard Biesheuvel wrote:
> Hello Sunil,
>
> On Wed, 26 Jan 2022 at 12:06, Sunil V L <sunilvl@ventanamicro.com> wrote:
> >
> > This patch adds the support for getting the boot hart ID in
> > Linux EFI stub using RISCV_EFI_BOOT_PROTOCOL.
> >
> > Signed-off-by: Sunil V L <sunilvl@ventanamicro.com>
> > ---
> > drivers/firmware/efi/libstub/efistub.h | 15 ++++++++++++
> > drivers/firmware/efi/libstub/riscv-stub.c | 28 ++++++++++++++++++++---
> > include/linux/efi.h | 1 +
> > 3 files changed, 41 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/firmware/efi/libstub/efistub.h b/drivers/firmware/efi/libstub/efistub.h
> > index edb77b0621ea..0428f8816942 100644
> > --- a/drivers/firmware/efi/libstub/efistub.h
> > +++ b/drivers/firmware/efi/libstub/efistub.h
> > @@ -720,6 +720,21 @@ union efi_tcg2_protocol {
> > } mixed_mode;
> > };
> >
> > +typedef union riscv_efi_boot_protocol riscv_efi_boot_protocol_t;
> > +
> > +union riscv_efi_boot_protocol {
> > + struct {
> > + u64 revision;
> > + efi_status_t (__efiapi *get_boot_hartid)(
> > + riscv_efi_boot_protocol_t *,
> > + size_t *);
> > + };
> > + struct {
> > + u32 revision;
> > + u32 get_boot_hartid;
> > + } mixed_mode;
> > +};
> > +
>
> You don't the mixed mode member here - this is for X64 kernels on IA32
> firmware only.
Ah OK. Thanks for the feedback, Ard. Will remove it in next version.
Thanks
Sunil
>
> > typedef union efi_load_file_protocol efi_load_file_protocol_t;
> > typedef union efi_load_file_protocol efi_load_file2_protocol_t;
> >
> > diff --git a/drivers/firmware/efi/libstub/riscv-stub.c b/drivers/firmware/efi/libstub/riscv-stub.c
> > index 380e4e251399..c7add4eb5453 100644
> > --- a/drivers/firmware/efi/libstub/riscv-stub.c
> > +++ b/drivers/firmware/efi/libstub/riscv-stub.c
> > @@ -46,12 +46,34 @@ static u32 get_boot_hartid_from_fdt(void)
> > return fdt32_to_cpu(*prop);
> > }
> >
> > +static u32 get_boot_hartid_from_efi(void)
> > +{
> > + efi_guid_t boot_protocol_guid = RISCV_EFI_BOOT_PROTOCOL_GUID;
> > + efi_status_t status;
> > + riscv_efi_boot_protocol_t *boot_protocol;
> > + size_t boot_hart_id;
> > +
> > + status = efi_bs_call(locate_protocol, &boot_protocol_guid, NULL,
> > + (void **)&boot_protocol);
> > + if (status == EFI_SUCCESS) {
> > + status = efi_call_proto(boot_protocol,
> > + get_boot_hartid, &boot_hart_id);
> > + if (status == EFI_SUCCESS) {
> > + return (u32)boot_hart_id;
> > + }
> > + }
> > + return U32_MAX;
> > +}
> > +
> > efi_status_t check_platform_features(void)
> > {
> > - hartid = get_boot_hartid_from_fdt();
> > + hartid = get_boot_hartid_from_efi();
> > if (hartid == U32_MAX) {
> > - efi_err("/chosen/boot-hartid missing or invalid!\n");
> > - return EFI_UNSUPPORTED;
> > + hartid = get_boot_hartid_from_fdt();
> > + if (hartid == U32_MAX) {
> > + efi_err("/chosen/boot-hartid missing or invalid!\n");
> > + return EFI_UNSUPPORTED;
> > + }
> > }
> > return EFI_SUCCESS;
> > }
> > diff --git a/include/linux/efi.h b/include/linux/efi.h
> > index ccd4d3f91c98..9822c730207c 100644
> > --- a/include/linux/efi.h
> > +++ b/include/linux/efi.h
> > @@ -380,6 +380,7 @@ void efi_native_runtime_setup(void);
> > #define EFI_CONSOLE_OUT_DEVICE_GUID EFI_GUID(0xd3b36f2c, 0xd551, 0x11d4, 0x9a, 0x46, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d)
> > #define APPLE_PROPERTIES_PROTOCOL_GUID EFI_GUID(0x91bd12fe, 0xf6c3, 0x44fb, 0xa5, 0xb7, 0x51, 0x22, 0xab, 0x30, 0x3a, 0xe0)
> > #define EFI_TCG2_PROTOCOL_GUID EFI_GUID(0x607f766c, 0x7455, 0x42be, 0x93, 0x0b, 0xe4, 0xd7, 0x6d, 0xb2, 0x72, 0x0f)
> > +#define RISCV_EFI_BOOT_PROTOCOL_GUID EFI_GUID(0xccd15fec, 0x6f73, 0x4eec, 0x83, 0x95, 0x3e, 0x69, 0xe4, 0xb9, 0x40, 0xbf)
> > #define EFI_LOAD_FILE_PROTOCOL_GUID EFI_GUID(0x56ec3091, 0x954c, 0x11d2, 0x8e, 0x3f, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b)
> > #define EFI_LOAD_FILE2_PROTOCOL_GUID EFI_GUID(0x4006c0c1, 0xfcb3, 0x403e, 0x99, 0x6d, 0x4a, 0x6c, 0x87, 0x24, 0xe0, 0x6d)
> > #define EFI_RT_PROPERTIES_TABLE_GUID EFI_GUID(0xeb66918a, 0x7eef, 0x402a, 0x84, 0x2e, 0x93, 0x1d, 0x21, 0xc3, 0x8a, 0xe9)
> > --
> > 2.25.1
> >
WARNING: multiple messages have this Message-ID (diff)
From: Sunil V L <sunilvl@ventanamicro.com>
To: Ard Biesheuvel <ardb@kernel.org>
Cc: Paul Walmsley <paul.walmsley@sifive.com>,
Palmer Dabbelt <palmer@dabbelt.com>,
Albert Ou <aou@eecs.berkeley.edu>,
linux-efi <linux-efi@vger.kernel.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
linux-riscv <linux-riscv@lists.infradead.org>,
Heinrich Schuchardt <xypron.glpk@gmx.de>,
Anup Patel <apatel@ventanamicro.com>,
Atish Patra <atishp@rivosinc.com>,
Abner Chang <abner.chang@hpe.com>,
Jessica Clarke <jrtc27@jrtc27.com>
Subject: Re: [RFC PATCH 1/1] riscv/efi_stub: Add support for RISCV_EFI_BOOT_PROTOCOL
Date: Wed, 26 Jan 2022 17:15:49 +0530 [thread overview]
Message-ID: <20220126114549.GA35654@sunil-ThinkPad-T490> (raw)
In-Reply-To: <CAMj1kXGaBJX9qVXQXiFHPySfDz7SWYQ6+cbHvV5v3sw3tEv0Ow@mail.gmail.com>
On Wed, Jan 26, 2022 at 12:13:42PM +0100, Ard Biesheuvel wrote:
> Hello Sunil,
>
> On Wed, 26 Jan 2022 at 12:06, Sunil V L <sunilvl@ventanamicro.com> wrote:
> >
> > This patch adds the support for getting the boot hart ID in
> > Linux EFI stub using RISCV_EFI_BOOT_PROTOCOL.
> >
> > Signed-off-by: Sunil V L <sunilvl@ventanamicro.com>
> > ---
> > drivers/firmware/efi/libstub/efistub.h | 15 ++++++++++++
> > drivers/firmware/efi/libstub/riscv-stub.c | 28 ++++++++++++++++++++---
> > include/linux/efi.h | 1 +
> > 3 files changed, 41 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/firmware/efi/libstub/efistub.h b/drivers/firmware/efi/libstub/efistub.h
> > index edb77b0621ea..0428f8816942 100644
> > --- a/drivers/firmware/efi/libstub/efistub.h
> > +++ b/drivers/firmware/efi/libstub/efistub.h
> > @@ -720,6 +720,21 @@ union efi_tcg2_protocol {
> > } mixed_mode;
> > };
> >
> > +typedef union riscv_efi_boot_protocol riscv_efi_boot_protocol_t;
> > +
> > +union riscv_efi_boot_protocol {
> > + struct {
> > + u64 revision;
> > + efi_status_t (__efiapi *get_boot_hartid)(
> > + riscv_efi_boot_protocol_t *,
> > + size_t *);
> > + };
> > + struct {
> > + u32 revision;
> > + u32 get_boot_hartid;
> > + } mixed_mode;
> > +};
> > +
>
> You don't the mixed mode member here - this is for X64 kernels on IA32
> firmware only.
Ah OK. Thanks for the feedback, Ard. Will remove it in next version.
Thanks
Sunil
>
> > typedef union efi_load_file_protocol efi_load_file_protocol_t;
> > typedef union efi_load_file_protocol efi_load_file2_protocol_t;
> >
> > diff --git a/drivers/firmware/efi/libstub/riscv-stub.c b/drivers/firmware/efi/libstub/riscv-stub.c
> > index 380e4e251399..c7add4eb5453 100644
> > --- a/drivers/firmware/efi/libstub/riscv-stub.c
> > +++ b/drivers/firmware/efi/libstub/riscv-stub.c
> > @@ -46,12 +46,34 @@ static u32 get_boot_hartid_from_fdt(void)
> > return fdt32_to_cpu(*prop);
> > }
> >
> > +static u32 get_boot_hartid_from_efi(void)
> > +{
> > + efi_guid_t boot_protocol_guid = RISCV_EFI_BOOT_PROTOCOL_GUID;
> > + efi_status_t status;
> > + riscv_efi_boot_protocol_t *boot_protocol;
> > + size_t boot_hart_id;
> > +
> > + status = efi_bs_call(locate_protocol, &boot_protocol_guid, NULL,
> > + (void **)&boot_protocol);
> > + if (status == EFI_SUCCESS) {
> > + status = efi_call_proto(boot_protocol,
> > + get_boot_hartid, &boot_hart_id);
> > + if (status == EFI_SUCCESS) {
> > + return (u32)boot_hart_id;
> > + }
> > + }
> > + return U32_MAX;
> > +}
> > +
> > efi_status_t check_platform_features(void)
> > {
> > - hartid = get_boot_hartid_from_fdt();
> > + hartid = get_boot_hartid_from_efi();
> > if (hartid == U32_MAX) {
> > - efi_err("/chosen/boot-hartid missing or invalid!\n");
> > - return EFI_UNSUPPORTED;
> > + hartid = get_boot_hartid_from_fdt();
> > + if (hartid == U32_MAX) {
> > + efi_err("/chosen/boot-hartid missing or invalid!\n");
> > + return EFI_UNSUPPORTED;
> > + }
> > }
> > return EFI_SUCCESS;
> > }
> > diff --git a/include/linux/efi.h b/include/linux/efi.h
> > index ccd4d3f91c98..9822c730207c 100644
> > --- a/include/linux/efi.h
> > +++ b/include/linux/efi.h
> > @@ -380,6 +380,7 @@ void efi_native_runtime_setup(void);
> > #define EFI_CONSOLE_OUT_DEVICE_GUID EFI_GUID(0xd3b36f2c, 0xd551, 0x11d4, 0x9a, 0x46, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d)
> > #define APPLE_PROPERTIES_PROTOCOL_GUID EFI_GUID(0x91bd12fe, 0xf6c3, 0x44fb, 0xa5, 0xb7, 0x51, 0x22, 0xab, 0x30, 0x3a, 0xe0)
> > #define EFI_TCG2_PROTOCOL_GUID EFI_GUID(0x607f766c, 0x7455, 0x42be, 0x93, 0x0b, 0xe4, 0xd7, 0x6d, 0xb2, 0x72, 0x0f)
> > +#define RISCV_EFI_BOOT_PROTOCOL_GUID EFI_GUID(0xccd15fec, 0x6f73, 0x4eec, 0x83, 0x95, 0x3e, 0x69, 0xe4, 0xb9, 0x40, 0xbf)
> > #define EFI_LOAD_FILE_PROTOCOL_GUID EFI_GUID(0x56ec3091, 0x954c, 0x11d2, 0x8e, 0x3f, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b)
> > #define EFI_LOAD_FILE2_PROTOCOL_GUID EFI_GUID(0x4006c0c1, 0xfcb3, 0x403e, 0x99, 0x6d, 0x4a, 0x6c, 0x87, 0x24, 0xe0, 0x6d)
> > #define EFI_RT_PROPERTIES_TABLE_GUID EFI_GUID(0xeb66918a, 0x7eef, 0x402a, 0x84, 0x2e, 0x93, 0x1d, 0x21, 0xc3, 0x8a, 0xe9)
> > --
> > 2.25.1
> >
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
next prev parent reply other threads:[~2022-01-26 11:46 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-26 11:06 [RFC PATCH 0/1] RISCV_EFI_BOOT_PROTOCOL support in linux Sunil V L
2022-01-26 11:06 ` Sunil V L
2022-01-26 11:06 ` [RFC PATCH 1/1] riscv/efi_stub: Add support for RISCV_EFI_BOOT_PROTOCOL Sunil V L
2022-01-26 11:06 ` Sunil V L
2022-01-26 11:13 ` Ard Biesheuvel
2022-01-26 11:13 ` Ard Biesheuvel
2022-01-26 11:45 ` Sunil V L [this message]
2022-01-26 11:45 ` Sunil V L
2022-01-27 7:47 ` Heinrich Schuchardt
2022-01-27 7:47 ` Heinrich Schuchardt
2022-01-28 5:16 ` Sunil V L
2022-01-28 5:16 ` Sunil V L
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=20220126114549.GA35654@sunil-ThinkPad-T490 \
--to=sunilvl@ventanamicro.com \
--cc=abner.chang@hpe.com \
--cc=aou@eecs.berkeley.edu \
--cc=apatel@ventanamicro.com \
--cc=ardb@kernel.org \
--cc=atishp@rivosinc.com \
--cc=jrtc27@jrtc27.com \
--cc=linux-efi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=palmer@dabbelt.com \
--cc=paul.walmsley@sifive.com \
--cc=xypron.glpk@gmx.de \
/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.