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:
parent
1add8d5a71
commit
4a6f833be0
1 changed files with 6 additions and 2 deletions
|
@ -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)) {
|
||||
|
|
Loading…
Add table
Reference in a new issue