/kvm-unit-tests/lib/s390x/ |
H A D | sie.c | 21 void sie_expect_validity(struct vm *vm) in sie_expect_validity() argument 23 vm->validity_expected = true; in sie_expect_validity() 26 uint16_t sie_get_validity(struct vm *vm) in sie_get_validity() argument 32 if (vm->sblk->icptcode != ICPT_VALIDITY) in sie_get_validity() 35 return vm->sblk->ipb >> 16; in sie_get_validity() 38 void sie_check_validity(struct vm *vm, uint16_t vir_exp) in sie_check_validity() argument 40 uint16_t vir = sie_get_validity(vm); in sie_check_validity() 45 void sie_handle_validity(struct vm *vm) in sie_handle_validity() argument 47 if (vm->sblk->icptcode != ICPT_VALIDITY) in sie_handle_validity() 50 if (!vm->validity_expected) in sie_handle_validity() [all …]
|
H A D | sie.h | 34 struct vm { struct 50 void sie(struct vm *vm); argument 51 void sie_expect_validity(struct vm *vm); 52 uint16_t sie_get_validity(struct vm *vm); 53 void sie_check_validity(struct vm *vm, uint16_t vir_exp); 54 void sie_handle_validity(struct vm *vm); 56 static inline bool sie_is_pv(struct vm *vm) in sie_is_pv() argument 58 return vm->sblk->sdf == 2; in sie_is_pv() 61 void sie_guest_sca_create(struct vm *vm); 62 void sie_guest_create(struct vm *vm, uint64_t guest_mem, uint64_t guest_mem_len); [all …]
|
H A D | snippet-exit.h | 15 static inline bool snippet_is_force_exit(struct vm *vm) in snippet_is_force_exit() argument 17 return sie_is_diag_icpt(vm, 0x44); in snippet_is_force_exit() 20 static inline bool snippet_is_force_exit_value(struct vm *vm) in snippet_is_force_exit_value() argument 22 return sie_is_diag_icpt(vm, 0x500); in snippet_is_force_exit_value() 25 static inline uint64_t snippet_get_force_exit_value(struct vm *vm) in snippet_get_force_exit_value() argument 27 assert(snippet_is_force_exit_value(vm)); in snippet_get_force_exit_value() 29 return vm->save_area.guest.grs[2]; in snippet_get_force_exit_value() 32 static inline void snippet_check_force_exit_value(struct vm *vm, uint64_t value_exp) in snippet_check_force_exit_value() argument 36 if (snippet_is_force_exit_value(vm)) { in snippet_check_force_exit_value() 37 value = snippet_get_force_exit_value(vm); in snippet_check_force_exit_value()
|
H A D | uv.c | 133 void uv_create_guest(struct vm *vm) in uv_create_guest() argument 142 .state_origin = (uint64_t)vm->sblk, in uv_create_guest() 148 uvcb_cgc.guest_stor_origin = vm->sblk->mso; in uv_create_guest() 149 uvcb_cgc.guest_stor_len = vm->sblk->msl - vm->sblk->mso + SZ_1M; in uv_create_guest() 155 vm->uv.conf_base_stor = memalign_pages_flags(PAGE_SIZE * 4, uvcb_qui.conf_base_phys_stor_len, 0); in uv_create_guest() 160 vm->uv.conf_var_stor = memalign_pages_flags(PAGE_SIZE, vsize,0); in uv_create_guest() 161 uvcb_cgc.conf_base_stor_origin = (uint64_t)vm->uv.conf_base_stor; in uv_create_guest() 162 uvcb_cgc.conf_var_stor_origin = (uint64_t)vm->uv.conf_var_stor; in uv_create_guest() 165 vm->uv.cpu_stor = memalign_pages_flags(PAGE_SIZE, uvcb_qui.cpu_stor_len, 0); in uv_create_guest() 166 uvcb_csc.stor_origin = (uint64_t)vm->uv.cpu_stor; in uv_create_guest() [all …]
|
H A D | uv.h | 16 void uv_create_guest(struct vm *vm); 17 void uv_destroy_guest(struct vm *vm); 18 int uv_unpack(struct vm *vm, uint64_t addr, uint64_t len, uint64_t tweak); 19 void uv_verify_load(struct vm *vm); 40 static inline bool uv_validity_check(struct vm *vm) in uv_validity_check() argument 42 uint16_t vir = sie_get_validity(vm); in uv_validity_check() 44 return vm->sblk->icptcode == ICPT_VALIDITY && (vir & 0xff00) == 0x2000; in uv_validity_check()
|
H A D | snippet.h | 68 static inline void snippet_init(struct vm *vm, const char *gbin, in snippet_init() argument 71 uint64_t mso = vm->sblk->mso; in snippet_init() 77 vm->sblk->gpsw = snippet_psw; in snippet_init() 83 vm->sblk->ictl = ICTL_OPEREXC | ICTL_PINT; in snippet_init() 98 static inline void snippet_pv_init(struct vm *vm, const char *gbin, in snippet_pv_init() argument 103 uint64_t mso = vm->sblk->mso; in snippet_pv_init() 106 snippet_init(vm, gbin, gbin_len, off); in snippet_pv_init() 108 uv_create_guest(vm); in snippet_pv_init() 109 uv_set_se_hdr(vm->uv.vm_handle, (void *)hdr, hdr_len); in snippet_pv_init() 112 uv_unpack(vm, off, gbin_len, tweak[0]); in snippet_pv_init() [all …]
|
H A D | sie-icpt.c | 24 bool sie_is_diag_icpt(struct vm *vm, unsigned int diag) in sie_is_diag_icpt() argument 26 struct diag_itext instr = sblk_ip_as_diag(vm->sblk); in sie_is_diag_icpt() 45 if (sie_is_pv(vm)) { in sie_is_diag_icpt() 53 if (vm->sblk->icptcode != icptcode) in sie_is_diag_icpt() 57 code = instr.r_base ? vm->save_area.guest.grs[instr.r_base] : 0; in sie_is_diag_icpt()
|
H A D | sie-icpt.h | 37 bool sie_is_diag_icpt(struct vm *vm, unsigned int diag);
|
H A D | hardware.c | 50 if (!memcmp(&stsi_322->vm[0].cpi, kvm_ebcdic, sizeof(kvm_ebcdic))) in do_detect_host()
|
H A D | stsi.h | 27 } vm[8]; member
|
/kvm-unit-tests/s390x/ |
H A D | pv-diags.c | 17 static struct vm vm; variable 30 snippet_pv_init(&vm, SNIPPET_NAME_START(asm, pv_diag_500), in test_diag_500() 34 sie(&vm); in test_diag_500() 35 report(sie_is_diag_icpt(&vm, 0x500), "intercept values"); in test_diag_500() 36 report(vm.save_area.guest.grs[1] == 1 && in test_diag_500() 37 vm.save_area.guest.grs[2] == 2 && in test_diag_500() 38 vm.save_area.guest.grs[3] == 3 && in test_diag_500() 39 vm.save_area.guest.grs[4] == 4, in test_diag_500() 45 vm.sblk->iictl = IICTL_CODE_OPERAND; in test_diag_500() 46 sie(&vm); in test_diag_500() [all …]
|
H A D | pv-icptcode.c | 23 static struct vm vm, vm2; variable 45 snippet_pv_init(&vm, SNIPPET_NAME_START(asm, pv_icpt_vir_timing), in test_validity_timing() 49 sie(&vm); in test_validity_timing() 50 report(sie_is_diag_icpt(&vm, 0x44), "spt done"); in test_validity_timing() 52 tmp = vm.sblk->cputm; in test_validity_timing() 56 vm.sblk->cputm += S390_CLOCK_SHIFT_US * 1000; in test_validity_timing() 57 sie_expect_validity(&vm); in test_validity_timing() 58 sie(&vm); in test_validity_timing() 59 report(uv_validity_check(&vm), "validity entry cput > exit cput"); in test_validity_timing() 60 vm.sblk->cputm = tmp; in test_validity_timing() [all …]
|
H A D | pv-ipl.c | 18 static struct vm vm; variable 32 snippet_pv_init(&vm, SNIPPET_NAME_START(asm, pv_diag_308), in test_diag_308() 37 sie(&vm); in test_diag_308() 38 assert(sie_is_diag_icpt(&vm, 0x500)); in test_diag_308() 45 vm.save_area.guest.grs[2] = subcode; in test_diag_308() 48 sie(&vm); in test_diag_308() 49 assert(sie_is_diag_icpt(&vm, 0x308)); in test_diag_308() 50 assert(vm.save_area.guest.grs[2] == subcode); in test_diag_308() 62 sie_expect_validity(&vm); in test_diag_308() 63 sie(&vm); in test_diag_308() [all …]
|
H A D | mvpg-sie.c | 24 static struct vm vm; variable 34 uint64_t **pei_dst = (uint64_t **)((uintptr_t) vm.sblk + 0xc0); in test_mvpg_pei() 35 uint64_t **pei_src = (uint64_t **)((uintptr_t) vm.sblk + 0xc8); in test_mvpg_pei() 42 sie(&vm); in test_mvpg_pei() 43 report(vm.sblk->icptcode == ICPT_PARTEXEC, "Partial execution"); in test_mvpg_pei() 53 sie(&vm); in test_mvpg_pei() 55 assert(vm.sblk->icptcode == ICPT_INST && in test_mvpg_pei() 56 vm.sblk->ipa == 0x8300 && vm.sblk->ipb == 0x440000); in test_mvpg_pei() 61 memset((uint64_t *)((uintptr_t) vm.sblk + 0xc0), 0, 16); in test_mvpg_pei() 64 sie(&vm); in test_mvpg_pei() [all …]
|
H A D | sie.c | 25 static struct vm vm; variable 29 vm.sblk->gpsw.addr = PAGE_SIZE * 2; in test_diag() 30 vm.sblk->gpsw.mask = PSW_MASK_64; in test_diag() 34 sie(&vm); in test_diag() 35 report(vm.sblk->icptcode == ICPT_INST && in test_diag() 36 vm.sblk->ipa == instr >> 16 && vm.sblk->ipb == instr << 16, in test_diag() 76 vm.sblk->gpsw.addr = PAGE_SIZE * 2; in test_epoch_ext() 77 vm.sblk->gpsw.mask = PSW_MASK_64; in test_epoch_ext() 79 vm.sblk->ecd |= ECD_MEF; in test_epoch_ext() 80 vm.sblk->epdx = 0x47; /* Setting the epoch extension here ... */ in test_epoch_ext() [all …]
|
H A D | spec_ex-sie.c | 19 static struct vm vm; variable 29 snippet_setup_guest(&vm, false); in setup_guest() 30 snippet_init(&vm, SNIPPET_NAME_START(c, spec_ex), in setup_guest() 36 vm.sblk->gpsw = snippet_psw; in reset_guest() 37 vm.sblk->icptcode = 0; in reset_guest() 49 sie(&vm); in test_spec_ex_sie() 51 report(vm.sblk->icptcode == ICPT_PROGI in test_spec_ex_sie() 52 && vm.sblk->iprcc == PGM_INT_CODE_SPECIFICATION in test_spec_ex_sie() 53 && vm.sblk->gpsw.addr != 0xdeadbeee, in test_spec_ex_sie() 58 vm.sblk->ecb |= ECB_SPECI; in test_spec_ex_sie() [all …]
|
H A D | sie-dat.c | 23 static struct vm vm; variable 33 sie(&vm); in test_sie_dat() 34 assert(snippet_is_force_exit_value(&vm)); in test_sie_dat() 35 test_page_gpa = snippet_get_force_exit_value(&vm); in test_sie_dat() 41 sie(&vm); in test_sie_dat() 42 assert(snippet_is_force_exit(&vm)); in test_sie_dat() 58 sie(&vm); in test_sie_dat() 74 snippet_setup_guest(&vm, false); in setup_guest() 82 install_page(guest_root, virt_to_pte_phys(root, vm.guest_mem + i), (void *)i); in setup_guest() 85 vm.sblk->cpuflags |= CPUSTAT_SM; in setup_guest() [all …]
|
H A D | stsi.c | 111 if (memcmp(&data->vm[0].cpi, cpi_kvm, sizeof(cpi_kvm))) { in test_3_2_2() 116 report(!memcmp(data->vm[0].uuid, uuid, sizeof(uuid)), "uuid"); in test_3_2_2() 117 report(data->vm[0].conf_cpus == smp_query_num_cpus(), "cpu count configured"); in test_3_2_2() 118 report(data->vm[0].total_cpus == in test_3_2_2() 119 data->vm[0].reserved_cpus + data->vm[0].conf_cpus, in test_3_2_2() 121 report(data->vm[0].standby_cpus == 0, "cpu count standby"); in test_3_2_2() 122 report(!memcmp(data->vm[0].name, vm_name, sizeof(data->vm[0].name)), in test_3_2_2() 125 if (data->vm[0].ext_name_encoding != 2) { in test_3_2_2()
|
H A D | stfle-sie.c | 17 static struct vm vm; variable 29 snippet_setup_guest(&vm, false); in setup_guest() 30 snippet_init(&vm, SNIPPET_NAME_START(c, stfle), in setup_guest() 45 sie(&vm); in run_guest() 46 assert(snippet_is_force_exit_value(&vm)); in run_guest() 47 guest_stfle_addr = snippet_get_force_exit_value(&vm); in run_guest() 48 res.mem = &vm.guest_mem[guest_stfle_addr]; in run_guest() 62 vm.sblk->fac = (uint32_t)(uint64_t)fac; in test_stfle_format_0()
|
/kvm-unit-tests/x86/ |
H A D | Makefile.common | 16 cflatobjs += lib/x86/vm.o
|
/kvm-unit-tests/scripts/ |
H A D | arch-run.bash | 372 for kvmtoolcmd in ${KVMTOOL:-lkvm vm lkvm-static}; do
|