diff options
author | Scott Wood <scottwood@freescale.com> | 2011-12-20 10:34:47 -0500 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2012-04-08 05:54:33 -0400 |
commit | 73196cd364a2d972d73fa08da9d81ca3215bed68 (patch) | |
tree | 058b8487bb512b5cde4e827d8aa2525680e6519b /arch/powerpc/include | |
parent | 8fae845f4956de0becc115e926d33eff46722e94 (diff) |
KVM: PPC: e500mc support
Add processor support for e500mc, using hardware virtualization support
(GS-mode).
Current issues include:
- No support for external proxy (coreint) interrupt mode in the guest.
Includes work by Ashish Kalra <Ashish.Kalra@freescale.com>,
Varun Sethi <Varun.Sethi@freescale.com>, and
Liu Yu <yu.liu@freescale.com>.
Signed-off-by: Scott Wood <scottwood@freescale.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'arch/powerpc/include')
-rw-r--r-- | arch/powerpc/include/asm/cputable.h | 6 | ||||
-rw-r--r-- | arch/powerpc/include/asm/kvm.h | 1 |
2 files changed, 5 insertions, 2 deletions
diff --git a/arch/powerpc/include/asm/cputable.h b/arch/powerpc/include/asm/cputable.h index 7108a9c490a3..67c34afc6b5d 100644 --- a/arch/powerpc/include/asm/cputable.h +++ b/arch/powerpc/include/asm/cputable.h | |||
@@ -168,6 +168,7 @@ extern const char *powerpc_base_platform; | |||
168 | #define CPU_FTR_LWSYNC ASM_CONST(0x0000000008000000) | 168 | #define CPU_FTR_LWSYNC ASM_CONST(0x0000000008000000) |
169 | #define CPU_FTR_NOEXECUTE ASM_CONST(0x0000000010000000) | 169 | #define CPU_FTR_NOEXECUTE ASM_CONST(0x0000000010000000) |
170 | #define CPU_FTR_INDEXED_DCR ASM_CONST(0x0000000020000000) | 170 | #define CPU_FTR_INDEXED_DCR ASM_CONST(0x0000000020000000) |
171 | #define CPU_FTR_EMB_HV ASM_CONST(0x0000000040000000) | ||
171 | 172 | ||
172 | /* | 173 | /* |
173 | * Add the 64-bit processor unique features in the top half of the word; | 174 | * Add the 64-bit processor unique features in the top half of the word; |
@@ -386,11 +387,11 @@ extern const char *powerpc_base_platform; | |||
386 | CPU_FTR_NODSISRALIGN | CPU_FTR_NOEXECUTE) | 387 | CPU_FTR_NODSISRALIGN | CPU_FTR_NOEXECUTE) |
387 | #define CPU_FTRS_E500MC (CPU_FTR_USE_TB | CPU_FTR_NODSISRALIGN | \ | 388 | #define CPU_FTRS_E500MC (CPU_FTR_USE_TB | CPU_FTR_NODSISRALIGN | \ |
388 | CPU_FTR_L2CSR | CPU_FTR_LWSYNC | CPU_FTR_NOEXECUTE | \ | 389 | CPU_FTR_L2CSR | CPU_FTR_LWSYNC | CPU_FTR_NOEXECUTE | \ |
389 | CPU_FTR_DBELL | CPU_FTR_DEBUG_LVL_EXC) | 390 | CPU_FTR_DBELL | CPU_FTR_DEBUG_LVL_EXC | CPU_FTR_EMB_HV) |
390 | #define CPU_FTRS_E5500 (CPU_FTR_USE_TB | CPU_FTR_NODSISRALIGN | \ | 391 | #define CPU_FTRS_E5500 (CPU_FTR_USE_TB | CPU_FTR_NODSISRALIGN | \ |
391 | CPU_FTR_L2CSR | CPU_FTR_LWSYNC | CPU_FTR_NOEXECUTE | \ | 392 | CPU_FTR_L2CSR | CPU_FTR_LWSYNC | CPU_FTR_NOEXECUTE | \ |
392 | CPU_FTR_DBELL | CPU_FTR_POPCNTB | CPU_FTR_POPCNTD | \ | 393 | CPU_FTR_DBELL | CPU_FTR_POPCNTB | CPU_FTR_POPCNTD | \ |
393 | CPU_FTR_DEBUG_LVL_EXC) | 394 | CPU_FTR_DEBUG_LVL_EXC | CPU_FTR_EMB_HV) |
394 | #define CPU_FTRS_E6500 (CPU_FTR_USE_TB | CPU_FTR_NODSISRALIGN | \ | 395 | #define CPU_FTRS_E6500 (CPU_FTR_USE_TB | CPU_FTR_NODSISRALIGN | \ |
395 | CPU_FTR_L2CSR | CPU_FTR_LWSYNC | CPU_FTR_NOEXECUTE | \ | 396 | CPU_FTR_L2CSR | CPU_FTR_LWSYNC | CPU_FTR_NOEXECUTE | \ |
396 | CPU_FTR_DBELL | CPU_FTR_POPCNTB | CPU_FTR_POPCNTD | \ | 397 | CPU_FTR_DBELL | CPU_FTR_POPCNTB | CPU_FTR_POPCNTD | \ |
@@ -539,6 +540,7 @@ enum { | |||
539 | #ifdef CONFIG_PPC_E500MC | 540 | #ifdef CONFIG_PPC_E500MC |
540 | CPU_FTRS_E500MC & CPU_FTRS_E5500 & CPU_FTRS_E6500 & | 541 | CPU_FTRS_E500MC & CPU_FTRS_E5500 & CPU_FTRS_E6500 & |
541 | #endif | 542 | #endif |
543 | ~CPU_FTR_EMB_HV & /* can be removed at runtime */ | ||
542 | CPU_FTRS_POSSIBLE, | 544 | CPU_FTRS_POSSIBLE, |
543 | }; | 545 | }; |
544 | #endif /* __powerpc64__ */ | 546 | #endif /* __powerpc64__ */ |
diff --git a/arch/powerpc/include/asm/kvm.h b/arch/powerpc/include/asm/kvm.h index b921c3f48928..1bea4d8ea6f4 100644 --- a/arch/powerpc/include/asm/kvm.h +++ b/arch/powerpc/include/asm/kvm.h | |||
@@ -277,6 +277,7 @@ struct kvm_sync_regs { | |||
277 | #define KVM_CPU_E500V2 2 | 277 | #define KVM_CPU_E500V2 2 |
278 | #define KVM_CPU_3S_32 3 | 278 | #define KVM_CPU_3S_32 3 |
279 | #define KVM_CPU_3S_64 4 | 279 | #define KVM_CPU_3S_64 4 |
280 | #define KVM_CPU_E500MC 5 | ||
280 | 281 | ||
281 | /* for KVM_CAP_SPAPR_TCE */ | 282 | /* for KVM_CAP_SPAPR_TCE */ |
282 | struct kvm_create_spapr_tce { | 283 | struct kvm_create_spapr_tce { |