if (!num_regs)
                return -ENODATA;
 
-       *size = PAGE_ALIGN((sizeof(struct guc_debug_capture_list)) +
-                          (num_regs * sizeof(struct guc_mmio_reg)));
+       if (size)
+               *size = PAGE_ALIGN((sizeof(struct guc_debug_capture_list)) +
+                                  (num_regs * sizeof(struct guc_mmio_reg)));
 
        return 0;
 }
        struct intel_gt *gt = guc_to_gt(guc);
        struct intel_engine_cs *engine;
        enum intel_engine_id id;
-       int worst_min_size = 0, num_regs = 0;
+       int worst_min_size = 0;
        size_t tmp = 0;
 
        if (!guc->capture)
                                         (3 * sizeof(struct guc_state_capture_header_t));
 
                if (!guc_capture_getlistsize(guc, 0, GUC_CAPTURE_LIST_TYPE_GLOBAL, 0, &tmp, true))
-                       num_regs += tmp;
+                       worst_min_size += tmp;
 
                if (!guc_capture_getlistsize(guc, 0, GUC_CAPTURE_LIST_TYPE_ENGINE_CLASS,
                                             engine->class, &tmp, true)) {
-                       num_regs += tmp;
+                       worst_min_size += tmp;
                }
                if (!guc_capture_getlistsize(guc, 0, GUC_CAPTURE_LIST_TYPE_ENGINE_INSTANCE,
                                             engine->class, &tmp, true)) {
-                       num_regs += tmp;
+                       worst_min_size += tmp;
                }
        }
 
-       worst_min_size += (num_regs * sizeof(struct guc_mmio_reg));
-
        return worst_min_size;
 }
 
        int spare_size = min_size * GUC_CAPTURE_OVERBUFFER_MULTIPLIER;
        u32 buffer_size = intel_guc_log_section_size_capture(&guc->log);
 
+       /*
+        * NOTE: min_size is much smaller than the capture region allocation (DG2: <80K vs 1MB)
+        * Additionally, its based on space needed to fit all engines getting reset at once
+        * within the same G2H handler task slot. This is very unlikely. However, if GuC really
+        * does run out of space for whatever reason, we will see an separate warning message
+        * when processing the G2H event capture-notification, search for:
+        * INTEL_GUC_STATE_CAPTURE_EVENT_STATUS_NOSPACE.
+        */
        if (min_size < 0)
                drm_warn(&i915->drm, "Failed to calculate GuC error state capture buffer minimum size: %d!\n",
                         min_size);
        else if (min_size > buffer_size)
-               drm_warn(&i915->drm, "GuC error state capture buffer is too small: %d < %d\n",
+               drm_warn(&i915->drm, "GuC error state capture buffer maybe small: %d < %d\n",
                         buffer_size, min_size);
        else if (spare_size > buffer_size)
-               drm_notice(&i915->drm, "GuC error state capture buffer maybe too small: %d < %d (min = %d)\n",
-                          buffer_size, spare_size, min_size);
+               drm_dbg(&i915->drm, "GuC error state capture buffer lacks spare size: %d < %d (min = %d)\n",
+                       buffer_size, spare_size, min_size);
 }
 
 /*
 
 #if defined(CONFIG_DRM_I915_DEBUG_GUC)
 #define GUC_LOG_DEFAULT_CRASH_BUFFER_SIZE      SZ_2M
 #define GUC_LOG_DEFAULT_DEBUG_BUFFER_SIZE      SZ_16M
-#define GUC_LOG_DEFAULT_CAPTURE_BUFFER_SIZE    SZ_4M
+#define GUC_LOG_DEFAULT_CAPTURE_BUFFER_SIZE    SZ_1M
 #elif defined(CONFIG_DRM_I915_DEBUG_GEM)
 #define GUC_LOG_DEFAULT_CRASH_BUFFER_SIZE      SZ_1M
 #define GUC_LOG_DEFAULT_DEBUG_BUFFER_SIZE      SZ_2M
-#define GUC_LOG_DEFAULT_CAPTURE_BUFFER_SIZE    SZ_4M
+#define GUC_LOG_DEFAULT_CAPTURE_BUFFER_SIZE    SZ_1M
 #else
 #define GUC_LOG_DEFAULT_CRASH_BUFFER_SIZE      SZ_8K
 #define GUC_LOG_DEFAULT_DEBUG_BUFFER_SIZE      SZ_64K
-#define GUC_LOG_DEFAULT_CAPTURE_BUFFER_SIZE    SZ_2M
+#define GUC_LOG_DEFAULT_CAPTURE_BUFFER_SIZE    SZ_1M
 #endif
 
 static void guc_log_copy_debuglogs_for_relay(struct intel_guc_log *log);