drm/i915/guc: Add support for define guc_log_size in megabytes.
authorPiotr Piorkowski <piotr.piorkowski@intel.com>
Tue, 5 Jun 2018 15:13:30 +0000 (17:13 +0200)
committerChris Wilson <chris@chris-wilson.co.uk>
Tue, 12 Jun 2018 14:44:47 +0000 (15:44 +0100)
At this moment we can define GuC logs sizes only using pages.
But GuC also allows use for this values expressed in megabytes.
Lets add support for define guc_log_size in megabytes when we
debug of GuC.

v2:
- change buffers size to more friendly (Michał Wajdeczko)
- merge statements in guc_ctl_log_params_flags() (Michał Wajdeczko)
v3:
- fix ifdef (rename DRM_I915_DEBUG_GUC to CONFIG_DRM_I915_DEBUG_GUC)
(Michał Wajdeczko)
- use SZ_* macros to define buffers sizes (Michał Wajdeczko)

Signed-off-by: Piotr Piórkowski <piotr.piorkowski@intel.com>
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Michał Winiarski <michal.winiarski@intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Link: https://patchwork.freedesktop.org/patch/msgid/20180605151330.9954-2-piotr.piorkowski@intel.com
drivers/gpu/drm/i915/intel_guc.c
drivers/gpu/drm/i915/intel_guc_log.h

index 4101264..1aff30b 100644 (file)
@@ -263,7 +263,13 @@ static u32 guc_ctl_log_params_flags(struct intel_guc *guc)
        u32 offset = intel_guc_ggtt_offset(guc, guc->log.vma) >> PAGE_SHIFT;
        u32 flags;
 
+       #if (((CRASH_BUFFER_SIZE) % SZ_1M) == 0)
+       #define UNIT SZ_1M
+       #define FLAG GUC_LOG_ALLOC_IN_MEGABYTE
+       #else
        #define UNIT SZ_4K
+       #define FLAG 0
+       #endif
 
        BUILD_BUG_ON(!CRASH_BUFFER_SIZE);
        BUILD_BUG_ON(!IS_ALIGNED(CRASH_BUFFER_SIZE, UNIT));
@@ -281,12 +287,14 @@ static u32 guc_ctl_log_params_flags(struct intel_guc *guc)
 
        flags = GUC_LOG_VALID |
                GUC_LOG_NOTIFY_ON_HALF_FULL |
+               FLAG |
                ((CRASH_BUFFER_SIZE / UNIT - 1) << GUC_LOG_CRASH_SHIFT) |
                ((DPC_BUFFER_SIZE / UNIT - 1) << GUC_LOG_DPC_SHIFT) |
                ((ISR_BUFFER_SIZE / UNIT - 1) << GUC_LOG_ISR_SHIFT) |
                (offset << GUC_LOG_BUF_ADDR_SHIFT);
 
        #undef UNIT
+       #undef FLAG
 
        return flags;
 }
index dfc0721..7bc763f 100644 (file)
 
 struct intel_guc;
 
+#ifdef CONFIG_DRM_I915_DEBUG_GUC
+#define CRASH_BUFFER_SIZE      SZ_2M
+#define DPC_BUFFER_SIZE                SZ_8M
+#define ISR_BUFFER_SIZE                SZ_8M
+#else
 #define CRASH_BUFFER_SIZE      SZ_8K
 #define DPC_BUFFER_SIZE                SZ_32K
 #define ISR_BUFFER_SIZE                SZ_32K
+#endif
 
 /*
  * While we're using plain log level in i915, GuC controls are much more...