You can distinguish faults from interrupts here.
Uncorrectable errors that are synchronous can be handled with faults. Sometimes they can't be attributed to any particular instruction ( e.g. some line missed in the cache, so another line was evicted. Since the evicted line address has no connection with the instruction that cache missed, it's effectively asynchronous and uses interrupts) (NMI most likely) .
A well designed system doesn't need to trap, but should log the error somehow, possibly just incrementing an error counter. If that counter overflows, you may want to interrupt- later- and at that point the handler can poll all the counters and error cause logs to find out why.
> On Aug 6, 2018, at 1:26 PM, Andrew Waterman <
and...@sifive.com> wrote:
>
>> On Mon, Aug 6, 2018 at 1:13 PM, Michael Clark <
michae...@mac.com> wrote:
>>
>>
>>> On 7/08/2018, at 3:25 AM, Rishiyur Nikhil <
nik...@bluespec.com> wrote:
>>>
>>> I could be mistaken, but I believe "access faults" are generated by
>>> address decoding circuitry to detect accesses to non-existent spans of
>>> memory.
>>
>> Or, more generally, any issue in the "bus".
>> Examples: parity/ECC errors, physical memory protection errors, timeouts, ..
>>
>>
>> Would it be beneficial to distinguish the cause codes? e.g. a timeout could
>> be retried.
>
> This is perhaps better handled by a higher-level mechanism, e.g.,
> software responds to the access exception by querying the bus
> controller about what actually went wrong, then retries the access if
> appropriate.
>
>>
>> The current common case where one would want compatibility is “address not
>> mapped”. Also for PMP, one would not want a lower privilege level to
>> distinguish a PMP access fault from an “address not mapped” fault.
>>
>> However the question is would having more detail for the fault e.g. timeout,
>> corruption (ECC/parity) or any other cause values, be useful for the OS? I
>> think so. The OS function/remediation for faults, to some degree is limited
> To unsubscribe from this group and stop receiving emails from it, send an email to