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 757D5C433EF for ; Fri, 28 Jan 2022 10:18:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243955AbiA1KSX (ORCPT ); Fri, 28 Jan 2022 05:18:23 -0500 Received: from mx1.tq-group.com ([93.104.207.81]:53459 "EHLO mx1.tq-group.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1347783AbiA1KSI (ORCPT ); Fri, 28 Jan 2022 05:18:08 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tq-group.com; i=@tq-group.com; q=dns/txt; s=key1; t=1643365088; x=1674901088; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=HD8VUoGAefvu5KRKNUGAfMOw0x7r1CIsl8hKJAxyTng=; b=Ba2VF7lyvY4uJ/l2a0tQbFMT/F+jhrEYtfJ8aqc3IPckU5uDGxPx3wcp qkrhpsfjc6gODuK+G439ceYZyYSrjRrH7feq6oBJT56W7vyQtWyqO/WgE OnXTybQw03ugijFCFjjqtImbOvdOWVDOFamlRxjK8JdmYhV/8jtnoLxnw Y6uXiWY3dxG6o3dztt/lJWfoTTCmZTh7T72gFivG4RRC4JmplBTTq+yoj AiPFJrhGwvGvjlGTwEEgPBPrniVVlH0p5cySLQH27qUYQa+jvUp3j3V1u ZTZ/QF+Okzpyn064P/vhhuw0IYgIXX8kJOuXtv3ysm4AcYM855XORWoM1 Q==; X-IronPort-AV: E=Sophos;i="5.88,323,1635199200"; d="scan'208";a="21770186" Received: from unknown (HELO tq-pgp-pr1.tq-net.de) ([192.168.6.15]) by mx1-pgp.tq-group.com with ESMTP; 28 Jan 2022 11:18:07 +0100 Received: from mx1.tq-group.com ([192.168.6.7]) by tq-pgp-pr1.tq-net.de (PGP Universal service); Fri, 28 Jan 2022 11:18:07 +0100 X-PGP-Universal: processed; by tq-pgp-pr1.tq-net.de on Fri, 28 Jan 2022 11:18:07 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tq-group.com; i=@tq-group.com; q=dns/txt; s=key1; t=1643365087; x=1674901087; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=HD8VUoGAefvu5KRKNUGAfMOw0x7r1CIsl8hKJAxyTng=; b=i+MXVzWZ57kn3vPQPfjb5IaBVnOFkaoW7cS15EnLBiayjF2J1J4eH40k 5ZTadmalivJvUsv5EvNWvNgG5dfK1pJ6MZJ+ySj2f6vNkbw49uQTzWjNf av2zgR6L12nPxMF7jcuZ8lsNWSWWLBsu00opm3bcHarJhuvoZrwqRQYgF Ld1+XK+LHexaOYU+nms02naVWI018HbB8Rrq4EUtk7KzhJMKjzIdZTqPe osDnbgTuGLAqf5ZNB9jN3vIVWKZ7zGruiAeMyRF1YWtbE9uv6XOd2LYb1 Bti1jChU5JVl/G2tFuycAT5XrOmRDYOx8Dw2uGUTDGBtLwi8O4pUFilPV w==; X-IronPort-AV: E=Sophos;i="5.88,323,1635199200"; d="scan'208";a="21770185" Received: from vtuxmail01.tq-net.de ([10.115.0.20]) by mx1.tq-group.com with ESMTP; 28 Jan 2022 11:18:07 +0100 Received: from steina-w.localnet (unknown [10.123.49.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by vtuxmail01.tq-net.de (Postfix) with ESMTPSA id DEF61280065; Fri, 28 Jan 2022 11:18:06 +0100 (CET) From: Alexander Stein To: Francesco Dolcini , Hongxing Zhu Cc: Lucas Stach , Lorenzo Pieralisi , Rob Herring , Krzysztof =?utf-8?B?V2lsY3p5xYRza2k=?= , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , dl-linux-imx , Jason Liu , linux-arm-kernel@lists.infradead.org, "linux-pci@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" , Bjorn Helgaas , Shawn Guo Subject: Re: (EXT) RE: [RFC PATCH] PCI: imx6: Handle the abort from user-space Date: Fri, 28 Jan 2022 11:18:04 +0100 Message-ID: <4621593.CQOukoFCf9@steina-w> Organization: TQ-Systems GmbH In-Reply-To: References: <20220128082920.591115-1-francesco.dolcini@toradex.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org Am Freitag, 28. Januar 2022, 10:25:11 CET schrieb Hongxing Zhu: > > -----Original Message----- > > From: Francesco Dolcini > > Sent: 2022=E5=B9=B41=E6=9C=8828=E6=97=A5 16:29 > > To: Hongxing Zhu ; Lucas Stach > > ; Lorenzo Pieralisi ; > > Rob Herring ; Krzysztof Wilczy=C5=84ski ; > > Sascha Hauer ; Pengutronix Kernel Team > > ; Fabio Estevam ; > > dl-linux-imx ; Jason Liu > > Cc: linux-pci@vger.kernel.org; linux-arm-kernel@lists.infradead.org; > > linux-kernel@vger.kernel.org; Bjorn Helgaas ; Shawn > > Guo ; Francesco Dolcini > > > > Subject: [RFC PATCH] PCI: imx6: Handle the abort from user-space > >=20 > > From: Jason Liu > >=20 > > The driver install one hook to handle the external abort, but issue is > > that if the abort introduced from user space code, the following code > > unsigned long instr =3D *(unsigned long *)pc; which will created another > > data-abort(page domain fault) if CONFIG_CPU_SW_DOMAIN_PAN. > >=20 > > The patch does not intent to use copy_from_user and then do the hack due > > to the security consideration. In fact, we can just return and report > > the external abort to user-space. > >=20 > > Signed-off-by: Jason Liu > > Reviewed-by: Richard Zhu > > Signed-off-by: Francesco Dolcini > > --- > > We have this patch from NXP downstream kernel [1] in our kernel branch > > [2] > > since a long time, to me it would make sense to upstream it. Any concer= n? > >=20 > > [1] > > https://eur01.safelinks.protection.outlook.com/?url=3Dhttps%3A%2F%2Fsou= rce. > > codeaurora.org%2Fexternal%2Fimxsupport%2Flinux-imx%2Fcommit%2F%3Fid > > %3D62dfb2fb953463dd1b6710567c9e174672a98f24&data=3D04%7C01%7 > > Chongxing.zhu%40nxp.com%7Ccbe193ab4c3e4ad11bcb08d9e2384a1f%7C68 > > 6ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C637789553659549198%7 > > CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBT > > iI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=3DMwhx8DFF7EDJdpqTsHT > > %2BBAGzhQadDOqcgJnVjeoi1yk%3D&reserved=3D0 > > [2] > > https://eur01.safelinks.protection.outlook.com/?url=3Dhttps%3A%2F%2Fgit= =2Etora > >=20 > > dex.com%2Fcgit%2Flinux-toradex.git%2Fcommit%2F%3Fid%3D2b42547cf659f > > 979be2defdff6a99f921b33d0f1&data=3D04%7C01%7Chongxing.zhu%40nx > > p.com%7Ccbe193ab4c3e4ad11bcb08d9e2384a1f%7C686ea1d3bc2b4c6fa92c > > d99c5c301635%7C0%7C0%7C637789553659549198%7CUnknown%7CTWFp > > bGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI > > 6Mn0%3D%7C3000&sdata=3DQEW1frh8WacCzniWo4ng1cy3Z1UZ9uMRFw > > GBKuIh7zE%3D&reserved=3D0 > > --- > >=20 > > drivers/pci/controller/dwc/pci-imx6.c | 12 ++++++++++-- > > 1 file changed, 10 insertions(+), 2 deletions(-) > >=20 > >=20 > > diff --git a/drivers/pci/controller/dwc/pci-imx6.c > > b/drivers/pci/controller/dwc/pci-imx6.c > > index 6974bd5aa116..6b178a29e253 100644 > > --- a/drivers/pci/controller/dwc/pci-imx6.c > > +++ b/drivers/pci/controller/dwc/pci-imx6.c > > @@ -27,6 +27,7 @@ > >=20 > > #include > > #include > > #include > >=20 > > +#include >=20 >=20 > [Richard Zhu] Thanks for your kindly help. > This header include is not required actually, please remove it. It should be instead, for using user_mode(). Best regards, Alexander > > #include > > #include > > #include > >=20 > > @@ -297,8 +298,15 @@ static int imx6q_pcie_abort_handler(unsigned long > > addr, > >=20 > > unsigned int fsr, struct pt_regs *regs) { > > =09 > > unsigned long pc =3D instruction_pointer(regs); > >=20 > > - unsigned long instr =3D *(unsigned long *)pc; > > - int reg =3D (instr >> 12) & 15; > > + unsigned long instr; > > + int reg; > > + > > + /* if the abort from user-space, just return and report it */ > > + if (user_mode(regs)) > > + return 1; > > + > > + instr =3D *(unsigned long *)pc; > > + reg =3D (instr >> 12) & 15; > >=20 > >=20 > > /* > > =09 > > * If the instruction being executed was a read, > >=20 > > -- > > 2.25.1 >=20 >=20 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 6B08EC433EF for ; Fri, 28 Jan 2022 10:25:03 +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:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Lq/fway/okdUCEhBagMaH0t6hy+ilqHi2sEmughl6qg=; b=dv/2Etih18crlJ kPbNDxoQqaTfY6NmJTx2HuyZu8dBT5tq/ZYJHcvNShmhTQ2Mak0Vh6qgY0UNXHUKVH43S5Ei6E8gA 5Rxpq7bVo0BY7zn5OFvR5mbEYi0jJGIAoaN27mRXUWEpij0J/th65OH5qsW+ySOrj0jEzvBV7h/DO kRTnX6ft2QLKPh3B4CZksJv0fKaXUR/b5Cov1xhcPoIzxA9vjs8BuVCxehrtGr6jdNdxA77OCDKvk Y323Ok5ET8KV+y4nhMV8c32FsFS981/ShDUIJDTHmDoEWAjCpsbe33BVe22YZZZ7ZmhKc7hZ3pXE8 GYFSmmqqgy1ndt/paOvQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nDOPU-001SHR-3o; Fri, 28 Jan 2022 10:23:17 +0000 Received: from mx1.tq-group.com ([93.104.207.81]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nDOKa-001QgD-LU for linux-arm-kernel@lists.infradead.org; Fri, 28 Jan 2022 10:18:15 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tq-group.com; i=@tq-group.com; q=dns/txt; s=key1; t=1643365092; x=1674901092; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=HD8VUoGAefvu5KRKNUGAfMOw0x7r1CIsl8hKJAxyTng=; b=QPx/nC+Z33xCyEBbA0zMRCciKV5r3yEs08mZZyFR9petIbBT69JBDTpP hbpKNz1xrjf2k86jgGtkUkyaSXxkwULRSddYrcQ5tKYj8i9aaWZiuZ1Hm c2bX8gKglbO6zMBPs9Jq6/P6yQrDATteOhTcCPKAUrGmG/eVbtlfCAhGU dJ7mwYdV/tW01BBrHpIxnq8yyq+xX5yJcUvV56/RZ4qgKF4Xq8ciMnNMO Uo49vBKcnzsEH5MYkk911g0ihw+hpL1xSVOqMhc64wdCGvOt204v5FrpW qCVAcKzryg2t7E/IXcIj0Fu8JshJxp36m+jEDaXkCzhfAcfYUMty1F+ba Q==; X-IronPort-AV: E=Sophos;i="5.88,323,1635199200"; d="scan'208";a="21770186" Received: from unknown (HELO tq-pgp-pr1.tq-net.de) ([192.168.6.15]) by mx1-pgp.tq-group.com with ESMTP; 28 Jan 2022 11:18:07 +0100 Received: from mx1.tq-group.com ([192.168.6.7]) by tq-pgp-pr1.tq-net.de (PGP Universal service); Fri, 28 Jan 2022 11:18:07 +0100 X-PGP-Universal: processed; by tq-pgp-pr1.tq-net.de on Fri, 28 Jan 2022 11:18:07 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tq-group.com; i=@tq-group.com; q=dns/txt; s=key1; t=1643365087; x=1674901087; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=HD8VUoGAefvu5KRKNUGAfMOw0x7r1CIsl8hKJAxyTng=; b=i+MXVzWZ57kn3vPQPfjb5IaBVnOFkaoW7cS15EnLBiayjF2J1J4eH40k 5ZTadmalivJvUsv5EvNWvNgG5dfK1pJ6MZJ+ySj2f6vNkbw49uQTzWjNf av2zgR6L12nPxMF7jcuZ8lsNWSWWLBsu00opm3bcHarJhuvoZrwqRQYgF Ld1+XK+LHexaOYU+nms02naVWI018HbB8Rrq4EUtk7KzhJMKjzIdZTqPe osDnbgTuGLAqf5ZNB9jN3vIVWKZ7zGruiAeMyRF1YWtbE9uv6XOd2LYb1 Bti1jChU5JVl/G2tFuycAT5XrOmRDYOx8Dw2uGUTDGBtLwi8O4pUFilPV w==; X-IronPort-AV: E=Sophos;i="5.88,323,1635199200"; d="scan'208";a="21770185" Received: from vtuxmail01.tq-net.de ([10.115.0.20]) by mx1.tq-group.com with ESMTP; 28 Jan 2022 11:18:07 +0100 Received: from steina-w.localnet (unknown [10.123.49.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by vtuxmail01.tq-net.de (Postfix) with ESMTPSA id DEF61280065; Fri, 28 Jan 2022 11:18:06 +0100 (CET) From: Alexander Stein To: Francesco Dolcini , Hongxing Zhu Cc: Lucas Stach , Lorenzo Pieralisi , Rob Herring , Krzysztof =?utf-8?B?V2lsY3p5xYRza2k=?= , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , dl-linux-imx , Jason Liu , linux-arm-kernel@lists.infradead.org, "linux-pci@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" , Bjorn Helgaas , Shawn Guo Subject: Re: (EXT) RE: [RFC PATCH] PCI: imx6: Handle the abort from user-space Date: Fri, 28 Jan 2022 11:18:04 +0100 Message-ID: <4621593.CQOukoFCf9@steina-w> Organization: TQ-Systems GmbH In-Reply-To: References: <20220128082920.591115-1-francesco.dolcini@toradex.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220128_021813_109439_2B84458B X-CRM114-Status: GOOD ( 31.52 ) 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 QW0gRnJlaXRhZywgMjguIEphbnVhciAyMDIyLCAxMDoyNToxMSBDRVQgc2NocmllYiBIb25neGlu ZyBaaHU6Cj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ID4gRnJvbTogRnJhbmNlc2Nv IERvbGNpbmkgPGZyYW5jZXNjby5kb2xjaW5pQHRvcmFkZXguY29tPgo+ID4gU2VudDogMjAyMuW5 tDHmnIgyOOaXpSAxNjoyOQo+ID4gVG86IEhvbmd4aW5nIFpodSA8aG9uZ3hpbmcuemh1QG54cC5j b20+OyBMdWNhcyBTdGFjaAo+ID4gPGwuc3RhY2hAcGVuZ3V0cm9uaXguZGU+OyBMb3JlbnpvIFBp ZXJhbGlzaSA8bG9yZW56by5waWVyYWxpc2lAYXJtLmNvbT47Cj4gPiBSb2IKIEhlcnJpbmcgPHJv YmhAa2VybmVsLm9yZz47IEtyenlzenRvZiBXaWxjennFhHNraSA8a3dAbGludXguY29tPjsKPiA+ IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT47IFBlbmd1dHJvbml4IEtlcm5l bCBUZWFtCj4gPiA8a2VybmVsQHBlbmd1dHJvbml4LmRlPjsgRmFiaW8gRXN0ZXZhbSA8ZmVzdGV2 YW1AZ21haWwuY29tPjsKPiA+IGRsLWxpbnV4LWlteCA8bGludXgtaW14QG54cC5jb20+OyBKYXNv biBMaXUgPGphc29uLmh1aS5saXVAbnhwLmNvbT4KPiA+IENjOiBsaW51eC1wY2lAdmdlci5rZXJu ZWwub3JnOyBsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmc7Cj4gPiBsaW51eC1r ZXJuZWxAdmdlci5rZXJuZWwub3JnOyBCam9ybiBIZWxnYWFzIDxiaGVsZ2Fhc0Bnb29nbGUuY29t PjsgU2hhd24KPiA+IEd1byA8c2hhd25ndW9Aa2VybmVsLm9yZz47IEZyYW5jZXNjbyBEb2xjaW5p Cj4gPiA8ZnJhbmNlc2NvLmRvbGNpbmlAdG9yYWRleC5jb20+Cj4gPiBTdWJqZWN0OiBbUkZDIFBB VENIXSBQQ0k6IGlteDY6IEhhbmRsZSB0aGUgYWJvcnQgZnJvbSB1c2VyLXNwYWNlCj4gPiAKPiA+ IEZyb206IEphc29uIExpdSA8amFzb24uaHVpLmxpdUBueHAuY29tPgo+ID4gCj4gPiBUaGUgZHJp dmVyIGluc3RhbGwgb25lIGhvb2sgdG8gaGFuZGxlIHRoZSBleHRlcm5hbCBhYm9ydCwgYnV0IGlz c3VlIGlzCj4gPiB0aGF0IGlmIHRoZQogYWJvcnQgaW50cm9kdWNlZCBmcm9tIHVzZXIgc3BhY2Ug Y29kZSwgdGhlIGZvbGxvd2luZyBjb2RlCj4gPiB1bnNpZ25lZCBsb25nIGluc3RyID0gKih1bnNp Z25lZCBsb25nICopcGM7IHdoaWNoIHdpbGwgY3JlYXRlZCBhbm90aGVyCj4gPiBkYXRhLWFib3J0 KHBhZ2UgZG9tYWluIGZhdWx0KSBpZiBDT05GSUdfQ1BVX1NXX0RPTUFJTl9QQU4uCj4gPiAKPiA+ IFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRlbnQgdG8gdXNlIGNvcHlfZnJvbV91c2VyIGFuZCB0aGVu IGRvIHRoZSBoYWNrIGR1ZQo+ID4gdG8KIHRoZSBzZWN1cml0eSBjb25zaWRlcmF0aW9uLiBJbiBm YWN0LCB3ZSBjYW4ganVzdCByZXR1cm4gYW5kIHJlcG9ydAo+ID4gdGhlIGV4dGVybmFsIGFib3J0 IHRvIHVzZXItc3BhY2UuCj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IEphc29uIExpdSA8amFzb24u aHVpLmxpdUBueHAuY29tPgo+ID4gUmV2aWV3ZWQtYnk6IFJpY2hhcmQgWmh1IDxob25neGluZy56 aHVAbnhwLmNvbT4KPiA+IFNpZ25lZC1vZmYtYnk6IEZyYW5jZXNjbyBEb2xjaW5pIDxmcmFuY2Vz Y28uZG9sY2luaUB0b3JhZGV4LmNvbT4KPiA+IC0tLQo+ID4gV2UgaGF2ZSB0aGlzIHBhdGNoIGZy b20gTlhQIGRvd25zdHJlYW0ga2VybmVsIFsxXSBpbiBvdXIga2VybmVsIGJyYW5jaAo+ID4gWzJd Cj4gPiBzaW5jZSBhIGxvbmcgdGltZSwgdG8gbWUgaXQgd291bGQgbWFrZSBzZW5zZSB0byB1cHN0 cmVhbSBpdC4gQW55IGNvbmNlcm4/Cj4gPiAKPiA+IFsxXQo+ID4gaHR0cHM6Ly9ldXIwMS5zYWZl bGlua3MucHJvdGVjdGlvbi5vdXRsb29rLmNvbS8/dXJsPWh0dHBzJTNBJTJGJTJGc291cmNlLgo+ ID4gY29kZWF1cm9yYS5vcmclMkZleHRlcm5hbCUyRmlteHN1cHBvcnQlMkZsaW51eC1pbXglMkZj b21taXQlMkYlM0ZpZAo+ID4gJTNENjJkZmIyZmI5NTM0NjNkZDFiNjcxMDU2N2M5ZTE3NDY3MmE5 OGYyNCZhbXA7ZGF0YT0wNCU3QzAxJTcKPiA+IENob25neGluZy56aHUlNDBueHAuY29tJTdDY2Jl MTkzYWI0YzNlNGFkMTFiY2IwOGQ5ZTIzODRhMWYlN0M2OAo+ID4gNmVhMWQzYmMyYjRjNmZhOTJj ZDk5YzVjMzAxNjM1JTdDMCU3QzAlN0M2Mzc3ODk1NTM2NTk1NDkxOTglNwo+ID4gQ1Vua25vd24l N0NUV0ZwYkdac2IzZDhleUpXSWpvaU1DNHdMakF3TURBaUxDSlFJam9pVjJsdU16SWlMQ0pCVAo+ ID4gaUk2SWsxaGFXd2lMQ0pYVkNJNk1uMCUzRCU3QzMwMDAmYW1wO3NkYXRhPU13aHg4REZGN0VE SmRwcVRzSFQKPiA+ICUyQkJBR3poUWFkRE9xY2dKblZqZW9pMXlrJTNEJmFtcDtyZXNlcnZlZD0w Cj4gPiBbMl0KPiA+IGh0dHBzOi8vZXVyMDEuc2FmZWxpbmtzLnByb3RlY3Rpb24ub3V0bG9vay5j b20vP3VybD1odHRwcyUzQSUyRiUyRmdpdC50b3JhCj4gPiAKPiA+IGRleC5jb20lMkZjZ2l0JTJG bGludXgtdG9yYWRleC5naXQlMkZjb21taXQlMkYlM0ZpZCUzRDJiNDI1NDdjZjY1OWYKPiA+IDk3 OWJlMmRlZmRmZjZhOTlmOTIxYjMzZDBmMSZhbXA7ZGF0YT0wNCU3QzAxJTdDaG9uZ3hpbmcuemh1 JTQwbngKPiA+IHAuY29tJTdDY2JlMTkzYWI0YzNlNGFkMTFiY2IwOGQ5ZTIzODRhMWYlN0M2ODZl YTFkM2JjMmI0YzZmYTkyYwo+ID4gZDk5YzVjMzAxNjM1JTdDMCU3QzAlN0M2Mzc3ODk1NTM2NTk1 NDkxOTglN0NVbmtub3duJTdDVFdGcAo+ID4gYkdac2IzZDhleUpXSWpvaU1DNHdMakF3TURBaUxD SlFJam9pVjJsdU16SWlMQ0pCVGlJNklrMWhhV3dpTENKWFZDSQo+ID4gNk1uMCUzRCU3QzMwMDAm YW1wO3NkYXRhPVFFVzFmcmg4V2FjQ3puaVdvNG5nMWN5M1oxVVo5dU1SRncKPiA+IEdCS3VJaDd6 RSUzRCZhbXA7cmVzZXJ2ZWQ9MAo+ID4gLS0tCj4gPiAKPiA+ICBkcml2ZXJzL3BjaS9jb250cm9s bGVyL2R3Yy9wY2ktaW14Ni5jIHwgMTIgKysrKysrKysrKy0tCj4gPiAgMSBmaWxlIGNoYW5nZWQs IDEwIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCj4gPiAKPiA+IAo+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaS1pbXg2LmMKPiA+IGIvZHJpdmVycy9w Y2kvY29udHJvbGxlci9kd2MvcGNpLWlteDYuYwo+ID4gaW5kZXggNjk3NGJkNWFhMTE2Li42YjE3 OGEyOWUyNTMgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2kt aW14Ni5jCj4gPiArKysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktaW14Ni5jCj4g PiBAQCAtMjcsNiArMjcsNyBAQAo+ID4gCj4gPiAgI2luY2x1ZGUgPGxpbnV4L3Jlc291cmNlLmg+ Cj4gPiAgI2luY2x1ZGUgPGxpbnV4L3NpZ25hbC5oPgo+ID4gICNpbmNsdWRlIDxsaW51eC90eXBl cy5oPgo+ID4gCj4gPiArI2luY2x1ZGUgPGxpbnV4L3VhY2Nlc3MuaD4KPiAKPiAKPiBbUmljaGFy ZCBaaHVdIFRoYW5rcyBmb3IgeW91ciBraW5kbHkgaGVscC4KPiBUaGlzIGhlYWRlciBpbmNsdWRl IGlzIG5vdCByZXF1aXJlZCBhY3R1YWxseSwgcGxlYXNlIHJlbW92ZSBpdC4KCkl0IHNob3VsZCBi ZSA8bGludXgvcHRyYWNlLmg+IGluc3RlYWQsIGZvciB1c2luZyB1c2VyX21vZGUoKS4KQmVzdCBy ZWdhcmRzLApBbGV4YW5kZXIKCgo+ID4gICNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KPiA+ ICAjaW5jbHVkZSA8bGludXgvcmVzZXQuaD4KPiA+ICAjaW5jbHVkZSA8bGludXgvcGh5L3BoeS5o Pgo+ID4gCj4gPiBAQCAtMjk3LDggKzI5OCwxNSBAQCBzdGF0aWMgaW50IGlteDZxX3BjaWVfYWJv cnRfaGFuZGxlcih1bnNpZ25lZCBsb25nCj4gPiBhZGRyLAo+ID4gCj4gPiAgCQl1bnNpZ25lZCBp bnQgZnNyLCBzdHJ1Y3QgcHRfcmVncyAqcmVncykgIHsKPiA+ICAJCj4gPiAgCXVuc2lnbmVkIGxv bmcgcGMgPSBpbnN0cnVjdGlvbl9wb2ludGVyKHJlZ3MpOwo+ID4gCj4gPiAtCXVuc2lnbmVkIGxv bmcgaW5zdHIgPSAqKHVuc2lnbmVkIGxvbmcgKilwYzsKPiA+IC0JaW50IHJlZyA9IChpbnN0ciA+ PiAxMikgJiAxNTsKPiA+ICsJdW5zaWduZWQgbG9uZyBpbnN0cjsKPiA+ICsJaW50IHJlZzsKPiA+ ICsKPiA+ICsJLyogaWYgdGhlIGFib3J0IGZyb20gdXNlci1zcGFjZSwganVzdCByZXR1cm4gYW5k IHJlcG9ydCBpdCAqLwo+ID4gKwlpZiAodXNlcl9tb2RlKHJlZ3MpKQo+ID4gKwkJcmV0dXJuIDE7 Cj4gPiArCj4gPiArCWluc3RyID0gKih1bnNpZ25lZCBsb25nICopcGM7Cj4gPiArCXJlZyA9IChp bnN0ciA+PiAxMikgJiAxNTsKPiA+IAo+ID4gCj4gPiAgCS8qCj4gPiAgCQo+ID4gIAkgKiBJZiB0 aGUgaW5zdHJ1Y3Rpb24gYmVpbmcgZXhlY3V0ZWQgd2FzIGEgcmVhZCwKPiA+IAo+ID4gLS0KPiA+ IDIuMjUuMQo+IAo+IAoKCgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxA bGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK