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 X-Spam-Level: X-Spam-Status: No, score=-8.2 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY,URIBL_BLOCKED, USER_AGENT_SANE_2 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1BD81C433DF for ; Tue, 16 Jun 2020 09:14:46 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id B585920679 for ; Tue, 16 Jun 2020 09:14:45 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="mVW4cozc"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="ZeQ6t7PA" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B585920679 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Date:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Lpto8/KNYI6boAZOZO3BGqr1mM7lV27WdPOwaiUst/o=; b=mVW4cozcYjwzbG BICWpLpJgziSEgbH+2b+EEiRopbtPAU4zgKVEeMfieXrcAJPEPAeNUWZNTyNTAP0QIKipoxi+3oGR 16SaQoIabcgTRaUZbzqSqhhgp0kshOeSIGnyrkzpmowZR9WEqaoHwV3rCJIQds98h/TAPoWo5I5gx i1G6XrA0z97yW9EFnXWTYhOamsOlWOq1r+XrjNOhk5SCXeW2ENmvd/A4otrjC/obkbF4GyqX1IoIx GuTM33G/DUrLPCC6omLcqi3qi3zTd2iUjkRKGTObZTLI5cCz8kyQ1ONrpBoTBGvjjXAH0yDvobOBn glHyk27Jf/OXj7IDyTQA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jl7fx-0001nf-Uy; Tue, 16 Jun 2020 09:14:37 +0000 Received: from mailgw01.mediatek.com ([216.200.240.184]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jl7fv-0001mQ-5m for linux-mediatek@lists.infradead.org; Tue, 16 Jun 2020 09:14:36 +0000 X-UUID: ee9ed3241bb54967b3fe71ba747882c3-20200616 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=Iom0Ooo0ld9eO1CCp1yVYs+J5BlfrqPZC6D1eK2m31s=; b=ZeQ6t7PANxnwNglBoXj75fCoHVMKCmJpHauasOWs97vV+lrVwnEdWHty1+qrzKkp2cmz8mwOqi4H6yOKGA0KKNJbJbCfZRAxfKk4twVwhSJa3nwJvU4WAGqwENMYcygoZQNB+u6QMFgjtQ1sM94LnC21PCEyjLsM1a0FUNN4PWA=; X-UUID: ee9ed3241bb54967b3fe71ba747882c3-20200616 Received: from mtkcas66.mediatek.inc [(172.29.193.44)] by mailgw01.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLS) with ESMTP id 1719535930; Tue, 16 Jun 2020 01:14:33 -0800 Received: from MTKMBS01N1.mediatek.inc (172.21.101.68) by MTKMBS62DR.mediatek.inc (172.29.94.18) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 16 Jun 2020 02:04:30 -0700 Received: from MTKCAS06.mediatek.inc (172.21.101.30) by mtkmbs01n1.mediatek.inc (172.21.101.68) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 16 Jun 2020 17:04:27 +0800 Received: from [172.21.77.4] (172.21.77.4) by MTKCAS06.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Tue, 16 Jun 2020 17:04:29 +0800 Message-ID: <1592298269.25202.0.camel@mtksdaap41> Subject: Re: [PATCH 04/10] media: mtk-vcodec: venc: handle firmware version field From: Tiffany Lin To: Alexandre Courbot Date: Tue, 16 Jun 2020 17:04:29 +0800 In-Reply-To: <20200520082723.96136-5-acourbot@chromium.org> References: <20200520082723.96136-1-acourbot@chromium.org> <20200520082723.96136-5-acourbot@chromium.org> X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200616_021435_222427_92E0119B X-CRM114-Status: GOOD ( 21.18 ) X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Andrew-CT Chen , Maoguang Meng , Rui Wang , Yunfei Dong , linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org, Pi-Hsun Shih , linux-media@vger.kernel.org Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org On Wed, 2020-05-20 at 17:27 +0900, Alexandre Courbot wrote: > Firmwares for encoders newer than MT8173 will include an ABI version > number in their initialization ack message. Add the capacity to manage > it and make initialization fail if the firmware ABI is of a version that > we don't support. > > For MT8173, this ABI version field is reserved and thus undefined ; thus > ignore it on this chip. There should only be one firmware version available > for it anyway. > Acked-by: Tiffany Lin > Signed-off-by: Alexandre Courbot > --- > .../platform/mtk-vcodec/mtk_vcodec_drv.h | 8 ++++++ > .../platform/mtk-vcodec/mtk_vcodec_enc_drv.c | 1 + > .../media/platform/mtk-vcodec/venc_ipi_msg.h | 9 ++++--- > .../media/platform/mtk-vcodec/venc_vpu_if.c | 27 ++++++++++++++++--- > 4 files changed, 38 insertions(+), 7 deletions(-) > > diff --git a/drivers/media/platform/mtk-vcodec/mtk_vcodec_drv.h b/drivers/media/platform/mtk-vcodec/mtk_vcodec_drv.h > index 45c8adfc6a0c..e7b155e7432e 100644 > --- a/drivers/media/platform/mtk-vcodec/mtk_vcodec_drv.h > +++ b/drivers/media/platform/mtk-vcodec/mtk_vcodec_drv.h > @@ -300,13 +300,21 @@ struct mtk_vcodec_ctx { > > }; > > +enum mtk_chip { > + MTK_MT8173, > +}; > + > /** > * struct mtk_vcodec_enc_pdata - compatible data for each IC > * > + * @chip: chip this encoder is compatible with > + * > * @uses_ext: whether the encoder uses the extended firmware messaging format > * @has_lt_irq: whether the encoder uses the LT irq > */ > struct mtk_vcodec_enc_pdata { > + enum mtk_chip chip; > + > bool uses_ext; > bool has_lt_irq; > }; > diff --git a/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc_drv.c b/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc_drv.c > index 922bc8883811..c1365209263e 100644 > --- a/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc_drv.c > +++ b/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc_drv.c > @@ -378,6 +378,7 @@ static int mtk_vcodec_probe(struct platform_device *pdev) > } > > static const struct mtk_vcodec_enc_pdata mt8173_pdata = { > + .chip = MTK_MT8173, > .has_lt_irq = true, > }; > > diff --git a/drivers/media/platform/mtk-vcodec/venc_ipi_msg.h b/drivers/media/platform/mtk-vcodec/venc_ipi_msg.h > index 4cafbf92d9cd..31a3c76f7d0d 100644 > --- a/drivers/media/platform/mtk-vcodec/venc_ipi_msg.h > +++ b/drivers/media/platform/mtk-vcodec/venc_ipi_msg.h > @@ -131,16 +131,17 @@ struct venc_vpu_ipi_msg_common { > * @venc_inst: AP encoder instance (struct venc_vp8_inst/venc_h264_inst *) > * @vpu_inst_addr: VPU encoder instance addr > * (struct venc_vp8_vsi/venc_h264_vsi *) > - * @reserved: reserved for future use. vpu is running in 32bit. Without > - * this reserved field, if kernel run in 64bit. this struct size > - * will be different between kernel and vpu > + * @venc_abi_version: ABI version of the firmware. Kernel can use it to > + * ensure that it is compatible with the firmware. > + * For MT8173 the value of this field is undefined and > + * should not be used. > */ > struct venc_vpu_ipi_msg_init { > uint32_t msg_id; > uint32_t status; > uint64_t venc_inst; > uint32_t vpu_inst_addr; > - uint32_t reserved; > + uint32_t venc_abi_version; > }; > > /** > diff --git a/drivers/media/platform/mtk-vcodec/venc_vpu_if.c b/drivers/media/platform/mtk-vcodec/venc_vpu_if.c > index 6c77bf025172..472503701003 100644 > --- a/drivers/media/platform/mtk-vcodec/venc_vpu_if.c > +++ b/drivers/media/platform/mtk-vcodec/venc_vpu_if.c > @@ -4,6 +4,7 @@ > * Author: PoChun Lin > */ > > +#include "mtk_vcodec_drv.h" > #include "mtk_vcodec_fw.h" > #include "venc_ipi_msg.h" > #include "venc_vpu_if.h" > @@ -15,6 +16,23 @@ static void handle_enc_init_msg(struct venc_vpu_inst *vpu, const void *data) > vpu->inst_addr = msg->vpu_inst_addr; > vpu->vsi = mtk_vcodec_fw_map_dm_addr(vpu->ctx->dev->fw_handler, > msg->vpu_inst_addr); > + > + /* Firmware version field value is unspecified on MT8173. */ > + if (vpu->ctx->dev->venc_pdata->chip == MTK_MT8173) > + return; > + > + /* Check firmware version. */ > + mtk_vcodec_debug(vpu, "firmware version: 0x%x\n", > + msg->venc_abi_version); > + switch (msg->venc_abi_version) { > + case 1: > + break; > + default: > + mtk_vcodec_err(vpu, "unhandled firmware version 0x%x\n", > + msg->venc_abi_version); > + vpu->failure = 1; > + break; > + } > } > > static void handle_enc_encode_msg(struct venc_vpu_inst *vpu, const void *data) > @@ -35,6 +53,11 @@ static void vpu_enc_ipi_handler(void *data, unsigned int len, void *priv) > mtk_vcodec_debug(vpu, "msg_id %x inst %p status %d", > msg->msg_id, vpu, msg->status); > > + vpu->signaled = 1; > + vpu->failure = (msg->status != VENC_IPI_MSG_STATUS_OK); > + if (vpu->failure) > + goto failure; > + > switch (msg->msg_id) { > case VPU_IPIMSG_ENC_INIT_DONE: > handle_enc_init_msg(vpu, data); > @@ -51,9 +74,7 @@ static void vpu_enc_ipi_handler(void *data, unsigned int len, void *priv) > break; > } > > - vpu->signaled = 1; > - vpu->failure = (msg->status != VENC_IPI_MSG_STATUS_OK); > - > +failure: > mtk_vcodec_debug_leave(vpu); > } > _______________________________________________ Linux-mediatek mailing list Linux-mediatek@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-mediatek 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 X-Spam-Level: X-Spam-Status: No, score=-8.3 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY,URIBL_BLOCKED, USER_AGENT_SANE_2 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D7270C433E0 for ; Tue, 16 Jun 2020 09:04:40 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A8E112078E for ; Tue, 16 Jun 2020 09:04:40 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="ZeQ6t7PA" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727085AbgFPJEg (ORCPT ); Tue, 16 Jun 2020 05:04:36 -0400 Received: from mailgw01.mediatek.com ([210.61.82.183]:50942 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726112AbgFPJEg (ORCPT ); Tue, 16 Jun 2020 05:04:36 -0400 X-UUID: bb0bd5fbce544826bd2020199054ce09-20200616 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=Iom0Ooo0ld9eO1CCp1yVYs+J5BlfrqPZC6D1eK2m31s=; b=ZeQ6t7PANxnwNglBoXj75fCoHVMKCmJpHauasOWs97vV+lrVwnEdWHty1+qrzKkp2cmz8mwOqi4H6yOKGA0KKNJbJbCfZRAxfKk4twVwhSJa3nwJvU4WAGqwENMYcygoZQNB+u6QMFgjtQ1sM94LnC21PCEyjLsM1a0FUNN4PWA=; X-UUID: bb0bd5fbce544826bd2020199054ce09-20200616 Received: from mtkcas10.mediatek.inc [(172.21.101.39)] by mailgw01.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 190365037; Tue, 16 Jun 2020 17:04:31 +0800 Received: from MTKCAS06.mediatek.inc (172.21.101.30) by mtkmbs01n1.mediatek.inc (172.21.101.68) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 16 Jun 2020 17:04:27 +0800 Received: from [172.21.77.4] (172.21.77.4) by MTKCAS06.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Tue, 16 Jun 2020 17:04:29 +0800 Message-ID: <1592298269.25202.0.camel@mtksdaap41> Subject: Re: [PATCH 04/10] media: mtk-vcodec: venc: handle firmware version field From: Tiffany Lin To: Alexandre Courbot CC: Andrew-CT Chen , Rui Wang , Yunfei Dong , "Pi-Hsun Shih" , Maoguang Meng , , , Date: Tue, 16 Jun 2020 17:04:29 +0800 In-Reply-To: <20200520082723.96136-5-acourbot@chromium.org> References: <20200520082723.96136-1-acourbot@chromium.org> <20200520082723.96136-5-acourbot@chromium.org> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 X-MTK: N Content-Transfer-Encoding: base64 Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org T24gV2VkLCAyMDIwLTA1LTIwIGF0IDE3OjI3ICswOTAwLCBBbGV4YW5kcmUgQ291cmJvdCB3cm90 ZToNCj4gRmlybXdhcmVzIGZvciBlbmNvZGVycyBuZXdlciB0aGFuIE1UODE3MyB3aWxsIGluY2x1 ZGUgYW4gQUJJIHZlcnNpb24NCj4gbnVtYmVyIGluIHRoZWlyIGluaXRpYWxpemF0aW9uIGFjayBt ZXNzYWdlLiBBZGQgdGhlIGNhcGFjaXR5IHRvIG1hbmFnZQ0KPiBpdCBhbmQgbWFrZSBpbml0aWFs aXphdGlvbiBmYWlsIGlmIHRoZSBmaXJtd2FyZSBBQkkgaXMgb2YgYSB2ZXJzaW9uIHRoYXQNCj4g d2UgZG9uJ3Qgc3VwcG9ydC4NCj4gDQo+IEZvciBNVDgxNzMsIHRoaXMgQUJJIHZlcnNpb24gZmll bGQgaXMgcmVzZXJ2ZWQgYW5kIHRodXMgdW5kZWZpbmVkIDsgdGh1cw0KPiBpZ25vcmUgaXQgb24g dGhpcyBjaGlwLiBUaGVyZSBzaG91bGQgb25seSBiZSBvbmUgZmlybXdhcmUgdmVyc2lvbiBhdmFp bGFibGUNCj4gZm9yIGl0IGFueXdheS4NCj4gDQoNCkFja2VkLWJ5OiBUaWZmYW55IExpbiA8dGlm ZmFueS5saW5AbWVkaWF0ZWsuY29tPg0KDQo+IFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRyZSBDb3Vy Ym90IDxhY291cmJvdEBjaHJvbWl1bS5vcmc+DQo+IC0tLQ0KPiAgLi4uL3BsYXRmb3JtL210ay12 Y29kZWMvbXRrX3Zjb2RlY19kcnYuaCAgICAgIHwgIDggKysrKysrDQo+ICAuLi4vcGxhdGZvcm0v bXRrLXZjb2RlYy9tdGtfdmNvZGVjX2VuY19kcnYuYyAgfCAgMSArDQo+ICAuLi4vbWVkaWEvcGxh dGZvcm0vbXRrLXZjb2RlYy92ZW5jX2lwaV9tc2cuaCAgfCAgOSArKysrLS0tDQo+ICAuLi4vbWVk aWEvcGxhdGZvcm0vbXRrLXZjb2RlYy92ZW5jX3ZwdV9pZi5jICAgfCAyNyArKysrKysrKysrKysr KysrLS0tDQo+ICA0IGZpbGVzIGNoYW5nZWQsIDM4IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25z KC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVj L210a192Y29kZWNfZHJ2LmggYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvbXRr X3Zjb2RlY19kcnYuaA0KPiBpbmRleCA0NWM4YWRmYzZhMGMuLmU3YjE1NWU3NDMyZSAxMDA2NDQN Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL210a192Y29kZWNfZHJ2 LmgNCj4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL210a192Y29kZWNf ZHJ2LmgNCj4gQEAgLTMwMCwxMyArMzAwLDIxIEBAIHN0cnVjdCBtdGtfdmNvZGVjX2N0eCB7DQo+ ICANCj4gIH07DQo+ICANCj4gK2VudW0gbXRrX2NoaXAgew0KPiArCU1US19NVDgxNzMsDQo+ICt9 Ow0KPiArDQo+ICAvKioNCj4gICAqIHN0cnVjdCBtdGtfdmNvZGVjX2VuY19wZGF0YSAtIGNvbXBh dGlibGUgZGF0YSBmb3IgZWFjaCBJQw0KPiAgICoNCj4gKyAqIEBjaGlwOiBjaGlwIHRoaXMgZW5j b2RlciBpcyBjb21wYXRpYmxlIHdpdGgNCj4gKyAqDQo+ICAgKiBAdXNlc19leHQ6IHdoZXRoZXIg dGhlIGVuY29kZXIgdXNlcyB0aGUgZXh0ZW5kZWQgZmlybXdhcmUgbWVzc2FnaW5nIGZvcm1hdA0K PiAgICogQGhhc19sdF9pcnE6IHdoZXRoZXIgdGhlIGVuY29kZXIgdXNlcyB0aGUgTFQgaXJxDQo+ ICAgKi8NCj4gIHN0cnVjdCBtdGtfdmNvZGVjX2VuY19wZGF0YSB7DQo+ICsJZW51bSBtdGtfY2hp cCBjaGlwOw0KPiArDQo+ICAJYm9vbCB1c2VzX2V4dDsNCj4gIAlib29sIGhhc19sdF9pcnE7DQo+ ICB9Ow0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL210 a192Y29kZWNfZW5jX2Rydi5jIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL210 a192Y29kZWNfZW5jX2Rydi5jDQo+IGluZGV4IDkyMmJjODg4MzgxMS4uYzEzNjUyMDkyNjNlIDEw MDY0NA0KPiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvbXRrX3Zjb2Rl Y19lbmNfZHJ2LmMNCj4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL210 a192Y29kZWNfZW5jX2Rydi5jDQo+IEBAIC0zNzgsNiArMzc4LDcgQEAgc3RhdGljIGludCBtdGtf dmNvZGVjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ICB9DQo+ICANCj4g IHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX3Zjb2RlY19lbmNfcGRhdGEgbXQ4MTczX3BkYXRhID0g ew0KPiArCS5jaGlwID0gTVRLX01UODE3MywNCj4gIAkuaGFzX2x0X2lycSA9IHRydWUsDQo+ICB9 Ow0KPiAgDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMv dmVuY19pcGlfbXNnLmggYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvdmVuY19p cGlfbXNnLmgNCj4gaW5kZXggNGNhZmJmOTJkOWNkLi4zMWEzYzc2ZjdkMGQgMTAwNjQ0DQo+IC0t LSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy92ZW5jX2lwaV9tc2cuaA0KPiAr KysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvdmVuY19pcGlfbXNnLmgNCj4g QEAgLTEzMSwxNiArMTMxLDE3IEBAIHN0cnVjdCB2ZW5jX3ZwdV9pcGlfbXNnX2NvbW1vbiB7DQo+ ICAgKiBAdmVuY19pbnN0OglBUCBlbmNvZGVyIGluc3RhbmNlIChzdHJ1Y3QgdmVuY192cDhfaW5z dC92ZW5jX2gyNjRfaW5zdCAqKQ0KPiAgICogQHZwdV9pbnN0X2FkZHI6CVZQVSBlbmNvZGVyIGlu c3RhbmNlIGFkZHINCj4gICAqCQkJKHN0cnVjdCB2ZW5jX3ZwOF92c2kvdmVuY19oMjY0X3ZzaSAq KQ0KPiAtICogQHJlc2VydmVkOglyZXNlcnZlZCBmb3IgZnV0dXJlIHVzZS4gdnB1IGlzIHJ1bm5p bmcgaW4gMzJiaXQuIFdpdGhvdXQNCj4gLSAqCQl0aGlzIHJlc2VydmVkIGZpZWxkLCBpZiBrZXJu ZWwgcnVuIGluIDY0Yml0LiB0aGlzIHN0cnVjdCBzaXplDQo+IC0gKgkJd2lsbCBiZSBkaWZmZXJl bnQgYmV0d2VlbiBrZXJuZWwgYW5kIHZwdQ0KPiArICogQHZlbmNfYWJpX3ZlcnNpb246CUFCSSB2 ZXJzaW9uIG9mIHRoZSBmaXJtd2FyZS4gS2VybmVsIGNhbiB1c2UgaXQgdG8NCj4gKyAqCQkJZW5z dXJlIHRoYXQgaXQgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBmaXJtd2FyZS4NCj4gKyAqCQkJRm9y IE1UODE3MyB0aGUgdmFsdWUgb2YgdGhpcyBmaWVsZCBpcyB1bmRlZmluZWQgYW5kDQo+ICsgKgkJ CXNob3VsZCBub3QgYmUgdXNlZC4NCj4gICAqLw0KPiAgc3RydWN0IHZlbmNfdnB1X2lwaV9tc2df aW5pdCB7DQo+ICAJdWludDMyX3QgbXNnX2lkOw0KPiAgCXVpbnQzMl90IHN0YXR1czsNCj4gIAl1 aW50NjRfdCB2ZW5jX2luc3Q7DQo+ICAJdWludDMyX3QgdnB1X2luc3RfYWRkcjsNCj4gLQl1aW50 MzJfdCByZXNlcnZlZDsNCj4gKwl1aW50MzJfdCB2ZW5jX2FiaV92ZXJzaW9uOw0KPiAgfTsNCj4g IA0KPiAgLyoqDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29k ZWMvdmVuY192cHVfaWYuYyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy92ZW5j X3ZwdV9pZi5jDQo+IGluZGV4IDZjNzdiZjAyNTE3Mi4uNDcyNTAzNzAxMDAzIDEwMDY0NA0KPiAt LS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvdmVuY192cHVfaWYuYw0KPiAr KysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvdmVuY192cHVfaWYuYw0KPiBA QCAtNCw2ICs0LDcgQEANCj4gICAqIEF1dGhvcjogUG9DaHVuIExpbiA8cG9jaHVuLmxpbkBtZWRp YXRlay5jb20+DQo+ICAgKi8NCj4gIA0KPiArI2luY2x1ZGUgIm10a192Y29kZWNfZHJ2LmgiDQo+ ICAjaW5jbHVkZSAibXRrX3Zjb2RlY19mdy5oIg0KPiAgI2luY2x1ZGUgInZlbmNfaXBpX21zZy5o Ig0KPiAgI2luY2x1ZGUgInZlbmNfdnB1X2lmLmgiDQo+IEBAIC0xNSw2ICsxNiwyMyBAQCBzdGF0 aWMgdm9pZCBoYW5kbGVfZW5jX2luaXRfbXNnKHN0cnVjdCB2ZW5jX3ZwdV9pbnN0ICp2cHUsIGNv bnN0IHZvaWQgKmRhdGEpDQo+ICAJdnB1LT5pbnN0X2FkZHIgPSBtc2ctPnZwdV9pbnN0X2FkZHI7 DQo+ICAJdnB1LT52c2kgPSBtdGtfdmNvZGVjX2Z3X21hcF9kbV9hZGRyKHZwdS0+Y3R4LT5kZXYt PmZ3X2hhbmRsZXIsDQo+ICAJCQkJCSAgICAgbXNnLT52cHVfaW5zdF9hZGRyKTsNCj4gKw0KPiAr CS8qIEZpcm13YXJlIHZlcnNpb24gZmllbGQgdmFsdWUgaXMgdW5zcGVjaWZpZWQgb24gTVQ4MTcz LiAqLw0KPiArCWlmICh2cHUtPmN0eC0+ZGV2LT52ZW5jX3BkYXRhLT5jaGlwID09IE1US19NVDgx NzMpDQo+ICsJCXJldHVybjsNCj4gKw0KPiArCS8qIENoZWNrIGZpcm13YXJlIHZlcnNpb24uICov DQo+ICsJbXRrX3Zjb2RlY19kZWJ1Zyh2cHUsICJmaXJtd2FyZSB2ZXJzaW9uOiAweCV4XG4iLA0K PiArCQkJIG1zZy0+dmVuY19hYmlfdmVyc2lvbik7DQo+ICsJc3dpdGNoIChtc2ctPnZlbmNfYWJp X3ZlcnNpb24pIHsNCj4gKwljYXNlIDE6DQo+ICsJCWJyZWFrOw0KPiArCWRlZmF1bHQ6DQo+ICsJ CW10a192Y29kZWNfZXJyKHZwdSwgInVuaGFuZGxlZCBmaXJtd2FyZSB2ZXJzaW9uIDB4JXhcbiIs DQo+ICsJCQkgICAgICAgbXNnLT52ZW5jX2FiaV92ZXJzaW9uKTsNCj4gKwkJdnB1LT5mYWlsdXJl ID0gMTsNCj4gKwkJYnJlYWs7DQo+ICsJfQ0KPiAgfQ0KPiAgDQo+ICBzdGF0aWMgdm9pZCBoYW5k bGVfZW5jX2VuY29kZV9tc2coc3RydWN0IHZlbmNfdnB1X2luc3QgKnZwdSwgY29uc3Qgdm9pZCAq ZGF0YSkNCj4gQEAgLTM1LDYgKzUzLDExIEBAIHN0YXRpYyB2b2lkIHZwdV9lbmNfaXBpX2hhbmRs ZXIodm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IGxlbiwgdm9pZCAqcHJpdikNCj4gIAltdGtfdmNv ZGVjX2RlYnVnKHZwdSwgIm1zZ19pZCAleCBpbnN0ICVwIHN0YXR1cyAlZCIsDQo+ICAJCQkgbXNn LT5tc2dfaWQsIHZwdSwgbXNnLT5zdGF0dXMpOw0KPiAgDQo+ICsJdnB1LT5zaWduYWxlZCA9IDE7 DQo+ICsJdnB1LT5mYWlsdXJlID0gKG1zZy0+c3RhdHVzICE9IFZFTkNfSVBJX01TR19TVEFUVVNf T0spOw0KPiArCWlmICh2cHUtPmZhaWx1cmUpDQo+ICsJCWdvdG8gZmFpbHVyZTsNCj4gKw0KPiAg CXN3aXRjaCAobXNnLT5tc2dfaWQpIHsNCj4gIAljYXNlIFZQVV9JUElNU0dfRU5DX0lOSVRfRE9O RToNCj4gIAkJaGFuZGxlX2VuY19pbml0X21zZyh2cHUsIGRhdGEpOw0KPiBAQCAtNTEsOSArNzQs NyBAQCBzdGF0aWMgdm9pZCB2cHVfZW5jX2lwaV9oYW5kbGVyKHZvaWQgKmRhdGEsIHVuc2lnbmVk IGludCBsZW4sIHZvaWQgKnByaXYpDQo+ICAJCWJyZWFrOw0KPiAgCX0NCj4gIA0KPiAtCXZwdS0+ c2lnbmFsZWQgPSAxOw0KPiAtCXZwdS0+ZmFpbHVyZSA9IChtc2ctPnN0YXR1cyAhPSBWRU5DX0lQ SV9NU0dfU1RBVFVTX09LKTsNCj4gLQ0KPiArZmFpbHVyZToNCj4gIAltdGtfdmNvZGVjX2RlYnVn X2xlYXZlKHZwdSk7DQo+ICB9DQo+ICANCg0K