Message ID | 20210305150638.2675513-15-npiggin@gmail.com (mailing list archive) |
---|---|
State | Changes Requested |
Headers | show |
Series | KVM: PPC: Book3S: C-ify the P9 entry/exit code | expand |
Related | show |
Context | Check | Description |
---|---|---|
snowpatch_ozlabs/apply_patch | warning | Failed to apply on branch powerpc/merge (91966823812efbd175f904599e5cf2a854b39809) |
snowpatch_ozlabs/apply_patch | warning | Failed to apply on branch powerpc/next (fe07bfda2fb9cdef8a4d4008a409bb02f35f1bd8) |
snowpatch_ozlabs/apply_patch | warning | Failed to apply on branch linus/master (280d542f6ffac0e6d65dc267f92191d509b13b64) |
snowpatch_ozlabs/apply_patch | warning | Failed to apply on branch powerpc/fixes (5c88a17e15795226b56d83f579cbb9b7a4864f79) |
snowpatch_ozlabs/apply_patch | warning | Failed to apply on branch linux-next (7a7fd0de4a9804299793e564a555a49c1fc924cb) |
snowpatch_ozlabs/apply_patch | fail | Failed to apply to any branch |
On 06/03/2021 02:06, Nicholas Piggin wrote: > This is not used by PR KVM. > > Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Reviewed-by: Alexey Kardashevskiy <aik@ozlabs.ru> a small tote - it probably makes sense to move this before 09/41 as this one removes what 09/41 added to book3s_64_entry.S. Thanks, > --- > arch/powerpc/kvm/book3s_64_entry.S | 3 --- > arch/powerpc/kvm/book3s_hv_rmhandlers.S | 4 +++- > arch/powerpc/kvm/book3s_segment.S | 7 +++++++ > 3 files changed, 10 insertions(+), 4 deletions(-) > > diff --git a/arch/powerpc/kvm/book3s_64_entry.S b/arch/powerpc/kvm/book3s_64_entry.S > index d06e81842368..7a6b060ceed8 100644 > --- a/arch/powerpc/kvm/book3s_64_entry.S > +++ b/arch/powerpc/kvm/book3s_64_entry.S > @@ -78,11 +78,8 @@ do_kvm_interrupt: > beq- .Lmaybe_skip > .Lno_skip: > #ifdef CONFIG_KVM_BOOK3S_HV_POSSIBLE > - 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_SCRATCH2(r13) > beq kvmppc_interrupt_pr > #endif > b kvmppc_interrupt_hv > diff --git a/arch/powerpc/kvm/book3s_hv_rmhandlers.S b/arch/powerpc/kvm/book3s_hv_rmhandlers.S > index f976efb7e4a9..75405ef53238 100644 > --- a/arch/powerpc/kvm/book3s_hv_rmhandlers.S > +++ b/arch/powerpc/kvm/book3s_hv_rmhandlers.S > @@ -1265,6 +1265,7 @@ hdec_soon: > kvmppc_interrupt_hv: > /* > * Register contents: > + * R9 = HSTATE_IN_GUEST > * R12 = (guest CR << 32) | interrupt vector > * R13 = PACA > * guest R12 saved in shadow VCPU SCRATCH0 > @@ -1272,6 +1273,8 @@ kvmppc_interrupt_hv: > * guest R9 saved in HSTATE_SCRATCH2 > */ > /* We're now back in the host but in guest MMU context */ > + cmpwi r9,KVM_GUEST_MODE_HOST_HV > + beq kvmppc_bad_host_intr > li r9, KVM_GUEST_MODE_HOST_HV > stb r9, HSTATE_IN_GUEST(r13) > > @@ -3272,7 +3275,6 @@ END_FTR_SECTION_IFCLR(CPU_FTR_P9_TM_HV_ASSIST) > * cfar is saved in HSTATE_CFAR(r13) > * ppr is saved in HSTATE_PPR(r13) > */ > -.global kvmppc_bad_host_intr > kvmppc_bad_host_intr: > /* > * Switch to the emergency stack, but start half-way down in > diff --git a/arch/powerpc/kvm/book3s_segment.S b/arch/powerpc/kvm/book3s_segment.S > index 1f492aa4c8d6..ef1d88b869bf 100644 > --- a/arch/powerpc/kvm/book3s_segment.S > +++ b/arch/powerpc/kvm/book3s_segment.S > @@ -167,8 +167,15 @@ kvmppc_interrupt_pr: > * R12 = (guest CR << 32) | exit handler id > * R13 = PACA > * HSTATE.SCRATCH0 = guest R12 > + * > + * If HV is possible, additionally: > + * R9 = HSTATE_IN_GUEST > + * HSTATE.SCRATCH2 = guest R9 > */ > #ifdef CONFIG_PPC64 > +#ifdef CONFIG_KVM_BOOK3S_HV_POSSIBLE > + ld r9,HSTATE_SCRATCH2(r13) > +#endif > /* Match 32-bit entry */ > rotldi r12, r12, 32 /* Flip R12 halves for stw */ > stw r12, HSTATE_SCRATCH1(r13) /* CR is now in the low half */ >
Excerpts from Alexey Kardashevskiy's message of March 20, 2021 7:07 pm: > > > On 06/03/2021 02:06, Nicholas Piggin wrote: >> This is not used by PR KVM. >> >> Signed-off-by: Nicholas Piggin <npiggin@gmail.com> > > > Reviewed-by: Alexey Kardashevskiy <aik@ozlabs.ru> > > a small tote - it probably makes sense to move this before 09/41 as this > one removes what 09/41 added to book3s_64_entry.S. Thanks, Thanks. I do realise there's a bit of shuffling around in this part of the series, I'm trying to see if that can be improved a bit. But 9/41 is just moving the code without change which I prefer to do first. This one changes the calling convention for PR which I think is better to do after we have the entry point in a common file. Thanks, Nick > > >> --- >> arch/powerpc/kvm/book3s_64_entry.S | 3 --- >> arch/powerpc/kvm/book3s_hv_rmhandlers.S | 4 +++- >> arch/powerpc/kvm/book3s_segment.S | 7 +++++++ >> 3 files changed, 10 insertions(+), 4 deletions(-) >> >> diff --git a/arch/powerpc/kvm/book3s_64_entry.S b/arch/powerpc/kvm/book3s_64_entry.S >> index d06e81842368..7a6b060ceed8 100644 >> --- a/arch/powerpc/kvm/book3s_64_entry.S >> +++ b/arch/powerpc/kvm/book3s_64_entry.S >> @@ -78,11 +78,8 @@ do_kvm_interrupt: >> beq- .Lmaybe_skip >> .Lno_skip: >> #ifdef CONFIG_KVM_BOOK3S_HV_POSSIBLE >> - 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_SCRATCH2(r13) >> beq kvmppc_interrupt_pr >> #endif >> b kvmppc_interrupt_hv >> diff --git a/arch/powerpc/kvm/book3s_hv_rmhandlers.S b/arch/powerpc/kvm/book3s_hv_rmhandlers.S >> index f976efb7e4a9..75405ef53238 100644 >> --- a/arch/powerpc/kvm/book3s_hv_rmhandlers.S >> +++ b/arch/powerpc/kvm/book3s_hv_rmhandlers.S >> @@ -1265,6 +1265,7 @@ hdec_soon: >> kvmppc_interrupt_hv: >> /* >> * Register contents: >> + * R9 = HSTATE_IN_GUEST >> * R12 = (guest CR << 32) | interrupt vector >> * R13 = PACA >> * guest R12 saved in shadow VCPU SCRATCH0 >> @@ -1272,6 +1273,8 @@ kvmppc_interrupt_hv: >> * guest R9 saved in HSTATE_SCRATCH2 >> */ >> /* We're now back in the host but in guest MMU context */ >> + cmpwi r9,KVM_GUEST_MODE_HOST_HV >> + beq kvmppc_bad_host_intr >> li r9, KVM_GUEST_MODE_HOST_HV >> stb r9, HSTATE_IN_GUEST(r13) >> >> @@ -3272,7 +3275,6 @@ END_FTR_SECTION_IFCLR(CPU_FTR_P9_TM_HV_ASSIST) >> * cfar is saved in HSTATE_CFAR(r13) >> * ppr is saved in HSTATE_PPR(r13) >> */ >> -.global kvmppc_bad_host_intr >> kvmppc_bad_host_intr: >> /* >> * Switch to the emergency stack, but start half-way down in >> diff --git a/arch/powerpc/kvm/book3s_segment.S b/arch/powerpc/kvm/book3s_segment.S >> index 1f492aa4c8d6..ef1d88b869bf 100644 >> --- a/arch/powerpc/kvm/book3s_segment.S >> +++ b/arch/powerpc/kvm/book3s_segment.S >> @@ -167,8 +167,15 @@ kvmppc_interrupt_pr: >> * R12 = (guest CR << 32) | exit handler id >> * R13 = PACA >> * HSTATE.SCRATCH0 = guest R12 >> + * >> + * If HV is possible, additionally: >> + * R9 = HSTATE_IN_GUEST >> + * HSTATE.SCRATCH2 = guest R9 >> */ >> #ifdef CONFIG_PPC64 >> +#ifdef CONFIG_KVM_BOOK3S_HV_POSSIBLE >> + ld r9,HSTATE_SCRATCH2(r13) >> +#endif >> /* Match 32-bit entry */ >> rotldi r12, r12, 32 /* Flip R12 halves for stw */ >> stw r12, HSTATE_SCRATCH1(r13) /* CR is now in the low half */ >> > > -- > Alexey >
diff --git a/arch/powerpc/kvm/book3s_64_entry.S b/arch/powerpc/kvm/book3s_64_entry.S index d06e81842368..7a6b060ceed8 100644 --- a/arch/powerpc/kvm/book3s_64_entry.S +++ b/arch/powerpc/kvm/book3s_64_entry.S @@ -78,11 +78,8 @@ do_kvm_interrupt: beq- .Lmaybe_skip .Lno_skip: #ifdef CONFIG_KVM_BOOK3S_HV_POSSIBLE - 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_SCRATCH2(r13) beq kvmppc_interrupt_pr #endif b kvmppc_interrupt_hv diff --git a/arch/powerpc/kvm/book3s_hv_rmhandlers.S b/arch/powerpc/kvm/book3s_hv_rmhandlers.S index f976efb7e4a9..75405ef53238 100644 --- a/arch/powerpc/kvm/book3s_hv_rmhandlers.S +++ b/arch/powerpc/kvm/book3s_hv_rmhandlers.S @@ -1265,6 +1265,7 @@ hdec_soon: kvmppc_interrupt_hv: /* * Register contents: + * R9 = HSTATE_IN_GUEST * R12 = (guest CR << 32) | interrupt vector * R13 = PACA * guest R12 saved in shadow VCPU SCRATCH0 @@ -1272,6 +1273,8 @@ kvmppc_interrupt_hv: * guest R9 saved in HSTATE_SCRATCH2 */ /* We're now back in the host but in guest MMU context */ + cmpwi r9,KVM_GUEST_MODE_HOST_HV + beq kvmppc_bad_host_intr li r9, KVM_GUEST_MODE_HOST_HV stb r9, HSTATE_IN_GUEST(r13) @@ -3272,7 +3275,6 @@ END_FTR_SECTION_IFCLR(CPU_FTR_P9_TM_HV_ASSIST) * cfar is saved in HSTATE_CFAR(r13) * ppr is saved in HSTATE_PPR(r13) */ -.global kvmppc_bad_host_intr kvmppc_bad_host_intr: /* * Switch to the emergency stack, but start half-way down in diff --git a/arch/powerpc/kvm/book3s_segment.S b/arch/powerpc/kvm/book3s_segment.S index 1f492aa4c8d6..ef1d88b869bf 100644 --- a/arch/powerpc/kvm/book3s_segment.S +++ b/arch/powerpc/kvm/book3s_segment.S @@ -167,8 +167,15 @@ kvmppc_interrupt_pr: * R12 = (guest CR << 32) | exit handler id * R13 = PACA * HSTATE.SCRATCH0 = guest R12 + * + * If HV is possible, additionally: + * R9 = HSTATE_IN_GUEST + * HSTATE.SCRATCH2 = guest R9 */ #ifdef CONFIG_PPC64 +#ifdef CONFIG_KVM_BOOK3S_HV_POSSIBLE + ld r9,HSTATE_SCRATCH2(r13) +#endif /* Match 32-bit entry */ rotldi r12, r12, 32 /* Flip R12 halves for stw */ stw r12, HSTATE_SCRATCH1(r13) /* CR is now in the low half */
This is not used by PR KVM. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> --- arch/powerpc/kvm/book3s_64_entry.S | 3 --- arch/powerpc/kvm/book3s_hv_rmhandlers.S | 4 +++- arch/powerpc/kvm/book3s_segment.S | 7 +++++++ 3 files changed, 10 insertions(+), 4 deletions(-)