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