[PATCH v7 00/17] OpenSBI Kconfig Support

Atish Patra atishp at atishpatra.org
Fri Aug 5 14:09:20 PDT 2022


On Fri, Aug 5, 2022 at 1:47 PM Atish Patra <atishp at atishpatra.org> wrote:
>
> On Thu, Aug 4, 2022 at 7:31 AM Anup Patel <apatel at ventanamicro.com> wrote:
> >
> > In future, we will see more drivers in OpenSBI for system reset, serial port,
> > power management, etc platform specific devices. We need platform specific
> > compile time configuration to allow users control the size of OpenSBI generic
> > firmware binaries by only enabling desired drivers. In other words, users
> > should be allowed to restrict the set of RISC-V platforms on which OpenSBI
> > generic firmwares built by them can run.
> >
> > To address above, we add Kconfig support for OpenSBI platforms using the
> > Kconfiglib project which is a standalone kconfig parser.
> >
> > To try OpenSBI Kconfig support with generic platform, here are few
> > example commands:
> > make PLATFORM=generic             <-- builds OpenSBI using "defconfig"
> > make PLATFORM=generic menuconfig  <-- launches graphical interface for changes
> >
> > These patches can also be found in the kconfig_v7 branch at:
> > https://github.com/avpatel/opensbi.git
> >
> > Changes since v6:
> >  - Added comments in platform/template/Kconfig for PATCH2
> >  - Addressed Drew's comments in PATCH16
> >
> > Changes since v5:
> >  - Updated kconfig symbol description in PATCH14
> >  - Included a typo fix for docs/platform/platform.md in PATCH16
> >  - Added separate PATCH17 for typo fix in top-level makefile
> >
> > Changes since v4:
> >  - Added separate PATCH14 to allow user change generic platform
> >    version and default name.
> >  - Fixed libfdt compiler error using LLVM in PATCH12
> >
> > Changes since v3:
> >  - Strip down the Kconfiglib sources added by PATCH1
> >  - Removed extra "." in the top-level Makefile updated by PATCH2
> >
> > Changes since v2:
> >  - Use $(FOO) instead of $FOO to access FOO environment variable in
> >    Kconfig files.
> >  - Added a new PATCH1 to include Kconfiglib v14.1.0 sources under
> >    the scripts directory of OpenSBI.
> >
> > Changes since v1:
> >  - Fix SPDX license specifier in new Kconfig files
> >
> > Anup Patel (17):
> >   scripts: Add Kconfiglib v14.1.0 under scripts directory
> >   Makefile: Add initial kconfig support for each platform
> >   Makefile: Compile lib/utils sources separately for each platform
> >   lib: utils/serial: Use kconfig for enabling/disabling drivers
> >   lib: utils/reset: Use kconfig for enabling/disabling drivers
> >   lib: utils/sys: Use kconfig for enabling/disabling drivers
> >   lib: utils/timer: Use kconfig for enabling/disabling drivers
> >   lib: utils/ipi: Use kconfig for enabling/disabling drivers
> >   lib: utils/irqchip: Use kconfig for enabling/disabling drivers
> >   lib: utils/i2c: Use kconfig for enabling/disabling drivers
> >   lib: utils/gpio: Use kconfig for enabling/disabling drivers
> >   lib: utils/fdt: Use kconfig for enabling/disabling
> >   platform: generic: Use kconfig for enabling/disabling overrides
> >   platform: generic: Use kconfig to set platform version and default
> >     name
> >   platform: Remove redundant config.mk from all platforms
> >   docs: Update documentation for kconfig support
> >   Makefile: Fix typo related to object.mk
> >
> >  Kconfig                                   |   23 +
> >  Makefile                                  |  107 +-
> >  README.md                                 |   25 +-
> >  docs/firmware/fw_dynamic.md               |    2 +-
> >  docs/firmware/fw_jump.md                  |    4 +-
> >  docs/firmware/fw_payload.md               |    4 +-
> >  docs/library_usage.md                     |    6 +-
> >  docs/platform/platform.md                 |    6 +-
> >  docs/platform_guide.md                    |    9 +-
> >  firmware/Kconfig                          |    1 +
> >  include/sbi_utils/fdt/fdt_domain.h        |    9 +
> >  include/sbi_utils/fdt/fdt_pmu.h           |   10 +
> >  include/sbi_utils/ipi/fdt_ipi.h           |    9 +
> >  include/sbi_utils/irqchip/fdt_irqchip.h   |   10 +
> >  include/sbi_utils/irqchip/imsic.h         |   10 +
> >  include/sbi_utils/reset/fdt_reset.h       |   12 +
> >  include/sbi_utils/serial/fdt_serial.h     |    8 +
> >  include/sbi_utils/timer/fdt_timer.h       |    9 +
> >  lib/utils/Kconfig                         |   25 +
> >  lib/utils/fdt/Kconfig                     |   18 +
> >  lib/utils/fdt/objects.mk                  |    8 +-
> >  lib/utils/gpio/Kconfig                    |   23 +
> >  lib/utils/gpio/objects.mk                 |   10 +-
> >  lib/utils/i2c/Kconfig                     |   23 +
> >  lib/utils/i2c/objects.mk                  |   10 +-
> >  lib/utils/ipi/Kconfig                     |   23 +
> >  lib/utils/ipi/objects.mk                  |   10 +-
> >  lib/utils/irqchip/Kconfig                 |   41 +
> >  lib/utils/irqchip/objects.mk              |   22 +-
> >  lib/utils/libfdt/Kconfig                  |    5 +
> >  lib/utils/libfdt/objects.mk               |    2 +-
> >  lib/utils/reset/Kconfig                   |   37 +
> >  lib/utils/reset/objects.mk                |   28 +-
> >  lib/utils/serial/Kconfig                  |   73 +
> >  lib/utils/serial/objects.mk               |   44 +-
> >  lib/utils/sys/Kconfig                     |   13 +
> >  lib/utils/sys/objects.mk                  |    4 +-
> >  lib/utils/timer/Kconfig                   |   23 +
> >  lib/utils/timer/objects.mk                |   10 +-
> >  platform/andes/ae350/Kconfig              |    8 +
> >  platform/andes/ae350/config.mk            |   36 -
> >  platform/andes/ae350/configs/defconfig    |    0
> >  platform/andes/ae350/objects.mk           |   29 +
> >  platform/fpga/ariane/Kconfig              |   10 +
> >  platform/fpga/ariane/config.mk            |   36 -
> >  platform/fpga/ariane/configs/defconfig    |    0
> >  platform/fpga/ariane/objects.mk           |   35 +
> >  platform/fpga/openpiton/Kconfig           |   10 +
> >  platform/fpga/openpiton/config.mk         |   35 -
> >  platform/fpga/openpiton/configs/defconfig |    0
> >  platform/fpga/openpiton/objects.mk        |   35 +
> >  platform/generic/Kconfig                  |   40 +
> >  platform/generic/allwinner/objects.mk     |    4 +-
> >  platform/generic/config.mk                |   40 -
> >  platform/generic/configs/defconfig        |   29 +
> >  platform/generic/objects.mk               |   33 +
> >  platform/generic/platform.c               |    6 +-
> >  platform/generic/sifive/objects.mk        |    8 +-
> >  platform/kendryte/k210/Kconfig            |   10 +
> >  platform/kendryte/k210/config.mk          |   19 -
> >  platform/kendryte/k210/configs/defconfig  |    0
> >  platform/kendryte/k210/objects.mk         |   12 +
> >  platform/nuclei/ux600/Kconfig             |   10 +
> >  platform/nuclei/ux600/config.mk           |   30 -
> >  platform/nuclei/ux600/configs/defconfig   |    0
> >  platform/nuclei/ux600/objects.mk          |   22 +
> >  platform/nuclei/ux600/platform.c          |    1 -
> >  platform/template/Kconfig                 |   16 +
> >  platform/template/config.mk               |   77 -
> >  platform/template/configs/defconfig       |    0
> >  platform/template/objects.mk              |   72 +
> >  platform/template/platform.c              |    2 +-
> >  scripts/Kconfiglib/LICENSE.txt            |    5 +
> >  scripts/Kconfiglib/allnoconfig.py         |   45 +
> >  scripts/Kconfiglib/allyesconfig.py        |   56 +
> >  scripts/Kconfiglib/defconfig.py           |   43 +
> >  scripts/Kconfiglib/genconfig.py           |  154 +
> >  scripts/Kconfiglib/kconfiglib.py          | 7160 +++++++++++++++++++++
> >  scripts/Kconfiglib/menuconfig.py          | 3278 ++++++++++
> >  scripts/Kconfiglib/oldconfig.py           |  246 +
> >  scripts/Kconfiglib/olddefconfig.py        |   28 +
> >  scripts/Kconfiglib/savedefconfig.py       |   49 +
> >  scripts/Kconfiglib/setconfig.py           |   92 +
> >  scripts/create-binary-archive.sh          |    2 +-
> >  84 files changed, 12133 insertions(+), 406 deletions(-)
> >  create mode 100644 Kconfig
> >  create mode 100644 firmware/Kconfig
> >  create mode 100644 lib/utils/Kconfig
> >  create mode 100644 lib/utils/fdt/Kconfig
> >  create mode 100644 lib/utils/gpio/Kconfig
> >  create mode 100644 lib/utils/i2c/Kconfig
> >  create mode 100644 lib/utils/ipi/Kconfig
> >  create mode 100644 lib/utils/irqchip/Kconfig
> >  create mode 100644 lib/utils/libfdt/Kconfig
> >  create mode 100644 lib/utils/reset/Kconfig
> >  create mode 100644 lib/utils/serial/Kconfig
> >  create mode 100644 lib/utils/sys/Kconfig
> >  create mode 100644 lib/utils/timer/Kconfig
> >  create mode 100644 platform/andes/ae350/Kconfig
> >  delete mode 100644 platform/andes/ae350/config.mk
> >  create mode 100644 platform/andes/ae350/configs/defconfig
> >  create mode 100644 platform/fpga/ariane/Kconfig
> >  delete mode 100644 platform/fpga/ariane/config.mk
> >  create mode 100644 platform/fpga/ariane/configs/defconfig
> >  create mode 100644 platform/fpga/openpiton/Kconfig
> >  delete mode 100644 platform/fpga/openpiton/config.mk
> >  create mode 100644 platform/fpga/openpiton/configs/defconfig
> >  create mode 100644 platform/generic/Kconfig
> >  delete mode 100644 platform/generic/config.mk
> >  create mode 100644 platform/generic/configs/defconfig
> >  create mode 100644 platform/kendryte/k210/Kconfig
> >  delete mode 100644 platform/kendryte/k210/config.mk
> >  create mode 100644 platform/kendryte/k210/configs/defconfig
> >  create mode 100644 platform/nuclei/ux600/Kconfig
> >  delete mode 100644 platform/nuclei/ux600/config.mk
> >  create mode 100644 platform/nuclei/ux600/configs/defconfig
> >  create mode 100644 platform/template/Kconfig
> >  delete mode 100644 platform/template/config.mk
> >  create mode 100644 platform/template/configs/defconfig
> >  create mode 100644 scripts/Kconfiglib/LICENSE.txt
> >  create mode 100755 scripts/Kconfiglib/allnoconfig.py
> >  create mode 100755 scripts/Kconfiglib/allyesconfig.py
> >  create mode 100755 scripts/Kconfiglib/defconfig.py
> >  create mode 100755 scripts/Kconfiglib/genconfig.py
> >  create mode 100644 scripts/Kconfiglib/kconfiglib.py
> >  create mode 100755 scripts/Kconfiglib/menuconfig.py
> >  create mode 100755 scripts/Kconfiglib/oldconfig.py
> >  create mode 100755 scripts/Kconfiglib/olddefconfig.py
> >  create mode 100755 scripts/Kconfiglib/savedefconfig.py
> >  create mode 100755 scripts/Kconfiglib/setconfig.py
> >
> > --
> > 2.34.1
> >
>
>
> For the entire series:
>
> Acked-by: Atish Patra <atishp at rivosinc.com>
> Tested-by: Atish Patra <atishp at rivosinc.com>
>

I guess I spoke too soon. I got this error with parallel builds

ARCH=riscv CROSS_COMPILE=riscv64-unknown-linux-gnu- make
PLATFORM=generic -j$(nproc)

non-parallel builds work fine.

> --
> Regards,
> Atish



-- 
Regards,
Atish



More information about the opensbi mailing list