Hi Chris, On Sat, Apr 25, 2020 at 07:54:00PM +0100, Chris Wilson wrote: > As with the realisation for soft-rc6, we respond to idling the engines > within microseconds, far faster than the response times for HW RC6 and > RPS. Furthermore, our fast parking upon idle, prevents HW RPS from > running for many desktop workloads, as the RPS evaluation intervals are > on the order of tens of milliseconds, but the typical workload is just a > couple of milliseconds, but yet we still need to determine the best > frequency for user latency versus power. > > Recognising that the HW evaluation intervals are a poor fit, and that > they were deprecated [in bspec at least] from gen10, start to wean > ourselves off them and replace the EI with a timer and our accurate > busy-stats. The principle benefit of manually evaluating RPS intervals > is that we can be more responsive for better performance and powersaving > for both spiky workloads and steady-state. basically, when you unpark, you wait a bit depending on the workload before actually setting the rps and you do this by creating a timer. > +static bool has_busy_stats(struct intel_rps *rps) > +{ > + struct intel_engine_cs *engine; > + enum intel_engine_id id; > + > + return HAS_EXECLISTS(rps_to_i915(rps)); /* XXX init ordering */ > + > + for_each_engine(engine, rps_to_gt(rps), id) { > + if (!intel_engine_supports_stats(engine)) > + return false; > + } > + > + return true; > +} mh? what's the exit point here? Andi _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx