diff mbox

[RFC,06/11] kvm tools: ioport: add arch callback to remap IRQ lines for ioport devices

Message ID 1367423416-24640-7-git-send-email-will.deacon@arm.com (mailing list archive)
State New, archived
Headers show

Commit Message

Will Deacon May 1, 2013, 3:50 p.m. UTC
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@arm.com>
---
 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 mbox

Patch

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 */