有一个奇怪的要求,在SMP机器上,要将所有的中断绑字到1号CPU上,我打算修改setup_ioapic_dest函数,在
if (intr_remapping_enabled)
set_ir_ioapic_affinity_irq_desc(desc, mask);
else
set_ioapic_affinity_irq_desc(desc, mask);
之前加上下面两句:
cpus_clear(mask);
cpu_set(1, mask);
不知倒底行不行,正在编译内核中。但是,新编的内核在启动时就会失败,因此,此方法行不通。
另一种方法:修改init_irq_default_affinity的实现方法,init_irq_default_affinity所属文件为kernel/irq/handle.c line:45
将如下代码:
alloc_bootmem_cpumask_var(&irq_default_affinity);
cpumask_setall(irq_default_affinity);
修改为:
alloc_bootmem_cpumask_var(&irq_default_affinity);
cpumask_test_and_set_cpu(0, irq_default_affinity);
编译新的内核后在/proc/irq/default_smp_affinity的内容从ff变为01,但是,中断还是分布在不CPU上,最后通过关闭irqbalance后,则所有的中断就都被移到0号CPU上了(即第一个CPU)
阅读(1288) | 评论(0) | 转发(0) |