summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/nouveau
Commit message (Collapse)AuthorAgeFilesLines
* mm/hmm: convert to use vm_fault_tSouptick Joarder2019-03-121-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | Convert to use vm_fault_t type as return type for fault handler. kbuild reported warning during testing of *mm-create-the-new-vm_fault_t-type.patch* available in below link - https://patchwork.kernel.org/patch/10752741/ kernel/memremap.c:46:34: warning: incorrect type in return expression (different base types) kernel/memremap.c:46:34: expected restricted vm_fault_t kernel/memremap.c:46:34: got int This patch has fixed the warnings and also hmm_devmem_fault() is converted to return vm_fault_t to avoid further warnings. [sfr@canb.auug.org.au: drm/nouveau/dmem: update for struct hmm_devmem_ops member change] Link: http://lkml.kernel.org/r/20190220174407.753d94e5@canb.auug.org.au Link: http://lkml.kernel.org/r/20190110145900.GA1317@jordon-HP-15-Notebook-PC Signed-off-by: Souptick Joarder <jrdr.linux@gmail.com> Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au> Reviewed-by: Jérôme Glisse <jglisse@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* drm/nouveau/dmem: use dma addresses during migration copiesBen Skeggs2019-02-201-106/+53
| | | | | | Removes the need for temporary VMM mappings. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/dmem: use physical vram addresses during migration copiesBen Skeggs2019-02-201-20/+4
| | | | | | Removes the need for temporary VMM mappings. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/dmem: extend copy function to allow direct use of physical addressesBen Skeggs2019-02-201-6/+50
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/svm: new ioctl to migrate process memory to GPU memoryJérôme Glisse2019-02-203-0/+104
| | | | | | | | | | | This add an ioctl to migrate a range of process address space to the device memory. On platform without cache coherent bus (x86, ARM, ...) this means that CPU can not access that range directly, instead CPU will fault which will migrate the memory back to system memory. This is behind a staging flag so that we can evolve the API. Signed-off-by: Jérôme Glisse <jglisse@redhat.com>
* drm/nouveau/dmem: device memory helpers for SVMJérôme Glisse2019-02-207-0/+983
| | | | | | | | | Device memory can be use in SVM, in which case we do not have any of the existing buffer object. This commit add infrastructure to allow use of device memory without nouveau_bo. Again this is a temporary solution until a rework of GPU memory management. Signed-off-by: Jérôme Glisse <jglisse@redhat.com>
* drm/nouveau/svm: initial support for shared virtual memoryBen Skeggs2019-02-209-1/+810
| | | | | | | | | | | | This uses HMM to mirror a process' CPU page tables into a channel's page tables, and keep them synchronised so that both the CPU and GPU are able to access the same memory at the same virtual address. While this code also supports Volta/Turing, it's only enabled for Pascal GPUs currently due to channel recovery being unreliable right now on the later GPUs. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: prepare for enabling svm with existing userspace interfacesBen Skeggs2019-02-209-37/+42
| | | | | | | | | | | | | | | | | | For a channel to make use of SVM features, it requires a different GPU MMU configuration than we would normally use, which is not desirable to switch to unless a client is actively going to use SVM. In order to supporting SVM without more extensive changes to the userspace interfaces, the SVM_INIT ioctl needs to replace the previous configuration safely. The only way we can currently do this safely, accounting for some unlikely failure conditions, is to allocate the new VMM without destroying the last one, and prioritising the SVM-enabled configuration in the code that cares. This will get cleaned up again further down the track. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/fault/gv100-: expose VoltaFaultBufferABen Skeggs2019-02-203-0/+18
| | | | | | | This nvclass exposes the replayable fault buffer, which will be used by SVM to manage GPU page faults. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/fault/gp100: expose MaxwellFaultBufferABen Skeggs2019-02-209-8/+142
| | | | | | | This nvclass exposes the replayable fault buffer, which will be used by SVM to manage GPU page faults. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/mmu/gp100-: support vmms with gcc/tex replayable faults enabledBen Skeggs2019-02-2010-12/+56
| | | | | | | | | | | | | | Some GPU units are capable of supporting "replayable" page faults, where the execution unit will wait for SW to fixup GPU page tables rather than triggering a channel-fatal fault. This feature isn't useful (it's harmful, even) unless something like HMM is being used to manage events appearing in the replayable fault buffer, so, it's disabled by default. This commit allows a client to request it be enabled. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/mmu/gp100-: add privileged methods for fault replay/cancelBen Skeggs2019-02-208-0/+101
| | | | | | | | | | | | | | | | Host methods exist to do at least some of what we need, but we are not currently pushing replay/cancels through a channel like UVM does as it's not clear whether it's necessary in our case (UVM also updates PTEs with the GPU). UVM also pushes a software method for fault cancels on Pascal, seemingly because the host methods don't appear to be sufficient. If/when we want to push the replay/cancel on the GPU, we can re-purpose the cancellation code here to implement that swmthd. Keep it simple for now, until we figure out exactly what we need here. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/mmu: add a privileged method to directly manage PTEsBen Skeggs2019-02-206-34/+451
| | | | | | | This provides a somewhat more direct method of manipulating the GPU page tables, which will be required to support SVM. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/mmu: store mapped flag separately from memory pointerBen Skeggs2019-02-202-5/+11
| | | | | | | This will be used to support a privileged client providing PTEs directly, without a memory object to use as a reference. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/mmu: support initialisation of client-managed address-spacesBen Skeggs2019-02-2022-115/+172
| | | | | | | | | | | | | | | | NVKM is currently responsible for managing the allocation of a client's GPU address-space, but there's various use-cases (ie. HMM address-space mirroring) where giving a client more direct control is desirable. This commit allows for a VMM to be created where the area allocated for NVKM is limited to a client-specified window, the remainder of address- space is controlled directly by the client. Leaving a window is necessary to support various internal requirements, but also to support existing allocation interfaces as not all of the HW is capable of working with a HMM allocation. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/gr/gf100-: expose method to determine current contextBen Skeggs2019-02-204-0/+18
| | | | | | MMU will need access to this info. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/gr/gf100-: expose fecs methods for pausing ctxswBen Skeggs2019-02-205-0/+80
| | | | | | | | MMU will need access to these. v2. Apply fix from Rhys Kidd to send correct FECS method for STOP_CTXSW. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/falcon: fix a few indentation issuesColin Ian King2019-02-201-3/+3
| | | | | | | There are a few statements that are indented incorrectly. Fix these. Signed-off-by: Colin Ian King <colin.king@canonical.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/mmu/gf100-: virtualise setting pdb base address for invalidationBen Skeggs2019-02-209-2/+49
| | | | | | It appears that Pascal and newer need something different. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/mmu/gf100-: make mmu invalidate function more generalBen Skeggs2019-02-203-9/+12
| | | | | | Will want to reuse this for fault replay/cancellation swmthds. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/gr/gf100-: store fecs/gpccs falcon pointers in substructuresBen Skeggs2019-02-202-18/+28
| | | | | | | Future changes will want to add some additional things here, keep them grouped together. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/gr/gf100-: move fecs bind_pointer into a functionBen Skeggs2019-02-203-7/+24
| | | | | | Makes the code somewhat less magic. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/gr/gf100-: remove some unnecessary reg writesBen Skeggs2019-02-201-6/+1
| | | | | | This is already done during golden context creation. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/gr/gf100-: move fecs elpg setup into functionsBen Skeggs2019-02-201-29/+84
| | | | | | Makes the code somewhat less magic. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/gr/gf100-: move fecs discover_pm_image_size into a functionBen Skeggs2019-02-202-8/+21
| | | | | | Makes the code somewhat less magic. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/gr/gf100-: move fecs discover_zcull_image_size into a functionBen Skeggs2019-02-202-8/+21
| | | | | | Makes the code somewhat less magic. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/gr/gf100-: move fecs discover_image_size into a functionBen Skeggs2019-02-201-8/+21
| | | | | | Makes the code somewhat less magic. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/gr/gf100-: move fecs set_watchdog_timeout method into a functionBen Skeggs2019-02-201-3/+11
| | | | | | Makes the code somewhat less magic. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: allow accelerated buffer moves even when gr isn't presentBen Skeggs2019-02-201-85/+128
| | | | | | | | | | | There's no need to avoid using copy engines if gr init fails for some reason (usually missing FW, or incomplete bring-up). It's not terribly useful for an end-user, but it'll slightly speed up suspend/resume when saving fb contents, and allow for host/ce code to be validated. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/kms/nv04-nv4x: move resume code to dispnv04 init hookBen Skeggs2019-02-205-69/+74
| | | | | | It has no relevance to the atomic path used by newer GPUs. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/kms/nv04-nv4x: move suspend code to dispnv04 fini hookBen Skeggs2019-02-204-28/+29
| | | | | | It has no relevance to the atomic path used by newer GPUs. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/kms/nv04-nv4x: move a bunch of pre-nv50 page flip code to dispnv04Ben Skeggs2019-02-208-246/+235
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/kms: display destroy/init/fini hooks can be staticBen Skeggs2019-02-203-61/+58
| | | | | | Swapped order of functions in dispnv04 to allow this, but no code changes. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: allocate kernel channel(s) before initialising displayBen Skeggs2019-02-201-2/+4
| | | | | | | | Some of the pre-NV50 depends on SW methods to implement synchronisation for page flips, and we want to move this setup out of common code, thus we require the channel to have been allocation before display init. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/disp/gf119-: decode exception reason to human-readable stringBen Skeggs2019-02-204-12/+26
| | | | | | We also change the error strings to match NVIDIA's naming. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/bios/init: handle INIT_GENERIC_CONDITION_ID_NO_PANEL_SEQ_DELAYSBen Skeggs2019-02-201-0/+3
| | | | | | | | | As I currently understand it, this is related to features we have no support for as of yet. In theory, this change should be a noop, just without the warning. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/bios/init: label existing INIT_GENERIC_CONDITION typesBen Skeggs2019-02-201-4/+4
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/secboot: fix missing newline in error messagesBen Skeggs2019-02-201-2/+2
| | | | Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/sec2/tu102-: instantiate SEC2 falconBen Skeggs2019-02-204-0/+38
| | | | | | Required for ACR. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/sec2: utilise engine PRI address from TOPBen Skeggs2019-02-204-10/+20
| | | | | | | Turing has its SEC2 instance in an alternate location, and this avoids needing to duplicate the code here for it. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/nvdec/tu102-: instantiate NVDEC0 falconBen Skeggs2019-02-201-0/+3
| | | | | | Required to run VPR scrubber binary as part of secboot. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/nvdec/gp102-: utilise engine PRI address from TOPBen Skeggs2019-02-202-1/+11
| | | | | | Turing has its NVDEC instances in an alternate location. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/gsp/gv100-: instantiate GSP falconBen Skeggs2019-02-205-0/+75
| | | | | | We need this for Turing ACR, but it's present from Volta onwards. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/top/gv100-: translate entry for the GSPBen Skeggs2019-02-201-0/+2
| | | | | | So we're able to connect fault/interrupt handling to the GSP subdev. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/top: add function to lookup PRI address for devicesBen Skeggs2019-02-202-0/+17
| | | | | | | Will be using this in upcoming changes to avoid the need for entirely new subdevs to deal with Turing register moves. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/core: define GSP subdevBen Skeggs2019-02-207-0/+17
| | | | | | Exact meaning of the acronym is unknown, but we need this for Turing ACR. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: fix missing break in switch statementColin Ian King2019-02-201-0/+1
| | | | | | | | | | | | | | The NOUVEAU_GETPARAM_PCI_DEVICE case is missing a break statement and falls through to the following NOUVEAU_GETPARAM_BUS_TYPE case and may end up re-assigning the getparam->value to an undesired value. Fix this by adding in the missing break. Detected by CoverityScan, CID#1460507 ("Missing break in switch") Fixes: 359088d5b8ec ("drm/nouveau: remove trivial cases of nvxx_device() usage") Signed-off-by: Colin Ian King <colin.king@canonical.com> Reviewed-by: Gustavo A. R. Silva <gustavo@embeddedor.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: mark expected switch fall-throughGustavo A. R. Silva2019-02-201-1/+1
| | | | | | | | | | | | | | | | | In preparation to enabling -Wimplicit-fallthrough, mark switch cases where we are expecting to fall through. This patch fixes the following warning: drivers/gpu/drm/nouveau/nouveau_bo.c:1434:53: warning: this statement may fall through [-Wimplicit-fallthrough=] Warning level 3 was used: -Wimplicit-fallthrough=3 This patch is part of the ongoing efforts to enabling -Wimplicit-fallthrough. Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau: Don't WARN_ON VCPI allocation failuresLyude Paul2019-02-201-1/+2
| | | | | | | | | | | | | | | This is much louder then we want. VCPI allocation failures are quite normal, since they will happen if any part of the modesetting process is interrupted by removing the DP MST topology in question. So just print a debugging message on VCPI failures instead. Signed-off-by: Lyude Paul <lyude@redhat.com> Fixes: f479c0ba4a17 ("drm/nouveau/kms/nv50: initial support for DP 1.2 multi-stream") Cc: Ben Skeggs <bskeggs@redhat.com> Cc: dri-devel@lists.freedesktop.org Cc: nouveau@lists.freedesktop.org Cc: <stable@vger.kernel.org> # v4.10+ Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
* drm/nouveau/pmu: don't print reply values if exec is falseColin Ian King2019-02-201-2/+2
| | | | | | | | | | | | | Currently the uninitialized values in the array reply are printed out when exec is false and nvkm_pmu_send has not updated the array. Avoid confusion by only dumping out these values if they have been actually updated. Detected by CoverityScan, CID#1271291 ("Uninitialized scaler variable") Fixes: ebb58dc2ef8c ("drm/nouveau/pmu: rename from pwr (no binary change)") Signed-off-by: Colin Ian King <colin.king@canonical.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
OpenPOWER on IntegriCloud