public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [PATCH v2 1/4] smbios: type2: contained object handles
@ 2024-01-17 15:33 Heinrich Schuchardt
  2024-01-17 15:33 ` [PATCH v2 2/4] cmd: provide command to display SMBIOS information Heinrich Schuchardt
                   ` (3 more replies)
  0 siblings, 4 replies; 15+ messages in thread
From: Heinrich Schuchardt @ 2024-01-17 15:33 UTC (permalink / raw)
  To: Tom Rini
  Cc: Simon Glass, Ilias Apalodimas, Bin Meng, u-boot,
	Heinrich Schuchardt

The type 2 structure must include information about the contained objects.
It is fine to set the number of contained object handles to 0.

Add the missing field.

Fixes: 721e992a8af5 ("x86: Add SMBIOS table support")
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
---
v2:
	email address updated
---
 include/smbios.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/smbios.h b/include/smbios.h
index b507b9d9d72..98bb9e52cdf 100644
--- a/include/smbios.h
+++ b/include/smbios.h
@@ -139,6 +139,7 @@ struct __packed smbios_type2 {
 	u8 chassis_location;
 	u16 chassis_handle;
 	u8 board_type;
+	u8 number_contained_objects;
 	char eos[SMBIOS_STRUCT_EOS_BYTES];
 };
 
-- 
2.43.0


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

* [PATCH v2 2/4] cmd: provide command to display SMBIOS information
  2024-01-17 15:33 [PATCH v2 1/4] smbios: type2: contained object handles Heinrich Schuchardt
@ 2024-01-17 15:33 ` Heinrich Schuchardt
  2024-01-18 12:39   ` Ilias Apalodimas
  2024-01-24 21:16   ` Tom Rini
  2024-01-17 15:33 ` [PATCH v2 3/4] doc: man-page for smbios command Heinrich Schuchardt
                   ` (2 subsequent siblings)
  3 siblings, 2 replies; 15+ messages in thread
From: Heinrich Schuchardt @ 2024-01-17 15:33 UTC (permalink / raw)
  To: Tom Rini
  Cc: Simon Glass, Ilias Apalodimas, Bin Meng, u-boot,
	Heinrich Schuchardt

U-Boot can either generated an SMBIOS table or copy it from a prior boot
stage, e.g. QEMU.

Provide a command to display the SMBIOS information.

Currently only type 1 and 2 are translated to human readable text.
Other types may be added later. Currently only a hexdump and the list of
strings is provided for these.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
---
v2:
	email address updated
---
 cmd/Kconfig  |   7 ++
 cmd/Makefile |   1 +
 cmd/smbios.c | 191 +++++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 199 insertions(+)
 create mode 100644 cmd/smbios.c

diff --git a/cmd/Kconfig b/cmd/Kconfig
index 26aeeeed03b..43c9c20c8fa 100644
--- a/cmd/Kconfig
+++ b/cmd/Kconfig
@@ -227,6 +227,13 @@ config CMD_SBI
 	help
 	  Display information about the SBI implementation.
 
+config CMD_SMBIOS
+	bool "smbios"
+	depends on SMBIOS
+	default y
+	help
+	  Display the SMBIOS information.
+
 endmenu
 
 menu "Boot commands"
diff --git a/cmd/Makefile b/cmd/Makefile
index e2a2b16ab25..87133cc27a8 100644
--- a/cmd/Makefile
+++ b/cmd/Makefile
@@ -168,6 +168,7 @@ obj-$(CONFIG_CMD_SETEXPR) += setexpr.o
 obj-$(CONFIG_CMD_SETEXPR_FMT) += printf.o
 obj-$(CONFIG_CMD_SPI) += spi.o
 obj-$(CONFIG_CMD_STRINGS) += strings.o
+obj-$(CONFIG_CMD_SMBIOS) += smbios.o
 obj-$(CONFIG_CMD_SMC) += smccc.o
 obj-$(CONFIG_CMD_SYSBOOT) += sysboot.o
 obj-$(CONFIG_CMD_STACKPROTECTOR_TEST) += stackprot_test.o
diff --git a/cmd/smbios.c b/cmd/smbios.c
new file mode 100644
index 00000000000..63f908e92ce
--- /dev/null
+++ b/cmd/smbios.c
@@ -0,0 +1,191 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * The 'smbios' command displays information from the SMBIOS table.
+ *
+ * Copyright (c) 2023, Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
+ */
+
+#include <command.h>
+#include <hexdump.h>
+#include <mapmem.h>
+#include <smbios.h>
+#include <tables_csum.h>
+#include <asm/global_data.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+/**
+ * smbios_get_string() - get SMBIOS string from table
+ *
+ * @table:	SMBIOS table
+ * @index:	index of the string
+ * Return:	address of string, may point to empty string
+ */
+static const char *smbios_get_string(void *table, int index)
+{
+	const char *str = (char *)table +
+			  ((struct smbios_header *)table)->length;
+
+	if (!*str)
+		++str;
+	for (--index; *str && index; --index)
+		str += strlen(str) + 1;
+
+	return str;
+}
+
+static struct smbios_header *next_table(struct smbios_header *table)
+{
+	const char *str;
+
+	if (table->type == SMBIOS_END_OF_TABLE)
+		return NULL;
+
+	str = smbios_get_string(table, 0);
+	return (struct smbios_header *)(++str);
+}
+
+static void smbios_print_generic(struct smbios_header *table)
+{
+	char *str = (char *)table + table->length;
+
+	if (CONFIG_IS_ENABLED(HEXDUMP)) {
+		printf("Header and Data:\n");
+		print_hex_dump("\t", DUMP_PREFIX_OFFSET, 16, 1,
+			       table, table->length, false);
+	}
+	if (*str) {
+		printf("Strings:\n");
+		for (int index = 1; *str; ++index) {
+			printf("\tString %u: %s\n", index, str);
+			str += strlen(str) + 1;
+		}
+	}
+}
+
+void smbios_print_str(const char *label, void *table, u8 index)
+{
+	printf("\t%s: %s\n", label, smbios_get_string(table, index));
+}
+
+static void smbios_print_type1(struct smbios_type1 *table)
+{
+	printf("System Information\n");
+	smbios_print_str("Manufacturer", table, table->manufacturer);
+	smbios_print_str("Product Name", table, table->product_name);
+	smbios_print_str("Version", table, table->version);
+	smbios_print_str("Serial Number", table, table->serial_number);
+	if (table->length >= 0x19) {
+		printf("\tUUID %pUl\n", table->uuid);
+		smbios_print_str("Wake Up Type", table, table->serial_number);
+	}
+	if (table->length >= 0x1b) {
+		smbios_print_str("Serial Number", table, table->serial_number);
+		smbios_print_str("SKU Number", table, table->sku_number);
+	}
+}
+
+static void smbios_print_type2(struct smbios_type2 *table)
+{
+	u16 *handle;
+
+	printf("Base Board Information\n");
+	smbios_print_str("Manufacturer", table, table->manufacturer);
+	smbios_print_str("Product Name", table, table->product_name);
+	smbios_print_str("Version", table, table->version);
+	smbios_print_str("Serial Number", table, table->serial_number);
+	smbios_print_str("Asset Tag", table, table->asset_tag_number);
+	printf("\tFeature Flags: 0x%2x\n", table->feature_flags);
+	smbios_print_str("Chassis Location", table, table->chassis_location);
+	printf("\tChassis Handle: 0x%2x\n", table->chassis_handle);
+	smbios_print_str("Board Type", table, table->board_type);
+	printf("\tContained Object Handles: ");
+	handle = (void *)table->eos;
+	for (int i = 0; i < table->number_contained_objects; ++i)
+		printf("0x%04x ", handle[i]);
+	printf("\n");
+}
+
+static void smbios_print_type127(struct smbios_type127 *table)
+{
+	printf("End Of Table\n");
+}
+
+static int do_smbios(struct cmd_tbl *cmdtp, int flag, int argc,
+		     char *const argv[])
+{
+	ulong addr;
+	void *entry;
+	u32 size;
+	char version[12];
+	struct smbios_header *table;
+	static const char smbios_sig[] = "_SM_";
+	static const char smbios3_sig[] = "_SM3_";
+	size_t count = 0;
+	u32 max_struct_size;
+
+	addr = gd_smbios_start();
+	if (!addr) {
+		log_warning("SMBIOS not available\n");
+		return CMD_RET_FAILURE;
+	}
+	entry = map_sysmem(addr, 0);
+	if (!memcmp(entry, smbios3_sig, sizeof(smbios3_sig) - 1)) {
+		struct smbios3_entry *entry3 = entry;
+
+		table = (void *)(uintptr_t)entry3->struct_table_address;
+		snprintf(version, sizeof(version), "%d.%d.%d",
+			 entry3->major_ver, entry3->minor_ver, entry3->doc_rev);
+		table = (void *)(uintptr_t)entry3->struct_table_address;
+		size = entry3->length;
+		max_struct_size = entry3->max_struct_size;
+	} else if (!memcmp(entry, smbios_sig, sizeof(smbios_sig) - 1)) {
+		struct smbios_entry *entry2 = entry;
+
+		snprintf(version, sizeof(version), "%d.%d",
+			 entry2->major_ver, entry2->minor_ver);
+		table = (void *)(uintptr_t)entry2->struct_table_address;
+		size = entry2->length;
+		max_struct_size = entry2->max_struct_size;
+	} else {
+		log_err("Unknown SMBIOS anchor format\n");
+		return CMD_RET_FAILURE;
+	}
+	if (table_compute_checksum(entry, size)) {
+		log_err("Invalid anchor checksum\n");
+		return CMD_RET_FAILURE;
+	}
+	printf("SMBIOS %s present.\n", version);
+
+	for (struct smbios_header *pos = table; pos; pos = next_table(pos))
+		++count;
+	printf("%zd structures occupying %d bytes\n", count, max_struct_size);
+	printf("Table at 0x%llx\n", (unsigned long long)map_to_sysmem(table));
+
+	for (struct smbios_header *pos = table; pos; pos = next_table(pos)) {
+		printf("\nHandle 0x%04x, DMI type %d, %d bytes at 0x%llx\n",
+		       pos->handle, pos->type, pos->length,
+		       (unsigned long long)map_to_sysmem(pos));
+		switch (pos->type) {
+		case 1:
+			smbios_print_type1((struct smbios_type1 *)pos);
+			break;
+		case 2:
+			smbios_print_type2((struct smbios_type2 *)pos);
+			break;
+		case 127:
+			smbios_print_type127((struct smbios_type127 *)pos);
+			break;
+		default:
+			smbios_print_generic(pos);
+			break;
+		}
+	}
+
+	return CMD_RET_SUCCESS;
+}
+
+U_BOOT_LONGHELP(smbios, "- display SMBIOS information");
+
+U_BOOT_CMD(smbios, 1, 0, do_smbios, "display SMBIOS information",
+	   smbios_help_text);
-- 
2.43.0


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

* [PATCH v2 3/4] doc: man-page for smbios command
  2024-01-17 15:33 [PATCH v2 1/4] smbios: type2: contained object handles Heinrich Schuchardt
  2024-01-17 15:33 ` [PATCH v2 2/4] cmd: provide command to display SMBIOS information Heinrich Schuchardt
@ 2024-01-17 15:33 ` Heinrich Schuchardt
  2024-01-17 15:33 ` [PATCH v2 4/4] test: unit test " Heinrich Schuchardt
  2024-01-17 16:10 ` [PATCH v2 0/4] cmd: provide command to display SMBIOS information Heinrich Schuchardt
  3 siblings, 0 replies; 15+ messages in thread
From: Heinrich Schuchardt @ 2024-01-17 15:33 UTC (permalink / raw)
  To: Tom Rini
  Cc: Simon Glass, Ilias Apalodimas, Bin Meng, u-boot,
	Heinrich Schuchardt

Provide a man-page for the smbios command.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
---
v2:
	no change
---
 doc/usage/cmd/smbios.rst | 93 ++++++++++++++++++++++++++++++++++++++++
 doc/usage/index.rst      |  1 +
 2 files changed, 94 insertions(+)
 create mode 100644 doc/usage/cmd/smbios.rst

diff --git a/doc/usage/cmd/smbios.rst b/doc/usage/cmd/smbios.rst
new file mode 100644
index 00000000000..1ffd706d7de
--- /dev/null
+++ b/doc/usage/cmd/smbios.rst
@@ -0,0 +1,93 @@
+.. SPDX-License-Identifier: GPL-2.0-or-later:
+
+smbios command
+==============
+
+Synopsis
+--------
+
+::
+
+        smbios
+
+Description
+-----------
+
+The smbios command displays information from the SMBIOS tables.
+
+Examples
+--------
+
+The example below shows an example output of the smbios command.
+
+::
+
+    => smbios
+    SMBIOS 2.8.0 present.
+    8 structures occupying 81 bytes
+    Table at 0x6d35018
+
+    Handle 0x0100, DMI type 1, 27 bytes at 0x6d35018
+    System Information
+        Manufacturer: QEMU
+        Product Name: Standard PC (i440FX + PIIX, 1996)
+        Version: pc-i440fx-2.5
+        Serial Number:
+        UUID 00000000-0000-0000-0000-000000000000
+        Wake Up Type:
+        Serial Number:
+        SKU Number:
+
+    Handle 0x0300, DMI type 3, 22 bytes at 0x6d35069
+    Header and Data:
+        00000000: 03 16 00 03 01 01 02 00 00 03 03 03 02 00 00 00
+        00000010: 00 00 00 00 00 00
+    Strings:
+        String 1: QEMU
+        String 2: pc-i440fx-2.5
+
+    Handle 0x0400, DMI type 4, 42 bytes at 0x6d35093
+    Header and Data:
+        00000000: 04 2a 00 04 01 03 01 02 63 06 00 00 fd ab 81 07
+        00000010: 03 00 00 00 d0 07 d0 07 41 01 ff ff ff ff ff ff
+        00000020: 00 00 00 01 01 01 02 00 01 00
+    Strings:
+        String 1: CPU 0
+        String 2: QEMU
+        String 3: pc-i440fx-2.5
+
+    Handle 0x1000, DMI type 16, 23 bytes at 0x6d350d7
+    Header and Data:
+        00000000: 10 17 00 10 01 03 06 00 00 02 00 fe ff 01 00 00
+        00000010: 00 00 00 00 00 00 00
+
+    Handle 0x1100, DMI type 17, 40 bytes at 0x6d350f0
+    Header and Data:
+        00000000: 11 28 00 11 00 10 fe ff ff ff ff ff 80 00 09 00
+        00000010: 01 00 07 02 00 00 00 02 00 00 00 00 00 00 00 00
+        00000020: 00 00 00 00 00 00 00 00
+    Strings:
+        String 1: DIMM 0
+        String 2: QEMU
+
+    Handle 0x1300, DMI type 19, 31 bytes at 0x6d35125
+    Header and Data:
+        00000000: 13 1f 00 13 00 00 00 00 ff ff 01 00 00 10 01 00
+        00000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+
+    Handle 0x2000, DMI type 32, 11 bytes at 0x6d35146
+    Header and Data:
+        00000000: 20 0b 00 20 00 00 00 00 00 00 00
+
+    Handle 0x7f00, DMI type 127, 4 bytes at 0x6d35153
+    End Of Table
+
+Configuration
+-------------
+
+The command is only available if CONFIG_CMD_SMBIOS=y.
+
+Return value
+------------
+
+The return value $? is 0 (true) on success, 1 (false) otherwise.
diff --git a/doc/usage/index.rst b/doc/usage/index.rst
index c171c029b80..0d174eefaa5 100644
--- a/doc/usage/index.rst
+++ b/doc/usage/index.rst
@@ -103,6 +103,7 @@ Shell commands
    cmd/size
    cmd/sleep
    cmd/sm
+   cmd/smbios
    cmd/sound
    cmd/source
    cmd/temperature
-- 
2.43.0


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

* [PATCH v2 4/4] test: unit test for smbios command
  2024-01-17 15:33 [PATCH v2 1/4] smbios: type2: contained object handles Heinrich Schuchardt
  2024-01-17 15:33 ` [PATCH v2 2/4] cmd: provide command to display SMBIOS information Heinrich Schuchardt
  2024-01-17 15:33 ` [PATCH v2 3/4] doc: man-page for smbios command Heinrich Schuchardt
@ 2024-01-17 15:33 ` Heinrich Schuchardt
  2024-01-18 11:51   ` Ilias Apalodimas
  2024-01-17 16:10 ` [PATCH v2 0/4] cmd: provide command to display SMBIOS information Heinrich Schuchardt
  3 siblings, 1 reply; 15+ messages in thread
From: Heinrich Schuchardt @ 2024-01-17 15:33 UTC (permalink / raw)
  To: Tom Rini
  Cc: Simon Glass, Ilias Apalodimas, Bin Meng, u-boot,
	Heinrich Schuchardt

Provide a unit test for the smbios command.

Provide different test functions for QEMU, sandbox, and other systems.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
---
v2:
	for generic boards we only can assume that a type 127 table exists
	email address updated
---
 test/py/tests/test_smbios.py | 41 ++++++++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)
 create mode 100644 test/py/tests/test_smbios.py

diff --git a/test/py/tests/test_smbios.py b/test/py/tests/test_smbios.py
new file mode 100644
index 00000000000..82b0b689830
--- /dev/null
+++ b/test/py/tests/test_smbios.py
@@ -0,0 +1,41 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+"""Test smbios command"""
+
+import pytest
+
+@pytest.mark.buildconfigspec('cmd_smbios')
+@pytest.mark.notbuildconfigspec('qfw_smbios')
+@pytest.mark.notbuildconfigspec('sandbox')
+def test_cmd_smbios(u_boot_console):
+    """Run the smbios command"""
+    output = u_boot_console.run_command('smbios')
+    assert 'DMI type 127,' in output
+
+@pytest.mark.buildconfigspec('cmd_smbios')
+@pytest.mark.buildconfigspec('qfw_smbios')
+@pytest.mark.notbuildconfigspec('sandbox')
+# TODO:
+# QEMU v8.2.0 lacks SMBIOS support for RISC-V
+# Once support is available in our Docker image we can remove the constraint.
+@pytest.mark.notbuildconfigspec('riscv')
+def test_cmd_smbios_qemu(u_boot_console):
+    """Run the smbios command on QEMU"""
+    output = u_boot_console.run_command('smbios')
+    assert 'DMI type 1,' in output
+    assert 'Manufacturer: QEMU' in output
+    assert 'DMI type 127,' in output
+
+@pytest.mark.buildconfigspec('cmd_smbios')
+@pytest.mark.buildconfigspec('sandbox')
+def test_cmd_smbios_sandbox(u_boot_console):
+    """Run the smbios command on the sandbox"""
+    output = u_boot_console.run_command('smbios')
+    assert 'DMI type 0,' in output
+    assert 'String 1: U-Boot' in output
+    assert 'DMI type 1,' in output
+    assert 'Manufacturer: sandbox' in output
+    assert 'DMI type 2,' in output
+    assert 'DMI type 3,' in output
+    assert 'DMI type 4,' in output
+    assert 'DMI type 127,' in output
-- 
2.43.0


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

* [PATCH v2 0/4] cmd: provide command to display SMBIOS information
  2024-01-17 15:33 [PATCH v2 1/4] smbios: type2: contained object handles Heinrich Schuchardt
                   ` (2 preceding siblings ...)
  2024-01-17 15:33 ` [PATCH v2 4/4] test: unit test " Heinrich Schuchardt
@ 2024-01-17 16:10 ` Heinrich Schuchardt
  3 siblings, 0 replies; 15+ messages in thread
From: Heinrich Schuchardt @ 2024-01-17 16:10 UTC (permalink / raw)
  To: Tom Rini
  Cc: Simon Glass, Ilias Apalodimas, Bin Meng, u-boot,
	Heinrich Schuchardt

U-Boot may supply an SMBIOS table or they may be copied from QEMU.

Provide a command to display the SMBIOS information.

Currently only type 1 and 2 are translated to human readable text.
Other types may be added later. Currently only a hexdump and the list of
strings is provided for these.

The following prerequisites had to be fixed:

* The definition of SMBIOS type 2 lacked a field.

v2:
	merged patch remove
	for generic boards we only can assume that a type 127 table exists
	my email address updated in all patches

Heinrich Schuchardt (4):
  smbios: type2: contained object handles
  cmd: provide command to display SMBIOS information
  doc: man-page for smbios command
  test: unit test for smbios command

 cmd/Kconfig                  |   7 ++
 cmd/Makefile                 |   1 +
 cmd/smbios.c                 | 191 +++++++++++++++++++++++++++++++++++
 doc/usage/cmd/smbios.rst     |  93 +++++++++++++++++
 doc/usage/index.rst          |   1 +
 include/smbios.h             |   1 +
 test/py/tests/test_smbios.py |  41 ++++++++
 7 files changed, 335 insertions(+)
 create mode 100644 cmd/smbios.c
 create mode 100644 doc/usage/cmd/smbios.rst
 create mode 100644 test/py/tests/test_smbios.py

-- 
2.43.0


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

* Re: [PATCH v2 4/4] test: unit test for smbios command
  2024-01-17 15:33 ` [PATCH v2 4/4] test: unit test " Heinrich Schuchardt
@ 2024-01-18 11:51   ` Ilias Apalodimas
  2024-01-18 12:33     ` Heinrich Schuchardt
  0 siblings, 1 reply; 15+ messages in thread
From: Ilias Apalodimas @ 2024-01-18 11:51 UTC (permalink / raw)
  To: Heinrich Schuchardt; +Cc: Tom Rini, Simon Glass, Bin Meng, u-boot

Hi Heinrich,

On Wed, 17 Jan 2024 at 17:34, Heinrich Schuchardt
<heinrich.schuchardt@canonical.com> wrote:
>
> Provide a unit test for the smbios command.
>
> Provide different test functions for QEMU, sandbox, and other systems.
>
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
> ---
> v2:
>         for generic boards we only can assume that a type 127 table exists
>         email address updated
> ---
>  test/py/tests/test_smbios.py | 41 ++++++++++++++++++++++++++++++++++++
>  1 file changed, 41 insertions(+)
>  create mode 100644 test/py/tests/test_smbios.py
>
> diff --git a/test/py/tests/test_smbios.py b/test/py/tests/test_smbios.py
> new file mode 100644
> index 00000000000..82b0b689830
> --- /dev/null
> +++ b/test/py/tests/test_smbios.py
> @@ -0,0 +1,41 @@
> +# SPDX-License-Identifier: GPL-2.0-or-later
> +
> +"""Test smbios command"""
> +
> +import pytest
> +
> +@pytest.mark.buildconfigspec('cmd_smbios')
> +@pytest.mark.notbuildconfigspec('qfw_smbios')
> +@pytest.mark.notbuildconfigspec('sandbox')
> +def test_cmd_smbios(u_boot_console):
> +    """Run the smbios command"""
> +    output = u_boot_console.run_command('smbios')
> +    assert 'DMI type 127,' in output
> +
> +@pytest.mark.buildconfigspec('cmd_smbios')
> +@pytest.mark.buildconfigspec('qfw_smbios')
> +@pytest.mark.notbuildconfigspec('sandbox')
> +# TODO:
> +# QEMU v8.2.0 lacks SMBIOS support for RISC-V
> +# Once support is available in our Docker image we can remove the constraint.
> +@pytest.mark.notbuildconfigspec('riscv')
> +def test_cmd_smbios_qemu(u_boot_console):
> +    """Run the smbios command on QEMU"""
> +    output = u_boot_console.run_command('smbios')
> +    assert 'DMI type 1,' in output
> +    assert 'Manufacturer: QEMU' in output
> +    assert 'DMI type 127,' in output

Is there an easy way to run this test with and without the SMBIOS
tables provided by QEMU? We could test the u-boot generated ones that
way

Thanks
/Ilias
> +
> +@pytest.mark.buildconfigspec('cmd_smbios')
> +@pytest.mark.buildconfigspec('sandbox')
> +def test_cmd_smbios_sandbox(u_boot_console):
> +    """Run the smbios command on the sandbox"""
> +    output = u_boot_console.run_command('smbios')
> +    assert 'DMI type 0,' in output
> +    assert 'String 1: U-Boot' in output
> +    assert 'DMI type 1,' in output
> +    assert 'Manufacturer: sandbox' in output
> +    assert 'DMI type 2,' in output
> +    assert 'DMI type 3,' in output
> +    assert 'DMI type 4,' in output
> +    assert 'DMI type 127,' in output
> --
> 2.43.0
>

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

* Re: [PATCH v2 4/4] test: unit test for smbios command
  2024-01-18 11:51   ` Ilias Apalodimas
@ 2024-01-18 12:33     ` Heinrich Schuchardt
  2024-01-18 12:35       ` Ilias Apalodimas
  0 siblings, 1 reply; 15+ messages in thread
From: Heinrich Schuchardt @ 2024-01-18 12:33 UTC (permalink / raw)
  To: Ilias Apalodimas; +Cc: Tom Rini, Simon Glass, Bin Meng, u-boot

On 1/18/24 12:51, Ilias Apalodimas wrote:
> Hi Heinrich,
> 
> On Wed, 17 Jan 2024 at 17:34, Heinrich Schuchardt
> <heinrich.schuchardt@canonical.com> wrote:
>>
>> Provide a unit test for the smbios command.
>>
>> Provide different test functions for QEMU, sandbox, and other systems.
>>
>> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
>> ---
>> v2:
>>          for generic boards we only can assume that a type 127 table exists
>>          email address updated
>> ---
>>   test/py/tests/test_smbios.py | 41 ++++++++++++++++++++++++++++++++++++
>>   1 file changed, 41 insertions(+)
>>   create mode 100644 test/py/tests/test_smbios.py
>>
>> diff --git a/test/py/tests/test_smbios.py b/test/py/tests/test_smbios.py
>> new file mode 100644
>> index 00000000000..82b0b689830
>> --- /dev/null
>> +++ b/test/py/tests/test_smbios.py
>> @@ -0,0 +1,41 @@
>> +# SPDX-License-Identifier: GPL-2.0-or-later
>> +
>> +"""Test smbios command"""
>> +
>> +import pytest
>> +
>> +@pytest.mark.buildconfigspec('cmd_smbios')
>> +@pytest.mark.notbuildconfigspec('qfw_smbios')
>> +@pytest.mark.notbuildconfigspec('sandbox')
>> +def test_cmd_smbios(u_boot_console):
>> +    """Run the smbios command"""
>> +    output = u_boot_console.run_command('smbios')
>> +    assert 'DMI type 127,' in output
>> +
>> +@pytest.mark.buildconfigspec('cmd_smbios')
>> +@pytest.mark.buildconfigspec('qfw_smbios')
>> +@pytest.mark.notbuildconfigspec('sandbox')
>> +# TODO:
>> +# QEMU v8.2.0 lacks SMBIOS support for RISC-V
>> +# Once support is available in our Docker image we can remove the constraint.
>> +@pytest.mark.notbuildconfigspec('riscv')
>> +def test_cmd_smbios_qemu(u_boot_console):
>> +    """Run the smbios command on QEMU"""
>> +    output = u_boot_console.run_command('smbios')
>> +    assert 'DMI type 1,' in output
>> +    assert 'Manufacturer: QEMU' in output
>> +    assert 'DMI type 127,' in output
> 
> Is there an easy way to run this test with and without the SMBIOS
> tables provided by QEMU? We could test the u-boot generated ones that
> way

We already test the sandbox without QFW. I would not want to duplicated 
QEMU defconfigs.

Best regards

Heinrich

> 
> Thanks
> /Ilias
>> +
>> +@pytest.mark.buildconfigspec('cmd_smbios')
>> +@pytest.mark.buildconfigspec('sandbox')
>> +def test_cmd_smbios_sandbox(u_boot_console):
>> +    """Run the smbios command on the sandbox"""
>> +    output = u_boot_console.run_command('smbios')
>> +    assert 'DMI type 0,' in output
>> +    assert 'String 1: U-Boot' in output
>> +    assert 'DMI type 1,' in output
>> +    assert 'Manufacturer: sandbox' in output
>> +    assert 'DMI type 2,' in output
>> +    assert 'DMI type 3,' in output
>> +    assert 'DMI type 4,' in output
>> +    assert 'DMI type 127,' in output
>> --
>> 2.43.0
>>


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

* Re: [PATCH v2 4/4] test: unit test for smbios command
  2024-01-18 12:33     ` Heinrich Schuchardt
@ 2024-01-18 12:35       ` Ilias Apalodimas
  0 siblings, 0 replies; 15+ messages in thread
From: Ilias Apalodimas @ 2024-01-18 12:35 UTC (permalink / raw)
  To: Heinrich Schuchardt; +Cc: Tom Rini, Simon Glass, Bin Meng, u-boot

On Thu, Jan 18, 2024 at 01:33:15PM +0100, Heinrich Schuchardt wrote:
> On 1/18/24 12:51, Ilias Apalodimas wrote:
> > Hi Heinrich,
> >
> > On Wed, 17 Jan 2024 at 17:34, Heinrich Schuchardt
> > <heinrich.schuchardt@canonical.com> wrote:
> > >
> > > Provide a unit test for the smbios command.
> > >
> > > Provide different test functions for QEMU, sandbox, and other systems.
> > >
> > > Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
> > > ---
> > > v2:
> > >          for generic boards we only can assume that a type 127 table exists
> > >          email address updated
> > > ---
> > >   test/py/tests/test_smbios.py | 41 ++++++++++++++++++++++++++++++++++++
> > >   1 file changed, 41 insertions(+)
> > >   create mode 100644 test/py/tests/test_smbios.py
> > >
> > > diff --git a/test/py/tests/test_smbios.py b/test/py/tests/test_smbios.py
> > > new file mode 100644
> > > index 00000000000..82b0b689830
> > > --- /dev/null
> > > +++ b/test/py/tests/test_smbios.py
> > > @@ -0,0 +1,41 @@
> > > +# SPDX-License-Identifier: GPL-2.0-or-later
> > > +
> > > +"""Test smbios command"""
> > > +
> > > +import pytest
> > > +
> > > +@pytest.mark.buildconfigspec('cmd_smbios')
> > > +@pytest.mark.notbuildconfigspec('qfw_smbios')
> > > +@pytest.mark.notbuildconfigspec('sandbox')
> > > +def test_cmd_smbios(u_boot_console):
> > > +    """Run the smbios command"""
> > > +    output = u_boot_console.run_command('smbios')
> > > +    assert 'DMI type 127,' in output
> > > +
> > > +@pytest.mark.buildconfigspec('cmd_smbios')
> > > +@pytest.mark.buildconfigspec('qfw_smbios')
> > > +@pytest.mark.notbuildconfigspec('sandbox')
> > > +# TODO:
> > > +# QEMU v8.2.0 lacks SMBIOS support for RISC-V
> > > +# Once support is available in our Docker image we can remove the constraint.
> > > +@pytest.mark.notbuildconfigspec('riscv')
> > > +def test_cmd_smbios_qemu(u_boot_console):
> > > +    """Run the smbios command on QEMU"""
> > > +    output = u_boot_console.run_command('smbios')
> > > +    assert 'DMI type 1,' in output
> > > +    assert 'Manufacturer: QEMU' in output
> > > +    assert 'DMI type 127,' in output
> >
> > Is there an easy way to run this test with and without the SMBIOS
> > tables provided by QEMU? We could test the u-boot generated ones that
> > way
>
> We already test the sandbox without QFW. I would not want to duplicated QEMU
> defconfigs.
>
Ah fair enough, I can add the generic tests in that one

Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>

> Best regards
>
> Heinrich
>
> >
> > Thanks
> > /Ilias
> > > +
> > > +@pytest.mark.buildconfigspec('cmd_smbios')
> > > +@pytest.mark.buildconfigspec('sandbox')
> > > +def test_cmd_smbios_sandbox(u_boot_console):
> > > +    """Run the smbios command on the sandbox"""
> > > +    output = u_boot_console.run_command('smbios')
> > > +    assert 'DMI type 0,' in output
> > > +    assert 'String 1: U-Boot' in output
> > > +    assert 'DMI type 1,' in output
> > > +    assert 'Manufacturer: sandbox' in output
> > > +    assert 'DMI type 2,' in output
> > > +    assert 'DMI type 3,' in output
> > > +    assert 'DMI type 4,' in output
> > > +    assert 'DMI type 127,' in output
> > > --
> > > 2.43.0
> > >
>

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

* Re: [PATCH v2 2/4] cmd: provide command to display SMBIOS information
  2024-01-17 15:33 ` [PATCH v2 2/4] cmd: provide command to display SMBIOS information Heinrich Schuchardt
@ 2024-01-18 12:39   ` Ilias Apalodimas
  2024-01-18 12:54     ` Heinrich Schuchardt
  2024-01-24 21:16   ` Tom Rini
  1 sibling, 1 reply; 15+ messages in thread
From: Ilias Apalodimas @ 2024-01-18 12:39 UTC (permalink / raw)
  To: Heinrich Schuchardt; +Cc: Tom Rini, Simon Glass, Bin Meng, u-boot

Hi Heinrich,

A few nits below

On Wed, Jan 17, 2024 at 04:33:45PM +0100, Heinrich Schuchardt wrote:
> U-Boot can either generated an SMBIOS table or copy it from a prior boot
> stage, e.g. QEMU.
>
> Provide a command to display the SMBIOS information.
>
> Currently only type 1 and 2 are translated to human readable text.
> Other types may be added later. Currently only a hexdump and the list of
> strings is provided for these.
>
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
> Reviewed-by: Simon Glass <sjg@chromium.org>
> ---
> v2:

[...]

> 	email address updated
> +static struct smbios_header *next_table(struct smbios_header *table)
> +{
> +	const char *str;
> +
> +	if (table->type == SMBIOS_END_OF_TABLE)
> +		return NULL;
> +
> +	str = smbios_get_string(table, 0);
> +	return (struct smbios_header *)(++str);

That can lead to unaligned access when we dereference that pointer, do we
care?

> +}
> +
> +static void smbios_print_generic(struct smbios_header *table)
> +{
> +	char *str = (char *)table + table->length;
> +

Do we want the header below printed if there are no strings?
IOW can we exit early if (!*str) ?

> +	if (CONFIG_IS_ENABLED(HEXDUMP)) {
> +		printf("Header and Data:\n");
> +		print_hex_dump("\t", DUMP_PREFIX_OFFSET, 16, 1,
> +			       table, table->length, false);
> +	}
> +	if (*str) {
> +		printf("Strings:\n");
> +		for (int index = 1; *str; ++index) {
> +			printf("\tString %u: %s\n", index, str);
> +			str += strlen(str) + 1;
> +		}
> +	}
> +}
> +
> +void smbios_print_str(const char *label, void *table, u8 index)
> +{
> +	printf("\t%s: %s\n", label, smbios_get_string(table, index));
> +}
> +


Other than that, LGTM

Thanks
/Ilias

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

* Re: [PATCH v2 2/4] cmd: provide command to display SMBIOS information
  2024-01-18 12:39   ` Ilias Apalodimas
@ 2024-01-18 12:54     ` Heinrich Schuchardt
  2024-01-18 12:58       ` Ilias Apalodimas
  0 siblings, 1 reply; 15+ messages in thread
From: Heinrich Schuchardt @ 2024-01-18 12:54 UTC (permalink / raw)
  To: Ilias Apalodimas; +Cc: Tom Rini, Simon Glass, Bin Meng, u-boot

On 1/18/24 13:39, Ilias Apalodimas wrote:
> Hi Heinrich,
> 
> A few nits below
> 
> On Wed, Jan 17, 2024 at 04:33:45PM +0100, Heinrich Schuchardt wrote:
>> U-Boot can either generated an SMBIOS table or copy it from a prior boot
>> stage, e.g. QEMU.
>>
>> Provide a command to display the SMBIOS information.
>>
>> Currently only type 1 and 2 are translated to human readable text.
>> Other types may be added later. Currently only a hexdump and the list of
>> strings is provided for these.
>>
>> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
>> Reviewed-by: Simon Glass <sjg@chromium.org>
>> ---
>> v2:
> 
> [...]
> 
>> 	email address updated
>> +static struct smbios_header *next_table(struct smbios_header *table)
>> +{
>> +	const char *str;
>> +
>> +	if (table->type == SMBIOS_END_OF_TABLE)
>> +		return NULL;
>> +
>> +	str = smbios_get_string(table, 0);
>> +	return (struct smbios_header *)(++str);
> 
> That can lead to unaligned access when we dereference that pointer, do we
> care?

SMBIOS tables are always byte aligned. This is why struct smbios_header 
is marked as packed. The GCCj documentation has this sentence:

"The packed attribute specifies that a variable or structure field 
should have the smallest possible alignment - one byte for a variable, 
and one bit for a field, unless you specify a larger value with the 
aligned attribute."

So shouldn't the compiler care about non-alignment? If there were a 
problematic usage, GCC would throw -Waddress-of-packed-member.

Best regards

Heinrich

> 
>> +}
>> +
>> +static void smbios_print_generic(struct smbios_header *table)
>> +{
>> +	char *str = (char *)table + table->length;
>> +
> 
> Do we want the header below printed if there are no strings?
> IOW can we exit early if (!*str) ?
> 
>> +	if (CONFIG_IS_ENABLED(HEXDUMP)) {
>> +		printf("Header and Data:\n");
>> +		print_hex_dump("\t", DUMP_PREFIX_OFFSET, 16, 1,
>> +			       table, table->length, false);
>> +	}
>> +	if (*str) {
>> +		printf("Strings:\n");
>> +		for (int index = 1; *str; ++index) {
>> +			printf("\tString %u: %s\n", index, str);
>> +			str += strlen(str) + 1;
>> +		}
>> +	}
>> +}
>> +
>> +void smbios_print_str(const char *label, void *table, u8 index)
>> +{
>> +	printf("\t%s: %s\n", label, smbios_get_string(table, index));
>> +}
>> +
> 
> 
> Other than that, LGTM
> 
> Thanks
> /Ilias


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

* Re: [PATCH v2 2/4] cmd: provide command to display SMBIOS information
  2024-01-18 12:54     ` Heinrich Schuchardt
@ 2024-01-18 12:58       ` Ilias Apalodimas
  0 siblings, 0 replies; 15+ messages in thread
From: Ilias Apalodimas @ 2024-01-18 12:58 UTC (permalink / raw)
  To: Heinrich Schuchardt; +Cc: Tom Rini, Simon Glass, Bin Meng, u-boot

On Thu, 18 Jan 2024 at 14:54, Heinrich Schuchardt
<heinrich.schuchardt@canonical.com> wrote:
>
> On 1/18/24 13:39, Ilias Apalodimas wrote:
> > Hi Heinrich,
> >
> > A few nits below
> >
> > On Wed, Jan 17, 2024 at 04:33:45PM +0100, Heinrich Schuchardt wrote:
> >> U-Boot can either generated an SMBIOS table or copy it from a prior boot
> >> stage, e.g. QEMU.
> >>
> >> Provide a command to display the SMBIOS information.
> >>
> >> Currently only type 1 and 2 are translated to human readable text.
> >> Other types may be added later. Currently only a hexdump and the list of
> >> strings is provided for these.
> >>
> >> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
> >> Reviewed-by: Simon Glass <sjg@chromium.org>
> >> ---
> >> v2:
> >
> > [...]
> >
> >>      email address updated
> >> +static struct smbios_header *next_table(struct smbios_header *table)
> >> +{
> >> +    const char *str;
> >> +
> >> +    if (table->type == SMBIOS_END_OF_TABLE)
> >> +            return NULL;
> >> +
> >> +    str = smbios_get_string(table, 0);
> >> +    return (struct smbios_header *)(++str);
> >
> > That can lead to unaligned access when we dereference that pointer, do we
> > care?
>
> SMBIOS tables are always byte aligned. This is why struct smbios_header
> is marked as packed. The GCCj documentation has this sentence:
>
> "The packed attribute specifies that a variable or structure field
> should have the smallest possible alignment - one byte for a variable,
> and one bit for a field, unless you specify a larger value with the
> aligned attribute."
>
> So shouldn't the compiler care about non-alignment? If there were a
> problematic usage, GCC would throw -Waddress-of-packed-member.

I don't think we have the strict alignment enabled in our makefiles.
But, that won't be a problem, I missed the packed attribute in the
smbios header.

with or without the change in smbios_print_generic()
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>

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

* Re: [PATCH v2 2/4] cmd: provide command to display SMBIOS information
  2024-01-17 15:33 ` [PATCH v2 2/4] cmd: provide command to display SMBIOS information Heinrich Schuchardt
  2024-01-18 12:39   ` Ilias Apalodimas
@ 2024-01-24 21:16   ` Tom Rini
  2024-01-24 23:24     ` Heinrich Schuchardt
  1 sibling, 1 reply; 15+ messages in thread
From: Tom Rini @ 2024-01-24 21:16 UTC (permalink / raw)
  To: Heinrich Schuchardt; +Cc: Simon Glass, Ilias Apalodimas, Bin Meng, u-boot

[-- Attachment #1: Type: text/plain, Size: 1017 bytes --]

On Wed, Jan 17, 2024 at 04:33:45PM +0100, Heinrich Schuchardt wrote:

> U-Boot can either generated an SMBIOS table or copy it from a prior boot
> stage, e.g. QEMU.
> 
> Provide a command to display the SMBIOS information.
> 
> Currently only type 1 and 2 are translated to human readable text.
> Other types may be added later. Currently only a hexdump and the list of
> strings is provided for these.
> 
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
> Reviewed-by: Simon Glass <sjg@chromium.org>
> Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
[snip]
> @@ -227,6 +227,13 @@ config CMD_SBI
>  	help
>  	  Display information about the SBI implementation.
>  
> +config CMD_SMBIOS
> +	bool "smbios"
> +	depends on SMBIOS
> +	default y
> +	help
> +	  Display the SMBIOS information.
> +

So this would be enabled (today) on 888 boards and is a bit more than a
kilobyte. I think we can just let this be enabled as needed in
defconfigs?

-- 
Tom

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]

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

* Re: [PATCH v2 2/4] cmd: provide command to display SMBIOS information
  2024-01-24 21:16   ` Tom Rini
@ 2024-01-24 23:24     ` Heinrich Schuchardt
  2024-01-25  0:17       ` Tom Rini
  2024-01-25 10:45       ` Peter Robinson
  0 siblings, 2 replies; 15+ messages in thread
From: Heinrich Schuchardt @ 2024-01-24 23:24 UTC (permalink / raw)
  To: Tom Rini; +Cc: Simon Glass, Ilias Apalodimas, Bin Meng, u-boot

On 1/24/24 22:16, Tom Rini wrote:
> On Wed, Jan 17, 2024 at 04:33:45PM +0100, Heinrich Schuchardt wrote:
> 
>> U-Boot can either generated an SMBIOS table or copy it from a prior boot
>> stage, e.g. QEMU.
>>
>> Provide a command to display the SMBIOS information.
>>
>> Currently only type 1 and 2 are translated to human readable text.
>> Other types may be added later. Currently only a hexdump and the list of
>> strings is provided for these.
>>
>> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
>> Reviewed-by: Simon Glass <sjg@chromium.org>
>> Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
> [snip]
>> @@ -227,6 +227,13 @@ config CMD_SBI
>>   	help
>>   	  Display information about the SBI implementation.
>>   
>> +config CMD_SMBIOS
>> +	bool "smbios"
>> +	depends on SMBIOS
>> +	default y
>> +	help
>> +	  Display the SMBIOS information.
>> +
> 
> So this would be enabled (today) on 888 boards and is a bit more than a
> kilobyte. I think we can just let this be enabled as needed in
> defconfigs?
> 

As needed would be the boards where we want to run the related Python 
test. Sandbox and QEMU should be good enough?

Best regards

Heinrich

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

* Re: [PATCH v2 2/4] cmd: provide command to display SMBIOS information
  2024-01-24 23:24     ` Heinrich Schuchardt
@ 2024-01-25  0:17       ` Tom Rini
  2024-01-25 10:45       ` Peter Robinson
  1 sibling, 0 replies; 15+ messages in thread
From: Tom Rini @ 2024-01-25  0:17 UTC (permalink / raw)
  To: Heinrich Schuchardt; +Cc: Simon Glass, Ilias Apalodimas, Bin Meng, u-boot

[-- Attachment #1: Type: text/plain, Size: 1428 bytes --]

On Thu, Jan 25, 2024 at 12:24:33AM +0100, Heinrich Schuchardt wrote:
> On 1/24/24 22:16, Tom Rini wrote:
> > On Wed, Jan 17, 2024 at 04:33:45PM +0100, Heinrich Schuchardt wrote:
> > 
> > > U-Boot can either generated an SMBIOS table or copy it from a prior boot
> > > stage, e.g. QEMU.
> > > 
> > > Provide a command to display the SMBIOS information.
> > > 
> > > Currently only type 1 and 2 are translated to human readable text.
> > > Other types may be added later. Currently only a hexdump and the list of
> > > strings is provided for these.
> > > 
> > > Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
> > > Reviewed-by: Simon Glass <sjg@chromium.org>
> > > Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
> > [snip]
> > > @@ -227,6 +227,13 @@ config CMD_SBI
> > >   	help
> > >   	  Display information about the SBI implementation.
> > > +config CMD_SMBIOS
> > > +	bool "smbios"
> > > +	depends on SMBIOS
> > > +	default y
> > > +	help
> > > +	  Display the SMBIOS information.
> > > +
> > 
> > So this would be enabled (today) on 888 boards and is a bit more than a
> > kilobyte. I think we can just let this be enabled as needed in
> > defconfigs?
> > 
> 
> As needed would be the boards where we want to run the related Python test.
> Sandbox and QEMU should be good enough?

And the test needs the pytest mark for cmd_smbios, yes.

-- 
Tom

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]

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

* Re: [PATCH v2 2/4] cmd: provide command to display SMBIOS information
  2024-01-24 23:24     ` Heinrich Schuchardt
  2024-01-25  0:17       ` Tom Rini
@ 2024-01-25 10:45       ` Peter Robinson
  1 sibling, 0 replies; 15+ messages in thread
From: Peter Robinson @ 2024-01-25 10:45 UTC (permalink / raw)
  To: Heinrich Schuchardt
  Cc: Tom Rini, Simon Glass, Ilias Apalodimas, Bin Meng, u-boot

On Thu, 25 Jan 2024 at 03:02, Heinrich Schuchardt
<heinrich.schuchardt@canonical.com> wrote:
>
> On 1/24/24 22:16, Tom Rini wrote:
> > On Wed, Jan 17, 2024 at 04:33:45PM +0100, Heinrich Schuchardt wrote:
> >
> >> U-Boot can either generated an SMBIOS table or copy it from a prior boot
> >> stage, e.g. QEMU.
> >>
> >> Provide a command to display the SMBIOS information.
> >>
> >> Currently only type 1 and 2 are translated to human readable text.
> >> Other types may be added later. Currently only a hexdump and the list of
> >> strings is provided for these.
> >>
> >> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
> >> Reviewed-by: Simon Glass <sjg@chromium.org>
> >> Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
> > [snip]
> >> @@ -227,6 +227,13 @@ config CMD_SBI
> >>      help
> >>        Display information about the SBI implementation.
> >>
> >> +config CMD_SMBIOS
> >> +    bool "smbios"
> >> +    depends on SMBIOS
> >> +    default y
> >> +    help
> >> +      Display the SMBIOS information.
> >> +
> >
> > So this would be enabled (today) on 888 boards and is a bit more than a
> > kilobyte. I think we can just let this be enabled as needed in
> > defconfigs?
> >
>
> As needed would be the boards where we want to run the related Python
> test. Sandbox and QEMU should be good enough?

Yes, I think for most users seeing the smbios tables is probably not
particularly useful.

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

end of thread, other threads:[~2024-01-25 10:45 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-01-17 15:33 [PATCH v2 1/4] smbios: type2: contained object handles Heinrich Schuchardt
2024-01-17 15:33 ` [PATCH v2 2/4] cmd: provide command to display SMBIOS information Heinrich Schuchardt
2024-01-18 12:39   ` Ilias Apalodimas
2024-01-18 12:54     ` Heinrich Schuchardt
2024-01-18 12:58       ` Ilias Apalodimas
2024-01-24 21:16   ` Tom Rini
2024-01-24 23:24     ` Heinrich Schuchardt
2024-01-25  0:17       ` Tom Rini
2024-01-25 10:45       ` Peter Robinson
2024-01-17 15:33 ` [PATCH v2 3/4] doc: man-page for smbios command Heinrich Schuchardt
2024-01-17 15:33 ` [PATCH v2 4/4] test: unit test " Heinrich Schuchardt
2024-01-18 11:51   ` Ilias Apalodimas
2024-01-18 12:33     ` Heinrich Schuchardt
2024-01-18 12:35       ` Ilias Apalodimas
2024-01-17 16:10 ` [PATCH v2 0/4] cmd: provide command to display SMBIOS information Heinrich Schuchardt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox