static struct nvkm_cstate *
 nvkm_cstate_find_best(struct nvkm_clk *clk, struct nvkm_pstate *pstate,
-                     struct nvkm_cstate *start)
+                     struct nvkm_cstate *cstate)
 {
        struct nvkm_device *device = clk->subdev.device;
        struct nvkm_volt *volt = device->volt;
-       struct nvkm_cstate *cstate;
        int max_volt;
 
-       if (!pstate || !start)
+       if (!pstate || !cstate)
                return NULL;
 
        if (!volt)
-               return start;
+               return cstate;
 
        max_volt = volt->max_uv;
        if (volt->max0_id != 0xff)
                max_volt = min(max_volt,
                               nvkm_volt_map(volt, volt->max2_id, clk->temp));
 
-       for (cstate = start; &cstate->head != &pstate->list;
-            cstate = list_prev_entry(cstate, head)) {
+       list_for_each_entry_from_reverse(cstate, &pstate->list, head) {
                if (nvkm_cstate_valid(clk, cstate, max_volt, clk->temp))
                        break;
        }