Re: [PATCH 2/8] KVM: SEV-ES: rename guest_ins_data to sev_pio_data

Maxim Levitsky
2021-10-21T23:12:39Z

On Wed, 2021-10-13 at 12:56 -0400, Paolo Bonzini wrote:
> Since we will be using this for OUTS emulation as well, change the name to
> something that refers to any kind of PIO. Also spell out what it is used
> for, namely SEV-ES.
>
> No functional change intended.
>
> Cc: stable@vger.kernel.org
> Fixes: 7ed9abfe8e9f ("KVM: SVM: Support string IO operations for an SEV-ES guest")
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
> arch/x86/include/asm/kvm_host.h | 2 +-
> arch/x86/kvm/x86.c | 4 ++--
> 2 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
> index f8f48a7ec577..6bed6c416c6c 100644
> --- a/arch/x86/include/asm/kvm_host.h
> +++ b/arch/x86/include/asm/kvm_host.h
> @@ -702,7 +702,7 @@ struct kvm_vcpu_arch {
>
> struct kvm_pio_request pio;
> void *pio_data;
> - void *guest_ins_data;
> + void *sev_pio_data;
>
> u8 event_exit_inst_len;
>
> diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
> index aabd3a2ec1bc..722f5fcf76e1 100644
> --- a/arch/x86/kvm/x86.c
> +++ b/arch/x86/kvm/x86.c
> @@ -12369,7 +12369,7 @@ EXPORT_SYMBOL_GPL(kvm_sev_es_mmio_read);
>
> static int complete_sev_es_emulated_ins(struct kvm_vcpu *vcpu)
> {
> - memcpy(vcpu->arch.guest_ins_data, vcpu->arch.pio_data,
> + memcpy(vcpu->arch.sev_pio_data, vcpu->arch.pio_data,
> vcpu->arch.pio.count * vcpu->arch.pio.size);
> vcpu->arch.pio.count = 0;
>
> @@ -12401,7 +12401,7 @@ static int kvm_sev_es_ins(struct kvm_vcpu *vcpu, unsigned int size,
> if (ret) {
> vcpu->arch.pio.count = 0;
> } else {
> - vcpu->arch.guest_ins_data = data;
> + vcpu->arch.sev_pio_data = data;
> vcpu->arch.complete_userspace_io = complete_sev_es_emulated_ins;
> }
>

It might be worth to mention here why we will soon need this field for the outs emulation:

INS reads the data from the userspace (or in-kernel) PIO emulation which is provided in vcpu->arch.pio_data
which is then copied to GHCB, but for OUTS, the data is pushed from GHCB to userspace/in-kernel PIO emulation,
so there is no need to do anything SEV specific

But if the data is pushed via outs spans more that one page, next few patches will split it, so there will be a need
to save the data pointer.

Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com>

Best regards,
Maxim Levitsky