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

Commit fd2d48c9 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: kgsl: Set default A6XX preemption level"

parents a08747bd a8ec51ce
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -112,6 +112,11 @@ static struct adreno_device device_3d0 = {
	.active_list_lock = __SPIN_LOCK_UNLOCKED(device_3d0.active_list_lock),
	.gpu_llc_slice_enable = true,
	.gpuhtw_llc_slice_enable = true,
	.preempt = {
		.preempt_level = 1,
		.skipsaverestore = 1,
		.usesgmem = 1,
	},
};

/* Ptr to array for the current set of fault detect registers */
+6 −4
Original line number Diff line number Diff line
@@ -260,6 +260,9 @@ enum adreno_preempt_states {
 * @work: A work struct for the preemption worker (for 5XX)
 * @token_submit: Indicates if a preempt token has been submitted in
 * current ringbuffer (for 4XX)
 * preempt_level: The level of preemption (for 6XX)
 * skipsaverestore: To skip saverestore during L1 preemption (for 6XX)
 * usesgmem: enable GMEM save/restore across preemption (for 6XX)
 */
struct adreno_preemption {
	atomic_t state;
@@ -267,6 +270,9 @@ struct adreno_preemption {
	struct timer_list timer;
	struct work_struct work;
	bool token_submit;
	unsigned int preempt_level;
	bool skipsaverestore;
	bool usesgmem;
};


@@ -485,10 +491,6 @@ struct adreno_device {
	void *gpuhtw_llc_slice;
	bool gpuhtw_llc_slice_enable;
	unsigned int zap_loaded;
	unsigned int preempt_level;
	bool usesgmem;
	bool skipsaverestore;

};

/**
+4 −3
Original line number Diff line number Diff line
@@ -208,10 +208,11 @@ void a6xx_preemption_trigger(struct adreno_device *adreno_dev)
	unsigned int contextidr;
	unsigned long flags;
	uint32_t preempt_level, usesgmem, skipsaverestore;
	struct adreno_preemption *preempt = &adreno_dev->preempt;

	preempt_level = adreno_dev->preempt_level;
	usesgmem = adreno_dev->usesgmem;
	skipsaverestore = adreno_dev->skipsaverestore;
	preempt_level = preempt->preempt_level;
	usesgmem = preempt->usesgmem;
	skipsaverestore = preempt->skipsaverestore;

	/* Put ourselves into a possible trigger state */
	if (!adreno_move_preempt_state(adreno_dev,
+18 −6
Original line number Diff line number Diff line
@@ -54,38 +54,50 @@ static unsigned int _ft_policy_show(struct adreno_device *adreno_dev)
static int _preempt_level_store(struct adreno_device *adreno_dev,
		unsigned int val)
{
	struct adreno_preemption *preempt = &adreno_dev->preempt;

	if (val <= 2)
		adreno_dev->preempt_level = val;
		preempt->preempt_level = val;
	return 0;
}

static unsigned int _preempt_level_show(struct adreno_device *adreno_dev)
{
	return adreno_dev->preempt_level;
	struct adreno_preemption *preempt = &adreno_dev->preempt;

	return preempt->preempt_level;
}

static int _usesgmem_store(struct adreno_device *adreno_dev,
		unsigned int val)
{
	adreno_dev->usesgmem = val ? 1 : 0;
	struct adreno_preemption *preempt = &adreno_dev->preempt;

	preempt->usesgmem = val ? 1 : 0;
	return 0;
}

static unsigned int _usesgmem_show(struct adreno_device *adreno_dev)
{
	return adreno_dev->usesgmem;
	struct adreno_preemption *preempt = &adreno_dev->preempt;

	return preempt->usesgmem;
}

static int _skipsaverestore_store(struct adreno_device *adreno_dev,
		unsigned int val)
{
	adreno_dev->skipsaverestore = val ? 1 : 0;
	struct adreno_preemption *preempt = &adreno_dev->preempt;

	preempt->skipsaverestore = val ? 1 : 0;
	return 0;
}

static unsigned int _skipsaverestore_show(struct adreno_device *adreno_dev)
{
	return adreno_dev->skipsaverestore;
	struct adreno_preemption *preempt = &adreno_dev->preempt;

	return preempt->skipsaverestore;
}

static int _ft_pagefault_policy_store(struct adreno_device *adreno_dev,