riscv-non-isa / riscv-iommu

RISC-V IOMMU Specification
https://jira.riscv.org/browse/RVG-55
Creative Commons Attribution 4.0 International
98 stars 17 forks source link

Why not add data corruption fault report to fault queue if ats translation is send ? #336

Closed baimengwei closed 6 months ago

baimengwei commented 6 months ago

https://github.com/riscv-non-isa/riscv-iommu/blob/main/iommu_hw_guidelines.adoc#reliability-availability-and-serviceability-ras

In the cases where the error affects the transaction being processed but otherwise allows the IOMMU to continue providing service, the IOMMU may abort (see Aborting transactions) the transaction and report the the fault by queuing a fault record in the FQ. For PCIe, for example, a "Completer Abort (CA)" response is appropriate to abort the transaction. The following cause codes are used to report such faulting transactions: DDT data corruption (cause = 268) PDT data corruption (cause = 269) MSI PT data corruption (cause = 270) MSI MRIF data corruption (cause = 271) Internal data-path error (cause = 272) First/second-stage PT data corruption (cause = 274)

Why not add data corruption fault at here ? https://github.com/riscv-non-isa/riscv-iommu/blob/main/iommu_ref_model/libiommu/src/iommu_translate.c#L501

    if ( (cause == 1) || (cause == 5) || (cause == 7) || (cause == 261) || 
         (cause == 263) || (cause == 265) || (cause == 267) ) {
        report_fault(cause, iotval, iotval2, TTYP, DTF,
                     req->device_id, req->pid_valid, req->process_id, req->priv_req);
        goto return_completer_abort;
    }
ved-rivos commented 6 months ago

Thanks. That was missed and updated in PR #339