Received: by 2002:a25:b794:0:0:0:0:0 with SMTP id n20csp5867065ybh; Wed, 7 Aug 2019 12:50:14 -0700 (PDT) X-Google-Smtp-Source: APXvYqzREyVxU27kDS/R6S2R4vybe7VgSui+SGmZhc0MT+TSvJp0fgj1jnkBPJapGRAXfRzuJQ39 X-Received: by 2002:a63:6f8f:: with SMTP id k137mr9165282pgc.90.1565207413761; Wed, 07 Aug 2019 12:50:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1565207413; cv=none; d=google.com; s=arc-20160816; b=HU3nKdhCLfrt0fZ/5EAvUodbPa0gYEL1HE+2fVp5qYuBfi5oq3wGKpxZOZggS/Ir3E 1B5vSUKBtQ0+3ZBoHAfOa4+a7LfI6yShK5BEfeAVL4BBqh9+18fBk8qeBT4O25Koov4+ iRXnSZWQzxUNBBcBR749iZiZwU8R2osbqmCyVIOFR0nb48ZAI9KlGHQ30QWA/Mwx7QXf yk1BVPaJ1GKkfCstDSlKoKVpOfRN5oic/bub0Vw9rAQf88Kfd1WygYp/lRmI/T0TgThj MQ4r2XtSSak0UVqr3PGFk1AUTOKwe8mgdtRJLfaDRwdn+RwkE0ZnAAOBfj19kpoGbG3E caHA== 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 :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:dkim-signature; bh=elEHc2fGQlFO5WBakgNaDmLiEc3eMutzgkw76itkzKQ=; b=SXD8MN0QRERvP/LNuTjpAxWpI12HukoCPTenXPk3PqnSqS9xBBa1mSDkG+AtaPCTqi ZB33BY8UofnAkwi6CGT+/KzWLsETq4PaibBPvtwFn1hyTbouS/Uh05e3kZgtYHpIeVMD LLwgACGujSORO+etBJCs6Boz4s/gEalP6E1FW57Ps41yRtCQPVQlpU7vkfmf9Fu4Dh6l twJNH0hG0wXX1UhQ7NGh2xSZXPppDiQAmKdQXGHP3mDfq6d0BrbMDKXPP8nY1EOrAjgW m3zEfRJb4ryjJvA8dPUgFIGQd2n1zIVAX35+kL5h23LZthDE6Bm0cS8zhHsZNScHGz6e YwlQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=oETy+Cwd; 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=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id b28si3540605pfp.92.2019.08.07.12.49.57; Wed, 07 Aug 2019 12:50:13 -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; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=oETy+Cwd; 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=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389007AbfHGTbC (ORCPT + 99 others); Wed, 7 Aug 2019 15:31:02 -0400 Received: from fllv0015.ext.ti.com ([198.47.19.141]:59080 "EHLO fllv0015.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730363AbfHGTbB (ORCPT ); Wed, 7 Aug 2019 15:31:01 -0400 Received: from lelv0266.itg.ti.com ([10.180.67.225]) by fllv0015.ext.ti.com (8.15.2/8.15.2) with ESMTP id x77JUwMv112817; Wed, 7 Aug 2019 14:30:58 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1565206258; bh=elEHc2fGQlFO5WBakgNaDmLiEc3eMutzgkw76itkzKQ=; h=Subject:To:CC:References:From:Date:In-Reply-To; b=oETy+CwdGtIa0knYIdVi9eM6SQ5d7AYWFZc7X1fh92APizCqva6r+e2gvy33hnh/e tHdCY9sgidoO3p65/toPOnEneRbuLmG9cABmVdkSftzzhpiFKGNCf1X+QOt+vBoZa7 M1vY4XlGNf71nyn5QT22LgiLzNZunJBgpeIFBa0E= Received: from DLEE113.ent.ti.com (dlee113.ent.ti.com [157.170.170.24]) by lelv0266.itg.ti.com (8.15.2/8.15.2) with ESMTPS id x77JUwE7023953 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Wed, 7 Aug 2019 14:30:58 -0500 Received: from DLEE115.ent.ti.com (157.170.170.26) by DLEE113.ent.ti.com (157.170.170.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1713.5; Wed, 7 Aug 2019 14:30:57 -0500 Received: from fllv0039.itg.ti.com (10.64.41.19) by DLEE115.ent.ti.com (157.170.170.26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1713.5 via Frontend Transport; Wed, 7 Aug 2019 14:30:57 -0500 Received: from [128.247.58.153] (ileax41-snat.itg.ti.com [10.172.224.153]) by fllv0039.itg.ti.com (8.15.2/8.15.2) with ESMTP id x77JUvkS084298; Wed, 7 Aug 2019 14:30:57 -0500 Subject: Re: [PATCH 7/9] remoteproc: Introduce "panic" callback in ops To: Bjorn Andersson , Ohad Ben-Cohen CC: Andy Gross , Sibi Sankar , , , References: <20190807053942.9836-1-bjorn.andersson@linaro.org> <20190807053942.9836-8-bjorn.andersson@linaro.org> From: Suman Anna Message-ID: <52517bd4-288b-7df6-9b7f-b1d26474d13f@ti.com> Date: Wed, 7 Aug 2019 14:30:57 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 MIME-Version: 1.0 In-Reply-To: <20190807053942.9836-8-bjorn.andersson@linaro.org> Content-Type: text/plain; charset="utf-8" Content-Language: en-US Content-Transfer-Encoding: 7bit X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 8/7/19 12:39 AM, Bjorn Andersson wrote: > Introduce a "panic" function in the remoteproc ops table, to allow > remoteproc instances to perform operations needed in order to aid in > post mortem system debugging, such as flushing caches etc, when the > kernel panics. > > Signed-off-by: Bjorn Andersson > --- > drivers/remoteproc/remoteproc_core.c | 16 ++++++++++++++++ > include/linux/remoteproc.h | 3 +++ > 2 files changed, 19 insertions(+) > > diff --git a/drivers/remoteproc/remoteproc_core.c b/drivers/remoteproc/remoteproc_core.c > index 3c5fbbbfb0f1..cc47797c6496 100644 > --- a/drivers/remoteproc/remoteproc_core.c > +++ b/drivers/remoteproc/remoteproc_core.c > @@ -1833,6 +1833,16 @@ void rproc_shutdown(struct rproc *rproc) > } > EXPORT_SYMBOL(rproc_shutdown); > > +static int rproc_panic_handler(struct notifier_block *nb, unsigned long event, > + void *ptr) > +{ > + struct rproc *rproc = container_of(nb, struct rproc, panic_nb); > + > + rproc->ops->panic(rproc); > + > + return NOTIFY_DONE; > +} > + > /** > * rproc_get_by_phandle() - find a remote processor by phandle > * @phandle: phandle to the rproc > @@ -2058,6 +2068,12 @@ struct rproc *rproc_alloc(struct device *dev, const char *name, > rproc->ops->get_boot_addr = rproc_elf_get_boot_addr; > } > > + /* Register panic notifier for remoteprocs with "panic" callback */ > + if (rproc->ops->panic) { > + rproc->panic_nb.notifier_call = rproc_panic_handler; > + atomic_notifier_chain_register(&panic_notifier_list, &rproc->panic_nb); > + } > + > mutex_init(&rproc->lock); > > idr_init(&rproc->notifyids); > diff --git a/include/linux/remoteproc.h b/include/linux/remoteproc.h > index 16ad66683ad0..33553f6d8ff0 100644 > --- a/include/linux/remoteproc.h > +++ b/include/linux/remoteproc.h > @@ -383,6 +383,7 @@ struct rproc_ops { > int (*load)(struct rproc *rproc, const struct firmware *fw); > int (*sanity_check)(struct rproc *rproc, const struct firmware *fw); > u32 (*get_boot_addr)(struct rproc *rproc, const struct firmware *fw); > + void (*panic)(struct rproc *rproc); Do add the kernel doc comment for the new callback op. regards Suman > }; > > /** > @@ -481,6 +482,7 @@ struct rproc_dump_segment { > * @auto_boot: flag to indicate if remote processor should be auto-started > * @dump_segments: list of segments in the firmware > * @nb_vdev: number of vdev currently handled by rproc > + * @panic_nb: notifier_block for remoteproc's panic handler > */ > struct rproc { > struct list_head node; > @@ -514,6 +516,7 @@ struct rproc { > bool auto_boot; > struct list_head dump_segments; > int nb_vdev; > + struct notifier_block panic_nb; > }; > > /** >