Message ID | 20221011212501.2661003-1-tanmay.shah@amd.com (mailing list archive) |
---|---|
Headers | show |
Series | Add Xilinx RPU subsystem support | expand |
I am done reviewing this set. Other than the comments from yesterday things look good. There is also the fact that this set doesn't apply to the current rproc-next. I hope to see another patchset from you in the coming 2 weeks so that can get this in for the v6.2 cycle. Thanks, Mathieu On Tue, Oct 11, 2022 at 02:24:55PM -0700, 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 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 > > .../bindings/remoteproc/xlnx,r5f-rproc.yaml | 135 +++ > arch/arm64/boot/dts/xilinx/zynqmp.dtsi | 32 + > drivers/firmware/xilinx/zynqmp.c | 97 ++ > drivers/remoteproc/Kconfig | 13 + > drivers/remoteproc/Makefile | 1 + > drivers/remoteproc/xlnx_r5_remoteproc.c | 1070 +++++++++++++++++ > include/dt-bindings/power/xlnx-zynqmp-power.h | 6 + > include/linux/firmware/xlnx-zynqmp.h | 60 + > 8 files changed, 1414 insertions(+) > create mode 100644 Documentation/devicetree/bindings/remoteproc/xlnx,r5f-rproc.yaml > create mode 100644 drivers/remoteproc/xlnx_r5_remoteproc.c > > > base-commit: abac55caaeaaabd31763a7c8a79c4cc096b415ae > -- > 2.25.1 >
Hi Mathieu, Thanks for reviews. Sure, I will fix yesterday's comments and send new patch rebased on latest rproc-next. Thanks, Tanmay On 11/2/22 12:53 PM, Mathieu Poirier <mathieu.poirier@linaro.org> wrote: > I am done reviewing this set. Other than the comments from yesterday things > look good. There is also the fact that this set doesn't apply to the current > rproc-next. > > I hope to see another patchset from you in the coming 2 weeks so that can get > this in for the v6.2 cycle. > > Thanks, > Mathieu > > On Tue, Oct 11, 2022 at 02:24:55PM -0700, 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 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 > > > > .../bindings/remoteproc/xlnx,r5f-rproc.yaml | 135 +++ > > arch/arm64/boot/dts/xilinx/zynqmp.dtsi | 32 + > > drivers/firmware/xilinx/zynqmp.c | 97 ++ > > drivers/remoteproc/Kconfig | 13 + > > drivers/remoteproc/Makefile | 1 + > > drivers/remoteproc/xlnx_r5_remoteproc.c | 1070 +++++++++++++++++ > > include/dt-bindings/power/xlnx-zynqmp-power.h | 6 + > > include/linux/firmware/xlnx-zynqmp.h | 60 + > > 8 files changed, 1414 insertions(+) > > create mode 100644 Documentation/devicetree/bindings/remoteproc/xlnx,r5f-rproc.yaml > > create mode 100644 drivers/remoteproc/xlnx_r5_remoteproc.c > > > > > > base-commit: abac55caaeaaabd31763a7c8a79c4cc096b415ae > > -- > > 2.25.1 > > >