On 11/13/2017 07:22 PM, Robert Elliott wrote: > Fix cpumask manipulation on (64-bit) Windows systems. > > cpus_allowed=nn values greater than 32 does not work, due to > * the compiler not promoting expressions like "1 << cpu" to > 64 bits > * the clear function clearing the wrong bit (using "cpu - 1"), > * the clear function using XOR to clear (which only works if the > bit was previously set) > * the check function returning a 64-bit value through a 32-bit > return value > > Example problems (from extra debug prints): > * setting CPU 32 really sets bit 0 (CPU 0) > Set mask of 0000000000000000 to add 0000000000000001 (32) > > * setting CPU 63 really sets bit 31 (CPU 31) > Set mask of 0000000000000000 to add 0000000080000000 (63) > > * clearing CPU 0 really clears bit 63 (CPU 63) > Clear mask of 0000000055555555 to remove 8000000000000000 (0) > > * clearing CPU 2 really clears bit 2 (CPU 2) > Clear mask of 0000000055555555 to remove 0000000000000002 (2) > > * checking claims CPU 32 is not in a mask of CPUs {32,34,36,38} > for 0000005500000000 check if bit 32 is set ==> FALSE Classic error... Thanks Robert, applied. -- Jens Axboe -- To unsubscribe from this list: send the line "unsubscribe fio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html