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>
This commit is contained in:
parent
0fc8011f89
commit
374200b154
|
@ -1151,6 +1151,11 @@ bool kfd_dev_is_large_bar(struct kfd_dev *dev)
|
||||||
{
|
{
|
||||||
struct kfd_local_mem_info mem_info;
|
struct kfd_local_mem_info mem_info;
|
||||||
|
|
||||||
|
if (debug_largebar) {
|
||||||
|
pr_debug("Simulate large-bar allocation on non large-bar machine\n");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
if (dev->device_info->needs_iommu_device)
|
if (dev->device_info->needs_iommu_device)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
|
|
@ -1117,6 +1117,9 @@ static int kfd_create_vcrat_image_gpu(void *pcrat_image,
|
||||||
sub_type_hdr = (typeof(sub_type_hdr))((char *)sub_type_hdr +
|
sub_type_hdr = (typeof(sub_type_hdr))((char *)sub_type_hdr +
|
||||||
sub_type_hdr->length);
|
sub_type_hdr->length);
|
||||||
|
|
||||||
|
if (debug_largebar)
|
||||||
|
local_mem_info.local_mem_size_private = 0;
|
||||||
|
|
||||||
if (local_mem_info.local_mem_size_private == 0)
|
if (local_mem_info.local_mem_size_private == 0)
|
||||||
ret = kfd_fill_gpu_memory_affinity(&avail_size,
|
ret = kfd_fill_gpu_memory_affinity(&avail_size,
|
||||||
kdev, HSA_MEM_HEAP_TYPE_FB_PUBLIC,
|
kdev, HSA_MEM_HEAP_TYPE_FB_PUBLIC,
|
||||||
|
|
|
@ -71,6 +71,11 @@ module_param(send_sigterm, int, 0444);
|
||||||
MODULE_PARM_DESC(send_sigterm,
|
MODULE_PARM_DESC(send_sigterm,
|
||||||
"Send sigterm to HSA process on unhandled exception (0 = disable, 1 = enable)");
|
"Send sigterm to HSA process on unhandled exception (0 = disable, 1 = enable)");
|
||||||
|
|
||||||
|
int debug_largebar;
|
||||||
|
module_param(debug_largebar, int, 0444);
|
||||||
|
MODULE_PARM_DESC(debug_largebar,
|
||||||
|
"Debug large-bar flag used to simulate large-bar capability on non-large bar machine (0 = disable, 1 = enable)");
|
||||||
|
|
||||||
int ignore_crat;
|
int ignore_crat;
|
||||||
module_param(ignore_crat, int, 0444);
|
module_param(ignore_crat, int, 0444);
|
||||||
MODULE_PARM_DESC(ignore_crat,
|
MODULE_PARM_DESC(ignore_crat,
|
||||||
|
|
|
@ -104,6 +104,12 @@ extern int cwsr_enable;
|
||||||
*/
|
*/
|
||||||
extern int send_sigterm;
|
extern int send_sigterm;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This kernel module is used to simulate large bar machine on non-large bar
|
||||||
|
* enabled machines.
|
||||||
|
*/
|
||||||
|
extern int debug_largebar;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Ignore CRAT table during KFD initialization, can be used to work around
|
* Ignore CRAT table during KFD initialization, can be used to work around
|
||||||
* broken CRAT tables on some AMD systems
|
* broken CRAT tables on some AMD systems
|
||||||
|
|
Loading…
Reference in New Issue