linux/arch/powerpc/kvm
Paul Mackerras 2fde6d20bb powerpc: Provide a way for KVM to indicate that NV GPR values are lost
This fixes a problem where a CPU thread coming out of nap mode can
think it has valid values in the nonvolatile GPRs (r14 - r31) as saved
away in power7_idle, but in fact the values have been trashed because
the thread was used for KVM in the mean time.  The result is that the
thread crashes because code that called power7_idle (e.g.,
pnv_smp_cpu_kill_self()) goes to use values in registers that have
been trashed.

The bit field in SRR1 that tells whether state was lost only reflects
the most recent nap, which may not have been the nap instruction in
power7_idle.  So we need an extra PACA field to indicate that state
has been lost even if SRR1 indicates that the most recent nap didn't
lose state.  We clear this field when saving the state in power7_idle,
we set it to a non-zero value when we use the thread for KVM, and we
test it in power7_wakeup_noloss.

Signed-off-by: Paul Mackerras <paulus@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2011-12-08 14:22:53 +11:00
..
44x_emulate.c KVM: PPC: fix exit accounting for SPRs, tlbwe, tlbsx 2011-05-22 08:47:47 -04:00
44x_tlb.c KVM: PPC: e500: Add shadow PID support 2011-07-12 13:16:39 +03:00
44x_tlb.h KVM: ppc: rename 44x MMU functions used in booke.c 2009-03-24 11:02:56 +02:00
44x.c powerpc: include export.h for files using EXPORT_SYMBOL/THIS_MODULE 2011-10-31 19:30:38 -04:00
book3s_32_mmu_host.c KVM: PPC: Implement correct SID mapping on Book3s_32 2010-10-24 10:52:15 +02:00
book3s_32_mmu.c KVM: PPC: Put segment registers in shared page 2010-10-24 10:52:11 +02:00
book3s_32_sr.S KVM: PPC: book3s_pr: Simplify transitions between virtual and real mode 2011-09-25 19:52:29 +03:00
book3s_64_mmu_host.c KVM: PPC: Implement correct SID mapping on Book3s_32 2010-10-24 10:52:15 +02:00
book3s_64_mmu_hv.c KVM: PPC: book3s_hv: Add support for PPC970-family processors 2011-07-12 13:16:59 +03:00
book3s_64_mmu.c KVM: PPC: Interpret SDR1 as HVA in PAPR mode 2011-09-25 19:52:21 +03:00
book3s_64_slb.S KVM: PPC: book3s_pr: Simplify transitions between virtual and real mode 2011-09-25 19:52:29 +03:00
book3s_64_vio_hv.c KVM: PPC: Accelerate H_PUT_TCE by implementing it in real mode 2011-07-12 13:16:56 +03:00
book3s_emulate.c KVM: PPC: Stub emulate CFAR and PURR SPRs 2011-09-25 19:52:25 +03:00
book3s_exports.c powerpc: various straight conversions from module.h --> export.h 2011-10-31 19:30:44 -04:00
book3s_hv_builtin.c powerpc: add export.h to files making use of EXPORT_SYMBOL 2011-10-31 19:30:37 -04:00
book3s_hv_interrupts.S KVM: PPC: book3s_hv: Add support for PPC970-family processors 2011-07-12 13:16:59 +03:00
book3s_hv_rm_mmu.c KVM: PPC: move compute_tlbie_rb to book3s common header 2011-09-25 19:52:18 +03:00
book3s_hv_rmhandlers.S powerpc: Provide a way for KVM to indicate that NV GPR values are lost 2011-12-08 14:22:53 +11:00
book3s_hv.c powerpc: Add hvcall.h include to book3s_hv.c 2011-11-16 14:47:54 +11:00
book3s_interrupts.S KVM: PPC: book3s_pr: Simplify transitions between virtual and real mode 2011-09-25 19:52:29 +03:00
book3s_mmu_hpte.c KVM: PPC: Move fields between struct kvm_vcpu_arch and kvmppc_vcpu_book3s 2011-07-12 13:16:46 +03:00
book3s_paired_singles.c Merge branch 'kvm-updates/2.6.37' of git://git.kernel.org/pub/scm/virt/kvm/kvm 2010-10-24 12:47:25 -07:00
book3s_pr_papr.c KVM: PPC: Add PAPR hypercall code for PR mode 2011-09-25 19:52:24 +03:00
book3s_pr.c Revert "KVM: PPC: Add support for explicit HIOR setting" 2011-11-17 16:30:25 +02:00
book3s_rmhandlers.S KVM: PPC: book3s_pr: Simplify transitions between virtual and real mode 2011-09-25 19:52:29 +03:00
book3s_segment.S KVM: PPC: book3s_pr: Simplify transitions between virtual and real mode 2011-09-25 19:52:29 +03:00
book3s.c powerpc: add export.h to files making use of EXPORT_SYMBOL 2011-10-31 19:30:37 -04:00
booke_emulate.c KVM: PPC: Convert SRR0 and SRR1 to shared page 2010-10-24 10:50:45 +02:00
booke_interrupts.S KVM: PPC: e500: Add shadow PID support 2011-07-12 13:16:39 +03:00
booke.c KVM: PPC: Add sanity checking to vcpu_run 2011-09-25 19:52:27 +03:00
booke.h KVM: PPC: e500: Add shadow PID support 2011-07-12 13:16:39 +03:00
e500_emulate.c KVM: PPC: e500: Add shadow PID support 2011-07-12 13:16:39 +03:00
e500_tlb.c KVM: PPC: e500: Don't search over the entire TLB0. 2011-07-12 13:16:40 +03:00
e500_tlb.h KVM: PPC: e500: Add shadow PID support 2011-07-12 13:16:39 +03:00
e500.c KVM: PPC: Add sanity checking to vcpu_run 2011-09-25 19:52:27 +03:00
emulate.c KVM: PPC: booke: add sregs support 2011-05-22 08:47:53 -04:00
fpu.S powerpc: Remove fpscr use from [kvm_]cvt_{fd,df} 2010-09-02 14:07:32 +10:00
Kconfig Merge branch 'kvm-updates/3.1' of git://git.kernel.org/pub/scm/virt/kvm/kvm 2011-07-24 09:07:03 -07:00
Makefile KVM: PPC: Assemble book3s{,_hv}_rmhandlers.S separately 2011-09-25 19:52:28 +03:00
powerpc.c Revert "KVM: PPC: Add support for explicit HIOR setting" 2011-11-17 16:30:25 +02:00
timing.c KVM: PPC: fix partial application of "exit timing in ticks" 2011-07-12 13:16:28 +03:00
timing.h KVM: powerpc: Fix BUILD_BUG_ON condition 2009-12-03 09:32:22 +02:00
trace.h KVM: PPC: Add support for Book3S processors in hypervisor mode 2011-07-12 13:16:54 +03:00