Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> writes: > Let's isolate the impact of cpu frequency selection on determing the GPU > throughput in response to selection of RPS frequencies. > > For real systems, we do have to be concerned with the impact of > integrating c-states, p-states and rp-states, but for the sake of > proving whether or not RPS works, one baby step at a time. > > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > Cc: Mika Kuoppala <mika.kuoppala@xxxxxxxxxxxxxxx> Reviewed-by: Mika Kuoppala <mika.kuoppala@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/i915/gt/selftest_rps.c | 18 ++++++++++++++++++ > 1 file changed, 18 insertions(+) > > diff --git a/drivers/gpu/drm/i915/gt/selftest_rps.c b/drivers/gpu/drm/i915/gt/selftest_rps.c > index 395265121e43..e2afc2003caa 100644 > --- a/drivers/gpu/drm/i915/gt/selftest_rps.c > +++ b/drivers/gpu/drm/i915/gt/selftest_rps.c > @@ -3,6 +3,7 @@ > * Copyright © 2020 Intel Corporation > */ > > +#include <linux/pm_qos.h> > #include <linux/sort.h> > > #include "intel_engine_pm.h" > @@ -14,6 +15,9 @@ > #include "selftests/igt_spinner.h" > #include "selftests/librapl.h" > > +/* Try to isolate the impact of cstates from determing frequency response */ > +#define CPU_LATENCY 0 /* -1 to disable pm_qos, 0 to disable cstates */ > + > static void dummy_rps_work(struct work_struct *wrk) > { > } > @@ -406,6 +410,7 @@ int live_rps_frequency_cs(void *arg) > struct intel_gt *gt = arg; > struct intel_rps *rps = >->rps; > struct intel_engine_cs *engine; > + struct pm_qos_request qos; > enum intel_engine_id id; > int err = 0; > > @@ -421,6 +426,9 @@ int live_rps_frequency_cs(void *arg) > if (INTEL_GEN(gt->i915) < 8) /* for CS simplicity */ > return 0; > > + if (CPU_LATENCY >= 0) > + cpu_latency_qos_add_request(&qos, CPU_LATENCY); > + > intel_gt_pm_wait_for_idle(gt); > saved_work = rps->work.func; > rps->work.func = dummy_rps_work; > @@ -527,6 +535,9 @@ int live_rps_frequency_cs(void *arg) > intel_gt_pm_wait_for_idle(gt); > rps->work.func = saved_work; > > + if (CPU_LATENCY >= 0) > + cpu_latency_qos_remove_request(&qos); > + > return err; > } > > @@ -536,6 +547,7 @@ int live_rps_frequency_srm(void *arg) > struct intel_gt *gt = arg; > struct intel_rps *rps = >->rps; > struct intel_engine_cs *engine; > + struct pm_qos_request qos; > enum intel_engine_id id; > int err = 0; > > @@ -551,6 +563,9 @@ int live_rps_frequency_srm(void *arg) > if (INTEL_GEN(gt->i915) < 8) /* for CS simplicity */ > return 0; > > + if (CPU_LATENCY >= 0) > + cpu_latency_qos_add_request(&qos, CPU_LATENCY); > + > intel_gt_pm_wait_for_idle(gt); > saved_work = rps->work.func; > rps->work.func = dummy_rps_work; > @@ -656,6 +671,9 @@ int live_rps_frequency_srm(void *arg) > intel_gt_pm_wait_for_idle(gt); > rps->work.func = saved_work; > > + if (CPU_LATENCY >= 0) > + cpu_latency_qos_remove_request(&qos); > + > return err; > } > > -- > 2.20.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx