• Home
  • Raw
  • Download

Lines Matching full:args

22 static void kvm_rtas_set_xive(struct kvm_vcpu *vcpu, struct rtas_args *args)  in kvm_rtas_set_xive()  argument
27 if (be32_to_cpu(args->nargs) != 3 || be32_to_cpu(args->nret) != 1) { in kvm_rtas_set_xive()
32 irq = be32_to_cpu(args->args[0]); in kvm_rtas_set_xive()
33 server = be32_to_cpu(args->args[1]); in kvm_rtas_set_xive()
34 priority = be32_to_cpu(args->args[2]); in kvm_rtas_set_xive()
43 args->rets[0] = cpu_to_be32(rc); in kvm_rtas_set_xive()
46 static void kvm_rtas_get_xive(struct kvm_vcpu *vcpu, struct rtas_args *args) in kvm_rtas_get_xive() argument
51 if (be32_to_cpu(args->nargs) != 1 || be32_to_cpu(args->nret) != 3) { in kvm_rtas_get_xive()
56 irq = be32_to_cpu(args->args[0]); in kvm_rtas_get_xive()
68 args->rets[1] = cpu_to_be32(server); in kvm_rtas_get_xive()
69 args->rets[2] = cpu_to_be32(priority); in kvm_rtas_get_xive()
71 args->rets[0] = cpu_to_be32(rc); in kvm_rtas_get_xive()
74 static void kvm_rtas_int_off(struct kvm_vcpu *vcpu, struct rtas_args *args) in kvm_rtas_int_off() argument
79 if (be32_to_cpu(args->nargs) != 1 || be32_to_cpu(args->nret) != 1) { in kvm_rtas_int_off()
84 irq = be32_to_cpu(args->args[0]); in kvm_rtas_int_off()
93 args->rets[0] = cpu_to_be32(rc); in kvm_rtas_int_off()
96 static void kvm_rtas_int_on(struct kvm_vcpu *vcpu, struct rtas_args *args) in kvm_rtas_int_on() argument
101 if (be32_to_cpu(args->nargs) != 1 || be32_to_cpu(args->nret) != 1) { in kvm_rtas_int_on()
106 irq = be32_to_cpu(args->args[0]); in kvm_rtas_int_on()
115 args->rets[0] = cpu_to_be32(rc); in kvm_rtas_int_on()
120 void (*handler)(struct kvm_vcpu *vcpu, struct rtas_args *args);
141 struct kvm_rtas_token_args args; in rtas_name_matches() local
142 return !strncmp(s1, s2, sizeof(args.name)); in rtas_name_matches()
203 struct kvm_rtas_token_args args; in kvm_vm_ioctl_rtas_define_token() local
206 if (copy_from_user(&args, argp, sizeof(args))) in kvm_vm_ioctl_rtas_define_token()
211 if (args.token) in kvm_vm_ioctl_rtas_define_token()
212 rc = rtas_token_define(kvm, args.name, args.token); in kvm_vm_ioctl_rtas_define_token()
214 rc = rtas_token_undefine(kvm, args.name); in kvm_vm_ioctl_rtas_define_token()
224 struct rtas_args args; in kvmppc_rtas_hcall() local
230 * r4 contains the guest physical address of the RTAS args in kvmppc_rtas_hcall()
235 rc = kvm_read_guest(vcpu->kvm, args_phys, &args, sizeof(args)); in kvmppc_rtas_hcall()
240 * args->rets is a pointer into args->args. Now that we've in kvmppc_rtas_hcall()
241 * copied args we need to fix it up to point into our copy, in kvmppc_rtas_hcall()
242 * not the guest args. We also need to save the original in kvmppc_rtas_hcall()
245 orig_rets = args.rets; in kvmppc_rtas_hcall()
246 if (be32_to_cpu(args.nargs) >= ARRAY_SIZE(args.args)) { in kvmppc_rtas_hcall()
248 * Don't overflow our args array: ensure there is room for in kvmppc_rtas_hcall()
257 args.rets = &args.args[be32_to_cpu(args.nargs)]; in kvmppc_rtas_hcall()
263 if (d->token == be32_to_cpu(args.token)) { in kvmppc_rtas_hcall()
264 d->handler->handler(vcpu, &args); in kvmppc_rtas_hcall()
273 args.rets = orig_rets; in kvmppc_rtas_hcall()
274 rc = kvm_write_guest(vcpu->kvm, args_phys, &args, sizeof(args)); in kvmppc_rtas_hcall()
284 * args pointer or nargs/nret values that would overflow the in kvmppc_rtas_hcall()
285 * array. That means we can't get to the args, and so we can't in kvmppc_rtas_hcall()