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 7C85ACDB474 for ; Fri, 20 Oct 2023 18:01:04 +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:In-Reply-To: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=dT/F7TiS8KCFfcdDRGS91c8/zQDZGleWtHGdiNRj3cw=; b=rJyZdliaE4o16G Owq4MBnZxV257jYRNmS0wGX+T02leLYXdEfJSKc2/Af+XD2mf7s0uVFoAWuhfppIozonLAOQZhBJM onWZgfk8rp+oWmUumjf3BxwcWKJZn6VORCMF/BnwoYnsLJK5iMMlLooO2Lj4SKxpIdfHTJxHrXh0q W1qWotn1qtOmxfsdeX/bewr6V6Xs3qLwy+Q59ranNv9XlFUIwLoc6VR+oSlKgFLPQPvVkksUHmAki hOLu8iVwUN5DfcQNwji43YmoX0xFUcZNJf7bM2CFhFRIaMBzCiBhKIvylEqQHdFxqtis58kZi5oTP 62BRMECdJPEawIe2bStw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qttnX-002oXK-1Y; Fri, 20 Oct 2023 18:00:35 +0000 Received: from mail-vi1eur05on2060c.outbound.protection.outlook.com ([2a01:111:f400:7d00::60c] helo=EUR05-VI1-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qttnS-002oWP-1e for linux-arm-kernel@lists.infradead.org; Fri, 20 Oct 2023 18:00:33 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=I9NWcNXPN7Q0kKpvsPKDCEJ5D1CxeDvp4SDXzDrxa+FKjAI5rJxBuoc6sosnhbaQYF4gmQNnF0t2Wpe4Fr2NDXPSl+ZDIKKnGLyFNKXntM+kzMm+HdauPRuUxT9YilYTZas14WRLkk1vH4J99sIReTwQZCiHr1IjsV7jQPTARMzD2fekfid8QtJ8E2s+3LBdHE3f88/A3bFKEmSueR5HdjyYm4iccKAko/8uPn19w5WuA1WEUi+e/OqLVbDHIr843jMA/pq+lirF/w9HiygzpwXdDIw0i0I33WKuqp2dFMtT1aOb7k8ct1D+vmhrmefKoTOkvH/0d+8mEjBiwY5Gpw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=vDAkyi+VlMeJxFIoletHt4xEHdGZAAM22wWAwFiTqd8=; b=mbUGCHIQMbThXZiTfr2rPTVtx4gZ0SgFoJp6Zz/Mrked8Rmx2grz62qgzYq4IF3sTixK4ISbDfw1s8BSzdpNougjSR6zQ512aZe9hIpCKSaBfrdPVJfEvt3G9/wF/xnOcRA/CMcoXjzaGwseOZPS/oEWAeREptCjiLO59GQ7G9BrLg0i2WUspBX2aBf1nqnSWO8C0DTiCWTTaiHDc1VH/lxBRtz1dY11W3hZXewhDVZ1K/ZcHHfOCxmoeqhOTW8YEz/7IC97zAkVFtGYpdk4+DU02Ct5awH3AgI3t9RAbB8l3H7aZ7tnoif/Pg4gL/zsM800gZtIA6oi6TXkqCtCaw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vDAkyi+VlMeJxFIoletHt4xEHdGZAAM22wWAwFiTqd8=; b=dk2eEK1qZaDi+MMS1Obqk8f7YJrfCO8TfgiJRktjgPcrtgaZaTDU/uReJ4u76dMphMltGxS/4ILpuUC8mLAJW14HBb0KczS9p5E4sM3Y6pXOnDogLUa6Vz+8NZd2My/uyy6Bnv5WwYokzHiOxtNybB4h/Z0Z3grwBBTTfGAbsHQ= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM6PR04MB4838.eurprd04.prod.outlook.com (2603:10a6:20b:4::16) by AS8PR04MB7816.eurprd04.prod.outlook.com (2603:10a6:20b:2a3::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.8; Fri, 20 Oct 2023 18:00:15 +0000 Received: from AM6PR04MB4838.eurprd04.prod.outlook.com ([fe80::1774:e25f:f99:aca2]) by AM6PR04MB4838.eurprd04.prod.outlook.com ([fe80::1774:e25f:f99:aca2%4]) with mapi id 15.20.6907.022; Fri, 20 Oct 2023 18:00:15 +0000 Date: Fri, 20 Oct 2023 14:00:06 -0400 From: Frank Li To: Manivannan Sadhasivam Cc: Manivannan Sadhasivam , aisheng.dong@nxp.com, bhelgaas@google.com, devicetree@vger.kernel.org, festevam@gmail.com, imx@lists.linux.dev, jdmason@kudzu.us, kernel@pengutronix.de, kishon@kernel.org, kw@linux.com, linux-arm-kernel@lists.infradead.org, linux-imx@nxp.com, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, lorenzo.pieralisi@arm.com, lpieralisi@kernel.org, maz@kernel.org, s.hauer@pengutronix.de, shawnguo@kernel.org, tglx@linutronix.de Subject: Re: [PATCH v2 1/5] PCI: endpoint: Add RC-to-EP doorbell support using platform MSI controllery Message-ID: References: <20230911220920.1817033-1-Frank.Li@nxp.com> <20230911220920.1817033-2-Frank.Li@nxp.com> <20231017183722.GB137137@thinkpad> <20231019150441.GA7254@thinkpad> <20231019172347.GC7254@thinkpad> <20231020171215.GA46191@thinkpad> Content-Disposition: inline In-Reply-To: <20231020171215.GA46191@thinkpad> X-ClientProxiedBy: SJ0PR13CA0144.namprd13.prod.outlook.com (2603:10b6:a03:2c6::29) To AM6PR04MB4838.eurprd04.prod.outlook.com (2603:10a6:20b:4::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM6PR04MB4838:EE_|AS8PR04MB7816:EE_ X-MS-Office365-Filtering-Correlation-Id: 5544cac5-58da-46ba-505c-08dbd19669d4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: gAFBgs4+NX7OVcHZ0BW873Ap3WSYNYEmNKIDPNuMJJoOEy/gzm7VQjGdyO+fOu7dJBfMUl35VQBmSzgSvX90vWX97KDvl3Ja7oRktR+bjovOom0NzNWx6Ozak5r2Z1uBdmdeik/kJ8+tGJHBdcdFlUl+KOW6tgTaxB2bomZ07OQ0BhFsR6xqPzpWKX53CPzb3BZ+Zci2egFhv5uooLEV2UJU5635TpoyHZLe4CS3+IHiPs2HJmMBCe2t9I9M5JYgKh7G6KOJIDooZb3HyqXa8jsFdYWCIV24YlCOMIPJSvlu+TY/gkY+DQQtczaNb6rooDLNoqkDilvUPEAz7Le51oEzFyGKKYv9NPc0M9CgdtUnoAYfrenmlToPL2SHdvz+dqpBbnbPZHCUVqFDrXWe4UORgAVshuQ8GsKwZ6DFZqxZ3geuBfaWD14wtR/SzzUms1rUnHsE9h1EiuafcnPYicCqCIKvwTZNrRRGFnq7bee7quSrAA7ocNDFRZcifZoOhuZmoZnwTbr5JcdDN+VGIPiHeu6Pa/H9A9Pjgakitus26W26dE46r7Nx4W4Xy3PImoOKZtxtkx8Wzl0gQN1kX9t4DYzW42omZM7C+FDgTTg= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM6PR04MB4838.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(7916004)(39860400002)(346002)(376002)(366004)(396003)(136003)(230922051799003)(451199024)(64100799003)(1800799009)(186009)(83380400001)(26005)(2906002)(7416002)(8676002)(30864003)(4326008)(38350700005)(5660300002)(8936002)(86362001)(33716001)(52116002)(6666004)(9686003)(6506007)(6486002)(966005)(41300700001)(66556008)(66946007)(316002)(6916009)(6512007)(66476007)(478600001)(38100700002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?dS9WNUJYaXlOL2dKYVhhK3p0WitaSnZ5Z0l4VGJjUmJrMGQrR0hiU2RTaW52?= =?utf-8?B?UGMzNm5GSHR2V0tzdCtHSUNndGpaRFg3ZTBMRDUvMDRKQWltc3pPUHNScDhr?= =?utf-8?B?VWVEV0htR3I1d0R2b0ZEVDRZNHIzSyt1OTk5dTZNVlJLMXFvT3Z5aC9BT0dq?= =?utf-8?B?aVA2ekVBa2hQelgyY1VPRzZYQWk4R20wWWJ6NGpPRjcvc1VHMjJ6SmVlc29U?= =?utf-8?B?Q1RhWkRRWU91OWx1ZnFGVlBlM1dVR1dZdmYzZTM4QituNG9ibVhqVU1WVDdM?= =?utf-8?B?RjM1aVlpbTdzT3RjRDUrd3ZBTW54UjlKWWdtSnFUaHRRS2pOeVlVTHFvQWJM?= =?utf-8?B?SWNhbCtOMUYveTd1aHNjWncwMTh5QjkzVStjZWxrbnc1OForSTlnYnFSTDZC?= =?utf-8?B?dzJlSTRpUG1ka0x5VXdrQ253Mk50enJsd1QzUEZRdTdtSm1qMXQwOEo4UTcv?= =?utf-8?B?WGl5RUJZSnNFNEdPVjkyWng1YjdZaEhBQlpQWHRLU0F1Y2orSFQwZnFsNXpk?= =?utf-8?B?blB3Yk5hc2g1WEZqTUVUbTFkSkRIaEZHakNwZ25HZzZBQ3ZnTHVkWHdja3Zr?= =?utf-8?B?dUNFdFY0M3BLKzFVWk5YY2laSFVvK3VKaEREdU14VmZjVnlQKytuRVF2ZnUy?= =?utf-8?B?cUxZcVFlMWh1YzFxNWpjVEdINjd4UVF5THR4ZlFuTEF4bHh3cVdTclIycUNr?= =?utf-8?B?dmowNTlLaU5aUys1VnZpV0JzM014UEhFRWNCY2dBemlkcGZpTEZqLy8raU01?= =?utf-8?B?ZnU3MHFvTWd3THJuNGx6dzFkVmV6bUUxMzVQYmVSWGZPSUJyL3JVRENFdTNR?= =?utf-8?B?QUtaUUJubW8rVk1zdnhMQ0Nyd1lrMWlVUFdxb2xYUmx0Nkc3bmtCTEl0czFw?= =?utf-8?B?aENMVkVmY1VFL2tQQ0FlNUJ4MnNlL05GdngvdUdldHJwVHJDNjM5Z2JzdHI4?= =?utf-8?B?OHNqUVJFMjZHc2xzLzdZOWkxVDlUNlphMnRTL3FUYTJKMGVEZG42UnhRRUJj?= =?utf-8?B?Z1Y0NXNzaFVWcGJYejkwNFlKTnZLVC82VzFieU1KSU1zNDJLa0I4WHpFbjRj?= =?utf-8?B?dGVGKzZzM2NRSlFJSEhUb3lVL3JGdXMrSTNLWHduRlhidzlXN0dGazdwclI5?= =?utf-8?B?ODhIOVFNbTc2UDlWUVRzZHJCYURBcXA4Tm03bVdZOTdzYlVpMGtpNy9ldHJT?= =?utf-8?B?RGZsVXpYSlUrTnU5QnlCSW05OFBWa1ZiZ0EyM2RoOHo2OUxzVG9JVStUQmQv?= =?utf-8?B?ZUNDRU94RVR3YVhZZEFTRUQ5T2dSWWdOMVhrZkFHYy9ncGFGYitkS01WKzg4?= =?utf-8?B?c2R1THVDWkVidlFjL3lwZUZCS3FZWFpyby94dGNQZ2J2dkZSUzFWaWRrdlpI?= =?utf-8?B?eG1rS2k2by9VZDlyL3A4U211LzRuMnF5N0Nhd3YxSW8vTVZUS05VSy9CSmpN?= =?utf-8?B?VklPcm1nNy9BeFpLMExkc09lL3hpVVFuS3R5b3UxY05nL0tkSnBxRnZPa0Vs?= =?utf-8?B?NXdSalkyR2RsN1VZWW5QaU9NcjFRdDRCZkRZZWJ4ZXRJRHZaZVdrTnI4Rita?= =?utf-8?B?OFNyZXR1K0tRUlVKaXl0eGhVWFRFaHBiYjkyVDVUY2w2VnMwZExTL0lUWWVN?= =?utf-8?B?aGEzM1FndEFTVnVnOWR6elBSSWg4NGpWWGFIVUdYbG1rbnJ6QytyK2syazRW?= =?utf-8?B?MjZjWkNVcFBuU3NEWkdtUkFVTTNrd0dTNW5rNFo4MWZSYVEyMFdINXRxWWlz?= =?utf-8?B?K1hEQ0NpbUV6bEZOeGl4R0hhM3dUZ1NFekFVOUFyS3U0clJTMVVwSlpkSGJk?= =?utf-8?B?Z2NQYjF4MEc4SzZjM3lDWWh4NGtzLytnVjNyOS9vSml0Q0lDOG44MVhGdVBI?= =?utf-8?B?c1VWbFdWVXJjZ3Q4UU5iSXE0NkQ5R1hMMXNOU2IweW9VeFVxK1VyNXB4emkv?= =?utf-8?B?RnVobWhVT3ZWRHIzVjNhaytiYzFzM1VZRm52REFhV2pubVdYdFArbXAyTEFM?= =?utf-8?B?YjhBelRRQzMyd2poRmRrQVlDQWNmU1JKazR6RFhPeDJUeFFZSkJpbjZuTkkr?= =?utf-8?B?SG9sNTc4M082ZEJERUhoQmMwVnMxK2hIbWZzTzRIbGRGSTJTQU1oR1JXSjNN?= =?utf-8?Q?CwaA=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5544cac5-58da-46ba-505c-08dbd19669d4 X-MS-Exchange-CrossTenant-AuthSource: AM6PR04MB4838.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Oct 2023 18:00:15.5439 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: CCrGt6kXEA1zviMXc2Wy0af6huv6mCrcnU3RaQsEtmXMzoClBp2MZX/GNMxPOD66/tK94aNkgHz3pYtYuJ+Zjg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB7816 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231020_110030_909706_CE052DCD X-CRM114-Status: GOOD ( 51.87 ) 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 T24gRnJpLCBPY3QgMjAsIDIwMjMgYXQgMTA6NDI6MTVQTSArMDUzMCwgTWFuaXZhbm5hbiBTYWRo YXNpdmFtIHdyb3RlOgo+IE9uIFRodSwgT2N0IDE5LCAyMDIzIGF0IDAyOjExOjIyUE0gLTA0MDAs IEZyYW5rIExpIHdyb3RlOgo+ID4gT24gVGh1LCBPY3QgMTksIDIwMjMgYXQgMTA6NTM6NDdQTSAr MDUzMCwgTWFuaXZhbm5hbiBTYWRoYXNpdmFtIHdyb3RlOgo+ID4gPiBPbiBUaHUsIE9jdCAxOSwg MjAyMyBhdCAxMjowMDoyMlBNIC0wNDAwLCBGcmFuayBMaSB3cm90ZToKPiA+ID4gPiBPbiBUaHUs IE9jdCAxOSwgMjAyMyBhdCAwODozNDo0MVBNICswNTMwLCBNYW5pdmFubmFuIFNhZGhhc2l2YW0g d3JvdGU6Cj4gPiA+ID4gPiBPbiBUdWUsIE9jdCAxNywgMjAyMyBhdCAwMjo1NTo1N1BNIC0wNDAw LCBGcmFuayBMaSB3cm90ZToKPiA+ID4gPiA+ID4gT24gV2VkLCBPY3QgMTgsIDIwMjMgYXQgMTI6 MDc6MjJBTSArMDUzMCwgTWFuaXZhbm5hbiBTYWRoYXNpdmFtIHdyb3RlOgo+ID4gPiA+ID4gPiA+ IE9uIE1vbiwgU2VwIDExLCAyMDIzIGF0IDA2OjA5OjE2UE0gLTA0MDAsIEZyYW5rIExpIHdyb3Rl Ogo+ID4gPiA+ID4gPiA+ID4gVGhpcyBjb21taXQgaW50cm9kdWNlcyBhIGNvbW1vbiBtZXRob2Qg Zm9yIHNlbmRpbmcgbWVzc2FnZXMgZnJvbSB0aGUgUm9vdAo+ID4gPiA+ID4gPiA+ID4gQ29tcGxl eCAoUkMpIHRvIHRoZSBFbmRwb2ludCAoRVApIGJ5IHV0aWxpemluZyB0aGUgcGxhdGZvcm0gTVNJ IGludGVycnVwdAo+ID4gPiA+ID4gPiA+ID4gY29udHJvbGxlciwgc3VjaCBhcyBBUk0gR0lDLCBh cyBhbiBFUCBkb29yYmVsbC4gTWFwcyB0aGUgbWVtb3J5IGFzc2lnbmVkCj4gPiA+ID4gPiA+ID4g PiBmb3IgdGhlIEJBUiByZWdpb24gYnkgdGhlIFBDSSBob3N0IHRvIHRoZSBtZXNzYWdlIGFkZHJl c3Mgb2YgdGhlIHBsYXRmb3JtCj4gPiA+ID4gPiA+ID4gPiBNU0kgaW50ZXJydXB0IGNvbnRyb2xs ZXIgaW4gdGhlIFBDSSBFUC4gQXMgYSByZXN1bHQsIHdoZW4gdGhlIFBDSSBSQyB3cml0ZXMKPiA+ ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiAiRG9vcmJlbGwgZmVhdHVyZSBpcyBpbXBsZW1lbnRl ZCBieSBtYXBwaW5nIHRoZSBFUCdzIE1TSSBpbnRlcnJ1cHQgY29udHJvbGxlcgo+ID4gPiA+ID4g PiA+IG1lc3NhZ2UgYWRkcmVzcyB0byBhIGRlZGljYXRlZCBCQVIgaW4gdGhlIEVQQyBjb3JlLiBJ dCBpcyB0aGUgcmVzcG9uc2liaWxpdHkKPiA+ID4gPiA+ID4gPiBvZiB0aGUgRVBGIGRyaXZlciB0 byBwYXNzIHRoZSBhY3R1YWwgbWVzc2FnZSBkYXRhIHRvIGJlIHdyaXR0ZW4gYnkgdGhlIGhvc3Qg dG8KPiA+ID4gPiA+ID4gPiB0aGUgZG9vcmJlbGwgQkFSIHJlZ2lvbiB0aHJvdWdoIGl0cyBvd24g bG9naWMuIgo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gdG8gdGhlIEJBUiByZWdpb24s IGl0IHRyaWdnZXJzIGFuIElSUSBhdCB0aGUgRVAuIFRoaXMgaW1wbGVtZW50YXRpb24gc2VydmVz Cj4gPiA+ID4gPiA+ID4gPiBhcyBhIGNvbW1vbiBtZXRob2QgZm9yIGFsbCBlbmRwb2ludCBmdW5j dGlvbiBkcml2ZXJzLgo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiBIb3dldmVyLCBp dCBjdXJyZW50bHkgc3VwcG9ydHMgb25seSBvbmUgRVAgcGh5c2ljYWwgZnVuY3Rpb24gZHVlIHRv Cj4gPiA+ID4gPiA+ID4gPiBsaW1pdGF0aW9ucyBpbiBBUk0gTVNJL0lNUyByZWFkaW5lc3MuCj4g PiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IEZyYW5rIExpIDxG cmFuay5MaUBueHAuY29tPgo+ID4gPiA+ID4gPiA+ID4gLS0tCj4gPiA+ID4gPiA+ID4gPiAgZHJp dmVycy9wY2kvZW5kcG9pbnQvcGNpLWVwYy1jb3JlLmMgfCAxOTIgKysrKysrKysrKysrKysrKysr KysrKysrKysrKwo+ID4gPiA+ID4gPiA+ID4gIGRyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGYt Y29yZS5jIHwgIDQ0ICsrKysrKysKPiA+ID4gPiA+ID4gPiA+ICBpbmNsdWRlL2xpbnV4L3BjaS1l cGMuaCAgICAgICAgICAgICB8ICAgNiArCj4gPiA+ID4gPiA+ID4gPiAgaW5jbHVkZS9saW51eC9w Y2ktZXBmLmggICAgICAgICAgICAgfCAgIDcgKwo+ID4gPiA+ID4gPiA+ID4gIDQgZmlsZXMgY2hh bmdlZCwgMjQ5IGluc2VydGlvbnMoKykKPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jIGIvZHJpdmVy cy9wY2kvZW5kcG9pbnQvcGNpLWVwYy1jb3JlLmMKPiA+ID4gPiA+ID4gPiA+IGluZGV4IDVhNGE4 YjBiZTYyNjIuLmQzMzZhOTljNmE5NGYgMTAwNjQ0Cj4gPiA+ID4gPiA+ID4gPiAtLS0gYS9kcml2 ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYwo+ID4gPiA+ID4gPiA+ID4gKysrIGIvZHJp dmVycy9wY2kvZW5kcG9pbnQvcGNpLWVwYy1jb3JlLmMKPiA+ID4gPiA+ID4gPiA+IEBAIC0xMCw2 ICsxMCw3IEBACj4gPiA+ID4gPiA+ID4gPiAgI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KPiA+ID4g PiA+ID4gPiA+ICAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gPiA+ID4gPiA+ID4gPiAgCj4g PiA+ID4gPiA+ID4gPiArI2luY2x1ZGUgPGxpbnV4L21zaS5oPgo+ID4gPiA+ID4gPiA+ID4gICNp bmNsdWRlIDxsaW51eC9wY2ktZXBjLmg+Cj4gPiA+ID4gPiA+ID4gPiAgI2luY2x1ZGUgPGxpbnV4 L3BjaS1lcGYuaD4KPiA+ID4gPiA+ID4gPiA+ICAjaW5jbHVkZSA8bGludXgvcGNpLWVwLWNmcy5o Pgo+ID4gPiA+ID4gPiA+ID4gQEAgLTc4Myw2ICs3ODQsMTk3IEBAIHZvaWQgcGNpX2VwY19ibWVf bm90aWZ5KHN0cnVjdCBwY2lfZXBjICplcGMpCj4gPiA+ID4gPiA+ID4gPiAgfQo+ID4gPiA+ID4g PiA+ID4gIEVYUE9SVF9TWU1CT0xfR1BMKHBjaV9lcGNfYm1lX25vdGlmeSk7Cj4gPiA+ID4gPiA+ ID4gPiAgCj4gPiA+ID4gPiA+ID4gPiArLyoqCj4gPiA+ID4gPiA+ID4gPiArICogcGNpX2VwY19h bGxvY19kb29yYmVsbCgpIC0gYWxsb2MgYW4gYWRkcmVzcyBzcGFjZSB0byBsZXQgUkMgdHJpZ2dl ciBFUCBzaWRlIElSUSBieSB3cml0ZSBkYXRhIHRvCj4gPiA+ID4gPiA+ID4gPiArICoJCQkgICAg ICB0aGUgc3BhY2UuCj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gIkFsbG9jYXRlIHBsYXRm b3JtIHNwZWNpZmljIGRvb3JiZWxsIElSUXMgdG8gYmUgdXNlZCBieSB0aGUgaG9zdCB0byB0cmln Z2VyCj4gPiA+ID4gPiA+ID4gZG9vcmJlbGxzIG9uIEVQLiIKPiA+ID4gPiA+ID4gPiAKPiA+ID4g PiA+ID4gPiA+ICsgKgo+ID4gPiA+ID4gPiA+ID4gKyAqIEBlcGM6IHRoZSBFUEMgZGV2aWNlIHRo YXQgbmVlZCBkb29yYmVsbCBhZGRyZXNzIGFuZCBkYXRhIGZyb20gUkMuCj4gPiA+ID4gPiA+ID4g Cj4gPiA+ID4gPiA+ID4gRVBDIGRldmljZSBmb3Igd2hpY2ggdGhlIGRvb3JiZWxsIG5lZWRzIHRv IGJlIGFsbG9jYXRlZAo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gKyAqIEBmdW5jX25v OiB0aGUgcGh5c2ljYWwgZW5kcG9pbnQgZnVuY3Rpb24gbnVtYmVyIGluIHRoZSBFUEMgZGV2aWNl Lgo+ID4gPiA+ID4gPiA+ID4gKyAqIEB2ZnVuY19ubzogdGhlIHZpcnR1YWwgZW5kcG9pbnQgZnVu Y3Rpb24gbnVtYmVyIGluIHRoZSBwaHlzaWNhbCBmdW5jdGlvbi4KPiA+ID4gPiA+ID4gPiA+ICsg KiBAbnVtX21zZ3M6IHRoZSB0b3RhbCBudW1iZXIgb2YgZG9vcmJlbGwgbWVzc2FnZXMKPiA+ID4g PiA+ID4gPiAKPiA+ID4gPiA+ID4gPiBzL251bV9tc2dzL251bV9kYgo+ID4gPiA+ID4gPiA+IAo+ ID4gPiA+ID4gPiA+ID4gKyAqCj4gPiA+ID4gPiA+ID4gPiArICogUmV0dXJuOiAwIHN1Y2Nlc3Ms IG90aGVyIGlzIGZhaWx1cmUKPiA+ID4gPiA+ID4gPiA+ICsgKi8KPiA+ID4gPiA+ID4gPiA+ICtp bnQgcGNpX2VwY19hbGxvY19kb29yYmVsbChzdHJ1Y3QgcGNpX2VwYyAqZXBjLCB1OCBmdW5jX25v LCB1OCB2ZnVuY19ubywgaW50IG51bV9tc2dzKQo+ID4gPiA+ID4gPiA+ID4gK3sKPiA+ID4gPiA+ ID4gPiA+ICsJaW50IHJldDsKPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ICsJaWYg KElTX0VSUl9PUl9OVUxMKGVwYykgfHwgZnVuY19ubyA+PSBlcGMtPm1heF9mdW5jdGlvbnMpCj4g PiA+ID4gPiA+ID4gPiArCQlyZXR1cm4gLUVJTlZBTDsKPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4g PiA+ID4gPiA+ICsJaWYgKHZmdW5jX25vID4gMCAmJiAoIWVwYy0+bWF4X3ZmcyB8fCB2ZnVuY19u byA+IGVwYy0+bWF4X3Zmc1tmdW5jX25vXSkpCj4gPiA+ID4gPiA+ID4gPiArCQlyZXR1cm4gLUVJ TlZBTDsKPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ICsJaWYgKCFlcGMtPm9wcy0+ YWxsb2NfZG9vcmJlbGwpCj4gPiA+ID4gPiA+ID4gPiArCQlyZXR1cm4gMDsKPiA+ID4gPiA+ID4g PiAKPiA+ID4gPiA+ID4gPiBZb3UgbWVudGlvbmVkIDAgaXMgYSBzdWNjZXNzLiBTbyBpZiB0aGVy ZSBpcyBubyBjYWxsYmFjaywgeW91IHdhbnQgdG8gcmV0dXJuCj4gPiA+ID4gPiA+ID4gc3VjY2Vz cz8KPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ICsJbXV0 ZXhfbG9jaygmZXBjLT5sb2NrKTsKPiA+ID4gPiA+ID4gPiA+ICsJcmV0ID0gZXBjLT5vcHMtPmFs bG9jX2Rvb3JiZWxsKGVwYywgZnVuY19ubywgdmZ1bmNfbm8sIG51bV9tc2dzKTsKPiA+ID4gPiA+ ID4gPiAKPiA+ID4gPiA+ID4gPiBXaHkgY2FuJ3QgeW91IGp1c3QgY2FsbCB0aGUgZ2VuZXJpYyBm dW5jdGlvbiBoZXJlIGFuZCBpbiBvdGhlciBwbGFjZXMgaW5zdGVhZCBvZgo+ID4gPiA+ID4gPiA+ IGltcGxlbWVudGluZyBjYWxsYmFja3M/IEkgZG8gbm90IHNlZSBhIG5lY2Vzc2l0eSBmb3IgRVBD IHNwZWNpZmljIGNhbGxiYWNrcy4gSWYKPiA+ID4gPiA+ID4gPiB0aGVyZSBpcyBvbmUsIHBsZWFz ZSBzcGVjaWZ5Lgo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gMS4gUmVmZXIgdjEgeW91ciBjb21t ZW50cy4KPiA+ID4gPiA+ID4gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvaW14LzIwMjMwOTA2MTQ1 MjI3LkdDNTkzMEB0aGlua3BhZC8KPiA+ID4gPiA+IAo+ID4gPiA+ID4gSSBkbyBub3QgZmluZCB3 aGVyZSBJIHN1Z2dlc3RlZCB0aGUgY2FsbGJhY2sgYXBwcm9hY2guCj4gPiA+ID4gCj4gPiA+ID4g CT4gPiA+IElmIHRoYXQsIEVhY2ggRVBGIGRyaXZlciBuZWVkIGRvIGR1cGxpY2F0ZSB3b3JrLiAK PiA+ID4gPiAJPiA+ID4gCj4gPiA+ID4gCT4gPiAKPiA+ID4gPiAJPiA+IFllcywgYW5kIHRoYXQn cyBob3cgaXQgc2hvdWxkIGJlLiBFUEYgY29yZSBoYXMgbm8gam9iIGluIHN1cHBseWluZyB0aGUg b2Zfbm9kZS4KPiA+ID4gPiAJPiA+IEl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgRVBG IGRyaXZlcnMgYXMgdGhleSBkZXBlbmQgb24gT0YgZm9yIHBsYXRmb3JtCj4gPiA+ID4gCT4gPiBz dXBwb3J0Lgo+ID4gPiA+IAk+IAo+ID4gPiA+IAk+IEVQRiBkcml2ZXIgc3RpbGwgbm90IGRlcGVu ZCBvbiBPRi4gc3VjaCBwY2ktZXBmLXRlc3QsIHdoaWNoIHdhcyBwcm9iZWQgYnkKPiA+ID4gPiAJ PiBjb25maWdmcy4KPiA+ID4gPiAJPiAKPiA+ID4gPiAKPiA+ID4gPiAJSG1tLCB5ZWFoLiBUaGVu IGl0IHNob3VsZCBiZSBwYXJ0IG9mIHRoZSBFUEMgZHJpdmVyLgo+ID4gPiA+IAo+ID4gPiA+IAlT b3JyeSBmb3IgdGhlIGNvbmZ1c2lvbi4KPiA+ID4gPiAKPiA+ID4gPiBIZXJlLCBhbGwgIkVQRiIg c2hvdWxkIGJlICJFUEMiLiBUaGUga2V5IHByb2JsZW0gaXMgb2Zfbm9kZS4gRVBDIGNvcmUgaGF2 ZQo+ID4gPiA+IG5vdCBvZl9ub2RlLCBFUEMgY29yZSdzIHBhcmVudCBkcml2ZXIgKGxpa2UgZHdj LWVwIGRyaXZlcikgaGF2ZSBvZl9ub2RlLiAKPiA+ID4gPiAKPiA+ID4gPiBwY2lfZXBjX2dlbmVy aWNfYWxsb2NfZG9vcmJlbGwoZGV2KSwgZGV2IGlzIHByb2JlZCBieSBwbGF0Zm9ybSBkcml2ZXIs IHN1Y2gKPiA+ID4gPiBhcyBkd2MtZXAsIHdoaWNoIGhhdmUgb2Zfbm9kZSwgIEVQQyBjb3JlIHdp bGwgY3JlYXRlIGNoaWxkIGRldmljZS4KPiA+ID4gPiAKPiA+ID4gPiBkd2MtZXAgZGV2aWNlCj4g PiA+ID4gIHwtIGVwYyBjb3JlIGRldmljZQo+ID4gPiA+IAo+ID4gPiA+IHdlIGNhbiBkaXJlY3Qg Y2FsbCBwY2lfZXBjX2dlbmVyaWNfYWxsb2NfZG9vcmJlbGwoZXBjLT5wYXJlbnQpIGhlcmUuCj4g PiA+ID4gCj4gPiA+ID4gSSBtYXkgbWlzcyB1bmRlcnN0YW5kIHdoYXQgeW91ciBtZWFucy4gSSB0 aGluayB5b3Ugd2FudCB0byBkd2MtZXAKPiA+ID4gPiAod2l0aCBvZl9ub2RlKSBoYW5kbGUgdGhl c2UgYWxsb2MgZnVuY3Rpb25zLiAKPiA+ID4gPiAKPiA+ID4gCj4gPiA+IE15IGNvbW1lbnQgd2Fz IHRvIGhhdmUganVzdCBvbmUgZnVuY3Rpb24gZGVmaW5pdGlvbi4gQnV0IGxvb2tpbmcgYXQgaXQg YWdhaW4sIEkKPiA+ID4gdGhpbmsgaXQgaXMgYmV0dGVyIHRvIG1vdmUgYWxsIHRoZSAoYWxsb2Ms IGZyZWUsIHdyaXRlX21zZykgZGVmaW5pdGlvbnMgdG8KPiA+ID4gZHdjLWVwLCBzaW5jZSB0aGUg Y29udGVudHMgb2YgdGhvc2UgZnVuY3Rpb25zIGFyZSBub3QgRVBDIGNvcmUgc3BlY2lmaWMuCj4g PiAKPiA+IFRoZXJlIGFyZSBzdGlsbCBwcm9ibGVtLiAoYWxsb2MsIGZyZWUsIHdyaXRlX21zZykg aXMgcXVpdGUgY29tbW9uIGZvciBhbGwKPiA+IGNvbnRyb2xsZXIgYW5kIHRoZSBzeXN0ZW0gd2l0 aCBNU0kuCj4gPiAKPiA+IElmIG1vdmUgdGhlc2UgaW50byBkd2MtZXAsICBjZG5zIG9yIG90aGVy IGNvbnRyb2xsZXIgaGF2ZSB0byBkdXBsaWNhdGUgCj4gPiB0aGVzZSBjb2Rlcy4KPiA+IAo+ID4g SWYgeW91IHRoaW5rIGl0IGlzIG5vdCBFUEMgY29yZSBzcGVjaWZpYywgaG93IGFib3V0IGNyZWF0 ZSBuZXcgaGVscCBmaWxlcz8KPiA+IAo+IAo+IEhtbSwgdGhhdCBzb3VuZHMgZ29vZCB0byBtZS4g SSB0aGluayB0aGUgYmVzdCBwbGFjZSB3b3VsZCBiZToKPiBkcml2ZXJzL3BjaS9lbmRwb2ludC9w Y2ktZXAtbXNpLmMKCkhvdyBhYm91dCBoZWFkZXIgZmlsZT8KCmludCBwY2lfZXBjX2dlbmVyaWNf YWxsb2NfZG9vcmJlbGwoc3RydWN0IHBjaV9lcGMgKmVwYywgdTggZnVuY19ubywgdTggdmZ1bmNf bm8sIGludCBudW1fbXNncyk7ICAgICAKdm9pZCBwY2lfZXBjX2dlbmVyaWNfZnJlZV9kb29yYmVs bChzdHJ1Y3QgcGNpX2VwYyAqZXBjLCB1OCBmdW5jX25vLCB1OCB2ZnVuY19ubyk7CgpJcyBpdCBp biBpbmNsdWRlL2xpbnV4L3BjaS1lcGMuaCwganVzdCAyIGxpbmVzLgoKRnJhbmsKPiAKPiBSZWFz b24gaXMsIHdlIGNhbm5vdCBoYXZlIHRoaXMgZ2VuZXJpYyBjb2RlIHVuZGVyIGRyaXZlcnMvcGNp L2NvbnRyb2xsZXIvIGFzIGl0Cj4gaXMgbm90IGEgc3RhbmRhbG9uZSBQQ0kgY29udHJvbGxlciBi dXQgYSBwbGF0Zm9ybSBNU0kgY29udHJvbGxlci4gU28gaGF2aW5nIGl0Cj4gdW5kZXIgcGNpL2Vu ZHBvaW50LyBtYWtlcyBtdWNoIHNlbnNlIHRvIG1lLgo+IAo+IEFuZCB0aGlzIGlzIG5vdCBzcGVj aWZpYyB0byBFUEYgZHJpdmVycyBhcyB3ZWxsLCBzbyB3ZSBjYW5ub3QgaGF2ZSBpdCB1bmRlcgo+ IHBjaS9lbmRwb2ludC9mdW5jdGlvbnMvLgo+IAo+IC0gTWFuaQo+IAo+ID4gRnJhbmsKPiA+IAo+ ID4gPiAKPiA+ID4gSW4gdGhlIEVQQyBjb3JlLCB5b3UgY2FuIHN0aWxsIGhhdmUgdGhlIGNhbGxi YWNrcyBzcGVjaWZpYyB0byBlYWNoIEVQQy4gVGhpcwo+ID4gPiBhbHNvIHNvbHZlcyB5b3VyIG9m X25vZGUgcHJvYmxlbS4KPiA+ID4gCj4gPiA+IC0gTWFuaQo+ID4gPiAKPiA+ID4gPiA+IAo+ID4g PiA+ID4gPiAyLiBNYXliZSBzb21lIGVwIGNvbnRyb2xsZXIgaGF2ZSBidWlsdC1pbiBkb29yYmVs bCBzdXBwb3J0LiBXcml0ZSB0byBzb21lCj4gPiA+ID4gPiA+IGFkZHJlc3MgdG8gdHJpZ2dlciBk b29yYmVsbCBpcnEuCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gCj4gPiA+ID4gPiBXZSB3aWxsIGhh bmRsZSBpdCB3aGVuZXZlciBzdWNoIEVQIGNvbnRyb2xsZXJzIGFycml2ZS4gVW50aWwgdGhlbiwg bGV0J3Mga2VlcCBpdAo+ID4gPiA+ID4gc2ltcGxlLgo+ID4gPiA+ID4gCj4gPiA+ID4gPiAtIE1h bmkKPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiBGcmFuawo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4g PiAKPiA+ID4gPiA+ID4gPiA+ICsJbXV0ZXhfdW5sb2NrKCZlcGMtPmxvY2spOwo+ID4gPiA+ID4g PiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gKwlyZXR1cm4gcmV0Owo+ID4gPiA+ID4gPiA+ID4gK30K PiA+ID4gPiA+ID4gPiA+ICtFWFBPUlRfU1lNQk9MX0dQTChwY2lfZXBjX2FsbG9jX2Rvb3JiZWxs KTsKPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ICsvKioKPiA+ID4gPiA+ID4gPiA+ ICsgKiBwY2lfZXBjX2ZyZWVfZG9vcmJlbGwoKSAtIGZyZWUgcmVzb3VyY2UgYWxsb2NhdGVkIGJ5 IHBjaV9lcGNfYWxsb2NfZG9vcmJlbGwoKQo+ID4gPiA+ID4gPiA+ID4gKyAqCj4gPiA+ID4gPiA+ ID4gPiArICogQGVwYzogdGhlIEVQQyBkZXZpY2UgdGhhdCBuZWVkIGRvb3JiZWxsIGFkZHJlc3Mg YW5kIGRhdGEgZnJvbSBSQy4KPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiBTYW1lIGFzIGFi b3ZlLgo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gKyAqIEBmdW5jX25vOiB0aGUgcGh5 c2ljYWwgZW5kcG9pbnQgZnVuY3Rpb24gbnVtYmVyIGluIHRoZSBFUEMgZGV2aWNlLgo+ID4gPiA+ ID4gPiA+ID4gKyAqIEB2ZnVuY19ubzogdGhlIHZpcnR1YWwgZW5kcG9pbnQgZnVuY3Rpb24gbnVt YmVyIGluIHRoZSBwaHlzaWNhbCBmdW5jdGlvbi4KPiA+ID4gPiA+ID4gPiA+ICsgKgo+ID4gPiA+ ID4gPiA+ID4gKyAqIFJldHVybjogMCBzdWNjZXNzLCBvdGhlciBpcyBmYWlsdXJlCj4gPiA+ID4g PiA+ID4gPiArICovCj4gPiA+ID4gPiA+ID4gPiArdm9pZCBwY2lfZXBjX2ZyZWVfZG9vcmJlbGwo c3RydWN0IHBjaV9lcGMgKmVwYywgdTggZnVuY19ubywgdTggdmZ1bmNfbm8pCj4gPiA+ID4gPiA+ ID4gPiArewo+ID4gPiA+ID4gPiA+ID4gKwlpZiAoSVNfRVJSX09SX05VTEwoZXBjKSB8fCBmdW5j X25vID49IGVwYy0+bWF4X2Z1bmN0aW9ucykKPiA+ID4gPiA+ID4gPiA+ICsJCXJldHVybjsKPiA+ ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ICsJaWYgKHZmdW5jX25vID4gMCAmJiAoIWVw Yy0+bWF4X3ZmcyB8fCB2ZnVuY19ubyA+IGVwYy0+bWF4X3Zmc1tmdW5jX25vXSkpCj4gPiA+ID4g PiA+ID4gPiArCQlyZXR1cm47Cj4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiArCWlm ICghZXBjLT5vcHMtPmZyZWVfZG9vcmJlbGwpCj4gPiA+ID4gPiA+ID4gPiArCQlyZXR1cm47Cj4g PiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiArCW11dGV4X2xvY2soJmVwYy0+bG9jayk7 Cj4gPiA+ID4gPiA+ID4gPiArCWVwYy0+b3BzLT5mcmVlX2Rvb3JiZWxsKGVwYywgZnVuY19ubywg dmZ1bmNfbm8pOwo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+IFNhbWUgYXMgc3VnZ2VzdGVk IGFib3ZlLgo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gKwltdXRleF91bmxvY2soJmVw Yy0+bG9jayk7Cj4gPiA+ID4gPiA+ID4gPiArfQo+ID4gPiA+ID4gPiA+ID4gK0VYUE9SVF9TWU1C T0xfR1BMKHBjaV9lcGNfZnJlZV9kb29yYmVsbCk7Cj4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4g PiA+ID4gPiArc3RhdGljIGlycXJldHVybl90IHBjaV9lcGZfZ2VuZXJpY19kb29yYmVsbF9oYW5k bGVyKGludCBpcnEsIHZvaWQgKmRhdGEpCj4gPiA+ID4gPiA+ID4gPiArewo+ID4gPiA+ID4gPiA+ ID4gKwlzdHJ1Y3QgcGNpX2VwZiAqZXBmID0gZGF0YTsKPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4g PiA+ID4gPiA+ICsJaWYgKGVwZi0+ZXZlbnRfb3BzICYmIGVwZi0+ZXZlbnRfb3BzLT5kb29yYmVs bCkKPiA+ID4gPiA+ID4gPiA+ICsJCWVwZi0+ZXZlbnRfb3BzLT5kb29yYmVsbChlcGYsIGlycSAt IGVwZi0+dmlycV9iYXNlKTsKPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiBTYW1lIGFzIHN1 Z2dlc3RlZCBhYm92ZS4KPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ ID4gPiA+ICsJcmV0dXJuIElSUV9IQU5ETEVEOwo+ID4gPiA+ID4gPiA+ID4gK30KPiA+ID4gPiA+ ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ICtzdGF0aWMgdm9pZCBwY2lfZXBjX2dlbmVyaWNfd3Jp dGVfbXNpX21zZyhzdHJ1Y3QgbXNpX2Rlc2MgKmRlc2MsIHN0cnVjdCBtc2lfbXNnICptc2cpCj4g PiA+ID4gPiA+ID4gPiArewo+ID4gPiA+ID4gPiA+ID4gKwlzdHJ1Y3QgcGNpX2VwYyAqZXBjID0g TlVMTDsKPiA+ID4gPiA+ID4gPiA+ICsJc3RydWN0IGNsYXNzX2Rldl9pdGVyIGl0ZXI7Cj4gPiA+ ID4gPiA+ID4gPiArCXN0cnVjdCBwY2lfZXBmICplcGY7Cj4gPiA+ID4gPiA+ID4gPiArCXN0cnVj dCBkZXZpY2UgKmRldjsKPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ICsJY2xhc3Nf ZGV2X2l0ZXJfaW5pdCgmaXRlciwgcGNpX2VwY19jbGFzcywgTlVMTCwgTlVMTCk7Cj4gPiA+ID4g PiA+ID4gPiArCXdoaWxlICgoZGV2ID0gY2xhc3NfZGV2X2l0ZXJfbmV4dCgmaXRlcikpKSB7Cj4g PiA+ID4gPiA+ID4gPiArCQlpZiAoZGV2LT5wYXJlbnQgIT0gZGVzYy0+ZGV2KQo+ID4gPiA+ID4g PiA+ID4gKwkJCWNvbnRpbnVlOwo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gKwkJ ZXBjID0gdG9fcGNpX2VwYyhkZXYpOwo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4g KwkJY2xhc3NfZGV2X2l0ZXJfZXhpdCgmaXRlcik7Cj4gPiA+ID4gPiA+ID4gPiArCQlicmVhazsK PiA+ID4gPiA+ID4gPiA+ICsJfQo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gKwlp ZiAoIWVwYykKPiA+ID4gPiA+ID4gPiA+ICsJCXJldHVybjsKPiA+ID4gPiA+ID4gPiA+ICsKPiA+ ID4gPiA+ID4gPiA+ICsJLyogT25seSBzdXBwb3J0IG9uZSBFUEYgZm9yIGRvb3JiZWxsICovCj4g PiA+ID4gPiA+ID4gPiArCWVwZiA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbCgmZXBjLT5wY2lf ZXBmLCBzdHJ1Y3QgcGNpX2VwZiwgbGlzdCk7Cj4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ ID4gCj4gPiA+ID4gPiA+ID4gTm8gbmVlZCBvZiB0aGlzIG5ld2xpbmUKPiA+ID4gPiA+ID4gPiAK PiA+ID4gPiA+ID4gPiA+ICsJaWYgKCFlcGYpCj4gPiA+ID4gPiA+ID4gPiArCQlyZXR1cm47Cj4g PiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiArCWlmIChlcGYtPm1zZyAmJiBkZXNjLT5t c2lfaW5kZXggPCBlcGYtPm51bV9tc2dzKQo+ID4gPiA+ID4gPiA+ID4gKwkJZXBmLT5tc2dbZGVz Yy0+bXNpX2luZGV4XSA9ICptc2c7Cj4gPiA+ID4gPiA+ID4gPiArfQo+ID4gPiA+ID4gPiA+ID4g Kwo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+IFJlbW92ZSBl eHRyYSBuZXdsaW5lCj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiArLyoqCj4gPiA+ID4g PiA+ID4gPiArICogcGNpX2VwY19nZW5lcmljX2FsbG9jX2Rvb3JiZWxsKCkgLSBDb21tb24gaGVs cCBmdW5jdGlvbi4gQWxsb2NhdGUgYWRkcmVzcyBzcGFjZSBmcm9tIE1TSQo+ID4gPiA+ID4gPiA+ ID4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlcgo+ID4g PiA+ID4gPiA+ID4gKyAqCj4gPiA+ID4gPiA+ID4gPiArICogQGVwYzogdGhlIEVQQyBkZXZpY2Ug dGhhdCBuZWVkIGRvb3JiZWxsIGFkZHJlc3MgYW5kIGRhdGEgZnJvbSBSQy4KPiA+ID4gPiA+ID4g PiA+ICsgKiBAZnVuY19ubzogdGhlIHBoeXNpY2FsIGVuZHBvaW50IGZ1bmN0aW9uIG51bWJlciBp biB0aGUgRVBDIGRldmljZS4KPiA+ID4gPiA+ID4gPiA+ICsgKiBAdmZ1bmNfbm86IHRoZSB2aXJ0 dWFsIGVuZHBvaW50IGZ1bmN0aW9uIG51bWJlciBpbiB0aGUgcGh5c2ljYWwgZnVuY3Rpb24uCj4g PiA+ID4gPiA+ID4gPiArICogQG51bV9tc2dzOiB0aGUgdG90YWwgbnVtYmVyIG9mIGRvb3JiZWxs IG1lc3NhZ2VzCj4gPiA+ID4gPiA+ID4gPiArICoKPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4g PiBTYW1lIGNvbW1lbnQgYXMgZm9yIHBjaV9lcGNfYWxsb2NfZG9vcmJlbGwoKQo+ID4gPiA+ID4g PiA+IAo+ID4gPiA+ID4gPiA+ID4gKyAqIFJlbWFyazogdXNlIHRoaXMgZnVuY3Rpb24gb25seSBp ZiBFUEMgZHJpdmVyIGp1c3QgcmVnaXN0ZXIgb25lIEVQQyBkZXZpY2UuCj4gPiA+ID4gPiA+ID4g PiArICoKPiA+ID4gPiA+ID4gPiA+ICsgKiBSZXR1cm46IDAgc3VjY2Vzcywgb3RoZXIgaXMgZmFp bHVyZQo+ID4gPiA+ID4gPiA+ID4gKyAqLwo+ID4gPiA+ID4gPiA+ID4gK2ludCBwY2lfZXBjX2dl bmVyaWNfYWxsb2NfZG9vcmJlbGwoc3RydWN0IHBjaV9lcGMgKmVwYywgdTggZnVuY19ubywgdTgg dmZ1bmNfbm8sIGludCBudW1fbXNncykKPiA+ID4gPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiA+ID4g PiArCXN0cnVjdCBwY2lfZXBmICplcGY7Cj4gPiA+ID4gPiA+ID4gPiArCXN0cnVjdCBkZXZpY2Ug KmRldjsKPiA+ID4gPiA+ID4gPiA+ICsJaW50IHZpcnEsIGxhc3Q7Cj4gPiA+ID4gPiA+ID4gPiAr CWludCByZXQ7Cj4gPiA+ID4gPiA+ID4gPiArCWludCBpOwo+ID4gPiA+ID4gPiA+ID4gKwo+ID4g PiA+ID4gPiA+ID4gKwlpZiAoSVNfRVJSX09SX05VTEwoZXBjKSkKPiA+ID4gPiA+ID4gPiA+ICsJ CXJldHVybiAtRUlOVkFMOwo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gKwkvKiBD dXJyZW50bHkgb25seSBzdXBwb3J0IG9uZSBmdW5jIGFuZCBvbmUgdmZ1bmMgZm9yIGRvb3JiZWxs ICovCj4gPiA+ID4gPiA+ID4gPiArCWlmIChmdW5jX25vIHx8IHZmdW5jX25vKQo+ID4gPiA+ID4g PiA+ID4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4g PiArCWVwZiA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbCgmZXBjLT5wY2lfZXBmLCBzdHJ1Y3Qg cGNpX2VwZiwgbGlzdCk7Cj4gPiA+ID4gPiA+ID4gPiArCWlmICghZXBmKQo+ID4gPiA+ID4gPiA+ ID4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiAr CWRldiA9IGVwYy0+ZGV2LnBhcmVudDsKPiA+ID4gPiA+ID4gPiA+ICsJcmV0ID0gcGxhdGZvcm1f bXNpX2RvbWFpbl9hbGxvY19pcnFzKGRldiwgbnVtX21zZ3MsIHBjaV9lcGNfZ2VuZXJpY193cml0 ZV9tc2lfbXNnKTsKPiA+ID4gPiA+ID4gPiA+ICsJaWYgKHJldCkgewo+ID4gPiA+ID4gPiA+ID4g KwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gYWxsb2NhdGUgTVNJXG4iKTsKPiA+ID4gPiA+ID4g PiA+ICsJCXJldHVybiAtRU5PTUVNOwo+ID4gPiA+ID4gPiA+ID4gKwl9Cj4gPiA+ID4gPiA+ID4g PiArCj4gPiA+ID4gPiA+ID4gPiArCWxhc3QgPSAtMTsKPiA+ID4gPiA+ID4gPiA+ICsJZm9yIChp ID0gMDsgaSA8IG51bV9tc2dzOyBpKyspIHsKPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiBZ b3Ugc2hvdWxkIGl0ZXJhdGUgb3ZlciBtc2lfZGVzYyBhcyBiZWxvdzoKPiA+ID4gPiA+ID4gPiAK PiA+ID4gPiA+ID4gPiAgICAgICAgIG1zaV9sb2NrX2Rlc2NzKGRldik7Cj4gPiA+ID4gPiA+ID4g ICAgICAgICBtc2lfZm9yX2VhY2hfZGVzYyhkZXNjLCBkZXYsIE1TSV9ERVNDX0FMTCkgewo+ID4g PiA+ID4gPiA+IAkJLi4uCj4gPiA+ID4gPiA+ID4gCX0KPiA+ID4gPiA+ID4gPiAJbXNpX3VubG9j a19kZXNjcyhkZXYpOwo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gKwkJdmlycSA9IG1z aV9nZXRfdmlycShkZXYsIGkpOwo+ID4gPiA+ID4gPiA+ID4gKwkJaWYgKGkgPT0gMCkKPiA+ID4g PiA+ID4gPiA+ICsJCQllcGYtPnZpcnFfYmFzZSA9IHZpcnE7Cj4gPiA+ID4gPiA+ID4gPiArCj4g PiA+ID4gPiA+ID4gPiArCQlyZXQgPSByZXF1ZXN0X2lycSh2aXJxLCBwY2lfZXBmX2dlbmVyaWNf ZG9vcmJlbGxfaGFuZGxlciwgMCwKPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiAJcmVxdWVz dF9pcnEoZGVzYy0+aXJxLCAuLi4pCj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiArCQkJ CSAga2FzcHJpbnRmKEdGUF9LRVJORUwsICJwY2ktZXBjLWRvb3JiZWxsJWQiLCBpKSwgZXBmKTsK PiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ICsJCWlmIChyZXQpIHsKPiA+ID4gPiA+ ID4gPiA+ICsJCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byByZXF1ZXN0IGRvb3JiZWxsXG4iKTsK PiA+ID4gPiA+ID4gPiA+ICsJCQlnb3RvIGVycl9mcmVlX2lycTsKPiA+ID4gPiA+ID4gPiA+ICsJ CX0KPiA+ID4gPiA+ID4gPiA+ICsJCWxhc3QgPSBpOwo+ID4gPiA+ID4gPiA+ID4gKwl9Cj4gPiA+ ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiArCXJldHVybiAwOwo+ID4gPiA+ID4gPiA+ID4g Kwo+ID4gPiA+ID4gPiA+ID4gK2Vycl9mcmVlX2lycToKPiA+ID4gPiA+ID4gPiA+ICsJZm9yIChp ID0gMDsgaSA8IGxhc3Q7IGkrKykKPiA+ID4gPiA+ID4gPiA+ICsJCWtmcmVlKGZyZWVfaXJxKGVw Zi0+dmlycV9iYXNlICsgaSwgZXBmKSk7Cj4gPiA+ID4gPiA+ID4gPiArCXBsYXRmb3JtX21zaV9k b21haW5fZnJlZV9pcnFzKGRldik7Cj4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiAr CXJldHVybiAtRUlOVkFMOwo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+IAlyZXR1cm4gcmV0 Owo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gK30KPiA+ID4gPiA+ID4gPiA+ICtFWFBP UlRfU1lNQk9MX0dQTChwY2lfZXBjX2dlbmVyaWNfYWxsb2NfZG9vcmJlbGwpOwo+ID4gPiA+ID4g PiA+ID4gKwo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+IFsuLi5dCj4gPiA+ID4gPiA+ID4g Cj4gPiA+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wY2ktZXBmLmggYi9p bmNsdWRlL2xpbnV4L3BjaS1lcGYuaAo+ID4gPiA+ID4gPiA+ID4gaW5kZXggM2Y0NGI2YWVjNDc3 MC4uNDg1YzE0NmE1ZWZlMiAxMDA2NDQKPiA+ID4gPiA+ID4gPiA+IC0tLSBhL2luY2x1ZGUvbGlu dXgvcGNpLWVwZi5oCj4gPiA+ID4gPiA+ID4gPiArKysgYi9pbmNsdWRlL2xpbnV4L3BjaS1lcGYu aAo+ID4gPiA+ID4gPiA+ID4gQEAgLTc5LDYgKzc5LDcgQEAgc3RydWN0IHBjaV9lcGNfZXZlbnRf b3BzIHsKPiA+ID4gPiA+ID4gPiA+ICAJaW50ICgqbGlua191cCkoc3RydWN0IHBjaV9lcGYgKmVw Zik7Cj4gPiA+ID4gPiA+ID4gPiAgCWludCAoKmxpbmtfZG93bikoc3RydWN0IHBjaV9lcGYgKmVw Zik7Cj4gPiA+ID4gPiA+ID4gPiAgCWludCAoKmJtZSkoc3RydWN0IHBjaV9lcGYgKmVwZik7Cj4g PiA+ID4gPiA+ID4gPiArCWludCAoKmRvb3JiZWxsKShzdHJ1Y3QgcGNpX2VwZiAqZXBmLCBpbnQg aW5kZXgpOwo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+IGtkb2MgbWlzc2luZy4KPiA+ID4g PiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ICB9Owo+ID4gPiA+ID4gPiA+ID4gIAo+ID4gPiA+ID4g PiA+ID4gIC8qKgo+ID4gPiA+ID4gPiA+ID4gQEAgLTE4MCw2ICsxODEsOSBAQCBzdHJ1Y3QgcGNp X2VwZiB7Cj4gPiA+ID4gPiA+ID4gPiAgCXVuc2lnbmVkIGxvbmcJCXZmdW5jdGlvbl9udW1fbWFw Owo+ID4gPiA+ID4gPiA+ID4gIAlzdHJ1Y3QgbGlzdF9oZWFkCXBjaV92ZXBmOwo+ID4gPiA+ID4g PiA+ID4gIAljb25zdCBzdHJ1Y3QgcGNpX2VwY19ldmVudF9vcHMgKmV2ZW50X29wczsKPiA+ID4g PiA+ID4gPiA+ICsJc3RydWN0IG1zaV9tc2cgKm1zZzsKPiA+ID4gPiA+ID4gPiA+ICsJdTE2IG51 bV9tc2dzOwo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+IG51bV9kYgo+ID4gPiA+ID4gPiA+ IAo+ID4gPiA+ID4gPiA+IFlvdSBhbHNvIG5lZWQgdG8gYWRkIGtkb2MgZm9yIGVhY2ggbmV3IG1l bWJlci4KPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiAtIE1hbmkKPiA+ID4gPiA+ID4gPiAK PiA+ID4gPiA+ID4gPiAtLSAKPiA+ID4gPiA+ID4gPiDgrq7grqPgrr/grrXgrqPgr43grqPgrqng r40g4K6a4K6k4K6+4K6a4K6/4K614K6u4K+NCj4gPiA+ID4gPiAKPiA+ID4gPiA+IC0tIAo+ID4g PiA+ID4g4K6u4K6j4K6/4K614K6j4K+N4K6j4K6p4K+NIOCumuCupOCuvuCumuCuv+CuteCuruCv jQo+ID4gPiAKPiA+ID4gLS0gCj4gPiA+IOCuruCuo+Cuv+CuteCuo+CvjeCuo+CuqeCvjSDgrprg rqTgrr7grprgrr/grrXgrq7gr40KPiAKPiAtLSAKPiDgrq7grqPgrr/grrXgrqPgr43grqPgrqng r40g4K6a4K6k4K6+4K6a4K6/4K614K6u4K+NCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1h cm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcv bWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==