diff options
author | Felix Kuehling <Felix.Kuehling@amd.com> | 2018-03-15 17:27:53 -0400 |
---|---|---|
committer | Oded Gabbay <oded.gabbay@gmail.com> | 2018-03-15 17:27:53 -0400 |
commit | 374200b154ae48e8f011fb74dab21f80459f9e47 (patch) | |
tree | d801c957febe2b211b23486e26d139d636535034 | |
parent | 0fc8011f89feb8b2c3008583b777d097e1974660 (diff) |
drm/amdkfd: Add module option for testing large-BAR functionality
Simulate large-BAR system by exporting only visible memory. This
limits the amount of available VRAM to the size of the BAR, but
enables CPU access to VRAM.
Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
Acked-by: Oded Gabbay <oded.gabbay@gmail.com>
Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com>
-rw-r--r-- | drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 5 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdkfd/kfd_crat.c | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdkfd/kfd_module.c | 5 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdkfd/kfd_priv.h | 6 |
4 files changed, 19 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c index ec0b2c0284ec..cd679cf1fd30 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | |||
@@ -1151,6 +1151,11 @@ bool kfd_dev_is_large_bar(struct kfd_dev *dev) | |||
1151 | { | 1151 | { |
1152 | struct kfd_local_mem_info mem_info; | 1152 | struct kfd_local_mem_info mem_info; |
1153 | 1153 | ||
1154 | if (debug_largebar) { | ||
1155 | pr_debug("Simulate large-bar allocation on non large-bar machine\n"); | ||
1156 | return true; | ||
1157 | } | ||
1158 | |||
1154 | if (dev->device_info->needs_iommu_device) | 1159 | if (dev->device_info->needs_iommu_device) |
1155 | return false; | 1160 | return false; |
1156 | 1161 | ||
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_crat.c b/drivers/gpu/drm/amd/amdkfd/kfd_crat.c index d85112224f1d..4f126ef6139b 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_crat.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_crat.c | |||
@@ -1117,6 +1117,9 @@ static int kfd_create_vcrat_image_gpu(void *pcrat_image, | |||
1117 | sub_type_hdr = (typeof(sub_type_hdr))((char *)sub_type_hdr + | 1117 | sub_type_hdr = (typeof(sub_type_hdr))((char *)sub_type_hdr + |
1118 | sub_type_hdr->length); | 1118 | sub_type_hdr->length); |
1119 | 1119 | ||
1120 | if (debug_largebar) | ||
1121 | local_mem_info.local_mem_size_private = 0; | ||
1122 | |||
1120 | if (local_mem_info.local_mem_size_private == 0) | 1123 | if (local_mem_info.local_mem_size_private == 0) |
1121 | ret = kfd_fill_gpu_memory_affinity(&avail_size, | 1124 | ret = kfd_fill_gpu_memory_affinity(&avail_size, |
1122 | kdev, HSA_MEM_HEAP_TYPE_FB_PUBLIC, | 1125 | kdev, HSA_MEM_HEAP_TYPE_FB_PUBLIC, |
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_module.c b/drivers/gpu/drm/amd/amdkfd/kfd_module.c index 65574c6a10b3..b0acb0603883 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_module.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_module.c | |||
@@ -71,6 +71,11 @@ module_param(send_sigterm, int, 0444); | |||
71 | MODULE_PARM_DESC(send_sigterm, | 71 | MODULE_PARM_DESC(send_sigterm, |
72 | "Send sigterm to HSA process on unhandled exception (0 = disable, 1 = enable)"); | 72 | "Send sigterm to HSA process on unhandled exception (0 = disable, 1 = enable)"); |
73 | 73 | ||
74 | int debug_largebar; | ||
75 | module_param(debug_largebar, int, 0444); | ||
76 | MODULE_PARM_DESC(debug_largebar, | ||
77 | "Debug large-bar flag used to simulate large-bar capability on non-large bar machine (0 = disable, 1 = enable)"); | ||
78 | |||
74 | int ignore_crat; | 79 | int ignore_crat; |
75 | module_param(ignore_crat, int, 0444); | 80 | module_param(ignore_crat, int, 0444); |
76 | MODULE_PARM_DESC(ignore_crat, | 81 | MODULE_PARM_DESC(ignore_crat, |
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h index aa9386356587..db27f9f13696 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h +++ b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h | |||
@@ -105,6 +105,12 @@ extern int cwsr_enable; | |||
105 | extern int send_sigterm; | 105 | extern int send_sigterm; |
106 | 106 | ||
107 | /* | 107 | /* |
108 | * This kernel module is used to simulate large bar machine on non-large bar | ||
109 | * enabled machines. | ||
110 | */ | ||
111 | extern int debug_largebar; | ||
112 | |||
113 | /* | ||
108 | * Ignore CRAT table during KFD initialization, can be used to work around | 114 | * Ignore CRAT table during KFD initialization, can be used to work around |
109 | * broken CRAT tables on some AMD systems | 115 | * broken CRAT tables on some AMD systems |
110 | */ | 116 | */ |