- Fix tgl power gating issue (Rodrigo)
- Memory leak fixes (Tvrtko, Chris) - Selftest fixes (Zhang) - Display bpc fix (Ville) - Fix TGL MOCS for PTE tracking (Chris) GVT Fixes: It temporarily disables VFIO edid feature on BXT/APL until its virtual display is really fixed to make it work properly. And fixes for DPCD 1.2 and error return in taking module reference. -----BEGIN PGP SIGNATURE----- iQEzBAABCAAdFiEEbSBwaO7dZQkcLOKj+mJfZA7rE8oFAl+21pYACgkQ+mJfZA7r E8rUwQf/fkEuJVUXcAf5z59xVkGyxd+PIcOnNyo1sfF0NlwFYG2RSmo/iK2skpKQ SlCtbP53+nfQaMQ7G780hR6nzut7hHHo+fKW4IUdXg3sH0gH3CowVrsSqTClLmGt gFxn/qqoUUsUTppf7iC+c4DpQ6MaUzy603/AnIT6rq25BkI6mY1acATcAMmrGXYc zyvYncywr6hfrt6m+GLYnWbvyuX/WBmDuDM1h8lgccfikE3am91ctCHJuz5ldfM/ 9ZjrYQ0R8Doo48OgUGlniexqkz/R9uoAtvETNmgkMKmA9FMzt9pFTLR40ANyLl8e y4VIBw9CeEySLA/LNi+xjWdLftxgSg== =OAFl -----END PGP SIGNATURE----- Merge tag 'drm-intel-fixes-2020-11-19' of git://anongit.freedesktop.org/drm/drm-intel into drm-fixes - Fix tgl power gating issue (Rodrigo) - Memory leak fixes (Tvrtko, Chris) - Selftest fixes (Zhang) - Display bpc fix (Ville) - Fix TGL MOCS for PTE tracking (Chris) GVT Fixes: It temporarily disables VFIO edid feature on BXT/APL until its virtual display is really fixed to make it work properly. And fixes for DPCD 1.2 and error return in taking module reference. Signed-off-by: Dave Airlie <airlied@redhat.com> From: Rodrigo Vivi <rodrigo.vivi@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20201119203417.GA1795798@intel.com
This commit is contained in:
commit
6600f9d522
|
@ -12878,10 +12878,11 @@ compute_sink_pipe_bpp(const struct drm_connector_state *conn_state,
|
|||
case 10 ... 11:
|
||||
bpp = 10 * 3;
|
||||
break;
|
||||
case 12:
|
||||
case 12 ... 16:
|
||||
bpp = 12 * 3;
|
||||
break;
|
||||
default:
|
||||
MISSING_CASE(conn_state->max_bpc);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
|
|
@ -5457,6 +5457,7 @@ static void virtual_context_destroy(struct kref *kref)
|
|||
__execlists_context_fini(&ve->context);
|
||||
intel_context_fini(&ve->context);
|
||||
|
||||
intel_breadcrumbs_free(ve->base.breadcrumbs);
|
||||
intel_engine_free_request_pool(&ve->base);
|
||||
|
||||
kfree(ve->bonds);
|
||||
|
|
|
@ -243,8 +243,9 @@ static const struct drm_i915_mocs_entry tgl_mocs_table[] = {
|
|||
* only, __init_mocs_table() take care to program unused index with
|
||||
* this entry.
|
||||
*/
|
||||
MOCS_ENTRY(1, LE_3_WB | LE_TC_1_LLC | LE_LRUM(3),
|
||||
L3_3_WB),
|
||||
MOCS_ENTRY(I915_MOCS_PTE,
|
||||
LE_0_PAGETABLE | LE_TC_0_PAGETABLE,
|
||||
L3_1_UC),
|
||||
GEN11_MOCS_ENTRIES,
|
||||
|
||||
/* Implicitly enable L1 - HDC:L1 + L3 + LLC */
|
||||
|
|
|
@ -56,9 +56,12 @@ static inline void set(struct intel_uncore *uncore, i915_reg_t reg, u32 val)
|
|||
|
||||
static void gen11_rc6_enable(struct intel_rc6 *rc6)
|
||||
{
|
||||
struct intel_uncore *uncore = rc6_to_uncore(rc6);
|
||||
struct intel_gt *gt = rc6_to_gt(rc6);
|
||||
struct intel_uncore *uncore = gt->uncore;
|
||||
struct intel_engine_cs *engine;
|
||||
enum intel_engine_id id;
|
||||
u32 pg_enable;
|
||||
int i;
|
||||
|
||||
/* 2b: Program RC6 thresholds.*/
|
||||
set(uncore, GEN6_RC6_WAKE_RATE_LIMIT, 54 << 16 | 85);
|
||||
|
@ -102,10 +105,19 @@ static void gen11_rc6_enable(struct intel_rc6 *rc6)
|
|||
GEN6_RC_CTL_RC6_ENABLE |
|
||||
GEN6_RC_CTL_EI_MODE(1);
|
||||
|
||||
set(uncore, GEN9_PG_ENABLE,
|
||||
GEN9_RENDER_PG_ENABLE |
|
||||
GEN9_MEDIA_PG_ENABLE |
|
||||
GEN11_MEDIA_SAMPLER_PG_ENABLE);
|
||||
pg_enable =
|
||||
GEN9_RENDER_PG_ENABLE |
|
||||
GEN9_MEDIA_PG_ENABLE |
|
||||
GEN11_MEDIA_SAMPLER_PG_ENABLE;
|
||||
|
||||
if (INTEL_GEN(gt->i915) >= 12) {
|
||||
for (i = 0; i < I915_MAX_VCS; i++)
|
||||
if (HAS_ENGINE(gt, _VCS(i)))
|
||||
pg_enable |= (VDN_HCP_POWERGATE_ENABLE(i) |
|
||||
VDN_MFX_POWERGATE_ENABLE(i));
|
||||
}
|
||||
|
||||
set(uncore, GEN9_PG_ENABLE, pg_enable);
|
||||
}
|
||||
|
||||
static void gen9_rc6_enable(struct intel_rc6 *rc6)
|
||||
|
|
|
@ -131,8 +131,10 @@ static void _wa_add(struct i915_wa_list *wal, const struct i915_wa *wa)
|
|||
return;
|
||||
}
|
||||
|
||||
if (wal->list)
|
||||
if (wal->list) {
|
||||
memcpy(list, wal->list, sizeof(*wa) * wal->count);
|
||||
kfree(wal->list);
|
||||
}
|
||||
|
||||
wal->list = list;
|
||||
}
|
||||
|
|
|
@ -164,7 +164,7 @@ static unsigned char virtual_dp_monitor_edid[GVT_EDID_NUM][EDID_SIZE] = {
|
|||
|
||||
/* let the virtual display supports DP1.2 */
|
||||
static u8 dpcd_fix_data[DPCD_HEADER_SIZE] = {
|
||||
0x12, 0x014, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
0x12, 0x014, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
static void emulate_monitor_status_change(struct intel_vgpu *vgpu)
|
||||
|
|
|
@ -829,8 +829,10 @@ static int intel_vgpu_open(struct mdev_device *mdev)
|
|||
/* Take a module reference as mdev core doesn't take
|
||||
* a reference for vendor driver.
|
||||
*/
|
||||
if (!try_module_get(THIS_MODULE))
|
||||
if (!try_module_get(THIS_MODULE)) {
|
||||
ret = -ENODEV;
|
||||
goto undo_group;
|
||||
}
|
||||
|
||||
ret = kvmgt_guest_init(mdev);
|
||||
if (ret)
|
||||
|
|
|
@ -439,7 +439,8 @@ static struct intel_vgpu *__intel_gvt_create_vgpu(struct intel_gvt *gvt,
|
|||
|
||||
if (IS_BROADWELL(dev_priv))
|
||||
ret = intel_gvt_hypervisor_set_edid(vgpu, PORT_B);
|
||||
else
|
||||
/* FixMe: Re-enable APL/BXT once vfio_edid enabled */
|
||||
else if (!IS_BROXTON(dev_priv))
|
||||
ret = intel_gvt_hypervisor_set_edid(vgpu, PORT_D);
|
||||
if (ret)
|
||||
goto out_clean_sched_policy;
|
||||
|
|
|
@ -8971,10 +8971,6 @@ enum {
|
|||
#define GEN9_PWRGT_MEDIA_STATUS_MASK (1 << 0)
|
||||
#define GEN9_PWRGT_RENDER_STATUS_MASK (1 << 1)
|
||||
|
||||
#define POWERGATE_ENABLE _MMIO(0xa210)
|
||||
#define VDN_HCP_POWERGATE_ENABLE(n) BIT(((n) * 2) + 3)
|
||||
#define VDN_MFX_POWERGATE_ENABLE(n) BIT(((n) * 2) + 4)
|
||||
|
||||
#define GTFIFODBG _MMIO(0x120000)
|
||||
#define GT_FIFO_SBDEDICATE_FREE_ENTRY_CHV (0x1f << 20)
|
||||
#define GT_FIFO_FREE_ENTRIES_CHV (0x7f << 13)
|
||||
|
@ -9114,9 +9110,11 @@ enum {
|
|||
#define GEN9_MEDIA_PG_IDLE_HYSTERESIS _MMIO(0xA0C4)
|
||||
#define GEN9_RENDER_PG_IDLE_HYSTERESIS _MMIO(0xA0C8)
|
||||
#define GEN9_PG_ENABLE _MMIO(0xA210)
|
||||
#define GEN9_RENDER_PG_ENABLE REG_BIT(0)
|
||||
#define GEN9_MEDIA_PG_ENABLE REG_BIT(1)
|
||||
#define GEN11_MEDIA_SAMPLER_PG_ENABLE REG_BIT(2)
|
||||
#define GEN9_RENDER_PG_ENABLE REG_BIT(0)
|
||||
#define GEN9_MEDIA_PG_ENABLE REG_BIT(1)
|
||||
#define GEN11_MEDIA_SAMPLER_PG_ENABLE REG_BIT(2)
|
||||
#define VDN_HCP_POWERGATE_ENABLE(n) REG_BIT(3 + 2 * (n))
|
||||
#define VDN_MFX_POWERGATE_ENABLE(n) REG_BIT(4 + 2 * (n))
|
||||
#define GEN8_PUSHBUS_CONTROL _MMIO(0xA248)
|
||||
#define GEN8_PUSHBUS_ENABLE _MMIO(0xA250)
|
||||
#define GEN8_PUSHBUS_SHIFT _MMIO(0xA25C)
|
||||
|
|
|
@ -7118,23 +7118,10 @@ static void icl_init_clock_gating(struct drm_i915_private *dev_priv)
|
|||
|
||||
static void tgl_init_clock_gating(struct drm_i915_private *dev_priv)
|
||||
{
|
||||
u32 vd_pg_enable = 0;
|
||||
unsigned int i;
|
||||
|
||||
/* Wa_1409120013:tgl */
|
||||
I915_WRITE(ILK_DPFC_CHICKEN,
|
||||
ILK_DPFC_CHICKEN_COMP_DUMMY_PIXEL);
|
||||
|
||||
/* This is not a WA. Enable VD HCP & MFX_ENC powergate */
|
||||
for (i = 0; i < I915_MAX_VCS; i++) {
|
||||
if (HAS_ENGINE(&dev_priv->gt, _VCS(i)))
|
||||
vd_pg_enable |= VDN_HCP_POWERGATE_ENABLE(i) |
|
||||
VDN_MFX_POWERGATE_ENABLE(i);
|
||||
}
|
||||
|
||||
I915_WRITE(POWERGATE_ENABLE,
|
||||
I915_READ(POWERGATE_ENABLE) | vd_pg_enable);
|
||||
|
||||
/* Wa_1409825376:tgl (pre-prod)*/
|
||||
if (IS_TGL_DISP_REVID(dev_priv, TGL_REVID_A0, TGL_REVID_B1))
|
||||
I915_WRITE(GEN9_CLKGATE_DIS_3, I915_READ(GEN9_CLKGATE_DIS_3) |
|
||||
|
|
|
@ -2293,8 +2293,10 @@ static int perf_request_latency(void *arg)
|
|||
struct intel_context *ce;
|
||||
|
||||
ce = intel_context_create(engine);
|
||||
if (IS_ERR(ce))
|
||||
if (IS_ERR(ce)) {
|
||||
err = PTR_ERR(ce);
|
||||
goto out;
|
||||
}
|
||||
|
||||
err = intel_context_pin(ce);
|
||||
if (err) {
|
||||
|
@ -2467,8 +2469,10 @@ static int perf_series_engines(void *arg)
|
|||
struct intel_context *ce;
|
||||
|
||||
ce = intel_context_create(engine);
|
||||
if (IS_ERR(ce))
|
||||
if (IS_ERR(ce)) {
|
||||
err = PTR_ERR(ce);
|
||||
goto out;
|
||||
}
|
||||
|
||||
err = intel_context_pin(ce);
|
||||
if (err) {
|
||||
|
|
Loading…
Reference in New Issue