[PATCH 00/34] x86: expo: Add support for editing coreboot CMOS RAM settings

Simon Glass sjg at chromium.org
Mon Oct 2 03:15:10 CEST 2023


U-Boot provides support for editing settings with an 'expo', as well as
reading and writing settings to CMOS RAM.

This series integrates expo functionality with coreboot, using the
sysinfo table to get a list of settings, creating an expo with them and
allowing them to be edited.

A new CI test provides coverage for some coreboot-related commands. For
this to work, a number of minor tweaks are made to existing tests, so
that they pass on coreboot (x86) or at least are skipped when they
cannot pass. Likely most of these fixes will apply to other boards too.

It includes several other fixes and improvements:
- new -m flag for 'bootflow scan' so it can display a menu automatically
- Fix for video-scrolling crash with Truetype
- menu items can now have individual integer values
- menu items are lined up according to the width of all menu labels


Simon Glass (34):
  test: Run tests that don't need devices
  test: Add a new suite for commands
  test: Add helper to skip to partial console line
  test: Make UT_LIB_ASN1 depend on sandbox
  test: Run bootstd tests only on sandbox
  test: Handle use of stack pointer in bdinfo
  test: bdinfo: Add missing asserts
  test: fdt: Add a special case for real boards
  test: font: Add dependencies on fonts
  test: event: Only run test_event_probe() on sandbox
  test: lmb: Move tests into the lib suite
  test: print: Skip test on x86
  video: Add a function to clear the display
  sandbox: Add a dummy booti command
  bootstd: Add a menu option to bootflow scan
  video: Add a dark-grey console colour
  video: Avoid starting a new line to close to the bottom
  expo: Place menu items to the right of all labels
  expo: Set the initial next_id to 1
  expo: Use standard numbering for save and discard
  expo: Allow menu items to have values
  expo: Add a little more cedit CMOS logging
  expo: Support menu-item values in cedit
  expo: Drop unneceesary calls to expo_str()
  expo: Drop scene_title_set()
  expo: Add forward declaration for udevice to cedit
  x86: coreboot: Enable unit tests
  x86: CI: Update coreboot
  x86: coreboot: Add a test for cbsysinfo command
  x86: coreboot: Show the option table
  x86: coreboot: Enable support for the configuration editor
  x86: coreboot: Add a command to check and update CMOS RAM
  x86: coreboot: Allow building an expo for editing CMOS config
  x86: Enable RTC command by default

 .azure-pipelines.yml              |   2 +-
 .gitlab-ci.yml                    |   2 +-
 arch/sandbox/dts/cedit.dtsi       |   3 +
 arch/sandbox/lib/bootm.c          |   7 +
 arch/x86/dts/coreboot.dts         |   7 +
 boot/Makefile                     |   4 +
 boot/cedit.c                      | 191 +++++++++++++++--------
 boot/expo.c                       |   3 +
 boot/expo_build.c                 |  36 ++---
 boot/expo_build_cb.c              | 244 ++++++++++++++++++++++++++++++
 boot/scene.c                      |  61 ++++++--
 boot/scene_internal.h             |  30 +++-
 boot/scene_menu.c                 |  26 +++-
 boot/scene_textline.c             |   3 +-
 cmd/Kconfig                       |  14 +-
 cmd/bootflow.c                    |  27 +++-
 cmd/booti.c                       |   2 +-
 cmd/cedit.c                       |  28 ++++
 cmd/cls.c                         |  25 +--
 cmd/x86/Makefile                  |   1 +
 cmd/x86/cbcmos.c                  | 141 +++++++++++++++++
 cmd/x86/cbsysinfo.c               |  73 ++++++++-
 common/console.c                  |  31 ++++
 configs/coreboot64_defconfig      |   2 +
 configs/coreboot_defconfig        |   6 +
 configs/tools-only_defconfig      |   3 +-
 doc/board/coreboot/coreboot.rst   |   6 +
 doc/develop/cedit.rst             |   9 +-
 doc/develop/expo.rst              |  26 +++-
 doc/usage/cmd/bootflow.rst        |   5 +
 doc/usage/cmd/cbcmos.rst          |  45 ++++++
 doc/usage/cmd/cbsysinfo.rst       |  99 ++++++++++++
 doc/usage/cmd/cedit.rst           |  91 ++++++++++-
 doc/usage/index.rst               |   1 +
 drivers/video/vidconsole-uclass.c |   4 +-
 drivers/video/video-uclass.c      |   3 +
 include/cedit.h                   |   1 +
 include/console.h                 |  10 ++
 include/expo.h                    |  51 +++++--
 include/test/cedit-test.h         |  30 ++--
 include/test/cmd.h                |  15 ++
 include/test/suites.h             |   1 +
 include/test/ut.h                 |  30 ++++
 include/video.h                   |   4 +-
 include/video_console.h           |   8 +
 test/Kconfig                      |   6 +
 test/Makefile                     |   2 +-
 test/boot/bootflow.c              |  82 ++++++++++
 test/boot/cedit.c                 |  22 ++-
 test/boot/expo.c                  |  26 +++-
 test/boot/files/expo_ids.h        |   3 +-
 test/boot/files/expo_layout.dts   |   5 +-
 test/cmd/Makefile                 |   3 +
 test/cmd/bdinfo.c                 |  23 ++-
 test/cmd/cmd_ut_cmd.c             |  21 +++
 test/cmd/coreboot.c               | 120 +++++++++++++++
 test/cmd/fdt.c                    |   8 +-
 test/cmd/font.c                   |   6 +-
 test/cmd_ut.c                     |   8 +-
 test/common/event.c               |   3 +
 test/lib/lmb.c                    |  36 ++---
 test/print_ut.c                   |   8 +
 test/test-main.c                  |   3 +-
 test/ut.c                         |  27 ++++
 tools/expo.py                     |  33 +++-
 65 files changed, 1640 insertions(+), 216 deletions(-)
 create mode 100644 boot/expo_build_cb.c
 create mode 100644 cmd/x86/cbcmos.c
 create mode 100644 doc/usage/cmd/cbcmos.rst
 create mode 100644 include/test/cmd.h
 create mode 100644 test/cmd/cmd_ut_cmd.c
 create mode 100644 test/cmd/coreboot.c

-- 
2.42.0.582.g8ccd20d70d-goog



More information about the U-Boot mailing list