msm: kgsl: Allow a draw context to skip snapshot
Some test applications intentionally generate a GPU fault for various reasons. Because a GPU fault generates a snapshot and snapshots are persistent until they are pulled, running the test application may take up the snapshot slot and prevent a real fault from being captured and debugged. This flag allows the draw context to intentionally avoid generating a snapshot. CRs-Fixed: 1009190 Change-Id: Ic0dedbad8476c308a13572d999540b243d97eabc Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
This commit is contained in:
parent
e6814f052b
commit
091839e4c3
3 changed files with 25 additions and 13 deletions
|
@ -1699,6 +1699,27 @@ replay:
|
||||||
kfree(replay);
|
kfree(replay);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void do_header_and_snapshot(struct kgsl_device *device,
|
||||||
|
struct adreno_ringbuffer *rb, struct kgsl_cmdbatch *cmdbatch)
|
||||||
|
{
|
||||||
|
/* Always dump the snapshot on a non-cmdbatch failure */
|
||||||
|
if (cmdbatch == NULL) {
|
||||||
|
adreno_fault_header(device, rb, NULL);
|
||||||
|
kgsl_device_snapshot(device, NULL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Skip everything if the PMDUMP flag is set */
|
||||||
|
if (test_bit(KGSL_FT_SKIP_PMDUMP, &cmdbatch->fault_policy))
|
||||||
|
return;
|
||||||
|
|
||||||
|
/* Print the fault header */
|
||||||
|
adreno_fault_header(device, rb, cmdbatch);
|
||||||
|
|
||||||
|
if (!(cmdbatch->context->flags & KGSL_CONTEXT_NO_SNAPSHOT))
|
||||||
|
kgsl_device_snapshot(device, cmdbatch->context);
|
||||||
|
}
|
||||||
|
|
||||||
static int dispatcher_do_fault(struct adreno_device *adreno_dev)
|
static int dispatcher_do_fault(struct adreno_device *adreno_dev)
|
||||||
{
|
{
|
||||||
struct kgsl_device *device = KGSL_DEVICE(adreno_dev);
|
struct kgsl_device *device = KGSL_DEVICE(adreno_dev);
|
||||||
|
@ -1788,17 +1809,7 @@ static int dispatcher_do_fault(struct adreno_device *adreno_dev)
|
||||||
adreno_readreg64(adreno_dev, ADRENO_REG_CP_IB1_BASE,
|
adreno_readreg64(adreno_dev, ADRENO_REG_CP_IB1_BASE,
|
||||||
ADRENO_REG_CP_IB1_BASE_HI, &base);
|
ADRENO_REG_CP_IB1_BASE_HI, &base);
|
||||||
|
|
||||||
/*
|
do_header_and_snapshot(device, hung_rb, cmdbatch);
|
||||||
* Dump the snapshot information if this is the first
|
|
||||||
* detected fault for the oldest active command batch
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (cmdbatch == NULL ||
|
|
||||||
!test_bit(KGSL_FT_SKIP_PMDUMP, &cmdbatch->fault_policy)) {
|
|
||||||
adreno_fault_header(device, hung_rb, cmdbatch);
|
|
||||||
kgsl_device_snapshot(device,
|
|
||||||
cmdbatch ? cmdbatch->context : NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Terminate the stalled transaction and resume the IOMMU */
|
/* Terminate the stalled transaction and resume the IOMMU */
|
||||||
if (fault & ADRENO_IOMMU_PAGE_FAULT)
|
if (fault & ADRENO_IOMMU_PAGE_FAULT)
|
||||||
|
|
|
@ -346,7 +346,8 @@ adreno_drawctxt_create(struct kgsl_device_private *dev_priv,
|
||||||
KGSL_CONTEXT_PWR_CONSTRAINT |
|
KGSL_CONTEXT_PWR_CONSTRAINT |
|
||||||
KGSL_CONTEXT_IFH_NOP |
|
KGSL_CONTEXT_IFH_NOP |
|
||||||
KGSL_CONTEXT_SECURE |
|
KGSL_CONTEXT_SECURE |
|
||||||
KGSL_CONTEXT_PREEMPT_STYLE_MASK);
|
KGSL_CONTEXT_PREEMPT_STYLE_MASK |
|
||||||
|
KGSL_CONTEXT_NO_SNAPSHOT);
|
||||||
|
|
||||||
/* Check for errors before trying to initialize */
|
/* Check for errors before trying to initialize */
|
||||||
|
|
||||||
|
|
|
@ -43,13 +43,13 @@
|
||||||
/* This is a cmdbatch exclusive flag - use the CMDBATCH equivalent instead */
|
/* This is a cmdbatch exclusive flag - use the CMDBATCH equivalent instead */
|
||||||
#define KGSL_CONTEXT_SYNC 0x00000400
|
#define KGSL_CONTEXT_SYNC 0x00000400
|
||||||
#define KGSL_CONTEXT_PWR_CONSTRAINT 0x00000800
|
#define KGSL_CONTEXT_PWR_CONSTRAINT 0x00000800
|
||||||
|
|
||||||
#define KGSL_CONTEXT_PRIORITY_MASK 0x0000F000
|
#define KGSL_CONTEXT_PRIORITY_MASK 0x0000F000
|
||||||
#define KGSL_CONTEXT_PRIORITY_SHIFT 12
|
#define KGSL_CONTEXT_PRIORITY_SHIFT 12
|
||||||
#define KGSL_CONTEXT_PRIORITY_UNDEF 0
|
#define KGSL_CONTEXT_PRIORITY_UNDEF 0
|
||||||
|
|
||||||
#define KGSL_CONTEXT_IFH_NOP 0x00010000
|
#define KGSL_CONTEXT_IFH_NOP 0x00010000
|
||||||
#define KGSL_CONTEXT_SECURE 0x00020000
|
#define KGSL_CONTEXT_SECURE 0x00020000
|
||||||
|
#define KGSL_CONTEXT_NO_SNAPSHOT 0x00040000
|
||||||
|
|
||||||
#define KGSL_CONTEXT_PREEMPT_STYLE_MASK 0x0E000000
|
#define KGSL_CONTEXT_PREEMPT_STYLE_MASK 0x0E000000
|
||||||
#define KGSL_CONTEXT_PREEMPT_STYLE_SHIFT 25
|
#define KGSL_CONTEXT_PREEMPT_STYLE_SHIFT 25
|
||||||
|
|
Loading…
Add table
Reference in a new issue