This is the same familiar set of powerpc patches, it's taken a while to get them merged. And unfortunately they keep growing with fixes and new tests. This goes on top of the previous migration and other core patches. Full tree can be found here. https://gitlab.com/npiggin/kvm-unit-tests/-/tree/powerpc?ref_type=heads I have tried to test all combinations of KVM and TCG for P8/9/10 and powernv. There are a small number of failures, some due to bugs in TCG, QEMU, and KVM. I don't want to drop such test cases but xfail doesn't quite work because it will start failing if we fix implementation to now work AFAIKS. If there is concern about that, then maybe we could add a known-failure type of report that can document the reason and not fail the entire group of tests. Since last posting, this adds several fixes to the start of the series, fixes a bunch of bugs in the SPRs and other tests that Joel and Thomas raised. Tidied up the new new SMP support and fixed a couple of issues there. Added MMU, usermode support, add atomics, timebase, PMU tests, and removes the ppc64 subdirectories. Thanks, Nick Nicholas Piggin (32): powerpc: Fix KVM caps on POWER9 hosts powerpc: Fix pseries getchar return value powerpc: Fix stack backtrace termination powerpc: interrupt stack backtracing powerpc: Cleanup SPR and MSR definitions powerpc/sprs: Specify SPRs with data rather than code powerpc/sprs: Don't fail changed SPRs that are used by the test harness powerpc/sprs: Avoid taking PMU interrupts caused by register fuzzing scripts: allow machine option to be specified in unittests.cfg scripts: Accommodate powerpc powernv machine differences powerpc: Support powernv machine with QEMU TCG powerpc: Fix emulator illegal instruction test for powernv powerpc/sprs: Test hypervisor registers on powernv machine powerpc: general interrupt tests powerpc: Add rtas stop-self support powerpc: Remove broken SMP exception stack setup arch-run: Fix handling multiple exit status messages powerpc: add SMP and IPI support powerpc: Permit ACCEL=tcg,thread=single powerpc: Avoid using larx/stcx. in spinlocks when only one CPU is running powerpc: Add atomics tests powerpc: Add timebase tests powerpc: Add MMU support common/sieve: Use vmalloc.h for setup_mmu definition common/sieve: Support machines without MMU powerpc: Add sieve.c common test powerpc: add usermode support powerpc: add pmu tests configure: Fail on unknown arch configure: Make arch_libdir a first-class entity powerpc: Remove remnants of ppc64 directory and build structure powerpc: gitlab CI update .gitlab-ci.yml | 16 +- MAINTAINERS | 1 - Makefile | 2 +- common/sieve.c | 15 +- configure | 69 ++- lib/libcflat.h | 2 - lib/{ppc64 => powerpc}/asm-offsets.c | 7 + lib/{ppc64 => powerpc}/asm/asm-offsets.h | 0 lib/powerpc/asm/atomic.h | 6 + lib/powerpc/asm/barrier.h | 12 + lib/{ppc64 => powerpc}/asm/bitops.h | 4 +- lib/powerpc/asm/hcall.h | 6 + lib/{ppc64 => powerpc}/asm/io.h | 4 +- lib/powerpc/asm/mmu.h | 10 + lib/powerpc/asm/opal.h | 22 + lib/powerpc/asm/page.h | 66 +++ lib/powerpc/asm/pgtable-hwdef.h | 67 +++ lib/powerpc/asm/pgtable.h | 126 +++++ lib/powerpc/asm/ppc_asm.h | 8 +- lib/powerpc/asm/processor.h | 68 ++- lib/{ppc64 => powerpc}/asm/ptrace.h | 22 +- lib/powerpc/asm/reg.h | 72 +++ lib/powerpc/asm/rtas.h | 2 + lib/powerpc/asm/setup.h | 3 +- lib/powerpc/asm/smp.h | 50 +- lib/powerpc/asm/spinlock.h | 11 + lib/powerpc/asm/stack.h | 3 + lib/powerpc/asm/time.h | 1 + lib/{ppc64 => powerpc}/asm/vpa.h | 0 lib/powerpc/hcall.c | 6 +- lib/powerpc/io.c | 41 +- lib/powerpc/io.h | 6 + lib/powerpc/mmu.c | 275 +++++++++ lib/powerpc/opal-calls.S | 50 ++ lib/powerpc/opal.c | 76 +++ lib/powerpc/processor.c | 91 ++- lib/powerpc/rtas.c | 81 ++- lib/powerpc/setup.c | 159 +++++- lib/powerpc/smp.c | 287 ++++++++-- lib/powerpc/spinlock.c | 32 ++ lib/powerpc/stack.c | 55 ++ lib/ppc64/.gitignore | 1 - lib/ppc64/asm/barrier.h | 9 - lib/ppc64/asm/handlers.h | 1 - lib/ppc64/asm/hcall.h | 1 - lib/ppc64/asm/memory_areas.h | 6 - lib/ppc64/asm/page.h | 1 - lib/ppc64/asm/ppc_asm.h | 1 - lib/ppc64/asm/processor.h | 1 - lib/ppc64/asm/rtas.h | 1 - lib/ppc64/asm/setup.h | 1 - lib/ppc64/asm/smp.h | 1 - lib/ppc64/asm/spinlock.h | 6 - lib/ppc64/asm/stack.h | 8 - lib/s390x/io.c | 1 + lib/s390x/uv.h | 1 + lib/vmalloc.c | 7 + lib/vmalloc.h | 2 + lib/x86/vm.h | 1 + powerpc/Makefile | 111 +++- powerpc/Makefile.common | 86 --- powerpc/Makefile.ppc64 | 27 - powerpc/atomics.c | 373 +++++++++++++ powerpc/cstart64.S | 78 ++- powerpc/emulator.c | 21 +- powerpc/interrupts.c | 517 +++++++++++++++++ powerpc/pmu.c | 337 +++++++++++ powerpc/run | 42 +- powerpc/selftest.c | 4 +- powerpc/sieve.c | 1 + powerpc/smp.c | 349 ++++++++++++ powerpc/sprs.c | 678 ++++++++++++++++------- powerpc/timebase.c | 330 +++++++++++ powerpc/tm.c | 4 +- powerpc/unittests.cfg | 63 ++- s390x/mvpg.c | 1 + s390x/selftest.c | 1 + scripts/arch-run.bash | 2 +- scripts/common.bash | 8 +- scripts/runtime.bash | 20 +- x86/pmu.c | 1 + x86/pmu_lbr.c | 1 + x86/vmexit.c | 1 + x86/vmware_backdoors.c | 1 + 84 files changed, 4400 insertions(+), 541 deletions(-) rename lib/{ppc64 => powerpc}/asm-offsets.c (94%) rename lib/{ppc64 => powerpc}/asm/asm-offsets.h (100%) create mode 100644 lib/powerpc/asm/atomic.h create mode 100644 lib/powerpc/asm/barrier.h rename lib/{ppc64 => powerpc}/asm/bitops.h (69%) rename lib/{ppc64 => powerpc}/asm/io.h (50%) create mode 100644 lib/powerpc/asm/mmu.h create mode 100644 lib/powerpc/asm/opal.h create mode 100644 lib/powerpc/asm/page.h create mode 100644 lib/powerpc/asm/pgtable-hwdef.h create mode 100644 lib/powerpc/asm/pgtable.h rename lib/{ppc64 => powerpc}/asm/ptrace.h (59%) create mode 100644 lib/powerpc/asm/reg.h create mode 100644 lib/powerpc/asm/spinlock.h rename lib/{ppc64 => powerpc}/asm/vpa.h (100%) create mode 100644 lib/powerpc/mmu.c create mode 100644 lib/powerpc/opal-calls.S create mode 100644 lib/powerpc/opal.c create mode 100644 lib/powerpc/spinlock.c create mode 100644 lib/powerpc/stack.c delete mode 100644 lib/ppc64/.gitignore delete mode 100644 lib/ppc64/asm/barrier.h delete mode 100644 lib/ppc64/asm/handlers.h delete mode 100644 lib/ppc64/asm/hcall.h delete mode 100644 lib/ppc64/asm/memory_areas.h delete mode 100644 lib/ppc64/asm/page.h delete mode 100644 lib/ppc64/asm/ppc_asm.h delete mode 100644 lib/ppc64/asm/processor.h delete mode 100644 lib/ppc64/asm/rtas.h delete mode 100644 lib/ppc64/asm/setup.h delete mode 100644 lib/ppc64/asm/smp.h delete mode 100644 lib/ppc64/asm/spinlock.h delete mode 100644 lib/ppc64/asm/stack.h delete mode 100644 powerpc/Makefile.common delete mode 100644 powerpc/Makefile.ppc64 create mode 100644 powerpc/atomics.c create mode 100644 powerpc/interrupts.c create mode 100644 powerpc/pmu.c create mode 120000 powerpc/sieve.c create mode 100644 powerpc/smp.c create mode 100644 powerpc/timebase.c -- 2.42.0