From patchwork Wed Aug 7 09:41:18 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Loic Pallardy X-Patchwork-Id: 170738 Delivered-To: patch@linaro.org Received: by 2002:a92:512:0:0:0:0:0 with SMTP id q18csp6885283ile; Wed, 7 Aug 2019 02:41:37 -0700 (PDT) X-Google-Smtp-Source: APXvYqwHMLsb6Kkjx9Zjjaeld2hjhM1ESkSDlpoddE94DRD1N7ZOMZQbqp5/9PWY6FoeuQ8X4yhH X-Received: by 2002:a62:8643:: with SMTP id x64mr8634858pfd.7.1565170897155; Wed, 07 Aug 2019 02:41:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1565170897; cv=none; d=google.com; s=arc-20160816; b=brD9BIY+VGLe1/sEVlpIT0+EZNbpqWGUY7FjGQBHrd7Eelg1o9VGTKVjnzbBGKzdtr 1bWuGUERfFnD/oJ4l2+suCpm+Yo2ep0HEfj2Pzzw0XjZz31Jc0smnKCbUt2+dCGCbGUU T5ohCbDDypvDa7HiSWr/sX7k8tq4TPrio3MgiA2X10DCksyFmIxhZc19RvhJxPqHdEVO DEddtRBED94tkskgUZMgFHNxkbVNPI/jIvCnLl9OgivHO7thYcrNg1yeNA4N1DSvlNtW pYU4ojzSqDjg7Xn32j4bKisqZNez7tscDWkOlSqMNG/8BrzuPnU3gF2V3A6p50kFN12P gvGw== 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:dkim-signature; bh=P2Lxpk/eGcloJl8K8e2dAEZgux/iin59KPH93G5OUOM=; b=ue7uOB9ajK735zNk9W3vOoPUp7GF+Hkgv63vgLsWm8aVjNIL9Z05C+xQOUap208TNX /X3VCtfngkVXJLGHhpzo9aFpH4Y577strIDSop7zN/4/mkJ/vxPOI/VLDFml4YBVBvM6 gBc96wD84G0PdAChsOdDPt8OeIS9XlKH/DHtyYPqsSj0LqmjaxG8zfwqKXSRvuKR0ey3 4O3Bou43Lm0Ajo4bSUGtflAm9NpnbXHmS6+k6yveBDGgPHkefWhOeM7zaE3kICSs+iNs 2SE2nmxf++ONUcIw8jQDsM2N+LdxJMNZZNxLA0q8PmQQhAHcltC06UMUTPsxDU2laKqW 8ILw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@st.com header.s=STMicroelectronics header.b="Lb5aU9z/"; 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 w12si11912598pgt.397.2019.08.07.02.41.36; Wed, 07 Aug 2019 02:41:37 -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=@st.com header.s=STMicroelectronics header.b="Lb5aU9z/"; 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 S1729002AbfHGJld (ORCPT + 28 others); Wed, 7 Aug 2019 05:41:33 -0400 Received: from mx07-00178001.pphosted.com ([62.209.51.94]:20320 "EHLO mx07-00178001.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726498AbfHGJlb (ORCPT ); Wed, 7 Aug 2019 05:41:31 -0400 Received: from pps.filterd (m0046037.ppops.net [127.0.0.1]) by mx07-00178001.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x779b0go000392; Wed, 7 Aug 2019 11:41:26 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=st.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=STMicroelectronics; bh=P2Lxpk/eGcloJl8K8e2dAEZgux/iin59KPH93G5OUOM=; b=Lb5aU9z/qLBDpv1n8TpYqNBqTSvNk0DeVyC+HQ2xTeRhy9fEXQ1y4vay2Y6fLxCLmBxp qR6vW5l63nLazlhuw9Gsx4iGMjlF1FoiO2+oNLS4LJJA79etTfYVc5uKvwzv1o6V1Kqd KIDYUP//efwc0lDnZ0sIpOivYyINuNLotz0jvdNgwjvQYyc+t/ns+bCNPcjSjOTKknYV IJCn67X2vtMJ2CXDuoxTr1mnJfxbvP9c9bWNIH5hNfDnK8Z9YVG63SWoSGd8ax4r98qe sZGnlYQ2qGmUhu34Ctc3FWcaJP5Jhl3wJl0dKo14al4uSTwDI8bHvn8jPh+zBsYeszbR iw== Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx07-00178001.pphosted.com with ESMTP id 2u501v61jx-1 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NOT); Wed, 07 Aug 2019 11:41:26 +0200 Received: from euls16034.sgp.st.com (euls16034.sgp.st.com [10.75.44.20]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id BAC4D41; Wed, 7 Aug 2019 09:41:25 +0000 (GMT) Received: from Webmail-eu.st.com (Safex1hubcas24.st.com [10.75.90.94]) by euls16034.sgp.st.com (STMicroelectronics) with ESMTP id A69712DAD92; Wed, 7 Aug 2019 11:41:25 +0200 (CEST) Received: from SAFEX1HUBCAS21.st.com (10.75.90.45) by Safex1hubcas24.st.com (10.75.90.94) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 7 Aug 2019 11:41:25 +0200 Received: from localhost (10.201.20.178) by Webmail-ga.st.com (10.75.90.48) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 7 Aug 2019 11:41:24 +0200 From: Loic Pallardy To: , CC: , , , , , , Loic Pallardy Subject: [RESEND 1/2] remoteproc: replace bool from struct rproc by u8 Date: Wed, 7 Aug 2019 11:41:18 +0200 Message-ID: <1565170879-3185-2-git-send-email-loic.pallardy@st.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1565170879-3185-1-git-send-email-loic.pallardy@st.com> References: <1565170879-3185-1-git-send-email-loic.pallardy@st.com> MIME-Version: 1.0 X-Originating-IP: [10.201.20.178] X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2019-08-07_02:, , 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 16ad66683ad0..8cd22fecea61 100644 --- a/include/linux/remoteproc.h +++ b/include/linux/remoteproc.h @@ -472,15 +472,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; @@ -505,15 +505,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 Wed Aug 7 09:41:19 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Loic Pallardy X-Patchwork-Id: 170739 Delivered-To: patch@linaro.org Received: by 2002:a92:512:0:0:0:0:0 with SMTP id q18csp6885335ile; Wed, 7 Aug 2019 02:41:39 -0700 (PDT) X-Google-Smtp-Source: APXvYqyPZuf6j8H/0G9T8QpL8Dm693f50mfptSDOV0rlgMWn7SuZn+NfxTY1FUeNFyfOmgHxP+Lz X-Received: by 2002:aa7:940c:: with SMTP id x12mr8551695pfo.80.1565170899190; Wed, 07 Aug 2019 02:41:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1565170899; cv=none; d=google.com; s=arc-20160816; b=Q+BPri8wsrZs7g8EKyVNsT5nqv8sXYsWUN+RzOsPlPiD4MWODK6lVCi65fSPCFqFzC 03g+3a32RxcKOHagjpcRbtxa2CU2oAI/lrR9yITRFoWyXfCCLmSrNr1FAnqz9U3KcMZL MwF3dmk9BrUPwW3TYAV4IqNE/p2CMtKOdd9mKC4fMNSw7x74tc1jH/Exf73IKk9Fa1gM AQJEMLPlg3ueDPX/SQn5JL+mEtxKZqyAGo3LZBgBLJ6ymxRo4qk4HW+5m1z6sTwNj/nl ToW9JVHUxUjrFXbDICcAL2UX2zCMDLI1sF//iHOSpxlVzQUXn5Ksn4TLubtEMLIBJUBn I+EQ== 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:dkim-signature; bh=NDTphXUxNX0A0wt98y+fvx9xGASfAZu3dV5v6VBAlYA=; b=tHleRR+e4AymyFmO0Lx7bazxsd0SjVf6D8zwJD/uliRla5cQz6eJTUNS8zuHi6C1Jz qvaB0jBKy2J8LjbyxadNVUWtSE0P9BCkpg85eIJEa3FI2rC/BsmscvLiKTnmPMSMl2Op D2ZXa1J2xkOfOv1D5Yp5jyzDyXwooavo7iUyXr5GkKby9Y0yxDVSWPcxUrmFFWILxMoY MavB4GavD3jhM8YHOvQMP6aPiebMXl6p3Mr0bhbKdcSxNCqCFnAcOCQChwJro2VHxWvr v7WAv68lCb1G26PiVOcCzs1+yzQwMO2GGYI9yH3hlfeNav9Gl/QuVqmqc+M3RbVy9g7G NWKw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@st.com header.s=STMicroelectronics header.b=vFUrTqeT; 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 q15si20704325pgk.537.2019.08.07.02.41.38; Wed, 07 Aug 2019 02:41:39 -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=@st.com header.s=STMicroelectronics header.b=vFUrTqeT; 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 S1729125AbfHGJlh (ORCPT + 28 others); Wed, 7 Aug 2019 05:41:37 -0400 Received: from mx08-00178001.pphosted.com ([91.207.212.93]:58002 "EHLO mx07-00178001.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728464AbfHGJlc (ORCPT ); Wed, 7 Aug 2019 05:41:32 -0400 Received: from pps.filterd (m0046661.ppops.net [127.0.0.1]) by mx08-00178001.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x779bJlx019514; Wed, 7 Aug 2019 11:41:28 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=st.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=STMicroelectronics; bh=NDTphXUxNX0A0wt98y+fvx9xGASfAZu3dV5v6VBAlYA=; b=vFUrTqeTvTsLMweXVCQmQJ2Uig4BcKud93Z1awHvfMg5WZ4GJKMgnIiy3SsY7v9vCcjK njO0IyXXTEpSc8CJq+ppwDy0sCDmuW69vJUpK0CIdcnu8yeWn9bu+yaDYpYeUZN4Cu7N +0U3VUgsam3BMT3JTo2g1n8DQv0LfORx/cjcQMAn8i1YGYsoHkSMADw/MapM94lKyB6K 1FuTX8CUPS3p6WnGcAr+l9ksbd6sFcu47DqmJVySGjSMXcnduh8kzmoZRKMgnBPxOdSi aSzHobDA6zvWPDb9lE3Ve43Yozy01JGWc9QLZhfcsc5B+fMf6ToBfxge6uMfGJnXWCkk JQ== Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx08-00178001.pphosted.com with ESMTP id 2u515mp677-1 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NOT); Wed, 07 Aug 2019 11:41:28 +0200 Received: from euls16034.sgp.st.com (euls16034.sgp.st.com [10.75.44.20]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 69C2231; Wed, 7 Aug 2019 09:41:27 +0000 (GMT) Received: from Webmail-eu.st.com (Safex1hubcas22.st.com [10.75.90.92]) by euls16034.sgp.st.com (STMicroelectronics) with ESMTP id 5F9482DD398; Wed, 7 Aug 2019 11:41:27 +0200 (CEST) Received: from SAFEX1HUBCAS21.st.com (10.75.90.45) by Safex1hubcas22.st.com (10.75.90.92) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 7 Aug 2019 11:41:27 +0200 Received: from localhost (10.201.20.178) by Webmail-ga.st.com (10.75.90.48) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 7 Aug 2019 11:41:26 +0200 From: Loic Pallardy To: , CC: , , , , , , Loic Pallardy Subject: [RESEND 2/2] remoteproc: add support for co-processor booted before kernel Date: Wed, 7 Aug 2019 11:41:19 +0200 Message-ID: <1565170879-3185-3-git-send-email-loic.pallardy@st.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1565170879-3185-1-git-send-email-loic.pallardy@st.com> References: <1565170879-3185-1-git-send-email-loic.pallardy@st.com> MIME-Version: 1.0 X-Originating-IP: [10.201.20.178] X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2019-08-07_02:, , 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 3c5fbbbfb0f1..7eaf0f949afa 100644 --- a/drivers/remoteproc/remoteproc_core.c +++ b/drivers/remoteproc/remoteproc_core.c @@ -1372,7 +1372,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 @@ -1728,7 +1732,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; @@ -1759,11 +1763,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); @@ -1917,8 +1927,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 8cd22fecea61..27f0dfdd3837 100644 --- a/include/linux/remoteproc.h +++ b/include/linux/remoteproc.h @@ -481,6 +481,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; @@ -514,6 +515,7 @@ struct rproc { u8 recovery_disabled; u8 has_iommu; u8 auto_boot; + u8 preloaded; }; /**