Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp543203pxu; Sun, 22 Nov 2020 18:52:54 -0800 (PST) X-Google-Smtp-Source: ABdhPJy6HydQ/KuUVVNQtWngz58BJ/nMAWrBjIyBKNOvYB2EtMS/X/SjstNWuKN6R4RV6kGOncxW X-Received: by 2002:a17:906:38cc:: with SMTP id r12mr43396498ejd.277.1606099973907; Sun, 22 Nov 2020 18:52:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1606099973; cv=none; d=google.com; s=arc-20160816; b=0yfxNTfaaRjQKYkPIalSlbn9axZfjQ8jDG75teDrqe39jjBj3WI79aHis6DLSheONu gD6m6ziszLXe7HNGlidNbIM44YTLu3bxueq5gu94pFDanjVFKsfWayLobhEg/p4WcTP+ n2wNs7K2dr6z+QjEOJfrtmHWOiK55NBGgWnTJNStMXidAhKSRv+vcRb+zb3YhAfYPFZ2 NOzmWkqQzty7gTxpvljmlfbvG2xYDb91cu8CdzJxt4km4xhTnXG18rIM6V4hHO6qxkuV q80oOwckaMlo7UFX+mo5OHZsCgarmYCqxkLaRrAaYqB0wn9v/fm7vy5uO6Kdmqaop5Ko u/ug== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:date:subject:cc:to:from; bh=Av4m3F6Vh4tpo1SxQGNfBCT3Fq7ieE310MIovndTNtU=; b=nEhQCb12ZJ1TfWKG2b+woxLCpZNvXYlJmMrJEKTJOL2q92l4mJ+d2Y5IupSqFc5Uwi 5fVP3N+QMxwn9z4qGdQH3oEer9bijFY5x5m28xmHicrdjkp4PqNtWhZSiaAHh/oQc1+l FFVaII4rMQgSOciSq2sSScIq4ElppU7bT7ZXjjlmLkP/TzG23+vKsEKq1BgNXeulYB1o tmtJdUNRvt0FBOWSQVNl8B6sMyPfxKPJ8uHietc43OOoFFnNZ7bPn1nnqEVXeRF4lOr4 G0+QUR/UpH+F8i6dIyCRBVpv658c2S/y0qG1xsmTaTOj2i13XHfn9Owa219uSx7evvSB u5+A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id cn1si5782248edb.408.2020.11.22.18.52.31; Sun, 22 Nov 2020 18:52:53 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726630AbgKWCtM (ORCPT + 99 others); Sun, 22 Nov 2020 21:49:12 -0500 Received: from inva021.nxp.com ([92.121.34.21]:48846 "EHLO inva021.nxp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725788AbgKWCtM (ORCPT ); Sun, 22 Nov 2020 21:49:12 -0500 Received: from inva021.nxp.com (localhost [127.0.0.1]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id 504EE20023B; Mon, 23 Nov 2020 03:49:10 +0100 (CET) Received: from invc005.ap-rdc01.nxp.com (invc005.ap-rdc01.nxp.com [165.114.16.14]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id 4D3B12000C5; Mon, 23 Nov 2020 03:49:07 +0100 (CET) Received: from localhost.localdomain (mega.ap.freescale.net [10.192.208.232]) by invc005.ap-rdc01.nxp.com (Postfix) with ESMTP id 28100402A2; Mon, 23 Nov 2020 03:49:03 +0100 (CET) From: Ran Wang To: Han Xu , Ashish Kumar , Yogesh Gaur , Mark Brown Cc: linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org, Ran Wang Subject: [PATCH] spi: spi-nxp-fspi: fix fspi panic by unexpected interrupts Date: Mon, 23 Nov 2020 10:57:15 +0800 Message-Id: <20201123025715.14635-1-ran.wang_1@nxp.com> X-Mailer: git-send-email 2.17.1 X-Virus-Scanned: ClamAV using ClamSMTP Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Given the case that bootloader(such as UEFI)'s FSPI driver might not handle all interrupts before loading kernel, those legacy interrupts would assert immidiately once kernel's FSPI driver enable them. Further, if it was FSPI_INTR_IPCMDDONE, the irq handler nxp_fspi_irq_handler() would call complete(&f->c) to notify others. However, f->c might not be initialized yet at that time, then cause kernel panic. Of cause, we should fix this issue within bootloader. But it would be better to have this pacth to make dirver more robust (by clearing all interrupt status bits before enabling interrupts). Suggested-by: Han Xu Signed-off-by: Ran Wang --- drivers/spi/spi-nxp-fspi.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/spi/spi-nxp-fspi.c b/drivers/spi/spi-nxp-fspi.c index 0d41406..ab90356 100644 --- a/drivers/spi/spi-nxp-fspi.c +++ b/drivers/spi/spi-nxp-fspi.c @@ -1001,6 +1001,7 @@ static int nxp_fspi_probe(struct platform_device *pdev) struct resource *res; struct nxp_fspi *f; int ret; + u32 reg; ctlr = spi_alloc_master(&pdev->dev, sizeof(*f)); if (!ctlr) @@ -1032,6 +1033,12 @@ static int nxp_fspi_probe(struct platform_device *pdev) goto err_put_ctrl; } + /* Clear potential interrupts */ + reg = fspi_readl(f, f->iobase + FSPI_INTR); + if (reg) + fspi_writel(f, reg, f->iobase + FSPI_INTR); + + /* find the resources - controller memory mapped space */ if (is_acpi_node(f->dev->fwnode)) res = platform_get_resource(pdev, IORESOURCE_MEM, 1); -- 2.7.4