- Subject: IRQ affinity enforced only after first interrupt.
- From: Yevgeny Petrilin <yevgenyp@xxxxxxxxxxxxxx>
- Date: Mon, 26 Mar 2012 11:06:44 +0200
- User-agent: Thunderbird 2.0.0.17 (X11/20080914)
Hello,
I'm working on an issue where affinity changes to IRQ only have effect after the first interrupt which still happens on the original core.
I understand that the decision regarding it takes place in this code:
if (irq_can_move_pcntxt(data)) {
ret = chip->irq_set_affinity(data, mask, false);
switch (ret) {
case IRQ_SET_MASK_OK:
cpumask_copy(data->affinity, mask);
case IRQ_SET_MASK_OK_NOCOPY:
irq_set_thread_affinity(desc);
ret = 0;
}
} else {
irqd_set_move_pending(data);
irq_copy_pending(desc, mask);
}
Which means that the "IRQD_MOVE_PCNTXT" flag is not set in irq_data->state_use_accessors.
I was able to add this flag using irq_modify_status(), which is probably not the way to go.
This option also doesn't exist in older kernels (2.6.32)
So the question is, when irq_desc is created, how is it determined that "IRQD_MOVE_PCNTXT" flag is set?
Thanks,
Yevgeny
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
[Home]
[Linux USB Devel]
[Video for Linux]
[Linux Audio Users]
[Photo]
[Yosemite News]
[Yosemite Photos]
[Free Online Dating]
[Linux Kernel]
[Linux SCSI]
[XFree86]