From: Bjorn Andersson <bjorn.andersson@linaro.org>
To: Mathieu Poirier <mathieu.poirier@linaro.org>
Cc: ohad@wizery.com, elder@linaro.org, s-anna@ti.com,
Markus.Elfring@web.de, linux-remoteproc@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3 3/4] remoteproc: Split rproc_ops allocation from rproc_alloc()
Date: Mon, 20 Apr 2020 18:57:46 -0700 [thread overview]
Message-ID: <20200421015743.GI1868936@builder.lan> (raw)
In-Reply-To: <20200420231601.16781-4-mathieu.poirier@linaro.org>
On Mon 20 Apr 16:16 PDT 2020, Mathieu Poirier wrote:
> Make the rproc_ops allocation a function on its own in an effort
> to clean up function rproc_alloc().
>
> Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
> Reviewed-by: Alex Elder <elder@linaro.org>
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
> ---
> drivers/remoteproc/remoteproc_core.c | 33 ++++++++++++++++++----------
> 1 file changed, 21 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/remoteproc/remoteproc_core.c b/drivers/remoteproc/remoteproc_core.c
> index 45529d40342f..15318507aedb 100644
> --- a/drivers/remoteproc/remoteproc_core.c
> +++ b/drivers/remoteproc/remoteproc_core.c
> @@ -2028,6 +2028,26 @@ static int rproc_alloc_firmware(struct rproc *rproc,
> return 0;
> }
>
> +static int rproc_alloc_ops(struct rproc *rproc, const struct rproc_ops *ops)
> +{
> + rproc->ops = kmemdup(ops, sizeof(*ops), GFP_KERNEL);
> + if (!rproc->ops)
> + return -ENOMEM;
> +
> + if (rproc->ops->load)
> + return 0;
> +
> + /* Default to ELF loader if no load function is specified */
> + rproc->ops->load = rproc_elf_load_segments;
> + rproc->ops->parse_fw = rproc_elf_load_rsc_table;
> + rproc->ops->find_loaded_rsc_table = rproc_elf_find_loaded_rsc_table;
> + if (!rproc->ops->sanity_check)
> + rproc->ops->sanity_check = rproc_elf32_sanity_check;
> + rproc->ops->get_boot_addr = rproc_elf_get_boot_addr;
> +
> + return 0;
> +}
> +
> /**
> * rproc_alloc() - allocate a remote processor handle
> * @dev: the underlying device
> @@ -2067,8 +2087,7 @@ struct rproc *rproc_alloc(struct device *dev, const char *name,
> if (rproc_alloc_firmware(rproc, name, firmware))
> goto free_rproc;
>
> - rproc->ops = kmemdup(ops, sizeof(*ops), GFP_KERNEL);
> - if (!rproc->ops)
> + if (rproc_alloc_ops(rproc, ops))
> goto free_firmware;
>
> rproc->name = name;
> @@ -2096,16 +2115,6 @@ struct rproc *rproc_alloc(struct device *dev, const char *name,
>
> atomic_set(&rproc->power, 0);
>
> - /* Default to ELF loader if no load function is specified */
> - if (!rproc->ops->load) {
> - rproc->ops->load = rproc_elf_load_segments;
> - rproc->ops->parse_fw = rproc_elf_load_rsc_table;
> - rproc->ops->find_loaded_rsc_table = rproc_elf_find_loaded_rsc_table;
> - if (!rproc->ops->sanity_check)
> - rproc->ops->sanity_check = rproc_elf32_sanity_check;
> - rproc->ops->get_boot_addr = rproc_elf_get_boot_addr;
> - }
> -
> mutex_init(&rproc->lock);
>
> INIT_LIST_HEAD(&rproc->carveouts);
> --
> 2.20.1
>
WARNING: multiple messages have this Message-ID (diff)
From: Bjorn Andersson <bjorn.andersson@linaro.org>
To: Mathieu Poirier <mathieu.poirier@linaro.org>
Cc: ohad@wizery.com, elder@linaro.org, s-anna@ti.com,
Markus.Elfring@web.de, linux-remoteproc@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3 3/4] remoteproc: Split rproc_ops allocation from rproc_alloc()
Date: Mon, 20 Apr 2020 18:57:43 -0700 [thread overview]
Message-ID: <20200421015743.GI1868936@builder.lan> (raw)
Message-ID: <20200421015743.4mqR_OGHpiPmMAYeISkG5VqD2Z_tTNvGlRPR3BTBek8@z> (raw)
In-Reply-To: <20200420231601.16781-4-mathieu.poirier@linaro.org>
On Mon 20 Apr 16:16 PDT 2020, Mathieu Poirier wrote:
> Make the rproc_ops allocation a function on its own in an effort
> to clean up function rproc_alloc().
>
> Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
> Reviewed-by: Alex Elder <elder@linaro.org>
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
> ---
> drivers/remoteproc/remoteproc_core.c | 33 ++++++++++++++++++----------
> 1 file changed, 21 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/remoteproc/remoteproc_core.c b/drivers/remoteproc/remoteproc_core.c
> index 45529d40342f..15318507aedb 100644
> --- a/drivers/remoteproc/remoteproc_core.c
> +++ b/drivers/remoteproc/remoteproc_core.c
> @@ -2028,6 +2028,26 @@ static int rproc_alloc_firmware(struct rproc *rproc,
> return 0;
> }
>
> +static int rproc_alloc_ops(struct rproc *rproc, const struct rproc_ops *ops)
> +{
> + rproc->ops = kmemdup(ops, sizeof(*ops), GFP_KERNEL);
> + if (!rproc->ops)
> + return -ENOMEM;
> +
> + if (rproc->ops->load)
> + return 0;
> +
> + /* Default to ELF loader if no load function is specified */
> + rproc->ops->load = rproc_elf_load_segments;
> + rproc->ops->parse_fw = rproc_elf_load_rsc_table;
> + rproc->ops->find_loaded_rsc_table = rproc_elf_find_loaded_rsc_table;
> + if (!rproc->ops->sanity_check)
> + rproc->ops->sanity_check = rproc_elf32_sanity_check;
> + rproc->ops->get_boot_addr = rproc_elf_get_boot_addr;
> +
> + return 0;
> +}
> +
> /**
> * rproc_alloc() - allocate a remote processor handle
> * @dev: the underlying device
> @@ -2067,8 +2087,7 @@ struct rproc *rproc_alloc(struct device *dev, const char *name,
> if (rproc_alloc_firmware(rproc, name, firmware))
> goto free_rproc;
>
> - rproc->ops = kmemdup(ops, sizeof(*ops), GFP_KERNEL);
> - if (!rproc->ops)
> + if (rproc_alloc_ops(rproc, ops))
> goto free_firmware;
>
> rproc->name = name;
> @@ -2096,16 +2115,6 @@ struct rproc *rproc_alloc(struct device *dev, const char *name,
>
> atomic_set(&rproc->power, 0);
>
> - /* Default to ELF loader if no load function is specified */
> - if (!rproc->ops->load) {
> - rproc->ops->load = rproc_elf_load_segments;
> - rproc->ops->parse_fw = rproc_elf_load_rsc_table;
> - rproc->ops->find_loaded_rsc_table = rproc_elf_find_loaded_rsc_table;
> - if (!rproc->ops->sanity_check)
> - rproc->ops->sanity_check = rproc_elf32_sanity_check;
> - rproc->ops->get_boot_addr = rproc_elf_get_boot_addr;
> - }
> -
> mutex_init(&rproc->lock);
>
> INIT_LIST_HEAD(&rproc->carveouts);
> --
> 2.20.1
>
next prev parent reply other threads:[~2020-04-21 1:57 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-20 23:15 [PATCH v3 0/4] remoteproc: Refactor function rproc_alloc() Mathieu Poirier
2020-04-20 23:15 ` [PATCH v3 1/4] remoteproc: Use kstrdup_const() rather than kstrdup() Mathieu Poirier
2020-04-21 1:56 ` Bjorn Andersson
2020-04-21 1:56 ` Bjorn Andersson
2020-04-21 1:56 ` Bjorn Andersson
2020-04-20 23:15 ` [PATCH v3 2/4] remoteproc: Restructure firmware name allocation Mathieu Poirier
2020-04-21 1:56 ` Bjorn Andersson
2020-04-21 1:56 ` Bjorn Andersson
2020-04-21 1:56 ` Bjorn Andersson
2020-04-20 23:16 ` [PATCH v3 3/4] remoteproc: Split rproc_ops allocation from rproc_alloc() Mathieu Poirier
2020-04-21 1:57 ` Bjorn Andersson [this message]
2020-04-21 1:57 ` Bjorn Andersson
2020-04-21 1:57 ` Bjorn Andersson
2020-04-20 23:16 ` [PATCH v3 4/4] remoteproc: Get rid of tedious error path Mathieu Poirier
2020-04-21 2:01 ` Bjorn Andersson
2020-04-21 2:01 ` Bjorn Andersson
2020-04-21 2:01 ` Bjorn Andersson
2020-04-21 3:20 ` [PATCH v3 0/4] remoteproc: Refactor function rproc_alloc() patchwork-bot+linux-remoteproc
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200421015743.GI1868936@builder.lan \
--to=bjorn.andersson@linaro.org \
--cc=Markus.Elfring@web.de \
--cc=elder@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-remoteproc@vger.kernel.org \
--cc=mathieu.poirier@linaro.org \
--cc=ohad@wizery.com \
--cc=s-anna@ti.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.