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: Mitchel Humpherys <mitchelh@codeaurora.org>
This commit is contained in:
Mitchel Humpherys 2016-04-29 11:41:59 -07:00 committed by Gerrit - the friendly Code Review server
parent 1add8d5a71
commit 4a6f833be0

View file

@ -1667,10 +1667,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)) {