On Fri, Jun 28, 2019 at 01:30:19PM -0700, Nadav Amit wrote: > Enable to run the tests when test-device is not present (e.g., > bare-metal). Users can provide the number of CPUs and ram size through > kernel parameters. Can you provide multiboot a pointer to an initrd (text file) with environment variables listed instead? Because this works $ cat x86/params.c #include <libcflat.h> int main(void) { printf("nr_cpus=%ld\n", atol(getenv("NR_CPUS"))); printf("memsize=%ld\n", atol(getenv("MEMSIZE"))); return 0; } $ cat params.initrd NR_CPUS=2 MEMSIZE=256 $ qemu-system-x86_64 -nodefaults -device pc-testdev -device isa-debug-exit,iobase=0xf4,iosize=0x4 -vnc none -serial stdio -device pci-testdev -machine accel=kvm -kernel x86/params.flat -initrd params.initrd enabling apic enabling apic nr_cpus=2 memsize=256 This works because setup_multiboot() looks for an initrd, and then, if present, it gets interpreted as a list of environment variables which become the unit tests **envp. Thanks, drew > > On Ubuntu, for example, the tests can be run by copying a test to the > boot directory (/boot) and adding a menuentry to grub (editing > /etc/grub.d/40_custom): > > menuentry 'idt_test' { > set root='ROOT' > multiboot BOOT_RELATIVE/idt_test.flat ignore nb_cpus=48 \ > ram_size=4294967296 no-test-device > } > > Replace ROOT with `grub-probe --target=bios_hints /boot` and > BOOT_RELATIVE with `grub-mkrelpath /boot`, and run update-grub. > > Note that the first kernel parameter is ignored for compatibility with > test executions through QEMU. >