Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp1440258ybb; Thu, 9 Apr 2020 02:07:10 -0700 (PDT) X-Google-Smtp-Source: APiQypKFM/80WhNYNGzo0OiJu2NFcPoIm43Fov9/un/h2V6IMWHBgJvSI/kQxsq3MtosrQEnlqJ/ X-Received: by 2002:a05:6830:19d8:: with SMTP id p24mr152028otp.234.1586423230351; Thu, 09 Apr 2020 02:07:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1586423230; cv=none; d=google.com; s=arc-20160816; b=FFhgGzrq96rSiNi2v1EgQTXkWtC48pxFqvkHx77syvPjn3AR+p7WDjfkcYQrbIWF7n KSA5SoCr8Xea6vWSD6vQ/Yzl4I8KHsaUcmYRYsLXMcnHRVQ+iiwmxqH7s0sG7orUTfEC ajM4I6CSxfATpgNZlkyBdEc8F4pp9V9athqLAdKFVZ2hmyoYqPSOk8Xbk1BL0Nvgzsga mi5WbIdRFART8xbm7djg7hil+FyQj6CKTg0CYolQ3JqugWRyXQRv/YW007FQBy4n0dh3 HRFp59f9BOPQ4urYf4A++5W/2xKF+NWFNg6omk99b6ttq72B5Y5jG7e2eViJSH0pXzzy XLug== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from; bh=XhJNMYr8rCn6Ps4xNzsGMIHfK2snlVBwMXyeL+ZX+VM=; b=OiYAivdS9ZI8bLVWB9q/o7OZg7FwXEdZBOydhoYNeYLRMm1GAVCFFgUVXP0rXevsnu wsDUIEa6iq+ZwnEdqajB3S9y83VKArhrYVD/jADyZ2LGAb9tpWpn/O9tkqtrM30w9dOI h3YgJ8VzyBPi2TRhg6gfuvtmDMTQVj5kSntAnJapswWZOA3i+QDaJRAJT7aMLAaZlYTr oZciiJGrBPgdCCuBFo2/q2wmPm1C6C5Wz2hp9+7J15EefvDsRsXpSVvFE58OgdpnvsOf 4z8/tYh8j3FCWUuW09jjNmD6FauQ3YLk7mJHZfm8JuxfQArNyimqOS0P4ukGXraSsVgN 651g== 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id r21si3638271otp.320.2020.04.09.02.06.55; Thu, 09 Apr 2020 02:07:10 -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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726641AbgDIJEO (ORCPT + 99 others); Thu, 9 Apr 2020 05:04:14 -0400 Received: from inva020.nxp.com ([92.121.34.13]:50806 "EHLO inva020.nxp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725862AbgDIJEO (ORCPT ); Thu, 9 Apr 2020 05:04:14 -0400 Received: from inva020.nxp.com (localhost [127.0.0.1]) by inva020.eu-rdc02.nxp.com (Postfix) with ESMTP id 05A8B1A03EC; Thu, 9 Apr 2020 11:04:13 +0200 (CEST) Received: from invc005.ap-rdc01.nxp.com (invc005.ap-rdc01.nxp.com [165.114.16.14]) by inva020.eu-rdc02.nxp.com (Postfix) with ESMTP id 4D3B61A01DE; Thu, 9 Apr 2020 11:04:07 +0200 (CEST) Received: from titan.ap.freescale.net (titan.ap.freescale.net [10.192.208.233]) by invc005.ap-rdc01.nxp.com (Postfix) with ESMTP id 13F2840294; Thu, 9 Apr 2020 17:04:00 +0800 (SGT) From: Hui Song To: Shawn Guo , Li Yang , Rob Herring , Mark Rutland , Linus Walleij , Bartosz Golaszewski Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, Song Hui Subject: [PATCH] gpio: mpc8xxx: Add shutdown function. Date: Thu, 9 Apr 2020 16:49:53 +0800 Message-Id: <20200409084953.46265-1-hui.song_1@nxp.com> X-Mailer: git-send-email 2.9.5 X-Virus-Scanned: ClamAV using ClamSMTP Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Song Hui When the kexec command is executed, the memory area will be re-paginated. The shutdown function needed to make interrupt handler to be NULL.If not, an interrupt will be generated during this period. When the interrupt handler is executed,the handler function address changed and crash will occur. Signed-off-by: Song Hui --- drivers/gpio/gpio-mpc8xxx.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/gpio/gpio-mpc8xxx.c b/drivers/gpio/gpio-mpc8xxx.c index 604dfec..a24e6c5 100644 --- a/drivers/gpio/gpio-mpc8xxx.c +++ b/drivers/gpio/gpio-mpc8xxx.c @@ -446,9 +446,21 @@ static int mpc8xxx_remove(struct platform_device *pdev) return 0; } +static int mpc8xxx_shutdown(struct platform_device *pdev) +{ + struct mpc8xxx_gpio_chip *mpc8xxx_gc = platform_get_drvdata(pdev); + + if (mpc8xxx_gc->irq) { + irq_set_chained_handler_and_data(mpc8xxx_gc->irqn, NULL, NULL); + irq_domain_remove(mpc8xxx_gc->irq); + } + + return 0; +} static struct platform_driver mpc8xxx_plat_driver = { .probe = mpc8xxx_probe, .remove = mpc8xxx_remove, + .shutdown = mpc8xxx_shutdown, .driver = { .name = "gpio-mpc8xxx", .of_match_table = mpc8xxx_gpio_ids, -- 2.9.5