|
@@ -25,6 +25,48 @@
|
|
|
|
|
|
#include <nvif/class.h>
|
|
|
|
|
|
+const u8 *
|
|
|
+gm200_mmu_kind(struct nvkm_mmu *mmu, int *count)
|
|
|
+{
|
|
|
+ static const u8
|
|
|
+ kind[256] = {
|
|
|
+ 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, 0x01, /* 0x00 */
|
|
|
+ 0x01, 0x01, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff,
|
|
|
+ 0xff, 0x11, 0xff, 0xff, 0xff, 0xff, 0xff, 0x11, /* 0x10 */
|
|
|
+ 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0xff,
|
|
|
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x26, 0x27, /* 0x20 */
|
|
|
+ 0x28, 0x29, 0x2a, 0x2b, 0xff, 0xff, 0xff, 0xff,
|
|
|
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x30 */
|
|
|
+ 0xff, 0xff, 0x26, 0x27, 0x28, 0x29, 0x26, 0x27,
|
|
|
+ 0x28, 0x29, 0xff, 0xff, 0xff, 0xff, 0x46, 0xff, /* 0x40 */
|
|
|
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
|
|
+ 0xff, 0x46, 0x46, 0x46, 0x46, 0xff, 0xff, 0xff, /* 0x50 */
|
|
|
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
|
|
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x60 */
|
|
|
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
|
|
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x70 */
|
|
|
+ 0xff, 0xff, 0xff, 0x7b, 0xff, 0xff, 0xff, 0xff,
|
|
|
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7b, 0x7b, /* 0x80 */
|
|
|
+ 0x7b, 0x7b, 0xff, 0x8b, 0x8c, 0x8d, 0x8e, 0xff,
|
|
|
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x90 */
|
|
|
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
|
|
+ 0xff, 0xff, 0xff, 0x8b, 0x8c, 0x8d, 0x8e, 0xa7, /* 0xa0 */
|
|
|
+ 0xa8, 0xa9, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff,
|
|
|
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0xb0 */
|
|
|
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa7,
|
|
|
+ 0xa8, 0xa9, 0xaa, 0xc3, 0xff, 0xff, 0xff, 0xff, /* 0xc0 */
|
|
|
+ 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xc3, 0xc3,
|
|
|
+ 0xc3, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0xd0 */
|
|
|
+ 0xfe, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe,
|
|
|
+ 0xfe, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, /* 0xe0 */
|
|
|
+ 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xfe, 0xff,
|
|
|
+ 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, /* 0xf0 */
|
|
|
+ 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xfd, 0xfe, 0xff
|
|
|
+ };
|
|
|
+ *count = ARRAY_SIZE(kind);
|
|
|
+ return kind;
|
|
|
+}
|
|
|
+
|
|
|
static const struct nvkm_mmu_func
|
|
|
gm200_mmu = {
|
|
|
.limit = (1ULL << 40),
|
|
@@ -32,12 +74,8 @@ gm200_mmu = {
|
|
|
.pgt_bits = 27 - 12,
|
|
|
.spg_shift = 12,
|
|
|
.lpg_shift = 17,
|
|
|
- .map_pgt = gf100_vm_map_pgt,
|
|
|
- .map = gf100_vm_map,
|
|
|
- .map_sg = gf100_vm_map_sg,
|
|
|
- .unmap = gf100_vm_unmap,
|
|
|
- .flush = gf100_vm_flush,
|
|
|
.vmm = {{ -1, 0, NVIF_CLASS_VMM_GM200}, gm200_vmm_new },
|
|
|
+ .kind = gm200_mmu_kind,
|
|
|
};
|
|
|
|
|
|
static const struct nvkm_mmu_func
|
|
@@ -47,12 +85,8 @@ gm200_mmu_fixed = {
|
|
|
.pgt_bits = 27 - 12,
|
|
|
.spg_shift = 12,
|
|
|
.lpg_shift = 17,
|
|
|
- .map_pgt = gf100_vm_map_pgt,
|
|
|
- .map = gf100_vm_map,
|
|
|
- .map_sg = gf100_vm_map_sg,
|
|
|
- .unmap = gf100_vm_unmap,
|
|
|
- .flush = gf100_vm_flush,
|
|
|
.vmm = {{ -1, -1, NVIF_CLASS_VMM_GM200}, gm200_vmm_new_fixed },
|
|
|
+ .kind = gm200_mmu_kind,
|
|
|
};
|
|
|
|
|
|
int
|