This adds three features to cpuset & domainsets:
- a dedicated set for the kernel (#2) so that we can dictate kernel and user policy separately. This also fixed the ugly interrupt root code.
- DOMAINSET_POLICY_INTERLEAVE which does something like raid stripes or round-robin with a stride width. This gives much better performance than strict round-robin on the workloads i've tested on. I expect that we can tweak the stride as we learn how this works. Since rr is used as a fallback method when other things don't work I have kept it as a distinct policy.
- A sysctl api for experimenting with domainsets on kernel objects and making the domainset_create() api kernel public with error checking. This allows you to put in a domainset 'key' and get back a validated policy that you can actually reference and use.
This also includes some header clean-up and a bug fix to the FIRSTTOUCH policy which allows us to switch it on as the default.