aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Kuehling <Felix.Kuehling@amd.com>2018-03-15 17:27:53 -0400
committerOded Gabbay <oded.gabbay@gmail.com>2018-03-15 17:27:53 -0400
commit374200b154ae48e8f011fb74dab21f80459f9e47 (patch)
treed801c957febe2b211b23486e26d139d636535034
parent0fc8011f89feb8b2c3008583b777d097e1974660 (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.c5
-rw-r--r--drivers/gpu/drm/amd/amdkfd/kfd_crat.c3
-rw-r--r--drivers/gpu/drm/amd/amdkfd/kfd_module.c5
-rw-r--r--drivers/gpu/drm/amd/amdkfd/kfd_priv.h6
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);
71MODULE_PARM_DESC(send_sigterm, 71MODULE_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
74int debug_largebar;
75module_param(debug_largebar, int, 0444);
76MODULE_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
74int ignore_crat; 79int ignore_crat;
75module_param(ignore_crat, int, 0444); 80module_param(ignore_crat, int, 0444);
76MODULE_PARM_DESC(ignore_crat, 81MODULE_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;
105extern int send_sigterm; 105extern 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 */
111extern 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 */