Hi, On 08/02/2016 19:53, Andrew Jones wrote: > It's been a loooong time since I posted v1 of this series, but thanks > to Thomas' poking, and even volunteering to help move v2 along, I've > finally picked it back up. > > v2: > Besides rebasing on latest master, v2 addresses all of David's comments > - assembler cleanup > - jump into the RTAS blob we get from DT, instead of reproducing it > - don't store the RTAS root node, always hunt it down > > v2 didn't address debug-exit, and we still need a solution for that. > Plugging chr-testdev into an spapr vty is probably what we should > investigate first (as was suggested by Alex Graf under the v1 review). > For this v2 I just kept the hack from v1, but simplified it and > explicitly call it out as the hack that it is. > > Additional known issues: > Latest F22 cross-compiler (gcc5 based) doesn't generate working > code with this series. I didn't try to debug. The 4.9 based compiler > I initially used on v1 works, so I reverted to that one. > > Testing: > I only tested with qemu-system-ppc64 (latest) on x86_64 so far. I'll > try to get a machine to test with real hardware (and KVM) unless > someone (hi Thomas :-) beats me to it. I've tested the series from the branch initial-drop-v2: - On RHEL 7.2 ppc64 (ppc64le is not supported ?), POWER8 + kvm_hv. I have (sometime) an error: ./powerpc/run: line 60: exit: too many arguments PASS selftest-setup Which is in fact: /usr/libexec/qemu-kvm -machine pseries,accel=kvm -bios powerpc/boot_rom.bin -display none -serial stdio -kernel powerpc/selftest.elf -smp 2 -m 256 -append setup smp=2 mem=256 PASS: selftest: setup: smp: nr_cpus = 2 PASS: selftest: setup: mem: size = 256 MB SUMMARY: 2 tests, 0 unexpected failures EXIT: STATUS=1 RTAS power-off returned 0 lib/powerpc/rtas.c:119: assert failed EXIT: STATUS=127 RTAS power-off returned 0 lib/powerpc/rtas.c:119: assert failed EXIT: STATUS=127 RTAS power-off returned 0 lib/powerpc/rtas.c:119: assert failed EXIT: STATUS=127 RTAS power-off returned 0 lib/powerpc/rtas.c:119: assert failed EXIT: STATUS=127 RTAS power-off returned 0 lib/powerpc/rtas.c:119: assert failed EXIT: STATUS=127 RTAS power-off returned 0 lib/powerpc/rtas.c:119: assert failed EXIT: STATUS=127 RTAS power-off returned 0 lib/powerpc/rtas.c:119: assert failed EXIT: STATUS=127 RTAS power-off returned 0 lib/powerpc/rtas.c:119: assert failed EXIT: STATUS=127 RTAS power-off returned 0 lib/powerpc/rtas.c:119: assert failed EXIT: STATUS=127 RTAS power-off returned 0 lib/powerpc/rtas.c:119: assert failed EXIT: STATUS=127 RTAS power-off returned 0 lib/powerpc/rtas.c:119: assert failed EXIT: STATUS=127 RTAS power-off returned 0 lib/powerpc/rtas.c:119: assert failed EXIT: STATUS=12 Return value from qemu: 1 127 127 127 127 127 127 127 127 127 127 127 12 ./powerpc/run: line 60: exit: too many arguments - On fedora 23 on PowerMac G5 (ppc64) kvm_pr, it doesn't work at all: lib/powerpc/setup.c:60: assert failed 59 assert(freemem_start >= mem_start && freemem_start < mem_end); The values I have are: freemem_start 434000 mem_start 8000000 mem_end 10000000 > > Standard cover-letter summary: > This series brings basic setup; starts a test's C entry point, main(), > and printf, exit, and malloc work. Three more series should follow this > one which must bring; vector support, mmu support, and smp support, at > which point I believe the framework could just evolve with the creation > of unit tests. > > Patches also available here > https://github.com/rhdrjones/kvm-unit-tests/commits/ppc64/initial-drop-v2 > > > Andrew Jones (14): > lib: asm-generic: add missing casts > lib: share arm-selftest utility functions > config: no need to mix arch makefiles > powerpc/ppc64: start skeleton framework > powerpc/pp64: ppc-ify makefiles and linker script > powerpc/ppc64: add boot rom source > powerpc/ppc64: add bootloader to bounce into memory > powerpc/ppc64: add HV putchar > powerpc/ppc64: adapt arm's setup > powerpc/ppc64: relocate linker VMAs > powerpc/ppc64: add run script and unittests.cfg > mkstandalone: add support for powerpc > powerpc/ppc64: add RTAS support > powerpc/ppc64: HACK: make a fake debug-exit > > Makefile | 2 +- > README | 3 +- > arm/Makefile | 1 + > config/config-arm.mak => arm/Makefile.arm | 2 +- > config/config-arm64.mak => arm/Makefile.arm64 | 2 +- > .../config-arm-common.mak => arm/Makefile.common | 3 +- > arm/selftest.c | 45 +++----- > configure | 6 ++ > lib/asm-generic/io.h | 12 +-- > lib/libcflat.h | 11 +- > lib/powerpc/.gitignore | 1 + > lib/powerpc/asm/rtas.h | 26 +++++ > lib/powerpc/asm/setup.h | 27 +++++ > lib/powerpc/io.c | 37 +++++++ > lib/powerpc/mmu.c | 0 > lib/powerpc/rtas.c | 120 +++++++++++++++++++++ > lib/powerpc/setup.c | 91 ++++++++++++++++ > lib/powerpc/smp.c | 0 > lib/ppc64/.gitignore | 1 + > lib/ppc64/asm-offsets.c | 12 +++ > lib/ppc64/asm/asm-offsets.h | 1 + > lib/ppc64/asm/io.h | 5 + > lib/ppc64/asm/page.h | 1 + > lib/ppc64/asm/rtas.h | 1 + > lib/ppc64/asm/setup.h | 1 + > lib/ppc64/asm/spinlock.h | 11 ++ > lib/ppc64/processor.c | 0 > lib/ppc64/spinlock.c | 11 ++ > lib/report.c | 16 +++ > lib/util.c | 18 ++++ > lib/util.h | 23 ++++ > powerpc/Makefile | 1 + > powerpc/Makefile.common | 65 +++++++++++ > powerpc/Makefile.ppc64 | 21 ++++ > powerpc/boot_rom.bin | Bin 0 -> 280 bytes > powerpc/cstart64.S | 86 +++++++++++++++ > powerpc/flat.lds | 44 ++++++++ > powerpc/reloc64.c | 55 ++++++++++ > powerpc/rom/.gitignore | 1 + > powerpc/rom/Makefile | 36 +++++++ > powerpc/rom/header.img | 1 + > powerpc/rom/rom.ffs | 4 + > powerpc/rom/stage1.S | 5 + > powerpc/run | 60 +++++++++++ > powerpc/selftest.c | 65 +++++++++++ > powerpc/unittests.cfg | 30 ++++++ > {config => scripts}/asm-offsets.mak | 0 > scripts/mkstandalone.sh | 5 + > x86/Makefile | 1 + > .../config-x86-common.mak => x86/Makefile.common | 0 > config/config-i386.mak => x86/Makefile.i386 | 2 +- > config/config-x86_64.mak => x86/Makefile.x86_64 | 2 +- > 52 files changed, 924 insertions(+), 50 deletions(-) > create mode 100644 arm/Makefile > rename config/config-arm.mak => arm/Makefile.arm (90%) > rename config/config-arm64.mak => arm/Makefile.arm64 (89%) > rename config/config-arm-common.mak => arm/Makefile.common (96%) > create mode 100644 lib/powerpc/.gitignore > create mode 100644 lib/powerpc/asm/rtas.h > create mode 100644 lib/powerpc/asm/setup.h > create mode 100644 lib/powerpc/io.c > create mode 100644 lib/powerpc/mmu.c > create mode 100644 lib/powerpc/rtas.c > create mode 100644 lib/powerpc/setup.c > create mode 100644 lib/powerpc/smp.c > create mode 100644 lib/ppc64/.gitignore > create mode 100644 lib/ppc64/asm-offsets.c > create mode 100644 lib/ppc64/asm/asm-offsets.h > create mode 100644 lib/ppc64/asm/io.h > create mode 100644 lib/ppc64/asm/page.h > create mode 100644 lib/ppc64/asm/rtas.h > create mode 100644 lib/ppc64/asm/setup.h > create mode 100644 lib/ppc64/asm/spinlock.h > create mode 100644 lib/ppc64/processor.c > create mode 100644 lib/ppc64/spinlock.c > create mode 100644 lib/util.c > create mode 100644 lib/util.h > create mode 100644 powerpc/Makefile > create mode 100644 powerpc/Makefile.common > create mode 100644 powerpc/Makefile.ppc64 > create mode 100644 powerpc/boot_rom.bin > create mode 100644 powerpc/cstart64.S > create mode 100644 powerpc/flat.lds > create mode 100644 powerpc/reloc64.c > create mode 100644 powerpc/rom/.gitignore > create mode 100644 powerpc/rom/Makefile > create mode 100644 powerpc/rom/header.img > create mode 100644 powerpc/rom/rom.ffs > create mode 100644 powerpc/rom/stage1.S > create mode 100755 powerpc/run > create mode 100644 powerpc/selftest.c > create mode 100644 powerpc/unittests.cfg > rename {config => scripts}/asm-offsets.mak (100%) > create mode 100644 x86/Makefile > rename config/config-x86-common.mak => x86/Makefile.common (100%) > rename config/config-i386.mak => x86/Makefile.i386 (91%) > rename config/config-x86_64.mak => x86/Makefile.x86_64 (93%) > -- To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html