On 24/02/2017 12:50, Marcelo Tosatti wrote: >>> >>> On all other cpufreq implementations, these boundaries still need to >>> be set. Then, a "governor" must be selected. Such a "governor" decides >>> what speed the processor shall run within the boundaries. One such >>> "governor" is the "userspace" governor. This one allows the user - or >>> a yet-to-implement userspace program - to decide what specific speed >>> the processor shall run at. >> The userspace program sets a policy for the whole system. > No, its per cpu. Yeah, what I mean is that userspace program can be per-CPU, but it looks at all the processes running on that CPU ("the whole system"). This is very different from a guest, which is isolated. >>>> That's bad. This feature is broken by design unless it does proper >>>> save/restore across preemption. >>> Whats the current usecase, or forseeable future usecase, for save/restore >>> across preemption again? (which would validate the broken by design >>> claim). >> Stop a guest that is using cpufreq, start a guest that is not using it. >> The second guest's performance now depends on the state that the first >> guest left in cpufreq. > > Nothing forbids the host to implement switching with the > current hypercall interface: all you need is a scheduler > hook. Can it be done in vcpu_load/vcpu_put? But you still would have two components (KVM and sysfs) potentially fighting over the frequency, and that's still a bit ugly. Paolo