Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp3960679imm; Mon, 11 Jun 2018 04:52:31 -0700 (PDT) X-Google-Smtp-Source: ADUXVKIYr4pgwbAuaI+TG3aJcRVaIXnbgMhp9WDiqtWpW9G2MnHrsGdRw/YO7dB4HieTLfD4BpS7 X-Received: by 2002:a63:b646:: with SMTP id v6-v6mr14252989pgt.276.1528717951636; Mon, 11 Jun 2018 04:52:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1528717951; cv=none; d=google.com; s=arc-20160816; b=x2zRHSDOJoUtCN6TyKz/ntiO0Kj80+1gEY1phnhYQCJrkEVBcGhC6C/D8117XQ+B+B 6/CcHmQ3avoYhG22v8HDjwDR96P8ZRCI+6I4BvU+Y5bAYXfI1aU0BJLCKl32cKTPMEF6 JaHndBs/sRWkVmHiR7vVopQdYvE+vtl0LEe35oR9No6IyHwK2XPyRHO7Arkr34PdYBUn IP4def7/h7DbdQNUz0oF5c+ueHxO5mmq+yuUGKtnpkmXZeLDZoskt4Ug6JOtflHunu/5 uMRkskVg66vFCIx4T4bjIk9Kc3aH+R3WzbBVDdiYgqcv5xipKCgvzLKXoqOWgq8elar4 zOVQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:subject:cc:to:from:date :arc-authentication-results; bh=7sQXn5BsqLO+5Ynjh0Emf+hXdC92LRDir8WDeohbMgc=; b=tm5zZzkTYwnkCL6LIgqzIFP3k3T3A30B2sXfQihJ6WyYhgki4UdkqGyUvi8CVOQOOP B0p9Soyhj0lDsnaOkSMgai3fiZchdHEucY5h9qGEKfm3T0aRxJWVDIBP403f6iyuNiV5 dEaXJuxhvtRtd8Uhrq5VAAsMpvhSGv4RZbd6vgdTZ7iVkz3wGmiLDMfzcPizYaiURR9h 39Z4b0Kblo+G0JBoJLnY7ILSQuydaW8NNDJSclpvtRjDH2AzmPFJzW7NaufNzB13H6X3 RMvM3Rjdb5M+7iKyzmPVabquyNhyXoL8WW3Hf6h1I/9G+3VVGJNMVQrdGYzP3FzYKAJP epLA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id u8-v6si20115708plh.492.2018.06.11.04.52.16; Mon, 11 Jun 2018 04:52:31 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933014AbeFKLu2 (ORCPT + 99 others); Mon, 11 Jun 2018 07:50:28 -0400 Received: from mail.bootlin.com ([62.4.15.54]:49661 "EHLO mail.bootlin.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932942AbeFKLu0 (ORCPT ); Mon, 11 Jun 2018 07:50:26 -0400 Received: by mail.bootlin.com (Postfix, from userid 110) id E858820981; Mon, 11 Jun 2018 13:50:23 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mail.bootlin.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,SHORTCIRCUIT shortcircuit=ham autolearn=disabled version=3.4.0 Received: from bbrezillon (AAubervilliers-681-1-37-30.w90-88.abo.wanadoo.fr [90.88.156.30]) by mail.bootlin.com (Postfix) with ESMTPSA id 70F36207A5; Mon, 11 Jun 2018 13:50:13 +0200 (CEST) Date: Mon, 11 Jun 2018 13:50:13 +0200 From: Boris Brezillon To: Dmitry Osipenko Cc: Stefan Agner , dwmw2@infradead.org, computersforpeace@gmail.com, marek.vasut@gmail.com, robh+dt@kernel.org, mark.rutland@arm.com, thierry.reding@gmail.com, dev@lynxeye.de, miquel.raynal@bootlin.com, richard@nod.at, marcel@ziswiler.com, krzk@kernel.org, benjamin.lindqvist@endian.se, jonathanh@nvidia.com, pdeschrijver@nvidia.com, pgaikwad@nvidia.com, mirza.krak@gmail.com, linux-mtd@lists.infradead.org, linux-tegra@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v3 4/6] mtd: rawnand: add NVIDIA Tegra NAND Flash controller driver Message-ID: <20180611135013.7bb5b59b@bbrezillon> In-Reply-To: <1862022.905gDpZtpO@dimapc> References: <20180531221637.6017-1-stefan@agner.ch> <1868760.y7shk6NfjH@dimapc> <20180610173202.680d2ee8@bbrezillon> <1862022.905gDpZtpO@dimapc> X-Mailer: Claws Mail 3.15.0-dirty (GTK+ 2.24.31; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, 11 Jun 2018 14:45:45 +0300 Dmitry Osipenko wrote: > On Sunday, 10 June 2018 18:32:02 MSK Boris Brezillon wrote: > > On Sun, 10 Jun 2018 18:00:06 +0300 > > > > Dmitry Osipenko wrote: > > > > >> That seems a lot of work for a code path I do not intend to ever use > > > > >> :-) > > > > > > > > > > Are you sure that resetting HW resets the timing and other registers > > > > > configuration? Reset implementation is HW-specific, like for example > > > > > in a > > > > > case of a video decoder the registers state is re-intialized on HW > > > > > reset, > > > > > but registers configuration is untouched in a case of resetting GPU. > > > > > I'd > > > > > suggest to check whether NAND controller resetting affects the HW > > > > > configuration. > > > > > > > > It seems all registers are set back to their documented reset value: > > > > > > > > [boot loader/ROM initialized values] > > > > [ 1.270253] tegra-nand 70008000.nand: Tegra NAND controller register > > > > dump > > > > [ 1.277051] tegra-nand 70008000.nand: COMMAND: 0x66880104 > > > > [ 1.282457] tegra-nand 70008000.nand: STATUS: 0x00000101 > > > > [ 1.287763] tegra-nand 70008000.nand: ISR: 0x01000120 > > > > [ 1.292818] tegra-nand 70008000.nand: IER: 0x00000000 > > > > [ 1.297863] tegra-nand 70008000.nand: CONFIG: 0x00840000 > > > > [ 1.303181] tegra-nand 70008000.nand: TIMING: 0x05040000 > > > > [ 1.308486] tegra-nand 70008000.nand: TIMING2: 0x00000003 > > > > [ 1.313897] tegra-nand 70008000.nand: CMD_REG1: 0x00000000 > > > > [ 1.319377] tegra-nand 70008000.nand: CMD_REG2: 0x00000030 > > > > [ 1.324868] tegra-nand 70008000.nand: ADDR_REG1: 0x03000000 > > > > [ 1.330435] tegra-nand 70008000.nand: ADDR_REG2: 0x00000000 > > > > [ 1.336011] tegra-nand 70008000.nand: DMA_MST_CTRL: 0x04100004 > > > > [ 1.341838] tegra-nand 70008000.nand: DMA_CFG_A: 0x00000fff > > > > [ 1.347415] tegra-nand 70008000.nand: DMA_CFG_B: 0x0000001b > > > > [ 1.352991] tegra-nand 70008000.nand: FIFO_CTRL: 0x0000aa00 > > > > [reset] > > > > [ 1.358559] tegra-nand 70008000.nand: Tegra NAND controller register > > > > dump > > > > [ 1.365352] tegra-nand 70008000.nand: COMMAND: 0x00800004 > > > > [ 1.370744] tegra-nand 70008000.nand: STATUS: 0x00000101 > > > > [ 1.376060] tegra-nand 70008000.nand: ISR: 0x00000100 > > > > [ 1.381105] tegra-nand 70008000.nand: IER: 0x00000000 > > > > [ 1.386161] tegra-nand 70008000.nand: CONFIG: 0x10030000 > > > > [ 1.391466] tegra-nand 70008000.nand: TIMING: 0x00000000 > > > > [ 1.396782] tegra-nand 70008000.nand: TIMING2: 0x00000000 > > > > [ 1.402174] tegra-nand 70008000.nand: CMD_REG1: 0x00000000 > > > > [ 1.407664] tegra-nand 70008000.nand: CMD_REG2: 0x00000000 > > > > [ 1.413156] tegra-nand 70008000.nand: ADDR_REG1: 0x00000000 > > > > [ 1.418722] tegra-nand 70008000.nand: ADDR_REG2: 0x00000000 > > > > [ 1.424297] tegra-nand 70008000.nand: DMA_MST_CTRL: 0x24000000 > > > > [ 1.430123] tegra-nand 70008000.nand: DMA_CFG_A: 0x00000000 > > > > [ 1.435698] tegra-nand 70008000.nand: DMA_CFG_B: 0x00000000 > > > > [ 1.441264] tegra-nand 70008000.nand: FIFO_CTRL: 0x0000aa00 > > > > > > Alright, then indeed it's not really worth to bother with HW resetting > > > here. Probably only a kernel module reload or a reboot will help if HW is > > > hung. Maybe NAND controller / chip recovering is something that NAND core > > > should be handling in a such case by providing a nand_controller_reset() > > > hook? > > I don't see what the core could do to help with that. We'd end up with > > a new hook implemented by the controller that would be called by the > > controller driver when it knows it's safe to reset the controller. So, > > why bother exposing that in the core? > > Giving a driver more flexibility is always a good thing. I'm not really > familiar with mtd/ and maybe indeed it doesn't make much sense to move HW > resetting to NAND core, though it looked to me that it should be always safe > for NAND core to initiate HW resetting after IO failure and hence would be > cleaner and nicer to have a unified HW reset management rather than to have > each driver to do its own thing. No really, the NAND core can't know when it's appropriate to reset the controller, and what this reset will do, hence it doesn't know if the chips connected to the controller should also be reset.