Alex Deucher
c6d2ac2c36
drm/radeon: add get_allowed_info_register for r6xx/r7xx
...
Registers that can be fetched from the info ioctl.
Tested-by: Marek Olšák <marek.olsak@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-03-19 12:26:38 -04:00
Alex Deucher
18b53e9057
drm/radeon: add get_allowed_info_register function for r1xx-r5xx
...
Just a stub.
Tested-by: Marek Olšák <marek.olsak@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-03-19 12:26:38 -04:00
Alex Deucher
4ce4728b51
drm/radeon: add new callback for info ioctl register accessor
...
This adds a callback for each asic family to determine what
registers are allowed to be read back via the info ioctl.
The idea here is to allow usermode to query things like GPU status
registers or GPU harvest registers for profiling and determining
the gfx config.
Tested-by: Marek Olšák <marek.olsak@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-03-19 12:26:37 -04:00
Alex Deucher
5c363a8603
drm/radeon: add INFO query for current sclk/mclk
...
Allow the UMDs to query the current sclk/mclk
for profiling, etc.
Tested-by: Marek Olšák <marek.olsak@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-03-19 12:26:36 -04:00
Alex Deucher
9b23bad032
drm/radeon/kv: implement get_current_sclk/mclk
...
Will be used for exposing current clocks via INFO ioctl.
Tested-by: Marek Olšák <marek.olsak@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-03-19 12:26:36 -04:00
Alex Deucher
7ce9cdaec3
drm/radeon/tn: implement get_current_sclk/mclk
...
Will be used for exposing current clocks via INFO ioctl.
Tested-by: Marek Olšák <marek.olsak@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-03-19 12:26:35 -04:00
Alex Deucher
2f8e1eb7d6
drm/radeon/sumo: implement get_current_sclk/mclk
...
Will be used for exposing current clocks via INFO ioctl.
Tested-by: Marek Olšák <marek.olsak@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-03-19 12:26:34 -04:00
Alex Deucher
dbbd3c81b0
drm/radeon/ci: implement get_current_sclk/mclk
...
Will be used for exposing current clocks via INFO ioctl.
Tested-by: Marek Olšák <marek.olsak@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-03-19 12:26:34 -04:00
Alex Deucher
ca1110bc5b
drm/radeon/si: implement get_current_sclk/mclk
...
Will be used for exposing current clocks via INFO ioctl.
Tested-by: Marek Olšák <marek.olsak@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-03-19 12:26:33 -04:00
Alex Deucher
1d633e3a21
drm/radeon/ni: implement get_current_sclk/mclk
...
Will be used for exposing current clocks via INFO ioctl.
Tested-by: Marek Olšák <marek.olsak@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-03-19 12:26:32 -04:00
Alex Deucher
da6472f349
drm/radeon: remove some rv7xx leftovers from btc dpm code
...
Some copy paste leftovers. No functional change.
Tested-by: Marek Olšák <marek.olsak@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-03-19 12:26:31 -04:00
Alex Deucher
99550ee9e8
drm/radeon/btc: implement get_current_sclk/mclk
...
Will be used for exposing current clocks via INFO ioctl.
Tested-by: Marek Olšák <marek.olsak@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-03-19 12:26:31 -04:00
Alex Deucher
296deb7167
drm/radeon/rv7xx/eg: implement get_current_sclk/mclk
...
Will be used for exposing current clocks via INFO ioctl.
Tested-by: Marek Olšák <marek.olsak@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-03-19 12:26:30 -04:00
Alex Deucher
d0a04d3b2e
drm/radeon/rv6xx: implement get_current_sclk/mclk
...
Will be used for exposing current clocks via INFO ioctl.
Tested-by: Marek Olšák <marek.olsak@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-03-19 12:26:29 -04:00
Alex Deucher
3c94566ce1
drm/radeon/rs780: implement get_current_sclk/mclk
...
Will be used for exposing current clocks via INFO ioctl.
Tested-by: Marek Olšák <marek.olsak@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-03-19 12:26:29 -04:00
Alex Deucher
d7dbce09b6
drm/radeon/dpm: add new callbacks to get the current sclk/mclk
...
Needed to to expose the current clocks via the INFO ioctl.
Tested-by: Marek Olšák <marek.olsak@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-03-19 12:26:28 -04:00
Alex Deucher
d6d2a1882a
drm/radeon: add INFO query for GPU temperature
...
Useful for profiling.
Tested-by: Marek Olšák <marek.olsak@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-03-19 12:26:27 -04:00
Maarten Lankhorst
b9729b17a4
drm/radeon: dont switch vt on suspend
...
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com >
Acked-by: Alex Deucher <alexander.deucher@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-03-19 12:26:27 -04:00
Alex Deucher
a1dcc2778b
drm/radeon: setup quantization_range in AVI infoframe
...
If the display supports selectable range, set the range
based on what the user has selected for output csc.
bug:
https://bugs.freedesktop.org/show_bug.cgi?id=83226
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-03-19 12:26:26 -04:00
Alex Deucher
643b1f5629
drm/radeon: implement output csc property for DCE5+
...
Implement the property for DCE5+ asics. Older asics
require a slightly more complex process.
bug:
https://bugs.freedesktop.org/show_bug.cgi?id=83226
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-03-19 12:26:25 -04:00
Alex Deucher
67ba31d352
drm/radeon: add an output_csc property
...
This adds the drm property for output csc (e.g.,
transform of output display colorspace). Currently
only common ones (TV RGB, BT.601, BT.709) are supported,
but bypass and tv rgb are really the only useful ones at
the moment. Additionally we could expose a user adjustable
matrix in the future.
This commit just adds the property. The hw support will
be added in subsequent patches.
bug:
https://bugs.freedesktop.org/show_bug.cgi?id=83226
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-03-19 12:26:25 -04:00
Alex Deucher
a239118a24
drm/radeon: drop ttm two ended allocation
...
radeon_bo_create() calls radeon_ttm_placement_from_domain()
before ttm_bo_init() is called. radeon_ttm_placement_from_domain()
uses the ttm bo size to determine when to select top down
allocation but since the ttm bo is not initialized yet the
check is always false. It only took effect when buffers
were validated later. It also seemed to regress suspend
and resume on some systems possibly due to it not
taking effect in radeon_bo_create().
radeon_bo_create() and radeon_ttm_placement_from_domain()
need to be reworked substantially for this to be optimally
effective. Re-enable it at that point.
Noticed-by: Oded Gabbay <oded.gabbay@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
Cc: stable@vger.kernel.org
2015-03-18 09:53:40 -04:00
Ben Goz
e405ca3a1b
drm/radeon: Changing number of compute pipe lines
...
The current CP firmware can handle Usermode Queues only on MEC1.
To reflect this firmware change, this commit reduces number of compute pipelines
to 4 - 1, from 8 - 1 (the first pipeline is allocated for kgd).
Signed-off-by: Ben Goz <ben.goz@amd.com >
Signed-off-by: Oded Gabbay <oded.gabbay@amd.com >
Cc: stable@vger.kernel.org
2015-03-16 23:36:58 +02:00
Christian König
a17d4996e0
drm/radeon: drop setting UPLL to sleep mode
...
Just keep it working, seems to fix some PLL problems.
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=73378
Signed-off-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
Cc: stable@vger.kernel.org
2015-03-11 08:31:56 -04:00
Maarten Lankhorst
b661010171
drm/radeon: fix wait to actually occur after the signaling callback
...
A normal wait adds to the front of the tail. By doing something
similar to fence_default_wait the fence code can run without racing.
This is a complete fix for "panic on suspend from KDE with radeon",
and a partial fix for "Radeon: System pauses on TAHITI". On tahiti
si_irq_set needs to be fixed too, to completely flush the writes
before radeon_fence_activity is called in radeon_fence_enable_signaling.
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=90741
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=90861
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@ubuntu.com >
Reported-by: Jon Arne Jørgensen <jonjon.arnearne@gmail.com >
Reported-and-tested-by: Gustaw Smolarczyk <wielkiegie@gmail.com >
Cc: stable@vger.kernel.org (v3.18+)
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-03-11 08:30:35 -04:00
Alex Deucher
77ae5f4b48
drm/radeon: fix interlaced modes on DCE8
...
Need to double the viewport height.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
Cc: stable@vger.kernel.org
2015-03-03 17:28:31 -05:00
Tommi Rantala
a28b2a47ed
drm/radeon: fix DRM_IOCTL_RADEON_CS oops
...
Passing zeroed drm_radeon_cs struct to DRM_IOCTL_RADEON_CS produces the
following oops.
Fix by always calling INIT_LIST_HEAD() to avoid the crash in list_sort().
----------------------------------
#include <stdint.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <drm/radeon_drm.h>
static const struct drm_radeon_cs cs;
int main(int argc, char **argv)
{
return ioctl(open(argv[1], O_RDWR), DRM_IOCTL_RADEON_CS, &cs);
}
----------------------------------
[ttrantal@test2 ~]$ ./main /dev/dri/card0
[ 46.904650] BUG: unable to handle kernel NULL pointer dereference at (null)
[ 46.905022] IP: [<ffffffff814d6df2>] list_sort+0x42/0x240
[ 46.905022] PGD 68f29067 PUD 688b5067 PMD 0
[ 46.905022] Oops: 0002 [#1 ] SMP
[ 46.905022] CPU: 0 PID: 2413 Comm: main Not tainted 4.0.0-rc1+ #58
[ 46.905022] Hardware name: Hewlett-Packard HP Compaq dc5750 Small Form Factor/0A64h, BIOS 786E3 v02.10 01/25/2007
[ 46.905022] task: ffff880058e2bcc0 ti: ffff880058e64000 task.ti: ffff880058e64000
[ 46.905022] RIP: 0010:[<ffffffff814d6df2>] [<ffffffff814d6df2>] list_sort+0x42/0x240
[ 46.905022] RSP: 0018:ffff880058e67998 EFLAGS: 00010246
[ 46.905022] RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000000
[ 46.905022] RDX: ffffffff81644410 RSI: ffff880058e67b40 RDI: ffff880058e67a58
[ 46.905022] RBP: ffff880058e67a88 R08: 0000000000000000 R09: 0000000000000000
[ 46.905022] R10: ffff880058e2bcc0 R11: ffffffff828e6ca0 R12: ffffffff81644410
[ 46.905022] R13: ffff8800694b8018 R14: 0000000000000000 R15: ffff880058e679b0
[ 46.905022] FS: 00007fdc65a65700(0000) GS:ffff88006d600000(0000) knlGS:0000000000000000
[ 46.905022] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 46.905022] CR2: 0000000000000000 CR3: 0000000058dd9000 CR4: 00000000000006f0
[ 46.905022] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 46.905022] DR3: 0000000000000000 DR6: 00000000ffff4ff0 DR7: 0000000000000400
[ 46.905022] Stack:
[ 46.905022] ffff880058e67b40 ffff880058e2bcc0 ffff880058e67a78 0000000000000000
[ 46.905022] 0000000000000000 0000000000000000 0000000000000000 0000000000000000
[ 46.905022] 0000000000000000 0000000000000000 0000000000000000 0000000000000000
[ 46.905022] Call Trace:
[ 46.905022] [<ffffffff81644a65>] radeon_cs_parser_fini+0x195/0x220
[ 46.905022] [<ffffffff81645069>] radeon_cs_ioctl+0xa9/0x960
[ 46.905022] [<ffffffff815e1f7c>] drm_ioctl+0x19c/0x640
[ 46.905022] [<ffffffff810f8fdd>] ? trace_hardirqs_on_caller+0xfd/0x1c0
[ 46.905022] [<ffffffff810f90ad>] ? trace_hardirqs_on+0xd/0x10
[ 46.905022] [<ffffffff8160c066>] radeon_drm_ioctl+0x46/0x80
[ 46.905022] [<ffffffff81211868>] do_vfs_ioctl+0x318/0x570
[ 46.905022] [<ffffffff81462ef6>] ? selinux_file_ioctl+0x56/0x110
[ 46.905022] [<ffffffff81211b41>] SyS_ioctl+0x81/0xa0
[ 46.905022] [<ffffffff81dc6312>] system_call_fastpath+0x12/0x17
[ 46.905022] Code: 48 89 b5 10 ff ff ff 0f 84 03 01 00 00 4c 8d bd 28 ff ff
ff 31 c0 48 89 fb b9 15 00 00 00 49 89 d4 4c 89 ff f3 48 ab 48 8b 46 08 <48> c7
00 00 00 00 00 48 8b 0e 48 85 c9 0f 84 7d 00 00 00 c7 85
[ 46.905022] RIP [<ffffffff814d6df2>] list_sort+0x42/0x240
[ 46.905022] RSP <ffff880058e67998>
[ 46.905022] CR2: 0000000000000000
[ 47.149253] ---[ end trace 09576b4e8b2c20b8 ]---
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Tommi Rantala <tt.rantala@gmail.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
Cc: stable@vger.kernel.org
2015-03-03 17:28:30 -05:00
Alex Deucher
cffefd9bb3
drm/radeon: do a posting read in cik_set_irq
...
To make sure the writes go through the pci bridge.
bug:
https://bugzilla.kernel.org/show_bug.cgi?id=90741
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
Cc: stable@vger.kernel.org
2015-03-03 17:28:29 -05:00
Alex Deucher
0586915ec1
drm/radeon: do a posting read in si_set_irq
...
To make sure the writes go through the pci bridge.
bug:
https://bugzilla.kernel.org/show_bug.cgi?id=90741
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
Cc: stable@vger.kernel.org
2015-03-03 17:28:29 -05:00
Alex Deucher
c320bb5f6d
drm/radeon: do a posting read in evergreen_set_irq
...
To make sure the writes go through the pci bridge.
bug:
https://bugzilla.kernel.org/show_bug.cgi?id=90741
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
Cc: stable@vger.kernel.org
2015-03-03 17:28:28 -05:00
Alex Deucher
9d1393f23d
drm/radeon: do a posting read in r600_set_irq
...
To make sure the writes go through the pci bridge.
bug:
https://bugzilla.kernel.org/show_bug.cgi?id=90741
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
Cc: stable@vger.kernel.org
2015-03-03 17:28:27 -05:00
Alex Deucher
54acf107e4
drm/radeon: do a posting read in rs600_set_irq
...
To make sure the writes go through the pci bridge.
bug:
https://bugzilla.kernel.org/show_bug.cgi?id=90741
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
Cc: stable@vger.kernel.org
2015-03-03 17:28:27 -05:00
Alex Deucher
f957063fee
drm/radeon: do a posting read in r100_set_irq
...
To make sure the writes go through the pci bridge.
bug:
https://bugzilla.kernel.org/show_bug.cgi?id=90741
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
Cc: stable@vger.kernel.org
2015-03-03 17:28:26 -05:00
Slava Grigorev
2afa3265b2
radeon/audio: fix DP audio on DCE6
...
Split DCE6 and DCE8 programming of DCCG_AUDIO_DTO1
registers to properly enable DP audio for both DCE
revisions.
Signed-off-by: Slava Grigorev <slava.grigorev@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-03-03 17:28:26 -05:00
Slava Grigorev
b983a8f458
radeon/audio: fix whitespace
...
Use proper tabs.
Signed-off-by: Slava Grigorev <slava.grigorev@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-03-03 17:28:25 -05:00
Alex Deucher
5c046a57a5
drm/radeon: adjust audio callback order
...
- Move it out of the UNIPHY case to handle older DCE blocks.
- set audio dpms before video dpms
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-03-03 17:28:24 -05:00
Alex Deucher
aeefd07e90
drm/radeon: properly set dto for dp on DCE4/5
...
If DCPLL or ext PLL is used, use the disp clk. If
PPLL is used, use the dp clock.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-03-03 17:28:24 -05:00
Alex Deucher
b20932dd62
drm/radeon/audio: update EDID derived fields in modeset
...
We don't necessarily have an EDID at this point when
audio detect gets called. Ideally we'd update these
fields in detect, but that requires a larger rework
of the display detect code.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-03-03 17:28:23 -05:00
Alex Deucher
3ed7ceeabf
drm/radeon: don't toggle audio state in modeset
...
Should be done only at detect time to avoid spurious
state changes on the audio side.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-03-03 17:28:22 -05:00
Alex Deucher
88af339f9f
drm/radeon/audio: set mute around state setup
...
To avoid possible sound artifacts while setting up audio.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-03-03 17:28:22 -05:00
Alex Deucher
d3c34d2c73
drm/radeon: assign pin in detect
...
We need the pin from detect on, it's too late in dpms.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-03-03 17:28:21 -05:00
Alex Deucher
add7d75966
drm/radeon: fix the audio dpms callbacks
...
Don't touch the audio enable bits as these are already
handled in display detection. Enable the hdmi secondary
streams in hdmi enable to match dp. Rename dp dpms
callback to be consistent with hdmi.
bug:
https://bugs.freedesktop.org/show_bug.cgi?id=89327
https://bugzilla.kernel.org/show_bug.cgi?id=93921
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-03-03 17:28:20 -05:00
Alex Deucher
3473f542ab
drm/radeon: only enable DP audio if the monitor supports it
...
We were enabling DP secondary streams even if the monitor
didn't support them. Fixes display problems on some DP
monitors.
Tested-by: Jim Boz <jim876@xs4all.nl >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-02-25 16:06:10 -05:00
Alex Deucher
94a47c49fe
drm/radeon: fix atom aux payload size check for writes (v2)
...
The atom aux param interface only supports 4 bits for
the total write transfer size (header + payload). This
limits us to 12 bytes of payload rather than 16. Add a
check for this. Reads are not affected.
v2: switch to WARN_ON_ONCE
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-02-25 16:06:10 -05:00
Alex Deucher
dbfb00c3e7
drm/radeon: fix 1 RB harvest config setup for TN/RL
...
The logic was reversed from what the hw actually exposed.
Fixes graphics corruption in certain harvest configurations.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
Cc: stable@vger.kernel.org
2015-02-25 16:06:09 -05:00
Christian König
acc1522a54
drm/radeon: enable SRBM timeout interrupt on EG/NI
...
Signed-off-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-02-25 16:06:08 -05:00
Christian König
18ad01effe
drm/radeon: enable SRBM timeout interrupt on SI
...
Signed-off-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-02-25 16:06:08 -05:00
Leo Liu
dc12a3ec71
drm/radeon: enable SRBM timeout interrupt on CIK v2
...
v2: disable it on suspend
Signed-off-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-02-25 16:06:07 -05:00
Alex Deucher
e1b4e722f7
drm/radeon: dump full IB if we hit a packet error
...
Dump the whole IB if we run into an invalid packet.
This makes things much easier to debug.
bug:
https://bugs.freedesktop.org/show_bug.cgi?id=89148
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2015-02-25 16:06:06 -05:00
Alex Deucher
951caa6acf
drm/radeon: disable mclk switching with 120hz+ monitors
...
These tend to be problematic even if the vblank period is
long enough. This needs more investigation across a wider
range of displays. Disable for now.
bugs:
https://bugs.freedesktop.org/show_bug.cgi?id=87796
https://bugs.freedesktop.org/show_bug.cgi?id=89198
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
Cc: stable@vger.kernel.org
2015-02-25 16:06:06 -05:00