KVM: PPC: Book3S HV: Don't set DABR on POWER8
POWER8 doesn't have the DABR and DABRX registers; instead it has new DAWR/DAWRX registers, which will be handled in a later patch. Signed-off-by: Michael Neuling <mikey@neuling.org> Signed-off-by: Paul Mackerras <paulus@samba.org> Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
parent
6c85f52b10
commit
eee7ff9d2c
|
@ -57,9 +57,11 @@ BEGIN_FTR_SECTION
|
||||||
std r3, HSTATE_DSCR(r13)
|
std r3, HSTATE_DSCR(r13)
|
||||||
END_FTR_SECTION_IFSET(CPU_FTR_ARCH_206)
|
END_FTR_SECTION_IFSET(CPU_FTR_ARCH_206)
|
||||||
|
|
||||||
|
BEGIN_FTR_SECTION
|
||||||
/* Save host DABR */
|
/* Save host DABR */
|
||||||
mfspr r3, SPRN_DABR
|
mfspr r3, SPRN_DABR
|
||||||
std r3, HSTATE_DABR(r13)
|
std r3, HSTATE_DABR(r13)
|
||||||
|
END_FTR_SECTION_IFCLR(CPU_FTR_ARCH_207S)
|
||||||
|
|
||||||
/* Hard-disable interrupts */
|
/* Hard-disable interrupts */
|
||||||
mfmsr r10
|
mfmsr r10
|
||||||
|
|
|
@ -61,11 +61,13 @@ kvmppc_call_hv_entry:
|
||||||
|
|
||||||
/* Back from guest - restore host state and return to caller */
|
/* Back from guest - restore host state and return to caller */
|
||||||
|
|
||||||
|
BEGIN_FTR_SECTION
|
||||||
/* Restore host DABR and DABRX */
|
/* Restore host DABR and DABRX */
|
||||||
ld r5,HSTATE_DABR(r13)
|
ld r5,HSTATE_DABR(r13)
|
||||||
li r6,7
|
li r6,7
|
||||||
mtspr SPRN_DABR,r5
|
mtspr SPRN_DABR,r5
|
||||||
mtspr SPRN_DABRX,r6
|
mtspr SPRN_DABRX,r6
|
||||||
|
END_FTR_SECTION_IFCLR(CPU_FTR_ARCH_207S)
|
||||||
|
|
||||||
/* Restore SPRG3 */
|
/* Restore SPRG3 */
|
||||||
ld r3,PACA_SPRG3(r13)
|
ld r3,PACA_SPRG3(r13)
|
||||||
|
@ -284,15 +286,17 @@ kvmppc_hv_entry:
|
||||||
std r0, PPC_LR_STKOFF(r1)
|
std r0, PPC_LR_STKOFF(r1)
|
||||||
stdu r1, -112(r1)
|
stdu r1, -112(r1)
|
||||||
|
|
||||||
|
BEGIN_FTR_SECTION
|
||||||
/* Set partition DABR */
|
/* Set partition DABR */
|
||||||
/* Do this before re-enabling PMU to avoid P7 DABR corruption bug */
|
/* Do this before re-enabling PMU to avoid P7 DABR corruption bug */
|
||||||
li r5,3
|
li r5,3
|
||||||
ld r6,VCPU_DABR(r4)
|
ld r6,VCPU_DABR(r4)
|
||||||
mtspr SPRN_DABRX,r5
|
mtspr SPRN_DABRX,r5
|
||||||
mtspr SPRN_DABR,r6
|
mtspr SPRN_DABR,r6
|
||||||
BEGIN_FTR_SECTION
|
BEGIN_FTR_SECTION_NESTED(89)
|
||||||
isync
|
isync
|
||||||
END_FTR_SECTION_IFSET(CPU_FTR_ARCH_206)
|
END_FTR_SECTION_NESTED(CPU_FTR_ARCH_206, CPU_FTR_ARCH_206, 89)
|
||||||
|
END_FTR_SECTION_IFCLR(CPU_FTR_ARCH_207S)
|
||||||
|
|
||||||
/* Load guest PMU registers */
|
/* Load guest PMU registers */
|
||||||
/* R4 is live here (vcpu pointer) */
|
/* R4 is live here (vcpu pointer) */
|
||||||
|
@ -1609,6 +1613,9 @@ ignore_hdec:
|
||||||
b fast_guest_return
|
b fast_guest_return
|
||||||
|
|
||||||
_GLOBAL(kvmppc_h_set_dabr)
|
_GLOBAL(kvmppc_h_set_dabr)
|
||||||
|
BEGIN_FTR_SECTION
|
||||||
|
b 2f
|
||||||
|
END_FTR_SECTION_IFSET(CPU_FTR_ARCH_207S)
|
||||||
std r4,VCPU_DABR(r3)
|
std r4,VCPU_DABR(r3)
|
||||||
/* Work around P7 bug where DABR can get corrupted on mtspr */
|
/* Work around P7 bug where DABR can get corrupted on mtspr */
|
||||||
1: mtspr SPRN_DABR,r4
|
1: mtspr SPRN_DABR,r4
|
||||||
|
@ -1616,7 +1623,7 @@ _GLOBAL(kvmppc_h_set_dabr)
|
||||||
cmpd r4, r5
|
cmpd r4, r5
|
||||||
bne 1b
|
bne 1b
|
||||||
isync
|
isync
|
||||||
li r3,0
|
2: li r3,0
|
||||||
blr
|
blr
|
||||||
|
|
||||||
_GLOBAL(kvmppc_h_cede)
|
_GLOBAL(kvmppc_h_cede)
|
||||||
|
|
Loading…
Reference in New Issue