kvm-s390.c (841b91c584b6d1e2a2cb508bd2d0236cd37e1750) kvm-s390.c (84223598778ba08041f4297fda485df83414d57e)
1/*
2 * hosting zSeries kernel virtual machines
3 *
4 * Copyright IBM Corp. 2008, 2009
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License (version 2 only)
8 * as published by the Free Software Foundation.

--- 182 unchanged lines hidden (view full) ---

191static int kvm_vm_ioctl_enable_cap(struct kvm *kvm, struct kvm_enable_cap *cap)
192{
193 int r;
194
195 if (cap->flags)
196 return -EINVAL;
197
198 switch (cap->cap) {
1/*
2 * hosting zSeries kernel virtual machines
3 *
4 * Copyright IBM Corp. 2008, 2009
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License (version 2 only)
8 * as published by the Free Software Foundation.

--- 182 unchanged lines hidden (view full) ---

191static int kvm_vm_ioctl_enable_cap(struct kvm *kvm, struct kvm_enable_cap *cap)
192{
193 int r;
194
195 if (cap->flags)
196 return -EINVAL;
197
198 switch (cap->cap) {
199 case KVM_CAP_S390_IRQCHIP:
200 kvm->arch.use_irqchip = 1;
201 r = 0;
202 break;
199 default:
200 r = -EINVAL;
201 break;
202 }
203 return r;
204}
205
206long kvm_arch_vm_ioctl(struct file *filp,

--- 16 unchanged lines hidden (view full) ---

223 case KVM_ENABLE_CAP: {
224 struct kvm_enable_cap cap;
225 r = -EFAULT;
226 if (copy_from_user(&cap, argp, sizeof(cap)))
227 break;
228 r = kvm_vm_ioctl_enable_cap(kvm, &cap);
229 break;
230 }
203 default:
204 r = -EINVAL;
205 break;
206 }
207 return r;
208}
209
210long kvm_arch_vm_ioctl(struct file *filp,

--- 16 unchanged lines hidden (view full) ---

227 case KVM_ENABLE_CAP: {
228 struct kvm_enable_cap cap;
229 r = -EFAULT;
230 if (copy_from_user(&cap, argp, sizeof(cap)))
231 break;
232 r = kvm_vm_ioctl_enable_cap(kvm, &cap);
233 break;
234 }
235 case KVM_CREATE_IRQCHIP: {
236 struct kvm_irq_routing_entry routing;
237
238 r = -EINVAL;
239 if (kvm->arch.use_irqchip) {
240 /* Set up dummy routing. */
241 memset(&routing, 0, sizeof(routing));
242 kvm_set_irq_routing(kvm, &routing, 0, 0);
243 r = 0;
244 }
245 break;
246 }
231 default:
232 r = -ENOTTY;
233 }
234
235 return r;
236}
237
238int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)

--- 40 unchanged lines hidden (view full) ---

279 kvm->arch.gmap = gmap_alloc(current->mm);
280 if (!kvm->arch.gmap)
281 goto out_nogmap;
282 kvm->arch.gmap->private = kvm;
283 kvm->arch.gmap->pfault_enabled = 0;
284 }
285
286 kvm->arch.css_support = 0;
247 default:
248 r = -ENOTTY;
249 }
250
251 return r;
252}
253
254int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)

--- 40 unchanged lines hidden (view full) ---

295 kvm->arch.gmap = gmap_alloc(current->mm);
296 if (!kvm->arch.gmap)
297 goto out_nogmap;
298 kvm->arch.gmap->private = kvm;
299 kvm->arch.gmap->pfault_enabled = 0;
300 }
301
302 kvm->arch.css_support = 0;
303 kvm->arch.use_irqchip = 0;
287
288 return 0;
289out_nogmap:
290 debug_unregister(kvm->arch.dbf);
291out_nodbf:
292 free_page((unsigned long)(kvm->arch.sca));
293out_err:
294 return rc;

--- 1084 unchanged lines hidden ---
304
305 return 0;
306out_nogmap:
307 debug_unregister(kvm->arch.dbf);
308out_nodbf:
309 free_page((unsigned long)(kvm->arch.sca));
310out_err:
311 return rc;

--- 1084 unchanged lines hidden ---