riscv-non-isa/riscv-iommu

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

Closed this issue · 1 comments

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;
    }

Thanks. That was missed and updated in PR #339