[PATCH v5 07/15] iommu/arm-smmu-v3: Submit CMDQ_OP_PRI_RESP for IOPF event

Jason Gunthorpe jgg at nvidia.com
Wed Sep 23 11:37:05 PDT 2026


> [ ... 66 lines skipped ... ]
> +	/* IOPF is gated to num_streams == 1 in arm_smmu_enable_iopf() */
> +	sid = master->streams[0].id;
> +
> +	if (master->stall_enabled) {
> +		u8 resume_resp;
> +
> +		switch (resp->code) {
> +		case IOMMU_PAGE_RESP_INVALID:
> +		case IOMMU_PAGE_RESP_FAILURE:
> +			resume_resp = CMDQ_RESUME_0_RESP_ABORT;
> +			break;
> +		case IOMMU_PAGE_RESP_SUCCESS:
> +			resume_resp = CMDQ_RESUME_0_RESP_RETRY;
> +			break;
> +		default:
> +			resume_resp = CMDQ_RESUME_0_RESP_TERM;
> +			break;
> +		}
> +		cmd = arm_smmu_make_cmd_resume(sid, resp->grpid, resume_resp);
 [Severity: Medium]
 This is a pre-existing issue, but does hardcoding the SID to streams[0].id
 cause the wrong stream to be resumed on multi-SID devices?

This seems right. Stall mode should encode the SID in the iopf_fault
event, maybe in the private data and recover it here.

> [ ... 20 lines skipped ... ]
> +		default:
> +			WARN_ON(true);
> +			return;
> +		}
> +		ssv = !!(prm->flags & IOMMU_FAULT_PAGE_REQUEST_PASID_VALID);

No need for !! when asigning or casting through a bool type. Compiler
does it automatically.

Reviewed-by: Jason Gunthorpe <jgg at nvidia.com>

-- 
Jason



More information about the linux-arm-kernel mailing list