diff options
author | Eric Farman <farman@linux.vnet.ibm.com> | 2015-02-02 15:01:06 -0500 |
---|---|---|
committer | Christian Borntraeger <borntraeger@de.ibm.com> | 2015-03-06 07:49:33 -0500 |
commit | 403c8648cb191ef88555bfa72deaa969c0367f41 (patch) | |
tree | fecd56dcd715401cf76c30e0fb31f9f839892be0 /arch | |
parent | 68c557501b008515cb86c9a36c75f4e82e14a819 (diff) |
KVM: s390: Vector exceptions
A new exception type for vector instructions is introduced with
the new processor, but is handled exactly like a Data Exception
which is already handled by the system.
Signed-off-by: Eric Farman <farman@linux.vnet.ibm.com>
Reviewed-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/s390/include/asm/kvm_host.h | 1 | ||||
-rw-r--r-- | arch/s390/kvm/intercept.c | 1 | ||||
-rw-r--r-- | arch/s390/kvm/interrupt.c | 1 |
3 files changed, 3 insertions, 0 deletions
diff --git a/arch/s390/include/asm/kvm_host.h b/arch/s390/include/asm/kvm_host.h index 3449a388b169..fb1fd39dfacd 100644 --- a/arch/s390/include/asm/kvm_host.h +++ b/arch/s390/include/asm/kvm_host.h | |||
@@ -276,6 +276,7 @@ struct kvm_vcpu_stat { | |||
276 | #define PGM_SPECIAL_OPERATION 0x13 | 276 | #define PGM_SPECIAL_OPERATION 0x13 |
277 | #define PGM_OPERAND 0x15 | 277 | #define PGM_OPERAND 0x15 |
278 | #define PGM_TRACE_TABEL 0x16 | 278 | #define PGM_TRACE_TABEL 0x16 |
279 | #define PGM_VECTOR_PROCESSING 0x1b | ||
279 | #define PGM_SPACE_SWITCH 0x1c | 280 | #define PGM_SPACE_SWITCH 0x1c |
280 | #define PGM_HFP_SQUARE_ROOT 0x1d | 281 | #define PGM_HFP_SQUARE_ROOT 0x1d |
281 | #define PGM_PC_TRANSLATION_SPEC 0x1f | 282 | #define PGM_PC_TRANSLATION_SPEC 0x1f |
diff --git a/arch/s390/kvm/intercept.c b/arch/s390/kvm/intercept.c index bebd2157edd0..08ae10a3b406 100644 --- a/arch/s390/kvm/intercept.c +++ b/arch/s390/kvm/intercept.c | |||
@@ -165,6 +165,7 @@ static void __extract_prog_irq(struct kvm_vcpu *vcpu, | |||
165 | pgm_info->mon_class_nr = vcpu->arch.sie_block->mcn; | 165 | pgm_info->mon_class_nr = vcpu->arch.sie_block->mcn; |
166 | pgm_info->mon_code = vcpu->arch.sie_block->tecmc; | 166 | pgm_info->mon_code = vcpu->arch.sie_block->tecmc; |
167 | break; | 167 | break; |
168 | case PGM_VECTOR_PROCESSING: | ||
168 | case PGM_DATA: | 169 | case PGM_DATA: |
169 | pgm_info->data_exc_code = vcpu->arch.sie_block->dxc; | 170 | pgm_info->data_exc_code = vcpu->arch.sie_block->dxc; |
170 | break; | 171 | break; |
diff --git a/arch/s390/kvm/interrupt.c b/arch/s390/kvm/interrupt.c index 9561e1dea3e2..036d3757aca9 100644 --- a/arch/s390/kvm/interrupt.c +++ b/arch/s390/kvm/interrupt.c | |||
@@ -544,6 +544,7 @@ static int __must_check __deliver_prog(struct kvm_vcpu *vcpu) | |||
544 | rc |= put_guest_lc(vcpu, pgm_info.mon_code, | 544 | rc |= put_guest_lc(vcpu, pgm_info.mon_code, |
545 | (u64 *)__LC_MON_CODE); | 545 | (u64 *)__LC_MON_CODE); |
546 | break; | 546 | break; |
547 | case PGM_VECTOR_PROCESSING: | ||
547 | case PGM_DATA: | 548 | case PGM_DATA: |
548 | rc = put_guest_lc(vcpu, pgm_info.data_exc_code, | 549 | rc = put_guest_lc(vcpu, pgm_info.data_exc_code, |
549 | (u32 *)__LC_DATA_EXC_CODE); | 550 | (u32 *)__LC_DATA_EXC_CODE); |