forked from Minki/linux
drm/nouveau/fault: remove manual mapping of fault buffers into BAR2
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
1786bf56e4
commit
4d326469d9
@ -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]);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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 *,
|
||||
|
Loading…
Reference in New Issue
Block a user