msm: kgsl: Do not overwrite dispatcher fault

Do not overwrite the fault in dispatcher but add
the fault type and let the fault handler decide how
to deal in multiple faults. And after fault handling
there is a possibility that the fault bit will still
be set if the fault timer fires when fault handler
is running. Ignore that fault by clearing fault bit
after reset in fault handler.

Change-Id: I7b240fb55378cb30092a93adf7feca20eaca7568
Signed-off-by: Shubhraprakash Das <sadas@codeaurora.org>
Signed-off-by: Carter Cooper <ccooper@codeaurora.org>
msm: kgsl: On IOMMU fault force a hard reset

On IOMMU fault it's more stable to reset the IOMMU
unit along with GPU.

Change-Id: I569e3e6fd13d75f3c5401ed0c48220de02618fd6
Signed-off-by: Shubhraprakash Das <sadas@codeaurora.org>
Signed-off-by: Carter Cooper <ccooper@codeaurora.org>
msm: kgsl: Define new fault type for IOMMU fault

When IOMMU fault happens then set a fault bit defined
for it to handle it as a soft fault case instead of a hard
fault. This is required because a different fault can trigger
due to a page fault since we stall the gpu. If that happens the
other fault handler will run and handle the fault after which
we may end up in fault handler again trying to handle a false
IOMMU fault this time around. Since, its a false fault now we do
not want the command to be skipped which a hard fault enforces
and if we are in a true IOMMU fault then the command will be
skipped anyway since we check of a pagefault specifically in
the context.

Change-Id: Ib8e02190aeee911f9ce892b683e756528e5f8865
Signed-off-by: Shubhraprakash Das <sadas@codeaurora.org>
Signed-off-by: Carter Cooper <ccooper@codeaurora.org>

Conflicts:

	drivers/gpu/msm/kgsl_iommu.c