[PATCH v11 0/6] Add Xilinx RPU subsystem support

Tanmay Shah tanmays at amd.com
Wed Nov 16 12:46:11 PST 2022


Hi Mathieu,

Thanks for reviews.

On 11/16/22 10:38 AM, Mathieu Poirier wrote:
> Hi Tanmay,
>
> I think this patchset is ready to be merged.  Two things are missing though:
>
> Patches 1 and 2: We are missing a tag from one of the fellow in the DT brigade.
> They handle a lot of patches so let's give them time.
Sure.
>
> Patches 4 and 5: Michal's ack.  He already reviewed that code in the previous
> iteration but it wasn't added to this set, probably because you did some
> modification to get the patches to apply.  In that case it is usually fine to
> carry the tag since there isn't any modification to the code you are
> introducing.  But you aired on the side of caution and that is also fine.
> Please reach out to him again for another review.

Yes, I rebased on latest rproc-next and resolved merge conflict in those 
patches.

As it wasn't clean rebase, I removed Michal's Ack in case he prefer to 
review again.

I will reach out to him for reviews.

Thanks,

Tanmay

>
> Thanks,
> Mathieu
>
>
> On Mon, Nov 14, 2022 at 03:39:34PM -0800, Tanmay Shah 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 v11:
>>    - rename binding filename to match with compatible string
>>    - change $id: value accordingly as well
>>    - Rebase on latest rproc-next branch and resolve merge conflicts
>>    - remove redundant < 0 check for function of_get_available_child_count()
>>    - return 'ret' variable rather than masking the real error code when
>>      parsing "xlnx,cluster-mode" property fails
>>    - remove redundant use of devm_free()
>>    - call  of_reserved_mem_device_release() to release reserved memory
>>      in case driver probe fails or driver is removed.
>>
>> Changes in v10:
>>    - bindings: rename example node to remoteproc
>>    - dts: Rename node name to remoteproc
>>    - switch to AMD email ID
>>    - fix Kconfig unmet dependecy error reported by kernel test robot
>>    - fix r5_rproc object mem leak in function zynqmp_r5_add_rproc_core
>>    - add explanation of hardcoded TCM nodes
>>    - remove redundant ToDo comment
>>    - remove redundant check of tcm_bank_count and rmem_count
>>    - remove explicit free reserved_mem in zynqmp_r5_get_mem_region_node
>>    - fix leaked reference of child_dev during zynqmp_r5_cluster_init
>>      Also fix possible crash in exit path release_r5_cores
>>    - do not remove mem-region and tcm carveouts explicitly in case of failure.
>>      It will be deleted as part of rproc_del. This also simplifies logic to
>>      use rproc_add_carveout
>>    - fix documentation all over the driver
>>
>> Changes in v9:
>>    - bindings: remove power-domains property description
>>    - bindings: fix nitpicks in description of properties
>>    - dts: remove unused labels
>>    - replace devm_rproc_alloc with rproc_alloc
>>    - %s/until/while/r
>>    - %s/i > -1/i >=0/r
>>    - fix type of tcm_mode from int to enum rpu_tcm_comb
>>    - release &child_pdev->dev references
>>    - remove zynqmp_r5_core_exit()
>>    - undefined memory-region property isn't failure
>>    - remove tcm bank count check from ops
>>    - fix tcm bank turn-off sequence
>>    - fix parse_fw function documentation
>>    - do not use rproc_mem_entry_init on vdev0buffers
>>    - check tcm banks shouldn't be 0
>>    - declare variabls in reverse xmas tree order
>>    - remove extra line
>>
>> Changes in v8:
>>    - add 'items:' for sram property
>>
>> Changes in v7:
>>    - Add minItems in sram property
>>
>> Changes in v6:
>>    - Add maxItems to sram and memory-region property
>>
>> 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
>>
>>   .../remoteproc/xlnx,zynqmp-r5fss.yaml         |  135 +++
>>   arch/arm64/boot/dts/xilinx/zynqmp.dtsi        |   33 +
>>   drivers/firmware/xilinx/zynqmp.c              |   97 ++
>>   drivers/remoteproc/Kconfig                    |   13 +
>>   drivers/remoteproc/Makefile                   |    1 +
>>   drivers/remoteproc/xlnx_r5_remoteproc.c       | 1067 +++++++++++++++++
>>   include/dt-bindings/power/xlnx-zynqmp-power.h |    6 +
>>   include/linux/firmware/xlnx-zynqmp.h          |   60 +
>>   8 files changed, 1412 insertions(+)
>>   create mode 100644 Documentation/devicetree/bindings/remoteproc/xlnx,zynqmp-r5fss.yaml
>>   create mode 100644 drivers/remoteproc/xlnx_r5_remoteproc.c
>>
>>
>> base-commit: 6eed169c7fefd9cdbbccb5ba7a98470cc0c09c63
>> -- 
>> 2.25.1
>>



More information about the linux-arm-kernel mailing list