From: Jeremy Fitzhardinge <jeremy@goop.org>
To: Ingo Molnar <mingo@elte.hu>
Cc: linux-kernel@vger.kernel.org,
Xen-devel <xen-devel@lists.xensource.com>,
the arch/x86 maintainers <x86@kernel.org>,
Ian Campbell <ian.campbell@citrix.com>
Subject: [PATCH 32 of 38] xen: use our own eventchannel->irq path
Date: Thu, 13 Nov 2008 11:10:30 -0800 [thread overview]
Message-ID: <8e0d2520b48d674e8a4c.1226603430@abulafia.goop.org> (raw)
In-Reply-To: <patchbomb.1226603398@abulafia.goop.org>
Rather than overloading vectors for event channels, take full
responsibility for mapping an event channel to irq directly. With
this patch Xen has its own irq allocator.
When the kernel gets an event channel upcall, it maps the event
channel number to an irq and injects it into the normal interrupt
path.
Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
---
arch/x86/include/asm/xen/events.h | 6 ------
arch/x86/xen/irq.c | 17 +----------------
drivers/xen/events.c | 22 ++++++++++++++++++++--
3 files changed, 21 insertions(+), 24 deletions(-)
diff --git a/arch/x86/include/asm/xen/events.h b/arch/x86/include/asm/xen/events.h
--- a/arch/x86/include/asm/xen/events.h
+++ b/arch/x86/include/asm/xen/events.h
@@ -15,10 +15,4 @@
return raw_irqs_disabled_flags(regs->flags);
}
-static inline void xen_do_IRQ(int irq, struct pt_regs *regs)
-{
- regs->orig_ax = ~irq;
- do_IRQ(regs);
-}
-
#endif /* _ASM_X86_XEN_EVENTS_H */
diff --git a/arch/x86/xen/irq.c b/arch/x86/xen/irq.c
--- a/arch/x86/xen/irq.c
+++ b/arch/x86/xen/irq.c
@@ -19,21 +19,6 @@
(void)HYPERVISOR_xen_version(0, NULL);
}
-static void __init __xen_init_IRQ(void)
-{
- int i;
-
- /* Create identity vector->irq map */
- for(i = 0; i < NR_VECTORS; i++) {
- int cpu;
-
- for_each_possible_cpu(cpu)
- per_cpu(vector_irq, cpu)[i] = i;
- }
-
- xen_init_IRQ();
-}
-
static unsigned long xen_save_fl(void)
{
struct vcpu_info *vcpu;
@@ -123,7 +108,7 @@
}
static const struct pv_irq_ops xen_irq_ops __initdata = {
- .init_IRQ = __xen_init_IRQ,
+ .init_IRQ = xen_init_IRQ,
.save_fl = xen_save_fl,
.restore_fl = xen_restore_fl,
.irq_disable = xen_irq_disable,
diff --git a/drivers/xen/events.c b/drivers/xen/events.c
--- a/drivers/xen/events.c
+++ b/drivers/xen/events.c
@@ -29,6 +29,7 @@
#include <asm/ptrace.h>
#include <asm/irq.h>
+#include <asm/idle.h>
#include <asm/sync_bitops.h>
#include <asm/xen/hypercall.h>
#include <asm/xen/hypervisor.h>
@@ -503,6 +504,24 @@
}
+static void xen_do_irq(unsigned irq, struct pt_regs *regs)
+{
+ struct pt_regs *old_regs = set_irq_regs(regs);
+
+ if (WARN_ON(irq == -1))
+ return;
+
+ exit_idle();
+ irq_enter();
+
+ //printk("cpu %d handling irq %d\n", smp_processor_id(), info->irq);
+ handle_irq(irq, regs);
+
+ irq_exit();
+
+ set_irq_regs(old_regs);
+}
+
/*
* Search the CPUs pending events bitmasks. For each one found, map
* the event number to an irq, and feed it into do_IRQ() for
@@ -543,8 +562,7 @@
int port = (word_idx * BITS_PER_LONG) + bit_idx;
int irq = evtchn_to_irq[port];
- if (irq != -1)
- xen_do_IRQ(irq, regs);
+ xen_do_irq(irq, regs);
}
}
next prev parent reply other threads:[~2008-11-13 19:47 UTC|newest]
Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-13 19:09 [PATCH 00 of 38] xen: add more Xen dom0 support Jeremy Fitzhardinge
2008-11-13 19:09 ` [PATCH 01 of 38] xen: various whitespace and other formatting cleanups Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 02 of 38] x86: remove unused iommu_nr_pages Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 03 of 38] swiotlb: allow architectures to override swiotlb pool allocation Jeremy Fitzhardinge
2008-11-14 9:01 ` [Xen-devel] [PATCH 03 of 38] swiotlb: allow architectures tooverride " Jan Beulich
2008-11-14 19:33 ` Jeremy Fitzhardinge
2008-11-17 8:04 ` Chris Lalancette
2008-11-17 8:44 ` Keir Fraser
2008-11-17 9:15 ` [Xen-devel] [PATCH 03 of 38] swiotlb: allow architectures tooverrideswiotlb " Jan Beulich
2008-11-13 19:10 ` [PATCH 04 of 38] swiotlb: move some definitions to header Jeremy Fitzhardinge
2008-11-17 3:48 ` FUJITA Tomonori
2008-11-17 11:52 ` Ian Campbell
2008-11-13 19:10 ` [PATCH 05 of 38] swiotlb: allow architectures to override virt<->bus<->virt conversions Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 06 of 38] xen: clean up asm-x86/xen/hypervisor.h Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 07 of 38] x86: add io_apic_ops Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 08 of 38] x86: make apic_* operations inline functions Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 09 of 38] x86: make sure we really have an hpet mapping before using it Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 10 of 38] x86: add handle_irq() to allow interrupt injection Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 11 of 38] x86: define no-op exit_idle() on 32-bit Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 12 of 38] xen/dom0: handle acpi lapic parsing in Xen dom0 Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 13 of 38] x86: unstatic mp_find_ioapic so it can be used elsewhere Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 14 of 38] x86: add mp_find_ioapic_pin Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 15 of 38] x86: unstatic ioapic entry funcs Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 16 of 38] x86: include linux/init.h in asm/numa_64.h Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 17 of 38] x86: add swiotlb allocation functions Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 18 of 38] x86: unify pci iommu setup and allow swiotlb to compile for 32 bit Jeremy Fitzhardinge
2008-11-17 3:48 ` FUJITA Tomonori
2008-11-17 16:16 ` Ian Campbell
2008-11-19 2:19 ` FUJITA Tomonori
2008-11-19 13:48 ` Ian Campbell
2008-11-21 14:21 ` Ian Campbell
2008-11-22 1:49 ` FUJITA Tomonori
2008-11-24 11:41 ` Ian Campbell
2008-11-26 2:53 ` FUJITA Tomonori
2008-11-26 9:36 ` Ian Campbell
2008-11-27 3:43 ` FUJITA Tomonori
2008-11-27 17:14 ` Ian Campbell
2008-11-28 6:28 ` FUJITA Tomonori
2008-11-13 19:10 ` [PATCH 19 of 38] x86: add arch specific version of the swiotlb virt<->bus<->virt functions Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 20 of 38] xen dom0: Make hvc_xen console work for dom0 Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 21 of 38] xen dom0: Initialize xenbus " Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 22 of 38] xen dom0: Set up basic IO permissions " Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 23 of 38] xen-dom0: only selectively disable cpu features Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 24 of 38] xen dom0: Add support for the platform_ops hypercall Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 25 of 38] xen mtrr: Add mtrr_ops support for Xen mtrr Jeremy Fitzhardinge
2008-11-13 20:28 ` Mark McLoughlin
2008-11-14 0:35 ` Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 26 of 38] xen: forcibly disable PAT support Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 27 of 38] xen/dom0: use _PAGE_IOMAP in ioremap to do machine mappings Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 28 of 38] paravirt/xen: add pvop for page_is_ram Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 29 of 38] xen: create dummy ioapic mapping Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 30 of 38] xen: implement io_apic_ops Jeremy Fitzhardinge
2008-11-20 8:33 ` Simon Horman
2008-11-20 17:07 ` Jeremy Fitzhardinge
2008-11-20 9:35 ` Ingo Molnar
2008-11-20 17:00 ` Jeremy Fitzhardinge
2008-11-20 19:22 ` Ingo Molnar
2008-11-20 19:29 ` Yinghai Lu
2008-11-20 19:39 ` Jeremy Fitzhardinge
2008-11-20 19:40 ` Yinghai Lu
2008-11-20 19:38 ` Jeremy Fitzhardinge
2008-11-21 1:30 ` H. Peter Anvin
2008-11-20 20:22 ` Eric W. Biederman
2008-11-20 21:32 ` Jeremy Fitzhardinge
2008-11-21 0:58 ` Eric W. Biederman
2008-11-21 1:16 ` Jeremy Fitzhardinge
2008-11-21 4:27 ` Eric W. Biederman
2008-11-24 19:18 ` Jeremy Fitzhardinge
2008-11-24 22:02 ` Eric W. Biederman
2008-11-13 19:10 ` [PATCH 31 of 38] xen: set irq_chip disable Jeremy Fitzhardinge
2008-11-13 19:10 ` Jeremy Fitzhardinge [this message]
2008-11-13 19:10 ` [PATCH 33 of 38] xen: pack all irq-related info together Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 34 of 38] xen: remove irq bindcount Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 35 of 38] xen: implement pirq type event channels Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 36 of 38] xen: route hardware irqs via Xen Jeremy Fitzhardinge
2008-11-20 9:31 ` Ingo Molnar
2008-11-20 17:06 ` Jeremy Fitzhardinge
2008-11-21 7:17 ` Simon Horman
2008-11-13 19:10 ` [PATCH 37 of 38] xen: bind pirq to vector and event channel Jeremy Fitzhardinge
2008-11-13 19:10 ` [PATCH 38 of 38] xen: make sure that softirqs get handled at the end of event processing Jeremy Fitzhardinge
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=8e0d2520b48d674e8a4c.1226603430@abulafia.goop.org \
--to=jeremy@goop.org \
--cc=ian.campbell@citrix.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=x86@kernel.org \
--cc=xen-devel@lists.xensource.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®