mbox series

[v1,00/22] selftests/nolibc: add minimal kernel config support

Message ID cover.1687706332.git.falcon@tinylab.org
Headers show
Series selftests/nolibc: add minimal kernel config support | expand

Message

Zhangjin Wu June 25, 2023, 4:10 p.m. UTC
Willy, Thomas

We just sent the 'selftests/nolibc: allow run with minimal kernel
config' series [1], Here is the 'minimal' kernel config support, with
both of them, it is possible to run nolibc-test for all architectures
with oneline command and in less than ~30 minutes - 1 hour (not fullly
measured yet):

    // run with tiny config + qemu-system
    // Note: rv32 and loongarch require to download the bios at first
    $ time make run-tiny-all QUIET_RUN=1

    // run with default config + qemu-system
    $ time make run-default-all QUIET_RUN=1

    // run with qemu-user
    $ time make run-user-all QUIET_RUN=1

Besides the 'tinyconfig' suggestion from Thomas, this patch also merge
the generic part of my local powerpc porting (the extconfig to add
additional console support).

This is applied after the test report patchset [2] and the rv32 compile
patchset [3], because all of them touched the same Makefile.

Even without the 'selftests/nolibc: allow run with minimal kernel
config' series [1], all of the tests can pass except the /proc/self/net
related ones (We haven't enable CONFIG_NET in this patchset), the
chmod_net one will be removed by Thomas from this patchset [4] for the
wrong chmodable attribute issue of /proc/self/net, the link_cross one
can be simply fixed up by using another /proc/self interface (like
/proc/self/cmdline), which will be covered in our revision of the [1]
series.

Beside the core 'minimal' config support, some generic patch are added
together to avoid patch conflicts.

* selftests/nolibc: add test for -include /path/to/nolibc.h

  Add a test switch to allow run nolibc-test with nolibc.h

* selftests/nolibc: print result to the screen too

  Let the run targets print results by default, allow disable by
  QUIET_RUN=1

* selftests/nolibc: allow use x86_64 toolchain for i386

  Allow use x86_64 toolchains for i386

* selftests/nolibc: add menuconfig target for manual config

  a new 'menuconfig' target added for development and debugging

* selftests/nolibc: add tinyconfig target

  a new 'tinyconfig' compare to 'defconfig', smaller and faster, but not
  enough for boot and print, require following 'extconfig' target

* selftests/nolibc: allow customize extra kernel config options

  a new 'extconfig' allows to add extra config options for 'defconfig'
  and 'tinyconfig'

* selftests/nolibc: add common extra config options
  selftests/nolibc: add power reset control support
  selftests/nolibc: add procfs, shmem and tmpfs

  Add common extra configs, the 3rd one (procfs, shmem and tmpfs) can be
  completely reverted after [1] series, but as discuss with Thomas,
  procfs may be still a hard requirement.

* selftests/nolibc: add extra configs for i386
  selftests/nolibc: add extra configs for x86_64
  selftests/nolibc: add extra configs for arm64
  selftests/nolibc: add extra configs for arm
  selftests/nolibc: add extra configs for mips
  selftests/nolibc: add extra configs for riscv32
  selftests/nolibc: add extra configs for riscv64
  selftests/nolibc: add extra configs for s390x
  selftests/nolibc: add extra configs for loongarch

  Add architecture specific extra configs to let kernel boot and
  nolibc-test print. The rv32 added here is only for test, it should not
  be merged before the missing 64bit syscalls are added (still wait for
  the merging of the __sysret and -ENOSYS patches).

* selftests/nolibc: config default CROSS_COMPILE
  selftests/nolibc: add run-tiny and run-default

  both run-tiny and run-default are added to do config and run together,
  this easier test a log.

* selftests/nolibc: allow run tests on all targets
  selftests/nolibc: detect bios existing to avoid hang

  Further allow do run-user, run-tiny and run-default for all
  architectures at once, the -all suffix is added to do so.

Since some generic patches are still in review, before sending the left
rv32 patches, I'm will send more generic patches later, the coming one
is arch-xxx.h cleanup, and then, the 32bit powerpc porting support.

For the compile speedup, the next step may be add architecture specific
'O' support, which may allow us rerun across architectures without
mrproper, for a single architecture development, this 'minimal' config
should be enough ;-)

Thanks.

Best regards,
Zhangjin
---
[1]: https://lore.kernel.org/lkml/cover.1687344643.git.falcon@tinylab.org/
[2]: https://lore.kernel.org/lkml/cover.1687156559.git.falcon@tinylab.org/
[3]: https://lore.kernel.org/linux-riscv/cover.1687176996.git.falcon@tinylab.org/
[4]: https://lore.kernel.org/lkml/20230624-proc-net-setattr-v1-0-73176812adee@weissschuh.net/

Zhangjin Wu (22):
  selftests/nolibc: add test for -include /path/to/nolibc.h
  selftests/nolibc: print result to the screen too
  selftests/nolibc: allow use x86_64 toolchain for i386
  selftests/nolibc: add menuconfig target for manual config
  selftests/nolibc: add tinyconfig target
  selftests/nolibc: allow customize extra kernel config options
  selftests/nolibc: add common extra config options
  selftests/nolibc: add power reset control support
  selftests/nolibc: add procfs, shmem and tmpfs
  selftests/nolibc: add extra configs for i386
  selftests/nolibc: add extra configs for x86_64
  selftests/nolibc: add extra configs for arm64
  selftests/nolibc: add extra configs for arm
  selftests/nolibc: add extra configs for mips
  selftests/nolibc: add extra configs for riscv32
  selftests/nolibc: add extra configs for riscv64
  selftests/nolibc: add extra configs for s390x
  selftests/nolibc: add extra configs for loongarch
  selftests/nolibc: config default CROSS_COMPILE
  selftests/nolibc: add run-tiny and run-default
  selftests/nolibc: allow run tests on all targets
  selftests/nolibc: detect bios existing to avoid hang

 tools/testing/selftests/nolibc/Makefile | 125 ++++++++++++++++++++++--
 1 file changed, 119 insertions(+), 6 deletions(-)