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 --- |