[tip:tools/kvm] kvm tools: ioport: add arch callback to remap IRQ lines for ioport devices

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Commit-ID:  482e5c8f2ae74b7aa6b75cc7e43db14ef1fcdb0f
Gitweb:     http://git.kernel.org/tip/482e5c8f2ae74b7aa6b75cc7e43db14ef1fcdb0f
Author:     Will Deacon <will.deacon@xxxxxxx>
AuthorDate: Wed, 1 May 2013 16:50:11 +0100
Committer:  Pekka Enberg <penberg@xxxxxxxxxx>
CommitDate: Tue, 14 May 2013 14:18:51 +0300

kvm tools: ioport: add arch callback to remap IRQ lines for ioport devices

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>
Signed-off-by: Pekka Enberg <penberg@xxxxxxxxxx>
---
 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 */
--
To unsubscribe from this list: send the line "unsubscribe linux-tip-commits" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Stable Commits]     [Linux Stable Kernel]     [Linux Kernel]     [Linux USB Devel]     [Linux Video &Media]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux