[PATCH 05/32] x86: Allow writing tables to fail
Heinrich Schuchardt
xypron.glpk at gmx.de
Mon Sep 28 08:23:54 CEST 2020
Am 28. September 2020 06:25:44 MESZ schrieb Simon Glass <sjg at chromium.org>:
>At present write_tables() can fail but does not report this problem to
>its
>caller. Fix this by changing the return type.
>
>Signed-off-by: Simon Glass <sjg at chromium.org>
>---
>
> arch/x86/cpu/cpu.c | 7 ++++++-
> arch/x86/include/asm/tables.h | 4 +++-
> arch/x86/lib/tables.c | 5 ++++-
> 3 files changed, 13 insertions(+), 3 deletions(-)
>
>diff --git a/arch/x86/cpu/cpu.c b/arch/x86/cpu/cpu.c
>index f8692753963..5c33f02f034 100644
>--- a/arch/x86/cpu/cpu.c
>+++ b/arch/x86/cpu/cpu.c
>@@ -200,6 +200,7 @@ __weak void board_final_cleanup(void)
> int last_stage_init(void)
> {
> struct acpi_fadt __maybe_unused *fadt;
>+ int ret;
>
> board_final_init();
>
>@@ -210,7 +211,11 @@ int last_stage_init(void)
> acpi_resume(fadt);
> }
>
>- write_tables();
>+ ret = write_tables();
>+ if (ret) {
>+ printf("Failed to write tables\n");
>+ return log_msg_ret("table", ret);
>+ }
If we have print available, shouldn't we also have log?
>
> if (IS_ENABLED(CONFIG_GENERATE_ACPI_TABLE)) {
> fadt = acpi_find_fadt();
>diff --git a/arch/x86/include/asm/tables.h
>b/arch/x86/include/asm/tables.h
>index f7c72ed3db0..bf66e79018e 100644
>--- a/arch/x86/include/asm/tables.h
>+++ b/arch/x86/include/asm/tables.h
>@@ -49,8 +49,10 @@ void table_fill_string(char *dest, const char *src,
>size_t n, char pad);
> * This writes x86 configuration tables, including PIRQ routing table,
> * Multi-Processor table and ACPI table. Whether a specific type of
> * configuration table is written is controlled by a Kconfig option.
>+ *
>+ * @return 0 if OK, -ENOSPC if table too large
> */
>-void write_tables(void);
>+int write_tables(void);
>
> /**
> * write_pirq_routing_table() - Write PIRQ routing table
>diff --git a/arch/x86/lib/tables.c b/arch/x86/lib/tables.c
>index 7bad5dd3032..7099866a78a 100644
>--- a/arch/x86/lib/tables.c
>+++ b/arch/x86/lib/tables.c
>@@ -64,7 +64,7 @@ void table_fill_string(char *dest, const char *src,
>size_t n, char pad)
> dest[i] = pad;
> }
>
>-void write_tables(void)
>+int write_tables(void)
> {
> u32 rom_table_start = ROM_TABLE_ADDR;
> u32 rom_table_end;
>@@ -91,6 +91,7 @@ void write_tables(void)
> cfg_tables[i].size = table_size;
> } else {
> printf("%d: no memory for configuration tables\n", i);
>+ return -ENOSPC;
> }
> #endif
>
>@@ -105,4 +106,6 @@ void write_tables(void)
> write_coreboot_table(CB_TABLE_ADDR, cfg_tables);
> #endif
> debug("- done writing tables\n");
>+
>+ return 0;
> }
More information about the U-Boot
mailing list