Now that the serial 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 <andre.przywara@xxxxxxx> Reviewed-by: Alexandru Elisei <alexandru.elisei@xxxxxxx> --- hw/serial.c | 31 +++---------------------------- 1 file changed, 3 insertions(+), 28 deletions(-) diff --git a/hw/serial.c b/hw/serial.c index 3f797452..16af493b 100644 --- a/hw/serial.c +++ b/hw/serial.c @@ -393,26 +393,6 @@ static void serial8250_mmio(struct kvm_cpu *vcpu, u64 addr, u8 *data, u32 len, serial8250_in(dev, vcpu, addr - dev->iobase, data); } -static bool serial8250_ioport_out(struct ioport *ioport, struct kvm_cpu *vcpu, - u16 port, void *data, int size) -{ - struct serial8250_device *dev = ioport->priv; - - serial8250_mmio(vcpu, port, data, 1, true, dev); - - return true; -} - -static bool serial8250_ioport_in(struct ioport *ioport, struct kvm_cpu *vcpu, - u16 port, void *data, int size) -{ - struct serial8250_device *dev = ioport->priv; - - serial8250_mmio(vcpu, port, data, 1, false, dev); - - return true; -} - #ifdef CONFIG_HAS_LIBFDT char *fdt_stdout_path = NULL; @@ -450,11 +430,6 @@ void serial8250_generate_fdt_node(void *fdt, struct device_header *dev_hdr, } #endif -static struct ioport_operations serial8250_ops = { - .io_in = serial8250_ioport_in, - .io_out = serial8250_ioport_out, -}; - static int serial8250__device_init(struct kvm *kvm, struct serial8250_device *dev) { @@ -465,7 +440,7 @@ static int serial8250__device_init(struct kvm *kvm, return r; ioport__map_irq(&dev->irq); - r = ioport__register(kvm, dev->iobase, &serial8250_ops, 8, dev); + r = kvm__register_pio(kvm, dev->iobase, 8, serial8250_mmio, dev); return r; } @@ -488,7 +463,7 @@ cleanup: for (j = 0; j <= i; j++) { struct serial8250_device *dev = &devices[j]; - ioport__unregister(kvm, dev->iobase); + kvm__deregister_pio(kvm, dev->iobase); device__unregister(&dev->dev_hdr); } @@ -504,7 +479,7 @@ int serial8250__exit(struct kvm *kvm) for (i = 0; i < ARRAY_SIZE(devices); i++) { struct serial8250_device *dev = &devices[i]; - r = ioport__unregister(kvm, dev->iobase); + r = kvm__deregister_pio(kvm, dev->iobase); if (r < 0) return r; device__unregister(&dev->dev_hdr); -- 2.17.5