On 20/12/2022 17:02, Sumit Gupta wrote: > Adding support for dummy memory controller clients for use by > software. Use imperative mode (applies to other commits as well) https://elixir.bootlin.com/linux/v5.17.1/source/Documentation/process/submitting-patches.rst#L95 > --- > drivers/memory/tegra/mc.c | 65 +++++++++++++++++++++++---------- > drivers/memory/tegra/tegra234.c | 21 +++++++++++ > include/soc/tegra/mc.h | 3 ++ > include/soc/tegra/tegra-icc.h | 7 ++++ > 4 files changed, 76 insertions(+), 20 deletions(-) > > diff --git a/drivers/memory/tegra/mc.c b/drivers/memory/tegra/mc.c > index ff887fb03bce..4ddf9808fe6b 100644 > --- a/drivers/memory/tegra/mc.c > +++ b/drivers/memory/tegra/mc.c > @@ -755,6 +755,39 @@ const char *const tegra_mc_error_names[8] = { > [6] = "SMMU translation error", > }; > > +static int tegra_mc_add_icc_node(struct tegra_mc *mc, unsigned int id, const char *name, > + unsigned int bpmp_id, unsigned int type) > +{ > + struct tegra_icc_node *tnode; > + struct icc_node *node; > + int err; > + > + tnode = kzalloc(sizeof(*tnode), GFP_KERNEL); > + if (!tnode) > + return -ENOMEM; > + > + /* create MC client node */ > + node = icc_node_create(id); > + if (IS_ERR(node)) > + return -EINVAL; Why do you return other error? It does not look like you moved the code correctly, but with changes. I also do not see how this is related to commit msg... > + > + node->name = name; > + icc_node_add(node, &mc->provider); > + > + /* link Memory Client to Memory Controller */ > + err = icc_link_create(node, TEGRA_ICC_MC); > + if (err) > + return err; > + > + node->data = tnode; > + tnode->node = node; > + tnode->bpmp_id = bpmp_id; > + tnode->type = type; > + tnode->mc = mc; > + > + return 0; > +} > + > /* > * Memory Controller (MC) has few Memory Clients that are issuing memory > * bandwidth allocation requests to the MC interconnect provider. The MC > @@ -780,7 +813,6 @@ const char *const tegra_mc_error_names[8] = { > */ > static int tegra_mc_interconnect_setup(struct tegra_mc *mc) > { > - struct tegra_icc_node *tnode; > struct icc_node *node; > unsigned int i; > int err; > @@ -820,30 +852,23 @@ static int tegra_mc_interconnect_setup(struct tegra_mc *mc) > goto remove_nodes; > > for (i = 0; i < mc->soc->num_clients; i++) { > - tnode = kzalloc(sizeof(*tnode), GFP_KERNEL); > - if (!tnode) > - return -ENOMEM; > - > - /* create MC client node */ > - node = icc_node_create(mc->soc->clients[i].id); > - if (IS_ERR(node)) { > - err = PTR_ERR(node); > + err = tegra_mc_add_icc_node(mc, mc->soc->clients[i].id, > + mc->soc->clients[i].name, > + mc->soc->clients[i].bpmp_id, > + mc->soc->clients[i].type); > + if (err) > goto remove_nodes; > - } > > - node->name = mc->soc->clients[i].name; > - icc_node_add(node, &mc->provider); > + } > + Best regards, Krzysztof