intercept.c (f22166dcfd30b46bb729abaf7ba3e1dd9e5d2093) intercept.c (4953919feedaeb6d0161ecea920c35d1d1f639d3)
1/*
2 * in-kernel handling for sie intercepts
3 *
4 * Copyright IBM Corp. 2008, 2014
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.

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

267 switch (eic) {
268 case EXT_IRQ_CLK_COMP:
269 irq.type = KVM_S390_INT_CLOCK_COMP;
270 break;
271 case EXT_IRQ_CPU_TIMER:
272 irq.type = KVM_S390_INT_CPU_TIMER;
273 break;
274 case EXT_IRQ_EXTERNAL_CALL:
1/*
2 * in-kernel handling for sie intercepts
3 *
4 * Copyright IBM Corp. 2008, 2014
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.

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

267 switch (eic) {
268 case EXT_IRQ_CLK_COMP:
269 irq.type = KVM_S390_INT_CLOCK_COMP;
270 break;
271 case EXT_IRQ_CPU_TIMER:
272 irq.type = KVM_S390_INT_CPU_TIMER;
273 break;
274 case EXT_IRQ_EXTERNAL_CALL:
275 if (kvm_s390_si_ext_call_pending(vcpu))
276 return 0;
275 irq.type = KVM_S390_INT_EXTERNAL_CALL;
276 irq.parm = vcpu->arch.sie_block->extcpuaddr;
277 break;
278 default:
279 return -EOPNOTSUPP;
280 }
281
282 return kvm_s390_inject_vcpu(vcpu, &irq);

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

318
319 return 0;
320}
321
322static int handle_partial_execution(struct kvm_vcpu *vcpu)
323{
324 if (vcpu->arch.sie_block->ipa == 0xb254) /* MVPG */
325 return handle_mvpg_pei(vcpu);
277 irq.type = KVM_S390_INT_EXTERNAL_CALL;
278 irq.parm = vcpu->arch.sie_block->extcpuaddr;
279 break;
280 default:
281 return -EOPNOTSUPP;
282 }
283
284 return kvm_s390_inject_vcpu(vcpu, &irq);

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

320
321 return 0;
322}
323
324static int handle_partial_execution(struct kvm_vcpu *vcpu)
325{
326 if (vcpu->arch.sie_block->ipa == 0xb254) /* MVPG */
327 return handle_mvpg_pei(vcpu);
328 if (vcpu->arch.sie_block->ipa >> 8 == 0xae) /* SIGP */
329 return kvm_s390_handle_sigp_pei(vcpu);
326
327 return -EOPNOTSUPP;
328}
329
330static const intercept_handler_t intercept_funcs[] = {
331 [0x00 >> 2] = handle_noop,
332 [0x04 >> 2] = handle_instruction,
333 [0x08 >> 2] = handle_prog,

--- 22 unchanged lines hidden ---
330
331 return -EOPNOTSUPP;
332}
333
334static const intercept_handler_t intercept_funcs[] = {
335 [0x00 >> 2] = handle_noop,
336 [0x04 >> 2] = handle_instruction,
337 [0x08 >> 2] = handle_prog,

--- 22 unchanged lines hidden ---