ENUM RISCV_IOMMU_FQ_CAUSES(9)
π NAME π
enum riscv_iommu_fq_causes β so this is the Kernel API Manual entry for it, and bestie, it's literally the fault/event cause values π«Ά like every possible reason the RISC-V IOMMU can slide into your fault queue and be like "girl, something happened."
β¨ SYNOPSIS β¨
okay so here's the whole enum, exactly as it lives, no edits, no cap:
enum riscv_iommu_fq_causes {
RISCV_IOMMU_FQ_CAUSE_INST_FAULT ,
RISCV_IOMMU_FQ_CAUSE_RD_ADDR_MISALIGNED ,
RISCV_IOMMU_FQ_CAUSE_RD_FAULT ,
RISCV_IOMMU_FQ_CAUSE_WR_ADDR_MISALIGNED ,
RISCV_IOMMU_FQ_CAUSE_WR_FAULT ,
RISCV_IOMMU_FQ_CAUSE_INST_FAULT_S ,
RISCV_IOMMU_FQ_CAUSE_RD_FAULT_S ,
RISCV_IOMMU_FQ_CAUSE_WR_FAULT_S ,
RISCV_IOMMU_FQ_CAUSE_INST_FAULT_VS ,
RISCV_IOMMU_FQ_CAUSE_RD_FAULT_VS ,
RISCV_IOMMU_FQ_CAUSE_WR_FAULT_VS ,
RISCV_IOMMU_FQ_CAUSE_DMA_DISABLED ,
RISCV_IOMMU_FQ_CAUSE_DDT_LOAD_FAULT ,
RISCV_IOMMU_FQ_CAUSE_DDT_INVALID ,
RISCV_IOMMU_FQ_CAUSE_DDT_MISCONFIGURED ,
RISCV_IOMMU_FQ_CAUSE_TTYP_BLOCKED ,
RISCV_IOMMU_FQ_CAUSE_MSI_LOAD_FAULT ,
RISCV_IOMMU_FQ_CAUSE_MSI_INVALID ,
RISCV_IOMMU_FQ_CAUSE_MSI_MISCONFIGURED ,
RISCV_IOMMU_FQ_CAUSE_MRIF_FAULT ,
RISCV_IOMMU_FQ_CAUSE_PDT_LOAD_FAULT ,
RISCV_IOMMU_FQ_CAUSE_PDT_INVALID ,
RISCV_IOMMU_FQ_CAUSE_PDT_MISCONFIGURED ,
RISCV_IOMMU_FQ_CAUSE_DDT_CORRUPTED ,
RISCV_IOMMU_FQ_CAUSE_PDT_CORRUPTED ,
RISCV_IOMMU_FQ_CAUSE_MSI_PT_CORRUPTED ,
RISCV_IOMMU_FQ_CAUSE_MRIF_CORRUIPTED ,
RISCV_IOMMU_FQ_CAUSE_INTERNAL_DP_ERROR ,
RISCV_IOMMU_FQ_CAUSE_MSI_WR_FAULT ,
RISCV_IOMMU_FQ_CAUSE_PT_CORRUPTED
};
(yes RISCV_IOMMU_FQ_CAUSE_MRIF_CORRUIPTED is spelled like that in the source, I'm not fixing it, she's iconic and she stays π
)
π Constants π
thirty of them, one per vibe, let's go:
RISCV_IOMMU_FQ_CAUSE_INST_FAULTβ instruction access fault, oop πRISCV_IOMMU_FQ_CAUSE_RD_ADDR_MISALIGNEDβ read address misaligned, the address did NOT line up bestieRISCV_IOMMU_FQ_CAUSE_RD_FAULTβ read load faultRISCV_IOMMU_FQ_CAUSE_WR_ADDR_MISALIGNEDβ write/AMO address misalignedRISCV_IOMMU_FQ_CAUSE_WR_FAULTβ write/AMO access faultRISCV_IOMMU_FQ_CAUSE_INST_FAULT_Sβ instruction page faultRISCV_IOMMU_FQ_CAUSE_RD_FAULT_Sβ read page faultRISCV_IOMMU_FQ_CAUSE_WR_FAULT_Sβ write/AMO page faultRISCV_IOMMU_FQ_CAUSE_INST_FAULT_VSβ instruction guest page fault π§RISCV_IOMMU_FQ_CAUSE_RD_FAULT_VSβ read guest page faultRISCV_IOMMU_FQ_CAUSE_WR_FAULT_VSβ write/AMO guest page faultRISCV_IOMMU_FQ_CAUSE_DMA_DISABLEDβ all inbound transactions disallowed, straight up banned πRISCV_IOMMU_FQ_CAUSE_DDT_LOAD_FAULTβ DDT entry load access faultRISCV_IOMMU_FQ_CAUSE_DDT_INVALIDβ DDT entry invalidRISCV_IOMMU_FQ_CAUSE_DDT_MISCONFIGUREDβ DDT entry misconfigured, she was set up wrong πRISCV_IOMMU_FQ_CAUSE_TTYP_BLOCKEDβ transaction type disallowedRISCV_IOMMU_FQ_CAUSE_MSI_LOAD_FAULTβ MSI PTE load access faultRISCV_IOMMU_FQ_CAUSE_MSI_INVALIDβ MSI PTE invalidRISCV_IOMMU_FQ_CAUSE_MSI_MISCONFIGUREDβ MSI PTE misconfiguredRISCV_IOMMU_FQ_CAUSE_MRIF_FAULTβ MRIF access faultRISCV_IOMMU_FQ_CAUSE_PDT_LOAD_FAULTβ PDT entry load access faultRISCV_IOMMU_FQ_CAUSE_PDT_INVALIDβ PDT entry invalidRISCV_IOMMU_FQ_CAUSE_PDT_MISCONFIGUREDβ PDT entry misconfiguredRISCV_IOMMU_FQ_CAUSE_DDT_CORRUPTEDβ DDT data corruption π«RISCV_IOMMU_FQ_CAUSE_PDT_CORRUPTEDβ PDT data corruptionRISCV_IOMMU_FQ_CAUSE_MSI_PT_CORRUPTEDβ MSI page table data corruptionRISCV_IOMMU_FQ_CAUSE_MRIF_CORRUIPTEDβ MRIF data corruption (again: her spelling, not mine π )RISCV_IOMMU_FQ_CAUSE_INTERNAL_DP_ERRORβ internal data path error, the IOMMU is going through it internallyRISCV_IOMMU_FQ_CAUSE_MSI_WR_FAULTβ IOMMU MSI write access faultRISCV_IOMMU_FQ_CAUSE_PT_CORRUPTEDβ first/second stage page table data corruption
π¦ Description π¦
okay so the deets: these values are on table 11 of the spec. And the encoding ranges? Listen up because this is the iykyk part:
- encodings 275 - 2047 are reserved for standard use
- encodings 2048 - 4095 are reserved for custom use
don't go squatting in the wrong range, bestie, the spec will find out πΈ
π SEE ALSO π
kernel file ./drivers/iommu/riscv/iommu-bits.h enum, plus the whole friend group:
riscv_iommu_igs_settings(9), enum riscv_iommu_ddtp_modes(9), enum riscv_iommu_hpmevent_id(9), struct riscv_iommu_dc(9), enum riscv_iommu_dc_iohgatp_modes(9), enum riscv_iommu_dc_fsc_atp_modes(9), struct riscv_iommu_pc(9), struct riscv_iommu_command(9), struct riscv_iommu_fq_record(9), enum riscv_iommu_fq_ttypes(9), struct riscv_iommu_pq_record(9), struct riscv_iommu_msipte(9)
okay that's the whole page, go read the header file, ily π«Άβ¨
from./drivers/iommu/riscv, dated October 2026 βenum riscv_iommu_fq_causes(9), that's a wrap, periodt ππ
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms