Hi, Thomas
Hi Zhangjin,
some general comments for the whole series.
On 2023-06-21 20:52:30+0800, Zhangjin Wu wrote:
Hi, Willy
This patchset mainly allows speed up the nolibc test with a minimal kernel config.
(snip)
selftests/nolibc: fix up kernel parameters support
kernel cmdline allows pass two types of parameters, one is without '=', another is with '=', the first one is passed as init arguments, the sencond one is passed as init environment variables.
Our nolibc-test prefer arguments to environment variables, this not work when users add such parameters in the kernel cmdline:
noapic NOLIBC_TEST=syscall
So, this patch will verify the setting from arguments at first, if it is no valid, will try the environment variables instead.
This would be much simpler as:
test = getenv("NOLIBC_TEST"); if (!test) test = argv[1];
It changes the semantics a bit, but it doesn't seem to be an issue. (Maybe gated behind getpid() == 1).
Cool suggestion, it looks really better:
if (getpid() == 1) { prepare(); /* kernel cmdline may pass: "noapic NOLIBC_TEST=syscall", * to init program: * * "noapic" as arguments, * "NOLIBC_TEST=syscall" as environment variables, * * to avoid getting null test in this case, parsing * environment variables at first. */ test = getenv("NOLIBC_TEST"); if (!test) test = argv[1]; } else { /* for normal nolibc-test program, prefer arguments */ test = argv[1]; if (!test) test = getenv("NOLIBC_TEST"); }
Test shows, when no NOLIBC_TEST environment variable passed to kernel cmdline, it will still branch to this code:
test = argv[1]; /* nopaic ... */
And therefore report the whole test is ignored and no test will be run:
Ignoring unknown test name 'noapic'
So, we may still need to verify it like my originally proposed method, but let's further verify the one from NOLIBC_TEST=, we should tune the code a litle.
Thanks, Zhangjin