1 /* SPDX-License-Identifier: MIT 2 * 3 * Copyright (c) 2025, NVIDIA CORPORATION. All rights reserved. 4 */ 5 #ifndef __gh100_dev_mmu_h__ 6 #define __gh100_dev_mmu_h__ 7 8 #define NV_MMU_PTE /* ----G */ 9 #define NV_MMU_PTE_APERTURE (1*32+2):(1*32+1) /* RWXVF */ 10 #define NV_MMU_PTE_APERTURE_VIDEO_MEMORY 0x00000000 /* RW--V */ 11 #define NV_MMU_PTE_APERTURE_PEER_MEMORY 0x00000001 /* RW--V */ 12 #define NV_MMU_PTE_APERTURE_SYSTEM_COHERENT_MEMORY 0x00000002 /* RW--V */ 13 #define NV_MMU_PTE_APERTURE_SYSTEM_NON_COHERENT_MEMORY 0x00000003 /* RW--V */ 14 #define NV_MMU_PTE_KIND (1*32+7):(1*32+4) /* RWXVF */ 15 #define NV_MMU_PTE_KIND_INVALID 0x07 /* R---V */ 16 #define NV_MMU_PTE_KIND_PITCH 0x00 /* R---V */ 17 #define NV_MMU_PTE_KIND_GENERIC_MEMORY 0x6 /* R---V */ 18 #define NV_MMU_PTE_KIND_Z16 0x1 /* R---V */ 19 #define NV_MMU_PTE_KIND_S8 0x2 /* R---V */ 20 #define NV_MMU_PTE_KIND_S8Z24 0x3 /* R---V */ 21 #define NV_MMU_PTE_KIND_ZF32_X24S8 0x4 /* R---V */ 22 #define NV_MMU_PTE_KIND_Z24S8 0x5 /* R---V */ 23 #define NV_MMU_PTE_KIND_GENERIC_MEMORY_COMPRESSIBLE 0x8 /* R---V */ 24 #define NV_MMU_PTE_KIND_GENERIC_MEMORY_COMPRESSIBLE_DISABLE_PLC 0x9 /* R---V */ 25 #define NV_MMU_PTE_KIND_S8_COMPRESSIBLE_DISABLE_PLC 0xA /* R---V */ 26 #define NV_MMU_PTE_KIND_Z16_COMPRESSIBLE_DISABLE_PLC 0xB /* R---V */ 27 #define NV_MMU_PTE_KIND_S8Z24_COMPRESSIBLE_DISABLE_PLC 0xC /* R---V */ 28 #define NV_MMU_PTE_KIND_ZF32_X24S8_COMPRESSIBLE_DISABLE_PLC 0xD /* R---V */ 29 #define NV_MMU_PTE_KIND_Z24S8_COMPRESSIBLE_DISABLE_PLC 0xE /* R---V */ 30 #define NV_MMU_PTE_KIND_SMSKED_MESSAGE 0xF /* R---V */ 31 32 #define NV_MMU_VER3_PDE /* ----G */ 33 #define NV_MMU_VER3_PDE_IS_PTE 0:0 /* RWXVF */ 34 #define NV_MMU_VER3_PDE_IS_PTE_TRUE 0x1 /* RW--V */ 35 #define NV_MMU_VER3_PDE_IS_PTE_FALSE 0x0 /* RW--V */ 36 #define NV_MMU_VER3_PDE_VALID 0:0 /* RWXVF */ 37 #define NV_MMU_VER3_PDE_VALID_TRUE 0x1 /* RW--V */ 38 #define NV_MMU_VER3_PDE_VALID_FALSE 0x0 /* RW--V */ 39 #define NV_MMU_VER3_PDE_APERTURE 2:1 /* RWXVF */ 40 #define NV_MMU_VER3_PDE_APERTURE_INVALID 0x00000000 /* RW--V */ 41 #define NV_MMU_VER3_PDE_APERTURE_VIDEO_MEMORY 0x00000001 /* RW--V */ 42 #define NV_MMU_VER3_PDE_APERTURE_SYSTEM_COHERENT_MEMORY 0x00000002 /* RW--V */ 43 #define NV_MMU_VER3_PDE_APERTURE_SYSTEM_NON_COHERENT_MEMORY 0x00000003 /* RW--V */ 44 #define NV_MMU_VER3_PDE_PCF 5:3 /* RWXVF */ 45 #define NV_MMU_VER3_PDE_PCF_VALID_CACHED_ATS_ALLOWED__OR__INVALID_ATS_ALLOWED 0x00000000 /* RW--V */ 46 #define NV_MMU_VER3_PDE_PCF_VALID_CACHED_ATS_ALLOWED 0x00000000 /* RW--V */ 47 #define NV_MMU_VER3_PDE_PCF_INVALID_ATS_ALLOWED 0x00000000 /* RW--V */ 48 #define NV_MMU_VER3_PDE_PCF_VALID_UNCACHED_ATS_ALLOWED__OR__SPARSE_ATS_ALLOWED 0x00000001 /* RW--V */ 49 #define NV_MMU_VER3_PDE_PCF_VALID_UNCACHED_ATS_ALLOWED 0x00000001 /* RW--V */ 50 #define NV_MMU_VER3_PDE_PCF_SPARSE_ATS_ALLOWED 0x00000001 /* RW--V */ 51 #define NV_MMU_VER3_PDE_PCF_VALID_CACHED_ATS_NOT_ALLOWED__OR__INVALID_ATS_NOT_ALLOWED 0x00000002 /* RW--V */ 52 #define NV_MMU_VER3_PDE_PCF_VALID_CACHED_ATS_NOT_ALLOWED 0x00000002 /* RW--V */ 53 #define NV_MMU_VER3_PDE_PCF_INVALID_ATS_NOT_ALLOWED 0x00000002 /* RW--V */ 54 #define NV_MMU_VER3_PDE_PCF_VALID_UNCACHED_ATS_NOT_ALLOWED__OR__SPARSE_ATS_NOT_ALLOWED 0x00000003 /* RW--V */ 55 #define NV_MMU_VER3_PDE_PCF_VALID_UNCACHED_ATS_NOT_ALLOWED 0x00000003 /* RW--V */ 56 #define NV_MMU_VER3_PDE_PCF_SPARSE_ATS_NOT_ALLOWED 0x00000003 /* RW--V */ 57 #define NV_MMU_VER3_PDE_ADDRESS 51:12 /* RWXVF */ 58 #define NV_MMU_VER3_PDE_ADDRESS_SHIFT 0x0000000c /* */ 59 #define NV_MMU_VER3_PDE__SIZE 8 60 61 #define NV_MMU_VER3_DUAL_PDE /* ----G */ 62 #define NV_MMU_VER3_DUAL_PDE_IS_PTE 0:0 /* RWXVF */ 63 #define NV_MMU_VER3_DUAL_PDE_IS_PTE_TRUE 0x1 /* RW--V */ 64 #define NV_MMU_VER3_DUAL_PDE_IS_PTE_FALSE 0x0 /* RW--V */ 65 #define NV_MMU_VER3_DUAL_PDE_VALID 0:0 /* RWXVF */ 66 #define NV_MMU_VER3_DUAL_PDE_VALID_TRUE 0x1 /* RW--V */ 67 #define NV_MMU_VER3_DUAL_PDE_VALID_FALSE 0x0 /* RW--V */ 68 #define NV_MMU_VER3_DUAL_PDE_APERTURE_BIG 2:1 /* RWXVF */ 69 #define NV_MMU_VER3_DUAL_PDE_APERTURE_BIG_INVALID 0x00000000 /* RW--V */ 70 #define NV_MMU_VER3_DUAL_PDE_APERTURE_BIG_VIDEO_MEMORY 0x00000001 /* RW--V */ 71 #define NV_MMU_VER3_DUAL_PDE_APERTURE_BIG_SYSTEM_COHERENT_MEMORY 0x00000002 /* RW--V */ 72 #define NV_MMU_VER3_DUAL_PDE_APERTURE_BIG_SYSTEM_NON_COHERENT_MEMORY 0x00000003 /* RW--V */ 73 #define NV_MMU_VER3_DUAL_PDE_PCF_BIG 5:3 /* RWXVF */ 74 #define NV_MMU_VER3_DUAL_PDE_PCF_BIG_VALID_CACHED_ATS_ALLOWED__OR__INVALID_ATS_ALLOWED 0x00000000 /* RW--V */ 75 #define NV_MMU_VER3_DUAL_PDE_PCF_BIG_VALID_CACHED_ATS_ALLOWED 0x00000000 /* RW--V */ 76 #define NV_MMU_VER3_DUAL_PDE_PCF_BIG_INVALID_ATS_ALLOWED 0x00000000 /* RW--V */ 77 #define NV_MMU_VER3_DUAL_PDE_PCF_BIG_VALID_UNCACHED_ATS_ALLOWED__OR__SPARSE_ATS_ALLOWED 0x00000001 /* RW--V */ 78 #define NV_MMU_VER3_DUAL_PDE_PCF_BIG_VALID_UNCACHED_ATS_ALLOWED 0x00000001 /* RW--V */ 79 #define NV_MMU_VER3_DUAL_PDE_PCF_BIG_SPARSE_ATS_ALLOWED 0x00000001 /* RW--V */ 80 #define NV_MMU_VER3_DUAL_PDE_PCF_BIG_VALID_CACHED_ATS_NOT_ALLOWED__OR__INVALID_ATS_NOT_ALLOWED 0x00000002 /* RW--V */ 81 #define NV_MMU_VER3_DUAL_PDE_PCF_BIG_VALID_CACHED_ATS_NOT_ALLOWED 0x00000002 /* RW--V */ 82 #define NV_MMU_VER3_DUAL_PDE_PCF_BIG_INVALID_ATS_NOT_ALLOWED 0x00000002 /* RW--V */ 83 #define NV_MMU_VER3_DUAL_PDE_PCF_BIG_VALID_UNCACHED_ATS_NOT_ALLOWED__OR__SPARSE_ATS_NOT_ALLOWED 0x00000003 /* RW--V */ 84 #define NV_MMU_VER3_DUAL_PDE_PCF_BIG_VALID_UNCACHED_ATS_NOT_ALLOWED 0x00000003 /* RW--V */ 85 #define NV_MMU_VER3_DUAL_PDE_PCF_BIG_SPARSE_ATS_NOT_ALLOWED 0x00000003 /* RW--V */ 86 #define NV_MMU_VER3_DUAL_PDE_ADDRESS_BIG 51:8 /* RWXVF */ 87 #define NV_MMU_VER3_DUAL_PDE_APERTURE_SMALL 66:65 /* RWXVF */ 88 #define NV_MMU_VER3_DUAL_PDE_APERTURE_SMALL_INVALID 0x00000000 /* RW--V */ 89 #define NV_MMU_VER3_DUAL_PDE_APERTURE_SMALL_VIDEO_MEMORY 0x00000001 /* RW--V */ 90 #define NV_MMU_VER3_DUAL_PDE_APERTURE_SMALL_SYSTEM_COHERENT_MEMORY 0x00000002 /* RW--V */ 91 #define NV_MMU_VER3_DUAL_PDE_APERTURE_SMALL_SYSTEM_NON_COHERENT_MEMORY 0x00000003 /* RW--V */ 92 #define NV_MMU_VER3_DUAL_PDE_PCF_SMALL 69:67 /* RWXVF */ 93 #define NV_MMU_VER3_DUAL_PDE_PCF_SMALL_VALID_CACHED_ATS_ALLOWED__OR__INVALID_ATS_ALLOWED 0x00000000 /* RW--V */ 94 #define NV_MMU_VER3_DUAL_PDE_PCF_SMALL_VALID_CACHED_ATS_ALLOWED 0x00000000 /* RW--V */ 95 #define NV_MMU_VER3_DUAL_PDE_PCF_SMALL_INVALID_ATS_ALLOWED 0x00000000 /* RW--V */ 96 #define NV_MMU_VER3_DUAL_PDE_PCF_SMALL_VALID_UNCACHED_ATS_ALLOWED__OR__SPARSE_ATS_ALLOWED 0x00000001 /* RW--V */ 97 #define NV_MMU_VER3_DUAL_PDE_PCF_SMALL_VALID_UNCACHED_ATS_ALLOWED 0x00000001 /* RW--V */ 98 #define NV_MMU_VER3_DUAL_PDE_PCF_SMALL_SPARSE_ATS_ALLOWED 0x00000001 /* RW--V */ 99 #define NV_MMU_VER3_DUAL_PDE_PCF_SMALL_VALID_CACHED_ATS_NOT_ALLOWED__OR__INVALID_ATS_NOT_ALLOWED 0x00000002 /* RW--V */ 100 #define NV_MMU_VER3_DUAL_PDE_PCF_SMALL_VALID_CACHED_ATS_NOT_ALLOWED 0x00000002 /* RW--V */ 101 #define NV_MMU_VER3_DUAL_PDE_PCF_SMALL_INVALID_ATS_NOT_ALLOWED 0x00000002 /* RW--V */ 102 #define NV_MMU_VER3_DUAL_PDE_PCF_SMALL_VALID_UNCACHED_ATS_NOT_ALLOWED__OR__SPARSE_ATS_NOT_ALLOWED 0x00000003 /* RW--V */ 103 #define NV_MMU_VER3_DUAL_PDE_PCF_SMALL_VALID_UNCACHED_ATS_NOT_ALLOWED 0x00000003 /* RW--V */ 104 #define NV_MMU_VER3_DUAL_PDE_PCF_SMALL_SPARSE_ATS_NOT_ALLOWED 0x00000003 /* RW--V */ 105 #define NV_MMU_VER3_DUAL_PDE_ADDRESS_SMALL 115:76 /* RWXVF */ 106 #define NV_MMU_VER3_DUAL_PDE_ADDRESS_SHIFT 0x0000000c /* */ 107 #define NV_MMU_VER3_DUAL_PDE_ADDRESS_BIG_SHIFT 8 /* */ 108 #define NV_MMU_VER3_DUAL_PDE__SIZE 16 109 110 #define NV_MMU_VER3_PTE /* ----G */ 111 #define NV_MMU_VER3_PTE_VALID 0:0 /* RWXVF */ 112 #define NV_MMU_VER3_PTE_VALID_TRUE 0x1 /* RW--V */ 113 #define NV_MMU_VER3_PTE_VALID_FALSE 0x0 /* RW--V */ 114 #define NV_MMU_VER3_PTE_APERTURE 2:1 /* RWXVF */ 115 #define NV_MMU_VER3_PTE_APERTURE_VIDEO_MEMORY 0x00000000 /* RW--V */ 116 #define NV_MMU_VER3_PTE_APERTURE_PEER_MEMORY 0x00000001 /* RW--V */ 117 #define NV_MMU_VER3_PTE_APERTURE_SYSTEM_COHERENT_MEMORY 0x00000002 /* RW--V */ 118 #define NV_MMU_VER3_PTE_APERTURE_SYSTEM_NON_COHERENT_MEMORY 0x00000003 /* RW--V */ 119 #define NV_MMU_VER3_PTE_PCF 7:3 /* RWXVF */ 120 #define NV_MMU_VER3_PTE_PCF_INVALID 0x00000000 /* RW--V */ 121 #define NV_MMU_VER3_PTE_PCF_SPARSE 0x00000001 /* RW--V */ 122 #define NV_MMU_VER3_PTE_PCF_MAPPING_NOWHERE 0x00000002 /* RW--V */ 123 #define NV_MMU_VER3_PTE_PCF_NO_VALID_4KB_PAGE 0x00000003 /* RW--V */ 124 #define NV_MMU_VER3_PTE_PCF_REGULAR_RW_ATOMIC_CACHED_ACE 0x00000000 /* RW--V */ 125 #define NV_MMU_VER3_PTE_PCF_REGULAR_RW_ATOMIC_UNCACHED_ACE 0x00000001 /* RW--V */ 126 #define NV_MMU_VER3_PTE_PCF_PRIVILEGE_RW_ATOMIC_CACHED_ACE 0x00000002 /* RW--V */ 127 #define NV_MMU_VER3_PTE_PCF_PRIVILEGE_RW_ATOMIC_UNCACHED_ACE 0x00000003 /* RW--V */ 128 #define NV_MMU_VER3_PTE_PCF_REGULAR_RO_ATOMIC_CACHED_ACE 0x00000004 /* RW--V */ 129 #define NV_MMU_VER3_PTE_PCF_REGULAR_RO_ATOMIC_UNCACHED_ACE 0x00000005 /* RW--V */ 130 #define NV_MMU_VER3_PTE_PCF_PRIVILEGE_RO_ATOMIC_CACHED_ACE 0x00000006 /* RW--V */ 131 #define NV_MMU_VER3_PTE_PCF_PRIVILEGE_RO_ATOMIC_UNCACHED_ACE 0x00000007 /* RW--V */ 132 #define NV_MMU_VER3_PTE_PCF_REGULAR_RW_NO_ATOMIC_CACHED_ACE 0x00000008 /* RW--V */ 133 #define NV_MMU_VER3_PTE_PCF_REGULAR_RW_NO_ATOMIC_UNCACHED_ACE 0x00000009 /* RW--V */ 134 #define NV_MMU_VER3_PTE_PCF_PRIVILEGE_RW_NO_ATOMIC_CACHED_ACE 0x0000000A /* RW--V */ 135 #define NV_MMU_VER3_PTE_PCF_PRIVILEGE_RW_NO_ATOMIC_UNCACHED_ACE 0x0000000B /* RW--V */ 136 #define NV_MMU_VER3_PTE_PCF_REGULAR_RO_NO_ATOMIC_CACHED_ACE 0x0000000C /* RW--V */ 137 #define NV_MMU_VER3_PTE_PCF_REGULAR_RO_NO_ATOMIC_UNCACHED_ACE 0x0000000D /* RW--V */ 138 #define NV_MMU_VER3_PTE_PCF_PRIVILEGE_RO_NO_ATOMIC_CACHED_ACE 0x0000000E /* RW--V */ 139 #define NV_MMU_VER3_PTE_PCF_PRIVILEGE_RO_NO_ATOMIC_UNCACHED_ACE 0x0000000F /* RW--V */ 140 #define NV_MMU_VER3_PTE_PCF_REGULAR_RW_ATOMIC_CACHED_ACD 0x00000010 /* RW--V */ 141 #define NV_MMU_VER3_PTE_PCF_REGULAR_RW_ATOMIC_UNCACHED_ACD 0x00000011 /* RW--V */ 142 #define NV_MMU_VER3_PTE_PCF_PRIVILEGE_RW_ATOMIC_CACHED_ACD 0x00000012 /* RW--V */ 143 #define NV_MMU_VER3_PTE_PCF_PRIVILEGE_RW_ATOMIC_UNCACHED_ACD 0x00000013 /* RW--V */ 144 #define NV_MMU_VER3_PTE_PCF_REGULAR_RO_ATOMIC_CACHED_ACD 0x00000014 /* RW--V */ 145 #define NV_MMU_VER3_PTE_PCF_REGULAR_RO_ATOMIC_UNCACHED_ACD 0x00000015 /* RW--V */ 146 #define NV_MMU_VER3_PTE_PCF_PRIVILEGE_RO_ATOMIC_CACHED_ACD 0x00000016 /* RW--V */ 147 #define NV_MMU_VER3_PTE_PCF_PRIVILEGE_RO_ATOMIC_UNCACHED_ACD 0x00000017 /* RW--V */ 148 #define NV_MMU_VER3_PTE_PCF_REGULAR_RW_NO_ATOMIC_CACHED_ACD 0x00000018 /* RW--V */ 149 #define NV_MMU_VER3_PTE_PCF_REGULAR_RW_NO_ATOMIC_UNCACHED_ACD 0x00000019 /* RW--V */ 150 #define NV_MMU_VER3_PTE_PCF_PRIVILEGE_RW_NO_ATOMIC_CACHED_ACD 0x0000001A /* RW--V */ 151 #define NV_MMU_VER3_PTE_PCF_PRIVILEGE_RW_NO_ATOMIC_UNCACHED_ACD 0x0000001B /* RW--V */ 152 #define NV_MMU_VER3_PTE_PCF_REGULAR_RO_NO_ATOMIC_CACHED_ACD 0x0000001C /* RW--V */ 153 #define NV_MMU_VER3_PTE_PCF_REGULAR_RO_NO_ATOMIC_UNCACHED_ACD 0x0000001D /* RW--V */ 154 #define NV_MMU_VER3_PTE_PCF_PRIVILEGE_RO_NO_ATOMIC_CACHED_ACD 0x0000001E /* RW--V */ 155 #define NV_MMU_VER3_PTE_PCF_PRIVILEGE_RO_NO_ATOMIC_UNCACHED_ACD 0x0000001F /* RW--V */ 156 #define NV_MMU_VER3_PTE_KIND 11:8 /* RWXVF */ 157 #define NV_MMU_VER3_PTE_ADDRESS 51:12 /* RWXVF */ 158 #define NV_MMU_VER3_PTE_ADDRESS_SYS 51:12 /* RWXVF */ 159 #define NV_MMU_VER3_PTE_ADDRESS_PEER 51:12 /* RWXVF */ 160 #define NV_MMU_VER3_PTE_ADDRESS_VID 39:12 /* RWXVF */ 161 #define NV_MMU_VER3_PTE_PEER_ID 63:(64-3) /* RWXVF */ 162 #define NV_MMU_VER3_PTE_PEER_ID_0 0x00000000 /* RW--V */ 163 #define NV_MMU_VER3_PTE_PEER_ID_1 0x00000001 /* RW--V */ 164 #define NV_MMU_VER3_PTE_PEER_ID_2 0x00000002 /* RW--V */ 165 #define NV_MMU_VER3_PTE_PEER_ID_3 0x00000003 /* RW--V */ 166 #define NV_MMU_VER3_PTE_PEER_ID_4 0x00000004 /* RW--V */ 167 #define NV_MMU_VER3_PTE_PEER_ID_5 0x00000005 /* RW--V */ 168 #define NV_MMU_VER3_PTE_PEER_ID_6 0x00000006 /* RW--V */ 169 #define NV_MMU_VER3_PTE_PEER_ID_7 0x00000007 /* RW--V */ 170 #define NV_MMU_VER3_PTE_ADDRESS_SHIFT 0x0000000c /* */ 171 #define NV_MMU_VER3_PTE__SIZE 8 172 173 #endif // __gh100_dev_mmu_h__ 174