Kenneth Feng
680602d6c2
drm/amd/pm: enable DCS
...
Enable DCS
V1: Enable Async DCS.
V2: Add the ppfeaturemask bit to enable from the modprobe parameter.
V3:
1. add the flag to skip APU support.
2. remove the hunk for workload selection since
it doesn't impact the function.
Signed-off-by: Kenneth Feng <kenneth.feng@amd.com >
Acked-by: Alex Deucher <alexander.deucher@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2021-02-09 15:27:57 -05:00
Alex Deucher
e83db77487
drm/amdgpu/gmc9: fix mmhub client mapping for arcturus
...
The hw interface changed on arcturus so the old numbering
scheme doesn't work.
Acked-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2021-02-09 15:27:47 -05:00
Alex Deucher
137aac26a2
drm/amdgpu/smu12: fix power reporting on renoir
...
Align with Vangogh.
Bug: https://gitlab.freedesktop.org/drm/amd/-/issues/1467
Acked-by: Nirmoy Das <nirmoy.das@amd.com >
Reviewed-by: Evan Quan <evan.quan@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2021-02-09 15:27:34 -05:00
Kent Russell
11964258fe
drm/amdkfd: Get unique_id dynamically v2
...
Instead of caching the value during amdgpu_device_init, just call the
function directly. This avoids issues where the unique_id hasn't been
saved by the time that KFD's topology snapshot is done (e.g. Arcturus).
KFD's topology information from the amdgpu_device was initially cached
at KFD initialization due to amdkfd and amdgpu being separate modules.
Now that they are combined together, we can directly call the functions
that we need and avoid this unnecessary duplication and complexity.
As a side-effect of this change, we also remove unique_id=0 for CPUs,
which is obviously not unique.
v2: Drop previous patch printing unique_id in hex
Signed-off-by: Kent Russell <kent.russell@amd.com >
Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2021-02-09 15:27:28 -05:00
Kenneth Feng
62826b8608
drm/amd/pm: enable ACDC feature
...
The power limit and clock ragne are different in AC mode and DC mode.
Firmware does the setting after this feature is enabled.
Signed-off-by: Kenneth Feng <kenneth.feng@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2021-02-09 15:27:19 -05:00
Nirmoy Das
22e4f31529
drm/amdgpu: enable gfx wave limiting for high priority compute jobs
...
Enable gfx wave limiting for gfx jobs before pushing high priority
compute jobs so that high priority compute jobs gets more resources
to finish early.
v2: use ring priority instead of job priority.
Signed-off-by: Nirmoy Das <nirmoy.das@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2021-02-09 15:27:11 -05:00
Nirmoy Das
0a52a6cacc
drm/amdgpu: add wave limit functionality for gfx8,9
...
Wave limiting can be use to load balance high priority
compute jobs along with gfx jobs. When enabled, this will reserve
~75% of waves for compute jobs.
We do not need this from gfx10 onwards because >=gfx10 has
asynchronous compute tunneling to replace wave limit requirement.
Signed-off-by: Nirmoy Das <nirmoy.das@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2021-02-09 15:27:04 -05:00
Nirmoy Das
8c0225d792
drm/amdgpu: enable only one high prio compute queue
...
For high priority compute to work properly we need to enable
wave limiting on gfx pipe. Wave limiting is done through writing
into mmSPI_WCL_PIPE_PERCENT_GFX register. Enable only one high
priority compute queue to avoid race condition between multiple
high priority compute queues writing that register simultaneously.
Signed-off-by: Nirmoy Das <nirmoy.das@amd.com >
Acked-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2021-02-09 15:26:56 -05:00
Nirmoy Das
ebdd2e9d1a
drm/amdgpu: cleanup struct amdgpu_ring
...
This patch consist of below related changes:
1 Rename ring->priority to ring->hw_prio.
2 Assign correct hardware ring priority.
3 Remove ring->priority_mutex as ring priority remains unchanged
after initialization.
4 Remove unused ring->num_jobs.
v3: remove ring->num_jobs.
v2: remove ring->priority_mutex.
Fixes: 33abcb1f5a ("drm/amdgpu: set compute queue priority at mqd_init")
Signed-off-by: Nirmoy Das <nirmoy.das@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2021-02-09 15:26:41 -05:00
Bhawanpreet Lakha
6eed1f3fba
drm/amd/display: Fix unused variable warning
...
[Why]
The dm struct is only being used if DCN config is defined and this
causes a unused variable warning if DCN option is not set.
[How]
Remove the compile flag so the variable is used (there also seems to be
a duplicate guard due to a bad rebase) so remove the outer guard to fix
the warning.
Fixes this warning
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c: In function 'dm_set_vblank':
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c:5380:33: warning: unused variable 'dm' [-Wunused-variable]
Fixes: 98ab5f3513 ("drm/amd/display: Fix deadlock during gpu reset v3")
Cc: Alex Deucher <alexander.deucher@amd.com >
Cc: Nicholas Kazlauskas <Nicholas.Kazlauskas@amd.com >
Cc: Stephen Rothwell <sfr@canb.auug.org.au >
Acked-by: Alex Deucher <alexander.deucher@amd.com >
Reviewed-by: Harry Wentland <harry.wentland@amd.com >
Signed-off-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2021-02-09 15:17:15 -05:00
Alex Deucher
534e3ea672
Revert "drm/amd/display: fix unused variable warning"
...
This reverts commit 4c3a329273 .
Bhawan's fix is better (less ifdefs), so revert this and apply Bhawan's.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2021-02-09 15:16:54 -05:00
Imre Deak
2f51312beb
drm/i915/tgl+: Make sure TypeC FIA is powered up when initializing it
...
The TypeC FIA can be powered down if the TC-COLD power state is allowed,
so block the TC-COLD state when initializing the FIA.
Note that this isn't needed on ICL where the FIA is never modular and
which has no generic way to block TC-COLD (except for platforms with a
legacy TypeC port and on those too only via these legacy ports, not via
a DP-alt/TBT port).
Cc: <stable@vger.kernel.org > # v5.10+
Cc: José Roberto de Souza <jose.souza@intel.com >
Reported-by: Paul Menzel <pmenzel@molgen.mpg.de >
Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/3027
Signed-off-by: Imre Deak <imre.deak@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20210208154303.6839-1-imre.deak@intel.com
Reviewed-by: Jos� Roberto de Souza <jose.souza@intel.com >
(cherry picked from commit f48993e5d2 )
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
2021-02-09 20:27:31 +02:00
Imre Deak
4b8878eefa
drm/dp_mst: Don't cache EDIDs for physical ports
...
Caching EDIDs for physical ports prevents updating the EDID if a port
gets reconnected via a Connection Status Notification message, fix this.
Fixes: db1a079569 ("drm/dp_mst: Handle SST-only branch device case")
Cc: Wayne Lin <Wayne.Lin@amd.com >
Cc: Lyude Paul <lyude@redhat.com >
Signed-off-by: Imre Deak <imre.deak@intel.com >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20210201120145.350258-2-imre.deak@intel.com
(cherry picked from commit 468091531c )
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
2021-02-09 17:16:57 +01:00
Dan Carpenter
8d0cb8860a
drm/virtio: fix an error code in virtio_gpu_init()
...
If devm_request_mem_region() fails this code currently returns success
but it should return -EBUSY.
Fixes: 6076a9711d ("drm/virtio: implement blob resources: probe for host visible region")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com >
Link: http://patchwork.freedesktop.org/patch/msgid/YBpy0GS7GfmafMfe@mwanda
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
(cherry picked from commit eb988a2ee5 )
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
2021-02-09 17:16:57 +01:00
Ye Bin
b9377df121
drm/nouveau: remove set but not used variable ‘pdev’ in nouveau_bios_init
...
Fix follow warning:
drivers/gpu/drm/nouveau/nouveau_bios.c:2086:18: warning: variable ‘pdev’ set but not used [-Wunused-but-set-variable]
struct pci_dev *pdev;
^~~~
Reported-by: Hulk Robot <hulkci@huawei.com >
Signed-off-by: Ye Bin <yebin10@huawei.com >
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de >
Link: https://patchwork.freedesktop.org/patch/msgid/20210123013014.3815870-1-yebin10@huawei.com
(cherry picked from commit 09b20988ff )
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
2021-02-09 17:16:57 +01:00
Zack Rusin
bb0ea19639
drm/vmwgfx: Fix some memory leaks on errors
...
Dan noticed some issues with pci_release_region, this builds upon
that and fixes some other lingering issues. As part of this we
also can stop trying to manually free our managed device;
there's no need for it, it will be cleaned up automatically for us.
Fixes: 8772c0bb58 ("drm/vmwgfx: Cleanup pci resource allocation")
Signed-off-by: Zack Rusin <zackr@vmware.com >
Reviewed-by: Martin Krastev <krastevm@vmware.com >
Reviewed-by: Roland Scheidegger <sroland@vmware.com >
Reported-by: kernel test robot <lkp@intel.com >
Reported-by: Dan Carpenter <dan.carpenter@oracle.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20210128173756.121525-1-zackr@vmware.com
(cherry picked from commit 75ec69c79e )
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
2021-02-09 17:16:57 +01:00
Bernard Zhao
439dde0a96
drm/vc4: remove unneeded variable: "ret"
...
remove unneeded variable: "ret".
Signed-off-by: Bernard Zhao <bernard@vivo.com >
Signed-off-by: Maxime Ripard <maxime@cerno.tech >
Link: https://patchwork.freedesktop.org/patch/msgid/20210202122338.15351-1-bernard@vivo.com
(cherry picked from commit f0c5a89e53 )
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
2021-02-09 17:16:57 +01:00
Joseph Schulte
57037094fe
drm: replace drm_modeset_lock_all() in drm_client_modeset_dpms_legacy()
...
This patch helps complete Use DRM_MODESET_LOCK_ALL* helpers instead of
boilerplate todo in Documentation/gpu/todo.rst
Signed-off-by: Joseph Schulte <joeschulte.js@gmail.com >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: https://patchwork.freedesktop.org/patch/msgid/20210125144815.8389-1-joeschulte.js@gmail.com
(cherry picked from commit 482f3ef0b0 )
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
2021-02-09 17:16:57 +01:00
Thomas Zimmermann
0b365a207e
drm/gma500: Remove dependency on TTM
...
The gma500 driver does not use TTM.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de >
Signed-off-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20210129095604.32423-6-tzimmermann@suse.de
(cherry picked from commit 8180cc3752 )
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
2021-02-09 17:14:12 +01:00
Thomas Zimmermann
ac798eb13c
drm/gma500: Remove CONFIG_X86 conditionals from source files
...
Remove the CONFIG_X86 conditionals from the source code. The driver
already depends on X86 in the Kconfig file. Also, no one has been
trying to build it on a non-x86 platform recently, or they would have
noticed that drm_ttm_cache_flush() doesn't exist.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de >
Signed-off-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20210129095604.32423-5-tzimmermann@suse.de
(cherry picked from commit 6455af65e9 )
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
2021-02-09 17:14:11 +01:00
Thomas Zimmermann
26499e0518
drm/gma500: Drop DRM_GMA3600 config option
...
With support for the MID-related chips removed, only support for
desktop chips is left in the driver. So just build the complete
driver if DRM_GMA500 has been selected. Anyone who wants to enable
the Poulsbo code would probably also want the Cedarview code.
[Patrik: Fixed conflict due to Oaktrail not being dropped]
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de >
Signed-off-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20210129095604.32423-4-tzimmermann@suse.de
(cherry picked from commit 837f23bb4b )
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
2021-02-09 17:14:11 +01:00
Thomas Zimmermann
e1da811218
drm/gma500: Remove Medfield support
...
Medfield is an outdated mobile platform with apparently no users left.
Remove it from gma500.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de >
Signed-off-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20210129095604.32423-2-tzimmermann@suse.de
(cherry picked from commit b51035c200 )
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
2021-02-09 17:14:11 +01:00
Qinglang Miao
de4248b744
drm/lima: fix reference leak in lima_pm_busy
...
pm_runtime_get_sync will increment pm usage counter even it
failed. Forgetting to putting operation will result in a
reference leak here.
A new function pm_runtime_resume_and_get is introduced in
[0] to keep usage counter balanced. So We fix the reference
leak by replacing it with new function.
[0] commit dd8088d5a8 ("PM: runtime: Add pm_runtime_resume_and_get to deal with usage counter")
Fixes: 50de2e9ebb ("drm/lima: enable runtime pm")
Reported-by: Hulk Robot <hulkci@huawei.com >
Signed-off-by: Qinglang Miao <miaoqinglang@huawei.com >
Signed-off-by: Qiang Yu <yuq825@gmail.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201127094438.121003-1-miaoqinglang@huawei.com
(cherry picked from commit de499781c9 )
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
2021-02-09 17:14:11 +01:00
Luben Tuikov
c10983e14e
drm/scheduler: Job timeout handler returns status (v3)
...
This patch does not change current behaviour.
The driver's job timeout handler now returns
status indicating back to the DRM layer whether
the device (GPU) is no longer available, such as
after it's been unplugged, or whether all is
normal, i.e. current behaviour.
All drivers which make use of the
drm_sched_backend_ops' .timedout_job() callback
have been accordingly renamed and return the
would've-been default value of
DRM_GPU_SCHED_STAT_NOMINAL to restart the task's
timeout timer--this is the old behaviour, and is
preserved by this patch.
v2: Use enum as the status of a driver's job
timeout callback method.
v3: Return scheduler/device information, rather
than task information.
Cc: Alexander Deucher <Alexander.Deucher@amd.com >
Cc: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com >
Cc: Christian König <christian.koenig@amd.com >
Cc: Daniel Vetter <daniel.vetter@ffwll.ch >
Cc: Lucas Stach <l.stach@pengutronix.de >
Cc: Russell King <linux+etnaviv@armlinux.org.uk >
Cc: Christian Gmeiner <christian.gmeiner@gmail.com >
Cc: Qiang Yu <yuq825@gmail.com >
Cc: Rob Herring <robh@kernel.org >
Cc: Tomeu Vizoso <tomeu.vizoso@collabora.com >
Cc: Steven Price <steven.price@arm.com >
Cc: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Cc: Eric Anholt <eric@anholt.net >
Reported-by: kernel test robot <lkp@intel.com >
Signed-off-by: Luben Tuikov <luben.tuikov@amd.com >
Acked-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com >
Acked-by: Christian König <christian.koenig@amd.com >
Acked-by: Steven Price <steven.price@arm.com >
Signed-off-by: Christian König <christian.koenig@amd.com >
Link: https://patchwork.freedesktop.org/patch/415095/
(cherry picked from commit a6a1f036c7 )
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
2021-02-09 17:14:11 +01:00
Dan Carpenter
78e4ba40f1
drm/vmwgfx/vmwgfx_drv: Fix an error path in vmw_setup_pci_resources()
...
The devm_memremap() function never returns NULL, it returns error
pointers so the test needs to be fixed. Also we need to call
pci_release_regions() to avoid a memory leak.
Fixes: be4f77ac68 ("drm/vmwgfx: Cleanup fifo mmio handling")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com >
Signed-off-by: Zack Rusin <zackr@vmware.com >
Link: https://patchwork.freedesktop.org/patch/msgid/YA6FMboLhnE3uSvb@mwanda
(cherry picked from commit f3ebd4e6b6 )
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
2021-02-09 17:14:11 +01:00
Maxime Ripard
ae442bf6d6
drm/vc4: hdmi: Don't register the CEC adapter if there's no interrupts
...
We introduced the BCM2711 support to the vc4 HDMI controller with 5.10,
but this was lacking any of the interrupts of the CEC controller so we
have to deal with the backward compatibility.
Do so by simply ignoring the CEC setup if the DT doesn't have the
interrupts property.
Reviewed-by: Dave Stevenson <dave.stevenson@raspberrypi.com >
Signed-off-by: Maxime Ripard <maxime@cerno.tech >
Acked-by: Hans Verkuil <hverkuil-cisco@xs4all.nl >
Tested-by: Hans Verkuil <hverkuil-cisco@xs4all.nl >
Link: https://patchwork.freedesktop.org/patch/msgid/20210111142309.193441-13-maxime@cerno.tech
(cherry picked from commit 4d03ed7ad7 )
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
2021-02-09 17:14:11 +01:00
Dom Cobley
1e5e4bbdfd
drm/vc4: hdmi: Remove cec_available flag
...
Now that our HDMI controller supports CEC for the BCM2711, let's remove
that flag.
Reviewed-by: Dave Stevenson <dave.stevenson@raspberrypi.com >
Signed-off-by: Dom Cobley <popcornmix@gmail.com >
Signed-off-by: Maxime Ripard <maxime@cerno.tech >
Acked-by: Hans Verkuil <hverkuil-cisco@xs4all.nl >
Tested-by: Hans Verkuil <hverkuil-cisco@xs4all.nl >
Link: https://patchwork.freedesktop.org/patch/msgid/20210111142309.193441-12-maxime@cerno.tech
(cherry picked from commit f551863af9 )
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
2021-02-09 17:14:11 +01:00
Maxime Ripard
185e98b3bd
drm/vc4: hdmi: Support BCM2711 CEC interrupt setup
...
The HDMI controller found in the BCM2711 has an external interrupt
controller for the CEC and hotplug interrupt shared between the two
instances.
Let's add a variant flag to register a single interrupt handler and
deals with the interrupt handler setup, or two interrupt handlers
relying on an external irqchip.
Signed-off-by: Maxime Ripard <maxime@cerno.tech >
Reviewed-by: Dave Stevenson <dave.stevenson@raspberrypi.com >
Acked-by: Hans Verkuil <hverkuil-cisco@xs4all.nl >
Tested-by: Hans Verkuil <hverkuil-cisco@xs4all.nl >
Link: https://patchwork.freedesktop.org/patch/msgid/20210111142309.193441-11-maxime@cerno.tech
(cherry picked from commit ad6380e9aa )
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
2021-02-09 17:14:11 +01:00
Maxime Ripard
ed4a6bbd63
drm/vc4: hdmi: Split the interrupt handlers
...
The BCM2711 has two different interrupt sources to transmit and receive
CEC messages, provided through an external interrupt chip shared between
the two HDMI interrupt controllers.
The rest of the CEC controller is identical though so we need to change
a bit the code organisation to share the code as much as possible, yet
still allowing to register independent handlers.
Signed-off-by: Maxime Ripard <maxime@cerno.tech >
Reviewed-by: Dave Stevenson <dave.stevenson@raspberrypi.com >
Acked-by: Hans Verkuil <hverkuil-cisco@xs4all.nl >
Tested-by: Hans Verkuil <hverkuil-cisco@xs4all.nl >
Link: https://patchwork.freedesktop.org/patch/msgid/20210111142309.193441-10-maxime@cerno.tech
(cherry picked from commit 0c38490a03 )
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
2021-02-09 17:14:11 +01:00
Maxime Ripard
23b7eb5c12
drm/vc4: hdmi: Introduce a CEC clock
...
While the BCM2835 had the CEC clock derived from the HSM clock, the
BCM2711 has a dedicated parent clock for it.
Let's introduce a separate clock for it so that we can handle both
cases.
Reviewed-by: Dave Stevenson <dave.stevenson@raspberrypi.com >
Signed-off-by: Maxime Ripard <maxime@cerno.tech >
Acked-by: Hans Verkuil <hverkuil-cisco@xs4all.nl >
Tested-by: Hans Verkuil <hverkuil-cisco@xs4all.nl >
Link: https://patchwork.freedesktop.org/patch/msgid/20210111142309.193441-9-maxime@cerno.tech
(cherry picked from commit cd7f016c93 )
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
2021-02-09 17:14:11 +01:00
Maxime Ripard
47fa9a8027
drm/vc4: hdmi: Update the CEC clock divider on HSM rate change
...
As part of the enable sequence we might change the HSM clock rate if the
pixel rate is different than the one we were already dealing with.
On the BCM2835 however, the CEC clock derives from the HSM clock so any
rate change will need to be reflected in the CEC clock divider to output
40kHz.
Fixes: cd4cb49dc5 ("drm/vc4: hdmi: Adjust HSM clock rate depending on pixel rate")
Reviewed-by: Dave Stevenson <dave.stevenson@raspberrypi.com >
Signed-off-by: Maxime Ripard <maxime@cerno.tech >
Acked-by: Hans Verkuil <hverkuil-cisco@xs4all.nl >
Tested-by: Hans Verkuil <hverkuil-cisco@xs4all.nl >
Link: https://patchwork.freedesktop.org/patch/msgid/20210111142309.193441-8-maxime@cerno.tech
(cherry picked from commit a9dd0b9a5c )
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
2021-02-09 17:14:11 +01:00
Maxime Ripard
163a3ef681
drm/vc4: hdmi: Compute the CEC clock divider from the clock rate
...
The CEC clock divider needs to output a frequency of 40kHz from the HSM
rate on the BCM2835. The driver used to have a fixed frequency for it,
but that changed for the BCM2711 and we now need to compute it
dynamically to maintain the proper rate.
Fixes: cd4cb49dc5 ("drm/vc4: hdmi: Adjust HSM clock rate depending on pixel rate")
Reviewed-by: Dave Stevenson <dave.stevenson@raspberrypi.com >
Signed-off-by: Maxime Ripard <maxime@cerno.tech >
Acked-by: Hans Verkuil <hverkuil-cisco@xs4all.nl >
Tested-by: Hans Verkuil <hverkuil-cisco@xs4all.nl >
Link: https://patchwork.freedesktop.org/patch/msgid/20210111142309.193441-7-maxime@cerno.tech
(cherry picked from commit f1ceb9d100 )
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
2021-02-09 17:14:10 +01:00
Dom Cobley
4d8602b8ec
drm/vc4: hdmi: Restore cec physical address on reconnect
...
Currently we call cec_phys_addr_invalidate on a hotplug deassert.
That may be due to a TV power cycling, or an AVR being switched
on (and switching edid).
This makes CEC unusable since our controller wouldn't have a physical
address anymore.
Set it back up again on the hotplug assert.
Fixes: 15b4511a4a ("drm/vc4: add HDMI CEC support")
Signed-off-by: Dom Cobley <popcornmix@gmail.com >
Signed-off-by: Maxime Ripard <maxime@cerno.tech >
Acked-by: Dave Stevenson <dave.stevenson@raspberrypi.com >
Acked-by: Hans Verkuil <hverkuil-cisco@xs4all.nl >
Tested-by: Hans Verkuil <hverkuil-cisco@xs4all.nl >
Link: https://patchwork.freedesktop.org/patch/msgid/20210111142309.193441-6-maxime@cerno.tech
(cherry picked from commit b06eecb515 )
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
2021-02-09 17:14:10 +01:00
Dom Cobley
5a32bfd563
drm/vc4: hdmi: Fix up CEC registers
...
The commit 311e305fdb ("drm/vc4: hdmi: Implement a register layout
abstraction") forgot one CEC register, and made a copy and paste mistake
for another one. Fix those mistakes.
Fixes: 311e305fdb ("drm/vc4: hdmi: Implement a register layout abstraction")
Reviewed-by: Dave Stevenson <dave.stevenson@raspberrypi.com >
Signed-off-by: Dom Cobley <popcornmix@gmail.com >
Signed-off-by: Maxime Ripard <maxime@cerno.tech >
Acked-by: Hans Verkuil <hverkuil-cisco@xs4all.nl >
Tested-by: Hans Verkuil <hverkuil-cisco@xs4all.nl >
Link: https://patchwork.freedesktop.org/patch/msgid/20210111142309.193441-5-maxime@cerno.tech
(cherry picked from commit 303085bc11 )
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
2021-02-09 17:14:10 +01:00
Dom Cobley
4a59ed546c
drm/vc4: hdmi: Fix register offset with longer CEC messages
...
The code prior to 311e305fdb ("drm/vc4: hdmi: Implement a register
layout abstraction") was relying on the fact that the register offset
was incremented by 4 for each readl call. That worked since the register
width is 4 bytes.
However, since that commit the HDMI_READ macro is now taking an enum,
and the offset doesn't increment by 4 but 1 now. Divide the index by 4
to fix this.
Fixes: 311e305fdb ("drm/vc4: hdmi: Implement a register layout abstraction")
Reviewed-by: Dave Stevenson <dave.stevenson@raspberrypi.com >
Signed-off-by: Dom Cobley <popcornmix@gmail.com >
Signed-off-by: Maxime Ripard <maxime@cerno.tech >
Acked-by: Hans Verkuil <hverkuil-cisco@xs4all.nl >
Tested-by: Hans Verkuil <hverkuil-cisco@xs4all.nl >
Link: https://patchwork.freedesktop.org/patch/msgid/20210111142309.193441-4-maxime@cerno.tech
(cherry picked from commit e9c9481f37 )
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
2021-02-09 17:14:10 +01:00
Dom Cobley
902dc5c19a
drm/vc4: hdmi: Move hdmi reset to bind
...
The hdmi reset got moved to a later point in the commit 9045e91a47
("drm/vc4: hdmi: Add reset callback").
However, the reset now occurs after vc4_hdmi_cec_init and so tramples
the setup of registers like HDMI_CEC_CNTRL_1
This only affects pi0-3 as on pi4 the cec registers are in a separate
block
Fixes: 9045e91a47 ("drm/vc4: hdmi: Add reset callback")
Reviewed-by: Dave Stevenson <dave.stevenson@raspberrypi.com >
Signed-off-by: Dom Cobley <popcornmix@gmail.com >
Signed-off-by: Maxime Ripard <maxime@cerno.tech >
Acked-by: Hans Verkuil <hverkuil-cisco@xs4all.nl >
Tested-by: Hans Verkuil <hverkuil-cisco@xs4all.nl >
Link: https://patchwork.freedesktop.org/patch/msgid/20210111142309.193441-3-maxime@cerno.tech
(cherry picked from commit 7155334f15 )
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
2021-02-09 17:14:10 +01:00
Ville Syrjälä
7a6c6243b4
drm/i915: Reject 446-480MHz HDMI clock on GLK
...
The BXT/GLK DPLL can't generate certain frequencies. We already
reject the 233-240MHz range on both. But on GLK the DPLL max
frequency was bumped from 300MHz to 594MHz, so now we get to
also worry about the 446-480MHz range (double the original
problem range). Reject any frequency within the higher
problematic range as well.
Cc: stable@vger.kernel.org
Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/3000
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20210203093044.30532-1-ville.syrjala@linux.intel.com
Reviewed-by: Mika Kahola <mika.kahola@intel.com >
(cherry picked from commit 41751b3e5c )
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com >
2021-02-08 16:57:02 -05:00
Chris Wilson
d5109f739c
drm/i915/gt: Flush before changing register state
...
Flush; invalidate; change registers; invalidate; flush.
Will this finally work on every device? Or will Baytrail complain again?
On the positive side, we immediately see the benefit of having hsw-gt1 in
CI.
Fixes: ace44e13e5 ("drm/i915/gt: Clear CACHE_MODE prior to clearing residuals")
Testcase: igt/gem_render_tiled_blits # hsw-gt1
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk >
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com >
Cc: Akeem G Abodunrin <akeem.g.abodunrin@intel.com >
Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20210125220247.31701-1-chris@chris-wilson.co.uk
(cherry picked from commit d30bbd62b1bfd9e0a33c3583c5a9e5d66f60cbd7)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com >
2021-02-08 16:56:57 -05:00
Chris Wilson
58586680ff
drm/i915: Disable atomics in L3 for gen9
...
Enabling atomic operations in L3 leads to unrecoverable GPU hangs, as
the machine stops responding milliseconds after receipt of the reset
request [GDRT]. By disabling the cached atomics, the hang do not occur
and we presume the GPU would reset normally for similar hangs.
Sadly this is a shotgun approach, but since the impact is critical it is
better to err on the safe side and work back from there.
Reported-by: Jason Ekstrand <jason@jlekstrand.net >
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=110998
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk >
Cc: Jason Ekstrand <jason@jlekstrand.net >
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com >
Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com >
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com >
Reviewed-by: Jason Ekstrand <jason@jlesktrand.net >
Link: https://patchwork.freedesktop.org/patch/msgid/20210125220152.24070-1-chris@chris-wilson.co.uk
Cc: stable@vger.kernel.org
(cherry picked from commit b267c7ae0ad5b437b068f46919b17f85000154b4)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com >
2021-02-08 16:56:53 -05:00
Chris Wilson
29d88083d6
drm/i915/gem: Move freeze/freeze_late next to suspend/suspend_late
...
Push the hibernate pm routines next to the suspend pm routines in
gem/i915_gem_pm.c. This has the side-effect of putting the wbinvd()
abusers next to each other.
Reported-by: Guenter Roeck <linux@roeck-us.net >
Fixes: 30d2bfd093 ("drm/i915/gem: Almagamate clflushes on freeze")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk >
Cc: Matthew Auld <matthew.auld@intel.com >
Reviewed-by: Matthew Auld <matthew.auld@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20210123145543.10533-1-chris@chris-wilson.co.uk
(cherry picked from commit 6d8f02207420e76db693a00ccb44792474e297fc)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com >
2021-02-08 16:56:49 -05:00
Dan Carpenter
54fd4b9a4a
drm/i915/gem: Fix oops in error handling code
...
This code will Oops when it tries to i915_gem_object_free(obj) because
"obj" is an error pointer.
Fixes: 97d5539632 ("drm/i915/region: convert object_create into object_init")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com >
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk >
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk >
Link: https://patchwork.freedesktop.org/patch/msgid/YA6FkPn5S4ZDUGxq@mwanda
(cherry picked from commit ad8db423a30f0ac39a5483dfd726058135ff2bd2)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com >
2021-02-08 16:56:45 -05:00
Dan Carpenter
fbb2bdd22a
drm/i915/gvt: fix uninitialized return in intel_gvt_update_reg_whitelist()
...
Smatch found an uninitialized variable bug in this code:
drivers/gpu/drm/i915/gvt/cmd_parser.c:3191 intel_gvt_update_reg_whitelist()
error: uninitialized symbol 'ret'.
The first thing that Smatch complains about is that "ret" isn't set if
we don't enter the "for_each_engine(engine, &dev_priv->gt, id) {" loop.
Presumably we always have at least one engine so that's a false
positive.
But it's definitely a bug to not set "ret" if i915_gem_object_pin_map()
fails.
Let's fix the bug and silence the false positive.
Fixes: 493f30cd08 ("drm/i915/gvt: parse init context to update cmd accessible reg whitelist")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com >
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk >
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk >
Link: https://patchwork.freedesktop.org/patch/msgid/YA6F3oF8mRaNQWjb@mwanda
(cherry picked from commit 784f70e17e6bc423a04fb6524634a76f68ab1192)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com >
2021-02-08 16:56:41 -05:00
Chris Wilson
2a8f20bb64
drm/i915: Restrict DRM_I915_DEBUG to developer builds
...
Let's not encourage everybody to build i915's debug code, and certainly
not the build robots who need to scrutinise the production build. Since
CI will complain if the debug build is broken, having the other build
bots focus on the builds we don't cover ourselves should improve the
build coverage.
Reported-by: Stephen Rothwell <sfr@canb.auug.org.au >
Fixes: 4f86975f53 ("drm/i915: Add DEBUG_GEM to the recommended CI config")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk >
Acked-by: Jani Nikula <jani.nikula@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20210122091058.5145-1-chris@chris-wilson.co.uk
(cherry picked from commit c442f658299d59b327a4bf21457ec8ece936f133)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com >
2021-02-08 16:56:36 -05:00
Paolo Bonzini
e36b250e50
i915: kvmgt: the KVM mmu_lock is now an rwlock
...
Adjust the KVMGT page tracking callbacks.
Cc: Zhenyu Wang <zhenyuw@linux.intel.com >
Cc: Zhi Wang <zhi.a.wang@intel.com >
Cc: intel-gvt-dev@lists.freedesktop.org
Cc: intel-gfx@lists.freedesktop.org
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2021-02-08 06:32:57 -05:00
Christoph Hellwig
bf22c9ec39
drm: remove drm_fb_helper_modinit
...
drm_fb_helper_modinit has a lot of boilerplate for what is not very
simple functionality. Just open code it in the only caller using
IS_ENABLED and IS_MODULE, and skip the find_module check as a
request_module is harmless if the module is already loaded (and not
other caller has this find_module check either).
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Signed-off-by: Christoph Hellwig <hch@lst.de >
Signed-off-by: Jessica Yu <jeyu@kernel.org >
2021-02-08 12:20:38 +01:00
Stephen Boyd
182b4a2d25
drm/msm/dp: Add a missing semi-colon
...
A missing semicolon here causes my external display to stop working.
Indeed, missing the semicolon on the return statement leads to
dp_panel_update_tu_timings() not existing because the compiler thinks
it's part of the return statement of a void function, so it must not be
important.
$ ./scripts/bloat-o-meter before.o after.o
add/remove: 1/1 grow/shrink: 0/1 up/down: 7400/-7540 (-140)
Function old new delta
dp_panel_update_tu_timings - 7400 +7400
_dp_ctrl_calc_tu.constprop 18024 17900 -124
dp_panel_update_tu_timings.constprop 7416 - -7416
Total: Before=54440, After=54300, chg -0.26%
Add a semicolon so this function works like it used to.
Cc: Sean Paul <sean@poorly.run >
Cc: Kuogee Hsieh <khsieh@codeaurora.org >
Cc: linux-arm-msm@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Cc: freedreno@lists.freedesktop.org
Cc: Lee Jones <lee.jones@linaro.org >
Fixes: cc9014bf63 ("drm/msm/dp/dp_ctrl: Move 'tu' from the stack to the heap")
Signed-off-by: Stephen Boyd <swboyd@chromium.org >
Signed-off-by: Rob Clark <robdclark@chromium.org >
2021-02-07 09:57:04 -08:00
Kuogee Hsieh
ea9f337ce8
drm/msm/dp: reset dp controller only at boot up and pm_resume
...
DP_SW_RESET is the global SW reset that is used to initialize DP
controller. If DP_SW_RESET executed during connection setup,
two HPD related side effects may occurred,
1) pending HPD interrupts cleared unexpected
2) re start debounce logic which trigger another interrupt
This patch only issue DP_SW_RESET at boot up and pm_resume.
This patch also reinit video_comp before configure dp controller
to avoid missing VIDEO_READY interrupt.
Fixes: 9fc418430c ("drm/msm/dp: unplug interrupt missed after irq_hpd handler")
Signed-off-by: Kuogee Hsieh <khsieh@codeaurora.org >
Reviewed-by: Stephen Boyd <swboyd@chromium.org >
Signed-off-by: Rob Clark <robdclark@chromium.org >
2021-02-06 09:28:17 -08:00
Rob Clark
c8d99bb938
drm/msm: Fix legacy relocs path
...
In moving code around, we ended up using the same pointer to
copy_from_user() the relocs tables as we used for the cmd table
entry, which is clearly not right. This went unnoticed because
modern mesa on non-ancent kernels does not actually use relocs.
But this broke ancient mesa on modern kernels.
Reported-by: Emil Velikov <emil.velikov@collabora.com >
Fixes: 20224d715a ("drm/msm/submit: Move copy_from_user ahead of locking bos")
Signed-off-by: Rob Clark <robdclark@chromium.org >
Reviewed-by: Akhil P Oommen <akhilpo@codeaurora.org >
2021-02-05 10:00:10 -08:00
Konrad Dybcio
7df222c359
drm/msm/disp/mdp5: mdp5_cfg: Fix msm8974v2 max_clk
...
The maximum mdp clock rate on msm8974v2 is 320MHz. Fix it.
Signed-off-by: Konrad Dybcio <konrad.dybcio@somainline.org >
Reviewed-by: Abhinav Kumar <abhinavk@codeaurora.org >
Signed-off-by: Rob Clark <robdclark@chromium.org >
2021-02-05 09:59:49 -08:00
Dave Airlie
59854811c0
Merge tag 'drm-intel-fixes-2021-02-04' of git://anongit.freedesktop.org/drm/drm-intel into drm-fixes
...
drm/i915 fixes for v5.11-rc7:
- Skip vswing programming for TBT
- Power up combo PHY lanes for HDMI
- Fix double YUV range correction on HDR planes
- Fix the MST PBN divider calculation
- Fix LTTPR vswing/pre-emp setting in non-transparent mode
- Move the breadcrumb to the signaler if completed upon cancel
- Close race between enable_breadcrumbs and cancel_breadcrumbs
- Drop lru bumping on display unpinning
Signed-off-by: Dave Airlie <airlied@redhat.com >
From: Jani Nikula <jani.nikula@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/87bld0f36b.fsf@intel.com
2021-02-05 11:03:28 +10:00