Commit 3bb11050 authored by Nirmoy Das's avatar Nirmoy Das Committed by Alex Deucher

drm/amd/display: use GFP_ATOMIC in dcn20_resource_construct

Replace GFP_KERNEL with GFP_ATOMIC as dcn20_resource_construct()
can't sleep.

Partially fixes: https://bugzilla.kernel.org/show_bug.cgi?id=212311
as dcn20_resource_construct() also calls into SMU functions which does
mutex_lock().
Reviewed-by: default avatarHarry Wentland <harry.wentland@amd.com>
Signed-off-by: default avatarNirmoy Das <nirmoy.das@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 3ca40145
...@@ -283,7 +283,7 @@ struct abm *dce_abm_create( ...@@ -283,7 +283,7 @@ struct abm *dce_abm_create(
const struct dce_abm_shift *abm_shift, const struct dce_abm_shift *abm_shift,
const struct dce_abm_mask *abm_mask) const struct dce_abm_mask *abm_mask)
{ {
struct dce_abm *abm_dce = kzalloc(sizeof(*abm_dce), GFP_KERNEL); struct dce_abm *abm_dce = kzalloc(sizeof(*abm_dce), GFP_ATOMIC);
if (abm_dce == NULL) { if (abm_dce == NULL) {
BREAK_TO_DEBUGGER(); BREAK_TO_DEBUGGER();
......
...@@ -1133,7 +1133,7 @@ struct dmcu *dcn10_dmcu_create( ...@@ -1133,7 +1133,7 @@ struct dmcu *dcn10_dmcu_create(
const struct dce_dmcu_shift *dmcu_shift, const struct dce_dmcu_shift *dmcu_shift,
const struct dce_dmcu_mask *dmcu_mask) const struct dce_dmcu_mask *dmcu_mask)
{ {
struct dce_dmcu *dmcu_dce = kzalloc(sizeof(*dmcu_dce), GFP_KERNEL); struct dce_dmcu *dmcu_dce = kzalloc(sizeof(*dmcu_dce), GFP_ATOMIC);
if (dmcu_dce == NULL) { if (dmcu_dce == NULL) {
BREAK_TO_DEBUGGER(); BREAK_TO_DEBUGGER();
...@@ -1154,7 +1154,7 @@ struct dmcu *dcn20_dmcu_create( ...@@ -1154,7 +1154,7 @@ struct dmcu *dcn20_dmcu_create(
const struct dce_dmcu_shift *dmcu_shift, const struct dce_dmcu_shift *dmcu_shift,
const struct dce_dmcu_mask *dmcu_mask) const struct dce_dmcu_mask *dmcu_mask)
{ {
struct dce_dmcu *dmcu_dce = kzalloc(sizeof(*dmcu_dce), GFP_KERNEL); struct dce_dmcu *dmcu_dce = kzalloc(sizeof(*dmcu_dce), GFP_ATOMIC);
if (dmcu_dce == NULL) { if (dmcu_dce == NULL) {
BREAK_TO_DEBUGGER(); BREAK_TO_DEBUGGER();
...@@ -1175,7 +1175,7 @@ struct dmcu *dcn21_dmcu_create( ...@@ -1175,7 +1175,7 @@ struct dmcu *dcn21_dmcu_create(
const struct dce_dmcu_shift *dmcu_shift, const struct dce_dmcu_shift *dmcu_shift,
const struct dce_dmcu_mask *dmcu_mask) const struct dce_dmcu_mask *dmcu_mask)
{ {
struct dce_dmcu *dmcu_dce = kzalloc(sizeof(*dmcu_dce), GFP_KERNEL); struct dce_dmcu *dmcu_dce = kzalloc(sizeof(*dmcu_dce), GFP_ATOMIC);
if (dmcu_dce == NULL) { if (dmcu_dce == NULL) {
BREAK_TO_DEBUGGER(); BREAK_TO_DEBUGGER();
......
...@@ -112,7 +112,7 @@ struct dccg *dccg2_create( ...@@ -112,7 +112,7 @@ struct dccg *dccg2_create(
const struct dccg_shift *dccg_shift, const struct dccg_shift *dccg_shift,
const struct dccg_mask *dccg_mask) const struct dccg_mask *dccg_mask)
{ {
struct dcn_dccg *dccg_dcn = kzalloc(sizeof(*dccg_dcn), GFP_KERNEL); struct dcn_dccg *dccg_dcn = kzalloc(sizeof(*dccg_dcn), GFP_ATOMIC);
struct dccg *base; struct dccg *base;
if (dccg_dcn == NULL) { if (dccg_dcn == NULL) {
......
...@@ -1106,7 +1106,7 @@ struct dpp *dcn20_dpp_create( ...@@ -1106,7 +1106,7 @@ struct dpp *dcn20_dpp_create(
uint32_t inst) uint32_t inst)
{ {
struct dcn20_dpp *dpp = struct dcn20_dpp *dpp =
kzalloc(sizeof(struct dcn20_dpp), GFP_KERNEL); kzalloc(sizeof(struct dcn20_dpp), GFP_ATOMIC);
if (!dpp) if (!dpp)
return NULL; return NULL;
...@@ -1124,7 +1124,7 @@ struct input_pixel_processor *dcn20_ipp_create( ...@@ -1124,7 +1124,7 @@ struct input_pixel_processor *dcn20_ipp_create(
struct dc_context *ctx, uint32_t inst) struct dc_context *ctx, uint32_t inst)
{ {
struct dcn10_ipp *ipp = struct dcn10_ipp *ipp =
kzalloc(sizeof(struct dcn10_ipp), GFP_KERNEL); kzalloc(sizeof(struct dcn10_ipp), GFP_ATOMIC);
if (!ipp) { if (!ipp) {
BREAK_TO_DEBUGGER(); BREAK_TO_DEBUGGER();
...@@ -1141,7 +1141,7 @@ struct output_pixel_processor *dcn20_opp_create( ...@@ -1141,7 +1141,7 @@ struct output_pixel_processor *dcn20_opp_create(
struct dc_context *ctx, uint32_t inst) struct dc_context *ctx, uint32_t inst)
{ {
struct dcn20_opp *opp = struct dcn20_opp *opp =
kzalloc(sizeof(struct dcn20_opp), GFP_KERNEL); kzalloc(sizeof(struct dcn20_opp), GFP_ATOMIC);
if (!opp) { if (!opp) {
BREAK_TO_DEBUGGER(); BREAK_TO_DEBUGGER();
...@@ -1158,7 +1158,7 @@ struct dce_aux *dcn20_aux_engine_create( ...@@ -1158,7 +1158,7 @@ struct dce_aux *dcn20_aux_engine_create(
uint32_t inst) uint32_t inst)
{ {
struct aux_engine_dce110 *aux_engine = struct aux_engine_dce110 *aux_engine =
kzalloc(sizeof(struct aux_engine_dce110), GFP_KERNEL); kzalloc(sizeof(struct aux_engine_dce110), GFP_ATOMIC);
if (!aux_engine) if (!aux_engine)
return NULL; return NULL;
...@@ -1196,7 +1196,7 @@ struct dce_i2c_hw *dcn20_i2c_hw_create( ...@@ -1196,7 +1196,7 @@ struct dce_i2c_hw *dcn20_i2c_hw_create(
uint32_t inst) uint32_t inst)
{ {
struct dce_i2c_hw *dce_i2c_hw = struct dce_i2c_hw *dce_i2c_hw =
kzalloc(sizeof(struct dce_i2c_hw), GFP_KERNEL); kzalloc(sizeof(struct dce_i2c_hw), GFP_ATOMIC);
if (!dce_i2c_hw) if (!dce_i2c_hw)
return NULL; return NULL;
...@@ -1209,7 +1209,7 @@ struct dce_i2c_hw *dcn20_i2c_hw_create( ...@@ -1209,7 +1209,7 @@ struct dce_i2c_hw *dcn20_i2c_hw_create(
struct mpc *dcn20_mpc_create(struct dc_context *ctx) struct mpc *dcn20_mpc_create(struct dc_context *ctx)
{ {
struct dcn20_mpc *mpc20 = kzalloc(sizeof(struct dcn20_mpc), struct dcn20_mpc *mpc20 = kzalloc(sizeof(struct dcn20_mpc),
GFP_KERNEL); GFP_ATOMIC);
if (!mpc20) if (!mpc20)
return NULL; return NULL;
...@@ -1227,7 +1227,7 @@ struct hubbub *dcn20_hubbub_create(struct dc_context *ctx) ...@@ -1227,7 +1227,7 @@ struct hubbub *dcn20_hubbub_create(struct dc_context *ctx)
{ {
int i; int i;
struct dcn20_hubbub *hubbub = kzalloc(sizeof(struct dcn20_hubbub), struct dcn20_hubbub *hubbub = kzalloc(sizeof(struct dcn20_hubbub),
GFP_KERNEL); GFP_ATOMIC);
if (!hubbub) if (!hubbub)
return NULL; return NULL;
...@@ -1255,7 +1255,7 @@ struct timing_generator *dcn20_timing_generator_create( ...@@ -1255,7 +1255,7 @@ struct timing_generator *dcn20_timing_generator_create(
uint32_t instance) uint32_t instance)
{ {
struct optc *tgn10 = struct optc *tgn10 =
kzalloc(sizeof(struct optc), GFP_KERNEL); kzalloc(sizeof(struct optc), GFP_ATOMIC);
if (!tgn10) if (!tgn10)
return NULL; return NULL;
...@@ -1334,7 +1334,7 @@ static struct clock_source *dcn20_clock_source_create( ...@@ -1334,7 +1334,7 @@ static struct clock_source *dcn20_clock_source_create(
bool dp_clk_src) bool dp_clk_src)
{ {
struct dce110_clk_src *clk_src = struct dce110_clk_src *clk_src =
kzalloc(sizeof(struct dce110_clk_src), GFP_KERNEL); kzalloc(sizeof(struct dce110_clk_src), GFP_ATOMIC);
if (!clk_src) if (!clk_src)
return NULL; return NULL;
...@@ -1440,7 +1440,7 @@ struct display_stream_compressor *dcn20_dsc_create( ...@@ -1440,7 +1440,7 @@ struct display_stream_compressor *dcn20_dsc_create(
struct dc_context *ctx, uint32_t inst) struct dc_context *ctx, uint32_t inst)
{ {
struct dcn20_dsc *dsc = struct dcn20_dsc *dsc =
kzalloc(sizeof(struct dcn20_dsc), GFP_KERNEL); kzalloc(sizeof(struct dcn20_dsc), GFP_ATOMIC);
if (!dsc) { if (!dsc) {
BREAK_TO_DEBUGGER(); BREAK_TO_DEBUGGER();
...@@ -1574,7 +1574,7 @@ struct hubp *dcn20_hubp_create( ...@@ -1574,7 +1574,7 @@ struct hubp *dcn20_hubp_create(
uint32_t inst) uint32_t inst)
{ {
struct dcn20_hubp *hubp2 = struct dcn20_hubp *hubp2 =
kzalloc(sizeof(struct dcn20_hubp), GFP_KERNEL); kzalloc(sizeof(struct dcn20_hubp), GFP_ATOMIC);
if (!hubp2) if (!hubp2)
return NULL; return NULL;
...@@ -3396,7 +3396,7 @@ bool dcn20_mmhubbub_create(struct dc_context *ctx, struct resource_pool *pool) ...@@ -3396,7 +3396,7 @@ bool dcn20_mmhubbub_create(struct dc_context *ctx, struct resource_pool *pool)
static struct pp_smu_funcs *dcn20_pp_smu_create(struct dc_context *ctx) static struct pp_smu_funcs *dcn20_pp_smu_create(struct dc_context *ctx)
{ {
struct pp_smu_funcs *pp_smu = kzalloc(sizeof(*pp_smu), GFP_KERNEL); struct pp_smu_funcs *pp_smu = kzalloc(sizeof(*pp_smu), GFP_ATOMIC);
if (!pp_smu) if (!pp_smu)
return pp_smu; return pp_smu;
...@@ -4042,7 +4042,7 @@ struct resource_pool *dcn20_create_resource_pool( ...@@ -4042,7 +4042,7 @@ struct resource_pool *dcn20_create_resource_pool(
struct dc *dc) struct dc *dc)
{ {
struct dcn20_resource_pool *pool = struct dcn20_resource_pool *pool =
kzalloc(sizeof(struct dcn20_resource_pool), GFP_KERNEL); kzalloc(sizeof(struct dcn20_resource_pool), GFP_ATOMIC);
if (!pool) if (!pool)
return NULL; return NULL;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment