Re: [RFC PATCH 16/16] KVM: PPC: e500mc support
On 01/10/2012 02:37 AM, Avi Kivity wrote: > On 01/09/2012 09:29 PM, Scott Wood wrote: >>> >>> Best to include their signoffs, if possible. >> >> These patches are based in part on a bunch of different patches from >> these people (for which I did receive signoffs). I was reluctant to put >> their signoff directly on the new patches, since I didn't want to make >> it look like they had submitted the patch in anything resembling its >> current form. I wanted to give them credit for what they did, but not >> blame for what I did with their code. >> > > Signoffs are for assigning neither credit nor blame, but for > attributing authorship and affirming that a contributor has > the right to contribute code or pass it along. That's its formal purpose, but some people draw other conclusions from it regardless. From Documentation/SubmittingPatches: "Rule (b) allows you to adjust the code, but then it is very impolite to change one submitter's code and make him endorse your bugs." Please read the DCO at > https://lwn.net/Articles/437739/. I've read it. My signoff here qualifies based on (a) and (b). > (a) The contribution was created in whole or in part by me and I > have the right to submit it under the open source license > indicated in the file; or Note "or in part". The contributions in this patch were all produced by Freescale employees on a work for hire basis (other than the extent to which the code is derived from code already in the Linux kernel, which is covered by (b)), and I am authorized to submit this work on Freescale's behalf for inclusion into the Linux kernel under GPLv2. I'm not trying to be difficult, just to avoid looking like it was a patch passed more-or-less as-is from person to person. When I resubmit, I can put the sign-offs in with [scottw...@freescale.com: significant rework] after them, or list them separately as part of the "based on..." paragraph. -Scott ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
Re: [RFC PATCH 16/16] KVM: PPC: e500mc support
On 01/09/2012 09:29 PM, Scott Wood wrote: > > > > Best to include their signoffs, if possible. > > These patches are based in part on a bunch of different patches from > these people (for which I did receive signoffs). I was reluctant to put > their signoff directly on the new patches, since I didn't want to make > it look like they had submitted the patch in anything resembling its > current form. I wanted to give them credit for what they did, but not > blame for what I did with their code. > Signoffs are for assigning neither credit nor blame, but for attributing authorship and affirming that a contributor has the right to contribute code or pass it along. Please read the DCO at https://lwn.net/Articles/437739/. It's okay to miss them from time to time, especially for established contributors, but avoid it whenever possible. -- I have a truly marvellous patch that fixes the bug which this signature is too narrow to contain. ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
Re: [RFC PATCH 16/16] KVM: PPC: e500mc support
On 01/09/2012 10:33 AM, Avi Kivity wrote: > On 12/21/2011 03:34 AM, Scott Wood wrote: >> 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 , >> Varun Sethi , and >> Liu Yu . >> > > Best to include their signoffs, if possible. These patches are based in part on a bunch of different patches from these people (for which I did receive signoffs). I was reluctant to put their signoff directly on the new patches, since I didn't want to make it look like they had submitted the patch in anything resembling its current form. I wanted to give them credit for what they did, but not blame for what I did with their code. I've CCed Varun and Liu so they can sign off these versions of the patches if they wish. Ashish no longer works at Freescale, so I don't have a currently valid e-mail address for him. -Scott ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
Re: [RFC PATCH 16/16] KVM: PPC: e500mc support
On 12/21/2011 03:34 AM, Scott Wood wrote: > 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 , > Varun Sethi , and > Liu Yu . > Best to include their signoffs, if possible. -- error compiling committee.c: too many arguments to function ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
[RFC PATCH 16/16] KVM: PPC: e500mc support
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 , Varun Sethi , and Liu Yu . Signed-off-by: Scott Wood --- arch/powerpc/include/asm/cputable.h |6 +- arch/powerpc/include/asm/kvm.h|1 + arch/powerpc/kernel/cpu_setup_fsl_booke.S |1 + arch/powerpc/kernel/head_fsl_booke.S | 46 arch/powerpc/kvm/Kconfig | 17 ++- arch/powerpc/kvm/Makefile | 11 + arch/powerpc/kvm/e500.h | 13 +- arch/powerpc/kvm/e500_emulate.c | 24 ++- arch/powerpc/kvm/e500_tlb.c | 21 ++- arch/powerpc/kvm/e500mc.c | 342 + arch/powerpc/kvm/powerpc.c|6 +- 11 files changed, 476 insertions(+), 12 deletions(-) create mode 100644 arch/powerpc/kvm/e500mc.c diff --git a/arch/powerpc/include/asm/cputable.h b/arch/powerpc/include/asm/cputable.h index a80be60..eddb322 100644 --- a/arch/powerpc/include/asm/cputable.h +++ b/arch/powerpc/include/asm/cputable.h @@ -168,6 +168,7 @@ extern const char *powerpc_base_platform; #define CPU_FTR_LWSYNC ASM_CONST(0x0800) #define CPU_FTR_NOEXECUTE ASM_CONST(0x1000) #define CPU_FTR_INDEXED_DCRASM_CONST(0x2000) +#define CPU_FTR_EMB_HV ASM_CONST(0x4000) /* * Add the 64-bit processor unique features in the top half of the word; @@ -385,11 +386,11 @@ extern const char *powerpc_base_platform; CPU_FTR_NODSISRALIGN | CPU_FTR_NOEXECUTE) #define CPU_FTRS_E500MC(CPU_FTR_USE_TB | CPU_FTR_NODSISRALIGN | \ CPU_FTR_L2CSR | CPU_FTR_LWSYNC | CPU_FTR_NOEXECUTE | \ - CPU_FTR_DBELL | CPU_FTR_DEBUG_LVL_EXC) + CPU_FTR_DBELL | CPU_FTR_DEBUG_LVL_EXC | CPU_FTR_EMB_HV) #define CPU_FTRS_E5500 (CPU_FTR_USE_TB | CPU_FTR_NODSISRALIGN | \ CPU_FTR_L2CSR | CPU_FTR_LWSYNC | CPU_FTR_NOEXECUTE | \ CPU_FTR_DBELL | CPU_FTR_POPCNTB | CPU_FTR_POPCNTD | \ - CPU_FTR_DEBUG_LVL_EXC) + CPU_FTR_DEBUG_LVL_EXC | CPU_FTR_EMB_HV) #define CPU_FTRS_GENERIC_32(CPU_FTR_COMMON | CPU_FTR_NODSISRALIGN) /* 64-bit CPUs */ @@ -534,6 +535,7 @@ enum { #ifdef CONFIG_PPC_E500MC CPU_FTRS_E500MC & CPU_FTRS_E5500 & #endif + ~CPU_FTR_EMB_HV & /* can be removed at runtime */ CPU_FTRS_POSSIBLE, }; #endif /* __powerpc64__ */ diff --git a/arch/powerpc/include/asm/kvm.h b/arch/powerpc/include/asm/kvm.h index fb3fddc..98abdd0 100644 --- a/arch/powerpc/include/asm/kvm.h +++ b/arch/powerpc/include/asm/kvm.h @@ -280,6 +280,7 @@ struct kvm_guest_debug_arch { #define KVM_CPU_E500V2 2 #define KVM_CPU_3S_32 3 #define KVM_CPU_3S_64 4 +#define KVM_CPU_E500MC 5 /* for KVM_CAP_SPAPR_TCE */ struct kvm_create_spapr_tce { diff --git a/arch/powerpc/kernel/cpu_setup_fsl_booke.S b/arch/powerpc/kernel/cpu_setup_fsl_booke.S index 8053db0..69fdd23 100644 --- a/arch/powerpc/kernel/cpu_setup_fsl_booke.S +++ b/arch/powerpc/kernel/cpu_setup_fsl_booke.S @@ -73,6 +73,7 @@ _GLOBAL(__setup_cpu_e500v2) mtlrr4 blr _GLOBAL(__setup_cpu_e500mc) + mr r5, r4 mflrr4 bl __e500_icache_setup bl __e500_dcache_setup diff --git a/arch/powerpc/kernel/head_fsl_booke.S b/arch/powerpc/kernel/head_fsl_booke.S index 5701e87..b269b86 100644 --- a/arch/powerpc/kernel/head_fsl_booke.S +++ b/arch/powerpc/kernel/head_fsl_booke.S @@ -380,10 +380,16 @@ interrupt_base: mtspr SPRN_SPRG_WSCRATCH0, r10 /* Save some working registers */ mfspr r10, SPRN_SPRG_THREAD stw r11, THREAD_NORMSAVE(0)(r10) +#ifdef CONFIG_KVM_BOOKE_HV +BEGIN_FTR_SECTION + mfspr r11, SPRN_SRR1 +END_FTR_SECTION_IFSET(CPU_FTR_EMB_HV) +#endif stw r12, THREAD_NORMSAVE(1)(r10) stw r13, THREAD_NORMSAVE(2)(r10) mfcrr13 stw r13, THREAD_NORMSAVE(3)(r10) + DO_KVM BOOKE_INTERRUPT_DTLB_MISS SPRN_SRR1 mfspr r10, SPRN_DEAR /* Get faulting address */ /* If we are faulting a kernel address, we have to use the @@ -468,10 +474,16 @@ interrupt_base: mtspr SPRN_SPRG_WSCRATCH0, r10 /* Save some working registers */ mfspr r10, SPRN_SPRG_THREAD stw r11, THREAD_NORMSAVE(0)(r10) +#ifdef CONFIG_KVM_BOOKE_HV +BEGIN_FTR_SECTION + mfspr r11, SPRN_SRR1 +END_FTR_SECTION_IFSET(CPU_FTR_EMB_HV) +#endif stw r12, THREAD_NORMSAVE(1)(r10) stw r13, THREAD_NORMSAVE(2)(r10) mfcrr13 stw r13, THREAD_NORMSAVE(3)(r10) + DO_KVM BOOKE_INTERRUPT_ITLB_MISS SPRN_SRR1 mfspr r10, SPRN_SRR0 /* Get faulting address */ /* If we are faulting a kernel address, we hav