lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 20 Oct 2009 11:58:38 -0700 From: Yinghai Lu <yinghai@...nel.org> To: Dimitri Sivanich <sivanich@....com> CC: Ingo Molnar <mingo@...e.hu>, linux-kernel@...r.kernel.org, "H. Peter Anvin" <hpa@...or.com>, Thomas Gleixner <tglx@...utronix.de> Subject: Re: [PATCH v3] x86/apic: limit irq affinity Dimitri Sivanich wrote: > This patch allows for hard restrictions to irq affinity on x86 systems. > > Affinity is masked to allow only those cpus which the subarchitecture > deems accessible by the given irq. > > On some UV systems, this domain will be limited to the nodes accessible > to the irq's node. Initially other X86 systems will not mask off any cpus > so non-UV systems will remain unaffected. > > Signed-off-by: Dimitri Sivanich <sivanich@....com> > > --- > > Removed allowed cpumask from irq_cfg. Storing allowed cpumasks in UV > specific IRQ code. > > arch/x86/Kconfig | 1 > arch/x86/include/asm/hw_irq.h | 3 > arch/x86/include/asm/uv/uv_irq.h | 1 > arch/x86/include/asm/uv/uv_mmrs.h | 25 ++++++ > arch/x86/kernel/apic/io_apic.c | 123 ++++++++++++++++++++++++++------- > arch/x86/kernel/apic/x2apic_uv_x.c | 4 - > arch/x86/kernel/uv_irq.c | 58 +++++++++++++++ > 7 files changed, 189 insertions(+), 26 deletions(-) > > Index: linux/arch/x86/kernel/apic/io_apic.c > =================================================================== > --- linux.orig/arch/x86/kernel/apic/io_apic.c 2009-10-19 15:22:52.000000000 -0500 > +++ linux/arch/x86/kernel/apic/io_apic.c 2009-10-19 20:57:29.000000000 -0500 > @@ -168,6 +168,17 @@ void __init io_apic_disable_legacy(void) > nr_irqs_gsi = 0; > } > > +static int default_irq_allowed_and(struct irq_cfg *cfg, struct cpumask *dstp, > + const struct cpumask *srcp) > +{ > + cpumask_copy(dstp, srcp); > + > + return 1; > +} > + > +int (*x86_irq_allowed_and)(struct irq_cfg *, struct cpumask *, > + const struct cpumask *) = default_irq_allowed_and; > + > int __init arch_early_irq_init(void) > { > struct irq_cfg *cfg; > @@ -183,6 +194,7 @@ int __init arch_early_irq_init(void) > for (i = 0; i < count; i++) { > desc = irq_to_desc(i); > desc->chip_data = &cfg[i]; > + cfg->node = node; > zalloc_cpumask_var_node(&cfg[i].domain, GFP_NOWAIT, node); > zalloc_cpumask_var_node(&cfg[i].old_domain, GFP_NOWAIT, node); > if (i < nr_legacy_irqs) > @@ -231,12 +243,13 @@ int arch_init_chip_data(struct irq_desc > > cfg = desc->chip_data; > if (!cfg) { > - desc->chip_data = get_one_free_irq_cfg(node); > + cfg = desc->chip_data = get_one_free_irq_cfg(node); > if (!desc->chip_data) { > printk(KERN_ERR "can not alloc irq_cfg\n"); > BUG_ON(1); > } > } > + cfg->node = node; how about desc->node ? YH -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists