Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp873942ybl; Thu, 23 Jan 2020 09:17:49 -0800 (PST) X-Google-Smtp-Source: APXvYqzpOLErvYIW0IRoL5dXq70lc/nQLSB9PSRcZBfzQbjpG9sglEG3zKoE4RkvLteRhdh+bMEt X-Received: by 2002:a05:6830:1d59:: with SMTP id p25mr12318930oth.308.1579799869108; Thu, 23 Jan 2020 09:17:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1579799869; cv=none; d=google.com; s=arc-20160816; b=k0o4VqbWukr2H2sEXe+zqcdgF464v0F2iQO+g0I3W4b/hO7oiGWDIS3+BKTX1+YwUS Ba1WW99kbBbju3UD+/O44yNw8ANU8bcTXtojXzPwdVX5x0fDiXLfm/vC8VEeTWuYVkIx F6z/MHZuJUW80HgjXkK+B1Eg5W3AoCCw1M7WrllF1zPx2BXIIBCBQC2iMr62K9GmxlOO FJyMmluoKpSdGCj74V1WY1yNoiwcwWPFLr3diRwWoH2cI2Nc9nZviLvUX2JQkZQDuTJ1 w3cNEDaV9yrHf7Q5IvIB9hADx619uUwDd+GEFzwH271cIRUb+hHXEEedmWD07eOP32RD GgKQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=3T3XW9ObtDvH41u0oiLPng2xqMLffjeMRdO/UO5hcQk=; b=BPWQDuXZ6AIITRl/dD9/IYoVzawrwjl5KDjjHHZlnnttAwdsQNs+omH/bWy69drS7X NGFJAMEVvQxEX75PBR35uLBe5eUrJSxMo0IUMj7q3drTIiOAVoB96WOl206tPy7V2+b7 L8PtaCvP0naijHVXc3VPpRwM8W1Ya7OUsSwUYQHrmEYxv8LdYK4Ug4WzaTsku4J/+PFb QXBW8sQU3br3EDBdRIOmCOAY+bSqOqOru2d5Hr3G8Ean1uFMpr1fIXErpkGupVvC1zr7 +A0/8LgReU3PTYmXshf1vONcY+NrK3qGUvnq7oPyxHCkHxFAzxjeYrpIASc6567nb4ys oHFw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=jwusNk8H; 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=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d9si1494831otf.81.2020.01.23.09.17.36; Thu, 23 Jan 2020 09:17:49 -0800 (PST) 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=@linaro.org header.s=google header.b=jwusNk8H; 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=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729992AbgAWRBh (ORCPT + 99 others); Thu, 23 Jan 2020 12:01:37 -0500 Received: from mail-il1-f194.google.com ([209.85.166.194]:40969 "EHLO mail-il1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729838AbgAWRBh (ORCPT ); Thu, 23 Jan 2020 12:01:37 -0500 Received: by mail-il1-f194.google.com with SMTP id f10so2597141ils.8 for ; Thu, 23 Jan 2020 09:01:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=3T3XW9ObtDvH41u0oiLPng2xqMLffjeMRdO/UO5hcQk=; b=jwusNk8HEBf+lYTXTSZF87RSARfaLlueWxX9AWHVr+fInNo8lx+kEnxvm10B3mp7hR vUmGtD4Nu51ZyA2PrM9jMUSuEnmAO4Cu1vlkmQ15MLVSLyTmGbrWYbzkbQIIP9LYuLX7 MgmxJx31rM/0zu5f60oPXpCNtAVYWAMqzaE2mVSZrsO2F/gszaSGMFEx53EIKKvi1vWW 9vdWkWnVCIO2vxYmdS4TTWk5UouMAR1ac887GoDD+dCRCVz/WCRW5m3w5/MUdPNuPBwf 09jkEQck1tOIq8uiMTfsrXDhMC2gejddhzHIw8umyFvJgMLsR5mCD5D1/mcm64fHp9pk LBNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=3T3XW9ObtDvH41u0oiLPng2xqMLffjeMRdO/UO5hcQk=; b=UUckVamOEl2tkkYGInwsubH6QFwrP4mY1XWatR/2joOPr2FZRLa9Y0YFJkyg/UM53s rLvqk0yKVL1VxLnI8Tju/D/B+ObR8QJFgt4q48w6EVdB/nHQ0trh/gGdtDxmHlmSAH/e t+s3+4BcM4TCwAJWNxUWE9nlA0ORP0zf7UYA4fQkOsvKW8sJY94VnlyeKwFbQWYn+lpP U7fznN48BShjUBVa//M0h77ji2JFgcCiPCLOUSrZogv8Xe2KHEc7bn6BiPgIZUGGph23 2CEyxxEHhxK/5ex89txthgA+EaQT+/KM+lLTVeWWHLJKpTj5VOLiLs/0GOCgfl1tur/v 1/fw== X-Gm-Message-State: APjAAAUHa3DpL8G/KPK2zHn4YKF69u39ZmCbqjTWthlgPB59UeWqqYUU tqf4Oncmb8CHZbLo6gs8o9mKbM4KBSnvWc2hhYJK3w== X-Received: by 2002:a92:2907:: with SMTP id l7mr13319443ilg.140.1579798895648; Thu, 23 Jan 2020 09:01:35 -0800 (PST) MIME-Version: 1.0 References: <20191227053215.423811-1-bjorn.andersson@linaro.org> <20191227053215.423811-8-bjorn.andersson@linaro.org> <20200110212806.GD11555@xps15> <20200122193936.GB3261042@ripper> In-Reply-To: <20200122193936.GB3261042@ripper> From: Mathieu Poirier Date: Thu, 23 Jan 2020 10:01:24 -0700 Message-ID: Subject: Re: [PATCH v2 7/8] remoteproc: qcom: q6v5: Add common panic handler To: Bjorn Andersson Cc: Rob Herring , Mark Rutland , Ohad Ben-Cohen , linux-arm-msm , devicetree@vger.kernel.org, Linux Kernel Mailing List , linux-remoteproc , Sibi Sankar , Rishabh Bhatnagar Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 22 Jan 2020 at 12:40, Bjorn Andersson wrote: > > On Fri 10 Jan 13:28 PST 2020, Mathieu Poirier wrote: > > > On Thu, Dec 26, 2019 at 09:32:14PM -0800, Bjorn Andersson wrote: > > > Add a common panic handler that invokes a stop request and sleep enough > > > to let the remoteproc flush it's caches etc in order to aid post mortem > > > debugging. > > > > > > Signed-off-by: Bjorn Andersson > > > --- > > > > > > Changes since v1: > > > - None > > > > > > drivers/remoteproc/qcom_q6v5.c | 19 +++++++++++++++++++ > > > drivers/remoteproc/qcom_q6v5.h | 1 + > > > 2 files changed, 20 insertions(+) > > > > > > diff --git a/drivers/remoteproc/qcom_q6v5.c b/drivers/remoteproc/qcom_q6v5.c > > > index cb0f4a0be032..17167c980e02 100644 > > > --- a/drivers/remoteproc/qcom_q6v5.c > > > +++ b/drivers/remoteproc/qcom_q6v5.c > > > @@ -6,6 +6,7 @@ > > > * Copyright (C) 2014 Sony Mobile Communications AB > > > * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved. > > > */ > > > +#include > > > #include > > > #include > > > #include > > > @@ -15,6 +16,8 @@ > > > #include > > > #include "qcom_q6v5.h" > > > > > > +#define Q6V5_PANIC_DELAY_MS 200 > > > + > > > /** > > > * qcom_q6v5_prepare() - reinitialize the qcom_q6v5 context before start > > > * @q6v5: reference to qcom_q6v5 context to be reinitialized > > > @@ -162,6 +165,22 @@ int qcom_q6v5_request_stop(struct qcom_q6v5 *q6v5) > > > } > > > EXPORT_SYMBOL_GPL(qcom_q6v5_request_stop); > > > > > > +/** > > > + * qcom_q6v5_panic() - panic handler to invoke a stop on the remote > > > + * @q6v5: reference to qcom_q6v5 context > > > + * > > > + * Set the stop bit and sleep in order to allow the remote processor to flush > > > + * its caches etc for post mortem debugging. > > > + */ > > > +void qcom_q6v5_panic(struct qcom_q6v5 *q6v5) > > > +{ > > > + qcom_smem_state_update_bits(q6v5->state, > > > + BIT(q6v5->stop_bit), BIT(q6v5->stop_bit)); > > > + > > > + mdelay(Q6V5_PANIC_DELAY_MS); > > > > I really wonder if the delay should be part of the remoteproc core and > > configurable via device tree. Wanting the remote processor to flush its caches > > is likely something other vendors will want when dealing with a kernel panic. > > It would be nice to see if other people have an opinion on this topic. If not > > then we can keep the delay here and move it to the core if need be. > > > > I gave this some more thought and what we're trying to achieve is to > signal the remote processors about the panic and then give them time to > react, but per the proposal (and Qualcomm downstream iirc) we will do > this for each remote processor, one by one. > > So in the typical case of a Qualcomm platform with 4-5 remoteprocs we'll > end up giving the first one a whole second to react and the last one > "only" 200ms. > > Moving the delay to the core by iterating over rproc_list calling > panic() and then delaying would be cleaner imo. I agree. > > It might be nice to make this configurable in DT, but I agree that it > would be nice to hear from others if this would be useful. I think the delay has to be configurable via DT if we move this to the core. The binding can be optional and default to 200ms if not present. > > Regards, > Bjorn > > > Thanks, > > Mathieu > > > > > +} > > > +EXPORT_SYMBOL_GPL(qcom_q6v5_panic); > > > + > > > /** > > > * qcom_q6v5_init() - initializer of the q6v5 common struct > > > * @q6v5: handle to be initialized > > > diff --git a/drivers/remoteproc/qcom_q6v5.h b/drivers/remoteproc/qcom_q6v5.h > > > index 7ac92c1e0f49..c37e6fd063e4 100644 > > > --- a/drivers/remoteproc/qcom_q6v5.h > > > +++ b/drivers/remoteproc/qcom_q6v5.h > > > @@ -42,5 +42,6 @@ int qcom_q6v5_prepare(struct qcom_q6v5 *q6v5); > > > int qcom_q6v5_unprepare(struct qcom_q6v5 *q6v5); > > > int qcom_q6v5_request_stop(struct qcom_q6v5 *q6v5); > > > int qcom_q6v5_wait_for_start(struct qcom_q6v5 *q6v5, int timeout); > > > +void qcom_q6v5_panic(struct qcom_q6v5 *q6v5); > > > > > > #endif > > > -- > > > 2.24.0 > > >