From patchwork Wed Jun 15 03:20:47 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Peng Fan (OSS)" X-Patchwork-Id: 12881780 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A71C2C43334 for ; Wed, 15 Jun 2022 03:19:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346067AbiFODTJ (ORCPT ); Tue, 14 Jun 2022 23:19:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35880 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346030AbiFODTH (ORCPT ); Tue, 14 Jun 2022 23:19:07 -0400 Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00042.outbound.protection.outlook.com [40.107.0.42]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 670673DA4D; Tue, 14 Jun 2022 20:19:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=noT3gBsEqXV5q/t5F2qTlMWvy+Lz2Gl/MVAU64NQVDGOpTl07gL1fThGMNN+rTmxgFFDs2lz95Q/w3HGU5L9b8qoHOvg1CMj3tPdP89w0VZD/gQDQs7tEXa/+S2yaQxqZ/ASP2ZsSInUMC6aEvTX/SdVjLYOA5E+m74paaR8lKsr0OQ3MyHLiIwGn2UZGtnNaYxPbDHlGtrgpObcMyLKeQJaJ8j3mNNe/Qv+wX5WnzDu71+nSUlAXD26nVbC2Pn85L2yz2WlBSISeKiixNbG5EFpIl25WPOkjKtriv+dmEVnAAVO+7Rf3f1wsV7dUlS56dycF+wq1ILPcOFv+fsatg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=c0A3dvZmo0wb7QtLTcsiGhTA7NxPx0OfxPIUEQfQAL0=; b=QP/BLGExHbu+XPlnJuL/6+hvPrcnSLhkOcRv8+rDrxfY8w7r/0ODbJAaLKEo4YaDgk0tj8kZQ5F3w+r4erHT2N9VLbaBm1OtbVqOpXepi29EkeRhro5xMgA5Xhw6QkcBS4Xer/0iP8NoMmDUxcFXyGatnoBSZudxYYQCa8xzKzRVDGD6oruQe2bhiSyCDlNZ0aEKl4IViPS4m5B07qXLc0/wL2hh17zdLaXSLcLTb7oIisqUWjC7GRoSHBUDV7ezPECUti7vEnQz7I3/uJgpG5rysEpmAshlXOEdlkCwETISkL7/GovjvJ7gHXpqst/DyHHFu8YwrX9/IOfUIqnQqg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector2-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=c0A3dvZmo0wb7QtLTcsiGhTA7NxPx0OfxPIUEQfQAL0=; b=XFfi/h+W+AdjgXokCCCAhLeh3jH59nqwXAz/KkPjz4d/eEKfqtdzo2183zUeeObPZ/Tyf0DfWegQVcaOZJYDfIMLZ6PraRgEbS5T6PGkEg+7syBsxXbf+pcgfupRd2LsmOB4XOwLfcftCWBq0FiNo5ExwTh2Yos65RNqM2p8Vzw= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from DU0PR04MB9417.eurprd04.prod.outlook.com (2603:10a6:10:358::11) by AS8PR04MB8817.eurprd04.prod.outlook.com (2603:10a6:20b:42c::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.14; Wed, 15 Jun 2022 03:19:04 +0000 Received: from DU0PR04MB9417.eurprd04.prod.outlook.com ([fe80::a892:e4a9:4769:13a5]) by DU0PR04MB9417.eurprd04.prod.outlook.com ([fe80::a892:e4a9:4769:13a5%8]) with mapi id 15.20.5332.015; Wed, 15 Jun 2022 03:19:04 +0000 From: "Peng Fan (OSS)" To: bjorn.andersson@linaro.org, mathieu.poirier@linaro.org Cc: linux-remoteproc@vger.kernel.org, linux-kernel@vger.kernel.org, Peng Fan Subject: [PATCH V5 1/2] remoteproc: introduce rproc features Date: Wed, 15 Jun 2022 11:20:47 +0800 Message-Id: <20220615032048.465486-2-peng.fan@oss.nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220615032048.465486-1-peng.fan@oss.nxp.com> References: <20220615032048.465486-1-peng.fan@oss.nxp.com> X-ClientProxiedBy: SG2PR01CA0168.apcprd01.prod.exchangelabs.com (2603:1096:4:28::24) To DU0PR04MB9417.eurprd04.prod.outlook.com (2603:10a6:10:358::11) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7154d4b7-7c2c-4cde-7b0f-08da4e7dcccc X-MS-TrafficTypeDiagnostic: AS8PR04MB8817:EE_ X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: gvSNj9ogTq9Rt7x5NnHcItphPhm4kMVRXlvyMaxKuL9+n00+KfZkrVq8X1UzJGKDG2SCWnE+AcNQtTCqgdAWSoNjYQuJdF2yQDo0ejfN4Ev/yN2NoQyjR1rJGiZJQ8nLwCNAmoiSWhN49o+CMKWCvKPumKwddCMN9TNbx+NC7Byn6CtR5R5uh3krIbOUObcvnZbxZX/ov1E243aE7Iq6o+ZEWePUp0Nz+T2eW3OdMeb9uUeqkXYMF6EWTuGn27TAs5df4nKA6YSYVRbhV9zjdzoHxsbjYUsMtDABry1JT4jVAlSNfYn0Y+qHKhseiXWrX+cSeiXZ2992iWGCWKari5gtfBZ3ZeIAmZqjl8wN6GzjHIqMPMXeOcTJbv7j1EHRoHfpv6SfST58qZrc/YBiTQJXkkOuuqMnHqE+g3z1kJzCRXqU/Dn6Kizc69wgsR+95j7fUfLN6cKIFErKNYn9iW3RTxNxFflrhEwMt9bwg+iDWttIEi5n/7gKsrHCp32jEMow/GNDHofFiNcXRV0btire2ZmkEp4dlBis2sXgqROlpjJBQ5yp5uVLnP/XDE2CVLXMZcJa3pq64Pw5mhi7XoiPbgqKEr14ov/7k2u0Ot6eqyPQajLOlzL7rh/TrW/EqPp1Cb5nReOqnpZWExBiaoHBJTDFoTX854BddoplmYVf8pWzyYoSdOPut/c+DSjG6kfwrsck9xlMXBSi5hIxKg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU0PR04MB9417.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(366004)(38100700002)(2906002)(6666004)(86362001)(52116002)(6506007)(6512007)(38350700002)(26005)(6486002)(508600001)(8936002)(5660300002)(2616005)(1076003)(186003)(316002)(66476007)(4326008)(8676002)(66556008)(66946007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: KIJVXBLtdBC3wcwtyZrDPKmfAXQxFCI/EoXfJOi39e8/IJcGS+z6Y15tKaBFM0XJrArSZW1cazAXqt3cTYgYVJgjb8fgXjYU38vMs1nwBkpwx3pxXby6lymEaG9dWdCYjCbVRyKDzPRhgdZi/iOZRreBEIe2Fi90mRMDbY0mqTlmj1UP8xXVwj3DXBE+ESoH/fwpASWrlzz932TWKv2seP7Htedf37h/8jUZDbHNpr3GAWF/GlNzAm16gQjb4ZDfQFSn0tk0CM6PLcEmYIajSzfGVRfhmsqRiPVpKoXxwNBzUb7gNy/GZuIalEUrOhf/5wT02yapMUEGvgaQE7EKN24U32N6Vh6N6k1qBxQukcbZzEXMj92wyGiKUexs6YozIFB8HiCe8sOO54ibI0Vl0rlo6p2B1vnRU6K7THxQ0QcXfTDRZPviZdqizArIxV+Z7fXAvNFZdeW9q72UDBvz3ec5osFZxUo+GGdstMZfZoaGNQ5uAhAEITZp9iT5NSMpmcUrmKVRaTnZJx+t9CXxd0wzbfzztE1nOjzXdesZEdzJbfW01gt5Kok+QL8o2gFBbaeb9OrrIFmH7MMhBgn73Pr6cZHTFOR401HtE0WqL2mDwXmZo1AsKxxWnNEmGwf/xMo0kOALcloUbA4pSx4Q7ZExuxhWvRx93h36seFNDwiHUT0MjtE6YvvF67di7G7f0vpT2pcuQhgQx2d71A/ON+66Nra4UyFniBcQH81vd3BaTR/s9I1tTHKXF1Q1voihaVpmzLiUdKRs13vXFesFW4fz3TJRMhviu1L4k0l8OzNxGDca4/mmsXkbBaPw4QHXZd/Fu5X0Dp7oK46u52+bX0wSHwh0XfZeqsgSK2u7ayyZwrDNgNsMuo6YqD53jxrUIqhR7BkVy4Yk0Vdov70/lGpSxyL2J/jAFA+3doWfF+Odj8LJ/lr8PeHNys4ANuScoRYBYTcR+OuAJ77Ppo8ZFJ36RoRNLDaCFp598lmCi0fKZwdwUXX93keazHfr1M7WwJIi1NeO4e/MR9JjsYAkcM6pNNOFUtKDFJe7N/hUcKkhz1//OzNHNu72ObDEt3l5ZlwseoUlLJnOQfHiBvn2xoPUVTdnJxgWonlJsR3ETjCqgo0f0Xud+h4RFDBat7UsTqgSwVMwlodXewOzYe+vyH1HWw1dOBQtJzydOBuwGVscBMP06Cg00/1uI1lI6+5BnO7n6oKP+mpkDJFoGbkQPped37tFXYEu8xJr0UozZhDxTuOxa4BiZwmIDD0GS1y8VuzQ7ADVk4KxF1E42ZVX+aqmRVujbpW8xShNghVIJJYiAjCtaUOUb3mqnPaCStILG5dpmpubUZ2yRB/Vn1MoE9YZYNL3KLv8c6qlq/aj4MEhiqvqg89wFNxmrpqKMgBD2kVvfe70B2kRC6FVuGvIFWm+K4WMCMU+j0CoeIAFNB75miKvDe39J7WX7snwAgfG/QoWXrLyzH2GuWfzpCPerGRAfsDUt8qi0V6lB7ghGVrin+qt7SC7RI1iJEigt46WyFnLl50HlErR5J4aJA2wRewmT09AjkPVClE7gIAqNUKQlHLTrdl6HKw87hcRG5SsKqVc0viANHw+JTwvN7OSMR6r0g2GMTm+mRTuQ8pChl8rnHiUjPbY1SIF09UQkWHh/S4BcKDMBjTgm66nx7zSst5NDlIZvwNqAgawQMAxPXgCZnHVEXuprD2jwNnQUEJMK34+bW0yTNnLgUJiBpOdWA== X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7154d4b7-7c2c-4cde-7b0f-08da4e7dcccc X-MS-Exchange-CrossTenant-AuthSource: DU0PR04MB9417.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jun 2022 03:19:04.2208 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: HnE4tBYRJvkbEat61NJr8d2iIExtflnQ4/HnbAvWP+h+dm9CWgNMf9Bu9pExeGKVensMHXhdws/hpZM15PdMAA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8817 Precedence: bulk List-ID: X-Mailing-List: linux-remoteproc@vger.kernel.org From: Peng Fan remote processor may support: - firmware recovery with help from main processor - self recovery without help from main processor - iommu - etc Introduce rproc features could simplify code to avoid adding more bool flags Signed-off-by: Peng Fan --- drivers/remoteproc/remoteproc_internal.h | 15 +++++++++++++++ include/linux/remoteproc.h | 15 +++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/drivers/remoteproc/remoteproc_internal.h b/drivers/remoteproc/remoteproc_internal.h index 72d4d3d7d94d..82247cb5d0c2 100644 --- a/drivers/remoteproc/remoteproc_internal.h +++ b/drivers/remoteproc/remoteproc_internal.h @@ -24,6 +24,21 @@ struct rproc_debug_trace { struct rproc_mem_entry trace_mem; }; +static inline bool rproc_has_feature(struct rproc *rproc, unsigned int feature) +{ + return test_bit(feature, rproc->features); +} + +static inline int rproc_set_feature(struct rproc *rproc, unsigned int feature) +{ + if (feature >= RPROC_MAX_FEATURES) + return -EINVAL; + + set_bit(feature, rproc->features); + + return 0; +} + /* from remoteproc_core.c */ void rproc_release(struct kref *kref); irqreturn_t rproc_vq_interrupt(struct rproc *rproc, int vq_id); diff --git a/include/linux/remoteproc.h b/include/linux/remoteproc.h index 7c943f0a2fc4..96b65e7affda 100644 --- a/include/linux/remoteproc.h +++ b/include/linux/remoteproc.h @@ -489,6 +489,19 @@ struct rproc_dump_segment { loff_t offset; }; +/** + * enum rproc_features - features supported + * + * @RPROC_FEAT_ATTACH_ON_RECOVERY: remote processor no need help from Linux + * to recover, such as firmware loading. + * Linux just need to attach after recovery. + */ + +enum rproc_features { + RPROC_FEAT_ATTACH_ON_RECOVERY, + RPROC_MAX_FEATURES, +}; + /** * struct rproc - represents a physical remote processor device * @node: list node of this rproc object @@ -530,6 +543,7 @@ struct rproc_dump_segment { * @elf_machine: firmware ELF machine * @cdev: character device of the rproc * @cdev_put_on_release: flag to indicate if remoteproc should be shutdown on @char_dev release + * @features: indicate remoteproc features */ struct rproc { struct list_head node; @@ -570,6 +584,7 @@ struct rproc { u16 elf_machine; struct cdev cdev; bool cdev_put_on_release; + DECLARE_BITMAP(features, RPROC_MAX_FEATURES); }; /** From patchwork Wed Jun 15 03:20:48 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Peng Fan (OSS)" X-Patchwork-Id: 12881781 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 173EAC43334 for ; Wed, 15 Jun 2022 03:19:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346140AbiFODTL (ORCPT ); Tue, 14 Jun 2022 23:19:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35904 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346045AbiFODTI (ORCPT ); Tue, 14 Jun 2022 23:19:08 -0400 Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00042.outbound.protection.outlook.com [40.107.0.42]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D68DD46674; Tue, 14 Jun 2022 20:19:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YL5Sw+4da2OCVBdmdkP3JCB+/Xy1grIfjB+gy4H+dkz5yDbYUpI8wx/9RA9WN4y/Dtb+5gbEZ4xqW2UKO540vUAv6IcA3irnljTaoda3GNmj9JkO8nueRxCwbZ7u54cxW5duoOu/JV2aZ59Gdt2pi2grshfTlNOEU0MvpuwL8oVkX528pOPHHHaBzhZyzuvZGUOVR9OUwyolrmHZKEVRpItdVOS0cT4XWHmTfTcwXf8fSM5XtOsmJ9+/MlQF40XCmIuLBeXmd3mdTvJI3TNkoEXN5tnq77UXF6nVH9Yq/ms7q5zTQ4BEVn7jk1KSBqmjK+TqKDtpUb8SOxqMia/6hw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=gXSbX9XhNhe4FjBB8+RMHxB6YN53l4UF07qi1HUuSs8=; b=IXv14+7JECpbRId+GO/Ttavcx1PZk4kBtq7j8iKItkQer3PqmmeF1Efcx+BMfgNz+bxX5i80dufWAmECkstkgaTzA3hRzBC0+e7AWtKQdDGjMECBV9ZzvUdjIOiWhGXObCmwSK7W8OYOqyuUumU4+H3iUxc4GsW/ZfgZ3MDNuIcLM2YGSVhmgaVjcAfc4JR624HWrAarmMnp/MSuxr9TU5NMkOdhdeawskJ4V6JuI1V16kTzzeSJr5ASZyRJcgm6BIRYsmB9+JqLR4IPBCsHgZSVFJJwO0yerXrh8tyGZfefu4THeTRAHorsXdqCtNjaB7DK/Etzw/gWXSqj5gnf/A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector2-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gXSbX9XhNhe4FjBB8+RMHxB6YN53l4UF07qi1HUuSs8=; b=lO6gHe8fj+Hlqd3piygDt63O/c0wyxkmvhYtAT+lwXRgnTR+ou+hlNSXXuKdymTeakCx4BvBYKZcDFf6g0rm1kTBdTgFc/UKNfYIOIz0NdmzwKulSVS433CWhFHxvJYpVNrJK3zADczvUTjsiUgGY+z6lm2dUnPgc6+SOzwY7MQ= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from DU0PR04MB9417.eurprd04.prod.outlook.com (2603:10a6:10:358::11) by AS8PR04MB8817.eurprd04.prod.outlook.com (2603:10a6:20b:42c::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.14; Wed, 15 Jun 2022 03:19:06 +0000 Received: from DU0PR04MB9417.eurprd04.prod.outlook.com ([fe80::a892:e4a9:4769:13a5]) by DU0PR04MB9417.eurprd04.prod.outlook.com ([fe80::a892:e4a9:4769:13a5%8]) with mapi id 15.20.5332.015; Wed, 15 Jun 2022 03:19:06 +0000 From: "Peng Fan (OSS)" To: bjorn.andersson@linaro.org, mathieu.poirier@linaro.org Cc: linux-remoteproc@vger.kernel.org, linux-kernel@vger.kernel.org, Peng Fan Subject: [PATCH V5 2/2] remoteproc: support attach recovery after rproc crash Date: Wed, 15 Jun 2022 11:20:48 +0800 Message-Id: <20220615032048.465486-3-peng.fan@oss.nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220615032048.465486-1-peng.fan@oss.nxp.com> References: <20220615032048.465486-1-peng.fan@oss.nxp.com> X-ClientProxiedBy: SG2PR01CA0168.apcprd01.prod.exchangelabs.com (2603:1096:4:28::24) To DU0PR04MB9417.eurprd04.prod.outlook.com (2603:10a6:10:358::11) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ea8b265c-7ce9-4611-17c0-08da4e7dce13 X-MS-TrafficTypeDiagnostic: AS8PR04MB8817:EE_ X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: zkPQ5CQ01VRlaTGYkl0qUIYG5O9p1//KPsMvPosPmq+CZXwKNJ3LC+B8wZv5I2I+rpLrHl6WMuMe3ECbFxQbl7KakAKqi6QCkSZOSRJE2ptwzSmGHgGa7jyJ0CgJwFbn1yxnReWiuxBJxVT+758VS9asWMypxJwTA9oEKoG98t4KHAOEdQfkGh5sh59JkTSuB2v8R9TJqOLDDC3lRTbmh+SqqYTC/edzG7oCxqaVXpRlnsiI1O5Ie2T8Eb5DJVcKxens6W5z3vxRp/O+gCJsrGGCU7r+idqXDbDUtrM9sNIOlkMNK0zgf4UQTO/FsHD4r3Lfvd0D07zD76Zvoz3VtK/OfIAqA0bCf3T8oXBYfajV2CjvIrizvPOPbyecnf7/YOZ9fHh6H5e27tq9aSIH1hy39Te/44JC88+GQlyUjHUrfhAKy8wFWekWDqXvdMesbqZFBAGVr3HO/FCyB20twx+R/0H3hrxI/JfStAVdlsdV4Yi7dVmg07qkhHrAfhxwzZCh5/fiaAcjBRuO6xpK36/I2JuWaT4ZErlzyyWQI6ysCoSllwAbkgnCe5T0KzIMoz6NpFAIzzdqql1xKqqdT83fzCnH44lmq+E1g2FkqJlHjXALcp7u5G8sBX3jfzeYYzh+Mj8swadsY/Ch4H9vmRNjB4LEPvE5qlfYyTVyDu1wYOVzYh0IsPV0N+wKA8JLHUZl8Zkj9uM/5ZYVQGbCaQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU0PR04MB9417.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(366004)(38100700002)(2906002)(6666004)(86362001)(52116002)(6506007)(6512007)(38350700002)(26005)(6486002)(508600001)(8936002)(5660300002)(83380400001)(2616005)(1076003)(186003)(316002)(66476007)(4326008)(8676002)(66556008)(66946007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 34YjhXeFhEz3EF5T5XUcuxSflLEUQAfzetouxV3gp+eX8zdQNLOZft9WTXxYKyDddb2Qhia+exC7oMaOgm48EdDuCdZ6R/Vs+KOiNDYjd/8zds6s46oGcwhmyKHZJZTV/tMP2pLhhGEfZs3jpZ/yflrP/MDEfFgWfdcX+q5SlibTi9BhNn/+jWmTLTquMneye2X2S4ZhOeedtsqjHhtKscVFwEROf9ObhN414up23IUsEr6I3ldVRy7nq8gO34VGvli3erYZXrNNI0t+w7jho/UJsAbLgbmUpIKIh2wlBYk731PWFmB0/y4ecLfPsYDazA5WUZaXiTP9pPYbCtXhAavh042Au6t0V8OtIL/YIQOH5Re+cusf1Q4pNjV2ijuPMkaen/v6r7y7sKj100bAnzjDv3ijU/OQ9zZlyNI12zKi3Q51YOMC6YTKWuTC8hy8xyPy9PrjaEBugqXzWchk/43ECwtbXoHqmhNQvsF3EwFv0/TxJPx7gbdq7qnvKS/IXujjPaUXRdRhaZFwViA366HvRfejgIeRBxegl5reDFUcAu6CCHxbR+Wm7/sCbx6KybhUxk36rXjbSjMaeh8zfz045zmojx6ObMJwfIwGqc7sgSBU2SZzSyKJodxfA8LBAxntyIc+QboRandNAHMyJUJhd3AOoXRlqw2rHzxlrgv0IM3+Qh6bn9SbmHJpoKAHmOuE58/KYjCUVmRXrw6cbKpsg9tBKYgOJsNwBAF/dP2MQMGxYVOqGoJJOQHYLPSDHlW7hkfNbsEm+DHwaJbKy0GS91y1RHJE3FTvQfuDuBtv8E8OxFzxZl3Z8EVBDVs8HvgglPtPY2Uf3BJzUg1OXlsPUM+gsSLh1UL5cW5vymSfT/26zDPPef2GAaVjgpOJI8TpiC/jyOAP9cXLXUkIBCtn0tzjZtHItJm2XB64+gHHFo0dhJcau6/S9r8T9sp1zIxoh+zLXGFLtwsKr6uCZ+jInajckwauG/pKhL1uAPsjkrFhP/gha8zBWAar+tmBPzTICNjYIYVVo/wHq63XooNsoeCw+jX+wHGA8iABumv5LmAR5JssIqtt+bRNYK5+chc1wF+CqQRhy0c7zBbpOcguWI3aYaP59Pz0fouW9t9+tm5OMVcoB3HrxIWMRgibSJfz9lsdzIAde+Xa58rOwSYCLdya8jQ3sWilb0dZ83WKzc8AaWJsIirANIKFVwdFbndjkUiRsFehJjFtRQmaH6aISp1aZ0f/WD5zd9+eN33ljWKTC19SOKj21Smhl+4X/USO0W0DsMiO8QqKrYEkUIHOL717e6Syp0jMsd/b3xkll1w8satmXpYdINo0CNaQvoMSnJlj+ok2BCBwPFqzrQdc1LGZFe0bKwHkMmGUXQMsyCZAl4HB+8z9E2ssvRy+2CpGQ+J5zNTjWiP6QukvoWD0vcg/+DStPYdwfxTp+ifC2pUocnFtBOqfWKjz0MNoAZ3l1ths/88bzNlvz2kROV3vwL+HGyp/z6HBL6/b+egZJ3YRi8biudnMvMk9ubjGJ12LVhm4JvPKzB+K3bI3ZoYkHW4zL+8tys44PG6kU4B43BycskBiYpj+Wb9NSdXv0MGlE2mElJJtQFc6Mrf4ryHg3ZEJW/5ce+dej3SqrzE2i9uZgEV7ihPDDJDYcYgAP1ivifASMtFZypFN/Tkprqza6YcDssFRw1CY9d8NF0rveD84ohIqjnG0lHKafljL+76kCdP0dGJDc8vKq3pw4w== X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: ea8b265c-7ce9-4611-17c0-08da4e7dce13 X-MS-Exchange-CrossTenant-AuthSource: DU0PR04MB9417.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jun 2022 03:19:06.3457 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: EN5q1vHipA27HRsBJuM5EVwlQewZcH3qiXXHD8g1eqSxOO2LA/TgLW137mKGZ8rCzjJ66EN56T+FMAzmbnvIAg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8817 Precedence: bulk List-ID: X-Mailing-List: linux-remoteproc@vger.kernel.org From: Peng Fan Current logic only support main processor to stop/start the remote processor after rproc crash. However to SoC, such as i.MX8QM/QXP, the remote processor could do attach recovery after crash and trigger watchdog reboot. It does not need main processor to load image, or stop/start M4 core. Introduce two functions: rproc_attach_recovery, rproc_firmware_recovery for the two cases. Firmware recovery is as before, let main processor to help recovery, while attach recovery is recover itself withou help. To attach recovery, we only do detach and attach. Signed-off-by: Peng Fan --- drivers/remoteproc/remoteproc_core.c | 64 +++++++++++++++++++--------- 1 file changed, 45 insertions(+), 19 deletions(-) diff --git a/drivers/remoteproc/remoteproc_core.c b/drivers/remoteproc/remoteproc_core.c index 02a04ab34a23..1c1c90176aff 100644 --- a/drivers/remoteproc/remoteproc_core.c +++ b/drivers/remoteproc/remoteproc_core.c @@ -1883,6 +1883,47 @@ static int __rproc_detach(struct rproc *rproc) return 0; } +static int rproc_attach_recovery(struct rproc *rproc) +{ + int ret; + + mutex_unlock(&rproc->lock); + ret = __rproc_detach(rproc); + mutex_lock(&rproc->lock); + if (ret) + return ret; + + return __rproc_attach(rproc); +} + +static int rproc_firmware_recovery(struct rproc *rproc) +{ + const struct firmware *firmware_p; + struct device *dev = &rproc->dev; + int ret; + + ret = rproc_stop(rproc, true); + if (ret) + return ret; + + /* generate coredump */ + rproc->ops->coredump(rproc); + + /* load firmware */ + ret = request_firmware(&firmware_p, rproc->firmware, dev); + if (ret < 0) { + dev_err(dev, "request_firmware failed: %d\n", ret); + return ret; + } + + /* boot the remote processor up again */ + ret = rproc_start(rproc, firmware_p); + + release_firmware(firmware_p); + + return ret; +} + /** * rproc_trigger_recovery() - recover a remoteproc * @rproc: the remote processor @@ -1897,7 +1938,6 @@ static int __rproc_detach(struct rproc *rproc) */ int rproc_trigger_recovery(struct rproc *rproc) { - const struct firmware *firmware_p; struct device *dev = &rproc->dev; int ret; @@ -1911,24 +1951,10 @@ int rproc_trigger_recovery(struct rproc *rproc) dev_err(dev, "recovering %s\n", rproc->name); - ret = rproc_stop(rproc, true); - if (ret) - goto unlock_mutex; - - /* generate coredump */ - rproc->ops->coredump(rproc); - - /* load firmware */ - ret = request_firmware(&firmware_p, rproc->firmware, dev); - if (ret < 0) { - dev_err(dev, "request_firmware failed: %d\n", ret); - goto unlock_mutex; - } - - /* boot the remote processor up again */ - ret = rproc_start(rproc, firmware_p); - - release_firmware(firmware_p); + if (rproc_has_feature(rproc, RPROC_FEAT_ATTACH_ON_RECOVERY)) + ret = rproc_attach_recovery(rproc); + else + ret = rproc_firmware_recovery(rproc); unlock_mutex: mutex_unlock(&rproc->lock);