Loading drivers/gpu/msm/adreno.c +3 −2 Original line number Diff line number Diff line Loading @@ -2231,8 +2231,6 @@ static int adreno_soft_reset(struct kgsl_device *device) adreno_support_64bit(adreno_dev)) gpudev->enable_64bit(adreno_dev); /* Restore physical performance counter values after soft reset */ adreno_perfcounter_restore(adreno_dev); /* Reinitialize the GPU */ gpudev->start(adreno_dev); Loading @@ -2259,6 +2257,9 @@ static int adreno_soft_reset(struct kgsl_device *device) set_bit(ADRENO_DEVICE_STARTED, &adreno_dev->priv); } /* Restore physical performance counter values after soft reset */ adreno_perfcounter_restore(adreno_dev); return ret; } Loading drivers/gpu/msm/adreno_perfcounter.c +25 −7 Original line number Diff line number Diff line Loading @@ -522,12 +522,18 @@ int adreno_perfcounter_get(struct adreno_device *adreno_dev, if (empty == -1) return -EBUSY; /* initialize the new counter */ group->regs[empty].countable = countable; /* enable the new counter */ ret = adreno_perfcounter_enable(adreno_dev, groupid, empty, countable); if (ret) if (ret) { /* Put back the perfcounter */ if (!(group->flags & ADRENO_PERFCOUNTER_GROUP_FIXED)) group->regs[empty].countable = KGSL_PERFCOUNTER_NOT_USED; return ret; /* initialize the new counter */ group->regs[empty].countable = countable; } /* set initial kernel and user count */ if (flags & PERFCOUNTER_FLAG_KERNEL) { Loading Loading @@ -746,10 +752,22 @@ static int _perfcounter_enable_default(struct adreno_device *adreno_dev, /* wait for the above commands submitted to complete */ ret = adreno_ringbuffer_waittimestamp(rb, rb->timestamp, ADRENO_IDLE_TIMEOUT); if (ret) if (ret) { /* * If we were woken up because of cancelling rb events * either due to soft reset or adreno_stop, ignore the * error and return 0 here. The perfcounter is already * set up in software and it will be programmed in * hardware when we wake up or come up after soft reset, * by adreno_perfcounter_restore. */ if (ret == -EAGAIN) ret = 0; else KGSL_DRV_ERR(device, "Perfcounter %u/%u/%u start via commands failed %d\n", group, counter, countable, ret); } } else { /* Select the desired perfcounter */ kgsl_regwrite(device, reg->select, countable); Loading Loading
drivers/gpu/msm/adreno.c +3 −2 Original line number Diff line number Diff line Loading @@ -2231,8 +2231,6 @@ static int adreno_soft_reset(struct kgsl_device *device) adreno_support_64bit(adreno_dev)) gpudev->enable_64bit(adreno_dev); /* Restore physical performance counter values after soft reset */ adreno_perfcounter_restore(adreno_dev); /* Reinitialize the GPU */ gpudev->start(adreno_dev); Loading @@ -2259,6 +2257,9 @@ static int adreno_soft_reset(struct kgsl_device *device) set_bit(ADRENO_DEVICE_STARTED, &adreno_dev->priv); } /* Restore physical performance counter values after soft reset */ adreno_perfcounter_restore(adreno_dev); return ret; } Loading
drivers/gpu/msm/adreno_perfcounter.c +25 −7 Original line number Diff line number Diff line Loading @@ -522,12 +522,18 @@ int adreno_perfcounter_get(struct adreno_device *adreno_dev, if (empty == -1) return -EBUSY; /* initialize the new counter */ group->regs[empty].countable = countable; /* enable the new counter */ ret = adreno_perfcounter_enable(adreno_dev, groupid, empty, countable); if (ret) if (ret) { /* Put back the perfcounter */ if (!(group->flags & ADRENO_PERFCOUNTER_GROUP_FIXED)) group->regs[empty].countable = KGSL_PERFCOUNTER_NOT_USED; return ret; /* initialize the new counter */ group->regs[empty].countable = countable; } /* set initial kernel and user count */ if (flags & PERFCOUNTER_FLAG_KERNEL) { Loading Loading @@ -746,10 +752,22 @@ static int _perfcounter_enable_default(struct adreno_device *adreno_dev, /* wait for the above commands submitted to complete */ ret = adreno_ringbuffer_waittimestamp(rb, rb->timestamp, ADRENO_IDLE_TIMEOUT); if (ret) if (ret) { /* * If we were woken up because of cancelling rb events * either due to soft reset or adreno_stop, ignore the * error and return 0 here. The perfcounter is already * set up in software and it will be programmed in * hardware when we wake up or come up after soft reset, * by adreno_perfcounter_restore. */ if (ret == -EAGAIN) ret = 0; else KGSL_DRV_ERR(device, "Perfcounter %u/%u/%u start via commands failed %d\n", group, counter, countable, ret); } } else { /* Select the desired perfcounter */ kgsl_regwrite(device, reg->select, countable); Loading