KVM: PPC: Book3e: Add AltiVec support
authorMihai Caraman <mihai.caraman@freescale.com>
Wed, 20 Aug 2014 13:36:23 +0000 (16:36 +0300)
committerAlexander Graf <agraf@suse.de>
Mon, 22 Sep 2014 08:11:32 +0000 (10:11 +0200)
commit95d80a294b1eec83eb58c57e101b05828d97a851
treeba3cd2f22c938638926ee4fff629d594f8c79b2d
parent3efc7da61f6c5af78f67f03df8b0e1a473d8bc45
KVM: PPC: Book3e: Add AltiVec support

Add AltiVec support in KVM for Book3e. FPU support gracefully reuse host
infrastructure so follow the same approach for AltiVec.

Book3e specification defines shared interrupt numbers for SPE and AltiVec
units. Still SPE is present in e200/e500v2 cores while AltiVec is present in
e6500 core. So we can currently decide at compile-time which of the SPE or
AltiVec units to support exclusively by using CONFIG_SPE_POSSIBLE and
CONFIG_PPC_E500MC defines. As Alexander Graf suggested, keep SPE and AltiVec
exception handlers distinct to improve code readability.

Guests have the privilege to enable AltiVec, so we always need to support
AltiVec in KVM and implicitly in host to reflect interrupts and to save/restore
the unit context. KVM will be loaded on cores with AltiVec unit only if
CONFIG_ALTIVEC is defined. Use this define to guard KVM AltiVec logic.

Signed-off-by: Mihai Caraman <mihai.caraman@freescale.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
arch/powerpc/kvm/booke.c
arch/powerpc/kvm/booke.h
arch/powerpc/kvm/bookehv_interrupts.S
arch/powerpc/kvm/e500_emulate.c