Skip to content

Commit

Permalink
drm/nouveau/fault/gv100-: expose VoltaFaultBufferA
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Ben Skeggs committed Feb 19, 2019
1 parent 13e9572 commit a261a20
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 0 deletions.
1 change: 1 addition & 0 deletions drivers/gpu/drm/nouveau/include/nvif/class.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@
#define VOLTA_USERMODE_A 0x0000c361

#define MAXWELL_FAULT_BUFFER_A /* clb069.h */ 0x0000b069
#define VOLTA_FAULT_BUFFER_A /* clb069.h */ 0x0000c369

#define NV03_CHANNEL_DMA /* cl506b.h */ 0x0000006b
#define NV10_CHANNEL_DMA /* cl506b.h */ 0x0000006e
Expand Down
16 changes: 16 additions & 0 deletions drivers/gpu/drm/nouveau/nvkm/subdev/fault/gv100.c
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@
#include <subdev/mmu.h>
#include <engine/fifo.h>

#include <nvif/class.h>

static void
gv100_fault_buffer_process(struct nvkm_fault_buffer *buffer)
{
Expand Down Expand Up @@ -166,6 +168,13 @@ gv100_fault_intr(struct nvkm_fault *fault)
}
}

if (stat & 0x08000000) {
if (fault->buffer[1]) {
nvkm_event_send(&fault->event, 1, 1, NULL, 0);
stat &= ~0x08000000;
}
}

if (stat) {
nvkm_debug(subdev, "intr %08x\n", stat);
}
Expand Down Expand Up @@ -208,6 +217,13 @@ gv100_fault = {
.buffer.init = gv100_fault_buffer_init,
.buffer.fini = gv100_fault_buffer_fini,
.buffer.intr = gv100_fault_buffer_intr,
/*TODO: Figure out how to expose non-replayable fault buffer, which,
* for some reason, is where recoverable CE faults appear...
*
* It's a bit tricky, as both NVKM and SVM will need access to
* the non-replayable fault buffer.
*/
.user = { { 0, 0, VOLTA_FAULT_BUFFER_A }, 1 },
};

int
Expand Down
1 change: 1 addition & 0 deletions drivers/gpu/drm/nouveau/nvkm/subdev/fault/tu102.c
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,7 @@ tu102_fault = {
.buffer.init = tu102_fault_buffer_init,
.buffer.fini = tu102_fault_buffer_fini,
.buffer.intr = tu102_fault_buffer_intr,
.user = { { 0, 0, VOLTA_FAULT_BUFFER_A }, 1 },
};

int
Expand Down

0 comments on commit a261a20

Please sign in to comment.