Re: [PATCH v2 7/7] drm/i915/guc: Add support for define guc_log_size in megabytes.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 04 Jun 2018 16:19:47 +0200, Piotr Piorkowski <piotr.piorkowski@xxxxxxxxx> wrote:

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)

Signed-off-by: Piotr Piórkowski <piotr.piorkowski@xxxxxxxxx>
Cc: Michal Wajdeczko <michal.wajdeczko@xxxxxxxxx>
Cc: Michał Winiarski <michal.winiarski@xxxxxxxxx>
Cc: Joonas Lahtinen <joonas.lahtinen@xxxxxxxxxxxxxxx>
Cc: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx>
---
 drivers/gpu/drm/i915/intel_guc.c     | 8 ++++++++
 drivers/gpu/drm/i915/intel_guc_log.h | 6 ++++++
 2 files changed, 14 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_guc.c b/drivers/gpu/drm/i915/intel_guc.c
index 68b94c23f26b..27a23f7ee4f8 100644
--- a/drivers/gpu/drm/i915/intel_guc.c
+++ b/drivers/gpu/drm/i915/intel_guc.c
@@ -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) % (1 << 20)) == 0)
+	#define UNIT (1 << 20)

btw, there are some nice predefined macros that can be used here
instead of magic shifts ;)

	#if (CRASH_BUFFER_SIZE % SZ_1M) == 0
	#define UNIT SZ_1M
...
	#define UNIT SZ_4K

+	#define FLAG GUC_LOG_ALLOC_IN_MEGABYTE
+	#else
 	#define UNIT (4 << 10)
+	#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

I'm afraid that someone may view FLAG/UNIT as too generic,
maybe better to wait for other review comments..

	return flags;
 }
diff --git a/drivers/gpu/drm/i915/intel_guc_log.h b/drivers/gpu/drm/i915/intel_guc_log.h
index 4ebb19f87b54..4feaeba1be1e 100644
--- a/drivers/gpu/drm/i915/intel_guc_log.h
+++ b/drivers/gpu/drm/i915/intel_guc_log.h
@@ -34,9 +34,15 @@
struct intel_guc;
+#ifdef DRM_I915_DEBUG_GUC

you probably wanted to use CONFIG_DRM_I915_DEBUG_GUC here

+#define CRASH_BUFFER_SIZE	(2 * 1024 * 1024)
+#define DPC_BUFFER_SIZE		(8 * 1024 * 1024)
+#define ISR_BUFFER_SIZE		(8 * 1024 * 1024)

other macros are also available:

SZ_2M
SZ_8M

+#else
 #define CRASH_BUFFER_SIZE	(8 * 1024)
 #define DPC_BUFFER_SIZE		(32 * 1024)
 #define ISR_BUFFER_SIZE		(32 * 1024)

SZ_8K
SZ_32K

+#endif
/*
* While we're using plain log level in i915, GuC controls are much more...

with #ifdef CONFIG fixed, and
preferably with SZ_xx macros, this is

Reviewed-by: Michal Wajdeczko <michal.wajdeczko@xxxxxxxxx>
_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux