drm/nouveau/fault: remove manual mapping of fault buffers into BAR2
authorBen Skeggs <bskeggs@redhat.com>
Tue, 11 Dec 2018 04:50:02 +0000 (14:50 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Tue, 11 Dec 2018 05:37:46 +0000 (15:37 +1000)
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/nvkm/subdev/fault/base.c
drivers/gpu/drm/nouveau/nvkm/subdev/fault/gp100.c
drivers/gpu/drm/nouveau/nvkm/subdev/fault/gv100.c
drivers/gpu/drm/nouveau/nvkm/subdev/fault/priv.h

index 16ad91c91a7beca11a8febfbb91a54f3b34ac008..494a4a4265b3563fb0c0ef6b1992ba771e304d3f 100644 (file)
@@ -23,8 +23,6 @@
 
 #include <core/memory.h>
 #include <core/notify.h>
-#include <subdev/bar.h>
-#include <subdev/mmu.h>
 
 static void
 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_device *device = subdev->device;
-       struct nvkm_vmm *bar2 = nvkm_bar_bar2_vmm(device);
        struct nvkm_fault_buffer *buffer;
        int ret;
 
@@ -110,12 +107,12 @@ nvkm_fault_oneinit_buffer(struct nvkm_fault *fault, int id)
        if (ret)
                return ret;
 
-       ret = nvkm_vmm_get(bar2, 12, nvkm_memory_size(buffer->mem),
-                          &buffer->vma);
-       if (ret)
-               return ret;
+       /* Pin fault buffer in BAR2. */
+       buffer->addr = nvkm_memory_bar2(buffer->mem);
+       if (buffer->addr == ~0ULL)
+               return -EFAULT;
 
-       return nvkm_memory_map(buffer->mem, 0, bar2, buffer->vma, NULL, 0);
+       return 0;
 }
 
 static int
@@ -146,7 +143,6 @@ nvkm_fault_oneinit(struct nvkm_subdev *subdev)
 static void *
 nvkm_fault_dtor(struct nvkm_subdev *subdev)
 {
-       struct nvkm_vmm *bar2 = nvkm_bar_bar2_vmm(subdev->device);
        struct nvkm_fault *fault = nvkm_fault(subdev);
        int i;
 
@@ -154,7 +150,6 @@ nvkm_fault_dtor(struct nvkm_subdev *subdev)
 
        for (i = 0; i < fault->buffer_nr; i++) {
                if (fault->buffer[i]) {
-                       nvkm_vmm_put(bar2, &fault->buffer[i]->vma);
                        nvkm_memory_unref(&fault->buffer[i]->mem);
                        kfree(fault->buffer[i]);
                }
index 5e71db2e8d750378a6746438949d23c4ae4f6676..65822652dca51a9cfaf86827c9feefd4c2e0b694 100644 (file)
@@ -21,8 +21,6 @@
  */
 #include "priv.h"
 
-#include <subdev/mmu.h>
-
 static void
 gp100_fault_buffer_fini(struct nvkm_fault_buffer *buffer)
 {
@@ -34,8 +32,8 @@ static void
 gp100_fault_buffer_init(struct nvkm_fault_buffer *buffer)
 {
        struct nvkm_device *device = buffer->fault->subdev.device;
-       nvkm_wr32(device, 0x002a74, upper_32_bits(buffer->vma->addr));
-       nvkm_wr32(device, 0x002a70, lower_32_bits(buffer->vma->addr));
+       nvkm_wr32(device, 0x002a74, upper_32_bits(buffer->addr));
+       nvkm_wr32(device, 0x002a70, lower_32_bits(buffer->addr));
        nvkm_mask(device, 0x002a70, 0x00000001, 0x00000001);
 }
 
index 3cd610d7deb5268f1e73fcebbd4e49aa50519cfc..f836fcef8b72c74d8a5b7a828ad7ee3f7c48f3ed 100644 (file)
@@ -88,8 +88,8 @@ gv100_fault_buffer_init(struct nvkm_fault_buffer *buffer)
        const u32 foff = buffer->id * 0x14;
 
        nvkm_mask(device, 0x100e34 + foff, 0xc0000000, 0x40000000);
-       nvkm_wr32(device, 0x100e28 + foff, upper_32_bits(buffer->vma->addr));
-       nvkm_wr32(device, 0x100e24 + foff, lower_32_bits(buffer->vma->addr));
+       nvkm_wr32(device, 0x100e28 + foff, upper_32_bits(buffer->addr));
+       nvkm_wr32(device, 0x100e24 + foff, lower_32_bits(buffer->addr));
        nvkm_mask(device, 0x100e34 + foff, 0x80000000, 0x80000000);
        nvkm_mask(device, 0x100a2c, intr, intr);
 }
index e4d2f5234fd19be82125e7266bf89e3db1e4f563..6439bc591cc716de9e6ba347434c7d09df443c37 100644 (file)
@@ -13,7 +13,7 @@ struct nvkm_fault_buffer {
        int id;
        int entries;
        struct nvkm_memory *mem;
-       struct nvkm_vma *vma;
+       u64 addr;
 };
 
 int nvkm_fault_new_(const struct nvkm_fault_func *, struct nvkm_device *,