ia64/xen-unstable

changeset 5779:57dfd651cca4

Allow IRQ balancing to be disabled with 'noirqbalance'
boot parameter.
Signed-off-by: Keir Fraser <keir@xensource.com>
author kaf24@firebug.cl.cam.ac.uk
date Thu Jul 14 10:37:49 2005 +0000 (2005-07-14)
parents 43c21adcfc79
children ca90d2903b7b
files docs/src/user.tex xen/arch/x86/irq.c
line diff
     1.1 --- a/docs/src/user.tex	Thu Jul 14 10:16:45 2005 +0000
     1.2 +++ b/docs/src/user.tex	Thu Jul 14 10:37:49 2005 +0000
     1.3 @@ -1692,6 +1692,11 @@ editing \path{grub.conf}.
     1.4  \item [watchdog ] 
     1.5   Enable NMI watchdog which can report certain failures. 
     1.6  
     1.7 +\item [noirqbalance ] 
     1.8 + Disable software IRQ balancing and affinity. This can be used on
     1.9 + systems such as Dell 1850/2850 that have workarounds in hardware for
    1.10 + IRQ-routing issues.
    1.11 +
    1.12  \item [badpage=$<$page number$>$,$<$page number$>$, \ldots ] 
    1.13   Specify a list of pages not to be allocated for use 
    1.14   because they contain bad bytes. For example, if your
     2.1 --- a/xen/arch/x86/irq.c	Thu Jul 14 10:16:45 2005 +0000
     2.2 +++ b/xen/arch/x86/irq.c	Thu Jul 14 10:37:49 2005 +0000
     2.3 @@ -6,6 +6,7 @@
     2.4   */
     2.5  
     2.6  #include <xen/config.h>
     2.7 +#include <xen/init.h>
     2.8  #include <xen/errno.h>
     2.9  #include <xen/event.h>
    2.10  #include <xen/irq.h>
    2.11 @@ -14,6 +15,10 @@
    2.12  #include <asm/current.h>
    2.13  #include <asm/smpboot.h>
    2.14  
    2.15 +/* opt_noirqbalance: If true, software IRQ balancing/affinity is disabled. */
    2.16 +static int opt_noirqbalance = 0;
    2.17 +boolean_param("noirqbalance", opt_noirqbalance);
    2.18 +
    2.19  irq_desc_t irq_desc[NR_IRQS];
    2.20  
    2.21  static void __do_IRQ_guest(int vector);
    2.22 @@ -240,7 +245,7 @@ int pirq_guest_bind(struct vcpu *v, int 
    2.23  
    2.24          /* Attempt to bind the interrupt target to the correct CPU. */
    2.25          cpu_set(v->processor, cpumask);
    2.26 -        if ( desc->handler->set_affinity != NULL )
    2.27 +        if ( !opt_noirqbalance && (desc->handler->set_affinity != NULL) )
    2.28              desc->handler->set_affinity(vector, cpumask);
    2.29      }
    2.30      else if ( !will_share || !action->shareable )