The nova code implicitly assumes that all vCPUs are realtime in nova.virt.hardware.vcpus_realtime_topology().
This only makes sense if the cpu_realtime_mask is an exclusion mask, but this isn't documented anywhere.
It would make more sense to simply use the mask as passed-in from the end-user.
In order to preserve the current behaviour we should probably special-case the scenario where the passed-in cpu_realtime_mask starts with a "^" (indicating an exclusion).
The nova code implicitly assumes that all vCPUs are realtime in nova.virt. hardware. vcpus_realtime_ topology( ).
This only makes sense if the cpu_realtime_mask is an exclusion mask, but this isn't documented anywhere.
It would make more sense to simply use the mask as passed-in from the end-user.
In order to preserve the current behaviour we should probably special-case the scenario where the passed-in cpu_realtime_mask starts with a "^" (indicating an exclusion).