mirror of https://gitee.com/openkylin/linux.git
drm/amdkfd: Add kernel parameter to stop queue eviction on vm fault
This is to keep wavefront context for debug purpose Signed-off-by: Oak Zeng <Oak.Zeng@amd.com> Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
2f669734f3
commit
6d909c5da0
|
@ -751,6 +751,13 @@ bool no_system_mem_limit;
|
||||||
module_param(no_system_mem_limit, bool, 0644);
|
module_param(no_system_mem_limit, bool, 0644);
|
||||||
MODULE_PARM_DESC(no_system_mem_limit, "disable system memory limit (false = default)");
|
MODULE_PARM_DESC(no_system_mem_limit, "disable system memory limit (false = default)");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DOC: no_queue_eviction_on_vm_fault (int)
|
||||||
|
* If set, process queues will not be evicted on gpuvm fault. This is to keep the wavefront context for debugging (0 = queue eviction, 1 = no queue eviction). The default is 0 (queue eviction).
|
||||||
|
*/
|
||||||
|
int amdgpu_no_queue_eviction_on_vm_fault = 0;
|
||||||
|
MODULE_PARM_DESC(no_queue_eviction_on_vm_fault, "No queue eviction on VM fault (0 = queue eviction, 1 = no queue eviction)");
|
||||||
|
module_param_named(no_queue_eviction_on_vm_fault, amdgpu_no_queue_eviction_on_vm_fault, int, 0444);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -80,8 +80,9 @@ static bool cik_event_interrupt_isr(struct kfd_dev *dev,
|
||||||
ihre->source_id == CIK_INTSRC_SDMA_TRAP ||
|
ihre->source_id == CIK_INTSRC_SDMA_TRAP ||
|
||||||
ihre->source_id == CIK_INTSRC_SQ_INTERRUPT_MSG ||
|
ihre->source_id == CIK_INTSRC_SQ_INTERRUPT_MSG ||
|
||||||
ihre->source_id == CIK_INTSRC_CP_BAD_OPCODE ||
|
ihre->source_id == CIK_INTSRC_CP_BAD_OPCODE ||
|
||||||
ihre->source_id == CIK_INTSRC_GFX_PAGE_INV_FAULT ||
|
((ihre->source_id == CIK_INTSRC_GFX_PAGE_INV_FAULT ||
|
||||||
ihre->source_id == CIK_INTSRC_GFX_MEM_PROT_FAULT;
|
ihre->source_id == CIK_INTSRC_GFX_MEM_PROT_FAULT) &&
|
||||||
|
!amdgpu_no_queue_eviction_on_vm_fault);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void cik_event_interrupt_wq(struct kfd_dev *dev,
|
static void cik_event_interrupt_wq(struct kfd_dev *dev,
|
||||||
|
|
|
@ -98,9 +98,10 @@ static bool event_interrupt_isr_v9(struct kfd_dev *dev,
|
||||||
source_id == SOC15_INTSRC_SDMA_TRAP ||
|
source_id == SOC15_INTSRC_SDMA_TRAP ||
|
||||||
source_id == SOC15_INTSRC_SQ_INTERRUPT_MSG ||
|
source_id == SOC15_INTSRC_SQ_INTERRUPT_MSG ||
|
||||||
source_id == SOC15_INTSRC_CP_BAD_OPCODE ||
|
source_id == SOC15_INTSRC_CP_BAD_OPCODE ||
|
||||||
client_id == SOC15_IH_CLIENTID_VMC ||
|
((client_id == SOC15_IH_CLIENTID_VMC ||
|
||||||
client_id == SOC15_IH_CLIENTID_VMC1 ||
|
client_id == SOC15_IH_CLIENTID_VMC1 ||
|
||||||
client_id == SOC15_IH_CLIENTID_UTCL2;
|
client_id == SOC15_IH_CLIENTID_UTCL2) &&
|
||||||
|
!amdgpu_no_queue_eviction_on_vm_fault);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void event_interrupt_wq_v9(struct kfd_dev *dev,
|
static void event_interrupt_wq_v9(struct kfd_dev *dev,
|
||||||
|
|
|
@ -169,6 +169,11 @@ extern bool hws_gws_support;
|
||||||
/* Queue preemption timeout in ms */
|
/* Queue preemption timeout in ms */
|
||||||
extern int queue_preemption_timeout_ms;
|
extern int queue_preemption_timeout_ms;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Don't evict process queues on vm fault
|
||||||
|
*/
|
||||||
|
extern int amdgpu_no_queue_eviction_on_vm_fault;
|
||||||
|
|
||||||
/* Enable eviction debug messages */
|
/* Enable eviction debug messages */
|
||||||
extern bool debug_evictions;
|
extern bool debug_evictions;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue