On Thu, Nov 13, 2008 at 11:10:34AM -0800, Jeremy Fitzhardinge wrote:
> This patch puts the hooks into place so that when the interrupt
> subsystem registers an irq, it gets routed via Xen (if we're running
> under Xen).
> 
> The first step is to get a gsi for a particular device+pin.  We use
> the normal acpi interrupt routing to do the mapping.
> 
> Normally the gsi number is used directly as the irq number.  We can't
> do that since we also have irqs for non-hardware event channels, and
> so we must share the irq space between them.  A given gsi is only
> allocated a single irq, so re-registering a gsi will simply return the
> same irq.
> 
> We therefore allocate an irq for a given gsi, and return that.  As a
> special case, we reserve the first 16 irqs for identity-mapping legacy
> irqs, since there's a fair amount of code which assumes that.
> 
> Having allocated an irq, we ask Xen to allocate a vector, and then
> bind that pirq/vector to an event channel.  When the hardware raises
> an interrupt on a vector, Xen signals us on the corresponding event
> channel, which gets routed to the irq and delivered to the appropriate
> device driver.
> 
> This patch does everything except set up the IO APIC pin routing to
> the vector.
> 
> Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@xxxxxxxxxx>
> ---
>  arch/x86/kernel/acpi/boot.c |    8 +++
>  arch/x86/pci/legacy.c       |    4 +
>  arch/x86/xen/Makefile       |    1
>  arch/x86/xen/pci.c          |   98 
> +++++++++++++++++++++++++++++++++++++++++++
>  arch/x86/xen/xen-ops.h      |    1
>  drivers/xen/events.c        |    9 ++-
>  include/asm-x86/xen/pci.h   |    7 +++
>  include/xen/events.h        |    8 +++
>  8 files changed, 132 insertions(+), 4 deletions(-)
> 
[snip]
> diff --git a/arch/x86/xen/xen-ops.h b/arch/x86/xen/xen-ops.h
> --- a/arch/x86/xen/xen-ops.h
> +++ b/arch/x86/xen/xen-ops.h
> @@ -63,7 +63,6 @@
>  static inline void xen_smp_init(void) {}
>  #endif
>  
> -
>  void xen_init_apic(void);
>  
>  /* Declare an asm function, along with symbols needed to make it
Hi Jeremy,
This seems like a spurious whitespace change that could be
merged into "[PATCH 30 of 38] xen: implement io_apic_ops"
[snip]
-- 
Simon Horman
  VA Linux Systems Japan K.K., Sydney, Australia Satellite Office
  H: www.vergenet.net/~horms/             W: www.valinux.co.jp/en
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
 |