This was an issue with gcc 2.96 on a 64-way IA64 box. I don't have
access to one at the moment, but as I remember, without the 2.4 changes:
- ((p)->cpus_runnable & (p)->cpus_allowed & (1 << cpu))
+ ((p)->cpus_runnable & (p)->cpus_allowed & (1UL << cpu))
nothing would get scheduled on CPUs 32-63. I guess those changes
aren't controversial, though.
The question of whether this was strictly necessary:
- cpus_runnable: -1, \
- cpus_allowed: -1, \
+ cpus_runnable: ~0UL, \
+ cpus_allowed: ~0UL, \
I don't specifically recall, and a quick test suggests that it really
doesn't matter. Since cpus_runnable and cpus_allowed are declared
unsigned long, I think ~0UL is a more direct expression of what is
desired, but maybe that's just a personal preference.
Bjorn
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/