All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] smbios: Fix BIOS Characteristics Extension Byte 2
@ 2021-06-09 15:14 Ilias Apalodimas
  2021-06-10 10:11 ` Heinrich Schuchardt
  2021-06-26 18:29 ` Simon Glass
  0 siblings, 2 replies; 5+ messages in thread
From: Ilias Apalodimas @ 2021-06-09 15:14 UTC (permalink / raw)
  To: xypron.glpk
  Cc: Ilias Apalodimas, Bin Meng, Simon Glass, Christian Gmeiner, u-boot

We currently define the EFI support of an SMBIOS table as the third bit of
"BIOS Characteristics Extension Byte 1".  The latest DMTF spec defines it
on "BIOS Characteristics Extension Byte 2".

Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
---
 include/smbios.h | 2 +-
 lib/smbios.c     | 5 +++--
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/include/smbios.h b/include/smbios.h
index ffeefb47372d..fc49fc10b9d7 100644
--- a/include/smbios.h
+++ b/include/smbios.h
@@ -60,7 +60,7 @@ struct __packed smbios_entry {
 #define BIOS_CHARACTERISTICS_SELECTABLE_BOOT	(1 << 16)
 
 #define BIOS_CHARACTERISTICS_EXT1_ACPI		(1 << 0)
-#define BIOS_CHARACTERISTICS_EXT1_UEFI		(1 << 3)
+#define BIOS_CHARACTERISTICS_EXT2_UEFI		(1 << 3)
 #define BIOS_CHARACTERISTICS_EXT2_TARGET	(1 << 2)
 
 struct __packed smbios_type0 {
diff --git a/lib/smbios.c b/lib/smbios.c
index 9eb226ec9fbd..abdd157a7084 100644
--- a/lib/smbios.c
+++ b/lib/smbios.c
@@ -214,6 +214,7 @@ static int smbios_write_type0(ulong *current, int handle,
 		gd->smbios_version = ctx->last_str;
 	log_debug("smbios_version = %p: '%s'\n", gd->smbios_version,
 		  gd->smbios_version);
+	t->bios_characteristics_ext2 = 0;
 #ifdef LOG_DEBUG
 	print_buffer((ulong)gd->smbios_version, gd->smbios_version,
 		     1, strlen(gd->smbios_version) + 1, 0);
@@ -229,9 +230,9 @@ static int smbios_write_type0(ulong *current, int handle,
 	t->bios_characteristics_ext1 = BIOS_CHARACTERISTICS_EXT1_ACPI;
 #endif
 #ifdef CONFIG_EFI_LOADER
-	t->bios_characteristics_ext1 |= BIOS_CHARACTERISTICS_EXT1_UEFI;
+	t->bios_characteristics_ext2 |= BIOS_CHARACTERISTICS_EXT2_UEFI;
 #endif
-	t->bios_characteristics_ext2 = BIOS_CHARACTERISTICS_EXT2_TARGET;
+	t->bios_characteristics_ext2 |= BIOS_CHARACTERISTICS_EXT2_TARGET;
 
 	/* bios_major_release has only one byte, so drop century */
 	t->bios_major_release = U_BOOT_VERSION_NUM % 100;
-- 
2.32.0.rc0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] smbios: Fix BIOS Characteristics Extension Byte 2
  2021-06-09 15:14 [PATCH] smbios: Fix BIOS Characteristics Extension Byte 2 Ilias Apalodimas
@ 2021-06-10 10:11 ` Heinrich Schuchardt
  2021-06-10 10:18   ` Ilias Apalodimas
  2021-06-26 18:29 ` Simon Glass
  1 sibling, 1 reply; 5+ messages in thread
From: Heinrich Schuchardt @ 2021-06-10 10:11 UTC (permalink / raw)
  To: Ilias Apalodimas; +Cc: Bin Meng, Simon Glass, Christian Gmeiner, u-boot

On 6/9/21 5:14 PM, Ilias Apalodimas wrote:
> We currently define the EFI support of an SMBIOS table as the third bit of
> "BIOS Characteristics Extension Byte 1".  The latest DMTF spec defines it
> on "BIOS Characteristics Extension Byte 2".
>
> Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
> ---
>   include/smbios.h | 2 +-
>   lib/smbios.c     | 5 +++--
>   2 files changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/include/smbios.h b/include/smbios.h
> index ffeefb47372d..fc49fc10b9d7 100644
> --- a/include/smbios.h
> +++ b/include/smbios.h
> @@ -60,7 +60,7 @@ struct __packed smbios_entry {
>   #define BIOS_CHARACTERISTICS_SELECTABLE_BOOT	(1 << 16)
>
>   #define BIOS_CHARACTERISTICS_EXT1_ACPI		(1 << 0)
> -#define BIOS_CHARACTERISTICS_EXT1_UEFI		(1 << 3)
> +#define BIOS_CHARACTERISTICS_EXT2_UEFI		(1 << 3)
>   #define BIOS_CHARACTERISTICS_EXT2_TARGET	(1 << 2)
>
>   struct __packed smbios_type0 {
> diff --git a/lib/smbios.c b/lib/smbios.c
> index 9eb226ec9fbd..abdd157a7084 100644
> --- a/lib/smbios.c
> +++ b/lib/smbios.c
> @@ -214,6 +214,7 @@ static int smbios_write_type0(ulong *current, int handle,
>   		gd->smbios_version = ctx->last_str;
>   	log_debug("smbios_version = %p: '%s'\n", gd->smbios_version,
>   		  gd->smbios_version);
> +	t->bios_characteristics_ext2 = 0;
>   #ifdef LOG_DEBUG
>   	print_buffer((ulong)gd->smbios_version, gd->smbios_version,
>   		     1, strlen(gd->smbios_version) + 1, 0);
> @@ -229,9 +230,9 @@ static int smbios_write_type0(ulong *current, int handle,
>   	t->bios_characteristics_ext1 = BIOS_CHARACTERISTICS_EXT1_ACPI;

This looks fishy. Where is t->bios_characteristics_ext1 initialized if
CONFIG_GENERATE_ACPI_TABLE=n? efi_smbios_register() does not zero out
the memory.

We should initialize the field irrespective of the configuration and
then use a bitwise or here.

>   #endif
>   #ifdef CONFIG_EFI_LOADER
> -	t->bios_characteristics_ext1 |= BIOS_CHARACTERISTICS_EXT1_UEFI;
> +	t->bios_characteristics_ext2 |= BIOS_CHARACTERISTICS_EXT2_UEFI;
>   #endif
> -	t->bios_characteristics_ext2 = BIOS_CHARACTERISTICS_EXT2_TARGET;
> +	t->bios_characteristics_ext2 |= BIOS_CHARACTERISTICS_EXT2_TARGET;

Where is t->bios_characteristics_ext2 initialized?
We don't want random bytes.

@Simon:
The usage of ulong instead of pointers in this module does not make
sense to me. If the sandbox needs to call it, it should map its virtual
addresses. We should not spill those conversion into non-sandbox code.

Best regards

Heinrich

>
>   	/* bios_major_release has only one byte, so drop century */
>   	t->bios_major_release = U_BOOT_VERSION_NUM % 100;
>


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] smbios: Fix BIOS Characteristics Extension Byte 2
  2021-06-10 10:11 ` Heinrich Schuchardt
@ 2021-06-10 10:18   ` Ilias Apalodimas
  0 siblings, 0 replies; 5+ messages in thread
From: Ilias Apalodimas @ 2021-06-10 10:18 UTC (permalink / raw)
  To: Heinrich Schuchardt
  Cc: Bin Meng, Simon Glass, Christian Gmeiner, U-Boot Mailing List

Hi Heinrich


On Thu, 10 Jun 2021 at 13:16, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
>
> On 6/9/21 5:14 PM, Ilias Apalodimas wrote:
> > We currently define the EFI support of an SMBIOS table as the third bit of
> > "BIOS Characteristics Extension Byte 1".  The latest DMTF spec defines it
> > on "BIOS Characteristics Extension Byte 2".
> >
> > Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
> > ---
> >   include/smbios.h | 2 +-
> >   lib/smbios.c     | 5 +++--
> >   2 files changed, 4 insertions(+), 3 deletions(-)
> >
> > diff --git a/include/smbios.h b/include/smbios.h
> > index ffeefb47372d..fc49fc10b9d7 100644
> > --- a/include/smbios.h
> > +++ b/include/smbios.h
> > @@ -60,7 +60,7 @@ struct __packed smbios_entry {
> >   #define BIOS_CHARACTERISTICS_SELECTABLE_BOOT        (1 << 16)
> >
> >   #define BIOS_CHARACTERISTICS_EXT1_ACPI              (1 << 0)
> > -#define BIOS_CHARACTERISTICS_EXT1_UEFI               (1 << 3)
> > +#define BIOS_CHARACTERISTICS_EXT2_UEFI               (1 << 3)
> >   #define BIOS_CHARACTERISTICS_EXT2_TARGET    (1 << 2)
> >
> >   struct __packed smbios_type0 {
> > diff --git a/lib/smbios.c b/lib/smbios.c
> > index 9eb226ec9fbd..abdd157a7084 100644
> > --- a/lib/smbios.c
> > +++ b/lib/smbios.c
> > @@ -214,6 +214,7 @@ static int smbios_write_type0(ulong *current, int handle,
> >               gd->smbios_version = ctx->last_str;
> >       log_debug("smbios_version = %p: '%s'\n", gd->smbios_version,
> >                 gd->smbios_version);
> > +     t->bios_characteristics_ext2 = 0;
> >   #ifdef LOG_DEBUG
> >       print_buffer((ulong)gd->smbios_version, gd->smbios_version,
> >                    1, strlen(gd->smbios_version) + 1, 0);
> > @@ -229,9 +230,9 @@ static int smbios_write_type0(ulong *current, int handle,
> >       t->bios_characteristics_ext1 = BIOS_CHARACTERISTICS_EXT1_ACPI;
>
> This looks fishy. Where is t->bios_characteristics_ext1 initialized if
> CONFIG_GENERATE_ACPI_TABLE=n? efi_smbios_register() does not zero out
> the memory.
>
> We should initialize the field irrespective of the configuration and
> then use a bitwise or here.
>
> >   #endif
> >   #ifdef CONFIG_EFI_LOADER
> > -     t->bios_characteristics_ext1 |= BIOS_CHARACTERISTICS_EXT1_UEFI;
> > +     t->bios_characteristics_ext2 |= BIOS_CHARACTERISTICS_EXT2_UEFI;
> >   #endif
> > -     t->bios_characteristics_ext2 = BIOS_CHARACTERISTICS_EXT2_TARGET;
> > +     t->bios_characteristics_ext2 |= BIOS_CHARACTERISTICS_EXT2_TARGET;
>
> Where is t->bios_characteristics_ext2 initialized?
> We don't want random bytes.

A few lines above, in this patchset

>
> @Simon:
> The usage of ulong instead of pointers in this module does not make
> sense to me. If the sandbox needs to call it, it should map its virtual
> addresses. We should not spill those conversion into non-sandbox code.
>
> Best regards
>
> Heinrich
>
> >
> >       /* bios_major_release has only one byte, so drop century */
> >       t->bios_major_release = U_BOOT_VERSION_NUM % 100;
> >
>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] smbios: Fix BIOS Characteristics Extension Byte 2
  2021-06-09 15:14 [PATCH] smbios: Fix BIOS Characteristics Extension Byte 2 Ilias Apalodimas
  2021-06-10 10:11 ` Heinrich Schuchardt
@ 2021-06-26 18:29 ` Simon Glass
  2021-06-26 18:40   ` Ilias Apalodimas
  1 sibling, 1 reply; 5+ messages in thread
From: Simon Glass @ 2021-06-26 18:29 UTC (permalink / raw)
  To: Ilias Apalodimas
  Cc: Heinrich Schuchardt, Bin Meng, Christian Gmeiner, U-Boot Mailing List

Hi Ilias,

On Wed, 9 Jun 2021 at 09:14, Ilias Apalodimas
<ilias.apalodimas@linaro.org> wrote:
>
> We currently define the EFI support of an SMBIOS table as the third bit of
> "BIOS Characteristics Extension Byte 1".  The latest DMTF spec defines it
> on "BIOS Characteristics Extension Byte 2".
>
> Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
> ---
>  include/smbios.h | 2 +-
>  lib/smbios.c     | 5 +++--
>  2 files changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/include/smbios.h b/include/smbios.h
> index ffeefb47372d..fc49fc10b9d7 100644
> --- a/include/smbios.h
> +++ b/include/smbios.h
> @@ -60,7 +60,7 @@ struct __packed smbios_entry {
>  #define BIOS_CHARACTERISTICS_SELECTABLE_BOOT   (1 << 16)
>
>  #define BIOS_CHARACTERISTICS_EXT1_ACPI         (1 << 0)
> -#define BIOS_CHARACTERISTICS_EXT1_UEFI         (1 << 3)
> +#define BIOS_CHARACTERISTICS_EXT2_UEFI         (1 << 3)
>  #define BIOS_CHARACTERISTICS_EXT2_TARGET       (1 << 2)
>
>  struct __packed smbios_type0 {
> diff --git a/lib/smbios.c b/lib/smbios.c
> index 9eb226ec9fbd..abdd157a7084 100644
> --- a/lib/smbios.c
> +++ b/lib/smbios.c
> @@ -214,6 +214,7 @@ static int smbios_write_type0(ulong *current, int handle,
>                 gd->smbios_version = ctx->last_str;
>         log_debug("smbios_version = %p: '%s'\n", gd->smbios_version,
>                   gd->smbios_version);
> +       t->bios_characteristics_ext2 = 0;
>  #ifdef LOG_DEBUG
>         print_buffer((ulong)gd->smbios_version, gd->smbios_version,
>                      1, strlen(gd->smbios_version) + 1, 0);
> @@ -229,9 +230,9 @@ static int smbios_write_type0(ulong *current, int handle,
>         t->bios_characteristics_ext1 = BIOS_CHARACTERISTICS_EXT1_ACPI;
>  #endif
>  #ifdef CONFIG_EFI_LOADER

Can you please drop this #ifdef while you are here - should use IS_ENABLED()

> -       t->bios_characteristics_ext1 |= BIOS_CHARACTERISTICS_EXT1_UEFI;
> +       t->bios_characteristics_ext2 |= BIOS_CHARACTERISTICS_EXT2_UEFI;
>  #endif
> -       t->bios_characteristics_ext2 = BIOS_CHARACTERISTICS_EXT2_TARGET;
> +       t->bios_characteristics_ext2 |= BIOS_CHARACTERISTICS_EXT2_TARGET;
>
>         /* bios_major_release has only one byte, so drop century */
>         t->bios_major_release = U_BOOT_VERSION_NUM % 100;
> --
> 2.32.0.rc0
>

Regards,
Simon

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] smbios: Fix BIOS Characteristics Extension Byte 2
  2021-06-26 18:29 ` Simon Glass
@ 2021-06-26 18:40   ` Ilias Apalodimas
  0 siblings, 0 replies; 5+ messages in thread
From: Ilias Apalodimas @ 2021-06-26 18:40 UTC (permalink / raw)
  To: Simon Glass
  Cc: Heinrich Schuchardt, Bin Meng, Christian Gmeiner, U-Boot Mailing List

Hi Simon, 

> >         t->bios_characteristics_ext1 = BIOS_CHARACTERISTICS_EXT1_ACPI;
[...]
> >  #endif
> >  #ifdef CONFIG_EFI_LOADER
> 
> Can you please drop this #ifdef while you are here - should use IS_ENABLED()
> 

I think Heinrich already merged those and sent a request to Tom. Regardless
I'll send a follow up chaning this as well

> > -       t->bios_characteristics_ext1 |= BIOS_CHARACTERISTICS_EXT1_UEFI;
> > +       t->bios_characteristics_ext2 |= BIOS_CHARACTERISTICS_EXT2_UEFI;
> >  #endif
> > -       t->bios_characteristics_ext2 = BIOS_CHARACTERISTICS_EXT2_TARGET;
> > +       t->bios_characteristics_ext2 |= BIOS_CHARACTERISTICS_EXT2_TARGET;
> >
> >         /* bios_major_release has only one byte, so drop century */
> >         t->bios_major_release = U_BOOT_VERSION_NUM % 100;
> > --
> > 2.32.0.rc0
> >
> 
> Regards,
> Simon

Cheers
/Ilias

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-06-26 18:40 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-09 15:14 [PATCH] smbios: Fix BIOS Characteristics Extension Byte 2 Ilias Apalodimas
2021-06-10 10:11 ` Heinrich Schuchardt
2021-06-10 10:18   ` Ilias Apalodimas
2021-06-26 18:29 ` Simon Glass
2021-06-26 18:40   ` Ilias Apalodimas

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.