drm/nouveau/fault: remove manual mapping of fault buffers into BAR2

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
Ben Skeggs 2018-12-11 14:50:02 +10:00
parent 1786bf56e4
commit 4d326469d9
4 changed files with 10 additions and 17 deletions

View File

@ -23,8 +23,6 @@
#include <core/memory.h> #include <core/memory.h>
#include <core/notify.h> #include <core/notify.h>
#include <subdev/bar.h>
#include <subdev/mmu.h>
static void static void
nvkm_fault_ntfy_fini(struct nvkm_event *event, int type, int index) nvkm_fault_ntfy_fini(struct nvkm_event *event, int type, int index)
@ -91,7 +89,6 @@ nvkm_fault_oneinit_buffer(struct nvkm_fault *fault, int id)
{ {
struct nvkm_subdev *subdev = &fault->subdev; struct nvkm_subdev *subdev = &fault->subdev;
struct nvkm_device *device = subdev->device; struct nvkm_device *device = subdev->device;
struct nvkm_vmm *bar2 = nvkm_bar_bar2_vmm(device);
struct nvkm_fault_buffer *buffer; struct nvkm_fault_buffer *buffer;
int ret; int ret;
@ -110,12 +107,12 @@ nvkm_fault_oneinit_buffer(struct nvkm_fault *fault, int id)
if (ret) if (ret)
return ret; return ret;
ret = nvkm_vmm_get(bar2, 12, nvkm_memory_size(buffer->mem), /* Pin fault buffer in BAR2. */
&buffer->vma); buffer->addr = nvkm_memory_bar2(buffer->mem);
if (ret) if (buffer->addr == ~0ULL)
return ret; return -EFAULT;
return nvkm_memory_map(buffer->mem, 0, bar2, buffer->vma, NULL, 0); return 0;
} }
static int static int
@ -146,7 +143,6 @@ nvkm_fault_oneinit(struct nvkm_subdev *subdev)
static void * static void *
nvkm_fault_dtor(struct nvkm_subdev *subdev) nvkm_fault_dtor(struct nvkm_subdev *subdev)
{ {
struct nvkm_vmm *bar2 = nvkm_bar_bar2_vmm(subdev->device);
struct nvkm_fault *fault = nvkm_fault(subdev); struct nvkm_fault *fault = nvkm_fault(subdev);
int i; int i;
@ -154,7 +150,6 @@ nvkm_fault_dtor(struct nvkm_subdev *subdev)
for (i = 0; i < fault->buffer_nr; i++) { for (i = 0; i < fault->buffer_nr; i++) {
if (fault->buffer[i]) { if (fault->buffer[i]) {
nvkm_vmm_put(bar2, &fault->buffer[i]->vma);
nvkm_memory_unref(&fault->buffer[i]->mem); nvkm_memory_unref(&fault->buffer[i]->mem);
kfree(fault->buffer[i]); kfree(fault->buffer[i]);
} }

View File

@ -21,8 +21,6 @@
*/ */
#include "priv.h" #include "priv.h"
#include <subdev/mmu.h>
static void static void
gp100_fault_buffer_fini(struct nvkm_fault_buffer *buffer) gp100_fault_buffer_fini(struct nvkm_fault_buffer *buffer)
{ {
@ -34,8 +32,8 @@ static void
gp100_fault_buffer_init(struct nvkm_fault_buffer *buffer) gp100_fault_buffer_init(struct nvkm_fault_buffer *buffer)
{ {
struct nvkm_device *device = buffer->fault->subdev.device; struct nvkm_device *device = buffer->fault->subdev.device;
nvkm_wr32(device, 0x002a74, upper_32_bits(buffer->vma->addr)); nvkm_wr32(device, 0x002a74, upper_32_bits(buffer->addr));
nvkm_wr32(device, 0x002a70, lower_32_bits(buffer->vma->addr)); nvkm_wr32(device, 0x002a70, lower_32_bits(buffer->addr));
nvkm_mask(device, 0x002a70, 0x00000001, 0x00000001); nvkm_mask(device, 0x002a70, 0x00000001, 0x00000001);
} }

View File

@ -88,8 +88,8 @@ gv100_fault_buffer_init(struct nvkm_fault_buffer *buffer)
const u32 foff = buffer->id * 0x14; const u32 foff = buffer->id * 0x14;
nvkm_mask(device, 0x100e34 + foff, 0xc0000000, 0x40000000); nvkm_mask(device, 0x100e34 + foff, 0xc0000000, 0x40000000);
nvkm_wr32(device, 0x100e28 + foff, upper_32_bits(buffer->vma->addr)); nvkm_wr32(device, 0x100e28 + foff, upper_32_bits(buffer->addr));
nvkm_wr32(device, 0x100e24 + foff, lower_32_bits(buffer->vma->addr)); nvkm_wr32(device, 0x100e24 + foff, lower_32_bits(buffer->addr));
nvkm_mask(device, 0x100e34 + foff, 0x80000000, 0x80000000); nvkm_mask(device, 0x100e34 + foff, 0x80000000, 0x80000000);
nvkm_mask(device, 0x100a2c, intr, intr); nvkm_mask(device, 0x100a2c, intr, intr);
} }

View File

@ -13,7 +13,7 @@ struct nvkm_fault_buffer {
int id; int id;
int entries; int entries;
struct nvkm_memory *mem; struct nvkm_memory *mem;
struct nvkm_vma *vma; u64 addr;
}; };
int nvkm_fault_new_(const struct nvkm_fault_func *, struct nvkm_device *, int nvkm_fault_new_(const struct nvkm_fault_func *, struct nvkm_device *,