From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 2A03BC54E5D for ; Mon, 18 Mar 2024 16:52:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=WXaBllPkVSUrzvJcI/3PymqtzyxvS5IeUR6USatd8C4=; b=5G1asK9Y8ZhoHk uXMGX2qDdbBvnetFrkudxOQYO0aL9eUKGnVjfwEoxdz9H0TGI9XYY6FQwu3Vq6CxoANoq5Pd3jeNO UnXpKhERflq1nfU5bOnQ8Pgk6bi0yHbp8SQgHuh+sKNCcXHS0ZfiHrkkbnbgj6/hyYesihl1OA/b6 jSosxykfBhSp2F4cjFAWfJdISbUOs0siRo2wNJXQlcqtjogdeiClzD6hRgnL77KWb2nFPxVSOUueF Y9SDhOyabRnmabAgQV6XGywyXl2UHrz49tiMnl1+ohBwqKl7TSyebDd2flax/IpCZaaqBu/SBCaek WpJGiLckzlwHdKeYOi6g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rmGE6-00000009K8a-1FKw; Mon, 18 Mar 2024 16:52:42 +0000 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rmGE2-00000009K5p-4A9L for linux-arm-kernel@lists.infradead.org; Mon, 18 Mar 2024 16:52:40 +0000 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-6e6b6e000a4so3297881b3a.0 for ; Mon, 18 Mar 2024 09:52:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1710780756; x=1711385556; darn=lists.infradead.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=aQJIbs2yBMoH3QIXds9BMUYNdFllgWIuuxULBV69aqY=; b=EcnNoAFZK0QN/lVkT2sG5PiYp8J+pw5mjBqX5zv9vJL3rZGSMNReR5H1oJTMMQO+TF 0+u65WFiAbMJQa14iOUhNaedsqRvtCCiofEiMgrWrOazPUPdjymDut+LTV8P/gRFWAed H0Oh6TSbop2WYXgomTvGVjRDDgOpTndqu+lMgO20kaa/aYx4rINl7FAfxK+oRv7bW0xa fYJZXaBNyDA1346VH5VpF6jwH63g9VvDUTcOIQsgf/5jLnNDWe0PaVu3PkZlJsg4t7QD zxlNKgPhluLyM+d2LCIp4+v1dLc5UUziOtyLNMD1pLKFFpnhCIRAPA10ZtLg0t/+TQVh IDHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710780756; x=1711385556; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=aQJIbs2yBMoH3QIXds9BMUYNdFllgWIuuxULBV69aqY=; b=GNzfoys1qojdF8V+RHlwjrp2QVB81s0ZGAZlFz9HeNZIey4nMCom5UW7aGn5/yd97l XaupAYkXRTzk6UbBH9WG3TzKe4IEx3fOF70gIasKcssAtyyQ1QEJeNbmQEMsmzsyPjHM ya6RrOgNHqqnQhM779ErKi4X85UZ5OabY7TifZFxbHDaHQXp0MSKe9Wf+qD8dYzdkiPA 1V6zZLXzoc3eK1CO89WTAnkdhrrhTnlj8qJomlXI+t5IC2/zSeo1y0nBXVSGldDwgcvg Ne4Le7Xy50wkgFWi1n3NEkiqNDymguVgzSS0lK0FS3SQ/VmJOsHBe0SF21ZruRP79NnI tOEw== X-Forwarded-Encrypted: i=1; AJvYcCWJpNbR19jtlM9svILl2u/83+FYDweBJn9sDSFF9wnrs8O7uQlnk6sSRKp2jaEakIJZ0GH93M+fTquL4o9As3VEK5VeYx2ShV7o3SHWzo5tXAMQw0c= X-Gm-Message-State: AOJu0YyD/4S4T25BZEbeebuCIKobASVAP+Kc6Y9zm6+gXzdqg8hcOthS Ii/hmKq4cIlE6Uzu25ahNvylLfDZxjOZOZL68w8NpAp38VCxPDBj1200owRvCqM= X-Google-Smtp-Source: AGHT+IGjp5w2/ZLXnC0IvBs/4igjALHcUODPSqrhOANIDm8m8pvVkBzYwKXyhX88zm8DZZjBP0tGVg== X-Received: by 2002:a05:6a00:2389:b0:6e6:30ef:b7e9 with SMTP id f9-20020a056a00238900b006e630efb7e9mr234979pfc.16.1710780756429; Mon, 18 Mar 2024 09:52:36 -0700 (PDT) Received: from p14s ([2604:3d09:148c:c800:1e7:74d5:bebc:a28d]) by smtp.gmail.com with ESMTPSA id w2-20020aa79a02000000b006e68b422850sm4112652pfj.81.2024.03.18.09.52.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Mar 2024 09:52:35 -0700 (PDT) Date: Mon, 18 Mar 2024 10:52:32 -0600 From: Mathieu Poirier To: Leonard Crestez Cc: Tanmay Shah , Bjorn Andersson , Michal Simek , Sarangdhar Joshi , Siddharth Gupta , Rishabh Bhatnagar , linux-remoteproc@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH] remoteproc: zynqmp: Add coredump support Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240318_095239_225470_988E1117 X-CRM114-Status: GOOD ( 31.47 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hi Leonard, I have queued patches for this driver that will break this patch. Please re-submit when v6.9-rc1 is out and rproc-next has been updated, which should be around the middle of next week. Thanks, Mathieu On Sat, Mar 16, 2024 at 08:16:42PM +0200, Leonard Crestez wrote: > Supporting remoteproc coredump requires the platform-specific driver to > register coredump segments to be dumped. Do this by calling > rproc_coredump_add_segment for every carveout. > > Also call rproc_coredump_set_elf_info when then rproc is created. If the > ELFCLASS parameter is not provided then coredump fails with an error. > Other drivers seem to pass EM_NONE for the machine argument but for me > this shows a warning in gdb. Pass EM_ARM because this is an ARM R5. > > Signed-off-by: Leonard Crestez > --- > > Tests were done by triggering an deliberate crash using remoteproc > debugfs: echo 2 > /sys/kernel/debug/remoteproc/remoteproc0/crash > > This was tested using RPU apps which use RAM for everything so TCM dump > was not verified. The freertos-gdb script package showed credible data: > > https://github.com/espressif/freertos-gdb > > The R5 cache is not flushed so RAM might be out of date which is > actually very bad because information most relevant to determining the > cause of a crash is lost. Possible workaround would be to flush caches > in some sort of R5 crash handler? I don't think Linux can do anything > about this limitation. > > The generated coredump doesn't contain registers, this seems to be a > limitation shared with other rproc coredumps. It's not clear how the apu > could access rpu registers on zynqmp, my only idea would be to use the > coresight dap but that sounds difficult. > > --- > drivers/remoteproc/xlnx_r5_remoteproc.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/drivers/remoteproc/xlnx_r5_remoteproc.c b/drivers/remoteproc/xlnx_r5_remoteproc.c > index 4395edea9a64..cfbd97b89c26 100644 > --- a/drivers/remoteproc/xlnx_r5_remoteproc.c > +++ b/drivers/remoteproc/xlnx_r5_remoteproc.c > @@ -484,10 +484,11 @@ static int add_mem_regions_carveout(struct rproc *rproc) > of_node_put(it.node); > return -ENOMEM; > } > > rproc_add_carveout(rproc, rproc_mem); > + rproc_coredump_add_segment(rproc, rmem->base, rmem->size); > > dev_dbg(&rproc->dev, "reserved mem carveout %s addr=%llx, size=0x%llx", > it.node->name, rmem->base, rmem->size); > i++; > } > @@ -595,10 +596,11 @@ static int add_tcm_carveout_split_mode(struct rproc *rproc) > zynqmp_pm_release_node(pm_domain_id); > goto release_tcm_split; > } > > rproc_add_carveout(rproc, rproc_mem); > + rproc_coredump_add_segment(rproc, da, bank_size); > } > > return 0; > > release_tcm_split: > @@ -674,10 +676,11 @@ static int add_tcm_carveout_lockstep_mode(struct rproc *rproc) > goto release_tcm_lockstep; > } > > /* If registration is success, add carveouts */ > rproc_add_carveout(rproc, rproc_mem); > + rproc_coredump_add_segment(rproc, da, bank_size); > > dev_dbg(dev, "TCM carveout lockstep mode %s addr=0x%llx, da=0x%x, size=0x%lx", > bank_name, bank_addr, da, bank_size); > } > > @@ -851,10 +854,12 @@ static struct zynqmp_r5_core *zynqmp_r5_add_rproc_core(struct device *cdev) > if (!r5_rproc) { > dev_err(cdev, "failed to allocate memory for rproc instance\n"); > return ERR_PTR(-ENOMEM); > } > > + rproc_coredump_set_elf_info(r5_rproc, ELFCLASS32, EM_ARM); > + > r5_rproc->auto_boot = false; > r5_core = r5_rproc->priv; > r5_core->dev = cdev; > r5_core->np = dev_of_node(cdev); > if (!r5_core->np) { > -- > 2.34.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel