[RFC PATCH 1/9] KVM: PPC: Book3S 64: move KVM interrupt entry to a common entry point

Nicholas Piggin npiggin at gmail.com
Fri Feb 19 19:03:12 AEDT 2021


Excerpts from Daniel Axtens's message of February 19, 2021 3:18 pm:
> Hi Nick,
> 
>> +++ b/arch/powerpc/kvm/book3s_64_entry.S
>> @@ -0,0 +1,34 @@
>> +#include <asm/cache.h>
>> +#include <asm/ppc_asm.h>
>> +#include <asm/kvm_asm.h>
>> +#include <asm/reg.h>
>> +#include <asm/asm-offsets.h>
>> +#include <asm/kvm_book3s_asm.h>
>> +
>> +/*
>> + * We come here from the first-level interrupt handlers.
>> + */
>> +.global	kvmppc_interrupt
>> +.balign IFETCH_ALIGN_BYTES
>> +kvmppc_interrupt:
>> +	/*
>> +	 * Register contents:
> 
> Clearly r9 contains some data at this point, and I think it's guest r9
> because of what you say later on in
> book3s_hv_rmhandlers.S::kvmppc_interrupt_hv. Is that right?

Yes I hope so.

> Should that
> be documented in this comment as well?

Normally it can be assumed the registers not explicitly enumerated would 
be unchanged from the interrupted context, so they would all contain 
guest values. I added the R9 contents comment later because I changed
it later.

> 
>> +	 * R12		= (guest CR << 32) | interrupt vector
>> +	 * R13		= PACA
>> +	 * guest R12 saved in shadow VCPU SCRATCH0
>> +	 * guest R13 saved in SPRN_SCRATCH0
>> +	 */
>> +#ifdef CONFIG_KVM_BOOK3S_HV_POSSIBLE
>> +	std	r9, HSTATE_SCRATCH2(r13)
>> +	lbz	r9, HSTATE_IN_GUEST(r13)
>> +	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
>> +#else
>> +	b	kvmppc_interrupt_pr
>> +#endif
> 
> Apart from that I had a look and convinced myself that the code will
> behave the same as before. On that basis:
> 
> Reviewed-by: Daniel Axtens <dja at axtens.net>
> 
> Kind regards,
> Daniel

Thanks,
Nick
> 


More information about the Linuxppc-dev mailing list