[PATCH 0/4] arm64: amlogic: t7: describe the VIM4 supplies and keep the fabric clocks running

Lucas Tanure posted 4 patches 4 weeks ago
.../amlogic/amlogic-t7-a311d2-khadas-vim4.dts | 110 +++++++++++++++++-
arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi   |  44 ++++++-
drivers/clk/meson/t7-peripherals.c            |  13 ++-
3 files changed, 156 insertions(+), 11 deletions(-)
[PATCH 0/4] arm64: amlogic: t7: describe the VIM4 supplies and keep the fabric clocks running
Posted by Lucas Tanure 4 weeks ago
The Khadas VIM4 has needed clk_ignore_unused to boot reliably. Without it
the board hangs at random, loses storage and corrupts memory, and the
failures move around from boot to boot.

Six of the SoC's PWM outputs drive the board's voltage regulators: the
always-on domain, both CPU clusters, the GPU, the NPU and the DRAM. None
of them were described, so Linux saw the outputs as unused and switched
them off about a second into boot. The regulators then drifted away from
the levels the bootloader had set, which is where the corruption and the
random hangs came from. 
Thanks to Chuan Liu from Amlogic for helping me indetify which clocks are
critical.

Separately, four clocks feed the bus that carries data between the
peripherals and memory. Nothing claims those either, and switching them
off leaves any device that starts a transfer afterwards stuck. The SD
card comes up about two seconds into boot, so it was the visible victim.

Two of the patches are pin group fixes. The description named groups that
do not exist in the pinctrl driver, so anything referencing them refused
to probe. That is what the supplies patch needs in order to work, and it
had a second effect worth mentioning: the failing probe left one device
unbound, which kept the clock controller's sync_state() deferred forever
and quietly stopped every peripheral clock from ever being switched off.
The board looked healthy for entirely the wrong reason.

Tested on a VIM4 booting from SD with no clk_ignore_unused: 74 clocks are
still switched off, but the card enumerates and the root filesystem mounts
and memtest runs clean over 512 MiB.

Thread about these issues in Vim4:

https://lore.kernel.org/linux-clk/3930906f-783b-4d72-9260-ba25cc8081cb@linux.com/

Lucas Tanure (4):
  clk: meson: t7: keep the memory fabric clocks running
  arm64: dts: amlogic: t7: fix the pin groups of two PWM outputs
  arm64: dts: amlogic: t7: khadas-vim4: add the PWM-driven supplies
  arm64: dts: amlogic: t7: fix the pin groups of the vsync PWM

 .../amlogic/amlogic-t7-a311d2-khadas-vim4.dts | 110 +++++++++++++++++-
 arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi   |  44 ++++++-
 drivers/clk/meson/t7-peripherals.c            |  13 ++-
 3 files changed, 156 insertions(+), 11 deletions(-)

-- 
2.55.0
Re: (subset) [PATCH 0/4] arm64: amlogic: t7: describe the VIM4 supplies and keep the fabric clocks running
Posted by Neil Armstrong 3 weeks, 5 days ago
Hi,

On Sat, 29 Aug 2026 10:47:54 +0100, Lucas Tanure wrote:
> The Khadas VIM4 has needed clk_ignore_unused to boot reliably. Without it
> the board hangs at random, loses storage and corrupts memory, and the
> failures move around from boot to boot.
> 
> Six of the SoC's PWM outputs drive the board's voltage regulators: the
> always-on domain, both CPU clusters, the GPU, the NPU and the DRAM. None
> of them were described, so Linux saw the outputs as unused and switched
> them off about a second into boot. The regulators then drifted away from
> the levels the bootloader had set, which is where the corruption and the
> random hangs came from.
> Thanks to Chuan Liu from Amlogic for helping me indetify which clocks are
> critical.
> 
> [...]

Thanks, Applied to https://git.kernel.org/pub/scm/linux/kernel/git/amlogic/linux.git (v7.3/fixes)

[2/4] arm64: dts: amlogic: t7: fix the pin groups of two PWM outputs
      https://git.kernel.org/amlogic/c/ae7be5c58a819259e5eb98a3abfa60842478f2ae
[3/4] arm64: dts: amlogic: t7: khadas-vim4: add the PWM-driven supplies
      https://git.kernel.org/amlogic/c/1e5a53bd16ac501e68463e84023d1bff543cc696
[4/4] arm64: dts: amlogic: t7: fix the pin groups of the vsync PWM
      https://git.kernel.org/amlogic/c/406292fd75f95aa3010fec95b5beb5a8b7e3ba3a

These changes has been applied on the intermediate git tree [1].

The v7.3/fixes branch will then be sent via a formal Pull Request to the Linux SoC maintainers
for inclusion in their intermediate git branches in order to be sent to Linus during
the next merge window, or sooner if it's a set of fixes.

In the cases of fixes, those will be merged in the current release candidate
kernel and as soon they appear on the Linux master branch they will be
backported to the previous Stable and Long-Stable kernels [2].

The intermediate git branches are merged daily in the linux-next tree [3],
people are encouraged testing these pre-release kernels and report issues on the
relevant mailing-lists.

If problems are discovered on those changes, please submit a signed-off-by revert
patch followed by a corrective changeset.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/amlogic/linux.git
[2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
[3] https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git

-- 
Neil
Re: (subset) [PATCH 0/4] arm64: amlogic: t7: describe the VIM4 supplies and keep the fabric clocks running
Posted by Lucas Tanure 3 weeks, 2 days ago
On Mon, Aug 31, 2026 at 1:44 PM Neil Armstrong
<neil.armstrong@linaro.org> wrote:
>
> Hi,
>
> On Sat, 29 Aug 2026 10:47:54 +0100, Lucas Tanure wrote:
> > The Khadas VIM4 has needed clk_ignore_unused to boot reliably. Without it
> > the board hangs at random, loses storage and corrupts memory, and the
> > failures move around from boot to boot.
> >
> > Six of the SoC's PWM outputs drive the board's voltage regulators: the
> > always-on domain, both CPU clusters, the GPU, the NPU and the DRAM. None
> > of them were described, so Linux saw the outputs as unused and switched
> > them off about a second into boot. The regulators then drifted away from
> > the levels the bootloader had set, which is where the corruption and the
> > random hangs came from.
> > Thanks to Chuan Liu from Amlogic for helping me indetify which clocks are
> > critical.
> >
> > [...]
>
> Thanks, Applied to https://git.kernel.org/pub/scm/linux/kernel/git/amlogic/linux.git (v7.3/fixes)
>
> [2/4] arm64: dts: amlogic: t7: fix the pin groups of two PWM outputs
>       https://git.kernel.org/amlogic/c/ae7be5c58a819259e5eb98a3abfa60842478f2ae
> [3/4] arm64: dts: amlogic: t7: khadas-vim4: add the PWM-driven supplies
>       https://git.kernel.org/amlogic/c/1e5a53bd16ac501e68463e84023d1bff543cc696
> [4/4] arm64: dts: amlogic: t7: fix the pin groups of the vsync PWM
>       https://git.kernel.org/amlogic/c/406292fd75f95aa3010fec95b5beb5a8b7e3ba3a
>
> These changes has been applied on the intermediate git tree [1].
>
> The v7.3/fixes branch will then be sent via a formal Pull Request to the Linux SoC maintainers
> for inclusion in their intermediate git branches in order to be sent to Linus during
> the next merge window, or sooner if it's a set of fixes.
>
> In the cases of fixes, those will be merged in the current release candidate
> kernel and as soon they appear on the Linux master branch they will be
> backported to the previous Stable and Long-Stable kernels [2].
>
> The intermediate git branches are merged daily in the linux-next tree [3],
> people are encouraged testing these pre-release kernels and report issues on the
> relevant mailing-lists.
>
> If problems are discovered on those changes, please submit a signed-off-by revert
> patch followed by a corrective changeset.
>
> [1] https://git.kernel.org/pub/scm/linux/kernel/git/amlogic/linux.git
> [2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
> [3] https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
>
> --
> Neil
>
Hi,
Please don't take this. I will submit a better version.
sys_ampipe_nand should not be critical.

Thanks,
Lucas
Re: (subset) [PATCH 0/4] arm64: amlogic: t7: describe the VIM4 supplies and keep the fabric clocks running
Posted by Jerome Brunet 3 weeks, 2 days ago
On jeu. 03 sept. 2026 at 11:05, Lucas Tanure <tanure@linux.com> wrote:

> On Mon, Aug 31, 2026 at 1:44 PM Neil Armstrong
> <neil.armstrong@linaro.org> wrote:
>>
>> Hi,
>>
>> On Sat, 29 Aug 2026 10:47:54 +0100, Lucas Tanure wrote:
>> > The Khadas VIM4 has needed clk_ignore_unused to boot reliably. Without it
>> > the board hangs at random, loses storage and corrupts memory, and the
>> > failures move around from boot to boot.
>> >
>> > Six of the SoC's PWM outputs drive the board's voltage regulators: the
>> > always-on domain, both CPU clusters, the GPU, the NPU and the DRAM. None
>> > of them were described, so Linux saw the outputs as unused and switched
>> > them off about a second into boot. The regulators then drifted away from
>> > the levels the bootloader had set, which is where the corruption and the
>> > random hangs came from.
>> > Thanks to Chuan Liu from Amlogic for helping me indetify which clocks are
>> > critical.
>> >
>> > [...]
>>
>> Thanks, Applied to https://git.kernel.org/pub/scm/linux/kernel/git/amlogic/linux.git (v7.3/fixes)
>>
>> [2/4] arm64: dts: amlogic: t7: fix the pin groups of two PWM outputs
>>       https://git.kernel.org/amlogic/c/ae7be5c58a819259e5eb98a3abfa60842478f2ae
>> [3/4] arm64: dts: amlogic: t7: khadas-vim4: add the PWM-driven supplies
>>       https://git.kernel.org/amlogic/c/1e5a53bd16ac501e68463e84023d1bff543cc696
>> [4/4] arm64: dts: amlogic: t7: fix the pin groups of the vsync PWM
>>       https://git.kernel.org/amlogic/c/406292fd75f95aa3010fec95b5beb5a8b7e3ba3a
>>
>> These changes has been applied on the intermediate git tree [1].
>>
>> The v7.3/fixes branch will then be sent via a formal Pull Request to the Linux SoC maintainers
>> for inclusion in their intermediate git branches in order to be sent to Linus during
>> the next merge window, or sooner if it's a set of fixes.
>>
>> In the cases of fixes, those will be merged in the current release candidate
>> kernel and as soon they appear on the Linux master branch they will be
>> backported to the previous Stable and Long-Stable kernels [2].
>>
>> The intermediate git branches are merged daily in the linux-next tree [3],
>> people are encouraged testing these pre-release kernels and report issues on the
>> relevant mailing-lists.
>>
>> If problems are discovered on those changes, please submit a signed-off-by revert
>> patch followed by a corrective changeset.
>>
>> [1] https://git.kernel.org/pub/scm/linux/kernel/git/amlogic/linux.git
>> [2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
>> [3] https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
>>
>> --
>> Neil
>>
> Hi,
> Please don't take this. I will submit a better version.
> sys_ampipe_nand should not be critical.

Please submit a fixup change on top of what you've already sent, with
the proper 'Fixes:' tag.

>
> Thanks,
> Lucas

-- 
Jerome
Re: (subset) [PATCH 0/4] arm64: amlogic: t7: describe the VIM4 supplies and keep the fabric clocks running
Posted by Jerome Brunet 3 weeks, 5 days ago
Applied to clk-meson (clk-meson-next), thanks!

[1/4] clk: meson: t7: keep the memory fabric clocks running
      https://github.com/BayLibre/clk-meson/commit/43e1705ecab9

Best regards,
--
Jerome