From patchwork Thu Nov 29 21:16:19 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Loic Pallardy X-Patchwork-Id: 152456 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp2876260ljp; Thu, 29 Nov 2018 13:16:44 -0800 (PST) X-Google-Smtp-Source: AFSGD/XaJeX+Li0XLGikTUIbNWVNbxQtrfHmoZetX2DrZpwfy0NOaGzVaWsX0auzeKpq6E5pdvPR X-Received: by 2002:a63:2109:: with SMTP id h9mr1394168pgh.277.1543526204143; Thu, 29 Nov 2018 13:16:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1543526204; cv=none; d=google.com; s=arc-20160816; b=e+9lhisMkcaFL4CZZlsGXB+7IwGN3V/9r9+kdvdOPR7UfWQsSDuQR2OkigPyIBBicF BhUcrKEbkth4DyNcdeNUk2Uns/07Ceh6mIeTPW366VmSyucZHWcfb52Zd6ZkkFUGURSV B6e6ejxtptYbjNMxSs28alx7F/TA0hbKnVVPCattDC1BJWLw7B0aSVxICMdMFOj2tckb G0oa25zP2RlKNLBuWV8m/byDkcvtq9rnS4qFA40sXckrmpnH00iyoEBIPWYQkVqWL4rk UlUmXUJ56Cn4flP+czI2wJKX9+6gOWSiUd2SmmlYQScTGVsn1cV19ChIrOz3KAGtQ+9w 4nbw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from; bh=yv7Rllnx8xlzg+cRjASjK3smeVQmeDdlCbuFg0TVK5Y=; b=Obsnv86/uhz3wWegNxd/sFa9B8AFYYwAPmO0jnmFfxH39K71zPAY/bCKaC2IsnRE8+ m6p/wONIHePzQXDf1+3npgvA3JzMJLfCjk5c0tq8W9Bfsx8tbnYWGdrGc3rlRSrrKCvE JyX1RGjRMO7onaFEN2KQq1DE2vG7eRNfZE5Ra4R2zGa71phft/3rkQ/NPNZA0FpWs5SO 1jC9ya0WCYWMx2TAQe7c4XldrLENPHNLOELZWcQoJdLvXPBrUqJLKuiuMc7dKrdTSTom cwSSh0P1K6HBP9bcpvH9A3qRau+xOGbqbUr7Ye24YtlKkyVVVcQvInMTbaB1tpdQ74cj bFkg== 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id t19si3160921pgk.163.2018.11.29.13.16.43; Thu, 29 Nov 2018 13:16:44 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726955AbeK3IX0 (ORCPT + 32 others); Fri, 30 Nov 2018 03:23:26 -0500 Received: from mx07-00178001.pphosted.com ([62.209.51.94]:1359 "EHLO mx07-00178001.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726600AbeK3IXZ (ORCPT ); Fri, 30 Nov 2018 03:23:25 -0500 Received: from pps.filterd (m0046668.ppops.net [127.0.0.1]) by mx07-.pphosted.com (8.16.0.21/8.16.0.21) with SMTP id wATL9OHB011927; Thu, 29 Nov 2018 22:16:36 +0100 Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx07-00178001.pphosted.com with ESMTP id 2nxw02wub4-1 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NOT); Thu, 29 Nov 2018 22:16:36 +0100 Received: from zeta.dmz-eu.st.com (zeta.dmz-eu.st.com [164.129.230.9]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 5DA413E2; Thu, 29 Nov 2018 22:16:04 +0000 (GMT) Received: from Webmail-eu.st.com (Safex1hubcas22.st.com [10.75.90.92]) by zeta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 8E83E592C; Thu, 29 Nov 2018 21:16:33 +0000 (GMT) Received: from SAFEX1HUBCAS24.st.com (10.75.90.95) by Safex1hubcas22.st.com (10.75.90.92) with Microsoft SMTP Server (TLS) id 14.3.361.1; Thu, 29 Nov 2018 22:16:33 +0100 Received: from localhost (10.129.6.191) by webmail-ga.st.com (10.75.90.48) with Microsoft SMTP Server (TLS) id 14.3.361.1; Thu, 29 Nov 2018 22:16:32 +0100 From: Loic Pallardy To: , CC: , , , , , Loic Pallardy Subject: [PATCH 1/2] remoteproc: replace bool from struct rproc by u8 Date: Thu, 29 Nov 2018 22:16:19 +0100 Message-ID: <1543526180-55934-2-git-send-email-loic.pallardy@st.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1543526180-55934-1-git-send-email-loic.pallardy@st.com> References: <1543526180-55934-1-git-send-email-loic.pallardy@st.com> MIME-Version: 1.0 X-Originating-IP: [10.129.6.191] X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2018-11-29_13:, , signatures=0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Post [1] and checkpatch tool indicate that usage of bool type in structure is now no more allowed/advised. This patch replaces bool by unsigned char (u8) and reorders struct rproc fields to avoid padding. [1] https://lkml.org/lkml/2017/11/21/384 Signed-off-by: Loic Pallardy --- include/linux/remoteproc.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) -- 2.7.4 diff --git a/include/linux/remoteproc.h b/include/linux/remoteproc.h index 507a2b524208..b6660088949f 100644 --- a/include/linux/remoteproc.h +++ b/include/linux/remoteproc.h @@ -452,15 +452,15 @@ struct rproc_dump_segment { * @index: index of this rproc device * @crash_handler: workqueue for handling a crash * @crash_cnt: crash counter - * @recovery_disabled: flag that state if recovery was disabled * @max_notifyid: largest allocated notify id. * @table_ptr: pointer to the resource table in effect * @cached_table: copy of the resource table * @table_sz: size of @cached_table - * @has_iommu: flag to indicate if remote processor is behind an MMU - * @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 + * @recovery_disabled: flag that state if recovery was disabled + * @has_iommu: flag to indicate if remote processor is behind an MMU + * @auto_boot: flag to indicate if remote processor should be auto-started */ struct rproc { struct list_head node; @@ -485,15 +485,15 @@ struct rproc { int index; struct work_struct crash_handler; unsigned int crash_cnt; - bool recovery_disabled; int max_notifyid; struct resource_table *table_ptr; struct resource_table *cached_table; size_t table_sz; - bool has_iommu; - bool auto_boot; struct list_head dump_segments; int nb_vdev; + u8 recovery_disabled; + u8 has_iommu; + u8 auto_boot; }; /** From patchwork Thu Nov 29 21:16:20 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Loic Pallardy X-Patchwork-Id: 152457 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp2876404ljp; Thu, 29 Nov 2018 13:16:51 -0800 (PST) X-Google-Smtp-Source: AFSGD/VryI7S9QhXXSOdoikv3JwiELFXNR2UsZ8qCxlucKPzN6vUUQTJwFDlIkXEdf9uEo8iMUMW X-Received: by 2002:a62:5793:: with SMTP id i19mr2991792pfj.49.1543526211193; Thu, 29 Nov 2018 13:16:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1543526211; cv=none; d=google.com; s=arc-20160816; b=y5V90e/5+8dEueEzc5cnDmhh68m7P74zE8evfry6S+CVLJP7adrkRUFd9JvrOJzw/Q 3tqbcsiVo3NA3YAAs4W2SnBQ7an9xbkz0ypmS5C9ovmMvo8RcgzViDhOcqf0DT7cMF77 Tlr5G7PBDbNjlKzZ2k240swuwSTJ5lqW4+zo5ZwlweMKRQM94nF0wzlvWIJiWzH2Co4M 8ORKT7Q55+iNqNe8ZC+E8RfE6trcEu9YW0WSvlvSS0VRIjovj5RVsn9EiAIvZU/8xS5G twg+Lictv7yEt6h6QyLYUcwe90Bqn8dnh8AWozPXuVGvErpbYEV5W2Mt9y09frAdzJXv M/MA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from; bh=+KEaWLR9DxwnYNmtMyG7LsjCI1WZz5HyMhTIkg4ckCI=; b=xNFpC67V92pNS0HOfH+4mzE6caQF9en3SKwdG3lJQxU0ZGcswNouPPsUkqL45XMVXb ROjON7Cd22YxvVt2nL79p2jT4Uz6u+b/qB+Gpf9/8pm56J+EfoufatXyNK6m0MmykzPH Ba5zqMYvSVnydOL4tfqtrMPKd/fOSJex7dOyNdlfxR59JJeLhWQqBrkNzsI/AdfplKqi DnfHCyuUp0YgCIQfcLmVXB6iiUJFvGQy/ZS9826YqBmc1rcFRrPJ6cYcY3BgfRdPpHh2 7dc8X240yruhlhl24kXuWC8HJawOCYtgS6r+vUVFuteT9GwKmwmoDSB32AAzYnKm4n2W Rt2A== 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id go3si3256774plb.97.2018.11.29.13.16.50; Thu, 29 Nov 2018 13:16:51 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727026AbeK3IXe (ORCPT + 32 others); Fri, 30 Nov 2018 03:23:34 -0500 Received: from mx08-00178001.pphosted.com ([91.207.212.93]:42395 "EHLO mx07-00178001.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726216AbeK3IXd (ORCPT ); Fri, 30 Nov 2018 03:23:33 -0500 Received: from pps.filterd (m0046661.ppops.net [127.0.0.1]) by mx08-.pphosted.com (8.16.0.21/8.16.0.21) with SMTP id wATL9N2a009202; Thu, 29 Nov 2018 22:16:42 +0100 Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx08-00178001.pphosted.com with ESMTP id 2nxxdjp2n4-1 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NOT); Thu, 29 Nov 2018 22:16:42 +0100 Received: from zeta.dmz-eu.st.com (zeta.dmz-eu.st.com [164.129.230.9]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id D7AE63E2; Thu, 29 Nov 2018 22:16:12 +0000 (GMT) Received: from Webmail-eu.st.com (Safex1hubcas23.st.com [10.75.90.46]) by zeta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 1DE7E592C; Thu, 29 Nov 2018 21:16:42 +0000 (GMT) Received: from SAFEX1HUBCAS24.st.com (10.75.90.95) by SAFEX1HUBCAS23.st.com (10.75.90.46) with Microsoft SMTP Server (TLS) id 14.3.361.1; Thu, 29 Nov 2018 22:16:41 +0100 Received: from localhost (10.129.6.191) by webmail-ga.st.com (10.75.90.48) with Microsoft SMTP Server (TLS) id 14.3.361.1; Thu, 29 Nov 2018 22:16:41 +0100 From: Loic Pallardy To: , CC: , , , , , Loic Pallardy Subject: [PATCH 2/2] remoteproc: add support for co-processor booted before kernel Date: Thu, 29 Nov 2018 22:16:20 +0100 Message-ID: <1543526180-55934-3-git-send-email-loic.pallardy@st.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1543526180-55934-1-git-send-email-loic.pallardy@st.com> References: <1543526180-55934-1-git-send-email-loic.pallardy@st.com> MIME-Version: 1.0 X-Originating-IP: [10.129.6.191] X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2018-11-29_13:, , signatures=0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Remote processor could boot independently or be started before Linux kernel by bootloader or any firmware. This patch introduces a new property in rproc core, named preloaded, to be able to allocate resources and sub-devices like vdev and to synchronize with current state without loading firmware from file system. It is platform driver responsibility to implement the right firmware load ops according to HW specificities. Signed-off-by: Loic Pallardy --- drivers/remoteproc/remoteproc_core.c | 37 +++++++++++++++++++++++++++--------- include/linux/remoteproc.h | 2 ++ 2 files changed, 30 insertions(+), 9 deletions(-) -- 2.7.4 diff --git a/drivers/remoteproc/remoteproc_core.c b/drivers/remoteproc/remoteproc_core.c index 54ec38fc5dca..8fc9a1bbb2a4 100644 --- a/drivers/remoteproc/remoteproc_core.c +++ b/drivers/remoteproc/remoteproc_core.c @@ -1301,7 +1301,11 @@ static int rproc_fw_boot(struct rproc *rproc, const struct firmware *fw) if (ret) return ret; - dev_info(dev, "Booting fw image %s, size %zd\n", name, fw->size); + if (fw) + dev_info(dev, "Booting fw image %s, size %zd\n", name, + fw->size); + else + dev_info(dev, "Synchronizing with preloaded co-processor\n"); /* * if enabling an IOMMU isn't relevant for this rproc, this is @@ -1657,7 +1661,7 @@ static void rproc_crash_handler_work(struct work_struct *work) */ int rproc_boot(struct rproc *rproc) { - const struct firmware *firmware_p; + const struct firmware *firmware_p = NULL; struct device *dev; int ret; @@ -1688,11 +1692,17 @@ int rproc_boot(struct rproc *rproc) dev_info(dev, "powering up %s\n", rproc->name); - /* load firmware */ - ret = request_firmware(&firmware_p, rproc->firmware, dev); - if (ret < 0) { - dev_err(dev, "request_firmware failed: %d\n", ret); - goto downref_rproc; + if (!rproc->preloaded) { + /* load firmware */ + ret = request_firmware(&firmware_p, rproc->firmware, dev); + if (ret < 0) { + dev_err(dev, "request_firmware failed: %d\n", ret); + goto downref_rproc; + } + } else { + /* set firmware name to null as unknown */ + kfree(rproc->firmware); + rproc->firmware = NULL; } ret = rproc_fw_boot(rproc, firmware_p); @@ -1846,8 +1856,17 @@ int rproc_add(struct rproc *rproc) /* create debugfs entries */ rproc_create_debug_dir(rproc); - /* if rproc is marked always-on, request it to boot */ - if (rproc->auto_boot) { + if (rproc->preloaded) { + /* + * If rproc is marked already booted, no need to wait + * for firmware. + * Just handle associated resources and start sub devices + */ + ret = rproc_boot(rproc); + if (ret < 0) + return ret; + } else if (rproc->auto_boot) { + /* if rproc is marked always-on, request it to boot */ ret = rproc_trigger_auto_boot(rproc); if (ret < 0) return ret; diff --git a/include/linux/remoteproc.h b/include/linux/remoteproc.h index b6660088949f..996404833a29 100644 --- a/include/linux/remoteproc.h +++ b/include/linux/remoteproc.h @@ -461,6 +461,7 @@ struct rproc_dump_segment { * @recovery_disabled: flag that state if recovery was disabled * @has_iommu: flag to indicate if remote processor is behind an MMU * @auto_boot: flag to indicate if remote processor should be auto-started + * @preloaded: remote processor has been preloaded before start sequence */ struct rproc { struct list_head node; @@ -494,6 +495,7 @@ struct rproc { u8 recovery_disabled; u8 has_iommu; u8 auto_boot; + u8 preloaded; }; /**