Linux-ARM-Kernel Archive on lore.kernel.org
 help / color / mirror / Atom feed
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


  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