mbox series

[v5,0/6] Add Xilinx RPU subsystem support

Message ID 20220518194426.3784095-1-tanmay.shah@xilinx.com (mailing list archive)
Headers show
Series Add Xilinx RPU subsystem support | expand

Message

Tanmay Shah May 18, 2022, 7:44 p.m. UTC
This patch series adds bindings document for RPU subsystem found on Xilinx
ZynqMP platforms. It also adds device nodes and driver to enable RPU
subsystem in split mode and lockstep mode.

Xilinx ZynqMP platform contains Remote Processing Unit(RPU). RPU subsystem
contains two arm cortex r5f cores. RPU subsystem can be configured in
split mode, lockstep mode and single-cpu mode.

RPU subsystem also contains 4 Tightly Coupled Memory(TCM) banks.
In lockstep mode, all 4 banks are combined and total of 256KB memory is
made available to r5 core0. In split mode, both cores can access two
TCM banks i.e. 128 KB.

RPU can also fetch data and execute instructions from DDR memory along with
TCM memory.
---

Changes in v5:
  - Add constraints of the possible values of xlnx,cluster-mode property
  - fix description of power-domains property for r5 core
  - Remove reg, address-cells and size-cells properties as it is not required
  - Fix description of mboxes property
  - Add description of each memory-region and remove old .txt binding link
    reference in the description
  - Remove optional reg property from r5fss node
  - Move r5fss node out of axi node

Changes in v4:
  - Add memory-region, mboxes and mbox-names properties in dt-bindings example
  - Add reserved memory region node and use it in Xilinx dt RPU subsystem node
  - Remove redundant header files
  - use dev_err_probe() to report errors during probe
  - Fix missing check on error code returned by zynqmp_r5_add_rproc_core()
  - Fix memory leaks all over the driver when resource allocation fails for any core
  - make cluster mode check only at one place
  - remove redundant initialization of variable
  - remove redundant use of of_node_put() 
  - Fix Comment format problem
  - Assign offset of zynqmp_tcm_banks instead of duplicating it
  - Add tcm and memory regions rproc carveouts during prepare instead of parse_fw
  - Remove rproc_mem_entry object from r5_core
  - Use put_device() and rproc_del() APIs to fix memory leaks
  - Replace pr_* with dev_*. This was missed in v3, fix now.
  - Use "GPL" instead of "GPL v2" in MODULE_LICENSE macro. This was reported by checkpatch script.

Changes in v3:
  - Fix checkpatch script indentation warning
  - Remove unused variable from xilinx remoteproc driver
  - use C style comments, i.e /*...*/
  - Remove redundant debug information which can be derived using /proc/device-tree
  - Fix multiline comment format
  - s/"final fot TCM"/"final for TCM"
  - Function devm_kzalloc() does not return an code on error, just NULL.
    Remove redundant error check for this function throughout the driver.
  - Fix RPU mode configuration and add documentation accordingly
  - Get rid of the indentations to match function documentation style with rest of the driver
  - Fix memory leak by only using r5_rproc->priv and not replace it with new instance
  - Use 'i' for the outer loop and 'j' for the inner one as per convention
  - Remove redundant error and NULL checks throughout the driver
  - Use devm_kcalloc() when more than one element is required
  - Add memory-regions carveouts during driver probe instead of parse_fw call
    This removes redundant copy of reserved_mem object in r5_core structure.
  - Fix memory leak by using of_node_put()
  - Fix indentation of tcm_mem_map function args
  - Remove redundant init of variables
  - Initialize tcm bank size variable for lockstep mode
  - Replace u32 with phys_addr_t for variable stroing memory bank address
  - Add documentation of TCM behavior in lockstep mode
  - Use dev_get_drvdata instead of platform driver API
  - Remove info level messages
  - Fix checkpatch.pl warnings
  - Add documentation for the Xilinx r5f platform to understand driver design

Changes in v2:
  - Remove proprietary copyright footer from cover letter


Ben Levinsky (3):
  firmware: xilinx: Add ZynqMP firmware ioctl enums for RPU
    configuration.
  firmware: xilinx: Add shutdown/wakeup APIs
  firmware: xilinx: Add RPU configuration APIs

Tanmay Shah (3):
  dt-bindings: remoteproc: Add Xilinx RPU subsystem bindings
  arm64: dts: xilinx: zynqmp: Add RPU subsystem device node
  drivers: remoteproc: Add Xilinx r5 remoteproc driver

 .../bindings/remoteproc/xlnx,r5f-rproc.yaml   |  128 ++
 arch/arm64/boot/dts/xilinx/zynqmp.dtsi        |   33 +
 drivers/firmware/xilinx/zynqmp.c              |   97 ++
 drivers/remoteproc/Kconfig                    |   12 +
 drivers/remoteproc/Makefile                   |    1 +
 drivers/remoteproc/xlnx_r5_remoteproc.c       | 1045 +++++++++++++++++
 include/dt-bindings/power/xlnx-zynqmp-power.h |    6 +
 include/linux/firmware/xlnx-zynqmp.h          |   60 +
 8 files changed, 1382 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/remoteproc/xlnx,r5f-rproc.yaml
 create mode 100644 drivers/remoteproc/xlnx_r5_remoteproc.c


base-commit: 01a1a0c8d456b11f2f6b9b822414481beaa44d6f

Comments

Mathieu Poirier May 19, 2022, 10:19 a.m. UTC | #1
Hi Tanmay,

I have replaced the previous version of this set with this one in my
queue.  That way you don't go back to the bottom.

Thanks,
Mathieu.

On Wed, 18 May 2022 at 20:46, Tanmay Shah <tanmay.shah@xilinx.com> wrote:
>
> This patch series adds bindings document for RPU subsystem found on Xilinx
> ZynqMP platforms. It also adds device nodes and driver to enable RPU
> subsystem in split mode and lockstep mode.
>
> Xilinx ZynqMP platform contains Remote Processing Unit(RPU). RPU subsystem
> contains two arm cortex r5f cores. RPU subsystem can be configured in
> split mode, lockstep mode and single-cpu mode.
>
> RPU subsystem also contains 4 Tightly Coupled Memory(TCM) banks.
> In lockstep mode, all 4 banks are combined and total of 256KB memory is
> made available to r5 core0. In split mode, both cores can access two
> TCM banks i.e. 128 KB.
>
> RPU can also fetch data and execute instructions from DDR memory along with
> TCM memory.
> ---
>
> Changes in v5:
>   - Add constraints of the possible values of xlnx,cluster-mode property
>   - fix description of power-domains property for r5 core
>   - Remove reg, address-cells and size-cells properties as it is not required
>   - Fix description of mboxes property
>   - Add description of each memory-region and remove old .txt binding link
>     reference in the description
>   - Remove optional reg property from r5fss node
>   - Move r5fss node out of axi node
>
> Changes in v4:
>   - Add memory-region, mboxes and mbox-names properties in dt-bindings example
>   - Add reserved memory region node and use it in Xilinx dt RPU subsystem node
>   - Remove redundant header files
>   - use dev_err_probe() to report errors during probe
>   - Fix missing check on error code returned by zynqmp_r5_add_rproc_core()
>   - Fix memory leaks all over the driver when resource allocation fails for any core
>   - make cluster mode check only at one place
>   - remove redundant initialization of variable
>   - remove redundant use of of_node_put()
>   - Fix Comment format problem
>   - Assign offset of zynqmp_tcm_banks instead of duplicating it
>   - Add tcm and memory regions rproc carveouts during prepare instead of parse_fw
>   - Remove rproc_mem_entry object from r5_core
>   - Use put_device() and rproc_del() APIs to fix memory leaks
>   - Replace pr_* with dev_*. This was missed in v3, fix now.
>   - Use "GPL" instead of "GPL v2" in MODULE_LICENSE macro. This was reported by checkpatch script.
>
> Changes in v3:
>   - Fix checkpatch script indentation warning
>   - Remove unused variable from xilinx remoteproc driver
>   - use C style comments, i.e /*...*/
>   - Remove redundant debug information which can be derived using /proc/device-tree
>   - Fix multiline comment format
>   - s/"final fot TCM"/"final for TCM"
>   - Function devm_kzalloc() does not return an code on error, just NULL.
>     Remove redundant error check for this function throughout the driver.
>   - Fix RPU mode configuration and add documentation accordingly
>   - Get rid of the indentations to match function documentation style with rest of the driver
>   - Fix memory leak by only using r5_rproc->priv and not replace it with new instance
>   - Use 'i' for the outer loop and 'j' for the inner one as per convention
>   - Remove redundant error and NULL checks throughout the driver
>   - Use devm_kcalloc() when more than one element is required
>   - Add memory-regions carveouts during driver probe instead of parse_fw call
>     This removes redundant copy of reserved_mem object in r5_core structure.
>   - Fix memory leak by using of_node_put()
>   - Fix indentation of tcm_mem_map function args
>   - Remove redundant init of variables
>   - Initialize tcm bank size variable for lockstep mode
>   - Replace u32 with phys_addr_t for variable stroing memory bank address
>   - Add documentation of TCM behavior in lockstep mode
>   - Use dev_get_drvdata instead of platform driver API
>   - Remove info level messages
>   - Fix checkpatch.pl warnings
>   - Add documentation for the Xilinx r5f platform to understand driver design
>
> Changes in v2:
>   - Remove proprietary copyright footer from cover letter
>
>
> Ben Levinsky (3):
>   firmware: xilinx: Add ZynqMP firmware ioctl enums for RPU
>     configuration.
>   firmware: xilinx: Add shutdown/wakeup APIs
>   firmware: xilinx: Add RPU configuration APIs
>
> Tanmay Shah (3):
>   dt-bindings: remoteproc: Add Xilinx RPU subsystem bindings
>   arm64: dts: xilinx: zynqmp: Add RPU subsystem device node
>   drivers: remoteproc: Add Xilinx r5 remoteproc driver
>
>  .../bindings/remoteproc/xlnx,r5f-rproc.yaml   |  128 ++
>  arch/arm64/boot/dts/xilinx/zynqmp.dtsi        |   33 +
>  drivers/firmware/xilinx/zynqmp.c              |   97 ++
>  drivers/remoteproc/Kconfig                    |   12 +
>  drivers/remoteproc/Makefile                   |    1 +
>  drivers/remoteproc/xlnx_r5_remoteproc.c       | 1045 +++++++++++++++++
>  include/dt-bindings/power/xlnx-zynqmp-power.h |    6 +
>  include/linux/firmware/xlnx-zynqmp.h          |   60 +
>  8 files changed, 1382 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/remoteproc/xlnx,r5f-rproc.yaml
>  create mode 100644 drivers/remoteproc/xlnx_r5_remoteproc.c
>
>
> base-commit: 01a1a0c8d456b11f2f6b9b822414481beaa44d6f
> --
> 2.25.1
>
Tanmay Shah May 20, 2022, 3:10 a.m. UTC | #2
On 5/19/22 3:19 AM, Mathieu Poirier <mathieu.poirier@linaro.org> wrote:
> Hi Tanmay,
> 
> I have replaced the previous version of this set with this one in my
> queue.  That way you don't go back to the bottom.
> 

Thanks Mathieu. Sure it will help.

> Thanks,
> Mathieu.
> 
> On Wed, 18 May 2022 at 20:46, Tanmay Shah <tanmay.shah@xilinx.com> wrote:
> >
> > This patch series adds bindings document for RPU subsystem found on Xilinx
> > ZynqMP platforms. It also adds device nodes and driver to enable RPU
> > subsystem in split mode and lockstep mode.
> >
> > Xilinx ZynqMP platform contains Remote Processing Unit(RPU). RPU subsystem
> > contains two arm cortex r5f cores. RPU subsystem can be configured in
> > split mode, lockstep mode and single-cpu mode.
> >
> > RPU subsystem also contains 4 Tightly Coupled Memory(TCM) banks.
> > In lockstep mode, all 4 banks are combined and total of 256KB memory is
> > made available to r5 core0. In split mode, both cores can access two
> > TCM banks i.e. 128 KB.
> >
> > RPU can also fetch data and execute instructions from DDR memory along with
> > TCM memory.
> > ---
> >
> > Changes in v5:
> >    - Add constraints of the possible values of xlnx,cluster-mode property
> >    - fix description of power-domains property for r5 core
> >    - Remove reg, address-cells and size-cells properties as it is not required
> >    - Fix description of mboxes property
> >    - Add description of each memory-region and remove old .txt binding link
> >      reference in the description
> >    - Remove optional reg property from r5fss node
> >    - Move r5fss node out of axi node
> >
> > Changes in v4:
> >    - Add memory-region, mboxes and mbox-names properties in dt-bindings example
> >    - Add reserved memory region node and use it in Xilinx dt RPU subsystem node
> >    - Remove redundant header files
> >    - use dev_err_probe() to report errors during probe
> >    - Fix missing check on error code returned by zynqmp_r5_add_rproc_core()
> >    - Fix memory leaks all over the driver when resource allocation fails for any core
> >    - make cluster mode check only at one place
> >    - remove redundant initialization of variable
> >    - remove redundant use of of_node_put()
> >    - Fix Comment format problem
> >    - Assign offset of zynqmp_tcm_banks instead of duplicating it
> >    - Add tcm and memory regions rproc carveouts during prepare instead of parse_fw
> >    - Remove rproc_mem_entry object from r5_core
> >    - Use put_device() and rproc_del() APIs to fix memory leaks
> >    - Replace pr_* with dev_*. This was missed in v3, fix now.
> >    - Use "GPL" instead of "GPL v2" in MODULE_LICENSE macro. This was reported by checkpatch script.
> >
> > Changes in v3:
> >    - Fix checkpatch script indentation warning
> >    - Remove unused variable from xilinx remoteproc driver
> >    - use C style comments, i.e /*...*/
> >    - Remove redundant debug information which can be derived using /proc/device-tree
> >    - Fix multiline comment format
> >    - s/"final fot TCM"/"final for TCM"
> >    - Function devm_kzalloc() does not return an code on error, just NULL.
> >      Remove redundant error check for this function throughout the driver.
> >    - Fix RPU mode configuration and add documentation accordingly
> >    - Get rid of the indentations to match function documentation style with rest of the driver
> >    - Fix memory leak by only using r5_rproc->priv and not replace it with new instance
> >    - Use 'i' for the outer loop and 'j' for the inner one as per convention
> >    - Remove redundant error and NULL checks throughout the driver
> >    - Use devm_kcalloc() when more than one element is required
> >    - Add memory-regions carveouts during driver probe instead of parse_fw call
> >      This removes redundant copy of reserved_mem object in r5_core structure.
> >    - Fix memory leak by using of_node_put()
> >    - Fix indentation of tcm_mem_map function args
> >    - Remove redundant init of variables
> >    - Initialize tcm bank size variable for lockstep mode
> >    - Replace u32 with phys_addr_t for variable stroing memory bank address
> >    - Add documentation of TCM behavior in lockstep mode
> >    - Use dev_get_drvdata instead of platform driver API
> >    - Remove info level messages
> >    - Fix checkpatch.pl warnings
> >    - Add documentation for the Xilinx r5f platform to understand driver design
> >
> > Changes in v2:
> >    - Remove proprietary copyright footer from cover letter
> >
> >
> > Ben Levinsky (3):
> >    firmware: xilinx: Add ZynqMP firmware ioctl enums for RPU
> >      configuration.
> >    firmware: xilinx: Add shutdown/wakeup APIs
> >    firmware: xilinx: Add RPU configuration APIs
> >
> > Tanmay Shah (3):
> >    dt-bindings: remoteproc: Add Xilinx RPU subsystem bindings
> >    arm64: dts: xilinx: zynqmp: Add RPU subsystem device node
> >    drivers: remoteproc: Add Xilinx r5 remoteproc driver
> >
> >   .../bindings/remoteproc/xlnx,r5f-rproc.yaml   |  128 ++
> >   arch/arm64/boot/dts/xilinx/zynqmp.dtsi        |   33 +
> >   drivers/firmware/xilinx/zynqmp.c              |   97 ++
> >   drivers/remoteproc/Kconfig                    |   12 +
> >   drivers/remoteproc/Makefile                   |    1 +
> >   drivers/remoteproc/xlnx_r5_remoteproc.c       | 1045 +++++++++++++++++
> >   include/dt-bindings/power/xlnx-zynqmp-power.h |    6 +
> >   include/linux/firmware/xlnx-zynqmp.h          |   60 +
> >   8 files changed, 1382 insertions(+)
> >   create mode 100644 Documentation/devicetree/bindings/remoteproc/xlnx,r5f-rproc.yaml
> >   create mode 100644 drivers/remoteproc/xlnx_r5_remoteproc.c
> >
> >
> > base-commit: 01a1a0c8d456b11f2f6b9b822414481beaa44d6f
> > --
> > 2.25.1
> >
>
Tanmay Shah May 26, 2022, 4:41 p.m. UTC | #3
On 5/19/22 8:10 PM, tanmay.shah@xilinx.com wrote:
>
>
> On 5/19/22 3:19 AM, Mathieu Poirier <mathieu.poirier@linaro.org> wrote:
>> Hi Tanmay,
>>
>> I have replaced the previous version of this set with this one in my
>> queue.  That way you don't go back to the bottom.
>>
>
> Thanks Mathieu. Sure it will help.
>
Hi Mathieu,

Just want to check on reviews. Are you any close to review this version ?

I have minor fixes in bindings, but if I can get reviews on driver in 
this version, I can send driver related changes in v6 as well.

If my patch is not any close in queue (let's say within next week) I 
will go ahead and post v6 that is fixing only bindings.


Thanks,

Tanmay

>> Thanks,
>> Mathieu.
>>
>> On Wed, 18 May 2022 at 20:46, Tanmay Shah <tanmay.shah@xilinx.com> 
>> wrote:
>> >
>> > This patch series adds bindings document for RPU subsystem found on 
>> Xilinx
>> > ZynqMP platforms. It also adds device nodes and driver to enable RPU
>> > subsystem in split mode and lockstep mode.
>> >
>> > Xilinx ZynqMP platform contains Remote Processing Unit(RPU). RPU 
>> subsystem
>> > contains two arm cortex r5f cores. RPU subsystem can be configured in
>> > split mode, lockstep mode and single-cpu mode.
>> >
>> > RPU subsystem also contains 4 Tightly Coupled Memory(TCM) banks.
>> > In lockstep mode, all 4 banks are combined and total of 256KB 
>> memory is
>> > made available to r5 core0. In split mode, both cores can access two
>> > TCM banks i.e. 128 KB.
>> >
>> > RPU can also fetch data and execute instructions from DDR memory 
>> along with
>> > TCM memory.
>> > ---
>> >
>> > Changes in v5:
>> >    - Add constraints of the possible values of xlnx,cluster-mode 
>> property
>> >    - fix description of power-domains property for r5 core
>> >    - Remove reg, address-cells and size-cells properties as it is 
>> not required
>> >    - Fix description of mboxes property
>> >    - Add description of each memory-region and remove old .txt 
>> binding link
>> >      reference in the description
>> >    - Remove optional reg property from r5fss node
>> >    - Move r5fss node out of axi node
>> >
>> > Changes in v4:
>> >    - Add memory-region, mboxes and mbox-names properties in 
>> dt-bindings example
>> >    - Add reserved memory region node and use it in Xilinx dt RPU 
>> subsystem node
>> >    - Remove redundant header files
>> >    - use dev_err_probe() to report errors during probe
>> >    - Fix missing check on error code returned by 
>> zynqmp_r5_add_rproc_core()
>> >    - Fix memory leaks all over the driver when resource allocation 
>> fails for any core
>> >    - make cluster mode check only at one place
>> >    - remove redundant initialization of variable
>> >    - remove redundant use of of_node_put()
>> >    - Fix Comment format problem
>> >    - Assign offset of zynqmp_tcm_banks instead of duplicating it
>> >    - Add tcm and memory regions rproc carveouts during prepare 
>> instead of parse_fw
>> >    - Remove rproc_mem_entry object from r5_core
>> >    - Use put_device() and rproc_del() APIs to fix memory leaks
>> >    - Replace pr_* with dev_*. This was missed in v3, fix now.
>> >    - Use "GPL" instead of "GPL v2" in MODULE_LICENSE macro. This 
>> was reported by checkpatch script.
>> >
>> > Changes in v3:
>> >    - Fix checkpatch script indentation warning
>> >    - Remove unused variable from xilinx remoteproc driver
>> >    - use C style comments, i.e /*...*/
>> >    - Remove redundant debug information which can be derived using 
>> /proc/device-tree
>> >    - Fix multiline comment format
>> >    - s/"final fot TCM"/"final for TCM"
>> >    - Function devm_kzalloc() does not return an code on error, just 
>> NULL.
>> >      Remove redundant error check for this function throughout the 
>> driver.
>> >    - Fix RPU mode configuration and add documentation accordingly
>> >    - Get rid of the indentations to match function documentation 
>> style with rest of the driver
>> >    - Fix memory leak by only using r5_rproc->priv and not replace 
>> it with new instance
>> >    - Use 'i' for the outer loop and 'j' for the inner one as per 
>> convention
>> >    - Remove redundant error and NULL checks throughout the driver
>> >    - Use devm_kcalloc() when more than one element is required
>> >    - Add memory-regions carveouts during driver probe instead of 
>> parse_fw call
>> >      This removes redundant copy of reserved_mem object in r5_core 
>> structure.
>> >    - Fix memory leak by using of_node_put()
>> >    - Fix indentation of tcm_mem_map function args
>> >    - Remove redundant init of variables
>> >    - Initialize tcm bank size variable for lockstep mode
>> >    - Replace u32 with phys_addr_t for variable stroing memory bank 
>> address
>> >    - Add documentation of TCM behavior in lockstep mode
>> >    - Use dev_get_drvdata instead of platform driver API
>> >    - Remove info level messages
>> >    - Fix checkpatch.pl warnings
>> >    - Add documentation for the Xilinx r5f platform to understand 
>> driver design
>> >
>> > Changes in v2:
>> >    - Remove proprietary copyright footer from cover letter
>> >
>> >
>> > Ben Levinsky (3):
>> >    firmware: xilinx: Add ZynqMP firmware ioctl enums for RPU
>> >      configuration.
>> >    firmware: xilinx: Add shutdown/wakeup APIs
>> >    firmware: xilinx: Add RPU configuration APIs
>> >
>> > Tanmay Shah (3):
>> >    dt-bindings: remoteproc: Add Xilinx RPU subsystem bindings
>> >    arm64: dts: xilinx: zynqmp: Add RPU subsystem device node
>> >    drivers: remoteproc: Add Xilinx r5 remoteproc driver
>> >
>> >   .../bindings/remoteproc/xlnx,r5f-rproc.yaml   |  128 ++
>> >   arch/arm64/boot/dts/xilinx/zynqmp.dtsi        |   33 +
>> >   drivers/firmware/xilinx/zynqmp.c              |   97 ++
>> >   drivers/remoteproc/Kconfig                    |   12 +
>> >   drivers/remoteproc/Makefile                   |    1 +
>> >   drivers/remoteproc/xlnx_r5_remoteproc.c       | 1045 
>> +++++++++++++++++
>> >   include/dt-bindings/power/xlnx-zynqmp-power.h |    6 +
>> >   include/linux/firmware/xlnx-zynqmp.h          |   60 +
>> >   8 files changed, 1382 insertions(+)
>> >   create mode 100644 
>> Documentation/devicetree/bindings/remoteproc/xlnx,r5f-rproc.yaml
>> >   create mode 100644 drivers/remoteproc/xlnx_r5_remoteproc.c
>> >
>> >
>> > base-commit: 01a1a0c8d456b11f2f6b9b822414481beaa44d6f
>> > --
>> > 2.25.1
>> >
>>
Mathieu Poirier May 26, 2022, 5:55 p.m. UTC | #4
On Thu, 26 May 2022 at 10:41, Tanmay Shah <tanmay.shah@xilinx.com> wrote:
>
>
> On 5/19/22 8:10 PM, tanmay.shah@xilinx.com wrote:
> >
> >
> > On 5/19/22 3:19 AM, Mathieu Poirier <mathieu.poirier@linaro.org> wrote:
> >> Hi Tanmay,
> >>
> >> I have replaced the previous version of this set with this one in my
> >> queue.  That way you don't go back to the bottom.
> >>
> >
> > Thanks Mathieu. Sure it will help.
> >
> Hi Mathieu,
>
> Just want to check on reviews. Are you any close to review this version ?
>
> I have minor fixes in bindings, but if I can get reviews on driver in
> this version, I can send driver related changes in v6 as well.
>
> If my patch is not any close in queue (let's say within next week) I
> will go ahead and post v6 that is fixing only bindings.

Unfortunately I won't be able to review your work before the end of
next week.  At this time this is what my queue look like:

[PATCH V4 0/2] remoteproc: support self recovery
[RFC PATCH v5 0/4] remoteproc: restructure the remoteproc VirtIO device
[PATCH v3 0/5] Introduce PRU remoteproc consumer API
[PATCH v5 0/6] Add Xilinx RPU subsystem support
[PATCH 0/2] dma-mapping, remoteproc: Fix dma_mem leak after rproc_shutdown

>
>
> Thanks,
>
> Tanmay
>
> >> Thanks,
> >> Mathieu.
> >>
> >> On Wed, 18 May 2022 at 20:46, Tanmay Shah <tanmay.shah@xilinx.com>
> >> wrote:
> >> >
> >> > This patch series adds bindings document for RPU subsystem found on
> >> Xilinx
> >> > ZynqMP platforms. It also adds device nodes and driver to enable RPU
> >> > subsystem in split mode and lockstep mode.
> >> >
> >> > Xilinx ZynqMP platform contains Remote Processing Unit(RPU). RPU
> >> subsystem
> >> > contains two arm cortex r5f cores. RPU subsystem can be configured in
> >> > split mode, lockstep mode and single-cpu mode.
> >> >
> >> > RPU subsystem also contains 4 Tightly Coupled Memory(TCM) banks.
> >> > In lockstep mode, all 4 banks are combined and total of 256KB
> >> memory is
> >> > made available to r5 core0. In split mode, both cores can access two
> >> > TCM banks i.e. 128 KB.
> >> >
> >> > RPU can also fetch data and execute instructions from DDR memory
> >> along with
> >> > TCM memory.
> >> > ---
> >> >
> >> > Changes in v5:
> >> >    - Add constraints of the possible values of xlnx,cluster-mode
> >> property
> >> >    - fix description of power-domains property for r5 core
> >> >    - Remove reg, address-cells and size-cells properties as it is
> >> not required
> >> >    - Fix description of mboxes property
> >> >    - Add description of each memory-region and remove old .txt
> >> binding link
> >> >      reference in the description
> >> >    - Remove optional reg property from r5fss node
> >> >    - Move r5fss node out of axi node
> >> >
> >> > Changes in v4:
> >> >    - Add memory-region, mboxes and mbox-names properties in
> >> dt-bindings example
> >> >    - Add reserved memory region node and use it in Xilinx dt RPU
> >> subsystem node
> >> >    - Remove redundant header files
> >> >    - use dev_err_probe() to report errors during probe
> >> >    - Fix missing check on error code returned by
> >> zynqmp_r5_add_rproc_core()
> >> >    - Fix memory leaks all over the driver when resource allocation
> >> fails for any core
> >> >    - make cluster mode check only at one place
> >> >    - remove redundant initialization of variable
> >> >    - remove redundant use of of_node_put()
> >> >    - Fix Comment format problem
> >> >    - Assign offset of zynqmp_tcm_banks instead of duplicating it
> >> >    - Add tcm and memory regions rproc carveouts during prepare
> >> instead of parse_fw
> >> >    - Remove rproc_mem_entry object from r5_core
> >> >    - Use put_device() and rproc_del() APIs to fix memory leaks
> >> >    - Replace pr_* with dev_*. This was missed in v3, fix now.
> >> >    - Use "GPL" instead of "GPL v2" in MODULE_LICENSE macro. This
> >> was reported by checkpatch script.
> >> >
> >> > Changes in v3:
> >> >    - Fix checkpatch script indentation warning
> >> >    - Remove unused variable from xilinx remoteproc driver
> >> >    - use C style comments, i.e /*...*/
> >> >    - Remove redundant debug information which can be derived using
> >> /proc/device-tree
> >> >    - Fix multiline comment format
> >> >    - s/"final fot TCM"/"final for TCM"
> >> >    - Function devm_kzalloc() does not return an code on error, just
> >> NULL.
> >> >      Remove redundant error check for this function throughout the
> >> driver.
> >> >    - Fix RPU mode configuration and add documentation accordingly
> >> >    - Get rid of the indentations to match function documentation
> >> style with rest of the driver
> >> >    - Fix memory leak by only using r5_rproc->priv and not replace
> >> it with new instance
> >> >    - Use 'i' for the outer loop and 'j' for the inner one as per
> >> convention
> >> >    - Remove redundant error and NULL checks throughout the driver
> >> >    - Use devm_kcalloc() when more than one element is required
> >> >    - Add memory-regions carveouts during driver probe instead of
> >> parse_fw call
> >> >      This removes redundant copy of reserved_mem object in r5_core
> >> structure.
> >> >    - Fix memory leak by using of_node_put()
> >> >    - Fix indentation of tcm_mem_map function args
> >> >    - Remove redundant init of variables
> >> >    - Initialize tcm bank size variable for lockstep mode
> >> >    - Replace u32 with phys_addr_t for variable stroing memory bank
> >> address
> >> >    - Add documentation of TCM behavior in lockstep mode
> >> >    - Use dev_get_drvdata instead of platform driver API
> >> >    - Remove info level messages
> >> >    - Fix checkpatch.pl warnings
> >> >    - Add documentation for the Xilinx r5f platform to understand
> >> driver design
> >> >
> >> > Changes in v2:
> >> >    - Remove proprietary copyright footer from cover letter
> >> >
> >> >
> >> > Ben Levinsky (3):
> >> >    firmware: xilinx: Add ZynqMP firmware ioctl enums for RPU
> >> >      configuration.
> >> >    firmware: xilinx: Add shutdown/wakeup APIs
> >> >    firmware: xilinx: Add RPU configuration APIs
> >> >
> >> > Tanmay Shah (3):
> >> >    dt-bindings: remoteproc: Add Xilinx RPU subsystem bindings
> >> >    arm64: dts: xilinx: zynqmp: Add RPU subsystem device node
> >> >    drivers: remoteproc: Add Xilinx r5 remoteproc driver
> >> >
> >> >   .../bindings/remoteproc/xlnx,r5f-rproc.yaml   |  128 ++
> >> >   arch/arm64/boot/dts/xilinx/zynqmp.dtsi        |   33 +
> >> >   drivers/firmware/xilinx/zynqmp.c              |   97 ++
> >> >   drivers/remoteproc/Kconfig                    |   12 +
> >> >   drivers/remoteproc/Makefile                   |    1 +
> >> >   drivers/remoteproc/xlnx_r5_remoteproc.c       | 1045
> >> +++++++++++++++++
> >> >   include/dt-bindings/power/xlnx-zynqmp-power.h |    6 +
> >> >   include/linux/firmware/xlnx-zynqmp.h          |   60 +
> >> >   8 files changed, 1382 insertions(+)
> >> >   create mode 100644
> >> Documentation/devicetree/bindings/remoteproc/xlnx,r5f-rproc.yaml
> >> >   create mode 100644 drivers/remoteproc/xlnx_r5_remoteproc.c
> >> >
> >> >
> >> > base-commit: 01a1a0c8d456b11f2f6b9b822414481beaa44d6f
> >> > --
> >> > 2.25.1
> >> >
> >>
Tanmay Shah May 26, 2022, 6:21 p.m. UTC | #5
Thanks Mathieu,

I will post v6 in that case, and get reviews on bindings and dts patch.

Tanmay

On 5/26/22 10:55 AM, Mathieu Poirier wrote:
> On Thu, 26 May 2022 at 10:41, Tanmay Shah <tanmay.shah@xilinx.com> wrote:
>>
>> On 5/19/22 8:10 PM, tanmay.shah@xilinx.com wrote:
>>>
>>> On 5/19/22 3:19 AM, Mathieu Poirier <mathieu.poirier@linaro.org> wrote:
>>>> Hi Tanmay,
>>>>
>>>> I have replaced the previous version of this set with this one in my
>>>> queue.  That way you don't go back to the bottom.
>>>>
>>> Thanks Mathieu. Sure it will help.
>>>
>> Hi Mathieu,
>>
>> Just want to check on reviews. Are you any close to review this version ?
>>
>> I have minor fixes in bindings, but if I can get reviews on driver in
>> this version, I can send driver related changes in v6 as well.
>>
>> If my patch is not any close in queue (let's say within next week) I
>> will go ahead and post v6 that is fixing only bindings.
> Unfortunately I won't be able to review your work before the end of
> next week.  At this time this is what my queue look like:
>
> [PATCH V4 0/2] remoteproc: support self recovery
> [RFC PATCH v5 0/4] remoteproc: restructure the remoteproc VirtIO device
> [PATCH v3 0/5] Introduce PRU remoteproc consumer API
> [PATCH v5 0/6] Add Xilinx RPU subsystem support
> [PATCH 0/2] dma-mapping, remoteproc: Fix dma_mem leak after rproc_shutdown
>
>>
>> Thanks,
>>
>> Tanmay
>>
>>>> Thanks,
>>>> Mathieu.
>>>>
>>>> On Wed, 18 May 2022 at 20:46, Tanmay Shah <tanmay.shah@xilinx.com>
>>>> wrote:
>>>>> This patch series adds bindings document for RPU subsystem found on
>>>> Xilinx
>>>>> ZynqMP platforms. It also adds device nodes and driver to enable RPU
>>>>> subsystem in split mode and lockstep mode.
>>>>>
>>>>> Xilinx ZynqMP platform contains Remote Processing Unit(RPU). RPU
>>>> subsystem
>>>>> contains two arm cortex r5f cores. RPU subsystem can be configured in
>>>>> split mode, lockstep mode and single-cpu mode.
>>>>>
>>>>> RPU subsystem also contains 4 Tightly Coupled Memory(TCM) banks.
>>>>> In lockstep mode, all 4 banks are combined and total of 256KB
>>>> memory is
>>>>> made available to r5 core0. In split mode, both cores can access two
>>>>> TCM banks i.e. 128 KB.
>>>>>
>>>>> RPU can also fetch data and execute instructions from DDR memory
>>>> along with
>>>>> TCM memory.
>>>>> ---
>>>>>
>>>>> Changes in v5:
>>>>>     - Add constraints of the possible values of xlnx,cluster-mode
>>>> property
>>>>>     - fix description of power-domains property for r5 core
>>>>>     - Remove reg, address-cells and size-cells properties as it is
>>>> not required
>>>>>     - Fix description of mboxes property
>>>>>     - Add description of each memory-region and remove old .txt
>>>> binding link
>>>>>       reference in the description
>>>>>     - Remove optional reg property from r5fss node
>>>>>     - Move r5fss node out of axi node
>>>>>
>>>>> Changes in v4:
>>>>>     - Add memory-region, mboxes and mbox-names properties in
>>>> dt-bindings example
>>>>>     - Add reserved memory region node and use it in Xilinx dt RPU
>>>> subsystem node
>>>>>     - Remove redundant header files
>>>>>     - use dev_err_probe() to report errors during probe
>>>>>     - Fix missing check on error code returned by
>>>> zynqmp_r5_add_rproc_core()
>>>>>     - Fix memory leaks all over the driver when resource allocation
>>>> fails for any core
>>>>>     - make cluster mode check only at one place
>>>>>     - remove redundant initialization of variable
>>>>>     - remove redundant use of of_node_put()
>>>>>     - Fix Comment format problem
>>>>>     - Assign offset of zynqmp_tcm_banks instead of duplicating it
>>>>>     - Add tcm and memory regions rproc carveouts during prepare
>>>> instead of parse_fw
>>>>>     - Remove rproc_mem_entry object from r5_core
>>>>>     - Use put_device() and rproc_del() APIs to fix memory leaks
>>>>>     - Replace pr_* with dev_*. This was missed in v3, fix now.
>>>>>     - Use "GPL" instead of "GPL v2" in MODULE_LICENSE macro. This
>>>> was reported by checkpatch script.
>>>>> Changes in v3:
>>>>>     - Fix checkpatch script indentation warning
>>>>>     - Remove unused variable from xilinx remoteproc driver
>>>>>     - use C style comments, i.e /*...*/
>>>>>     - Remove redundant debug information which can be derived using
>>>> /proc/device-tree
>>>>>     - Fix multiline comment format
>>>>>     - s/"final fot TCM"/"final for TCM"
>>>>>     - Function devm_kzalloc() does not return an code on error, just
>>>> NULL.
>>>>>       Remove redundant error check for this function throughout the
>>>> driver.
>>>>>     - Fix RPU mode configuration and add documentation accordingly
>>>>>     - Get rid of the indentations to match function documentation
>>>> style with rest of the driver
>>>>>     - Fix memory leak by only using r5_rproc->priv and not replace
>>>> it with new instance
>>>>>     - Use 'i' for the outer loop and 'j' for the inner one as per
>>>> convention
>>>>>     - Remove redundant error and NULL checks throughout the driver
>>>>>     - Use devm_kcalloc() when more than one element is required
>>>>>     - Add memory-regions carveouts during driver probe instead of
>>>> parse_fw call
>>>>>       This removes redundant copy of reserved_mem object in r5_core
>>>> structure.
>>>>>     - Fix memory leak by using of_node_put()
>>>>>     - Fix indentation of tcm_mem_map function args
>>>>>     - Remove redundant init of variables
>>>>>     - Initialize tcm bank size variable for lockstep mode
>>>>>     - Replace u32 with phys_addr_t for variable stroing memory bank
>>>> address
>>>>>     - Add documentation of TCM behavior in lockstep mode
>>>>>     - Use dev_get_drvdata instead of platform driver API
>>>>>     - Remove info level messages
>>>>>     - Fix checkpatch.pl warnings
>>>>>     - Add documentation for the Xilinx r5f platform to understand
>>>> driver design
>>>>> Changes in v2:
>>>>>     - Remove proprietary copyright footer from cover letter
>>>>>
>>>>>
>>>>> Ben Levinsky (3):
>>>>>     firmware: xilinx: Add ZynqMP firmware ioctl enums for RPU
>>>>>       configuration.
>>>>>     firmware: xilinx: Add shutdown/wakeup APIs
>>>>>     firmware: xilinx: Add RPU configuration APIs
>>>>>
>>>>> Tanmay Shah (3):
>>>>>     dt-bindings: remoteproc: Add Xilinx RPU subsystem bindings
>>>>>     arm64: dts: xilinx: zynqmp: Add RPU subsystem device node
>>>>>     drivers: remoteproc: Add Xilinx r5 remoteproc driver
>>>>>
>>>>>    .../bindings/remoteproc/xlnx,r5f-rproc.yaml   |  128 ++
>>>>>    arch/arm64/boot/dts/xilinx/zynqmp.dtsi        |   33 +
>>>>>    drivers/firmware/xilinx/zynqmp.c              |   97 ++
>>>>>    drivers/remoteproc/Kconfig                    |   12 +
>>>>>    drivers/remoteproc/Makefile                   |    1 +
>>>>>    drivers/remoteproc/xlnx_r5_remoteproc.c       | 1045
>>>> +++++++++++++++++
>>>>>    include/dt-bindings/power/xlnx-zynqmp-power.h |    6 +
>>>>>    include/linux/firmware/xlnx-zynqmp.h          |   60 +
>>>>>    8 files changed, 1382 insertions(+)
>>>>>    create mode 100644
>>>> Documentation/devicetree/bindings/remoteproc/xlnx,r5f-rproc.yaml
>>>>>    create mode 100644 drivers/remoteproc/xlnx_r5_remoteproc.c
>>>>>
>>>>>
>>>>> base-commit: 01a1a0c8d456b11f2f6b9b822414481beaa44d6f
>>>>> --
>>>>> 2.25.1
>>>>>