[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <aSVYShXLirW--bYe@smile.fi.intel.com>
Date: Tue, 25 Nov 2025 09:18:34 +0200
From: Andy Shevchenko <andriy.shevchenko@...el.com>
To: Mikhail Kshevetskiy <mikhail.kshevetskiy@...sys.eu>
Cc: Lorenzo Bianconi <lorenzo@...nel.org>, Ray Liu <ray.liu@...oha.com>,
Mark Brown <broonie@...nel.org>, Rob Herring <robh@...nel.org>,
Krzysztof Kozlowski <krzk+dt@...nel.org>,
Conor Dooley <conor+dt@...nel.org>,
Matthias Brugger <matthias.bgg@...il.com>,
AngeloGioacchino Del Regno <angelogioacchino.delregno@...labora.com>,
Andy Shevchenko <andy@...nel.org>,
linux-arm-kernel@...ts.infradead.org, linux-spi@...r.kernel.org,
devicetree@...r.kernel.org, linux-kernel@...r.kernel.org,
linux-mediatek@...ts.infradead.org,
Andreas Gnau <andreas.gnau@...sys.eu>
Subject: Re: [PATCH v4 1/3] spi: airoha-snfi: en7523: workaround flash
damaging if UART_TXD was short to GND
On Tue, Nov 25, 2025 at 05:10:49AM +0300, Mikhail Kshevetskiy wrote:
> Airoha EN7523 specific bug
> --------------------------
> We found that some serial console may pull TX line to GROUND during board
> boot time. Airoha uses TX line as one of it's BOOT pins.
I know the term bootstrap, what does BOOT mean?
> On the EN7523 SoC this may lead to booting in RESERVED boot mode.
>
> It was found that some flashes operates incorrectly in RESERVED mode.
> Micron and Skyhigh flashes are definitely affected by the issue,
> Winbond flashes are NOT affected.
NOT --> not
> Details:
> --------
> DMA reading of odd pages on affected flashes operates incorrectly. Page
> reading offset (start of the page) on hardware level is replaced by 0x10.
> Thus results in incorrect data reading. As result OS loading becomes
> impossible.
>
> Usage of UBI make things even worse. On attaching, UBI will detects
> corruptions (because of wrong reading of odd pages) and will try to
> recover. For recovering UBI will erase and write 'damaged' blocks with
> a valid information. This will destroy all UBI data.
>
> Non-DMA reading is OK.
>
> This patch detects booting in reserved mode, turn off DMA and print big
> fat warning.
...
> - err = dma_set_mask(as_ctrl->dev, DMA_BIT_MASK(32));
> - if (err)
> - return err;
> + if (dma_enable) {
> + err = dma_set_mask(as_ctrl->dev, DMA_BIT_MASK(32));
> + if (err)
> + return err;
> + }
Why do you need this to be conditional? The settings of DMA mask should not
affect the (in)ability of the device to perform DMA. I.o.w. it should not
influence PIO mode. Can you confirm this?
--
With Best Regards,
Andy Shevchenko
Powered by blists - more mailing lists