diff options
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 51 |
1 files changed, 31 insertions, 20 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c index 4aa10d7baf43..d78c523c93fe 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | |||
@@ -1079,6 +1079,36 @@ static void amdgpu_get_block_size(struct amdgpu_device *adev) | |||
1079 | } | 1079 | } |
1080 | } | 1080 | } |
1081 | 1081 | ||
1082 | static void amdgpu_check_vm_size(struct amdgpu_device *adev) | ||
1083 | { | ||
1084 | if (!amdgpu_check_pot_argument(amdgpu_vm_size)) { | ||
1085 | dev_warn(adev->dev, "VM size (%d) must be a power of 2\n", | ||
1086 | amdgpu_vm_size); | ||
1087 | goto def_value; | ||
1088 | } | ||
1089 | |||
1090 | if (amdgpu_vm_size < 1) { | ||
1091 | dev_warn(adev->dev, "VM size (%d) too small, min is 1GB\n", | ||
1092 | amdgpu_vm_size); | ||
1093 | goto def_value; | ||
1094 | } | ||
1095 | |||
1096 | /* | ||
1097 | * Max GPUVM size for Cayman, SI, CI VI are 40 bits. | ||
1098 | */ | ||
1099 | if (amdgpu_vm_size > 1024) { | ||
1100 | dev_warn(adev->dev, "VM size (%d) too large, max is 1TB\n", | ||
1101 | amdgpu_vm_size); | ||
1102 | goto def_value; | ||
1103 | } | ||
1104 | |||
1105 | return; | ||
1106 | |||
1107 | def_value: | ||
1108 | amdgpu_vm_size = 8; | ||
1109 | dev_info(adev->dev, "set default VM size %dGB\n", amdgpu_vm_size); | ||
1110 | } | ||
1111 | |||
1082 | /** | 1112 | /** |
1083 | * amdgpu_check_arguments - validate module params | 1113 | * amdgpu_check_arguments - validate module params |
1084 | * | 1114 | * |
@@ -1108,26 +1138,7 @@ static void amdgpu_check_arguments(struct amdgpu_device *adev) | |||
1108 | } | 1138 | } |
1109 | } | 1139 | } |
1110 | 1140 | ||
1111 | if (!amdgpu_check_pot_argument(amdgpu_vm_size)) { | 1141 | amdgpu_check_vm_size(adev); |
1112 | dev_warn(adev->dev, "VM size (%d) must be a power of 2\n", | ||
1113 | amdgpu_vm_size); | ||
1114 | amdgpu_vm_size = 8; | ||
1115 | } | ||
1116 | |||
1117 | if (amdgpu_vm_size < 1) { | ||
1118 | dev_warn(adev->dev, "VM size (%d) too small, min is 1GB\n", | ||
1119 | amdgpu_vm_size); | ||
1120 | amdgpu_vm_size = 8; | ||
1121 | } | ||
1122 | |||
1123 | /* | ||
1124 | * Max GPUVM size for Cayman, SI and CI are 40 bits. | ||
1125 | */ | ||
1126 | if (amdgpu_vm_size > 1024) { | ||
1127 | dev_warn(adev->dev, "VM size (%d) too large, max is 1TB\n", | ||
1128 | amdgpu_vm_size); | ||
1129 | amdgpu_vm_size = 8; | ||
1130 | } | ||
1131 | 1142 | ||
1132 | amdgpu_get_block_size(adev); | 1143 | amdgpu_get_block_size(adev); |
1133 | 1144 | ||