[PATCH] xen: dom0 apic programming hooks

From: Jeremy Fitzhardinge
Date: Fri Feb 27 2009 - 21:14:24 EST



This series implements the hooks requires for interrupt management.

The relationship between Xen and the dom0 kernel with respect to the
interrupt hardware is interesting. Xen owns the local apics,
but the dom0 kernel is responsible for managing the IO apics.

We hook acpi_register_gsi so that when an interrupt is being
routed, we intercept the routing. Given a gsi, we allocate
ask Xen to allocate a vector for the particular io_apic+pin,
set up a pirq event channel for that vector, and route the
event channel into the normal interrupt pathways.

We reserve a range of irq space so we can 1:1 map irqs to gsis,
and then use higher irqs for Xen's event-channel-only interrupt
sources.

Despite being responsible for controlling them, dom0 kernel doesn't
have a real mapping of the IO APICs, and so must program their registers
with hypercalls. At the moment this is just done with straightforward
hooks in io_apic_read/write/etc. We could also use a io_apic_ops-style
approach, but there's not much point if there are no other users.

This series may be pulled from:

The following changes since commit 59586d42b3accf0be025139066fcd08ed96de425:
Jeremy Fitzhardinge (1):
xen/dom0/core: fix mismerge miscompilation

are available in the git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen.git push/xen/dom0/apic

Ian Campbell (1):
xen: pre-initialize legacy irqs early

Jeremy Fitzhardinge (9):
xen/dom0: handle acpi lapic parsing in Xen dom0
xen: hook io_apic read/write operations
xen: create dummy ioapic mapping
xen: implement pirq type event channels
x86/io_apic: add get_nr_irqs_gsi()
xen/apic: identity map gsi->irqs
xen: direct irq registration to pirq event channels
xen: bind pirq to vector and event channel
xen/apic: program the apic triggering and polarity properly

arch/x86/include/asm/io_apic.h | 7 +
arch/x86/include/asm/xen/pci.h | 13 ++
arch/x86/kernel/acpi/boot.c | 18 +++-
arch/x86/kernel/io_apic.c | 37 +++++-
arch/x86/xen/Kconfig | 11 ++
arch/x86/xen/Makefile | 3 +-
arch/x86/xen/apic.c | 57 +++++++++
arch/x86/xen/enlighten.c | 2 +
arch/x86/xen/mmu.c | 10 ++
arch/x86/xen/pci.c | 83 +++++++++++++
arch/x86/xen/xen-ops.h | 6 +
drivers/xen/events.c | 260 +++++++++++++++++++++++++++++++++++++++-
include/xen/events.h | 22 ++++
13 files changed, 521 insertions(+), 8 deletions(-)
create mode 100644 arch/x86/include/asm/xen/pci.h
create mode 100644 arch/x86/xen/apic.c
create mode 100644 arch/x86/xen/pci.c

Thanks,
J
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/