On Fri, 2021-10-22 at 11:36 -0400, Paolo Bonzini wrote: > Now all callers except emulator_pio_in_emulated are using > __emulator_pio_in/complete_emulator_pio_in explicitly. > Move the "either copy the result or attempt PIO" logic in > emulator_pio_in_emulated, and rename __emulator_pio_in to > just emulator_pio_in. > > Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> > --- > arch/x86/kvm/x86.c | 22 ++++++++-------------- > 1 file changed, 8 insertions(+), 14 deletions(-) > > diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c > index 42826087afd9..c3a2f479604d 100644 > --- a/arch/x86/kvm/x86.c > +++ b/arch/x86/kvm/x86.c > @@ -6927,7 +6927,7 @@ static int emulator_pio_in_out(struct kvm_vcpu *vcpu, int size, > return 0; > } > > -static int __emulator_pio_in(struct kvm_vcpu *vcpu, int size, > +static int emulator_pio_in(struct kvm_vcpu *vcpu, int size, > unsigned short port, void *val, unsigned int count) > { > int r = emulator_pio_in_out(vcpu, size, port, val, count, true); > @@ -6946,27 +6946,21 @@ static void complete_emulator_pio_in(struct kvm_vcpu *vcpu, void *val) > vcpu->arch.pio.count = 0; > } > > -static int emulator_pio_in(struct kvm_vcpu *vcpu, int size, > - unsigned short port, void *val, unsigned int count) > +static int emulator_pio_in_emulated(struct x86_emulate_ctxt *ctxt, > + int size, unsigned short port, void *val, > + unsigned int count) > { > + struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt); > if (vcpu->arch.pio.count) { > /* Complete previous iteration. */ > WARN_ON(count != vcpu->arch.pio.count); > complete_emulator_pio_in(vcpu, val); > return 1; > } else { > - return __emulator_pio_in(vcpu, size, port, val, count); > + return emulator_pio_in(vcpu, size, port, val, count); > } > } > > -static int emulator_pio_in_emulated(struct x86_emulate_ctxt *ctxt, > - int size, unsigned short port, void *val, > - unsigned int count) > -{ > - return emulator_pio_in(emul_to_vcpu(ctxt), size, port, val, count); > - > -} > - > static int emulator_pio_out(struct kvm_vcpu *vcpu, int size, > unsigned short port, const void *val, > unsigned int count) > @@ -8076,7 +8070,7 @@ static int kvm_fast_pio_in(struct kvm_vcpu *vcpu, int size, > /* For size less than 4 we merge, else we zero extend */ > val = (size < 4) ? kvm_rax_read(vcpu) : 0; > > - ret = __emulator_pio_in(vcpu, size, port, &val, 1); > + ret = emulator_pio_in(vcpu, size, port, &val, 1); > if (ret) { > kvm_rax_write(vcpu, val); > return ret; > @@ -12436,7 +12430,7 @@ static int kvm_sev_es_ins(struct kvm_vcpu *vcpu, unsigned int size, > for (;;) { > unsigned int count = > min_t(unsigned int, PAGE_SIZE / size, vcpu->arch.sev_pio_count); > - if (!__emulator_pio_in(vcpu, size, port, vcpu->arch.sev_pio_data, count)) > + if (!emulator_pio_in(vcpu, size, port, vcpu->arch.sev_pio_data, count)) > break; > > /* Emulation done by the kernel. */ Reviewed-by: Maxim Levitsky <mlevitsk@xxxxxxxxxx> Best regards, Maxim Levitsky