Received: by 2002:a05:6a10:1d13:0:0:0:0 with SMTP id pp19csp2161072pxb; Mon, 23 Aug 2021 13:31:10 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz5dbPIH87116xK9rLLvKxMDVPDd1nsCU6t/OdMUs7mXxNAN/Zj0CdVL5GaA3Lla1FSczWC X-Received: by 2002:a92:1944:: with SMTP id e4mr24215275ilm.186.1629750670410; Mon, 23 Aug 2021 13:31:10 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1629750670; cv=pass; d=google.com; s=arc-20160816; b=GchaazHyYtAoz41BndAX4GYfmGzyouLtrXJJz2orDG17QLWmkEipb1MU5NWg9QMLuP YhLHzVjJUrbm3EsaRz4a5YL1A663LdHqSIp4sfT6A9SC5SUP8rh5uupfA3ZZj3q3u7Du CHFy/EO/fTqi7fENBmTivab6EaDP3YUcRwLJ9TEvHNTaQjatusxlAla/tew8POojebNE qphPuxDxkWG/ti85T2YjiGFk5N9bhashW22A25Tr0zHfxWPB1ToT+ZqWoh0RLNDOmmOX wuVAIoF+LGq2atzyIfbpGoKTFj3GggVhPaZRq7T8O64l+vMMhDh6TgHBUQvIUoy43YVz xIfQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-id:content-language:accept-language:in-reply-to:references :message-id:date:thread-index:thread-topic:subject:cc:to:from :dkim-signature; bh=vhv7PkSlnjHLWPl/eB7mE4G9vZ5Os7G6XR283geIxzo=; b=JPuHBfppFjWkmdjd9IuJ1J2b6iHoh8tb2YAGODIVH7ONxIMrHZxSaCDrbfKrviyQeu pW4AQcEOC4eztSbD79Mu6T/JRASUY4fAwASprIvwAE2QYK8pochzLdZoUBZYUmKiIREk 1YBBJI4Je7QCKQ8owyzHTk5x01F0Wy17huJzmVQzaJb/P8nTxrEPRwCjCg7t0qrAO2xf HcXgs7wB6uftalsBRCXCsdMLqxprTJTFImyI9qVx9mtfRJRHkfnVfZaAz+M3bpYoZUFl yw1bmUkK7nHNKJdg6W/8e/PXt9n7WGfH7XrBj8gA4ZKK4udIceQMJc5gjjZJ1OqHWnTJ 7izg== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=zeOTVvNG; arc=pass (i=1 spf=pass spfdomain=intel.com dkim=pass dkdomain=intel.com dmarc=pass fromdomain=intel.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id k39si18373911jav.114.2021.08.23.13.30.59; Mon, 23 Aug 2021 13:31:10 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=zeOTVvNG; arc=pass (i=1 spf=pass spfdomain=intel.com dkim=pass dkdomain=intel.com dmarc=pass fromdomain=intel.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232620AbhHWUaj (ORCPT + 99 others); Mon, 23 Aug 2021 16:30:39 -0400 Received: from mga02.intel.com ([134.134.136.20]:14364 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232577AbhHWUah (ORCPT ); Mon, 23 Aug 2021 16:30:37 -0400 X-IronPort-AV: E=McAfee;i="6200,9189,10085"; a="204375255" X-IronPort-AV: E=Sophos;i="5.84,344,1620716400"; d="scan'208";a="204375255" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Aug 2021 13:29:53 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.84,344,1620716400"; d="scan'208";a="684729119" Received: from fmsmsx606.amr.corp.intel.com ([10.18.126.86]) by fmsmga005.fm.intel.com with ESMTP; 23 Aug 2021 13:29:52 -0700 Received: from fmsmsx612.amr.corp.intel.com (10.18.126.92) by fmsmsx606.amr.corp.intel.com (10.18.126.86) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.10; Mon, 23 Aug 2021 13:29:52 -0700 Received: from fmsmsx609.amr.corp.intel.com (10.18.126.89) by fmsmsx612.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.10; Mon, 23 Aug 2021 13:29:51 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx609.amr.corp.intel.com (10.18.126.89) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.10 via Frontend Transport; Mon, 23 Aug 2021 13:29:51 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.42) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.10; Mon, 23 Aug 2021 13:29:51 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=emEsGL5Ak9MuHFz1xHLAhPwreb6rTn2xz9H2exMJpAadvd+N9ItsL4N/Gb89q9sqYboNWXxhbWWdSoirYIvOOSigP1k7PCynBWysFeKhe3vqEPwiSx0BJbYIg2WLCmt6JzqNNZ5xx7KIKeaSt1q9/BOXlC2xuYviypVsJBk7b11SRXlwyKvxVeR8jGxhCgkXRHVKceDSVlCPS/rdp3fSvzoiFg9qbx3QD8XNI051xKuhjfzUvQ2emZU6ulUxqQbghVs6nROXs4PGh2Sp8hAxosRM/LaP8sygC5LUrvNkLP5k6LqoSBquoc9mETPcsyZI6HCUHzF3/BbG3FRbg4ROaQ== 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-SenderADCheck; bh=vhv7PkSlnjHLWPl/eB7mE4G9vZ5Os7G6XR283geIxzo=; b=Tdexgg+7Hh2rVViaanz82Cuxc4R2YokcnlWCrls5yGx9wCq1W3+bsHdkHMK7SYLre4Rn3vNKkyE4chsRwFlRd6WNJDJV5vgQHaFWgRSW9rDbfr69rnhjpqQs4H1QsF4IHeWjPIXxWUCGN9Rps4Oh0zmb9btsbzq0cMFl79Bh301CWjKlPF3tp/MRTT1UXCD9PXwkTN/Z4F4ddKPyYpQsdaVBsA9k4eu6AtJ8yPViJvD8Uq+IlkSBwqLhmm006e/YOCZZQX+5D+0zdmcbvAM39SYj4qlfL9sLQK78VR7Eek8OV4S05J1LUIheZmplK2x0jZGssdt3FSgpai43aJuP2g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vhv7PkSlnjHLWPl/eB7mE4G9vZ5Os7G6XR283geIxzo=; b=zeOTVvNGcAUOcEFF4MZu1+y8fmsO/z8WmK2Y+wT0DhhZ6kdOnHI+GedY0Nd40gZRGx89XWPrpN04n6UnexUQzRJiutVpWh3gv3iu/YMX6CDAzkilnEGlZO3f6m2OAdkSOZHdKx7zZoA8vJ3KzSmHN4eApEdP2e1qCQyBbx1yGKY= Received: from SN6PR11MB3184.namprd11.prod.outlook.com (2603:10b6:805:bd::17) by SN6PR11MB3437.namprd11.prod.outlook.com (2603:10b6:805:db::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4436.19; Mon, 23 Aug 2021 20:29:49 +0000 Received: from SN6PR11MB3184.namprd11.prod.outlook.com ([fe80::892e:cae1:bef0:935e]) by SN6PR11MB3184.namprd11.prod.outlook.com ([fe80::892e:cae1:bef0:935e%6]) with mapi id 15.20.4436.019; Mon, 23 Aug 2021 20:29:49 +0000 From: "Edgecombe, Rick P" To: "linux-mm@kvack.org" , "rppt@kernel.org" CC: "linux-kernel@vger.kernel.org" , "peterz@infradead.org" , "keescook@chromium.org" , "Weiny, Ira" , "dave.hansen@linux.intel.com" , "vbabka@suse.cz" , "x86@kernel.org" , "akpm@linux-foundation.org" , "rppt@linux.ibm.com" , "Lutomirski, Andy" Subject: Re: [RFC PATCH 3/4] mm/page_alloc: introduce __GFP_PTE_MAPPED flag to allocate pte-mapped pages Thread-Topic: [RFC PATCH 3/4] mm/page_alloc: introduce __GFP_PTE_MAPPED flag to allocate pte-mapped pages Thread-Index: AQHXmCJlgwCR8xPK80+nkJjgy0+lT6uBivcA Date: Mon, 23 Aug 2021 20:29:49 +0000 Message-ID: <889bdfef8b4acbe840668f27782c3d39a987c368.camel@intel.com> References: <20210823132513.15836-1-rppt@kernel.org> <20210823132513.15836-4-rppt@kernel.org> In-Reply-To: <20210823132513.15836-4-rppt@kernel.org> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Evolution 3.28.5-0ubuntu0.18.04.2 authentication-results: kvack.org; dkim=none (message not signed) header.d=none;kvack.org; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 6744c418-f495-4d17-6803-08d96674c11a x-ms-traffictypediagnostic: SN6PR11MB3437: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 2Dk2ZLbqTZX1XSC+Z4E5H8nfF8N3+3vGV7lnWvYwpXQo8udYoZZxuPICtAmcAtcBg8rIn2z3Ndy3pZ2kTtqmJAtfibjiWTPUFSw7PNDR0ve6k+Do1yvsVDy8m29gHnNJATOdHKTPcoKXb4yAhjbs0NarbwFDAPJh4t01IR9dsUUNY/HO7zY5LY3Nfbz9vfchpC/zdK+HAYvxhERk4S2joEYt8cSEDEmVc3CBaDHaMEMTf6oZ/MEVp0IyfnogKbh5Tu0YxxF3+m00eTOKSS5zNJ7I9hOycX+5091HUVpI4OJGjVE9/hymYcMjhU6eBkYw20lC3mEgHmYv/WJ4UvA18VswjmswwCuRKOy0A+ebzuDtL7Lsrg1BEtIK4FskF6XrSJrqpMn5LEpEBK1ppzFGXRQJdk4BtKOMEfzbxq6OTYjxqEB7bTAcJUWnISOJRKAk5hoOwdeCqqLgWMVuWiXi/SxMGNPALaE3VLUdgcIbDoPvImCleJfTJBWmXB7DNOFq3YCbMYhVB0IKUo5dQ8HQngQSdNAYKbOkORXFUUJMd+yGza/cs6Z2MouBlDCwhN934hGan3ny/G1hBuPGVlsbFRIn6UEU2MNrOwKGn0f+DZhQWHA1BjhNDMRbyshCsRzmnyy3k0uHmqlmjDkdh7mVFy0KG0hqTH9z2Qbr8Fo8/b45NII3JroRAioj3P+F8SDlE1WTageFYOQSA/eBN7Lx9mglrVytiiZAD2Xa6sVVO03mXuKPEXkzEjc9ohTVGQgqziodrhbnryXpeDOfpjAXYZ1vXQvfLg+/SK1nc6CSfhm6b9s1JydfQoHZ5RrkK9NK x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN6PR11MB3184.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(376002)(346002)(366004)(396003)(39860400002)(136003)(71200400001)(316002)(4326008)(6512007)(83380400001)(30864003)(110136005)(122000001)(5660300002)(38070700005)(6506007)(186003)(54906003)(38100700002)(478600001)(8936002)(86362001)(66556008)(6486002)(8676002)(66946007)(66476007)(64756008)(76116006)(66446008)(91956017)(2906002)(2616005)(966005)(26005)(36756003)(7416002)(99106002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Z0c0dVFRd1pjbzZ1QVdWOXlGNVhZVG51ck5rNHZYbGlxNkdiWEZwYjVEQUpJ?= =?utf-8?B?aS9xN0hkTUJLeEY1SkpxMnFjOThSSng5dEp6enBHa1o2MHloUllJZlhTa0M3?= =?utf-8?B?UHk5U0FHS283M1hORXVjdWI3NXZJZEJiMjN1bU5yRy95TUpWNGtVSVl2SUJw?= =?utf-8?B?a0lrL2RwWGNtYWowNm5qQWlOYy9FODlDVWJnSGEzaXpidnp3ellkZjdlaDRx?= =?utf-8?B?YnBaSDlCbitFMjdiVmt6QVVqRCt6M1BCQmhPQ2xRQmVGcnBKWGJaWEF2OUxm?= =?utf-8?B?eGF5blE2b1N2K1VYTkovaS9JektjY25saVA2VnJHaGFKN21vR2E3QUtIWnkr?= =?utf-8?B?MjdGYW1uUkR4Z1FQU3JJNTNrUmRlWkZ2MDBISUpDMTVkN2taczZwYkYzdlQw?= =?utf-8?B?endCeW9sWEovaFhUdHkwUnp4UDZDL05SemlERGNKcWNIRENDZUpjK2ZRcFJP?= =?utf-8?B?Ry9yWVoxOGZmTXFDMmJUVE9Beng3ZE5aOU9ESU0xVGZlRjkwMWk5Q1liS2d0?= =?utf-8?B?bWVkRE9xK011NHI0NXkxa09aeVdMMWJZek9CWHhXVmZsMjh0Y3dZMXlaQ08w?= =?utf-8?B?SFh1NmJDRWd1b2dxYWh5NlN5aWczWjJzcm1tYVIyaCt6WUIvT1p3Y0lpb1VM?= =?utf-8?B?MjhYSEk5MGQxY2hpYWF2UUtYT0JaeGFCd25UM3RlSmRNUENRemZBdGtyMFpX?= =?utf-8?B?VUZDekZmWTNHS21CMnhNWklra0o2WXgxd3cwMUQxYTEzZmNTdjl0VGtXeGRs?= =?utf-8?B?TnJvT00xOG5udzJwVUpIS0NGaVdycW1Kc2QxTGVQYkxPeGtxTjY4L1I5Tzg2?= =?utf-8?B?TmlabVd3YUtqOHo3Q0puWTBmY20zdDk0UW5jcGFVY295SWZhU0haWERVWVhO?= =?utf-8?B?UXE2QXJyMHE5L2ptbXFZZEJIVTBqUHZDdTcxU0ZRNUl1cEFpNEdSWFE5TmNB?= =?utf-8?B?TnBGQmN2UExZSXBCdk5GUGp1a0p4WnpycmJmeHkwZDVOL3JMd3NLYm05aURH?= =?utf-8?B?WWFzbHRLL25aVVE5QXFDZ0lnWkpVYUZoWHVHeWZvSlZFZUFpL0huSlBIVU43?= =?utf-8?B?cSs5WXZxblovRzlUeVVSb3VTWU5SVWpwQ0Njb050Sks4NzhZTVdlaHplN2w0?= =?utf-8?B?N0d4eUpEbXZjSmpiV051MTNUZ0lucW5sT01lY0hlYmpaQWZLRDJ5enRUY1Jy?= =?utf-8?B?YkkwbjFidXpiT0EyekpyY2NxZHljYjZrWEt6TEloSXhuUHJ1emZsUTE5SHAw?= =?utf-8?B?VENtOVFUN2JsbnQ1d2drbGRmRlE4Rnp0MG1aQWZiTG9NTkFLRWJub1drTGE5?= =?utf-8?B?cGVqb2Q5UnBxTUlLZnpUUzZIY00xdFhtL0JQOVVWcEY0RTJSVWJUbitsQmZ2?= =?utf-8?B?WjdCRDJhcjV4MmlYNmtqY2dFa1kzYjM1aUVEYitzWXBSQ0M0QlNxYkpRWDk2?= =?utf-8?B?bFlmTHEzWklJbzhaRWwvc05vTVZUTnZWU1NHUURIWlFzc0QzRWNwWFhnU1B0?= =?utf-8?B?ODA4M0dZYjBwcEZvKzdvOGVGU3FyQSt6TWZQYnIrUkdWOXBvYW5RZ2U4VndN?= =?utf-8?B?N0FWSnl0VEJ0cCtRY0Q5Q005UW5jbTYvNVBrQml0Wk42SndPcmY4cm5vL2lC?= =?utf-8?B?TzVlVHM1bTM0dTBvc2orczJUVm4zVTNtckpGZ1NXMkZKeUJkQTcyVkwvem1n?= =?utf-8?B?T3RKb3dVZW9vU0tNTVQvK2Z4dUVSdGZzZXdJbzhVL2pQcStIazhqUVRQZzdL?= =?utf-8?B?QnRFSjlsUGNJTHJBV0VHcHJyaUV5WERQWTZQN2Z3aFRtZGE2S3FJMmJHWE0r?= =?utf-8?B?bHFvOXcySTRpWWppM3Judz09?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN6PR11MB3184.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6744c418-f495-4d17-6803-08d96674c11a X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Aug 2021 20:29:49.0289 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: fRqZX1uOiOu+IzKjjfI+2Upo1XaMzgfD8s8C80Gcg8wpc5qSBjSochvEYIfFQ1lRHsC8P5TeXk1/WcLMEw464Swp46s7w+XdKW1xrTgI2Z0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR11MB3437 X-OriginatorOrg: intel.com Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gTW9uLCAyMDIxLTA4LTIzIGF0IDE2OjI1ICswMzAwLCBNaWtlIFJhcG9wb3J0IHdyb3RlOg0K PiBGcm9tOiBNaWtlIFJhcG9wb3J0IDxycHB0QGxpbnV4LmlibS5jb20+DQo+IA0KPiBXaGVuIF9f R0ZQX1BURV9NQVBQRUQgZmxhZyBpcyBwYXNzZWQgdG8gYW4gYWxsb2NhdGlvbiByZXF1ZXN0IG9m DQo+IG9yZGVyIDAsDQo+IHRoZSBhbGxvY2F0ZWQgcGFnZSB3aWxsIGJlIG1hcHBlZCBhdCBQVEUg bGV2ZWwgaW4gdGhlIGRpcmVjdCBtYXAuDQo+IA0KPiBUbyByZWR1Y2UgdGhlIGRpcmVjdCBtYXAg ZnJhZ21lbnRhdGlvbiwgbWFpbnRhaW4gYSBjYWNoZSBvZiA0SyBwYWdlcw0KPiB0aGF0DQo+IGFy ZSBhbHJlYWR5IG1hcHBlZCBhdCBQVEUgbGV2ZWwgaW4gdGhlIGRpcmVjdCBtYXAuIFdoZW5ldmVy IHRoZSBjYWNoZQ0KPiBzaG91bGQgYmUgcmVwbGVuaXNoZWQsIHRyeSB0byBhbGxvY2F0ZSAyTSBw YWdlIGFuZCBzcGxpdCBpdCB0byA0Sw0KPiBwYWdlcw0KPiB0byBsb2NhbGl6ZSBzaHV0dGVyIG9m IHRoZSBkaXJlY3QgbWFwLiBJZiB0aGUgYWxsb2NhdGlvbiBvZiAyTSBwYWdlDQo+IGZhaWxzLA0K PiBmYWxsYmFjayB0byBhIHNpbmdsZSBwYWdlIGFsbG9jYXRpb24gYXQgZXhwZW5zZSBvZiB0aGUg ZGlyZWN0IG1hcA0KPiBmcmFnbWVudGF0aW9uLg0KPiANCj4gVGhlIGNhY2hlIHJlZ2lzdGVycyBh IHNocmlua2VyIHRoYXQgcmVsZWFzZXMgZnJlZSBwYWdlcyBmcm9tIHRoZQ0KPiBjYWNoZSB0bw0K PiB0aGUgcGFnZSBhbGxvY2F0b3IuDQo+IA0KPiBUaGUgX19HRlBfUFRFX01BUFBFRCBhbmQgY2Fj aGluZyBvZiA0SyBwYWdlcyBhcmUgZW5hYmxlZCBvbmx5IGlmIGFuDQo+IGFyY2hpdGVjdHVyZSBz ZWxlY3RzIEFSQ0hfV0FOVFNfUFRFX01BUFBFRF9DQUNIRSBpbiBpdHMgS2NvbmZpZy4NCj4gDQo+ IFsNCj4gY2FjaGUgbWFuYWdlbWVudCBhcmUgbW9zdGx5IGNvcGllZCBmcm9tIA0KPiANCmh0dHBz Oi8vbG9yZS5rZXJuZWwub3JnL2xrbWwvMjAyMTA1MDUwMDMwMzIuNDg5MTY0LTQtcmljay5wLmVk Z2Vjb21iZUBpbnRlbC5jb20vDQo+IF0NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IE1pa2UgUmFwb3Bv cnQgPHJwcHRAbGludXguaWJtLmNvbT4NCj4gLS0tDQo+ICBhcmNoL0tjb25maWcgICAgICAgICAg ICAgICAgICAgIHwgICA4ICsNCj4gIGFyY2gveDg2L0tjb25maWcgICAgICAgICAgICAgICAgfCAg IDEgKw0KPiAgaW5jbHVkZS9saW51eC9nZnAuaCAgICAgICAgICAgICB8ICAxMSArLQ0KPiAgaW5j bHVkZS9saW51eC9tbS5oICAgICAgICAgICAgICB8ICAgMiArDQo+ICBpbmNsdWRlL2xpbnV4L3Bh Z2VibG9jay1mbGFncy5oIHwgIDI2ICsrKysNCj4gIGluaXQvbWFpbi5jICAgICAgICAgICAgICAg ICAgICAgfCAgIDEgKw0KPiAgbW0vaW50ZXJuYWwuaCAgICAgICAgICAgICAgICAgICB8ICAgMyAr LQ0KPiAgbW0vcGFnZV9hbGxvYy5jICAgICAgICAgICAgICAgICB8IDI2MQ0KPiArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLQ0KPiAgOCBmaWxlcyBjaGFuZ2VkLCAzMDkgaW5zZXJ0aW9u cygrKSwgNCBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9hcmNoL0tjb25maWcgYi9h cmNoL0tjb25maWcNCj4gaW5kZXggMTI5ZGY0OThhOGUxLi4yZGI5NTMzMTIwMWIgMTAwNjQ0DQo+ IC0tLSBhL2FyY2gvS2NvbmZpZw0KPiArKysgYi9hcmNoL0tjb25maWcNCj4gQEAgLTI0Myw2ICsy NDMsMTQgQEAgY29uZmlnIEFSQ0hfSEFTX1NFVF9NRU1PUlkNCj4gIGNvbmZpZyBBUkNIX0hBU19T RVRfRElSRUNUX01BUA0KPiAgCWJvb2wNCj4gIA0KPiArIw0KPiArIyBTZWxlY3QgaWYgdGhlIGFy Y2hpdGVjdHVyZSB3YW50cyB0byBtaW5pbWl6ZSBmcmFnbWVudGF0aW9uIG9mIGl0cw0KPiArIyBk aXJlY3QvbGluZWFyIG1hcCBjYXVlc2QgYnkgc2V0X21lbW9yeSBhbmQgc2V0X2RpcmVjdF9tYXAN Cj4gb3BlcmF0aW9ucw0KPiArIw0KPiArY29uZmlnIEFSQ0hfV0FOVFNfUFRFX01BUFBFRF9DQUNI RQ0KPiArCWJvb2wNCj4gKwlkZXBlbmRzIG9uIEFSQ0hfSEFTX1NFVF9NRU1PUlkgfHwgQVJDSF9I QVNfU0VUX0RJUkVDVF9NQVANCj4gKw0KPiAgIw0KPiAgIyBTZWxlY3QgaWYgdGhlIGFyY2hpdGVj dHVyZSBwcm92aWRlcyB0aGUgYXJjaF9kbWFfc2V0X3VuY2FjaGVkDQo+IHN5bWJvbCB0bw0KPiAg IyBlaXRoZXIgcHJvdmlkZSBhbiB1bmNhY2hlZCBzZWdtZW50IGFsaWFzIGZvciBhIERNQSBhbGxv Y2F0aW9uLCBvcg0KPiBkaWZmIC0tZ2l0IGEvYXJjaC94ODYvS2NvbmZpZyBiL2FyY2gveDg2L0tj b25maWcNCj4gaW5kZXggODhmYjkyMmMyM2EwLi45YjRlNmNmNGE2YWEgMTAwNjQ0DQo+IC0tLSBh L2FyY2gveDg2L0tjb25maWcNCj4gKysrIGIvYXJjaC94ODYvS2NvbmZpZw0KPiBAQCAtMTE4LDYg KzExOCw3IEBAIGNvbmZpZyBYODYNCj4gIAlzZWxlY3QgQVJDSF9XQU5UU19OT19JTlNUUg0KPiAg CXNlbGVjdCBBUkNIX1dBTlRfSFVHRV9QTURfU0hBUkUNCj4gIAlzZWxlY3QgQVJDSF9XQU5UX0xE X09SUEhBTl9XQVJODQo+ICsJc2VsZWN0IEFSQ0hfV0FOVFNfUFRFX01BUFBFRF9DQUNIRQ0KPiAg CXNlbGVjdCBBUkNIX1dBTlRTX1RIUF9TV0FQCQlpZiBYODZfNjQNCj4gIAlzZWxlY3QgQlVJTERU SU1FX1RBQkxFX1NPUlQNCj4gIAlzZWxlY3QgQ0xLRVZUX0k4MjUzDQo+IGRpZmYgLS1naXQgYS9p bmNsdWRlL2xpbnV4L2dmcC5oIGIvaW5jbHVkZS9saW51eC9nZnAuaA0KPiBpbmRleCA1NWIyZWMx Zjk2NWEuLmM5MDA2ZTNjNjdhZCAxMDA2NDQNCj4gLS0tIGEvaW5jbHVkZS9saW51eC9nZnAuaA0K PiArKysgYi9pbmNsdWRlL2xpbnV4L2dmcC5oDQo+IEBAIC01NSw4ICs1NSw5IEBAIHN0cnVjdCB2 bV9hcmVhX3N0cnVjdDsNCj4gICNkZWZpbmUgX19fR0ZQX0FDQ09VTlQJCTB4NDAwMDAwdQ0KPiAg I2RlZmluZSBfX19HRlBfWkVST1RBR1MJCTB4ODAwMDAwdQ0KPiAgI2RlZmluZSBfX19HRlBfU0tJ UF9LQVNBTl9QT0lTT04JMHgxMDAwMDAwdQ0KPiArI2RlZmluZSBfX19HRlBfUFRFX01BUFBFRAkw eDIwMDAwMDB1DQo+ICAjaWZkZWYgQ09ORklHX0xPQ0tERVANCj4gLSNkZWZpbmUgX19fR0ZQX05P TE9DS0RFUAkweDIwMDAwMDB1DQo+ICsjZGVmaW5lIF9fX0dGUF9OT0xPQ0tERVAJMHg0MDAwMDAw dQ0KPiAgI2Vsc2UNCj4gICNkZWZpbmUgX19fR0ZQX05PTE9DS0RFUAkwDQo+ICAjZW5kaWYNCj4g QEAgLTEwMSwxMiArMTAyLDE4IEBAIHN0cnVjdCB2bV9hcmVhX3N0cnVjdDsNCj4gICAqIG5vZGUg d2l0aCBubyBmYWxsYmFja3Mgb3IgcGxhY2VtZW50IHBvbGljeSBlbmZvcmNlbWVudHMuDQo+ICAg Kg0KPiAgICogJV9fR0ZQX0FDQ09VTlQgY2F1c2VzIHRoZSBhbGxvY2F0aW9uIHRvIGJlIGFjY291 bnRlZCB0byBrbWVtY2cuDQo+ICsgKg0KPiArICogJV9fR0ZQX1BURV9NQVBQRUQgcmV0dXJucyBh IHBhZ2UgdGhhdCBpcyBtYXBwZWQgd2l0aCBQVEUgaW4gdGhlDQo+ICsgKiBkaXJlY3QgbWFwLiBP biBhcmNoaXRlY3R1cmVzIHRoYXQgdXNlIGhpZ2hlciBwYWdlIHRhYmxlIGxldmVscyB0bw0KPiBt YXANCj4gKyAqIHBoeXNpY2FsIG1lbW9yeSwgdGhpcyBmbGFnIHdpbGwgY2FzdWUgc3BsaXQgb2Yg bGFyZ2UgcGFnZXMgaW4gdGhlDQo+IGRpcmVjdA0KPiArICogbWFwcGluZy4gSGFzIGVmZmVjdCBv bmx5IGlmIENPTkZJR19BUkNIX1dBTlRTX1BURV9NQVBQRURfQ0FDSEUgaXMNCj4gc2V0Lg0KPiAg ICovDQo+ICAjZGVmaW5lIF9fR0ZQX1JFQ0xBSU1BQkxFICgoX19mb3JjZSBnZnBfdClfX19HRlBf UkVDTEFJTUFCTEUpDQo+ICAjZGVmaW5lIF9fR0ZQX1dSSVRFCSgoX19mb3JjZSBnZnBfdClfX19H RlBfV1JJVEUpDQo+ICAjZGVmaW5lIF9fR0ZQX0hBUkRXQUxMICAgKChfX2ZvcmNlIGdmcF90KV9f X0dGUF9IQVJEV0FMTCkNCj4gICNkZWZpbmUgX19HRlBfVEhJU05PREUJKChfX2ZvcmNlIGdmcF90 KV9fX0dGUF9USElTTk9ERSkNCj4gICNkZWZpbmUgX19HRlBfQUNDT1VOVAkoKF9fZm9yY2UgZ2Zw X3QpX19fR0ZQX0FDQ09VTlQpDQo+ICsjZGVmaW5lIF9fR0ZQX1BURV9NQVBQRUQgKChfX2ZvcmNl IGdmcF90KV9fX0dGUF9QVEVfTUFQUEVEKQ0KPiAgDQo+ICAvKioNCj4gICAqIERPQzogV2F0ZXJt YXJrIG1vZGlmaWVycw0KPiBAQCAtMjQ5LDcgKzI1Niw3IEBAIHN0cnVjdCB2bV9hcmVhX3N0cnVj dDsNCj4gICNkZWZpbmUgX19HRlBfTk9MT0NLREVQICgoX19mb3JjZSBnZnBfdClfX19HRlBfTk9M T0NLREVQKQ0KPiAgDQo+ICAvKiBSb29tIGZvciBOIF9fR0ZQX0ZPTyBiaXRzICovDQo+IC0jZGVm aW5lIF9fR0ZQX0JJVFNfU0hJRlQgKDI1ICsgSVNfRU5BQkxFRChDT05GSUdfTE9DS0RFUCkpDQo+ ICsjZGVmaW5lIF9fR0ZQX0JJVFNfU0hJRlQgKDI2ICsgSVNfRU5BQkxFRChDT05GSUdfTE9DS0RF UCkpDQo+ICAjZGVmaW5lIF9fR0ZQX0JJVFNfTUFTSyAoKF9fZm9yY2UgZ2ZwX3QpKCgxIDw8IF9f R0ZQX0JJVFNfU0hJRlQpIC0NCj4gMSkpDQo+ICANCj4gIC8qKg0KPiBkaWZmIC0tZ2l0IGEvaW5j bHVkZS9saW51eC9tbS5oIGIvaW5jbHVkZS9saW51eC9tbS5oDQo+IGluZGV4IDdjYTIyZTZlNjk0 YS4uMzUwZWM5OGI4MmQyIDEwMDY0NA0KPiAtLS0gYS9pbmNsdWRlL2xpbnV4L21tLmgNCj4gKysr IGIvaW5jbHVkZS9saW51eC9tbS5oDQo+IEBAIC0zMjgzLDUgKzMyODMsNyBAQCBzdGF0aWMgaW5s aW5lIGludCBzZWFsX2NoZWNrX2Z1dHVyZV93cml0ZShpbnQNCj4gc2VhbHMsIHN0cnVjdCB2bV9h cmVhX3N0cnVjdCAqdm1hKQ0KPiAgCXJldHVybiAwOw0KPiAgfQ0KPiAgDQo+ICt2b2lkIHB0ZV9t YXBwZWRfY2FjaGVfaW5pdCh2b2lkKTsNCj4gKw0KPiAgI2VuZGlmIC8qIF9fS0VSTkVMX18gKi8N Cj4gICNlbmRpZiAvKiBfTElOVVhfTU1fSCAqLw0KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51 eC9wYWdlYmxvY2stZmxhZ3MuaA0KPiBiL2luY2x1ZGUvbGludXgvcGFnZWJsb2NrLWZsYWdzLmgN Cj4gaW5kZXggOTczZmQ3MzFhNTIwLi40ZmFmOGM1NDJiMDAgMTAwNjQ0DQo+IC0tLSBhL2luY2x1 ZGUvbGludXgvcGFnZWJsb2NrLWZsYWdzLmgNCj4gKysrIGIvaW5jbHVkZS9saW51eC9wYWdlYmxv Y2stZmxhZ3MuaA0KPiBAQCAtMjEsNiArMjEsOCBAQCBlbnVtIHBhZ2VibG9ja19iaXRzIHsNCj4g IAkJCS8qIDMgYml0cyByZXF1aXJlZCBmb3IgbWlncmF0ZSB0eXBlcyAqLw0KPiAgCVBCX21pZ3Jh dGVfc2tpcCwvKiBJZiBzZXQgdGhlIGJsb2NrIGlzIHNraXBwZWQgYnkgY29tcGFjdGlvbiAqLw0K PiAgDQo+ICsJUEJfcHRlX21hcHBlZCwgLyogSWYgc2V0IHRoZSBibG9jayBpcyBtYXBwZWQgd2l0 aCBQVEVzIGluDQo+IGRpcmVjdCBtYXAgKi8NCj4gKw0KPiAgCS8qDQo+ICAJICogQXNzdW1lIHRo ZSBiaXRzIHdpbGwgYWx3YXlzIGFsaWduIG9uIGEgd29yZC4gSWYgdGhpcw0KPiBhc3N1bXB0aW9u DQo+ICAJICogY2hhbmdlcyB0aGVuIGdldC9zZXQgcGFnZWJsb2NrIG5lZWRzIHVwZGF0aW5nLg0K PiBAQCAtODgsNCArOTAsMjggQEAgc3RhdGljIGlubGluZSB2b2lkIHNldF9wYWdlYmxvY2tfc2tp cChzdHJ1Y3QgcGFnZQ0KPiAqcGFnZSkNCj4gIH0NCj4gICNlbmRpZiAvKiBDT05GSUdfQ09NUEFD VElPTiAqLw0KPiAgDQo+ICsjaWZkZWYgQ09ORklHX0FSQ0hfV0FOVFNfUFRFX01BUFBFRF9DQUNI RQ0KPiArI2RlZmluZSBnZXRfcGFnZWJsb2NrX3B0ZV9tYXBwZWQocGFnZSkJCQkJDQo+IFwNCj4g KwlnZXRfcGZuYmxvY2tfZmxhZ3NfbWFzayhwYWdlLCBwYWdlX3RvX3BmbihwYWdlKSwJXA0KPiAr CQkJKDEgPDwgKFBCX3B0ZV9tYXBwZWQpKSkNCj4gKyNkZWZpbmUgY2xlYXJfcGFnZWJsb2NrX3B0 ZV9tYXBwZWQocGFnZSkgXA0KPiArCXNldF9wZm5ibG9ja19mbGFnc19tYXNrKHBhZ2UsIDAsIHBh Z2VfdG9fcGZuKHBhZ2UpLAlcDQo+ICsJCQkoMSA8PCBQQl9wdGVfbWFwcGVkKSkNCj4gKyNkZWZp bmUgc2V0X3BhZ2VibG9ja19wdGVfbWFwcGVkKHBhZ2UpIFwNCj4gKwlzZXRfcGZuYmxvY2tfZmxh Z3NfbWFzayhwYWdlLCAoMSA8PCBQQl9wdGVfbWFwcGVkKSwJXA0KPiArCQkJcGFnZV90b19wZm4o cGFnZSksCQkJXA0KPiArCQkJKDEgPDwgUEJfcHRlX21hcHBlZCkpDQo+ICsjZWxzZSAvKiBDT05G SUdfQVJDSF9XQU5UU19QVEVfTUFQUEVEX0NBQ0hFICovDQo+ICtzdGF0aWMgaW5saW5lIGJvb2wg Z2V0X3BhZ2VibG9ja19wdGVfbWFwcGVkKHN0cnVjdCBwYWdlICpwYWdlKQ0KPiArew0KPiArCXJl dHVybiBmYWxzZTsNCj4gK30NCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBjbGVhcl9wYWdlYmxvY2tf cHRlX21hcHBlZChzdHJ1Y3QgcGFnZSAqcGFnZSkNCj4gK3sNCj4gK30NCj4gK3N0YXRpYyBpbmxp bmUgdm9pZCBzZXRfcGFnZWJsb2NrX3B0ZV9tYXBwZWQoc3RydWN0IHBhZ2UgKnBhZ2UpDQo+ICt7 DQo+ICt9DQo+ICsjZW5kaWYgLyogQ09ORklHX0FSQ0hfV0FOVFNfUFRFX01BUFBFRF9DQUNIRSAq Lw0KPiArDQo+ICAjZW5kaWYJLyogUEFHRUJMT0NLX0ZMQUdTX0ggKi8NCj4gZGlmZiAtLWdpdCBh L2luaXQvbWFpbi5jIGIvaW5pdC9tYWluLmMNCj4gaW5kZXggZjViODI0NmU4YWExLi5jMGQ1OWEx ODNhMzkgMTAwNjQ0DQo+IC0tLSBhL2luaXQvbWFpbi5jDQo+ICsrKyBiL2luaXQvbWFpbi5jDQo+ IEBAIC04MjgsNiArODI4LDcgQEAgc3RhdGljIHZvaWQgX19pbml0IG1tX2luaXQodm9pZCkNCj4g IAlwYWdlX2V4dF9pbml0X2ZsYXRtZW1fbGF0ZSgpOw0KPiAgCWttZW1fY2FjaGVfaW5pdCgpOw0K PiAgCWttZW1sZWFrX2luaXQoKTsNCj4gKwlwdGVfbWFwcGVkX2NhY2hlX2luaXQoKTsNCj4gIAlw Z3RhYmxlX2luaXQoKTsNCj4gIAlkZWJ1Z19vYmplY3RzX21lbV9pbml0KCk7DQo+ICAJdm1hbGxv Y19pbml0KCk7DQo+IGRpZmYgLS1naXQgYS9tbS9pbnRlcm5hbC5oIGIvbW0vaW50ZXJuYWwuaA0K PiBpbmRleCAzMWZmOTM1YjI1NDcuLjA1NTdlY2U2ZWJmNCAxMDA2NDQNCj4gLS0tIGEvbW0vaW50 ZXJuYWwuaA0KPiArKysgYi9tbS9pbnRlcm5hbC5oDQo+IEBAIC0yNCw3ICsyNCw4IEBADQo+ICAJ CQlfX0dGUF9BVE9NSUMpDQo+ICANCj4gIC8qIFRoZSBHRlAgZmxhZ3MgYWxsb3dlZCBkdXJpbmcg ZWFybHkgYm9vdCAqLw0KPiAtI2RlZmluZSBHRlBfQk9PVF9NQVNLIChfX0dGUF9CSVRTX01BU0sg Jg0KPiB+KF9fR0ZQX1JFQ0xBSU18X19HRlBfSU98X19HRlBfRlMpKQ0KPiArI2RlZmluZSBHRlBf Qk9PVF9NQVNLIChfX0dGUF9CSVRTX01BU0sgJg0KPiB+KF9fR0ZQX1JFQ0xBSU18X19HRlBfSU98 X19HRlBfRlN8XA0KPiArCQkJCQkgICBfX0dGUF9QVEVfTUFQUEVEKSkNCj4gIA0KPiAgLyogQ29u dHJvbCBhbGxvY2F0aW9uIGNwdXNldCBhbmQgbm9kZSBwbGFjZW1lbnQgY29uc3RyYWludHMgKi8N Cj4gICNkZWZpbmUgR0ZQX0NPTlNUUkFJTlRfTUFTSyAoX19HRlBfSEFSRFdBTEx8X19HRlBfVEhJ U05PREUpDQo+IGRpZmYgLS1naXQgYS9tbS9wYWdlX2FsbG9jLmMgYi9tbS9wYWdlX2FsbG9jLmMN Cj4gaW5kZXggODU2YjE3NWMxNWE0Li43OTM2ZDhkY2I4MGIgMTAwNjQ0DQo+IC0tLSBhL21tL3Bh Z2VfYWxsb2MuYw0KPiArKysgYi9tbS9wYWdlX2FsbG9jLmMNCj4gQEAgLTcyLDYgKzcyLDcgQEAN Cj4gICNpbmNsdWRlIDxsaW51eC9wYWRhdGEuaD4NCj4gICNpbmNsdWRlIDxsaW51eC9raHVnZXBh Z2VkLmg+DQo+ICAjaW5jbHVkZSA8bGludXgvYnVmZmVyX2hlYWQuaD4NCj4gKyNpbmNsdWRlIDxs aW51eC9zZXRfbWVtb3J5Lmg+DQo+ICAjaW5jbHVkZSA8YXNtL3NlY3Rpb25zLmg+DQo+ICAjaW5j bHVkZSA8YXNtL3RsYmZsdXNoLmg+DQo+ICAjaW5jbHVkZSA8YXNtL2RpdjY0Lmg+DQo+IEBAIC0x MDcsNiArMTA4LDE0IEBAIHR5cGVkZWYgaW50IF9fYml0d2lzZSBmcGlfdDsNCj4gICAqLw0KPiAg I2RlZmluZSBGUElfVE9fVEFJTAkJKChfX2ZvcmNlIGZwaV90KUJJVCgxKSkNCj4gIA0KPiArLyoN Cj4gKyAqIEZyZWUgcGFnZSBkaXJlY3RseSB0byB0aGUgcGFnZSBhbGxvY2F0b3IgcmF0aGVyIHRo YW4gY2hlY2sgaWYgaXQNCj4gc2hvdWxkDQo+ICsgKiBiZSBwbGFjZWQgaW50byB0aGUgY2FjaGUg b2YgcHRlX21hcHBlZCBwYWdlcy4NCj4gKyAqIFVzZWQgYnkgdGhlIHB0ZV9tYXBwZWQgY2FjaGUg c2hyaW5rZXIuDQo+ICsgKiBIYXMgZWZmZWN0IG9ubHkgd2hlbiBwdGUtbWFwcGVkIGNhY2hlIGlz IGVuYWJsZWQNCj4gKyAqLw0KPiArI2RlZmluZSBGUElfTk9fUFRFX01BUAkJKChfX2ZvcmNlIGZw aV90KUJJVCgyKSkNCj4gKw0KPiAgLyoNCj4gICAqIERvbid0IHBvaXNvbiBtZW1vcnkgd2l0aCBL QVNBTiAob25seSBmb3IgdGhlIHRhZy1iYXNlZCBtb2RlcykuDQo+ICAgKiBEdXJpbmcgYm9vdCwg YWxsIG5vbi1yZXNlcnZlZCBtZW1ibG9jayBtZW1vcnkgaXMgZXhwb3NlZCB0bw0KPiBwYWdlX2Fs bG9jLg0KPiBAQCAtMjI1LDYgKzIzNCwxOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQNCj4gc2V0X3Bj cHBhZ2VfbWlncmF0ZXR5cGUoc3RydWN0IHBhZ2UgKnBhZ2UsIGludCBtaWdyYXRldHlwZSkNCj4g IAlwYWdlLT5pbmRleCA9IG1pZ3JhdGV0eXBlOw0KPiAgfQ0KPiAgDQo+ICsjaWZkZWYgQ09ORklH X0FSQ0hfV0FOVFNfUFRFX01BUFBFRF9DQUNIRQ0KPiArc3RhdGljIHN0cnVjdCBwYWdlICphbGxv Y19wYWdlX3B0ZV9tYXBwZWQoZ2ZwX3QgZ2ZwKTsNCj4gK3N0YXRpYyB2b2lkIGZyZWVfcGFnZV9w dGVfbWFwcGVkKHN0cnVjdCBwYWdlICpwYWdlKTsNCj4gKyNlbHNlDQo+ICtzdGF0aWMgaW5saW5l IHN0cnVjdCBwYWdlICphbGxvY19wYWdlX3B0ZV9tYXBwZWQoZ2ZwX3QgZ2ZwKQ0KPiArew0KPiAr CXJldHVybiBOVUxMOw0KPiArfQ0KPiArc3RhdGljIHZvaWQgZnJlZV9wYWdlX3B0ZV9tYXBwZWQo c3RydWN0IHBhZ2UgKnBhZ2UpDQo+ICt7DQo+ICt9DQo+ICsjZW5kaWYNCj4gKw0KPiAgI2lmZGVm IENPTkZJR19QTV9TTEVFUA0KPiAgLyoNCj4gICAqIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFy ZSB1c2VkIGJ5IHRoZSBzdXNwZW5kL2hpYmVybmF0ZSBjb2RlIHRvDQo+IHRlbXBvcmFyaWx5DQo+ IEBAIC01MzYsNyArNTU4LDcgQEAgdm9pZCBzZXRfcGZuYmxvY2tfZmxhZ3NfbWFzayhzdHJ1Y3Qg cGFnZSAqcGFnZSwNCj4gdW5zaWduZWQgbG9uZyBmbGFncywNCj4gIAl1bnNpZ25lZCBsb25nIGJp dGlkeCwgd29yZF9iaXRpZHg7DQo+ICAJdW5zaWduZWQgbG9uZyBvbGRfd29yZCwgd29yZDsNCj4g IA0KPiAtCUJVSUxEX0JVR19PTihOUl9QQUdFQkxPQ0tfQklUUyAhPSA0KTsNCj4gKwlCVUlMRF9C VUdfT04oTlJfUEFHRUJMT0NLX0JJVFMgIT0gNSk7DQo+ICAJQlVJTERfQlVHX09OKE1JR1JBVEVf VFlQRVMgPiAoMSA8PCBQQl9taWdyYXRldHlwZV9iaXRzKSk7DQo+ICANCj4gIAliaXRtYXAgPSBn ZXRfcGFnZWJsb2NrX2JpdG1hcChwYWdlLCBwZm4pOw0KPiBAQCAtMTM1Miw2ICsxMzc0LDE2IEBA IHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbA0KPiBmcmVlX3BhZ2VzX3ByZXBhcmUoc3RydWN0 IHBhZ2UgKnBhZ2UsDQo+ICAJCQkJCSAgIFBBR0VfU0laRSA8PCBvcmRlcik7DQo+ICAJfQ0KPiAg DQo+ICsJLyoNCj4gKwkgKiBVbmxlc3MgYXJlIHdlIHNocmlua2luZyBwdGVfbWFwcGVkIGNhY2hl IHJldHVybiBhIHBhZ2UgZnJvbQ0KPiArCSAqIGEgcGFnZWJsb2NrIG1hcHBlZCB3aXRoIFBURXMg dG8gdGhhdCBjYWNoZS4NCj4gKwkgKi8NCj4gKwlpZiAoIW9yZGVyICYmICEoZnBpX2ZsYWdzICYg RlBJX05PX1BURV9NQVApICYmDQo+ICsJICAgIGdldF9wYWdlYmxvY2tfcHRlX21hcHBlZChwYWdl KSkgew0KPiArCQlmcmVlX3BhZ2VfcHRlX21hcHBlZChwYWdlKTsNCj4gKwkJcmV0dXJuIGZhbHNl Ow0KPiArCX0NCj4gKw0KPiAgCWtlcm5lbF9wb2lzb25fcGFnZXMocGFnZSwgMSA8PCBvcmRlcik7 DQo+ICANCj4gIAkvKg0KPiBAQCAtMzQ0NSw2ICszNDc3LDEzIEBAIHZvaWQgZnJlZV91bnJlZl9w YWdlX2xpc3Qoc3RydWN0IGxpc3RfaGVhZA0KPiAqbGlzdCkNCj4gIAkvKiBQcmVwYXJlIHBhZ2Vz IGZvciBmcmVlaW5nICovDQo+ICAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHBhZ2UsIG5leHQs IGxpc3QsIGxydSkgew0KPiAgCQlwZm4gPSBwYWdlX3RvX3BmbihwYWdlKTsNCj4gKw0KPiArCQlp ZiAoZ2V0X3BhZ2VibG9ja19wdGVfbWFwcGVkKHBhZ2UpKSB7DQo+ICsJCQlsaXN0X2RlbCgmcGFn ZS0+bHJ1KTsNCj4gKwkJCWZyZWVfcGFnZV9wdGVfbWFwcGVkKHBhZ2UpOw0KPiArCQkJY29udGlu dWU7DQo+ICsJCX0NCj4gKw0KPiAgCQlpZiAoIWZyZWVfdW5yZWZfcGFnZV9wcmVwYXJlKHBhZ2Us IHBmbiwgMCkpDQo+ICAJCQlsaXN0X2RlbCgmcGFnZS0+bHJ1KTsNCj4gIA0KPiBAQCAtNTM4MSw2 ICs1NDIwLDEyIEBAIHN0cnVjdCBwYWdlICpfX2FsbG9jX3BhZ2VzKGdmcF90IGdmcCwgdW5zaWdu ZWQNCj4gaW50IG9yZGVyLCBpbnQgcHJlZmVycmVkX25pZCwNCj4gIAkJCSZhbGxvY19nZnAsICZh bGxvY19mbGFncykpDQo+ICAJCXJldHVybiBOVUxMOw0KPiAgDQo+ICsJaWYgKChhbGxvY19nZnAg JiBfX0dGUF9QVEVfTUFQUEVEKSAmJiBvcmRlciA9PSAwKSB7DQo+ICsJCXBhZ2UgPSBhbGxvY19w YWdlX3B0ZV9tYXBwZWQoYWxsb2NfZ2ZwKTsNCj4gKwkJaWYgKHBhZ2UpDQo+ICsJCQlnb3RvIG91 dDsNCj4gKwl9DQo+ICsNCj4gIAkvKg0KPiAgCSAqIEZvcmJpZCB0aGUgZmlyc3QgcGFzcyBmcm9t IGZhbGxpbmcgYmFjayB0byB0eXBlcyB0aGF0DQo+IGZyYWdtZW50DQo+ICAJICogbWVtb3J5IHVu dGlsIGFsbCBsb2NhbCB6b25lcyBhcmUgY29uc2lkZXJlZC4NCj4gQEAgLTU2ODEsNiArNTcyNiwy MjAgQEAgdm9pZCBmcmVlX3BhZ2VzX2V4YWN0KHZvaWQgKnZpcnQsIHNpemVfdA0KPiBzaXplKQ0K PiAgfQ0KPiAgRVhQT1JUX1NZTUJPTChmcmVlX3BhZ2VzX2V4YWN0KTsNCj4gIA0KPiArI2lmZGVm IENPTkZJR19BUkNIX1dBTlRTX1BURV9NQVBQRURfQ0FDSEUNCj4gKw0KPiArc3RydWN0IHB0ZV9t YXBwZWRfY2FjaGUgew0KPiArCXN0cnVjdCBzaHJpbmtlciBzaHJpbmtlcjsNCj4gKwlzdHJ1Y3Qg bGlzdF9scnUgbHJ1Ow0KPiArCWF0b21pY190IG5pZF9yb3VuZF9yb2JpbjsNCj4gKwl1bnNpZ25l ZCBsb25nIGZyZWVfY250Ow0KPiArfTsNCj4gKw0KPiArc3RhdGljIHN0cnVjdCBwdGVfbWFwcGVk X2NhY2hlIHB0ZV9tYXBwZWRfY2FjaGU7DQo+ICsNCj4gK3N0YXRpYyBzdHJ1Y3QgcGFnZSAqcHRl X21hcHBlZF9jYWNoZV9nZXQoc3RydWN0IHB0ZV9tYXBwZWRfY2FjaGUNCj4gKmNhY2hlKQ0KPiAr ew0KPiArCXVuc2lnbmVkIGxvbmcgc3RhcnRfbmlkLCBpOw0KPiArCXN0cnVjdCBsaXN0X2hlYWQg KmhlYWQ7DQo+ICsJc3RydWN0IHBhZ2UgKnBhZ2UgPSBOVUxMOw0KPiArDQo+ICsJc3RhcnRfbmlk ID0gYXRvbWljX2ZldGNoX2luYygmY2FjaGUtPm5pZF9yb3VuZF9yb2JpbikgJQ0KPiBucl9ub2Rl X2lkczsNCj4gKwlmb3IgKGkgPSAwOyBpIDwgbnJfbm9kZV9pZHM7IGkrKykgew0KPiArCQlpbnQg Y3VyX25pZCA9IChzdGFydF9uaWQgKyBpKSAlIG5yX25vZGVfaWRzOw0KPiArDQo+ICsJCWhlYWQg PSBsaXN0X2xydV9nZXRfbXJ1KCZjYWNoZS0+bHJ1LCBjdXJfbmlkKTsNCj4gKwkJaWYgKGhlYWQp IHsNCj4gKwkJCXBhZ2UgPSBsaXN0X2VudHJ5KGhlYWQsIHN0cnVjdCBwYWdlLCBscnUpOw0KPiAr CQkJYnJlYWs7DQo+ICsJCX0NCj4gKwl9DQo+ICsNCj4gKwlyZXR1cm4gcGFnZTsNCj4gK30NCj4g Kw0KPiArc3RhdGljIHZvaWQgcHRlX21hcHBlZF9jYWNoZV9hZGQoc3RydWN0IHB0ZV9tYXBwZWRf Y2FjaGUgKmNhY2hlLA0KPiArCQkJCSBzdHJ1Y3QgcGFnZSAqcGFnZSkNCj4gK3sNCj4gKwlJTklU X0xJU1RfSEVBRCgmcGFnZS0+bHJ1KTsNCj4gKwlsaXN0X2xydV9hZGRfbm9kZSgmY2FjaGUtPmxy dSwgJnBhZ2UtPmxydSwgcGFnZV90b19uaWQocGFnZSkpOw0KPiArCXNldF9wYWdlX2NvdW50KHBh Z2UsIDApOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBwdGVfbWFwcGVkX2NhY2hlX2FkZF9u ZWlnaGJvdXJfcGFnZXMoc3RydWN0IHBhZ2UgKnBhZ2UpDQo+ICt7DQo+ICsjaWYgMA0KPiArCS8q DQo+ICsJICogVE9ETzogaWYgcHRlX21hcHBlZF9jYWNoZV9yZXBsZW5pc2goKSBoYWQgdG8gZmFs bGJhY2sgdG8NCj4gb3JkZXItMA0KPiArCSAqIGFsbG9jYXRpb24sIHRoZSBsYXJnZSBwYWdlIGlu IHRoZSBkaXJlY3QgbWFwIHdpbGwgYmUgc3BsaXQNCj4gKwkgKiBhbnl3YXkgYW5kIGlmIHRoZXJl IGFyZSBmcmVlIHBhZ2VzIGluIHRoZSBzYW1lIHBhZ2VibG9jaw0KPiB0aGV5DQo+ICsJICogY2Fu IGJlIGFkZGVkIHRvIHB0ZV9tYXBwZWQgY2FjaGUuDQo+ICsJICovDQo+ICsJdW5zaWduZWQgaW50 IG9yZGVyID0gKDEgPDwgSFVHRVRMQl9QQUdFX09SREVSKTsNCj4gKwl1bnNpZ25lZCBpbnQgbnJf cGFnZXMgPSAoMSA8PCBvcmRlcik7DQo+ICsJdW5zaWduZWQgbG9uZyBwZm4gPSBwYWdlX3RvX3Bm bihwYWdlKTsNCj4gKwlzdHJ1Y3QgcGFnZSAqcGFnZV9oZWFkID0gcGFnZSAtIChwZm4gJiAob3Jk ZXIgLSAxKSk7DQo+ICsNCj4gKwlmb3IgKGkgPSAwOyBpIDwgbnJfcGFnZXM7IGkrKykgew0KPiAr CQlwYWdlID0gcGFnZV9oZWFkICsgaTsNCj4gKwkJaWYgKGlzX2ZyZWVfYnVkZHlfcGFnZShwYWdl KSkgew0KPiArCQkJdGFrZV9wYWdlX29mZl9idWRkeShwYWdlKTsNCj4gKwkJCXB0ZV9tYXBwZWRf Y2FjaGVfYWRkKCZwdGVfbWFwcGVkX2NhY2hlLCBwYWdlKTsNCj4gKwkJfQ0KPiArCX0NCj4gKyNl bmRpZg0KPiArfQ0KPiANClRoaXMgc2VlbXMgYSBuaWNlIGJlbmVmaXQgb2YgZG9pbmcgdGhpcyBz b3J0IG9mIHN0dWZmIGluIHRoZSBwYWdlDQphbGxvY2F0b3IgaWYgaXQgY2FuIHdvcmsuDQoNCj4g K3N0YXRpYyBzdHJ1Y3QgcGFnZSAqcHRlX21hcHBlZF9jYWNoZV9yZXBsZW5pc2goc3RydWN0DQo+ IHB0ZV9tYXBwZWRfY2FjaGUgKmNhY2hlLA0KPiArCQkJCQkgICAgICAgZ2ZwX3QgZ2ZwKQ0KPiAr ew0KPiArCXVuc2lnbmVkIGludCBvcmRlciA9IEhVR0VUTEJfUEFHRV9PUkRFUjsNCj4gKwl1bnNp Z25lZCBpbnQgbnJfcGFnZXM7DQo+ICsJc3RydWN0IHBhZ2UgKnBhZ2U7DQo+ICsJaW50IGksIGVy cjsNCj4gKw0KPiArCWdmcCAmPSB+X19HRlBfUFRFX01BUFBFRDsNCj4gKw0KPiArCXBhZ2UgPSBh bGxvY19wYWdlcyhnZnAsIG9yZGVyKTsNCj4gKwlpZiAoIXBhZ2UpIHsNCj4gKwkJb3JkZXIgPSAw Ow0KPiArCQlwYWdlID0gYWxsb2NfcGFnZXMoZ2ZwLCBvcmRlcik7DQo+ICsJCWlmICghcGFnZSkN Cj4gKwkJCXJldHVybiBOVUxMOw0KPiArCX0NCj4gKw0KPiArCW5yX3BhZ2VzID0gKDEgPDwgb3Jk ZXIpOw0KPiArCWVyciA9IHNldF9tZW1vcnlfNGsoKHVuc2lnbmVkIGxvbmcpcGFnZV9hZGRyZXNz KHBhZ2UpLA0KPiBucl9wYWdlcyk7DQo+ICsJaWYgKGVycikNCj4gKwkJZ290byBlcnJfZnJlZV9w YWdlczsNCj4gKw0KPiArCWlmIChvcmRlcikNCj4gKwkJc3BsaXRfcGFnZShwYWdlLCBvcmRlcik7 DQo+ICsJZWxzZQ0KPiArCQlwdGVfbWFwcGVkX2NhY2hlX2FkZF9uZWlnaGJvdXJfcGFnZXMocGFn ZSk7DQo+ICsNCj4gKwlmb3IgKGkgPSAxOyBpIDwgbnJfcGFnZXM7IGkrKykNCj4gKwkJcHRlX21h cHBlZF9jYWNoZV9hZGQoY2FjaGUsIHBhZ2UgKyBpKTsNCj4gKw0KPiArCXNldF9wYWdlYmxvY2tf cHRlX21hcHBlZChwYWdlKTsNCj4gKw0KPiArCXJldHVybiBwYWdlOw0KPiArDQo+ICtlcnJfZnJl ZV9wYWdlczoNCj4gKwlfX2ZyZWVfcGFnZXMocGFnZSwgb3JkZXIpOw0KPiArCXJldHVybiBOVUxM Ow0KPiArfQ0KPiArDQo+ICtzdGF0aWMgc3RydWN0IHBhZ2UgKmFsbG9jX3BhZ2VfcHRlX21hcHBl ZChnZnBfdCBnZnApDQpJJ20gYSBsaXR0bGUgZGlzYXBwb2ludGVkIGJ1aWxkaW5nIGludG8gdGhl IHBhZ2UgYWxsb2NhdG9yIGRpZG4ndA0KYXV0b21hdGljYWxseSBtYWtlIGhpZ2hlciBvcmRlciBh bGxvY2F0aW9ucyBlYXN5LiBJdCBzZWVtcyB0aGlzIG1vc3RseQ0KYm9sdHMgdGhlIGdyb3VwZWQg cGFnZXMgY29kZSBvbiB0byB0aGUgcGFnZSBhbGxvY2F0b3IgYW5kIHNwbGl0cyBvdXQgb2YNCnRo ZSBhbGxvY2F0aW9uL2ZyZWUgcGF0aHMgdG8gY2FsbCBpbnRvIGl0Pw0KDQpJIHdhcyB0aGlua2lu ZyB0aGUgbWFpbiBiZW5lZml0IG9mIGhhbmRsaW5nIGRpcmVjdCBtYXAgcGVybWlzc2lvbnMgaW4N CnRoZSBwYWdlIGFsbG9jYXRvciB3b3VsZCBiZSByZS11c2luZyB0aGUgYnVkZHkgcGFydCB0byBz dXBwb3J0IGhpZ2gNCm9yZGVyIHBhZ2VzLCBldGMuIERpZCB5b3UgdHJ5IHRvIGJ1aWxkIGl0IGlu IGxpa2UgdGhhdD8gSWYgd2UgY2FuJ3QgZ2V0DQp0aGF0LCB3aGF0IGlzIHRoZSBiZW5lZml0IHRv IGRvaW5nIHBlcm1pc3Npb24gc3R1ZmYgaW4gdGhlIHBhZ2VhbGxvY2F0b3I/IA0KDQo+ICt7DQo+ ICsJc3RydWN0IHB0ZV9tYXBwZWRfY2FjaGUgKmNhY2hlID0gJnB0ZV9tYXBwZWRfY2FjaGU7DQo+ ICsJc3RydWN0IHBhZ2UgKnBhZ2U7DQo+ICsNCj4gKwlwYWdlID0gcHRlX21hcHBlZF9jYWNoZV9n ZXQoY2FjaGUpOw0KPiArCWlmIChwYWdlKSB7DQo+ICsJCXByZXBfbmV3X3BhZ2UocGFnZSwgMCwg Z2ZwLCAwKTsNCj4gKwkJZ290byBvdXQ7DQo+ICsJfQ0KPiArDQo+ICsJcGFnZSA9IHB0ZV9tYXBw ZWRfY2FjaGVfcmVwbGVuaXNoKGNhY2hlLCBnZnApOw0KPiArDQo+ICtvdXQ6DQo+ICsJcmV0dXJu IHBhZ2U7DQo+ICt9DQo+ICsNCldlIHByb2JhYmx5IHdhbnQgdG8gZXhjbHVkZSBHRlBfQVRPTUlD IGJlZm9yZSBjYWxsaW5nIGludG8gQ1BBIHVubGVzcw0KZGVidWcgcGFnZSBhbGxvYyBpcyBvbiwg YmVjYXVzZSBpdCBtYXkgbmVlZCB0byBzcGxpdCBhbmQgc2xlZXAgZm9yIHRoZQ0KYWxsb2NhdGlv bi4gVGhlcmUgaXMgYSBwYWdlIHRhYmxlIGFsbG9jYXRpb24gd2l0aCBHRlBfQVRPTUlDIHBhc3Nl ZA0KYWN0dWFsbHkuDQoNCkluIG15IG5leHQgc2VyaWVzIG9mIHRoaXMgSSBhZGRlZCBzdXBwb3J0 IGZvciBHRlBfQVRPTUlDIHRvIHRoaXMgY29kZSwNCmJ1dCB0aGF0IHNvbHV0aW9uIHNob3VsZCBv bmx5IHdvcmsgZm9yIHBlcm1pc3Npb24gY2hhbmdpbmcgZ3JvdXBlZCBwYWdlDQphbGxvY2F0b3Jz IGluIHRoZSBwcm90ZWN0ZWQgcGFnZSB0YWJsZXMgY2FzZSB3aGVyZSB0aGUgZGlyZWN0IG1hcA0K dGFibGVzIGFyZSBoYW5kbGVkIGRpZmZlcmVudGx5LiBBcyBhIGdlbmVyYWwgc29sdXRpb24gdGhv dWdoICh0aGF0J3MNCnRoZSBsb25nIHRlcm0gaW50ZW50aW9uIHJpZ2h0PyksIEdGUF9BVE9NSUMg bWlnaHQgZGVzZXJ2ZSBzb21lDQpjb25zaWRlcmF0aW9uLg0KDQpUaGUgb3RoZXIgdGhpbmcgaXMg d2UgcHJvYmFibHkgZG9uJ3Qgd2FudCB0byBjbGVhbiBvdXQgdGhlIGF0b21pYw0KcmVzZXJ2ZXMg YW5kIGFkZCB0aGVtIHRvIGEgY2FjaGUganVzdCBmb3Igb25lIHBhZ2UuIEkgb3B0ZWQgdG8ganVz dA0KY29udmVydCBvbmUgcGFnZSBpbiB0aGUgR0ZQX0FUT01JQyBjYXNlLg0KDQo+ICtzdGF0aWMg dm9pZCBmcmVlX3BhZ2VfcHRlX21hcHBlZChzdHJ1Y3QgcGFnZSAqcGFnZSkNCj4gK3sNCj4gKwlw dGVfbWFwcGVkX2NhY2hlX2FkZCgmcHRlX21hcHBlZF9jYWNoZSwgcGFnZSk7DQo+ICt9DQo+ICsN Cj4gK3N0YXRpYyBzdHJ1Y3QgcHRlX21hcHBlZF9jYWNoZSAqcHRlX21hcHBlZF9jYWNoZV9mcm9t X3NjKHN0cnVjdA0KPiBzaHJpbmtlciAqc2gpDQo+ICt7DQo+ICsJcmV0dXJuIGNvbnRhaW5lcl9v ZihzaCwgc3RydWN0IHB0ZV9tYXBwZWRfY2FjaGUsIHNocmlua2VyKTsNCj4gK30NCj4gKw0KPiAr c3RhdGljIHVuc2lnbmVkIGxvbmcgcHRlX21hcHBlZF9jYWNoZV9zaHJpbmtfY291bnQoc3RydWN0 IHNocmlua2VyDQo+ICpzaHJpbmtlciwNCj4gKwkJCQkJCSAgIHN0cnVjdA0KPiBzaHJpbmtfY29u dHJvbCAqc2MpDQo+ICt7DQo+ICsJc3RydWN0IHB0ZV9tYXBwZWRfY2FjaGUgKmNhY2hlID0NCj4g cHRlX21hcHBlZF9jYWNoZV9mcm9tX3NjKHNocmlua2VyKTsNCj4gKwl1bnNpZ25lZCBsb25nIGNv dW50ID0gbGlzdF9scnVfc2hyaW5rX2NvdW50KCZjYWNoZS0+bHJ1LCBzYyk7DQo+ICsNCj4gKwly ZXR1cm4gY291bnQgPyBjb3VudCA6IFNIUklOS19FTVBUWTsNCj4gK30NCj4gKw0KPiArc3RhdGlj IGVudW0gbHJ1X3N0YXR1cyBwdGVfbWFwcGVkX2NhY2hlX3Nocmlua19pc29sYXRlKHN0cnVjdA0K PiBsaXN0X2hlYWQgKml0ZW0sDQo+ICsJCQkJCQkgICAgICAgc3RydWN0DQo+IGxpc3RfbHJ1X29u ZSAqbHN0LA0KPiArCQkJCQkJICAgICAgIHNwaW5sb2NrX3QNCj4gKmxvY2ssDQo+ICsJCQkJCQkg ICAgICAgdm9pZCAqY2JfYXJnKQ0KPiArew0KPiArCXN0cnVjdCBsaXN0X2hlYWQgKmZyZWVhYmxl ID0gY2JfYXJnOw0KPiArDQo+ICsJbGlzdF9scnVfaXNvbGF0ZV9tb3ZlKGxzdCwgaXRlbSwgZnJl ZWFibGUpOw0KPiArDQo+ICsJcmV0dXJuIExSVV9SRU1PVkVEOw0KPiArfQ0KPiArDQo+ICtzdGF0 aWMgdW5zaWduZWQgbG9uZyBwdGVfbWFwcGVkX2NhY2hlX3Nocmlua19zY2FuKHN0cnVjdCBzaHJp bmtlcg0KPiAqc2hyaW5rZXIsDQo+ICsJCQkJCQkgIHN0cnVjdCBzaHJpbmtfY29udHJvbA0KPiAq c2MpDQo+ICt7DQo+ICsJc3RydWN0IHB0ZV9tYXBwZWRfY2FjaGUgKmNhY2hlID0NCj4gcHRlX21h cHBlZF9jYWNoZV9mcm9tX3NjKHNocmlua2VyKTsNCj4gKwlzdHJ1Y3QgbGlzdF9oZWFkICpjdXIs ICpuZXh0Ow0KPiArCXVuc2lnbmVkIGxvbmcgaXNvbGF0ZWQ7DQo+ICsJTElTVF9IRUFEKGZyZWVh YmxlKTsNCj4gKw0KPiArCWlzb2xhdGVkID0gbGlzdF9scnVfc2hyaW5rX3dhbGsoJmNhY2hlLT5s cnUsIHNjLA0KPiArCQkJCQlwdGVfbWFwcGVkX2NhY2hlX3Nocmlua19pc29sYXRlDQo+ICwNCj4g KwkJCQkJJmZyZWVhYmxlKTsNCj4gKw0KPiArCWxpc3RfZm9yX2VhY2hfc2FmZShjdXIsIG5leHQs ICZmcmVlYWJsZSkgew0KPiArCQlzdHJ1Y3QgcGFnZSAqcGFnZSA9IGxpc3RfZW50cnkoY3VyLCBz dHJ1Y3QgcGFnZSwgbHJ1KTsNCj4gKw0KPiArCQlsaXN0X2RlbChjdXIpOw0KPiArCQlfX2ZyZWVf cGFnZXNfb2socGFnZSwgMCwgRlBJX05PX1BURV9NQVApOw0KPiArCX0NCj4gKw0KPiArCS8qIEV2 ZXJ5IGl0ZW0gd2Fsa2VkIGdldHMgaXNvbGF0ZWQgKi8NCj4gKwlzYy0+bnJfc2Nhbm5lZCArPSBp c29sYXRlZDsNCj4gKw0KPiArCXJldHVybiBpc29sYXRlZDsNCj4gK30NCj4gKw0KPiArc3RhdGlj IGludCBfX3B0ZV9tYXBwZWRfY2FjaGVfaW5pdChzdHJ1Y3QgcHRlX21hcHBlZF9jYWNoZSAqY2Fj aGUpDQo+ICt7DQo+ICsJaW50IGVycjsNCj4gKw0KPiArCWVyciA9IGxpc3RfbHJ1X2luaXQoJmNh Y2hlLT5scnUpOw0KPiArCWlmIChlcnIpDQo+ICsJCXJldHVybiBlcnI7DQo+ICsNCj4gKwljYWNo ZS0+c2hyaW5rZXIuY291bnRfb2JqZWN0cyA9IHB0ZV9tYXBwZWRfY2FjaGVfc2hyaW5rX2NvdW50 Ow0KPiArCWNhY2hlLT5zaHJpbmtlci5zY2FuX29iamVjdHMgPSBwdGVfbWFwcGVkX2NhY2hlX3No cmlua19zY2FuOw0KPiArCWNhY2hlLT5zaHJpbmtlci5zZWVrcyA9IERFRkFVTFRfU0VFS1M7DQo+ ICsJY2FjaGUtPnNocmlua2VyLmZsYWdzID0gU0hSSU5LRVJfTlVNQV9BV0FSRTsNCj4gKw0KPiAr CWVyciA9IHJlZ2lzdGVyX3Nocmlua2VyKCZjYWNoZS0+c2hyaW5rZXIpOw0KPiArCWlmIChlcnIp DQo+ICsJCWdvdG8gZXJyX2xpc3RfbHJ1X2Rlc3Ryb3k7DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4g Kw0KPiArZXJyX2xpc3RfbHJ1X2Rlc3Ryb3k6DQo+ICsJbGlzdF9scnVfZGVzdHJveSgmY2FjaGUt PmxydSk7DQo+ICsJcmV0dXJuIGVycjsNCj4gK30NCj4gKw0KPiArdm9pZCBfX2luaXQgcHRlX21h cHBlZF9jYWNoZV9pbml0KHZvaWQpDQo+ICt7DQo+ICsJaWYgKGdmcF9hbGxvd2VkX21hc2sgJiBf X0dGUF9QVEVfTUFQUEVEKQ0KPiArCQlyZXR1cm47DQo+ICsNCj4gKwlpZiAoIV9fcHRlX21hcHBl ZF9jYWNoZV9pbml0KCZwdGVfbWFwcGVkX2NhY2hlKSkNCj4gKwkJZ2ZwX2FsbG93ZWRfbWFzayB8 PSBfX0dGUF9QVEVfTUFQUEVEOw0KPiArfQ0KPiArI2Vsc2UNCj4gK3ZvaWQgX19pbml0IHB0ZV9t YXBwZWRfY2FjaGVfaW5pdCh2b2lkKQ0KPiArew0KPiArfQ0KPiArI2VuZGlmIC8qIENPTkZJR19B UkNIX1dBTlRTX1BURV9NQVBQRURfQ0FDSEUgKi8NCj4gKw0KPiAgLyoqDQo+ICAgKiBucl9mcmVl X3pvbmVfcGFnZXMgLSBjb3VudCBudW1iZXIgb2YgcGFnZXMgYmV5b25kIGhpZ2ggd2F0ZXJtYXJr DQo+ICAgKiBAb2Zmc2V0OiBUaGUgem9uZSBpbmRleCBvZiB0aGUgaGlnaGVzdCB6b25lDQo=