From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shawn Guo Subject: Re: [PATCH 3/3] arm64: dts: mark lx2160a esdhc controllers dma coherent Date: Mon, 7 Oct 2019 20:42:19 +0800 Message-ID: <20191007124217.GO7150@dragon> References: <20190922102341.GO25745@shell.armlinux.org.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: Russell King Cc: Mark Rutland , devicetree@vger.kernel.org, dann frazier , Will Deacon , Li Yang , Nicolin Chen , Rob Herring , "Y.b. Lu" , Robin Murphy , Christoph Hellwig , linux-arm-kernel@lists.infradead.org List-Id: devicetree@vger.kernel.org On Sun, Sep 22, 2019 at 11:27:03AM +0100, Russell King wrote: > The LX2160A esdhc controllers are setup by the driver to be DMA > coherent, but without marking them as such in DT, Linux thinks they > are not. This can lead to random sporadic DMA errors, even to the > extent of preventing boot, such as: > > mmc0: ADMA error > mmc0: sdhci: ============ SDHCI REGISTER DUMP =========== > mmc0: sdhci: Sys addr: 0x00000000 | Version: 0x00002202 > mmc0: sdhci: Blk size: 0x00000008 | Blk cnt: 0x00000001 > mmc0: sdhci: Argument: 0x00000000 | Trn mode: 0x00000013 > mmc0: sdhci: Present: 0x01f50008 | Host ctl: 0x00000038 > mmc0: sdhci: Power: 0x00000003 | Blk gap: 0x00000000 > mmc0: sdhci: Wake-up: 0x00000000 | Clock: 0x000040d8 > mmc0: sdhci: Timeout: 0x00000003 | Int stat: 0x00000001 > mmc0: sdhci: Int enab: 0x037f108f | Sig enab: 0x037f108b > mmc0: sdhci: ACmd stat: 0x00000000 | Slot int: 0x00002202 > mmc0: sdhci: Caps: 0x35fa0000 | Caps_1: 0x0000af00 > mmc0: sdhci: Cmd: 0x0000333a | Max curr: 0x00000000 > mmc0: sdhci: Resp[0]: 0x00000920 | Resp[1]: 0x001d8a33 > mmc0: sdhci: Resp[2]: 0x325b5900 | Resp[3]: 0x3f400e00 > mmc0: sdhci: Host ctl2: 0x00000000 > mmc0: sdhci: ADMA Err: 0x00000009 | ADMA Ptr: 0x000000236d43820c > mmc0: sdhci: ============================================ > mmc0: error -5 whilst initialising SD card > > These are caused by the device's descriptor fetch hitting speculatively > loaded CPU cache lines that the CPU does not see through the normal, > non-cacheable DMA coherent mapping that it uses for non-coherent > devices. > > DT and the device must agree wrt whether the device is DMA coherent or > not. > > Signed-off-by: Russell King Applied, thanks.