| .. | .. |
|---|
| 235 | 235 | struct nvkm_device *device = vmm->mmu->subdev.device; |
|---|
| 236 | 236 | struct nvkm_ram *ram = device->fb->ram; |
|---|
| 237 | 237 | struct nvkm_memory *memory = map->memory; |
|---|
| 238 | | - u8 aper, kind, comp, priv, ro; |
|---|
| 238 | + u8 aper, kind, kind_inv, comp, priv, ro; |
|---|
| 239 | 239 | int kindn, ret = -ENOSYS; |
|---|
| 240 | 240 | const u8 *kindm; |
|---|
| 241 | 241 | |
|---|
| .. | .. |
|---|
| 278 | 278 | return -EINVAL; |
|---|
| 279 | 279 | } |
|---|
| 280 | 280 | |
|---|
| 281 | | - kindm = vmm->mmu->func->kind(vmm->mmu, &kindn); |
|---|
| 282 | | - if (kind >= kindn || kindm[kind] == 0x7f) { |
|---|
| 281 | + kindm = vmm->mmu->func->kind(vmm->mmu, &kindn, &kind_inv); |
|---|
| 282 | + if (kind >= kindn || kindm[kind] == kind_inv) { |
|---|
| 283 | 283 | VMM_DEBUG(vmm, "kind %02x", kind); |
|---|
| 284 | 284 | return -EINVAL; |
|---|
| 285 | 285 | } |
|---|
| .. | .. |
|---|
| 376 | 376 | }; |
|---|
| 377 | 377 | |
|---|
| 378 | 378 | int |
|---|
| 379 | | -nv50_vmm_new(struct nvkm_mmu *mmu, u64 addr, u64 size, void *argv, u32 argc, |
|---|
| 380 | | - struct lock_class_key *key, const char *name, |
|---|
| 379 | +nv50_vmm_new(struct nvkm_mmu *mmu, bool managed, u64 addr, u64 size, |
|---|
| 380 | + void *argv, u32 argc, struct lock_class_key *key, const char *name, |
|---|
| 381 | 381 | struct nvkm_vmm **pvmm) |
|---|
| 382 | 382 | { |
|---|
| 383 | | - return nv04_vmm_new_(&nv50_vmm, mmu, 0, addr, size, |
|---|
| 383 | + return nv04_vmm_new_(&nv50_vmm, mmu, 0, managed, addr, size, |
|---|
| 384 | 384 | argv, argc, key, name, pvmm); |
|---|
| 385 | 385 | } |
|---|