All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] DC pull request cleanup
@ 2017-09-27 19:46 Harry Wentland
  2017-09-27 19:46 ` [PATCH 1/3] drm/amd/display: Use kernel alloc/free Harry Wentland
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Harry Wentland @ 2017-09-27 19:46 UTC (permalink / raw)
  To: amd-gfx, dri-devel; +Cc: alexander.deucher, daniel.vetter, daniel.vetter

Patches to make DC use kzalloc/krealloc/kfree directly.

Also updating the TODO list after a closer look at I2C in DC.

Harry Wentland (3):
  drm/amd/display: Use kernel alloc/free
  drm/amd/display: Remove alloc/free macros
  drm/amd/display: DC I2C review

 drivers/gpu/drm/amd/display/TODO                   | 26 +++++----
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c  |  2 +-
 drivers/gpu/drm/amd/display/dc/basics/logger.c     | 18 ++++---
 drivers/gpu/drm/amd/display/dc/basics/vector.c     | 19 +++----
 drivers/gpu/drm/amd/display/dc/bios/bios_parser.c  | 17 +++---
 drivers/gpu/drm/amd/display/dc/bios/bios_parser2.c | 14 ++---
 drivers/gpu/drm/amd/display/dc/calcs/dce_calcs.c   |  5 +-
 drivers/gpu/drm/amd/display/dc/calcs/dcn_calcs.c   |  6 +--
 drivers/gpu/drm/amd/display/dc/core/dc.c           | 42 ++++++++-------
 drivers/gpu/drm/amd/display/dc/core/dc_link.c      |  6 +--
 drivers/gpu/drm/amd/display/dc/core/dc_link_ddc.c  | 18 +++----
 drivers/gpu/drm/amd/display/dc/core/dc_resource.c  |  2 +-
 drivers/gpu/drm/amd/display/dc/core/dc_sink.c      | 11 ++--
 drivers/gpu/drm/amd/display/dc/core/dc_stream.c    |  6 +--
 drivers/gpu/drm/amd/display/dc/core/dc_surface.c   | 15 +++---
 drivers/gpu/drm/amd/display/dc/dce/dce_abm.c       |  4 +-
 drivers/gpu/drm/amd/display/dc/dce/dce_audio.c     |  4 +-
 .../gpu/drm/amd/display/dc/dce/dce_clock_source.c  | 12 +++--
 drivers/gpu/drm/amd/display/dc/dce/dce_clocks.c    | 10 ++--
 drivers/gpu/drm/amd/display/dc/dce/dce_dmcu.c      |  6 +--
 drivers/gpu/drm/amd/display/dc/dce/dce_ipp.c       |  2 +-
 .../gpu/drm/amd/display/dc/dce/dce_link_encoder.c  |  2 +-
 drivers/gpu/drm/amd/display/dc/dce/dce_opp.c       |  2 +-
 .../drm/amd/display/dc/dce100/dce100_resource.c    | 43 +++++++--------
 .../drm/amd/display/dc/dce110/dce110_compressor.c  |  6 +--
 .../drm/amd/display/dc/dce110/dce110_resource.c    | 61 ++++++++++++----------
 .../drm/amd/display/dc/dce112/dce112_compressor.c  |  6 +--
 .../drm/amd/display/dc/dce112/dce112_resource.c    | 43 +++++++--------
 .../drm/amd/display/dc/dce120/dce120_resource.c    | 43 +++++++--------
 .../drm/amd/display/dc/dce80/dce80_compressor.c    |  6 +--
 .../gpu/drm/amd/display/dc/dce80/dce80_resource.c  | 47 +++++++++--------
 drivers/gpu/drm/amd/display/dc/dcn10/dcn10_ipp.c   |  2 +-
 drivers/gpu/drm/amd/display/dc/dcn10/dcn10_opp.c   |  2 +-
 .../gpu/drm/amd/display/dc/dcn10/dcn10_resource.c  | 56 ++++++++++----------
 drivers/gpu/drm/amd/display/dc/dm_services.h       |  4 --
 drivers/gpu/drm/amd/display/dc/gpio/gpio_base.c    |  4 +-
 drivers/gpu/drm/amd/display/dc/gpio/gpio_service.c | 21 ++++----
 drivers/gpu/drm/amd/display/dc/gpio/hw_ddc.c       |  6 +--
 drivers/gpu/drm/amd/display/dc/gpio/hw_factory.c   |  2 +-
 drivers/gpu/drm/amd/display/dc/gpio/hw_hpd.c       |  6 +--
 .../amd/display/dc/i2caux/dce100/i2caux_dce100.c   |  4 +-
 .../display/dc/i2caux/dce110/aux_engine_dce110.c   |  6 +--
 .../dc/i2caux/dce110/i2c_hw_engine_dce110.c        |  7 +--
 .../dc/i2caux/dce110/i2c_sw_engine_dce110.c        |  7 +--
 .../amd/display/dc/i2caux/dce110/i2caux_dce110.c   |  6 +--
 .../amd/display/dc/i2caux/dce112/i2caux_dce112.c   |  4 +-
 .../amd/display/dc/i2caux/dce120/i2caux_dce120.c   |  4 +-
 .../display/dc/i2caux/dce80/i2c_hw_engine_dce80.c  |  6 +--
 .../display/dc/i2caux/dce80/i2c_sw_engine_dce80.c  |  6 +--
 .../drm/amd/display/dc/i2caux/dce80/i2caux_dce80.c |  6 +--
 .../drm/amd/display/dc/i2caux/dcn10/i2caux_dcn10.c |  4 +-
 .../display/dc/i2caux/diagnostics/i2caux_diag.c    |  7 +--
 .../gpu/drm/amd/display/dc/i2caux/i2c_sw_engine.c  |  6 +--
 .../amd/display/dc/irq/dce110/irq_service_dce110.c |  5 +-
 .../amd/display/dc/irq/dce120/irq_service_dce120.c |  5 +-
 .../amd/display/dc/irq/dce80/irq_service_dce80.c   |  5 +-
 .../amd/display/dc/irq/dcn10/irq_service_dcn10.c   |  5 +-
 drivers/gpu/drm/amd/display/dc/irq/irq_service.c   |  2 +-
 .../amd/display/dc/virtual/virtual_link_encoder.c  |  2 +-
 .../display/dc/virtual/virtual_stream_encoder.c    |  4 +-
 .../drm/amd/display/modules/freesync/freesync.c    | 14 ++---
 drivers/gpu/drm/amd/display/replace_alloc.cocci    | 25 +++++++++
 62 files changed, 399 insertions(+), 348 deletions(-)
 create mode 100644 drivers/gpu/drm/amd/display/replace_alloc.cocci

-- 
2.11.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 1/3] drm/amd/display: Use kernel alloc/free
  2017-09-27 19:46 [PATCH 0/3] DC pull request cleanup Harry Wentland
@ 2017-09-27 19:46 ` Harry Wentland
       [not found]   ` <20170927194641.29146-2-harry.wentland-5C7GfCeVMHo@public.gmane.org>
  2017-09-27 19:46 ` [PATCH 2/3] drm/amd/display: Remove alloc/free macros Harry Wentland
       [not found] ` <20170927194641.29146-1-harry.wentland-5C7GfCeVMHo@public.gmane.org>
  2 siblings, 1 reply; 7+ messages in thread
From: Harry Wentland @ 2017-09-27 19:46 UTC (permalink / raw)
  To: amd-gfx, dri-devel; +Cc: alexander.deucher, daniel.vetter, daniel.vetter

Abstractions are frowned upon.

Signed-off-by: Harry Wentland <harry.wentland@amd.com>
---
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c  |  2 +-
 drivers/gpu/drm/amd/display/dc/basics/logger.c     | 18 ++++---
 drivers/gpu/drm/amd/display/dc/basics/vector.c     | 19 +++----
 drivers/gpu/drm/amd/display/dc/bios/bios_parser.c  | 17 +++---
 drivers/gpu/drm/amd/display/dc/bios/bios_parser2.c | 14 ++---
 drivers/gpu/drm/amd/display/dc/calcs/dce_calcs.c   |  5 +-
 drivers/gpu/drm/amd/display/dc/calcs/dcn_calcs.c   |  6 +--
 drivers/gpu/drm/amd/display/dc/core/dc.c           | 42 ++++++++-------
 drivers/gpu/drm/amd/display/dc/core/dc_link.c      |  6 +--
 drivers/gpu/drm/amd/display/dc/core/dc_link_ddc.c  | 18 +++----
 drivers/gpu/drm/amd/display/dc/core/dc_resource.c  |  2 +-
 drivers/gpu/drm/amd/display/dc/core/dc_sink.c      | 11 ++--
 drivers/gpu/drm/amd/display/dc/core/dc_stream.c    |  6 +--
 drivers/gpu/drm/amd/display/dc/core/dc_surface.c   | 15 +++---
 drivers/gpu/drm/amd/display/dc/dce/dce_abm.c       |  4 +-
 drivers/gpu/drm/amd/display/dc/dce/dce_audio.c     |  4 +-
 .../gpu/drm/amd/display/dc/dce/dce_clock_source.c  | 12 +++--
 drivers/gpu/drm/amd/display/dc/dce/dce_clocks.c    | 10 ++--
 drivers/gpu/drm/amd/display/dc/dce/dce_dmcu.c      |  6 +--
 drivers/gpu/drm/amd/display/dc/dce/dce_ipp.c       |  2 +-
 .../gpu/drm/amd/display/dc/dce/dce_link_encoder.c  |  2 +-
 drivers/gpu/drm/amd/display/dc/dce/dce_opp.c       |  2 +-
 .../drm/amd/display/dc/dce100/dce100_resource.c    | 43 +++++++--------
 .../drm/amd/display/dc/dce110/dce110_compressor.c  |  6 +--
 .../drm/amd/display/dc/dce110/dce110_resource.c    | 61 ++++++++++++----------
 .../drm/amd/display/dc/dce112/dce112_compressor.c  |  6 +--
 .../drm/amd/display/dc/dce112/dce112_resource.c    | 43 +++++++--------
 .../drm/amd/display/dc/dce120/dce120_resource.c    | 43 +++++++--------
 .../drm/amd/display/dc/dce80/dce80_compressor.c    |  6 +--
 .../gpu/drm/amd/display/dc/dce80/dce80_resource.c  | 47 +++++++++--------
 drivers/gpu/drm/amd/display/dc/dcn10/dcn10_ipp.c   |  2 +-
 drivers/gpu/drm/amd/display/dc/dcn10/dcn10_opp.c   |  2 +-
 .../gpu/drm/amd/display/dc/dcn10/dcn10_resource.c  | 56 ++++++++++----------
 drivers/gpu/drm/amd/display/dc/gpio/gpio_base.c    |  4 +-
 drivers/gpu/drm/amd/display/dc/gpio/gpio_service.c | 21 ++++----
 drivers/gpu/drm/amd/display/dc/gpio/hw_ddc.c       |  6 +--
 drivers/gpu/drm/amd/display/dc/gpio/hw_factory.c   |  2 +-
 drivers/gpu/drm/amd/display/dc/gpio/hw_hpd.c       |  6 +--
 .../amd/display/dc/i2caux/dce100/i2caux_dce100.c   |  4 +-
 .../display/dc/i2caux/dce110/aux_engine_dce110.c   |  6 +--
 .../dc/i2caux/dce110/i2c_hw_engine_dce110.c        |  7 +--
 .../dc/i2caux/dce110/i2c_sw_engine_dce110.c        |  7 +--
 .../amd/display/dc/i2caux/dce110/i2caux_dce110.c   |  6 +--
 .../amd/display/dc/i2caux/dce112/i2caux_dce112.c   |  4 +-
 .../amd/display/dc/i2caux/dce120/i2caux_dce120.c   |  4 +-
 .../display/dc/i2caux/dce80/i2c_hw_engine_dce80.c  |  6 +--
 .../display/dc/i2caux/dce80/i2c_sw_engine_dce80.c  |  6 +--
 .../drm/amd/display/dc/i2caux/dce80/i2caux_dce80.c |  6 +--
 .../drm/amd/display/dc/i2caux/dcn10/i2caux_dcn10.c |  4 +-
 .../display/dc/i2caux/diagnostics/i2caux_diag.c    |  7 +--
 .../gpu/drm/amd/display/dc/i2caux/i2c_sw_engine.c  |  6 +--
 .../amd/display/dc/irq/dce110/irq_service_dce110.c |  5 +-
 .../amd/display/dc/irq/dce120/irq_service_dce120.c |  5 +-
 .../amd/display/dc/irq/dce80/irq_service_dce80.c   |  5 +-
 .../amd/display/dc/irq/dcn10/irq_service_dcn10.c   |  5 +-
 drivers/gpu/drm/amd/display/dc/irq/irq_service.c   |  2 +-
 .../amd/display/dc/virtual/virtual_link_encoder.c  |  2 +-
 .../display/dc/virtual/virtual_stream_encoder.c    |  4 +-
 .../drm/amd/display/modules/freesync/freesync.c    | 14 ++---
 drivers/gpu/drm/amd/display/replace_alloc.cocci    | 25 +++++++++
 60 files changed, 387 insertions(+), 330 deletions(-)
 create mode 100644 drivers/gpu/drm/amd/display/replace_alloc.cocci

diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
index 36635486b937..2afa99c0e95e 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -2429,7 +2429,7 @@ dm_crtc_duplicate_state(struct drm_crtc *crtc)
 	if (WARN_ON(!crtc->state))
 		return NULL;
 
-	state = dm_alloc(sizeof(*state));
+	state = kzalloc(sizeof(*state), GFP_ATOMIC);
 
 	__drm_atomic_helper_crtc_duplicate_state(crtc, &state->base);
 
diff --git a/drivers/gpu/drm/amd/display/dc/basics/logger.c b/drivers/gpu/drm/amd/display/dc/basics/logger.c
index 5895dd3903a3..9180050424b9 100644
--- a/drivers/gpu/drm/amd/display/dc/basics/logger.c
+++ b/drivers/gpu/drm/amd/display/dc/basics/logger.c
@@ -70,8 +70,8 @@ static bool construct(struct dc_context *ctx, struct dal_logger *logger,
 {
 	/* malloc buffer and init offsets */
 	logger->log_buffer_size = DAL_LOGGER_BUFFER_MAX_SIZE;
-	logger->log_buffer = (char *)dm_alloc(logger->log_buffer_size *
-		sizeof(char));
+	logger->log_buffer = (char *)kzalloc(logger->log_buffer_size * sizeof(char),
+					     GFP_ATOMIC);
 
 	if (!logger->log_buffer)
 		return false;
@@ -97,7 +97,7 @@ static bool construct(struct dc_context *ctx, struct dal_logger *logger,
 static void destruct(struct dal_logger *logger)
 {
 	if (logger->log_buffer) {
-		dm_free(logger->log_buffer);
+		kfree(logger->log_buffer);
 		logger->log_buffer = NULL;
 	}
 }
@@ -105,12 +105,13 @@ static void destruct(struct dal_logger *logger)
 struct dal_logger *dal_logger_create(struct dc_context *ctx, uint32_t log_mask)
 {
 	/* malloc struct */
-	struct dal_logger *logger = dm_alloc(sizeof(struct dal_logger));
+	struct dal_logger *logger = kzalloc(sizeof(struct dal_logger),
+					    GFP_ATOMIC);
 
 	if (!logger)
 		return NULL;
 	if (!construct(ctx, logger, log_mask)) {
-		dm_free(logger);
+		kfree(logger);
 		return NULL;
 	}
 
@@ -122,7 +123,7 @@ uint32_t dal_logger_destroy(struct dal_logger **logger)
 	if (logger == NULL || *logger == NULL)
 		return 1;
 	destruct(*logger);
-	dm_free(*logger);
+	kfree(*logger);
 	*logger = NULL;
 
 	return 0;
@@ -390,7 +391,8 @@ void dm_logger_open(
 	entry->type = log_type;
 	entry->logger = logger;
 
-	entry->buf = dm_alloc(DAL_LOGGER_BUFFER_MAX_SIZE * sizeof(char));
+	entry->buf = kzalloc(DAL_LOGGER_BUFFER_MAX_SIZE * sizeof(char),
+			     GFP_ATOMIC);
 
 	entry->buf_offset = 0;
 	entry->max_buf_bytes = DAL_LOGGER_BUFFER_MAX_SIZE * sizeof(char);
@@ -421,7 +423,7 @@ void dm_logger_close(struct log_entry *entry)
 
 cleanup:
 	if (entry->buf) {
-		dm_free(entry->buf);
+		kfree(entry->buf);
 		entry->buf = NULL;
 		entry->buf_offset = 0;
 		entry->max_buf_bytes = 0;
diff --git a/drivers/gpu/drm/amd/display/dc/basics/vector.c b/drivers/gpu/drm/amd/display/dc/basics/vector.c
index bb72a1857160..eec10930f4a1 100644
--- a/drivers/gpu/drm/amd/display/dc/basics/vector.c
+++ b/drivers/gpu/drm/amd/display/dc/basics/vector.c
@@ -40,7 +40,7 @@ bool dal_vector_construct(
 		return false;
 	}
 
-	vector->container = dm_alloc(struct_size * capacity);
+	vector->container = kzalloc(struct_size * capacity, GFP_ATOMIC);
 	if (vector->container == NULL)
 		return false;
 	vector->capacity = capacity;
@@ -67,7 +67,7 @@ bool dal_vector_presized_costruct(
 		return false;
 	}
 
-	vector->container = dm_alloc(struct_size * count);
+	vector->container = kzalloc(struct_size * count, GFP_ATOMIC);
 
 	if (vector->container == NULL)
 		return false;
@@ -95,7 +95,7 @@ struct vector *dal_vector_presized_create(
 	void *initial_value,
 	uint32_t struct_size)
 {
-	struct vector *vector = dm_alloc(sizeof(struct vector));
+	struct vector *vector = kzalloc(sizeof(struct vector), GFP_ATOMIC);
 
 	if (vector == NULL)
 		return NULL;
@@ -105,7 +105,7 @@ struct vector *dal_vector_presized_create(
 		return vector;
 
 	BREAK_TO_DEBUGGER();
-	dm_free(vector);
+	kfree(vector);
 	return NULL;
 }
 
@@ -114,7 +114,7 @@ struct vector *dal_vector_create(
 	uint32_t capacity,
 	uint32_t struct_size)
 {
-	struct vector *vector = dm_alloc(sizeof(struct vector));
+	struct vector *vector = kzalloc(sizeof(struct vector), GFP_ATOMIC);
 
 	if (vector == NULL)
 		return NULL;
@@ -123,7 +123,7 @@ struct vector *dal_vector_create(
 		return vector;
 
 	BREAK_TO_DEBUGGER();
-	dm_free(vector);
+	kfree(vector);
 	return NULL;
 }
 
@@ -131,7 +131,7 @@ void dal_vector_destruct(
 	struct vector *vector)
 {
 	if (vector->container != NULL)
-		dm_free(vector->container);
+		kfree(vector->container);
 	vector->count = 0;
 	vector->capacity = 0;
 }
@@ -142,7 +142,7 @@ void dal_vector_destroy(
 	if (vector == NULL || *vector == NULL)
 		return;
 	dal_vector_destruct(*vector);
-	dm_free(*vector);
+	kfree(*vector);
 	*vector = NULL;
 }
 
@@ -290,7 +290,8 @@ bool dal_vector_reserve(struct vector *vector, uint32_t capacity)
 	if (capacity <= vector->capacity)
 		return true;
 
-	new_container = dm_realloc(vector->container, capacity * vector->struct_size);
+	new_container = krealloc(vector->container,
+				 capacity * vector->struct_size, GFP_KERNEL);
 
 	if (new_container) {
 		vector->container = new_container;
diff --git a/drivers/gpu/drm/amd/display/dc/bios/bios_parser.c b/drivers/gpu/drm/amd/display/dc/bios/bios_parser.c
index 2c411441771b..909aeb6e35bd 100644
--- a/drivers/gpu/drm/amd/display/dc/bios/bios_parser.c
+++ b/drivers/gpu/drm/amd/display/dc/bios/bios_parser.c
@@ -116,14 +116,14 @@ struct dc_bios *bios_parser_create(
 {
 	struct bios_parser *bp = NULL;
 
-	bp = dm_alloc(sizeof(struct bios_parser));
+	bp = kzalloc(sizeof(struct bios_parser), GFP_ATOMIC);
 	if (!bp)
 		return NULL;
 
 	if (bios_parser_construct(bp, init, dce_version))
 		return &bp->base;
 
-	dm_free(bp);
+	kfree(bp);
 	BREAK_TO_DEBUGGER();
 	return NULL;
 }
@@ -131,10 +131,10 @@ struct dc_bios *bios_parser_create(
 static void destruct(struct bios_parser *bp)
 {
 	if (bp->base.bios_local_image)
-		dm_free(bp->base.bios_local_image);
+		kfree(bp->base.bios_local_image);
 
 	if (bp->base.integrated_info)
-		dm_free(bp->base.integrated_info);
+		kfree(bp->base.integrated_info);
 }
 
 static void bios_parser_destroy(struct dc_bios **dcb)
@@ -148,7 +148,7 @@ static void bios_parser_destroy(struct dc_bios **dcb)
 
 	destruct(bp);
 
-	dm_free(bp);
+	kfree(bp);
 	*dcb = NULL;
 }
 
@@ -3531,7 +3531,8 @@ static void process_ext_display_connection_info(struct bios_parser *bp)
 		uint8_t *original_bios;
 		/* Step 1: Replace bios image with the new copy which will be
 		 * patched */
-		bp->base.bios_local_image = dm_alloc(bp->base.bios_size);
+		bp->base.bios_local_image = kzalloc(bp->base.bios_size,
+						    GFP_ATOMIC);
 		if (bp->base.bios_local_image == NULL) {
 			BREAK_TO_DEBUGGER();
 			/* Failed to alloc bp->base.bios_local_image */
@@ -3965,7 +3966,7 @@ static struct integrated_info *bios_parser_create_integrated_info(
 	struct bios_parser *bp = BP_FROM_DCB(dcb);
 	struct integrated_info *info = NULL;
 
-	info = dm_alloc(sizeof(struct integrated_info));
+	info = kzalloc(sizeof(struct integrated_info), GFP_ATOMIC);
 
 	if (info == NULL) {
 		ASSERT_CRITICAL(0);
@@ -3975,7 +3976,7 @@ static struct integrated_info *bios_parser_create_integrated_info(
 	if (construct_integrated_info(bp, info) == BP_RESULT_OK)
 		return info;
 
-	dm_free(info);
+	kfree(info);
 
 	return NULL;
 }
diff --git a/drivers/gpu/drm/amd/display/dc/bios/bios_parser2.c b/drivers/gpu/drm/amd/display/dc/bios/bios_parser2.c
index 95fe50f62c57..70f58caeb79d 100644
--- a/drivers/gpu/drm/amd/display/dc/bios/bios_parser2.c
+++ b/drivers/gpu/drm/amd/display/dc/bios/bios_parser2.c
@@ -107,10 +107,10 @@ static struct atom_encoder_caps_record *get_encoder_cap_record(
 static void destruct(struct bios_parser *bp)
 {
 	if (bp->base.bios_local_image)
-		dm_free(bp->base.bios_local_image);
+		kfree(bp->base.bios_local_image);
 
 	if (bp->base.integrated_info)
-		dm_free(bp->base.integrated_info);
+		kfree(bp->base.integrated_info);
 }
 
 static void firmware_parser_destroy(struct dc_bios **dcb)
@@ -124,7 +124,7 @@ static void firmware_parser_destroy(struct dc_bios **dcb)
 
 	destruct(bp);
 
-	dm_free(bp);
+	kfree(bp);
 	*dcb = NULL;
 }
 
@@ -2030,7 +2030,7 @@ static struct integrated_info *bios_parser_create_integrated_info(
 	struct bios_parser *bp = BP_FROM_DCB(dcb);
 	struct integrated_info *info = NULL;
 
-	info = dm_alloc(sizeof(struct integrated_info));
+	info = kzalloc(sizeof(struct integrated_info), GFP_ATOMIC);
 
 	if (info == NULL) {
 		ASSERT_CRITICAL(0);
@@ -2040,7 +2040,7 @@ static struct integrated_info *bios_parser_create_integrated_info(
 	if (construct_integrated_info(bp, info) == BP_RESULT_OK)
 	return info;
 
-	dm_free(info);
+	kfree(info);
 
 	return NULL;
 }
@@ -2205,14 +2205,14 @@ struct dc_bios *firmware_parser_create(
 {
 	struct bios_parser *bp = NULL;
 
-	bp = dm_alloc(sizeof(struct bios_parser));
+	bp = kzalloc(sizeof(struct bios_parser), GFP_ATOMIC);
 	if (!bp)
 		return NULL;
 
 	if (bios_parser_construct(bp, init, dce_version))
 		return &bp->base;
 
-	dm_free(bp);
+	kfree(bp);
 	return NULL;
 }
 
diff --git a/drivers/gpu/drm/amd/display/dc/calcs/dce_calcs.c b/drivers/gpu/drm/amd/display/dc/calcs/dce_calcs.c
index dba25853f7f9..937d1af669be 100644
--- a/drivers/gpu/drm/amd/display/dc/calcs/dce_calcs.c
+++ b/drivers/gpu/drm/amd/display/dc/calcs/dce_calcs.c
@@ -2792,7 +2792,8 @@ bool bw_calcs(struct dc_context *ctx,
 	int pipe_count,
 	struct dce_bw_output *calcs_output)
 {
-	struct bw_calcs_data *data = dm_alloc(sizeof(struct bw_calcs_data));
+	struct bw_calcs_data *data = kzalloc(sizeof(struct bw_calcs_data),
+					     GFP_ATOMIC);
 
 	populate_initial_data(pipe, pipe_count, data);
 
@@ -3248,7 +3249,7 @@ bool bw_calcs(struct dc_context *ctx,
 		calcs_output->sclk_khz = 0;
 	}
 
-	dm_free(data);
+	kfree(data);
 
 	return is_display_configuration_supported(vbios, calcs_output);
 }
diff --git a/drivers/gpu/drm/amd/display/dc/calcs/dcn_calcs.c b/drivers/gpu/drm/amd/display/dc/calcs/dcn_calcs.c
index 1b0f64756be6..c3a57e6862d6 100644
--- a/drivers/gpu/drm/amd/display/dc/calcs/dcn_calcs.c
+++ b/drivers/gpu/drm/amd/display/dc/calcs/dcn_calcs.c
@@ -481,8 +481,8 @@ static void dcn_dml_wm_override(
 {
 	int i, in_idx, active_count;
 
-	struct _vcs_dpi_display_e2e_pipe_params_st *input = dm_alloc(pool->pipe_count *
-					sizeof(struct _vcs_dpi_display_e2e_pipe_params_st));
+	struct _vcs_dpi_display_e2e_pipe_params_st *input = kzalloc(pool->pipe_count * sizeof(struct _vcs_dpi_display_e2e_pipe_params_st),
+								    GFP_ATOMIC);
 	struct wm {
 		double urgent;
 		struct _vcs_dpi_cstate_pstate_watermarks_st cpstate;
@@ -560,7 +560,7 @@ static void dcn_dml_wm_override(
 			pipe->plane_state->flip_immediate);
 		in_idx++;
 	}
-	dm_free(input);
+	kfree(input);
 }
 
 static void split_stream_across_pipes(
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c
index 58c5083bef2a..e1aaee23e499 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc.c
@@ -113,7 +113,7 @@ static bool create_links(
 	}
 
 	for (i = 0; i < num_virtual_links; i++) {
-		struct dc_link *link = dm_alloc(sizeof(*link));
+		struct dc_link *link = kzalloc(sizeof(*link), GFP_ATOMIC);
 		struct encoder_init_data enc_init = {0};
 
 		if (link == NULL) {
@@ -127,7 +127,7 @@ static bool create_links(
 		link->link_id.type = OBJECT_TYPE_CONNECTOR;
 		link->link_id.id = CONNECTOR_ID_VIRTUAL;
 		link->link_id.enum_id = ENUM_ID_1;
-		link->link_enc = dm_alloc(sizeof(*link->link_enc));
+		link->link_enc = kzalloc(sizeof(*link->link_enc), GFP_ATOMIC);
 
 		enc_init.ctx = dc->ctx;
 		enc_init.channel = CHANNEL_ID_UNKNOWN;
@@ -413,20 +413,20 @@ static void destruct(struct dc *dc)
 	if (dc->ctx->logger)
 		dal_logger_destroy(&dc->ctx->logger);
 
-	dm_free(dc->ctx);
+	kfree(dc->ctx);
 	dc->ctx = NULL;
 
-	dm_free(dc->bw_vbios);
+	kfree(dc->bw_vbios);
 	dc->bw_vbios = NULL;
 
-	dm_free(dc->bw_dceip);
+	kfree(dc->bw_dceip);
 	dc->bw_dceip = NULL;
 
 #ifdef CONFIG_DRM_AMD_DC_DCN1_0
-	dm_free(dc->dcn_soc);
+	kfree(dc->dcn_soc);
 	dc->dcn_soc = NULL;
 
-	dm_free(dc->dcn_ip);
+	kfree(dc->dcn_ip);
 	dc->dcn_ip = NULL;
 
 #endif
@@ -436,12 +436,15 @@ static bool construct(struct dc *dc,
 		const struct dc_init_data *init_params)
 {
 	struct dal_logger *logger;
-	struct dc_context *dc_ctx = dm_alloc(sizeof(*dc_ctx));
-	struct bw_calcs_dceip *dc_dceip = dm_alloc(sizeof(*dc_dceip));
-	struct bw_calcs_vbios *dc_vbios = dm_alloc(sizeof(*dc_vbios));
+	struct dc_context *dc_ctx = kzalloc(sizeof(*dc_ctx), GFP_ATOMIC);
+	struct bw_calcs_dceip *dc_dceip = kzalloc(sizeof(*dc_dceip),
+						  GFP_ATOMIC);
+	struct bw_calcs_vbios *dc_vbios = kzalloc(sizeof(*dc_vbios),
+						  GFP_ATOMIC);
 #ifdef CONFIG_DRM_AMD_DC_DCN1_0
-	struct dcn_soc_bounding_box *dcn_soc = dm_alloc(sizeof(*dcn_soc));
-	struct dcn_ip_params *dcn_ip = dm_alloc(sizeof(*dcn_ip));
+	struct dcn_soc_bounding_box *dcn_soc = kzalloc(sizeof(*dcn_soc),
+						       GFP_ATOMIC);
+	struct dcn_ip_params *dcn_ip = kzalloc(sizeof(*dcn_ip), GFP_ATOMIC);
 #endif
 
 	enum dce_version dc_version = DCE_VERSION_UNKNOWN;
@@ -604,7 +607,7 @@ void ProgramPixelDurationV(unsigned int pixelClockInKHz )
 
 struct dc *dc_create(const struct dc_init_data *init_params)
  {
-	struct dc *dc = dm_alloc(sizeof(*dc));
+	struct dc *dc = kzalloc(sizeof(*dc), GFP_ATOMIC);
 	unsigned int full_pipe_count;
 
 	if (NULL == dc)
@@ -638,7 +641,7 @@ struct dc *dc_create(const struct dc_init_data *init_params)
 	return dc;
 
 construct_fail:
-	dm_free(dc);
+	kfree(dc);
 
 alloc_fail:
 	return NULL;
@@ -647,7 +650,7 @@ struct dc *dc_create(const struct dc_init_data *init_params)
 void dc_destroy(struct dc **dc)
 {
 	destruct(*dc);
-	dm_free(*dc);
+	kfree(*dc);
 	*dc = NULL;
 }
 
@@ -900,7 +903,7 @@ bool dc_commit_planes_to_stream(
 	struct dc_scaling_info scaling_info[MAX_SURFACES];
 	int i;
 	struct dc_stream_update *stream_update =
-			dm_alloc(sizeof(struct dc_stream_update));
+			kzalloc(sizeof(struct dc_stream_update), GFP_ATOMIC);
 
 	if (!stream_update) {
 		BREAK_TO_DEBUGGER();
@@ -951,13 +954,14 @@ bool dc_commit_planes_to_stream(
 
 	dc_post_update_surfaces_to_stream(dc);
 
-	dm_free(stream_update);
+	kfree(stream_update);
 	return true;
 }
 
 struct dc_state *dc_create_state(void)
 {
-	struct dc_state *context = dm_alloc(sizeof(struct dc_state));
+	struct dc_state *context = kzalloc(sizeof(struct dc_state),
+					   GFP_ATOMIC);
 
 	if (!context)
 		return NULL;
@@ -979,7 +983,7 @@ void dc_release_state(struct dc_state *context)
 
 	if (atomic_read(&context->ref_count) == 0) {
 		dc_resource_state_destruct(context);
-		dm_free(context);
+		kfree(context);
 	}
 }
 
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_link.c b/drivers/gpu/drm/amd/display/dc/core/dc_link.c
index 845ec421d861..23ff56ac2f5e 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc_link.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc_link.c
@@ -1100,7 +1100,7 @@ static bool construct(
 struct dc_link *link_create(const struct link_init_data *init_params)
 {
 	struct dc_link *link =
-			dm_alloc(sizeof(*link));
+			kzalloc(sizeof(*link), GFP_ATOMIC);
 
 	if (NULL == link)
 		goto alloc_fail;
@@ -1111,7 +1111,7 @@ struct dc_link *link_create(const struct link_init_data *init_params)
 	return link;
 
 construct_fail:
-	dm_free(link);
+	kfree(link);
 
 alloc_fail:
 	return NULL;
@@ -1120,7 +1120,7 @@ struct dc_link *link_create(const struct link_init_data *init_params)
 void link_destroy(struct dc_link **link)
 {
 	destruct(*link);
-	dm_free(*link);
+	kfree(*link);
 	*link = NULL;
 }
 
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_link_ddc.c b/drivers/gpu/drm/amd/display/dc/core/dc_link_ddc.c
index d09e539397ea..57bedf360be7 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc_link_ddc.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc_link_ddc.c
@@ -130,7 +130,7 @@ struct i2c_payloads *dal_ddc_i2c_payloads_create(struct dc_context *ctx, uint32_
 {
 	struct i2c_payloads *payloads;
 
-	payloads = dm_alloc(sizeof(struct i2c_payloads));
+	payloads = kzalloc(sizeof(struct i2c_payloads), GFP_ATOMIC);
 
 	if (!payloads)
 		return NULL;
@@ -139,7 +139,7 @@ struct i2c_payloads *dal_ddc_i2c_payloads_create(struct dc_context *ctx, uint32_
 		&payloads->payloads, ctx, count, sizeof(struct i2c_payload)))
 		return payloads;
 
-	dm_free(payloads);
+	kfree(payloads);
 	return NULL;
 
 }
@@ -159,7 +159,7 @@ void dal_ddc_i2c_payloads_destroy(struct i2c_payloads **p)
 	if (!p || !*p)
 		return;
 	dal_vector_destruct(&(*p)->payloads);
-	dm_free(*p);
+	kfree(*p);
 	*p = NULL;
 
 }
@@ -168,7 +168,7 @@ struct aux_payloads *dal_ddc_aux_payloads_create(struct dc_context *ctx, uint32_
 {
 	struct aux_payloads *payloads;
 
-	payloads = dm_alloc(sizeof(struct aux_payloads));
+	payloads = kzalloc(sizeof(struct aux_payloads), GFP_ATOMIC);
 
 	if (!payloads)
 		return NULL;
@@ -177,7 +177,7 @@ struct aux_payloads *dal_ddc_aux_payloads_create(struct dc_context *ctx, uint32_
 		&payloads->payloads, ctx, count, sizeof(struct aux_payload)))
 		return payloads;
 
-	dm_free(payloads);
+	kfree(payloads);
 	return NULL;
 }
 
@@ -197,7 +197,7 @@ void dal_ddc_aux_payloads_destroy(struct aux_payloads **p)
 		return;
 
 	dal_vector_destruct(&(*p)->payloads);
-	dm_free(*p);
+	kfree(*p);
 	*p = NULL;
 }
 
@@ -290,7 +290,7 @@ struct ddc_service *dal_ddc_service_create(
 {
 	struct ddc_service *ddc_service;
 
-	ddc_service = dm_alloc(sizeof(struct ddc_service));
+	ddc_service = kzalloc(sizeof(struct ddc_service), GFP_ATOMIC);
 
 	if (!ddc_service)
 		return NULL;
@@ -298,7 +298,7 @@ struct ddc_service *dal_ddc_service_create(
 	if (construct(ddc_service, init_data))
 		return ddc_service;
 
-	dm_free(ddc_service);
+	kfree(ddc_service);
 	return NULL;
 }
 
@@ -315,7 +315,7 @@ void dal_ddc_service_destroy(struct ddc_service **ddc)
 		return;
 	}
 	destruct(*ddc);
-	dm_free(*ddc);
+	kfree(*ddc);
 	*ddc = NULL;
 }
 
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
index dcfdfebd5c62..1832f252edab 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
@@ -160,7 +160,7 @@ void dc_destroy_resource_pool(struct dc  *dc)
 			dc->res_pool->funcs->destroy(&dc->res_pool);
 
 		if (dc->hwseq)
-			dm_free(dc->hwseq);
+			kfree(dc->hwseq);
 	}
 }
 
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_sink.c b/drivers/gpu/drm/amd/display/dc/core/dc_sink.c
index 7717350297a5..952be07ae817 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc_sink.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc_sink.c
@@ -34,7 +34,7 @@
 static void destruct(struct dc_sink *sink)
 {
 	if (sink->dc_container_id) {
-		dm_free(sink->dc_container_id);
+		kfree(sink->dc_container_id);
 		sink->dc_container_id = NULL;
 	}
 }
@@ -74,13 +74,13 @@ void dc_sink_release(struct dc_sink *sink)
 
 	if (atomic_read(&sink->ref_count) == 0) {
 		destruct(sink);
-		dm_free(sink);
+		kfree(sink);
 	}
 }
 
 struct dc_sink *dc_sink_create(const struct dc_sink_init_data *init_params)
 {
-	struct dc_sink *sink = dm_alloc(sizeof(*sink));
+	struct dc_sink *sink = kzalloc(sizeof(*sink), GFP_ATOMIC);
 
 	if (NULL == sink)
 		goto alloc_fail;
@@ -93,7 +93,7 @@ struct dc_sink *dc_sink_create(const struct dc_sink_init_data *init_params)
 	return sink;
 
 construct_fail:
-	dm_free(sink);
+	kfree(sink);
 
 alloc_fail:
 	return NULL;
@@ -117,7 +117,8 @@ bool dc_sink_set_container_id(struct dc_sink *dc_sink, const struct dc_container
 {
 	if (dc_sink && container_id) {
 		if (!dc_sink->dc_container_id)
-			dc_sink->dc_container_id = dm_alloc(sizeof(*dc_sink->dc_container_id));
+			dc_sink->dc_container_id = kzalloc(sizeof(*dc_sink->dc_container_id),
+							   GFP_ATOMIC);
 
 		if (dc_sink->dc_container_id) {
 			memmove(&dc_sink->dc_container_id->guid, &container_id->guid,
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c
index a421779093d9..54dbeb354009 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c
@@ -131,7 +131,7 @@ void dc_stream_release(struct dc_stream_state *stream)
 
 		if (atomic_read(&stream->ref_count) == 0) {
 			destruct(stream);
-			dm_free(stream);
+			kfree(stream);
 		}
 	}
 }
@@ -144,7 +144,7 @@ struct dc_stream_state *dc_create_stream_for_sink(
 	if (sink == NULL)
 		goto alloc_fail;
 
-	stream = dm_alloc(sizeof(struct dc_stream_state));
+	stream = kzalloc(sizeof(struct dc_stream_state), GFP_ATOMIC);
 
 	if (NULL == stream)
 		goto alloc_fail;
@@ -157,7 +157,7 @@ struct dc_stream_state *dc_create_stream_for_sink(
 	return stream;
 
 construct_fail:
-	dm_free(stream);
+	kfree(stream);
 
 alloc_fail:
 	return NULL;
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_surface.c b/drivers/gpu/drm/amd/display/dc/core/dc_surface.c
index e96f63eed070..295789059a19 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc_surface.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc_surface.c
@@ -68,7 +68,8 @@ struct dc_plane_state *dc_create_plane_state(struct dc *dc)
 {
 	struct dc *core_dc = dc;
 
-	struct dc_plane_state *plane_state = dm_alloc(sizeof(*plane_state));
+	struct dc_plane_state *plane_state = kzalloc(sizeof(*plane_state),
+						     GFP_ATOMIC);
 
 	if (NULL == plane_state)
 		goto alloc_fail;
@@ -81,7 +82,7 @@ struct dc_plane_state *dc_create_plane_state(struct dc *dc)
 	return plane_state;
 
 construct_fail:
-	dm_free(plane_state);
+	kfree(plane_state);
 
 alloc_fail:
 	return NULL;
@@ -133,7 +134,7 @@ void dc_plane_state_release(struct dc_plane_state *plane_state)
 
 	if (atomic_read(&plane_state->ref_count) == 0) {
 		destruct(plane_state);
-		dm_free(plane_state);
+		kfree(plane_state);
 	}
 }
 
@@ -149,14 +150,14 @@ void dc_gamma_release(struct dc_gamma **gamma)
 	atomic_dec(&(*gamma)->ref_count);
 
 	if (atomic_read(&(*gamma)->ref_count) == 0)
-		dm_free((*gamma));
+		kfree((*gamma));
 
 	*gamma = NULL;
 }
 
 struct dc_gamma *dc_create_gamma()
 {
-	struct dc_gamma *gamma = dm_alloc(sizeof(*gamma));
+	struct dc_gamma *gamma = kzalloc(sizeof(*gamma), GFP_ATOMIC);
 
 	if (gamma == NULL)
 		goto alloc_fail;
@@ -181,12 +182,12 @@ void dc_transfer_func_release(struct dc_transfer_func *tf)
 	atomic_dec(&tf->ref_count);
 
 	if (atomic_read(&tf->ref_count) == 0)
-		dm_free(tf);
+		kfree(tf);
 }
 
 struct dc_transfer_func *dc_create_transfer_func()
 {
-	struct dc_transfer_func *tf = dm_alloc(sizeof(*tf));
+	struct dc_transfer_func *tf = kzalloc(sizeof(*tf), GFP_ATOMIC);
 
 	if (tf == NULL)
 		goto alloc_fail;
diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_abm.c b/drivers/gpu/drm/amd/display/dc/dce/dce_abm.c
index 0e9d914e1a8f..d57e5fcacfcb 100644
--- a/drivers/gpu/drm/amd/display/dc/dce/dce_abm.c
+++ b/drivers/gpu/drm/amd/display/dc/dce/dce_abm.c
@@ -462,7 +462,7 @@ struct abm *dce_abm_create(
 	const struct dce_abm_shift *abm_shift,
 	const struct dce_abm_mask *abm_mask)
 {
-	struct dce_abm *abm_dce = dm_alloc(sizeof(*abm_dce));
+	struct dce_abm *abm_dce = kzalloc(sizeof(*abm_dce), GFP_ATOMIC);
 
 	if (abm_dce == NULL) {
 		BREAK_TO_DEBUGGER();
@@ -480,6 +480,6 @@ void dce_abm_destroy(struct abm **abm)
 {
 	struct dce_abm *abm_dce = TO_DCE_ABM(*abm);
 
-	dm_free(abm_dce);
+	kfree(abm_dce);
 	*abm = NULL;
 }
diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_audio.c b/drivers/gpu/drm/amd/display/dc/dce/dce_audio.c
index b94c1e5d85cb..b372ce020f81 100644
--- a/drivers/gpu/drm/amd/display/dc/dce/dce_audio.c
+++ b/drivers/gpu/drm/amd/display/dc/dce/dce_audio.c
@@ -897,7 +897,7 @@ void dce_aud_destroy(struct audio **audio)
 {
 	struct dce_audio *aud = DCE_AUD(*audio);
 
-	dm_free(aud);
+	kfree(aud);
 	*audio = NULL;
 }
 
@@ -909,7 +909,7 @@ struct audio *dce_audio_create(
 		const struct dce_aduio_mask *masks
 		)
 {
-	struct dce_audio *audio = dm_alloc(sizeof(*audio));
+	struct dce_audio *audio = kzalloc(sizeof(*audio), GFP_ATOMIC);
 
 	if (audio == NULL) {
 		ASSERT_CRITICAL(audio);
diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_clock_source.c b/drivers/gpu/drm/amd/display/dc/dce/dce_clock_source.c
index d3b61b92ebec..9df5809011d1 100644
--- a/drivers/gpu/drm/amd/display/dc/dce/dce_clock_source.c
+++ b/drivers/gpu/drm/amd/display/dc/dce/dce_clock_source.c
@@ -1084,12 +1084,14 @@ static void get_ss_info_from_atombios(
 	if (*ss_entries_num == 0)
 		return;
 
-	ss_info = dm_alloc(sizeof(struct spread_spectrum_info) * (*ss_entries_num));
+	ss_info = kzalloc(sizeof(struct spread_spectrum_info) * (*ss_entries_num),
+			  GFP_ATOMIC);
 	ss_info_cur = ss_info;
 	if (ss_info == NULL)
 		return;
 
-	ss_data = dm_alloc(sizeof(struct spread_spectrum_data) * (*ss_entries_num));
+	ss_data = kzalloc(sizeof(struct spread_spectrum_data) * (*ss_entries_num),
+			  GFP_ATOMIC);
 	if (ss_data == NULL)
 		goto out_free_info;
 
@@ -1157,14 +1159,14 @@ static void get_ss_info_from_atombios(
 	}
 
 	*spread_spectrum_data = ss_data;
-	dm_free(ss_info);
+	kfree(ss_info);
 	return;
 
 out_free_data:
-	dm_free(ss_data);
+	kfree(ss_data);
 	*ss_entries_num = 0;
 out_free_info:
-	dm_free(ss_info);
+	kfree(ss_info);
 }
 
 static void ss_info_from_atombios_create(
diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_clocks.c b/drivers/gpu/drm/amd/display/dc/dce/dce_clocks.c
index 06d9a3e7c8a2..a7334a094a24 100644
--- a/drivers/gpu/drm/amd/display/dc/dce/dce_clocks.c
+++ b/drivers/gpu/drm/amd/display/dc/dce/dce_clocks.c
@@ -719,7 +719,7 @@ struct display_clock *dce_disp_clk_create(
 	const struct dce_disp_clk_shift *clk_shift,
 	const struct dce_disp_clk_mask *clk_mask)
 {
-	struct dce_disp_clk *clk_dce = dm_alloc(sizeof(*clk_dce));
+	struct dce_disp_clk *clk_dce = kzalloc(sizeof(*clk_dce), GFP_ATOMIC);
 
 	if (clk_dce == NULL) {
 		BREAK_TO_DEBUGGER();
@@ -742,7 +742,7 @@ struct display_clock *dce110_disp_clk_create(
 	const struct dce_disp_clk_shift *clk_shift,
 	const struct dce_disp_clk_mask *clk_mask)
 {
-	struct dce_disp_clk *clk_dce = dm_alloc(sizeof(*clk_dce));
+	struct dce_disp_clk *clk_dce = kzalloc(sizeof(*clk_dce), GFP_ATOMIC);
 
 	if (clk_dce == NULL) {
 		BREAK_TO_DEBUGGER();
@@ -767,7 +767,7 @@ struct display_clock *dce112_disp_clk_create(
 	const struct dce_disp_clk_shift *clk_shift,
 	const struct dce_disp_clk_mask *clk_mask)
 {
-	struct dce_disp_clk *clk_dce = dm_alloc(sizeof(*clk_dce));
+	struct dce_disp_clk *clk_dce = kzalloc(sizeof(*clk_dce), GFP_ATOMIC);
 
 	if (clk_dce == NULL) {
 		BREAK_TO_DEBUGGER();
@@ -788,7 +788,7 @@ struct display_clock *dce112_disp_clk_create(
 
 struct display_clock *dce120_disp_clk_create(struct dc_context *ctx)
 {
-	struct dce_disp_clk *clk_dce = dm_alloc(sizeof(*clk_dce));
+	struct dce_disp_clk *clk_dce = kzalloc(sizeof(*clk_dce), GFP_ATOMIC);
 	struct dm_pp_clock_levels_with_voltage clk_level_info = {0};
 
 	if (clk_dce == NULL) {
@@ -822,6 +822,6 @@ void dce_disp_clk_destroy(struct display_clock **disp_clk)
 {
 	struct dce_disp_clk *clk_dce = TO_DCE_CLOCKS(*disp_clk);
 
-	dm_free(clk_dce);
+	kfree(clk_dce);
 	*disp_clk = NULL;
 }
diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_dmcu.c b/drivers/gpu/drm/amd/display/dc/dce/dce_dmcu.c
index 313f61bf06e1..9874837d8a01 100644
--- a/drivers/gpu/drm/amd/display/dc/dce/dce_dmcu.c
+++ b/drivers/gpu/drm/amd/display/dc/dce/dce_dmcu.c
@@ -573,7 +573,7 @@ struct dmcu *dce_dmcu_create(
 	const struct dce_dmcu_shift *dmcu_shift,
 	const struct dce_dmcu_mask *dmcu_mask)
 {
-	struct dce_dmcu *dmcu_dce = dm_alloc(sizeof(*dmcu_dce));
+	struct dce_dmcu *dmcu_dce = kzalloc(sizeof(*dmcu_dce), GFP_ATOMIC);
 
 	if (dmcu_dce == NULL) {
 		BREAK_TO_DEBUGGER();
@@ -595,7 +595,7 @@ struct dmcu *dcn10_dmcu_create(
 	const struct dce_dmcu_shift *dmcu_shift,
 	const struct dce_dmcu_mask *dmcu_mask)
 {
-	struct dce_dmcu *dmcu_dce = dm_alloc(sizeof(*dmcu_dce));
+	struct dce_dmcu *dmcu_dce = kzalloc(sizeof(*dmcu_dce), GFP_ATOMIC);
 
 	if (dmcu_dce == NULL) {
 		BREAK_TO_DEBUGGER();
@@ -615,6 +615,6 @@ void dce_dmcu_destroy(struct dmcu **dmcu)
 {
 	struct dce_dmcu *dmcu_dce = TO_DCE_DMCU(*dmcu);
 
-	dm_free(dmcu_dce);
+	kfree(dmcu_dce);
 	*dmcu = NULL;
 }
diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_ipp.c b/drivers/gpu/drm/amd/display/dc/dce/dce_ipp.c
index e010cf10d605..fa481d481132 100644
--- a/drivers/gpu/drm/amd/display/dc/dce/dce_ipp.c
+++ b/drivers/gpu/drm/amd/display/dc/dce/dce_ipp.c
@@ -261,6 +261,6 @@ void dce_ipp_construct(
 
 void dce_ipp_destroy(struct input_pixel_processor **ipp)
 {
-	dm_free(TO_DCE_IPP(*ipp));
+	kfree(TO_DCE_IPP(*ipp));
 	*ipp = NULL;
 }
diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.c b/drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.c
index 0ce94ede80bf..2ce730de0dc3 100644
--- a/drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.c
+++ b/drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.c
@@ -1108,7 +1108,7 @@ void dce110_link_encoder_hw_init(
 
 void dce110_link_encoder_destroy(struct link_encoder **enc)
 {
-	dm_free(TO_DCE110_LINK_ENC(*enc));
+	kfree(TO_DCE110_LINK_ENC(*enc));
 	*enc = NULL;
 }
 
diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_opp.c b/drivers/gpu/drm/amd/display/dc/dce/dce_opp.c
index 348e4b7047f1..c0736aeabd85 100644
--- a/drivers/gpu/drm/amd/display/dc/dce/dce_opp.c
+++ b/drivers/gpu/drm/amd/display/dc/dce/dce_opp.c
@@ -563,7 +563,7 @@ bool dce110_opp_construct(struct dce110_opp *opp110,
 void dce110_opp_destroy(struct output_pixel_processor **opp)
 {
 	if (*opp)
-		dm_free(FROM_DCE11_OPP(*opp));
+		kfree(FROM_DCE11_OPP(*opp));
 	*opp = NULL;
 }
 
diff --git a/drivers/gpu/drm/amd/display/dc/dce100/dce100_resource.c b/drivers/gpu/drm/amd/display/dc/dce100/dce100_resource.c
index ca6c7c2a1b4c..161b60587f5d 100644
--- a/drivers/gpu/drm/amd/display/dc/dce100/dce100_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/dce100/dce100_resource.c
@@ -370,7 +370,7 @@ static struct timing_generator *dce100_timing_generator_create(
 		const struct dce110_timing_generator_offsets *offsets)
 {
 	struct dce110_timing_generator *tg110 =
-		dm_alloc(sizeof(struct dce110_timing_generator));
+		kzalloc(sizeof(struct dce110_timing_generator), GFP_ATOMIC);
 
 	if (!tg110)
 		return NULL;
@@ -380,7 +380,7 @@ static struct timing_generator *dce100_timing_generator_create(
 		return &tg110->base;
 
 	BREAK_TO_DEBUGGER();
-	dm_free(tg110);
+	kfree(tg110);
 	return NULL;
 }
 
@@ -389,7 +389,7 @@ static struct stream_encoder *dce100_stream_encoder_create(
 	struct dc_context *ctx)
 {
 	struct dce110_stream_encoder *enc110 =
-		dm_alloc(sizeof(struct dce110_stream_encoder));
+		kzalloc(sizeof(struct dce110_stream_encoder), GFP_ATOMIC);
 
 	if (!enc110)
 		return NULL;
@@ -400,7 +400,7 @@ static struct stream_encoder *dce100_stream_encoder_create(
 		return &enc110->base;
 
 	BREAK_TO_DEBUGGER();
-	dm_free(enc110);
+	kfree(enc110);
 	return NULL;
 }
 
@@ -422,7 +422,7 @@ static const struct dce_hwseq_mask hwseq_mask = {
 static struct dce_hwseq *dce100_hwseq_create(
 	struct dc_context *ctx)
 {
-	struct dce_hwseq *hws = dm_alloc(sizeof(struct dce_hwseq));
+	struct dce_hwseq *hws = kzalloc(sizeof(struct dce_hwseq), GFP_ATOMIC);
 
 	if (hws) {
 		hws->ctx = ctx;
@@ -467,7 +467,8 @@ static struct mem_input *dce100_mem_input_create(
 	struct dc_context *ctx,
 	uint32_t inst)
 {
-	struct dce_mem_input *dce_mi = dm_alloc(sizeof(struct dce_mem_input));
+	struct dce_mem_input *dce_mi = kzalloc(sizeof(struct dce_mem_input),
+					       GFP_ATOMIC);
 
 	if (!dce_mi) {
 		BREAK_TO_DEBUGGER();
@@ -481,7 +482,7 @@ static struct mem_input *dce100_mem_input_create(
 
 static void dce100_transform_destroy(struct transform **xfm)
 {
-	dm_free(TO_DCE_TRANSFORM(*xfm));
+	kfree(TO_DCE_TRANSFORM(*xfm));
 	*xfm = NULL;
 }
 
@@ -490,7 +491,7 @@ static struct transform *dce100_transform_create(
 	uint32_t inst)
 {
 	struct dce_transform *transform =
-		dm_alloc(sizeof(struct dce_transform));
+		kzalloc(sizeof(struct dce_transform), GFP_ATOMIC);
 
 	if (!transform)
 		return NULL;
@@ -501,14 +502,14 @@ static struct transform *dce100_transform_create(
 	}
 
 	BREAK_TO_DEBUGGER();
-	dm_free(transform);
+	kfree(transform);
 	return NULL;
 }
 
 static struct input_pixel_processor *dce100_ipp_create(
 	struct dc_context *ctx, uint32_t inst)
 {
-	struct dce_ipp *ipp = dm_alloc(sizeof(struct dce_ipp));
+	struct dce_ipp *ipp = kzalloc(sizeof(struct dce_ipp), GFP_ATOMIC);
 
 	if (!ipp) {
 		BREAK_TO_DEBUGGER();
@@ -532,7 +533,7 @@ struct link_encoder *dce100_link_encoder_create(
 	const struct encoder_init_data *enc_init_data)
 {
 	struct dce110_link_encoder *enc110 =
-		dm_alloc(sizeof(struct dce110_link_encoder));
+		kzalloc(sizeof(struct dce110_link_encoder), GFP_ATOMIC);
 
 	if (!enc110)
 		return NULL;
@@ -549,7 +550,7 @@ struct link_encoder *dce100_link_encoder_create(
 	}
 
 	BREAK_TO_DEBUGGER();
-	dm_free(enc110);
+	kfree(enc110);
 	return NULL;
 }
 
@@ -558,7 +559,7 @@ struct output_pixel_processor *dce100_opp_create(
 	uint32_t inst)
 {
 	struct dce110_opp *opp =
-		dm_alloc(sizeof(struct dce110_opp));
+		kzalloc(sizeof(struct dce110_opp), GFP_ATOMIC);
 
 	if (!opp)
 		return NULL;
@@ -568,7 +569,7 @@ struct output_pixel_processor *dce100_opp_create(
 		return &opp->base;
 
 	BREAK_TO_DEBUGGER();
-	dm_free(opp);
+	kfree(opp);
 	return NULL;
 }
 
@@ -580,7 +581,7 @@ struct clock_source *dce100_clock_source_create(
 	bool dp_clk_src)
 {
 	struct dce110_clk_src *clk_src =
-		dm_alloc(sizeof(struct dce110_clk_src));
+		kzalloc(sizeof(struct dce110_clk_src), GFP_ATOMIC);
 
 	if (!clk_src)
 		return NULL;
@@ -597,7 +598,7 @@ struct clock_source *dce100_clock_source_create(
 
 void dce100_clock_source_destroy(struct clock_source **clk_src)
 {
-	dm_free(TO_DCE110_CLK_SRC(*clk_src));
+	kfree(TO_DCE110_CLK_SRC(*clk_src));
 	*clk_src = NULL;
 }
 
@@ -616,19 +617,19 @@ static void destruct(struct dce110_resource_pool *pool)
 			dce_ipp_destroy(&pool->base.ipps[i]);
 
 		if (pool->base.mis[i] != NULL) {
-			dm_free(TO_DCE_MEM_INPUT(pool->base.mis[i]));
+			kfree(TO_DCE_MEM_INPUT(pool->base.mis[i]));
 			pool->base.mis[i] = NULL;
 		}
 
 		if (pool->base.timing_generators[i] != NULL)	{
-			dm_free(DCE110TG_FROM_TG(pool->base.timing_generators[i]));
+			kfree(DCE110TG_FROM_TG(pool->base.timing_generators[i]));
 			pool->base.timing_generators[i] = NULL;
 		}
 	}
 
 	for (i = 0; i < pool->base.stream_enc_count; i++) {
 		if (pool->base.stream_enc[i] != NULL)
-			dm_free(DCE110STRENC_FROM_STRENC(pool->base.stream_enc[i]));
+			kfree(DCE110STRENC_FROM_STRENC(pool->base.stream_enc[i]));
 	}
 
 	for (i = 0; i < pool->base.clk_src_count; i++) {
@@ -768,7 +769,7 @@ static void dce100_destroy_resource_pool(struct resource_pool **pool)
 	struct dce110_resource_pool *dce110_pool = TO_DCE110_RES_POOL(*pool);
 
 	destruct(dce110_pool);
-	dm_free(dce110_pool);
+	kfree(dce110_pool);
 	*pool = NULL;
 }
 
@@ -950,7 +951,7 @@ struct resource_pool *dce100_create_resource_pool(
 	struct dc  *dc)
 {
 	struct dce110_resource_pool *pool =
-		dm_alloc(sizeof(struct dce110_resource_pool));
+		kzalloc(sizeof(struct dce110_resource_pool), GFP_ATOMIC);
 
 	if (!pool)
 		return NULL;
diff --git a/drivers/gpu/drm/amd/display/dc/dce110/dce110_compressor.c b/drivers/gpu/drm/amd/display/dc/dce110/dce110_compressor.c
index f82c26995609..03534d3a9efe 100644
--- a/drivers/gpu/drm/amd/display/dc/dce110/dce110_compressor.c
+++ b/drivers/gpu/drm/amd/display/dc/dce110/dce110_compressor.c
@@ -388,7 +388,7 @@ void dce110_compressor_set_fbc_invalidation_triggers(
 struct compressor *dce110_compressor_create(struct dc_context *ctx)
 {
 	struct dce110_compressor *cp110 =
-		dm_alloc(sizeof(struct dce110_compressor));
+		kzalloc(sizeof(struct dce110_compressor), GFP_ATOMIC);
 
 	if (!cp110)
 		return NULL;
@@ -397,13 +397,13 @@ struct compressor *dce110_compressor_create(struct dc_context *ctx)
 		return &cp110->base;
 
 	BREAK_TO_DEBUGGER();
-	dm_free(cp110);
+	kfree(cp110);
 	return NULL;
 }
 
 void dce110_compressor_destroy(struct compressor **compressor)
 {
-	dm_free(TO_DCE110_COMPRESSOR(*compressor));
+	kfree(TO_DCE110_COMPRESSOR(*compressor));
 	*compressor = NULL;
 }
 
diff --git a/drivers/gpu/drm/amd/display/dc/dce110/dce110_resource.c b/drivers/gpu/drm/amd/display/dc/dce110/dce110_resource.c
index 25eda52c32ef..0894a19e3aca 100644
--- a/drivers/gpu/drm/amd/display/dc/dce110/dce110_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/dce110/dce110_resource.c
@@ -405,7 +405,7 @@ static struct timing_generator *dce110_timing_generator_create(
 		const struct dce110_timing_generator_offsets *offsets)
 {
 	struct dce110_timing_generator *tg110 =
-		dm_alloc(sizeof(struct dce110_timing_generator));
+		kzalloc(sizeof(struct dce110_timing_generator), GFP_ATOMIC);
 
 	if (!tg110)
 		return NULL;
@@ -414,7 +414,7 @@ static struct timing_generator *dce110_timing_generator_create(
 		return &tg110->base;
 
 	BREAK_TO_DEBUGGER();
-	dm_free(tg110);
+	kfree(tg110);
 	return NULL;
 }
 
@@ -423,7 +423,7 @@ static struct stream_encoder *dce110_stream_encoder_create(
 	struct dc_context *ctx)
 {
 	struct dce110_stream_encoder *enc110 =
-		dm_alloc(sizeof(struct dce110_stream_encoder));
+		kzalloc(sizeof(struct dce110_stream_encoder), GFP_ATOMIC);
 
 	if (!enc110)
 		return NULL;
@@ -434,7 +434,7 @@ static struct stream_encoder *dce110_stream_encoder_create(
 		return &enc110->base;
 
 	BREAK_TO_DEBUGGER();
-	dm_free(enc110);
+	kfree(enc110);
 	return NULL;
 }
 
@@ -460,7 +460,7 @@ static const struct dce_hwseq_mask hwseq_mask = {
 static struct dce_hwseq *dce110_hwseq_create(
 	struct dc_context *ctx)
 {
-	struct dce_hwseq *hws = dm_alloc(sizeof(struct dce_hwseq));
+	struct dce_hwseq *hws = kzalloc(sizeof(struct dce_hwseq), GFP_ATOMIC);
 
 	if (hws) {
 		hws->ctx = ctx;
@@ -505,7 +505,8 @@ static struct mem_input *dce110_mem_input_create(
 	struct dc_context *ctx,
 	uint32_t inst)
 {
-	struct dce_mem_input *dce_mi = dm_alloc(sizeof(struct dce_mem_input));
+	struct dce_mem_input *dce_mi = kzalloc(sizeof(struct dce_mem_input),
+					       GFP_ATOMIC);
 
 	if (!dce_mi) {
 		BREAK_TO_DEBUGGER();
@@ -519,7 +520,7 @@ static struct mem_input *dce110_mem_input_create(
 
 static void dce110_transform_destroy(struct transform **xfm)
 {
-	dm_free(TO_DCE_TRANSFORM(*xfm));
+	kfree(TO_DCE_TRANSFORM(*xfm));
 	*xfm = NULL;
 }
 
@@ -528,7 +529,7 @@ static struct transform *dce110_transform_create(
 	uint32_t inst)
 {
 	struct dce_transform *transform =
-		dm_alloc(sizeof(struct dce_transform));
+		kzalloc(sizeof(struct dce_transform), GFP_ATOMIC);
 
 	if (!transform)
 		return NULL;
@@ -538,14 +539,14 @@ static struct transform *dce110_transform_create(
 		return &transform->base;
 
 	BREAK_TO_DEBUGGER();
-	dm_free(transform);
+	kfree(transform);
 	return NULL;
 }
 
 static struct input_pixel_processor *dce110_ipp_create(
 	struct dc_context *ctx, uint32_t inst)
 {
-	struct dce_ipp *ipp = dm_alloc(sizeof(struct dce_ipp));
+	struct dce_ipp *ipp = kzalloc(sizeof(struct dce_ipp), GFP_ATOMIC);
 
 	if (!ipp) {
 		BREAK_TO_DEBUGGER();
@@ -569,7 +570,7 @@ static struct link_encoder *dce110_link_encoder_create(
 	const struct encoder_init_data *enc_init_data)
 {
 	struct dce110_link_encoder *enc110 =
-		dm_alloc(sizeof(struct dce110_link_encoder));
+		kzalloc(sizeof(struct dce110_link_encoder), GFP_ATOMIC);
 
 	if (!enc110)
 		return NULL;
@@ -586,7 +587,7 @@ static struct link_encoder *dce110_link_encoder_create(
 	}
 
 	BREAK_TO_DEBUGGER();
-	dm_free(enc110);
+	kfree(enc110);
 	return NULL;
 }
 
@@ -595,7 +596,7 @@ static struct output_pixel_processor *dce110_opp_create(
 	uint32_t inst)
 {
 	struct dce110_opp *opp =
-		dm_alloc(sizeof(struct dce110_opp));
+		kzalloc(sizeof(struct dce110_opp), GFP_ATOMIC);
 
 	if (!opp)
 		return NULL;
@@ -605,7 +606,7 @@ static struct output_pixel_processor *dce110_opp_create(
 		return &opp->base;
 
 	BREAK_TO_DEBUGGER();
-	dm_free(opp);
+	kfree(opp);
 	return NULL;
 }
 
@@ -617,7 +618,7 @@ struct clock_source *dce110_clock_source_create(
 	bool dp_clk_src)
 {
 	struct dce110_clk_src *clk_src =
-		dm_alloc(sizeof(struct dce110_clk_src));
+		kzalloc(sizeof(struct dce110_clk_src), GFP_ATOMIC);
 
 	if (!clk_src)
 		return NULL;
@@ -642,15 +643,15 @@ void dce110_clock_source_destroy(struct clock_source **clk_src)
 	dce110_clk_src = TO_DCE110_CLK_SRC(*clk_src);
 
 	if (dce110_clk_src->dp_ss_params)
-		dm_free(dce110_clk_src->dp_ss_params);
+		kfree(dce110_clk_src->dp_ss_params);
 
 	if (dce110_clk_src->hdmi_ss_params)
-		dm_free(dce110_clk_src->hdmi_ss_params);
+		kfree(dce110_clk_src->hdmi_ss_params);
 
 	if (dce110_clk_src->dvi_ss_params)
-		dm_free(dce110_clk_src->dvi_ss_params);
+		kfree(dce110_clk_src->dvi_ss_params);
 
-	dm_free(dce110_clk_src);
+	kfree(dce110_clk_src);
 	*clk_src = NULL;
 }
 
@@ -669,19 +670,19 @@ static void destruct(struct dce110_resource_pool *pool)
 			dce_ipp_destroy(&pool->base.ipps[i]);
 
 		if (pool->base.mis[i] != NULL) {
-			dm_free(TO_DCE_MEM_INPUT(pool->base.mis[i]));
+			kfree(TO_DCE_MEM_INPUT(pool->base.mis[i]));
 			pool->base.mis[i] = NULL;
 		}
 
 		if (pool->base.timing_generators[i] != NULL)	{
-			dm_free(DCE110TG_FROM_TG(pool->base.timing_generators[i]));
+			kfree(DCE110TG_FROM_TG(pool->base.timing_generators[i]));
 			pool->base.timing_generators[i] = NULL;
 		}
 	}
 
 	for (i = 0; i < pool->base.stream_enc_count; i++) {
 		if (pool->base.stream_enc[i] != NULL)
-			dm_free(DCE110STRENC_FROM_STRENC(pool->base.stream_enc[i]));
+			kfree(DCE110STRENC_FROM_STRENC(pool->base.stream_enc[i]));
 	}
 
 	for (i = 0; i < pool->base.clk_src_count; i++) {
@@ -1031,7 +1032,7 @@ static void dce110_destroy_resource_pool(struct resource_pool **pool)
 	struct dce110_resource_pool *dce110_pool = TO_DCE110_RES_POOL(*pool);
 
 	destruct(dce110_pool);
-	dm_free(dce110_pool);
+	kfree(dce110_pool);
 	*pool = NULL;
 }
 
@@ -1048,10 +1049,14 @@ static const struct resource_funcs dce110_res_pool_funcs = {
 
 static bool underlay_create(struct dc_context *ctx, struct resource_pool *pool)
 {
-	struct dce110_timing_generator *dce110_tgv = dm_alloc(sizeof (*dce110_tgv));
-	struct dce_transform *dce110_xfmv = dm_alloc(sizeof (*dce110_xfmv));
-	struct dce_mem_input *dce110_miv = dm_alloc(sizeof (*dce110_miv));
-	struct dce110_opp *dce110_oppv = dm_alloc(sizeof (*dce110_oppv));
+	struct dce110_timing_generator *dce110_tgv = kzalloc(sizeof(*dce110_tgv),
+							     GFP_ATOMIC);
+	struct dce_transform *dce110_xfmv = kzalloc(sizeof(*dce110_xfmv),
+						    GFP_ATOMIC);
+	struct dce_mem_input *dce110_miv = kzalloc(sizeof(*dce110_miv),
+						   GFP_ATOMIC);
+	struct dce110_opp *dce110_oppv = kzalloc(sizeof(*dce110_oppv),
+						 GFP_ATOMIC);
 
 	if ((dce110_tgv == NULL) ||
 		(dce110_xfmv == NULL) ||
@@ -1332,7 +1337,7 @@ struct resource_pool *dce110_create_resource_pool(
 	struct hw_asic_id asic_id)
 {
 	struct dce110_resource_pool *pool =
-		dm_alloc(sizeof(struct dce110_resource_pool));
+		kzalloc(sizeof(struct dce110_resource_pool), GFP_ATOMIC);
 
 	if (!pool)
 		return NULL;
diff --git a/drivers/gpu/drm/amd/display/dc/dce112/dce112_compressor.c b/drivers/gpu/drm/amd/display/dc/dce112/dce112_compressor.c
index 75af2125344b..51afa67bb49a 100644
--- a/drivers/gpu/drm/amd/display/dc/dce112/dce112_compressor.c
+++ b/drivers/gpu/drm/amd/display/dc/dce112/dce112_compressor.c
@@ -839,7 +839,7 @@ bool dce112_compressor_construct(struct dce112_compressor *compressor,
 struct compressor *dce112_compressor_create(struct dc_context *ctx)
 {
 	struct dce112_compressor *cp110 =
-		dm_alloc(sizeof(struct dce112_compressor));
+		kzalloc(sizeof(struct dce112_compressor), GFP_ATOMIC);
 
 	if (!cp110)
 		return NULL;
@@ -848,12 +848,12 @@ struct compressor *dce112_compressor_create(struct dc_context *ctx)
 		return &cp110->base;
 
 	BREAK_TO_DEBUGGER();
-	dm_free(cp110);
+	kfree(cp110);
 	return NULL;
 }
 
 void dce112_compressor_destroy(struct compressor **compressor)
 {
-	dm_free(TO_DCE112_COMPRESSOR(*compressor));
+	kfree(TO_DCE112_COMPRESSOR(*compressor));
 	*compressor = NULL;
 }
diff --git a/drivers/gpu/drm/amd/display/dc/dce112/dce112_resource.c b/drivers/gpu/drm/amd/display/dc/dce112/dce112_resource.c
index de6f71d8a89b..f61878d5cade 100644
--- a/drivers/gpu/drm/amd/display/dc/dce112/dce112_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/dce112/dce112_resource.c
@@ -410,7 +410,7 @@ static struct timing_generator *dce112_timing_generator_create(
 		const struct dce110_timing_generator_offsets *offsets)
 {
 	struct dce110_timing_generator *tg110 =
-		dm_alloc(sizeof(struct dce110_timing_generator));
+		kzalloc(sizeof(struct dce110_timing_generator), GFP_ATOMIC);
 
 	if (!tg110)
 		return NULL;
@@ -419,7 +419,7 @@ static struct timing_generator *dce112_timing_generator_create(
 		return &tg110->base;
 
 	BREAK_TO_DEBUGGER();
-	dm_free(tg110);
+	kfree(tg110);
 	return NULL;
 }
 
@@ -428,7 +428,7 @@ static struct stream_encoder *dce112_stream_encoder_create(
 	struct dc_context *ctx)
 {
 	struct dce110_stream_encoder *enc110 =
-		dm_alloc(sizeof(struct dce110_stream_encoder));
+		kzalloc(sizeof(struct dce110_stream_encoder), GFP_ATOMIC);
 
 	if (!enc110)
 		return NULL;
@@ -439,7 +439,7 @@ static struct stream_encoder *dce112_stream_encoder_create(
 		return &enc110->base;
 
 	BREAK_TO_DEBUGGER();
-	dm_free(enc110);
+	kfree(enc110);
 	return NULL;
 }
 
@@ -461,7 +461,7 @@ static const struct dce_hwseq_mask hwseq_mask = {
 static struct dce_hwseq *dce112_hwseq_create(
 	struct dc_context *ctx)
 {
-	struct dce_hwseq *hws = dm_alloc(sizeof(struct dce_hwseq));
+	struct dce_hwseq *hws = kzalloc(sizeof(struct dce_hwseq), GFP_ATOMIC);
 
 	if (hws) {
 		hws->ctx = ctx;
@@ -501,7 +501,8 @@ static struct mem_input *dce112_mem_input_create(
 	struct dc_context *ctx,
 	uint32_t inst)
 {
-	struct dce_mem_input *dce_mi = dm_alloc(sizeof(struct dce_mem_input));
+	struct dce_mem_input *dce_mi = kzalloc(sizeof(struct dce_mem_input),
+					       GFP_ATOMIC);
 
 	if (!dce_mi) {
 		BREAK_TO_DEBUGGER();
@@ -514,7 +515,7 @@ static struct mem_input *dce112_mem_input_create(
 
 static void dce112_transform_destroy(struct transform **xfm)
 {
-	dm_free(TO_DCE_TRANSFORM(*xfm));
+	kfree(TO_DCE_TRANSFORM(*xfm));
 	*xfm = NULL;
 }
 
@@ -523,7 +524,7 @@ static struct transform *dce112_transform_create(
 	uint32_t inst)
 {
 	struct dce_transform *transform =
-		dm_alloc(sizeof(struct dce_transform));
+		kzalloc(sizeof(struct dce_transform), GFP_ATOMIC);
 
 	if (!transform)
 		return NULL;
@@ -535,7 +536,7 @@ static struct transform *dce112_transform_create(
 	}
 
 	BREAK_TO_DEBUGGER();
-	dm_free(transform);
+	kfree(transform);
 	return NULL;
 }
 
@@ -554,7 +555,7 @@ struct link_encoder *dce112_link_encoder_create(
 	const struct encoder_init_data *enc_init_data)
 {
 	struct dce110_link_encoder *enc110 =
-		dm_alloc(sizeof(struct dce110_link_encoder));
+		kzalloc(sizeof(struct dce110_link_encoder), GFP_ATOMIC);
 
 	if (!enc110)
 		return NULL;
@@ -571,14 +572,14 @@ struct link_encoder *dce112_link_encoder_create(
 	}
 
 	BREAK_TO_DEBUGGER();
-	dm_free(enc110);
+	kfree(enc110);
 	return NULL;
 }
 
 static struct input_pixel_processor *dce112_ipp_create(
 	struct dc_context *ctx, uint32_t inst)
 {
-	struct dce_ipp *ipp = dm_alloc(sizeof(struct dce_ipp));
+	struct dce_ipp *ipp = kzalloc(sizeof(struct dce_ipp), GFP_ATOMIC);
 
 	if (!ipp) {
 		BREAK_TO_DEBUGGER();
@@ -595,7 +596,7 @@ struct output_pixel_processor *dce112_opp_create(
 	uint32_t inst)
 {
 	struct dce110_opp *opp =
-		dm_alloc(sizeof(struct dce110_opp));
+		kzalloc(sizeof(struct dce110_opp), GFP_ATOMIC);
 
 	if (!opp)
 		return NULL;
@@ -605,7 +606,7 @@ struct output_pixel_processor *dce112_opp_create(
 		return &opp->base;
 
 	BREAK_TO_DEBUGGER();
-	dm_free(opp);
+	kfree(opp);
 	return NULL;
 }
 
@@ -617,7 +618,7 @@ struct clock_source *dce112_clock_source_create(
 	bool dp_clk_src)
 {
 	struct dce110_clk_src *clk_src =
-		dm_alloc(sizeof(struct dce110_clk_src));
+		kzalloc(sizeof(struct dce110_clk_src), GFP_ATOMIC);
 
 	if (!clk_src)
 		return NULL;
@@ -634,7 +635,7 @@ struct clock_source *dce112_clock_source_create(
 
 void dce112_clock_source_destroy(struct clock_source **clk_src)
 {
-	dm_free(TO_DCE110_CLK_SRC(*clk_src));
+	kfree(TO_DCE110_CLK_SRC(*clk_src));
 	*clk_src = NULL;
 }
 
@@ -653,19 +654,19 @@ static void destruct(struct dce110_resource_pool *pool)
 			dce_ipp_destroy(&pool->base.ipps[i]);
 
 		if (pool->base.mis[i] != NULL) {
-			dm_free(TO_DCE_MEM_INPUT(pool->base.mis[i]));
+			kfree(TO_DCE_MEM_INPUT(pool->base.mis[i]));
 			pool->base.mis[i] = NULL;
 		}
 
 		if (pool->base.timing_generators[i] != NULL) {
-			dm_free(DCE110TG_FROM_TG(pool->base.timing_generators[i]));
+			kfree(DCE110TG_FROM_TG(pool->base.timing_generators[i]));
 			pool->base.timing_generators[i] = NULL;
 		}
 	}
 
 	for (i = 0; i < pool->base.stream_enc_count; i++) {
 		if (pool->base.stream_enc[i] != NULL)
-			dm_free(DCE110STRENC_FROM_STRENC(pool->base.stream_enc[i]));
+			kfree(DCE110STRENC_FROM_STRENC(pool->base.stream_enc[i]));
 	}
 
 	for (i = 0; i < pool->base.clk_src_count; i++) {
@@ -940,7 +941,7 @@ static void dce112_destroy_resource_pool(struct resource_pool **pool)
 	struct dce110_resource_pool *dce110_pool = TO_DCE110_RES_POOL(*pool);
 
 	destruct(dce110_pool);
-	dm_free(dce110_pool);
+	kfree(dce110_pool);
 	*pool = NULL;
 }
 
@@ -1298,7 +1299,7 @@ struct resource_pool *dce112_create_resource_pool(
 	struct dc *dc)
 {
 	struct dce110_resource_pool *pool =
-		dm_alloc(sizeof(struct dce110_resource_pool));
+		kzalloc(sizeof(struct dce110_resource_pool), GFP_ATOMIC);
 
 	if (!pool)
 		return NULL;
diff --git a/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c b/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c
index e5d2d98982f7..553bf45f6423 100644
--- a/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c
@@ -351,7 +351,7 @@ struct output_pixel_processor *dce120_opp_create(
 	uint32_t inst)
 {
 	struct dce110_opp *opp =
-		dm_alloc(sizeof(struct dce110_opp));
+		kzalloc(sizeof(struct dce110_opp), GFP_ATOMIC);
 
 	if (!opp)
 		return NULL;
@@ -361,7 +361,7 @@ struct output_pixel_processor *dce120_opp_create(
 		return &opp->base;
 
 	BREAK_TO_DEBUGGER();
-	dm_free(opp);
+	kfree(opp);
 	return NULL;
 }
 
@@ -388,7 +388,7 @@ struct clock_source *dce120_clock_source_create(
 	bool dp_clk_src)
 {
 	struct dce110_clk_src *clk_src =
-		dm_alloc(sizeof(*clk_src));
+		kzalloc(sizeof(*clk_src), GFP_ATOMIC);
 
 	if (!clk_src)
 		return NULL;
@@ -405,7 +405,7 @@ struct clock_source *dce120_clock_source_create(
 
 void dce120_clock_source_destroy(struct clock_source **clk_src)
 {
-	dm_free(TO_DCE110_CLK_SRC(*clk_src));
+	kfree(TO_DCE110_CLK_SRC(*clk_src));
 	*clk_src = NULL;
 }
 
@@ -428,7 +428,7 @@ static struct timing_generator *dce120_timing_generator_create(
 		const struct dce110_timing_generator_offsets *offsets)
 {
 	struct dce110_timing_generator *tg110 =
-		dm_alloc(sizeof(struct dce110_timing_generator));
+		kzalloc(sizeof(struct dce110_timing_generator), GFP_ATOMIC);
 
 	if (!tg110)
 		return NULL;
@@ -437,13 +437,13 @@ static struct timing_generator *dce120_timing_generator_create(
 		return &tg110->base;
 
 	BREAK_TO_DEBUGGER();
-	dm_free(tg110);
+	kfree(tg110);
 	return NULL;
 }
 
 static void dce120_transform_destroy(struct transform **xfm)
 {
-	dm_free(TO_DCE_TRANSFORM(*xfm));
+	kfree(TO_DCE_TRANSFORM(*xfm));
 	*xfm = NULL;
 }
 
@@ -462,7 +462,7 @@ static void destruct(struct dce110_resource_pool *pool)
 			dce_ipp_destroy(&pool->base.ipps[i]);
 
 		if (pool->base.mis[i] != NULL) {
-			dm_free(TO_DCE_MEM_INPUT(pool->base.mis[i]));
+			kfree(TO_DCE_MEM_INPUT(pool->base.mis[i]));
 			pool->base.mis[i] = NULL;
 		}
 
@@ -471,7 +471,7 @@ static void destruct(struct dce110_resource_pool *pool)
 		}
 
 		if (pool->base.timing_generators[i] != NULL) {
-			dm_free(DCE110TG_FROM_TG(pool->base.timing_generators[i]));
+			kfree(DCE110TG_FROM_TG(pool->base.timing_generators[i]));
 			pool->base.timing_generators[i] = NULL;
 		}
 	}
@@ -483,7 +483,7 @@ static void destruct(struct dce110_resource_pool *pool)
 
 	for (i = 0; i < pool->base.stream_enc_count; i++) {
 		if (pool->base.stream_enc[i] != NULL)
-			dm_free(DCE110STRENC_FROM_STRENC(pool->base.stream_enc[i]));
+			kfree(DCE110STRENC_FROM_STRENC(pool->base.stream_enc[i]));
 	}
 
 	for (i = 0; i < pool->base.clk_src_count; i++) {
@@ -539,7 +539,7 @@ static struct link_encoder *dce120_link_encoder_create(
 	const struct encoder_init_data *enc_init_data)
 {
 	struct dce110_link_encoder *enc110 =
-		dm_alloc(sizeof(struct dce110_link_encoder));
+		kzalloc(sizeof(struct dce110_link_encoder), GFP_ATOMIC);
 
 	if (!enc110)
 		return NULL;
@@ -556,14 +556,14 @@ static struct link_encoder *dce120_link_encoder_create(
 	}
 
 	BREAK_TO_DEBUGGER();
-	dm_free(enc110);
+	kfree(enc110);
 	return NULL;
 }
 
 static struct input_pixel_processor *dce120_ipp_create(
 	struct dc_context *ctx, uint32_t inst)
 {
-	struct dce_ipp *ipp = dm_alloc(sizeof(struct dce_ipp));
+	struct dce_ipp *ipp = kzalloc(sizeof(struct dce_ipp), GFP_ATOMIC);
 
 	if (!ipp) {
 		BREAK_TO_DEBUGGER();
@@ -580,7 +580,7 @@ static struct stream_encoder *dce120_stream_encoder_create(
 	struct dc_context *ctx)
 {
 	struct dce110_stream_encoder *enc110 =
-		dm_alloc(sizeof(struct dce110_stream_encoder));
+		kzalloc(sizeof(struct dce110_stream_encoder), GFP_ATOMIC);
 
 	if (!enc110)
 		return NULL;
@@ -591,7 +591,7 @@ static struct stream_encoder *dce120_stream_encoder_create(
 		return &enc110->base;
 
 	BREAK_TO_DEBUGGER();
-	dm_free(enc110);
+	kfree(enc110);
 	return NULL;
 }
 
@@ -614,7 +614,7 @@ static const struct dce_hwseq_mask hwseq_mask = {
 static struct dce_hwseq *dce120_hwseq_create(
 	struct dc_context *ctx)
 {
-	struct dce_hwseq *hws = dm_alloc(sizeof(struct dce_hwseq));
+	struct dce_hwseq *hws = kzalloc(sizeof(struct dce_hwseq), GFP_ATOMIC);
 
 	if (hws) {
 		hws->ctx = ctx;
@@ -654,7 +654,8 @@ static struct mem_input *dce120_mem_input_create(
 	struct dc_context *ctx,
 	uint32_t inst)
 {
-	struct dce_mem_input *dce_mi = dm_alloc(sizeof(struct dce_mem_input));
+	struct dce_mem_input *dce_mi = kzalloc(sizeof(struct dce_mem_input),
+					       GFP_ATOMIC);
 
 	if (!dce_mi) {
 		BREAK_TO_DEBUGGER();
@@ -670,7 +671,7 @@ static struct transform *dce120_transform_create(
 	uint32_t inst)
 {
 	struct dce_transform *transform =
-		dm_alloc(sizeof(struct dce_transform));
+		kzalloc(sizeof(struct dce_transform), GFP_ATOMIC);
 
 	if (!transform)
 		return NULL;
@@ -682,7 +683,7 @@ static struct transform *dce120_transform_create(
 	}
 
 	BREAK_TO_DEBUGGER();
-	dm_free(transform);
+	kfree(transform);
 	return NULL;
 }
 
@@ -691,7 +692,7 @@ static void dce120_destroy_resource_pool(struct resource_pool **pool)
 	struct dce110_resource_pool *dce110_pool = TO_DCE110_RES_POOL(*pool);
 
 	destruct(dce110_pool);
-	dm_free(dce110_pool);
+	kfree(dce110_pool);
 	*pool = NULL;
 }
 
@@ -1006,7 +1007,7 @@ struct resource_pool *dce120_create_resource_pool(
 	struct dc *dc)
 {
 	struct dce110_resource_pool *pool =
-		dm_alloc(sizeof(struct dce110_resource_pool));
+		kzalloc(sizeof(struct dce110_resource_pool), GFP_ATOMIC);
 
 	if (!pool)
 		return NULL;
diff --git a/drivers/gpu/drm/amd/display/dc/dce80/dce80_compressor.c b/drivers/gpu/drm/amd/display/dc/dce80/dce80_compressor.c
index 77626d7624c6..0488fb3537ba 100644
--- a/drivers/gpu/drm/amd/display/dc/dce80/dce80_compressor.c
+++ b/drivers/gpu/drm/amd/display/dc/dce80/dce80_compressor.c
@@ -819,7 +819,7 @@ bool dce80_compressor_construct(struct dce80_compressor *compressor,
 struct compressor *dce80_compressor_create(struct dc_context *ctx)
 {
 	struct dce80_compressor *cp80 =
-		dm_alloc(sizeof(struct dce80_compressor));
+		kzalloc(sizeof(struct dce80_compressor), GFP_ATOMIC);
 
 	if (!cp80)
 		return NULL;
@@ -828,12 +828,12 @@ struct compressor *dce80_compressor_create(struct dc_context *ctx)
 		return &cp80->base;
 
 	BREAK_TO_DEBUGGER();
-	dm_free(cp80);
+	kfree(cp80);
 	return NULL;
 }
 
 void dce80_compressor_destroy(struct compressor **compressor)
 {
-	dm_free(TO_DCE80_COMPRESSOR(*compressor));
+	kfree(TO_DCE80_COMPRESSOR(*compressor));
 	*compressor = NULL;
 }
diff --git a/drivers/gpu/drm/amd/display/dc/dce80/dce80_resource.c b/drivers/gpu/drm/amd/display/dc/dce80/dce80_resource.c
index 5453f02ea8ca..ccbe0d576a5e 100644
--- a/drivers/gpu/drm/amd/display/dc/dce80/dce80_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/dce80/dce80_resource.c
@@ -399,7 +399,7 @@ static struct timing_generator *dce80_timing_generator_create(
 		const struct dce110_timing_generator_offsets *offsets)
 {
 	struct dce110_timing_generator *tg110 =
-		dm_alloc(sizeof(struct dce110_timing_generator));
+		kzalloc(sizeof(struct dce110_timing_generator), GFP_ATOMIC);
 
 	if (!tg110)
 		return NULL;
@@ -408,7 +408,7 @@ static struct timing_generator *dce80_timing_generator_create(
 		return &tg110->base;
 
 	BREAK_TO_DEBUGGER();
-	dm_free(tg110);
+	kfree(tg110);
 	return NULL;
 }
 
@@ -417,7 +417,7 @@ static struct output_pixel_processor *dce80_opp_create(
 	uint32_t inst)
 {
 	struct dce110_opp *opp =
-		dm_alloc(sizeof(struct dce110_opp));
+		kzalloc(sizeof(struct dce110_opp), GFP_ATOMIC);
 
 	if (!opp)
 		return NULL;
@@ -427,7 +427,7 @@ static struct output_pixel_processor *dce80_opp_create(
 		return &opp->base;
 
 	BREAK_TO_DEBUGGER();
-	dm_free(opp);
+	kfree(opp);
 	return NULL;
 }
 
@@ -436,7 +436,7 @@ static struct stream_encoder *dce80_stream_encoder_create(
 	struct dc_context *ctx)
 {
 	struct dce110_stream_encoder *enc110 =
-		dm_alloc(sizeof(struct dce110_stream_encoder));
+		kzalloc(sizeof(struct dce110_stream_encoder), GFP_ATOMIC);
 
 	if (!enc110)
 		return NULL;
@@ -447,7 +447,7 @@ static struct stream_encoder *dce80_stream_encoder_create(
 		return &enc110->base;
 
 	BREAK_TO_DEBUGGER();
-	dm_free(enc110);
+	kfree(enc110);
 	return NULL;
 }
 
@@ -469,7 +469,7 @@ static const struct dce_hwseq_mask hwseq_mask = {
 static struct dce_hwseq *dce80_hwseq_create(
 	struct dc_context *ctx)
 {
-	struct dce_hwseq *hws = dm_alloc(sizeof(struct dce_hwseq));
+	struct dce_hwseq *hws = kzalloc(sizeof(struct dce_hwseq), GFP_ATOMIC);
 
 	if (hws) {
 		hws->ctx = ctx;
@@ -514,7 +514,8 @@ static struct mem_input *dce80_mem_input_create(
 	struct dc_context *ctx,
 	uint32_t inst)
 {
-	struct dce_mem_input *dce_mi = dm_alloc(sizeof(struct dce_mem_input));
+	struct dce_mem_input *dce_mi = kzalloc(sizeof(struct dce_mem_input),
+					       GFP_ATOMIC);
 
 	if (!dce_mi) {
 		BREAK_TO_DEBUGGER();
@@ -528,7 +529,7 @@ static struct mem_input *dce80_mem_input_create(
 
 static void dce80_transform_destroy(struct transform **xfm)
 {
-	dm_free(TO_DCE_TRANSFORM(*xfm));
+	kfree(TO_DCE_TRANSFORM(*xfm));
 	*xfm = NULL;
 }
 
@@ -537,7 +538,7 @@ static struct transform *dce80_transform_create(
 	uint32_t inst)
 {
 	struct dce_transform *transform =
-		dm_alloc(sizeof(struct dce_transform));
+		kzalloc(sizeof(struct dce_transform), GFP_ATOMIC);
 
 	if (!transform)
 		return NULL;
@@ -549,7 +550,7 @@ static struct transform *dce80_transform_create(
 	}
 
 	BREAK_TO_DEBUGGER();
-	dm_free(transform);
+	kfree(transform);
 	return NULL;
 }
 
@@ -565,7 +566,7 @@ struct link_encoder *dce80_link_encoder_create(
 	const struct encoder_init_data *enc_init_data)
 {
 	struct dce110_link_encoder *enc110 =
-		dm_alloc(sizeof(struct dce110_link_encoder));
+		kzalloc(sizeof(struct dce110_link_encoder), GFP_ATOMIC);
 
 	if (!enc110)
 		return NULL;
@@ -582,7 +583,7 @@ struct link_encoder *dce80_link_encoder_create(
 	}
 
 	BREAK_TO_DEBUGGER();
-	dm_free(enc110);
+	kfree(enc110);
 	return NULL;
 }
 
@@ -594,7 +595,7 @@ struct clock_source *dce80_clock_source_create(
 	bool dp_clk_src)
 {
 	struct dce110_clk_src *clk_src =
-		dm_alloc(sizeof(struct dce110_clk_src));
+		kzalloc(sizeof(struct dce110_clk_src), GFP_ATOMIC);
 
 	if (!clk_src)
 		return NULL;
@@ -611,14 +612,14 @@ struct clock_source *dce80_clock_source_create(
 
 void dce80_clock_source_destroy(struct clock_source **clk_src)
 {
-	dm_free(TO_DCE110_CLK_SRC(*clk_src));
+	kfree(TO_DCE110_CLK_SRC(*clk_src));
 	*clk_src = NULL;
 }
 
 static struct input_pixel_processor *dce80_ipp_create(
 	struct dc_context *ctx, uint32_t inst)
 {
-	struct dce_ipp *ipp = dm_alloc(sizeof(struct dce_ipp));
+	struct dce_ipp *ipp = kzalloc(sizeof(struct dce_ipp), GFP_ATOMIC);
 
 	if (!ipp) {
 		BREAK_TO_DEBUGGER();
@@ -645,19 +646,19 @@ static void destruct(struct dce110_resource_pool *pool)
 			dce_ipp_destroy(&pool->base.ipps[i]);
 
 		if (pool->base.mis[i] != NULL) {
-			dm_free(TO_DCE_MEM_INPUT(pool->base.mis[i]));
+			kfree(TO_DCE_MEM_INPUT(pool->base.mis[i]));
 			pool->base.mis[i] = NULL;
 		}
 
 		if (pool->base.timing_generators[i] != NULL)	{
-			dm_free(DCE110TG_FROM_TG(pool->base.timing_generators[i]));
+			kfree(DCE110TG_FROM_TG(pool->base.timing_generators[i]));
 			pool->base.timing_generators[i] = NULL;
 		}
 	}
 
 	for (i = 0; i < pool->base.stream_enc_count; i++) {
 		if (pool->base.stream_enc[i] != NULL)
-			dm_free(DCE110STRENC_FROM_STRENC(pool->base.stream_enc[i]));
+			kfree(DCE110STRENC_FROM_STRENC(pool->base.stream_enc[i]));
 	}
 
 	for (i = 0; i < pool->base.clk_src_count; i++) {
@@ -781,7 +782,7 @@ static void dce80_destroy_resource_pool(struct resource_pool **pool)
 	struct dce110_resource_pool *dce110_pool = TO_DCE110_RES_POOL(*pool);
 
 	destruct(dce110_pool);
-	dm_free(dce110_pool);
+	kfree(dce110_pool);
 	*pool = NULL;
 }
 
@@ -948,7 +949,7 @@ struct resource_pool *dce80_create_resource_pool(
 	struct dc *dc)
 {
 	struct dce110_resource_pool *pool =
-		dm_alloc(sizeof(struct dce110_resource_pool));
+		kzalloc(sizeof(struct dce110_resource_pool), GFP_ATOMIC);
 
 	if (!pool)
 		return NULL;
@@ -1113,7 +1114,7 @@ struct resource_pool *dce81_create_resource_pool(
 	struct dc *dc)
 {
 	struct dce110_resource_pool *pool =
-		dm_alloc(sizeof(struct dce110_resource_pool));
+		kzalloc(sizeof(struct dce110_resource_pool), GFP_ATOMIC);
 
 	if (!pool)
 		return NULL;
@@ -1274,7 +1275,7 @@ struct resource_pool *dce83_create_resource_pool(
 	struct dc *dc)
 {
 	struct dce110_resource_pool *pool =
-		dm_alloc(sizeof(struct dce110_resource_pool));
+		kzalloc(sizeof(struct dce110_resource_pool), GFP_ATOMIC);
 
 	if (!pool)
 		return NULL;
diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_ipp.c b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_ipp.c
index 5e0e2464eab3..67bd6a738fe9 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_ipp.c
+++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_ipp.c
@@ -225,7 +225,7 @@ static void ippn10_cursor_set_position(
 
 static void dcn10_ipp_destroy(struct input_pixel_processor **ipp)
 {
-	dm_free(TO_DCN10_IPP(*ipp));
+	kfree(TO_DCN10_IPP(*ipp));
 	*ipp = NULL;
 }
 
diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_opp.c b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_opp.c
index 8048782ac599..a136f70b7a3c 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_opp.c
+++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_opp.c
@@ -314,7 +314,7 @@ static void oppn10_set_stereo_polarity(
 
 static void dcn10_opp_destroy(struct output_pixel_processor **opp)
 {
-	dm_free(TO_DCN10_OPP(*opp));
+	kfree(TO_DCN10_OPP(*opp));
 	*opp = NULL;
 }
 
diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_resource.c b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_resource.c
index 298eb44ad9bf..62ad8f91f14e 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_resource.c
@@ -468,7 +468,7 @@ static const struct dc_debug debug_defaults_diags = {
 
 static void dcn10_dpp_destroy(struct transform **xfm)
 {
-	dm_free(TO_DCN10_DPP(*xfm));
+	kfree(TO_DCN10_DPP(*xfm));
 	*xfm = NULL;
 }
 
@@ -477,7 +477,7 @@ static struct transform *dcn10_dpp_create(
 	uint32_t inst)
 {
 	struct dcn10_dpp *dpp =
-		dm_alloc(sizeof(struct dcn10_dpp));
+		kzalloc(sizeof(struct dcn10_dpp), GFP_ATOMIC);
 
 	if (!dpp)
 		return NULL;
@@ -487,7 +487,7 @@ static struct transform *dcn10_dpp_create(
 		return &dpp->base;
 
 	BREAK_TO_DEBUGGER();
-	dm_free(dpp);
+	kfree(dpp);
 	return NULL;
 }
 
@@ -495,7 +495,7 @@ static struct input_pixel_processor *dcn10_ipp_create(
 	struct dc_context *ctx, uint32_t inst)
 {
 	struct dcn10_ipp *ipp =
-		dm_alloc(sizeof(struct dcn10_ipp));
+		kzalloc(sizeof(struct dcn10_ipp), GFP_ATOMIC);
 
 	if (!ipp) {
 		BREAK_TO_DEBUGGER();
@@ -512,7 +512,7 @@ static struct output_pixel_processor *dcn10_opp_create(
 	struct dc_context *ctx, uint32_t inst)
 {
 	struct dcn10_opp *opp =
-		dm_alloc(sizeof(struct dcn10_opp));
+		kzalloc(sizeof(struct dcn10_opp), GFP_ATOMIC);
 
 	if (!opp) {
 		BREAK_TO_DEBUGGER();
@@ -526,7 +526,8 @@ static struct output_pixel_processor *dcn10_opp_create(
 
 static struct mpc *dcn10_mpc_create(struct dc_context *ctx)
 {
-	struct dcn10_mpc *mpc10 = dm_alloc(sizeof(struct dcn10_mpc));
+	struct dcn10_mpc *mpc10 = kzalloc(sizeof(struct dcn10_mpc),
+					  GFP_ATOMIC);
 
 	if (!mpc10)
 		return NULL;
@@ -545,7 +546,7 @@ static struct timing_generator *dcn10_timing_generator_create(
 		uint32_t instance)
 {
 	struct dcn10_timing_generator *tgn10 =
-		dm_alloc(sizeof(struct dcn10_timing_generator));
+		kzalloc(sizeof(struct dcn10_timing_generator), GFP_ATOMIC);
 
 	if (!tgn10)
 		return NULL;
@@ -577,7 +578,7 @@ struct link_encoder *dcn10_link_encoder_create(
 	const struct encoder_init_data *enc_init_data)
 {
 	struct dce110_link_encoder *enc110 =
-		dm_alloc(sizeof(struct dce110_link_encoder));
+		kzalloc(sizeof(struct dce110_link_encoder), GFP_ATOMIC);
 
 	if (!enc110)
 		return NULL;
@@ -594,7 +595,7 @@ struct link_encoder *dcn10_link_encoder_create(
 	}
 
 	BREAK_TO_DEBUGGER();
-	dm_free(enc110);
+	kfree(enc110);
 	return NULL;
 }
 
@@ -606,7 +607,7 @@ struct clock_source *dcn10_clock_source_create(
 	bool dp_clk_src)
 {
 	struct dce110_clk_src *clk_src =
-		dm_alloc(sizeof(struct dce110_clk_src));
+		kzalloc(sizeof(struct dce110_clk_src), GFP_ATOMIC);
 
 	if (!clk_src)
 		return NULL;
@@ -641,7 +642,7 @@ static struct stream_encoder *dcn10_stream_encoder_create(
 	struct dc_context *ctx)
 {
 	struct dce110_stream_encoder *enc110 =
-		dm_alloc(sizeof(struct dce110_stream_encoder));
+		kzalloc(sizeof(struct dce110_stream_encoder), GFP_ATOMIC);
 
 	if (!enc110)
 		return NULL;
@@ -652,7 +653,7 @@ static struct stream_encoder *dcn10_stream_encoder_create(
 		return &enc110->base;
 
 	BREAK_TO_DEBUGGER();
-	dm_free(enc110);
+	kfree(enc110);
 	return NULL;
 }
 
@@ -671,7 +672,7 @@ static const struct dce_hwseq_mask hwseq_mask = {
 static struct dce_hwseq *dcn10_hwseq_create(
 	struct dc_context *ctx)
 {
-	struct dce_hwseq *hws = dm_alloc(sizeof(struct dce_hwseq));
+	struct dce_hwseq *hws = kzalloc(sizeof(struct dce_hwseq), GFP_ATOMIC);
 
 	if (hws) {
 		hws->ctx = ctx;
@@ -698,13 +699,13 @@ static const struct resource_create_funcs res_create_maximus_funcs = {
 
 void dcn10_clock_source_destroy(struct clock_source **clk_src)
 {
-	dm_free(TO_DCE110_CLK_SRC(*clk_src));
+	kfree(TO_DCE110_CLK_SRC(*clk_src));
 	*clk_src = NULL;
 }
 
 static struct pp_smu_funcs_rv *dcn10_pp_smu_create(struct dc_context *ctx)
 {
-	struct pp_smu_funcs_rv *pp_smu = dm_alloc(sizeof(*pp_smu));
+	struct pp_smu_funcs_rv *pp_smu = kzalloc(sizeof(*pp_smu), GFP_ATOMIC);
 
 	if (!pp_smu)
 		return pp_smu;
@@ -722,13 +723,13 @@ static void destruct(struct dcn10_resource_pool *pool)
 			/* TODO: free dcn version of stream encoder once implemented
 			 * rather than using virtual stream encoder
 			 */
-			dm_free(pool->base.stream_enc[i]);
+			kfree(pool->base.stream_enc[i]);
 			pool->base.stream_enc[i] = NULL;
 		}
 	}
 
 	if (pool->base.mpc != NULL) {
-		dm_free(TO_DCN10_MPC(pool->base.mpc));
+		kfree(TO_DCN10_MPC(pool->base.mpc));
 		pool->base.mpc = NULL;
 	}
 	for (i = 0; i < pool->base.pipe_count; i++) {
@@ -742,7 +743,7 @@ static void destruct(struct dcn10_resource_pool *pool)
 			pool->base.ipps[i]->funcs->ipp_destroy(&pool->base.ipps[i]);
 
 		if (pool->base.mis[i] != NULL) {
-			dm_free(TO_DCN10_MEM_INPUT(pool->base.mis[i]));
+			kfree(TO_DCN10_MEM_INPUT(pool->base.mis[i]));
 			pool->base.mis[i] = NULL;
 		}
 
@@ -751,14 +752,14 @@ static void destruct(struct dcn10_resource_pool *pool)
 		}
 
 		if (pool->base.timing_generators[i] != NULL)	{
-			dm_free(DCN10TG_FROM_TG(pool->base.timing_generators[i]));
+			kfree(DCN10TG_FROM_TG(pool->base.timing_generators[i]));
 			pool->base.timing_generators[i] = NULL;
 		}
 	}
 
 	for (i = 0; i < pool->base.stream_enc_count; i++) {
 		if (pool->base.stream_enc[i] != NULL)
-		dm_free(DCE110STRENC_FROM_STRENC(pool->base.stream_enc[i]));
+		kfree(DCE110STRENC_FROM_STRENC(pool->base.stream_enc[i]));
 	}
 
 	for (i = 0; i < pool->base.audio_count; i++) {
@@ -767,7 +768,7 @@ static void destruct(struct dcn10_resource_pool *pool)
 	}
 
 	for (i = 0; i < pool->base.res_cap->num_dwb; i++) {
-		dm_free(pool->base.dwbc[i]);
+		kfree(pool->base.dwbc[i]);
 		pool->base.dwbc[i] = NULL;
 	}
 
@@ -792,7 +793,7 @@ static void destruct(struct dcn10_resource_pool *pool)
 	if (pool->base.display_clock != NULL)
 		dce_disp_clk_destroy(&pool->base.display_clock);
 
-	dm_free(pool->base.pp_smu);
+	kfree(pool->base.pp_smu);
 }
 
 static struct mem_input *dcn10_mem_input_create(
@@ -800,7 +801,7 @@ static struct mem_input *dcn10_mem_input_create(
 	uint32_t inst)
 {
 	struct dcn10_mem_input *mem_inputn10 =
-		dm_alloc(sizeof(struct dcn10_mem_input));
+		kzalloc(sizeof(struct dcn10_mem_input), GFP_ATOMIC);
 
 	if (!mem_inputn10)
 		return NULL;
@@ -810,7 +811,7 @@ static struct mem_input *dcn10_mem_input_create(
 		return &mem_inputn10->base;
 
 	BREAK_TO_DEBUGGER();
-	dm_free(mem_inputn10);
+	kfree(mem_inputn10);
 	return NULL;
 }
 
@@ -1207,7 +1208,7 @@ static void dcn10_destroy_resource_pool(struct resource_pool **pool)
 	struct dcn10_resource_pool *dcn10_pool = TO_DCN10_RES_POOL(*pool);
 
 	destruct(dcn10_pool);
-	dm_free(dcn10_pool);
+	kfree(dcn10_pool);
 	*pool = NULL;
 }
 
@@ -1239,7 +1240,8 @@ static bool dcn10_dwbc_create(struct dc_context *ctx, struct resource_pool *pool
 	uint32_t dwb_count = pool->res_cap->num_dwb;
 
 	for (i = 0; i < dwb_count; i++) {
-		struct dcn10_dwbc *dwbc10 = dm_alloc(sizeof(struct dcn10_dwbc));
+		struct dcn10_dwbc *dwbc10 = kzalloc(sizeof(struct dcn10_dwbc),
+						    GFP_ATOMIC);
 
 		if (!dwbc10) {
 			dm_error("DC: failed to create dwbc10!\n");
@@ -1517,7 +1519,7 @@ struct resource_pool *dcn10_create_resource_pool(
 		struct dc *dc)
 {
 	struct dcn10_resource_pool *pool =
-		dm_alloc(sizeof(struct dcn10_resource_pool));
+		kzalloc(sizeof(struct dcn10_resource_pool), GFP_ATOMIC);
 
 	if (!pool)
 		return NULL;
diff --git a/drivers/gpu/drm/amd/display/dc/gpio/gpio_base.c b/drivers/gpu/drm/amd/display/dc/gpio/gpio_base.c
index d42eb3de2ea4..3da5e2e965e6 100644
--- a/drivers/gpu/drm/amd/display/dc/gpio/gpio_base.c
+++ b/drivers/gpu/drm/amd/display/dc/gpio/gpio_base.c
@@ -239,7 +239,7 @@ struct gpio *dal_gpio_create(
 	uint32_t en,
 	enum gpio_pin_output_state output_state)
 {
-	struct gpio *gpio = dm_alloc(sizeof(struct gpio));
+	struct gpio *gpio = kzalloc(sizeof(struct gpio), GFP_ATOMIC);
 
 	if (!gpio) {
 		ASSERT_CRITICAL(false);
@@ -266,7 +266,7 @@ void dal_gpio_destroy(
 
 	dal_gpio_close(*gpio);
 
-	dm_free(*gpio);
+	kfree(*gpio);
 
 	*gpio = NULL;
 }
diff --git a/drivers/gpu/drm/amd/display/dc/gpio/gpio_service.c b/drivers/gpu/drm/amd/display/dc/gpio/gpio_service.c
index eeb1cd0f75a6..1da22f779249 100644
--- a/drivers/gpu/drm/amd/display/dc/gpio/gpio_service.c
+++ b/drivers/gpu/drm/amd/display/dc/gpio/gpio_service.c
@@ -59,7 +59,7 @@ struct gpio_service *dal_gpio_service_create(
 
 	uint32_t index_of_id;
 
-	service = dm_alloc(sizeof(struct gpio_service));
+	service = kzalloc(sizeof(struct gpio_service), GFP_ATOMIC);
 
 	if (!service) {
 		BREAK_TO_DEBUGGER();
@@ -98,7 +98,8 @@ struct gpio_service *dal_gpio_service_create(
 			if (number_of_bits) {
 				uint32_t index_of_uint = 0;
 
-				slot = dm_alloc(number_of_uints * sizeof(uint32_t));
+				slot = kzalloc(number_of_uints * sizeof(uint32_t),
+					       GFP_ATOMIC);
 
 				if (!slot) {
 					BREAK_TO_DEBUGGER();
@@ -130,11 +131,11 @@ struct gpio_service *dal_gpio_service_create(
 		slot = service->busyness[index_of_id];
 
 		if (slot)
-			dm_free(slot);
+			kfree(slot);
 	};
 
 failure_1:
-	dm_free(service);
+	kfree(service);
 
 	return NULL;
 }
@@ -171,13 +172,13 @@ void dal_gpio_service_destroy(
 			uint32_t *slot = (*ptr)->busyness[index_of_id];
 
 			if (slot)
-				dm_free(slot);
+				kfree(slot);
 
 			++index_of_id;
 		} while (index_of_id < GPIO_ID_COUNT);
 	}
 
-	dm_free(*ptr);
+	kfree(*ptr);
 
 	*ptr = NULL;
 }
@@ -399,7 +400,7 @@ void dal_gpio_destroy_irq(
 
 	dal_gpio_close(*irq);
 	dal_gpio_destroy(irq);
-	dm_free(*irq);
+	kfree(*irq);
 
 	*irq = NULL;
 }
@@ -417,7 +418,7 @@ struct ddc *dal_gpio_create_ddc(
 	if (!service->translate.funcs->offset_to_id(offset, mask, &id, &en))
 		return NULL;
 
-	ddc = dm_alloc(sizeof(struct ddc));
+	ddc = kzalloc(sizeof(struct ddc), GFP_ATOMIC);
 
 	if (!ddc) {
 		BREAK_TO_DEBUGGER();
@@ -450,7 +451,7 @@ struct ddc *dal_gpio_create_ddc(
 	dal_gpio_destroy(&ddc->pin_data);
 
 failure_1:
-	dm_free(ddc);
+	kfree(ddc);
 
 	return NULL;
 }
@@ -466,7 +467,7 @@ void dal_gpio_destroy_ddc(
 	dal_ddc_close(*ddc);
 	dal_gpio_destroy(&(*ddc)->pin_data);
 	dal_gpio_destroy(&(*ddc)->pin_clock);
-	dm_free(*ddc);
+	kfree(*ddc);
 
 	*ddc = NULL;
 }
diff --git a/drivers/gpu/drm/amd/display/dc/gpio/hw_ddc.c b/drivers/gpu/drm/amd/display/dc/gpio/hw_ddc.c
index 47e0f8f24a86..2a0794d355c3 100644
--- a/drivers/gpu/drm/amd/display/dc/gpio/hw_ddc.c
+++ b/drivers/gpu/drm/amd/display/dc/gpio/hw_ddc.c
@@ -55,7 +55,7 @@ static void destroy(
 
 	destruct(pin);
 
-	dm_free(pin);
+	kfree(pin);
 
 	*ptr = NULL;
 }
@@ -225,7 +225,7 @@ struct hw_gpio_pin *dal_hw_ddc_create(
 	enum gpio_id id,
 	uint32_t en)
 {
-	struct hw_ddc *pin = dm_alloc(sizeof(struct hw_ddc));
+	struct hw_ddc *pin = kzalloc(sizeof(struct hw_ddc), GFP_ATOMIC);
 
 	if (!pin) {
 		ASSERT_CRITICAL(false);
@@ -237,7 +237,7 @@ struct hw_gpio_pin *dal_hw_ddc_create(
 
 	ASSERT_CRITICAL(false);
 
-	dm_free(pin);
+	kfree(pin);
 
 	return NULL;
 }
diff --git a/drivers/gpu/drm/amd/display/dc/gpio/hw_factory.c b/drivers/gpu/drm/amd/display/dc/gpio/hw_factory.c
index f7d049c0e62a..87b580fa4bc9 100644
--- a/drivers/gpu/drm/amd/display/dc/gpio/hw_factory.c
+++ b/drivers/gpu/drm/amd/display/dc/gpio/hw_factory.c
@@ -101,7 +101,7 @@ void dal_hw_factory_destroy(
 		return;
 	}
 
-	dm_free(*factory);
+	kfree(*factory);
 
 	*factory = NULL;
 }
diff --git a/drivers/gpu/drm/amd/display/dc/gpio/hw_hpd.c b/drivers/gpu/drm/amd/display/dc/gpio/hw_hpd.c
index 9634e8841d90..fa5f13eda452 100644
--- a/drivers/gpu/drm/amd/display/dc/gpio/hw_hpd.c
+++ b/drivers/gpu/drm/amd/display/dc/gpio/hw_hpd.c
@@ -72,7 +72,7 @@ static void destroy(
 
 	destruct(hpd);
 
-	dm_free(hpd);
+	kfree(hpd);
 
 	*ptr = NULL;
 }
@@ -157,7 +157,7 @@ struct hw_gpio_pin *dal_hw_hpd_create(
 	enum gpio_id id,
 	uint32_t en)
 {
-	struct hw_hpd *hpd = dm_alloc(sizeof(struct hw_hpd));
+	struct hw_hpd *hpd = kzalloc(sizeof(struct hw_hpd), GFP_ATOMIC);
 
 	if (!hpd) {
 		ASSERT_CRITICAL(false);
@@ -169,7 +169,7 @@ struct hw_gpio_pin *dal_hw_hpd_create(
 
 	ASSERT_CRITICAL(false);
 
-	dm_free(hpd);
+	kfree(hpd);
 
 	return NULL;
 }
diff --git a/drivers/gpu/drm/amd/display/dc/i2caux/dce100/i2caux_dce100.c b/drivers/gpu/drm/amd/display/dc/i2caux/dce100/i2caux_dce100.c
index 0712cafb4c42..7775011853fb 100644
--- a/drivers/gpu/drm/amd/display/dc/i2caux/dce100/i2caux_dce100.c
+++ b/drivers/gpu/drm/amd/display/dc/i2caux/dce100/i2caux_dce100.c
@@ -88,7 +88,7 @@ struct i2caux *dal_i2caux_dce100_create(
 	struct dc_context *ctx)
 {
 	struct i2caux_dce110 *i2caux_dce110 =
-		dm_alloc(sizeof(struct i2caux_dce110));
+		kzalloc(sizeof(struct i2caux_dce110), GFP_ATOMIC);
 
 	if (!i2caux_dce110) {
 		ASSERT_CRITICAL(false);
@@ -106,7 +106,7 @@ struct i2caux *dal_i2caux_dce100_create(
 
 	ASSERT_CRITICAL(false);
 
-	dm_free(i2caux_dce110);
+	kfree(i2caux_dce110);
 
 	return NULL;
 }
diff --git a/drivers/gpu/drm/amd/display/dc/i2caux/dce110/aux_engine_dce110.c b/drivers/gpu/drm/amd/display/dc/i2caux/dce110/aux_engine_dce110.c
index d3eaf8977a60..6607d580bf4d 100644
--- a/drivers/gpu/drm/amd/display/dc/i2caux/dce110/aux_engine_dce110.c
+++ b/drivers/gpu/drm/amd/display/dc/i2caux/dce110/aux_engine_dce110.c
@@ -87,7 +87,7 @@ static void destroy(
 
 	destruct(engine);
 
-	dm_free(engine);
+	kfree(engine);
 
 	*aux_engine = NULL;
 }
@@ -464,7 +464,7 @@ struct aux_engine *dal_aux_engine_dce110_create(
 		return NULL;
 	}
 
-	engine = dm_alloc(sizeof(*engine));
+	engine = kzalloc(sizeof(*engine), GFP_ATOMIC);
 
 	if (!engine) {
 		ASSERT_CRITICAL(false);
@@ -476,7 +476,7 @@ struct aux_engine *dal_aux_engine_dce110_create(
 
 	ASSERT_CRITICAL(false);
 
-	dm_free(engine);
+	kfree(engine);
 
 	return NULL;
 }
diff --git a/drivers/gpu/drm/amd/display/dc/i2caux/dce110/i2c_hw_engine_dce110.c b/drivers/gpu/drm/amd/display/dc/i2caux/dce110/i2c_hw_engine_dce110.c
index 80d06ad78e07..e0b6e1f32086 100644
--- a/drivers/gpu/drm/amd/display/dc/i2caux/dce110/i2c_hw_engine_dce110.c
+++ b/drivers/gpu/drm/amd/display/dc/i2caux/dce110/i2c_hw_engine_dce110.c
@@ -469,7 +469,7 @@ static void destroy(
 
 	dal_i2c_hw_engine_destruct(&engine_dce110->base);
 
-	dm_free(engine_dce110);
+	kfree(engine_dce110);
 
 	*i2c_engine = NULL;
 }
@@ -559,7 +559,8 @@ struct i2c_engine *dal_i2c_hw_engine_dce110_create(
 		return NULL;
 	}
 
-	engine_dce10 = dm_alloc(sizeof(struct i2c_hw_engine_dce110));
+	engine_dce10 = kzalloc(sizeof(struct i2c_hw_engine_dce110),
+			       GFP_ATOMIC);
 
 	if (!engine_dce10) {
 		ASSERT_CRITICAL(false);
@@ -571,7 +572,7 @@ struct i2c_engine *dal_i2c_hw_engine_dce110_create(
 
 	ASSERT_CRITICAL(false);
 
-	dm_free(engine_dce10);
+	kfree(engine_dce10);
 
 	return NULL;
 }
diff --git a/drivers/gpu/drm/amd/display/dc/i2caux/dce110/i2c_sw_engine_dce110.c b/drivers/gpu/drm/amd/display/dc/i2caux/dce110/i2c_sw_engine_dce110.c
index 996813d9165f..0ec890a46a69 100644
--- a/drivers/gpu/drm/amd/display/dc/i2caux/dce110/i2c_sw_engine_dce110.c
+++ b/drivers/gpu/drm/amd/display/dc/i2caux/dce110/i2c_sw_engine_dce110.c
@@ -88,7 +88,7 @@ static void destroy(
 
 	destruct(sw_engine);
 
-	dm_free(sw_engine);
+	kfree(sw_engine);
 
 	*engine = NULL;
 }
@@ -153,7 +153,8 @@ struct i2c_engine *dal_i2c_sw_engine_dce110_create(
 		return NULL;
 	}
 
-	engine_dce110 = dm_alloc(sizeof(struct i2c_sw_engine_dce110));
+	engine_dce110 = kzalloc(sizeof(struct i2c_sw_engine_dce110),
+				GFP_ATOMIC);
 
 	if (!engine_dce110) {
 		ASSERT_CRITICAL(false);
@@ -165,7 +166,7 @@ struct i2c_engine *dal_i2c_sw_engine_dce110_create(
 
 	ASSERT_CRITICAL(false);
 
-	dm_free(engine_dce110);
+	kfree(engine_dce110);
 
 	return NULL;
 }
diff --git a/drivers/gpu/drm/amd/display/dc/i2caux/dce110/i2caux_dce110.c b/drivers/gpu/drm/amd/display/dc/i2caux/dce110/i2caux_dce110.c
index 1c00ed0010d9..345684758ce1 100644
--- a/drivers/gpu/drm/amd/display/dc/i2caux/dce110/i2caux_dce110.c
+++ b/drivers/gpu/drm/amd/display/dc/i2caux/dce110/i2caux_dce110.c
@@ -68,7 +68,7 @@ static void destroy(
 
 	destruct(i2caux_dce110);
 
-	dm_free(i2caux_dce110);
+	kfree(i2caux_dce110);
 
 	*i2c_engine = NULL;
 }
@@ -299,7 +299,7 @@ struct i2caux *dal_i2caux_dce110_create(
 	struct dc_context *ctx)
 {
 	struct i2caux_dce110 *i2caux_dce110 =
-		dm_alloc(sizeof(struct i2caux_dce110));
+		kzalloc(sizeof(struct i2caux_dce110), GFP_ATOMIC);
 
 	if (!i2caux_dce110) {
 		ASSERT_CRITICAL(false);
@@ -317,7 +317,7 @@ struct i2caux *dal_i2caux_dce110_create(
 
 	ASSERT_CRITICAL(false);
 
-	dm_free(i2caux_dce110);
+	kfree(i2caux_dce110);
 
 	return NULL;
 }
diff --git a/drivers/gpu/drm/amd/display/dc/i2caux/dce112/i2caux_dce112.c b/drivers/gpu/drm/amd/display/dc/i2caux/dce112/i2caux_dce112.c
index d74f3f15d600..014ae24c5ba6 100644
--- a/drivers/gpu/drm/amd/display/dc/i2caux/dce112/i2caux_dce112.c
+++ b/drivers/gpu/drm/amd/display/dc/i2caux/dce112/i2caux_dce112.c
@@ -122,7 +122,7 @@ struct i2caux *dal_i2caux_dce112_create(
 	struct dc_context *ctx)
 {
 	struct i2caux_dce110 *i2caux_dce110 =
-		dm_alloc(sizeof(struct i2caux_dce110));
+		kzalloc(sizeof(struct i2caux_dce110), GFP_ATOMIC);
 
 	if (!i2caux_dce110) {
 		ASSERT_CRITICAL(false);
@@ -134,7 +134,7 @@ struct i2caux *dal_i2caux_dce112_create(
 
 	ASSERT_CRITICAL(false);
 
-	dm_free(i2caux_dce110);
+	kfree(i2caux_dce110);
 
 	return NULL;
 }
diff --git a/drivers/gpu/drm/amd/display/dc/i2caux/dce120/i2caux_dce120.c b/drivers/gpu/drm/amd/display/dc/i2caux/dce120/i2caux_dce120.c
index 91198295f1a4..344f26f62d42 100644
--- a/drivers/gpu/drm/amd/display/dc/i2caux/dce120/i2caux_dce120.c
+++ b/drivers/gpu/drm/amd/display/dc/i2caux/dce120/i2caux_dce120.c
@@ -101,7 +101,7 @@ struct i2caux *dal_i2caux_dce120_create(
 	struct dc_context *ctx)
 {
 	struct i2caux_dce110 *i2caux_dce110 =
-		dm_alloc(sizeof(struct i2caux_dce110));
+		kzalloc(sizeof(struct i2caux_dce110), GFP_ATOMIC);
 
 	if (!i2caux_dce110) {
 		ASSERT_CRITICAL(false);
@@ -119,7 +119,7 @@ struct i2caux *dal_i2caux_dce120_create(
 
 	ASSERT_CRITICAL(false);
 
-	dm_free(i2caux_dce110);
+	kfree(i2caux_dce110);
 
 	return NULL;
 }
diff --git a/drivers/gpu/drm/amd/display/dc/i2caux/dce80/i2c_hw_engine_dce80.c b/drivers/gpu/drm/amd/display/dc/i2caux/dce80/i2c_hw_engine_dce80.c
index 423c38ac880c..e8254354b8e1 100644
--- a/drivers/gpu/drm/amd/display/dc/i2caux/dce80/i2c_hw_engine_dce80.c
+++ b/drivers/gpu/drm/amd/display/dc/i2caux/dce80/i2c_hw_engine_dce80.c
@@ -190,7 +190,7 @@ static void destroy(
 
 	destruct(engine);
 
-	dm_free(engine);
+	kfree(engine);
 
 	*i2c_engine = NULL;
 }
@@ -867,7 +867,7 @@ struct i2c_engine *dal_i2c_hw_engine_dce80_create(
 		return NULL;
 	}
 
-	engine = dm_alloc(sizeof(struct i2c_hw_engine_dce80));
+	engine = kzalloc(sizeof(struct i2c_hw_engine_dce80), GFP_ATOMIC);
 
 	if (!engine) {
 		BREAK_TO_DEBUGGER();
@@ -879,7 +879,7 @@ struct i2c_engine *dal_i2c_hw_engine_dce80_create(
 
 	BREAK_TO_DEBUGGER();
 
-	dm_free(engine);
+	kfree(engine);
 
 	return NULL;
 }
diff --git a/drivers/gpu/drm/amd/display/dc/i2caux/dce80/i2c_sw_engine_dce80.c b/drivers/gpu/drm/amd/display/dc/i2caux/dce80/i2c_sw_engine_dce80.c
index 804a3266c578..da8cd82555d1 100644
--- a/drivers/gpu/drm/amd/display/dc/i2caux/dce80/i2c_sw_engine_dce80.c
+++ b/drivers/gpu/drm/amd/display/dc/i2caux/dce80/i2c_sw_engine_dce80.c
@@ -103,7 +103,7 @@ static void destroy(
 
 	destruct(sw_engine);
 
-	dm_free(sw_engine);
+	kfree(sw_engine);
 
 	*engine = NULL;
 }
@@ -165,7 +165,7 @@ struct i2c_engine *dal_i2c_sw_engine_dce80_create(
 		return NULL;
 	}
 
-	engine = dm_alloc(sizeof(struct i2c_sw_engine_dce80));
+	engine = kzalloc(sizeof(struct i2c_sw_engine_dce80), GFP_ATOMIC);
 
 	if (!engine) {
 		BREAK_TO_DEBUGGER();
@@ -177,7 +177,7 @@ struct i2c_engine *dal_i2c_sw_engine_dce80_create(
 
 	BREAK_TO_DEBUGGER();
 
-	dm_free(engine);
+	kfree(engine);
 
 	return NULL;
 }
diff --git a/drivers/gpu/drm/amd/display/dc/i2caux/dce80/i2caux_dce80.c b/drivers/gpu/drm/amd/display/dc/i2caux/dce80/i2caux_dce80.c
index 5e71450c44e0..c4dcd2d4e8cf 100644
--- a/drivers/gpu/drm/amd/display/dc/i2caux/dce80/i2caux_dce80.c
+++ b/drivers/gpu/drm/amd/display/dc/i2caux/dce80/i2caux_dce80.c
@@ -101,7 +101,7 @@ static void destroy(
 
 	destruct(i2caux_dce80);
 
-	dm_free(i2caux_dce80);
+	kfree(i2caux_dce80);
 
 	*i2c_engine = NULL;
 }
@@ -277,7 +277,7 @@ struct i2caux *dal_i2caux_dce80_create(
 	struct dc_context *ctx)
 {
 	struct i2caux_dce80 *i2caux_dce80 =
-		dm_alloc(sizeof(struct i2caux_dce80));
+		kzalloc(sizeof(struct i2caux_dce80), GFP_ATOMIC);
 
 	if (!i2caux_dce80) {
 		BREAK_TO_DEBUGGER();
@@ -289,7 +289,7 @@ struct i2caux *dal_i2caux_dce80_create(
 
 	BREAK_TO_DEBUGGER();
 
-	dm_free(i2caux_dce80);
+	kfree(i2caux_dce80);
 
 	return NULL;
 }
diff --git a/drivers/gpu/drm/amd/display/dc/i2caux/dcn10/i2caux_dcn10.c b/drivers/gpu/drm/amd/display/dc/i2caux/dcn10/i2caux_dcn10.c
index 9f17d2e4376b..8ba13a84fbda 100644
--- a/drivers/gpu/drm/amd/display/dc/i2caux/dcn10/i2caux_dcn10.c
+++ b/drivers/gpu/drm/amd/display/dc/i2caux/dcn10/i2caux_dcn10.c
@@ -101,7 +101,7 @@ struct i2caux *dal_i2caux_dcn10_create(
 	struct dc_context *ctx)
 {
 	struct i2caux_dce110 *i2caux_dce110 =
-		dm_alloc(sizeof(struct i2caux_dce110));
+		kzalloc(sizeof(struct i2caux_dce110), GFP_ATOMIC);
 
 	if (!i2caux_dce110) {
 		ASSERT_CRITICAL(false);
@@ -119,7 +119,7 @@ struct i2caux *dal_i2caux_dcn10_create(
 
 	ASSERT_CRITICAL(false);
 
-	dm_free(i2caux_dce110);
+	kfree(i2caux_dce110);
 
 	return NULL;
 }
diff --git a/drivers/gpu/drm/amd/display/dc/i2caux/diagnostics/i2caux_diag.c b/drivers/gpu/drm/amd/display/dc/i2caux/diagnostics/i2caux_diag.c
index 029bf735036c..39697e8d0fc9 100644
--- a/drivers/gpu/drm/amd/display/dc/i2caux/diagnostics/i2caux_diag.c
+++ b/drivers/gpu/drm/amd/display/dc/i2caux/diagnostics/i2caux_diag.c
@@ -59,7 +59,7 @@ static void destroy(
 {
 	destruct(*i2c_engine);
 
-	dm_free(*i2c_engine);
+	kfree(*i2c_engine);
 
 	*i2c_engine = NULL;
 }
@@ -90,7 +90,8 @@ static bool construct(
 struct i2caux *dal_i2caux_diag_fpga_create(
 	struct dc_context *ctx)
 {
-	struct i2caux *i2caux =	dm_alloc(sizeof(struct i2caux));
+	struct i2caux *i2caux =	kzalloc(sizeof(struct i2caux),
+					       GFP_ATOMIC);
 
 	if (!i2caux) {
 		ASSERT_CRITICAL(false);
@@ -102,7 +103,7 @@ struct i2caux *dal_i2caux_diag_fpga_create(
 
 	ASSERT_CRITICAL(false);
 
-	dm_free(i2caux);
+	kfree(i2caux);
 
 	return NULL;
 }
diff --git a/drivers/gpu/drm/amd/display/dc/i2caux/i2c_sw_engine.c b/drivers/gpu/drm/amd/display/dc/i2caux/i2c_sw_engine.c
index 95bc4457d44b..6aeeb5eb8c39 100644
--- a/drivers/gpu/drm/amd/display/dc/i2caux/i2c_sw_engine.c
+++ b/drivers/gpu/drm/amd/display/dc/i2caux/i2c_sw_engine.c
@@ -541,7 +541,7 @@ static void destroy(
 {
 	dal_i2c_sw_engine_destruct(FROM_I2C_ENGINE(*ptr));
 
-	dm_free(*ptr);
+	kfree(*ptr);
 	*ptr = NULL;
 }
 
@@ -592,7 +592,7 @@ struct i2c_engine *dal_i2c_sw_engine_create(
 		return NULL;
 	}
 
-	engine = dm_alloc(sizeof(struct i2c_sw_engine));
+	engine = kzalloc(sizeof(struct i2c_sw_engine), GFP_ATOMIC);
 
 	if (!engine) {
 		BREAK_TO_DEBUGGER();
@@ -604,7 +604,7 @@ struct i2c_engine *dal_i2c_sw_engine_create(
 
 	BREAK_TO_DEBUGGER();
 
-	dm_free(engine);
+	kfree(engine);
 
 	return NULL;
 }
diff --git a/drivers/gpu/drm/amd/display/dc/irq/dce110/irq_service_dce110.c b/drivers/gpu/drm/amd/display/dc/irq/dce110/irq_service_dce110.c
index 7cce28489dba..2312fa41344c 100644
--- a/drivers/gpu/drm/amd/display/dc/irq/dce110/irq_service_dce110.c
+++ b/drivers/gpu/drm/amd/display/dc/irq/dce110/irq_service_dce110.c
@@ -422,7 +422,8 @@ bool construct(
 struct irq_service *dal_irq_service_dce110_create(
 	struct irq_service_init_data *init_data)
 {
-	struct irq_service *irq_service = dm_alloc(sizeof(*irq_service));
+	struct irq_service *irq_service = kzalloc(sizeof(*irq_service),
+						  GFP_ATOMIC);
 
 	if (!irq_service)
 		return NULL;
@@ -430,6 +431,6 @@ struct irq_service *dal_irq_service_dce110_create(
 	if (construct(irq_service, init_data))
 		return irq_service;
 
-	dm_free(irq_service);
+	kfree(irq_service);
 	return NULL;
 }
diff --git a/drivers/gpu/drm/amd/display/dc/irq/dce120/irq_service_dce120.c b/drivers/gpu/drm/amd/display/dc/irq/dce120/irq_service_dce120.c
index 3871633ac635..49c07abb4a7c 100644
--- a/drivers/gpu/drm/amd/display/dc/irq/dce120/irq_service_dce120.c
+++ b/drivers/gpu/drm/amd/display/dc/irq/dce120/irq_service_dce120.c
@@ -281,7 +281,8 @@ static bool construct(
 struct irq_service *dal_irq_service_dce120_create(
 	struct irq_service_init_data *init_data)
 {
-	struct irq_service *irq_service = dm_alloc(sizeof(*irq_service));
+	struct irq_service *irq_service = kzalloc(sizeof(*irq_service),
+						  GFP_ATOMIC);
 
 	if (!irq_service)
 		return NULL;
@@ -289,6 +290,6 @@ struct irq_service *dal_irq_service_dce120_create(
 	if (construct(irq_service, init_data))
 		return irq_service;
 
-	dm_free(irq_service);
+	kfree(irq_service);
 	return NULL;
 }
diff --git a/drivers/gpu/drm/amd/display/dc/irq/dce80/irq_service_dce80.c b/drivers/gpu/drm/amd/display/dc/irq/dce80/irq_service_dce80.c
index f458ef8e4c57..7cee017bf827 100644
--- a/drivers/gpu/drm/amd/display/dc/irq/dce80/irq_service_dce80.c
+++ b/drivers/gpu/drm/amd/display/dc/irq/dce80/irq_service_dce80.c
@@ -293,7 +293,8 @@ static bool construct(
 struct irq_service *dal_irq_service_dce80_create(
 	struct irq_service_init_data *init_data)
 {
-	struct irq_service *irq_service = dm_alloc(sizeof(*irq_service));
+	struct irq_service *irq_service = kzalloc(sizeof(*irq_service),
+						  GFP_ATOMIC);
 
 	if (!irq_service)
 		return NULL;
@@ -301,7 +302,7 @@ struct irq_service *dal_irq_service_dce80_create(
 	if (construct(irq_service, init_data))
 		return irq_service;
 
-	dm_free(irq_service);
+	kfree(irq_service);
 	return NULL;
 }
 
diff --git a/drivers/gpu/drm/amd/display/dc/irq/dcn10/irq_service_dcn10.c b/drivers/gpu/drm/amd/display/dc/irq/dcn10/irq_service_dcn10.c
index be59f0a654e2..f1e11133b324 100644
--- a/drivers/gpu/drm/amd/display/dc/irq/dcn10/irq_service_dcn10.c
+++ b/drivers/gpu/drm/amd/display/dc/irq/dcn10/irq_service_dcn10.c
@@ -348,7 +348,8 @@ static bool construct(
 struct irq_service *dal_irq_service_dcn10_create(
 	struct irq_service_init_data *init_data)
 {
-	struct irq_service *irq_service = dm_alloc(sizeof(*irq_service));
+	struct irq_service *irq_service = kzalloc(sizeof(*irq_service),
+						  GFP_ATOMIC);
 
 	if (!irq_service)
 		return NULL;
@@ -356,6 +357,6 @@ struct irq_service *dal_irq_service_dcn10_create(
 	if (construct(irq_service, init_data))
 		return irq_service;
 
-	dm_free(irq_service);
+	kfree(irq_service);
 	return NULL;
 }
diff --git a/drivers/gpu/drm/amd/display/dc/irq/irq_service.c b/drivers/gpu/drm/amd/display/dc/irq/irq_service.c
index 0a1fae4ef83a..ce20622c7c89 100644
--- a/drivers/gpu/drm/amd/display/dc/irq/irq_service.c
+++ b/drivers/gpu/drm/amd/display/dc/irq/irq_service.c
@@ -66,7 +66,7 @@ void dal_irq_service_destroy(struct irq_service **irq_service)
 		return;
 	}
 
-	dm_free(*irq_service);
+	kfree(*irq_service);
 
 	*irq_service = NULL;
 }
diff --git a/drivers/gpu/drm/amd/display/dc/virtual/virtual_link_encoder.c b/drivers/gpu/drm/amd/display/dc/virtual/virtual_link_encoder.c
index 57b5a3babdf8..db513abd735a 100644
--- a/drivers/gpu/drm/amd/display/dc/virtual/virtual_link_encoder.c
+++ b/drivers/gpu/drm/amd/display/dc/virtual/virtual_link_encoder.c
@@ -87,7 +87,7 @@ static void virtual_link_encoder_connect_dig_be_to_fe(
 
 static void virtual_link_encoder_destroy(struct link_encoder **enc)
 {
-	dm_free(*enc);
+	kfree(*enc);
 	*enc = NULL;
 }
 
diff --git a/drivers/gpu/drm/amd/display/dc/virtual/virtual_stream_encoder.c b/drivers/gpu/drm/amd/display/dc/virtual/virtual_stream_encoder.c
index 7fe6085e6e37..9cf2c3099307 100644
--- a/drivers/gpu/drm/amd/display/dc/virtual/virtual_stream_encoder.c
+++ b/drivers/gpu/drm/amd/display/dc/virtual/virtual_stream_encoder.c
@@ -121,7 +121,7 @@ bool virtual_stream_encoder_construct(
 struct stream_encoder *virtual_stream_encoder_create(
 	struct dc_context *ctx, struct dc_bios *bp)
 {
-	struct stream_encoder *enc = dm_alloc(sizeof(*enc));
+	struct stream_encoder *enc = kzalloc(sizeof(*enc), GFP_ATOMIC);
 
 	if (!enc)
 		return NULL;
@@ -130,7 +130,7 @@ struct stream_encoder *virtual_stream_encoder_create(
 		return enc;
 
 	BREAK_TO_DEBUGGER();
-	dm_free(enc);
+	kfree(enc);
 	return NULL;
 }
 
diff --git a/drivers/gpu/drm/amd/display/modules/freesync/freesync.c b/drivers/gpu/drm/amd/display/modules/freesync/freesync.c
index 52350d0e68d0..98c9000acd50 100644
--- a/drivers/gpu/drm/amd/display/modules/freesync/freesync.c
+++ b/drivers/gpu/drm/amd/display/modules/freesync/freesync.c
@@ -143,7 +143,7 @@ static bool check_dc_support(const struct dc *dc)
 struct mod_freesync *mod_freesync_create(struct dc *dc)
 {
 	struct core_freesync *core_freesync =
-			dm_alloc(sizeof(struct core_freesync));
+			kzalloc(sizeof(struct core_freesync), GFP_ATOMIC);
 
 
 	struct persistent_data_flag flag;
@@ -153,8 +153,8 @@ struct mod_freesync *mod_freesync_create(struct dc *dc)
 	if (core_freesync == NULL)
 		goto fail_alloc_context;
 
-	core_freesync->map = dm_alloc(sizeof(struct freesync_entity) *
-			MOD_FREESYNC_MAX_CONCURRENT_STREAMS);
+	core_freesync->map = kzalloc(sizeof(struct freesync_entity) * MOD_FREESYNC_MAX_CONCURRENT_STREAMS,
+				     GFP_ATOMIC);
 
 	if (core_freesync->map == NULL)
 		goto fail_alloc_map;
@@ -197,10 +197,10 @@ struct mod_freesync *mod_freesync_create(struct dc *dc)
 	return &core_freesync->public;
 
 fail_construct:
-	dm_free(core_freesync->map);
+	kfree(core_freesync->map);
 
 fail_alloc_map:
-	dm_free(core_freesync);
+	kfree(core_freesync);
 
 fail_alloc_context:
 	return NULL;
@@ -217,9 +217,9 @@ void mod_freesync_destroy(struct mod_freesync *mod_freesync)
 			if (core_freesync->map[i].stream)
 				dc_stream_release(core_freesync->map[i].stream);
 
-		dm_free(core_freesync->map);
+		kfree(core_freesync->map);
 
-		dm_free(core_freesync);
+		kfree(core_freesync);
 	}
 }
 
diff --git a/drivers/gpu/drm/amd/display/replace_alloc.cocci b/drivers/gpu/drm/amd/display/replace_alloc.cocci
new file mode 100644
index 000000000000..cee17535a9f0
--- /dev/null
+++ b/drivers/gpu/drm/amd/display/replace_alloc.cocci
@@ -0,0 +1,25 @@
+virtual context
+virtual patch
+virtual org
+virtual report
+
+@@
+expression ptr;
+@@
+
+- dm_alloc(ptr)
++ kzalloc(ptr, GFP_ATOMIC)
+
+@@
+expression ptr, size;
+@@
+
+- dm_realloc(ptr, size)
++ krealloc(ptr, size, GFP_KERNEL)
+
+@@
+expression ptr;
+@@
+
+- dm_free(ptr)
++ kfree(ptr)
-- 
2.11.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/3] drm/amd/display: Remove alloc/free macros
  2017-09-27 19:46 [PATCH 0/3] DC pull request cleanup Harry Wentland
  2017-09-27 19:46 ` [PATCH 1/3] drm/amd/display: Use kernel alloc/free Harry Wentland
@ 2017-09-27 19:46 ` Harry Wentland
       [not found] ` <20170927194641.29146-1-harry.wentland-5C7GfCeVMHo@public.gmane.org>
  2 siblings, 0 replies; 7+ messages in thread
From: Harry Wentland @ 2017-09-27 19:46 UTC (permalink / raw)
  To: amd-gfx, dri-devel; +Cc: alexander.deucher, daniel.vetter, daniel.vetter

Now that we don't abstract kernel alloc interfaces we don't need
those anymore.

Signed-off-by: Harry Wentland <harry.wentland@amd.com>
---
 drivers/gpu/drm/amd/display/dc/dm_services.h | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/dm_services.h b/drivers/gpu/drm/amd/display/dc/dm_services.h
index 8ab0af6f4c6b..7260e772725d 100644
--- a/drivers/gpu/drm/amd/display/dc/dm_services.h
+++ b/drivers/gpu/drm/amd/display/dc/dm_services.h
@@ -79,10 +79,6 @@
 #include <asm/fpu/api.h>
 #endif
 
-#define dm_alloc(size) kzalloc(size, GFP_KERNEL)
-#define dm_realloc(ptr, size) krealloc(ptr, size, GFP_KERNEL)
-#define dm_free(ptr) kfree(ptr)
-
 irq_handler_idx dm_register_interrupt(
 	struct dc_context *ctx,
 	struct dc_interrupt_params *int_params,
-- 
2.11.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 3/3] drm/amd/display: DC I2C review
       [not found] ` <20170927194641.29146-1-harry.wentland-5C7GfCeVMHo@public.gmane.org>
@ 2017-09-27 19:46   ` Harry Wentland
       [not found]     ` <20170927194641.29146-4-harry.wentland-5C7GfCeVMHo@public.gmane.org>
  2017-09-27 22:34   ` [PATCH 0/3] DC pull request cleanup Alex Deucher
  1 sibling, 1 reply; 7+ messages in thread
From: Harry Wentland @ 2017-09-27 19:46 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
  Cc: alexander.deucher-5C7GfCeVMHo, daniel.vetter-/w4YWyX8dFk,
	seanpaul-F7+t8E8rja9g9hUCZPvPmw, Harry Wentland,
	daniel.vetter-ral2JQCrhuEAvxtiuMwx3w

While reviewing I2C in DC identified a few places. Added a couple to the
TODO list.

1) Connector info read

See get_ext_display_connection_info

On some boards the connector information has to be read through a
special I2C channel. This line is only used for this purpose and only on
driver init.

2) SCDC stuff

This should all be reworked to go through DRM's SCDC code. When this is
done some unnecessary I2C code can be retired as well.

3) Max TMDS clock read

See dal_ddc_service_i2c_query_dp_dual_mode_adaptor

This should happen in DRM as well. I haven't checked if there's
currently functionality in DRM. If not we can propose something.

4) HDMI retimer programming

Some boards have an HDMI retimer that we need to program to pass PHY
compliance.

1 & 3 might be a good exercise if someone is looking for things to do.

Signed-off-by: Harry Wentland <harry.wentland@amd.com>
---
 drivers/gpu/drm/amd/display/TODO | 26 ++++++++++++--------------
 1 file changed, 12 insertions(+), 14 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/TODO b/drivers/gpu/drm/amd/display/TODO
index eea645b102a1..981352bc95f0 100644
--- a/drivers/gpu/drm/amd/display/TODO
+++ b/drivers/gpu/drm/amd/display/TODO
@@ -62,20 +62,10 @@ TODOs
     ~ Daniel Vetter
 
 
-11. Remove existing i2c implementation from DC
-
-    "Similar story for i2c, it uses the kernel's i2c code now, but there's
-    still a full i2c implementation hidden beneath that in
-    display/dc/i2caux. Kinda not cool, but imo ok if you fix that
-    post-merging (perhaps by not including any of this in the linux DC
-    code in the upstream kernel, but as an aux module in your internal
-    codebase since there you probably need that, same applies to the edid
-    parsing DC still does. For both cases I assume that the minimal shim
-    you need on linux (bit banging and edid parsing isn't rocket since) is
-    a lot less than the glue code to interface with the dc-provided
-    abstraction."
-    ~ Daniel Vetter
-
+11. Remove dc/i2caux. This folder can be somewhat misleading. It's basically an
+overy complicated HW programming function for sendind and receiving i2c/aux
+commands. We can greatly simplify that and move it into dc/dceXYZ like other
+HW blocks.
 
 12. drm_modeset_lock in MST should no longer be needed in recent kernels
     * Adopt appropriate locking scheme
@@ -110,3 +100,11 @@ guilty.
 stuff just isn't up to the challenges either. We need to figure out something
 that integrates better with DRM and linux debug printing, while not being
 useless with filtering output. dynamic debug printing might be an option.
+
+20. Move Max TMDS clock read to DRM. See
+dal_ddc_service_i2c_query_dp_dual_mode_adaptor. I haven't checked if there's
+currently functionality in DRM. If not we can propose something.
+
+21. Use kernel i2c device to program HDMI retimer. Some boards have an HDMI
+retimer that we need to program to pass PHY compliance. Currently that's
+bypassing the i2c device and goes directly to HW. This should be changed.
-- 
2.11.0

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/3] drm/amd/display: Use kernel alloc/free
       [not found]   ` <20170927194641.29146-2-harry.wentland-5C7GfCeVMHo@public.gmane.org>
@ 2017-09-27 21:04     ` Dave Airlie
  0 siblings, 0 replies; 7+ messages in thread
From: Dave Airlie @ 2017-09-27 21:04 UTC (permalink / raw)
  To: Harry Wentland
  Cc: Daniel Vetter, dri-devel, Sean Paul, amd-gfx mailing list,
	Deucher, Alexander, Vetter, Daniel

These should all be GFP_KERNEL, never GFP_ATOMIC unless we find a
place it's required.

Dave.

>
> Signed-off-by: Harry Wentland <harry.wentland@amd.com>
> ---
>  drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c  |  2 +-
>  drivers/gpu/drm/amd/display/dc/basics/logger.c     | 18 ++++---
>  drivers/gpu/drm/amd/display/dc/basics/vector.c     | 19 +++----
>  drivers/gpu/drm/amd/display/dc/bios/bios_parser.c  | 17 +++---
>  drivers/gpu/drm/amd/display/dc/bios/bios_parser2.c | 14 ++---
>  drivers/gpu/drm/amd/display/dc/calcs/dce_calcs.c   |  5 +-
>  drivers/gpu/drm/amd/display/dc/calcs/dcn_calcs.c   |  6 +--
>  drivers/gpu/drm/amd/display/dc/core/dc.c           | 42 ++++++++-------
>  drivers/gpu/drm/amd/display/dc/core/dc_link.c      |  6 +--
>  drivers/gpu/drm/amd/display/dc/core/dc_link_ddc.c  | 18 +++----
>  drivers/gpu/drm/amd/display/dc/core/dc_resource.c  |  2 +-
>  drivers/gpu/drm/amd/display/dc/core/dc_sink.c      | 11 ++--
>  drivers/gpu/drm/amd/display/dc/core/dc_stream.c    |  6 +--
>  drivers/gpu/drm/amd/display/dc/core/dc_surface.c   | 15 +++---
>  drivers/gpu/drm/amd/display/dc/dce/dce_abm.c       |  4 +-
>  drivers/gpu/drm/amd/display/dc/dce/dce_audio.c     |  4 +-
>  .../gpu/drm/amd/display/dc/dce/dce_clock_source.c  | 12 +++--
>  drivers/gpu/drm/amd/display/dc/dce/dce_clocks.c    | 10 ++--
>  drivers/gpu/drm/amd/display/dc/dce/dce_dmcu.c      |  6 +--
>  drivers/gpu/drm/amd/display/dc/dce/dce_ipp.c       |  2 +-
>  .../gpu/drm/amd/display/dc/dce/dce_link_encoder.c  |  2 +-
>  drivers/gpu/drm/amd/display/dc/dce/dce_opp.c       |  2 +-
>  .../drm/amd/display/dc/dce100/dce100_resource.c    | 43 +++++++--------
>  .../drm/amd/display/dc/dce110/dce110_compressor.c  |  6 +--
>  .../drm/amd/display/dc/dce110/dce110_resource.c    | 61 ++++++++++++----------
>  .../drm/amd/display/dc/dce112/dce112_compressor.c  |  6 +--
>  .../drm/amd/display/dc/dce112/dce112_resource.c    | 43 +++++++--------
>  .../drm/amd/display/dc/dce120/dce120_resource.c    | 43 +++++++--------
>  .../drm/amd/display/dc/dce80/dce80_compressor.c    |  6 +--
>  .../gpu/drm/amd/display/dc/dce80/dce80_resource.c  | 47 +++++++++--------
>  drivers/gpu/drm/amd/display/dc/dcn10/dcn10_ipp.c   |  2 +-
>  drivers/gpu/drm/amd/display/dc/dcn10/dcn10_opp.c   |  2 +-
>  .../gpu/drm/amd/display/dc/dcn10/dcn10_resource.c  | 56 ++++++++++----------
>  drivers/gpu/drm/amd/display/dc/gpio/gpio_base.c    |  4 +-
>  drivers/gpu/drm/amd/display/dc/gpio/gpio_service.c | 21 ++++----
>  drivers/gpu/drm/amd/display/dc/gpio/hw_ddc.c       |  6 +--
>  drivers/gpu/drm/amd/display/dc/gpio/hw_factory.c   |  2 +-
>  drivers/gpu/drm/amd/display/dc/gpio/hw_hpd.c       |  6 +--
>  .../amd/display/dc/i2caux/dce100/i2caux_dce100.c   |  4 +-
>  .../display/dc/i2caux/dce110/aux_engine_dce110.c   |  6 +--
>  .../dc/i2caux/dce110/i2c_hw_engine_dce110.c        |  7 +--
>  .../dc/i2caux/dce110/i2c_sw_engine_dce110.c        |  7 +--
>  .../amd/display/dc/i2caux/dce110/i2caux_dce110.c   |  6 +--
>  .../amd/display/dc/i2caux/dce112/i2caux_dce112.c   |  4 +-
>  .../amd/display/dc/i2caux/dce120/i2caux_dce120.c   |  4 +-
>  .../display/dc/i2caux/dce80/i2c_hw_engine_dce80.c  |  6 +--
>  .../display/dc/i2caux/dce80/i2c_sw_engine_dce80.c  |  6 +--
>  .../drm/amd/display/dc/i2caux/dce80/i2caux_dce80.c |  6 +--
>  .../drm/amd/display/dc/i2caux/dcn10/i2caux_dcn10.c |  4 +-
>  .../display/dc/i2caux/diagnostics/i2caux_diag.c    |  7 +--
>  .../gpu/drm/amd/display/dc/i2caux/i2c_sw_engine.c  |  6 +--
>  .../amd/display/dc/irq/dce110/irq_service_dce110.c |  5 +-
>  .../amd/display/dc/irq/dce120/irq_service_dce120.c |  5 +-
>  .../amd/display/dc/irq/dce80/irq_service_dce80.c   |  5 +-
>  .../amd/display/dc/irq/dcn10/irq_service_dcn10.c   |  5 +-
>  drivers/gpu/drm/amd/display/dc/irq/irq_service.c   |  2 +-
>  .../amd/display/dc/virtual/virtual_link_encoder.c  |  2 +-
>  .../display/dc/virtual/virtual_stream_encoder.c    |  4 +-
>  .../drm/amd/display/modules/freesync/freesync.c    | 14 ++---
>  drivers/gpu/drm/amd/display/replace_alloc.cocci    | 25 +++++++++
>  60 files changed, 387 insertions(+), 330 deletions(-)
>  create mode 100644 drivers/gpu/drm/amd/display/replace_alloc.cocci
>
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> index 36635486b937..2afa99c0e95e 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> @@ -2429,7 +2429,7 @@ dm_crtc_duplicate_state(struct drm_crtc *crtc)
>         if (WARN_ON(!crtc->state))
>                 return NULL;
>
> -       state = dm_alloc(sizeof(*state));
> +       state = kzalloc(sizeof(*state), GFP_ATOMIC);
>
>         __drm_atomic_helper_crtc_duplicate_state(crtc, &state->base);
>
> diff --git a/drivers/gpu/drm/amd/display/dc/basics/logger.c b/drivers/gpu/drm/amd/display/dc/basics/logger.c
> index 5895dd3903a3..9180050424b9 100644
> --- a/drivers/gpu/drm/amd/display/dc/basics/logger.c
> +++ b/drivers/gpu/drm/amd/display/dc/basics/logger.c
> @@ -70,8 +70,8 @@ static bool construct(struct dc_context *ctx, struct dal_logger *logger,
>  {
>         /* malloc buffer and init offsets */
>         logger->log_buffer_size = DAL_LOGGER_BUFFER_MAX_SIZE;
> -       logger->log_buffer = (char *)dm_alloc(logger->log_buffer_size *
> -               sizeof(char));
> +       logger->log_buffer = (char *)kzalloc(logger->log_buffer_size * sizeof(char),
> +                                            GFP_ATOMIC);
>
>         if (!logger->log_buffer)
>                 return false;
> @@ -97,7 +97,7 @@ static bool construct(struct dc_context *ctx, struct dal_logger *logger,
>  static void destruct(struct dal_logger *logger)
>  {
>         if (logger->log_buffer) {
> -               dm_free(logger->log_buffer);
> +               kfree(logger->log_buffer);
>                 logger->log_buffer = NULL;
>         }
>  }
> @@ -105,12 +105,13 @@ static void destruct(struct dal_logger *logger)
>  struct dal_logger *dal_logger_create(struct dc_context *ctx, uint32_t log_mask)
>  {
>         /* malloc struct */
> -       struct dal_logger *logger = dm_alloc(sizeof(struct dal_logger));
> +       struct dal_logger *logger = kzalloc(sizeof(struct dal_logger),
> +                                           GFP_ATOMIC);
>
>         if (!logger)
>                 return NULL;
>         if (!construct(ctx, logger, log_mask)) {
> -               dm_free(logger);
> +               kfree(logger);
>                 return NULL;
>         }
>
> @@ -122,7 +123,7 @@ uint32_t dal_logger_destroy(struct dal_logger **logger)
>         if (logger == NULL || *logger == NULL)
>                 return 1;
>         destruct(*logger);
> -       dm_free(*logger);
> +       kfree(*logger);
>         *logger = NULL;
>
>         return 0;
> @@ -390,7 +391,8 @@ void dm_logger_open(
>         entry->type = log_type;
>         entry->logger = logger;
>
> -       entry->buf = dm_alloc(DAL_LOGGER_BUFFER_MAX_SIZE * sizeof(char));
> +       entry->buf = kzalloc(DAL_LOGGER_BUFFER_MAX_SIZE * sizeof(char),
> +                            GFP_ATOMIC);
>
>         entry->buf_offset = 0;
>         entry->max_buf_bytes = DAL_LOGGER_BUFFER_MAX_SIZE * sizeof(char);
> @@ -421,7 +423,7 @@ void dm_logger_close(struct log_entry *entry)
>
>  cleanup:
>         if (entry->buf) {
> -               dm_free(entry->buf);
> +               kfree(entry->buf);
>                 entry->buf = NULL;
>                 entry->buf_offset = 0;
>                 entry->max_buf_bytes = 0;
> diff --git a/drivers/gpu/drm/amd/display/dc/basics/vector.c b/drivers/gpu/drm/amd/display/dc/basics/vector.c
> index bb72a1857160..eec10930f4a1 100644
> --- a/drivers/gpu/drm/amd/display/dc/basics/vector.c
> +++ b/drivers/gpu/drm/amd/display/dc/basics/vector.c
> @@ -40,7 +40,7 @@ bool dal_vector_construct(
>                 return false;
>         }
>
> -       vector->container = dm_alloc(struct_size * capacity);
> +       vector->container = kzalloc(struct_size * capacity, GFP_ATOMIC);
>         if (vector->container == NULL)
>                 return false;
>         vector->capacity = capacity;
> @@ -67,7 +67,7 @@ bool dal_vector_presized_costruct(
>                 return false;
>         }
>
> -       vector->container = dm_alloc(struct_size * count);
> +       vector->container = kzalloc(struct_size * count, GFP_ATOMIC);
>
>         if (vector->container == NULL)
>                 return false;
> @@ -95,7 +95,7 @@ struct vector *dal_vector_presized_create(
>         void *initial_value,
>         uint32_t struct_size)
>  {
> -       struct vector *vector = dm_alloc(sizeof(struct vector));
> +       struct vector *vector = kzalloc(sizeof(struct vector), GFP_ATOMIC);
>
>         if (vector == NULL)
>                 return NULL;
> @@ -105,7 +105,7 @@ struct vector *dal_vector_presized_create(
>                 return vector;
>
>         BREAK_TO_DEBUGGER();
> -       dm_free(vector);
> +       kfree(vector);
>         return NULL;
>  }
>
> @@ -114,7 +114,7 @@ struct vector *dal_vector_create(
>         uint32_t capacity,
>         uint32_t struct_size)
>  {
> -       struct vector *vector = dm_alloc(sizeof(struct vector));
> +       struct vector *vector = kzalloc(sizeof(struct vector), GFP_ATOMIC);
>
>         if (vector == NULL)
>                 return NULL;
> @@ -123,7 +123,7 @@ struct vector *dal_vector_create(
>                 return vector;
>
>         BREAK_TO_DEBUGGER();
> -       dm_free(vector);
> +       kfree(vector);
>         return NULL;
>  }
>
> @@ -131,7 +131,7 @@ void dal_vector_destruct(
>         struct vector *vector)
>  {
>         if (vector->container != NULL)
> -               dm_free(vector->container);
> +               kfree(vector->container);
>         vector->count = 0;
>         vector->capacity = 0;
>  }
> @@ -142,7 +142,7 @@ void dal_vector_destroy(
>         if (vector == NULL || *vector == NULL)
>                 return;
>         dal_vector_destruct(*vector);
> -       dm_free(*vector);
> +       kfree(*vector);
>         *vector = NULL;
>  }
>
> @@ -290,7 +290,8 @@ bool dal_vector_reserve(struct vector *vector, uint32_t capacity)
>         if (capacity <= vector->capacity)
>                 return true;
>
> -       new_container = dm_realloc(vector->container, capacity * vector->struct_size);
> +       new_container = krealloc(vector->container,
> +                                capacity * vector->struct_size, GFP_KERNEL);
>
>         if (new_container) {
>                 vector->container = new_container;
> diff --git a/drivers/gpu/drm/amd/display/dc/bios/bios_parser.c b/drivers/gpu/drm/amd/display/dc/bios/bios_parser.c
> index 2c411441771b..909aeb6e35bd 100644
> --- a/drivers/gpu/drm/amd/display/dc/bios/bios_parser.c
> +++ b/drivers/gpu/drm/amd/display/dc/bios/bios_parser.c
> @@ -116,14 +116,14 @@ struct dc_bios *bios_parser_create(
>  {
>         struct bios_parser *bp = NULL;
>
> -       bp = dm_alloc(sizeof(struct bios_parser));
> +       bp = kzalloc(sizeof(struct bios_parser), GFP_ATOMIC);
>         if (!bp)
>                 return NULL;
>
>         if (bios_parser_construct(bp, init, dce_version))
>                 return &bp->base;
>
> -       dm_free(bp);
> +       kfree(bp);
>         BREAK_TO_DEBUGGER();
>         return NULL;
>  }
> @@ -131,10 +131,10 @@ struct dc_bios *bios_parser_create(
>  static void destruct(struct bios_parser *bp)
>  {
>         if (bp->base.bios_local_image)
> -               dm_free(bp->base.bios_local_image);
> +               kfree(bp->base.bios_local_image);
>
>         if (bp->base.integrated_info)
> -               dm_free(bp->base.integrated_info);
> +               kfree(bp->base.integrated_info);
>  }
>
>  static void bios_parser_destroy(struct dc_bios **dcb)
> @@ -148,7 +148,7 @@ static void bios_parser_destroy(struct dc_bios **dcb)
>
>         destruct(bp);
>
> -       dm_free(bp);
> +       kfree(bp);
>         *dcb = NULL;
>  }
>
> @@ -3531,7 +3531,8 @@ static void process_ext_display_connection_info(struct bios_parser *bp)
>                 uint8_t *original_bios;
>                 /* Step 1: Replace bios image with the new copy which will be
>                  * patched */
> -               bp->base.bios_local_image = dm_alloc(bp->base.bios_size);
> +               bp->base.bios_local_image = kzalloc(bp->base.bios_size,
> +                                                   GFP_ATOMIC);
>                 if (bp->base.bios_local_image == NULL) {
>                         BREAK_TO_DEBUGGER();
>                         /* Failed to alloc bp->base.bios_local_image */
> @@ -3965,7 +3966,7 @@ static struct integrated_info *bios_parser_create_integrated_info(
>         struct bios_parser *bp = BP_FROM_DCB(dcb);
>         struct integrated_info *info = NULL;
>
> -       info = dm_alloc(sizeof(struct integrated_info));
> +       info = kzalloc(sizeof(struct integrated_info), GFP_ATOMIC);
>
>         if (info == NULL) {
>                 ASSERT_CRITICAL(0);
> @@ -3975,7 +3976,7 @@ static struct integrated_info *bios_parser_create_integrated_info(
>         if (construct_integrated_info(bp, info) == BP_RESULT_OK)
>                 return info;
>
> -       dm_free(info);
> +       kfree(info);
>
>         return NULL;
>  }
> diff --git a/drivers/gpu/drm/amd/display/dc/bios/bios_parser2.c b/drivers/gpu/drm/amd/display/dc/bios/bios_parser2.c
> index 95fe50f62c57..70f58caeb79d 100644
> --- a/drivers/gpu/drm/amd/display/dc/bios/bios_parser2.c
> +++ b/drivers/gpu/drm/amd/display/dc/bios/bios_parser2.c
> @@ -107,10 +107,10 @@ static struct atom_encoder_caps_record *get_encoder_cap_record(
>  static void destruct(struct bios_parser *bp)
>  {
>         if (bp->base.bios_local_image)
> -               dm_free(bp->base.bios_local_image);
> +               kfree(bp->base.bios_local_image);
>
>         if (bp->base.integrated_info)
> -               dm_free(bp->base.integrated_info);
> +               kfree(bp->base.integrated_info);
>  }
>
>  static void firmware_parser_destroy(struct dc_bios **dcb)
> @@ -124,7 +124,7 @@ static void firmware_parser_destroy(struct dc_bios **dcb)
>
>         destruct(bp);
>
> -       dm_free(bp);
> +       kfree(bp);
>         *dcb = NULL;
>  }
>
> @@ -2030,7 +2030,7 @@ static struct integrated_info *bios_parser_create_integrated_info(
>         struct bios_parser *bp = BP_FROM_DCB(dcb);
>         struct integrated_info *info = NULL;
>
> -       info = dm_alloc(sizeof(struct integrated_info));
> +       info = kzalloc(sizeof(struct integrated_info), GFP_ATOMIC);
>
>         if (info == NULL) {
>                 ASSERT_CRITICAL(0);
> @@ -2040,7 +2040,7 @@ static struct integrated_info *bios_parser_create_integrated_info(
>         if (construct_integrated_info(bp, info) == BP_RESULT_OK)
>         return info;
>
> -       dm_free(info);
> +       kfree(info);
>
>         return NULL;
>  }
> @@ -2205,14 +2205,14 @@ struct dc_bios *firmware_parser_create(
>  {
>         struct bios_parser *bp = NULL;
>
> -       bp = dm_alloc(sizeof(struct bios_parser));
> +       bp = kzalloc(sizeof(struct bios_parser), GFP_ATOMIC);
>         if (!bp)
>                 return NULL;
>
>         if (bios_parser_construct(bp, init, dce_version))
>                 return &bp->base;
>
> -       dm_free(bp);
> +       kfree(bp);
>         return NULL;
>  }
>
> diff --git a/drivers/gpu/drm/amd/display/dc/calcs/dce_calcs.c b/drivers/gpu/drm/amd/display/dc/calcs/dce_calcs.c
> index dba25853f7f9..937d1af669be 100644
> --- a/drivers/gpu/drm/amd/display/dc/calcs/dce_calcs.c
> +++ b/drivers/gpu/drm/amd/display/dc/calcs/dce_calcs.c
> @@ -2792,7 +2792,8 @@ bool bw_calcs(struct dc_context *ctx,
>         int pipe_count,
>         struct dce_bw_output *calcs_output)
>  {
> -       struct bw_calcs_data *data = dm_alloc(sizeof(struct bw_calcs_data));
> +       struct bw_calcs_data *data = kzalloc(sizeof(struct bw_calcs_data),
> +                                            GFP_ATOMIC);
>
>         populate_initial_data(pipe, pipe_count, data);
>
> @@ -3248,7 +3249,7 @@ bool bw_calcs(struct dc_context *ctx,
>                 calcs_output->sclk_khz = 0;
>         }
>
> -       dm_free(data);
> +       kfree(data);
>
>         return is_display_configuration_supported(vbios, calcs_output);
>  }
> diff --git a/drivers/gpu/drm/amd/display/dc/calcs/dcn_calcs.c b/drivers/gpu/drm/amd/display/dc/calcs/dcn_calcs.c
> index 1b0f64756be6..c3a57e6862d6 100644
> --- a/drivers/gpu/drm/amd/display/dc/calcs/dcn_calcs.c
> +++ b/drivers/gpu/drm/amd/display/dc/calcs/dcn_calcs.c
> @@ -481,8 +481,8 @@ static void dcn_dml_wm_override(
>  {
>         int i, in_idx, active_count;
>
> -       struct _vcs_dpi_display_e2e_pipe_params_st *input = dm_alloc(pool->pipe_count *
> -                                       sizeof(struct _vcs_dpi_display_e2e_pipe_params_st));
> +       struct _vcs_dpi_display_e2e_pipe_params_st *input = kzalloc(pool->pipe_count * sizeof(struct _vcs_dpi_display_e2e_pipe_params_st),
> +                                                                   GFP_ATOMIC);
>         struct wm {
>                 double urgent;
>                 struct _vcs_dpi_cstate_pstate_watermarks_st cpstate;
> @@ -560,7 +560,7 @@ static void dcn_dml_wm_override(
>                         pipe->plane_state->flip_immediate);
>                 in_idx++;
>         }
> -       dm_free(input);
> +       kfree(input);
>  }
>
>  static void split_stream_across_pipes(
> diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c
> index 58c5083bef2a..e1aaee23e499 100644
> --- a/drivers/gpu/drm/amd/display/dc/core/dc.c
> +++ b/drivers/gpu/drm/amd/display/dc/core/dc.c
> @@ -113,7 +113,7 @@ static bool create_links(
>         }
>
>         for (i = 0; i < num_virtual_links; i++) {
> -               struct dc_link *link = dm_alloc(sizeof(*link));
> +               struct dc_link *link = kzalloc(sizeof(*link), GFP_ATOMIC);
>                 struct encoder_init_data enc_init = {0};
>
>                 if (link == NULL) {
> @@ -127,7 +127,7 @@ static bool create_links(
>                 link->link_id.type = OBJECT_TYPE_CONNECTOR;
>                 link->link_id.id = CONNECTOR_ID_VIRTUAL;
>                 link->link_id.enum_id = ENUM_ID_1;
> -               link->link_enc = dm_alloc(sizeof(*link->link_enc));
> +               link->link_enc = kzalloc(sizeof(*link->link_enc), GFP_ATOMIC);
>
>                 enc_init.ctx = dc->ctx;
>                 enc_init.channel = CHANNEL_ID_UNKNOWN;
> @@ -413,20 +413,20 @@ static void destruct(struct dc *dc)
>         if (dc->ctx->logger)
>                 dal_logger_destroy(&dc->ctx->logger);
>
> -       dm_free(dc->ctx);
> +       kfree(dc->ctx);
>         dc->ctx = NULL;
>
> -       dm_free(dc->bw_vbios);
> +       kfree(dc->bw_vbios);
>         dc->bw_vbios = NULL;
>
> -       dm_free(dc->bw_dceip);
> +       kfree(dc->bw_dceip);
>         dc->bw_dceip = NULL;
>
>  #ifdef CONFIG_DRM_AMD_DC_DCN1_0
> -       dm_free(dc->dcn_soc);
> +       kfree(dc->dcn_soc);
>         dc->dcn_soc = NULL;
>
> -       dm_free(dc->dcn_ip);
> +       kfree(dc->dcn_ip);
>         dc->dcn_ip = NULL;
>
>  #endif
> @@ -436,12 +436,15 @@ static bool construct(struct dc *dc,
>                 const struct dc_init_data *init_params)
>  {
>         struct dal_logger *logger;
> -       struct dc_context *dc_ctx = dm_alloc(sizeof(*dc_ctx));
> -       struct bw_calcs_dceip *dc_dceip = dm_alloc(sizeof(*dc_dceip));
> -       struct bw_calcs_vbios *dc_vbios = dm_alloc(sizeof(*dc_vbios));
> +       struct dc_context *dc_ctx = kzalloc(sizeof(*dc_ctx), GFP_ATOMIC);
> +       struct bw_calcs_dceip *dc_dceip = kzalloc(sizeof(*dc_dceip),
> +                                                 GFP_ATOMIC);
> +       struct bw_calcs_vbios *dc_vbios = kzalloc(sizeof(*dc_vbios),
> +                                                 GFP_ATOMIC);
>  #ifdef CONFIG_DRM_AMD_DC_DCN1_0
> -       struct dcn_soc_bounding_box *dcn_soc = dm_alloc(sizeof(*dcn_soc));
> -       struct dcn_ip_params *dcn_ip = dm_alloc(sizeof(*dcn_ip));
> +       struct dcn_soc_bounding_box *dcn_soc = kzalloc(sizeof(*dcn_soc),
> +                                                      GFP_ATOMIC);
> +       struct dcn_ip_params *dcn_ip = kzalloc(sizeof(*dcn_ip), GFP_ATOMIC);
>  #endif
>
>         enum dce_version dc_version = DCE_VERSION_UNKNOWN;
> @@ -604,7 +607,7 @@ void ProgramPixelDurationV(unsigned int pixelClockInKHz )
>
>  struct dc *dc_create(const struct dc_init_data *init_params)
>   {
> -       struct dc *dc = dm_alloc(sizeof(*dc));
> +       struct dc *dc = kzalloc(sizeof(*dc), GFP_ATOMIC);
>         unsigned int full_pipe_count;
>
>         if (NULL == dc)
> @@ -638,7 +641,7 @@ struct dc *dc_create(const struct dc_init_data *init_params)
>         return dc;
>
>  construct_fail:
> -       dm_free(dc);
> +       kfree(dc);
>
>  alloc_fail:
>         return NULL;
> @@ -647,7 +650,7 @@ struct dc *dc_create(const struct dc_init_data *init_params)
>  void dc_destroy(struct dc **dc)
>  {
>         destruct(*dc);
> -       dm_free(*dc);
> +       kfree(*dc);
>         *dc = NULL;
>  }
>
> @@ -900,7 +903,7 @@ bool dc_commit_planes_to_stream(
>         struct dc_scaling_info scaling_info[MAX_SURFACES];
>         int i;
>         struct dc_stream_update *stream_update =
> -                       dm_alloc(sizeof(struct dc_stream_update));
> +                       kzalloc(sizeof(struct dc_stream_update), GFP_ATOMIC);
>
>         if (!stream_update) {
>                 BREAK_TO_DEBUGGER();
> @@ -951,13 +954,14 @@ bool dc_commit_planes_to_stream(
>
>         dc_post_update_surfaces_to_stream(dc);
>
> -       dm_free(stream_update);
> +       kfree(stream_update);
>         return true;
>  }
>
>  struct dc_state *dc_create_state(void)
>  {
> -       struct dc_state *context = dm_alloc(sizeof(struct dc_state));
> +       struct dc_state *context = kzalloc(sizeof(struct dc_state),
> +                                          GFP_ATOMIC);
>
>         if (!context)
>                 return NULL;
> @@ -979,7 +983,7 @@ void dc_release_state(struct dc_state *context)
>
>         if (atomic_read(&context->ref_count) == 0) {
>                 dc_resource_state_destruct(context);
> -               dm_free(context);
> +               kfree(context);
>         }
>  }
>
> diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_link.c b/drivers/gpu/drm/amd/display/dc/core/dc_link.c
> index 845ec421d861..23ff56ac2f5e 100644
> --- a/drivers/gpu/drm/amd/display/dc/core/dc_link.c
> +++ b/drivers/gpu/drm/amd/display/dc/core/dc_link.c
> @@ -1100,7 +1100,7 @@ static bool construct(
>  struct dc_link *link_create(const struct link_init_data *init_params)
>  {
>         struct dc_link *link =
> -                       dm_alloc(sizeof(*link));
> +                       kzalloc(sizeof(*link), GFP_ATOMIC);
>
>         if (NULL == link)
>                 goto alloc_fail;
> @@ -1111,7 +1111,7 @@ struct dc_link *link_create(const struct link_init_data *init_params)
>         return link;
>
>  construct_fail:
> -       dm_free(link);
> +       kfree(link);
>
>  alloc_fail:
>         return NULL;
> @@ -1120,7 +1120,7 @@ struct dc_link *link_create(const struct link_init_data *init_params)
>  void link_destroy(struct dc_link **link)
>  {
>         destruct(*link);
> -       dm_free(*link);
> +       kfree(*link);
>         *link = NULL;
>  }
>
> diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_link_ddc.c b/drivers/gpu/drm/amd/display/dc/core/dc_link_ddc.c
> index d09e539397ea..57bedf360be7 100644
> --- a/drivers/gpu/drm/amd/display/dc/core/dc_link_ddc.c
> +++ b/drivers/gpu/drm/amd/display/dc/core/dc_link_ddc.c
> @@ -130,7 +130,7 @@ struct i2c_payloads *dal_ddc_i2c_payloads_create(struct dc_context *ctx, uint32_
>  {
>         struct i2c_payloads *payloads;
>
> -       payloads = dm_alloc(sizeof(struct i2c_payloads));
> +       payloads = kzalloc(sizeof(struct i2c_payloads), GFP_ATOMIC);
>
>         if (!payloads)
>                 return NULL;
> @@ -139,7 +139,7 @@ struct i2c_payloads *dal_ddc_i2c_payloads_create(struct dc_context *ctx, uint32_
>                 &payloads->payloads, ctx, count, sizeof(struct i2c_payload)))
>                 return payloads;
>
> -       dm_free(payloads);
> +       kfree(payloads);
>         return NULL;
>
>  }
> @@ -159,7 +159,7 @@ void dal_ddc_i2c_payloads_destroy(struct i2c_payloads **p)
>         if (!p || !*p)
>                 return;
>         dal_vector_destruct(&(*p)->payloads);
> -       dm_free(*p);
> +       kfree(*p);
>         *p = NULL;
>
>  }
> @@ -168,7 +168,7 @@ struct aux_payloads *dal_ddc_aux_payloads_create(struct dc_context *ctx, uint32_
>  {
>         struct aux_payloads *payloads;
>
> -       payloads = dm_alloc(sizeof(struct aux_payloads));
> +       payloads = kzalloc(sizeof(struct aux_payloads), GFP_ATOMIC);
>
>         if (!payloads)
>                 return NULL;
> @@ -177,7 +177,7 @@ struct aux_payloads *dal_ddc_aux_payloads_create(struct dc_context *ctx, uint32_
>                 &payloads->payloads, ctx, count, sizeof(struct aux_payload)))
>                 return payloads;
>
> -       dm_free(payloads);
> +       kfree(payloads);
>         return NULL;
>  }
>
> @@ -197,7 +197,7 @@ void dal_ddc_aux_payloads_destroy(struct aux_payloads **p)
>                 return;
>
>         dal_vector_destruct(&(*p)->payloads);
> -       dm_free(*p);
> +       kfree(*p);
>         *p = NULL;
>  }
>
> @@ -290,7 +290,7 @@ struct ddc_service *dal_ddc_service_create(
>  {
>         struct ddc_service *ddc_service;
>
> -       ddc_service = dm_alloc(sizeof(struct ddc_service));
> +       ddc_service = kzalloc(sizeof(struct ddc_service), GFP_ATOMIC);
>
>         if (!ddc_service)
>                 return NULL;
> @@ -298,7 +298,7 @@ struct ddc_service *dal_ddc_service_create(
>         if (construct(ddc_service, init_data))
>                 return ddc_service;
>
> -       dm_free(ddc_service);
> +       kfree(ddc_service);
>         return NULL;
>  }
>
> @@ -315,7 +315,7 @@ void dal_ddc_service_destroy(struct ddc_service **ddc)
>                 return;
>         }
>         destruct(*ddc);
> -       dm_free(*ddc);
> +       kfree(*ddc);
>         *ddc = NULL;
>  }
>
> diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
> index dcfdfebd5c62..1832f252edab 100644
> --- a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
> +++ b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
> @@ -160,7 +160,7 @@ void dc_destroy_resource_pool(struct dc  *dc)
>                         dc->res_pool->funcs->destroy(&dc->res_pool);
>
>                 if (dc->hwseq)
> -                       dm_free(dc->hwseq);
> +                       kfree(dc->hwseq);
>         }
>  }
>
> diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_sink.c b/drivers/gpu/drm/amd/display/dc/core/dc_sink.c
> index 7717350297a5..952be07ae817 100644
> --- a/drivers/gpu/drm/amd/display/dc/core/dc_sink.c
> +++ b/drivers/gpu/drm/amd/display/dc/core/dc_sink.c
> @@ -34,7 +34,7 @@
>  static void destruct(struct dc_sink *sink)
>  {
>         if (sink->dc_container_id) {
> -               dm_free(sink->dc_container_id);
> +               kfree(sink->dc_container_id);
>                 sink->dc_container_id = NULL;
>         }
>  }
> @@ -74,13 +74,13 @@ void dc_sink_release(struct dc_sink *sink)
>
>         if (atomic_read(&sink->ref_count) == 0) {
>                 destruct(sink);
> -               dm_free(sink);
> +               kfree(sink);
>         }
>  }
>
>  struct dc_sink *dc_sink_create(const struct dc_sink_init_data *init_params)
>  {
> -       struct dc_sink *sink = dm_alloc(sizeof(*sink));
> +       struct dc_sink *sink = kzalloc(sizeof(*sink), GFP_ATOMIC);
>
>         if (NULL == sink)
>                 goto alloc_fail;
> @@ -93,7 +93,7 @@ struct dc_sink *dc_sink_create(const struct dc_sink_init_data *init_params)
>         return sink;
>
>  construct_fail:
> -       dm_free(sink);
> +       kfree(sink);
>
>  alloc_fail:
>         return NULL;
> @@ -117,7 +117,8 @@ bool dc_sink_set_container_id(struct dc_sink *dc_sink, const struct dc_container
>  {
>         if (dc_sink && container_id) {
>                 if (!dc_sink->dc_container_id)
> -                       dc_sink->dc_container_id = dm_alloc(sizeof(*dc_sink->dc_container_id));
> +                       dc_sink->dc_container_id = kzalloc(sizeof(*dc_sink->dc_container_id),
> +                                                          GFP_ATOMIC);
>
>                 if (dc_sink->dc_container_id) {
>                         memmove(&dc_sink->dc_container_id->guid, &container_id->guid,
> diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c
> index a421779093d9..54dbeb354009 100644
> --- a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c
> +++ b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c
> @@ -131,7 +131,7 @@ void dc_stream_release(struct dc_stream_state *stream)
>
>                 if (atomic_read(&stream->ref_count) == 0) {
>                         destruct(stream);
> -                       dm_free(stream);
> +                       kfree(stream);
>                 }
>         }
>  }
> @@ -144,7 +144,7 @@ struct dc_stream_state *dc_create_stream_for_sink(
>         if (sink == NULL)
>                 goto alloc_fail;
>
> -       stream = dm_alloc(sizeof(struct dc_stream_state));
> +       stream = kzalloc(sizeof(struct dc_stream_state), GFP_ATOMIC);
>
>         if (NULL == stream)
>                 goto alloc_fail;
> @@ -157,7 +157,7 @@ struct dc_stream_state *dc_create_stream_for_sink(
>         return stream;
>
>  construct_fail:
> -       dm_free(stream);
> +       kfree(stream);
>
>  alloc_fail:
>         return NULL;
> diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_surface.c b/drivers/gpu/drm/amd/display/dc/core/dc_surface.c
> index e96f63eed070..295789059a19 100644
> --- a/drivers/gpu/drm/amd/display/dc/core/dc_surface.c
> +++ b/drivers/gpu/drm/amd/display/dc/core/dc_surface.c
> @@ -68,7 +68,8 @@ struct dc_plane_state *dc_create_plane_state(struct dc *dc)
>  {
>         struct dc *core_dc = dc;
>
> -       struct dc_plane_state *plane_state = dm_alloc(sizeof(*plane_state));
> +       struct dc_plane_state *plane_state = kzalloc(sizeof(*plane_state),
> +                                                    GFP_ATOMIC);
>
>         if (NULL == plane_state)
>                 goto alloc_fail;
> @@ -81,7 +82,7 @@ struct dc_plane_state *dc_create_plane_state(struct dc *dc)
>         return plane_state;
>
>  construct_fail:
> -       dm_free(plane_state);
> +       kfree(plane_state);
>
>  alloc_fail:
>         return NULL;
> @@ -133,7 +134,7 @@ void dc_plane_state_release(struct dc_plane_state *plane_state)
>
>         if (atomic_read(&plane_state->ref_count) == 0) {
>                 destruct(plane_state);
> -               dm_free(plane_state);
> +               kfree(plane_state);
>         }
>  }
>
> @@ -149,14 +150,14 @@ void dc_gamma_release(struct dc_gamma **gamma)
>         atomic_dec(&(*gamma)->ref_count);
>
>         if (atomic_read(&(*gamma)->ref_count) == 0)
> -               dm_free((*gamma));
> +               kfree((*gamma));
>
>         *gamma = NULL;
>  }
>
>  struct dc_gamma *dc_create_gamma()
>  {
> -       struct dc_gamma *gamma = dm_alloc(sizeof(*gamma));
> +       struct dc_gamma *gamma = kzalloc(sizeof(*gamma), GFP_ATOMIC);
>
>         if (gamma == NULL)
>                 goto alloc_fail;
> @@ -181,12 +182,12 @@ void dc_transfer_func_release(struct dc_transfer_func *tf)
>         atomic_dec(&tf->ref_count);
>
>         if (atomic_read(&tf->ref_count) == 0)
> -               dm_free(tf);
> +               kfree(tf);
>  }
>
>  struct dc_transfer_func *dc_create_transfer_func()
>  {
> -       struct dc_transfer_func *tf = dm_alloc(sizeof(*tf));
> +       struct dc_transfer_func *tf = kzalloc(sizeof(*tf), GFP_ATOMIC);
>
>         if (tf == NULL)
>                 goto alloc_fail;
> diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_abm.c b/drivers/gpu/drm/amd/display/dc/dce/dce_abm.c
> index 0e9d914e1a8f..d57e5fcacfcb 100644
> --- a/drivers/gpu/drm/amd/display/dc/dce/dce_abm.c
> +++ b/drivers/gpu/drm/amd/display/dc/dce/dce_abm.c
> @@ -462,7 +462,7 @@ struct abm *dce_abm_create(
>         const struct dce_abm_shift *abm_shift,
>         const struct dce_abm_mask *abm_mask)
>  {
> -       struct dce_abm *abm_dce = dm_alloc(sizeof(*abm_dce));
> +       struct dce_abm *abm_dce = kzalloc(sizeof(*abm_dce), GFP_ATOMIC);
>
>         if (abm_dce == NULL) {
>                 BREAK_TO_DEBUGGER();
> @@ -480,6 +480,6 @@ void dce_abm_destroy(struct abm **abm)
>  {
>         struct dce_abm *abm_dce = TO_DCE_ABM(*abm);
>
> -       dm_free(abm_dce);
> +       kfree(abm_dce);
>         *abm = NULL;
>  }
> diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_audio.c b/drivers/gpu/drm/amd/display/dc/dce/dce_audio.c
> index b94c1e5d85cb..b372ce020f81 100644
> --- a/drivers/gpu/drm/amd/display/dc/dce/dce_audio.c
> +++ b/drivers/gpu/drm/amd/display/dc/dce/dce_audio.c
> @@ -897,7 +897,7 @@ void dce_aud_destroy(struct audio **audio)
>  {
>         struct dce_audio *aud = DCE_AUD(*audio);
>
> -       dm_free(aud);
> +       kfree(aud);
>         *audio = NULL;
>  }
>
> @@ -909,7 +909,7 @@ struct audio *dce_audio_create(
>                 const struct dce_aduio_mask *masks
>                 )
>  {
> -       struct dce_audio *audio = dm_alloc(sizeof(*audio));
> +       struct dce_audio *audio = kzalloc(sizeof(*audio), GFP_ATOMIC);
>
>         if (audio == NULL) {
>                 ASSERT_CRITICAL(audio);
> diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_clock_source.c b/drivers/gpu/drm/amd/display/dc/dce/dce_clock_source.c
> index d3b61b92ebec..9df5809011d1 100644
> --- a/drivers/gpu/drm/amd/display/dc/dce/dce_clock_source.c
> +++ b/drivers/gpu/drm/amd/display/dc/dce/dce_clock_source.c
> @@ -1084,12 +1084,14 @@ static void get_ss_info_from_atombios(
>         if (*ss_entries_num == 0)
>                 return;
>
> -       ss_info = dm_alloc(sizeof(struct spread_spectrum_info) * (*ss_entries_num));
> +       ss_info = kzalloc(sizeof(struct spread_spectrum_info) * (*ss_entries_num),
> +                         GFP_ATOMIC);
>         ss_info_cur = ss_info;
>         if (ss_info == NULL)
>                 return;
>
> -       ss_data = dm_alloc(sizeof(struct spread_spectrum_data) * (*ss_entries_num));
> +       ss_data = kzalloc(sizeof(struct spread_spectrum_data) * (*ss_entries_num),
> +                         GFP_ATOMIC);
>         if (ss_data == NULL)
>                 goto out_free_info;
>
> @@ -1157,14 +1159,14 @@ static void get_ss_info_from_atombios(
>         }
>
>         *spread_spectrum_data = ss_data;
> -       dm_free(ss_info);
> +       kfree(ss_info);
>         return;
>
>  out_free_data:
> -       dm_free(ss_data);
> +       kfree(ss_data);
>         *ss_entries_num = 0;
>  out_free_info:
> -       dm_free(ss_info);
> +       kfree(ss_info);
>  }
>
>  static void ss_info_from_atombios_create(
> diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_clocks.c b/drivers/gpu/drm/amd/display/dc/dce/dce_clocks.c
> index 06d9a3e7c8a2..a7334a094a24 100644
> --- a/drivers/gpu/drm/amd/display/dc/dce/dce_clocks.c
> +++ b/drivers/gpu/drm/amd/display/dc/dce/dce_clocks.c
> @@ -719,7 +719,7 @@ struct display_clock *dce_disp_clk_create(
>         const struct dce_disp_clk_shift *clk_shift,
>         const struct dce_disp_clk_mask *clk_mask)
>  {
> -       struct dce_disp_clk *clk_dce = dm_alloc(sizeof(*clk_dce));
> +       struct dce_disp_clk *clk_dce = kzalloc(sizeof(*clk_dce), GFP_ATOMIC);
>
>         if (clk_dce == NULL) {
>                 BREAK_TO_DEBUGGER();
> @@ -742,7 +742,7 @@ struct display_clock *dce110_disp_clk_create(
>         const struct dce_disp_clk_shift *clk_shift,
>         const struct dce_disp_clk_mask *clk_mask)
>  {
> -       struct dce_disp_clk *clk_dce = dm_alloc(sizeof(*clk_dce));
> +       struct dce_disp_clk *clk_dce = kzalloc(sizeof(*clk_dce), GFP_ATOMIC);
>
>         if (clk_dce == NULL) {
>                 BREAK_TO_DEBUGGER();
> @@ -767,7 +767,7 @@ struct display_clock *dce112_disp_clk_create(
>         const struct dce_disp_clk_shift *clk_shift,
>         const struct dce_disp_clk_mask *clk_mask)
>  {
> -       struct dce_disp_clk *clk_dce = dm_alloc(sizeof(*clk_dce));
> +       struct dce_disp_clk *clk_dce = kzalloc(sizeof(*clk_dce), GFP_ATOMIC);
>
>         if (clk_dce == NULL) {
>                 BREAK_TO_DEBUGGER();
> @@ -788,7 +788,7 @@ struct display_clock *dce112_disp_clk_create(
>
>  struct display_clock *dce120_disp_clk_create(struct dc_context *ctx)
>  {
> -       struct dce_disp_clk *clk_dce = dm_alloc(sizeof(*clk_dce));
> +       struct dce_disp_clk *clk_dce = kzalloc(sizeof(*clk_dce), GFP_ATOMIC);
>         struct dm_pp_clock_levels_with_voltage clk_level_info = {0};
>
>         if (clk_dce == NULL) {
> @@ -822,6 +822,6 @@ void dce_disp_clk_destroy(struct display_clock **disp_clk)
>  {
>         struct dce_disp_clk *clk_dce = TO_DCE_CLOCKS(*disp_clk);
>
> -       dm_free(clk_dce);
> +       kfree(clk_dce);
>         *disp_clk = NULL;
>  }
> diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_dmcu.c b/drivers/gpu/drm/amd/display/dc/dce/dce_dmcu.c
> index 313f61bf06e1..9874837d8a01 100644
> --- a/drivers/gpu/drm/amd/display/dc/dce/dce_dmcu.c
> +++ b/drivers/gpu/drm/amd/display/dc/dce/dce_dmcu.c
> @@ -573,7 +573,7 @@ struct dmcu *dce_dmcu_create(
>         const struct dce_dmcu_shift *dmcu_shift,
>         const struct dce_dmcu_mask *dmcu_mask)
>  {
> -       struct dce_dmcu *dmcu_dce = dm_alloc(sizeof(*dmcu_dce));
> +       struct dce_dmcu *dmcu_dce = kzalloc(sizeof(*dmcu_dce), GFP_ATOMIC);
>
>         if (dmcu_dce == NULL) {
>                 BREAK_TO_DEBUGGER();
> @@ -595,7 +595,7 @@ struct dmcu *dcn10_dmcu_create(
>         const struct dce_dmcu_shift *dmcu_shift,
>         const struct dce_dmcu_mask *dmcu_mask)
>  {
> -       struct dce_dmcu *dmcu_dce = dm_alloc(sizeof(*dmcu_dce));
> +       struct dce_dmcu *dmcu_dce = kzalloc(sizeof(*dmcu_dce), GFP_ATOMIC);
>
>         if (dmcu_dce == NULL) {
>                 BREAK_TO_DEBUGGER();
> @@ -615,6 +615,6 @@ void dce_dmcu_destroy(struct dmcu **dmcu)
>  {
>         struct dce_dmcu *dmcu_dce = TO_DCE_DMCU(*dmcu);
>
> -       dm_free(dmcu_dce);
> +       kfree(dmcu_dce);
>         *dmcu = NULL;
>  }
> diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_ipp.c b/drivers/gpu/drm/amd/display/dc/dce/dce_ipp.c
> index e010cf10d605..fa481d481132 100644
> --- a/drivers/gpu/drm/amd/display/dc/dce/dce_ipp.c
> +++ b/drivers/gpu/drm/amd/display/dc/dce/dce_ipp.c
> @@ -261,6 +261,6 @@ void dce_ipp_construct(
>
>  void dce_ipp_destroy(struct input_pixel_processor **ipp)
>  {
> -       dm_free(TO_DCE_IPP(*ipp));
> +       kfree(TO_DCE_IPP(*ipp));
>         *ipp = NULL;
>  }
> diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.c b/drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.c
> index 0ce94ede80bf..2ce730de0dc3 100644
> --- a/drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.c
> +++ b/drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.c
> @@ -1108,7 +1108,7 @@ void dce110_link_encoder_hw_init(
>
>  void dce110_link_encoder_destroy(struct link_encoder **enc)
>  {
> -       dm_free(TO_DCE110_LINK_ENC(*enc));
> +       kfree(TO_DCE110_LINK_ENC(*enc));
>         *enc = NULL;
>  }
>
> diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_opp.c b/drivers/gpu/drm/amd/display/dc/dce/dce_opp.c
> index 348e4b7047f1..c0736aeabd85 100644
> --- a/drivers/gpu/drm/amd/display/dc/dce/dce_opp.c
> +++ b/drivers/gpu/drm/amd/display/dc/dce/dce_opp.c
> @@ -563,7 +563,7 @@ bool dce110_opp_construct(struct dce110_opp *opp110,
>  void dce110_opp_destroy(struct output_pixel_processor **opp)
>  {
>         if (*opp)
> -               dm_free(FROM_DCE11_OPP(*opp));
> +               kfree(FROM_DCE11_OPP(*opp));
>         *opp = NULL;
>  }
>
> diff --git a/drivers/gpu/drm/amd/display/dc/dce100/dce100_resource.c b/drivers/gpu/drm/amd/display/dc/dce100/dce100_resource.c
> index ca6c7c2a1b4c..161b60587f5d 100644
> --- a/drivers/gpu/drm/amd/display/dc/dce100/dce100_resource.c
> +++ b/drivers/gpu/drm/amd/display/dc/dce100/dce100_resource.c
> @@ -370,7 +370,7 @@ static struct timing_generator *dce100_timing_generator_create(
>                 const struct dce110_timing_generator_offsets *offsets)
>  {
>         struct dce110_timing_generator *tg110 =
> -               dm_alloc(sizeof(struct dce110_timing_generator));
> +               kzalloc(sizeof(struct dce110_timing_generator), GFP_ATOMIC);
>
>         if (!tg110)
>                 return NULL;
> @@ -380,7 +380,7 @@ static struct timing_generator *dce100_timing_generator_create(
>                 return &tg110->base;
>
>         BREAK_TO_DEBUGGER();
> -       dm_free(tg110);
> +       kfree(tg110);
>         return NULL;
>  }
>
> @@ -389,7 +389,7 @@ static struct stream_encoder *dce100_stream_encoder_create(
>         struct dc_context *ctx)
>  {
>         struct dce110_stream_encoder *enc110 =
> -               dm_alloc(sizeof(struct dce110_stream_encoder));
> +               kzalloc(sizeof(struct dce110_stream_encoder), GFP_ATOMIC);
>
>         if (!enc110)
>                 return NULL;
> @@ -400,7 +400,7 @@ static struct stream_encoder *dce100_stream_encoder_create(
>                 return &enc110->base;
>
>         BREAK_TO_DEBUGGER();
> -       dm_free(enc110);
> +       kfree(enc110);
>         return NULL;
>  }
>
> @@ -422,7 +422,7 @@ static const struct dce_hwseq_mask hwseq_mask = {
>  static struct dce_hwseq *dce100_hwseq_create(
>         struct dc_context *ctx)
>  {
> -       struct dce_hwseq *hws = dm_alloc(sizeof(struct dce_hwseq));
> +       struct dce_hwseq *hws = kzalloc(sizeof(struct dce_hwseq), GFP_ATOMIC);
>
>         if (hws) {
>                 hws->ctx = ctx;
> @@ -467,7 +467,8 @@ static struct mem_input *dce100_mem_input_create(
>         struct dc_context *ctx,
>         uint32_t inst)
>  {
> -       struct dce_mem_input *dce_mi = dm_alloc(sizeof(struct dce_mem_input));
> +       struct dce_mem_input *dce_mi = kzalloc(sizeof(struct dce_mem_input),
> +                                              GFP_ATOMIC);
>
>         if (!dce_mi) {
>                 BREAK_TO_DEBUGGER();
> @@ -481,7 +482,7 @@ static struct mem_input *dce100_mem_input_create(
>
>  static void dce100_transform_destroy(struct transform **xfm)
>  {
> -       dm_free(TO_DCE_TRANSFORM(*xfm));
> +       kfree(TO_DCE_TRANSFORM(*xfm));
>         *xfm = NULL;
>  }
>
> @@ -490,7 +491,7 @@ static struct transform *dce100_transform_create(
>         uint32_t inst)
>  {
>         struct dce_transform *transform =
> -               dm_alloc(sizeof(struct dce_transform));
> +               kzalloc(sizeof(struct dce_transform), GFP_ATOMIC);
>
>         if (!transform)
>                 return NULL;
> @@ -501,14 +502,14 @@ static struct transform *dce100_transform_create(
>         }
>
>         BREAK_TO_DEBUGGER();
> -       dm_free(transform);
> +       kfree(transform);
>         return NULL;
>  }
>
>  static struct input_pixel_processor *dce100_ipp_create(
>         struct dc_context *ctx, uint32_t inst)
>  {
> -       struct dce_ipp *ipp = dm_alloc(sizeof(struct dce_ipp));
> +       struct dce_ipp *ipp = kzalloc(sizeof(struct dce_ipp), GFP_ATOMIC);
>
>         if (!ipp) {
>                 BREAK_TO_DEBUGGER();
> @@ -532,7 +533,7 @@ struct link_encoder *dce100_link_encoder_create(
>         const struct encoder_init_data *enc_init_data)
>  {
>         struct dce110_link_encoder *enc110 =
> -               dm_alloc(sizeof(struct dce110_link_encoder));
> +               kzalloc(sizeof(struct dce110_link_encoder), GFP_ATOMIC);
>
>         if (!enc110)
>                 return NULL;
> @@ -549,7 +550,7 @@ struct link_encoder *dce100_link_encoder_create(
>         }
>
>         BREAK_TO_DEBUGGER();
> -       dm_free(enc110);
> +       kfree(enc110);
>         return NULL;
>  }
>
> @@ -558,7 +559,7 @@ struct output_pixel_processor *dce100_opp_create(
>         uint32_t inst)
>  {
>         struct dce110_opp *opp =
> -               dm_alloc(sizeof(struct dce110_opp));
> +               kzalloc(sizeof(struct dce110_opp), GFP_ATOMIC);
>
>         if (!opp)
>                 return NULL;
> @@ -568,7 +569,7 @@ struct output_pixel_processor *dce100_opp_create(
>                 return &opp->base;
>
>         BREAK_TO_DEBUGGER();
> -       dm_free(opp);
> +       kfree(opp);
>         return NULL;
>  }
>
> @@ -580,7 +581,7 @@ struct clock_source *dce100_clock_source_create(
>         bool dp_clk_src)
>  {
>         struct dce110_clk_src *clk_src =
> -               dm_alloc(sizeof(struct dce110_clk_src));
> +               kzalloc(sizeof(struct dce110_clk_src), GFP_ATOMIC);
>
>         if (!clk_src)
>                 return NULL;
> @@ -597,7 +598,7 @@ struct clock_source *dce100_clock_source_create(
>
>  void dce100_clock_source_destroy(struct clock_source **clk_src)
>  {
> -       dm_free(TO_DCE110_CLK_SRC(*clk_src));
> +       kfree(TO_DCE110_CLK_SRC(*clk_src));
>         *clk_src = NULL;
>  }
>
> @@ -616,19 +617,19 @@ static void destruct(struct dce110_resource_pool *pool)
>                         dce_ipp_destroy(&pool->base.ipps[i]);
>
>                 if (pool->base.mis[i] != NULL) {
> -                       dm_free(TO_DCE_MEM_INPUT(pool->base.mis[i]));
> +                       kfree(TO_DCE_MEM_INPUT(pool->base.mis[i]));
>                         pool->base.mis[i] = NULL;
>                 }
>
>                 if (pool->base.timing_generators[i] != NULL)    {
> -                       dm_free(DCE110TG_FROM_TG(pool->base.timing_generators[i]));
> +                       kfree(DCE110TG_FROM_TG(pool->base.timing_generators[i]));
>                         pool->base.timing_generators[i] = NULL;
>                 }
>         }
>
>         for (i = 0; i < pool->base.stream_enc_count; i++) {
>                 if (pool->base.stream_enc[i] != NULL)
> -                       dm_free(DCE110STRENC_FROM_STRENC(pool->base.stream_enc[i]));
> +                       kfree(DCE110STRENC_FROM_STRENC(pool->base.stream_enc[i]));
>         }
>
>         for (i = 0; i < pool->base.clk_src_count; i++) {
> @@ -768,7 +769,7 @@ static void dce100_destroy_resource_pool(struct resource_pool **pool)
>         struct dce110_resource_pool *dce110_pool = TO_DCE110_RES_POOL(*pool);
>
>         destruct(dce110_pool);
> -       dm_free(dce110_pool);
> +       kfree(dce110_pool);
>         *pool = NULL;
>  }
>
> @@ -950,7 +951,7 @@ struct resource_pool *dce100_create_resource_pool(
>         struct dc  *dc)
>  {
>         struct dce110_resource_pool *pool =
> -               dm_alloc(sizeof(struct dce110_resource_pool));
> +               kzalloc(sizeof(struct dce110_resource_pool), GFP_ATOMIC);
>
>         if (!pool)
>                 return NULL;
> diff --git a/drivers/gpu/drm/amd/display/dc/dce110/dce110_compressor.c b/drivers/gpu/drm/amd/display/dc/dce110/dce110_compressor.c
> index f82c26995609..03534d3a9efe 100644
> --- a/drivers/gpu/drm/amd/display/dc/dce110/dce110_compressor.c
> +++ b/drivers/gpu/drm/amd/display/dc/dce110/dce110_compressor.c
> @@ -388,7 +388,7 @@ void dce110_compressor_set_fbc_invalidation_triggers(
>  struct compressor *dce110_compressor_create(struct dc_context *ctx)
>  {
>         struct dce110_compressor *cp110 =
> -               dm_alloc(sizeof(struct dce110_compressor));
> +               kzalloc(sizeof(struct dce110_compressor), GFP_ATOMIC);
>
>         if (!cp110)
>                 return NULL;
> @@ -397,13 +397,13 @@ struct compressor *dce110_compressor_create(struct dc_context *ctx)
>                 return &cp110->base;
>
>         BREAK_TO_DEBUGGER();
> -       dm_free(cp110);
> +       kfree(cp110);
>         return NULL;
>  }
>
>  void dce110_compressor_destroy(struct compressor **compressor)
>  {
> -       dm_free(TO_DCE110_COMPRESSOR(*compressor));
> +       kfree(TO_DCE110_COMPRESSOR(*compressor));
>         *compressor = NULL;
>  }
>
> diff --git a/drivers/gpu/drm/amd/display/dc/dce110/dce110_resource.c b/drivers/gpu/drm/amd/display/dc/dce110/dce110_resource.c
> index 25eda52c32ef..0894a19e3aca 100644
> --- a/drivers/gpu/drm/amd/display/dc/dce110/dce110_resource.c
> +++ b/drivers/gpu/drm/amd/display/dc/dce110/dce110_resource.c
> @@ -405,7 +405,7 @@ static struct timing_generator *dce110_timing_generator_create(
>                 const struct dce110_timing_generator_offsets *offsets)
>  {
>         struct dce110_timing_generator *tg110 =
> -               dm_alloc(sizeof(struct dce110_timing_generator));
> +               kzalloc(sizeof(struct dce110_timing_generator), GFP_ATOMIC);
>
>         if (!tg110)
>                 return NULL;
> @@ -414,7 +414,7 @@ static struct timing_generator *dce110_timing_generator_create(
>                 return &tg110->base;
>
>         BREAK_TO_DEBUGGER();
> -       dm_free(tg110);
> +       kfree(tg110);
>         return NULL;
>  }
>
> @@ -423,7 +423,7 @@ static struct stream_encoder *dce110_stream_encoder_create(
>         struct dc_context *ctx)
>  {
>         struct dce110_stream_encoder *enc110 =
> -               dm_alloc(sizeof(struct dce110_stream_encoder));
> +               kzalloc(sizeof(struct dce110_stream_encoder), GFP_ATOMIC);
>
>         if (!enc110)
>                 return NULL;
> @@ -434,7 +434,7 @@ static struct stream_encoder *dce110_stream_encoder_create(
>                 return &enc110->base;
>
>         BREAK_TO_DEBUGGER();
> -       dm_free(enc110);
> +       kfree(enc110);
>         return NULL;
>  }
>
> @@ -460,7 +460,7 @@ static const struct dce_hwseq_mask hwseq_mask = {
>  static struct dce_hwseq *dce110_hwseq_create(
>         struct dc_context *ctx)
>  {
> -       struct dce_hwseq *hws = dm_alloc(sizeof(struct dce_hwseq));
> +       struct dce_hwseq *hws = kzalloc(sizeof(struct dce_hwseq), GFP_ATOMIC);
>
>         if (hws) {
>                 hws->ctx = ctx;
> @@ -505,7 +505,8 @@ static struct mem_input *dce110_mem_input_create(
>         struct dc_context *ctx,
>         uint32_t inst)
>  {
> -       struct dce_mem_input *dce_mi = dm_alloc(sizeof(struct dce_mem_input));
> +       struct dce_mem_input *dce_mi = kzalloc(sizeof(struct dce_mem_input),
> +                                              GFP_ATOMIC);
>
>         if (!dce_mi) {
>                 BREAK_TO_DEBUGGER();
> @@ -519,7 +520,7 @@ static struct mem_input *dce110_mem_input_create(
>
>  static void dce110_transform_destroy(struct transform **xfm)
>  {
> -       dm_free(TO_DCE_TRANSFORM(*xfm));
> +       kfree(TO_DCE_TRANSFORM(*xfm));
>         *xfm = NULL;
>  }
>
> @@ -528,7 +529,7 @@ static struct transform *dce110_transform_create(
>         uint32_t inst)
>  {
>         struct dce_transform *transform =
> -               dm_alloc(sizeof(struct dce_transform));
> +               kzalloc(sizeof(struct dce_transform), GFP_ATOMIC);
>
>         if (!transform)
>                 return NULL;
> @@ -538,14 +539,14 @@ static struct transform *dce110_transform_create(
>                 return &transform->base;
>
>         BREAK_TO_DEBUGGER();
> -       dm_free(transform);
> +       kfree(transform);
>         return NULL;
>  }
>
>  static struct input_pixel_processor *dce110_ipp_create(
>         struct dc_context *ctx, uint32_t inst)
>  {
> -       struct dce_ipp *ipp = dm_alloc(sizeof(struct dce_ipp));
> +       struct dce_ipp *ipp = kzalloc(sizeof(struct dce_ipp), GFP_ATOMIC);
>
>         if (!ipp) {
>                 BREAK_TO_DEBUGGER();
> @@ -569,7 +570,7 @@ static struct link_encoder *dce110_link_encoder_create(
>         const struct encoder_init_data *enc_init_data)
>  {
>         struct dce110_link_encoder *enc110 =
> -               dm_alloc(sizeof(struct dce110_link_encoder));
> +               kzalloc(sizeof(struct dce110_link_encoder), GFP_ATOMIC);
>
>         if (!enc110)
>                 return NULL;
> @@ -586,7 +587,7 @@ static struct link_encoder *dce110_link_encoder_create(
>         }
>
>         BREAK_TO_DEBUGGER();
> -       dm_free(enc110);
> +       kfree(enc110);
>         return NULL;
>  }
>
> @@ -595,7 +596,7 @@ static struct output_pixel_processor *dce110_opp_create(
>         uint32_t inst)
>  {
>         struct dce110_opp *opp =
> -               dm_alloc(sizeof(struct dce110_opp));
> +               kzalloc(sizeof(struct dce110_opp), GFP_ATOMIC);
>
>         if (!opp)
>                 return NULL;
> @@ -605,7 +606,7 @@ static struct output_pixel_processor *dce110_opp_create(
>                 return &opp->base;
>
>         BREAK_TO_DEBUGGER();
> -       dm_free(opp);
> +       kfree(opp);
>         return NULL;
>  }
>
> @@ -617,7 +618,7 @@ struct clock_source *dce110_clock_source_create(
>         bool dp_clk_src)
>  {
>         struct dce110_clk_src *clk_src =
> -               dm_alloc(sizeof(struct dce110_clk_src));
> +               kzalloc(sizeof(struct dce110_clk_src), GFP_ATOMIC);
>
>         if (!clk_src)
>                 return NULL;
> @@ -642,15 +643,15 @@ void dce110_clock_source_destroy(struct clock_source **clk_src)
>         dce110_clk_src = TO_DCE110_CLK_SRC(*clk_src);
>
>         if (dce110_clk_src->dp_ss_params)
> -               dm_free(dce110_clk_src->dp_ss_params);
> +               kfree(dce110_clk_src->dp_ss_params);
>
>         if (dce110_clk_src->hdmi_ss_params)
> -               dm_free(dce110_clk_src->hdmi_ss_params);
> +               kfree(dce110_clk_src->hdmi_ss_params);
>
>         if (dce110_clk_src->dvi_ss_params)
> -               dm_free(dce110_clk_src->dvi_ss_params);
> +               kfree(dce110_clk_src->dvi_ss_params);
>
> -       dm_free(dce110_clk_src);
> +       kfree(dce110_clk_src);
>         *clk_src = NULL;
>  }
>
> @@ -669,19 +670,19 @@ static void destruct(struct dce110_resource_pool *pool)
>                         dce_ipp_destroy(&pool->base.ipps[i]);
>
>                 if (pool->base.mis[i] != NULL) {
> -                       dm_free(TO_DCE_MEM_INPUT(pool->base.mis[i]));
> +                       kfree(TO_DCE_MEM_INPUT(pool->base.mis[i]));
>                         pool->base.mis[i] = NULL;
>                 }
>
>                 if (pool->base.timing_generators[i] != NULL)    {
> -                       dm_free(DCE110TG_FROM_TG(pool->base.timing_generators[i]));
> +                       kfree(DCE110TG_FROM_TG(pool->base.timing_generators[i]));
>                         pool->base.timing_generators[i] = NULL;
>                 }
>         }
>
>         for (i = 0; i < pool->base.stream_enc_count; i++) {
>                 if (pool->base.stream_enc[i] != NULL)
> -                       dm_free(DCE110STRENC_FROM_STRENC(pool->base.stream_enc[i]));
> +                       kfree(DCE110STRENC_FROM_STRENC(pool->base.stream_enc[i]));
>         }
>
>         for (i = 0; i < pool->base.clk_src_count; i++) {
> @@ -1031,7 +1032,7 @@ static void dce110_destroy_resource_pool(struct resource_pool **pool)
>         struct dce110_resource_pool *dce110_pool = TO_DCE110_RES_POOL(*pool);
>
>         destruct(dce110_pool);
> -       dm_free(dce110_pool);
> +       kfree(dce110_pool);
>         *pool = NULL;
>  }
>
> @@ -1048,10 +1049,14 @@ static const struct resource_funcs dce110_res_pool_funcs = {
>
>  static bool underlay_create(struct dc_context *ctx, struct resource_pool *pool)
>  {
> -       struct dce110_timing_generator *dce110_tgv = dm_alloc(sizeof (*dce110_tgv));
> -       struct dce_transform *dce110_xfmv = dm_alloc(sizeof (*dce110_xfmv));
> -       struct dce_mem_input *dce110_miv = dm_alloc(sizeof (*dce110_miv));
> -       struct dce110_opp *dce110_oppv = dm_alloc(sizeof (*dce110_oppv));
> +       struct dce110_timing_generator *dce110_tgv = kzalloc(sizeof(*dce110_tgv),
> +                                                            GFP_ATOMIC);
> +       struct dce_transform *dce110_xfmv = kzalloc(sizeof(*dce110_xfmv),
> +                                                   GFP_ATOMIC);
> +       struct dce_mem_input *dce110_miv = kzalloc(sizeof(*dce110_miv),
> +                                                  GFP_ATOMIC);
> +       struct dce110_opp *dce110_oppv = kzalloc(sizeof(*dce110_oppv),
> +                                                GFP_ATOMIC);
>
>         if ((dce110_tgv == NULL) ||
>                 (dce110_xfmv == NULL) ||
> @@ -1332,7 +1337,7 @@ struct resource_pool *dce110_create_resource_pool(
>         struct hw_asic_id asic_id)
>  {
>         struct dce110_resource_pool *pool =
> -               dm_alloc(sizeof(struct dce110_resource_pool));
> +               kzalloc(sizeof(struct dce110_resource_pool), GFP_ATOMIC);
>
>         if (!pool)
>                 return NULL;
> diff --git a/drivers/gpu/drm/amd/display/dc/dce112/dce112_compressor.c b/drivers/gpu/drm/amd/display/dc/dce112/dce112_compressor.c
> index 75af2125344b..51afa67bb49a 100644
> --- a/drivers/gpu/drm/amd/display/dc/dce112/dce112_compressor.c
> +++ b/drivers/gpu/drm/amd/display/dc/dce112/dce112_compressor.c
> @@ -839,7 +839,7 @@ bool dce112_compressor_construct(struct dce112_compressor *compressor,
>  struct compressor *dce112_compressor_create(struct dc_context *ctx)
>  {
>         struct dce112_compressor *cp110 =
> -               dm_alloc(sizeof(struct dce112_compressor));
> +               kzalloc(sizeof(struct dce112_compressor), GFP_ATOMIC);
>
>         if (!cp110)
>                 return NULL;
> @@ -848,12 +848,12 @@ struct compressor *dce112_compressor_create(struct dc_context *ctx)
>                 return &cp110->base;
>
>         BREAK_TO_DEBUGGER();
> -       dm_free(cp110);
> +       kfree(cp110);
>         return NULL;
>  }
>
>  void dce112_compressor_destroy(struct compressor **compressor)
>  {
> -       dm_free(TO_DCE112_COMPRESSOR(*compressor));
> +       kfree(TO_DCE112_COMPRESSOR(*compressor));
>         *compressor = NULL;
>  }
> diff --git a/drivers/gpu/drm/amd/display/dc/dce112/dce112_resource.c b/drivers/gpu/drm/amd/display/dc/dce112/dce112_resource.c
> index de6f71d8a89b..f61878d5cade 100644
> --- a/drivers/gpu/drm/amd/display/dc/dce112/dce112_resource.c
> +++ b/drivers/gpu/drm/amd/display/dc/dce112/dce112_resource.c
> @@ -410,7 +410,7 @@ static struct timing_generator *dce112_timing_generator_create(
>                 const struct dce110_timing_generator_offsets *offsets)
>  {
>         struct dce110_timing_generator *tg110 =
> -               dm_alloc(sizeof(struct dce110_timing_generator));
> +               kzalloc(sizeof(struct dce110_timing_generator), GFP_ATOMIC);
>
>         if (!tg110)
>                 return NULL;
> @@ -419,7 +419,7 @@ static struct timing_generator *dce112_timing_generator_create(
>                 return &tg110->base;
>
>         BREAK_TO_DEBUGGER();
> -       dm_free(tg110);
> +       kfree(tg110);
>         return NULL;
>  }
>
> @@ -428,7 +428,7 @@ static struct stream_encoder *dce112_stream_encoder_create(
>         struct dc_context *ctx)
>  {
>         struct dce110_stream_encoder *enc110 =
> -               dm_alloc(sizeof(struct dce110_stream_encoder));
> +               kzalloc(sizeof(struct dce110_stream_encoder), GFP_ATOMIC);
>
>         if (!enc110)
>                 return NULL;
> @@ -439,7 +439,7 @@ static struct stream_encoder *dce112_stream_encoder_create(
>                 return &enc110->base;
>
>         BREAK_TO_DEBUGGER();
> -       dm_free(enc110);
> +       kfree(enc110);
>         return NULL;
>  }
>
> @@ -461,7 +461,7 @@ static const struct dce_hwseq_mask hwseq_mask = {
>  static struct dce_hwseq *dce112_hwseq_create(
>         struct dc_context *ctx)
>  {
> -       struct dce_hwseq *hws = dm_alloc(sizeof(struct dce_hwseq));
> +       struct dce_hwseq *hws = kzalloc(sizeof(struct dce_hwseq), GFP_ATOMIC);
>
>         if (hws) {
>                 hws->ctx = ctx;
> @@ -501,7 +501,8 @@ static struct mem_input *dce112_mem_input_create(
>         struct dc_context *ctx,
>         uint32_t inst)
>  {
> -       struct dce_mem_input *dce_mi = dm_alloc(sizeof(struct dce_mem_input));
> +       struct dce_mem_input *dce_mi = kzalloc(sizeof(struct dce_mem_input),
> +                                              GFP_ATOMIC);
>
>         if (!dce_mi) {
>                 BREAK_TO_DEBUGGER();
> @@ -514,7 +515,7 @@ static struct mem_input *dce112_mem_input_create(
>
>  static void dce112_transform_destroy(struct transform **xfm)
>  {
> -       dm_free(TO_DCE_TRANSFORM(*xfm));
> +       kfree(TO_DCE_TRANSFORM(*xfm));
>         *xfm = NULL;
>  }
>
> @@ -523,7 +524,7 @@ static struct transform *dce112_transform_create(
>         uint32_t inst)
>  {
>         struct dce_transform *transform =
> -               dm_alloc(sizeof(struct dce_transform));
> +               kzalloc(sizeof(struct dce_transform), GFP_ATOMIC);
>
>         if (!transform)
>                 return NULL;
> @@ -535,7 +536,7 @@ static struct transform *dce112_transform_create(
>         }
>
>         BREAK_TO_DEBUGGER();
> -       dm_free(transform);
> +       kfree(transform);
>         return NULL;
>  }
>
> @@ -554,7 +555,7 @@ struct link_encoder *dce112_link_encoder_create(
>         const struct encoder_init_data *enc_init_data)
>  {
>         struct dce110_link_encoder *enc110 =
> -               dm_alloc(sizeof(struct dce110_link_encoder));
> +               kzalloc(sizeof(struct dce110_link_encoder), GFP_ATOMIC);
>
>         if (!enc110)
>                 return NULL;
> @@ -571,14 +572,14 @@ struct link_encoder *dce112_link_encoder_create(
>         }
>
>         BREAK_TO_DEBUGGER();
> -       dm_free(enc110);
> +       kfree(enc110);
>         return NULL;
>  }
>
>  static struct input_pixel_processor *dce112_ipp_create(
>         struct dc_context *ctx, uint32_t inst)
>  {
> -       struct dce_ipp *ipp = dm_alloc(sizeof(struct dce_ipp));
> +       struct dce_ipp *ipp = kzalloc(sizeof(struct dce_ipp), GFP_ATOMIC);
>
>         if (!ipp) {
>                 BREAK_TO_DEBUGGER();
> @@ -595,7 +596,7 @@ struct output_pixel_processor *dce112_opp_create(
>         uint32_t inst)
>  {
>         struct dce110_opp *opp =
> -               dm_alloc(sizeof(struct dce110_opp));
> +               kzalloc(sizeof(struct dce110_opp), GFP_ATOMIC);
>
>         if (!opp)
>                 return NULL;
> @@ -605,7 +606,7 @@ struct output_pixel_processor *dce112_opp_create(
>                 return &opp->base;
>
>         BREAK_TO_DEBUGGER();
> -       dm_free(opp);
> +       kfree(opp);
>         return NULL;
>  }
>
> @@ -617,7 +618,7 @@ struct clock_source *dce112_clock_source_create(
>         bool dp_clk_src)
>  {
>         struct dce110_clk_src *clk_src =
> -               dm_alloc(sizeof(struct dce110_clk_src));
> +               kzalloc(sizeof(struct dce110_clk_src), GFP_ATOMIC);
>
>         if (!clk_src)
>                 return NULL;
> @@ -634,7 +635,7 @@ struct clock_source *dce112_clock_source_create(
>
>  void dce112_clock_source_destroy(struct clock_source **clk_src)
>  {
> -       dm_free(TO_DCE110_CLK_SRC(*clk_src));
> +       kfree(TO_DCE110_CLK_SRC(*clk_src));
>         *clk_src = NULL;
>  }
>
> @@ -653,19 +654,19 @@ static void destruct(struct dce110_resource_pool *pool)
>                         dce_ipp_destroy(&pool->base.ipps[i]);
>
>                 if (pool->base.mis[i] != NULL) {
> -                       dm_free(TO_DCE_MEM_INPUT(pool->base.mis[i]));
> +                       kfree(TO_DCE_MEM_INPUT(pool->base.mis[i]));
>                         pool->base.mis[i] = NULL;
>                 }
>
>                 if (pool->base.timing_generators[i] != NULL) {
> -                       dm_free(DCE110TG_FROM_TG(pool->base.timing_generators[i]));
> +                       kfree(DCE110TG_FROM_TG(pool->base.timing_generators[i]));
>                         pool->base.timing_generators[i] = NULL;
>                 }
>         }
>
>         for (i = 0; i < pool->base.stream_enc_count; i++) {
>                 if (pool->base.stream_enc[i] != NULL)
> -                       dm_free(DCE110STRENC_FROM_STRENC(pool->base.stream_enc[i]));
> +                       kfree(DCE110STRENC_FROM_STRENC(pool->base.stream_enc[i]));
>         }
>
>         for (i = 0; i < pool->base.clk_src_count; i++) {
> @@ -940,7 +941,7 @@ static void dce112_destroy_resource_pool(struct resource_pool **pool)
>         struct dce110_resource_pool *dce110_pool = TO_DCE110_RES_POOL(*pool);
>
>         destruct(dce110_pool);
> -       dm_free(dce110_pool);
> +       kfree(dce110_pool);
>         *pool = NULL;
>  }
>
> @@ -1298,7 +1299,7 @@ struct resource_pool *dce112_create_resource_pool(
>         struct dc *dc)
>  {
>         struct dce110_resource_pool *pool =
> -               dm_alloc(sizeof(struct dce110_resource_pool));
> +               kzalloc(sizeof(struct dce110_resource_pool), GFP_ATOMIC);
>
>         if (!pool)
>                 return NULL;
> diff --git a/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c b/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c
> index e5d2d98982f7..553bf45f6423 100644
> --- a/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c
> +++ b/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c
> @@ -351,7 +351,7 @@ struct output_pixel_processor *dce120_opp_create(
>         uint32_t inst)
>  {
>         struct dce110_opp *opp =
> -               dm_alloc(sizeof(struct dce110_opp));
> +               kzalloc(sizeof(struct dce110_opp), GFP_ATOMIC);
>
>         if (!opp)
>                 return NULL;
> @@ -361,7 +361,7 @@ struct output_pixel_processor *dce120_opp_create(
>                 return &opp->base;
>
>         BREAK_TO_DEBUGGER();
> -       dm_free(opp);
> +       kfree(opp);
>         return NULL;
>  }
>
> @@ -388,7 +388,7 @@ struct clock_source *dce120_clock_source_create(
>         bool dp_clk_src)
>  {
>         struct dce110_clk_src *clk_src =
> -               dm_alloc(sizeof(*clk_src));
> +               kzalloc(sizeof(*clk_src), GFP_ATOMIC);
>
>         if (!clk_src)
>                 return NULL;
> @@ -405,7 +405,7 @@ struct clock_source *dce120_clock_source_create(
>
>  void dce120_clock_source_destroy(struct clock_source **clk_src)
>  {
> -       dm_free(TO_DCE110_CLK_SRC(*clk_src));
> +       kfree(TO_DCE110_CLK_SRC(*clk_src));
>         *clk_src = NULL;
>  }
>
> @@ -428,7 +428,7 @@ static struct timing_generator *dce120_timing_generator_create(
>                 const struct dce110_timing_generator_offsets *offsets)
>  {
>         struct dce110_timing_generator *tg110 =
> -               dm_alloc(sizeof(struct dce110_timing_generator));
> +               kzalloc(sizeof(struct dce110_timing_generator), GFP_ATOMIC);
>
>         if (!tg110)
>                 return NULL;
> @@ -437,13 +437,13 @@ static struct timing_generator *dce120_timing_generator_create(
>                 return &tg110->base;
>
>         BREAK_TO_DEBUGGER();
> -       dm_free(tg110);
> +       kfree(tg110);
>         return NULL;
>  }
>
>  static void dce120_transform_destroy(struct transform **xfm)
>  {
> -       dm_free(TO_DCE_TRANSFORM(*xfm));
> +       kfree(TO_DCE_TRANSFORM(*xfm));
>         *xfm = NULL;
>  }
>
> @@ -462,7 +462,7 @@ static void destruct(struct dce110_resource_pool *pool)
>                         dce_ipp_destroy(&pool->base.ipps[i]);
>
>                 if (pool->base.mis[i] != NULL) {
> -                       dm_free(TO_DCE_MEM_INPUT(pool->base.mis[i]));
> +                       kfree(TO_DCE_MEM_INPUT(pool->base.mis[i]));
>                         pool->base.mis[i] = NULL;
>                 }
>
> @@ -471,7 +471,7 @@ static void destruct(struct dce110_resource_pool *pool)
>                 }
>
>                 if (pool->base.timing_generators[i] != NULL) {
> -                       dm_free(DCE110TG_FROM_TG(pool->base.timing_generators[i]));
> +                       kfree(DCE110TG_FROM_TG(pool->base.timing_generators[i]));
>                         pool->base.timing_generators[i] = NULL;
>                 }
>         }
> @@ -483,7 +483,7 @@ static void destruct(struct dce110_resource_pool *pool)
>
>         for (i = 0; i < pool->base.stream_enc_count; i++) {
>                 if (pool->base.stream_enc[i] != NULL)
> -                       dm_free(DCE110STRENC_FROM_STRENC(pool->base.stream_enc[i]));
> +                       kfree(DCE110STRENC_FROM_STRENC(pool->base.stream_enc[i]));
>         }
>
>         for (i = 0; i < pool->base.clk_src_count; i++) {
> @@ -539,7 +539,7 @@ static struct link_encoder *dce120_link_encoder_create(
>         const struct encoder_init_data *enc_init_data)
>  {
>         struct dce110_link_encoder *enc110 =
> -               dm_alloc(sizeof(struct dce110_link_encoder));
> +               kzalloc(sizeof(struct dce110_link_encoder), GFP_ATOMIC);
>
>         if (!enc110)
>                 return NULL;
> @@ -556,14 +556,14 @@ static struct link_encoder *dce120_link_encoder_create(
>         }
>
>         BREAK_TO_DEBUGGER();
> -       dm_free(enc110);
> +       kfree(enc110);
>         return NULL;
>  }
>
>  static struct input_pixel_processor *dce120_ipp_create(
>         struct dc_context *ctx, uint32_t inst)
>  {
> -       struct dce_ipp *ipp = dm_alloc(sizeof(struct dce_ipp));
> +       struct dce_ipp *ipp = kzalloc(sizeof(struct dce_ipp), GFP_ATOMIC);
>
>         if (!ipp) {
>                 BREAK_TO_DEBUGGER();
> @@ -580,7 +580,7 @@ static struct stream_encoder *dce120_stream_encoder_create(
>         struct dc_context *ctx)
>  {
>         struct dce110_stream_encoder *enc110 =
> -               dm_alloc(sizeof(struct dce110_stream_encoder));
> +               kzalloc(sizeof(struct dce110_stream_encoder), GFP_ATOMIC);
>
>         if (!enc110)
>                 return NULL;
> @@ -591,7 +591,7 @@ static struct stream_encoder *dce120_stream_encoder_create(
>                 return &enc110->base;
>
>         BREAK_TO_DEBUGGER();
> -       dm_free(enc110);
> +       kfree(enc110);
>         return NULL;
>  }
>
> @@ -614,7 +614,7 @@ static const struct dce_hwseq_mask hwseq_mask = {
>  static struct dce_hwseq *dce120_hwseq_create(
>         struct dc_context *ctx)
>  {
> -       struct dce_hwseq *hws = dm_alloc(sizeof(struct dce_hwseq));
> +       struct dce_hwseq *hws = kzalloc(sizeof(struct dce_hwseq), GFP_ATOMIC);
>
>         if (hws) {
>                 hws->ctx = ctx;
> @@ -654,7 +654,8 @@ static struct mem_input *dce120_mem_input_create(
>         struct dc_context *ctx,
>         uint32_t inst)
>  {
> -       struct dce_mem_input *dce_mi = dm_alloc(sizeof(struct dce_mem_input));
> +       struct dce_mem_input *dce_mi = kzalloc(sizeof(struct dce_mem_input),
> +                                              GFP_ATOMIC);
>
>         if (!dce_mi) {
>                 BREAK_TO_DEBUGGER();
> @@ -670,7 +671,7 @@ static struct transform *dce120_transform_create(
>         uint32_t inst)
>  {
>         struct dce_transform *transform =
> -               dm_alloc(sizeof(struct dce_transform));
> +               kzalloc(sizeof(struct dce_transform), GFP_ATOMIC);
>
>         if (!transform)
>                 return NULL;
> @@ -682,7 +683,7 @@ static struct transform *dce120_transform_create(
>         }
>
>         BREAK_TO_DEBUGGER();
> -       dm_free(transform);
> +       kfree(transform);
>         return NULL;
>  }
>
> @@ -691,7 +692,7 @@ static void dce120_destroy_resource_pool(struct resource_pool **pool)
>         struct dce110_resource_pool *dce110_pool = TO_DCE110_RES_POOL(*pool);
>
>         destruct(dce110_pool);
> -       dm_free(dce110_pool);
> +       kfree(dce110_pool);
>         *pool = NULL;
>  }
>
> @@ -1006,7 +1007,7 @@ struct resource_pool *dce120_create_resource_pool(
>         struct dc *dc)
>  {
>         struct dce110_resource_pool *pool =
> -               dm_alloc(sizeof(struct dce110_resource_pool));
> +               kzalloc(sizeof(struct dce110_resource_pool), GFP_ATOMIC);
>
>         if (!pool)
>                 return NULL;
> diff --git a/drivers/gpu/drm/amd/display/dc/dce80/dce80_compressor.c b/drivers/gpu/drm/amd/display/dc/dce80/dce80_compressor.c
> index 77626d7624c6..0488fb3537ba 100644
> --- a/drivers/gpu/drm/amd/display/dc/dce80/dce80_compressor.c
> +++ b/drivers/gpu/drm/amd/display/dc/dce80/dce80_compressor.c
> @@ -819,7 +819,7 @@ bool dce80_compressor_construct(struct dce80_compressor *compressor,
>  struct compressor *dce80_compressor_create(struct dc_context *ctx)
>  {
>         struct dce80_compressor *cp80 =
> -               dm_alloc(sizeof(struct dce80_compressor));
> +               kzalloc(sizeof(struct dce80_compressor), GFP_ATOMIC);
>
>         if (!cp80)
>                 return NULL;
> @@ -828,12 +828,12 @@ struct compressor *dce80_compressor_create(struct dc_context *ctx)
>                 return &cp80->base;
>
>         BREAK_TO_DEBUGGER();
> -       dm_free(cp80);
> +       kfree(cp80);
>         return NULL;
>  }
>
>  void dce80_compressor_destroy(struct compressor **compressor)
>  {
> -       dm_free(TO_DCE80_COMPRESSOR(*compressor));
> +       kfree(TO_DCE80_COMPRESSOR(*compressor));
>         *compressor = NULL;
>  }
> diff --git a/drivers/gpu/drm/amd/display/dc/dce80/dce80_resource.c b/drivers/gpu/drm/amd/display/dc/dce80/dce80_resource.c
> index 5453f02ea8ca..ccbe0d576a5e 100644
> --- a/drivers/gpu/drm/amd/display/dc/dce80/dce80_resource.c
> +++ b/drivers/gpu/drm/amd/display/dc/dce80/dce80_resource.c
> @@ -399,7 +399,7 @@ static struct timing_generator *dce80_timing_generator_create(
>                 const struct dce110_timing_generator_offsets *offsets)
>  {
>         struct dce110_timing_generator *tg110 =
> -               dm_alloc(sizeof(struct dce110_timing_generator));
> +               kzalloc(sizeof(struct dce110_timing_generator), GFP_ATOMIC);
>
>         if (!tg110)
>                 return NULL;
> @@ -408,7 +408,7 @@ static struct timing_generator *dce80_timing_generator_create(
>                 return &tg110->base;
>
>         BREAK_TO_DEBUGGER();
> -       dm_free(tg110);
> +       kfree(tg110);
>         return NULL;
>  }
>
> @@ -417,7 +417,7 @@ static struct output_pixel_processor *dce80_opp_create(
>         uint32_t inst)
>  {
>         struct dce110_opp *opp =
> -               dm_alloc(sizeof(struct dce110_opp));
> +               kzalloc(sizeof(struct dce110_opp), GFP_ATOMIC);
>
>         if (!opp)
>                 return NULL;
> @@ -427,7 +427,7 @@ static struct output_pixel_processor *dce80_opp_create(
>                 return &opp->base;
>
>         BREAK_TO_DEBUGGER();
> -       dm_free(opp);
> +       kfree(opp);
>         return NULL;
>  }
>
> @@ -436,7 +436,7 @@ static struct stream_encoder *dce80_stream_encoder_create(
>         struct dc_context *ctx)
>  {
>         struct dce110_stream_encoder *enc110 =
> -               dm_alloc(sizeof(struct dce110_stream_encoder));
> +               kzalloc(sizeof(struct dce110_stream_encoder), GFP_ATOMIC);
>
>         if (!enc110)
>                 return NULL;
> @@ -447,7 +447,7 @@ static struct stream_encoder *dce80_stream_encoder_create(
>                 return &enc110->base;
>
>         BREAK_TO_DEBUGGER();
> -       dm_free(enc110);
> +       kfree(enc110);
>         return NULL;
>  }
>
> @@ -469,7 +469,7 @@ static const struct dce_hwseq_mask hwseq_mask = {
>  static struct dce_hwseq *dce80_hwseq_create(
>         struct dc_context *ctx)
>  {
> -       struct dce_hwseq *hws = dm_alloc(sizeof(struct dce_hwseq));
> +       struct dce_hwseq *hws = kzalloc(sizeof(struct dce_hwseq), GFP_ATOMIC);
>
>         if (hws) {
>                 hws->ctx = ctx;
> @@ -514,7 +514,8 @@ static struct mem_input *dce80_mem_input_create(
>         struct dc_context *ctx,
>         uint32_t inst)
>  {
> -       struct dce_mem_input *dce_mi = dm_alloc(sizeof(struct dce_mem_input));
> +       struct dce_mem_input *dce_mi = kzalloc(sizeof(struct dce_mem_input),
> +                                              GFP_ATOMIC);
>
>         if (!dce_mi) {
>                 BREAK_TO_DEBUGGER();
> @@ -528,7 +529,7 @@ static struct mem_input *dce80_mem_input_create(
>
>  static void dce80_transform_destroy(struct transform **xfm)
>  {
> -       dm_free(TO_DCE_TRANSFORM(*xfm));
> +       kfree(TO_DCE_TRANSFORM(*xfm));
>         *xfm = NULL;
>  }
>
> @@ -537,7 +538,7 @@ static struct transform *dce80_transform_create(
>         uint32_t inst)
>  {
>         struct dce_transform *transform =
> -               dm_alloc(sizeof(struct dce_transform));
> +               kzalloc(sizeof(struct dce_transform), GFP_ATOMIC);
>
>         if (!transform)
>                 return NULL;
> @@ -549,7 +550,7 @@ static struct transform *dce80_transform_create(
>         }
>
>         BREAK_TO_DEBUGGER();
> -       dm_free(transform);
> +       kfree(transform);
>         return NULL;
>  }
>
> @@ -565,7 +566,7 @@ struct link_encoder *dce80_link_encoder_create(
>         const struct encoder_init_data *enc_init_data)
>  {
>         struct dce110_link_encoder *enc110 =
> -               dm_alloc(sizeof(struct dce110_link_encoder));
> +               kzalloc(sizeof(struct dce110_link_encoder), GFP_ATOMIC);
>
>         if (!enc110)
>                 return NULL;
> @@ -582,7 +583,7 @@ struct link_encoder *dce80_link_encoder_create(
>         }
>
>         BREAK_TO_DEBUGGER();
> -       dm_free(enc110);
> +       kfree(enc110);
>         return NULL;
>  }
>
> @@ -594,7 +595,7 @@ struct clock_source *dce80_clock_source_create(
>         bool dp_clk_src)
>  {
>         struct dce110_clk_src *clk_src =
> -               dm_alloc(sizeof(struct dce110_clk_src));
> +               kzalloc(sizeof(struct dce110_clk_src), GFP_ATOMIC);
>
>         if (!clk_src)
>                 return NULL;
> @@ -611,14 +612,14 @@ struct clock_source *dce80_clock_source_create(
>
>  void dce80_clock_source_destroy(struct clock_source **clk_src)
>  {
> -       dm_free(TO_DCE110_CLK_SRC(*clk_src));
> +       kfree(TO_DCE110_CLK_SRC(*clk_src));
>         *clk_src = NULL;
>  }
>
>  static struct input_pixel_processor *dce80_ipp_create(
>         struct dc_context *ctx, uint32_t inst)
>  {
> -       struct dce_ipp *ipp = dm_alloc(sizeof(struct dce_ipp));
> +       struct dce_ipp *ipp = kzalloc(sizeof(struct dce_ipp), GFP_ATOMIC);
>
>         if (!ipp) {
>                 BREAK_TO_DEBUGGER();
> @@ -645,19 +646,19 @@ static void destruct(struct dce110_resource_pool *pool)
>                         dce_ipp_destroy(&pool->base.ipps[i]);
>
>                 if (pool->base.mis[i] != NULL) {
> -                       dm_free(TO_DCE_MEM_INPUT(pool->base.mis[i]));
> +                       kfree(TO_DCE_MEM_INPUT(pool->base.mis[i]));
>                         pool->base.mis[i] = NULL;
>                 }
>
>                 if (pool->base.timing_generators[i] != NULL)    {
> -                       dm_free(DCE110TG_FROM_TG(pool->base.timing_generators[i]));
> +                       kfree(DCE110TG_FROM_TG(pool->base.timing_generators[i]));
>                         pool->base.timing_generators[i] = NULL;
>                 }
>         }
>
>         for (i = 0; i < pool->base.stream_enc_count; i++) {
>                 if (pool->base.stream_enc[i] != NULL)
> -                       dm_free(DCE110STRENC_FROM_STRENC(pool->base.stream_enc[i]));
> +                       kfree(DCE110STRENC_FROM_STRENC(pool->base.stream_enc[i]));
>         }
>
>         for (i = 0; i < pool->base.clk_src_count; i++) {
> @@ -781,7 +782,7 @@ static void dce80_destroy_resource_pool(struct resource_pool **pool)
>         struct dce110_resource_pool *dce110_pool = TO_DCE110_RES_POOL(*pool);
>
>         destruct(dce110_pool);
> -       dm_free(dce110_pool);
> +       kfree(dce110_pool);
>         *pool = NULL;
>  }
>
> @@ -948,7 +949,7 @@ struct resource_pool *dce80_create_resource_pool(
>         struct dc *dc)
>  {
>         struct dce110_resource_pool *pool =
> -               dm_alloc(sizeof(struct dce110_resource_pool));
> +               kzalloc(sizeof(struct dce110_resource_pool), GFP_ATOMIC);
>
>         if (!pool)
>                 return NULL;
> @@ -1113,7 +1114,7 @@ struct resource_pool *dce81_create_resource_pool(
>         struct dc *dc)
>  {
>         struct dce110_resource_pool *pool =
> -               dm_alloc(sizeof(struct dce110_resource_pool));
> +               kzalloc(sizeof(struct dce110_resource_pool), GFP_ATOMIC);
>
>         if (!pool)
>                 return NULL;
> @@ -1274,7 +1275,7 @@ struct resource_pool *dce83_create_resource_pool(
>         struct dc *dc)
>  {
>         struct dce110_resource_pool *pool =
> -               dm_alloc(sizeof(struct dce110_resource_pool));
> +               kzalloc(sizeof(struct dce110_resource_pool), GFP_ATOMIC);
>
>         if (!pool)
>                 return NULL;
> diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_ipp.c b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_ipp.c
> index 5e0e2464eab3..67bd6a738fe9 100644
> --- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_ipp.c
> +++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_ipp.c
> @@ -225,7 +225,7 @@ static void ippn10_cursor_set_position(
>
>  static void dcn10_ipp_destroy(struct input_pixel_processor **ipp)
>  {
> -       dm_free(TO_DCN10_IPP(*ipp));
> +       kfree(TO_DCN10_IPP(*ipp));
>         *ipp = NULL;
>  }
>
> diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_opp.c b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_opp.c
> index 8048782ac599..a136f70b7a3c 100644
> --- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_opp.c
> +++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_opp.c
> @@ -314,7 +314,7 @@ static void oppn10_set_stereo_polarity(
>
>  static void dcn10_opp_destroy(struct output_pixel_processor **opp)
>  {
> -       dm_free(TO_DCN10_OPP(*opp));
> +       kfree(TO_DCN10_OPP(*opp));
>         *opp = NULL;
>  }
>
> diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_resource.c b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_resource.c
> index 298eb44ad9bf..62ad8f91f14e 100644
> --- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_resource.c
> +++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_resource.c
> @@ -468,7 +468,7 @@ static const struct dc_debug debug_defaults_diags = {
>
>  static void dcn10_dpp_destroy(struct transform **xfm)
>  {
> -       dm_free(TO_DCN10_DPP(*xfm));
> +       kfree(TO_DCN10_DPP(*xfm));
>         *xfm = NULL;
>  }
>
> @@ -477,7 +477,7 @@ static struct transform *dcn10_dpp_create(
>         uint32_t inst)
>  {
>         struct dcn10_dpp *dpp =
> -               dm_alloc(sizeof(struct dcn10_dpp));
> +               kzalloc(sizeof(struct dcn10_dpp), GFP_ATOMIC);
>
>         if (!dpp)
>                 return NULL;
> @@ -487,7 +487,7 @@ static struct transform *dcn10_dpp_create(
>                 return &dpp->base;
>
>         BREAK_TO_DEBUGGER();
> -       dm_free(dpp);
> +       kfree(dpp);
>         return NULL;
>  }
>
> @@ -495,7 +495,7 @@ static struct input_pixel_processor *dcn10_ipp_create(
>         struct dc_context *ctx, uint32_t inst)
>  {
>         struct dcn10_ipp *ipp =
> -               dm_alloc(sizeof(struct dcn10_ipp));
> +               kzalloc(sizeof(struct dcn10_ipp), GFP_ATOMIC);
>
>         if (!ipp) {
>                 BREAK_TO_DEBUGGER();
> @@ -512,7 +512,7 @@ static struct output_pixel_processor *dcn10_opp_create(
>         struct dc_context *ctx, uint32_t inst)
>  {
>         struct dcn10_opp *opp =
> -               dm_alloc(sizeof(struct dcn10_opp));
> +               kzalloc(sizeof(struct dcn10_opp), GFP_ATOMIC);
>
>         if (!opp) {
>                 BREAK_TO_DEBUGGER();
> @@ -526,7 +526,8 @@ static struct output_pixel_processor *dcn10_opp_create(
>
>  static struct mpc *dcn10_mpc_create(struct dc_context *ctx)
>  {
> -       struct dcn10_mpc *mpc10 = dm_alloc(sizeof(struct dcn10_mpc));
> +       struct dcn10_mpc *mpc10 = kzalloc(sizeof(struct dcn10_mpc),
> +                                         GFP_ATOMIC);
>
>         if (!mpc10)
>                 return NULL;
> @@ -545,7 +546,7 @@ static struct timing_generator *dcn10_timing_generator_create(
>                 uint32_t instance)
>  {
>         struct dcn10_timing_generator *tgn10 =
> -               dm_alloc(sizeof(struct dcn10_timing_generator));
> +               kzalloc(sizeof(struct dcn10_timing_generator), GFP_ATOMIC);
>
>         if (!tgn10)
>                 return NULL;
> @@ -577,7 +578,7 @@ struct link_encoder *dcn10_link_encoder_create(
>         const struct encoder_init_data *enc_init_data)
>  {
>         struct dce110_link_encoder *enc110 =
> -               dm_alloc(sizeof(struct dce110_link_encoder));
> +               kzalloc(sizeof(struct dce110_link_encoder), GFP_ATOMIC);
>
>         if (!enc110)
>                 return NULL;
> @@ -594,7 +595,7 @@ struct link_encoder *dcn10_link_encoder_create(
>         }
>
>         BREAK_TO_DEBUGGER();
> -       dm_free(enc110);
> +       kfree(enc110);
>         return NULL;
>  }
>
> @@ -606,7 +607,7 @@ struct clock_source *dcn10_clock_source_create(
>         bool dp_clk_src)
>  {
>         struct dce110_clk_src *clk_src =
> -               dm_alloc(sizeof(struct dce110_clk_src));
> +               kzalloc(sizeof(struct dce110_clk_src), GFP_ATOMIC);
>
>         if (!clk_src)
>                 return NULL;
> @@ -641,7 +642,7 @@ static struct stream_encoder *dcn10_stream_encoder_create(
>         struct dc_context *ctx)
>  {
>         struct dce110_stream_encoder *enc110 =
> -               dm_alloc(sizeof(struct dce110_stream_encoder));
> +               kzalloc(sizeof(struct dce110_stream_encoder), GFP_ATOMIC);
>
>         if (!enc110)
>                 return NULL;
> @@ -652,7 +653,7 @@ static struct stream_encoder *dcn10_stream_encoder_create(
>                 return &enc110->base;
>
>         BREAK_TO_DEBUGGER();
> -       dm_free(enc110);
> +       kfree(enc110);
>         return NULL;
>  }
>
> @@ -671,7 +672,7 @@ static const struct dce_hwseq_mask hwseq_mask = {
>  static struct dce_hwseq *dcn10_hwseq_create(
>         struct dc_context *ctx)
>  {
> -       struct dce_hwseq *hws = dm_alloc(sizeof(struct dce_hwseq));
> +       struct dce_hwseq *hws = kzalloc(sizeof(struct dce_hwseq), GFP_ATOMIC);
>
>         if (hws) {
>                 hws->ctx = ctx;
> @@ -698,13 +699,13 @@ static const struct resource_create_funcs res_create_maximus_funcs = {
>
>  void dcn10_clock_source_destroy(struct clock_source **clk_src)
>  {
> -       dm_free(TO_DCE110_CLK_SRC(*clk_src));
> +       kfree(TO_DCE110_CLK_SRC(*clk_src));
>         *clk_src = NULL;
>  }
>
>  static struct pp_smu_funcs_rv *dcn10_pp_smu_create(struct dc_context *ctx)
>  {
> -       struct pp_smu_funcs_rv *pp_smu = dm_alloc(sizeof(*pp_smu));
> +       struct pp_smu_funcs_rv *pp_smu = kzalloc(sizeof(*pp_smu), GFP_ATOMIC);
>
>         if (!pp_smu)
>                 return pp_smu;
> @@ -722,13 +723,13 @@ static void destruct(struct dcn10_resource_pool *pool)
>                         /* TODO: free dcn version of stream encoder once implemented
>                          * rather than using virtual stream encoder
>                          */
> -                       dm_free(pool->base.stream_enc[i]);
> +                       kfree(pool->base.stream_enc[i]);
>                         pool->base.stream_enc[i] = NULL;
>                 }
>         }
>
>         if (pool->base.mpc != NULL) {
> -               dm_free(TO_DCN10_MPC(pool->base.mpc));
> +               kfree(TO_DCN10_MPC(pool->base.mpc));
>                 pool->base.mpc = NULL;
>         }
>         for (i = 0; i < pool->base.pipe_count; i++) {
> @@ -742,7 +743,7 @@ static void destruct(struct dcn10_resource_pool *pool)
>                         pool->base.ipps[i]->funcs->ipp_destroy(&pool->base.ipps[i]);
>
>                 if (pool->base.mis[i] != NULL) {
> -                       dm_free(TO_DCN10_MEM_INPUT(pool->base.mis[i]));
> +                       kfree(TO_DCN10_MEM_INPUT(pool->base.mis[i]));
>                         pool->base.mis[i] = NULL;
>                 }
>
> @@ -751,14 +752,14 @@ static void destruct(struct dcn10_resource_pool *pool)
>                 }
>
>                 if (pool->base.timing_generators[i] != NULL)    {
> -                       dm_free(DCN10TG_FROM_TG(pool->base.timing_generators[i]));
> +                       kfree(DCN10TG_FROM_TG(pool->base.timing_generators[i]));
>                         pool->base.timing_generators[i] = NULL;
>                 }
>         }
>
>         for (i = 0; i < pool->base.stream_enc_count; i++) {
>                 if (pool->base.stream_enc[i] != NULL)
> -               dm_free(DCE110STRENC_FROM_STRENC(pool->base.stream_enc[i]));
> +               kfree(DCE110STRENC_FROM_STRENC(pool->base.stream_enc[i]));
>         }
>
>         for (i = 0; i < pool->base.audio_count; i++) {
> @@ -767,7 +768,7 @@ static void destruct(struct dcn10_resource_pool *pool)
>         }
>
>         for (i = 0; i < pool->base.res_cap->num_dwb; i++) {
> -               dm_free(pool->base.dwbc[i]);
> +               kfree(pool->base.dwbc[i]);
>                 pool->base.dwbc[i] = NULL;
>         }
>
> @@ -792,7 +793,7 @@ static void destruct(struct dcn10_resource_pool *pool)
>         if (pool->base.display_clock != NULL)
>                 dce_disp_clk_destroy(&pool->base.display_clock);
>
> -       dm_free(pool->base.pp_smu);
> +       kfree(pool->base.pp_smu);
>  }
>
>  static struct mem_input *dcn10_mem_input_create(
> @@ -800,7 +801,7 @@ static struct mem_input *dcn10_mem_input_create(
>         uint32_t inst)
>  {
>         struct dcn10_mem_input *mem_inputn10 =
> -               dm_alloc(sizeof(struct dcn10_mem_input));
> +               kzalloc(sizeof(struct dcn10_mem_input), GFP_ATOMIC);
>
>         if (!mem_inputn10)
>                 return NULL;
> @@ -810,7 +811,7 @@ static struct mem_input *dcn10_mem_input_create(
>                 return &mem_inputn10->base;
>
>         BREAK_TO_DEBUGGER();
> -       dm_free(mem_inputn10);
> +       kfree(mem_inputn10);
>         return NULL;
>  }
>
> @@ -1207,7 +1208,7 @@ static void dcn10_destroy_resource_pool(struct resource_pool **pool)
>         struct dcn10_resource_pool *dcn10_pool = TO_DCN10_RES_POOL(*pool);
>
>         destruct(dcn10_pool);
> -       dm_free(dcn10_pool);
> +       kfree(dcn10_pool);
>         *pool = NULL;
>  }
>
> @@ -1239,7 +1240,8 @@ static bool dcn10_dwbc_create(struct dc_context *ctx, struct resource_pool *pool
>         uint32_t dwb_count = pool->res_cap->num_dwb;
>
>         for (i = 0; i < dwb_count; i++) {
> -               struct dcn10_dwbc *dwbc10 = dm_alloc(sizeof(struct dcn10_dwbc));
> +               struct dcn10_dwbc *dwbc10 = kzalloc(sizeof(struct dcn10_dwbc),
> +                                                   GFP_ATOMIC);
>
>                 if (!dwbc10) {
>                         dm_error("DC: failed to create dwbc10!\n");
> @@ -1517,7 +1519,7 @@ struct resource_pool *dcn10_create_resource_pool(
>                 struct dc *dc)
>  {
>         struct dcn10_resource_pool *pool =
> -               dm_alloc(sizeof(struct dcn10_resource_pool));
> +               kzalloc(sizeof(struct dcn10_resource_pool), GFP_ATOMIC);
>
>         if (!pool)
>                 return NULL;
> diff --git a/drivers/gpu/drm/amd/display/dc/gpio/gpio_base.c b/drivers/gpu/drm/amd/display/dc/gpio/gpio_base.c
> index d42eb3de2ea4..3da5e2e965e6 100644
> --- a/drivers/gpu/drm/amd/display/dc/gpio/gpio_base.c
> +++ b/drivers/gpu/drm/amd/display/dc/gpio/gpio_base.c
> @@ -239,7 +239,7 @@ struct gpio *dal_gpio_create(
>         uint32_t en,
>         enum gpio_pin_output_state output_state)
>  {
> -       struct gpio *gpio = dm_alloc(sizeof(struct gpio));
> +       struct gpio *gpio = kzalloc(sizeof(struct gpio), GFP_ATOMIC);
>
>         if (!gpio) {
>                 ASSERT_CRITICAL(false);
> @@ -266,7 +266,7 @@ void dal_gpio_destroy(
>
>         dal_gpio_close(*gpio);
>
> -       dm_free(*gpio);
> +       kfree(*gpio);
>
>         *gpio = NULL;
>  }
> diff --git a/drivers/gpu/drm/amd/display/dc/gpio/gpio_service.c b/drivers/gpu/drm/amd/display/dc/gpio/gpio_service.c
> index eeb1cd0f75a6..1da22f779249 100644
> --- a/drivers/gpu/drm/amd/display/dc/gpio/gpio_service.c
> +++ b/drivers/gpu/drm/amd/display/dc/gpio/gpio_service.c
> @@ -59,7 +59,7 @@ struct gpio_service *dal_gpio_service_create(
>
>         uint32_t index_of_id;
>
> -       service = dm_alloc(sizeof(struct gpio_service));
> +       service = kzalloc(sizeof(struct gpio_service), GFP_ATOMIC);
>
>         if (!service) {
>                 BREAK_TO_DEBUGGER();
> @@ -98,7 +98,8 @@ struct gpio_service *dal_gpio_service_create(
>                         if (number_of_bits) {
>                                 uint32_t index_of_uint = 0;
>
> -                               slot = dm_alloc(number_of_uints * sizeof(uint32_t));
> +                               slot = kzalloc(number_of_uints * sizeof(uint32_t),
> +                                              GFP_ATOMIC);
>
>                                 if (!slot) {
>                                         BREAK_TO_DEBUGGER();
> @@ -130,11 +131,11 @@ struct gpio_service *dal_gpio_service_create(
>                 slot = service->busyness[index_of_id];
>
>                 if (slot)
> -                       dm_free(slot);
> +                       kfree(slot);
>         };
>
>  failure_1:
> -       dm_free(service);
> +       kfree(service);
>
>         return NULL;
>  }
> @@ -171,13 +172,13 @@ void dal_gpio_service_destroy(
>                         uint32_t *slot = (*ptr)->busyness[index_of_id];
>
>                         if (slot)
> -                               dm_free(slot);
> +                               kfree(slot);
>
>                         ++index_of_id;
>                 } while (index_of_id < GPIO_ID_COUNT);
>         }
>
> -       dm_free(*ptr);
> +       kfree(*ptr);
>
>         *ptr = NULL;
>  }
> @@ -399,7 +400,7 @@ void dal_gpio_destroy_irq(
>
>         dal_gpio_close(*irq);
>         dal_gpio_destroy(irq);
> -       dm_free(*irq);
> +       kfree(*irq);
>
>         *irq = NULL;
>  }
> @@ -417,7 +418,7 @@ struct ddc *dal_gpio_create_ddc(
>         if (!service->translate.funcs->offset_to_id(offset, mask, &id, &en))
>                 return NULL;
>
> -       ddc = dm_alloc(sizeof(struct ddc));
> +       ddc = kzalloc(sizeof(struct ddc), GFP_ATOMIC);
>
>         if (!ddc) {
>                 BREAK_TO_DEBUGGER();
> @@ -450,7 +451,7 @@ struct ddc *dal_gpio_create_ddc(
>         dal_gpio_destroy(&ddc->pin_data);
>
>  failure_1:
> -       dm_free(ddc);
> +       kfree(ddc);
>
>         return NULL;
>  }
> @@ -466,7 +467,7 @@ void dal_gpio_destroy_ddc(
>         dal_ddc_close(*ddc);
>         dal_gpio_destroy(&(*ddc)->pin_data);
>         dal_gpio_destroy(&(*ddc)->pin_clock);
> -       dm_free(*ddc);
> +       kfree(*ddc);
>
>         *ddc = NULL;
>  }
> diff --git a/drivers/gpu/drm/amd/display/dc/gpio/hw_ddc.c b/drivers/gpu/drm/amd/display/dc/gpio/hw_ddc.c
> index 47e0f8f24a86..2a0794d355c3 100644
> --- a/drivers/gpu/drm/amd/display/dc/gpio/hw_ddc.c
> +++ b/drivers/gpu/drm/amd/display/dc/gpio/hw_ddc.c
> @@ -55,7 +55,7 @@ static void destroy(
>
>         destruct(pin);
>
> -       dm_free(pin);
> +       kfree(pin);
>
>         *ptr = NULL;
>  }
> @@ -225,7 +225,7 @@ struct hw_gpio_pin *dal_hw_ddc_create(
>         enum gpio_id id,
>         uint32_t en)
>  {
> -       struct hw_ddc *pin = dm_alloc(sizeof(struct hw_ddc));
> +       struct hw_ddc *pin = kzalloc(sizeof(struct hw_ddc), GFP_ATOMIC);
>
>         if (!pin) {
>                 ASSERT_CRITICAL(false);
> @@ -237,7 +237,7 @@ struct hw_gpio_pin *dal_hw_ddc_create(
>
>         ASSERT_CRITICAL(false);
>
> -       dm_free(pin);
> +       kfree(pin);
>
>         return NULL;
>  }
> diff --git a/drivers/gpu/drm/amd/display/dc/gpio/hw_factory.c b/drivers/gpu/drm/amd/display/dc/gpio/hw_factory.c
> index f7d049c0e62a..87b580fa4bc9 100644
> --- a/drivers/gpu/drm/amd/display/dc/gpio/hw_factory.c
> +++ b/drivers/gpu/drm/amd/display/dc/gpio/hw_factory.c
> @@ -101,7 +101,7 @@ void dal_hw_factory_destroy(
>                 return;
>         }
>
> -       dm_free(*factory);
> +       kfree(*factory);
>
>         *factory = NULL;
>  }
> diff --git a/drivers/gpu/drm/amd/display/dc/gpio/hw_hpd.c b/drivers/gpu/drm/amd/display/dc/gpio/hw_hpd.c
> index 9634e8841d90..fa5f13eda452 100644
> --- a/drivers/gpu/drm/amd/display/dc/gpio/hw_hpd.c
> +++ b/drivers/gpu/drm/amd/display/dc/gpio/hw_hpd.c
> @@ -72,7 +72,7 @@ static void destroy(
>
>         destruct(hpd);
>
> -       dm_free(hpd);
> +       kfree(hpd);
>
>         *ptr = NULL;
>  }
> @@ -157,7 +157,7 @@ struct hw_gpio_pin *dal_hw_hpd_create(
>         enum gpio_id id,
>         uint32_t en)
>  {
> -       struct hw_hpd *hpd = dm_alloc(sizeof(struct hw_hpd));
> +       struct hw_hpd *hpd = kzalloc(sizeof(struct hw_hpd), GFP_ATOMIC);
>
>         if (!hpd) {
>                 ASSERT_CRITICAL(false);
> @@ -169,7 +169,7 @@ struct hw_gpio_pin *dal_hw_hpd_create(
>
>         ASSERT_CRITICAL(false);
>
> -       dm_free(hpd);
> +       kfree(hpd);
>
>         return NULL;
>  }
> diff --git a/drivers/gpu/drm/amd/display/dc/i2caux/dce100/i2caux_dce100.c b/drivers/gpu/drm/amd/display/dc/i2caux/dce100/i2caux_dce100.c
> index 0712cafb4c42..7775011853fb 100644
> --- a/drivers/gpu/drm/amd/display/dc/i2caux/dce100/i2caux_dce100.c
> +++ b/drivers/gpu/drm/amd/display/dc/i2caux/dce100/i2caux_dce100.c
> @@ -88,7 +88,7 @@ struct i2caux *dal_i2caux_dce100_create(
>         struct dc_context *ctx)
>  {
>         struct i2caux_dce110 *i2caux_dce110 =
> -               dm_alloc(sizeof(struct i2caux_dce110));
> +               kzalloc(sizeof(struct i2caux_dce110), GFP_ATOMIC);
>
>         if (!i2caux_dce110) {
>                 ASSERT_CRITICAL(false);
> @@ -106,7 +106,7 @@ struct i2caux *dal_i2caux_dce100_create(
>
>         ASSERT_CRITICAL(false);
>
> -       dm_free(i2caux_dce110);
> +       kfree(i2caux_dce110);
>
>         return NULL;
>  }
> diff --git a/drivers/gpu/drm/amd/display/dc/i2caux/dce110/aux_engine_dce110.c b/drivers/gpu/drm/amd/display/dc/i2caux/dce110/aux_engine_dce110.c
> index d3eaf8977a60..6607d580bf4d 100644
> --- a/drivers/gpu/drm/amd/display/dc/i2caux/dce110/aux_engine_dce110.c
> +++ b/drivers/gpu/drm/amd/display/dc/i2caux/dce110/aux_engine_dce110.c
> @@ -87,7 +87,7 @@ static void destroy(
>
>         destruct(engine);
>
> -       dm_free(engine);
> +       kfree(engine);
>
>         *aux_engine = NULL;
>  }
> @@ -464,7 +464,7 @@ struct aux_engine *dal_aux_engine_dce110_create(
>                 return NULL;
>         }
>
> -       engine = dm_alloc(sizeof(*engine));
> +       engine = kzalloc(sizeof(*engine), GFP_ATOMIC);
>
>         if (!engine) {
>                 ASSERT_CRITICAL(false);
> @@ -476,7 +476,7 @@ struct aux_engine *dal_aux_engine_dce110_create(
>
>         ASSERT_CRITICAL(false);
>
> -       dm_free(engine);
> +       kfree(engine);
>
>         return NULL;
>  }
> diff --git a/drivers/gpu/drm/amd/display/dc/i2caux/dce110/i2c_hw_engine_dce110.c b/drivers/gpu/drm/amd/display/dc/i2caux/dce110/i2c_hw_engine_dce110.c
> index 80d06ad78e07..e0b6e1f32086 100644
> --- a/drivers/gpu/drm/amd/display/dc/i2caux/dce110/i2c_hw_engine_dce110.c
> +++ b/drivers/gpu/drm/amd/display/dc/i2caux/dce110/i2c_hw_engine_dce110.c
> @@ -469,7 +469,7 @@ static void destroy(
>
>         dal_i2c_hw_engine_destruct(&engine_dce110->base);
>
> -       dm_free(engine_dce110);
> +       kfree(engine_dce110);
>
>         *i2c_engine = NULL;
>  }
> @@ -559,7 +559,8 @@ struct i2c_engine *dal_i2c_hw_engine_dce110_create(
>                 return NULL;
>         }
>
> -       engine_dce10 = dm_alloc(sizeof(struct i2c_hw_engine_dce110));
> +       engine_dce10 = kzalloc(sizeof(struct i2c_hw_engine_dce110),
> +                              GFP_ATOMIC);
>
>         if (!engine_dce10) {
>                 ASSERT_CRITICAL(false);
> @@ -571,7 +572,7 @@ struct i2c_engine *dal_i2c_hw_engine_dce110_create(
>
>         ASSERT_CRITICAL(false);
>
> -       dm_free(engine_dce10);
> +       kfree(engine_dce10);
>
>         return NULL;
>  }
> diff --git a/drivers/gpu/drm/amd/display/dc/i2caux/dce110/i2c_sw_engine_dce110.c b/drivers/gpu/drm/amd/display/dc/i2caux/dce110/i2c_sw_engine_dce110.c
> index 996813d9165f..0ec890a46a69 100644
> --- a/drivers/gpu/drm/amd/display/dc/i2caux/dce110/i2c_sw_engine_dce110.c
> +++ b/drivers/gpu/drm/amd/display/dc/i2caux/dce110/i2c_sw_engine_dce110.c
> @@ -88,7 +88,7 @@ static void destroy(
>
>         destruct(sw_engine);
>
> -       dm_free(sw_engine);
> +       kfree(sw_engine);
>
>         *engine = NULL;
>  }
> @@ -153,7 +153,8 @@ struct i2c_engine *dal_i2c_sw_engine_dce110_create(
>                 return NULL;
>         }
>
> -       engine_dce110 = dm_alloc(sizeof(struct i2c_sw_engine_dce110));
> +       engine_dce110 = kzalloc(sizeof(struct i2c_sw_engine_dce110),
> +                               GFP_ATOMIC);
>
>         if (!engine_dce110) {
>                 ASSERT_CRITICAL(false);
> @@ -165,7 +166,7 @@ struct i2c_engine *dal_i2c_sw_engine_dce110_create(
>
>         ASSERT_CRITICAL(false);
>
> -       dm_free(engine_dce110);
> +       kfree(engine_dce110);
>
>         return NULL;
>  }
> diff --git a/drivers/gpu/drm/amd/display/dc/i2caux/dce110/i2caux_dce110.c b/drivers/gpu/drm/amd/display/dc/i2caux/dce110/i2caux_dce110.c
> index 1c00ed0010d9..345684758ce1 100644
> --- a/drivers/gpu/drm/amd/display/dc/i2caux/dce110/i2caux_dce110.c
> +++ b/drivers/gpu/drm/amd/display/dc/i2caux/dce110/i2caux_dce110.c
> @@ -68,7 +68,7 @@ static void destroy(
>
>         destruct(i2caux_dce110);
>
> -       dm_free(i2caux_dce110);
> +       kfree(i2caux_dce110);
>
>         *i2c_engine = NULL;
>  }
> @@ -299,7 +299,7 @@ struct i2caux *dal_i2caux_dce110_create(
>         struct dc_context *ctx)
>  {
>         struct i2caux_dce110 *i2caux_dce110 =
> -               dm_alloc(sizeof(struct i2caux_dce110));
> +               kzalloc(sizeof(struct i2caux_dce110), GFP_ATOMIC);
>
>         if (!i2caux_dce110) {
>                 ASSERT_CRITICAL(false);
> @@ -317,7 +317,7 @@ struct i2caux *dal_i2caux_dce110_create(
>
>         ASSERT_CRITICAL(false);
>
> -       dm_free(i2caux_dce110);
> +       kfree(i2caux_dce110);
>
>         return NULL;
>  }
> diff --git a/drivers/gpu/drm/amd/display/dc/i2caux/dce112/i2caux_dce112.c b/drivers/gpu/drm/amd/display/dc/i2caux/dce112/i2caux_dce112.c
> index d74f3f15d600..014ae24c5ba6 100644
> --- a/drivers/gpu/drm/amd/display/dc/i2caux/dce112/i2caux_dce112.c
> +++ b/drivers/gpu/drm/amd/display/dc/i2caux/dce112/i2caux_dce112.c
> @@ -122,7 +122,7 @@ struct i2caux *dal_i2caux_dce112_create(
>         struct dc_context *ctx)
>  {
>         struct i2caux_dce110 *i2caux_dce110 =
> -               dm_alloc(sizeof(struct i2caux_dce110));
> +               kzalloc(sizeof(struct i2caux_dce110), GFP_ATOMIC);
>
>         if (!i2caux_dce110) {
>                 ASSERT_CRITICAL(false);
> @@ -134,7 +134,7 @@ struct i2caux *dal_i2caux_dce112_create(
>
>         ASSERT_CRITICAL(false);
>
> -       dm_free(i2caux_dce110);
> +       kfree(i2caux_dce110);
>
>         return NULL;
>  }
> diff --git a/drivers/gpu/drm/amd/display/dc/i2caux/dce120/i2caux_dce120.c b/drivers/gpu/drm/amd/display/dc/i2caux/dce120/i2caux_dce120.c
> index 91198295f1a4..344f26f62d42 100644
> --- a/drivers/gpu/drm/amd/display/dc/i2caux/dce120/i2caux_dce120.c
> +++ b/drivers/gpu/drm/amd/display/dc/i2caux/dce120/i2caux_dce120.c
> @@ -101,7 +101,7 @@ struct i2caux *dal_i2caux_dce120_create(
>         struct dc_context *ctx)
>  {
>         struct i2caux_dce110 *i2caux_dce110 =
> -               dm_alloc(sizeof(struct i2caux_dce110));
> +               kzalloc(sizeof(struct i2caux_dce110), GFP_ATOMIC);
>
>         if (!i2caux_dce110) {
>                 ASSERT_CRITICAL(false);
> @@ -119,7 +119,7 @@ struct i2caux *dal_i2caux_dce120_create(
>
>         ASSERT_CRITICAL(false);
>
> -       dm_free(i2caux_dce110);
> +       kfree(i2caux_dce110);
>
>         return NULL;
>  }
> diff --git a/drivers/gpu/drm/amd/display/dc/i2caux/dce80/i2c_hw_engine_dce80.c b/drivers/gpu/drm/amd/display/dc/i2caux/dce80/i2c_hw_engine_dce80.c
> index 423c38ac880c..e8254354b8e1 100644
> --- a/drivers/gpu/drm/amd/display/dc/i2caux/dce80/i2c_hw_engine_dce80.c
> +++ b/drivers/gpu/drm/amd/display/dc/i2caux/dce80/i2c_hw_engine_dce80.c
> @@ -190,7 +190,7 @@ static void destroy(
>
>         destruct(engine);
>
> -       dm_free(engine);
> +       kfree(engine);
>
>         *i2c_engine = NULL;
>  }
> @@ -867,7 +867,7 @@ struct i2c_engine *dal_i2c_hw_engine_dce80_create(
>                 return NULL;
>         }
>
> -       engine = dm_alloc(sizeof(struct i2c_hw_engine_dce80));
> +       engine = kzalloc(sizeof(struct i2c_hw_engine_dce80), GFP_ATOMIC);
>
>         if (!engine) {
>                 BREAK_TO_DEBUGGER();
> @@ -879,7 +879,7 @@ struct i2c_engine *dal_i2c_hw_engine_dce80_create(
>
>         BREAK_TO_DEBUGGER();
>
> -       dm_free(engine);
> +       kfree(engine);
>
>         return NULL;
>  }
> diff --git a/drivers/gpu/drm/amd/display/dc/i2caux/dce80/i2c_sw_engine_dce80.c b/drivers/gpu/drm/amd/display/dc/i2caux/dce80/i2c_sw_engine_dce80.c
> index 804a3266c578..da8cd82555d1 100644
> --- a/drivers/gpu/drm/amd/display/dc/i2caux/dce80/i2c_sw_engine_dce80.c
> +++ b/drivers/gpu/drm/amd/display/dc/i2caux/dce80/i2c_sw_engine_dce80.c
> @@ -103,7 +103,7 @@ static void destroy(
>
>         destruct(sw_engine);
>
> -       dm_free(sw_engine);
> +       kfree(sw_engine);
>
>         *engine = NULL;
>  }
> @@ -165,7 +165,7 @@ struct i2c_engine *dal_i2c_sw_engine_dce80_create(
>                 return NULL;
>         }
>
> -       engine = dm_alloc(sizeof(struct i2c_sw_engine_dce80));
> +       engine = kzalloc(sizeof(struct i2c_sw_engine_dce80), GFP_ATOMIC);
>
>         if (!engine) {
>                 BREAK_TO_DEBUGGER();
> @@ -177,7 +177,7 @@ struct i2c_engine *dal_i2c_sw_engine_dce80_create(
>
>         BREAK_TO_DEBUGGER();
>
> -       dm_free(engine);
> +       kfree(engine);
>
>         return NULL;
>  }
> diff --git a/drivers/gpu/drm/amd/display/dc/i2caux/dce80/i2caux_dce80.c b/drivers/gpu/drm/amd/display/dc/i2caux/dce80/i2caux_dce80.c
> index 5e71450c44e0..c4dcd2d4e8cf 100644
> --- a/drivers/gpu/drm/amd/display/dc/i2caux/dce80/i2caux_dce80.c
> +++ b/drivers/gpu/drm/amd/display/dc/i2caux/dce80/i2caux_dce80.c
> @@ -101,7 +101,7 @@ static void destroy(
>
>         destruct(i2caux_dce80);
>
> -       dm_free(i2caux_dce80);
> +       kfree(i2caux_dce80);
>
>         *i2c_engine = NULL;
>  }
> @@ -277,7 +277,7 @@ struct i2caux *dal_i2caux_dce80_create(
>         struct dc_context *ctx)
>  {
>         struct i2caux_dce80 *i2caux_dce80 =
> -               dm_alloc(sizeof(struct i2caux_dce80));
> +               kzalloc(sizeof(struct i2caux_dce80), GFP_ATOMIC);
>
>         if (!i2caux_dce80) {
>                 BREAK_TO_DEBUGGER();
> @@ -289,7 +289,7 @@ struct i2caux *dal_i2caux_dce80_create(
>
>         BREAK_TO_DEBUGGER();
>
> -       dm_free(i2caux_dce80);
> +       kfree(i2caux_dce80);
>
>         return NULL;
>  }
> diff --git a/drivers/gpu/drm/amd/display/dc/i2caux/dcn10/i2caux_dcn10.c b/drivers/gpu/drm/amd/display/dc/i2caux/dcn10/i2caux_dcn10.c
> index 9f17d2e4376b..8ba13a84fbda 100644
> --- a/drivers/gpu/drm/amd/display/dc/i2caux/dcn10/i2caux_dcn10.c
> +++ b/drivers/gpu/drm/amd/display/dc/i2caux/dcn10/i2caux_dcn10.c
> @@ -101,7 +101,7 @@ struct i2caux *dal_i2caux_dcn10_create(
>         struct dc_context *ctx)
>  {
>         struct i2caux_dce110 *i2caux_dce110 =
> -               dm_alloc(sizeof(struct i2caux_dce110));
> +               kzalloc(sizeof(struct i2caux_dce110), GFP_ATOMIC);
>
>         if (!i2caux_dce110) {
>                 ASSERT_CRITICAL(false);
> @@ -119,7 +119,7 @@ struct i2caux *dal_i2caux_dcn10_create(
>
>         ASSERT_CRITICAL(false);
>
> -       dm_free(i2caux_dce110);
> +       kfree(i2caux_dce110);
>
>         return NULL;
>  }
> diff --git a/drivers/gpu/drm/amd/display/dc/i2caux/diagnostics/i2caux_diag.c b/drivers/gpu/drm/amd/display/dc/i2caux/diagnostics/i2caux_diag.c
> index 029bf735036c..39697e8d0fc9 100644
> --- a/drivers/gpu/drm/amd/display/dc/i2caux/diagnostics/i2caux_diag.c
> +++ b/drivers/gpu/drm/amd/display/dc/i2caux/diagnostics/i2caux_diag.c
> @@ -59,7 +59,7 @@ static void destroy(
>  {
>         destruct(*i2c_engine);
>
> -       dm_free(*i2c_engine);
> +       kfree(*i2c_engine);
>
>         *i2c_engine = NULL;
>  }
> @@ -90,7 +90,8 @@ static bool construct(
>  struct i2caux *dal_i2caux_diag_fpga_create(
>         struct dc_context *ctx)
>  {
> -       struct i2caux *i2caux = dm_alloc(sizeof(struct i2caux));
> +       struct i2caux *i2caux = kzalloc(sizeof(struct i2caux),
> +                                              GFP_ATOMIC);
>
>         if (!i2caux) {
>                 ASSERT_CRITICAL(false);
> @@ -102,7 +103,7 @@ struct i2caux *dal_i2caux_diag_fpga_create(
>
>         ASSERT_CRITICAL(false);
>
> -       dm_free(i2caux);
> +       kfree(i2caux);
>
>         return NULL;
>  }
> diff --git a/drivers/gpu/drm/amd/display/dc/i2caux/i2c_sw_engine.c b/drivers/gpu/drm/amd/display/dc/i2caux/i2c_sw_engine.c
> index 95bc4457d44b..6aeeb5eb8c39 100644
> --- a/drivers/gpu/drm/amd/display/dc/i2caux/i2c_sw_engine.c
> +++ b/drivers/gpu/drm/amd/display/dc/i2caux/i2c_sw_engine.c
> @@ -541,7 +541,7 @@ static void destroy(
>  {
>         dal_i2c_sw_engine_destruct(FROM_I2C_ENGINE(*ptr));
>
> -       dm_free(*ptr);
> +       kfree(*ptr);
>         *ptr = NULL;
>  }
>
> @@ -592,7 +592,7 @@ struct i2c_engine *dal_i2c_sw_engine_create(
>                 return NULL;
>         }
>
> -       engine = dm_alloc(sizeof(struct i2c_sw_engine));
> +       engine = kzalloc(sizeof(struct i2c_sw_engine), GFP_ATOMIC);
>
>         if (!engine) {
>                 BREAK_TO_DEBUGGER();
> @@ -604,7 +604,7 @@ struct i2c_engine *dal_i2c_sw_engine_create(
>
>         BREAK_TO_DEBUGGER();
>
> -       dm_free(engine);
> +       kfree(engine);
>
>         return NULL;
>  }
> diff --git a/drivers/gpu/drm/amd/display/dc/irq/dce110/irq_service_dce110.c b/drivers/gpu/drm/amd/display/dc/irq/dce110/irq_service_dce110.c
> index 7cce28489dba..2312fa41344c 100644
> --- a/drivers/gpu/drm/amd/display/dc/irq/dce110/irq_service_dce110.c
> +++ b/drivers/gpu/drm/amd/display/dc/irq/dce110/irq_service_dce110.c
> @@ -422,7 +422,8 @@ bool construct(
>  struct irq_service *dal_irq_service_dce110_create(
>         struct irq_service_init_data *init_data)
>  {
> -       struct irq_service *irq_service = dm_alloc(sizeof(*irq_service));
> +       struct irq_service *irq_service = kzalloc(sizeof(*irq_service),
> +                                                 GFP_ATOMIC);
>
>         if (!irq_service)
>                 return NULL;
> @@ -430,6 +431,6 @@ struct irq_service *dal_irq_service_dce110_create(
>         if (construct(irq_service, init_data))
>                 return irq_service;
>
> -       dm_free(irq_service);
> +       kfree(irq_service);
>         return NULL;
>  }
> diff --git a/drivers/gpu/drm/amd/display/dc/irq/dce120/irq_service_dce120.c b/drivers/gpu/drm/amd/display/dc/irq/dce120/irq_service_dce120.c
> index 3871633ac635..49c07abb4a7c 100644
> --- a/drivers/gpu/drm/amd/display/dc/irq/dce120/irq_service_dce120.c
> +++ b/drivers/gpu/drm/amd/display/dc/irq/dce120/irq_service_dce120.c
> @@ -281,7 +281,8 @@ static bool construct(
>  struct irq_service *dal_irq_service_dce120_create(
>         struct irq_service_init_data *init_data)
>  {
> -       struct irq_service *irq_service = dm_alloc(sizeof(*irq_service));
> +       struct irq_service *irq_service = kzalloc(sizeof(*irq_service),
> +                                                 GFP_ATOMIC);
>
>         if (!irq_service)
>                 return NULL;
> @@ -289,6 +290,6 @@ struct irq_service *dal_irq_service_dce120_create(
>         if (construct(irq_service, init_data))
>                 return irq_service;
>
> -       dm_free(irq_service);
> +       kfree(irq_service);
>         return NULL;
>  }
> diff --git a/drivers/gpu/drm/amd/display/dc/irq/dce80/irq_service_dce80.c b/drivers/gpu/drm/amd/display/dc/irq/dce80/irq_service_dce80.c
> index f458ef8e4c57..7cee017bf827 100644
> --- a/drivers/gpu/drm/amd/display/dc/irq/dce80/irq_service_dce80.c
> +++ b/drivers/gpu/drm/amd/display/dc/irq/dce80/irq_service_dce80.c
> @@ -293,7 +293,8 @@ static bool construct(
>  struct irq_service *dal_irq_service_dce80_create(
>         struct irq_service_init_data *init_data)
>  {
> -       struct irq_service *irq_service = dm_alloc(sizeof(*irq_service));
> +       struct irq_service *irq_service = kzalloc(sizeof(*irq_service),
> +                                                 GFP_ATOMIC);
>
>         if (!irq_service)
>                 return NULL;
> @@ -301,7 +302,7 @@ struct irq_service *dal_irq_service_dce80_create(
>         if (construct(irq_service, init_data))
>                 return irq_service;
>
> -       dm_free(irq_service);
> +       kfree(irq_service);
>         return NULL;
>  }
>
> diff --git a/drivers/gpu/drm/amd/display/dc/irq/dcn10/irq_service_dcn10.c b/drivers/gpu/drm/amd/display/dc/irq/dcn10/irq_service_dcn10.c
> index be59f0a654e2..f1e11133b324 100644
> --- a/drivers/gpu/drm/amd/display/dc/irq/dcn10/irq_service_dcn10.c
> +++ b/drivers/gpu/drm/amd/display/dc/irq/dcn10/irq_service_dcn10.c
> @@ -348,7 +348,8 @@ static bool construct(
>  struct irq_service *dal_irq_service_dcn10_create(
>         struct irq_service_init_data *init_data)
>  {
> -       struct irq_service *irq_service = dm_alloc(sizeof(*irq_service));
> +       struct irq_service *irq_service = kzalloc(sizeof(*irq_service),
> +                                                 GFP_ATOMIC);
>
>         if (!irq_service)
>                 return NULL;
> @@ -356,6 +357,6 @@ struct irq_service *dal_irq_service_dcn10_create(
>         if (construct(irq_service, init_data))
>                 return irq_service;
>
> -       dm_free(irq_service);
> +       kfree(irq_service);
>         return NULL;
>  }
> diff --git a/drivers/gpu/drm/amd/display/dc/irq/irq_service.c b/drivers/gpu/drm/amd/display/dc/irq/irq_service.c
> index 0a1fae4ef83a..ce20622c7c89 100644
> --- a/drivers/gpu/drm/amd/display/dc/irq/irq_service.c
> +++ b/drivers/gpu/drm/amd/display/dc/irq/irq_service.c
> @@ -66,7 +66,7 @@ void dal_irq_service_destroy(struct irq_service **irq_service)
>                 return;
>         }
>
> -       dm_free(*irq_service);
> +       kfree(*irq_service);
>
>         *irq_service = NULL;
>  }
> diff --git a/drivers/gpu/drm/amd/display/dc/virtual/virtual_link_encoder.c b/drivers/gpu/drm/amd/display/dc/virtual/virtual_link_encoder.c
> index 57b5a3babdf8..db513abd735a 100644
> --- a/drivers/gpu/drm/amd/display/dc/virtual/virtual_link_encoder.c
> +++ b/drivers/gpu/drm/amd/display/dc/virtual/virtual_link_encoder.c
> @@ -87,7 +87,7 @@ static void virtual_link_encoder_connect_dig_be_to_fe(
>
>  static void virtual_link_encoder_destroy(struct link_encoder **enc)
>  {
> -       dm_free(*enc);
> +       kfree(*enc);
>         *enc = NULL;
>  }
>
> diff --git a/drivers/gpu/drm/amd/display/dc/virtual/virtual_stream_encoder.c b/drivers/gpu/drm/amd/display/dc/virtual/virtual_stream_encoder.c
> index 7fe6085e6e37..9cf2c3099307 100644
> --- a/drivers/gpu/drm/amd/display/dc/virtual/virtual_stream_encoder.c
> +++ b/drivers/gpu/drm/amd/display/dc/virtual/virtual_stream_encoder.c
> @@ -121,7 +121,7 @@ bool virtual_stream_encoder_construct(
>  struct stream_encoder *virtual_stream_encoder_create(
>         struct dc_context *ctx, struct dc_bios *bp)
>  {
> -       struct stream_encoder *enc = dm_alloc(sizeof(*enc));
> +       struct stream_encoder *enc = kzalloc(sizeof(*enc), GFP_ATOMIC);
>
>         if (!enc)
>                 return NULL;
> @@ -130,7 +130,7 @@ struct stream_encoder *virtual_stream_encoder_create(
>                 return enc;
>
>         BREAK_TO_DEBUGGER();
> -       dm_free(enc);
> +       kfree(enc);
>         return NULL;
>  }
>
> diff --git a/drivers/gpu/drm/amd/display/modules/freesync/freesync.c b/drivers/gpu/drm/amd/display/modules/freesync/freesync.c
> index 52350d0e68d0..98c9000acd50 100644
> --- a/drivers/gpu/drm/amd/display/modules/freesync/freesync.c
> +++ b/drivers/gpu/drm/amd/display/modules/freesync/freesync.c
> @@ -143,7 +143,7 @@ static bool check_dc_support(const struct dc *dc)
>  struct mod_freesync *mod_freesync_create(struct dc *dc)
>  {
>         struct core_freesync *core_freesync =
> -                       dm_alloc(sizeof(struct core_freesync));
> +                       kzalloc(sizeof(struct core_freesync), GFP_ATOMIC);
>
>
>         struct persistent_data_flag flag;
> @@ -153,8 +153,8 @@ struct mod_freesync *mod_freesync_create(struct dc *dc)
>         if (core_freesync == NULL)
>                 goto fail_alloc_context;
>
> -       core_freesync->map = dm_alloc(sizeof(struct freesync_entity) *
> -                       MOD_FREESYNC_MAX_CONCURRENT_STREAMS);
> +       core_freesync->map = kzalloc(sizeof(struct freesync_entity) * MOD_FREESYNC_MAX_CONCURRENT_STREAMS,
> +                                    GFP_ATOMIC);
>
>         if (core_freesync->map == NULL)
>                 goto fail_alloc_map;
> @@ -197,10 +197,10 @@ struct mod_freesync *mod_freesync_create(struct dc *dc)
>         return &core_freesync->public;
>
>  fail_construct:
> -       dm_free(core_freesync->map);
> +       kfree(core_freesync->map);
>
>  fail_alloc_map:
> -       dm_free(core_freesync);
> +       kfree(core_freesync);
>
>  fail_alloc_context:
>         return NULL;
> @@ -217,9 +217,9 @@ void mod_freesync_destroy(struct mod_freesync *mod_freesync)
>                         if (core_freesync->map[i].stream)
>                                 dc_stream_release(core_freesync->map[i].stream);
>
> -               dm_free(core_freesync->map);
> +               kfree(core_freesync->map);
>
> -               dm_free(core_freesync);
> +               kfree(core_freesync);
>         }
>  }
>
> diff --git a/drivers/gpu/drm/amd/display/replace_alloc.cocci b/drivers/gpu/drm/amd/display/replace_alloc.cocci
> new file mode 100644
> index 000000000000..cee17535a9f0
> --- /dev/null
> +++ b/drivers/gpu/drm/amd/display/replace_alloc.cocci
> @@ -0,0 +1,25 @@
> +virtual context
> +virtual patch
> +virtual org
> +virtual report
> +
> +@@
> +expression ptr;
> +@@
> +
> +- dm_alloc(ptr)
> ++ kzalloc(ptr, GFP_ATOMIC)
> +
> +@@
> +expression ptr, size;
> +@@
> +
> +- dm_realloc(ptr, size)
> ++ krealloc(ptr, size, GFP_KERNEL)
> +
> +@@
> +expression ptr;
> +@@
> +
> +- dm_free(ptr)
> ++ kfree(ptr)
> --
> 2.11.0
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 0/3] DC pull request cleanup
       [not found] ` <20170927194641.29146-1-harry.wentland-5C7GfCeVMHo@public.gmane.org>
  2017-09-27 19:46   ` [PATCH 3/3] drm/amd/display: DC I2C review Harry Wentland
@ 2017-09-27 22:34   ` Alex Deucher
  1 sibling, 0 replies; 7+ messages in thread
From: Alex Deucher @ 2017-09-27 22:34 UTC (permalink / raw)
  To: Harry Wentland
  Cc: Daniel Vetter, Maling list - DRI developers, Sean Paul,
	amd-gfx list, Deucher, Alexander, Daniel Vetter

On Wed, Sep 27, 2017 at 3:46 PM, Harry Wentland <harry.wentland@amd.com> wrote:
> Patches to make DC use kzalloc/krealloc/kfree directly.
>
> Also updating the TODO list after a closer look at I2C in DC.
>
> Harry Wentland (3):
>   drm/amd/display: Use kernel alloc/free
>   drm/amd/display: Remove alloc/free macros
>   drm/amd/display: DC I2C review

patches 2, 3, and v2 of patch 1 are:
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>

>
>  drivers/gpu/drm/amd/display/TODO                   | 26 +++++----
>  drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c  |  2 +-
>  drivers/gpu/drm/amd/display/dc/basics/logger.c     | 18 ++++---
>  drivers/gpu/drm/amd/display/dc/basics/vector.c     | 19 +++----
>  drivers/gpu/drm/amd/display/dc/bios/bios_parser.c  | 17 +++---
>  drivers/gpu/drm/amd/display/dc/bios/bios_parser2.c | 14 ++---
>  drivers/gpu/drm/amd/display/dc/calcs/dce_calcs.c   |  5 +-
>  drivers/gpu/drm/amd/display/dc/calcs/dcn_calcs.c   |  6 +--
>  drivers/gpu/drm/amd/display/dc/core/dc.c           | 42 ++++++++-------
>  drivers/gpu/drm/amd/display/dc/core/dc_link.c      |  6 +--
>  drivers/gpu/drm/amd/display/dc/core/dc_link_ddc.c  | 18 +++----
>  drivers/gpu/drm/amd/display/dc/core/dc_resource.c  |  2 +-
>  drivers/gpu/drm/amd/display/dc/core/dc_sink.c      | 11 ++--
>  drivers/gpu/drm/amd/display/dc/core/dc_stream.c    |  6 +--
>  drivers/gpu/drm/amd/display/dc/core/dc_surface.c   | 15 +++---
>  drivers/gpu/drm/amd/display/dc/dce/dce_abm.c       |  4 +-
>  drivers/gpu/drm/amd/display/dc/dce/dce_audio.c     |  4 +-
>  .../gpu/drm/amd/display/dc/dce/dce_clock_source.c  | 12 +++--
>  drivers/gpu/drm/amd/display/dc/dce/dce_clocks.c    | 10 ++--
>  drivers/gpu/drm/amd/display/dc/dce/dce_dmcu.c      |  6 +--
>  drivers/gpu/drm/amd/display/dc/dce/dce_ipp.c       |  2 +-
>  .../gpu/drm/amd/display/dc/dce/dce_link_encoder.c  |  2 +-
>  drivers/gpu/drm/amd/display/dc/dce/dce_opp.c       |  2 +-
>  .../drm/amd/display/dc/dce100/dce100_resource.c    | 43 +++++++--------
>  .../drm/amd/display/dc/dce110/dce110_compressor.c  |  6 +--
>  .../drm/amd/display/dc/dce110/dce110_resource.c    | 61 ++++++++++++----------
>  .../drm/amd/display/dc/dce112/dce112_compressor.c  |  6 +--
>  .../drm/amd/display/dc/dce112/dce112_resource.c    | 43 +++++++--------
>  .../drm/amd/display/dc/dce120/dce120_resource.c    | 43 +++++++--------
>  .../drm/amd/display/dc/dce80/dce80_compressor.c    |  6 +--
>  .../gpu/drm/amd/display/dc/dce80/dce80_resource.c  | 47 +++++++++--------
>  drivers/gpu/drm/amd/display/dc/dcn10/dcn10_ipp.c   |  2 +-
>  drivers/gpu/drm/amd/display/dc/dcn10/dcn10_opp.c   |  2 +-
>  .../gpu/drm/amd/display/dc/dcn10/dcn10_resource.c  | 56 ++++++++++----------
>  drivers/gpu/drm/amd/display/dc/dm_services.h       |  4 --
>  drivers/gpu/drm/amd/display/dc/gpio/gpio_base.c    |  4 +-
>  drivers/gpu/drm/amd/display/dc/gpio/gpio_service.c | 21 ++++----
>  drivers/gpu/drm/amd/display/dc/gpio/hw_ddc.c       |  6 +--
>  drivers/gpu/drm/amd/display/dc/gpio/hw_factory.c   |  2 +-
>  drivers/gpu/drm/amd/display/dc/gpio/hw_hpd.c       |  6 +--
>  .../amd/display/dc/i2caux/dce100/i2caux_dce100.c   |  4 +-
>  .../display/dc/i2caux/dce110/aux_engine_dce110.c   |  6 +--
>  .../dc/i2caux/dce110/i2c_hw_engine_dce110.c        |  7 +--
>  .../dc/i2caux/dce110/i2c_sw_engine_dce110.c        |  7 +--
>  .../amd/display/dc/i2caux/dce110/i2caux_dce110.c   |  6 +--
>  .../amd/display/dc/i2caux/dce112/i2caux_dce112.c   |  4 +-
>  .../amd/display/dc/i2caux/dce120/i2caux_dce120.c   |  4 +-
>  .../display/dc/i2caux/dce80/i2c_hw_engine_dce80.c  |  6 +--
>  .../display/dc/i2caux/dce80/i2c_sw_engine_dce80.c  |  6 +--
>  .../drm/amd/display/dc/i2caux/dce80/i2caux_dce80.c |  6 +--
>  .../drm/amd/display/dc/i2caux/dcn10/i2caux_dcn10.c |  4 +-
>  .../display/dc/i2caux/diagnostics/i2caux_diag.c    |  7 +--
>  .../gpu/drm/amd/display/dc/i2caux/i2c_sw_engine.c  |  6 +--
>  .../amd/display/dc/irq/dce110/irq_service_dce110.c |  5 +-
>  .../amd/display/dc/irq/dce120/irq_service_dce120.c |  5 +-
>  .../amd/display/dc/irq/dce80/irq_service_dce80.c   |  5 +-
>  .../amd/display/dc/irq/dcn10/irq_service_dcn10.c   |  5 +-
>  drivers/gpu/drm/amd/display/dc/irq/irq_service.c   |  2 +-
>  .../amd/display/dc/virtual/virtual_link_encoder.c  |  2 +-
>  .../display/dc/virtual/virtual_stream_encoder.c    |  4 +-
>  .../drm/amd/display/modules/freesync/freesync.c    | 14 ++---
>  drivers/gpu/drm/amd/display/replace_alloc.cocci    | 25 +++++++++
>  62 files changed, 399 insertions(+), 348 deletions(-)
>  create mode 100644 drivers/gpu/drm/amd/display/replace_alloc.cocci
>
> --
> 2.11.0
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 3/3] drm/amd/display: DC I2C review
       [not found]     ` <20170927194641.29146-4-harry.wentland-5C7GfCeVMHo@public.gmane.org>
@ 2017-09-28  6:46       ` Daniel Vetter
  0 siblings, 0 replies; 7+ messages in thread
From: Daniel Vetter @ 2017-09-28  6:46 UTC (permalink / raw)
  To: Harry Wentland
  Cc: alexander.deucher-5C7GfCeVMHo, Daniel Vetter, Sean Paul,
	dri-devel, amd-gfx list

On Wed, Sep 27, 2017 at 9:46 PM, Harry Wentland <harry.wentland@amd.com> wrote:
> While reviewing I2C in DC identified a few places. Added a couple to the
> TODO list.
>
> 1) Connector info read
>
> See get_ext_display_connection_info
>
> On some boards the connector information has to be read through a
> special I2C channel. This line is only used for this purpose and only on
> driver init.
>
> 2) SCDC stuff
>
> This should all be reworked to go through DRM's SCDC code. When this is
> done some unnecessary I2C code can be retired as well.
>
> 3) Max TMDS clock read
>
> See dal_ddc_service_i2c_query_dp_dual_mode_adaptor
>
> This should happen in DRM as well. I haven't checked if there's
> currently functionality in DRM. If not we can propose something.
>
> 4) HDMI retimer programming
>
> Some boards have an HDMI retimer that we need to program to pass PHY
> compliance.
>
> 1 & 3 might be a good exercise if someone is looking for things to do.
>
> Signed-off-by: Harry Wentland <harry.wentland@amd.com>
> ---
>  drivers/gpu/drm/amd/display/TODO | 26 ++++++++++++--------------
>  1 file changed, 12 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/display/TODO b/drivers/gpu/drm/amd/display/TODO
> index eea645b102a1..981352bc95f0 100644
> --- a/drivers/gpu/drm/amd/display/TODO
> +++ b/drivers/gpu/drm/amd/display/TODO
> @@ -62,20 +62,10 @@ TODOs
>      ~ Daniel Vetter
>
>
> -11. Remove existing i2c implementation from DC
> -
> -    "Similar story for i2c, it uses the kernel's i2c code now, but there's
> -    still a full i2c implementation hidden beneath that in
> -    display/dc/i2caux. Kinda not cool, but imo ok if you fix that
> -    post-merging (perhaps by not including any of this in the linux DC
> -    code in the upstream kernel, but as an aux module in your internal
> -    codebase since there you probably need that, same applies to the edid
> -    parsing DC still does. For both cases I assume that the minimal shim
> -    you need on linux (bit banging and edid parsing isn't rocket since) is
> -    a lot less than the glue code to interface with the dc-provided
> -    abstraction."
> -    ~ Daniel Vetter
> -
> +11. Remove dc/i2caux. This folder can be somewhat misleading. It's basically an
> +overy complicated HW programming function for sendind and receiving i2c/aux
> +commands. We can greatly simplify that and move it into dc/dceXYZ like other
> +HW blocks.

Best case I think would be if you directly implement the i2c_adapter
in there. It's a tiny abstraction/api, so should be trivial to
reimplement for the windows side. Or at least align really closely.
Even more so for the gpio bit-banging case, that should use the linux
implementation I think. Might be good to clarify.

Anyway, ack on this.

>  12. drm_modeset_lock in MST should no longer be needed in recent kernels
>      * Adopt appropriate locking scheme
> @@ -110,3 +100,11 @@ guilty.
>  stuff just isn't up to the challenges either. We need to figure out something
>  that integrates better with DRM and linux debug printing, while not being
>  useless with filtering output. dynamic debug printing might be an option.
> +
> +20. Move Max TMDS clock read to DRM. See
> +dal_ddc_service_i2c_query_dp_dual_mode_adaptor. I haven't checked if there's
> +currently functionality in DRM. If not we can propose something.

We already have dual_mode helpers. It's one of the todo's I've added,
merged this with point 15?

> +21. Use kernel i2c device to program HDMI retimer. Some boards have an HDMI
> +retimer that we need to program to pass PHY compliance. Currently that's
> +bypassing the i2c device and goes directly to HW. This should be changed.

I thought it eventually goes through the i2c stuff, after a few layers
at least. Maybe I got derailed. Anyway, makes sense.

With 20 merged into 15, ack on the patch from me.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2017-09-28  6:46 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-09-27 19:46 [PATCH 0/3] DC pull request cleanup Harry Wentland
2017-09-27 19:46 ` [PATCH 1/3] drm/amd/display: Use kernel alloc/free Harry Wentland
     [not found]   ` <20170927194641.29146-2-harry.wentland-5C7GfCeVMHo@public.gmane.org>
2017-09-27 21:04     ` Dave Airlie
2017-09-27 19:46 ` [PATCH 2/3] drm/amd/display: Remove alloc/free macros Harry Wentland
     [not found] ` <20170927194641.29146-1-harry.wentland-5C7GfCeVMHo@public.gmane.org>
2017-09-27 19:46   ` [PATCH 3/3] drm/amd/display: DC I2C review Harry Wentland
     [not found]     ` <20170927194641.29146-4-harry.wentland-5C7GfCeVMHo@public.gmane.org>
2017-09-28  6:46       ` Daniel Vetter
2017-09-27 22:34   ` [PATCH 0/3] DC pull request cleanup Alex Deucher

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.