If a protection violation error is detected, the following signals are generated:
- An in-band error (SRESP = ERROR) is generated to the master NIU of the access.
- An out-band error is sent to the control module
- An interrupt is generated to the Cortex-A15 INTC.
The L3_MAIN interconnect does not differentiate errors generated by firewalls from all other supported types of errors.
An in-band error is generated by modules each time an access is not allowed. When an in-band error is sent back into the transaction it is seen as an external prefetch or data abort by the initiator, depending on whether the transaction was an instruction fetch or a data access.
Information about in-band errors is logged into two registers:
- ERROR_LOG_k: Logs the information about the start/end address of the hit region and the qualifiers of the transaction
- LOGICAL_PHYSICAL_ADDRESS_ERRLOG_k[31:12]: Logs the address of the failed access
Note: When a multiport firewall is implemented, these registers are duplicated for each port.
Table 14-20 lists the L3_MAIN firewall error-logging registers.
Table 14-20 L3 Firewall Error-Logging RegistersRegister Name | Register Field Name | Field Modifiability | Parameter Comments |
---|
ERROR_LOG_k (When multiport firewall is implemented the error log register is duplicated for each port.) | RESERVED[31:24] | Read only | Reads return 0s. |
BLK_BURST_VIOLATION[23] | Read/write | Read 0x1: 2D burst not allowed or exceeds allowed size. Write to clear the ERROR_LOG and LOGICAL_PHYSICAL_ADDRESS_ERRLOG registers. |
RESERVED[22] | Read only | Read return 0s. |
REGION_START_ERRLOG[21:17] | Read/write | Read: Wrong access hit this region number. Write to clear the ERROR_LOG and LOGICAL_PHYSICAL_ADDRESS_ERRLOG registers. |
REGION_END_ERRLOG[16:12] | Read/write | Read: Wrong access hit this region number. Write to clear the ERROR_LOG and LOGICAL_PHYSICAL_ADDRESS_ERRLOG registers. |
REQINFO_ERRLOG[11:0] | Read/write | Mapping of the error according to the reqinfo vector: ConnID [3:0] MCMD [0] [6:4] MReqDomain(1) [3] MReqDebug [1] MReqSupervisor [0] MReqType
|
(1) MreqDomain is supported only on SR2.1.
L3 firewall errors can be cleared by writing to the ERROR_LOG_k register in the firewall that recorded the error. Clearing the ERROR_LOG_k register deasserts the corresponding error if it exists.
The L3 firewall register ERROR_LOG_k must be cleared before clearing the SEC_ERR_STATUS_FUNC_1/2 and SEC_ERR_STATUS_DEBUG_1/2 registers in the control module.
When a protection violation occurs, an interrupt is sent to the IRQ_CROSSBAR. An in-band error is sent back, and an error is logged in the SEC_ERR_STATUS_FUNC_1/2 and SEC_ERR_STATUS_DEBUG_1/2 registers, depending on the functional mode:
- In application mode:
- SEC_ERR_STATUS_FUNC_1[1] – L3 RAM protection violation
- SEC_ERR_STATUS_FUNC_1[2] – GPMC protection violation
- SEC_ERR_STATUS_FUNC_1[3] – EMIF protection violation
- SEC_ERR_STATUS_FUNC_1[4] – IVA protection violation
- SEC_ERR_STATUS_FUNC_1[5] – IPU protection violation
- SEC_ERR_STATUS_FUNC_1[6] – IVA SL2 protection violation
- SEC_ERR_STATUS_FUNC_1[8] – SYSTEM DMA protection violation
- SEC_ERR_STATUS_FUNC_1[10] – DSPDMA slave NIU protection violation
- SEC_ERR_STATUS_FUNC_1[13] – GPU protection violation
- SEC_ERR_STATUS_FUNC_1[14] – DSS protection violation
- SEC_ERR_STATUS_FUNC_1[16] – L4_PER1 protection violation
- SEC_ERR_STATUS_FUNC_1[17] – L4_CFG protection violation
- SEC_ERR_STATUS_FUNC_1[18] – DEBUG subsystem protection violation
- SEC_ERR_STATUS_FUNC_1[22] – L4_WKUP protection violation
- SEC_ERR_STATUS_FUNC_1[23] - BB2D protection violation
- SEC_ERR_STATUS_FUNC_1[26] – CT_TBR protection violation
- SEC_ERR_STATUS_FUNC_2[0] – DSP1 protection violation
- SEC_ERR_STATUS_FUNC_2[4] – L4_PER2 protection violation
- SEC_ERR_STATUS_FUNC_2[5] – L4_PER3 protection violation
- SEC_ERR_STATUS_FUNC_2[6] - IPU2 protection violation
- SEC_ERR_STATUS_FUNC_2[7] – PCIESS1 protection violation
- SEC_ERR_STATUS_FUNC_2[8] - PCIESS2 protection violation
- SEC_ERR_STATUS_FUNC_2[16] – EDMA_TPTC1 protection violation
- SEC_ERR_STATUS_FUNC_2[17] – EDMA_TPCC protection violation
- SEC_ERR_STATUS_FUNC_2[20] – PRU-ICSS1 protection violation
- SEC_ERR_STATUS_FUNC_2[21] - PRU-ICSS2 protection violation
- SEC_ERR_STATUS_FUNC_2[22] – QSPI protection violation
- SEC_ERR_STATUS_FUNC_2[23] – EDMA_TPTC2 protection violation
- In debug mode:
- SEC_ERR_STATUS_DEBUG_1[1] – L3 RAM protection violation
- SEC_ERR_STATUS_DEBUG_1[2] – GPMC protection violation
- SEC_ERR_STATUS_DEBUG_1[3] – EMIF protection violation
- SEC_ERR_STATUS_DEBUG_1[4] – IVA protection violation
- SEC_ERR_STATUS_DEBUG_1[5] – IPU protection violation
- SEC_ERR_STATUS_DEBUG_1[6] – IVA SL2 protection violation
- SEC_ERR_STATUS_DEBUG_1[8] - SYSTEM DMA protection violation
- SEC_ERR_STATUS_DEBUG_1[10] – DSPDMA slave NIU protection violation
- SEC_ERR_STATUS_DEBUG_1[13] – GPU protection violation
- SEC_ERR_STATUS_DEBUG_1[14] – DSS protection violation
- SEC_ERR_STATUS_DEBUG_1[16] – L4_PER1 protection violation
- SEC_ERR_STATUS_DEBUG_1[17] – L4_CFG protection violation
- SEC_ERR_STATUS_DEBUG_1[18] – DEBUG subsystem protection violation
- SEC_ERR_STATUS_DEBUG_1[22] – L4_WKUP protection violation
- SEC_ERR_STATUS_DEBUG_1[23] - BB2D protection violation
- SEC_ERR_STATUS_DEBUG_1[26] – CT_TBR protection violation
- SEC_ERR_STATUS_DEBUG_2[0] – DSP1 protection violation
- SEC_ERR_STATUS_DEBUG_2[4] – L4_PER2 protection violation
- SEC_ERR_STATUS_DEBUG_2[5] – L4_PER3 protection violation
- SEC_ERR_STATUS_DEBUG_2[6] - IPU2 protection violation
- SEC_ERR_STATUS_DEBUG_2[7] – PCIESS1 protection violation
- SEC_ERR_STATUS_DEBUG_2[8] - PCIESS2 protection violation
- SEC_ERR_STATUS_DEBUG_2[16] – EDMA_TPTC1 protection violation
- SEC_ERR_STATUS_DEBUG_2[17] – EDMA_TPCC protection violation
- SEC_ERR_STATUS_DEBUG_2[20] – PRU-ICSS1 protection violation
- SEC_ERR_STATUS_DEBUG_2[21] - PRU-ICSS2 protection violation
- SEC_ERR_STATUS_DEBUG_2[22] – QSPI protection violation
- SEC_ERR_STATUS_DEBUG_2[23] – EDMA_TPTC2 protection violation
For more information, see Chapter 18, Control Module.