Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MTT table entry with poison data #86

Closed
leBsky opened this issue Oct 2, 2024 · 4 comments
Closed

MTT table entry with poison data #86

leBsky opened this issue Oct 2, 2024 · 4 comments

Comments

@leBsky
Copy link

leBsky commented Oct 2, 2024

when smmtt or iomtt in use, it is possible that MTT table walk gets poisoned data, what exception should be raised in this case?

@leBsky leBsky changed the title Poison data MTT table entry with poison data Oct 2, 2024
@ved-rivos
Copy link
Collaborator

The hart would raise a hardware-error exception.

The IOMTT is expected to report the attempted poison consumption to the RAS subsystem and abort the DMA transaction. If the aborted transaction is a write then the IO bridge may discard the write; the details of how the write is discarded are implementation defined. If the IO protocol requires a response for write transactions (e.g., AXI) then a response as defined by the IO protocol may be generated by the IO bridge (e.g., SLVERR on BRESP - Write Response channel). For PCIe, for example, write transactions are posted and no response is returned when a write transaction is discarded. If the faulting transaction is a read then the device expects a completion. The IO bridge may provide a completion to the device. The data, if returned, in such completion is implementation defined; usually it is a fixed value such as all 0 or all 1. A status code may be returned to the device in the completion to indicate this condition. For AXI, for example, the completion status is provided by SLVERR on RRESP (Read Data channel). For PCIe, for example, the completion status field may be set to "Unsupported Request" (UR) or "Completer Abort" (CA).

@leBsky
Copy link
Author

leBsky commented Oct 3, 2024

The hart would raise a hardware-error exception.

The IOMTT is expected to report the attempted poison consumption to the RAS subsystem and abort the DMA transaction. If the aborted transaction is a write then the IO bridge may discard the write; the details of how the write is discarded are implementation defined. If the IO protocol requires a response for write transactions (e.g., AXI) then a response as defined by the IO protocol may be generated by the IO bridge (e.g., SLVERR on BRESP - Write Response channel). For PCIe, for example, write transactions are posted and no response is returned when a write transaction is discarded. If the faulting transaction is a read then the device expects a completion. The IO bridge may provide a completion to the device. The data, if returned, in such completion is implementation defined; usually it is a fixed value such as all 0 or all 1. A status code may be returned to the device in the completion to indicate this condition. For AXI, for example, the completion status is provided by SLVERR on RRESP (Read Data channel). For PCIe, for example, the completion status field may be set to "Unsupported Request" (UR) or "Completer Abort" (CA).

In latest spec chapter 4.2. The process of hart mtt table walk is listed and what exception should be reported are listed too(although poisoned data is not considered here). However, for iomtt, things are different for handling access fault or poisoned data or reserved bits, is it possible to add some descriptions to clarify these situations in spec?

@ved-rivos
Copy link
Collaborator

However, for iomtt, things are different for handling access fault or poisoned data or reserved bits, is it possible to add some descriptions to clarify these situations in spec?

See #87

@rsahita
Copy link
Collaborator

rsahita commented Oct 7, 2024

this PR #87 is now merged.

@rsahita rsahita closed this as completed Oct 7, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants