diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2014-02-13 02:17:45 -0800 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2014-02-13 02:17:40 -0800 |
commit | c31c51e967c13f36dcb6d1556cb6fd902c1a8dfa (patch) | |
tree | 3ff211a96a1d5fda2a362a24a48369208f233ac0 /drivers/iommu | |
parent | a22be1803635be8fa3a150729902be6481f14dea (diff) | |
parent | 854878cbfc5d97867b2c6f1e6cbd71528e1159ff (diff) |
Merge "iommu: msm: allow partial register dumps to be printed"
Diffstat (limited to 'drivers/iommu')
-rw-r--r-- | drivers/iommu/msm_iommu-v1.c | 6 | ||||
-rw-r--r-- | drivers/iommu/msm_iommu_sec.c | 8 |
2 files changed, 10 insertions, 4 deletions
diff --git a/drivers/iommu/msm_iommu-v1.c b/drivers/iommu/msm_iommu-v1.c index 367285c1d00b..ee7a1f251dc3 100644 --- a/drivers/iommu/msm_iommu-v1.c +++ b/drivers/iommu/msm_iommu-v1.c @@ -1143,6 +1143,7 @@ void print_ctx_regs(struct msm_iommu_context_reg regs[]) { uint32_t fsr = regs[DUMP_REG_FSR].val; u64 ttbr; + enum dump_reg iter; pr_err("FAR = %016llx\n", COMBINE_DUMP_REG( @@ -1186,6 +1187,11 @@ void print_ctx_regs(struct msm_iommu_context_reg regs[]) pr_err("CBAR = %08x CBFRSYNRA = %08x\n", regs[DUMP_REG_CBAR_N].val, regs[DUMP_REG_CBFRSYNRA_N].val); print_ctx_mem_attr_regs(regs); + + for (iter = DUMP_REG_FIRST; iter < MAX_DUMP_REGS; ++iter) + if (!regs[iter].valid) + pr_err("NOTE: Value actually unknown for %s\n", + dump_regs_tbl[iter].name); } static void __print_ctx_regs(void __iomem *base, int ctx, unsigned int fsr) diff --git a/drivers/iommu/msm_iommu_sec.c b/drivers/iommu/msm_iommu_sec.c index ee782d84f0cd..43144b1b8dba 100644 --- a/drivers/iommu/msm_iommu_sec.c +++ b/drivers/iommu/msm_iommu_sec.c @@ -217,7 +217,6 @@ static int msm_iommu_reg_dump_to_regs( if (i != nvals) { pr_err("Invalid dump! %d != %d\n", i, nvals); ret = 1; - goto out; } for (i = 0; i < MAX_DUMP_REGS; ++i) { @@ -231,11 +230,10 @@ static int msm_iommu_reg_dump_to_regs( dump_regs_tbl[i].reg_offset)); ret = 1; } - ctx_regs[i].val = 0; + ctx_regs[i].val = 0xd00dfeed; } } -out: return ret; } @@ -289,7 +287,9 @@ irqreturn_t msm_iommu_secure_fault_handler_v2(int irq, void *dev_id) memset(ctx_regs, 0, sizeof(ctx_regs)); tmp = msm_iommu_reg_dump_to_regs( ctx_regs, regs, drvdata, ctx_drvdata); - if (!tmp && ctx_regs[DUMP_REG_FSR].val) { + if (ctx_regs[DUMP_REG_FSR].val) { + if (tmp) + pr_err("Incomplete fault register dump. Printout will be incomplete.\n"); if (!ctx_drvdata->attached_domain) { pr_err("Bad domain in interrupt handler\n"); tmp = -ENOSYS; |