
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)
 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.
