History log of /linux-master/drivers/gpu/drm/nouveau/nvkm/subdev/timer/base.c
Revision Date Author Comments
# 9aad54d5 03-Dec-2020 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/tmr: switch to instanced constructor

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>


# e4f90a35 10-Dec-2018 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/tmr: detect stalled gpu timer and break out of waits

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>


# 7eaf1198 11-May-2017 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/tmr: remove nvkm_timer_alarm_cancel()

nvkm_timer_alarm() already handles this as part of protecting against
callers passing in no timeout value.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>


# b4e382ca 05-Jun-2017 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/tmr: fully separate alarm execution/pending lists

Reusing the list_head for both is a bad idea. Callback execution is done
with the lock dropped so that alarms can be rescheduled from the callback,
which means that with some unfortunate timing, lists can get corrupted.

The execution list should not require its own locking, the single function
that uses it can only be called from a single context.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Cc: stable@vger.kernel.org


# 330bdf62 11-May-2017 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/tmr: avoid processing completed alarms when adding a new one

The idea here was to avoid having to "manually" program the HW if there's
a new earliest alarm. This was lazy and bad, as it leads to loads of fun
races between inter-related callers (ie. therm).

Turns out, it's not so difficult after all. Go figure ;)

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Cc: stable@vger.kernel.org


# 9fc64667 11-May-2017 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/tmr: fix corruption of the pending list when rescheduling an alarm

At least therm/fantog "attempts" to work around this issue, which could
lead to corruption of the pending alarm list.

Fix it properly by not updating the timestamp without the lock held, or
trying to add an already pending alarm to the pending alarm list....

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Cc: stable@vger.kernel.org


# 1b0f8438 11-May-2017 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/tmr: handle races with hw when updating the next alarm time

If the time to the next alarm is short enough, we could race with HW and
end up with an ~4 second delay until it triggers.

Fix this by checking again after we update HW.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Cc: stable@vger.kernel.org


# 56d06fa2 08-Apr-2016 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/core: remove pmc_enable argument from subdev ctor

These are now specified directly in the MC subdev.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>


# 31649ecf 19-Aug-2015 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/tmr: convert to new-style nvkm_subdev

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>


# 56f67dc1 19-Aug-2015 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/tmr: type-safe PTIMER-based delay/wait macros

These require an explicit struct nvkm_device pointer, unlike the previous
macros which take a void *, and work for (almost) anything derived from
nvkm_object by using some heuristics.

These macros are more general than the previous ones, and can be used to
handle PTIMER-based busy-waits (will be used in later devinit fixes) as
well as more complicated wait conditions.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>


# c44c049f 19-Aug-2015 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/tmr: switch to device pri macros

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>


# cb8bb9ce 19-Aug-2015 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/tmr: cosmetic changes

This is purely preparation for upcoming commits, there should be no
code changes here.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>


# 9e79a853 13-Jan-2015 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau/timer: namespace + nvidia gpu names (no binary change)

The namespace of NVKM is being changed to nvkm_ instead of nouveau_,
which will be used for the DRM part of the driver. This is being
done in order to make it very clear as to what part of the driver a
given symbol belongs to, and as a minor step towards splitting the
DRM driver out to be able to stand on its own (for virt).

Because there's already a large amount of churn here anyway, this is
as good a time as any to also switch to NVIDIA's device and chipset
naming to ease collaboration with them.

A comparison of objdump disassemblies proves no code changes.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>


# c39f472e 13-Jan-2015 Ben Skeggs <bskeggs@redhat.com>

drm/nouveau: remove symlinks, move core/ to nvkm/ (no code changes)

The symlinks were annoying some people, and they're not used anywhere
else in the kernel tree. The include directory structure has been
changed so that symlinks aren't needed anymore.

NVKM has been moved from core/ to nvkm/ to make it more obvious as to
what the directory is for, and as some minor prep for when NVKM gets
split out into its own module (virt) at a later date.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>