aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorEric Farman <farman@linux.vnet.ibm.com>2015-02-02 15:01:06 -0500
committerChristian Borntraeger <borntraeger@de.ibm.com>2015-03-06 07:49:33 -0500
commit403c8648cb191ef88555bfa72deaa969c0367f41 (patch)
treefecd56dcd715401cf76c30e0fb31f9f839892be0 /arch
parent68c557501b008515cb86c9a36c75f4e82e14a819 (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.h1
-rw-r--r--arch/s390/kvm/intercept.c1
-rw-r--r--arch/s390/kvm/interrupt.c1
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);