Commit 37028975 authored by Paolo Bonzini's avatar Paolo Bonzini

Merge branch 'kvm-ppc-fixes' of...

Merge branch 'kvm-ppc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc into HEAD

"Paolo,

I have two fixes for HV KVM which I would like to have included in
v4.4-rc1.  The first one is a fix for a bug identified by Red Hat
which causes occasional guest crashes.  The second one fixes a bug
which causes host stalls and timeouts under certain circumstances when
the host is configured for static 2-way micro-threading mode."
parents a96036b8 f74f2e2e
...@@ -2060,7 +2060,7 @@ static bool can_split_piggybacked_subcores(struct core_info *cip) ...@@ -2060,7 +2060,7 @@ static bool can_split_piggybacked_subcores(struct core_info *cip)
return false; return false;
n_subcores += (cip->subcore_threads[sub] - 1) >> 1; n_subcores += (cip->subcore_threads[sub] - 1) >> 1;
} }
if (n_subcores > 3 || large_sub < 0) if (large_sub < 0 || !subcore_config_ok(n_subcores + 1, 2))
return false; return false;
/* /*
......
...@@ -1749,7 +1749,8 @@ kvmppc_hdsi: ...@@ -1749,7 +1749,8 @@ kvmppc_hdsi:
beq 3f beq 3f
clrrdi r0, r4, 28 clrrdi r0, r4, 28
PPC_SLBFEE_DOT(R5, R0) /* if so, look up SLB */ PPC_SLBFEE_DOT(R5, R0) /* if so, look up SLB */
bne 1f /* if no SLB entry found */ li r0, BOOK3S_INTERRUPT_DATA_SEGMENT
bne 7f /* if no SLB entry found */
4: std r4, VCPU_FAULT_DAR(r9) 4: std r4, VCPU_FAULT_DAR(r9)
stw r6, VCPU_FAULT_DSISR(r9) stw r6, VCPU_FAULT_DSISR(r9)
...@@ -1768,14 +1769,15 @@ kvmppc_hdsi: ...@@ -1768,14 +1769,15 @@ kvmppc_hdsi:
cmpdi r3, -2 /* MMIO emulation; need instr word */ cmpdi r3, -2 /* MMIO emulation; need instr word */
beq 2f beq 2f
/* Synthesize a DSI for the guest */ /* Synthesize a DSI (or DSegI) for the guest */
ld r4, VCPU_FAULT_DAR(r9) ld r4, VCPU_FAULT_DAR(r9)
mr r6, r3 mr r6, r3
1: mtspr SPRN_DAR, r4 1: li r0, BOOK3S_INTERRUPT_DATA_STORAGE
mtspr SPRN_DSISR, r6 mtspr SPRN_DSISR, r6
7: mtspr SPRN_DAR, r4
mtspr SPRN_SRR0, r10 mtspr SPRN_SRR0, r10
mtspr SPRN_SRR1, r11 mtspr SPRN_SRR1, r11
li r10, BOOK3S_INTERRUPT_DATA_STORAGE mr r10, r0
bl kvmppc_msr_interrupt bl kvmppc_msr_interrupt
fast_interrupt_c_return: fast_interrupt_c_return:
6: ld r7, VCPU_CTR(r9) 6: ld r7, VCPU_CTR(r9)
...@@ -1823,7 +1825,8 @@ kvmppc_hisi: ...@@ -1823,7 +1825,8 @@ kvmppc_hisi:
beq 3f beq 3f
clrrdi r0, r10, 28 clrrdi r0, r10, 28
PPC_SLBFEE_DOT(R5, R0) /* if so, look up SLB */ PPC_SLBFEE_DOT(R5, R0) /* if so, look up SLB */
bne 1f /* if no SLB entry found */ li r0, BOOK3S_INTERRUPT_INST_SEGMENT
bne 7f /* if no SLB entry found */
4: 4:
/* Search the hash table. */ /* Search the hash table. */
mr r3, r9 /* vcpu pointer */ mr r3, r9 /* vcpu pointer */
...@@ -1840,11 +1843,12 @@ kvmppc_hisi: ...@@ -1840,11 +1843,12 @@ kvmppc_hisi:
cmpdi r3, -1 /* handle in kernel mode */ cmpdi r3, -1 /* handle in kernel mode */
beq guest_exit_cont beq guest_exit_cont
/* Synthesize an ISI for the guest */ /* Synthesize an ISI (or ISegI) for the guest */
mr r11, r3 mr r11, r3
1: mtspr SPRN_SRR0, r10 1: li r0, BOOK3S_INTERRUPT_INST_STORAGE
7: mtspr SPRN_SRR0, r10
mtspr SPRN_SRR1, r11 mtspr SPRN_SRR1, r11
li r10, BOOK3S_INTERRUPT_INST_STORAGE mr r10, r0
bl kvmppc_msr_interrupt bl kvmppc_msr_interrupt
b fast_interrupt_c_return b fast_interrupt_c_return
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment