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 F16F9CA0EE5 for ; Wed, 13 Aug 2025 18:06:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:In-Reply-To: Content-Transfer-Encoding:Content-Type: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=4f+NQVVms7bm8w7F9OEnbyLaMsbawq7vQbyzhd2LE+g=; b=SCLd1n/nYQ/HSjHsacQAs+iht6 gyf2gn6As9qpB1N/bUZV4R6ApOKa5V3NkBm5LeJz860ZGIQwLqZot1qFGHG/z/RuskHnUUoKgnuXo j4W5n7U14E/4i/Q6g5fXxqkOTnpCJ/VtR6nn/jRBGO/9gvb5p7mFSCWuN8CR20cLsAfzakVqACqrr nQfyshJSSyPEqA7vIqCZA86CN9bMCiwOiIVjAqbTFEo7E1551vxVRuux8gMMsMjfH7ea55fNI+7w4 aFePXLGdlERFkJb+94AWbiysjpz70DaI8Ji8epr/3zEkBT0SHbyj+YTbXsL9nT9ClYjwJilPHF0TL qFrrgXcg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1umFrA-0000000EeUd-01ZL; Wed, 13 Aug 2025 18:05:48 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1umEZc-0000000ESWm-3xPc for linux-arm-kernel@lists.infradead.org; Wed, 13 Aug 2025 16:43:38 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id BCEFB12FC; Wed, 13 Aug 2025 09:43:25 -0700 (PDT) Received: from e130802.arm.com (e130802.arm.com [10.1.33.71]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id D0D923F5A1; Wed, 13 Aug 2025 09:43:30 -0700 (PDT) Date: Wed, 13 Aug 2025 17:42:58 +0100 From: Abdellatif El Khlifi To: Arnaud Pouliquen Cc: Bjorn Andersson , Mathieu Poirier , Jens Wiklander , Rob Herring , Krzysztof Kozlowski , Conor Dooley , linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-remoteproc@vger.kernel.org, linux-kernel@vger.kernel.org, op-tee@lists.trustedfirmware.org, devicetree@vger.kernel.org, Abdellatif El Khlifi , Srinivas Kalaga Subject: Re: [PATCH v19 2/6] remoteproc: Add TEE support Message-ID: References: <20250625094028.758016-1-arnaud.pouliquen@foss.st.com> <20250625094028.758016-3-arnaud.pouliquen@foss.st.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20250625094028.758016-3-arnaud.pouliquen@foss.st.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250813_094337_071319_0E0BF9FF X-CRM114-Status: GOOD ( 25.01 ) 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: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hi Arnaud, > Add a remoteproc TEE (Trusted Execution Environment) driver that will be > probed by the TEE bus. If the associated Trusted application is supported > on the secure part, this driver offers a client interface to load firmware > by the secure part. > This firmware could be authenticated by the secure trusted application. > > A specificity of the implementation is that the firmware has to be > authenticated and optionally decrypted to access the resource table. > > Consequently, the boot sequence is: > > 1) rproc_parse_fw --> rproc_tee_parse_fw > remoteproc TEE: > - Requests the TEE application to authenticate and load the firmware > in the remote processor memories. > - Requests the TEE application for the address of the resource table. > - Creates a copy of the resource table stored in rproc->cached_table. > > 2) rproc_load_segments --> rproc_tee_load_fw > remoteproc TEE: > - Requests the TEE application to load the firmware. Nothing is done > at the TEE application as the firmware is already loaded. > - In case of recovery, the TEE application has to reload the firmware. > > 3) rproc_tee_get_loaded_rsc_table > remoteproc TEE requests the TEE application for the address of the > resource table. > > 4) rproc_start --> rproc_tee_start > - Requests the TEE application to start the remote processor. > > The shutdown sequence is: > > 5) rproc_stop --> rproc_tee_stop > - Requests the TEE application to stop the remote processor. > > 6) rproc_tee_release_fw > This function is used to request the TEE application to perform actions > to return to the initial state on stop or on error during the boot > sequence. > > Signed-off-by: Arnaud Pouliquen ... > + > +static const struct tee_client_device_id rproc_tee_id_table[] = { > + {UUID_INIT(0x80a4c275, 0x0a47, 0x4905, 0x82, 0x85, 0x14, 0x86, 0xa9, 0x77, 0x1a, 0x08)}, > + {} > +}; Other implementations may use different UUIDs. What about adding a kernel configuration option which, when enabled, allows alternative implementations to override this table? > +/** > + * rproc_tee_register() - Register a remote processor controlled by the TEE application. ... > + > +static int rproc_tee_ctx_match(struct tee_ioctl_version_data *ver, const void *data) > +{ > + /* Today we support only the OP-TEE, could be extend to other tees */ > + return (ver->impl_id == TEE_IMPL_ID_OPTEE); > +} Could we make ver->impl_id user-configurable please ? for example, by reading it from the device tree since it isn’t discoverable at runtime? In our setup, we’d set it to TEE_IMPL_ID_TSTEE. > + > +static int rproc_tee_probe(struct device *dev) > +{ > + struct tee_context *tee_ctx; > + int ret; > + > + /* Open context with TEE driver */ > + tee_ctx = tee_client_open_context(NULL, rproc_tee_ctx_match, NULL, NULL); > + if (IS_ERR(tee_ctx)) > + return PTR_ERR(tee_ctx); > + > + ret = mutex_lock_interruptible(&ctx_lock); > + if (ret) > + return ret; In some TEEs, the client driver might need to perform extra work during probing. For example, when using TS TEE, calling tee_shm_alloc_kernel_buf() is required. Could we introduce an rproc_tee_ops and add a TEE probe operation called by the remoteproc driver for performing custom TEE setup ? Kind regards, Abdellatif 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 lists.trustedfirmware.org (lists.trustedfirmware.org [18.214.241.189]) (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 2EDCAC87FCF for ; Wed, 13 Aug 2025 16:43:49 +0000 (UTC) Received: from lists.trustedfirmware.org (localhost [127.0.0.1]) by lists.trustedfirmware.org (Postfix) with ESMTP id 5B1F14FC89 for ; Wed, 13 Aug 2025 16:43:48 +0000 (UTC) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lists.trustedfirmware.org (Postfix) with ESMTP id 9142E42E12 for ; Wed, 13 Aug 2025 16:43:34 +0000 (UTC) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id BCEFB12FC; Wed, 13 Aug 2025 09:43:25 -0700 (PDT) Received: from e130802.arm.com (e130802.arm.com [10.1.33.71]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id D0D923F5A1; Wed, 13 Aug 2025 09:43:30 -0700 (PDT) Date: Wed, 13 Aug 2025 17:42:58 +0100 From: Abdellatif El Khlifi To: Arnaud Pouliquen Subject: Re: [PATCH v19 2/6] remoteproc: Add TEE support Message-ID: References: <20250625094028.758016-1-arnaud.pouliquen@foss.st.com> <20250625094028.758016-3-arnaud.pouliquen@foss.st.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: base64 In-Reply-To: <20250625094028.758016-3-arnaud.pouliquen@foss.st.com> X-Rspamd-Queue-Id: 9142E42E12 X-Spamd-Bar: -- X-Spamd-Result: default: False [-2.40 / 15.00]; BAYES_HAM(-3.00)[99.99%]; SUSPICIOUS_RECIPS(1.50)[]; DMARC_POLICY_ALLOW(-0.50)[arm.com,none]; R_SPF_ALLOW(-0.20)[+ip4:217.140.96.0/20]; RCVD_IN_DNSWL_MED(-0.20)[217.140.110.172:from]; MIME_GOOD(-0.10)[text/plain]; RCVD_NO_TLS_LAST(0.10)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; ARC_NA(0.00)[]; MIME_TRACE(0.00)[0:+]; ASN(0.00)[asn:28939, ipnet:217.140.110.0/24, country:GB]; RCPT_COUNT_TWELVE(0.00)[15]; MISSING_XM_UA(0.00)[]; TAGGED_RCPT(0.00)[dt]; TO_DN_SOME(0.00)[]; TO_MATCH_ENVRCPT_SOME(0.00)[]; FROM_EQ_ENVFROM(0.00)[]; RCVD_COUNT_TWO(0.00)[2]; R_DKIM_NA(0.00)[]; MID_RHS_MATCH_FROMTLD(0.00)[]; FROM_HAS_DN(0.00)[] X-Rspamd-Action: no action X-Rspamd-Server: lists.trustedfirmware.org Message-ID-Hash: 6KCDXIR4BOO42DYPDELNXK6GN3HLC6BM X-Message-ID-Hash: 6KCDXIR4BOO42DYPDELNXK6GN3HLC6BM X-MailFrom: abdellatif.elkhlifi@arm.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-op-tee.lists.trustedfirmware.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Bjorn Andersson , Mathieu Poirier , Rob Herring , Krzysztof Kozlowski , Conor Dooley , linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-remoteproc@vger.kernel.org, linux-kernel@vger.kernel.org, op-tee@lists.trustedfirmware.org, devicetree@vger.kernel.org, Abdellatif El Khlifi , Srinivas Kalaga X-Mailman-Version: 3.3.5 Precedence: list List-Id: Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: SGkgQXJuYXVkLA0KDQo+IEFkZCBhIHJlbW90ZXByb2MgVEVFIChUcnVzdGVkIEV4ZWN1dGlvbiBF bnZpcm9ubWVudCkgZHJpdmVyIHRoYXQgd2lsbCBiZQ0KPiBwcm9iZWQgYnkgdGhlIFRFRSBidXMu IElmIHRoZSBhc3NvY2lhdGVkIFRydXN0ZWQgYXBwbGljYXRpb24gaXMgc3VwcG9ydGVkDQo+IG9u IHRoZSBzZWN1cmUgcGFydCwgdGhpcyBkcml2ZXIgb2ZmZXJzIGEgY2xpZW50IGludGVyZmFjZSB0 byBsb2FkIGZpcm13YXJlDQo+IGJ5IHRoZSBzZWN1cmUgcGFydC4NCj4gVGhpcyBmaXJtd2FyZSBj b3VsZCBiZSBhdXRoZW50aWNhdGVkIGJ5IHRoZSBzZWN1cmUgdHJ1c3RlZCBhcHBsaWNhdGlvbi4N Cj4gDQo+IEEgc3BlY2lmaWNpdHkgb2YgdGhlIGltcGxlbWVudGF0aW9uIGlzIHRoYXQgdGhlIGZp cm13YXJlIGhhcyB0byBiZQ0KPiBhdXRoZW50aWNhdGVkIGFuZCBvcHRpb25hbGx5IGRlY3J5cHRl ZCB0byBhY2Nlc3MgdGhlIHJlc291cmNlIHRhYmxlLg0KPiANCj4gQ29uc2VxdWVudGx5LCB0aGUg Ym9vdCBzZXF1ZW5jZSBpczoNCj4gDQo+IDEpIHJwcm9jX3BhcnNlX2Z3IC0tPiBycHJvY190ZWVf cGFyc2VfZncNCj4gICAgcmVtb3RlcHJvYyBURUU6DQo+ICAgIC0gUmVxdWVzdHMgdGhlIFRFRSBh cHBsaWNhdGlvbiB0byBhdXRoZW50aWNhdGUgYW5kIGxvYWQgdGhlIGZpcm13YXJlDQo+ICAgICAg aW4gdGhlIHJlbW90ZSBwcm9jZXNzb3IgbWVtb3JpZXMuDQo+ICAgIC0gUmVxdWVzdHMgdGhlIFRF RSBhcHBsaWNhdGlvbiBmb3IgdGhlIGFkZHJlc3Mgb2YgdGhlIHJlc291cmNlIHRhYmxlLg0KPiAg ICAtIENyZWF0ZXMgYSBjb3B5IG9mIHRoZSByZXNvdXJjZSB0YWJsZSBzdG9yZWQgaW4gcnByb2Mt PmNhY2hlZF90YWJsZS4NCj4gDQo+IDIpIHJwcm9jX2xvYWRfc2VnbWVudHMgLS0+IHJwcm9jX3Rl ZV9sb2FkX2Z3DQo+ICAgIHJlbW90ZXByb2MgVEVFOg0KPiAgICAtIFJlcXVlc3RzIHRoZSBURUUg YXBwbGljYXRpb24gdG8gbG9hZCB0aGUgZmlybXdhcmUuIE5vdGhpbmcgaXMgZG9uZQ0KPiAgICAg IGF0IHRoZSBURUUgYXBwbGljYXRpb24gYXMgdGhlIGZpcm13YXJlIGlzIGFscmVhZHkgbG9hZGVk Lg0KPiAgICAtIEluIGNhc2Ugb2YgcmVjb3ZlcnksIHRoZSBURUUgYXBwbGljYXRpb24gaGFzIHRv IHJlbG9hZCB0aGUgZmlybXdhcmUuDQo+IA0KPiAzKSBycHJvY190ZWVfZ2V0X2xvYWRlZF9yc2Nf dGFibGUNCj4gICAgcmVtb3RlcHJvYyBURUUgcmVxdWVzdHMgdGhlIFRFRSBhcHBsaWNhdGlvbiBm b3IgdGhlIGFkZHJlc3Mgb2YgdGhlDQo+ICAgIHJlc291cmNlIHRhYmxlLg0KPiANCj4gNCkgcnBy b2Nfc3RhcnQgLS0+IHJwcm9jX3RlZV9zdGFydA0KPiAgICAtIFJlcXVlc3RzIHRoZSBURUUgYXBw bGljYXRpb24gdG8gc3RhcnQgdGhlIHJlbW90ZSBwcm9jZXNzb3IuDQo+IA0KPiBUaGUgc2h1dGRv d24gc2VxdWVuY2UgaXM6DQo+IA0KPiA1KSBycHJvY19zdG9wIC0tPiBycHJvY190ZWVfc3RvcA0K PiAgICAtIFJlcXVlc3RzIHRoZSBURUUgYXBwbGljYXRpb24gdG8gc3RvcCB0aGUgcmVtb3RlIHBy b2Nlc3Nvci4NCj4gDQo+IDYpIHJwcm9jX3RlZV9yZWxlYXNlX2Z3DQo+ICAgIFRoaXMgZnVuY3Rp b24gaXMgdXNlZCB0byByZXF1ZXN0IHRoZSBURUUgYXBwbGljYXRpb24gdG8gcGVyZm9ybSBhY3Rp b25zDQo+ICAgIHRvIHJldHVybiB0byB0aGUgaW5pdGlhbCBzdGF0ZSBvbiBzdG9wIG9yIG9uIGVy cm9yIGR1cmluZyB0aGUgYm9vdA0KPiAgICBzZXF1ZW5jZS4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6 IEFybmF1ZCBQb3VsaXF1ZW4gPGFybmF1ZC5wb3VsaXF1ZW5AZm9zcy5zdC5jb20+DQouLi4NCj4g Kw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCB0ZWVfY2xpZW50X2RldmljZV9pZCBycHJvY190ZWVf aWRfdGFibGVbXSA9IHsNCj4gKwl7VVVJRF9JTklUKDB4ODBhNGMyNzUsIDB4MGE0NywgMHg0OTA1 LCAweDgyLCAweDg1LCAweDE0LCAweDg2LCAweGE5LCAweDc3LCAweDFhLCAweDA4KX0sDQo+ICsJ e30NCj4gK307DQoNCk90aGVyIGltcGxlbWVudGF0aW9ucyBtYXkgdXNlIGRpZmZlcmVudCBVVUlE cy4NCldoYXQgYWJvdXQgYWRkaW5nIGEga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHdoaWNo LCB3aGVuIGVuYWJsZWQsIGFsbG93cw0KYWx0ZXJuYXRpdmUgaW1wbGVtZW50YXRpb25zIHRvIG92 ZXJyaWRlIHRoaXMgdGFibGU/DQoNCj4gKy8qKg0KPiArICogcnByb2NfdGVlX3JlZ2lzdGVyKCkg LSBSZWdpc3RlciBhIHJlbW90ZSBwcm9jZXNzb3IgY29udHJvbGxlZCBieSB0aGUgVEVFIGFwcGxp Y2F0aW9uLg0KLi4uDQo+ICsNCj4gK3N0YXRpYyBpbnQgcnByb2NfdGVlX2N0eF9tYXRjaChzdHJ1 Y3QgdGVlX2lvY3RsX3ZlcnNpb25fZGF0YSAqdmVyLCBjb25zdCB2b2lkICpkYXRhKQ0KPiArew0K PiArCS8qIFRvZGF5IHdlIHN1cHBvcnQgb25seSB0aGUgT1AtVEVFLCBjb3VsZCBiZSBleHRlbmQg dG8gb3RoZXIgdGVlcyAqLw0KPiArCXJldHVybiAodmVyLT5pbXBsX2lkID09IFRFRV9JTVBMX0lE X09QVEVFKTsNCj4gK30NCg0KQ291bGQgd2UgbWFrZSB2ZXItPmltcGxfaWQgdXNlci1jb25maWd1 cmFibGUgcGxlYXNlID8gZm9yIGV4YW1wbGUsIGJ5IHJlYWRpbmcNCml0IGZyb20gdGhlIGRldmlj ZSB0cmVlIHNpbmNlIGl0IGlzbuKAmXQgZGlzY292ZXJhYmxlIGF0IHJ1bnRpbWU/IEluIG91ciBz ZXR1cCwgd2XigJlkIHNldA0KaXQgdG8gVEVFX0lNUExfSURfVFNURUUuDQoNCj4gKw0KPiArc3Rh dGljIGludCBycHJvY190ZWVfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KQ0KPiArew0KPiArCXN0 cnVjdCB0ZWVfY29udGV4dCAqdGVlX2N0eDsNCj4gKwlpbnQgcmV0Ow0KPiArDQo+ICsJLyogT3Bl biBjb250ZXh0IHdpdGggVEVFIGRyaXZlciAqLw0KPiArCXRlZV9jdHggPSB0ZWVfY2xpZW50X29w ZW5fY29udGV4dChOVUxMLCBycHJvY190ZWVfY3R4X21hdGNoLCBOVUxMLCBOVUxMKTsNCj4gKwlp ZiAoSVNfRVJSKHRlZV9jdHgpKQ0KPiArCQlyZXR1cm4gUFRSX0VSUih0ZWVfY3R4KTsNCj4gKw0K PiArCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmY3R4X2xvY2spOw0KPiArCWlmIChy ZXQpDQo+ICsJCXJldHVybiByZXQ7DQoNCkluIHNvbWUgVEVFcywgdGhlIGNsaWVudCBkcml2ZXIg bWlnaHQgbmVlZCB0byBwZXJmb3JtIGV4dHJhIHdvcmsgZHVyaW5nIHByb2JpbmcuDQpGb3IgZXhh bXBsZSwgd2hlbiB1c2luZyBUUyBURUUsIGNhbGxpbmcgdGVlX3NobV9hbGxvY19rZXJuZWxfYnVm KCkgaXMgcmVxdWlyZWQuDQpDb3VsZCB3ZSBpbnRyb2R1Y2UgYW4gcnByb2NfdGVlX29wcyBhbmQg YWRkIGEgVEVFIHByb2JlIG9wZXJhdGlvbiBjYWxsZWQgYnkgdGhlDQpyZW1vdGVwcm9jIGRyaXZl ciBmb3IgcGVyZm9ybWluZyBjdXN0b20gVEVFIHNldHVwID8NCg0KS2luZCByZWdhcmRzLA0KQWJk ZWxsYXRpZg0K