linux/drivers/gpu/drm/tegra
Thierry Reding ac097aecfe drm/tegra: sor: Grab runtime PM reference across reset
The SOR resets are exclusively shared with the SOR power domain. This
means that exclusive access can only be granted temporarily and in order
for that to work, a rigorous sequence must be observed. To ensure that a
single consumer gets exclusive access to a reset, each consumer must
implement a rigorous protocol using the reset_control_acquire() and
reset_control_release() functions.

However, these functions alone don't provide any guarantees at the
system level. Drivers need to ensure that the only a single consumer has
access to the reset at the same time. In order for the SOR to be able to
exclusively access its reset, it must therefore ensure that the SOR
power domain is not powered off by holding on to a runtime PM reference
to that power domain across the reset assert/deassert operation.

This used to work fine by accident, but was revealed when recently more
devices started to rely on the SOR power domain.

Fixes: 11c632e1cf ("drm/tegra: sor: Implement acquire/release for reset")
Reported-by: Jonathan Hunter <jonathanh@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
2021-03-30 19:51:39 +02:00
..
dc.c drm/tegra: dc: Restore coupling of display controllers 2021-03-30 19:40:43 +02:00
dc.h drm/tegra: plane: Support horizontal reflection 2020-07-17 16:06:17 +02:00
dp.c drm/tegra: sor: Add DisplayPort support 2019-10-28 11:18:54 +01:00
dp.h drm/tegra: dp: Add DisplayPort link training helper 2019-10-28 11:18:53 +01:00
dpaux.c drm/tegra: Clean up GPIO includes 2020-04-17 17:16:22 +02:00
dpaux.h
drm.c drm/tegra: gr2d: Add compatible for Tegra114 2021-01-15 17:19:09 +01:00
drm.h drm/tegra: output: Support DRM bridges 2020-09-17 12:30:11 +02:00
dsi.c drm/tegra: Fix reference leak when pm_runtime_get_sync() fails 2021-01-15 17:24:51 +01:00
dsi.h
falcon.c drm/tegra: falcon: Support newer VIC firmware 2021-01-15 17:15:50 +01:00
falcon.h drm/tegra: falcon: Clarify address usage 2019-10-29 15:04:36 +01:00
fb.c drm/tegra: remove _unlocked suffix in drm_gem_object_put_unlocked 2020-05-19 22:31:35 +01:00
gem.c Merge drm/drm-next into drm-misc-next 2020-11-02 11:17:54 +01:00
gem.h drm/tegra: gem: Rename paddr -> iova 2019-10-28 11:18:38 +01:00
gr2d.c drm/tegra: gr2d: Add compatible for Tegra114 2021-01-15 17:19:09 +01:00
gr2d.h drm/tegra: gr2d: Add tiled PATBASE address register 2020-07-17 16:06:16 +02:00
gr3d.c drm/tegra: gr3d: Assert reset before power-gating 2020-07-17 16:06:15 +02:00
gr3d.h
hda.c
hda.h
hdmi.c drm/tegra: Fix reference leak when pm_runtime_get_sync() fails 2021-01-15 17:24:51 +01:00
hdmi.h
hub.c drm/tegra: Fix reference leak when pm_runtime_get_sync() fails 2021-01-15 17:24:51 +01:00
hub.h drm/tegra: Do not implement runtime PM 2020-01-10 16:37:43 +01:00
Kconfig drm/tegra: Unconditionally select IOMMU_IOVA 2019-11-01 10:49:29 +01:00
Makefile
mipi-phy.c
mipi-phy.h
output.c drm/tegra: output: Do not put OF node twice 2020-11-13 21:38:35 +01:00
plane.c drm: tegra: fix common struct sg_table related issues 2020-09-10 08:18:35 +02:00
plane.h drm/tegra: plane: Support horizontal reflection 2020-07-17 16:06:17 +02:00
rgb.c drm/tegra: output: rgb: Wrap directly-connected panel into DRM bridge 2020-09-17 12:31:18 +02:00
sor.c drm/tegra: sor: Grab runtime PM reference across reset 2021-03-30 19:51:39 +02:00
sor.h drm/tegra: sor: Add DisplayPort support 2019-10-28 11:18:54 +01:00
trace.c
trace.h
vic.c drm/tegra: Fix reference leak when pm_runtime_get_sync() fails 2021-01-15 17:24:51 +01:00
vic.h