History log of /kvm-unit-tests/lib/riscv/asm/ (Results 26 – 50 of 50)
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
94ca1aaf28-Aug-2024 Andrew Jones <andrew.jones@linux.dev>

riscv: Introduce local_hart_init

When Sstc is available make sure that even if we enable timer
interrupts nothing will happen. This is necessary for cases where
the unit tests actually intend to use

riscv: Introduce local_hart_init

When Sstc is available make sure that even if we enable timer
interrupts nothing will happen. This is necessary for cases where
the unit tests actually intend to use the SBI TIME extension and
aren't thinking about Sstc at all, like the SBI TIME test in
riscv/sbi where we can now remove the initialization.

We introduce local_hart_init() rather than something like
local_timer_init() for this since other non-timer-related CSRs will
also need to be set at init time in the future and we can just lump
them all together.

Signed-off-by: Andrew Jones <andrew.jones@linux.dev>

show more ...

6489b8b025-Aug-2024 James Raphael Tiovalen <jamestiotio@gmail.com>

riscv: sbi: Add IPI extension support

Add IPI EID and FID constants and a helper function to perform the IPI
SBI ecall.

Signed-off-by: James Raphael Tiovalen <jamestiotio@gmail.com>
Signed-off-by:

riscv: sbi: Add IPI extension support

Add IPI EID and FID constants and a helper function to perform the IPI
SBI ecall.

Signed-off-by: James Raphael Tiovalen <jamestiotio@gmail.com>
Signed-off-by: Andrew Jones <andrew.jones@linux.dev>

show more ...

88f594c810-Aug-2024 Andrew Jones <andrew.jones@linux.dev>

riscv: Define and use PHYS_PAGE_MASK

C doesn't extend the sign bit for unsigned types since there isn't a
sign bit to extend. This means a promotion of a u32 to a u64 results
in the upper 32 bits of

riscv: Define and use PHYS_PAGE_MASK

C doesn't extend the sign bit for unsigned types since there isn't a
sign bit to extend. This means a promotion of a u32 to a u64 results
in the upper 32 bits of the u64 being zero. When the u64 is then used
as a mask on another u64 the upper 32 bits get cleared, and that's
definitely not the intention of 'phys_addr & PAGE_MASK', which should
only clear the lower bits for page alignment. Create PHYS_PAGE_MASK
to do the right thing.

Signed-off-by: Andrew Jones <andrew.jones@linux.dev>

show more ...

12e0faac10-Aug-2024 Andrew Jones <andrew.jones@linux.dev>

riscv: mmu: Sanity check input physical addresses

Ensure physical addresses aren't using bits they shouldn't be.

Signed-off-by: Andrew Jones <andrew.jones@linux.dev>

92f91f6407-Aug-2024 Andrew Jones <andrew.jones@linux.dev>

riscv: Support up to 34-bit physical addresses on rv32, sort of

Change virt_to_phys() and phys_to_virt() to use phys_addr_t instead
of unsigned long. This allows 32-bit builds to use physical addres

riscv: Support up to 34-bit physical addresses on rv32, sort of

Change virt_to_phys() and phys_to_virt() to use phys_addr_t instead
of unsigned long. This allows 32-bit builds to use physical addresses
over 32 bits wide (the spec allows up to 34 bits). But, to keep
things simple, we don't expect physical addresses wider than 32 bits
in most the library code (and that's ensured by sprinkling around
some asserts). IOW, the support is really only for unit tests which
want to test with an additional high memory region.

Signed-off-by: Andrew Jones <andrew.jones@linux.dev>

show more ...

ce58d3a407-Aug-2024 Cade Richard <cade.richard@gmail.com>

riscv: sbi: Add dbcn write test

Added a unit test for the RISC-V SBI debug console write() and
write_byte() functions. The output of the tests must be inspected
manually to verify that the correct b

riscv: sbi: Add dbcn write test

Added a unit test for the RISC-V SBI debug console write() and
write_byte() functions. The output of the tests must be inspected
manually to verify that the correct bytes are written. For write(),
the expected output is 'DBCN_WRITE_TEST_STRING'. For write_byte(),
the expected output is 'a'.

Signed-off-by: Cade Richard <cade.richard@berkeley.edu>
[Applied all my suggested changes from the v4 review.]
Signed-off-by: Andrew Jones <andrew.jones@linux.dev>

show more ...

bcd6000817-May-2024 Clément Léger <cleger@rivosinc.com>

riscv: move REG_L/REG_W in a dedicated asm.h file

These assembly macros will be used as part of the SSE entry assembly
code, export them in asm.h header.

Signed-off-by: Clément Léger <cleger@rivosi

riscv: move REG_L/REG_W in a dedicated asm.h file

These assembly macros will be used as part of the SSE entry assembly
code, export them in asm.h header.

Signed-off-by: Clément Léger <cleger@rivosinc.com>
Signed-off-by: Andrew Jones <andrew.jones@linux.dev>

show more ...

14fa12b130-Jul-2024 James Raphael Tiovalen <jamestiotio@gmail.com>

riscv: sbi: Add test for timer extension

Add a test for the set_timer function of the time extension. The test
checks that:
- The time extension is available
- The installed timer interrupt handler

riscv: sbi: Add test for timer extension

Add a test for the set_timer function of the time extension. The test
checks that:
- The time extension is available
- The installed timer interrupt handler is called
- The timer interrupt is received within a reasonable time interval
- The timer interrupt pending bit is cleared after the set_timer SBI
call is made when a time in the future is passed

The timer interrupt delay can be set using the TIMER_DELAY environment
variable in microseconds. The default delay value is 200 milliseconds.
Since the interrupt can arrive a little later than the specified delay,
allow some margin of error. This margin of error can be specified via
the TIMER_MARGIN environment variable in microseconds. The default
margin of error is 200 milliseconds.

Reviewed-by: Andrew Jones <andrew.jones@linux.dev>
Signed-off-by: James Raphael Tiovalen <jamestiotio@gmail.com>
[Modified masked timer test and made a few cleanups.]
Signed-off-by: Andrew Jones <andrew.jones@linux.dev>

show more ...

93bcbb0930-Jul-2024 James Raphael Tiovalen <jamestiotio@gmail.com>

riscv: Add some delay and timer routines

Add a delay method that would allow tests to wait for some specified
number of cycles. Also add a conversion helper method between
microseconds and cycles. T

riscv: Add some delay and timer routines

Add a delay method that would allow tests to wait for some specified
number of cycles. Also add a conversion helper method between
microseconds and cycles. This conversion is done by using the timebase
frequency, which is obtained during setup via the device tree.

Reviewed-by: Andrew Jones <andrew.jones@linux.dev>
Signed-off-by: James Raphael Tiovalen <jamestiotio@gmail.com>
Signed-off-by: Andrew Jones <andrew.jones@linux.dev>

show more ...

7040d2a930-Jul-2024 James Raphael Tiovalen <jamestiotio@gmail.com>

riscv: Add method to probe for SBI extensions

Add a `sbi_probe` helper method that can be used by SBI extension tests
to check if a given extension is available.

Suggested-by: Andrew Jones <andrew.

riscv: Add method to probe for SBI extensions

Add a `sbi_probe` helper method that can be used by SBI extension tests
to check if a given extension is available.

Suggested-by: Andrew Jones <andrew.jones@linux.dev>
Reviewed-by: Andrew Jones <andrew.jones@linux.dev>
Signed-off-by: James Raphael Tiovalen <jamestiotio@gmail.com>
Signed-off-by: Andrew Jones <andrew.jones@linux.dev>

show more ...

c20c0aa730-Jul-2024 James Raphael Tiovalen <jamestiotio@gmail.com>

riscv: Update exception cause list

Update the list of exception and interrupt causes to follow the latest
RISC-V privileged ISA specification (version 20240411 section 18.6.1).

Reviewed-by: Andrew

riscv: Update exception cause list

Update the list of exception and interrupt causes to follow the latest
RISC-V privileged ISA specification (version 20240411 section 18.6.1).

Reviewed-by: Andrew Jones <andrew.jones@linux.dev>
Signed-off-by: James Raphael Tiovalen <jamestiotio@gmail.com>
Signed-off-by: Andrew Jones <andrew.jones@linux.dev>

show more ...

a3c0b55030-Jul-2024 Andrew Jones <andrew.jones@linux.dev>

riscv: Extend exception handling support for interrupts

Add install_irq_handler() to enable tests to install interrupt handlers.
Also add local_irq_enable() and local_irq_disable() to respectively
e

riscv: Extend exception handling support for interrupts

Add install_irq_handler() to enable tests to install interrupt handlers.
Also add local_irq_enable() and local_irq_disable() to respectively
enable and disable IRQs via the sstatus.SIE bit.

Signed-off-by: James Raphael Tiovalen <jamestiotio@gmail.com>
Signed-off-by: Andrew Jones <andrew.jones@linux.dev>

show more ...


/kvm-unit-tests/.gitlab-ci.yml
/kvm-unit-tests/.shellcheckrc
/kvm-unit-tests/.travis.yml
/kvm-unit-tests/MAINTAINERS
/kvm-unit-tests/Makefile
/kvm-unit-tests/README.md
/kvm-unit-tests/arm/Makefile.arm64
/kvm-unit-tests/arm/cstart.S
/kvm-unit-tests/arm/cstart64.S
/kvm-unit-tests/arm/efi/run
/kvm-unit-tests/arm/fpu.c
/kvm-unit-tests/arm/gic.c
/kvm-unit-tests/arm/selftest.c
/kvm-unit-tests/arm/unittests.cfg
/kvm-unit-tests/common/memory-verify.c
/kvm-unit-tests/common/selftest-migration.c
/kvm-unit-tests/common/sieve.c
/kvm-unit-tests/configure
/kvm-unit-tests/docs/unittests.txt
/kvm-unit-tests/lib/arm/asm/arm-smccc.h
/kvm-unit-tests/lib/arm/asm/pgtable.h
/kvm-unit-tests/lib/arm/asm/psci.h
/kvm-unit-tests/lib/arm/psci.c
/kvm-unit-tests/lib/arm/setup.c
/kvm-unit-tests/lib/arm64/asm/arm-smccc.h
/kvm-unit-tests/lib/arm64/asm/esr.h
/kvm-unit-tests/lib/arm64/asm/processor.h
/kvm-unit-tests/lib/arm64/asm/sysreg.h
/kvm-unit-tests/lib/arm64/processor.c
/kvm-unit-tests/lib/efi.c
/kvm-unit-tests/lib/libcflat.h
/kvm-unit-tests/lib/migrate.c
/kvm-unit-tests/lib/migrate.h
/kvm-unit-tests/lib/powerpc/asm/hcall.h
/kvm-unit-tests/lib/powerpc/asm/processor.h
/kvm-unit-tests/lib/powerpc/asm/reg.h
/kvm-unit-tests/lib/powerpc/asm/rtas.h
/kvm-unit-tests/lib/powerpc/asm/setup.h
/kvm-unit-tests/lib/powerpc/asm/smp.h
/kvm-unit-tests/lib/powerpc/hcall.c
/kvm-unit-tests/lib/powerpc/io.c
/kvm-unit-tests/lib/powerpc/io.h
/kvm-unit-tests/lib/powerpc/processor.c
/kvm-unit-tests/lib/powerpc/rtas.c
/kvm-unit-tests/lib/powerpc/setup.c
/kvm-unit-tests/lib/powerpc/smp.c
/kvm-unit-tests/lib/ppc64/asm-offsets.c
/kvm-unit-tests/lib/ppc64/asm/atomic.h
/kvm-unit-tests/lib/ppc64/asm/barrier.h
/kvm-unit-tests/lib/ppc64/asm/mmu.h
/kvm-unit-tests/lib/ppc64/asm/opal.h
/kvm-unit-tests/lib/ppc64/asm/page.h
/kvm-unit-tests/lib/ppc64/asm/pgtable-hwdef.h
/kvm-unit-tests/lib/ppc64/asm/pgtable.h
/kvm-unit-tests/lib/ppc64/asm/ptrace.h
/kvm-unit-tests/lib/ppc64/asm/stack.h
/kvm-unit-tests/lib/ppc64/mmu.c
/kvm-unit-tests/lib/ppc64/opal-calls.S
/kvm-unit-tests/lib/ppc64/opal.c
/kvm-unit-tests/lib/ppc64/stack.c
/kvm-unit-tests/lib/report.c
csr.h
processor.h
/kvm-unit-tests/lib/riscv/processor.c
/kvm-unit-tests/lib/s390x/asm/sigp.h
/kvm-unit-tests/lib/s390x/asm/uv.h
/kvm-unit-tests/lib/s390x/css.h
/kvm-unit-tests/lib/s390x/io.c
/kvm-unit-tests/lib/s390x/uv.c
/kvm-unit-tests/lib/s390x/uv.h
/kvm-unit-tests/lib/vmalloc.c
/kvm-unit-tests/lib/vmalloc.h
/kvm-unit-tests/lib/x86/apic.h
/kvm-unit-tests/lib/x86/asm/bitops.h
/kvm-unit-tests/lib/x86/desc.h
/kvm-unit-tests/lib/x86/pmu.h
/kvm-unit-tests/lib/x86/processor.h
/kvm-unit-tests/lib/x86/vm.h
/kvm-unit-tests/powerpc/Makefile.common
/kvm-unit-tests/powerpc/Makefile.ppc64
/kvm-unit-tests/powerpc/atomics.c
/kvm-unit-tests/powerpc/cstart64.S
/kvm-unit-tests/powerpc/emulator.c
/kvm-unit-tests/powerpc/interrupts.c
/kvm-unit-tests/powerpc/memory-verify.c
/kvm-unit-tests/powerpc/mmu.c
/kvm-unit-tests/powerpc/run
/kvm-unit-tests/powerpc/selftest.c
/kvm-unit-tests/powerpc/sieve.c
/kvm-unit-tests/powerpc/smp.c
/kvm-unit-tests/powerpc/spapr_vpa.c
/kvm-unit-tests/powerpc/sprs.c
/kvm-unit-tests/powerpc/timebase.c
/kvm-unit-tests/powerpc/tm.c
/kvm-unit-tests/powerpc/unittests.cfg
/kvm-unit-tests/riscv/efi/run
/kvm-unit-tests/riscv/run
/kvm-unit-tests/riscv/sbi.c
/kvm-unit-tests/riscv/unittests.cfg
/kvm-unit-tests/run_tests.sh
/kvm-unit-tests/s390x/Makefile
/kvm-unit-tests/s390x/cmm.c
/kvm-unit-tests/s390x/emulator.c
/kvm-unit-tests/s390x/memory-verify.c
/kvm-unit-tests/s390x/migration-cmm.c
/kvm-unit-tests/s390x/migration-skey.c
/kvm-unit-tests/s390x/migration.c
/kvm-unit-tests/s390x/mvpg.c
/kvm-unit-tests/s390x/run
/kvm-unit-tests/s390x/sclp.c
/kvm-unit-tests/s390x/selftest.c
/kvm-unit-tests/s390x/snippets/c/flat.lds.S
/kvm-unit-tests/s390x/unittests.cfg
/kvm-unit-tests/scripts/arch-run.bash
/kvm-unit-tests/scripts/common.bash
/kvm-unit-tests/scripts/mkstandalone.sh
/kvm-unit-tests/scripts/runtime.bash
/kvm-unit-tests/scripts/s390x/func.bash
/kvm-unit-tests/x86/asyncpf.c
/kvm-unit-tests/x86/debug.c
/kvm-unit-tests/x86/msr.c
/kvm-unit-tests/x86/pmu.c
/kvm-unit-tests/x86/pmu_lbr.c
/kvm-unit-tests/x86/pmu_pebs.c
/kvm-unit-tests/x86/svm.h
/kvm-unit-tests/x86/svm_tests.c
/kvm-unit-tests/x86/unittests.cfg
/kvm-unit-tests/x86/vmexit.c
/kvm-unit-tests/x86/vmware_backdoors.c
/kvm-unit-tests/x86/vmx.c
/kvm-unit-tests/x86/vmx.h
/kvm-unit-tests/x86/vmx_tests.c
9f34c81005-Mar-2024 Andrew Jones <andrew.jones@linux.dev>

riscv: Enable EFI boot

Mimicking Arm's setup_efi() and duplicating some code from riscv's
setup(), add the EFI setup code needed to boot unit tests from EFI-
capable bootloaders. The selftest unit t

riscv: Enable EFI boot

Mimicking Arm's setup_efi() and duplicating some code from riscv's
setup(), add the EFI setup code needed to boot unit tests from EFI-
capable bootloaders. The selftest unit test can now be run with

qemu-system-riscv64 \
-nodefaults -nographic -serial mon:stdio \
-accel tcg -cpu max \
-machine virt,pflash0=pflash0 \
-blockdev node-name=pflash0,driver=file,read-only=on,filename=RISCV_VIRT_CODE.fd \
-smp 16 \
-kernel riscv/selftest.efi \
-initrd test-env \
-append 'selftest.efi foo bar baz' \
-machine acpi=off

where test-env has the environment variables
$ cat test-env
FOO=foo
BAR=bar
BAZ=baz

Signed-off-by: Andrew Jones <andrew.jones@linux.dev>

show more ...

68128c6f05-Mar-2024 Andrew Jones <andrew.jones@linux.dev>

riscv: Enable building for EFI

Mimicking arm64 support, add configure and makefile changes to build
for EFI. Since the linker script is replaced also replace the initial
cstart code (also done like

riscv: Enable building for EFI

Mimicking arm64 support, add configure and makefile changes to build
for EFI. Since the linker script is replaced also replace the initial
cstart code (also done like arm64). Finally, provide a stub for
setup_efi() in order to allow compiling to complete (even though
tests can't yet run).

Signed-off-by: Andrew Jones <andrew.jones@linux.dev>

show more ...


/kvm-unit-tests/.gitlab-ci.yml
/kvm-unit-tests/MAINTAINERS
/kvm-unit-tests/arm/Makefile.common
/kvm-unit-tests/arm/efi/crt0-efi-aarch64.S
/kvm-unit-tests/arm/efi/elf_aarch64_efi.lds
/kvm-unit-tests/arm/efi/run
/kvm-unit-tests/arm/run
/kvm-unit-tests/arm/sieve.c
/kvm-unit-tests/common/selftest-migration.c
/kvm-unit-tests/common/sieve.c
/kvm-unit-tests/configure
/kvm-unit-tests/lib/arm/io.c
/kvm-unit-tests/lib/arm/mmu.c
/kvm-unit-tests/lib/arm/setup.c
/kvm-unit-tests/lib/arm/stack.c
/kvm-unit-tests/lib/arm64/processor.c
/kvm-unit-tests/lib/arm64/stack.c
/kvm-unit-tests/lib/efi.c
/kvm-unit-tests/lib/elf.h
/kvm-unit-tests/lib/linux/efi.h
/kvm-unit-tests/lib/memregions.c
/kvm-unit-tests/lib/memregions.h
/kvm-unit-tests/lib/migrate.c
/kvm-unit-tests/lib/migrate.h
/kvm-unit-tests/lib/powerpc/asm/ppc_asm.h
/kvm-unit-tests/lib/powerpc/asm/processor.h
/kvm-unit-tests/lib/powerpc/asm/reg.h
/kvm-unit-tests/lib/powerpc/asm/time.h
/kvm-unit-tests/lib/powerpc/hcall.c
/kvm-unit-tests/lib/powerpc/processor.c
/kvm-unit-tests/lib/powerpc/smp.c
/kvm-unit-tests/lib/ppc64/asm/reg.h
/kvm-unit-tests/lib/ppc64/asm/time.h
setup.h
/kvm-unit-tests/lib/riscv/processor.c
/kvm-unit-tests/lib/riscv/stack.c
/kvm-unit-tests/lib/s390x/stack.c
/kvm-unit-tests/lib/stack.c
/kvm-unit-tests/lib/stack.h
/kvm-unit-tests/lib/x86/stack.c
/kvm-unit-tests/powerpc/Makefile.common
/kvm-unit-tests/powerpc/selftest-migration.c
/kvm-unit-tests/powerpc/spapr_vpa.c
/kvm-unit-tests/powerpc/sprs.c
/kvm-unit-tests/powerpc/tm.c
/kvm-unit-tests/powerpc/unittests.cfg
/kvm-unit-tests/riscv/Makefile
/kvm-unit-tests/riscv/cstart.S
/kvm-unit-tests/riscv/efi/crt0-efi-riscv64.S
/kvm-unit-tests/riscv/efi/elf_riscv64_efi.lds
/kvm-unit-tests/riscv/efi/reloc_riscv64.c
/kvm-unit-tests/riscv/flat.lds
/kvm-unit-tests/riscv/sieve.c
/kvm-unit-tests/run_tests.sh
/kvm-unit-tests/s390x/Makefile
/kvm-unit-tests/s390x/selftest-migration.c
/kvm-unit-tests/s390x/sieve.c
/kvm-unit-tests/s390x/snippets/c/sie-dat.c
/kvm-unit-tests/s390x/unittests.cfg
/kvm-unit-tests/scripts/arch-run.bash
/kvm-unit-tests/scripts/runtime.bash
/kvm-unit-tests/x86/hyperv.h
/kvm-unit-tests/x86/hyperv_clock.c
/kvm-unit-tests/x86/hyperv_connections.c
/kvm-unit-tests/x86/hyperv_stimer.c
/kvm-unit-tests/x86/hyperv_synic.c
/kvm-unit-tests/x86/pmu.c
/kvm-unit-tests/x86/pmu_pebs.c
/kvm-unit-tests/x86/sieve.c
/kvm-unit-tests/x86/svm_tests.c
/kvm-unit-tests/x86/unittests.cfg
/kvm-unit-tests/x86/vmx_tests.c
db0ae91c03-Oct-2023 Andrew Jones <andrew.jones@linux.dev>

riscv: Add isa string parsing

We can probably get away with just assuming several important
and popular extensions (at least everything covered by G), but
we'll also want to use some extensions whic

riscv: Add isa string parsing

We can probably get away with just assuming several important
and popular extensions (at least everything covered by G), but
we'll also want to use some extensions which we should ensure
are present by parsing the isa string. Add a parser and already
apply it to Sstc.

Signed-off-by: Andrew Jones <andrew.jones@linux.dev>
Acked-by: Thomas Huth <thuth@redhat.com>

show more ...

23100d9722-Jan-2024 Andrew Jones <andrew.jones@linux.dev>

riscv: Enable vmalloc

Implement the functions that vmalloc depends on and let it enable the
MMU through setup_vm(). We can now also run the sieve test, so we
add it as well.

Signed-off-by: Andrew J

riscv: Enable vmalloc

Implement the functions that vmalloc depends on and let it enable the
MMU through setup_vm(). We can now also run the sieve test, so we
add it as well.

Signed-off-by: Andrew Jones <andrew.jones@linux.dev>
Acked-by: Thomas Huth <thuth@redhat.com>

show more ...

0c39d9ea22-Jan-2024 Andrew Jones <andrew.jones@linux.dev>

riscv: Enable the MMU in secondaries

Set each secondary satp to the same as the primary's and enable the
MMU when starting. We also change the memalign() to alloc_pages()
to prepare for enabling vma

riscv: Enable the MMU in secondaries

Set each secondary satp to the same as the primary's and enable the
MMU when starting. We also change the memalign() to alloc_pages()
to prepare for enabling vmalloc_ops. We always want an address
for the stack where its virtual address is the same as its physical
address, but vmalloc_ops.memalign wouldn't provide that.

Signed-off-by: Andrew Jones <andrew.jones@linux.dev>
Acked-by: Thomas Huth <thuth@redhat.com>

show more ...

ad435a7120-Jan-2024 Andrew Jones <andrew.jones@linux.dev>

riscv: Add MMU support

Add minimal page table defines and functions in order to build page
tables and enable the MMU.

Signed-off-by: Andrew Jones <andrew.jones@linux.dev>
Acked-by: Thomas Huth <thu

riscv: Add MMU support

Add minimal page table defines and functions in order to build page
tables and enable the MMU.

Signed-off-by: Andrew Jones <andrew.jones@linux.dev>
Acked-by: Thomas Huth <thuth@redhat.com>

show more ...

6895ce6d19-Jan-2024 Andrew Jones <andrew.jones@linux.dev>

riscv: Populate memregions and switch to page allocator

Get the memory regions from the DT rather than just assuming we have
enough. Getting memory regions and setting their flags is also a
first st

riscv: Populate memregions and switch to page allocator

Get the memory regions from the DT rather than just assuming we have
enough. Getting memory regions and setting their flags is also a
first step to enabling the MMU. Also switch to the page allocator,
which is a second step to enabling the MMU.

Signed-off-by: Andrew Jones <andrew.jones@linux.dev>
Acked-by: Thomas Huth <thuth@redhat.com>

show more ...

9c92b28e03-Oct-2023 Andrew Jones <andrew.jones@linux.dev>

riscv: Add SMP support

Implement the same SMP API that Arm has but using an SBI HSM
call instead of PSCI. Unlike Arm, riscv needs to always set
cpu0_calls_idle, because the boot hart doesn't have to

riscv: Add SMP support

Implement the same SMP API that Arm has but using an SBI HSM
call instead of PSCI. Unlike Arm, riscv needs to always set
cpu0_calls_idle, because the boot hart doesn't have to be the
first hart described in the DT, which means cpu0 may well be
a secondary. As usual, add a couple tests to selftest.c to
make sure everything works.

(The secondary boot process is also improved over Arm's a bit
by keeping boot data percpu, dropping the need for a lock. We
could create percpu data for Arm too, but that's left as future
work.)

Signed-off-by: Andrew Jones <andrew.jones@linux.dev>
Acked-by: Thomas Huth <thuth@redhat.com>

show more ...

6fba6b8402-Oct-2023 Andrew Jones <andrew.jones@linux.dev>

riscv: Add backtrace support

Enable stack unwinding, even when going through an exception, by
implementing backtrace() and pushing a frame pointer on the stack
in exception_vectors.

Signed-off-by:

riscv: Add backtrace support

Enable stack unwinding, even when going through an exception, by
implementing backtrace() and pushing a frame pointer on the stack
in exception_vectors.

Signed-off-by: Andrew Jones <andrew.jones@linux.dev>
Acked-by: Thomas Huth <thuth@redhat.com>

show more ...

386561f802-Oct-2023 Andrew Jones <andrew.jones@linux.dev>

riscv: Add exception handling

Steal more code from Linux to implement exception handling, but with
the same kvm-unit-tests API that Arm has. Also introduce struct
thread_info like Arm has in order t

riscv: Add exception handling

Steal more code from Linux to implement exception handling, but with
the same kvm-unit-tests API that Arm has. Also introduce struct
thread_info like Arm has in order to hold the handler pointers.
Finally, as usual, extend the selftest to make sure it all works.

Signed-off-by: Andrew Jones <andrew.jones@linux.dev>
Acked-by: Thomas Huth <thuth@redhat.com>

show more ...

9ccb00e424-Sep-2023 Andrew Jones <andrew.jones@linux.dev>

riscv: Add initial SBI support

Add an SBI call function and immediately apply it to properly
exiting the test (instead of hanging) by invoking SBI shutdown
from exit(). Also seed an SBI test file wi

riscv: Add initial SBI support

Add an SBI call function and immediately apply it to properly
exiting the test (instead of hanging) by invoking SBI shutdown
from exit(). Also seed an SBI test file with a simple SBI test
that checks mvendorid is correctly extracted.

Run with e.g.
qemu-system-riscv64 -nographic -M virt \
-kernel riscv/sbi.flat \
-cpu rv64,mvendorid=45 \
-initrd sbi-env

and be happy that ctrl-a c q is no longer necessary to return to
the shell prompt. sbi-env has MVENDORID=45 in it.

Signed-off-by: Andrew Jones <andrew.jones@linux.dev>
Acked-by: Thomas Huth <thuth@redhat.com>

show more ...

22f287f424-Sep-2023 Andrew Jones <andrew.jones@linux.dev>

riscv: Add DT parsing

Start building setup() by copying code from Arm and adding
dependencies along the way like bitops and a few more barriers.
We now parse the DT for the UART base address to be s

riscv: Add DT parsing

Start building setup() by copying code from Arm and adding
dependencies along the way like bitops and a few more barriers.
We now parse the DT for the UART base address to be sure we
find what we expect with the early base. We also parse the
CPU nodes to get the hartids, even though we don't yet support
booting secondaries. Finally, add parsing of bootargs to get
the command line and parsing of the environ to set the environment
variables, and then extend the selftest to ensure it all works.

We don't do proper memory setup yet, only just enough to allocate
memory for the environment variables and any another small mallocs
that may be necessary.

Note, we've added a banner, which Arm doesn't have, because we
need to separate the test output from OpenSBI output.

Run with
qemu-system-riscv64 -nographic -M virt \
-kernel riscv/selftest.flat \
-append 'foo bar baz' \
-initrd test-env \
-smp 16

where test-env is a text file with the environment, i.e.
$ cat test-env
FOO=foo
BAR=bar
BAZ=baz

Signed-off-by: Andrew Jones <andrew.jones@linux.dev>
Acked-by: Thomas Huth <thuth@redhat.com>

show more ...

bd744d4624-Sep-2023 Andrew Jones <andrew.jones@linux.dev>

riscv: Initial port, hello world

Add the minimal amount of code possible in order to launch a first
test, which just prints "Hello, world" using the expected UART
address of the QEMU virt machine. A

riscv: Initial port, hello world

Add the minimal amount of code possible in order to launch a first
test, which just prints "Hello, world" using the expected UART
address of the QEMU virt machine. Add files, stubs, and some support,
such as barriers and MMIO read/write along the way in order to
satisfy the compiler. Basically everything is either copied from
the arm64 port of kvm-unit-tests, or at least inspired by it, and,
in that case, the RISC-V Linux kernel code was copied.

Run with
qemu-system-riscv64 -nographic -M virt -kernel riscv/selftest.flat

and then go to the monitor (ctrl-a c) and use 'q' to quit, since
the unit test will just hang after printing hello world and the
exit code.

Signed-off-by: Andrew Jones <andrew.jones@linux.dev>
Acked-by: Thomas Huth <thuth@redhat.com>

show more ...


/kvm-unit-tests/.editorconfig
/kvm-unit-tests/.gitignore
/kvm-unit-tests/.gitlab-ci.yml
/kvm-unit-tests/.travis.yml
/kvm-unit-tests/COPYRIGHT
/kvm-unit-tests/LICENSE
/kvm-unit-tests/MAINTAINERS
/kvm-unit-tests/Makefile
/kvm-unit-tests/README
/kvm-unit-tests/README.macOS.md
/kvm-unit-tests/README.md
/kvm-unit-tests/arm/Makefile
/kvm-unit-tests/arm/Makefile.arm
/kvm-unit-tests/arm/Makefile.arm64
/kvm-unit-tests/arm/Makefile.common
/kvm-unit-tests/arm/cache.c
/kvm-unit-tests/arm/cstart.S
/kvm-unit-tests/arm/cstart64.S
/kvm-unit-tests/arm/debug.c
/kvm-unit-tests/arm/dummy.c
/kvm-unit-tests/arm/efi/crt0-efi-aarch64.S
/kvm-unit-tests/arm/efi/elf_aarch64_efi.lds
/kvm-unit-tests/arm/efi/reloc_aarch64.c
/kvm-unit-tests/arm/efi/run
/kvm-unit-tests/arm/flat.lds
/kvm-unit-tests/arm/gic.c
/kvm-unit-tests/arm/micro-bench.c
/kvm-unit-tests/arm/pci-test.c
/kvm-unit-tests/arm/pl031.c
/kvm-unit-tests/arm/pmu.c
/kvm-unit-tests/arm/psci.c
/kvm-unit-tests/arm/run
/kvm-unit-tests/arm/selftest.c
/kvm-unit-tests/arm/sieve.c
/kvm-unit-tests/arm/spinlock-test.c
/kvm-unit-tests/arm/timer.c
/kvm-unit-tests/arm/unittests.cfg
/kvm-unit-tests/ci/cirrus-ci-fedora.yml
/kvm-unit-tests/ci/cirrus-ci-macos-i386.yml
/kvm-unit-tests/ci/cirrus-ci-macos-x86-64.yml
/kvm-unit-tests/configure
/kvm-unit-tests/errata.txt
/kvm-unit-tests/lib/abort.c
/kvm-unit-tests/lib/acpi.c
/kvm-unit-tests/lib/acpi.h
/kvm-unit-tests/lib/alloc.c
/kvm-unit-tests/lib/alloc.h
/kvm-unit-tests/lib/alloc_page.c
/kvm-unit-tests/lib/alloc_page.h
/kvm-unit-tests/lib/alloc_phys.c
/kvm-unit-tests/lib/alloc_phys.h
/kvm-unit-tests/lib/argv.c
/kvm-unit-tests/lib/argv.h
/kvm-unit-tests/lib/arm/.gitignore
/kvm-unit-tests/lib/arm/asm-offsets.c
/kvm-unit-tests/lib/arm/asm/arch_gicv3.h
/kvm-unit-tests/lib/arm/asm/asm-offsets.h
/kvm-unit-tests/lib/arm/asm/assembler.h
/kvm-unit-tests/lib/arm/asm/barrier.h
/kvm-unit-tests/lib/arm/asm/bitops.h
/kvm-unit-tests/lib/arm/asm/cpumask.h
/kvm-unit-tests/lib/arm/asm/delay.h
/kvm-unit-tests/lib/arm/asm/gic-v2.h
/kvm-unit-tests/lib/arm/asm/gic-v3-its.h
/kvm-unit-tests/lib/arm/asm/gic-v3.h
/kvm-unit-tests/lib/arm/asm/gic.h
/kvm-unit-tests/lib/arm/asm/io.h
/kvm-unit-tests/lib/arm/asm/memory_areas.h
/kvm-unit-tests/lib/arm/asm/mmu-api.h
/kvm-unit-tests/lib/arm/asm/mmu.h
/kvm-unit-tests/lib/arm/asm/page.h
/kvm-unit-tests/lib/arm/asm/pci.h
/kvm-unit-tests/lib/arm/asm/pgtable-hwdef.h
/kvm-unit-tests/lib/arm/asm/pgtable.h
/kvm-unit-tests/lib/arm/asm/processor.h
/kvm-unit-tests/lib/arm/asm/psci.h
/kvm-unit-tests/lib/arm/asm/ptrace.h
/kvm-unit-tests/lib/arm/asm/setup.h
/kvm-unit-tests/lib/arm/asm/smp.h
/kvm-unit-tests/lib/arm/asm/spinlock.h
/kvm-unit-tests/lib/arm/asm/stack.h
/kvm-unit-tests/lib/arm/asm/sysreg.h
/kvm-unit-tests/lib/arm/asm/thread_info.h
/kvm-unit-tests/lib/arm/asm/timer.h
/kvm-unit-tests/lib/arm/bitops.c
/kvm-unit-tests/lib/arm/delay.c
/kvm-unit-tests/lib/arm/eabi_compat.c
/kvm-unit-tests/lib/arm/gic-v2.c
/kvm-unit-tests/lib/arm/gic-v3.c
/kvm-unit-tests/lib/arm/gic.c
/kvm-unit-tests/lib/arm/io.c
/kvm-unit-tests/lib/arm/io.h
/kvm-unit-tests/lib/arm/ldivmod.S
/kvm-unit-tests/lib/arm/mmu.c
/kvm-unit-tests/lib/arm/processor.c
/kvm-unit-tests/lib/arm/psci.c
/kvm-unit-tests/lib/arm/setup.c
/kvm-unit-tests/lib/arm/smp.c
/kvm-unit-tests/lib/arm/spinlock.c
/kvm-unit-tests/lib/arm/stack.c
/kvm-unit-tests/lib/arm/timer.c
/kvm-unit-tests/lib/arm64/.gitignore
/kvm-unit-tests/lib/arm64/asm-offsets.c
/kvm-unit-tests/lib/arm64/asm/arch_gicv3.h
/kvm-unit-tests/lib/arm64/asm/asm-offsets.h
/kvm-unit-tests/lib/arm64/asm/assembler.h
/kvm-unit-tests/lib/arm64/asm/barrier.h
/kvm-unit-tests/lib/arm64/asm/bitops.h
/kvm-unit-tests/lib/arm64/asm/cpumask.h
/kvm-unit-tests/lib/arm64/asm/delay.h
/kvm-unit-tests/lib/arm64/asm/esr.h
/kvm-unit-tests/lib/arm64/asm/gic-v2.h
/kvm-unit-tests/lib/arm64/asm/gic-v3-its.h
/kvm-unit-tests/lib/arm64/asm/gic-v3.h
/kvm-unit-tests/lib/arm64/asm/gic.h
/kvm-unit-tests/lib/arm64/asm/io.h
/kvm-unit-tests/lib/arm64/asm/memory_areas.h
/kvm-unit-tests/lib/arm64/asm/mmu-api.h
/kvm-unit-tests/lib/arm64/asm/mmu.h
/kvm-unit-tests/lib/arm64/asm/page.h
/kvm-unit-tests/lib/arm64/asm/pci.h
/kvm-unit-tests/lib/arm64/asm/pgtable-hwdef.h
/kvm-unit-tests/lib/arm64/asm/pgtable.h
/kvm-unit-tests/lib/arm64/asm/processor.h
/kvm-unit-tests/lib/arm64/asm/psci.h
/kvm-unit-tests/lib/arm64/asm/ptrace.h
/kvm-unit-tests/lib/arm64/asm/setup.h
/kvm-unit-tests/lib/arm64/asm/smp.h
/kvm-unit-tests/lib/arm64/asm/spinlock.h
/kvm-unit-tests/lib/arm64/asm/stack.h
/kvm-unit-tests/lib/arm64/asm/sysreg.h
/kvm-unit-tests/lib/arm64/asm/thread_info.h
/kvm-unit-tests/lib/arm64/asm/timer.h
/kvm-unit-tests/lib/arm64/gic-v3-its-cmd.c
/kvm-unit-tests/lib/arm64/gic-v3-its.c
/kvm-unit-tests/lib/arm64/processor.c
/kvm-unit-tests/lib/arm64/spinlock.c
/kvm-unit-tests/lib/arm64/stack.c
/kvm-unit-tests/lib/asm-generic/atomic.h
/kvm-unit-tests/lib/asm-generic/barrier.h
/kvm-unit-tests/lib/asm-generic/io.h
/kvm-unit-tests/lib/asm-generic/memory_areas.h
/kvm-unit-tests/lib/asm-generic/page.h
/kvm-unit-tests/lib/asm-generic/pci-host-bridge.h
/kvm-unit-tests/lib/asm-generic/pci.h
/kvm-unit-tests/lib/asm-generic/spinlock.h
/kvm-unit-tests/lib/auxinfo.c
/kvm-unit-tests/lib/auxinfo.h
/kvm-unit-tests/lib/bitops.h
/kvm-unit-tests/lib/chr-testdev.c
/kvm-unit-tests/lib/chr-testdev.h
/kvm-unit-tests/lib/ctype.h
/kvm-unit-tests/lib/devicetree.c
/kvm-unit-tests/lib/devicetree.h
/kvm-unit-tests/lib/efi.c
/kvm-unit-tests/lib/efi.h
/kvm-unit-tests/lib/elf.h
/kvm-unit-tests/lib/errata.h
/kvm-unit-tests/lib/generated/.gitignore
/kvm-unit-tests/lib/getchar.c
/kvm-unit-tests/lib/kbuild.h
/kvm-unit-tests/lib/ldiv32.c
/kvm-unit-tests/lib/libcflat.h
/kvm-unit-tests/lib/libfdt/Makefile.libfdt
/kvm-unit-tests/lib/libfdt/README
/kvm-unit-tests/lib/libfdt/fdt.c
/kvm-unit-tests/lib/libfdt/fdt.h
/kvm-unit-tests/lib/libfdt/fdt_addresses.c
/kvm-unit-tests/lib/libfdt/fdt_check.c
/kvm-unit-tests/lib/libfdt/fdt_empty_tree.c
/kvm-unit-tests/lib/libfdt/fdt_overlay.c
/kvm-unit-tests/lib/libfdt/fdt_ro.c
/kvm-unit-tests/lib/libfdt/fdt_rw.c
/kvm-unit-tests/lib/libfdt/fdt_strerror.c
/kvm-unit-tests/lib/libfdt/fdt_sw.c
/kvm-unit-tests/lib/libfdt/fdt_wip.c
/kvm-unit-tests/lib/libfdt/libfdt.h
/kvm-unit-tests/lib/libfdt/libfdt_env.h
/kvm-unit-tests/lib/libfdt/libfdt_internal.h
/kvm-unit-tests/lib/libfdt/version.lds
/kvm-unit-tests/lib/linux/compiler.h
/kvm-unit-tests/lib/linux/const.h
/kvm-unit-tests/lib/linux/efi.h
/kvm-unit-tests/lib/linux/pci_regs.h
/kvm-unit-tests/lib/linux/psci.h
/kvm-unit-tests/lib/list.h
/kvm-unit-tests/lib/migrate.c
/kvm-unit-tests/lib/migrate.h
/kvm-unit-tests/lib/pci-edu.c
/kvm-unit-tests/lib/pci-edu.h
/kvm-unit-tests/lib/pci-host-generic.c
/kvm-unit-tests/lib/pci-host-generic.h
/kvm-unit-tests/lib/pci-testdev.c
/kvm-unit-tests/lib/pci.c
/kvm-unit-tests/lib/pci.h
/kvm-unit-tests/lib/powerpc/.gitignore
/kvm-unit-tests/lib/powerpc/asm/handlers.h
/kvm-unit-tests/lib/powerpc/asm/hcall.h
/kvm-unit-tests/lib/powerpc/asm/memory_areas.h
/kvm-unit-tests/lib/powerpc/asm/ppc_asm.h
/kvm-unit-tests/lib/powerpc/asm/processor.h
/kvm-unit-tests/lib/powerpc/asm/rtas.h
/kvm-unit-tests/lib/powerpc/asm/setup.h
/kvm-unit-tests/lib/powerpc/asm/smp.h
/kvm-unit-tests/lib/powerpc/asm/stack.h
/kvm-unit-tests/lib/powerpc/handlers.c
/kvm-unit-tests/lib/powerpc/hcall.c
/kvm-unit-tests/lib/powerpc/io.c
/kvm-unit-tests/lib/powerpc/io.h
/kvm-unit-tests/lib/powerpc/processor.c
/kvm-unit-tests/lib/powerpc/rtas.c
/kvm-unit-tests/lib/powerpc/setup.c
/kvm-unit-tests/lib/powerpc/smp.c
/kvm-unit-tests/lib/ppc64/.gitignore
/kvm-unit-tests/lib/ppc64/asm-offsets.c
/kvm-unit-tests/lib/ppc64/asm/asm-offsets.h
/kvm-unit-tests/lib/ppc64/asm/barrier.h
/kvm-unit-tests/lib/ppc64/asm/bitops.h
/kvm-unit-tests/lib/ppc64/asm/handlers.h
/kvm-unit-tests/lib/ppc64/asm/hcall.h
/kvm-unit-tests/lib/ppc64/asm/io.h
/kvm-unit-tests/lib/ppc64/asm/memory_areas.h
/kvm-unit-tests/lib/ppc64/asm/page.h
/kvm-unit-tests/lib/ppc64/asm/ppc_asm.h
/kvm-unit-tests/lib/ppc64/asm/processor.h
/kvm-unit-tests/lib/ppc64/asm/ptrace.h
/kvm-unit-tests/lib/ppc64/asm/rtas.h
/kvm-unit-tests/lib/ppc64/asm/setup.h
/kvm-unit-tests/lib/ppc64/asm/smp.h
/kvm-unit-tests/lib/ppc64/asm/spinlock.h
/kvm-unit-tests/lib/ppc64/asm/stack.h
/kvm-unit-tests/lib/ppc64/asm/vpa.h
/kvm-unit-tests/lib/printf.c
/kvm-unit-tests/lib/report.c
/kvm-unit-tests/lib/riscv/.gitignore
/kvm-unit-tests/lib/riscv/asm-offsets.c
asm-offsets.h
barrier.h
csr.h
io.h
page.h
setup.h
spinlock.h
stack.h
/kvm-unit-tests/lib/riscv/io.c
/kvm-unit-tests/lib/riscv/setup.c
/kvm-unit-tests/lib/s390x/.gitignore
/kvm-unit-tests/lib/s390x/asm-offsets.c
/kvm-unit-tests/lib/s390x/asm/arch_def.h
/kvm-unit-tests/lib/s390x/asm/asm-offsets.h
/kvm-unit-tests/lib/s390x/asm/barrier.h
/kvm-unit-tests/lib/s390x/asm/bitops.h
/kvm-unit-tests/lib/s390x/asm/cmm.h
/kvm-unit-tests/lib/s390x/asm/cpacf.h
/kvm-unit-tests/lib/s390x/asm/facility.h
/kvm-unit-tests/lib/s390x/asm/float.h
/kvm-unit-tests/lib/s390x/asm/interrupt.h
/kvm-unit-tests/lib/s390x/asm/io.h
/kvm-unit-tests/lib/s390x/asm/mem.h
/kvm-unit-tests/lib/s390x/asm/memory_areas.h
/kvm-unit-tests/lib/s390x/asm/page.h
/kvm-unit-tests/lib/s390x/asm/pgtable.h
/kvm-unit-tests/lib/s390x/asm/sigp.h
/kvm-unit-tests/lib/s390x/asm/spinlock.h
/kvm-unit-tests/lib/s390x/asm/stack.h
/kvm-unit-tests/lib/s390x/asm/time.h
/kvm-unit-tests/lib/s390x/asm/uv.h
/kvm-unit-tests/lib/s390x/asm/vector.h
/kvm-unit-tests/lib/s390x/css.h
/kvm-unit-tests/lib/s390x/css_dump.c
/kvm-unit-tests/lib/s390x/css_lib.c
/kvm-unit-tests/lib/s390x/fault.c
/kvm-unit-tests/lib/s390x/fault.h
/kvm-unit-tests/lib/s390x/gs.h
/kvm-unit-tests/lib/s390x/hardware.c
/kvm-unit-tests/lib/s390x/hardware.h
/kvm-unit-tests/lib/s390x/interrupt.c
/kvm-unit-tests/lib/s390x/interrupt.h
/kvm-unit-tests/lib/s390x/io.c
/kvm-unit-tests/lib/s390x/malloc_io.c
/kvm-unit-tests/lib/s390x/malloc_io.h
/kvm-unit-tests/lib/s390x/mmu.c
/kvm-unit-tests/lib/s390x/mmu.h
/kvm-unit-tests/lib/s390x/pv_icptdata.h
/kvm-unit-tests/lib/s390x/sclp-console.c
/kvm-unit-tests/lib/s390x/sclp.c
/kvm-unit-tests/lib/s390x/sclp.h
/kvm-unit-tests/lib/s390x/sie.c
/kvm-unit-tests/lib/s390x/sie.h
/kvm-unit-tests/lib/s390x/smp.c
/kvm-unit-tests/lib/s390x/smp.h
/kvm-unit-tests/lib/s390x/snippet.h
/kvm-unit-tests/lib/s390x/stack.c
/kvm-unit-tests/lib/s390x/stsi.h
/kvm-unit-tests/lib/s390x/uv.c
/kvm-unit-tests/lib/s390x/uv.h
/kvm-unit-tests/lib/setjmp.h
/kvm-unit-tests/lib/stack.c
/kvm-unit-tests/lib/stack.h
/kvm-unit-tests/lib/stdlib.h
/kvm-unit-tests/lib/string.c
/kvm-unit-tests/lib/string.h
/kvm-unit-tests/lib/util.c
/kvm-unit-tests/lib/util.h
/kvm-unit-tests/lib/virtio-mmio.c
/kvm-unit-tests/lib/virtio-mmio.h
/kvm-unit-tests/lib/virtio.c
/kvm-unit-tests/lib/virtio.h
/kvm-unit-tests/lib/vmalloc.c
/kvm-unit-tests/lib/vmalloc.h
/kvm-unit-tests/lib/x86/amd_sev.c
/kvm-unit-tests/lib/x86/amd_sev.h
/kvm-unit-tests/lib/x86/apic-defs.h
/kvm-unit-tests/lib/x86/apic.c
/kvm-unit-tests/lib/x86/apic.h
/kvm-unit-tests/lib/x86/asm/barrier.h
/kvm-unit-tests/lib/x86/asm/bitops.h
/kvm-unit-tests/lib/x86/asm/debugreg.h
/kvm-unit-tests/lib/x86/asm/io.h
/kvm-unit-tests/lib/x86/asm/memory_areas.h
/kvm-unit-tests/lib/x86/asm/page.h
/kvm-unit-tests/lib/x86/asm/pci.h
/kvm-unit-tests/lib/x86/asm/setup.h
/kvm-unit-tests/lib/x86/asm/spinlock.h
/kvm-unit-tests/lib/x86/asm/stack.h
/kvm-unit-tests/lib/x86/atomic.c
/kvm-unit-tests/lib/x86/atomic.h
/kvm-unit-tests/lib/x86/delay.c
/kvm-unit-tests/lib/x86/delay.h
/kvm-unit-tests/lib/x86/desc.c
/kvm-unit-tests/lib/x86/desc.h
/kvm-unit-tests/lib/x86/fault_test.c
/kvm-unit-tests/lib/x86/fault_test.h
/kvm-unit-tests/lib/x86/fwcfg.c
/kvm-unit-tests/lib/x86/fwcfg.h
/kvm-unit-tests/lib/x86/intel-iommu.c
/kvm-unit-tests/lib/x86/intel-iommu.h
/kvm-unit-tests/lib/x86/io.c
/kvm-unit-tests/lib/x86/isr.c
/kvm-unit-tests/lib/x86/isr.h
/kvm-unit-tests/lib/x86/msr.h
/kvm-unit-tests/lib/x86/pmu.c
/kvm-unit-tests/lib/x86/pmu.h
/kvm-unit-tests/lib/x86/processor.h
/kvm-unit-tests/lib/x86/setjmp32.S
/kvm-unit-tests/lib/x86/setjmp64.S
/kvm-unit-tests/lib/x86/setup.c
/kvm-unit-tests/lib/x86/smp.c
/kvm-unit-tests/lib/x86/smp.h
/kvm-unit-tests/lib/x86/stack.c
/kvm-unit-tests/lib/x86/usermode.c
/kvm-unit-tests/lib/x86/usermode.h
/kvm-unit-tests/lib/x86/vm.c
/kvm-unit-tests/lib/x86/vm.h
/kvm-unit-tests/powerpc/.gitignore
/kvm-unit-tests/powerpc/Makefile
/kvm-unit-tests/powerpc/Makefile.common
/kvm-unit-tests/powerpc/Makefile.ppc64
/kvm-unit-tests/powerpc/boot_rom.S
/kvm-unit-tests/powerpc/cstart64.S
/kvm-unit-tests/powerpc/emulator.c
/kvm-unit-tests/powerpc/flat.lds
/kvm-unit-tests/powerpc/reloc64.c
/kvm-unit-tests/powerpc/rtas.c
/kvm-unit-tests/powerpc/run
/kvm-unit-tests/powerpc/selftest.c
/kvm-unit-tests/powerpc/spapr.h
/kvm-unit-tests/powerpc/spapr_hcall.c
/kvm-unit-tests/powerpc/spapr_vpa.c
/kvm-unit-tests/powerpc/sprs.c
/kvm-unit-tests/powerpc/tm.c
/kvm-unit-tests/powerpc/unittests.cfg
/kvm-unit-tests/riscv/Makefile
/kvm-unit-tests/riscv/cstart.S
/kvm-unit-tests/riscv/flat.lds
/kvm-unit-tests/riscv/selftest.c
/kvm-unit-tests/run_tests.sh
/kvm-unit-tests/s390x/Makefile
/kvm-unit-tests/s390x/adtl-status.c
/kvm-unit-tests/s390x/cmm.c
/kvm-unit-tests/s390x/cpu.S
/kvm-unit-tests/s390x/cpumodel.c
/kvm-unit-tests/s390x/css.c
/kvm-unit-tests/s390x/cstart64.S
/kvm-unit-tests/s390x/diag10.c
/kvm-unit-tests/s390x/diag288.c
/kvm-unit-tests/s390x/diag308.c
/kvm-unit-tests/s390x/edat.c
/kvm-unit-tests/s390x/emulator.c
/kvm-unit-tests/s390x/epsw.c
/kvm-unit-tests/s390x/ex.c
/kvm-unit-tests/s390x/exittime.c
/kvm-unit-tests/s390x/firq.c
/kvm-unit-tests/s390x/flat.lds.S
/kvm-unit-tests/s390x/gs.c
/kvm-unit-tests/s390x/iep.c
/kvm-unit-tests/s390x/intercept.c
/kvm-unit-tests/s390x/macros.S
/kvm-unit-tests/s390x/migration-cmm.c
/kvm-unit-tests/s390x/migration-sck.c
/kvm-unit-tests/s390x/migration-skey.c
/kvm-unit-tests/s390x/migration.c
/kvm-unit-tests/s390x/mvpg-sie.c
/kvm-unit-tests/s390x/mvpg.c
/kvm-unit-tests/s390x/panic-loop-extint.c
/kvm-unit-tests/s390x/panic-loop-pgm.c
/kvm-unit-tests/s390x/pfmf.c
/kvm-unit-tests/s390x/pv-attest.c
/kvm-unit-tests/s390x/pv-diags.c
/kvm-unit-tests/s390x/pv-icptcode.c
/kvm-unit-tests/s390x/pv-ipl.c
/kvm-unit-tests/s390x/run
/kvm-unit-tests/s390x/sck.c
/kvm-unit-tests/s390x/sclp.c
/kvm-unit-tests/s390x/selftest.c
/kvm-unit-tests/s390x/selftest.parmfile
/kvm-unit-tests/s390x/sie-dat.c
/kvm-unit-tests/s390x/sie.c
/kvm-unit-tests/s390x/sieve.c
/kvm-unit-tests/s390x/skey.c
/kvm-unit-tests/s390x/skrf.c
/kvm-unit-tests/s390x/smp.c
/kvm-unit-tests/s390x/snippets/asm/flat.lds.S
/kvm-unit-tests/s390x/snippets/asm/icpt-loop.S
/kvm-unit-tests/s390x/snippets/asm/loop.S
/kvm-unit-tests/s390x/snippets/asm/macros.S
/kvm-unit-tests/s390x/snippets/asm/pv-diag-288.S
/kvm-unit-tests/s390x/snippets/asm/pv-diag-308.S
/kvm-unit-tests/s390x/snippets/asm/pv-diag-500.S
/kvm-unit-tests/s390x/snippets/asm/pv-diag-yield.S
/kvm-unit-tests/s390x/snippets/asm/pv-icpt-112.S
/kvm-unit-tests/s390x/snippets/asm/pv-icpt-vir-timing.S
/kvm-unit-tests/s390x/snippets/c/cstart.S
/kvm-unit-tests/s390x/snippets/c/flat.lds.S
/kvm-unit-tests/s390x/snippets/c/mvpg-snippet.c
/kvm-unit-tests/s390x/snippets/c/sie-dat.c
/kvm-unit-tests/s390x/snippets/c/sie-dat.h
/kvm-unit-tests/s390x/snippets/c/spec_ex.c
/kvm-unit-tests/s390x/spec_ex-sie.c
/kvm-unit-tests/s390x/spec_ex.c
/kvm-unit-tests/s390x/sthyi.c
/kvm-unit-tests/s390x/sthyi.h
/kvm-unit-tests/s390x/stsi.c
/kvm-unit-tests/s390x/topology.c
/kvm-unit-tests/s390x/tprot.c
/kvm-unit-tests/s390x/unittests.cfg
/kvm-unit-tests/s390x/uv-guest.c
/kvm-unit-tests/s390x/uv-host.c
/kvm-unit-tests/s390x/vector.c
/kvm-unit-tests/scripts/arch-run.bash
/kvm-unit-tests/scripts/asm-offsets.mak
/kvm-unit-tests/scripts/common.bash
/kvm-unit-tests/scripts/get_maintainer.pl
/kvm-unit-tests/scripts/git.difforder
/kvm-unit-tests/scripts/kernel-doc
/kvm-unit-tests/scripts/mkstandalone.sh
/kvm-unit-tests/scripts/pretty_print_stacks.py
/kvm-unit-tests/scripts/runtime.bash
/kvm-unit-tests/scripts/s390x/func.bash
/kvm-unit-tests/x86/Makefile
/kvm-unit-tests/x86/Makefile.common
/kvm-unit-tests/x86/Makefile.i386
/kvm-unit-tests/x86/Makefile.x86_64
/kvm-unit-tests/x86/README
/kvm-unit-tests/x86/access.c
/kvm-unit-tests/x86/access.h
/kvm-unit-tests/x86/access_test.c
/kvm-unit-tests/x86/amd_sev.c
/kvm-unit-tests/x86/apic.c
/kvm-unit-tests/x86/asyncpf.c
/kvm-unit-tests/x86/cet.c
/kvm-unit-tests/x86/cmpxchg8b.c
/kvm-unit-tests/x86/cstart.S
/kvm-unit-tests/x86/cstart64.S
/kvm-unit-tests/x86/debug.c
/kvm-unit-tests/x86/dummy.c
/kvm-unit-tests/x86/efi/README.md
/kvm-unit-tests/x86/efi/crt0-efi-x86_64.S
/kvm-unit-tests/x86/efi/efistart64.S
/kvm-unit-tests/x86/efi/elf_x86_64_efi.lds
/kvm-unit-tests/x86/efi/reloc_x86_64.c
/kvm-unit-tests/x86/efi/run
/kvm-unit-tests/x86/emulator.c
/kvm-unit-tests/x86/emulator64.c
/kvm-unit-tests/x86/eventinj.c
/kvm-unit-tests/x86/flat.lds
/kvm-unit-tests/x86/hypercall.c
/kvm-unit-tests/x86/hyperv.c
/kvm-unit-tests/x86/hyperv.h
/kvm-unit-tests/x86/hyperv_clock.c
/kvm-unit-tests/x86/hyperv_connections.c
/kvm-unit-tests/x86/hyperv_stimer.c
/kvm-unit-tests/x86/hyperv_synic.c
/kvm-unit-tests/x86/idt_test.c
/kvm-unit-tests/x86/init.c
/kvm-unit-tests/x86/intel-iommu.c
/kvm-unit-tests/x86/ioapic.c
/kvm-unit-tests/x86/ioram.h
/kvm-unit-tests/x86/kvmclock.c
/kvm-unit-tests/x86/kvmclock.h
/kvm-unit-tests/x86/kvmclock_test.c
/kvm-unit-tests/x86/la57.c
/kvm-unit-tests/x86/memory.c
/kvm-unit-tests/x86/msr.c
/kvm-unit-tests/x86/pcid.c
/kvm-unit-tests/x86/pks.c
/kvm-unit-tests/x86/pku.c
/kvm-unit-tests/x86/pmu.c
/kvm-unit-tests/x86/pmu_lbr.c
/kvm-unit-tests/x86/pmu_pebs.c
/kvm-unit-tests/x86/rdpru.c
/kvm-unit-tests/x86/realmode.c
/kvm-unit-tests/x86/realmode.lds
/kvm-unit-tests/x86/rmap_chain.c
/kvm-unit-tests/x86/run
/kvm-unit-tests/x86/s3.c
/kvm-unit-tests/x86/setjmp.c
/kvm-unit-tests/x86/sieve.c
/kvm-unit-tests/x86/smap.c
/kvm-unit-tests/x86/smptest.c
/kvm-unit-tests/x86/svm.c
/kvm-unit-tests/x86/svm.h
/kvm-unit-tests/x86/svm_npt.c
/kvm-unit-tests/x86/svm_tests.c
/kvm-unit-tests/x86/syscall.c
/kvm-unit-tests/x86/taskswitch.c
/kvm-unit-tests/x86/taskswitch2.c
/kvm-unit-tests/x86/trampolines.S
/kvm-unit-tests/x86/tsc.c
/kvm-unit-tests/x86/tsc_adjust.c
/kvm-unit-tests/x86/tscdeadline_latency.c
/kvm-unit-tests/x86/tsx-ctrl.c
/kvm-unit-tests/x86/umip.c
/kvm-unit-tests/x86/unittests.cfg
/kvm-unit-tests/x86/vmexit.c
/kvm-unit-tests/x86/vmware_backdoors.c
/kvm-unit-tests/x86/vmx.c
/kvm-unit-tests/x86/vmx.h
/kvm-unit-tests/x86/vmx_tests.c
/kvm-unit-tests/x86/xsave.c

12