mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-22 09:12:24 +03:00
gpu: nvgpu: uniform approach for both quiesce state exit and BUG()
- We are using exit() API to exit the process when gpu goes to quiesce state, but MISRA not allowing to use exit() API. JIRA NVGPU-7056 Signed-off-by: srajum <srajum@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2588005 (cherry picked from commit 219c172da5b6ae330121009765f7eb090b87e054) Change-Id: Id5b927693cc684931bd4aa56e66543b673d0c493 Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2674411 Tested-by: mobile promotions <svcmobile_promotions@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
committed by
mobile promotions
parent
ee670a0afd
commit
ad74b20cca
@@ -116,7 +116,7 @@ static int nvgpu_sw_quiesce_thread(void *data)
|
|||||||
|
|
||||||
nvgpu_disable_irqs(g);
|
nvgpu_disable_irqs(g);
|
||||||
nvgpu_channel_sw_quiesce(g);
|
nvgpu_channel_sw_quiesce(g);
|
||||||
nvgpu_bug_exit(1);
|
nvgpu_bug_exit();
|
||||||
|
|
||||||
done:
|
done:
|
||||||
nvgpu_log_info(g, "done");
|
nvgpu_log_info(g, "done");
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ nvgpu_bug_cb_from_node(struct nvgpu_list_node *node)
|
|||||||
};
|
};
|
||||||
|
|
||||||
#ifdef __KERNEL__
|
#ifdef __KERNEL__
|
||||||
static inline void nvgpu_bug_exit(int status) { }
|
static inline void nvgpu_bug_exit(void) { }
|
||||||
static inline void nvgpu_bug_register_cb(struct nvgpu_bug_cb *cb) { }
|
static inline void nvgpu_bug_register_cb(struct nvgpu_bug_cb *cb) { }
|
||||||
static inline void nvgpu_bug_unregister_cb(struct nvgpu_bug_cb *cb) { }
|
static inline void nvgpu_bug_unregister_cb(struct nvgpu_bug_cb *cb) { }
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -147,12 +147,10 @@ struct nvgpu_bug_cb;
|
|||||||
* @brief Exit current process
|
* @brief Exit current process
|
||||||
*
|
*
|
||||||
* This function is used during the handling of a bug to exit the calling
|
* This function is used during the handling of a bug to exit the calling
|
||||||
* program. Uses the library function #exit with \a status as parameter.
|
* program, a SIGSEGV is raised using library function #raise to terminate
|
||||||
* Function does not perform any validation of the parameter.
|
* the process.
|
||||||
*
|
|
||||||
* @param status [in] Exit status to be used for the program.
|
|
||||||
*/
|
*/
|
||||||
void nvgpu_bug_exit(int status);
|
void nvgpu_bug_exit(void);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Register callback to be invoked on BUG()
|
* @brief Register callback to be invoked on BUG()
|
||||||
|
|||||||
@@ -101,12 +101,18 @@ static void nvgpu_bug_init(void)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void nvgpu_bug_exit(int status)
|
void nvgpu_bug_exit(void)
|
||||||
{
|
{
|
||||||
(void)status;
|
|
||||||
#ifndef __NVGPU_UNIT_TEST__
|
#ifndef __NVGPU_UNIT_TEST__
|
||||||
|
int err;
|
||||||
nvgpu_err(NULL, "SW quiesce done. Exiting.");
|
nvgpu_err(NULL, "SW quiesce done. Exiting.");
|
||||||
exit(status);
|
while ((err = raise(SIGSEGV)) != 0) {
|
||||||
|
/*
|
||||||
|
* Make sure that SIGSEGV signal is raised.
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
pthread_exit(NULL);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user