If an architecture other than x86 wants to make use of ioport devices, the interrupt lines will likely need remapping from their fixed values. This patch allows an architecture callback, ioport__map_irq, to map interrupts as appropriate. Signed-off-by: Will Deacon <will.deacon@xxxxxxx> --- tools/kvm/arm/ioport.c | 7 +++++++ tools/kvm/hw/serial.c | 1 + tools/kvm/include/kvm/ioport.h | 1 + tools/kvm/powerpc/ioport.c | 4 ++++ tools/kvm/x86/ioport.c | 4 ++++ 5 files changed, 17 insertions(+) diff --git a/tools/kvm/arm/ioport.c b/tools/kvm/arm/ioport.c index 3c03fa0..74ee10e 100644 --- a/tools/kvm/arm/ioport.c +++ b/tools/kvm/arm/ioport.c @@ -1,5 +1,12 @@ #include "kvm/ioport.h" +#include "arm-common/gic.h" + void ioport__setup_arch(struct kvm *kvm) { } + +void ioport__map_irq(u8 *irq) +{ + *irq = gic__alloc_irqnum(); +} diff --git a/tools/kvm/hw/serial.c b/tools/kvm/hw/serial.c index 18bf569..384ee37 100644 --- a/tools/kvm/hw/serial.c +++ b/tools/kvm/hw/serial.c @@ -402,6 +402,7 @@ static int serial8250__device_init(struct kvm *kvm, struct serial8250_device *de { int r; + ioport__map_irq(&dev->irq); r = ioport__register(kvm, dev->iobase, &serial8250_ops, 8, NULL); kvm__irq_line(kvm, dev->irq, 0); diff --git a/tools/kvm/include/kvm/ioport.h b/tools/kvm/include/kvm/ioport.h index 6660acb..1556dd3 100644 --- a/tools/kvm/include/kvm/ioport.h +++ b/tools/kvm/include/kvm/ioport.h @@ -30,6 +30,7 @@ struct ioport_operations { }; void ioport__setup_arch(struct kvm *kvm); +void ioport__map_irq(u8 *irq); int ioport__register(struct kvm *kvm, u16 port, struct ioport_operations *ops, int count, void *param); diff --git a/tools/kvm/powerpc/ioport.c b/tools/kvm/powerpc/ioport.c index 264fb7e..58dc625 100644 --- a/tools/kvm/powerpc/ioport.c +++ b/tools/kvm/powerpc/ioport.c @@ -16,3 +16,7 @@ void ioport__setup_arch(struct kvm *kvm) { /* PPC has no legacy ioports to set up */ } + +void ioport__map_irq(u8 *irq) +{ +} diff --git a/tools/kvm/x86/ioport.c b/tools/kvm/x86/ioport.c index 824ef25..03a1286 100644 --- a/tools/kvm/x86/ioport.c +++ b/tools/kvm/x86/ioport.c @@ -65,6 +65,10 @@ static struct ioport_operations ps2_control_a_ops = { .io_out = dummy_io_out, }; +void ioport__map_irq(u8 *irq) +{ +} + void ioport__setup_arch(struct kvm *kvm) { /* Legacy ioport setup */ -- 1.8.0 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html