Lines Matching refs:vm

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()
51 report_abort("VALIDITY: %x", sie_get_validity(vm)); in sie_handle_validity()
52 vm->validity_expected = false; in sie_handle_validity()
55 void sie(struct vm *vm) in sie() argument
62 if (sie_is_pv(vm)) in sie()
63 memcpy(vm->sblk->pv_grregs, vm->save_area.guest.grs, in sie()
64 sizeof(vm->save_area.guest.grs)); in sie()
67 vm->sblk->icptcode = 0; in sie()
88 while (vm->sblk->icptcode == 0 && !read_pgm_int_code()) { in sie()
89 sie64a(vm->sblk, &vm->save_area); in sie()
90 sie_handle_validity(vm); in sie()
92 vm->save_area.guest.grs[14] = vm->sblk->gg14; in sie()
93 vm->save_area.guest.grs[15] = vm->sblk->gg15; in sie()
101 if (sie_is_pv(vm)) in sie()
102 memcpy(vm->save_area.guest.grs, vm->sblk->pv_grregs, in sie()
103 sizeof(vm->save_area.guest.grs)); in sie()
106 void sie_guest_sca_create(struct vm *vm) in sie_guest_sca_create() argument
108 vm->sca = (struct esca_block *)alloc_page(); in sie_guest_sca_create()
111 vm->sblk->scaoh = ((uint64_t)vm->sca >> 32); in sie_guest_sca_create()
112 vm->sblk->scaol = (uint64_t)vm->sca & ~0x3fU; in sie_guest_sca_create()
113 vm->sblk->ecb2 |= ECB2_ESCA; in sie_guest_sca_create()
116 vm->sblk->ecb |= ECB_SRSI; in sie_guest_sca_create()
119 vm->sca->mcn[0] = BIT(63); in sie_guest_sca_create()
120 vm->sca->cpu[0].sda = (uint64_t)vm->sblk; in sie_guest_sca_create()
124 void sie_guest_create(struct vm *vm, uint64_t guest_mem, uint64_t guest_mem_len) in sie_guest_create() argument
126 vm->sblk = alloc_page(); in sie_guest_create()
127 memset(vm->sblk, 0, PAGE_SIZE); in sie_guest_create()
128 vm->sblk->cpuflags = CPUSTAT_ZARCH | CPUSTAT_RUNNING; in sie_guest_create()
129 vm->sblk->ihcpu = 0xffff; in sie_guest_create()
130 vm->sblk->prefix = 0; in sie_guest_create()
134 vm->guest_mem = (uint8_t *)guest_mem; in sie_guest_create()
136 vm->save_area.guest.asce = stctg(1); in sie_guest_create()
138 vm->sblk->mso = (uint64_t)guest_mem; in sie_guest_create()
139 vm->sblk->msl = (uint64_t)guest_mem + ((guest_mem_len - 1) & HPAGE_MASK); in sie_guest_create()
142 vm->crycb = alloc_pages_flags(0, AREA_DMA31); in sie_guest_create()
143 vm->sblk->crycbd = (uint32_t)(uintptr_t)vm->crycb; in sie_guest_create()
187 void sie_guest_destroy(struct vm *vm) in sie_guest_destroy() argument
189 free_page(vm->crycb); in sie_guest_destroy()
190 free_page(vm->sblk); in sie_guest_destroy()
191 if (vm->sblk->ecb2 & ECB2_ESCA) in sie_guest_destroy()
192 free_page(vm->sca); in sie_guest_destroy()