Lines Matching refs:wi
23 struct s1_walk_info wi; member
151 static int get_ia_size(struct s2_walk_info *wi) in get_ia_size() argument
153 return 64 - wi->t0sz; in get_ia_size()
156 static int check_base_s2_limits(struct s2_walk_info *wi, in check_base_s2_limits() argument
161 ia_size = get_ia_size(wi); in check_base_s2_limits()
164 switch (BIT(wi->pgshift)) { in check_base_s2_limits()
184 start_size = input_size - ((3 - level) * stride + wi->pgshift); in check_base_s2_limits()
192 static int check_output_size(struct s2_walk_info *wi, phys_addr_t output) in check_output_size() argument
194 unsigned int output_size = wi->max_oa_bits; in check_output_size()
210 struct s2_walk_info *wi, struct kvm_s2_trans *out) in walk_nested_s2_pgd() argument
219 switch (BIT(wi->pgshift)) { in walk_nested_s2_pgd()
223 level = 3 - wi->sl; in walk_nested_s2_pgd()
227 level = 2 - wi->sl; in walk_nested_s2_pgd()
232 stride = wi->pgshift - 3; in walk_nested_s2_pgd()
233 input_size = get_ia_size(wi); in walk_nested_s2_pgd()
237 ret = check_base_s2_limits(wi, level, input_size, stride); in walk_nested_s2_pgd()
242 wi->pgshift); in walk_nested_s2_pgd()
243 base_addr = wi->baddr & GENMASK_ULL(47, base_lower_bound); in walk_nested_s2_pgd()
245 if (check_output_size(wi, base_addr)) { in walk_nested_s2_pgd()
255 addr_bottom = (3 - level) * stride + wi->pgshift; in walk_nested_s2_pgd()
260 ret = wi->read_desc(paddr, &desc, wi->data); in walk_nested_s2_pgd()
268 if (wi->be) in walk_nested_s2_pgd()
284 if (check_output_size(wi, desc)) { in walk_nested_s2_pgd()
290 base_addr = desc & GENMASK_ULL(47, wi->pgshift); in walk_nested_s2_pgd()
302 if (check_output_size(wi, desc)) { in walk_nested_s2_pgd()
314 addr_bottom += contiguous_bit_shift(desc, wi, level); in walk_nested_s2_pgd()
320 out->block_size = 1UL << ((3 - level) * stride + wi->pgshift); in walk_nested_s2_pgd()
335 static void vtcr_to_walk_info(u64 vtcr, struct s2_walk_info *wi) in vtcr_to_walk_info() argument
337 wi->t0sz = vtcr & TCR_EL2_T0SZ_MASK; in vtcr_to_walk_info()
341 wi->pgshift = 12; break; in vtcr_to_walk_info()
343 wi->pgshift = 14; break; in vtcr_to_walk_info()
346 wi->pgshift = 16; break; in vtcr_to_walk_info()
349 wi->sl = FIELD_GET(VTCR_EL2_SL0_MASK, vtcr); in vtcr_to_walk_info()
351 wi->max_oa_bits = min(get_kvm_ipa_limit(), in vtcr_to_walk_info()
359 struct s2_walk_info wi; in kvm_walk_nested_s2() local
367 wi.read_desc = read_guest_s2_desc; in kvm_walk_nested_s2()
368 wi.data = vcpu; in kvm_walk_nested_s2()
369 wi.baddr = vcpu_read_sys_reg(vcpu, VTTBR_EL2); in kvm_walk_nested_s2()
371 vtcr_to_walk_info(vtcr, &wi); in kvm_walk_nested_s2()
373 wi.be = vcpu_read_sys_reg(vcpu, SCTLR_EL2) & SCTLR_ELx_EE; in kvm_walk_nested_s2()
375 ret = walk_nested_s2_pgd(gipa, &wi, result); in kvm_walk_nested_s2()
848 ipa_size = ttl_to_size(pgshift_level_to_ttl(vt->wi.pgshift, in kvm_invalidate_vncr_ipa()
888 va_size = ttl_to_size(pgshift_level_to_ttl(vt->wi.pgshift, in invalidate_vncr_va()
1197 vt->wi = (struct s1_walk_info) { in kvm_translate_vncr()
1209 ret = __kvm_translate_va(vcpu, &vt->wi, &vt->wr, va); in kvm_translate_vncr()