1 #ifndef __NVIF_IF000C_H__ 2 #define __NVIF_IF000C_H__ 3 struct nvif_vmm_v0 { 4 __u8 version; 5 __u8 page_nr; 6 __u8 managed; 7 __u8 pad03[5]; 8 __u64 addr; 9 __u64 size; 10 __u8 data[]; 11 }; 12 13 #define NVIF_VMM_V0_PAGE 0x00 14 #define NVIF_VMM_V0_GET 0x01 15 #define NVIF_VMM_V0_PUT 0x02 16 #define NVIF_VMM_V0_MAP 0x03 17 #define NVIF_VMM_V0_UNMAP 0x04 18 #define NVIF_VMM_V0_PFNMAP 0x05 19 #define NVIF_VMM_V0_PFNCLR 0x06 20 #define NVIF_VMM_V0_MTHD(i) ((i) + 0x80) 21 22 struct nvif_vmm_page_v0 { 23 __u8 version; 24 __u8 index; 25 __u8 shift; 26 __u8 sparse; 27 __u8 vram; 28 __u8 host; 29 __u8 comp; 30 __u8 pad07[1]; 31 }; 32 33 struct nvif_vmm_get_v0 { 34 __u8 version; 35 #define NVIF_VMM_GET_V0_ADDR 0x00 36 #define NVIF_VMM_GET_V0_PTES 0x01 37 #define NVIF_VMM_GET_V0_LAZY 0x02 38 __u8 type; 39 __u8 sparse; 40 __u8 page; 41 __u8 align; 42 __u8 pad05[3]; 43 __u64 size; 44 __u64 addr; 45 }; 46 47 struct nvif_vmm_put_v0 { 48 __u8 version; 49 __u8 pad01[7]; 50 __u64 addr; 51 }; 52 53 struct nvif_vmm_map_v0 { 54 __u8 version; 55 __u8 pad01[7]; 56 __u64 addr; 57 __u64 size; 58 __u64 memory; 59 __u64 offset; 60 __u8 data[]; 61 }; 62 63 struct nvif_vmm_unmap_v0 { 64 __u8 version; 65 __u8 pad01[7]; 66 __u64 addr; 67 }; 68 69 struct nvif_vmm_pfnmap_v0 { 70 __u8 version; 71 __u8 page; 72 __u8 pad02[6]; 73 __u64 addr; 74 __u64 size; 75 #define NVIF_VMM_PFNMAP_V0_ADDR 0xfffffffffffff000ULL 76 #define NVIF_VMM_PFNMAP_V0_ADDR_SHIFT 12 77 #define NVIF_VMM_PFNMAP_V0_APER 0x00000000000000f0ULL 78 #define NVIF_VMM_PFNMAP_V0_HOST 0x0000000000000000ULL 79 #define NVIF_VMM_PFNMAP_V0_VRAM 0x0000000000000010ULL 80 #define NVIF_VMM_PFNMAP_V0_W 0x0000000000000002ULL 81 #define NVIF_VMM_PFNMAP_V0_V 0x0000000000000001ULL 82 #define NVIF_VMM_PFNMAP_V0_NONE 0x0000000000000000ULL 83 __u64 phys[]; 84 }; 85 86 struct nvif_vmm_pfnclr_v0 { 87 __u8 version; 88 __u8 pad01[7]; 89 __u64 addr; 90 __u64 size; 91 }; 92 #endif