On Mon, Nov 11, 2019 at 11:07:21AM -0800, Matt Roper wrote:
The bspec was just updated with a couple corrections to the TGL MOCS table. Entries 16 and 17 are marked as reserved (overriding the value we inherit from GEN11_MOCS_ENTRIES) and entry 61 shouldn't have the LE_SCF bit applied. Note that since we're intentionally/explicitly overriding table entries from GEN11_MOCS_ENTRIES we should suppress the 'override-init' compiler warnings for this file. Bspec: 45101 Fixes: 2ddf992179c4 ("drm/i915/tgl: Define MOCS entries for Tigerlake") Cc: Tomasz Lis <tomasz.lis@xxxxxxxxx> Cc: Lucas De Marchi <lucas.demarchi@xxxxxxxxx> Signed-off-by: Matt Roper <matthew.d.roper@xxxxxxxxx> --- drivers/gpu/drm/i915/Makefile | 1 + drivers/gpu/drm/i915/gt/intel_mocs.c | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile index e0fd10c0cfb8..8c6b5fa43473 100644 --- a/drivers/gpu/drm/i915/Makefile +++ b/drivers/gpu/drm/i915/Makefile @@ -27,6 +27,7 @@ subdir-ccflags-$(CONFIG_DRM_I915_WERROR) += -Werror # Fine grained warnings disable CFLAGS_i915_pci.o = $(call cc-disable-warning, override-init) CFLAGS_display/intel_fbdev.o = $(call cc-disable-warning, override-init) +CFLAGS_gt/intel_mocs.o = $(call cc-disable-warning, override-init)
I'm pretty sure at some point I had a pragma push/pop to ignore this warning just around the tables and nothing else. Probably it was dropped in a patch revision, because git log doesn't show it. It looks like we even define special macros __diag_push(), __diag_pop(), __diag_ignore() for that, but it doesn't see much use in the kernel, not sure why.
subdir-ccflags-y += \ $(call as-instr,movntdqa (%eax)$(comma)%xmm0,-DCONFIG_AS_MOVNTDQA) diff --git a/drivers/gpu/drm/i915/gt/intel_mocs.c b/drivers/gpu/drm/i915/gt/intel_mocs.c index 6e881c735b20..cd72235553aa 100644 --- a/drivers/gpu/drm/i915/gt/intel_mocs.c +++ b/drivers/gpu/drm/i915/gt/intel_mocs.c @@ -249,6 +249,10 @@ static const struct drm_i915_mocs_entry tigerlake_mocs_table[] = { GEN11_MOCS_ENTRIES, + /* Reserved (overrides values from GEN11_MOCS_ENTRIES) */ + MOCS_ENTRY(16, 0x0, 0x0), + MOCS_ENTRY(17, 0x0, 0x0),
MOCS_ENTRY implicitly define the entry to used. What I think we need is a way to override the used field, so it's more inline with what the bspec is telling us to do... probably something like #define MOCS_ENTRY_SET_UNUSED(__idx) \ [__idx] = { \ .used = 0, \ } Difference is that in tests that read back the value and check if they make sense, they won't test values that are marked as not used. IMO what we should be doing for these fields. Lucas De Marchi
+ /* Implicitly enable L1 - HDC:L1 + L3 + LLC */ MOCS_ENTRY(48, LE_3_WB | LE_TC_1_LLC | LE_LRUM(3), @@ -271,7 +275,7 @@ static const struct drm_i915_mocs_entry tigerlake_mocs_table[] = { L3_1_UC), /* HW Special Case (Displayable) */ MOCS_ENTRY(61, - LE_1_UC | LE_TC_1_LLC | LE_SCF(1), + LE_1_UC | LE_TC_1_LLC, L3_3_WB), }; -- 2.21.0
_______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx