Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 16d3905b authored by Mitchel Humpherys's avatar Mitchel Humpherys
Browse files

iommu/iommu-debug: Do a software table walk if ATOS fails



It's hard to tell whether ATOS failed due to a misconfiguration in
hardware or software.  Add a software table walk to help narrow down the
reasons for the failure.  If the software walk succeeds then there's
something wrong in hardware.  If the software walk fails then there's
something wrong in software.

CRs-Fixed: 1014916
Change-Id: I49dd61856ad08e1890791b3e5c180350a5eaa648
Signed-off-by: default avatarMitchel Humpherys <mitchelh@codeaurora.org>
parent c7746cb5
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -882,10 +882,14 @@ static ssize_t iommu_debug_atos_read(struct file *file, char __user *ubuf,
	memset(buf, 0, 100);

	phys = iommu_iova_to_phys_hard(ddev->domain, ddev->iova);
	if (!phys)
	if (!phys) {
		strlcpy(buf, "FAIL\n", 100);
	else
		phys = iommu_iova_to_phys(ddev->domain, ddev->iova);
		dev_err(ddev->dev, "ATOS for %pa failed. Software walk returned: %pa\n",
			&ddev->iova, &phys);
	} else {
		snprintf(buf, 100, "%pa\n", &phys);
	}

	buflen = strlen(buf);
	if (copy_to_user(ubuf, buf, buflen)) {