Ben Skeggs
d521097f58
drm/nouveau/gr/gv100: initial support
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:47 +10:00
Ben Skeggs
6e1f34e33c
drm/nouveau/ce/gv100: initial support
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:46 +10:00
Ben Skeggs
37e1c45a58
drm/nouveau/fifo/gv100: initial support
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:46 +10:00
Ben Skeggs
facaed62b4
drm/nouveau/kms/gv100: initial support
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:46 +10:00
Ben Skeggs
290ffeafcc
drm/nouveau/disp/gv100: initial support
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:43 +10:00
Ben Skeggs
6fb566b913
drm/nouveau/dma/gv100: initial support
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:39 +10:00
Ben Skeggs
24a7513c10
drm/nouveau/therm/gv100: initial support
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:39 +10:00
Ben Skeggs
ada0c56281
drm/nouveau/pmu/gv100: initial support
...
Appears to be compatible with GP102.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:39 +10:00
Ben Skeggs
8b811951c6
drm/nouveau/fault/gv100: initial support
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:38 +10:00
Ben Skeggs
013b7b3773
drm/nouveau/bar/gv100: initial support
...
Appears to be compatible with GM107.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:38 +10:00
Ben Skeggs
edf50395c7
drm/nouveau/mmu/gv100: initial support
...
VEID support hacked in here, as it's the most convenient place for now.
Will be refined once it's better understood.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:38 +10:00
Ben Skeggs
1bce57250a
drm/nouveau/ltc/gv100: initial support
...
Appears to be compatible with GP102.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:38 +10:00
Ben Skeggs
3582942c28
drm/nouveau/fb/gv100: initial support
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:34 +10:00
Ben Skeggs
a4a0cfb642
drm/nouveau/imem/gv100: initial support
...
Can't imagine this will be any different.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:34 +10:00
Ben Skeggs
936240c9bb
drm/nouveau/tmr/gv100: initial support
...
Appears to be compatible with GK20A.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:34 +10:00
Ben Skeggs
9506bd2407
drm/nouveau/bus/gv100: initial support
...
Appears to be compatible with GF100.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:34 +10:00
Ben Skeggs
41af75bd35
drm/nouveau/mc/gv100: initial support
...
Appears to be compatible with GP100.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:34 +10:00
Ben Skeggs
292550499a
drm/nouveau/fuse/gv100: initial support
...
Appears to be compatible with GM107.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:34 +10:00
Ben Skeggs
d2e3b57d81
drm/nouveau/i2c/gv100: initial support
...
Appears to be compatible with GM200.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:34 +10:00
Ben Skeggs
8afbcca549
drm/nouveau/gpio/gv100: initial support
...
Appears to be compatible with GK104.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:34 +10:00
Ben Skeggs
46fe1a813a
drm/nouveau/ibus/gv100: initial support
...
Appears to be compatible with GM200.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:34 +10:00
Ben Skeggs
a1c771a5cb
drm/nouveau/top/gv100: initial support
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:34 +10:00
Ben Skeggs
8769dc989c
drm/nouveau/devinit/gv100: initial support
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:31 +10:00
Ben Skeggs
6827c9a868
drm/nouveau/bios/pll: limits table 5.0
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:31 +10:00
Ben Skeggs
75e482efd3
drm/nouveau/bios/gv100: initial support
...
No real surprises here so far.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:31 +10:00
Ben Skeggs
893855d821
drm/nouveau/pci/gv100: initial support
...
Appears to be compatible with GP100.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:31 +10:00
Ben Skeggs
c1f856bb99
drm/nouveau/core: recognise gv100
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:31 +10:00
Ben Skeggs
890c85f3ee
drm/nouveau/core: increase maximum number of copy engines to 9
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:31 +10:00
Ben Skeggs
2ce7f38629
drm/nouveau/kms/nv50-: initial overlay support
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:31 +10:00
Ben Skeggs
88b600d421
drm/nouveau/kms/gk104-: add support for [XA]2R10G10B10 formats
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:30 +10:00
Ben Skeggs
01d380ab4f
drm/nouveau/kms/gk104-: support additional cursor sizes
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:30 +10:00
Ben Skeggs
b05d873808
drm/nouveau/kms/nv50-: separate blocklinear vs linear pitch
...
Will be required to support Volta.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:30 +10:00
Ben Skeggs
119608a7f3
drm/nouveau/kms/nv50-: handle degamma LUT from window channels
...
Required to eventually support DRM colour management APIs, and to
support Volta.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:29 +10:00
Ben Skeggs
e349a05dc8
drm/nouveau/kms/nv50-: plane updates don't always require image_set()
...
When only the position of a window changes, there's no need to submit
an image update as well.
Will be required to support the overlays, and Volta windows.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:29 +10:00
Ben Skeggs
859b456b6b
drm/nouveau/kms/nv50-: store window visibility in state
...
Window visibility is going to become a little more complicated with the
upcoming LUT changes, so store the calculated value to avoid needing to
recalculate the armed state again.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:29 +10:00
Ben Skeggs
45a2945a37
drm/nouveau/kms/nv50-: simplify swap interval handling
...
This is just cleaning up some left-overs from when we needed a custom
legacy page flip implementation.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:29 +10:00
Ben Skeggs
04fc14be77
drm/nouveau/kms/nv50-: decouple window state changes, and update method submisssion
...
This will be required to support Volta.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:29 +10:00
Ben Skeggs
53e0a3e70d
drm/nouveau/kms/nv50-: simplify tracking of channel interlocks
...
Instead of windows returning their core channel interlock mask if they
know core has been modified, it's recorded unconditionally and used if
required when update methods are emitted.
This will be required to support Volta.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:29 +10:00
Ben Skeggs
34508f9d26
drm/nouveau/kms/nv50-: determine MST support from DP Info Table
...
GV100 doesn't support MST, use the information provided in VBIOS tables to
detect its presence instead.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:29 +10:00
Ben Skeggs
261fcfa969
drm/nouveau/kms/nv50-: extend window image data for stereo/planar formats
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:29 +10:00
Ben Skeggs
43c181e9de
drm/nouveau/kms/nv50-: move drm format->hw conversion into common code
...
This will be required to support additional HW features.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:28 +10:00
Ben Skeggs
f88bc9d3ec
drm/nouveau/kms/nv50-: unify set/clr masks
...
This is a simplification that'll be used to improve interlock handling.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:28 +10:00
Ben Skeggs
9d6c2fe191
drm/nouveau/kms/nv50-: allow specification of valid heads for a window
...
This will be required to support Volta, where window ID != head.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:28 +10:00
Ben Skeggs
ccd27db8c7
drm/nouveau/kms/nv50-: split base implementation by hardware class
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:28 +10:00
Ben Skeggs
09e1b78aab
drm/nouveau/kms/nv50-: split core implementation by hardware class
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:28 +10:00
Ben Skeggs
1590700d94
drm/nouveau/kms/nv50-: split each resource type into their own source files
...
There should be no code changes here, just shuffling stuff around.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:28 +10:00
Ben Skeggs
0a3687716b
drm/nouveau/kms/nv50: abstract OR interfaces so the code can be split
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:28 +10:00
Ben Skeggs
2ca7fb5c1c
drm/nouveau/kms/nv50: handle SetControlOutputResource from head
...
Removes duplicated code from OR-specific functions.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:28 +10:00
Ben Skeggs
10ffe0fad5
drm/nouveau/kms/nv50-: abstract head interfaces so the code can be split
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:28 +10:00
Ben Skeggs
9ca6f1ebba
drm/nouveau/kms/nv50: modify core allocation so the code can be split
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:28 +10:00
Ben Skeggs
d7c6e97a32
drm/nouveau/kms/nv50-: modify base allocation so the code can be split
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:28 +10:00
Ben Skeggs
b97ace4072
drm/nouveau/kms/nv50-: modify cursor allocation so the code can be split
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:27 +10:00
Ben Skeggs
a97c530eb9
drm/nouveau/kms/nv50-: modify overlay allocation so the code can be split
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:27 +10:00
Ben Skeggs
5bca1621c0
drm/nouveau/kms/nv50-: move fb ctxdma tracking into windows
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:27 +10:00
Ben Skeggs
62b290fc7b
drm/nouveau/kms/nv50-: fix i2c-over-aux on anx9805
...
We don't support address-only transactions there.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:27 +10:00
Ben Skeggs
30ed49b55b
drm/nouveau/kms/nv50-: move code underneath dispnv50/
...
The code is about to be split up, and this matches dispnv04.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:26 +10:00
Ben Skeggs
0d4a2c5767
drm/nouveau/kms: move display class instantiation to library
...
This function is useful outside of DRM code.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:26 +10:00
Ben Skeggs
512fa0b8a3
drm/nouveau/drm/nv50-: remove allocation of sw class
...
Hasn't been required for a long time.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:26 +10:00
Ben Skeggs
92b4eaaf9a
drm/nouveau: no need to create ctxdma for push buffers on fermi and up
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:26 +10:00
Ben Skeggs
11e451e740
drm/nouveau: remove fence wait code from deferred client work handler
...
Fences attached to deferred client work items now originate from channels
belonging to the client, meaning we can be certain they've been signalled
before we destroy a client.
This closes a race that could happen if the dma_fence_wait_timeout() call
didn't succeed. When the fence was later signalled, a use-after-free was
possible.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:26 +10:00
Ben Skeggs
470db8b781
drm/nouveau/gem: tie deferred unmapping of buffers to VMA fence completion
...
As VMAs are per-client, unlike buffers, this allows us to avoid referencing
foreign fences (those that belong to another client/driver) from the client
deferred work handler, and prevent some not-fun race conditions that can be
triggered when a fence stalls.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:26 +10:00
Ben Skeggs
0db912af8f
drm/nouveau/gem: attach fences to VMAs to track GPU usage
...
An upcoming patch will use these to fix issues related to the deferred
unmapping of GEM objects.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:26 +10:00
Ben Skeggs
19ca10d82e
drm/nouveau/gem: lookup VMAs for buffers referenced by pushbuf ioctl
...
We previously only did this for push buffers, but an upcoming patch will
need to attach fences to all VMAs to resolve another issue.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:26 +10:00
Ben Skeggs
4b2c71edf0
drm/nouveau/gr/gp102-: setup stencil zbc
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:26 +10:00
Ben Skeggs
e9d03335f6
drm/nouveau/gr/gp100-: use correct registers for zbc colour/depth setup
...
These were missed the first time around due to the driver version I traced
using the older registers still.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:26 +10:00
Ben Skeggs
7a058a900c
drm/nouveau/gr/gp100-: fix attrib cb setup
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:26 +10:00
Ben Skeggs
17f2d4df32
drm/nouveau/gr/gp100-: fix pagepool setup
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:26 +10:00
Ben Skeggs
191e323278
drm/nouveau/gr/gf100-gm10x: update register lists
...
There are differences on GM200 and newer too, but we can't fix them there
as they come from firmware packages.
A request has been made to NVIDIA to release updated firmware.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:26 +10:00
Ben Skeggs
6f0233329b
drm/nouveau/gr/gf100-: swap bundle and pagepool
...
Makes it easier to diff against RM traces.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:26 +10:00
Ben Skeggs
068cae743c
drm/nouveau/gr/gf100-: calculate and use sm mapping table
...
There's a number of places that require this data, so let's separate out
the calculations to ensure they remain consistent.
This is incorrect for GM200 and newer, but will produce the same results
as we did before.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:26 +10:00
Ben Skeggs
d00ffc0c40
drm/nouveau/gr/gf100-: port zcull tile mapping calculations from NVGPU
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:26 +10:00
Ben Skeggs
5f6474a4e6
drm/nouveau/gr/gf100-: port tile mapping calculations from NVGPU
...
There's also a couple of hardcoded tables for a couple of very specific
configurations that NVGPU's algorithm didn't work for.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:26 +10:00
Ben Skeggs
5c05a58985
drm/nouveau/gr/gf100-: virtualise trap_mp
...
Required to support Volta.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:25 +10:00
Ben Skeggs
74b6068bd6
drm/nouveau/gr/gf100-: add missing reset sequence before golden context init
...
RM and NVGPU both have a variant of this, we probably should too.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:25 +10:00
Ben Skeggs
201ed6f651
drm/nouveau/gr/gf100-: delete duplicated grctx init code
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:25 +10:00
Ben Skeggs
a5537f980e
drm/nouveau/gr/gf100-: update r408840 where required
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:25 +10:00
Ben Skeggs
8d56fc48d3
drm/nouveau/gr/gf100-: update 419a3c where required
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:25 +10:00
Ben Skeggs
c2592adea7
drm/nouveau/gr/gf100-: virtualise r418e94
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:25 +10:00
Ben Skeggs
18d17221dd
drm/nouveau/gr/gf100-: virtualise r419e00
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:25 +10:00
Ben Skeggs
ad45a92b9a
drm/nouveau/gr/gf100-: update 419eb0 where required
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:24 +10:00
Ben Skeggs
5b54b5b925
drm/nouveau/gr/gf100-: note missing 418800 modifications
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:24 +10:00
Ben Skeggs
99a3c67e84
drm/nouveau/gr/gf100-gf119: update 419cb8 where required
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:24 +10:00
Ben Skeggs
0e5a5e86f3
drm/nouveau/gr/gf100-: support firmware-provided bundle/method everywhere
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:24 +10:00
Ben Skeggs
fc36076441
drm/nouveau/gr/gf100-: virtualise tpc_mask + apply fixes from traces
...
We weren't placing higher TPC IDs in the right place on some configurations.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:24 +10:00
Ben Skeggs
aa5e38dc9f
drm/nouveau/gr/gf100-: virtualise r419f78 + apply fixes from traces
...
Removed from GK110[B]/GK208 as RM traces show it not being touched.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:24 +10:00
Ben Skeggs
60c0264a66
drm/nouveau/gr/gf100-: virtualise gpc_tpc_nr
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:24 +10:00
Ben Skeggs
e7163b1922
drm/nouveau/gr/gf100-: virtualise r406500
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:24 +10:00
Ben Skeggs
60770fa28b
drm/nouveau/gr/gf100-: virtualise dist_skip_table + improve algorithm
...
The algorithm for GM200 and newer matches RM for all the boards I have, but
I don't have enough data to try and figure something out for earlier boards,
so these will still write zeroes to the table as we did before.
The code in NVGPU isn't helpful here, it appears to handle specific cases.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:24 +10:00
Ben Skeggs
c4a2b6385d
drm/nouveau/gr/gf100-gf119: modify max_ways_evict where required
...
I don't think this is done after Fermi, NVGPU used to do it but removed
the code, and I've not seen RM traces touching it either.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:24 +10:00
Ben Skeggs
43952c6f43
drm/nouveau/gr/gf100-: virtualise alpha_beta_tables + improve algorithms
...
I haven't yet been able to find a fully programatic way of calculating the
same mapping as NVIDIA for GF100-GF119, so the algorithm partially depends
on data tables for specific configurations.
I couldn't find traces for every possibility, so the algorithm will switch
to a mapping similar to what GK104-GM10x use if it encounters one. We did
the wrong thing before anyway, so shouldn't matter too much.
The algorithm used in the GK104 implementation was ported from NVGPU.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:24 +10:00
Ben Skeggs
ff209c235d
drm/nouveau/gr/gf100-: virtualise rop_mapping
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:24 +10:00
Ben Skeggs
9d8a80df73
drm/nouveau/gr/gf100-: virtualise r4060a8 + apply fixes from traces
...
Also fixes some GPUs where we write too many registers.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:24 +10:00
Ben Skeggs
e51f75d501
drm/nouveau/gr/gf100-: virtualise tpc_per_gpc
...
GM20B now also shares the same code, as NVGPU shows it doesn't need
special treatment.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:24 +10:00
Ben Skeggs
fc740f545d
drm/nouveau/gr/gf100-: virtualise sm_id/tpc_nr
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:24 +10:00
Ben Skeggs
ea4a2bb530
drm/nouveau/gr/gf100-: virtualise patch_ltc, noting missing init
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:24 +10:00
Ben Skeggs
aedc49fd0e
drm/nouveau/gr/gf100-: support firmware-provided sw_ctx everywhere
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:23 +10:00
Ben Skeggs
525230cb20
drm/nouveau/gr/gf100-: delete duplicated init code
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:23 +10:00
Ben Skeggs
04547482ae
drm/nouveau/gr/gf100-: virtualise init_400054
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:23 +10:00
Ben Skeggs
6df6d2b95e
drm/nouveau/gr/gf100-: apply be exception fixes from traces
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:23 +10:00
Ben Skeggs
4615e9b438
drm/nouveau/gr/gf100-: virtualise init_shader_exceptions
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:23 +10:00
Ben Skeggs
ab4d49a349
drm/nouveau/gr/gf100-: virtualise init_504430
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:23 +10:00
Ben Skeggs
f3ef80c0c4
drm/nouveau/gr/gf100-: virtualise init_tex_hww_esr
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:23 +10:00
Ben Skeggs
70d2148209
drm/nouveau/gr/gf100-: virtualise init_ppc_exceptions
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:23 +10:00
Ben Skeggs
778f18c607
drm/nouveau/gr/gf100-: virtualise init_419c9c + apply fixes from traces
...
Deliberately removed from non-GP100, as RM doesn't touch it.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:23 +10:00
Ben Skeggs
0a84a51334
drm/nouveau/gr/gf100-: virtualise init_419eb4 + apply fixes from traces
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:23 +10:00
Ben Skeggs
0feab0250d
drm/nouveau/gr/gf100-: virtualise init_419cc0 + apply fixes from traces
...
Pulled some init out of main per-GPC/TPC loops to match RM.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:23 +10:00
Ben Skeggs
0a5b97304b
drm/nouveau/gr/gf100-: virtualise init_sked_hww_esr
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:23 +10:00
Ben Skeggs
2b297b0d6d
drm/nouveau/gr/gf100-: virtualise init_40601c
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:23 +10:00
Ben Skeggs
3ac72e98b4
drm/nouveau/gr/gf100-: virtualise init_ds_hww_esr_2
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:22 +10:00
Ben Skeggs
2585a1b131
drm/nouveau/gr/gf100-: virtualise init_fecs_exceptions + apply fixes from traces
...
The value for GF100 has changed here, but it matches RM now.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:22 +10:00
Ben Skeggs
7c76ebb65a
drm/nouveau/gr/gf100: write 0x400124 during init
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:22 +10:00
Ben Skeggs
dff30dbd1d
drm/nouveau/gr/gf100-: virtualise init_swdx_pes_mask
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:22 +10:00
Ben Skeggs
0f78acc86b
drm/nouveau/gr/gf100-: implement another chunk of bios-provided init
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:22 +10:00
Ben Skeggs
429412e231
drm/nouveau/gr/gf100-: virtualise init_rop_active_fbps
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:22 +10:00
Ben Skeggs
bfd27f39b5
drm/nouveau/gr/gf100-: virtualise init_num_active_ltcs
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:22 +10:00
Ben Skeggs
02917aa39d
drm/nouveau/gr/gf100-: virtualise init_zcull
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:22 +10:00
Ben Skeggs
2fe5ff6371
drm/nouveau/gr/gf100-: virtualise init_vsc_stream_master
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:22 +10:00
Ben Skeggs
a37279e94c
drm/nouveau/gr/gf100-: virtualise init_bios
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:22 +10:00
Ben Skeggs
cd9662f89e
drm/nouveau/gr/gf100-: support clkgate_pack everywhere
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:22 +10:00
Ben Skeggs
8b058ca518
drm/nouveau/gr/gf100-: virtualise r405a14
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:22 +10:00
Ben Skeggs
6f63a5fb1e
drm/nouveau/gr/gf100-: support firmware-provided sw_nonctx everywhere
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:22 +10:00
Ben Skeggs
1246f1dc22
drm/nouveau/gr/gf100-: virtualise init_gpc_mmu + apply fixes from traces
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:22 +10:00
Ben Skeggs
334cc26d4d
drm/nouveau/fifo/gp100-: force individual channels into a channel group
...
RM does this for some reason, and is enforced in HW on Volta.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:22 +10:00
Ben Skeggs
eda12417d3
drm/nouveau/fifo/gm107-: write instance address in channel runlist entry
...
RM does this for some reason.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:22 +10:00
Ben Skeggs
79bb4b617f
drm/nouveau/fifo/gk208-: write pbdma timeout regs during initialisation
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:22 +10:00
Ben Skeggs
8c4e9f9dff
drm/nouveau/fifo/gk110-: support writing channel group runlist entries
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:22 +10:00
Ben Skeggs
4f2fc25c0f
drm/nouveau/fifo/gk104-: poll for runlist update completion
...
Newer HW doesn't appear to send this event, which will cause long delays
in runlist updates if they don't complete immediately.
RM doesn't use these events anywhere, and an NVGPU commit message notes
that polling is the preferred method even on HW that supports the event.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:21 +10:00
Ben Skeggs
665870837a
drm/nouveau/fifo/gk104-: add interfaces to support different runlist layouts
...
This will be required to support features on newer hardware.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:21 +10:00
Ben Skeggs
f9360c3aa6
drm/nouveau/fifo/gk104-: simplify definition of channel classes
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:21 +10:00
Ben Skeggs
a7cf01809b
drm/nouveau/fifo/gk104-: require explicit runlist selection for channel allocation
...
We didn't used to be aware that runlist/engine IDs weren't the same thing,
or that there was such variability in configuration between GPUs.
By exposing this information to a client, and giving it explicit control
of which runlist it's allocating a channel on, we're able to make better
choices.
The immediate effect of this is that on GPUs where CE0 is the "GRCE", we
will now be allocating a copy engine running asynchronously to GR for BO
migrations - as intended.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:21 +10:00
Ben Skeggs
cc36205085
drm/nouveau/fifo/gk104-: support querying engines available on each runlist
...
Will be used to improve channel runlist selection.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:21 +10:00
Ben Skeggs
ddc669e256
drm/nouveau/fifo/gk104-: allow fault recovery code to be called by other subdevs
...
This will be required to support Volta.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:21 +10:00
Ben Skeggs
55b8e85b0b
drm/nouveau/fifo/gk104-: accept engine contexts for CE3 and up
...
These can exist on GP100 and newer.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:21 +10:00
Ben Skeggs
eb47db4f3b
drm/nouveau/fifo: support channel count query
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:21 +10:00
Ben Skeggs
6eb01aa898
drm/nouveau/device: support querying available engines of a specific type
...
Will be used for fifo runlist selection.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:21 +10:00
Ben Skeggs
c5c9127b25
drm/nouveau/device: implement a generic method to query device-specific properties
...
We have a need to fetch data from GPU-specific sub-devices that is not
tied to any particular engine object.
This commit provides the framework to support such queries.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:21 +10:00
Ben Skeggs
f5650478ab
drm/nouveau/disp/nv50-: pass nvkm_memory objects for channel push buffers
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:21 +10:00
Ben Skeggs
a9c44a88ca
drm/nouveau/disp/nv50-: add channel interfaces to control error interrupts
...
This will be required to support Volta, but also allows us to remove code
that's duplicated for each channel type already.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:21 +10:00
Ben Skeggs
4a8621a24a
drm/nouveau/disp/nv50-: add channel interfaces to determine the user area
...
This will be required to support Volta.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:21 +10:00
Ben Skeggs
8531f57027
drm/nouveau/disp/nv50-: merge handling of pio and dma channels
...
Unnecessarily complicated, and a barrier to cleanly supporting Volta.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:21 +10:00
Ben Skeggs
9b096283bf
drm/nouveau/disp/nv50-: simplify definiton of core channels
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:21 +10:00
Ben Skeggs
6d41a7536f
drm/nouveau/disp/nv50-: simplify definition of cursor channels
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:21 +10:00
Ben Skeggs
3ceeef9c03
drm/nouveau/disp/nv50-: simplify definition of base channels
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:21 +10:00
Ben Skeggs
c2c3a00310
drm/nouveau/disp/nv50-: simplify definition of overlay immediate channels
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:20 +10:00
Ben Skeggs
46f74a8ad7
drm/nouveau/disp/nv50-: simplify definition of overlay channels
...
Introduces a new method of defining channels available from the display,
common to all channel types, allowing for more flexibility in available
channel types/counts, and reducing the amount of boiler-plate required.
This will be required to support Volta.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:20 +10:00
Ben Skeggs
abc1d4379b
drm/nouveau/disp/nv50-: replace user object with engine pointer in channels
...
More simplification.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:20 +10:00
Ben Skeggs
bb3b0a4220
drm/nouveau/disp/nv50-: initialise from the engine, rather than the user object
...
Engines are initialised on an as-needed basis, so this results in the
same behaviour, whilst allowing us to simplify things a bit.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:20 +10:00
Ben Skeggs
f5e088d6f0
drm/nouveau/disp/nv50-: fetch mask of available piors during oneinit
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:20 +10:00
Ben Skeggs
9fe4e17704
drm/nouveau/disp/nv50-: fetch mask of available sors during oneinit
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:20 +10:00
Ben Skeggs
bf5d1a6b6a
drm/nouveau/disp/nv50-: fetch mask of available dacs during oneinit
...
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-05-18 15:01:20 +10:00