Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 415d7dfa authored by qctecmdr Service's avatar qctecmdr Service Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: kgsl: Fix NULL pointer dereference"

parents 6df17483 b12776c8
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -70,6 +70,8 @@ struct gmu_iommu_context gmu_ctx[] = {
static struct gmu_memdesc gmu_kmem_entries[GMU_KERNEL_ENTRIES];
static unsigned long gmu_kmem_bitmap;
static unsigned int num_uncached_entries;

static void gmu_snapshot(struct kgsl_device *device);
static void gmu_remove(struct kgsl_device *device);

static int _gmu_iommu_fault_handler(struct device *dev,
@@ -530,9 +532,7 @@ static int gmu_dcvs_set(struct kgsl_device *device,
		dev_err_ratelimited(&gmu->pdev->dev,
			"Failed to set GPU perf idx %d, bw idx %d\n",
			req.freq, req.bw);

		adreno_set_gpu_fault(adreno_dev, ADRENO_GMU_FAULT);
		adreno_dispatcher_schedule(device);
		gmu_snapshot(device);
	}

	/* indicate actual clock change */
+6 −2
Original line number Diff line number Diff line
@@ -2099,6 +2099,8 @@ kgsl_iommu_get_current_ttbr0(struct kgsl_mmu *mmu)
{
	u64 val;
	struct kgsl_iommu *iommu = _IOMMU_PRIV(mmu);
	struct kgsl_iommu_context *ctx = &iommu->ctx[KGSL_IOMMU_CONTEXT_USER];

	/*
	 * We cannot enable or disable the clocks in interrupt context, this
	 * function is called from interrupt context if there is an axi error
@@ -2106,9 +2108,11 @@ kgsl_iommu_get_current_ttbr0(struct kgsl_mmu *mmu)
	if (in_interrupt())
		return 0;

	if (ctx->regbase == NULL)
		return 0;

	kgsl_iommu_enable_clk(mmu);
	val = KGSL_IOMMU_GET_CTX_REG_Q(&iommu->ctx[KGSL_IOMMU_CONTEXT_USER],
					TTBR0);
	val = KGSL_IOMMU_GET_CTX_REG_Q(ctx, TTBR0);
	kgsl_iommu_disable_clk(mmu);
	return val;
}
+6 −0
Original line number Diff line number Diff line
@@ -2572,6 +2572,12 @@ _aware(struct kgsl_device *device)
		status = gmu_core_start(device);
		break;
	case KGSL_STATE_INIT:
		/* if GMU already in FAULT */
		if (gmu_core_isenabled(device) &&
			test_bit(GMU_FAULT, &device->gmu_core.flags)) {
			status = -EINVAL;
			break;
		}
		status = kgsl_pwrctrl_enable(device);
		break;
	/* The following 3 cases shouldn't occur, but don't panic. */