Re: [PATCH] powerpc: book3s: kvm: Don't abuse host r2 in exit path

2013-12-18 Thread Alexander Graf

On 18.12.2013, at 08:35, Aneesh Kumar K.V aneesh.ku...@linux.vnet.ibm.com 
wrote:

 
 Hi Alex,
 
 Any update on this ? We need this to got into 3.13.

Thanks, applied to for-3.13.


Alex

___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev


Re: [PATCH] powerpc: book3s: kvm: Don't abuse host r2 in exit path

2013-12-17 Thread Aneesh Kumar K.V

Hi Alex,

Any update on this ? We need this to got into 3.13.

-aneesh 

Aneesh Kumar K.V aneesh.ku...@linux.vnet.ibm.com writes:

 From: Aneesh Kumar K.V aneesh.ku...@linux.vnet.ibm.com

 We don't use PACATOC for PR. Avoid updating HOST_R2 with PR
 KVM mode when both HV and PR are enabled in the kernel. Without this we
 get the below crash

 (qemu)
 Unable to handle kernel paging request for data at address 0x8310
 Faulting instruction address: 0xc001d5a4
 cpu 0x2: Vector: 300 (Data Access) at [c001dc53aef0]
 pc: c001d5a4: .vtime_delta.isra.1+0x34/0x1d0
 lr: c001d760: .vtime_account_system+0x20/0x60
 sp: c001dc53b170
msr: 80009032
dar: 8310
  dsisr: 4000
   current = 0xc001d76c62d0
   paca= 0xcfef1100   softe: 0irq_happened: 0x01
 pid   = 4472, comm = qemu-system-ppc
 enter ? for help
 [c001dc53b200] c001d760 .vtime_account_system+0x20/0x60
 [c001dc53b290] c008d050 .kvmppc_handle_exit_pr+0x60/0xa50
 [c001dc53b340] c008f51c kvm_start_lightweight+0xb4/0xc4
 [c001dc53b510] c008cdf0 .kvmppc_vcpu_run_pr+0x150/0x2e0
 [c001dc53b9e0] c008341c .kvmppc_vcpu_run+0x2c/0x40
 [c001dc53ba50] c0080af4 .kvm_arch_vcpu_ioctl_run+0x54/0x1b0
 [c001dc53bae0] c007b4c8 .kvm_vcpu_ioctl+0x478/0x730
 [c001dc53bca0] c02140cc .do_vfs_ioctl+0x4ac/0x770
 [c001dc53bd80] c02143e8 .SyS_ioctl+0x58/0xb0
 [c001dc53be30] c0009e58 syscall_exit+0x0/0x98
 --- Exception: c00 (System Call) at 1f960160
 SP (1ecbe3c0) is in userspace

 These changes were originally part of
 http://mid.gmane.org/20130806042205.gr19...@iris.ozlabs.ibm.com

 Signed-off-by: Aneesh Kumar K.V aneesh.ku...@linux.vnet.ibm.com
 ---
  arch/powerpc/include/asm/kvm_book3s_asm.h | 1 +
  arch/powerpc/kernel/asm-offsets.c | 1 +
  arch/powerpc/kvm/book3s_hv_rmhandlers.S   | 7 +++
  3 files changed, 5 insertions(+), 4 deletions(-)

 diff --git a/arch/powerpc/include/asm/kvm_book3s_asm.h 
 b/arch/powerpc/include/asm/kvm_book3s_asm.h
 index 0bd9348..69fe837 100644
 --- a/arch/powerpc/include/asm/kvm_book3s_asm.h
 +++ b/arch/powerpc/include/asm/kvm_book3s_asm.h
 @@ -79,6 +79,7 @@ struct kvmppc_host_state {
   ulong vmhandler;
   ulong scratch0;
   ulong scratch1;
 + ulong scratch2;
   u8 in_guest;
   u8 restore_hid5;
   u8 napping;
 diff --git a/arch/powerpc/kernel/asm-offsets.c 
 b/arch/powerpc/kernel/asm-offsets.c
 index 8e6ede6..841a4c8 100644
 --- a/arch/powerpc/kernel/asm-offsets.c
 +++ b/arch/powerpc/kernel/asm-offsets.c
 @@ -583,6 +583,7 @@ int main(void)
   HSTATE_FIELD(HSTATE_VMHANDLER, vmhandler);
   HSTATE_FIELD(HSTATE_SCRATCH0, scratch0);
   HSTATE_FIELD(HSTATE_SCRATCH1, scratch1);
 + HSTATE_FIELD(HSTATE_SCRATCH2, scratch2);
   HSTATE_FIELD(HSTATE_IN_GUEST, in_guest);
   HSTATE_FIELD(HSTATE_RESTORE_HID5, restore_hid5);
   HSTATE_FIELD(HSTATE_NAPPING, napping);
 diff --git a/arch/powerpc/kvm/book3s_hv_rmhandlers.S 
 b/arch/powerpc/kvm/book3s_hv_rmhandlers.S
 index 339aa5e..16f7654 100644
 --- a/arch/powerpc/kvm/book3s_hv_rmhandlers.S
 +++ b/arch/powerpc/kvm/book3s_hv_rmhandlers.S
 @@ -750,15 +750,14 @@ kvmppc_interrupt_hv:
* guest CR, R12 saved in shadow VCPU SCRATCH1/0
* guest R13 saved in SPRN_SCRATCH0
*/
 - /* abuse host_r2 as third scratch area; we get r2 from PACATOC(r13) */
 - std r9, HSTATE_HOST_R2(r13)
 + std r9, HSTATE_SCRATCH2(r13)
  
   lbz r9, HSTATE_IN_GUEST(r13)
   cmpwi   r9, KVM_GUEST_MODE_HOST_HV
   beq kvmppc_bad_host_intr
  #ifdef CONFIG_KVM_BOOK3S_PR_POSSIBLE
   cmpwi   r9, KVM_GUEST_MODE_GUEST
 - ld  r9, HSTATE_HOST_R2(r13)
 + ld  r9, HSTATE_SCRATCH2(r13)
   beq kvmppc_interrupt_pr
  #endif
   /* We're now back in the host but in guest MMU context */
 @@ -778,7 +777,7 @@ kvmppc_interrupt_hv:
   std r6, VCPU_GPR(R6)(r9)
   std r7, VCPU_GPR(R7)(r9)
   std r8, VCPU_GPR(R8)(r9)
 - ld  r0, HSTATE_HOST_R2(r13)
 + ld  r0, HSTATE_SCRATCH2(r13)
   std r0, VCPU_GPR(R9)(r9)
   std r10, VCPU_GPR(R10)(r9)
   std r11, VCPU_GPR(R11)(r9)
 -- 
 1.8.3.2

 --
 To unsubscribe from this list: send the line unsubscribe kvm-ppc in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html

___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev


Re: [PATCH] powerpc: book3s: kvm: Don't abuse host r2 in exit path

2013-11-27 Thread Paul Mackerras
On Mon, Nov 11, 2013 at 07:29:47PM +0530, Aneesh Kumar K.V wrote:
 From: Aneesh Kumar K.V aneesh.ku...@linux.vnet.ibm.com
 
 We don't use PACATOC for PR. Avoid updating HOST_R2 with PR
 KVM mode when both HV and PR are enabled in the kernel. Without this we
 get the below crash
 
 (qemu)
 Unable to handle kernel paging request for data at address 0x8310
 Faulting instruction address: 0xc001d5a4
 cpu 0x2: Vector: 300 (Data Access) at [c001dc53aef0]
 pc: c001d5a4: .vtime_delta.isra.1+0x34/0x1d0
 lr: c001d760: .vtime_account_system+0x20/0x60
 sp: c001dc53b170
msr: 80009032
dar: 8310
  dsisr: 4000
   current = 0xc001d76c62d0
   paca= 0xcfef1100   softe: 0irq_happened: 0x01
 pid   = 4472, comm = qemu-system-ppc
 enter ? for help
 [c001dc53b200] c001d760 .vtime_account_system+0x20/0x60
 [c001dc53b290] c008d050 .kvmppc_handle_exit_pr+0x60/0xa50
 [c001dc53b340] c008f51c kvm_start_lightweight+0xb4/0xc4
 [c001dc53b510] c008cdf0 .kvmppc_vcpu_run_pr+0x150/0x2e0
 [c001dc53b9e0] c008341c .kvmppc_vcpu_run+0x2c/0x40
 [c001dc53ba50] c0080af4 .kvm_arch_vcpu_ioctl_run+0x54/0x1b0
 [c001dc53bae0] c007b4c8 .kvm_vcpu_ioctl+0x478/0x730
 [c001dc53bca0] c02140cc .do_vfs_ioctl+0x4ac/0x770
 [c001dc53bd80] c02143e8 .SyS_ioctl+0x58/0xb0
 [c001dc53be30] c0009e58 syscall_exit+0x0/0x98
 --- Exception: c00 (System Call) at 1f960160
 SP (1ecbe3c0) is in userspace
 
 These changes were originally part of
 http://mid.gmane.org/20130806042205.gr19...@iris.ozlabs.ibm.com
 
 Signed-off-by: Aneesh Kumar K.V aneesh.ku...@linux.vnet.ibm.com

Acked-by: Paul Mackerras pau...@samba.org
___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev


[PATCH] powerpc: book3s: kvm: Don't abuse host r2 in exit path

2013-11-11 Thread Aneesh Kumar K.V
From: Aneesh Kumar K.V aneesh.ku...@linux.vnet.ibm.com

We don't use PACATOC for PR. Avoid updating HOST_R2 with PR
KVM mode when both HV and PR are enabled in the kernel. Without this we
get the below crash

(qemu)
Unable to handle kernel paging request for data at address 0x8310
Faulting instruction address: 0xc001d5a4
cpu 0x2: Vector: 300 (Data Access) at [c001dc53aef0]
pc: c001d5a4: .vtime_delta.isra.1+0x34/0x1d0
lr: c001d760: .vtime_account_system+0x20/0x60
sp: c001dc53b170
   msr: 80009032
   dar: 8310
 dsisr: 4000
  current = 0xc001d76c62d0
  paca= 0xcfef1100   softe: 0irq_happened: 0x01
pid   = 4472, comm = qemu-system-ppc
enter ? for help
[c001dc53b200] c001d760 .vtime_account_system+0x20/0x60
[c001dc53b290] c008d050 .kvmppc_handle_exit_pr+0x60/0xa50
[c001dc53b340] c008f51c kvm_start_lightweight+0xb4/0xc4
[c001dc53b510] c008cdf0 .kvmppc_vcpu_run_pr+0x150/0x2e0
[c001dc53b9e0] c008341c .kvmppc_vcpu_run+0x2c/0x40
[c001dc53ba50] c0080af4 .kvm_arch_vcpu_ioctl_run+0x54/0x1b0
[c001dc53bae0] c007b4c8 .kvm_vcpu_ioctl+0x478/0x730
[c001dc53bca0] c02140cc .do_vfs_ioctl+0x4ac/0x770
[c001dc53bd80] c02143e8 .SyS_ioctl+0x58/0xb0
[c001dc53be30] c0009e58 syscall_exit+0x0/0x98
--- Exception: c00 (System Call) at 1f960160
SP (1ecbe3c0) is in userspace

These changes were originally part of
http://mid.gmane.org/20130806042205.gr19...@iris.ozlabs.ibm.com

Signed-off-by: Aneesh Kumar K.V aneesh.ku...@linux.vnet.ibm.com
---
 arch/powerpc/include/asm/kvm_book3s_asm.h | 1 +
 arch/powerpc/kernel/asm-offsets.c | 1 +
 arch/powerpc/kvm/book3s_hv_rmhandlers.S   | 7 +++
 3 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/arch/powerpc/include/asm/kvm_book3s_asm.h 
b/arch/powerpc/include/asm/kvm_book3s_asm.h
index 0bd9348..69fe837 100644
--- a/arch/powerpc/include/asm/kvm_book3s_asm.h
+++ b/arch/powerpc/include/asm/kvm_book3s_asm.h
@@ -79,6 +79,7 @@ struct kvmppc_host_state {
ulong vmhandler;
ulong scratch0;
ulong scratch1;
+   ulong scratch2;
u8 in_guest;
u8 restore_hid5;
u8 napping;
diff --git a/arch/powerpc/kernel/asm-offsets.c 
b/arch/powerpc/kernel/asm-offsets.c
index 8e6ede6..841a4c8 100644
--- a/arch/powerpc/kernel/asm-offsets.c
+++ b/arch/powerpc/kernel/asm-offsets.c
@@ -583,6 +583,7 @@ int main(void)
HSTATE_FIELD(HSTATE_VMHANDLER, vmhandler);
HSTATE_FIELD(HSTATE_SCRATCH0, scratch0);
HSTATE_FIELD(HSTATE_SCRATCH1, scratch1);
+   HSTATE_FIELD(HSTATE_SCRATCH2, scratch2);
HSTATE_FIELD(HSTATE_IN_GUEST, in_guest);
HSTATE_FIELD(HSTATE_RESTORE_HID5, restore_hid5);
HSTATE_FIELD(HSTATE_NAPPING, napping);
diff --git a/arch/powerpc/kvm/book3s_hv_rmhandlers.S 
b/arch/powerpc/kvm/book3s_hv_rmhandlers.S
index 339aa5e..16f7654 100644
--- a/arch/powerpc/kvm/book3s_hv_rmhandlers.S
+++ b/arch/powerpc/kvm/book3s_hv_rmhandlers.S
@@ -750,15 +750,14 @@ kvmppc_interrupt_hv:
 * guest CR, R12 saved in shadow VCPU SCRATCH1/0
 * guest R13 saved in SPRN_SCRATCH0
 */
-   /* abuse host_r2 as third scratch area; we get r2 from PACATOC(r13) */
-   std r9, HSTATE_HOST_R2(r13)
+   std r9, HSTATE_SCRATCH2(r13)
 
lbz r9, HSTATE_IN_GUEST(r13)
cmpwi   r9, KVM_GUEST_MODE_HOST_HV
beq kvmppc_bad_host_intr
 #ifdef CONFIG_KVM_BOOK3S_PR_POSSIBLE
cmpwi   r9, KVM_GUEST_MODE_GUEST
-   ld  r9, HSTATE_HOST_R2(r13)
+   ld  r9, HSTATE_SCRATCH2(r13)
beq kvmppc_interrupt_pr
 #endif
/* We're now back in the host but in guest MMU context */
@@ -778,7 +777,7 @@ kvmppc_interrupt_hv:
std r6, VCPU_GPR(R6)(r9)
std r7, VCPU_GPR(R7)(r9)
std r8, VCPU_GPR(R8)(r9)
-   ld  r0, HSTATE_HOST_R2(r13)
+   ld  r0, HSTATE_SCRATCH2(r13)
std r0, VCPU_GPR(R9)(r9)
std r10, VCPU_GPR(R10)(r9)
std r11, VCPU_GPR(R11)(r9)
-- 
1.8.3.2

___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev