Loading drivers/gpu/msm/adreno_dispatch.c +22 −11 Original line number Original line Diff line number Diff line Loading @@ -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); Loading Loading @@ -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) Loading drivers/gpu/msm/adreno_drawctxt.c +2 −1 Original line number Original line Diff line number Diff line Loading @@ -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 */ Loading include/uapi/linux/msm_kgsl.h +1 −1 Original line number Original line Diff line number Diff line Loading @@ -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 Loading
drivers/gpu/msm/adreno_dispatch.c +22 −11 Original line number Original line Diff line number Diff line Loading @@ -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); Loading Loading @@ -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) Loading
drivers/gpu/msm/adreno_drawctxt.c +2 −1 Original line number Original line Diff line number Diff line Loading @@ -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 */ Loading
include/uapi/linux/msm_kgsl.h +1 −1 Original line number Original line Diff line number Diff line Loading @@ -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