All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/8] kvm/ppc: fixes for 3.10
@ 2013-06-07  0:16 ` Scott Wood
  0 siblings, 0 replies; 34+ messages in thread
From: Scott Wood @ 2013-06-07  0:16 UTC (permalink / raw)
  To: Alexander Graf, Gleb Natapov, Paolo Bonzini; +Cc: Mihai Caraman, kvm-ppc, kvm

Most of these have been posted before, but I grouped them together as
there are some contextual dependencies between them.

Gleb/Paolo: As Alex doesn't appear to be back yet, can you apply these
if there's no objection over the next few days?

Mihai Caraman (1):
  kvm/ppc/booke64: Fix AltiVec interrupt numbers and build breakage

Scott Wood (7):
  kvm/ppc/booke64: Disable e6500 support
  kvm/ppc/booke: Hold srcu lock when calling gfn functions
  kvm/ppc/booke64: Fix lazy ee handling in kvmppc_handle_exit()
  kvm/ppc: Call trace_hardirqs_on before entry
  kvm/ppc: IRQ disabling cleanup
  kvm/ppc/booke: Delay kvmppc_fix_ee_before_entry
  kvm/ppc/booke: Don't call kvm_guest_enter twice

 arch/powerpc/include/asm/kvm_asm.h |   16 ++++++++++------
 arch/powerpc/include/asm/kvm_ppc.h |   17 ++++++++++++++---
 arch/powerpc/kvm/44x_tlb.c         |    5 +++++
 arch/powerpc/kvm/book3s_pr.c       |   16 +++++-----------
 arch/powerpc/kvm/booke.c           |   36 ++++++++++++++++++++++++------------
 arch/powerpc/kvm/e500_mmu.c        |    5 +++++
 arch/powerpc/kvm/e500mc.c          |    2 --
 arch/powerpc/kvm/powerpc.c         |   25 ++++++++++---------------
 8 files changed, 73 insertions(+), 49 deletions(-)

-- 
1.7.10.4

^ permalink raw reply	[flat|nested] 34+ messages in thread

* [PATCH 0/8] kvm/ppc: fixes for 3.10
@ 2013-06-07  0:16 ` Scott Wood
  0 siblings, 0 replies; 34+ messages in thread
From: Scott Wood @ 2013-06-07  0:16 UTC (permalink / raw)
  To: Alexander Graf, Gleb Natapov, Paolo Bonzini; +Cc: Mihai Caraman, kvm-ppc, kvm

Most of these have been posted before, but I grouped them together as
there are some contextual dependencies between them.

Gleb/Paolo: As Alex doesn't appear to be back yet, can you apply these
if there's no objection over the next few days?

Mihai Caraman (1):
  kvm/ppc/booke64: Fix AltiVec interrupt numbers and build breakage

Scott Wood (7):
  kvm/ppc/booke64: Disable e6500 support
  kvm/ppc/booke: Hold srcu lock when calling gfn functions
  kvm/ppc/booke64: Fix lazy ee handling in kvmppc_handle_exit()
  kvm/ppc: Call trace_hardirqs_on before entry
  kvm/ppc: IRQ disabling cleanup
  kvm/ppc/booke: Delay kvmppc_fix_ee_before_entry
  kvm/ppc/booke: Don't call kvm_guest_enter twice

 arch/powerpc/include/asm/kvm_asm.h |   16 ++++++++++------
 arch/powerpc/include/asm/kvm_ppc.h |   17 ++++++++++++++---
 arch/powerpc/kvm/44x_tlb.c         |    5 +++++
 arch/powerpc/kvm/book3s_pr.c       |   16 +++++-----------
 arch/powerpc/kvm/booke.c           |   36 ++++++++++++++++++++++++------------
 arch/powerpc/kvm/e500_mmu.c        |    5 +++++
 arch/powerpc/kvm/e500mc.c          |    2 --
 arch/powerpc/kvm/powerpc.c         |   25 ++++++++++---------------
 8 files changed, 73 insertions(+), 49 deletions(-)

-- 
1.7.10.4



^ permalink raw reply	[flat|nested] 34+ messages in thread

* [PATCH 1/8] kvm/ppc/booke64: Fix AltiVec interrupt numbers and build breakage
  2013-06-07  0:16 ` Scott Wood
@ 2013-06-07  0:16   ` Scott Wood
  -1 siblings, 0 replies; 34+ messages in thread
From: Scott Wood @ 2013-06-07  0:16 UTC (permalink / raw)
  To: Alexander Graf, Gleb Natapov, Paolo Bonzini
  Cc: Mihai Caraman, kvm-ppc, kvm, Scott Wood

From: Mihai Caraman <mihai.caraman@freescale.com>

Interrupt numbers defined for Book3E follows IVORs definition. Align
BOOKE_INTERRUPT_ALTIVEC_UNAVAIL and BOOKE_INTERRUPT_ALTIVEC_ASSIST to this
rule which also fixes the build breakage.
IVORs 32 and 33 are shared so reflect this in the interrupts naming.

This fixes a build break for 64-bit booke KVM.

Signed-off-by: Mihai Caraman <mihai.caraman@freescale.com>
Signed-off-by: Scott Wood <scottwood@freescale.com>
---
 arch/powerpc/include/asm/kvm_asm.h |   16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/arch/powerpc/include/asm/kvm_asm.h b/arch/powerpc/include/asm/kvm_asm.h
index b9dd382..851bac7 100644
--- a/arch/powerpc/include/asm/kvm_asm.h
+++ b/arch/powerpc/include/asm/kvm_asm.h
@@ -54,8 +54,16 @@
 #define BOOKE_INTERRUPT_DEBUG 15
 
 /* E500 */
-#define BOOKE_INTERRUPT_SPE_UNAVAIL 32
-#define BOOKE_INTERRUPT_SPE_FP_DATA 33
+#define BOOKE_INTERRUPT_SPE_ALTIVEC_UNAVAIL 32
+#define BOOKE_INTERRUPT_SPE_FP_DATA_ALTIVEC_ASSIST 33
+/*
+ * TODO: Unify 32-bit and 64-bit kernel exception handlers to use same defines
+ */
+#define BOOKE_INTERRUPT_SPE_UNAVAIL BOOKE_INTERRUPT_SPE_ALTIVEC_UNAVAIL
+#define BOOKE_INTERRUPT_SPE_FP_DATA BOOKE_INTERRUPT_SPE_FP_DATA_ALTIVEC_ASSIST
+#define BOOKE_INTERRUPT_ALTIVEC_UNAVAIL BOOKE_INTERRUPT_SPE_ALTIVEC_UNAVAIL
+#define BOOKE_INTERRUPT_ALTIVEC_ASSIST \
+				BOOKE_INTERRUPT_SPE_FP_DATA_ALTIVEC_ASSIST
 #define BOOKE_INTERRUPT_SPE_FP_ROUND 34
 #define BOOKE_INTERRUPT_PERFORMANCE_MONITOR 35
 #define BOOKE_INTERRUPT_DOORBELL 36
@@ -67,10 +75,6 @@
 #define BOOKE_INTERRUPT_HV_SYSCALL 40
 #define BOOKE_INTERRUPT_HV_PRIV 41
 
-/* altivec */
-#define BOOKE_INTERRUPT_ALTIVEC_UNAVAIL 42
-#define BOOKE_INTERRUPT_ALTIVEC_ASSIST 43
-
 /* book3s */
 
 #define BOOK3S_INTERRUPT_SYSTEM_RESET	0x100
-- 
1.7.10.4



^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH 1/8] kvm/ppc/booke64: Fix AltiVec interrupt numbers and build breakage
@ 2013-06-07  0:16   ` Scott Wood
  0 siblings, 0 replies; 34+ messages in thread
From: Scott Wood @ 2013-06-07  0:16 UTC (permalink / raw)
  To: Alexander Graf, Gleb Natapov, Paolo Bonzini
  Cc: Mihai Caraman, kvm-ppc, kvm, Scott Wood

From: Mihai Caraman <mihai.caraman@freescale.com>

Interrupt numbers defined for Book3E follows IVORs definition. Align
BOOKE_INTERRUPT_ALTIVEC_UNAVAIL and BOOKE_INTERRUPT_ALTIVEC_ASSIST to this
rule which also fixes the build breakage.
IVORs 32 and 33 are shared so reflect this in the interrupts naming.

This fixes a build break for 64-bit booke KVM.

Signed-off-by: Mihai Caraman <mihai.caraman@freescale.com>
Signed-off-by: Scott Wood <scottwood@freescale.com>
---
 arch/powerpc/include/asm/kvm_asm.h |   16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/arch/powerpc/include/asm/kvm_asm.h b/arch/powerpc/include/asm/kvm_asm.h
index b9dd382..851bac7 100644
--- a/arch/powerpc/include/asm/kvm_asm.h
+++ b/arch/powerpc/include/asm/kvm_asm.h
@@ -54,8 +54,16 @@
 #define BOOKE_INTERRUPT_DEBUG 15
 
 /* E500 */
-#define BOOKE_INTERRUPT_SPE_UNAVAIL 32
-#define BOOKE_INTERRUPT_SPE_FP_DATA 33
+#define BOOKE_INTERRUPT_SPE_ALTIVEC_UNAVAIL 32
+#define BOOKE_INTERRUPT_SPE_FP_DATA_ALTIVEC_ASSIST 33
+/*
+ * TODO: Unify 32-bit and 64-bit kernel exception handlers to use same defines
+ */
+#define BOOKE_INTERRUPT_SPE_UNAVAIL BOOKE_INTERRUPT_SPE_ALTIVEC_UNAVAIL
+#define BOOKE_INTERRUPT_SPE_FP_DATA BOOKE_INTERRUPT_SPE_FP_DATA_ALTIVEC_ASSIST
+#define BOOKE_INTERRUPT_ALTIVEC_UNAVAIL BOOKE_INTERRUPT_SPE_ALTIVEC_UNAVAIL
+#define BOOKE_INTERRUPT_ALTIVEC_ASSIST \
+				BOOKE_INTERRUPT_SPE_FP_DATA_ALTIVEC_ASSIST
 #define BOOKE_INTERRUPT_SPE_FP_ROUND 34
 #define BOOKE_INTERRUPT_PERFORMANCE_MONITOR 35
 #define BOOKE_INTERRUPT_DOORBELL 36
@@ -67,10 +75,6 @@
 #define BOOKE_INTERRUPT_HV_SYSCALL 40
 #define BOOKE_INTERRUPT_HV_PRIV 41
 
-/* altivec */
-#define BOOKE_INTERRUPT_ALTIVEC_UNAVAIL 42
-#define BOOKE_INTERRUPT_ALTIVEC_ASSIST 43
-
 /* book3s */
 
 #define BOOK3S_INTERRUPT_SYSTEM_RESET	0x100
-- 
1.7.10.4



^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH 2/8] kvm/ppc/booke64: Disable e6500 support
  2013-06-07  0:16 ` Scott Wood
@ 2013-06-07  0:16   ` Scott Wood
  -1 siblings, 0 replies; 34+ messages in thread
From: Scott Wood @ 2013-06-07  0:16 UTC (permalink / raw)
  To: Alexander Graf, Gleb Natapov, Paolo Bonzini
  Cc: Mihai Caraman, kvm-ppc, kvm, Scott Wood

The previous patch made 64-bit booke KVM build again, but Altivec
support is still not complete, and we can't prevent the guest from
turning on Altivec (which can corrupt host state until state
save/restore is implemented).  Disable e6500 on KVM until this is
fixed.

Signed-off-by: Scott Wood <scottwood@freescale.com>
---
Mihai has posted RFC patches for proper Altivec support, so disabling
e6500 should only need to be for 3.10.
---
 arch/powerpc/kvm/e500mc.c |    2 --
 1 file changed, 2 deletions(-)

diff --git a/arch/powerpc/kvm/e500mc.c b/arch/powerpc/kvm/e500mc.c
index 753cc99..19c8379 100644
--- a/arch/powerpc/kvm/e500mc.c
+++ b/arch/powerpc/kvm/e500mc.c
@@ -177,8 +177,6 @@ int kvmppc_core_check_processor_compat(void)
 		r = 0;
 	else if (strcmp(cur_cpu_spec->cpu_name, "e5500") == 0)
 		r = 0;
-	else if (strcmp(cur_cpu_spec->cpu_name, "e6500") == 0)
-		r = 0;
 	else
 		r = -ENOTSUPP;
 
-- 
1.7.10.4



^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH 2/8] kvm/ppc/booke64: Disable e6500 support
@ 2013-06-07  0:16   ` Scott Wood
  0 siblings, 0 replies; 34+ messages in thread
From: Scott Wood @ 2013-06-07  0:16 UTC (permalink / raw)
  To: Alexander Graf, Gleb Natapov, Paolo Bonzini
  Cc: Mihai Caraman, kvm-ppc, kvm, Scott Wood

The previous patch made 64-bit booke KVM build again, but Altivec
support is still not complete, and we can't prevent the guest from
turning on Altivec (which can corrupt host state until state
save/restore is implemented).  Disable e6500 on KVM until this is
fixed.

Signed-off-by: Scott Wood <scottwood@freescale.com>
---
Mihai has posted RFC patches for proper Altivec support, so disabling
e6500 should only need to be for 3.10.
---
 arch/powerpc/kvm/e500mc.c |    2 --
 1 file changed, 2 deletions(-)

diff --git a/arch/powerpc/kvm/e500mc.c b/arch/powerpc/kvm/e500mc.c
index 753cc99..19c8379 100644
--- a/arch/powerpc/kvm/e500mc.c
+++ b/arch/powerpc/kvm/e500mc.c
@@ -177,8 +177,6 @@ int kvmppc_core_check_processor_compat(void)
 		r = 0;
 	else if (strcmp(cur_cpu_spec->cpu_name, "e5500") = 0)
 		r = 0;
-	else if (strcmp(cur_cpu_spec->cpu_name, "e6500") = 0)
-		r = 0;
 	else
 		r = -ENOTSUPP;
 
-- 
1.7.10.4



^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH 3/8] kvm/ppc/booke: Hold srcu lock when calling gfn functions
  2013-06-07  0:16 ` Scott Wood
@ 2013-06-07  0:16   ` Scott Wood
  -1 siblings, 0 replies; 34+ messages in thread
From: Scott Wood @ 2013-06-07  0:16 UTC (permalink / raw)
  To: Alexander Graf, Gleb Natapov, Paolo Bonzini
  Cc: Mihai Caraman, kvm-ppc, kvm, Scott Wood

KVM core expects arch code to acquire the srcu lock when calling
gfn_to_memslot and similar functions.

Signed-off-by: Scott Wood <scottwood@freescale.com>
---
 arch/powerpc/kvm/44x_tlb.c  |    5 +++++
 arch/powerpc/kvm/booke.c    |    7 +++++++
 arch/powerpc/kvm/e500_mmu.c |    5 +++++
 3 files changed, 17 insertions(+)

diff --git a/arch/powerpc/kvm/44x_tlb.c b/arch/powerpc/kvm/44x_tlb.c
index 5dd3ab4..ed03854 100644
--- a/arch/powerpc/kvm/44x_tlb.c
+++ b/arch/powerpc/kvm/44x_tlb.c
@@ -441,6 +441,7 @@ int kvmppc_44x_emul_tlbwe(struct kvm_vcpu *vcpu, u8 ra, u8 rs, u8 ws)
 	struct kvmppc_vcpu_44x *vcpu_44x = to_44x(vcpu);
 	struct kvmppc_44x_tlbe *tlbe;
 	unsigned int gtlb_index;
+	int idx;
 
 	gtlb_index = kvmppc_get_gpr(vcpu, ra);
 	if (gtlb_index >= KVM44x_GUEST_TLB_SIZE) {
@@ -473,6 +474,8 @@ int kvmppc_44x_emul_tlbwe(struct kvm_vcpu *vcpu, u8 ra, u8 rs, u8 ws)
 		return EMULATE_FAIL;
 	}
 
+	idx = srcu_read_lock(&vcpu->kvm->srcu);
+
 	if (tlbe_is_host_safe(vcpu, tlbe)) {
 		gva_t eaddr;
 		gpa_t gpaddr;
@@ -489,6 +492,8 @@ int kvmppc_44x_emul_tlbwe(struct kvm_vcpu *vcpu, u8 ra, u8 rs, u8 ws)
 		kvmppc_mmu_map(vcpu, eaddr, gpaddr, gtlb_index);
 	}
 
+	srcu_read_unlock(&vcpu->kvm->srcu, idx);
+
 	trace_kvm_gtlb_write(gtlb_index, tlbe->tid, tlbe->word0, tlbe->word1,
 			     tlbe->word2);
 
diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c
index 1020119..ecbe908 100644
--- a/arch/powerpc/kvm/booke.c
+++ b/arch/powerpc/kvm/booke.c
@@ -832,6 +832,7 @@ int kvmppc_handle_exit(struct kvm_run *run, struct kvm_vcpu *vcpu,
 {
 	int r = RESUME_HOST;
 	int s;
+	int idx;
 
 	/* update before a new last_exit_type is rewritten */
 	kvmppc_update_timing_stats(vcpu);
@@ -1053,6 +1054,8 @@ int kvmppc_handle_exit(struct kvm_run *run, struct kvm_vcpu *vcpu,
 			break;
 		}
 
+		idx = srcu_read_lock(&vcpu->kvm->srcu);
+
 		gpaddr = kvmppc_mmu_xlate(vcpu, gtlb_index, eaddr);
 		gfn = gpaddr >> PAGE_SHIFT;
 
@@ -1075,6 +1078,7 @@ int kvmppc_handle_exit(struct kvm_run *run, struct kvm_vcpu *vcpu,
 			kvmppc_account_exit(vcpu, MMIO_EXITS);
 		}
 
+		srcu_read_unlock(&vcpu->kvm->srcu, idx);
 		break;
 	}
 
@@ -1098,6 +1102,8 @@ int kvmppc_handle_exit(struct kvm_run *run, struct kvm_vcpu *vcpu,
 
 		kvmppc_account_exit(vcpu, ITLB_VIRT_MISS_EXITS);
 
+		idx = srcu_read_lock(&vcpu->kvm->srcu);
+
 		gpaddr = kvmppc_mmu_xlate(vcpu, gtlb_index, eaddr);
 		gfn = gpaddr >> PAGE_SHIFT;
 
@@ -1114,6 +1120,7 @@ int kvmppc_handle_exit(struct kvm_run *run, struct kvm_vcpu *vcpu,
 			kvmppc_booke_queue_irqprio(vcpu, BOOKE_IRQPRIO_MACHINE_CHECK);
 		}
 
+		srcu_read_unlock(&vcpu->kvm->srcu, idx);
 		break;
 	}
 
diff --git a/arch/powerpc/kvm/e500_mmu.c b/arch/powerpc/kvm/e500_mmu.c
index c41a5a9..6d6f153 100644
--- a/arch/powerpc/kvm/e500_mmu.c
+++ b/arch/powerpc/kvm/e500_mmu.c
@@ -396,6 +396,7 @@ int kvmppc_e500_emul_tlbwe(struct kvm_vcpu *vcpu)
 	struct kvm_book3e_206_tlb_entry *gtlbe;
 	int tlbsel, esel;
 	int recal = 0;
+	int idx;
 
 	tlbsel = get_tlb_tlbsel(vcpu);
 	esel = get_tlb_esel(vcpu, tlbsel);
@@ -430,6 +431,8 @@ int kvmppc_e500_emul_tlbwe(struct kvm_vcpu *vcpu)
 			kvmppc_set_tlb1map_range(vcpu, gtlbe);
 	}
 
+	idx = srcu_read_lock(&vcpu->kvm->srcu);
+
 	/* Invalidate shadow mappings for the about-to-be-clobbered TLBE. */
 	if (tlbe_is_host_safe(vcpu, gtlbe)) {
 		u64 eaddr = get_tlb_eaddr(gtlbe);
@@ -444,6 +447,8 @@ int kvmppc_e500_emul_tlbwe(struct kvm_vcpu *vcpu)
 		kvmppc_mmu_map(vcpu, eaddr, raddr, index_of(tlbsel, esel));
 	}
 
+	srcu_read_unlock(&vcpu->kvm->srcu, idx);
+
 	kvmppc_set_exit_type(vcpu, EMULATED_TLBWE_EXITS);
 	return EMULATE_DONE;
 }
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH 3/8] kvm/ppc/booke: Hold srcu lock when calling gfn functions
@ 2013-06-07  0:16   ` Scott Wood
  0 siblings, 0 replies; 34+ messages in thread
From: Scott Wood @ 2013-06-07  0:16 UTC (permalink / raw)
  To: Alexander Graf, Gleb Natapov, Paolo Bonzini
  Cc: Mihai Caraman, kvm-ppc, kvm, Scott Wood

KVM core expects arch code to acquire the srcu lock when calling
gfn_to_memslot and similar functions.

Signed-off-by: Scott Wood <scottwood@freescale.com>
---
 arch/powerpc/kvm/44x_tlb.c  |    5 +++++
 arch/powerpc/kvm/booke.c    |    7 +++++++
 arch/powerpc/kvm/e500_mmu.c |    5 +++++
 3 files changed, 17 insertions(+)

diff --git a/arch/powerpc/kvm/44x_tlb.c b/arch/powerpc/kvm/44x_tlb.c
index 5dd3ab4..ed03854 100644
--- a/arch/powerpc/kvm/44x_tlb.c
+++ b/arch/powerpc/kvm/44x_tlb.c
@@ -441,6 +441,7 @@ int kvmppc_44x_emul_tlbwe(struct kvm_vcpu *vcpu, u8 ra, u8 rs, u8 ws)
 	struct kvmppc_vcpu_44x *vcpu_44x = to_44x(vcpu);
 	struct kvmppc_44x_tlbe *tlbe;
 	unsigned int gtlb_index;
+	int idx;
 
 	gtlb_index = kvmppc_get_gpr(vcpu, ra);
 	if (gtlb_index >= KVM44x_GUEST_TLB_SIZE) {
@@ -473,6 +474,8 @@ int kvmppc_44x_emul_tlbwe(struct kvm_vcpu *vcpu, u8 ra, u8 rs, u8 ws)
 		return EMULATE_FAIL;
 	}
 
+	idx = srcu_read_lock(&vcpu->kvm->srcu);
+
 	if (tlbe_is_host_safe(vcpu, tlbe)) {
 		gva_t eaddr;
 		gpa_t gpaddr;
@@ -489,6 +492,8 @@ int kvmppc_44x_emul_tlbwe(struct kvm_vcpu *vcpu, u8 ra, u8 rs, u8 ws)
 		kvmppc_mmu_map(vcpu, eaddr, gpaddr, gtlb_index);
 	}
 
+	srcu_read_unlock(&vcpu->kvm->srcu, idx);
+
 	trace_kvm_gtlb_write(gtlb_index, tlbe->tid, tlbe->word0, tlbe->word1,
 			     tlbe->word2);
 
diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c
index 1020119..ecbe908 100644
--- a/arch/powerpc/kvm/booke.c
+++ b/arch/powerpc/kvm/booke.c
@@ -832,6 +832,7 @@ int kvmppc_handle_exit(struct kvm_run *run, struct kvm_vcpu *vcpu,
 {
 	int r = RESUME_HOST;
 	int s;
+	int idx;
 
 	/* update before a new last_exit_type is rewritten */
 	kvmppc_update_timing_stats(vcpu);
@@ -1053,6 +1054,8 @@ int kvmppc_handle_exit(struct kvm_run *run, struct kvm_vcpu *vcpu,
 			break;
 		}
 
+		idx = srcu_read_lock(&vcpu->kvm->srcu);
+
 		gpaddr = kvmppc_mmu_xlate(vcpu, gtlb_index, eaddr);
 		gfn = gpaddr >> PAGE_SHIFT;
 
@@ -1075,6 +1078,7 @@ int kvmppc_handle_exit(struct kvm_run *run, struct kvm_vcpu *vcpu,
 			kvmppc_account_exit(vcpu, MMIO_EXITS);
 		}
 
+		srcu_read_unlock(&vcpu->kvm->srcu, idx);
 		break;
 	}
 
@@ -1098,6 +1102,8 @@ int kvmppc_handle_exit(struct kvm_run *run, struct kvm_vcpu *vcpu,
 
 		kvmppc_account_exit(vcpu, ITLB_VIRT_MISS_EXITS);
 
+		idx = srcu_read_lock(&vcpu->kvm->srcu);
+
 		gpaddr = kvmppc_mmu_xlate(vcpu, gtlb_index, eaddr);
 		gfn = gpaddr >> PAGE_SHIFT;
 
@@ -1114,6 +1120,7 @@ int kvmppc_handle_exit(struct kvm_run *run, struct kvm_vcpu *vcpu,
 			kvmppc_booke_queue_irqprio(vcpu, BOOKE_IRQPRIO_MACHINE_CHECK);
 		}
 
+		srcu_read_unlock(&vcpu->kvm->srcu, idx);
 		break;
 	}
 
diff --git a/arch/powerpc/kvm/e500_mmu.c b/arch/powerpc/kvm/e500_mmu.c
index c41a5a9..6d6f153 100644
--- a/arch/powerpc/kvm/e500_mmu.c
+++ b/arch/powerpc/kvm/e500_mmu.c
@@ -396,6 +396,7 @@ int kvmppc_e500_emul_tlbwe(struct kvm_vcpu *vcpu)
 	struct kvm_book3e_206_tlb_entry *gtlbe;
 	int tlbsel, esel;
 	int recal = 0;
+	int idx;
 
 	tlbsel = get_tlb_tlbsel(vcpu);
 	esel = get_tlb_esel(vcpu, tlbsel);
@@ -430,6 +431,8 @@ int kvmppc_e500_emul_tlbwe(struct kvm_vcpu *vcpu)
 			kvmppc_set_tlb1map_range(vcpu, gtlbe);
 	}
 
+	idx = srcu_read_lock(&vcpu->kvm->srcu);
+
 	/* Invalidate shadow mappings for the about-to-be-clobbered TLBE. */
 	if (tlbe_is_host_safe(vcpu, gtlbe)) {
 		u64 eaddr = get_tlb_eaddr(gtlbe);
@@ -444,6 +447,8 @@ int kvmppc_e500_emul_tlbwe(struct kvm_vcpu *vcpu)
 		kvmppc_mmu_map(vcpu, eaddr, raddr, index_of(tlbsel, esel));
 	}
 
+	srcu_read_unlock(&vcpu->kvm->srcu, idx);
+
 	kvmppc_set_exit_type(vcpu, EMULATED_TLBWE_EXITS);
 	return EMULATE_DONE;
 }
-- 
1.7.10.4



^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH 4/8] kvm/ppc/booke64: Fix lazy ee handling in kvmppc_handle_exit()
  2013-06-07  0:16 ` Scott Wood
@ 2013-06-07  0:16   ` Scott Wood
  -1 siblings, 0 replies; 34+ messages in thread
From: Scott Wood @ 2013-06-07  0:16 UTC (permalink / raw)
  To: Alexander Graf, Gleb Natapov, Paolo Bonzini
  Cc: Mihai Caraman, kvm-ppc, kvm, Scott Wood

EE is hard-disabled on entry to kvmppc_handle_exit(), so call
hard_irq_disable() so that PACA_IRQ_HARD_DIS is set, and soft_enabled
is unset.

Without this, we get warnings such as arch/powerpc/kernel/time.c:300,
and sometimes host kernel hangs.

Signed-off-by: Scott Wood <scottwood@freescale.com>
---
 arch/powerpc/kvm/booke.c |   11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c
index ecbe908..5cd7ad0 100644
--- a/arch/powerpc/kvm/booke.c
+++ b/arch/powerpc/kvm/booke.c
@@ -834,6 +834,17 @@ int kvmppc_handle_exit(struct kvm_run *run, struct kvm_vcpu *vcpu,
 	int s;
 	int idx;
 
+#ifdef CONFIG_PPC64
+	WARN_ON(local_paca->irq_happened != 0);
+#endif
+
+	/*
+	 * We enter with interrupts disabled in hardware, but
+	 * we need to call hard_irq_disable anyway to ensure that
+	 * the software state is kept in sync.
+	 */
+	hard_irq_disable();
+
 	/* update before a new last_exit_type is rewritten */
 	kvmppc_update_timing_stats(vcpu);
 
-- 
1.7.10.4



^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH 4/8] kvm/ppc/booke64: Fix lazy ee handling in kvmppc_handle_exit()
@ 2013-06-07  0:16   ` Scott Wood
  0 siblings, 0 replies; 34+ messages in thread
From: Scott Wood @ 2013-06-07  0:16 UTC (permalink / raw)
  To: Alexander Graf, Gleb Natapov, Paolo Bonzini
  Cc: Mihai Caraman, kvm-ppc, kvm, Scott Wood

EE is hard-disabled on entry to kvmppc_handle_exit(), so call
hard_irq_disable() so that PACA_IRQ_HARD_DIS is set, and soft_enabled
is unset.

Without this, we get warnings such as arch/powerpc/kernel/time.c:300,
and sometimes host kernel hangs.

Signed-off-by: Scott Wood <scottwood@freescale.com>
---
 arch/powerpc/kvm/booke.c |   11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c
index ecbe908..5cd7ad0 100644
--- a/arch/powerpc/kvm/booke.c
+++ b/arch/powerpc/kvm/booke.c
@@ -834,6 +834,17 @@ int kvmppc_handle_exit(struct kvm_run *run, struct kvm_vcpu *vcpu,
 	int s;
 	int idx;
 
+#ifdef CONFIG_PPC64
+	WARN_ON(local_paca->irq_happened != 0);
+#endif
+
+	/*
+	 * We enter with interrupts disabled in hardware, but
+	 * we need to call hard_irq_disable anyway to ensure that
+	 * the software state is kept in sync.
+	 */
+	hard_irq_disable();
+
 	/* update before a new last_exit_type is rewritten */
 	kvmppc_update_timing_stats(vcpu);
 
-- 
1.7.10.4



^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH 5/8] kvm/ppc: Call trace_hardirqs_on before entry
  2013-06-07  0:16 ` Scott Wood
@ 2013-06-07  0:16   ` Scott Wood
  -1 siblings, 0 replies; 34+ messages in thread
From: Scott Wood @ 2013-06-07  0:16 UTC (permalink / raw)
  To: Alexander Graf, Gleb Natapov, Paolo Bonzini
  Cc: Mihai Caraman, kvm-ppc, kvm, Scott Wood

Currently this is only being done on 64-bit.  Rather than just move it
out of the 64-bit ifdef, move it to kvm_lazy_ee_enable() so that it is
consistent with lazy ee state, and so that we don't track more host
code as interrupts-enabled than necessary.

Rename kvm_lazy_ee_enable() to kvm_fix_ee_before_entry() to reflect
that this function now has a role on 32-bit as well.

Signed-off-by: Scott Wood <scottwood@freescale.com>
---
 arch/powerpc/include/asm/kvm_ppc.h |   11 ++++++++---
 arch/powerpc/kvm/book3s_pr.c       |    4 ++--
 arch/powerpc/kvm/booke.c           |    4 ++--
 arch/powerpc/kvm/powerpc.c         |    2 --
 4 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/arch/powerpc/include/asm/kvm_ppc.h b/arch/powerpc/include/asm/kvm_ppc.h
index a5287fe..6885846 100644
--- a/arch/powerpc/include/asm/kvm_ppc.h
+++ b/arch/powerpc/include/asm/kvm_ppc.h
@@ -394,10 +394,15 @@ static inline void kvmppc_mmu_flush_icache(pfn_t pfn)
 	}
 }
 
-/* Please call after prepare_to_enter. This function puts the lazy ee state
-   back to normal mode, without actually enabling interrupts. */
-static inline void kvmppc_lazy_ee_enable(void)
+/*
+ * Please call after prepare_to_enter. This function puts the lazy ee and irq
+ * disabled tracking state back to normal mode, without actually enabling
+ * interrupts.
+ */
+static inline void kvmppc_fix_ee_before_entry(void)
 {
+	trace_hardirqs_on();
+
 #ifdef CONFIG_PPC64
 	/* Only need to enable IRQs by hard enabling them after this */
 	local_paca->irq_happened = 0;
diff --git a/arch/powerpc/kvm/book3s_pr.c b/arch/powerpc/kvm/book3s_pr.c
index bdc40b8..0b97ce4 100644
--- a/arch/powerpc/kvm/book3s_pr.c
+++ b/arch/powerpc/kvm/book3s_pr.c
@@ -890,7 +890,7 @@ program_interrupt:
 			local_irq_enable();
 			r = s;
 		} else {
-			kvmppc_lazy_ee_enable();
+			kvmppc_fix_ee_before_entry();
 		}
 	}
 
@@ -1161,7 +1161,7 @@ int kvmppc_vcpu_run(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu)
 	if (vcpu->arch.shared->msr & MSR_FP)
 		kvmppc_handle_ext(vcpu, BOOK3S_INTERRUPT_FP_UNAVAIL, MSR_FP);
 
-	kvmppc_lazy_ee_enable();
+	kvmppc_fix_ee_before_entry();
 
 	ret = __kvmppc_vcpu_run(kvm_run, vcpu);
 
diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c
index 5cd7ad0..08f4aa1 100644
--- a/arch/powerpc/kvm/booke.c
+++ b/arch/powerpc/kvm/booke.c
@@ -673,7 +673,7 @@ int kvmppc_vcpu_run(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu)
 		ret = s;
 		goto out;
 	}
-	kvmppc_lazy_ee_enable();
+	kvmppc_fix_ee_before_entry();
 
 	kvm_guest_enter();
 
@@ -1167,7 +1167,7 @@ int kvmppc_handle_exit(struct kvm_run *run, struct kvm_vcpu *vcpu,
 			local_irq_enable();
 			r = (s << 2) | RESUME_HOST | (r & RESUME_FLAG_NV);
 		} else {
-			kvmppc_lazy_ee_enable();
+			kvmppc_fix_ee_before_entry();
 		}
 	}
 
diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c
index 6316ee3..4e05f8c 100644
--- a/arch/powerpc/kvm/powerpc.c
+++ b/arch/powerpc/kvm/powerpc.c
@@ -117,8 +117,6 @@ int kvmppc_prepare_to_enter(struct kvm_vcpu *vcpu)
 			kvm_guest_exit();
 			continue;
 		}
-
-		trace_hardirqs_on();
 #endif
 
 		kvm_guest_enter();
-- 
1.7.10.4



^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH 5/8] kvm/ppc: Call trace_hardirqs_on before entry
@ 2013-06-07  0:16   ` Scott Wood
  0 siblings, 0 replies; 34+ messages in thread
From: Scott Wood @ 2013-06-07  0:16 UTC (permalink / raw)
  To: Alexander Graf, Gleb Natapov, Paolo Bonzini
  Cc: Mihai Caraman, kvm-ppc, kvm, Scott Wood

Currently this is only being done on 64-bit.  Rather than just move it
out of the 64-bit ifdef, move it to kvm_lazy_ee_enable() so that it is
consistent with lazy ee state, and so that we don't track more host
code as interrupts-enabled than necessary.

Rename kvm_lazy_ee_enable() to kvm_fix_ee_before_entry() to reflect
that this function now has a role on 32-bit as well.

Signed-off-by: Scott Wood <scottwood@freescale.com>
---
 arch/powerpc/include/asm/kvm_ppc.h |   11 ++++++++---
 arch/powerpc/kvm/book3s_pr.c       |    4 ++--
 arch/powerpc/kvm/booke.c           |    4 ++--
 arch/powerpc/kvm/powerpc.c         |    2 --
 4 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/arch/powerpc/include/asm/kvm_ppc.h b/arch/powerpc/include/asm/kvm_ppc.h
index a5287fe..6885846 100644
--- a/arch/powerpc/include/asm/kvm_ppc.h
+++ b/arch/powerpc/include/asm/kvm_ppc.h
@@ -394,10 +394,15 @@ static inline void kvmppc_mmu_flush_icache(pfn_t pfn)
 	}
 }
 
-/* Please call after prepare_to_enter. This function puts the lazy ee state
-   back to normal mode, without actually enabling interrupts. */
-static inline void kvmppc_lazy_ee_enable(void)
+/*
+ * Please call after prepare_to_enter. This function puts the lazy ee and irq
+ * disabled tracking state back to normal mode, without actually enabling
+ * interrupts.
+ */
+static inline void kvmppc_fix_ee_before_entry(void)
 {
+	trace_hardirqs_on();
+
 #ifdef CONFIG_PPC64
 	/* Only need to enable IRQs by hard enabling them after this */
 	local_paca->irq_happened = 0;
diff --git a/arch/powerpc/kvm/book3s_pr.c b/arch/powerpc/kvm/book3s_pr.c
index bdc40b8..0b97ce4 100644
--- a/arch/powerpc/kvm/book3s_pr.c
+++ b/arch/powerpc/kvm/book3s_pr.c
@@ -890,7 +890,7 @@ program_interrupt:
 			local_irq_enable();
 			r = s;
 		} else {
-			kvmppc_lazy_ee_enable();
+			kvmppc_fix_ee_before_entry();
 		}
 	}
 
@@ -1161,7 +1161,7 @@ int kvmppc_vcpu_run(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu)
 	if (vcpu->arch.shared->msr & MSR_FP)
 		kvmppc_handle_ext(vcpu, BOOK3S_INTERRUPT_FP_UNAVAIL, MSR_FP);
 
-	kvmppc_lazy_ee_enable();
+	kvmppc_fix_ee_before_entry();
 
 	ret = __kvmppc_vcpu_run(kvm_run, vcpu);
 
diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c
index 5cd7ad0..08f4aa1 100644
--- a/arch/powerpc/kvm/booke.c
+++ b/arch/powerpc/kvm/booke.c
@@ -673,7 +673,7 @@ int kvmppc_vcpu_run(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu)
 		ret = s;
 		goto out;
 	}
-	kvmppc_lazy_ee_enable();
+	kvmppc_fix_ee_before_entry();
 
 	kvm_guest_enter();
 
@@ -1167,7 +1167,7 @@ int kvmppc_handle_exit(struct kvm_run *run, struct kvm_vcpu *vcpu,
 			local_irq_enable();
 			r = (s << 2) | RESUME_HOST | (r & RESUME_FLAG_NV);
 		} else {
-			kvmppc_lazy_ee_enable();
+			kvmppc_fix_ee_before_entry();
 		}
 	}
 
diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c
index 6316ee3..4e05f8c 100644
--- a/arch/powerpc/kvm/powerpc.c
+++ b/arch/powerpc/kvm/powerpc.c
@@ -117,8 +117,6 @@ int kvmppc_prepare_to_enter(struct kvm_vcpu *vcpu)
 			kvm_guest_exit();
 			continue;
 		}
-
-		trace_hardirqs_on();
 #endif
 
 		kvm_guest_enter();
-- 
1.7.10.4



^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH 6/8] kvm/ppc: IRQ disabling cleanup
  2013-06-07  0:16 ` Scott Wood
@ 2013-06-07  0:16   ` Scott Wood
  -1 siblings, 0 replies; 34+ messages in thread
From: Scott Wood @ 2013-06-07  0:16 UTC (permalink / raw)
  To: Alexander Graf, Gleb Natapov, Paolo Bonzini
  Cc: Mihai Caraman, kvm-ppc, kvm, Scott Wood

Simplify the handling of lazy EE by going directly from fully-enabled
to hard-disabled.  This replaces the lazy_irq_pending() check
(including its misplaced kvm_guest_exit() call).

As suggested by Tiejun Chen, move the interrupt disabling into
kvmppc_prepare_to_enter() rather than have each caller do it.  Also
move the IRQ enabling on heavyweight exit into
kvmppc_prepare_to_enter().

Signed-off-by: Scott Wood <scottwood@freescale.com>
---
 arch/powerpc/include/asm/kvm_ppc.h |    6 ++++++
 arch/powerpc/kvm/book3s_pr.c       |   12 +++---------
 arch/powerpc/kvm/booke.c           |   11 +++--------
 arch/powerpc/kvm/powerpc.c         |   23 ++++++++++-------------
 4 files changed, 22 insertions(+), 30 deletions(-)

diff --git a/arch/powerpc/include/asm/kvm_ppc.h b/arch/powerpc/include/asm/kvm_ppc.h
index 6885846..e4474f8 100644
--- a/arch/powerpc/include/asm/kvm_ppc.h
+++ b/arch/powerpc/include/asm/kvm_ppc.h
@@ -404,6 +404,12 @@ static inline void kvmppc_fix_ee_before_entry(void)
 	trace_hardirqs_on();
 
 #ifdef CONFIG_PPC64
+	/*
+	 * To avoid races, the caller must have gone directly from having
+	 * interrupts fully-enabled to hard-disabled.
+	 */
+	WARN_ON(local_paca->irq_happened != PACA_IRQ_HARD_DIS);
+
 	/* Only need to enable IRQs by hard enabling them after this */
 	local_paca->irq_happened = 0;
 	local_paca->soft_enabled = 1;
diff --git a/arch/powerpc/kvm/book3s_pr.c b/arch/powerpc/kvm/book3s_pr.c
index 0b97ce4..e61e39e 100644
--- a/arch/powerpc/kvm/book3s_pr.c
+++ b/arch/powerpc/kvm/book3s_pr.c
@@ -884,14 +884,11 @@ program_interrupt:
 		 * and if we really did time things so badly, then we just exit
 		 * again due to a host external interrupt.
 		 */
-		local_irq_disable();
 		s = kvmppc_prepare_to_enter(vcpu);
-		if (s <= 0) {
-			local_irq_enable();
+		if (s <= 0)
 			r = s;
-		} else {
+		else
 			kvmppc_fix_ee_before_entry();
-		}
 	}
 
 	trace_kvm_book3s_reenter(r, vcpu);
@@ -1121,12 +1118,9 @@ int kvmppc_vcpu_run(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu)
 	 * really did time things so badly, then we just exit again due to
 	 * a host external interrupt.
 	 */
-	local_irq_disable();
 	ret = kvmppc_prepare_to_enter(vcpu);
-	if (ret <= 0) {
-		local_irq_enable();
+	if (ret <= 0)
 		goto out;
-	}
 
 	/* Save FPU state in stack */
 	if (current->thread.regs->msr & MSR_FP)
diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c
index 08f4aa1..c5270a3 100644
--- a/arch/powerpc/kvm/booke.c
+++ b/arch/powerpc/kvm/booke.c
@@ -617,7 +617,7 @@ int kvmppc_core_prepare_to_enter(struct kvm_vcpu *vcpu)
 		local_irq_enable();
 		kvm_vcpu_block(vcpu);
 		clear_bit(KVM_REQ_UNHALT, &vcpu->requests);
-		local_irq_disable();
+		hard_irq_disable();
 
 		kvmppc_set_exit_type(vcpu, EMULATED_MTMSRWE_EXITS);
 		r = 1;
@@ -666,10 +666,8 @@ int kvmppc_vcpu_run(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu)
 		return -EINVAL;
 	}
 
-	local_irq_disable();
 	s = kvmppc_prepare_to_enter(vcpu);
 	if (s <= 0) {
-		local_irq_enable();
 		ret = s;
 		goto out;
 	}
@@ -1161,14 +1159,11 @@ int kvmppc_handle_exit(struct kvm_run *run, struct kvm_vcpu *vcpu,
 	 * aren't already exiting to userspace for some other reason.
 	 */
 	if (!(r & RESUME_HOST)) {
-		local_irq_disable();
 		s = kvmppc_prepare_to_enter(vcpu);
-		if (s <= 0) {
-			local_irq_enable();
+		if (s <= 0)
 			r = (s << 2) | RESUME_HOST | (r & RESUME_FLAG_NV);
-		} else {
+		else
 			kvmppc_fix_ee_before_entry();
-		}
 	}
 
 	return r;
diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c
index 4e05f8c..2f7a221 100644
--- a/arch/powerpc/kvm/powerpc.c
+++ b/arch/powerpc/kvm/powerpc.c
@@ -64,12 +64,14 @@ int kvmppc_prepare_to_enter(struct kvm_vcpu *vcpu)
 {
 	int r = 1;
 
-	WARN_ON_ONCE(!irqs_disabled());
+	WARN_ON(irqs_disabled());
+	hard_irq_disable();
+
 	while (true) {
 		if (need_resched()) {
 			local_irq_enable();
 			cond_resched();
-			local_irq_disable();
+			hard_irq_disable();
 			continue;
 		}
 
@@ -95,7 +97,7 @@ int kvmppc_prepare_to_enter(struct kvm_vcpu *vcpu)
 			local_irq_enable();
 			trace_kvm_check_requests(vcpu);
 			r = kvmppc_core_check_requests(vcpu);
-			local_irq_disable();
+			hard_irq_disable();
 			if (r > 0)
 				continue;
 			break;
@@ -108,21 +110,16 @@ int kvmppc_prepare_to_enter(struct kvm_vcpu *vcpu)
 		}
 
 #ifdef CONFIG_PPC64
-		/* lazy EE magic */
-		hard_irq_disable();
-		if (lazy_irq_pending()) {
-			/* Got an interrupt in between, try again */
-			local_irq_enable();
-			local_irq_disable();
-			kvm_guest_exit();
-			continue;
-		}
+		WARN_ON(lazy_irq_pending());
 #endif
+		/* Can't use irqs_disabled() because we want hard irq state */
+		WARN_ON(mfmsr() & MSR_EE);
 
 		kvm_guest_enter();
-		break;
+		return r;
 	}
 
+	local_irq_enable();
 	return r;
 }
 #endif /* CONFIG_KVM_BOOK3S_64_HV */
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH 6/8] kvm/ppc: IRQ disabling cleanup
@ 2013-06-07  0:16   ` Scott Wood
  0 siblings, 0 replies; 34+ messages in thread
From: Scott Wood @ 2013-06-07  0:16 UTC (permalink / raw)
  To: Alexander Graf, Gleb Natapov, Paolo Bonzini
  Cc: Mihai Caraman, kvm-ppc, kvm, Scott Wood

Simplify the handling of lazy EE by going directly from fully-enabled
to hard-disabled.  This replaces the lazy_irq_pending() check
(including its misplaced kvm_guest_exit() call).

As suggested by Tiejun Chen, move the interrupt disabling into
kvmppc_prepare_to_enter() rather than have each caller do it.  Also
move the IRQ enabling on heavyweight exit into
kvmppc_prepare_to_enter().

Signed-off-by: Scott Wood <scottwood@freescale.com>
---
 arch/powerpc/include/asm/kvm_ppc.h |    6 ++++++
 arch/powerpc/kvm/book3s_pr.c       |   12 +++---------
 arch/powerpc/kvm/booke.c           |   11 +++--------
 arch/powerpc/kvm/powerpc.c         |   23 ++++++++++-------------
 4 files changed, 22 insertions(+), 30 deletions(-)

diff --git a/arch/powerpc/include/asm/kvm_ppc.h b/arch/powerpc/include/asm/kvm_ppc.h
index 6885846..e4474f8 100644
--- a/arch/powerpc/include/asm/kvm_ppc.h
+++ b/arch/powerpc/include/asm/kvm_ppc.h
@@ -404,6 +404,12 @@ static inline void kvmppc_fix_ee_before_entry(void)
 	trace_hardirqs_on();
 
 #ifdef CONFIG_PPC64
+	/*
+	 * To avoid races, the caller must have gone directly from having
+	 * interrupts fully-enabled to hard-disabled.
+	 */
+	WARN_ON(local_paca->irq_happened != PACA_IRQ_HARD_DIS);
+
 	/* Only need to enable IRQs by hard enabling them after this */
 	local_paca->irq_happened = 0;
 	local_paca->soft_enabled = 1;
diff --git a/arch/powerpc/kvm/book3s_pr.c b/arch/powerpc/kvm/book3s_pr.c
index 0b97ce4..e61e39e 100644
--- a/arch/powerpc/kvm/book3s_pr.c
+++ b/arch/powerpc/kvm/book3s_pr.c
@@ -884,14 +884,11 @@ program_interrupt:
 		 * and if we really did time things so badly, then we just exit
 		 * again due to a host external interrupt.
 		 */
-		local_irq_disable();
 		s = kvmppc_prepare_to_enter(vcpu);
-		if (s <= 0) {
-			local_irq_enable();
+		if (s <= 0)
 			r = s;
-		} else {
+		else
 			kvmppc_fix_ee_before_entry();
-		}
 	}
 
 	trace_kvm_book3s_reenter(r, vcpu);
@@ -1121,12 +1118,9 @@ int kvmppc_vcpu_run(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu)
 	 * really did time things so badly, then we just exit again due to
 	 * a host external interrupt.
 	 */
-	local_irq_disable();
 	ret = kvmppc_prepare_to_enter(vcpu);
-	if (ret <= 0) {
-		local_irq_enable();
+	if (ret <= 0)
 		goto out;
-	}
 
 	/* Save FPU state in stack */
 	if (current->thread.regs->msr & MSR_FP)
diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c
index 08f4aa1..c5270a3 100644
--- a/arch/powerpc/kvm/booke.c
+++ b/arch/powerpc/kvm/booke.c
@@ -617,7 +617,7 @@ int kvmppc_core_prepare_to_enter(struct kvm_vcpu *vcpu)
 		local_irq_enable();
 		kvm_vcpu_block(vcpu);
 		clear_bit(KVM_REQ_UNHALT, &vcpu->requests);
-		local_irq_disable();
+		hard_irq_disable();
 
 		kvmppc_set_exit_type(vcpu, EMULATED_MTMSRWE_EXITS);
 		r = 1;
@@ -666,10 +666,8 @@ int kvmppc_vcpu_run(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu)
 		return -EINVAL;
 	}
 
-	local_irq_disable();
 	s = kvmppc_prepare_to_enter(vcpu);
 	if (s <= 0) {
-		local_irq_enable();
 		ret = s;
 		goto out;
 	}
@@ -1161,14 +1159,11 @@ int kvmppc_handle_exit(struct kvm_run *run, struct kvm_vcpu *vcpu,
 	 * aren't already exiting to userspace for some other reason.
 	 */
 	if (!(r & RESUME_HOST)) {
-		local_irq_disable();
 		s = kvmppc_prepare_to_enter(vcpu);
-		if (s <= 0) {
-			local_irq_enable();
+		if (s <= 0)
 			r = (s << 2) | RESUME_HOST | (r & RESUME_FLAG_NV);
-		} else {
+		else
 			kvmppc_fix_ee_before_entry();
-		}
 	}
 
 	return r;
diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c
index 4e05f8c..2f7a221 100644
--- a/arch/powerpc/kvm/powerpc.c
+++ b/arch/powerpc/kvm/powerpc.c
@@ -64,12 +64,14 @@ int kvmppc_prepare_to_enter(struct kvm_vcpu *vcpu)
 {
 	int r = 1;
 
-	WARN_ON_ONCE(!irqs_disabled());
+	WARN_ON(irqs_disabled());
+	hard_irq_disable();
+
 	while (true) {
 		if (need_resched()) {
 			local_irq_enable();
 			cond_resched();
-			local_irq_disable();
+			hard_irq_disable();
 			continue;
 		}
 
@@ -95,7 +97,7 @@ int kvmppc_prepare_to_enter(struct kvm_vcpu *vcpu)
 			local_irq_enable();
 			trace_kvm_check_requests(vcpu);
 			r = kvmppc_core_check_requests(vcpu);
-			local_irq_disable();
+			hard_irq_disable();
 			if (r > 0)
 				continue;
 			break;
@@ -108,21 +110,16 @@ int kvmppc_prepare_to_enter(struct kvm_vcpu *vcpu)
 		}
 
 #ifdef CONFIG_PPC64
-		/* lazy EE magic */
-		hard_irq_disable();
-		if (lazy_irq_pending()) {
-			/* Got an interrupt in between, try again */
-			local_irq_enable();
-			local_irq_disable();
-			kvm_guest_exit();
-			continue;
-		}
+		WARN_ON(lazy_irq_pending());
 #endif
+		/* Can't use irqs_disabled() because we want hard irq state */
+		WARN_ON(mfmsr() & MSR_EE);
 
 		kvm_guest_enter();
-		break;
+		return r;
 	}
 
+	local_irq_enable();
 	return r;
 }
 #endif /* CONFIG_KVM_BOOK3S_64_HV */
-- 
1.7.10.4



^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH 7/8] kvm/ppc/booke: Delay kvmppc_fix_ee_before_entry
  2013-06-07  0:16 ` Scott Wood
@ 2013-06-07  0:16   ` Scott Wood
  -1 siblings, 0 replies; 34+ messages in thread
From: Scott Wood @ 2013-06-07  0:16 UTC (permalink / raw)
  To: Alexander Graf, Gleb Natapov, Paolo Bonzini
  Cc: Mihai Caraman, kvm-ppc, kvm, Scott Wood

kwmppc_fix_ee_before_entry() should be called as late as possible,
or else we get things like WARN_ON(preemptible()) in enable_kernel_fp()
in configurations where preemptible() works.

Note that book3s_pr already waits until just before __kvmppc_vcpu_run
to call kvmppc_fix_ee_before_entry().

Signed-off-by: Scott Wood <scottwood@freescale.com>
---
 arch/powerpc/kvm/booke.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c
index c5270a3..f953324 100644
--- a/arch/powerpc/kvm/booke.c
+++ b/arch/powerpc/kvm/booke.c
@@ -671,7 +671,6 @@ int kvmppc_vcpu_run(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu)
 		ret = s;
 		goto out;
 	}
-	kvmppc_fix_ee_before_entry();
 
 	kvm_guest_enter();
 
@@ -697,6 +696,8 @@ int kvmppc_vcpu_run(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu)
 	kvmppc_load_guest_fp(vcpu);
 #endif
 
+	kvmppc_fix_ee_before_entry();
+
 	ret = __kvmppc_vcpu_run(kvm_run, vcpu);
 
 	/* No need for kvm_guest_exit. It's done in handle_exit.
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH 7/8] kvm/ppc/booke: Delay kvmppc_fix_ee_before_entry
@ 2013-06-07  0:16   ` Scott Wood
  0 siblings, 0 replies; 34+ messages in thread
From: Scott Wood @ 2013-06-07  0:16 UTC (permalink / raw)
  To: Alexander Graf, Gleb Natapov, Paolo Bonzini
  Cc: Mihai Caraman, kvm-ppc, kvm, Scott Wood

kwmppc_fix_ee_before_entry() should be called as late as possible,
or else we get things like WARN_ON(preemptible()) in enable_kernel_fp()
in configurations where preemptible() works.

Note that book3s_pr already waits until just before __kvmppc_vcpu_run
to call kvmppc_fix_ee_before_entry().

Signed-off-by: Scott Wood <scottwood@freescale.com>
---
 arch/powerpc/kvm/booke.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c
index c5270a3..f953324 100644
--- a/arch/powerpc/kvm/booke.c
+++ b/arch/powerpc/kvm/booke.c
@@ -671,7 +671,6 @@ int kvmppc_vcpu_run(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu)
 		ret = s;
 		goto out;
 	}
-	kvmppc_fix_ee_before_entry();
 
 	kvm_guest_enter();
 
@@ -697,6 +696,8 @@ int kvmppc_vcpu_run(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu)
 	kvmppc_load_guest_fp(vcpu);
 #endif
 
+	kvmppc_fix_ee_before_entry();
+
 	ret = __kvmppc_vcpu_run(kvm_run, vcpu);
 
 	/* No need for kvm_guest_exit. It's done in handle_exit.
-- 
1.7.10.4



^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH 8/8] kvm/ppc/booke: Don't call kvm_guest_enter twice
  2013-06-07  0:16 ` Scott Wood
@ 2013-06-07  0:16   ` Scott Wood
  -1 siblings, 0 replies; 34+ messages in thread
From: Scott Wood @ 2013-06-07  0:16 UTC (permalink / raw)
  To: Alexander Graf, Gleb Natapov, Paolo Bonzini
  Cc: Mihai Caraman, kvm-ppc, kvm, Scott Wood

kvm_guest_enter() was already called by kvmppc_prepare_to_enter().
Don't call it again.

Signed-off-by: Scott Wood <scottwood@freescale.com>
---
 arch/powerpc/kvm/booke.c |    2 --
 1 file changed, 2 deletions(-)

diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c
index f953324..0b4d792 100644
--- a/arch/powerpc/kvm/booke.c
+++ b/arch/powerpc/kvm/booke.c
@@ -672,8 +672,6 @@ int kvmppc_vcpu_run(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu)
 		goto out;
 	}
 
-	kvm_guest_enter();
-
 #ifdef CONFIG_PPC_FPU
 	/* Save userspace FPU state in stack */
 	enable_kernel_fp();
-- 
1.7.10.4



^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH 8/8] kvm/ppc/booke: Don't call kvm_guest_enter twice
@ 2013-06-07  0:16   ` Scott Wood
  0 siblings, 0 replies; 34+ messages in thread
From: Scott Wood @ 2013-06-07  0:16 UTC (permalink / raw)
  To: Alexander Graf, Gleb Natapov, Paolo Bonzini
  Cc: Mihai Caraman, kvm-ppc, kvm, Scott Wood

kvm_guest_enter() was already called by kvmppc_prepare_to_enter().
Don't call it again.

Signed-off-by: Scott Wood <scottwood@freescale.com>
---
 arch/powerpc/kvm/booke.c |    2 --
 1 file changed, 2 deletions(-)

diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c
index f953324..0b4d792 100644
--- a/arch/powerpc/kvm/booke.c
+++ b/arch/powerpc/kvm/booke.c
@@ -672,8 +672,6 @@ int kvmppc_vcpu_run(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu)
 		goto out;
 	}
 
-	kvm_guest_enter();
-
 #ifdef CONFIG_PPC_FPU
 	/* Save userspace FPU state in stack */
 	enable_kernel_fp();
-- 
1.7.10.4



^ permalink raw reply related	[flat|nested] 34+ messages in thread

* Re: [PATCH 0/8] kvm/ppc: fixes for 3.10
  2013-06-07  0:16 ` Scott Wood
@ 2013-06-09  8:09   ` Gleb Natapov
  -1 siblings, 0 replies; 34+ messages in thread
From: Gleb Natapov @ 2013-06-09  8:09 UTC (permalink / raw)
  To: Scott Wood; +Cc: Alexander Graf, Paolo Bonzini, Mihai Caraman, kvm-ppc, kvm

On Thu, Jun 06, 2013 at 07:16:28PM -0500, Scott Wood wrote:
> Most of these have been posted before, but I grouped them together as
> there are some contextual dependencies between them.
> 
> Gleb/Paolo: As Alex doesn't appear to be back yet, can you apply these
> if there's no objection over the next few days?
> 
Well we are at -rc5 now and Linus specifically said that if he sees one
more "cleanup" he will be less then happy [1]. Looks like this patch
series does have some cleanups that can be postponed to 3.11.
Patches 1-4,7 looks like 3.10 material to me. 5 and 6 a cleanups that can
wait for 3.11. Not sure about 8, if 8 fixes serious problem please
specify it in the commit message.

[1] http://www.mail-archive.com/linux-kernel@vger.kernel.org/msg448395.html

> Mihai Caraman (1):
>   kvm/ppc/booke64: Fix AltiVec interrupt numbers and build breakage
> 
> Scott Wood (7):
>   kvm/ppc/booke64: Disable e6500 support
>   kvm/ppc/booke: Hold srcu lock when calling gfn functions
>   kvm/ppc/booke64: Fix lazy ee handling in kvmppc_handle_exit()
>   kvm/ppc: Call trace_hardirqs_on before entry
>   kvm/ppc: IRQ disabling cleanup
>   kvm/ppc/booke: Delay kvmppc_fix_ee_before_entry
>   kvm/ppc/booke: Don't call kvm_guest_enter twice
> 
>  arch/powerpc/include/asm/kvm_asm.h |   16 ++++++++++------
>  arch/powerpc/include/asm/kvm_ppc.h |   17 ++++++++++++++---
>  arch/powerpc/kvm/44x_tlb.c         |    5 +++++
>  arch/powerpc/kvm/book3s_pr.c       |   16 +++++-----------
>  arch/powerpc/kvm/booke.c           |   36 ++++++++++++++++++++++++------------
>  arch/powerpc/kvm/e500_mmu.c        |    5 +++++
>  arch/powerpc/kvm/e500mc.c          |    2 --
>  arch/powerpc/kvm/powerpc.c         |   25 ++++++++++---------------
>  8 files changed, 73 insertions(+), 49 deletions(-)
> 
> -- 
> 1.7.10.4
> 

--
			Gleb.

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH 0/8] kvm/ppc: fixes for 3.10
@ 2013-06-09  8:09   ` Gleb Natapov
  0 siblings, 0 replies; 34+ messages in thread
From: Gleb Natapov @ 2013-06-09  8:09 UTC (permalink / raw)
  To: Scott Wood; +Cc: Alexander Graf, Paolo Bonzini, Mihai Caraman, kvm-ppc, kvm

On Thu, Jun 06, 2013 at 07:16:28PM -0500, Scott Wood wrote:
> Most of these have been posted before, but I grouped them together as
> there are some contextual dependencies between them.
> 
> Gleb/Paolo: As Alex doesn't appear to be back yet, can you apply these
> if there's no objection over the next few days?
> 
Well we are at -rc5 now and Linus specifically said that if he sees one
more "cleanup" he will be less then happy [1]. Looks like this patch
series does have some cleanups that can be postponed to 3.11.
Patches 1-4,7 looks like 3.10 material to me. 5 and 6 a cleanups that can
wait for 3.11. Not sure about 8, if 8 fixes serious problem please
specify it in the commit message.

[1] http://www.mail-archive.com/linux-kernel@vger.kernel.org/msg448395.html

> Mihai Caraman (1):
>   kvm/ppc/booke64: Fix AltiVec interrupt numbers and build breakage
> 
> Scott Wood (7):
>   kvm/ppc/booke64: Disable e6500 support
>   kvm/ppc/booke: Hold srcu lock when calling gfn functions
>   kvm/ppc/booke64: Fix lazy ee handling in kvmppc_handle_exit()
>   kvm/ppc: Call trace_hardirqs_on before entry
>   kvm/ppc: IRQ disabling cleanup
>   kvm/ppc/booke: Delay kvmppc_fix_ee_before_entry
>   kvm/ppc/booke: Don't call kvm_guest_enter twice
> 
>  arch/powerpc/include/asm/kvm_asm.h |   16 ++++++++++------
>  arch/powerpc/include/asm/kvm_ppc.h |   17 ++++++++++++++---
>  arch/powerpc/kvm/44x_tlb.c         |    5 +++++
>  arch/powerpc/kvm/book3s_pr.c       |   16 +++++-----------
>  arch/powerpc/kvm/booke.c           |   36 ++++++++++++++++++++++++------------
>  arch/powerpc/kvm/e500_mmu.c        |    5 +++++
>  arch/powerpc/kvm/e500mc.c          |    2 --
>  arch/powerpc/kvm/powerpc.c         |   25 ++++++++++---------------
>  8 files changed, 73 insertions(+), 49 deletions(-)
> 
> -- 
> 1.7.10.4
> 

--
			Gleb.

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH 0/8] kvm/ppc: fixes for 3.10
  2013-06-09  8:09   ` Gleb Natapov
@ 2013-06-10 19:52     ` Scott Wood
  -1 siblings, 0 replies; 34+ messages in thread
From: Scott Wood @ 2013-06-10 19:52 UTC (permalink / raw)
  To: Gleb Natapov; +Cc: Alexander Graf, Paolo Bonzini, Mihai Caraman, kvm-ppc, kvm

On 06/09/2013 03:09:21 AM, Gleb Natapov wrote:
> On Thu, Jun 06, 2013 at 07:16:28PM -0500, Scott Wood wrote:
> > Most of these have been posted before, but I grouped them together  
> as
> > there are some contextual dependencies between them.
> >
> > Gleb/Paolo: As Alex doesn't appear to be back yet, can you apply  
> these
> > if there's no objection over the next few days?
> >
> Well we are at -rc5 now and Linus specifically said that if he sees  
> one
> more "cleanup" he will be less then happy [1]. Looks like this patch
> series does have some cleanups that can be postponed to 3.11.
> Patches 1-4,7 looks like 3.10 material to me. 5 and 6 a cleanups that  
> can
> wait for 3.11. Not sure about 8, if 8 fixes serious problem please
> specify it in the commit message.

Agreed.

8 did fix a BUG_ON before patch 7 came along, but now it looks  
non-critical.

5 only affects IRQ tracing, and it's not a regression, so also probably  
not critical.  I'll resend patch 7 so that it applies without needing  
patch 5.

6 is mainly doing things that we originally thought were a fix to lazy  
ee handling, until we noticed code elsewhere handling it in a hackier  
way.  There's still a bugfix in that previously kvm_guest_exit() was  
called in the wrong place which could occasionally mess up virtual time  
accounting, but that's also not a regression and not critical.

-Scott

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH 0/8] kvm/ppc: fixes for 3.10
@ 2013-06-10 19:52     ` Scott Wood
  0 siblings, 0 replies; 34+ messages in thread
From: Scott Wood @ 2013-06-10 19:52 UTC (permalink / raw)
  To: Gleb Natapov; +Cc: Alexander Graf, Paolo Bonzini, Mihai Caraman, kvm-ppc, kvm

On 06/09/2013 03:09:21 AM, Gleb Natapov wrote:
> On Thu, Jun 06, 2013 at 07:16:28PM -0500, Scott Wood wrote:
> > Most of these have been posted before, but I grouped them together  
> as
> > there are some contextual dependencies between them.
> >
> > Gleb/Paolo: As Alex doesn't appear to be back yet, can you apply  
> these
> > if there's no objection over the next few days?
> >
> Well we are at -rc5 now and Linus specifically said that if he sees  
> one
> more "cleanup" he will be less then happy [1]. Looks like this patch
> series does have some cleanups that can be postponed to 3.11.
> Patches 1-4,7 looks like 3.10 material to me. 5 and 6 a cleanups that  
> can
> wait for 3.11. Not sure about 8, if 8 fixes serious problem please
> specify it in the commit message.

Agreed.

8 did fix a BUG_ON before patch 7 came along, but now it looks  
non-critical.

5 only affects IRQ tracing, and it's not a regression, so also probably  
not critical.  I'll resend patch 7 so that it applies without needing  
patch 5.

6 is mainly doing things that we originally thought were a fix to lazy  
ee handling, until we noticed code elsewhere handling it in a hackier  
way.  There's still a bugfix in that previously kvm_guest_exit() was  
called in the wrong place which could occasionally mess up virtual time  
accounting, but that's also not a regression and not critical.

-Scott

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH 0/8] kvm/ppc: fixes for 3.10
  2013-06-10 19:52     ` Scott Wood
@ 2013-06-17 15:27       ` Paolo Bonzini
  -1 siblings, 0 replies; 34+ messages in thread
From: Paolo Bonzini @ 2013-06-17 15:27 UTC (permalink / raw)
  To: Scott Wood; +Cc: Gleb Natapov, Alexander Graf, Mihai Caraman, kvm-ppc, kvm

Il 10/06/2013 21:52, Scott Wood ha scritto:
> On 06/09/2013 03:09:21 AM, Gleb Natapov wrote:
>> On Thu, Jun 06, 2013 at 07:16:28PM -0500, Scott Wood wrote:
>> > Most of these have been posted before, but I grouped them together as
>> > there are some contextual dependencies between them.
>> >
>> > Gleb/Paolo: As Alex doesn't appear to be back yet, can you apply these
>> > if there's no objection over the next few days?
>> >
>> Well we are at -rc5 now and Linus specifically said that if he sees one
>> more "cleanup" he will be less then happy [1]. Looks like this patch
>> series does have some cleanups that can be postponed to 3.11.
>> Patches 1-4,7 looks like 3.10 material to me. 5 and 6 a cleanups that can
>> wait for 3.11. Not sure about 8, if 8 fixes serious problem please
>> specify it in the commit message.
> 
> Agreed.
> 
> 8 did fix a BUG_ON before patch 7 came along, but now it looks
> non-critical.
> 
> 5 only affects IRQ tracing, and it's not a regression, so also probably
> not critical.  I'll resend patch 7 so that it applies without needing
> patch 5.
> 
> 6 is mainly doing things that we originally thought were a fix to lazy
> ee handling, until we noticed code elsewhere handling it in a hackier
> way.  There's still a bugfix in that previously kvm_guest_exit() was
> called in the wrong place which could occasionally mess up virtual time
> accounting, but that's also not a regression and not critical.

CCed people probably already know, but in any case patches 1-4 are
already in Linus's tree (commit af180b81).

Paolo

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH 0/8] kvm/ppc: fixes for 3.10
@ 2013-06-17 15:27       ` Paolo Bonzini
  0 siblings, 0 replies; 34+ messages in thread
From: Paolo Bonzini @ 2013-06-17 15:27 UTC (permalink / raw)
  To: Scott Wood; +Cc: Gleb Natapov, Alexander Graf, Mihai Caraman, kvm-ppc, kvm

Il 10/06/2013 21:52, Scott Wood ha scritto:
> On 06/09/2013 03:09:21 AM, Gleb Natapov wrote:
>> On Thu, Jun 06, 2013 at 07:16:28PM -0500, Scott Wood wrote:
>> > Most of these have been posted before, but I grouped them together as
>> > there are some contextual dependencies between them.
>> >
>> > Gleb/Paolo: As Alex doesn't appear to be back yet, can you apply these
>> > if there's no objection over the next few days?
>> >
>> Well we are at -rc5 now and Linus specifically said that if he sees one
>> more "cleanup" he will be less then happy [1]. Looks like this patch
>> series does have some cleanups that can be postponed to 3.11.
>> Patches 1-4,7 looks like 3.10 material to me. 5 and 6 a cleanups that can
>> wait for 3.11. Not sure about 8, if 8 fixes serious problem please
>> specify it in the commit message.
> 
> Agreed.
> 
> 8 did fix a BUG_ON before patch 7 came along, but now it looks
> non-critical.
> 
> 5 only affects IRQ tracing, and it's not a regression, so also probably
> not critical.  I'll resend patch 7 so that it applies without needing
> patch 5.
> 
> 6 is mainly doing things that we originally thought were a fix to lazy
> ee handling, until we noticed code elsewhere handling it in a hackier
> way.  There's still a bugfix in that previously kvm_guest_exit() was
> called in the wrong place which could occasionally mess up virtual time
> accounting, but that's also not a regression and not critical.

CCed people probably already know, but in any case patches 1-4 are
already in Linus's tree (commit af180b81).

Paolo

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH 0/8] kvm/ppc: fixes for 3.10
  2013-06-07  0:16 ` Scott Wood
@ 2013-07-09  7:21   ` tiejun.chen
  -1 siblings, 0 replies; 34+ messages in thread
From: tiejun.chen @ 2013-07-09  7:21 UTC (permalink / raw)
  To: Scott Wood
  Cc: Alexander Graf, Gleb Natapov, Paolo Bonzini, Mihai Caraman, kvm-ppc, kvm

On 06/07/2013 08:16 AM, Scott Wood wrote:
> Most of these have been posted before, but I grouped them together as
> there are some contextual dependencies between them.
>
> Gleb/Paolo: As Alex doesn't appear to be back yet, can you apply these
> if there's no objection over the next few days?

Scott and Alex,

Any plan to merge these commits into git://github.com/agraf/linux-2.6.git as well?

Or instead, where can we proceed to book3e KVM?

Tiejun

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH 0/8] kvm/ppc: fixes for 3.10
@ 2013-07-09  7:21   ` tiejun.chen
  0 siblings, 0 replies; 34+ messages in thread
From: tiejun.chen @ 2013-07-09  7:21 UTC (permalink / raw)
  To: Scott Wood
  Cc: Alexander Graf, Gleb Natapov, Paolo Bonzini, Mihai Caraman, kvm-ppc, kvm

On 06/07/2013 08:16 AM, Scott Wood wrote:
> Most of these have been posted before, but I grouped them together as
> there are some contextual dependencies between them.
>
> Gleb/Paolo: As Alex doesn't appear to be back yet, can you apply these
> if there's no objection over the next few days?

Scott and Alex,

Any plan to merge these commits into git://github.com/agraf/linux-2.6.git as well?

Or instead, where can we proceed to book3e KVM?

Tiejun

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH 0/8] kvm/ppc: fixes for 3.10
  2013-07-09  7:21   ` tiejun.chen
@ 2013-07-09  8:53     ` Alexander Graf
  -1 siblings, 0 replies; 34+ messages in thread
From: Alexander Graf @ 2013-07-09  8:53 UTC (permalink / raw)
  To: tiejun.chen
  Cc: Scott Wood, Gleb Natapov, Paolo Bonzini, Mihai Caraman,
	<kvm-ppc@vger.kernel.org>, <kvm@vger.kernel.org>



Am 09.07.2013 um 09:21 schrieb "tiejun.chen" <tiejun.chen@windriver.com>:

> On 06/07/2013 08:16 AM, Scott Wood wrote:
>> Most of these have been posted before, but I grouped them together as
>> there are some contextual dependencies between them.
>> 
>> Gleb/Paolo: As Alex doesn't appear to be back yet, can you apply these
>> if there's no objection over the next few days?
> 
> Scott and Alex,
> 
> Any plan to merge these commits into git://github.com/agraf/linux-2.6.git as well?

Which commits exactly are you missing there?

Alex

> 
> Or instead, where can we proceed to book3e KVM?
> 
> Tiejun

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH 0/8] kvm/ppc: fixes for 3.10
@ 2013-07-09  8:53     ` Alexander Graf
  0 siblings, 0 replies; 34+ messages in thread
From: Alexander Graf @ 2013-07-09  8:53 UTC (permalink / raw)
  To: tiejun.chen
  Cc: Scott Wood, Gleb Natapov, Paolo Bonzini, Mihai Caraman,
	<kvm-ppc@vger.kernel.org>, <kvm@vger.kernel.org>



Am 09.07.2013 um 09:21 schrieb "tiejun.chen" <tiejun.chen@windriver.com>:

> On 06/07/2013 08:16 AM, Scott Wood wrote:
>> Most of these have been posted before, but I grouped them together as
>> there are some contextual dependencies between them.
>> 
>> Gleb/Paolo: As Alex doesn't appear to be back yet, can you apply these
>> if there's no objection over the next few days?
> 
> Scott and Alex,
> 
> Any plan to merge these commits into git://github.com/agraf/linux-2.6.git as well?

Which commits exactly are you missing there?

Alex

> 
> Or instead, where can we proceed to book3e KVM?
> 
> Tiejun

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH 0/8] kvm/ppc: fixes for 3.10
  2013-07-09  8:53     ` Alexander Graf
@ 2013-07-09  9:09       ` tiejun.chen
  -1 siblings, 0 replies; 34+ messages in thread
From: tiejun.chen @ 2013-07-09  9:09 UTC (permalink / raw)
  To: Alexander Graf
  Cc: Scott Wood, Gleb Natapov, Paolo Bonzini, Mihai Caraman,
	<kvm-ppc@vger.kernel.org>, <kvm@vger.kernel.org>

On 07/09/2013 04:53 PM, Alexander Graf wrote:
>
>
> Am 09.07.2013 um 09:21 schrieb "tiejun.chen" <tiejun.chen@windriver.com>:
>
>> On 06/07/2013 08:16 AM, Scott Wood wrote:
>>> Most of these have been posted before, but I grouped them together as
>>> there are some contextual dependencies between them.
>>>
>>> Gleb/Paolo: As Alex doesn't appear to be back yet, can you apply these
>>> if there's no objection over the next few days?
>>
>> Scott and Alex,
>>
>> Any plan to merge these commits into git://github.com/agraf/linux-2.6.git as well?
>
> Which commits exactly are you missing there?

Alex,

Four patches,

kvm/ppc/booke: Delay kvmppc_lazy_ee_enable
kvm/ppc/booke64: Fix lazy ee handling in kvmppc_handle_exit()
kvm/ppc/booke: Hold srcu lock when calling gfn functions
kvm/ppc/booke64: Disable e6500 support	

are already in Linus's tree,

https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/log/?qt=author&q=Scott+Wood

So should we sync these commits into your tree?

Tiejun

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH 0/8] kvm/ppc: fixes for 3.10
@ 2013-07-09  9:09       ` tiejun.chen
  0 siblings, 0 replies; 34+ messages in thread
From: tiejun.chen @ 2013-07-09  9:09 UTC (permalink / raw)
  To: Alexander Graf
  Cc: Scott Wood, Gleb Natapov, Paolo Bonzini, Mihai Caraman,
	<kvm-ppc@vger.kernel.org>, <kvm@vger.kernel.org>

On 07/09/2013 04:53 PM, Alexander Graf wrote:
>
>
> Am 09.07.2013 um 09:21 schrieb "tiejun.chen" <tiejun.chen@windriver.com>:
>
>> On 06/07/2013 08:16 AM, Scott Wood wrote:
>>> Most of these have been posted before, but I grouped them together as
>>> there are some contextual dependencies between them.
>>>
>>> Gleb/Paolo: As Alex doesn't appear to be back yet, can you apply these
>>> if there's no objection over the next few days?
>>
>> Scott and Alex,
>>
>> Any plan to merge these commits into git://github.com/agraf/linux-2.6.git as well?
>
> Which commits exactly are you missing there?

Alex,

Four patches,

kvm/ppc/booke: Delay kvmppc_lazy_ee_enable
kvm/ppc/booke64: Fix lazy ee handling in kvmppc_handle_exit()
kvm/ppc/booke: Hold srcu lock when calling gfn functions
kvm/ppc/booke64: Disable e6500 support	

are already in Linus's tree,

https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/log/?qt=author&q=Scott+Wood

So should we sync these commits into your tree?

Tiejun

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH 0/8] kvm/ppc: fixes for 3.10
  2013-07-09  9:09       ` tiejun.chen
@ 2013-07-09 21:33         ` Alexander Graf
  -1 siblings, 0 replies; 34+ messages in thread
From: Alexander Graf @ 2013-07-09 21:33 UTC (permalink / raw)
  To: tiejun.chen
  Cc: Scott Wood, Gleb Natapov, Paolo Bonzini, Mihai Caraman,
	<kvm-ppc@vger.kernel.org>, <kvm@vger.kernel.org>


On 09.07.2013, at 11:09, tiejun.chen wrote:

> On 07/09/2013 04:53 PM, Alexander Graf wrote:
>> 
>> 
>> Am 09.07.2013 um 09:21 schrieb "tiejun.chen" <tiejun.chen@windriver.com>:
>> 
>>> On 06/07/2013 08:16 AM, Scott Wood wrote:
>>>> Most of these have been posted before, but I grouped them together as
>>>> there are some contextual dependencies between them.
>>>> 
>>>> Gleb/Paolo: As Alex doesn't appear to be back yet, can you apply these
>>>> if there's no objection over the next few days?
>>> 
>>> Scott and Alex,
>>> 
>>> Any plan to merge these commits into git://github.com/agraf/linux-2.6.git as well?
>> 
>> Which commits exactly are you missing there?
> 
> Alex,
> 
> Four patches,
> 
> kvm/ppc/booke: Delay kvmppc_lazy_ee_enable
> kvm/ppc/booke64: Fix lazy ee handling in kvmppc_handle_exit()
> kvm/ppc/booke: Hold srcu lock when calling gfn functions
> kvm/ppc/booke64: Disable e6500 support	
> 
> are already in Linus's tree,
> 
> https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/log/?qt=author&q=Scott+Wood
> 
> So should we sync these commits into your tree?

They should already be in there?


Alex

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH 0/8] kvm/ppc: fixes for 3.10
@ 2013-07-09 21:33         ` Alexander Graf
  0 siblings, 0 replies; 34+ messages in thread
From: Alexander Graf @ 2013-07-09 21:33 UTC (permalink / raw)
  To: tiejun.chen
  Cc: Scott Wood, Gleb Natapov, Paolo Bonzini, Mihai Caraman,
	<kvm-ppc@vger.kernel.org>, <kvm@vger.kernel.org>


On 09.07.2013, at 11:09, tiejun.chen wrote:

> On 07/09/2013 04:53 PM, Alexander Graf wrote:
>> 
>> 
>> Am 09.07.2013 um 09:21 schrieb "tiejun.chen" <tiejun.chen@windriver.com>:
>> 
>>> On 06/07/2013 08:16 AM, Scott Wood wrote:
>>>> Most of these have been posted before, but I grouped them together as
>>>> there are some contextual dependencies between them.
>>>> 
>>>> Gleb/Paolo: As Alex doesn't appear to be back yet, can you apply these
>>>> if there's no objection over the next few days?
>>> 
>>> Scott and Alex,
>>> 
>>> Any plan to merge these commits into git://github.com/agraf/linux-2.6.git as well?
>> 
>> Which commits exactly are you missing there?
> 
> Alex,
> 
> Four patches,
> 
> kvm/ppc/booke: Delay kvmppc_lazy_ee_enable
> kvm/ppc/booke64: Fix lazy ee handling in kvmppc_handle_exit()
> kvm/ppc/booke: Hold srcu lock when calling gfn functions
> kvm/ppc/booke64: Disable e6500 support	
> 
> are already in Linus's tree,
> 
> https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/log/?qt=author&q=Scott+Wood
> 
> So should we sync these commits into your tree?

They should already be in there?


Alex


^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH 0/8] kvm/ppc: fixes for 3.10
  2013-07-09 21:33         ` Alexander Graf
@ 2013-07-10  6:03           ` tiejun.chen
  -1 siblings, 0 replies; 34+ messages in thread
From: tiejun.chen @ 2013-07-10  6:03 UTC (permalink / raw)
  To: Alexander Graf
  Cc: Scott Wood, Gleb Natapov, Paolo Bonzini, Mihai Caraman,
	<kvm-ppc@vger.kernel.org>, <kvm@vger.kernel.org>

On 07/10/2013 05:33 AM, Alexander Graf wrote:
>
> On 09.07.2013, at 11:09, tiejun.chen wrote:
>
>> On 07/09/2013 04:53 PM, Alexander Graf wrote:
>>>
>>>
>>> Am 09.07.2013 um 09:21 schrieb "tiejun.chen" <tiejun.chen@windriver.com>:
>>>
>>>> On 06/07/2013 08:16 AM, Scott Wood wrote:
>>>>> Most of these have been posted before, but I grouped them together as
>>>>> there are some contextual dependencies between them.
>>>>>
>>>>> Gleb/Paolo: As Alex doesn't appear to be back yet, can you apply these
>>>>> if there's no objection over the next few days?
>>>>
>>>> Scott and Alex,
>>>>
>>>> Any plan to merge these commits into git://github.com/agraf/linux-2.6.git as well?
>>>
>>> Which commits exactly are you missing there?
>>
>> Alex,
>>
>> Four patches,
>>
>> kvm/ppc/booke: Delay kvmppc_lazy_ee_enable
>> kvm/ppc/booke64: Fix lazy ee handling in kvmppc_handle_exit()
>> kvm/ppc/booke: Hold srcu lock when calling gfn functions
>> kvm/ppc/booke64: Disable e6500 support	
>>
>> are already in Linus's tree,
>>
>> https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/log/?qt=author&q=Scott+Wood
>>
>> So should we sync these commits into your tree?
>
> They should already be in there?

Yes, I already see this.

Thanks,

Tiejun

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH 0/8] kvm/ppc: fixes for 3.10
@ 2013-07-10  6:03           ` tiejun.chen
  0 siblings, 0 replies; 34+ messages in thread
From: tiejun.chen @ 2013-07-10  6:03 UTC (permalink / raw)
  To: Alexander Graf
  Cc: Scott Wood, Gleb Natapov, Paolo Bonzini, Mihai Caraman,
	<kvm-ppc@vger.kernel.org>, <kvm@vger.kernel.org>

On 07/10/2013 05:33 AM, Alexander Graf wrote:
>
> On 09.07.2013, at 11:09, tiejun.chen wrote:
>
>> On 07/09/2013 04:53 PM, Alexander Graf wrote:
>>>
>>>
>>> Am 09.07.2013 um 09:21 schrieb "tiejun.chen" <tiejun.chen@windriver.com>:
>>>
>>>> On 06/07/2013 08:16 AM, Scott Wood wrote:
>>>>> Most of these have been posted before, but I grouped them together as
>>>>> there are some contextual dependencies between them.
>>>>>
>>>>> Gleb/Paolo: As Alex doesn't appear to be back yet, can you apply these
>>>>> if there's no objection over the next few days?
>>>>
>>>> Scott and Alex,
>>>>
>>>> Any plan to merge these commits into git://github.com/agraf/linux-2.6.git as well?
>>>
>>> Which commits exactly are you missing there?
>>
>> Alex,
>>
>> Four patches,
>>
>> kvm/ppc/booke: Delay kvmppc_lazy_ee_enable
>> kvm/ppc/booke64: Fix lazy ee handling in kvmppc_handle_exit()
>> kvm/ppc/booke: Hold srcu lock when calling gfn functions
>> kvm/ppc/booke64: Disable e6500 support	
>>
>> are already in Linus's tree,
>>
>> https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/log/?qt=author&q=Scott+Wood
>>
>> So should we sync these commits into your tree?
>
> They should already be in there?

Yes, I already see this.

Thanks,

Tiejun


^ permalink raw reply	[flat|nested] 34+ messages in thread

end of thread, other threads:[~2013-07-10  6:03 UTC | newest]

Thread overview: 34+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-06-07  0:16 [PATCH 0/8] kvm/ppc: fixes for 3.10 Scott Wood
2013-06-07  0:16 ` Scott Wood
2013-06-07  0:16 ` [PATCH 1/8] kvm/ppc/booke64: Fix AltiVec interrupt numbers and build breakage Scott Wood
2013-06-07  0:16   ` Scott Wood
2013-06-07  0:16 ` [PATCH 2/8] kvm/ppc/booke64: Disable e6500 support Scott Wood
2013-06-07  0:16   ` Scott Wood
2013-06-07  0:16 ` [PATCH 3/8] kvm/ppc/booke: Hold srcu lock when calling gfn functions Scott Wood
2013-06-07  0:16   ` Scott Wood
2013-06-07  0:16 ` [PATCH 4/8] kvm/ppc/booke64: Fix lazy ee handling in kvmppc_handle_exit() Scott Wood
2013-06-07  0:16   ` Scott Wood
2013-06-07  0:16 ` [PATCH 5/8] kvm/ppc: Call trace_hardirqs_on before entry Scott Wood
2013-06-07  0:16   ` Scott Wood
2013-06-07  0:16 ` [PATCH 6/8] kvm/ppc: IRQ disabling cleanup Scott Wood
2013-06-07  0:16   ` Scott Wood
2013-06-07  0:16 ` [PATCH 7/8] kvm/ppc/booke: Delay kvmppc_fix_ee_before_entry Scott Wood
2013-06-07  0:16   ` Scott Wood
2013-06-07  0:16 ` [PATCH 8/8] kvm/ppc/booke: Don't call kvm_guest_enter twice Scott Wood
2013-06-07  0:16   ` Scott Wood
2013-06-09  8:09 ` [PATCH 0/8] kvm/ppc: fixes for 3.10 Gleb Natapov
2013-06-09  8:09   ` Gleb Natapov
2013-06-10 19:52   ` Scott Wood
2013-06-10 19:52     ` Scott Wood
2013-06-17 15:27     ` Paolo Bonzini
2013-06-17 15:27       ` Paolo Bonzini
2013-07-09  7:21 ` tiejun.chen
2013-07-09  7:21   ` tiejun.chen
2013-07-09  8:53   ` Alexander Graf
2013-07-09  8:53     ` Alexander Graf
2013-07-09  9:09     ` tiejun.chen
2013-07-09  9:09       ` tiejun.chen
2013-07-09 21:33       ` Alexander Graf
2013-07-09 21:33         ` Alexander Graf
2013-07-10  6:03         ` tiejun.chen
2013-07-10  6:03           ` tiejun.chen

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.