Lines Matching defs:vcpu

34 static unsigned long kvm_psci_vcpu_suspend(struct kvm_vcpu *vcpu)
49 kvm_vcpu_block(vcpu);
50 kvm_clear_request(KVM_REQ_UNHALT, vcpu);
55 static void kvm_psci_vcpu_off(struct kvm_vcpu *vcpu)
57 vcpu->arch.power_off = true;
58 kvm_make_request(KVM_REQ_SLEEP, vcpu);
59 kvm_vcpu_kick(vcpu);
66 struct kvm_vcpu *vcpu = NULL;
73 vcpu = kvm_mpidr_to_vcpu(kvm, cpu_id);
79 if (!vcpu)
81 if (!vcpu->arch.power_off) {
88 reset_state = &vcpu->arch.reset_state;
102 kvm_make_request(KVM_REQ_VCPU_RESET, vcpu);
110 vcpu->arch.power_off = false;
111 kvm_vcpu_wake_up(vcpu);
116 static unsigned long kvm_psci_vcpu_affinity_info(struct kvm_vcpu *vcpu)
123 struct kvm *kvm = vcpu->kvm;
126 target_affinity = smccc_get_arg1(vcpu);
127 lowest_affinity_level = smccc_get_arg2(vcpu);
156 static void kvm_prepare_system_event(struct kvm_vcpu *vcpu, u32 type)
170 kvm_for_each_vcpu(i, tmp, vcpu->kvm)
172 kvm_make_all_cpus_request(vcpu->kvm, KVM_REQ_SLEEP);
174 memset(&vcpu->run->system_event, 0, sizeof(vcpu->run->system_event));
175 vcpu->run->system_event.type = type;
176 vcpu->run->exit_reason = KVM_EXIT_SYSTEM_EVENT;
179 static void kvm_psci_system_off(struct kvm_vcpu *vcpu)
181 kvm_prepare_system_event(vcpu, KVM_SYSTEM_EVENT_SHUTDOWN);
184 static void kvm_psci_system_reset(struct kvm_vcpu *vcpu)
186 kvm_prepare_system_event(vcpu, KVM_SYSTEM_EVENT_RESET);
189 static void kvm_psci_narrow_to_32bit(struct kvm_vcpu *vcpu)
198 vcpu_set_reg(vcpu, i, lower_32_bits(vcpu_get_reg(vcpu, i)));
201 static unsigned long kvm_psci_check_allowed_function(struct kvm_vcpu *vcpu, u32 fn)
208 if (vcpu_mode_is_32bit(vcpu))
216 static int kvm_psci_0_2_call(struct kvm_vcpu *vcpu)
218 struct kvm *kvm = vcpu->kvm;
219 u32 psci_fn = smccc_get_function(vcpu);
223 val = kvm_psci_check_allowed_function(vcpu, psci_fn);
237 val = kvm_psci_vcpu_suspend(vcpu);
240 kvm_psci_vcpu_off(vcpu);
244 kvm_psci_narrow_to_32bit(vcpu);
248 val = kvm_psci_vcpu_on(vcpu);
252 kvm_psci_narrow_to_32bit(vcpu);
255 val = kvm_psci_vcpu_affinity_info(vcpu);
266 kvm_psci_system_off(vcpu);
281 kvm_psci_system_reset(vcpu);
295 smccc_set_retval(vcpu, val, 0, 0, 0);
299 static int kvm_psci_1_0_call(struct kvm_vcpu *vcpu)
301 u32 psci_fn = smccc_get_function(vcpu);
311 feature = smccc_get_arg1(vcpu);
312 val = kvm_psci_check_allowed_function(vcpu, feature);
338 return kvm_psci_0_2_call(vcpu);
341 smccc_set_retval(vcpu, val, 0, 0, 0);
345 static int kvm_psci_0_1_call(struct kvm_vcpu *vcpu)
347 struct kvm *kvm = vcpu->kvm;
348 u32 psci_fn = smccc_get_function(vcpu);
353 kvm_psci_vcpu_off(vcpu);
358 val = kvm_psci_vcpu_on(vcpu);
366 smccc_set_retval(vcpu, val, 0, 0, 0);
372 * @vcpu: Pointer to the VCPU struct
384 int kvm_psci_call(struct kvm_vcpu *vcpu)
386 switch (kvm_psci_version(vcpu, vcpu->kvm)) {
388 return kvm_psci_1_0_call(vcpu);
390 return kvm_psci_0_2_call(vcpu);
392 return kvm_psci_0_1_call(vcpu);
398 int kvm_arm_get_fw_num_regs(struct kvm_vcpu *vcpu)
403 int kvm_arm_copy_fw_reg_indices(struct kvm_vcpu *vcpu, u64 __user *uindices)
472 int kvm_arm_get_fw_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)
479 val = kvm_psci_version(vcpu, vcpu->kvm);
496 int kvm_arm_set_fw_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)
512 wants_02 = test_bit(KVM_ARM_VCPU_PSCI_0_2, vcpu->arch.features);
518 vcpu->kvm->arch.psci_version = val;
524 vcpu->kvm->arch.psci_version = val;