Alex Deucher
0e16e4cfde
drm/radeon: use packet2 for nop on hawaii with old firmware
...
Older firmware didn't support the new nop packet.
v2 (Andreas Boll):
- Drop usage of packet3 for new firmware
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com > (v1)
Signed-off-by: Andreas Boll <andreas.boll.dev@gmail.com >
Cc: stable@vger.kernel.org
2014-08-05 08:53:57 -04:00
Christian König
cc6f353625
drm/radeon: update IB size estimation for VM
...
That should allow us to allocate bigger BOs.
Signed-off-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:56 -04:00
Christian König
03f62abd11
drm/radeon: split PT setup in more functions
...
Move the decision what to use into the common VM code.
Signed-off-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:55 -04:00
Christian König
5a341be27f
drm/radeon: add VM GART copy optimization to NI as well
...
Signed-off-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:55 -04:00
Christian König
ee26d83ff0
drm/radeon: take a BO reference on VM cleanup
...
This closes a small window where the GPU might have accessed freed up memory.
Signed-off-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:54 -04:00
Christian König
512d8afc5d
drm/radeon: add radeon_bo_ref function
...
To be consistent with radeon_bo_unref, needed in the following patch.
Signed-off-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:53 -04:00
Christian König
e7e31600d3
drm/radeon: remove taking mclk_lock from radeon_bo_unref
...
It's causing lockdep warnings and why should
we access the memory that is freed up?
Signed-off-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:53 -04:00
Christian König
dfc230f9af
drm/radeon: adjust default radeon_vm_block_size v2
...
v2: rebase on vm_size scale change. Adjust vm_size default to 8,
Better handle the default and smaller values.
Signed-off-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:52 -04:00
Christian König
f77c4f0223
drm/radeon: try to enable VM flushing once more
...
Let's try to fix bugs related to this instead of just disabling it.
Signed-off-by: Christian König <christian.koenig@amd.com >
Tested-by: Michel Dänzer <michel.daenzer@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:51 -04:00
Alex Deucher
0aea5e4aa2
drm/radeon: use an intervall tree to manage the VMA v2
...
Scales much better than scanning the address range linearly.
v2: store pfn instead of address
Signed-off-by: Christian König <christian.koenig@amd.com >
Tested-by: Michel Dänzer <michel.daenzer@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:51 -04:00
Christian König
c265f24d5c
drm/radeon: remove radeon_bo_clear_va
...
Won't work anyway, instead WARN_ON if the VA list isn't
empty when we free the BO.
Signed-off-by: Christian König <christian.koenig@amd.com >
Tested-by: Michel Dänzer <michel.daenzer@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:50 -04:00
Christian König
e31ad969bb
drm/radeon: invalidate moved BOs in the VM (v2)
...
Don't wait for the BO to be used again, just
update the PT on the next VM use.
v2: remove stray semicolon.
Signed-off-by: Christian König <christian.koenig@amd.com >
Tested-by: Michel Dänzer <michel.daenzer@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:49 -04:00
Alex Deucher
c08abf1190
drm/radeon: re-enable dpm by default on BTC
...
This patch depends on:
e07929810f
(drm/radeon/dpm: fix typo in vddci setup for eg/btc)
bugs:
https://bugs.freedesktop.org/show_bug.cgi?id=73053
https://bugzilla.kernel.org/show_bug.cgi?id=68571
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
Cc: stable@vger.kernel.org
2014-08-05 08:53:49 -04:00
Alex Deucher
8f500af4ef
drm/radeon: re-enable dpm by default on cayman
...
This patch depends on:
b0880e87c1
(drm/radeon/dpm: fix vddci setup typo on cayman)
bug:
https://bugs.freedesktop.org/show_bug.cgi?id=69723
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
Cc: stable@vger.kernel.org
2014-08-05 08:53:48 -04:00
Michel Dänzer
404a6a512f
drm/radeon: Only flush HDP cache from idle ioctl if BO is in VRAM
...
The HDP cache only applies to CPU access to VRAM.
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:47 -04:00
Alex Deucher
6b57f20cb5
drm/radeon/dpm: handle voltage info fetching on hawaii
...
Some hawaii cards use a different method to fetch the
voltage info from the vbios.
bug:
https://bugs.freedesktop.org/show_bug.cgi?id=74250
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
Cc: stable@vger.kernel.org
2014-08-05 08:53:47 -04:00
Alex Deucher
e9f274b2a1
drm/radeon/atom: add new voltage fetch function for hawaii
...
Some hawaii boards use a different method for fetching the
voltage information from the vbios.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
Cc: stable@vger.kernel.org
2014-08-05 08:53:46 -04:00
Michel Dänzer
72a9987edc
drm/radeon: Always flush the HDP cache before submitting a CS to the GPU
...
This ensures the GPU sees all previous CPU writes to VRAM, which makes it
safe:
* For userspace to stream data from CPU to GPU via VRAM instead of GTT
* For IBs to be stored in VRAM instead of GTT
* For ring buffers to be stored in VRAM instead of GTT, if the HPD flush
is performed via MMIO
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:45 -04:00
Michel Dänzer
124764f174
drm/radeon: s/ioctl_wait_idle/mmio_hpd_flush/
...
And clean up the function comment a little.
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:44 -04:00
Christian König
f28be81011
drm/radeon: separate ring and IB handling
...
Both on their own are complex enough.
Signed-off-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:44 -04:00
Alex Deucher
3157c58972
drm/radeon: fix reversed logic in evergreen_mc_resume
...
Need to unblank the display when resuming the MC. No
functional change as this code path is not currently
hit. We always disable the displays entirely rather
than just blanking them.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:43 -04:00
Christian König
f1d2a26b50
drm/radeon: set VM base addr using the PFP v2
...
Seems to make VM flushes more stable on SI and CIK.
v2: only use the PFP on the GFX ring on CIK
Signed-off-by: Christian König <christian.koenig@amd.com >
Cc: stable@vger.kernel.org
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:42 -04:00
Michel Dänzer
f069dc1dbc
drm/radeon/cik: Read back SDMA WPTR register after writing it
...
For symmetry with other *_set_wptr hooks.
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:42 -04:00
Michel Dänzer
810b73d190
drm/radeon: Use write-combined CPU mappings of IBs on >= CIK
...
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:41 -04:00
Michel Dänzer
1490434f0d
drm/radeon: Use write-combined CPU mappings of ring buffers with PCIe
...
PCI GART doesn't support unsnooped access. AGP GART already uses
write-combined CPU mappings.
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:40 -04:00
Alex Deucher
5dc355325b
drm/radeon: load the lm63 driver for an lm64 thermal chip.
...
Looks like the lm63 driver supports the lm64 as well.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
Cc: stable@vger.kernel.org
2014-08-05 08:53:40 -04:00
Alex Deucher
ebdea82d2e
drm/radeon: make radeon_connector_encoder_is_hbr2 static
...
It's only used in radeon_connectors.c.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:39 -04:00
Christian König
a3a9226d29
drm/radeon: add trace_radeon_vm_flush
...
Signed-off-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:38 -04:00
Christian König
33fa9fe3dd
drm/radeon: fix R600_PTE_GART handling
...
That didn't worked correctly any more and opened up a security problem.
Signed-off-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:37 -04:00
Christian König
ed5cb43f8f
drm/radeon: remove discardable flag from radeon_gem_object_create
...
Unused and unimplemented. Also fix specifying the
kernel flag incorrectly at one occasion.
Signed-off-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:37 -04:00
Alex Deucher
4807c5a8a0
drm/radeon: add a PX quirk list
...
Some PX laptops seems to have problems turning the dGPU on/off.
Add a quirk list to disable runpm by default on those systems.
Also convert the current PX d3 delay handling to a quirk.
bug:
https://bugzilla.kernel.org/show_bug.cgi?id=51381
https://bugzilla.kernel.org/show_bug.cgi?id=74551
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:36 -04:00
Alex Deucher
391bfec33c
drm/radeon: remove visible vram size limit on bo allocation (v4)
...
Now that fallback to gtt is fixed for cpu access, we can
remove this limit.
bug:
https://bugs.freedesktop.org/show_bug.cgi?id=78717
v2: use new gart_pin_size to accurately track available gtt.
v3: fix comment
v4: clarify comment
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com >
2014-08-05 08:53:35 -04:00
Alex Deucher
2c6316cbcd
drm/radeon: use vram/gart pinned size in radeon_do_test_moves
...
Gives more accurate count and prevents failures when we can't
allocate memory for the tests.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com >
2014-08-05 08:53:35 -04:00
Alex Deucher
ccbe0060aa
drm/radeon: use vram/gart pinned size in radeon_gem_info_ioctl
...
Gives a more accurate limit than the previous code.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com >
2014-08-05 08:53:34 -04:00
Alex Deucher
71ecc97eaa
drm/radeon: track pinned memory (v2)
...
So we know how large an allocation we can allow.
v2: incorporate Michel's comments
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com >
2014-08-05 08:53:33 -04:00
Michel Dänzer
02376d8282
drm/radeon: Allow write-combined CPU mappings of BOs in GTT (v2)
...
v2: fix rebase onto drm-fixes
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:33 -04:00
Michel Dänzer
77497f2735
drm/radeon: Pass GART page flags to radeon_gart_set_page() explicitly
...
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:32 -04:00
Michel Dänzer
a3eb06dbca
drm/radeon: Remove radeon_gart_restore()
...
Doesn't seem necessary, the GART table memory should be persistent.
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:31 -04:00
Michel Dänzer
380670aebf
drm/radeon: Demote 'BO allocation size too large' message to debug only
...
These clutter up dmesg during piglit runs. Userspace generally deals
gracefully with this failure.
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:30 -04:00
Alex Deucher
377bd8a98d
drm/radeon: use a fetch function to get the edid
...
We keep a cached version of the edid in radeon_connector which
we use for determining connectedness and when to enable certain
features like hdmi audio, etc. When the user uses the firmware
interface to override the driver with some other edid the driver's
copy is never updated. The fetch function will check if there
is a user supplied edid and update the driver's copy if there
is.
bug:
https://bugs.freedesktop.org/show_bug.cgi?id=80691
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:30 -04:00
Alex Deucher
72a5c970a5
drm/radeon: restructure edid fetching
...
Split radeon_ddc_get_modes() and move it into
radeon_connectors.c since that is the only place
that uses it.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:29 -04:00
Stefan Brüns
88fd4789cd
drm/radeon/audio: break out of loops once we match connector
...
No need to continue with the loops once we've matched
the appropriate connector.
See commit 8a992ee145
Signed-off-by: Stefan Brüns <stefan.bruens@rwth-aachen.de >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:28 -04:00
Stefan Brüns
c748990b7b
drm/radeon: Use correct value for unknown audio/video latency
...
Valid values are 1 to 251 for 0 to 500 ms latency, 0 for unknown
and 255 for audio/video unsupported by sink, according to HDMI 1.3 spec.
Also matches Radeon HDA verb 0xf7b documentation.
Signed-off-by: Stefan Brüns <stefan.bruens@rwth-aachen.de >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:27 -04:00
Lauri Kasanen
59bc1d89d6
drm/radeon: Inline r100_mm_rreg, -wreg, v3
...
This was originally un-inlined by Andi Kleen in 2011 citing size concerns.
Indeed, a first attempt at inlining it grew radeon.ko by 7%.
However, 2% of cpu is spent in this function. Simply inlining it gave 1% more fps
in Urban Terror.
v2: We know the minimum MMIO size. Adding it to the if allows the compiler to
optimize the branch out, improving both performance and size.
The v2 patch decreases radeon.ko size by 2%. I didn't re-benchmark, but common sense
says perf is now more than 1% better.
v3: Also change _wreg, make the threshold a define.
Inlining _wreg increased the size a bit compared to v2, so now radeon.ko
is only 1% smaller.
Signed-off-by: Lauri Kasanen <cand@gmx.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:27 -04:00
Alex Deucher
3e22920fbd
drm/radeon: consolidate vga and dvi get_modes functions (v2)
...
They are identical.
v2: rebase
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:26 -04:00
Alex Deucher
da9976206c
drm/radeon: enable display scaling on all connectors (v2)
...
This enables the display scaler on all connectors for r5xx
and newer asics. Previously we only enabled the scaler for
fixed mode displays (eDP or LVDS) since they have to use the
scaler to support non-native modes. Most other displays
are multi-sync or have a built in scaler to support non-native
modes. The default scaling mode for non-fixed displays is
none which will use the scaler in the monitor. Note that
we do not populate any fake modes like we do for fixed
displays so it will only use the modes in the edid. For
other modes, you'll need to populate them manually.
bug:
https://bugs.freedesktop.org/show_bug.cgi?id=80868
v2: properly handle scaling with no modes defined
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:25 -04:00
Fabian Frederick
9c2448780f
drm/radeon: remove null test before kfree
...
Fix checkpatch warning:
WARNING: kfree(NULL) is safe this check is probably not required
Cc: Alex Deucher <alexander.deucher@amd.com >
Cc: David Airlie <airlied@linux.ie >
Cc: dri-devel@lists.freedesktop.org
Signed-off-by: Fabian Frederick <fabf@skynet.be >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:24 -04:00
Alex Deucher
f2c6b0f452
drm/radeon/cik: Add support for new ucode format (v5)
...
This adds CIK support for the new ucode format.
v2: add size validation, integrate debug info
v3: add support for MEC2 on KV
v4: fix typos
v4: update to latest format
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:24 -04:00
Alex Deucher
629bd33c75
drm/radeon/si: Add support for new ucode format (v3)
...
This adds SI support for the new ucode format.
v2: add size validation, integrate debug info
v3: update to latest version
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:23 -04:00
Alex Deucher
de5158226d
drm/radeon: add new firmware header definitions (v3)
...
These are needed to properly handle more frequently
updated firmware.
v2: add new firmware helper functions as well.
v3: update to latest format
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2014-08-05 08:53:22 -04:00