All of lore.kernel.org
 help / color / mirror / Atom feed
From: Fabien DESSENNE <fabien.dessenne@st.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2 02/26] remoteproc: ops: Add elf section size as input parameter to device_to_virt api
Date: Wed, 4 Sep 2019 15:04:46 +0000	[thread overview]
Message-ID: <f077991b-a7fc-3fac-df98-5f2cff26ea92@st.com> (raw)
In-Reply-To: <20190904103151.20121-3-lokeshvutla@ti.com>

Hi Lokesh


I have successfully tested this patch for stm32_copro.

BR

Fabien



On 04/09/2019 12:31 PM, Lokesh Vutla wrote:
> Introduce a new parameter "size" that accepts size of the region to
> remoteproc ops callback device_to_virt(). This can enforce more checks
> on the region that device_to_virt() is dealing with.
>
> Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>

Tested-by: Fabien Dessenne <fabien.dessenne@st.com>

Reviewed-by: Fabien Dessenne <fabien.dessenne@st.com>

> ---
>   drivers/remoteproc/rproc-elf-loader.c |  3 ++-
>   drivers/remoteproc/sandbox_testproc.c |  4 +++-
>   drivers/remoteproc/stm32_copro.c      | 12 ++++++++++--
>   include/remoteproc.h                  |  3 ++-
>   4 files changed, 17 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/remoteproc/rproc-elf-loader.c b/drivers/remoteproc/rproc-elf-loader.c
> index 67937a7595..7574ba3fb3 100644
> --- a/drivers/remoteproc/rproc-elf-loader.c
> +++ b/drivers/remoteproc/rproc-elf-loader.c
> @@ -86,7 +86,8 @@ int rproc_elf32_load_image(struct udevice *dev, unsigned long addr)
>   			continue;
>   
>   		if (ops->device_to_virt)
> -			dst = ops->device_to_virt(dev, (ulong)dst);
> +			dst = ops->device_to_virt(dev, (ulong)dst,
> +						  phdr->p_memsz);
>   
>   		dev_dbg(dev, "Loading phdr %i to 0x%p (%i bytes)\n",
>   			i, dst, phdr->p_filesz);
> diff --git a/drivers/remoteproc/sandbox_testproc.c b/drivers/remoteproc/sandbox_testproc.c
> index 5f35119ab7..eeee49c4dd 100644
> --- a/drivers/remoteproc/sandbox_testproc.c
> +++ b/drivers/remoteproc/sandbox_testproc.c
> @@ -306,9 +306,11 @@ static int sandbox_testproc_ping(struct udevice *dev)
>    * sandbox_testproc_device_to_virt() - Convert device address to virtual address
>    * @dev:	device to operate upon
>    * @da:		device address
> + * @size:	Size of the memory region @da is pointing to
>    * @return converted virtual address
>    */
> -static void *sandbox_testproc_device_to_virt(struct udevice *dev, ulong da)
> +static void *sandbox_testproc_device_to_virt(struct udevice *dev, ulong da,
> +					     ulong size)
>   {
>   	u64 paddr;
>   
> diff --git a/drivers/remoteproc/stm32_copro.c b/drivers/remoteproc/stm32_copro.c
> index ad941f67e8..71895daf9c 100644
> --- a/drivers/remoteproc/stm32_copro.c
> +++ b/drivers/remoteproc/stm32_copro.c
> @@ -107,11 +107,13 @@ static int stm32_copro_set_hold_boot(struct udevice *dev, bool hold)
>    * stm32_copro_device_to_virt() - Convert device address to virtual address
>    * @dev:	corresponding STM32 remote processor device
>    * @da:		device address
> + * @size:	Size of the memory region @da is pointing to
>    * @return converted virtual address
>    */
> -static void *stm32_copro_device_to_virt(struct udevice *dev, ulong da)
> +static void *stm32_copro_device_to_virt(struct udevice *dev, ulong da,
> +					ulong size)
>   {
> -	fdt32_t in_addr = cpu_to_be32(da);
> +	fdt32_t in_addr = cpu_to_be32(da), end_addr;
>   	u64 paddr;
>   
>   	paddr = dev_translate_dma_address(dev, &in_addr);
> @@ -120,6 +122,12 @@ static void *stm32_copro_device_to_virt(struct udevice *dev, ulong da)
>   		return NULL;
>   	}
>   
> +	end_addr = cpu_to_be32(da + size - 1);
> +	if (dev_translate_dma_address(dev, &end_addr) == OF_BAD_ADDR) {
> +		dev_err(dev, "Unable to convert address %ld\n", da + size - 1);
> +		return NULL;
> +	}
> +
>   	return phys_to_virt(paddr);
>   }
>   
> diff --git a/include/remoteproc.h b/include/remoteproc.h
> index 4987194905..dbff1ce3cf 100644
> --- a/include/remoteproc.h
> +++ b/include/remoteproc.h
> @@ -122,9 +122,10 @@ struct dm_rproc_ops {
>   	 *
>   	 * @dev:	Remote proc device
>   	 * @da:		Device address
> +	 * @size:	Size of the memory region @da is pointing to
>   	 * @return virtual address.
>   	 */
> -	void * (*device_to_virt)(struct udevice *dev, ulong da);
> +	void * (*device_to_virt)(struct udevice *dev, ulong da, ulong size);
>   };
>   
>   /* Accessor */

  reply	other threads:[~2019-09-04 15:04 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-04 10:31 [U-Boot] [PATCH v2 00/26] remoteproc: Add support for R5F and DSP processors Lokesh Vutla
2019-09-04 10:31 ` [U-Boot] [PATCH v2 01/26] dm: core: Add a function to count the children of a device Lokesh Vutla
2019-10-12 20:24   ` Tom Rini
2019-09-04 10:31 ` [U-Boot] [PATCH v2 02/26] remoteproc: ops: Add elf section size as input parameter to device_to_virt api Lokesh Vutla
2019-09-04 15:04   ` Fabien DESSENNE [this message]
2019-10-12 20:24   ` Tom Rini
2019-09-04 10:31 ` [U-Boot] [PATCH v2 03/26] remoteproc: elf_loader: Always check the validity of the image before loading Lokesh Vutla
2019-09-04 15:05   ` Fabien DESSENNE
2019-10-12 20:24   ` Tom Rini
2019-09-04 10:31 ` [U-Boot] [PATCH v2 04/26] remoteproc: elf-loader: Add 64 bit elf loading support Lokesh Vutla
2019-09-04 15:06   ` Fabien DESSENNE
2019-10-12 20:24   ` Tom Rini
2019-09-04 10:31 ` [U-Boot] [PATCH v2 05/26] remoteproc: elf_loader: Introduce a common elf loader and checker functions Lokesh Vutla
2019-09-04 15:05   ` Fabien DESSENNE
2019-10-12 20:24   ` Tom Rini
2019-09-04 10:31 ` [U-Boot] [PATCH v2 06/26] remoteproc: elf_loader: Introduce rproc_elf_get_boot_addr() api Lokesh Vutla
2019-10-12 20:24   ` Tom Rini
2019-09-04 10:31 ` [U-Boot] [PATCH v2 07/26] remoteproc: tisci_proc: Add helper api for controlling core power domain Lokesh Vutla
2019-10-12 20:24   ` Tom Rini
2019-09-04 10:31 ` [U-Boot] [PATCH v2 08/26] dt-bindings: remoteproc: Add bindings for R5F subsystem on TI K3 SoCs Lokesh Vutla
2019-10-12 20:24   ` Tom Rini
2019-09-04 10:31 ` [U-Boot] [PATCH v2 09/26] remoteproc: Introduce K3 remoteproc driver for R5F subsystem Lokesh Vutla
2019-10-12 20:24   ` Tom Rini
2019-09-04 10:31 ` [U-Boot] [PATCH v2 10/26] dt-bindings: remoteproc: Add bindings for DSP C66x clusters on TI K3 SoCs Lokesh Vutla
2019-10-12 20:25   ` Tom Rini
2019-09-04 10:31 ` [U-Boot] [PATCH v2 11/26] remoteproc: Introduce K3 C66 and C71 remoteproc driver Lokesh Vutla
2019-10-12 20:25   ` Tom Rini
2019-09-04 10:31 ` [U-Boot] [PATCH v2 12/26] arm: dts: k3-j721e-mcu: Add MCU domain R5F cluster node Lokesh Vutla
2019-10-12 20:25   ` Tom Rini
2019-09-04 10:31 ` [U-Boot] [PATCH v2 13/26] arm: dts: k3-j721e-main: Add MAIN domain R5F cluster nodes Lokesh Vutla
2019-10-12 20:25   ` Tom Rini
2019-09-04 10:31 ` [U-Boot] [PATCH v2 14/26] arm: dts: k3-j721e-main: Add C66x DSP nodes Lokesh Vutla
2019-10-12 20:25   ` Tom Rini
2019-09-04 10:31 ` [U-Boot] [PATCH v2 15/26] arm: dts: k3-j721e-main: Add C71x DSP node Lokesh Vutla
2019-10-12 20:25   ` Tom Rini
2019-09-04 10:31 ` [U-Boot] [PATCH v2 16/26] arm: dts: k3-am65-mcu: Add MCU domain R5F DT nodes Lokesh Vutla
2019-10-12 20:25   ` Tom Rini
2019-09-04 10:31 ` [U-Boot] [PATCH v2 17/26] env: ti: k3_rproc: Add common rproc environment variables Lokesh Vutla
2019-10-12 20:25   ` Tom Rini
2019-09-04 10:31 ` [U-Boot] [PATCH v2 18/26] env: ti: j721e-evm: Add support to boot rprocs including R5Fs and DSPs Lokesh Vutla
2019-10-12 20:25   ` Tom Rini
2019-09-04 10:31 ` [U-Boot] [PATCH v2 19/26] env: ti: am65x_evm: Add env support to boot the MCU R5F rprocs Lokesh Vutla
2019-10-12 20:25   ` Tom Rini
2019-09-04 10:31 ` [U-Boot] [PATCH v2 20/26] configs: j721e_evm_a72: Enable R5F and DSP remoteproc driver Lokesh Vutla
2019-10-12 20:25   ` Tom Rini
2019-09-04 10:31 ` [U-Boot] [PATCH v2 21/26] configs: j721e_evm_a72: Enhance bootcmd to start remoteprocs Lokesh Vutla
2019-10-12 20:25   ` Tom Rini
2019-09-04 10:31 ` [U-Boot] [PATCH v2 22/26] configs: am65x_evm_a53: Enable R5F remoteproc driver Lokesh Vutla
2019-10-12 20:26   ` Tom Rini
2019-09-04 10:31 ` [U-Boot] [PATCH v2 23/26] configs: am65x_evm_a53: Enhance bootcmd to start remoteprocs Lokesh Vutla
2019-10-12 20:26   ` Tom Rini
2019-09-04 10:31 ` [U-Boot] [PATCH v2 24/26] armv8: K3: am65x: Update DDR address regions in MMU table Lokesh Vutla
2019-10-12 20:26   ` Tom Rini
2019-09-04 10:31 ` [U-Boot] [PATCH v2 25/26] armv8: K3: j721e: Updated ddr " Lokesh Vutla
2019-10-12 20:26   ` Tom Rini
2019-09-04 10:31 ` [U-Boot] [PATCH v2 26/26] board: j721e: Add README Lokesh Vutla
2019-10-12 20:26   ` Tom Rini

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=f077991b-a7fc-3fac-df98-5f2cff26ea92@st.com \
    --to=fabien.dessenne@st.com \
    --cc=u-boot@lists.denx.de \
    /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.