Merge "Revert "msm: kgsl: Enable A6XX preemption through sysfs""
diff --git a/drivers/gpu/msm/adreno-gpulist.h b/drivers/gpu/msm/adreno-gpulist.h
index 08cd06b..26c1c39 100644
--- a/drivers/gpu/msm/adreno-gpulist.h
+++ b/drivers/gpu/msm/adreno-gpulist.h
@@ -348,7 +348,7 @@
.patchid = ANY_ID,
.features = ADRENO_64BIT | ADRENO_RPMH | ADRENO_IFPC |
ADRENO_GPMU | ADRENO_CONTENT_PROTECTION |
- ADRENO_IOCOHERENT,
+ ADRENO_IOCOHERENT | ADRENO_PREEMPTION,
.sqefw_name = "a630_sqe.fw",
.zap_name = "a630_zap",
.gpudev = &adreno_a6xx_gpudev,
diff --git a/drivers/gpu/msm/adreno.c b/drivers/gpu/msm/adreno.c
index b8006b7..8d18fc2 100644
--- a/drivers/gpu/msm/adreno.c
+++ b/drivers/gpu/msm/adreno.c
@@ -119,7 +119,6 @@
.skipsaverestore = 1,
.usesgmem = 1,
},
- .priv = BIT(ADRENO_DEVICE_PREEMPTION_EXECUTION),
};
/* Ptr to array for the current set of fault detect registers */
@@ -1431,7 +1430,8 @@
}
- if (nopreempt == false) {
+ if (nopreempt == false &&
+ ADRENO_FEATURE(adreno_dev, ADRENO_PREEMPTION)) {
int r = 0;
if (gpudev->preemption_init)
diff --git a/drivers/gpu/msm/adreno.h b/drivers/gpu/msm/adreno.h
index 0dd1921..4527e57 100644
--- a/drivers/gpu/msm/adreno.h
+++ b/drivers/gpu/msm/adreno.h
@@ -575,7 +575,6 @@
ADRENO_DEVICE_ISDB_ENABLED = 12,
ADRENO_DEVICE_CACHE_FLUSH_TS_SUSPENDED = 13,
ADRENO_DEVICE_HARD_RESET = 14,
- ADRENO_DEVICE_PREEMPTION_EXECUTION = 15,
ADRENO_DEVICE_CORESIGHT_CX = 16,
};
@@ -1647,22 +1646,10 @@
smp_wmb();
}
-static inline bool adreno_is_preemption_execution_enabled(
- struct adreno_device *adreno_dev)
-{
- return test_bit(ADRENO_DEVICE_PREEMPTION_EXECUTION, &adreno_dev->priv);
-}
-
-static inline bool adreno_is_preemption_setup_enabled(
- struct adreno_device *adreno_dev)
-{
- return test_bit(ADRENO_DEVICE_PREEMPTION, &adreno_dev->priv);
-}
-
static inline bool adreno_is_preemption_enabled(
struct adreno_device *adreno_dev)
{
- return 0;
+ return test_bit(ADRENO_DEVICE_PREEMPTION, &adreno_dev->priv);
}
/**
* adreno_ctx_get_rb() - Return the ringbuffer that a context should
@@ -1687,7 +1674,7 @@
* ringbuffer
*/
- if (!adreno_is_preemption_execution_enabled(adreno_dev))
+ if (!adreno_is_preemption_enabled(adreno_dev))
return &(adreno_dev->ringbuffers[0]);
/*
diff --git a/drivers/gpu/msm/adreno_a6xx.c b/drivers/gpu/msm/adreno_a6xx.c
index 09d6a10..2b77b44 100644
--- a/drivers/gpu/msm/adreno_a6xx.c
+++ b/drivers/gpu/msm/adreno_a6xx.c
@@ -749,7 +749,7 @@
kgsl_regrmw(device, A6XX_PC_DBG_ECO_CNTL, 0, (1 << 8));
/* Enable the GMEM save/restore feature for preemption */
- if (adreno_is_preemption_setup_enabled(adreno_dev))
+ if (adreno_is_preemption_enabled(adreno_dev))
kgsl_regwrite(device, A6XX_RB_CONTEXT_SWITCH_GMEM_SAVE_RESTORE,
0x1);
@@ -999,7 +999,7 @@
struct adreno_ringbuffer *rb = adreno_dev->cur_rb;
struct kgsl_device *device = KGSL_DEVICE(adreno_dev);
- if (!adreno_is_preemption_execution_enabled(adreno_dev))
+ if (!adreno_is_preemption_enabled(adreno_dev))
return 0;
cmds = adreno_ringbuffer_allocspace(rb, 42);
@@ -2555,7 +2555,7 @@
{
struct kgsl_device *device = KGSL_DEVICE(adreno_dev);
- if (adreno_is_preemption_execution_enabled(adreno_dev))
+ if (adreno_is_preemption_enabled(adreno_dev))
a6xx_preemption_trigger(adreno_dev);
adreno_dispatcher_schedule(device);
diff --git a/drivers/gpu/msm/adreno_a6xx_preempt.c b/drivers/gpu/msm/adreno_a6xx_preempt.c
index d92d1e0..deb857c 100644
--- a/drivers/gpu/msm/adreno_a6xx_preempt.c
+++ b/drivers/gpu/msm/adreno_a6xx_preempt.c
@@ -431,7 +431,7 @@
{
struct kgsl_device *device = KGSL_DEVICE(adreno_dev);
- if (!adreno_is_preemption_execution_enabled(adreno_dev))
+ if (!adreno_is_preemption_enabled(adreno_dev))
return;
mutex_lock(&device->mutex);
@@ -536,7 +536,7 @@
struct adreno_ringbuffer *rb;
unsigned int i;
- if (!adreno_is_preemption_execution_enabled(adreno_dev))
+ if (!adreno_is_preemption_enabled(adreno_dev))
return;
/* Force the state to be clear */
@@ -728,7 +728,7 @@
struct kgsl_device *device = context->device;
struct adreno_device *adreno_dev = ADRENO_DEVICE(device);
- if (!adreno_is_preemption_setup_enabled(adreno_dev))
+ if (!adreno_is_preemption_enabled(adreno_dev))
return;
gpumem_free_entry(context->user_ctxt_record);
@@ -743,7 +743,7 @@
struct adreno_device *adreno_dev = ADRENO_DEVICE(device);
uint64_t flags = 0;
- if (!adreno_is_preemption_setup_enabled(adreno_dev))
+ if (!adreno_is_preemption_enabled(adreno_dev))
return 0;
if (context->flags & KGSL_CONTEXT_SECURE)
diff --git a/drivers/gpu/msm/adreno_dispatch.c b/drivers/gpu/msm/adreno_dispatch.c
index 0caf55b..472f78e 100644
--- a/drivers/gpu/msm/adreno_dispatch.c
+++ b/drivers/gpu/msm/adreno_dispatch.c
@@ -2141,7 +2141,7 @@
* Deleting uninitialized timer will block for ever on kernel debug
* disable build. Hence skip del timer if it is not initialized.
*/
- if (adreno_is_preemption_execution_enabled(adreno_dev))
+ if (adreno_is_preemption_enabled(adreno_dev))
del_timer_sync(&adreno_dev->preempt.timer);
mutex_lock(&device->mutex);
diff --git a/drivers/gpu/msm/adreno_ioctl.c b/drivers/gpu/msm/adreno_ioctl.c
index 13d71982..aa8c2bf 100644
--- a/drivers/gpu/msm/adreno_ioctl.c
+++ b/drivers/gpu/msm/adreno_ioctl.c
@@ -96,7 +96,7 @@
int levels_to_copy;
if (!adreno_is_a5xx(adreno_dev) ||
- !adreno_is_preemption_execution_enabled(adreno_dev))
+ !adreno_is_preemption_enabled(adreno_dev))
return -EOPNOTSUPP;
if (read->size_user < size_level)
diff --git a/drivers/gpu/msm/adreno_ringbuffer.c b/drivers/gpu/msm/adreno_ringbuffer.c
index 01d9f71..b598cf9 100644
--- a/drivers/gpu/msm/adreno_ringbuffer.c
+++ b/drivers/gpu/msm/adreno_ringbuffer.c
@@ -260,7 +260,7 @@
return status;
}
- if (nopreempt == false)
+ if (nopreempt == false && ADRENO_FEATURE(adreno_dev, ADRENO_PREEMPTION))
adreno_dev->num_ringbuffers = gpudev->num_prio_levels;
else
adreno_dev->num_ringbuffers = 1;
@@ -455,11 +455,11 @@
total_sizedwords += 4;
if (gpudev->preemption_pre_ibsubmit &&
- adreno_is_preemption_execution_enabled(adreno_dev))
+ adreno_is_preemption_enabled(adreno_dev))
total_sizedwords += 27;
if (gpudev->preemption_post_ibsubmit &&
- adreno_is_preemption_execution_enabled(adreno_dev))
+ adreno_is_preemption_enabled(adreno_dev))
total_sizedwords += 10;
/*
@@ -511,7 +511,7 @@
*ringcmds++ = cp_packet(adreno_dev, CP_NOP, 1);
*ringcmds++ = KGSL_CMD_IDENTIFIER;
- if (adreno_is_preemption_execution_enabled(adreno_dev) &&
+ if (adreno_is_preemption_enabled(adreno_dev) &&
gpudev->preemption_pre_ibsubmit)
ringcmds += gpudev->preemption_pre_ibsubmit(
adreno_dev, rb, ringcmds, context);
@@ -669,7 +669,7 @@
ringcmds += cp_secure_mode(adreno_dev, ringcmds, 0);
if (gpudev->preemption_post_ibsubmit &&
- adreno_is_preemption_execution_enabled(adreno_dev))
+ adreno_is_preemption_enabled(adreno_dev))
ringcmds += gpudev->preemption_post_ibsubmit(adreno_dev,
ringcmds);
@@ -874,10 +874,9 @@
dwords += 2;
}
- if (adreno_is_preemption_execution_enabled(adreno_dev)) {
+ if (adreno_is_preemption_enabled(adreno_dev))
if (gpudev->preemption_yield_enable)
dwords += 8;
- }
/*
* Prior to SQE FW version 1.49, there was only one marker for
@@ -952,10 +951,9 @@
if (gpudev->ccu_invalidate)
cmds += gpudev->ccu_invalidate(adreno_dev, cmds);
- if (adreno_is_preemption_execution_enabled(adreno_dev)) {
+ if (adreno_is_preemption_enabled(adreno_dev))
if (gpudev->preemption_yield_enable)
cmds += gpudev->preemption_yield_enable(cmds);
- }
if (kernel_profiling) {
cmds += _get_alwayson_counter(adreno_dev, cmds,
diff --git a/drivers/gpu/msm/adreno_sysfs.c b/drivers/gpu/msm/adreno_sysfs.c
index d38ee74..2d2c9e5 100644
--- a/drivers/gpu/msm/adreno_sysfs.c
+++ b/drivers/gpu/msm/adreno_sysfs.c
@@ -226,14 +226,14 @@
mutex_lock(&device->mutex);
if (!(ADRENO_FEATURE(adreno_dev, ADRENO_PREEMPTION)) ||
- (test_bit(ADRENO_DEVICE_PREEMPTION_EXECUTION,
+ (test_bit(ADRENO_DEVICE_PREEMPTION,
&adreno_dev->priv) == val)) {
mutex_unlock(&device->mutex);
return 0;
}
kgsl_pwrctrl_change_state(device, KGSL_STATE_SUSPEND);
- change_bit(ADRENO_DEVICE_PREEMPTION_EXECUTION, &adreno_dev->priv);
+ change_bit(ADRENO_DEVICE_PREEMPTION, &adreno_dev->priv);
adreno_dev->cur_rb = &(adreno_dev->ringbuffers[0]);
kgsl_pwrctrl_change_state(device, KGSL_STATE_SLUMBER);
@@ -261,7 +261,7 @@
static unsigned int _preemption_show(struct adreno_device *adreno_dev)
{
- return adreno_is_preemption_execution_enabled(adreno_dev);
+ return adreno_is_preemption_enabled(adreno_dev);
}
static int _hwcg_store(struct adreno_device *adreno_dev,