Message ID | 20201025221735.3062-1-digetx@gmail.com (mailing list archive) |
---|---|
Headers | show |
Series | Introduce memory interconnect for NVIDIA Tegra SoCs | expand |
On Mon, Oct 26, 2020 at 01:16:43AM +0300, Dmitry Osipenko wrote: > Hello, > > This series brings initial support for memory interconnect to Tegra20, > Tegra30 and Tegra124 SoCs. > > For the starter only display controllers and devfreq devices are getting > interconnect API support, others could be supported later on. The display > controllers have the biggest demand for interconnect API right now because > dynamic memory frequency scaling can't be done safely without taking into > account bandwidth requirement from the displays. In particular this series > fixes distorted display output on T30 Ouya and T124 TK1 devices. Hi, You introduced in v6 multiple new patches. Could you describe the dependencies, if any? Best regards, Krzysztof > Changelog: > > v6: - This series was massively reworked in comparison to v5, most of the > patches that previously got r-b need a new round of a review (!). > > - Added missed clk-rounding to the set() callback of EMC ICC providers. > Now clk_set_min_rate() doesn't error out on rate overflow. > > - Now peak bandwidth is properly taken into account by the set() callback > of EMC ICC providers. > > - EMC runs at 2x of the DRAM bus only on Tegra20, this now taken in account > properly by the EMC ICC set() callbacks. > > - ICC drivers use new icc_sync_state() and xlate_extended(). > > - ICC drivers support new TEGRA_MC_ICC_TAG_ISO for ICC paths, which > conveys to ICC driver that memory path uses isochronous transfers. > > - Added support for memory latency scaling to Tegra30 ICC provider. > It's required for fixing display FIFO underflows on T30. > > - Added basic interconnect support to Tegra124 drivers. > > - Tegra20/30/124 EMC drivers now support voltage scaling using generic > OPP API. > > - The display bandwidth management is reworked and improved. It now > supports both bandwidth and latency allocations. The nv-display is > now also taken into account properly, i.e. it's kept untouched. > The extra bandwidth reservation required for ISO clients is moved > from DC driver to the ICC drivers. > > - Dropped patch that tuned T20 display controller memory client because > turned out that it kills ~30% of memory bandwidth. It should be possible > to support client tuning, but it's too complicated for now. > > - Corrected display's cursor and winb-vfilter ICC clients. > The winb-vfilter was erroneously used in place of cursor's client > in device-trees. > > - Added devm_tegra_get_memory_controller() and switched drivers to > use it. > > - Device-tree OPP tables are now supported by memory and devfreq > drivers. > > - Tegra20-devfeq driver is reworked and now uses EMC-stats instead > of IMC-stats (which are nearly identical modules) because previously > I failed to understand how EMC-stats work and succeeded this time, > thinking that it simply doesn't work. This removes a bit icky dependency > on using both EMC and MC drivers simultaneously by the devfreq driver. > > - Tegra20-devfeq driver now is a sub-device of the EMC, it also now uses > interconnect API for driving memory bandwidth. > > - Tegra30-devfreq got interconnect support. > > - Devfreq patches now use dev_err_probe(), which was suggested by > Chanwoo Choi. > > - Added acks from Chanwoo Choi and Rob Herring to the reviewed and > unchanged patches. > > - Added tested-by from Peter Geis and Nicolas Chauvet, who tested this > series on Ouya and TK1 devices, reporting that it fixes display > corruption on these devices which happened due to insufficient memory > bandwidth. > > - Added patches to fix T20 EMC registers size. > > - Fixed missing LA entry for PTC in the Tegra MC drivers. > > - New and updated patches in v6: > > dt-bindings: memory: tegra20: emc: Correct registers range in example > dt-bindings: memory: tegra20: emc: Document nvidia,memory-controller property > dt-bindings: memory: tegra20: emc: Document OPP table and voltage regulator > dt-bindings: memory: tegra20: emc: Document mfd-simple compatible and statistics sub-device > dt-bindings: memory: tegra30: emc: Document OPP table and voltage regulator > dt-bindings: memory: tegra124: mc: Document new interconnect property > dt-bindings: memory: tegra124: emc: Document new interconnect property > dt-bindings: memory: tegra124: emc: Document OPP table and voltage regulator > dt-bindings: tegra30-actmon: Document OPP and interconnect properties > dt-bindings: memory: tegra124: Add memory client IDs > ARM: tegra: Correct EMC registers size in Tegra20 device-tree > ARM: tegra: Add interconnect properties to Tegra124 device-tree > ARM: tegra: Add nvidia,memory-controller phandle to Tegra20 EMC device-tree > ARM: tegra: Add DVFS properties to Tegra20 EMC device-tree node > ARM: tegra: Add DVFS properties to Tegra30 EMC and ACTMON device-tree nodes > ARM: tegra: Add DVFS properties to Tegra124 EMC and ACTMON device-tree nodes > memory: tegra: Add and use devm_tegra_get_memory_controller() > memory: tegra-mc: Add interconnect framework > memory: tegra20: Support interconnect framework > memory: tegra20-emc: Skip parsing of emc-stats DT sub-node > memory: tegra: Add missing latency allowness entry for Page Table Cache > memory: tegra: Add FIFO sizes to Tegra30 memory clients > memory: tegra30: Support interconnect framework > memory: tegra124-emc: Make driver modular > memory: tegra124: Support interconnect framework > memory: tegra: Remove superfluous error messages around platform_get_irq() > drm/tegra: dc: Support memory bandwidth management > drm/tegra: dc: Extend debug stats with total number of events > PM / devfreq: tegra20: Convert to EMC_STAT driver, support interconnect and device-tree > PM / devfreq: tegra30: Support interconnect and OPPs from device-tree > PM / devfreq: tegra30: Separate configurations per-SoC generation > opp: Put interconnect paths outside of opp_table_lock
26.10.2020 18:08, Krzysztof Kozlowski пишет: > On Mon, Oct 26, 2020 at 01:16:43AM +0300, Dmitry Osipenko wrote: >> Hello, >> >> This series brings initial support for memory interconnect to Tegra20, >> Tegra30 and Tegra124 SoCs. >> >> For the starter only display controllers and devfreq devices are getting >> interconnect API support, others could be supported later on. The display >> controllers have the biggest demand for interconnect API right now because >> dynamic memory frequency scaling can't be done safely without taking into >> account bandwidth requirement from the displays. In particular this series >> fixes distorted display output on T30 Ouya and T124 TK1 devices. > > Hi, > > You introduced in v6 multiple new patches. Could you describe the > dependencies, if any? Hello, The v6 dropped some older patches and replaced them with the new patches. Previously I wanted to postpone the more complex changes for later times, like supporting OPP tables and DVFS, but then the review started to take more time than was expected and there was enough time to complete those features. There are five basic sets of patches: 1. DT bindings 2. DT changes 3. SoC, clk and memory 4. devfreq 5. DRM Each set could be applied separately. Memory patches have a build dependency on the SoC and clk patches. The "tegra-mc: Add interconnect framework" and "Add and use devm_tegra_get_memory_controller()" are the root build dependencies for all memory/ patches. Other patches are grouped per SoC generation (Tegra20/30/124), patches within a SoC-gen group are interdependent. I suppose the best variant would be to merge the whole series via tegra-tree in order to preserve logical order of the patches. Although, merging each set of patches separately also should be okay to do.
On Mon, Oct 26, 2020 at 10:14:10PM +0300, Dmitry Osipenko wrote: > 26.10.2020 18:08, Krzysztof Kozlowski пишет: > > On Mon, Oct 26, 2020 at 01:16:43AM +0300, Dmitry Osipenko wrote: > >> Hello, > >> > >> This series brings initial support for memory interconnect to Tegra20, > >> Tegra30 and Tegra124 SoCs. > >> > >> For the starter only display controllers and devfreq devices are getting > >> interconnect API support, others could be supported later on. The display > >> controllers have the biggest demand for interconnect API right now because > >> dynamic memory frequency scaling can't be done safely without taking into > >> account bandwidth requirement from the displays. In particular this series > >> fixes distorted display output on T30 Ouya and T124 TK1 devices. > > > > Hi, > > > > You introduced in v6 multiple new patches. Could you describe the > > dependencies, if any? > > Hello, > > The v6 dropped some older patches and replaced them with the new > patches. Previously I wanted to postpone the more complex changes for > later times, like supporting OPP tables and DVFS, but then the review > started to take more time than was expected and there was enough time to > complete those features. > > There are five basic sets of patches: > > 1. DT bindings > 2. DT changes > 3. SoC, clk and memory > 4. devfreq > 5. DRM > > Each set could be applied separately. > > Memory patches have a build dependency on the SoC and clk patches. > > The "tegra-mc: Add interconnect framework" and "Add and use > devm_tegra_get_memory_controller()" are the root build dependencies for > all memory/ patches. Other patches are grouped per SoC generation > (Tegra20/30/124), patches within a SoC-gen group are interdependent. > > I suppose the best variant would be to merge the whole series via > tegra-tree in order to preserve logical order of the patches. Although, > merging each set of patches separately also should be okay to do. Thanks for explanation. I already have three patches for Tegra MC (and probably two more will be respun) so this might be conflict-prone. The easiest in such case is to provide me soc and clk patches on the branch, so I could keep all Tegra MC together. Best regards, Krzysztof
27.10.2020 11:52, Krzysztof Kozlowski пишет: > On Mon, Oct 26, 2020 at 10:14:10PM +0300, Dmitry Osipenko wrote: >> 26.10.2020 18:08, Krzysztof Kozlowski пишет: >>> On Mon, Oct 26, 2020 at 01:16:43AM +0300, Dmitry Osipenko wrote: >>>> Hello, >>>> >>>> This series brings initial support for memory interconnect to Tegra20, >>>> Tegra30 and Tegra124 SoCs. >>>> >>>> For the starter only display controllers and devfreq devices are getting >>>> interconnect API support, others could be supported later on. The display >>>> controllers have the biggest demand for interconnect API right now because >>>> dynamic memory frequency scaling can't be done safely without taking into >>>> account bandwidth requirement from the displays. In particular this series >>>> fixes distorted display output on T30 Ouya and T124 TK1 devices. >>> >>> Hi, >>> >>> You introduced in v6 multiple new patches. Could you describe the >>> dependencies, if any? >> >> Hello, >> >> The v6 dropped some older patches and replaced them with the new >> patches. Previously I wanted to postpone the more complex changes for >> later times, like supporting OPP tables and DVFS, but then the review >> started to take more time than was expected and there was enough time to >> complete those features. >> >> There are five basic sets of patches: >> >> 1. DT bindings >> 2. DT changes >> 3. SoC, clk and memory >> 4. devfreq >> 5. DRM >> >> Each set could be applied separately. >> >> Memory patches have a build dependency on the SoC and clk patches. >> >> The "tegra-mc: Add interconnect framework" and "Add and use >> devm_tegra_get_memory_controller()" are the root build dependencies for >> all memory/ patches. Other patches are grouped per SoC generation >> (Tegra20/30/124), patches within a SoC-gen group are interdependent. >> >> I suppose the best variant would be to merge the whole series via >> tegra-tree in order to preserve logical order of the patches. Although, >> merging each set of patches separately also should be okay to do. > > Thanks for explanation. I already have three patches for Tegra MC (and > probably two more will be respun) so this might be conflict-prone. The > easiest in such case is to provide me soc and clk patches on the branch, > so I could keep all Tegra MC together. Okay, but those T210 patches don't touch the same code, neither same source files. For now there should be no merge conflicts.