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;
next 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: linkBe 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.