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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id F0B6ECA0ED3 for ; Tue, 12 Sep 2023 09:32:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232398AbjILJce (ORCPT ); Tue, 12 Sep 2023 05:32:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52296 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231574AbjILJcb (ORCPT ); Tue, 12 Sep 2023 05:32:31 -0400 Received: from madras.collabora.co.uk (madras.collabora.co.uk [46.235.227.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DBE6CCD; Tue, 12 Sep 2023 02:32:27 -0700 (PDT) Received: from [192.168.1.100] (2-237-20-237.ip236.fastwebnet.it [2.237.20.237]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) (Authenticated sender: kholk11) by madras.collabora.co.uk (Postfix) with ESMTPSA id B76C566072F2; Tue, 12 Sep 2023 10:32:25 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1694511146; bh=nboqvOkj/fOk7wG5yLQU5h6H3bj8HNMHs3m8cZuPp8g=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=leOPTMb+UgyVQ7uNRBIbc4bummxwqu0liVI46DPr3hA0ZMaSkS1CjLtz/mqVft49Z xFjyoG767NLmgk7EBBdlhCvsO3Te6WxU7aeBJuYEPJfvmXBPzhVmf0BzY9sGPYGJxL 5RJTGwtBTYBNd98Ovs9eDiZRp5+fdCSF3shUiUH3eRJC+DAQDfbV0qnzMeWvlAlD54 1M/ycX4PoO5ZP+QtowvQgTv5u2NktAquPZCBeJDafxev3n8eNkbQuSci0wkphL+en4 lo9PKMFdN0ZAuIQs+tFZnn3yahQ/wGOOoIblTuDuIQTkM4pWBpJBtG8Bi4FwWsRYRB NnAZEo8JCQtcQ== Message-ID: Date: Tue, 12 Sep 2023 11:32:23 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.15.0 Subject: Re: [PATCH 5/9] dma-buf: heaps: mtk_sec_heap: Initialise tee session Content-Language: en-US To: =?UTF-8?B?WW9uZyBXdSAo5ZC05YuHKQ==?= , "matthias.bgg@gmail.com" , "christian.koenig@amd.com" , "robh+dt@kernel.org" , "sumit.semwal@linaro.org" Cc: "linux-kernel@vger.kernel.org" , "linux-mediatek@lists.infradead.org" , "jstultz@google.com" , "linaro-mm-sig@lists.linaro.org" , "linux-media@vger.kernel.org" , "devicetree@vger.kernel.org" , =?UTF-8?B?SmlhbmppYW8gWmVuZyAo5pu+5YGl5aejKQ==?= , =?UTF-8?B?S3VvaG9uZyBXYW5nICjnjovlnIvptLsp?= , "conor+dt@kernel.org" , "Brian.Starkey@arm.com" , "benjamin.gaignard@collabora.com" , "tjmercier@google.com" , "krzysztof.kozlowski+dt@linaro.org" , "dri-devel@lists.freedesktop.org" , "linux-arm-kernel@lists.infradead.org" References: <20230911023038.30649-1-yong.wu@mediatek.com> <20230911023038.30649-6-yong.wu@mediatek.com> From: AngeloGioacchino Del Regno In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Il 12/09/23 08:17, Yong Wu (吴勇) ha scritto: > On Mon, 2023-09-11 at 11:29 +0200, AngeloGioacchino Del Regno wrote: >> Il 11/09/23 04:30, Yong Wu ha scritto: >>> The TEE probe later than dma-buf heap, and PROBE_DEDER doesn't work >>> here since this is not a platform driver, therefore initialise the >>> TEE >>> context/session while we allocate the first secure buffer. >>> >>> Signed-off-by: Yong Wu >>> --- >>> drivers/dma-buf/heaps/mtk_secure_heap.c | 61 >>> +++++++++++++++++++++++++ >>> 1 file changed, 61 insertions(+) >>> >>> diff --git a/drivers/dma-buf/heaps/mtk_secure_heap.c b/drivers/dma- >>> buf/heaps/mtk_secure_heap.c >>> index bbf1c8dce23e..e3da33a3d083 100644 >>> --- a/drivers/dma-buf/heaps/mtk_secure_heap.c >>> +++ b/drivers/dma-buf/heaps/mtk_secure_heap.c >>> @@ -10,6 +10,12 @@ >>> #include >>> #include >>> #include >>> +#include >>> +#include >>> + >>> +#define TZ_TA_MEM_UUID "4477588a-8476-11e2-ad15- >>> e41f1390d676" >>> + >> >> Is this UUID the same for all SoCs and all TZ versions? > > Yes. It is the same for all SoCs and all TZ versions currently. > That's good news! Is this UUID used in any userspace component? (example: Android HALs?) If it is (and I somehow expect that it is), then this definition should go to a UAPI header, as suggested by Christian. Cheers! >> >> Thanks, >> Angelo >> >> >>> +#define MTK_TEE_PARAM_NUM 4 >>> >>> /* >>> * MediaTek secure (chunk) memory type >>> @@ -28,17 +34,72 @@ struct mtk_secure_heap_buffer { >>> struct mtk_secure_heap { >>> const char *name; >>> const enum kree_mem_type mem_type; >>> + u32 mem_session; >>> + struct tee_context *tee_ctx; >>> }; >>> >>> +static int mtk_optee_ctx_match(struct tee_ioctl_version_data *ver, >>> const void *data) >>> +{ >>> + return ver->impl_id == TEE_IMPL_ID_OPTEE; >>> +} >>> + >>> +static int mtk_kree_secure_session_init(struct mtk_secure_heap >>> *sec_heap) >>> +{ >>> + struct tee_param t_param[MTK_TEE_PARAM_NUM] = {0}; >>> + struct tee_ioctl_open_session_arg arg = {0}; >>> + uuid_t ta_mem_uuid; >>> + int ret; >>> + >>> + sec_heap->tee_ctx = tee_client_open_context(NULL, >>> mtk_optee_ctx_match, >>> + NULL, NULL); >>> + if (IS_ERR(sec_heap->tee_ctx)) { >>> + pr_err("%s: open context failed, ret=%ld\n", sec_heap- >>>> name, >>> + PTR_ERR(sec_heap->tee_ctx)); >>> + return -ENODEV; >>> + } >>> + >>> + arg.num_params = MTK_TEE_PARAM_NUM; >>> + arg.clnt_login = TEE_IOCTL_LOGIN_PUBLIC; >>> + ret = uuid_parse(TZ_TA_MEM_UUID, &ta_mem_uuid); >>> + if (ret) >>> + goto close_context; >>> + memcpy(&arg.uuid, &ta_mem_uuid.b, sizeof(ta_mem_uuid)); >>> + >>> + ret = tee_client_open_session(sec_heap->tee_ctx, &arg, >>> t_param); >>> + if (ret < 0 || arg.ret) { >>> + pr_err("%s: open session failed, ret=%d:%d\n", >>> + sec_heap->name, ret, arg.ret); >>> + ret = -EINVAL; >>> + goto close_context; >>> + } >>> + sec_heap->mem_session = arg.session; >>> + return 0; >>> + >>> +close_context: >>> + tee_client_close_context(sec_heap->tee_ctx); >>> + return ret; >>> +} >>> + >>> static struct dma_buf * >>> mtk_sec_heap_allocate(struct dma_heap *heap, size_t size, >>> unsigned long fd_flags, unsigned long heap_flags) >>> { >>> + struct mtk_secure_heap *sec_heap = dma_heap_get_drvdata(heap); >>> struct mtk_secure_heap_buffer *sec_buf; >>> DEFINE_DMA_BUF_EXPORT_INFO(exp_info); >>> struct dma_buf *dmabuf; >>> int ret; >>> >>> + /* >>> + * TEE probe may be late. Initialise the secure session in the >>> first >>> + * allocating secure buffer. >>> + */ >>> + if (!sec_heap->mem_session) { >>> + ret = mtk_kree_secure_session_init(sec_heap); >>> + if (ret) >>> + return ERR_PTR(ret); >>> + } >>> + >>> sec_buf = kzalloc(sizeof(*sec_buf), GFP_KERNEL); >>> if (!sec_buf) >>> return ERR_PTR(-ENOMEM); >> >> 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 gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 795CDCA0ECF for ; Tue, 12 Sep 2023 09:32:31 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 6B4D010E3C8; Tue, 12 Sep 2023 09:32:30 +0000 (UTC) Received: from madras.collabora.co.uk (madras.collabora.co.uk [46.235.227.172]) by gabe.freedesktop.org (Postfix) with ESMTPS id E041D10E3C8 for ; Tue, 12 Sep 2023 09:32:27 +0000 (UTC) Received: from [192.168.1.100] (2-237-20-237.ip236.fastwebnet.it [2.237.20.237]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) (Authenticated sender: kholk11) by madras.collabora.co.uk (Postfix) with ESMTPSA id B76C566072F2; Tue, 12 Sep 2023 10:32:25 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1694511146; bh=nboqvOkj/fOk7wG5yLQU5h6H3bj8HNMHs3m8cZuPp8g=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=leOPTMb+UgyVQ7uNRBIbc4bummxwqu0liVI46DPr3hA0ZMaSkS1CjLtz/mqVft49Z xFjyoG767NLmgk7EBBdlhCvsO3Te6WxU7aeBJuYEPJfvmXBPzhVmf0BzY9sGPYGJxL 5RJTGwtBTYBNd98Ovs9eDiZRp5+fdCSF3shUiUH3eRJC+DAQDfbV0qnzMeWvlAlD54 1M/ycX4PoO5ZP+QtowvQgTv5u2NktAquPZCBeJDafxev3n8eNkbQuSci0wkphL+en4 lo9PKMFdN0ZAuIQs+tFZnn3yahQ/wGOOoIblTuDuIQTkM4pWBpJBtG8Bi4FwWsRYRB NnAZEo8JCQtcQ== Message-ID: Date: Tue, 12 Sep 2023 11:32:23 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.15.0 Subject: Re: [PATCH 5/9] dma-buf: heaps: mtk_sec_heap: Initialise tee session Content-Language: en-US To: =?UTF-8?B?WW9uZyBXdSAo5ZC05YuHKQ==?= , "matthias.bgg@gmail.com" , "christian.koenig@amd.com" , "robh+dt@kernel.org" , "sumit.semwal@linaro.org" References: <20230911023038.30649-1-yong.wu@mediatek.com> <20230911023038.30649-6-yong.wu@mediatek.com> From: AngeloGioacchino Del Regno In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "devicetree@vger.kernel.org" , "conor+dt@kernel.org" , "benjamin.gaignard@collabora.com" , =?UTF-8?B?S3VvaG9uZyBXYW5nICjnjovlnIvptLsp?= , "linux-kernel@vger.kernel.org" , "dri-devel@lists.freedesktop.org" , "tjmercier@google.com" , "linaro-mm-sig@lists.linaro.org" , "jstultz@google.com" , "linux-arm-kernel@lists.infradead.org" , "krzysztof.kozlowski+dt@linaro.org" , "linux-mediatek@lists.infradead.org" , =?UTF-8?B?SmlhbmppYW8gWmVuZyAo5pu+5YGl5aejKQ==?= , "linux-media@vger.kernel.org" Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Il 12/09/23 08:17, Yong Wu (吴勇) ha scritto: > On Mon, 2023-09-11 at 11:29 +0200, AngeloGioacchino Del Regno wrote: >> Il 11/09/23 04:30, Yong Wu ha scritto: >>> The TEE probe later than dma-buf heap, and PROBE_DEDER doesn't work >>> here since this is not a platform driver, therefore initialise the >>> TEE >>> context/session while we allocate the first secure buffer. >>> >>> Signed-off-by: Yong Wu >>> --- >>> drivers/dma-buf/heaps/mtk_secure_heap.c | 61 >>> +++++++++++++++++++++++++ >>> 1 file changed, 61 insertions(+) >>> >>> diff --git a/drivers/dma-buf/heaps/mtk_secure_heap.c b/drivers/dma- >>> buf/heaps/mtk_secure_heap.c >>> index bbf1c8dce23e..e3da33a3d083 100644 >>> --- a/drivers/dma-buf/heaps/mtk_secure_heap.c >>> +++ b/drivers/dma-buf/heaps/mtk_secure_heap.c >>> @@ -10,6 +10,12 @@ >>> #include >>> #include >>> #include >>> +#include >>> +#include >>> + >>> +#define TZ_TA_MEM_UUID "4477588a-8476-11e2-ad15- >>> e41f1390d676" >>> + >> >> Is this UUID the same for all SoCs and all TZ versions? > > Yes. It is the same for all SoCs and all TZ versions currently. > That's good news! Is this UUID used in any userspace component? (example: Android HALs?) If it is (and I somehow expect that it is), then this definition should go to a UAPI header, as suggested by Christian. Cheers! >> >> Thanks, >> Angelo >> >> >>> +#define MTK_TEE_PARAM_NUM 4 >>> >>> /* >>> * MediaTek secure (chunk) memory type >>> @@ -28,17 +34,72 @@ struct mtk_secure_heap_buffer { >>> struct mtk_secure_heap { >>> const char *name; >>> const enum kree_mem_type mem_type; >>> + u32 mem_session; >>> + struct tee_context *tee_ctx; >>> }; >>> >>> +static int mtk_optee_ctx_match(struct tee_ioctl_version_data *ver, >>> const void *data) >>> +{ >>> + return ver->impl_id == TEE_IMPL_ID_OPTEE; >>> +} >>> + >>> +static int mtk_kree_secure_session_init(struct mtk_secure_heap >>> *sec_heap) >>> +{ >>> + struct tee_param t_param[MTK_TEE_PARAM_NUM] = {0}; >>> + struct tee_ioctl_open_session_arg arg = {0}; >>> + uuid_t ta_mem_uuid; >>> + int ret; >>> + >>> + sec_heap->tee_ctx = tee_client_open_context(NULL, >>> mtk_optee_ctx_match, >>> + NULL, NULL); >>> + if (IS_ERR(sec_heap->tee_ctx)) { >>> + pr_err("%s: open context failed, ret=%ld\n", sec_heap- >>>> name, >>> + PTR_ERR(sec_heap->tee_ctx)); >>> + return -ENODEV; >>> + } >>> + >>> + arg.num_params = MTK_TEE_PARAM_NUM; >>> + arg.clnt_login = TEE_IOCTL_LOGIN_PUBLIC; >>> + ret = uuid_parse(TZ_TA_MEM_UUID, &ta_mem_uuid); >>> + if (ret) >>> + goto close_context; >>> + memcpy(&arg.uuid, &ta_mem_uuid.b, sizeof(ta_mem_uuid)); >>> + >>> + ret = tee_client_open_session(sec_heap->tee_ctx, &arg, >>> t_param); >>> + if (ret < 0 || arg.ret) { >>> + pr_err("%s: open session failed, ret=%d:%d\n", >>> + sec_heap->name, ret, arg.ret); >>> + ret = -EINVAL; >>> + goto close_context; >>> + } >>> + sec_heap->mem_session = arg.session; >>> + return 0; >>> + >>> +close_context: >>> + tee_client_close_context(sec_heap->tee_ctx); >>> + return ret; >>> +} >>> + >>> static struct dma_buf * >>> mtk_sec_heap_allocate(struct dma_heap *heap, size_t size, >>> unsigned long fd_flags, unsigned long heap_flags) >>> { >>> + struct mtk_secure_heap *sec_heap = dma_heap_get_drvdata(heap); >>> struct mtk_secure_heap_buffer *sec_buf; >>> DEFINE_DMA_BUF_EXPORT_INFO(exp_info); >>> struct dma_buf *dmabuf; >>> int ret; >>> >>> + /* >>> + * TEE probe may be late. Initialise the secure session in the >>> first >>> + * allocating secure buffer. >>> + */ >>> + if (!sec_heap->mem_session) { >>> + ret = mtk_kree_secure_session_init(sec_heap); >>> + if (ret) >>> + return ERR_PTR(ret); >>> + } >>> + >>> sec_buf = kzalloc(sizeof(*sec_buf), GFP_KERNEL); >>> if (!sec_buf) >>> return ERR_PTR(-ENOMEM); >> >> 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 333D3CA0EC3 for ; Tue, 12 Sep 2023 09:32:59 +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-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=3etWXRMZm0jq5bI3lc6F0HZ0Gv3rHDGSW6uN+drblpg=; b=PpNJoMVISsGZ5I 3zSGWdK1bdhshuoE9r/7vdiqhZY048/+1VoFvusGTCx8zufGyDe1qtAYjuyZm04xnQTkNp81qhQUN KN+cHlsWOtaaic+3VM6w19QIYR2CQ3asy2vM7Ea9eeR/blhcJawuA3LMEX6YVBU8TFZYgGYyrf5Gp mz9AVsalfSX6//7KHxBurdUS71YTKyorPCVU8/fdQtXgblC4zrTYaVSxzczSyY1D2PQQK9r/bwEMA 7cyee+PMJG9MvYP2UqYzoJ9MA53MsY6LjDvQ1wA3ujt+ERYHwOjmGoDsgweMoe5/npgyvvAh5I+zB KcMVTOfvMXh+kirba4rA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qfzl1-002kYC-02; Tue, 12 Sep 2023 09:32:31 +0000 Received: from madras.collabora.co.uk ([2a00:1098:0:82:1000:25:2eeb:e5ab]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qfzky-002kWt-0K; Tue, 12 Sep 2023 09:32:29 +0000 Received: from [192.168.1.100] (2-237-20-237.ip236.fastwebnet.it [2.237.20.237]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) (Authenticated sender: kholk11) by madras.collabora.co.uk (Postfix) with ESMTPSA id B76C566072F2; Tue, 12 Sep 2023 10:32:25 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1694511146; bh=nboqvOkj/fOk7wG5yLQU5h6H3bj8HNMHs3m8cZuPp8g=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=leOPTMb+UgyVQ7uNRBIbc4bummxwqu0liVI46DPr3hA0ZMaSkS1CjLtz/mqVft49Z xFjyoG767NLmgk7EBBdlhCvsO3Te6WxU7aeBJuYEPJfvmXBPzhVmf0BzY9sGPYGJxL 5RJTGwtBTYBNd98Ovs9eDiZRp5+fdCSF3shUiUH3eRJC+DAQDfbV0qnzMeWvlAlD54 1M/ycX4PoO5ZP+QtowvQgTv5u2NktAquPZCBeJDafxev3n8eNkbQuSci0wkphL+en4 lo9PKMFdN0ZAuIQs+tFZnn3yahQ/wGOOoIblTuDuIQTkM4pWBpJBtG8Bi4FwWsRYRB NnAZEo8JCQtcQ== Message-ID: Date: Tue, 12 Sep 2023 11:32:23 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.15.0 Subject: Re: [PATCH 5/9] dma-buf: heaps: mtk_sec_heap: Initialise tee session Content-Language: en-US To: =?UTF-8?B?WW9uZyBXdSAo5ZC05YuHKQ==?= , "matthias.bgg@gmail.com" , "christian.koenig@amd.com" , "robh+dt@kernel.org" , "sumit.semwal@linaro.org" Cc: "linux-kernel@vger.kernel.org" , "linux-mediatek@lists.infradead.org" , "jstultz@google.com" , "linaro-mm-sig@lists.linaro.org" , "linux-media@vger.kernel.org" , "devicetree@vger.kernel.org" , =?UTF-8?B?SmlhbmppYW8gWmVuZyAo5pu+5YGl5aejKQ==?= , =?UTF-8?B?S3VvaG9uZyBXYW5nICjnjovlnIvptLsp?= , "conor+dt@kernel.org" , "Brian.Starkey@arm.com" , "benjamin.gaignard@collabora.com" , "tjmercier@google.com" , "krzysztof.kozlowski+dt@linaro.org" , "dri-devel@lists.freedesktop.org" , "linux-arm-kernel@lists.infradead.org" References: <20230911023038.30649-1-yong.wu@mediatek.com> <20230911023038.30649-6-yong.wu@mediatek.com> From: AngeloGioacchino Del Regno In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230912_023228_398253_79B8D9A2 X-CRM114-Status: GOOD ( 18.55 ) 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SWwgMTIvMDkvMjMgMDg6MTcsIFlvbmcgV3UgKOWQtOWLhykgaGEgc2NyaXR0bzoKPiBPbiBNb24s IDIwMjMtMDktMTEgYXQgMTE6MjkgKzAyMDAsIEFuZ2Vsb0dpb2FjY2hpbm8gRGVsIFJlZ25vIHdy b3RlOgo+PiBJbCAxMS8wOS8yMyAwNDozMCwgWW9uZyBXdSBoYSBzY3JpdHRvOgo+Pj4gVGhlIFRF RSBwcm9iZSBsYXRlciB0aGFuIGRtYS1idWYgaGVhcCwgYW5kIFBST0JFX0RFREVSIGRvZXNuJ3Qg d29yawo+Pj4gaGVyZSBzaW5jZSB0aGlzIGlzIG5vdCBhIHBsYXRmb3JtIGRyaXZlciwgdGhlcmVm b3JlIGluaXRpYWxpc2UgdGhlCj4+PiBURUUKPj4+IGNvbnRleHQvc2Vzc2lvbiB3aGlsZSB3ZSBh bGxvY2F0ZSB0aGUgZmlyc3Qgc2VjdXJlIGJ1ZmZlci4KPj4+Cj4+PiBTaWduZWQtb2ZmLWJ5OiBZ b25nIFd1IDx5b25nLnd1QG1lZGlhdGVrLmNvbT4KPj4+IC0tLQo+Pj4gICAgZHJpdmVycy9kbWEt YnVmL2hlYXBzL210a19zZWN1cmVfaGVhcC5jIHwgNjEKPj4+ICsrKysrKysrKysrKysrKysrKysr KysrKysKPj4+ICAgIDEgZmlsZSBjaGFuZ2VkLCA2MSBpbnNlcnRpb25zKCspCj4+Pgo+Pj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZG1hLWJ1Zi9oZWFwcy9tdGtfc2VjdXJlX2hlYXAuYyBiL2RyaXZl cnMvZG1hLQo+Pj4gYnVmL2hlYXBzL210a19zZWN1cmVfaGVhcC5jCj4+PiBpbmRleCBiYmYxYzhk Y2UyM2UuLmUzZGEzM2EzZDA4MyAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZG1hLWJ1Zi9oZWFw cy9tdGtfc2VjdXJlX2hlYXAuYwo+Pj4gKysrIGIvZHJpdmVycy9kbWEtYnVmL2hlYXBzL210a19z ZWN1cmVfaGVhcC5jCj4+PiBAQCAtMTAsNiArMTAsMTIgQEAKPj4+ICAgICNpbmNsdWRlIDxsaW51 eC9lcnIuaD4KPj4+ICAgICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPj4+ICAgICNpbmNsdWRl IDxsaW51eC9zbGFiLmg+Cj4+PiArI2luY2x1ZGUgPGxpbnV4L3RlZV9kcnYuaD4KPj4+ICsjaW5j bHVkZSA8bGludXgvdXVpZC5oPgo+Pj4gKwo+Pj4gKyNkZWZpbmUgVFpfVEFfTUVNX1VVSUQJCSI0 NDc3NTg4YS04NDc2LTExZTItYWQxNS0KPj4+IGU0MWYxMzkwZDY3NiIKPj4+ICsKPj4KPj4gSXMg dGhpcyBVVUlEIHRoZSBzYW1lIGZvciBhbGwgU29DcyBhbmQgYWxsIFRaIHZlcnNpb25zPwo+IAo+ IFllcy4gSXQgaXMgdGhlIHNhbWUgZm9yIGFsbCBTb0NzIGFuZCBhbGwgVFogdmVyc2lvbnMgY3Vy cmVudGx5Lgo+IAoKVGhhdCdzIGdvb2QgbmV3cyEKCklzIHRoaXMgVVVJRCB1c2VkIGluIGFueSB1 c2Vyc3BhY2UgY29tcG9uZW50PyAoZXhhbXBsZTogQW5kcm9pZCBIQUxzPykKSWYgaXQgaXMgKGFu ZCBJIHNvbWVob3cgZXhwZWN0IHRoYXQgaXQgaXMpLCB0aGVuIHRoaXMgZGVmaW5pdGlvbiBzaG91 bGQgZ28KdG8gYSBVQVBJIGhlYWRlciwgYXMgc3VnZ2VzdGVkIGJ5IENocmlzdGlhbi4KCkNoZWVy cyEKCj4+Cj4+IFRoYW5rcywKPj4gQW5nZWxvCj4+Cj4+Cj4+PiArI2RlZmluZSBNVEtfVEVFX1BB UkFNX05VTQkJNAo+Pj4gICAgCj4+PiAgICAvKgo+Pj4gICAgICogTWVkaWFUZWsgc2VjdXJlIChj aHVuaykgbWVtb3J5IHR5cGUKPj4+IEBAIC0yOCwxNyArMzQsNzIgQEAgc3RydWN0IG10a19zZWN1 cmVfaGVhcF9idWZmZXIgewo+Pj4gICAgc3RydWN0IG10a19zZWN1cmVfaGVhcCB7Cj4+PiAgICAJ Y29uc3QgY2hhcgkJKm5hbWU7Cj4+PiAgICAJY29uc3QgZW51bSBrcmVlX21lbV90eXBlIG1lbV90 eXBlOwo+Pj4gKwl1MzIJCQkgbWVtX3Nlc3Npb247Cj4+PiArCXN0cnVjdCB0ZWVfY29udGV4dAkq dGVlX2N0eDsKPj4+ICAgIH07Cj4+PiAgICAKPj4+ICtzdGF0aWMgaW50IG10a19vcHRlZV9jdHhf bWF0Y2goc3RydWN0IHRlZV9pb2N0bF92ZXJzaW9uX2RhdGEgKnZlciwKPj4+IGNvbnN0IHZvaWQg KmRhdGEpCj4+PiArewo+Pj4gKwlyZXR1cm4gdmVyLT5pbXBsX2lkID09IFRFRV9JTVBMX0lEX09Q VEVFOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgaW50IG10a19rcmVlX3NlY3VyZV9zZXNzaW9u X2luaXQoc3RydWN0IG10a19zZWN1cmVfaGVhcAo+Pj4gKnNlY19oZWFwKQo+Pj4gK3sKPj4+ICsJ c3RydWN0IHRlZV9wYXJhbSB0X3BhcmFtW01US19URUVfUEFSQU1fTlVNXSA9IHswfTsKPj4+ICsJ c3RydWN0IHRlZV9pb2N0bF9vcGVuX3Nlc3Npb25fYXJnIGFyZyA9IHswfTsKPj4+ICsJdXVpZF90 IHRhX21lbV91dWlkOwo+Pj4gKwlpbnQgcmV0Owo+Pj4gKwo+Pj4gKwlzZWNfaGVhcC0+dGVlX2N0 eCA9IHRlZV9jbGllbnRfb3Blbl9jb250ZXh0KE5VTEwsCj4+PiBtdGtfb3B0ZWVfY3R4X21hdGNo LAo+Pj4gKwkJCQkJCSAgICBOVUxMLCBOVUxMKTsKPj4+ICsJaWYgKElTX0VSUihzZWNfaGVhcC0+ dGVlX2N0eCkpIHsKPj4+ICsJCXByX2VycigiJXM6IG9wZW4gY29udGV4dCBmYWlsZWQsIHJldD0l bGRcbiIsIHNlY19oZWFwLQo+Pj4+IG5hbWUsCj4+PiArCQkgICAgICAgUFRSX0VSUihzZWNfaGVh cC0+dGVlX2N0eCkpOwo+Pj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4+PiArCX0KPj4+ICsKPj4+ICsJ YXJnLm51bV9wYXJhbXMgPSBNVEtfVEVFX1BBUkFNX05VTTsKPj4+ICsJYXJnLmNsbnRfbG9naW4g PSBURUVfSU9DVExfTE9HSU5fUFVCTElDOwo+Pj4gKwlyZXQgPSB1dWlkX3BhcnNlKFRaX1RBX01F TV9VVUlELCAmdGFfbWVtX3V1aWQpOwo+Pj4gKwlpZiAocmV0KQo+Pj4gKwkJZ290byBjbG9zZV9j b250ZXh0Owo+Pj4gKwltZW1jcHkoJmFyZy51dWlkLCAmdGFfbWVtX3V1aWQuYiwgc2l6ZW9mKHRh X21lbV91dWlkKSk7Cj4+PiArCj4+PiArCXJldCA9IHRlZV9jbGllbnRfb3Blbl9zZXNzaW9uKHNl Y19oZWFwLT50ZWVfY3R4LCAmYXJnLAo+Pj4gdF9wYXJhbSk7Cj4+PiArCWlmIChyZXQgPCAwIHx8 IGFyZy5yZXQpIHsKPj4+ICsJCXByX2VycigiJXM6IG9wZW4gc2Vzc2lvbiBmYWlsZWQsIHJldD0l ZDolZFxuIiwKPj4+ICsJCSAgICAgICBzZWNfaGVhcC0+bmFtZSwgcmV0LCBhcmcucmV0KTsKPj4+ ICsJCXJldCA9IC1FSU5WQUw7Cj4+PiArCQlnb3RvIGNsb3NlX2NvbnRleHQ7Cj4+PiArCX0KPj4+ ICsJc2VjX2hlYXAtPm1lbV9zZXNzaW9uID0gYXJnLnNlc3Npb247Cj4+PiArCXJldHVybiAwOwo+ Pj4gKwo+Pj4gK2Nsb3NlX2NvbnRleHQ6Cj4+PiArCXRlZV9jbGllbnRfY2xvc2VfY29udGV4dChz ZWNfaGVhcC0+dGVlX2N0eCk7Cj4+PiArCXJldHVybiByZXQ7Cj4+PiArfQo+Pj4gKwo+Pj4gICAg c3RhdGljIHN0cnVjdCBkbWFfYnVmICoKPj4+ICAgIG10a19zZWNfaGVhcF9hbGxvY2F0ZShzdHJ1 Y3QgZG1hX2hlYXAgKmhlYXAsIHNpemVfdCBzaXplLAo+Pj4gICAgCQkgICAgICB1bnNpZ25lZCBs b25nIGZkX2ZsYWdzLCB1bnNpZ25lZCBsb25nIGhlYXBfZmxhZ3MpCj4+PiAgICB7Cj4+PiArCXN0 cnVjdCBtdGtfc2VjdXJlX2hlYXAgKnNlY19oZWFwID0gZG1hX2hlYXBfZ2V0X2RydmRhdGEoaGVh cCk7Cj4+PiAgICAJc3RydWN0IG10a19zZWN1cmVfaGVhcF9idWZmZXIgKnNlY19idWY7Cj4+PiAg ICAJREVGSU5FX0RNQV9CVUZfRVhQT1JUX0lORk8oZXhwX2luZm8pOwo+Pj4gICAgCXN0cnVjdCBk bWFfYnVmICpkbWFidWY7Cj4+PiAgICAJaW50IHJldDsKPj4+ICAgIAo+Pj4gKwkvKgo+Pj4gKwkg KiBURUUgcHJvYmUgbWF5IGJlIGxhdGUuIEluaXRpYWxpc2UgdGhlIHNlY3VyZSBzZXNzaW9uIGlu IHRoZQo+Pj4gZmlyc3QKPj4+ICsJICogYWxsb2NhdGluZyBzZWN1cmUgYnVmZmVyLgo+Pj4gKwkg Ki8KPj4+ICsJaWYgKCFzZWNfaGVhcC0+bWVtX3Nlc3Npb24pIHsKPj4+ICsJCXJldCA9IG10a19r cmVlX3NlY3VyZV9zZXNzaW9uX2luaXQoc2VjX2hlYXApOwo+Pj4gKwkJaWYgKHJldCkKPj4+ICsJ CQlyZXR1cm4gRVJSX1BUUihyZXQpOwo+Pj4gKwl9Cj4+PiArCj4+PiAgICAJc2VjX2J1ZiA9IGt6 YWxsb2Moc2l6ZW9mKCpzZWNfYnVmKSwgR0ZQX0tFUk5FTCk7Cj4+PiAgICAJaWYgKCFzZWNfYnVm KQo+Pj4gICAgCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPj4KPj4KCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxp bmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3Rz LmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==