Hi Andre,

Looks correct to me:

Reviewed-by: Alexandru Elisei <[email protected]>

Thanks,

Alex

On 12/10/20 2:29 PM, Andre Przywara wrote:
> 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 <[email protected]>
> ---
>  hw/serial.c | 36 +++---------------------------------
>  1 file changed, 3 insertions(+), 33 deletions(-)
>
> diff --git a/hw/serial.c b/hw/serial.c
> index 2907089c..d840eebc 100644
> --- a/hw/serial.c
> +++ b/hw/serial.c
> @@ -397,31 +397,6 @@ static void serial8250_mmio(struct kvm_cpu *vcpu, u64 
> addr, u8 *data, u32 len,
>       }
>  }
>  
> -static bool serial8250_ioport_out(struct ioport *ioport, struct kvm_cpu 
> *vcpu,
> -                               u16 port, void *data, int size)
> -{
> -     struct serial8250_device *dev = ioport->priv;
> -     u8 value = ioport__read8(data);
> -
> -     serial8250_mmio(vcpu, port, &value, 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;
> -     u8 value = 0;
> -
> -
> -     serial8250_mmio(vcpu, port, &value, 1, false, dev);
> -
> -     ioport__write8(data, value);
> -
> -     return true;
> -}
> -
>  #ifdef CONFIG_HAS_LIBFDT
>  
>  char *fdt_stdout_path = NULL;
> @@ -459,11 +434,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)
>  {
> @@ -474,7 +444,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;
>  }
> @@ -497,7 +467,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);
>       }
>  
> @@ -513,7 +483,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);
_______________________________________________
kvmarm mailing list
[email protected]
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm

Reply via email to