Re: [PATCH 24/37] KVM: PPC: booke: rework rescheduling checks

2012-02-28 Thread Alexander Graf
On 27.02.2012, at 20:28, Scott Wood wrote: On 02/24/2012 08:26 AM, Alexander Graf wrote: -void kvmppc_core_prepare_to_enter(struct kvm_vcpu *vcpu) +int kvmppc_core_prepare_to_enter(struct kvm_vcpu *vcpu) { unsigned long *pending = vcpu-arch.pending_exceptions; unsigned long

Re: [PATCH 24/37] KVM: PPC: booke: rework rescheduling checks

2012-02-28 Thread Scott Wood
On 02/28/2012 05:03 AM, Alexander Graf wrote: On 27.02.2012, at 20:28, Scott Wood wrote: If there is a signal pending and MSR[WE] is set, we'll loop forever without reaching this check. Good point. How about something like this on top (will fold in later)? diff --git

[PATCH 23/38] KVM: PPC: booke: deliver program int on emulation failure

2012-02-28 Thread Alexander Graf
When we fail to emulate an instruction for the guest, we better go in and tell it that we failed to emulate it, by throwing an illegal instruction exception. Please beware that we basically never get around to telling the guest that we failed thanks to the debugging code right above it. If user

[PATCH 14/38] KVM: PPC: booke: standard PPC floating point support

2012-02-28 Thread Alexander Graf
From: Scott Wood scottw...@freescale.com e500mc has a normal PPC FPU, rather than SPE which is found on e500v1/v2. Based on code from Liu Yu yu@freescale.com. Signed-off-by: Scott Wood scottw...@freescale.com Signed-off-by: Alexander Graf ag...@suse.de --- arch/powerpc/include/asm/system.h

[PATCH 21/38] KVM: PPC: make e500v2 kvm and e500mc cpu mutually exclusive

2012-02-28 Thread Alexander Graf
We can't run e500v2 kvm on e500mc kernels, so indicate that by making the 2 options mutually exclusive in kconfig. Signed-off-by: Alexander Graf ag...@suse.de --- arch/powerpc/kvm/Kconfig |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/arch/powerpc/kvm/Kconfig

[PATCH 18/38] KVM: PPC: e500mc: Move r1/r2 restoration very early

2012-02-28 Thread Alexander Graf
If we hit any exception whatsoever in the restore path and r1/r2 aren't the host registers, we don't get a working oops. So it's always a good idea to restore them as early as possible. This time, it actually has practical reasons to do so too, since we need to have the host page fault handler

[PATCH 38/38] KVM: PPC: Booke: only prepare to enter when we enter

2012-02-28 Thread Alexander Graf
So far, we've always called prepare_to_enter even when all we did was return to the host. This patch changes that semantic to only call prepare_to_enter when we actually want to get back into the guest. Signed-off-by: Alexander Graf ag...@suse.de --- arch/powerpc/kvm/booke.c | 18

[PATCH 37/38] KVM: PPC: booke: Reinject performance monitor interrupts

2012-02-28 Thread Alexander Graf
When we get a performance monitor interrupt, we need to make sure that the host receives it. So reinject it like we reinject the other host destined interrupts. Signed-off-by: Alexander Graf ag...@suse.de --- v2 - v3: - call regs sync directly --- arch/powerpc/include/asm/hw_irq.h |1 +

[PATCH 34/38] KVM: PPC: e500: fix typo in tlb code

2012-02-28 Thread Alexander Graf
The tlbncfg registers should be populated with their respective TLB's values. Fix the obvious typo. Signed-off-by: Alexander Graf ag...@suse.de --- arch/powerpc/kvm/e500_tlb.c |4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/powerpc/kvm/e500_tlb.c

[PATCH 35/38] KVM: PPC: booke: Support perfmon interrupts

2012-02-28 Thread Alexander Graf
When during guest context we get a performance monitor interrupt, we currently bail out and oops. Let's route it to its correct handler instead. Signed-off-by: Alexander Graf ag...@suse.de --- arch/powerpc/kvm/booke.c |4 1 files changed, 4 insertions(+), 0 deletions(-) diff --git

[PATCH 36/38] KVM: PPC: booke: expose good state on irq reinject

2012-02-28 Thread Alexander Graf
When reinjecting an interrupt into the host interrupt handler after we're back in host kernel land, we need to tell the kernel where the interrupt happened. We can't tell it that we were in guest state, because that might lead to random code walking host addresses. So instead, we tell it that we

[PATCH 33/38] KVM: PPC: bookehv: remove unused code

2012-02-28 Thread Alexander Graf
There was some unused code in the exit code path that must have been a leftover from earlier iterations. While it did no harm, it's superfluous and thus should be removed. Signed-off-by: Alexander Graf ag...@suse.de --- v2 - v3: - fix commit message - also remove lwzr9, VCPU_KVM(r4)

[PATCH 32/38] KVM: PPC: booke: add GS documentation for program interrupt

2012-02-28 Thread Alexander Graf
The comment for program interrupts triggered when using bookehv was misleading. Update it to mention why MSR_GS indicates that we have to inject an interrupt into the guest again, not emulate it. Signed-off-by: Alexander Graf ag...@suse.de --- arch/powerpc/kvm/booke.c | 10 -- 1 files

[PATCH 02/38] powerpc/e500: split CPU_FTRS_ALWAYS/CPU_FTRS_POSSIBLE

2012-02-28 Thread Alexander Graf
From: Scott Wood scottw...@freescale.com Split e500 (v1/v2) and e500mc/e5500 to allow optimization of feature checks that differ between the two. Signed-off-by: Scott Wood scottw...@freescale.com Signed-off-by: Alexander Graf ag...@suse.de --- arch/powerpc/include/asm/cputable.h | 12

[PATCH 29/38] KVM: PPC: bookehv: disable MAS register updates early

2012-02-28 Thread Alexander Graf
We need to make sure that no MAS updates happen automatically while we have the guest MAS registers loaded. So move the disabling code a bit higher up so that it covers the full time we have guest values in MAS registers. The race this patch fixes should never occur, but it makes the code a bit

[PATCH 31/38] KVM: PPC: booke: Readd debug abort code for machine check

2012-02-28 Thread Alexander Graf
When during guest execution we get a machine check interrupt, we don't know how to handle it yet. So let's add the error printing code back again that we dropped accidently earlier and tell user space that something went really wrong. Signed-off-by: Alexander Graf ag...@suse.de ---

[PATCH 15/38] KVM: PPC: e500mc support

2012-02-28 Thread Alexander Graf
From: Scott Wood scottw...@freescale.com Add processor support for e500mc, using hardware virtualization support (GS-mode). Current issues include: - No support for external proxy (coreint) interrupt mode in the guest. Includes work by Ashish Kalra ashish.ka...@freescale.com, Varun Sethi

[PATCH 28/38] KVM: PPC: bookehv: remove SET_VCPU

2012-02-28 Thread Alexander Graf
The SET_VCPU macro is a leftover from times when the vcpu struct wasn't stored in the thread on vcpu_load/put. It's not needed anymore. Remove it. Signed-off-by: Alexander Graf ag...@suse.de --- arch/powerpc/kvm/bookehv_interrupts.S |8 1 files changed, 0 insertions(+), 8

[PATCH 27/38] KVM: PPC: bookehv: remove negation for CONFIG_64BIT

2012-02-28 Thread Alexander Graf
Instead if doing #ifndef CONFIG_64BIT ... #else ... #endif we should rather do #ifdef CONFIG_64BIT ... #else ... #endif which is a lot easier to read. Change the bookehv implementation to stick with this rule. Signed-off-by: Alexander Graf ag...@suse.de ---

[PATCH 20/38] KVM: PPC: rename CONFIG_KVM_E500 - CONFIG_KVM_E500V2

2012-02-28 Thread Alexander Graf
The CONFIG_KVM_E500 option really indicates that we're running on a V2 machine, not on a machine of the generic E500 class. So indicate that properly and change the config name accordingly. Signed-off-by: Alexander Graf ag...@suse.de --- arch/powerpc/kvm/Kconfig|8

[PATCH 25/38] KVM: PPC: booke: BOOKE_IRQPRIO_MAX is n+1

2012-02-28 Thread Alexander Graf
The semantics of BOOKE_IRQPRIO_MAX changed to denote the highest available irqprio + 1, so let's reflect that in the code too. Signed-off-by: Alexander Graf ag...@suse.de --- arch/powerpc/kvm/booke.c |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git

[PATCH 26/38] KVM: PPC: bookehv: fix exit timing

2012-02-28 Thread Alexander Graf
When using exit timing stats, we clobber r9 in the NEED_EMU case, so better move that part down a few lines and fix it that way. Signed-off-by: Alexander Graf ag...@suse.de --- arch/powerpc/kvm/bookehv_interrupts.S |8 1 files changed, 4 insertions(+), 4 deletions(-) diff --git

[PATCH 24/38] KVM: PPC: booke: rework rescheduling checks

2012-02-28 Thread Alexander Graf
Instead of checking whether we should reschedule only when we exited due to an interrupt, let's always check before entering the guest back again. This gets the target more in line with the other archs. Also while at it, generalize the whole thing so that eventually we could have a single

[PATCH 16/38] KVM: PPC: e500mc: Add doorbell emulation support

2012-02-28 Thread Alexander Graf
When one vcpu wants to kick another, it can issue a special IPI instruction called msgsnd. This patch emulates this instruction, its clearing counterpart and the infrastructure required to actually trigger that interrupt inside a guest vcpu. With this patch, SMP guests on e500mc work.

[PATCH 12/38] powerpc/booke: Provide exception macros with interrupt name

2012-02-28 Thread Alexander Graf
From: Scott Wood scottw...@freescale.com DO_KVM will need to identify the particular exception type. There is an existing set of arbitrary numbers that Linux passes, but it's an undocumented mess that sort of corresponds to server/classic exception vectors but not really. Signed-off-by: Scott

[PATCH 17/38] KVM: PPC: e500mc: implicitly set MSR_GS

2012-02-28 Thread Alexander Graf
When setting MSR for an e500mc guest, we implicitly always set MSR_GS to make sure the guest is in guest state. Since we have this implicit rule there, we don't need to explicitly pass MSR_GS to set_msr(). Remove all explicit setters of MSR_GS. Signed-off-by: Alexander Graf ag...@suse.de ---

[PATCH 11/38] KVM: PPC: e500: emulate tlbilx

2012-02-28 Thread Alexander Graf
From: Scott Wood scottw...@freescale.com tlbilx is the new, preferred invalidation instruction. It is not found on e500 prior to e500mc, but there should be no harm in supporting it on all e500. Based on code from Ashish Kalra ashish.ka...@freescale.com. Signed-off-by: Scott Wood

[PATCH 05/38] KVM: PPC: booke: Move vm core init/destroy out of booke.c

2012-02-28 Thread Alexander Graf
From: Scott Wood scottw...@freescale.com e500mc will want to do lpid allocation/deallocation here. Signed-off-by: Scott Wood scottw...@freescale.com Signed-off-by: Alexander Graf ag...@suse.de --- arch/powerpc/kvm/44x.c |9 + arch/powerpc/kvm/booke.c |9 -

[PATCH 08/38] KVM: PPC: e500: clean up arch/powerpc/kvm/e500.h

2012-02-28 Thread Alexander Graf
From: Scott Wood scottw...@freescale.com Move vcpu to the beginning of vcpu_e500 to give it appropriate prominence, especially if more fields end up getting added to the end of vcpu_e500 (and vcpu ends up in the middle). Remove gratuitous extern and add parameter names to prototypes.

[PATCH 03/38] KVM: PPC: factor out lpid allocator from book3s_64_mmu_hv

2012-02-28 Thread Alexander Graf
From: Scott Wood scottw...@freescale.com We'll use it on e500mc as well. Signed-off-by: Scott Wood scottw...@freescale.com Signed-off-by: Alexander Graf ag...@suse.de --- arch/powerpc/include/asm/kvm_book3s.h |3 ++ arch/powerpc/include/asm/kvm_booke.h |3 ++

[PATCH 06/38] KVM: PPC: e500: rename e500_tlb.h to e500.h

2012-02-28 Thread Alexander Graf
From: Scott Wood scottw...@freescale.com This is in preparation for merging in the contents of arch/powerpc/include/asm/kvm_e500.h. Signed-off-by: Scott Wood scottw...@freescale.com Signed-off-by: Alexander Graf ag...@suse.de --- arch/powerpc/kvm/e500.c |2 +-

[PATCH 09/38] KVM: PPC: e500: refactor core-specific TLB code

2012-02-28 Thread Alexander Graf
From: Scott Wood scottw...@freescale.com The PID handling is e500v1/v2-specific, and is moved to e500.c. The MMU sregs code and kvmppc_core_vcpu_translate will be shared with e500mc, and is moved from e500.c to e500_tlb.c. Partially based on patches from Liu Yu yu@freescale.com.

[PATCH 07/38] KVM: PPC: e500: merge asm/kvm_e500.h into arch/powerpc/kvm/e500.h

2012-02-28 Thread Alexander Graf
From: Scott Wood scottw...@freescale.com Keeping two separate headers for e500-specific things was a pain, and wasn't even organized along any logical boundary. There was TLB stuff in asm/kvm_e500.h despite the existence of arch/powerpc/kvm/e500_tlb.h, and nothing in asm/kvm_e500.h needed to be

[PATCH 00/38] KVM: PPC: e500mc support v3

2012-02-28 Thread Alexander Graf
This is Scott's e500mc RFC patch set rebased, berobbed of its pt_regs parts and fixed for bisectability. On top of them, I addressed all the comments that I had on the code and that came up in his code as FIXMEs. I verified that this patch set works just fine on e500mc and doesn't break e500v2,

[PATCH 04/38] KVM: PPC: booke: add booke-level vcpu load/put

2012-02-28 Thread Alexander Graf
From: Scott Wood scottw...@freescale.com This gives us a place to put load/put actions that correspond to code that is booke-specific but not specific to a particular core. Signed-off-by: Scott Wood scottw...@freescale.com Signed-off-by: Alexander Graf ag...@suse.de --- arch/powerpc/kvm/44x.c

[PATCH] KVM: PPC: Don't sync timebase when inside KVM

2012-02-28 Thread Alexander Graf
When we know that we're running inside of a KVM guest, we don't have to worry about synchronizing timebases between different CPUs, since the host already took care of that. This fixes CPU overcommit scenarios where vCPUs could hang forever trying to sync each other while not being scheduled.