diff options
Diffstat (limited to 'meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0125-drm-amdkfd-Add-module-parameter-of-send_sigterm.patch')
-rw-r--r-- | meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0125-drm-amdkfd-Add-module-parameter-of-send_sigterm.patch | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0125-drm-amdkfd-Add-module-parameter-of-send_sigterm.patch b/meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0125-drm-amdkfd-Add-module-parameter-of-send_sigterm.patch new file mode 100644 index 00000000..dc8a088f --- /dev/null +++ b/meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0125-drm-amdkfd-Add-module-parameter-of-send_sigterm.patch @@ -0,0 +1,89 @@ +From 81663016dbfd53e29d1b5c5ddbc9b12ae1d66474 Mon Sep 17 00:00:00 2001 +From: Oded Gabbay <oded.gabbay@gmail.com> +Date: Wed, 24 Dec 2014 13:30:52 +0200 +Subject: [PATCH 0125/1050] drm/amdkfd: Add module parameter of send_sigterm + +This patch adds a new kernel module parameter to amdkfd, +called send_sigterm. + +This parameter specifies whether amdkfd should send the +SIGTERM signal to an HSA process, when the following conditions +occur: + +1. The GPU triggers an exception regarding a kernel that was + issued by this process. + +2. The HSA process isn't waiting on an event that handles + this exception. + +The default behavior is not to send a SIGTERM and suffice +with a dmesg error print. + +Reviewed-by: Ben Goz <ben.goz@amd.com> +Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com> +--- + drivers/gpu/drm/amd/amdkfd/kfd_events.c | 12 +++++++++--- + drivers/gpu/drm/amd/amdkfd/kfd_module.c | 5 +++++ + drivers/gpu/drm/amd/amdkfd/kfd_priv.h | 6 ++++++ + 3 files changed, 20 insertions(+), 3 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_events.c b/drivers/gpu/drm/amd/amdkfd/kfd_events.c +index 5c3a81e..3cb37d2 100644 +--- a/drivers/gpu/drm/amd/amdkfd/kfd_events.c ++++ b/drivers/gpu/drm/amd/amdkfd/kfd_events.c +@@ -872,10 +872,16 @@ static void lookup_events_by_type_and_signal(struct kfd_process *p, + + /* Send SIGTERM no event of type "type" has been found*/ + if (send_signal) { +- dev_warn(kfd_device, +- "Sending SIGTERM to HSA Process with PID %d ", ++ if (send_sigterm) { ++ dev_warn(kfd_device, ++ "Sending SIGTERM to HSA Process with PID %d ", ++ p->lead_thread->pid); ++ send_sig(SIGTERM, p->lead_thread, 0); ++ } else { ++ dev_err(kfd_device, ++ "HSA Process (PID %d) got unhandled exception", + p->lead_thread->pid); +- send_sig(SIGTERM, p->lead_thread, 0); ++ } + } + } + +diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_module.c b/drivers/gpu/drm/amd/amdkfd/kfd_module.c +index 4e0a68f..e4fc96e 100644 +--- a/drivers/gpu/drm/amd/amdkfd/kfd_module.c ++++ b/drivers/gpu/drm/amd/amdkfd/kfd_module.c +@@ -54,6 +54,11 @@ module_param(max_num_of_queues_per_device, int, 0444); + MODULE_PARM_DESC(max_num_of_queues_per_device, + "Maximum number of supported queues per device (1 = Minimum, 4096 = default)"); + ++int send_sigterm; ++module_param(send_sigterm, int, 0444); ++MODULE_PARM_DESC(send_sigterm, ++ "Send sigterm to HSA process on unhandled exception (0 = disable, 1 = enable)"); ++ + bool kgd2kfd_init(unsigned interface_version, const struct kgd2kfd_calls **g2f) + { + /* +diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h +index 9383494..b6f838f 100644 +--- a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h ++++ b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h +@@ -74,6 +74,12 @@ extern int max_num_of_queues_per_device; + /* Kernel module parameter to specify the scheduling policy */ + extern int sched_policy; + ++/* ++ * Kernel module parameter to specify whether to send sigterm to HSA process on ++ * unhandled exception ++ */ ++extern int send_sigterm; ++ + /** + * enum kfd_sched_policy + * +-- +1.9.1 + |