[PATCH 01/56] KVM: PPC: Book3s_32: Fix compile error

2012-03-15 Thread Alexander Graf
We were failing to compile on book3s_32 with the following errors: arch/powerpc/kvm/book3s_pr.c:883:45: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast] arch/powerpc/kvm/book3s_pr.c:898:79: error: cast to pointer from integer of different size

[PATCH 02/56] powerpc/booke: Set CPU_FTR_DEBUG_LVL_EXC on 32-bit

2012-03-15 Thread Alexander Graf
From: Scott Wood scottw...@freescale.com Currently 32-bit only cares about this for choice of exception vector, which is done in core-specific code. However, KVM will want to distinguish as well. Signed-off-by: Scott Wood scottw...@freescale.com Signed-off-by: Alexander Graf ag...@suse.de ---

[PATCH 05/56] KVM: PPC: booke: add booke-level vcpu load/put

2012-03-15 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 09/56] KVM: PPC: e500: clean up arch/powerpc/kvm/e500.h

2012-03-15 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 10/56] KVM: PPC: e500: refactor core-specific TLB code

2012-03-15 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 16/56] KVM: PPC: e500mc support

2012-03-15 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 13/56] powerpc/booke: Provide exception macros with interrupt name

2012-03-15 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 08/56] KVM: PPC: e500: merge asm/kvm_e500.h into arch/powerpc/kvm/e500.h

2012-03-15 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 11/56] KVM: PPC: e500: Track TLB1 entries with a bitmap

2012-03-15 Thread Alexander Graf
From: Scott Wood scottw...@freescale.com Rather than invalidate everything when a TLB1 entry needs to be taken down, keep track of which host TLB1 entries are used for a given guest TLB1 entry, and invalidate just those entries. Based on code from Ashish Kalra ashish.ka...@freescale.com and Liu

[PATCH 07/56] KVM: PPC: e500: rename e500_tlb.h to e500.h

2012-03-15 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 36/56] KVM: PPC: booke: Support perfmon interrupts

2012-03-15 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 42/56] KVM: PPC: Book3S HV: Save and restore CR in __kvmppc_vcore_entry

2012-03-15 Thread Alexander Graf
From: Paul Mackerras pau...@samba.org The ABI specifies that CR fields CR2--CR4 are nonvolatile across function calls. Currently __kvmppc_vcore_entry doesn't save and restore the CR, leading to CR2--CR4 getting corrupted with guest values, possibly leading to incorrect behaviour in its caller.

[PATCH 54/56] KVM: PPC: Book3S: PR: Fix preemption

2012-03-15 Thread Alexander Graf
We were leaking preemption counters. Fix the code to always toggle between preempt and non-preempt properly. Signed-off-by: Alexander Graf ag...@suse.de --- arch/powerpc/kvm/book3s_pr.c |3 +-- 1 files changed, 1 insertions(+), 2 deletions(-) diff --git a/arch/powerpc/kvm/book3s_pr.c

[PATCH 55/56] KVM: PPC: Ignore unhalt request from kvm_vcpu_block

2012-03-15 Thread Alexander Graf
When running kvm_vcpu_block and it realizes that the CPU is actually good to run, we get a request bit set for KVM_REQ_UNHALT. Right now, there's nothing we can do with that bit, so let's unset it right after the call again so we don't get confused in our later checks for pending work.

[PATCH 40/56] KVM: PPC: Book3s: PR: Add SPAPR H_BULK_REMOVE support

2012-03-15 Thread Alexander Graf
From: Matt Evans m...@ozlabs.org SPAPR support includes various in-kernel hypercalls, improving performance by cutting out the exit to userspace. H_BULK_REMOVE is implemented in this patch. Signed-off-by: Matt Evans m...@ozlabs.org Signed-off-by: Alexander Graf ag...@suse.de ---

[PATCH 56/56] powerpc/kvm: Fix magic page vs. 32-bit RTAS on ppc64

2012-03-15 Thread Alexander Graf
From: Benjamin Herrenschmidt b...@kernel.crashing.org When the kernel calls into RTAS, it switches to 32-bit mode. The magic page was is longer accessible in that case, causing the patched instructions in the RTAS call wrapper to crash. This fixes it by making available a 32-bit mapping of the

[PATCH 53/56] KVM: PPC: Book3s: PR: Add HV traps so we can run in HV=1 mode on p7

2012-03-15 Thread Alexander Graf
When running PR KVM on a p7 system in bare metal, we get HV exits instead of normal supervisor traps. Semantically they are identical though and the HSRR vs SRR difference is already taken care of in the exit code. So all we need to do is handle them in addition to our normal exits.

[PATCH 50/56] KVM: PPC: Pass EA to updating emulation ops

2012-03-15 Thread Alexander Graf
When emulating updating load/store instructions (lwzu, stwu, ...) we need to write the effective address of the load/store into a register. Currently, we write the physical address in there, which is very wrong. So instead let's save off where the virtual fault was on MMIO and use that

[PATCH 51/56] KVM: PPC: Book3S: Compile fix for ppc32 in HIOR

2012-03-15 Thread Alexander Graf
On PPC32 we can not use get_user/put_user for 64bit wide variables, as there is no single instruction that could load or store variables that big. So instead, we have to use copy_from/to_user which works everywhere. Signed-off-by: Alexander Graf ag...@suse.de --- arch/powerpc/kvm/book3s_pr.c |

[PATCH 49/56] KVM: PPC: Work around POWER7 DABR corruption problem

2012-03-15 Thread Alexander Graf
From: Paul Mackerras pau...@samba.org It turns out that on POWER7, writing to the DABR can cause a corrupted value to be written if the PMU is active and updating SDAR in continuous sampling mode. To work around this, we make sure that the PMU is inactive and SDAR updates are disabled (via

[PATCH 52/56] KVM: PPC: Emulate tw and td instructions

2012-03-15 Thread Alexander Graf
There are 4 conditional trapping instructions: tw, twi, td, tdi. The ones with an i take an immediate comparison, the others compare two registers. All of them arrive in the emulator when the condition to trap was successfully fulfilled. Unfortunately, we were only implementing the i versions so

[PATCH 47/56] Restore guest CR after exit timing calculation

2012-03-15 Thread Alexander Graf
From: Bharat Bhushan r65...@freescale.com No instruction which can change Condition Register (CR) should be executed after Guest CR is loaded. So the guest CR is restored after the Exit Timing in lightweight_exit executes cmpw, which can clobber CR. Signed-off-by: Bharat Bhushan

[PATCH 43/56] KVM: PPC: Save/Restore CR over vcpu_run

2012-03-15 Thread Alexander Graf
On PPC, CR2-CR4 are nonvolatile, thus have to be saved across function calls. We didn't respect that for any architecture until Paul spotted it in his patch for Book3S-HV. This patch saves/restores CR for all KVM capable PPC hosts. Signed-off-by: Alexander Graf ag...@suse.de ---

[PATCH 41/56] KVM: PPC: Book3S HV: Fix kvm_alloc_linear in case where no linears exist

2012-03-15 Thread Alexander Graf
From: Paul Mackerras pau...@samba.org In kvm_alloc_linear we were using and deferencing ri after the list_for_each_entry had come to the end of the list. In that situation, ri is not really defined and probably points to the list head. This will happen every time if the free_linears list is

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

2012-03-15 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 38/56] KVM: PPC: booke: Reinject performance monitor interrupts

2012-03-15 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 --- arch/powerpc/include/asm/hw_irq.h |1 + arch/powerpc/kvm/booke.c |4

[PATCH 37/56] KVM: PPC: booke: expose good state on irq reinject

2012-03-15 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 35/56] KVM: PPC: e500: fix typo in tlb code

2012-03-15 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 32/56] KVM: PPC: booke: Readd debug abort code for machine check

2012-03-15 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 34/56] KVM: PPC: bookehv: remove unused code

2012-03-15 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 --- arch/powerpc/kvm/bookehv_interrupts.S |7 --- 1 files changed, 0

[PATCH 31/56] KVM: PPC: bookehv: add comment about shadow_msr

2012-03-15 Thread Alexander Graf
For BookE HV the guest visible MSR is shared-msr and is identical to the MSR that is in use while the guest is running, because we can't trap reads from/to MSR. So shadow_msr is unused there. Indicate that with a comment. Signed-off-by: Alexander Graf ag...@suse.de ---

[PATCH 29/56] KVM: PPC: bookehv: remove SET_VCPU

2012-03-15 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 28/56] KVM: PPC: bookehv: remove negation for CONFIG_64BIT

2012-03-15 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 27/56] KVM: PPC: bookehv: fix exit timing

2012-03-15 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 26/56] KVM: PPC: booke: BOOKE_IRQPRIO_MAX is n+1

2012-03-15 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 25/56] KVM: PPC: booke: rework rescheduling checks

2012-03-15 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 23/56] KVM: PPC: booke: remove leftover debugging

2012-03-15 Thread Alexander Graf
The e500mc patches left some debug code in that we don't need. Remove it. Signed-off-by: Alexander Graf ag...@suse.de --- arch/powerpc/kvm/booke.c |5 - 1 files changed, 0 insertions(+), 5 deletions(-) diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c index

[PATCH 24/56] KVM: PPC: booke: deliver program int on emulation failure

2012-03-15 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 22/56] KVM: PPC: make e500v2 kvm and e500mc cpu mutually exclusive

2012-03-15 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 20/56] KVM: PPC: e500mc: add load inst fixup

2012-03-15 Thread Alexander Graf
There's always a chance we're unable to read a guest instruction. The guest could have its TLB mapped execute-, but not readable, something odd happens and our TLB gets flushed. So it's a good idea to be prepared for that case and have a fallback that allows us to fix things up in that case. Add

[PATCH 19/56] KVM: PPC: e500mc: Move r1/r2 restoration very early

2012-03-15 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 21/56] KVM: PPC: rename CONFIG_KVM_E500 - CONFIG_KVM_E500V2

2012-03-15 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 15/56] KVM: PPC: booke: standard PPC floating point support

2012-03-15 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 18/56] KVM: PPC: e500mc: implicitly set MSR_GS

2012-03-15 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 12/56] KVM: PPC: e500: emulate tlbilx

2012-03-15 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 14/56] KVM: PPC: booke: category E.HV (GS-mode) support

2012-03-15 Thread Alexander Graf
From: Scott Wood scottw...@freescale.com Chips such as e500mc that implement category E.HV in Power ISA 2.06 provide hardware virtualization features, including a new MSR mode for guest state. The guest OS can perform many operations without trapping into the hypervisor, including transitions to

[PATCH 04/56] KVM: PPC: factor out lpid allocator from book3s_64_mmu_hv

2012-03-15 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/56] KVM: PPC: booke: Move vm core init/destroy out of booke.c

2012-03-15 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 17/56] KVM: PPC: e500mc: Add doorbell emulation support

2012-03-15 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.

[PULL 00/56] ppc patch queue 2012-03-15

2012-03-15 Thread Alexander Graf
Hi Avi, This is my current patch queue for ppc. Please pull. Alex The following changes since commit eb9ede961ffe8040e499f3bade88f38395610543: Marcelo Tosatti (1): KVM: fix kvm_vcpu_kick build failure on S390 are available in the git repository at:

[PATCH 03/56] powerpc/e500: split CPU_FTRS_ALWAYS/CPU_FTRS_POSSIBLE

2012-03-15 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

Re: [PATCH v9 2/4] KVM: PPC: epapr: Add idle hcall support for host

2012-03-15 Thread Stuart Yoder
On Wed, Mar 7, 2012 at 5:27 PM, Alexander Graf ag...@suse.de wrote: #define KVM_SC_MAGIC_R0               0x4b564d21 /* KVM! */ -#define HC_VENDOR_KVM                (42 16) + +#include asm/epapr_hcalls.h + +/* ePAPR Hypercall Vendor ID */ +#define HC_VENDOR_EPAPR              

Re: [PATCH v9 1/4] KVM: PPC: epapr: Factor out the epapr init

2012-03-15 Thread Stuart Yoder
+early_initcall(epapr_paravirt_init); Just want to double-check. Are you 100% sure that this gets called before kvm_guest_init()? Yes, kvm_guest_init is a postcore_initcall, which comes after early. Some printks confirmed this. Stuart -- To unsubscribe from this list: send the line

[PATCH v10 0/5] KVM: PPC: Add ePAPR idle hcall support

2012-03-15 Thread Stuart Yoder
From: Stuart Yoder stuart.yo...@freescale.com v10: -patchset is now 5 patches, using the epapr header definitions is split out into a separate patch -patch titles and descriptions are also updated -cleanup as per review comments addressed Liu Yu-B13201 (4): KVM: PPC: Factor out

[PATCH v10 1/5] KVM: PPC: Factor out guest epapr initialization

2012-03-15 Thread Stuart Yoder
From: Liu Yu-B13201 yu@freescale.com epapr paravirtualization support is now a Kconfig selectable option Signed-off-by: Liu Yu yu@freescale.com [stuart.yo...@freescale.com: misc minor fixes, description update] Signed-off-by: Stuart Yoder stuart.yo...@freescale.com --- -v10 -update

[PATCH v10 3/5] KVM: PPC: Add support for ePAPR idle hcall in host kernel

2012-03-15 Thread Stuart Yoder
From: Liu Yu-B13201 yu@freescale.com And add a new flag definition in kvm_ppc_pvinfo to indicate whether the host supports the EV_IDLE hcall. Signed-off-by: Liu Yu yu@freescale.com [stuart.yo...@freescale.com: cleanup,fixes for conditions allowing idle] Signed-off-by: Stuart Yoder

[PATCH v10 5/5] PPC: Don't use hardcoded opcode for ePAPR hcall invocation

2012-03-15 Thread Stuart Yoder
From: Liu Yu-B13201 yu@freescale.com Also, select ePAPR kconfig option for all users of ePAPR hcalls. Signed-off-by: Liu Yu yu@freescale.com [stuart.yo...@freescale.com: kconfig fixes] Signed-off-by: Stuart Yoder stuart.yo...@freescale.com --- v10: update patch subject/description

[PATCH v10 4/5] KVM: PPC: ev_idle hcall support for e500 guests

2012-03-15 Thread Stuart Yoder
From: Liu Yu-B13201 yu@freescale.com Signed-off-by: Liu Yu yu@freescale.com [stuart: update patch description] Signed-off-by: Stuart Yoder stuart.yo...@freescale.com --- v10: -add spaces as per comments -use PPC_LL/PPC_STL for long accesses arch/powerpc/include/asm/epapr_hcalls.h

[PATCH v10 2/5] KVM: PPC: use definitions in epapr header for hcalls

2012-03-15 Thread Stuart Yoder
From: Stuart Yoder stuart.yo...@freescale.com Signed-off-by: Stuart Yoder stuart.yo...@freescale.com --- arch/powerpc/include/asm/kvm_para.h | 19 +-- arch/powerpc/kernel/kvm.c |2 +- arch/powerpc/kvm/powerpc.c | 10 +- 3 files changed, 15

[PATCH v4] KVM: Use minimum and maximum address mapped by TLB1

2012-03-15 Thread Bharat Bhushan
Keep track of minimum and maximum address mapped by tlb1. This helps in TLBMISS handling in KVM to quick check whether the address lies in mapped range. If address does not lies in this range then no need to look in each tlb1 entry of tlb1 array. Signed-off-by: Bharat Bhushan