Spaces:
Runtime error
Runtime error
| Tests for the x86 architecture are run as kernel images for qemu that support | |
| multiboot format. The tests use an infrastructure called from the bios code. | |
| The infrastructure initialize the system/cpus, switches to long-mode, and | |
| calls the 'main' function of the individual test. Tests use a qemu virtual | |
| test device, named testdev, for services like printing, exiting, querying | |
| memory size, etc. See file docs/testdev.txt for more details. | |
| Examples of a test invocation: | |
| These invocations run the msr test case and outputs to stdio. | |
| Using qemu-kvm: | |
| qemu-kvm -device testdev,chardev=testlog \ | |
| -chardev file,id=testlog,path=msr.out \ | |
| -serial stdio -kernel ./x86/msr.flat | |
| Using qemu (supported since qemu 1.3): | |
| qemu-system-x86_64 -enable-kvm -device pc-testdev -serial stdio \ | |
| -device isa-debug-exit,iobase=0xf4,iosize=0x4 \ | |
| -kernel ./x86/msr.flat | |
| Tests in this directory and what they do: | |
| access: lots of page table related access (pte/pde) (read/write) | |
| apic: enable x2apic, self ipi, ioapic intr, ioapic simultaneous | |
| emulator: move to/from regs, cmps, push, pop, to/from cr8, smsw and lmsw | |
| hypercall: intel and amd hypercall insn | |
| msr: write to msr (only KERNEL_GS_BASE for now) | |
| port80: lots of out to port 80 | |
| realmode: goes back to realmode, shld, push/pop, mov immediate, cmp | |
| immediate, add immediate, io, eflags instructions | |
| (clc, cli, etc.), jcc short, jcc near, call, long jmp, xchg | |
| sieve: heavy memory access with no paging and with paging static and | |
| with paging vmalloc'ed | |
| smptest: run smp_id() on every cpu and compares return value to number | |
| tsc: write to tsc(0) and write to tsc(100000000000) and read it back | |
| vmexit: long loops for each: cpuid, vmcall, mov_from_cr8, mov_to_cr8, | |
| inl_pmtimer, ipi, ipi+halt | |
| kvmclock_test: test of wallclock, monotonic cycle and performance of kvmclock | |
| pcid: basic functionality test of PCID/INVPCID feature | |
| Legacy notes: | |
| The exit status of the binary is inconsistent; with qemu-system, after | |
| the unit-test is done, the exit status of qemu is 1, different from the | |
| 'old style' qemu-kvm, whose exit status in successful completion is 0. | |
| The run script converts the qemu-system exit status to 0 (SUCCESS), and | |
| treats the legacy exit status of 0 as an error, converting it to an exit | |
| status of 1. | |