NetBSD-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: X on 10.0 RC1 is unusable on my laptop
On Sun, Nov 26, 2023 at 03:46:18PM +0000, Mike Pumford wrote:
>
> From the reading of the code and commit comments I came away with the
> impression that they couldn't be moved in the 5.6 codebase due to needing
> different trigger points for the workround and also the workround engine
> couldn't handle writes to some of the registers without some structural
> changes.
>
OK - here are the diffs, I just apply the gen 8 work arounds, there is a
couple of complaints but they don't seem to break anything but,
likewise, they may be pointless...
--
Brett Lymn
--
Sent from my NetBSD device.
"We are were wolves",
"You mean werewolves?",
"No we were wolves, now we are something else entirely",
"Oh"
Index: dist/drm/i915/i915_pci.c
===================================================================
RCS file: /cvsroot/src/sys/external/bsd/drm2/dist/drm/i915/i915_pci.c,v
retrieving revision 1.4
diff -u -r1.4 i915_pci.c
--- dist/drm/i915/i915_pci.c 19 Dec 2021 01:44:49 -0000 1.4
+++ dist/drm/i915/i915_pci.c 27 Nov 2023 05:59:00 -0000
@@ -442,7 +442,7 @@
.has_rc6 = 1, \
.has_rc6p = 1, \
.has_rps = true, \
- .ppgtt_type = INTEL_PPGTT_FULL, \
+ .ppgtt_type = INTEL_PPGTT_ALIASING, \
.ppgtt_size = 31, \
IVB_PIPE_OFFSETS, \
IVB_CURSOR_OFFSETS, \
@@ -499,7 +499,7 @@
.has_rps = true,
.display.has_gmch = 1,
.display.has_hotplug = 1,
- .ppgtt_type = INTEL_PPGTT_FULL,
+ .ppgtt_type = INTEL_PPGTT_ALIASING,
.ppgtt_size = 31,
.has_snoop = true,
.has_coherent_ggtt = false,
Index: dist/drm/i915/i915_reg.h
===================================================================
RCS file: /cvsroot/src/sys/external/bsd/drm2/dist/drm/i915/i915_reg.h,v
retrieving revision 1.19
diff -u -r1.19 i915_reg.h
--- dist/drm/i915/i915_reg.h 19 Dec 2021 12:24:36 -0000 1.19
+++ dist/drm/i915/i915_reg.h 27 Nov 2023 05:59:01 -0000
@@ -7775,6 +7775,9 @@
#define MASK_WAKEMEM (1 << 13)
#define CNL_DDI_CLOCK_REG_ACCESS_ON (1 << 7)
+#define BASIL_SAGV _MMIO(0x46434)
+#define SAGV_DISABLE (15 << 24)
+
#define SKL_DFSM _MMIO(0x51000)
#define SKL_DFSM_DISPLAY_PM_DISABLE (1 << 27)
#define SKL_DFSM_DISPLAY_HDCP_DISABLE (1 << 25)
Index: dist/drm/i915/gt/intel_workarounds.c
===================================================================
RCS file: /cvsroot/src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_workarounds.c,v
retrieving revision 1.3
diff -u -r1.3 intel_workarounds.c
--- dist/drm/i915/gt/intel_workarounds.c 19 Dec 2021 11:49:11 -0000 1.3
+++ dist/drm/i915/gt/intel_workarounds.c 27 Nov 2023 05:59:02 -0000
@@ -351,7 +351,7 @@
HDC_FORCE_NON_COHERENT);
/* WaDisableSamplerPowerBypassForSOPingPong:skl,bxt,kbl,cfl */
- if (IS_SKYLAKE(i915) || IS_KABYLAKE(i915) || IS_COFFEELAKE(i915))
+ if (IS_SKYLAKE(i915) || IS_KABYLAKE(i915) || IS_COFFEELAKE(i915) || (INTEL_GEN(i915) == 7))
WA_SET_BIT_MASKED(HALF_SLICE_CHICKEN3,
GEN8_SAMPLER_POWER_BYPASS_DIS);
@@ -634,6 +634,8 @@
chv_ctx_workarounds_init(engine, wal);
else if (IS_BROADWELL(i915))
bdw_ctx_workarounds_init(engine, wal);
+ else if (INTEL_GEN(i915) == 7)
+ skl_ctx_workarounds_init(engine, wal);
else if (INTEL_GEN(i915) < 8)
return;
else
@@ -964,6 +966,8 @@
bxt_gt_workarounds_init(i915, wal);
else if (IS_SKYLAKE(i915))
skl_gt_workarounds_init(i915, wal);
+ else if (INTEL_GEN(i915) == 7)
+ skl_gt_workarounds_init(i915, wal);
else if (INTEL_GEN(i915) <= 8)
return;
else
@@ -1288,7 +1292,7 @@
kbl_whitelist_build(engine);
else if (IS_BROXTON(i915))
bxt_whitelist_build(engine);
- else if (IS_SKYLAKE(i915))
+ else if (IS_SKYLAKE(i915) || (INTEL_GEN(i915) == 7))
skl_whitelist_build(engine);
else if (INTEL_GEN(i915) <= 8)
return;
@@ -1326,6 +1330,9 @@
{
struct drm_i915_private *i915 = engine->i915;
+ wa_write_or(wal,
+ BASIL_SAGV, SAGV_DISABLE);
+
if (IS_TGL_REVID(i915, TGL_REVID_A0, TGL_REVID_A0)) {
/* Wa_1606700617:tgl */
wa_masked_en(wal,
@@ -1426,7 +1433,7 @@
GEN9_FFSC_PERCTX_PREEMPT_CTRL);
}
- if (IS_SKYLAKE(i915) || IS_KABYLAKE(i915) || IS_COFFEELAKE(i915)) {
+ if (IS_SKYLAKE(i915) || IS_KABYLAKE(i915) || IS_COFFEELAKE(i915) || (INTEL_GEN(i915) == 7)) {
/* WaEnableGapsTsvCreditFix:skl,kbl,cfl */
wa_write_or(wal,
GEN8_GARBCNTL,
@@ -1471,6 +1478,9 @@
{
struct drm_i915_private *i915 = engine->i915;
+ wa_write_or(wal,
+ BASIL_SAGV, SAGV_DISABLE);
+
/* WaKBLVECSSemaphoreWaitPoll:kbl */
if (IS_KBL_REVID(i915, KBL_REVID_A0, KBL_REVID_E0)) {
wa_write(wal,
Home |
Main Index |
Thread Index |
Old Index