From: Agustin Santiago Isasmendi <isasmendi.agus@gmail.com>
To: "Stefan Dösinger" <stefandoesinger@gmail.com>,
"Navid Ghahremani" <ghahramani.navid@gmail.com>
Cc: linux-arm-kernel@lists.infradead.org, arnd@arndb.de, krzk@kernel.org
Subject: Re: [PATCH v2 00/24] ARM: zte: Add support for Sanechips ZX279128S and ZTE ZXHN H3600
Date: Tue, 10 Nov 2026 16:35:22 +0100 [thread overview]
Message-ID: <20261110153522.1620088-1-isasmendi.agus@gmail.com> (raw)
In-Reply-To: <taToYWqTRsyGXzOXNcd5Qw@gmail.com>
Hi Stefan,
On Sun, 8 Nov 2026, Stefan Dösinger wrote:
> However, Arnd Bergmann didn't like the hack and it looks like we don't
> understand what exactly is going on, so they agreed to postpone this
> particular issue for now (see follow-up replies in the linked thread). If you
> have further ideas what ZTE got wrong in the hardware and what kind of
> workaround they use that would be helpful
Thanks, I had missed that thread. The RFC I mentioned was the same
lock, so I will not send it. Here is what I know so far, from my H3600
on Navid's v2.
What ZTE does (from their 4.1.25 kernel binary): l2x0_lock is taken
around every line write of the L2C range operations and around the
Cache Sync, and around every register read of their mt7915 driver
(through an exported fixed_pci_read_u32()). A later module only makes
the lock finer: the range ops drop it every 2 KiB, and a pending PCIe
read makes them drop it early. I found no chicken bit: their L2C
setup matches ours and their PCIe init has no such setting.
What goes wrong: a PCIe read on one CPU deadlocks against an L2C-310
line operation by PA or a Cache Sync on the other. The TRM (DDI
0246H, 3.3.10) says those operations stall the L2C slave ports until
they complete, and here the PCIe read apparently cannot complete
meanwhile. 3 boots x 8 minutes of WiFi traffic each:
no workaround hang 3/3
maxcpus=1 ok 3/3
arm,outer-sync-disable hang 3/3
lock around the Cache Sync only hang 3/3
lock around the range ops only hang 3/3
lock on the L2C side only, reads unlocked hang 3/3
lock on both sides (as ZTE) ok 3/3
dma-coherent firmware load fails
So PCIe DMA is not coherent and the maintenance has to stay.
A possible way forward: Arnd's fallback of SMP with the L2 off works,
no hang in 3 boots x 8 minutes (75 transfers). It cannot be done from
the DT today, because l2x0_of_init() ignores status = "disabled"; I
had to change the compatible for the test. So I would suggest:
- a small patch so that l2x0_of_init() honours the status property
(no in-tree PL310 node is disabled, so nothing else changes);
- Navid's DT disables the L2C, so mainline is stable with WiFi;
- the lock stays downstream in OpenWrt until there is a better fix.
I haven't measured the cost of the L2 off properly yet; I can do that
if this direction sounds reasonable.
Cheers,
Agustin
next prev parent reply other threads:[~2026-11-10 15:35 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-14 7:20 [PATCH v2 00/24] ARM: zte: Add support for Sanechips ZX279128S and ZTE ZXHN H3600 Navid Ghahremani
2026-10-14 7:20 ` [PATCH v2 01/24] MAINTAINERS: Consolidate ARM/ZTE ZX SOC SUPPORT with Stefan Doesinger Navid Ghahremani
2026-10-14 20:11 ` Stefan Dösinger
2026-10-14 7:20 ` [PATCH v2 02/24] dt-bindings: arm: Add ZTE ZX279128S platform descriptions Navid Ghahremani
2026-10-27 21:30 ` Rob Herring (Arm)
2026-10-14 7:20 ` [PATCH v2 03/24] ARM: zte: Add ZX279128S platform and CPU hotplug support Navid Ghahremani
2026-10-14 7:20 ` [PATCH v2 04/24] dt-bindings: clock: Add ZTE ZX279128S CRM clock bindings Navid Ghahremani
2026-10-14 21:48 ` Stefan Dösinger
2026-10-15 9:25 ` Krzysztof Kozlowski
2026-10-15 9:26 ` Krzysztof Kozlowski
2026-10-14 7:20 ` [PATCH v2 05/24] dt-bindings: reset: Add ZTE ZX279128S reset controller bindings Navid Ghahremani
2026-10-15 9:27 ` Krzysztof Kozlowski
2026-10-14 7:20 ` [PATCH v2 06/24] clk: zte: Add ZX279128S CRM clock and reset driver Navid Ghahremani
2026-10-14 13:21 ` Philipp Zabel
2026-10-14 19:39 ` Stefan Dösinger
2026-10-14 7:20 ` [PATCH v2 07/24] dt-bindings: gpio: Add ZTE ZX279128S GPIO controller Navid Ghahremani
2026-10-27 21:31 ` Rob Herring (Arm)
2026-10-14 7:20 ` [PATCH v2 08/24] gpio: Add ZTE ZX279128S GPIO driver Navid Ghahremani
2026-10-14 21:11 ` Stefan Dösinger
2026-10-15 12:25 ` Bartosz Golaszewski
2026-10-14 7:20 ` [PATCH v2 09/24] dt-bindings: pinctrl: pinctrl-single: Add ZTE ZX279128S pin mux Navid Ghahremani
2026-10-17 16:20 ` Krzysztof Kozlowski
2026-10-14 7:20 ` [PATCH v2 10/24] dt-bindings: phy: Add ZTE ZX279128S PCIe PHY binding Navid Ghahremani
2026-10-15 9:29 ` Krzysztof Kozlowski
2026-10-14 7:20 ` [PATCH v2 11/24] phy: zte: Add ZTE ZX279128S PCIe PHY driver Navid Ghahremani
2026-11-06 10:13 ` Agustin Santiago Isasmendi
2026-10-14 7:20 ` [PATCH v2 12/24] dt-bindings: PCI: Add ZTE ZX279128S host controller Navid Ghahremani
2026-10-27 21:40 ` Rob Herring
2026-10-14 7:20 ` [PATCH v2 13/24] PCI: dwc: Add ZTE ZX279128S host controller driver Navid Ghahremani
2026-10-14 13:19 ` Bjorn Helgaas
2026-10-14 21:06 ` Stefan Dösinger
2026-10-14 7:20 ` [PATCH v2 14/24] dt-bindings: net: Add ZTE ZX279128S MDIO controller Navid Ghahremani
2026-10-27 21:34 ` Rob Herring (Arm)
2026-10-14 7:20 ` [PATCH v2 15/24] net: mdio: " Navid Ghahremani
2026-10-14 12:13 ` Andrew Lunn
2026-10-14 7:20 ` [PATCH v2 16/24] net: phy: Add Sanechips ZX5201 PHY support Navid Ghahremani
2026-10-14 12:37 ` Andrew Lunn
2026-10-14 7:20 ` [PATCH v2 17/24] dt-bindings: net: Add ZTE ZX279128S Ethernet switch Navid Ghahremani
2026-10-27 21:48 ` Rob Herring
2026-10-14 7:20 ` [PATCH v2 18/24] net: ethernet: zte: Add ZX279128S Ethernet switch driver Navid Ghahremani
2026-10-14 7:20 ` [PATCH v2 19/24] dt-bindings: spi: Add ZTE ZX family SPI flash controller binding Navid Ghahremani
2026-10-14 20:33 ` Stefan Dösinger
2026-10-15 9:35 ` Krzysztof Kozlowski
2026-10-15 9:36 ` Krzysztof Kozlowski
2026-10-14 7:21 ` [PATCH v2 20/24] spi: zx: Add ZTE ZX family SPI flash controller driver Navid Ghahremani
2026-10-14 19:28 ` Stefan Dösinger
2026-10-15 9:34 ` Krzysztof Kozlowski
2026-10-15 14:29 ` kernel test robot
2026-10-19 12:15 ` Stefan Dösinger
2026-10-14 7:21 ` [PATCH v2 21/24] dt-bindings: usb: Add ZTE ZX279128S DWC3 controller Navid Ghahremani
2026-10-14 7:21 ` [PATCH v2 22/24] usb: dwc3: generic-plat: Add ZTE ZX279128S Navid Ghahremani
2026-11-04 0:48 ` Thinh Nguyen
2026-10-14 7:21 ` [PATCH v2 23/24] ARM: dts: zte: Add ZX279128S SoC description Navid Ghahremani
2026-10-14 7:21 ` [PATCH v2 24/24] ARM: dts: zte: Add ZTE ZXHN H3600 board Navid Ghahremani
2026-10-14 12:52 ` Andrew Lunn
2026-11-06 10:13 ` Agustin Santiago Isasmendi
2026-10-14 20:00 ` [PATCH v2 00/24] ARM: zte: Add support for Sanechips ZX279128S and ZTE ZXHN H3600 Stefan Dösinger
2026-11-06 10:11 ` Agustin Santiago Isasmendi
2026-11-06 19:08 ` Agustin Santiago Isasmendi
2026-11-08 11:09 ` Stefan Dösinger
2026-11-10 15:35 ` Agustin Santiago Isasmendi [this message]
2026-11-11 22:02 ` Stefan Dösinger
2026-11-12 16:10 ` Agustin Santiago Isasmendi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261110153522.1620088-1-isasmendi.agus@gmail.com \
--to=isasmendi.agus@gmail.com \
--cc=arnd@arndb.de \
--cc=ghahramani.navid@gmail.com \
--cc=krzk@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=stefandoesinger@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox