diff options
| author | Potharaju Ravi Teja <pteja@nvidia.com> | 2019-10-24 03:25:13 -0400 |
|---|---|---|
| committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2020-01-24 02:42:16 -0500 |
| commit | 17dd85a1cc1d3c97e3db3d92ccfb9db50602e410 (patch) | |
| tree | 48d8d0a79927015d6067645de450ff66fa71f8b4 /include/linux/errinfo.h | |
| parent | 7544f678853edea145beff4fb0971fe343ce854e (diff) | |
inject-vm-err: T19x MC error handler
- Add support to handle Memory Controller errors on
on t19x.
- This change adds a sample handler for MC errors.
It is a minimal handler that just dumps error
information to the console. This can be used as
a reference to implement an elaborate error
handler.
Bug 2580803
Change-Id: Ib86b925125650b4812fdbee5310455ae95ccd83c
(cherry picked from commit 6c8395d11872f79ab5819a9900cb40b8f946852e)
Signed-off-by: Potharaju Ravi Teja <pteja@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2279875
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'include/linux/errinfo.h')
| -rw-r--r-- | include/linux/errinfo.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/include/linux/errinfo.h b/include/linux/errinfo.h index e75c2b308..074208918 100644 --- a/include/linux/errinfo.h +++ b/include/linux/errinfo.h | |||
| @@ -18,6 +18,7 @@ enum err_reason { | |||
| 18 | REASON_ASYNC_SMMU_GLOBAL, | 18 | REASON_ASYNC_SMMU_GLOBAL, |
| 19 | REASON_ASYNC_BRIDGE, | 19 | REASON_ASYNC_BRIDGE, |
| 20 | REASON_ASYNC_MC, | 20 | REASON_ASYNC_MC, |
| 21 | REASON_ASYNC_MC_T19X, | ||
| 21 | REASON_ASYNC_CBB, | 22 | REASON_ASYNC_CBB, |
| 22 | REASON_SYNC_INSTR_ABORT, | 23 | REASON_SYNC_INSTR_ABORT, |
| 23 | REASON_SYNC_DATA_ABORT, | 24 | REASON_SYNC_DATA_ABORT, |
| @@ -105,6 +106,23 @@ struct __attribute__((__packed__)) async_mc_err_t { | |||
| 105 | int32_t peripheral_id; | 106 | int32_t peripheral_id; |
| 106 | }; | 107 | }; |
| 107 | 108 | ||
| 109 | struct __attribute__((__packed__)) async_mc_err_t19x_t { | ||
| 110 | bool vpr_violation; | ||
| 111 | unsigned int vpr_base[2]; | ||
| 112 | unsigned int vpr_size; | ||
| 113 | unsigned int vpr_ctrl; | ||
| 114 | unsigned int vpr_override[4]; | ||
| 115 | bool no_status; | ||
| 116 | bool two_status; | ||
| 117 | int client_swgid; | ||
| 118 | char client_name[NAME_SIZE]; | ||
| 119 | char fault_msg[NAME_SIZE]; | ||
| 120 | unsigned int status; | ||
| 121 | uint64_t address; | ||
| 122 | unsigned int secure; | ||
| 123 | unsigned int write; | ||
| 124 | }; | ||
| 125 | |||
| 108 | struct __attribute__((__packed__)) sync_data_abort_t { | 126 | struct __attribute__((__packed__)) sync_data_abort_t { |
| 109 | bool is_filled; /* metadata field per vcpu */ | 127 | bool is_filled; /* metadata field per vcpu */ |
| 110 | bool is_write; | 128 | bool is_write; |
| @@ -127,6 +145,7 @@ struct __attribute__((__packed__)) err_data_t { | |||
| 127 | struct async_smmu_err_t async_smmu_err; | 145 | struct async_smmu_err_t async_smmu_err; |
| 128 | struct async_mc_err_t async_mc_err; | 146 | struct async_mc_err_t async_mc_err; |
| 129 | struct async_cbb_err_t async_cbb_err; | 147 | struct async_cbb_err_t async_cbb_err; |
| 148 | struct async_mc_err_t19x_t async_mc_err_t19x; | ||
| 130 | /* Synchronous */ | 149 | /* Synchronous */ |
| 131 | struct sync_data_abort_t sync_data_abort; | 150 | struct sync_data_abort_t sync_data_abort; |
| 132 | }; | 151 | }; |
