Now that the vfio device has a trap handler adhering to the MMIO fault
handler prototype, let's switch over to the joint registration routine.

This allows us to get rid of the ioport shim routines.

Signed-off-by: Andre Przywara <[email protected]>
---
 vfio/core.c | 29 ++++++-----------------------
 1 file changed, 6 insertions(+), 23 deletions(-)

diff --git a/vfio/core.c b/vfio/core.c
index f55f1f87..10919101 100644
--- a/vfio/core.c
+++ b/vfio/core.c
@@ -160,25 +160,6 @@ static void vfio_ioport_mmio(struct kvm_cpu *vcpu, u64 
addr, u8 *data, u32 len,
                _vfio_ioport_in(region, offset, data, len);
 }
 
-static bool vfio_ioport_out(struct ioport *ioport, struct kvm_cpu *vcpu,
-                           u16 port, void *data, int len)
-{
-       vfio_ioport_mmio(vcpu, port, data, len, true, ioport->priv);
-       return true;
-}
-
-static bool vfio_ioport_in(struct ioport *ioport, struct kvm_cpu *vcpu,
-                          u16 port, void *data, int len)
-{
-       vfio_ioport_mmio(vcpu, port, data, len, false, ioport->priv);
-       return true;
-}
-
-static struct ioport_operations vfio_ioport_ops = {
-       .io_in  = vfio_ioport_in,
-       .io_out = vfio_ioport_out,
-};
-
 static void vfio_mmio_access(struct kvm_cpu *vcpu, u64 addr, u8 *data, u32 len,
                             u8 is_write, void *ptr)
 {
@@ -223,9 +204,11 @@ static int vfio_setup_trap_region(struct kvm *kvm, struct 
vfio_device *vdev,
                                  struct vfio_region *region)
 {
        if (region->is_ioport) {
-               int port = ioport__register(kvm, region->port_base,
-                                          &vfio_ioport_ops, region->info.size,
-                                          region);
+               int port;
+
+               port = kvm__register_pio(kvm, region->port_base,
+                                        region->info.size, vfio_ioport_mmio,
+                                        region);
                if (port < 0)
                        return port;
                return 0;
@@ -292,7 +275,7 @@ void vfio_unmap_region(struct kvm *kvm, struct vfio_region 
*region)
                munmap(region->host_addr, region->info.size);
                region->host_addr = NULL;
        } else if (region->is_ioport) {
-               ioport__unregister(kvm, region->port_base);
+               kvm__deregister_pio(kvm, region->port_base);
        } else {
                kvm__deregister_mmio(kvm, region->guest_phys_addr);
        }
-- 
2.17.1

_______________________________________________
kvmarm mailing list
[email protected]
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm

Reply via email to