summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/os/linux/ioctl_ctrl.c
diff options
context:
space:
mode:
authorVinod G <vinodg@nvidia.com>2018-08-08 02:09:30 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2018-08-25 05:10:43 -0400
commitbfe65407bde2b5d0776724301e215c6553c989f3 (patch)
treef68a01361052afe1c30a0c6dcd5d359b762e647a /drivers/gpu/nvgpu/os/linux/ioctl_ctrl.c
parent3bd47da0954d3486d9ccd3c396f84445918f82b4 (diff)
gpu: nvgpu: Read sm error ioctl support for tsg
Add READ_SM_ERROR IOCTL support to TSG level. Moved the struct to save the sm_error details from gr to tsg as the sm_error support is context based, not global. Also corrected MISRA 21.1 error in header file. nvgpu_dbg_gpu_ioctl_write_single_sm_error_state and nvgpu_dbg_gpu_ioctl_read_single_sm_error_state functions are modified to use the tsg struct nvgpu_tsg_sm_error_state. Bug 200412642 Change-Id: I9e334b059078a4bb0e360b945444cc4bf1cc56ec Signed-off-by: Vinod G <vinodg@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1794856 Reviewed-by: svc-misra-checker <svc-misra-checker@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/os/linux/ioctl_ctrl.c')
-rw-r--r--drivers/gpu/nvgpu/os/linux/ioctl_ctrl.c55
1 files changed, 0 insertions, 55 deletions
diff --git a/drivers/gpu/nvgpu/os/linux/ioctl_ctrl.c b/drivers/gpu/nvgpu/os/linux/ioctl_ctrl.c
index fc1f7011..2f013029 100644
--- a/drivers/gpu/nvgpu/os/linux/ioctl_ctrl.c
+++ b/drivers/gpu/nvgpu/os/linux/ioctl_ctrl.c
@@ -1567,56 +1567,6 @@ out:
1567 return err; 1567 return err;
1568} 1568}
1569 1569
1570static int nvgpu_gpu_read_single_sm_error_state(struct gk20a *g,
1571 struct nvgpu_gpu_read_single_sm_error_state_args *args)
1572{
1573 struct gr_gk20a *gr = &g->gr;
1574 struct nvgpu_gr_sm_error_state *sm_error_state;
1575 struct nvgpu_gpu_sm_error_state_record sm_error_state_record;
1576 u32 sm_id;
1577 int err = 0;
1578
1579 sm_id = args->sm_id;
1580 if (sm_id >= gr->no_of_sm)
1581 return -EINVAL;
1582
1583 nvgpu_speculation_barrier();
1584
1585 sm_error_state = gr->sm_error_states + sm_id;
1586 sm_error_state_record.global_esr =
1587 sm_error_state->hww_global_esr;
1588 sm_error_state_record.warp_esr =
1589 sm_error_state->hww_warp_esr;
1590 sm_error_state_record.warp_esr_pc =
1591 sm_error_state->hww_warp_esr_pc;
1592 sm_error_state_record.global_esr_report_mask =
1593 sm_error_state->hww_global_esr_report_mask;
1594 sm_error_state_record.warp_esr_report_mask =
1595 sm_error_state->hww_warp_esr_report_mask;
1596
1597 if (args->record_size > 0) {
1598 size_t write_size = sizeof(*sm_error_state);
1599
1600 if (write_size > args->record_size)
1601 write_size = args->record_size;
1602
1603 nvgpu_mutex_acquire(&g->dbg_sessions_lock);
1604 err = copy_to_user((void __user *)(uintptr_t)
1605 args->record_mem,
1606 &sm_error_state_record,
1607 write_size);
1608 nvgpu_mutex_release(&g->dbg_sessions_lock);
1609 if (err) {
1610 nvgpu_err(g, "copy_to_user failed!");
1611 return err;
1612 }
1613
1614 args->record_size = write_size;
1615 }
1616
1617 return 0;
1618}
1619
1620long gk20a_ctrl_dev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) 1570long gk20a_ctrl_dev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
1621{ 1571{
1622 struct gk20a_ctrl_priv *priv = filp->private_data; 1572 struct gk20a_ctrl_priv *priv = filp->private_data;
@@ -1925,11 +1875,6 @@ long gk20a_ctrl_dev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg
1925 (struct nvgpu_gpu_set_deterministic_opts_args *)buf); 1875 (struct nvgpu_gpu_set_deterministic_opts_args *)buf);
1926 break; 1876 break;
1927 1877
1928 case NVGPU_GPU_IOCTL_READ_SINGLE_SM_ERROR_STATE:
1929 err = nvgpu_gpu_read_single_sm_error_state(g,
1930 (struct nvgpu_gpu_read_single_sm_error_state_args *)buf);
1931 break;
1932
1933 default: 1878 default:
1934 nvgpu_log_info(g, "unrecognized gpu ioctl cmd: 0x%x", cmd); 1879 nvgpu_log_info(g, "unrecognized gpu ioctl cmd: 0x%x", cmd);
1935 err = -ENOTTY; 1880 err = -ENOTTY;