KVM: s390: use cookies for ioeventfd
Make use of cookies for the virtio ccw notification hypercall to speed up lookup of devices on the io bus. Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com> [Small fix to a comment. - Paolo] Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
126a5af520
commit
85dfe87e24
|
@ -119,12 +119,21 @@ static int __diag_virtio_hypercall(struct kvm_vcpu *vcpu)
|
|||
* The layout is as follows:
|
||||
* - gpr 2 contains the subchannel id (passed as addr)
|
||||
* - gpr 3 contains the virtqueue index (passed as datamatch)
|
||||
* - gpr 4 contains the index on the bus (optionally)
|
||||
*/
|
||||
ret = kvm_io_bus_write(vcpu->kvm, KVM_VIRTIO_CCW_NOTIFY_BUS,
|
||||
ret = kvm_io_bus_write_cookie(vcpu->kvm, KVM_VIRTIO_CCW_NOTIFY_BUS,
|
||||
vcpu->run->s.regs.gprs[2],
|
||||
8, &vcpu->run->s.regs.gprs[3]);
|
||||
8, &vcpu->run->s.regs.gprs[3],
|
||||
vcpu->run->s.regs.gprs[4]);
|
||||
srcu_read_unlock(&vcpu->kvm->srcu, idx);
|
||||
/* kvm_io_bus_write returns -EOPNOTSUPP if it found no match. */
|
||||
|
||||
/*
|
||||
* Return cookie in gpr 2, but don't overwrite the register if the
|
||||
* diagnose will be handled by userspace.
|
||||
*/
|
||||
if (ret != -EOPNOTSUPP)
|
||||
vcpu->run->s.regs.gprs[2] = ret;
|
||||
/* kvm_io_bus_write_cookie returns -EOPNOTSUPP if it found no match. */
|
||||
return ret < 0 ? ret : 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue