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 36DF6E80AA4 for ; Wed, 27 Sep 2023 13:46:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231981AbjI0NqZ (ORCPT ); Wed, 27 Sep 2023 09:46:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45900 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231766AbjI0NqV (ORCPT ); Wed, 27 Sep 2023 09:46:21 -0400 Received: from mail-lf1-x12b.google.com (mail-lf1-x12b.google.com [IPv6:2a00:1450:4864:20::12b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B7A89126 for ; Wed, 27 Sep 2023 06:46:19 -0700 (PDT) Received: by mail-lf1-x12b.google.com with SMTP id 2adb3069b0e04-50325ce89e9so18543628e87.0 for ; Wed, 27 Sep 2023 06:46:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1695822378; x=1696427178; darn=vger.kernel.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=xjMt+usahKyEXhyMN9rIKh7XECu5zDX2FLeHZvS3f6M=; b=oeM46MhCnw2BXtdx77cSFQE5ZisF0H7LLh5VDsP0l0BfTAQx7M1DE+GG5r2VK2P1Pa 4NbI3TfaTC+TMJbX9DcrrMhCjnSmsxET7LyhbyhpvnpHORow0QYAcJ4BnIXzVbxKdt6/ of2+ewnbHC22U+xkr9oeytf9WupUCtHS9KvBaZbsKqMByo5VZbCiWouR30lcFSFSxuhR iHwFxFdD7/VFPXwDsIAAkwq/m3BQNs5nqxPKnBT+/aX3N1EVEm1fGEbyjrI6ey/fLPe3 zYNVNjQnIVIC2QgzOjVFTkWSEZhYeTvrtFxoAlFtD89XRE4/Yg842AztHn8Ii9gcYxnN HN3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695822378; x=1696427178; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=xjMt+usahKyEXhyMN9rIKh7XECu5zDX2FLeHZvS3f6M=; b=iyEgfmbs8C5p0QV5T39ZXtweaglFNn64nT6h1LcTJM4yZZH21xvRcNn1pVkjqPgxlZ X0dPu1KHmlJfbC3XI4rijCJMYAVzdcGYQ4YrnhqMdPrggE92q91wDaMgu4MLDmeUNM/T WcKJIrY871PN+PhL59e8uvVq/VYuJ2D41i24PGOPENz28Z5PeHPlIbuLWLMAS98Jr0Wp TsCg5DULBZspLnsXuRjTu4RrFis0wMvyyUDGOUtaJA+HUwrh6yr8zAR3b0W/Wc0bEbSI BpGLpKEnJHgmogkkbFNGdubM8vZW3u46PnuiE+93gSRgEQV6PgOHyom2M6KdjDAysEb/ AF3g== X-Gm-Message-State: AOJu0Yy2mpSiPuUkKoU2J6z1k+kzS9kyO9NVUm4m5DuFgZllfmmNUidi kO030HuFntPLeTfbCLTMs8VqDA== X-Google-Smtp-Source: AGHT+IGpPGTE4fiqS7H6X5cE5gxZAu7fbfw/lkC2Rf9hkEdABrFyFW6E9N1aUp/8UrNrtYA3KSkgEg== X-Received: by 2002:ac2:58e4:0:b0:504:3424:215c with SMTP id v4-20020ac258e4000000b005043424215cmr1658146lfo.51.1695822377525; Wed, 27 Sep 2023 06:46:17 -0700 (PDT) Received: from pop-os.localdomain (81-231-61-187-no276.tbcn.telia.com. [81.231.61.187]) by smtp.gmail.com with ESMTPSA id f21-20020a19ae15000000b00500d1f67be9sm2664810lfc.43.2023.09.27.06.46.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 Sep 2023 06:46:16 -0700 (PDT) Date: Wed, 27 Sep 2023 15:46:14 +0200 From: Joakim Bech To: Yong Wu =?utf-8?B?KOWQtOWLhyk=?= Cc: "matthias.bgg@gmail.com" , "christian.koenig@amd.com" , "angelogioacchino.delregno@collabora.com" , "robh+dt@kernel.org" , "sumit.semwal@linaro.org" , "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" , Jianjiao Zeng =?utf-8?B?KOabvuWBpeWnoyk=?= , Kuohong Wang =?utf-8?B?KOeOi+Wci+m0uyk=?= , "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" Subject: Re: [PATCH 5/9] dma-buf: heaps: mtk_sec_heap: Initialise tee session Message-ID: <20230927134614.kp27moxdw72jiu4y@pop-os.localdomain> References: <20230911023038.30649-1-yong.wu@mediatek.com> <20230911023038.30649-6-yong.wu@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Sep 25, 2023 at 12:49:50PM +0000, Yong Wu (吴勇) wrote: > On Tue, 2023-09-12 at 11:32 +0200, AngeloGioacchino Del Regno wrote: > > 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?) > > No. Userspace never use it. If userspace would like to allocate this > secure buffer, it can achieve through the existing dmabuf IOCTL via > /dev/dma_heap/mtk_svp node. > In general I think as mentioned elsewhere in comments, that there isn't that much here that seems to be unique for MediaTek in this patch series, so I think it worth to see whether this whole patch set can be made more generic. Having said that, the UUID is always unique for a certain Trusted Application. So, it's not entirely true saying that the UUID is the same for all SoCs and all TrustZone versions. It might be true for a family of MediaTek devices and the TEE in use, but not generically. So, if we need to differentiate between different TA implementations, then we need different UUIDs. If it would be possible to make this patch set generic, then it sounds like a single UUID would be sufficient, but that would imply that all TA's supporting such a generic UUID would be implemented the same from an API point of view. Which also means that for example Trusted Application function ID's needs to be the same etc. Not impossible to achieve, but still not easy (different TEE follows different specifications) and it's not typically something we've done in the past. Unfortunately there is no standardized database of TA's describing what they implement and support. As an alternative, we could implement a query call in the TEE answering, "What UUID does your TA have that implements secure unmapped heap?". I.e., something that reminds of a lookup table. Then we wouldn't have to carry this in UAPI, DT or anywhere else. -- // Regards Joakim > > > 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 15917E810D9 for ; Wed, 27 Sep 2023 13:46:23 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 231BB10E524; Wed, 27 Sep 2023 13:46:22 +0000 (UTC) Received: from mail-lf1-x12b.google.com (mail-lf1-x12b.google.com [IPv6:2a00:1450:4864:20::12b]) by gabe.freedesktop.org (Postfix) with ESMTPS id E3E3610E524 for ; Wed, 27 Sep 2023 13:46:19 +0000 (UTC) Received: by mail-lf1-x12b.google.com with SMTP id 2adb3069b0e04-5041d6d8b10so18502051e87.2 for ; Wed, 27 Sep 2023 06:46:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1695822378; x=1696427178; darn=lists.freedesktop.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=xjMt+usahKyEXhyMN9rIKh7XECu5zDX2FLeHZvS3f6M=; b=r/ya6YFf1nw4AxPnPt2p32f8P6b2DBcrMA0GkVwDb7f0nWbW1BnrTD3GkKMc18SQBZ gukSY3hRy6szyPMp20G8JkoaoRNtcsKF+RQ1pmaeFIoOUOf1U1ds0TiViK81I9QfumdU wqaI29ao1Sus8VC5BDkG9dzNaKyYstSLx0MizSsowGFBL4l0IaN+NfosOP4ygwZ1GqjC tkpx06xGV+VAvkDEPKQz5zgn9j4b2/tB4Bil9Lj8hCbi5wsrx+osgVAOyNmUAhEMO/oI BjrvYhql1k93cwbeYz2cICXYwtCCqvcfUb2cTaScLLJAAoApg2Voa9CoE1ZKosPf3ftm rDEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695822378; x=1696427178; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=xjMt+usahKyEXhyMN9rIKh7XECu5zDX2FLeHZvS3f6M=; b=v2XXN69/AxPp7NScy5tcD+Yx7O1PcFVb8W1cjEHP/xqTC9MoE74WKV+b8zdi7r3O4F 5pBRcEuaEAzyMxB9VaSwjscfHXETMxVQvcGE8JklVVp/MQhAzcv/s1b4IbgB9+aaQJI8 9XcOf04pXAdt8IRoz7gyTCsyV/hHGF3Jr/gu6QMIMNoV2Goe/tG8L7zc1wjtCMHLxKZU RbyZPIAx2QmZW/63GVI7D3m2mJMjKn53Yf4iU7yW3mbmbM4bGkSbPIpMPHhLqKS4Zywp +Rnu9Aa1LZu4s9SVYPLDu9Tal89bEeIEqEIsE+CtER9zpF1tcgAfdaXWsPK4EEGcQ499 lwkg== X-Gm-Message-State: AOJu0Ywey3Ln+g2sd/escI885J2qoCLGdM5S4dUCXuDRnrrGKpn/K7Kp GjeW0r9Ri9q/3SR+DUPAXXo8FA== X-Google-Smtp-Source: AGHT+IGpPGTE4fiqS7H6X5cE5gxZAu7fbfw/lkC2Rf9hkEdABrFyFW6E9N1aUp/8UrNrtYA3KSkgEg== X-Received: by 2002:ac2:58e4:0:b0:504:3424:215c with SMTP id v4-20020ac258e4000000b005043424215cmr1658146lfo.51.1695822377525; Wed, 27 Sep 2023 06:46:17 -0700 (PDT) Received: from pop-os.localdomain (81-231-61-187-no276.tbcn.telia.com. [81.231.61.187]) by smtp.gmail.com with ESMTPSA id f21-20020a19ae15000000b00500d1f67be9sm2664810lfc.43.2023.09.27.06.46.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 Sep 2023 06:46:16 -0700 (PDT) Date: Wed, 27 Sep 2023 15:46:14 +0200 From: Joakim Bech To: Yong Wu =?utf-8?B?KOWQtOWLhyk=?= Subject: Re: [PATCH 5/9] dma-buf: heaps: mtk_sec_heap: Initialise tee session Message-ID: <20230927134614.kp27moxdw72jiu4y@pop-os.localdomain> References: <20230911023038.30649-1-yong.wu@mediatek.com> <20230911023038.30649-6-yong.wu@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: 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" , Kuohong Wang =?utf-8?B?KOeOi+Wci+m0uyk=?= , "linux-kernel@vger.kernel.org" , "dri-devel@lists.freedesktop.org" , "christian.koenig@amd.com" , "linaro-mm-sig@lists.linaro.org" , "robh+dt@kernel.org" , "linux-mediatek@lists.infradead.org" , "linux-arm-kernel@lists.infradead.org" , "krzysztof.kozlowski+dt@linaro.org" , "matthias.bgg@gmail.com" , "jstultz@google.com" , "tjmercier@google.com" , "linux-media@vger.kernel.org" , "sumit.semwal@linaro.org" , Jianjiao Zeng =?utf-8?B?KOabvuWBpeWnoyk=?= , "angelogioacchino.delregno@collabora.com" Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" On Mon, Sep 25, 2023 at 12:49:50PM +0000, Yong Wu (吴勇) wrote: > On Tue, 2023-09-12 at 11:32 +0200, AngeloGioacchino Del Regno wrote: > > 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?) > > No. Userspace never use it. If userspace would like to allocate this > secure buffer, it can achieve through the existing dmabuf IOCTL via > /dev/dma_heap/mtk_svp node. > In general I think as mentioned elsewhere in comments, that there isn't that much here that seems to be unique for MediaTek in this patch series, so I think it worth to see whether this whole patch set can be made more generic. Having said that, the UUID is always unique for a certain Trusted Application. So, it's not entirely true saying that the UUID is the same for all SoCs and all TrustZone versions. It might be true for a family of MediaTek devices and the TEE in use, but not generically. So, if we need to differentiate between different TA implementations, then we need different UUIDs. If it would be possible to make this patch set generic, then it sounds like a single UUID would be sufficient, but that would imply that all TA's supporting such a generic UUID would be implemented the same from an API point of view. Which also means that for example Trusted Application function ID's needs to be the same etc. Not impossible to achieve, but still not easy (different TEE follows different specifications) and it's not typically something we've done in the past. Unfortunately there is no standardized database of TA's describing what they implement and support. As an alternative, we could implement a query call in the TEE answering, "What UUID does your TA have that implements secure unmapped heap?". I.e., something that reminds of a lookup table. Then we wouldn't have to carry this in UAPI, DT or anywhere else. -- // Regards Joakim > > > 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 1312CE810DA for ; Wed, 27 Sep 2023 13:46:52 +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-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To: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=fiKVZUVO/u9FjBkHrux14AOHSSwla6iL5Z7oCegVxB0=; b=o/oRLm14ufzZ4X YOd04mXgsyTy0wH5JPReU67wUVocNTMf3LuGD5IP1OWseQ89VQkALOkoklPLrjBVQx3pQwSQSFjvO aRW35ywQ4t3xmjYGRnau/DtfJLxghMxeu6V8rvioR0f2GdznB5bfk5ygScxGWC+G3TAQoZrnAWyNz 8HHkIPoGaHjIxoNPK7f6ae9HiHZuc5+XRr6CsKduhLX9xoehuTWs4Ogc/SO16x/RGsxYTab9lS0Z4 4zn2nowjPhPEkI6tAL7CQBBjD0y77n8BtUOjbERCdaXvp/FowqdljIQKZc3/IpQNafLywXX9bjwKV mUSH/WvGW0JcIeWG8Nww==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qlUry-0012cU-0q; Wed, 27 Sep 2023 13:46:26 +0000 Received: from mail-lf1-x130.google.com ([2a00:1450:4864:20::130]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qlUrt-0012ab-2y for linux-arm-kernel@lists.infradead.org; Wed, 27 Sep 2023 13:46:25 +0000 Received: by mail-lf1-x130.google.com with SMTP id 2adb3069b0e04-50337b43ee6so18514546e87.3 for ; Wed, 27 Sep 2023 06:46:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1695822378; x=1696427178; darn=lists.infradead.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=xjMt+usahKyEXhyMN9rIKh7XECu5zDX2FLeHZvS3f6M=; b=iy0M7zANEyo0TR4tOjaNqX4TFTyVfMBhDH8Ym/ZFiTo+MJGofO3OXRvWHsWDHJc5ku gV5W0JFXqO14r87FD34Ipt4s+xxsEin82IGbTf6EZ+vUoOPaZt7edoXoj/P1DIN+tEf5 RLiKCM//eWHFN+EBsBWimZbIze4Kvk5Em4MdS40ue76n9VeqjmIsu+h0XZodVeo7IcaL S+ZYxJSIbEhMBPh+V1b6TZy6/hi0tjFa8MssG5qXCXbqBpW1EWBkMTwqhe72SybtHFl0 vKAc51k8rlajzHjSSL7NLLf0zn49qxPmh5iMkVD5LkLTIJGQc0YzALHuWqNUPRAucdqa 63ng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695822378; x=1696427178; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=xjMt+usahKyEXhyMN9rIKh7XECu5zDX2FLeHZvS3f6M=; b=fEXuSYnEm4LT3sKgYHAP0MwztJ/H3YnaxrBFRf78PocCtVYDe69FVor2lF/11OxAU0 MP1ZzK2U1t2ZwNbX7EbiAnk/iVOUl+XtBqMAtHgEU11u9/6p5YYeqLQEr9Gj5ksExN5s qqYMhZXFANXGtIORqIN93UanHUlMAiBEfY0MdbEGbpDcMz1QnUixvDkrR5vO0PZ3I24Y d780GRDZUL/4ksTVwOoyt6VYFT8rgKBqNbHrJdCCcpuYB/qLV/Y1sTFwcNGv6KXKNz// /6Rx+8Rp2ViSJSIHT7dGH3tH56jB/WmtohGCpae91NGSDxW/MuqVR5RRQ08ASDANVuET 2E3A== X-Gm-Message-State: AOJu0YzU5tPgN1f1ASZPVW56ZaDbDy63x6xUd+6EbeCsJ629PdCkfuKK IIYu1seOUwLhsKCHML7vupC0LA== X-Google-Smtp-Source: AGHT+IGpPGTE4fiqS7H6X5cE5gxZAu7fbfw/lkC2Rf9hkEdABrFyFW6E9N1aUp/8UrNrtYA3KSkgEg== X-Received: by 2002:ac2:58e4:0:b0:504:3424:215c with SMTP id v4-20020ac258e4000000b005043424215cmr1658146lfo.51.1695822377525; Wed, 27 Sep 2023 06:46:17 -0700 (PDT) Received: from pop-os.localdomain (81-231-61-187-no276.tbcn.telia.com. [81.231.61.187]) by smtp.gmail.com with ESMTPSA id f21-20020a19ae15000000b00500d1f67be9sm2664810lfc.43.2023.09.27.06.46.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 Sep 2023 06:46:16 -0700 (PDT) Date: Wed, 27 Sep 2023 15:46:14 +0200 From: Joakim Bech To: Yong Wu =?utf-8?B?KOWQtOWLhyk=?= Cc: "matthias.bgg@gmail.com" , "christian.koenig@amd.com" , "angelogioacchino.delregno@collabora.com" , "robh+dt@kernel.org" , "sumit.semwal@linaro.org" , "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" , Jianjiao Zeng =?utf-8?B?KOabvuWBpeWnoyk=?= , Kuohong Wang =?utf-8?B?KOeOi+Wci+m0uyk=?= , "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" Subject: Re: [PATCH 5/9] dma-buf: heaps: mtk_sec_heap: Initialise tee session Message-ID: <20230927134614.kp27moxdw72jiu4y@pop-os.localdomain> References: <20230911023038.30649-1-yong.wu@mediatek.com> <20230911023038.30649-6-yong.wu@mediatek.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230927_064621_960571_A3959AA7 X-CRM114-Status: GOOD ( 41.36 ) 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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gTW9uLCBTZXAgMjUsIDIwMjMgYXQgMTI6NDk6NTBQTSArMDAwMCwgWW9uZyBXdSAo5ZC05YuH KSB3cm90ZToKPiBPbiBUdWUsIDIwMjMtMDktMTIgYXQgMTE6MzIgKzAyMDAsIEFuZ2Vsb0dpb2Fj Y2hpbm8gRGVsIFJlZ25vIHdyb3RlOgo+ID4gSWwgMTIvMDkvMjMgMDg6MTcsIFlvbmcgV3UgKOWQ tOWLhykgaGEgc2NyaXR0bzoKPiA+ID4gT24gTW9uLCAyMDIzLTA5LTExIGF0IDExOjI5ICswMjAw LCBBbmdlbG9HaW9hY2NoaW5vIERlbCBSZWdubwo+ID4gPiB3cm90ZToKPiA+ID4gPiBJbCAxMS8w OS8yMyAwNDozMCwgWW9uZyBXdSBoYSBzY3JpdHRvOgo+ID4gPiA+ID4gVGhlIFRFRSBwcm9iZSBs YXRlciB0aGFuIGRtYS1idWYgaGVhcCwgYW5kIFBST0JFX0RFREVSIGRvZXNuJ3QKPiA+ID4gPiA+ IHdvcmsKPiA+ID4gPiA+IGhlcmUgc2luY2UgdGhpcyBpcyBub3QgYSBwbGF0Zm9ybSBkcml2ZXIs IHRoZXJlZm9yZSBpbml0aWFsaXNlCj4gPiA+ID4gPiB0aGUKPiA+ID4gPiA+IFRFRQo+ID4gPiA+ ID4gY29udGV4dC9zZXNzaW9uIHdoaWxlIHdlIGFsbG9jYXRlIHRoZSBmaXJzdCBzZWN1cmUgYnVm ZmVyLgo+ID4gPiA+ID4gCj4gPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBZb25nIFd1IDx5b25nLnd1 QG1lZGlhdGVrLmNvbT4KPiA+ID4gPiA+IC0tLQo+ID4gPiA+ID4gICAgZHJpdmVycy9kbWEtYnVm L2hlYXBzL210a19zZWN1cmVfaGVhcC5jIHwgNjEKPiA+ID4gPiA+ICsrKysrKysrKysrKysrKysr KysrKysrKysKPiA+ID4gPiA+ICAgIDEgZmlsZSBjaGFuZ2VkLCA2MSBpbnNlcnRpb25zKCspCj4g PiA+ID4gPiAKPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS1idWYvaGVhcHMvbXRr X3NlY3VyZV9oZWFwLmMKPiA+ID4gPiA+IGIvZHJpdmVycy9kbWEtCj4gPiA+ID4gPiBidWYvaGVh cHMvbXRrX3NlY3VyZV9oZWFwLmMKPiA+ID4gPiA+IGluZGV4IGJiZjFjOGRjZTIzZS4uZTNkYTMz YTNkMDgzIDEwMDY0NAo+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9kbWEtYnVmL2hlYXBzL210a19z ZWN1cmVfaGVhcC5jCj4gPiA+ID4gPiArKysgYi9kcml2ZXJzL2RtYS1idWYvaGVhcHMvbXRrX3Nl Y3VyZV9oZWFwLmMKPiA+ID4gPiA+IEBAIC0xMCw2ICsxMCwxMiBAQAo+ID4gPiA+ID4gICAgI2lu Y2x1ZGUgPGxpbnV4L2Vyci5oPgo+ID4gPiA+ID4gICAgI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5o Pgo+ID4gPiA+ID4gICAgI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KPiA+ID4gPiA+ICsjaW5jbHVk ZSA8bGludXgvdGVlX2Rydi5oPgo+ID4gPiA+ID4gKyNpbmNsdWRlIDxsaW51eC91dWlkLmg+Cj4g PiA+ID4gPiArCj4gPiA+ID4gPiArI2RlZmluZSBUWl9UQV9NRU1fVVVJRAkJIjQ0Nzc1ODhhLTg0 NzYtMTFlMi1hZDE1LQo+ID4gPiA+ID4gZTQxZjEzOTBkNjc2Igo+ID4gPiA+ID4gKwo+ID4gPiA+ IAo+ID4gPiA+IElzIHRoaXMgVVVJRCB0aGUgc2FtZSBmb3IgYWxsIFNvQ3MgYW5kIGFsbCBUWiB2 ZXJzaW9ucz8KPiA+ID4gCj4gPiA+IFllcy4gSXQgaXMgdGhlIHNhbWUgZm9yIGFsbCBTb0NzIGFu ZCBhbGwgVFogdmVyc2lvbnMgY3VycmVudGx5Lgo+ID4gPiAKPiA+IAo+ID4gVGhhdCdzIGdvb2Qg bmV3cyEKPiA+IAo+ID4gSXMgdGhpcyBVVUlEIHVzZWQgaW4gYW55IHVzZXJzcGFjZSBjb21wb25l bnQ/IChleGFtcGxlOiBBbmRyb2lkCj4gPiBIQUxzPykKPiAKPiBOby4gVXNlcnNwYWNlIG5ldmVy IHVzZSBpdC4gSWYgdXNlcnNwYWNlIHdvdWxkIGxpa2UgdG8gYWxsb2NhdGUgdGhpcwo+IHNlY3Vy ZSBidWZmZXIsIGl0IGNhbiBhY2hpZXZlIHRocm91Z2ggdGhlIGV4aXN0aW5nIGRtYWJ1ZiBJT0NU TCB2aWEKPiAvZGV2L2RtYV9oZWFwL210a19zdnAgbm9kZS4KPiAKSW4gZ2VuZXJhbCBJIHRoaW5r IGFzIG1lbnRpb25lZCBlbHNld2hlcmUgaW4gY29tbWVudHMsIHRoYXQgdGhlcmUgaXNuJ3QKdGhh dCBtdWNoIGhlcmUgdGhhdCBzZWVtcyB0byBiZSB1bmlxdWUgZm9yIE1lZGlhVGVrIGluIHRoaXMg cGF0Y2gKc2VyaWVzLCBzbyBJIHRoaW5rIGl0IHdvcnRoIHRvIHNlZSB3aGV0aGVyIHRoaXMgd2hv bGUgcGF0Y2ggc2V0IGNhbiBiZQptYWRlIG1vcmUgZ2VuZXJpYy4gSGF2aW5nIHNhaWQgdGhhdCwg dGhlIFVVSUQgaXMgYWx3YXlzIHVuaXF1ZSBmb3IgYQpjZXJ0YWluIFRydXN0ZWQgQXBwbGljYXRp b24uIFNvLCBpdCdzIG5vdCBlbnRpcmVseSB0cnVlIHNheWluZyB0aGF0IHRoZQpVVUlEIGlzIHRo ZSBzYW1lIGZvciBhbGwgU29DcyBhbmQgYWxsIFRydXN0Wm9uZSB2ZXJzaW9ucy4gSXQgbWlnaHQg YmUKdHJ1ZSBmb3IgYSBmYW1pbHkgb2YgTWVkaWFUZWsgZGV2aWNlcyBhbmQgdGhlIFRFRSBpbiB1 c2UsIGJ1dCBub3QKZ2VuZXJpY2FsbHkuCgpTbywgaWYgd2UgbmVlZCB0byBkaWZmZXJlbnRpYXRl IGJldHdlZW4gZGlmZmVyZW50IFRBIGltcGxlbWVudGF0aW9ucywKdGhlbiB3ZSBuZWVkIGRpZmZl cmVudCBVVUlEcy4gSWYgaXQgd291bGQgYmUgcG9zc2libGUgdG8gbWFrZSB0aGlzIHBhdGNoCnNl dCBnZW5lcmljLCB0aGVuIGl0IHNvdW5kcyBsaWtlIGEgc2luZ2xlIFVVSUQgd291bGQgYmUgc3Vm ZmljaWVudCwgYnV0CnRoYXQgd291bGQgaW1wbHkgdGhhdCBhbGwgVEEncyBzdXBwb3J0aW5nIHN1 Y2ggYSBnZW5lcmljIFVVSUQgd291bGQgYmUKaW1wbGVtZW50ZWQgdGhlIHNhbWUgZnJvbSBhbiBB UEkgcG9pbnQgb2Ygdmlldy4gV2hpY2ggYWxzbyBtZWFucyB0aGF0CmZvciBleGFtcGxlIFRydXN0 ZWQgQXBwbGljYXRpb24gZnVuY3Rpb24gSUQncyBuZWVkcyB0byBiZSB0aGUgc2FtZSBldGMuCk5v dCBpbXBvc3NpYmxlIHRvIGFjaGlldmUsIGJ1dCBzdGlsbCBub3QgZWFzeSAoZGlmZmVyZW50IFRF RSBmb2xsb3dzCmRpZmZlcmVudCBzcGVjaWZpY2F0aW9ucykgYW5kIGl0J3Mgbm90IHR5cGljYWxs eSBzb21ldGhpbmcgd2UndmUgZG9uZSBpbgp0aGUgcGFzdC4KClVuZm9ydHVuYXRlbHkgdGhlcmUg aXMgbm8gc3RhbmRhcmRpemVkIGRhdGFiYXNlIG9mIFRBJ3MgZGVzY3JpYmluZyB3aGF0CnRoZXkg aW1wbGVtZW50IGFuZCBzdXBwb3J0LgoKQXMgYW4gYWx0ZXJuYXRpdmUsIHdlIGNvdWxkIGltcGxl bWVudCBhIHF1ZXJ5IGNhbGwgaW4gdGhlIFRFRSBhbnN3ZXJpbmcsCiJXaGF0IFVVSUQgZG9lcyB5 b3VyIFRBIGhhdmUgdGhhdCBpbXBsZW1lbnRzIHNlY3VyZSB1bm1hcHBlZCBoZWFwPyIuCkkuZS4s IHNvbWV0aGluZyB0aGF0IHJlbWluZHMgb2YgYSBsb29rdXAgdGFibGUuIFRoZW4gd2Ugd291bGRu J3QgaGF2ZSB0bwpjYXJyeSB0aGlzIGluIFVBUEksIERUIG9yIGFueXdoZXJlIGVsc2UuCgotLSAK Ly8gUmVnYXJkcwpKb2FraW0KCj4gCj4gPiBJZiBpdCBpcyAoYW5kIEkgc29tZWhvdyBleHBlY3Qg dGhhdCBpdCBpcyksIHRoZW4gdGhpcyBkZWZpbml0aW9uCj4gPiBzaG91bGQgZ28KPiA+IHRvIGEg VUFQSSBoZWFkZXIsIGFzIHN1Z2dlc3RlZCBieSBDaHJpc3RpYW4uCj4gPiAKPiA+IENoZWVycyEK PiA+IAo+ID4gPiA+IAo+ID4gPiA+IFRoYW5rcywKPiA+ID4gPiBBbmdlbG8KPiA+ID4gPiAKPiA+ ID4gPiAKPiA+ID4gPiA+ICsjZGVmaW5lIE1US19URUVfUEFSQU1fTlVNCQk0Cj4gPiA+ID4gPiAg ICAKPiA+ID4gPiA+ICAgIC8qCj4gPiA+ID4gPiAgICAgKiBNZWRpYVRlayBzZWN1cmUgKGNodW5r KSBtZW1vcnkgdHlwZQo+ID4gPiA+ID4gQEAgLTI4LDE3ICszNCw3MiBAQCBzdHJ1Y3QgbXRrX3Nl Y3VyZV9oZWFwX2J1ZmZlciB7Cj4gPiA+ID4gPiAgICBzdHJ1Y3QgbXRrX3NlY3VyZV9oZWFwIHsK PiA+ID4gPiA+ICAgIAljb25zdCBjaGFyCQkqbmFtZTsKPiA+ID4gPiA+ICAgIAljb25zdCBlbnVt IGtyZWVfbWVtX3R5cGUgbWVtX3R5cGU7Cj4gPiA+ID4gPiArCXUzMgkJCSBtZW1fc2Vzc2lvbjsK PiA+ID4gPiA+ICsJc3RydWN0IHRlZV9jb250ZXh0CSp0ZWVfY3R4Owo+ID4gPiA+ID4gICAgfTsK PiA+ID4gPiA+ICAgIAo+ID4gPiA+ID4gK3N0YXRpYyBpbnQgbXRrX29wdGVlX2N0eF9tYXRjaChz dHJ1Y3QgdGVlX2lvY3RsX3ZlcnNpb25fZGF0YQo+ID4gPiA+ID4gKnZlciwKPiA+ID4gPiA+IGNv bnN0IHZvaWQgKmRhdGEpCj4gPiA+ID4gPiArewo+ID4gPiA+ID4gKwlyZXR1cm4gdmVyLT5pbXBs X2lkID09IFRFRV9JTVBMX0lEX09QVEVFOwo+ID4gPiA+ID4gK30KPiA+ID4gPiA+ICsKPiA+ID4g PiA+ICtzdGF0aWMgaW50IG10a19rcmVlX3NlY3VyZV9zZXNzaW9uX2luaXQoc3RydWN0IG10a19z ZWN1cmVfaGVhcAo+ID4gPiA+ID4gKnNlY19oZWFwKQo+ID4gPiA+ID4gK3sKPiA+ID4gPiA+ICsJ c3RydWN0IHRlZV9wYXJhbSB0X3BhcmFtW01US19URUVfUEFSQU1fTlVNXSA9IHswfTsKPiA+ID4g PiA+ICsJc3RydWN0IHRlZV9pb2N0bF9vcGVuX3Nlc3Npb25fYXJnIGFyZyA9IHswfTsKPiA+ID4g PiA+ICsJdXVpZF90IHRhX21lbV91dWlkOwo+ID4gPiA+ID4gKwlpbnQgcmV0Owo+ID4gPiA+ID4g Kwo+ID4gPiA+ID4gKwlzZWNfaGVhcC0+dGVlX2N0eCA9IHRlZV9jbGllbnRfb3Blbl9jb250ZXh0 KE5VTEwsCj4gPiA+ID4gPiBtdGtfb3B0ZWVfY3R4X21hdGNoLAo+ID4gPiA+ID4gKwkJCQkJCSAg ICBOVUxMLAo+ID4gPiA+ID4gTlVMTCk7Cj4gPiA+ID4gPiArCWlmIChJU19FUlIoc2VjX2hlYXAt PnRlZV9jdHgpKSB7Cj4gPiA+ID4gPiArCQlwcl9lcnIoIiVzOiBvcGVuIGNvbnRleHQgZmFpbGVk LCByZXQ9JWxkXG4iLAo+ID4gPiA+ID4gc2VjX2hlYXAtCj4gPiA+ID4gPiA+IG5hbWUsCj4gPiA+ ID4gPiAKPiA+ID4gPiA+ICsJCSAgICAgICBQVFJfRVJSKHNlY19oZWFwLT50ZWVfY3R4KSk7Cj4g PiA+ID4gPiArCQlyZXR1cm4gLUVOT0RFVjsKPiA+ID4gPiA+ICsJfQo+ID4gPiA+ID4gKwo+ID4g PiA+ID4gKwlhcmcubnVtX3BhcmFtcyA9IE1US19URUVfUEFSQU1fTlVNOwo+ID4gPiA+ID4gKwlh cmcuY2xudF9sb2dpbiA9IFRFRV9JT0NUTF9MT0dJTl9QVUJMSUM7Cj4gPiA+ID4gPiArCXJldCA9 IHV1aWRfcGFyc2UoVFpfVEFfTUVNX1VVSUQsICZ0YV9tZW1fdXVpZCk7Cj4gPiA+ID4gPiArCWlm IChyZXQpCj4gPiA+ID4gPiArCQlnb3RvIGNsb3NlX2NvbnRleHQ7Cj4gPiA+ID4gPiArCW1lbWNw eSgmYXJnLnV1aWQsICZ0YV9tZW1fdXVpZC5iLCBzaXplb2YodGFfbWVtX3V1aWQpKTsKPiA+ID4g PiA+ICsKPiA+ID4gPiA+ICsJcmV0ID0gdGVlX2NsaWVudF9vcGVuX3Nlc3Npb24oc2VjX2hlYXAt PnRlZV9jdHgsICZhcmcsCj4gPiA+ID4gPiB0X3BhcmFtKTsKPiA+ID4gPiA+ICsJaWYgKHJldCA8 IDAgfHwgYXJnLnJldCkgewo+ID4gPiA+ID4gKwkJcHJfZXJyKCIlczogb3BlbiBzZXNzaW9uIGZh aWxlZCwgcmV0PSVkOiVkXG4iLAo+ID4gPiA+ID4gKwkJICAgICAgIHNlY19oZWFwLT5uYW1lLCBy ZXQsIGFyZy5yZXQpOwo+ID4gPiA+ID4gKwkJcmV0ID0gLUVJTlZBTDsKPiA+ID4gPiA+ICsJCWdv dG8gY2xvc2VfY29udGV4dDsKPiA+ID4gPiA+ICsJfQo+ID4gPiA+ID4gKwlzZWNfaGVhcC0+bWVt X3Nlc3Npb24gPSBhcmcuc2Vzc2lvbjsKPiA+ID4gPiA+ICsJcmV0dXJuIDA7Cj4gPiA+ID4gPiAr Cj4gPiA+ID4gPiArY2xvc2VfY29udGV4dDoKPiA+ID4gPiA+ICsJdGVlX2NsaWVudF9jbG9zZV9j b250ZXh0KHNlY19oZWFwLT50ZWVfY3R4KTsKPiA+ID4gPiA+ICsJcmV0dXJuIHJldDsKPiA+ID4g PiA+ICt9Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiAgICBzdGF0aWMgc3RydWN0IGRtYV9idWYgKgo+ ID4gPiA+ID4gICAgbXRrX3NlY19oZWFwX2FsbG9jYXRlKHN0cnVjdCBkbWFfaGVhcCAqaGVhcCwg c2l6ZV90IHNpemUsCj4gPiA+ID4gPiAgICAJCSAgICAgIHVuc2lnbmVkIGxvbmcgZmRfZmxhZ3Ms IHVuc2lnbmVkIGxvbmcKPiA+ID4gPiA+IGhlYXBfZmxhZ3MpCj4gPiA+ID4gPiAgICB7Cj4gPiA+ ID4gPiArCXN0cnVjdCBtdGtfc2VjdXJlX2hlYXAgKnNlY19oZWFwID0KPiA+ID4gPiA+IGRtYV9o ZWFwX2dldF9kcnZkYXRhKGhlYXApOwo+ID4gPiA+ID4gICAgCXN0cnVjdCBtdGtfc2VjdXJlX2hl YXBfYnVmZmVyICpzZWNfYnVmOwo+ID4gPiA+ID4gICAgCURFRklORV9ETUFfQlVGX0VYUE9SVF9J TkZPKGV4cF9pbmZvKTsKPiA+ID4gPiA+ICAgIAlzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmOwo+ID4g PiA+ID4gICAgCWludCByZXQ7Cj4gPiA+ID4gPiAgICAKPiA+ID4gPiA+ICsJLyoKPiA+ID4gPiA+ ICsJICogVEVFIHByb2JlIG1heSBiZSBsYXRlLiBJbml0aWFsaXNlIHRoZSBzZWN1cmUgc2Vzc2lv bgo+ID4gPiA+ID4gaW4gdGhlCj4gPiA+ID4gPiBmaXJzdAo+ID4gPiA+ID4gKwkgKiBhbGxvY2F0 aW5nIHNlY3VyZSBidWZmZXIuCj4gPiA+ID4gPiArCSAqLwo+ID4gPiA+ID4gKwlpZiAoIXNlY19o ZWFwLT5tZW1fc2Vzc2lvbikgewo+ID4gPiA+ID4gKwkJcmV0ID0gbXRrX2tyZWVfc2VjdXJlX3Nl c3Npb25faW5pdChzZWNfaGVhcCk7Cj4gPiA+ID4gPiArCQlpZiAocmV0KQo+ID4gPiA+ID4gKwkJ CXJldHVybiBFUlJfUFRSKHJldCk7Cj4gPiA+ID4gPiArCX0KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ ICAgIAlzZWNfYnVmID0ga3phbGxvYyhzaXplb2YoKnNlY19idWYpLCBHRlBfS0VSTkVMKTsKPiA+ ID4gPiA+ICAgIAlpZiAoIXNlY19idWYpCj4gPiA+ID4gPiAgICAJCXJldHVybiBFUlJfUFRSKC1F Tk9NRU0pOwo+ID4gPiA+IAo+ID4gPiA+IAo+ID4gCj4gPiAKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0 CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFk ZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK