[PATCH v2 00/14] OpenSBI Kconfig Support

David Abdurachmanov david.abdurachmanov at gmail.com
Mon Jul 18 14:34:59 PDT 2022


On Mon, Jul 18, 2022 at 8:49 PM Andrew Jones <ajones at ventanamicro.com> wrote:
>
> On Mon, Jul 18, 2022 at 08:25:57PM +0530, Anup Patel 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
> > kconfig-frontends project which is a standalone kconfig parser.
> >
> > The kconfig-frontends is available as a package/receipe on various distros
> > (such as Debian, UBuntu, OpenSUSE, etc) and Yocto project.
>
> Hi Anup,
>
> It doesn't look like Fedora provides that package. Also, is the source
> for the packages of those other distros maintained? If I found the
> correct source, then it's [1], which hasn't had any attention in five
> years, even though there have been hundreds of commits to Linux's
> scripts/kconfig. I wonder if we shouldn't consider adopting
> scripts/minikconf.py from the QEMU sources and sticking to the kconfig
> language subset that parser supports?

After spending a bit of time googling about kconfig-frontends it seems
to be a dead project.

Would kconfiglib work? That seems to be alive. While not directly
available in Fedora too it's on pip.

>
> [1] http://ymorin.is-a-geek.org/projects/kconfig-frontends
>
> Thanks,
> drew
>
> >
> > 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_v2 branch at:
> > https://github.com/avpatel/opensbi.git
> >
> > Changes since v1:
> >  - Fix SPDX license specifier in new Kconfig files
> >
> > Anup Patel (14):
> >   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: Remove redundant config.mk from all platforms
> >   docs: Update documentation for kconfig support
> >
> >  Kconfig                                   |  23 +++++
> >  Makefile                                  | 102 ++++++++++++++++------
> >  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                 |   4 +-
> >  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               |   4 +-
> >  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                  |  26 ++++++
> >  platform/generic/allwinner/objects.mk     |   4 +-
> >  platform/generic/config.mk                |  40 ---------
> >  platform/generic/configs/defconfig        |  29 ++++++
> >  platform/generic/objects.mk               |  33 +++++++
> >  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                 |   9 ++
> >  platform/template/config.mk               |  77 ----------------
> >  platform/template/configs/defconfig       |   0
> >  platform/template/objects.mk              |  72 +++++++++++++++
> >  platform/template/platform.c              |   2 +-
> >  scripts/create-binary-archive.sh          |   2 +-
> >  72 files changed, 948 insertions(+), 403 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
> >
> > --
> > 2.34.1
> >
> >
> > --
> > opensbi mailing list
> > opensbi at lists.infradead.org
> > http://lists.infradead.org/mailman/listinfo/opensbi
>
> --
> opensbi mailing list
> opensbi at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/opensbi



More information about the opensbi mailing list