Re: [PATCH] x86: limit irq affinity
From: Yinghai Lu
Date: Sun Sep 27 2009 - 21:19:27 EST
On Sun, Sep 27, 2009 at 6:02 PM, Dimitri Sivanich <sivanich@xxxxxxx> wrote:
> This patch allows for restrictions to irq affinity via a new cpumask and
> device node value in the irq_cfg structure. The node value can then be
> used by specific x86 architectures to determine the cpumask for the
> desired cpu irq affinity domain.
>
> The mask forces IRQ affinity to remain within the specified cpu domain.
> On some UV systems, this domain will be limited to the nodes accessible
> to the given node. Currently other X86 systems will have all bits in
> the cpumask set, so non-UV systems will remain unaffected at this time.
>
> Signed-off-by: Dimitri Sivanich <sivanich@xxxxxxx>
>
> ---
>
> arch/x86/Kconfig | 1
> arch/x86/include/asm/uv/uv_irq.h | 2
> arch/x86/include/asm/uv/uv_mmrs.h | 25 ++++
> arch/x86/kernel/apic/io_apic.c | 166 +++++++++++++++++++++++++++------
> arch/x86/kernel/apic/x2apic_uv_x.c | 2
> arch/x86/kernel/uv_irq.c | 68 +++++++++++++
> 6 files changed, 235 insertions(+), 29 deletions(-)
>
> Index: linux/arch/x86/kernel/apic/io_apic.c
> ===================================================================
> --- linux.orig/arch/x86/kernel/apic/io_apic.c 2009-09-26 15:28:04.000000000 -0500
> +++ linux/arch/x86/kernel/apic/io_apic.c 2009-09-26 16:20:04.000000000 -0500
> @@ -62,6 +62,7 @@
> #include <asm/hw_irq.h>
> #include <asm/uv/uv_hub.h>
> #include <asm/uv/uv_irq.h>
> +#include <asm/uv/uv.h>
>
> #include <asm/apic.h>
>
> @@ -149,6 +150,8 @@ struct irq_cfg {
> struct irq_pin_list *irq_2_pin;
> cpumask_var_t domain;
> cpumask_var_t old_domain;
> + cpumask_var_t allowed;
> + int node;
> unsigned move_cleanup_count;
> u8 vector;
> u8 move_in_progress : 1;
> @@ -184,6 +187,18 @@ void __init io_apic_disable_legacy(void)
> nr_irqs_gsi = 0;
> }
>
original irq affinity in irq_desc does not work?
YH
--
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/