All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jes Sorensen <jes@sgi.com>
To: Avi Kivity <avi@redhat.com>
Cc: "Zhang, Xiantao" <xiantao.zhang@intel.com>,
	"kvm-ia64@vger.kernel.org" <kvm-ia64@vger.kernel.org>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>
Subject: [patch] fix irq routing by moving it to the correct place
Date: Wed, 06 May 2009 16:11:43 +0200	[thread overview]
Message-ID: <4A019A9F.2010007@sgi.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 273 bytes --]

Hi,

Some freak :-) put x86 specific irq routing into the generic code path,
which obviously won't work on non-x86 systems.

This patch creates kvm_arch_init_irq_routing() and moves the x86
gibberish to it's correct location :-)

Now I have networking again!

Cheers,
Jes


[-- Attachment #2: 0006-qemu-kvm-irq-routing.patch --]
[-- Type: text/x-patch, Size: 3276 bytes --]

Platform specific IRQ routing doesn't belong in the generic codepath.
Create kvm_arch_init_irq_routing() and move the x86 specific routing
setup to the appropriate place.

With this interrupts are delivered again on ia64.

Signed-off-by: Jes Sorensen <jes@sgi.com>

---
 qemu-kvm-ia64.c |    4 ++++
 qemu-kvm-x86.c  |   30 ++++++++++++++++++++++++++++++
 qemu-kvm.c      |   23 ++---------------------
 qemu-kvm.h      |    2 ++
 4 files changed, 38 insertions(+), 21 deletions(-)

Index: qemu-kvm/qemu-kvm-ia64.c
===================================================================
--- qemu-kvm.orig/qemu-kvm-ia64.c
+++ qemu-kvm/qemu-kvm-ia64.c
@@ -144,3 +144,7 @@
     struct ioperm_data *data = _data;
     ioperm(data->start_port, data->num, data->turn_on);
 }
+
+void kvm_arch_init_irq_routing(void)
+{
+}
Index: qemu-kvm/qemu-kvm-x86.c
===================================================================
--- qemu-kvm.orig/qemu-kvm-x86.c
+++ qemu-kvm/qemu-kvm-x86.c
@@ -879,3 +879,33 @@
         return true;
     return false;
 }
+
+/*
+ * Setup x86 specific IRQ routing
+ */
+void kvm_arch_init_irq_routing(void)
+{
+    int i;
+
+    if (kvm_irqchip && kvm_has_gsi_routing(kvm_context)) {
+        kvm_clear_gsi_routes(kvm_context);
+        for (i = 0; i < 8; ++i) {
+            if (i == 2)
+                continue;
+            r = kvm_add_irq_route(kvm_context, i, KVM_IRQCHIP_PIC_MASTER, i);
+            if (r < 0)
+                return r;
+        }
+        for (i = 8; i < 16; ++i) {
+            r = kvm_add_irq_route(kvm_context, i, KVM_IRQCHIP_PIC_SLAVE, i - 8);
+            if (r < 0)
+                return r;
+        }
+        for (i = 0; i < 24; ++i) {
+            r = kvm_add_irq_route(kvm_context, i, KVM_IRQCHIP_IOAPIC, i);
+            if (r < 0)
+                return r;
+        }
+        kvm_commit_irq_routes(kvm_context);
+    }
+}
Index: qemu-kvm/qemu-kvm.c
===================================================================
--- qemu-kvm.orig/qemu-kvm.c
+++ qemu-kvm/qemu-kvm.c
@@ -792,27 +792,8 @@
         }
     }
 
-    if (kvm_irqchip && kvm_has_gsi_routing(kvm_context)) {
-        kvm_clear_gsi_routes(kvm_context);
-        for (i = 0; i < 8; ++i) {
-            if (i == 2)
-                continue;
-            r = kvm_add_irq_route(kvm_context, i, KVM_IRQCHIP_PIC_MASTER, i);
-            if (r < 0)
-                return r;
-        }
-        for (i = 8; i < 16; ++i) {
-            r = kvm_add_irq_route(kvm_context, i, KVM_IRQCHIP_PIC_SLAVE, i - 8);
-            if (r < 0)
-                return r;
-        }
-        for (i = 0; i < 24; ++i) {
-            r = kvm_add_irq_route(kvm_context, i, KVM_IRQCHIP_IOAPIC, i);
-            if (r < 0)
-                return r;
-        }
-        kvm_commit_irq_routes(kvm_context);
-    }
+    kvm_arch_init_irq_routing();
+
     return 0;
 }
 
Index: qemu-kvm/qemu-kvm.h
===================================================================
--- qemu-kvm.orig/qemu-kvm.h
+++ qemu-kvm/qemu-kvm.h
@@ -126,6 +126,8 @@
 int kvm_coalesce_mmio_region(target_phys_addr_t start, ram_addr_t size);
 int kvm_uncoalesce_mmio_region(target_phys_addr_t start, ram_addr_t size);
 
+void kvm_arch_init_irq_routing(void);
+
 #ifdef USE_KVM_DEVICE_ASSIGNMENT
 struct ioperm_data;
 

WARNING: multiple messages have this Message-ID (diff)
From: Jes Sorensen <jes@sgi.com>
To: kvm-ia64@vger.kernel.org
Subject: [patch] fix irq routing by moving it to the correct place
Date: Wed, 06 May 2009 14:11:43 +0000	[thread overview]
Message-ID: <4A019A9F.2010007@sgi.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 273 bytes --]

Hi,

Some freak :-) put x86 specific irq routing into the generic code path,
which obviously won't work on non-x86 systems.

This patch creates kvm_arch_init_irq_routing() and moves the x86
gibberish to it's correct location :-)

Now I have networking again!

Cheers,
Jes


[-- Attachment #2: 0006-qemu-kvm-irq-routing.patch --]
[-- Type: text/x-patch, Size: 3276 bytes --]

Platform specific IRQ routing doesn't belong in the generic codepath.
Create kvm_arch_init_irq_routing() and move the x86 specific routing
setup to the appropriate place.

With this interrupts are delivered again on ia64.

Signed-off-by: Jes Sorensen <jes@sgi.com>

---
 qemu-kvm-ia64.c |    4 ++++
 qemu-kvm-x86.c  |   30 ++++++++++++++++++++++++++++++
 qemu-kvm.c      |   23 ++---------------------
 qemu-kvm.h      |    2 ++
 4 files changed, 38 insertions(+), 21 deletions(-)

Index: qemu-kvm/qemu-kvm-ia64.c
===================================================================
--- qemu-kvm.orig/qemu-kvm-ia64.c
+++ qemu-kvm/qemu-kvm-ia64.c
@@ -144,3 +144,7 @@
     struct ioperm_data *data = _data;
     ioperm(data->start_port, data->num, data->turn_on);
 }
+
+void kvm_arch_init_irq_routing(void)
+{
+}
Index: qemu-kvm/qemu-kvm-x86.c
===================================================================
--- qemu-kvm.orig/qemu-kvm-x86.c
+++ qemu-kvm/qemu-kvm-x86.c
@@ -879,3 +879,33 @@
         return true;
     return false;
 }
+
+/*
+ * Setup x86 specific IRQ routing
+ */
+void kvm_arch_init_irq_routing(void)
+{
+    int i;
+
+    if (kvm_irqchip && kvm_has_gsi_routing(kvm_context)) {
+        kvm_clear_gsi_routes(kvm_context);
+        for (i = 0; i < 8; ++i) {
+            if (i == 2)
+                continue;
+            r = kvm_add_irq_route(kvm_context, i, KVM_IRQCHIP_PIC_MASTER, i);
+            if (r < 0)
+                return r;
+        }
+        for (i = 8; i < 16; ++i) {
+            r = kvm_add_irq_route(kvm_context, i, KVM_IRQCHIP_PIC_SLAVE, i - 8);
+            if (r < 0)
+                return r;
+        }
+        for (i = 0; i < 24; ++i) {
+            r = kvm_add_irq_route(kvm_context, i, KVM_IRQCHIP_IOAPIC, i);
+            if (r < 0)
+                return r;
+        }
+        kvm_commit_irq_routes(kvm_context);
+    }
+}
Index: qemu-kvm/qemu-kvm.c
===================================================================
--- qemu-kvm.orig/qemu-kvm.c
+++ qemu-kvm/qemu-kvm.c
@@ -792,27 +792,8 @@
         }
     }
 
-    if (kvm_irqchip && kvm_has_gsi_routing(kvm_context)) {
-        kvm_clear_gsi_routes(kvm_context);
-        for (i = 0; i < 8; ++i) {
-            if (i == 2)
-                continue;
-            r = kvm_add_irq_route(kvm_context, i, KVM_IRQCHIP_PIC_MASTER, i);
-            if (r < 0)
-                return r;
-        }
-        for (i = 8; i < 16; ++i) {
-            r = kvm_add_irq_route(kvm_context, i, KVM_IRQCHIP_PIC_SLAVE, i - 8);
-            if (r < 0)
-                return r;
-        }
-        for (i = 0; i < 24; ++i) {
-            r = kvm_add_irq_route(kvm_context, i, KVM_IRQCHIP_IOAPIC, i);
-            if (r < 0)
-                return r;
-        }
-        kvm_commit_irq_routes(kvm_context);
-    }
+    kvm_arch_init_irq_routing();
+
     return 0;
 }
 
Index: qemu-kvm/qemu-kvm.h
===================================================================
--- qemu-kvm.orig/qemu-kvm.h
+++ qemu-kvm/qemu-kvm.h
@@ -126,6 +126,8 @@
 int kvm_coalesce_mmio_region(target_phys_addr_t start, ram_addr_t size);
 int kvm_uncoalesce_mmio_region(target_phys_addr_t start, ram_addr_t size);
 
+void kvm_arch_init_irq_routing(void);
+
 #ifdef USE_KVM_DEVICE_ASSIGNMENT
 struct ioperm_data;
 

             reply	other threads:[~2009-05-06 14:11 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-06 14:11 Jes Sorensen [this message]
2009-05-06 14:11 ` [patch] fix irq routing by moving it to the correct place Jes Sorensen
2009-05-07  1:19 ` Zhang, Xiantao
2009-05-07  1:19   ` Zhang, Xiantao
2009-05-07  9:35 ` Avi Kivity
2009-05-07  9:35   ` Avi Kivity
2009-05-07 11:44   ` Avi Kivity
2009-05-07 11:44     ` Avi Kivity

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4A019A9F.2010007@sgi.com \
    --to=jes@sgi.com \
    --cc=avi@redhat.com \
    --cc=kvm-ia64@vger.kernel.org \
    --cc=kvm@vger.kernel.org \
    --cc=xiantao.zhang@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.