forked from Minki/linux
- 1 display fix for bxt
- 1 gem fix for fences - 1 gem/pm fix for rps freq -----BEGIN PGP SIGNATURE----- iQEcBAABAgAGBQJaqaYoAAoJEPpiX2QO6xPKYO0IAK/D3aEm3faXYlvV11rZswib K2T/E58xe5MfzRzJjN0tIPv1HnPlfQ3YOvXj4d9qDr/98UcPG9FqGi6V0N7yNy6M t/uKN5itnrR23Mx6rLJ6VnPkNAsK7JtJySvAmncFZsPcFrbxzyThanxUFcSQziHf aWa9OANVGbD+nwOON1+rIMHm5ZDRX+HiiRKE9CNVwyOfwMlIN21m8UwVc8yh1ga7 P6kYpfXYlw2ujN/InHHf+mLz8LE9ooZeaeVOLqOefjoTkCLWMnNDdRpwb4p3vHYk 2nP7bDFYq0vsKMCeXYeH+hacKr+d+YopfbWU4A6DIUgbaJQ6wtDjPUaOwWtlBho= =c0/4 -----END PGP SIGNATURE----- Merge tag 'drm-intel-fixes-2018-03-14' of git://anongit.freedesktop.org/drm/drm-intel into drm-fixes - 1 display fix for bxt - 1 gem fix for fences - 1 gem/pm fix for rps freq * tag 'drm-intel-fixes-2018-03-14' of git://anongit.freedesktop.org/drm/drm-intel: drm/i915: Kick the rps worker when changing the boost frequency drm/i915: Only prune fences after wait-for-all drm/i915: Enable VBT based BL control for DP
This commit is contained in:
commit
67f1976665
@ -434,20 +434,28 @@ i915_gem_object_wait_reservation(struct reservation_object *resv,
|
||||
dma_fence_put(shared[i]);
|
||||
kfree(shared);
|
||||
|
||||
/*
|
||||
* If both shared fences and an exclusive fence exist,
|
||||
* then by construction the shared fences must be later
|
||||
* than the exclusive fence. If we successfully wait for
|
||||
* all the shared fences, we know that the exclusive fence
|
||||
* must all be signaled. If all the shared fences are
|
||||
* signaled, we can prune the array and recover the
|
||||
* floating references on the fences/requests.
|
||||
*/
|
||||
prune_fences = count && timeout >= 0;
|
||||
} else {
|
||||
excl = reservation_object_get_excl_rcu(resv);
|
||||
}
|
||||
|
||||
if (excl && timeout >= 0) {
|
||||
if (excl && timeout >= 0)
|
||||
timeout = i915_gem_object_wait_fence(excl, flags, timeout,
|
||||
rps_client);
|
||||
prune_fences = timeout >= 0;
|
||||
}
|
||||
|
||||
dma_fence_put(excl);
|
||||
|
||||
/* Oportunistically prune the fences iff we know they have *all* been
|
||||
/*
|
||||
* Opportunistically prune the fences iff we know they have *all* been
|
||||
* signaled and that the reservation object has not been changed (i.e.
|
||||
* no new fences have been added).
|
||||
*/
|
||||
|
@ -304,8 +304,9 @@ static ssize_t gt_boost_freq_mhz_store(struct device *kdev,
|
||||
{
|
||||
struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev);
|
||||
struct intel_rps *rps = &dev_priv->gt_pm.rps;
|
||||
u32 val;
|
||||
bool boost = false;
|
||||
ssize_t ret;
|
||||
u32 val;
|
||||
|
||||
ret = kstrtou32(buf, 0, &val);
|
||||
if (ret)
|
||||
@ -317,8 +318,13 @@ static ssize_t gt_boost_freq_mhz_store(struct device *kdev,
|
||||
return -EINVAL;
|
||||
|
||||
mutex_lock(&dev_priv->pcu_lock);
|
||||
rps->boost_freq = val;
|
||||
if (val != rps->boost_freq) {
|
||||
rps->boost_freq = val;
|
||||
boost = atomic_read(&rps->num_waiters);
|
||||
}
|
||||
mutex_unlock(&dev_priv->pcu_lock);
|
||||
if (boost)
|
||||
schedule_work(&rps->work);
|
||||
|
||||
return count;
|
||||
}
|
||||
|
@ -620,19 +620,15 @@ static int
|
||||
bxt_power_sequencer_idx(struct intel_dp *intel_dp)
|
||||
{
|
||||
struct drm_i915_private *dev_priv = to_i915(intel_dp_to_dev(intel_dp));
|
||||
int backlight_controller = dev_priv->vbt.backlight.controller;
|
||||
|
||||
lockdep_assert_held(&dev_priv->pps_mutex);
|
||||
|
||||
/* We should never land here with regular DP ports */
|
||||
WARN_ON(!intel_dp_is_edp(intel_dp));
|
||||
|
||||
/*
|
||||
* TODO: BXT has 2 PPS instances. The correct port->PPS instance
|
||||
* mapping needs to be retrieved from VBT, for now just hard-code to
|
||||
* use instance #0 always.
|
||||
*/
|
||||
if (!intel_dp->pps_reset)
|
||||
return 0;
|
||||
return backlight_controller;
|
||||
|
||||
intel_dp->pps_reset = false;
|
||||
|
||||
@ -642,7 +638,7 @@ bxt_power_sequencer_idx(struct intel_dp *intel_dp)
|
||||
*/
|
||||
intel_dp_init_panel_power_sequencer_registers(intel_dp, false);
|
||||
|
||||
return 0;
|
||||
return backlight_controller;
|
||||
}
|
||||
|
||||
typedef bool (*vlv_pipe_check)(struct drm_i915_private *dev_priv,
|
||||
|
Loading…
Reference in New Issue
Block a user