From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=pass header.oldest-pass=0 smtp.remote-ip=44.245.243.92 ARC-Seal: i=2; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=pass; t=1794498963; b=MD1Hoi4XCuWdPqrsMCtnWP0lWOUeLNV5j0NyolHhBKsYDMtCeYwYZXj9B0fo1FDpAsfU DcbmA3seqddcxpBMS3FzZtDsYQsmxC3uhRelaaSSWx7p+bFc+LVTe+YKsAi74rK3aAP// LcrDW0nUzqQ7z+gujwnTLHjPOOn54DTHGyhRRi1YgcerHUCplPwjcSndHr72uPotws0ts RhqmO4BpiANeecXIpv4c/VspLFnUZCCyUeCzMfn1kA/nVHD0m1Z5EZXmpigyW4m9a0Mw/ hrn+LhtZqMSxIFt6kPjDrkq1pBHiywhvZNRr60NPBqgS/2oo5yZ+LW/5LGNvgQ9PUCg== ARC-Message-Signature: i=2; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1794498963; h=DMARC-Filter:DKIM-Signature:X-CSE-ConnectionGUID:X-CSE-MsgGUID: X-IronPort-AV:Received:Received:X-Farcaster-Flow-ID:Received:Received: Received:Received:From:To:CC:Subject:Thread-Topic:Thread-Index:Date: Message-ID:References:In-Reply-To:Accept-Language:Content-Language: X-MS-Has-Attach:X-MS-TNEF-Correlator:x-ms-publictraffictype: x-ms-traffictypediagnostic:x-ms-office365-filtering-correlation-id: x-ms-exchange-senderadcheck:x-ms-exchange-antispam-relay: x-microsoft-antispam:x-microsoft-antispam-message-info: x-forefront-antispam-report: x-ms-exchange-antispam-messagedata-chunkcount: x-ms-exchange-antispam-messagedata-0:Content-Type: Content-Transfer-Encoding:MIME-Version: X-Exchange-RoutingPolicyChecked:X-MS-Exchange-CrossTenant-AuthAs: X-MS-Exchange-CrossTenant-AuthSource: X-MS-Exchange-CrossTenant-Network-Message-Id: X-MS-Exchange-CrossTenant-originalarrivaltime: X-MS-Exchange-CrossTenant-fromentityheader: X-MS-Exchange-CrossTenant-id:X-MS-Exchange-CrossTenant-mailboxtype: X-MS-Exchange-CrossTenant-userprincipalname: X-MS-Exchange-Transport-CrossTenantHeadersStamped:X-OriginatorOrg; bh=8XD8Yhgbhd8Wtr93h4U3PQ2hUNmjMvwNU70eCB35m0s=; b=veMIy69rX0zmHae2mes2YAjtqMukvRs0ldCxKH0pAH89O1gFigC1KHeFx2PwSEu3Ze2g GQMkz66C327E41ofDLI1si7apKqV7lIErxPVuaAXI4RQSPwX0H5unM2TRfh9chNvhunqP 1Hl3/3FySVQ6E6OTQu4yzUM+7qvRvLuxlpprsWyx8cArAgIHokpmd3aOBc7la7EsE+aqT FoKNZEdY/LQR7TGNmsU7RWTve4Wjw7/ZCDNfhZLuRceJuErfJObGUGGzZIIIZzyW/N7rg kFB/UbOuYSmHWfHBJ1XfZa4/yAi/vHdlzBksXA172VXMS9jZZg1X6Mh0rM0DGlVPTxw== ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass header.from=amazon.com; spf=pass smtp.mailfrom=amazon.com; dkim=pass header.d=amazon.com header.i=@amazon.com header.a=rsa-sha256 header.s=amazoncorp2 header.b=sltAm1yC; arc=pass header.oldest-pass=0 smtp.remote-ip=44.245.243.92 Received: from pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com (pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com [44.245.243.92]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 813AD606A323 for ; Thu, 12 Nov 2026 15:56:03 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org 813AD606A323 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amazon.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=amazon.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key, unprotected) header.d=amazon.com header.i=@amazon.com header.a=rsa-sha256 header.s=amazoncorp2 header.b=sltAm1yC DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1794498963; x=1826034963; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=8XD8Yhgbhd8Wtr93h4U3PQ2hUNmjMvwNU70eCB35m0s=; b=sltAm1yCIuJSPl9uE6KeMFYop2SdxmqSXnkoopv6frR8YFQYVF7Ix8Ee 8ip1g35fmJBYbJV2HduY3T3ATRU6596qpgIjIRIcErnliaBcLw8SrWV1z pOQLeO/5GKKbfT/YvGLyK9u0AE/dxZAJxm1Pce1dRgRMcAkGdYEEWarMJ jo7dY3lQczPLioBFvzk//TyFDnz7iYzCDvC3lo+NWsXxBTSs4S/mOLgO4 0PtS0AwuwC0RwNxhLYO2Oc/fHmMQ1z/JYzvl5Kmj36wf5eiKyf8VPzolf 8/TtNQP5VOo2ONMyezHZWwOXEgtHRHah3Cpaszed53EIsJu/vnhmEm+3p g==; X-CSE-ConnectionGUID: u/H7yhw1QjaxFvnAvV0r0g== X-CSE-MsgGUID: fSiVrekuRIaULggxd5E1tg== X-IronPort-AV: E=Sophos;i="6.27,209,1787011200"; d="scan'208";a="33338830" Received: from ip-10-5-12-219.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.12.219]) by internal-pdx-out-001.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Nov 2026 15:56:00 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.111:1553] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.50.212:2525] with esmtp (Farcaster) id 0c3254e6-2b44-4e26-b1a1-b946f9573121; Thu, 12 Nov 2026 15:56:00 +0000 (UTC) X-Farcaster-Flow-ID: 0c3254e6-2b44-4e26-b1a1-b946f9573121 Received: from EX19EXOUWA001.ant.amazon.com (10.250.64.209) by EX19MTAUWC002.ant.amazon.com (10.250.64.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.56; Thu, 12 Nov 2026 15:56:00 +0000 Received: from PH0PR07CU006.outbound.protection.outlook.com (10.250.64.168) by EX19EXOUWA001.ant.amazon.com (10.250.64.209) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.56 via Frontend Transport; Thu, 12 Nov 2026 15:55:59 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=mUmnQh7mKDeuqyBTySI11qh7Z2WZr77b/b5SoTn0O7CT0Oc30Jol9eFiBb7Y8agzAb2DYxlVxjsfpR9jw2mz79Vfx4g4le3uDzOFwL6zEs/q8oU6VdU3pO+ePJZdovTz5wWuoydABJoFAc9Y1y2CtpCamcpaxAj0bEkDXmc2UJdivvxbsTya+WTWJHYHNoOCbis1Va86Jw34xEqXoVaanIqxY7BhS110V6MSTlWc6+288POZXxasXzWSvgh3H5lvfGHm41fAG1Mz4Yuc7rLKooxeyriio54N0cAOZH6Kdnvi7MP8ztnZf8TKimOoaSHLGKUyoBkt6mJSOqOiPKzSnA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=8XD8Yhgbhd8Wtr93h4U3PQ2hUNmjMvwNU70eCB35m0s=; b=C3r0PbiyalHF7gXlQZXNmV4wIEuscjAtZ5iAB6TJYpAP4/lIL4fxLQvzh9nyZVuhg6yaE4qp59X8qk2mPIqWF8L5eHj40NKWiS7lxJ2apDPj1wngacpBTeGg3pcIZ+lx4pGBGfybb6HZbra3wLBFrbJLbAvvyC+iJv/1QVFVnXuoc7eS+ZAS+sX5DnKZ476hE1hBGtnolGsi32mj2HRJHb1G03/555V8w9xvL+l0ONEu54sUvD9hAPYHssPfBgKKrsHWa6XOblLrR2Vr8IbKHocqetaT0JxRx1NAi0sFBa3Zum0wf6esYQSLepNVetxWhbHmXntTrZ3vNb0CApt4vA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amazon.com; dmarc=pass action=none header.from=amazon.com; dkim=pass header.d=amazon.com; arc=none Received: from BY3PR18MB4722.namprd18.prod.outlook.com (2603:10b6:a03:3c9::19) by EAYPR18MB988421.namprd18.prod.outlook.com (2603:10b6:303:2d1::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.13; Thu, 12 Nov 2026 15:55:56 +0000 Received: from BY3PR18MB4722.namprd18.prod.outlook.com ([fe80::e307:5f61:2694:b219]) by BY3PR18MB4722.namprd18.prod.outlook.com ([fe80::e307:5f61:2694:b219%4]) with mapi id 15.21.0592.009; Thu, 12 Nov 2026 15:55:56 +0000 From: "Farber, Eliav" To: "David Hildenbrand (Arm)" , Andrew Morton , Greg Kroah-Hartman CC: Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , "Suren Baghdasaryan" , Michal Hocko , Jann Horn , Pedro Falcato , "linux-mm@kvack.org" , "linux-kernel@vger.kernel.org" Subject: RE: [PATCH 2/4] mm: add vmf_insert_pfn_order() and vmf_pfn_order_ok() helpers Thread-Topic: [PATCH 2/4] mm: add vmf_insert_pfn_order() and vmf_pfn_order_ok() helpers Thread-Index: AQHdcr5NQpqRWOmbXUOUja7bZ9rrFg== Date: Thu, 12 Nov 2026 15:55:56 +0000 Message-ID: References: <20261111113045.35368-1-farbere@amazon.com> <20261111113045.35368-3-farbere@amazon.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amazon.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BY3PR18MB4722:EE_|EAYPR18MB988421:EE_ x-ms-office365-filtering-correlation-id: de99b99d-0626-4332-a964-08df40d5706a x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|23010399003|7416014|10070799003|366016|1800799024|11063799006|38070700021|5023799004|261022105027099003|4143699003|261026121527099003|56012099006|261009223027099003|261022075727099003|261021121427099003|261028144727099003|261021123027099003|261102123227099003|261026140227099003|10067099003|6133799003|22082099003|18002099003; x-microsoft-antispam-message-info: 3LYrZfFpGACax+LKhfrnwJugAGCrYGUSfUMslCccJNusV8+YXEuMt5mSfo92xtwx/nuDgFjh8gcdSZqL7fh9dDrgwf2GTHo4GoVC/L9tRgEQY4TMzOkkR1FvBwy7J7vlass04x49B/w6Blkj7fvid3+jEypxD22awFfs40PYn5TuwvMVWHIw4hNuL9VqjCx+leUHwQNzWqGVZzAaFI+yS/6UHQWPdz7EVCYkMJtULm64BMQM4tC+BwPd/SHvsb6CSoIBIz2taGTMS+yjolh7LDyKeJ/fpXXoNlUq24ay96bQA+ePm0fVKFAAvrx/T2/LyCcbGiCpORn48D7+xICeDQFKXcI7oYWmGEwVLsuGz/PDSm22vcr6+C0y4nDxYaM0a+4fGhGbMr00Hjjm3P+sDfXuF4LwZiDeZQv0DTe4DliW778aMmMVYG9uUUuQcMxBnt3MxVjz/aQBBaE0891WrTbDGaxlF5UlhdRxLxtMBPz54Rnkg3D7GwFueTA/qh3pIYfjVtHge5+1CYFccg+wIXnNvk2CiirO4IptYJGOIQEO5imr4A9TKBKjMOLCjZ/eVvfdpCo9wcn1GY/d3XZtMSKjyiZ8lyreswKomTv1/804aQXXC4UidS9lOuwf2ZU4XfnAFLAo/BDkyfgKG9ot+QLw3NPtWjj0QaZU57RjLS0= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY3PR18MB4722.namprd18.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(23010399003)(7416014)(10070799003)(366016)(1800799024)(11063799006)(38070700021)(5023799004)(261022105027099003)(4143699003)(261026121527099003)(56012099006)(261009223027099003)(261022075727099003)(261021121427099003)(261028144727099003)(261021123027099003)(261102123227099003)(261026140227099003)(10067099003)(6133799003)(22082099003)(18002099003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?YVZEOUE2SEk3M3UvZUZhajZDQ0RoNmIycmFvVlRDSnJDQ2NRdGhRQTJJclh6?= =?utf-8?B?RGNsOFY0WVFxTHIrUk5PY1FmUFJCYUx0TXJTNFI4TWNtZUJYT1YrNi9LQ0Rx?= =?utf-8?B?VHpZanpUeGFwNE5QZG90MVV0cXJhS3VvN1YzaFdrNnRVdHpRRDZ2OWRPbmVw?= =?utf-8?B?aEM3YllQd0NiWHN0cFpoSDExRUVrcXF5ZVl3SkVBN2w5U0ozZGVsQ2dBNkJt?= =?utf-8?B?cDFLYTJyRytRRXVwQi9VYUtWeHZhdlVSNWEyRCtOYjhQaFNVb3l4UC9acjlB?= =?utf-8?B?Umh3aE9GSVF6UnMvQlhKVU5hSHlra1VBRzQrRTNEYkFoK2JmY2NyOG9pZjdk?= =?utf-8?B?QjUxUGwvUFVqYWhXQ0JEZGptZVVPRnNpU2U0aUdycTZROHo0Nm82bVJhNGth?= =?utf-8?B?WkhVVnFTL2Jiek93RHB4ZktSaHU1cTlYZXFGeFR2MjNjd3lKeEV4ajRGcGdx?= =?utf-8?B?TnJ0S2NhRDhVNHl5UkVQWVd3WkhXS1pQTTFDaUZnNFhpN2lRdXZ0cExCNFpW?= =?utf-8?B?dmprRk5IalN5V04yYUEyWkl4RHVuNENWZXg2MTZRbDl5UFFhbFBTMFlLNHU3?= =?utf-8?B?S0VYcXZxYkwycFFiQkYvalU4bmpWTUIxbXRnSUQ2WFF1VUhXVERIN1hSK3BZ?= =?utf-8?B?UDQ5YkdheFZYSHhZS0dpR2VNN2hyVnlYR3hCeVh3MkU2NlRsei9ScERxZ29r?= =?utf-8?B?NzltV2FoZTU0VTUvZVhKWDd5anVrU0ZjSWNBZDBzeGtKMWFyUzZwWlpmZ3dW?= =?utf-8?B?OEdQNDBhTTlsdm5Oa1RVaDhrdm5haWk2VWpHMnVRZ2k4dWZKNUJqOVY0SEZB?= =?utf-8?B?elVQMmowVUczQ1NYcWFtSU41RUlBZjZtUXdVSzJlVWdUZXZpVHRXekRUbDJz?= =?utf-8?B?bFlVSlh5cVd4c2NKOEZ1dytqclpoMmVra2xIdk93ZDJUeFlSNWhHREJ2UEx1?= =?utf-8?B?WUd2MDl3Y0Z0RlNXQTNXeVozeFRiYXlCdHFQTWdjOWtjcjVlQWY5VUplZGxo?= =?utf-8?B?TTE0Y2JLaUc1QjNSMTYwNXgvRzJkMHpaN2ovVDRLMXc3RU4rL0RBdWpQRXkw?= =?utf-8?B?dkRwV0k5Sm1hZXFVSGtONDlrTVVQUUNSeGwvbjlZa3ZlWXNBVXM5UXM5dkR3?= =?utf-8?B?cEthU0M1aERON25PYVY5NzVmcVAvd3o5ZS9KYWwzYUpLYS9QSmlBL0xPWTgz?= =?utf-8?B?RjJ2OWN3RDdXSWZ5UlJiYnlXUlRISWp1dHljQnNPWnhhaWdIOTlKVVhoN0tY?= =?utf-8?B?c2lqSGFhc0ZVMUg5OVNXZVNWMjh4aytNSEdSaW85TnV1L3hvbEI5ZXNZV1VC?= =?utf-8?B?LzU2R3FabDlHckxOY3U4YTNBK0cxMW5TaDZLbXg2WnQxUExrQ2lzRXBHMG9j?= =?utf-8?B?aHJaVzJOeXh2QUtKUnBuT2t4SnBnS3FTNk1aU0ZTM3dBM0lmZHpzZ0xzL1RS?= =?utf-8?B?ZEs0RFUweENVZko5d0o3VHArVkt0YW1vdzRjbHNvQUlqWllCUzNUWG1oNmM1?= =?utf-8?B?cG1WWTE2cFZGZThXQnRvR21acUN3NkVhUUZvYlJySzl0QVVpL05FNlVlVXF3?= =?utf-8?B?eTNrTGN4SXBIZ0F3U2Y5NHZqemE2MHg5N0lhazd5aWlzdDBock1YY2o2Z295?= =?utf-8?B?Q1N6YWxXZFY1eUlpUVN2TVZyVVhFRzhOZktlK0tXRjJqRG9vZ1J3ajZlTms1?= =?utf-8?B?R2pHWWhOVm9EclBJYW5od3FWcU9CKzJERnlqdHBmYmlhU2FOVVR0OVdPdC8w?= =?utf-8?B?TzFqY3l0Y3AzMlBTckRmUWtxcE9xYW1Yc0N2ZXljZWFlbk80SlVDRnlDM1JM?= =?utf-8?B?Z2hjM3R1K2VQT25ETHhYM080RnhJN2VjWmtFVFF6VkdRc0hDdVpUU1NaRkha?= =?utf-8?B?ZFUwRTlIbHNWRUxjOEJMYlo5cGlVVzdRSWV1TzNvV2pIRmNiZ2xlaytpM3RT?= =?utf-8?B?eCtZYkN2VklOUDU4SFdyY1lZWEZnSHA2WjdqWkNwYm80TENqZWpsWElrUk9n?= =?utf-8?B?U0NKQ3UwZWtIOU5ScTZrMUlXRnQ0OW5WdnBrWTdzbDlObm14bWRlS2hLUnBK?= =?utf-8?B?K0dQTnpJQnN4NWF5Q0s5dnFjdmcxMXZOZDF1MnUwdTU2TWJPMmx4SDQ5Sk9C?= =?utf-8?B?YjJIaS9Gc2dNak1LUExMZmxRc3FndFBBVXA3MUVRaTFXR09lakhndU5IUm82?= =?utf-8?B?UTdWbmMvemdITnNCSjh0ZzgrNmo3UUtJYUpYa2RMZ2c5QTlxL0FYUVBQM1FG?= =?utf-8?B?S0tiK1hqc213UnZyU0VQSzd2N0RoYmYrNmNweHNvMk9qOWMrK3BaWDQ1RFE5?= =?utf-8?B?VWlPbytZb1hLWnA1Q244dGZWQkZxTC9zQW5tcTNwbWZiSlJGSi9LL3hNTlM5?= =?utf-8?Q?WIa62QB3096HmkdlPBfZP0a7veYJ59I7vNeE4?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: dgzgaz6+M+B73HOtAIwgoud89thPjt9TIw6/9a4J8RtA+RGeq/a6/4L2F0MORJmXOCeb0Sgg0CcWhF9x+IGIbn6NfTXv9p9Lyb867LrNz2tWBGtEuM5dih5b7lLCIUDftdAIV5xui1A9BqA0mzbvX5P573Gnh6aAWGymlis+u/sKnVCaGgeZTMMB5uC0HfJr1XHq9aPdZPIhfsSkvBhTJHVvVunh3+tv/QF8GIV0oSgUDWm9+/WWQFkVr1J4QP5Lh49m3Jzr+ZSGVstpTDaZ9lt/DKT2CQPg3R+0q1sRTVPfgV6JfOBAeWCK+ReN6U7ZYCjWEbLVvb4nrC4LYYCRoA== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BY3PR18MB4722.namprd18.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: de99b99d-0626-4332-a964-08df40d5706a X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Nov 2026 15:55:56.7650 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 5280104a-472d-4538-9ccf-1e1d0efe8b1b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: WYEUWyE0KI49PNEBFZ1TrohEqHFz4tHXdCVf0aMAE7x6U5v4ZiWfi6z0LDz0pz8xd3PxfKVRF5g/GjduhxrB/g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: EAYPR18MB988421 X-OriginatorOrg: amazon.com T24gMTEvMTIvMjYgMTQ6MDIsIERhdmlkIEhpbGRlbmJyYW5kIChBcm0pIHdyb3RlOg0KPj4gKyAg ICByZXR1cm4gIW9yZGVyIHx8IChhZGRyID49IHZtYS0+dm1fc3RhcnQgJiYNCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgYWRkciArIChQQUdFX1NJWkUgPDwgb3JkZXIpIDw9IHZtYS0+dm1fZW5k ICYmDQo+PiArICAgICAgICAgICAgICAgICAgICAgIElTX0FMSUdORUQocGZuLCAxVUwgPDwgb3Jk ZXIpKTsNCj4gDQo+IFRvIG1ha2UgdGhpcyBzb21ld2hhdCBjb25zdW1hYmxlIGZvciBhIGh1bWFu LA0KPiANCj4gaWYgKCFvcmRlcikNCj4gICAgICAgcmV0dXJuIHRydWU7DQo+IHJldHVybiBzdGFy dCA+PSB2bWEtPnZtX3N0YXJ0ICYmIGVuZCA8PSB2bWEtPnZtX2VuZDsNCg0KV2UgY3Jvc3NlZCBp biBmbGlnaHQ6IHYyIHdlbnQgb3V0IGFib3V0IHNpeCBtaW51dGVzIGJlZm9yZSB5b3VyIG1haWws IHNvDQp5b3Ugd2VyZSByZWFkaW5nIHYxLiBJIHBvc3RlZCBpdCB0byBhZGRyZXNzIHNhc2hpa28t Ym90J3MgcmV2aWV3IG9mIHYxLA0Kd2hpY2ggZm91bmQgYSB3cml0ZS1mbGFnIGFzeW1tZXRyeSBp biB0aGlzIHBhdGNoIGFuZCBhIENPVyBwcm9ibGVtIGluDQpwYXRjaGVzIDMgYW5kIDQuIHZtZl9w Zm5fb3JkZXJfb2soKSBpcyB1bmNoYW5nZWQgdGhlcmUsIHNvIGFsbCB0aHJlZSBvZg0KeW91ciBj b21tZW50cyBhcHBseSB0byB2MiBhcyBwb3N0ZWQuDQoNCkFncmVlZCBvbiB0aGUgc2hhcGUuIFlv dXIgdmVyc2lvbiBkcm9wcyB0aGUgcGZuIHRlcm0sIHdoaWNoIGlzIHlvdXIgbmV4dA0KcXVlc3Rp b24sIHNvIGxldCBtZSBhbnN3ZXIgdGhhdCBhbmQgdGhlbiBwcm9wb3NlIGRlbGV0aW5nIHRoZSBo ZWxwZXIuDQoNCj4gQW5kIG1heWJlIHJlamVjdGluZyBJU19BTElHTkVEKHBmbiwgMVVMIDw8IG9y ZGVyKSB3aXRoIFdBUk5fT05DRSgpIGFzIHRoaXMNCj4gc291bmRzIGxpa2UgdGhlIHVzZXIgaXMg ZG9pbmcgc29tZXRoaW5nIHN0dXBpZD8NCg0KQSBtaXNhbGlnbmVkIHBmbiBpcyBub3QgYSBjYWxs ZXIgYnVnLCBpdCBpcyB3aGF0IHVzZXJzcGFjZSBhc2tlZCBmb3IuIEZvcg0KL2Rldi9tZW0sIHZt X3Bnb2ZmIGlzIHRoZSBiYXNlIHBmbiwgc28gYW4gbW1hcCgpIGF0IGEgcGFnZS1hbGlnbmVkIGJ1 dCBub3QNClBNRC1hbGlnbmVkIHBoeXNpY2FsIG9mZnNldCBnaXZlcyBhIHBmbiB0aGF0IGNhbm5v dCBiZSBtYXBwZWQgYXQgUE1EIG9yZGVyLg0KRmFsbGluZyBiYWNrIHRvIFBURSBvcmRlciBpcyB0 aGUgY29ycmVjdCBhbnN3ZXIuIFRoZSBzZWxmdGVzdCBjb3ZlcnMgdGhpcw0KZGlyZWN0bHk6IGl0 IG1hcHMgL2Rldi9tZW0gYXQgb2Zmc2V0ICs0SyBvbnRvIGEgUE1ELWFsaWduZWQgVkEsIHNvIHRo ZQ0Kd2luZG93IHRlcm0gcGFzc2VzIGFuZCBvbmx5IHRoZSBwZm4gdGVybSBmYWlscywgYW5kIGl0 IGFzc2VydHMgYm90aCB0aGUgNEsNCmZhbGxiYWNrIGFuZCB0aGF0IHRoZSBkYXRhIHJlYWQgYmFj ayBpcyB0aGUgZGF0YSBhdCB0aGF0IHBoeXNpY2FsIGFkZHJlc3MuDQpBIFdBUk4gdGhlcmUgd291 bGQgZmlyZSBvbiBhbiBvcmRpbmFyeSBtbWFwKCkuDQoNCkRyb3BwaW5nIHRoZSB0ZXJtIGlzIHdv cnNlIHRoYW4gYSBXQVJOLCBiZWNhdXNlIG5vdGhpbmcgYmVsb3cgY2F0Y2hlcyBpdC4NCng4NiBw Zm5fcG1kKCkgbWFza3MgdGhlIHBmbjoNCg0KICAgICAgICBzdGF0aWMgaW5saW5lIHBtZF90IHBm bl9wbWQodW5zaWduZWQgbG9uZyBwYWdlX25yLCBwZ3Byb3RfdCBwZ3Byb3QpDQogICAgICAgIHsN CiAgICAgICAgICAgICAgICBwaHlzX2FkZHJfdCBwZm4gPSAocGh5c19hZGRyX3QpcGFnZV9uciA8 PCBQQUdFX1NISUZUOw0KICAgICAgICAgICAgICAgIHBmbiBePSBwcm90bm9uZV9tYXNrKHBncHJv dF92YWwocGdwcm90KSk7DQogICAgICAgICAgICAgICAgcGZuICY9IFBIWVNJQ0FMX1BNRF9QQUdF X01BU0s7DQoNCnNvIGEgbWlzYWxpZ25lZCBwZm4gaXMgc2lsZW50bHkgcm91bmRlZCBkb3duIGFu ZCB0aGUgbWFwcGluZyBwb2ludHMgYXQgdGhlDQp3cm9uZyBwaHlzaWNhbCBtZW1vcnkuIHBmbl9w dWQoKSBkb2VzIHRoZSBzYW1lIHdpdGggUEhZU0lDQUxfUFVEX1BBR0VfTUFTSy4NCg0KPiBCdXQg bG9va2luZyBhZ2FpbiwgdGhpcyBhbGwgbG9va3MgbGlrZSBzYW5pdHkgY2hlY2tzIHdoZXJlIHRo ZSB1c2VyIGlzIGp1c3QNCj4gZG9pbmcgc29tZXRoaW5nIHN0dXBpZD8NCj4gDQo+IFdoeSBpcyB0 aGF0IHJlcXVpcmVkIGF0IGFsbD8gSSdkIGdldCByaWQgb2YgdGhpcyBlbnRpcmVseS4NCg0KVGhl IGNoZWNrIGlzIHJlcXVpcmVkIG9uIHRoZSBmYXVsdCBwYXRoIGJlY2F1c2UgbW0gYXNrcyB0aGUg aGFuZGxlciB0byBkbw0KaXQuIEZyb20gX190aHBfdm1hX2FsbG93YWJsZV9vcmRlcnMoKToNCg0K ICAgICAgICAvKg0KICAgICAgICAgKiBDaGVjayBhbGlnbm1lbnQgZm9yIGZpbGUgdm1hIGFuZCBz aXplIGZvciBib3RoIGZpbGUgYW5kIGFub24gdm1hIGJ5DQogICAgICAgICAqIGZpbHRlcmluZyBv dXQgdGhlIHVuc3VpdGFibGUgb3JkZXJzLg0KICAgICAgICAgKg0KICAgICAgICAgKiBTa2lwIHRo ZSBjaGVjayBmb3IgcGFnZSBmYXVsdC4gSHVnZSBmYXVsdCBkb2VzIHRoZSBjaGVjayBpbiBmYXVs dA0KICAgICAgICAgKiBoYW5kbGVycy4NCiAgICAgICAgICovDQogICAgICAgIGlmICghaW5fcGYp IHsNCg0KdGhwX3ZtYV9zdWl0YWJsZV9vcmRlcigpIGlzIHRoZSBzYW1lIGNoZWNrOiB0aGUgb3Jk ZXIgd2luZG93IHdpdGhpbiB0aGUNClZNQSwgcGx1cywgZm9yIGEgbm9uLWFub255bW91cyBWTUEs IElTX0FMSUdORUQodm1fc3RhcnQgPj4gUEFHRV9TSElGVCAtDQp2bV9wZ29mZiwgLi4uKSwgd2hp Y2ggZm9yIGEgUEZOTUFQIHdob3NlIHZtX3Bnb2ZmIGlzIHRoZSBiYXNlIHBmbiBpcyB0aGUNCnBm biBhbGlnbm1lbnQuIG1tJ3Mgb3duIGh1Z2UgaGFuZGxlciBob25vdXJzIHRoYXQgY29udHJhY3Q6 DQpkb19odWdlX3BtZF9hbm9ueW1vdXNfcGFnZSgpIG9wZW5zIHdpdGgNCg0KICAgICAgICBpZiAo IXRocF92bWFfc3VpdGFibGVfb3JkZXIodm1hLCBoYWRkciwgUE1EX09SREVSKSkNCiAgICAgICAg ICAgICAgICByZXR1cm4gVk1fRkFVTFRfRkFMTEJBQ0s7DQoNCmFuZCB0aGUgcGZuLW1hcHBpbmcg aGFuZGxlcnMgZWFjaCBjYXJyeSBhIHByaXZhdGUgY29weToNCmlzX2FsaWduZWRfZm9yX29yZGVy KCkgaW4gaW5jbHVkZS9saW51eC92ZmlvX3BjaV9jb3JlLmggZm9yIHZmaW8tcGNpIGFuZA0KbnZn cmFjZS1ncHUsIGRldmljZS1kYXggcmUtZGVyaXZlcyBpdCBmcm9tIGRldl9kYXgtPmFsaWduLCBh bmQgZnMvZGF4LmMgaGFzDQpkYXhfZmF1bHRfY2hlY2tfZmFsbGJhY2soKSwgd2hpY2ggdGVzdHMg dGhlIFBNRCBjb2xvdXIgYW5kIGJvdGggZW5kcyBvZiB0aGUNCndpbmRvdy4NCg0KU28gSSBhZ3Jl ZSB3aXRoIHdoZXJlIHlvdSBhcmUgZ29pbmcsIGp1c3Qgbm90IHRoYXQgaXQgY2FuIGJlIGRlbGV0 ZWQuIEkNCndvdWxkIHJhdGhlciBtb3ZlIGJvdGggdGVybXMgaW50byBtbSB0aGFuIGFkZCBhIHNl dmVudGggY29weS4gaW5zZXJ0X3BtZCgpDQphbmQgaW5zZXJ0X3B1ZCgpIGFyZSB0aGUgcmlnaHQg cGxhY2U6IHRoZXkgYWxyZWFkeSByZWplY3QNCmFkZHIgPCB2bV9zdGFydCB8fCBhZGRyID49IHZt X2VuZCwgYW5kIHRoZXkgYWxyZWFkeSBob2xkIHRoZSBwZm4gaW4NCmZvcC5wZm4uIFdoYXQgaXMg bWlzc2luZyB0aGVyZSBpcyB0aGUgZW5kIG9mIHRoZSB3aW5kb3cgYW5kLCBpbiB0aGUNCm5vbi1m b2xpbyBicmFuY2gsIHRoZSBhbGlnbm1lbnQuIENvbmNyZXRlbHk6DQoNCiAgLSBBZGQgdG8gaW5z ZXJ0X3BtZCgpLCBiZXNpZGUgdGhlIHN0YXJ0IHRlc3Q6DQogICAgYWRkciArIEhQQUdFX1BNRF9T SVpFID4gdm1hLT52bV9lbmQsIGFuZCwgaW4gdGhlICFmb3AuaXNfZm9saW8gY2FzZSwNCiAgICAh SVNfQUxJR05FRChmb3AucGZuLCBIUEFHRV9QTURfTlIpLCBib3RoIHJldHVybmluZyBWTV9GQVVM VF9GQUxMQkFDSy4NCiAgICBpbnNlcnRfcHVkKCkgdGhlIHNhbWUgd2l0aCBIUEFHRV9QVURfU0la RSBhbmQgSFBBR0VfUFVEX05SLiBUaGUNCiAgICBhbGlnbm1lbnQgdGVzdCBpcyBnYXRlZCBvbiAh Zm9wLmlzX2ZvbGlvLCBhbmQgdGhlIHdpbmRvdyB0ZXN0IGlzIGENCiAgICBuby1vcCBmb3IgdGhl IGZvbGlvIGNhbGxlcnMsIHNpbmNlIGRheF9mYXVsdF9jaGVja19mYWxsYmFjaygpIGFscmVhZHkN CiAgICByZWplY3RzIChwbWRfYWRkciArIFBNRF9TSVpFKSA+IHZtX2VuZCBiZWZvcmUgY2FsbGlu Zy4NCiAgLSBEcm9wIHZtZl9wZm5fb3JkZXJfb2soKSBlbnRpcmVseS4gTm8gY2FsbGVyIG5lZWRz IGl0IGFuZCBubyBuZXcgZHJpdmVyDQogICAgZG9lcyBnZW9tZXRyeS4NCg0KVGhhdCByZW1vdmVz IHRoZSBoZWxwZXIgeW91IG9iamVjdCB0bywgZml4ZXMgYW4gdW5jaGVja2VkIHdpbmRvdyBlbmQg dGhhdA0KZXhpc3RzIHRvZGF5IGZvciBldmVyeSBpbXBsZW1lbnRvciwgYW5kIGxlYXZlcyB2bWZf aW5zZXJ0X3Bmbl9vcmRlcigpIGFzDQp0aGUgb3JkZXIgZGlzcGF0Y2ggcGx1cyB0aGUgaHVnZS16 ZXJvIGFuZCBwZm5fbW9kaWZ5X2FsbG93ZWQoKSBjYXNlcy4NCg0KPiBXaHkgZG8gd2UgZXZlbiBj YXJlIGFib3V0IHRoZSBvcmRlcj8gV2h5IGlzbid0IGl0IHN1ZmZpY2llbnQgdGhhdCB3ZSBnZXQg Y2FsbGVkDQo+IHdpdGggImluc2VydCB0aGlzIHBmbiByYW5nZSIgYW5kIHdlIHNlZSBob3cgdG8g YmVzdCBtYXAgaXQgKHBmbi9wbWQvcHVkKT8NCj4gDQo+IFdoeSBkb2VzIHRoZSBjYWxsZXIgZXZl biBoYXZlIHRvIGNhcmUgYWJvdXQgKmhvdyogc29tZXRoaW5nIGlzIG1hcHBlZD8NCg0KSXQgZG9l cyBub3QsIGFuZCBpdCBkb2VzIG5vdCBjaG9vc2UuIG1tIHBpY2tzIHRoZSBvcmRlciBhbmQgdGVs bHMgdGhlDQpoYW5kbGVyIHdoaWNoIG9uZTogX19oYW5kbGVfbW1fZmF1bHQoKSB0cmllcyBjcmVh dGVfaHVnZV9wdWQoKSAtPg0KLT5odWdlX2ZhdWx0KHZtZiwgUFVEX09SREVSKSwgZGVzY2VuZHMg dG8gY3JlYXRlX2h1Z2VfcG1kKCkgLT4NCi0+aHVnZV9mYXVsdCh2bWYsIFBNRF9PUkRFUikgb24g Vk1fRkFVTFRfRkFMTEJBQ0ssIHRoZW4gdG8NCmhhbmRsZV9wdGVfZmF1bHQoKS4gdm1mX2luc2Vy dF9wZm5fb3JkZXIoKSBvbmx5IGRpc3BhdGNoZXMgb24gdGhlIGxldmVsIG1tDQpyZWFjaGVkLCB3 aGljaCBpcyB3aGF0IHZmaW9fcGNpX3ZtZl9pbnNlcnRfcGZuKCkgYWxyZWFkeSBvcGVuLWNvZGVz IHdpdGgNCnRoZSBzYW1lICFvcmRlciAvIFBNRF9PUkRFUiAvIFBVRF9PUkRFUiBsYWRkZXIuIFRo ZSBwYXRjaCBkZS1kdXBsaWNhdGVzDQp0aGF0OyBpdCBkb2VzIG5vdCBpbnRyb2R1Y2UgdGhlIG9y ZGVyLWJhc2VkIHNoYXBlLg0KDQpDaGFuZ2luZyB0aGUgaW50ZXJmYWNlIHRvICJoZXJlIGlzIGEg cGZuIHJhbmdlLCB5b3UgcGljayIgbWVhbnMgY2hhbmdpbmcNCi0+aHVnZV9mYXVsdCBpdHNlbGYs IGZvciBhbGwgb2YgaXRzIGltcGxlbWVudG9ycy4gVGhlIGZvbGlvLWJhY2tlZCBvbmVzDQpuZWVk IHRoZSBvcmRlciwgYmVjYXVzZSB0aGV5IGxvb2sgdXAgYSBmb2xpbyBvZiB0aGF0IHNpemUuIFRo YXQgc2VlbXMgbGlrZQ0KYSBiaWdnZXIgZGlzY3Vzc2lvbiB0aGFuIHRoaXMgc2VyaWVzLCBidXQg SSBhbSBoYXBweSB0byBoYXZlIGl0Lg0KDQpGb3IgVk1fUEZOTUFQIHNwZWNpZmljYWxseSB0aGVy ZSBpcyBhIG5hcnJvd2VyIHZlcnNpb24gb2YgeW91ciBpZGVhIHRoYXQNCmRvZXMgd29yaywgYW5k IHBhdGNoIDEgaXMgbW9zdCBvZiBpdDogcGZuX3JhbmdlX3RyYWNrKCkgYWxyZWFkeSBnaXZlcyBt bQ0KdGhlIHBmbiByYW5nZSBhdCBtbWFwKCkgdGltZSwgc28gdGhlIGZhdWx0IHBhdGggY291bGQg aW5zZXJ0IHdpdGhvdXQNCmNhbGxpbmcgdGhlIGRyaXZlciBhdCBhbGwuIFdoYXQgc3RvcHMgaXQg aXMgcGVyLWZhdWx0IHBvbGljeSwgbm90IHBhZ2UNCnRhYmxlIHdhbGtpbmc6IC9kZXYvbWVtIG11 c3QgcmUtY2hlY2sgcmFuZ2VfaXNfYWxsb3dlZCgpIGJlY2F1c2UNCnJldm9rZV9pb21lbSgpIGNh biB6YXAgdGhlIG1hcHBpbmcgYWZ0ZXIgbW1hcCgpLCBVSU8gbXVzdCB0ZXN0IGlkZXYtPmluZm8N CnVuZGVyIGluZm9fbG9jayBzbyBhIGZhdWx0IHJhY2luZyB1bmJpbmQgZ2V0cyBTSUdCVVMsIGFu ZCB2ZmlvLXBjaSBob2xkcw0KbWVtb3J5X2xvY2sgYW5kIGNoZWNrcyBfX3ZmaW9fcGNpX21lbW9y eV9lbmFibGVkKCkuIFRoYXQgaXMgd2h5DQotPmh1Z2VfZmF1bHQgZXhpc3RzIGZvciB0aGVzZSBt YXBwaW5ncy4NCg0KRG9lcyB0aGUgaW5zZXJ0X3BtZCgpL2luc2VydF9wdWQoKSBtb3ZlIGxvb2sg cmlnaHQgdG8geW91PyBUaGUgbWlzc2luZw0Kd2luZG93LWVuZCB0ZXN0IGlzIHByZS1leGlzdGlu Zywgc28gaXQgY291bGQgZXF1YWxseSBnbyBvbiB0aGUNCmh1Z2UtcGZubWFwIG1tIGZpeGVzIHNl cmllcyByYXRoZXIgdGhhbiBpbnNpZGUgdjMuIFNheSB3aGljaCB5b3UgcHJlZmVyDQphbmQgSSB3 aWxsIHNlbmQgaXQgdGhhdCB3YXkuDQoNCldoYXQgY2hhbmdlZCBpbiB0aGlzIHBhdGNoIGJldHdl ZW4gdjEgYW5kIHYyOg0KDQogIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2FsbC8yMDI2MTExMjEy NTYzOC4xMjIwOS0zLWZhcmJlcmVAYW1hem9uLmNvbS8NCg0KT25seSB0aGUgb3JkZXItMCBwYXRo LiBUaGUgc2FzaGlrby1ib3QgcmV2aWV3IG9uIHRoaXMgdGhyZWFkIG9ic2VydmVkIHRoYXQNCnZt Zl9pbnNlcnRfcGZuX29yZGVyKCkgaG9ub3VyZWQgdGhlIGZhdWx0J3Mgd3JpdGUgZmxhZyBmb3Ig UE1EIGFuZCBQVUQgYnV0DQpub3QgZm9yIG9yZGVyIDAsIHdoZXJlIHRoZSBwdGUgY29tZXMgZnJv bSB2bWEtPnZtX3BhZ2VfcHJvdC4gdjIgcGFzc2VzIGl0DQphdCBvcmRlciAwIHRvbywgdGhyb3Vn aCBhbiBleHRyYWN0ZWQgX192bWZfaW5zZXJ0X3Bmbl9wcm90KC4uLiwgbWt3cml0ZSksDQpzbyB0 aGUgdjEgc2VudGVuY2UgeW91IHF1b3RlZCBhYm92ZSB0aGUgaHVuaywgIlRoZSBvcmRlci0wIHBh dGggbmVlZHMNCm5vdGhpbmc6IHdwX3Bmbl9zaGFyZWQoKSByZXNvbHZlcyB0aGF0IGZhdWx0Iiwg aXMgZ29uZS4gSSBjb3VsZCBub3QNCnJlcHJvZHVjZSBhIHVzZXItdmlzaWJsZSBmYWlsdXJlIG9u IGVpdGhlciBuZXcgdGFyZ2V0OiAvZGV2L21lbSBhbmQgVUlPDQpib3RoIG1vZGlmeSB2bV9wYWdl X3Byb3QsIHNvIHZtYV93YW50c193cml0ZW5vdGlmeSgpIHRha2VzIGl0cyBlc2NhcGUuIFRoYXQN CmNoYW5nZSB0aGVyZWZvcmUgcmVzdHMgb24gY29uc2lzdGVuY3kgd2l0aCB0aGUgaHVnZSBwYXRo cywgbm90IG9uIGENCmRlbW9uc3RyYXRlZCBidWcuIEl0IGRvZXMgbWVhbiBhIGZpcnN0IHdyaXRl IGF0IG9yZGVyIDAgbm8gbG9uZ2VyIGNhbGxzDQotPnBmbl9ta3dyaXRlLCB3aGljaCB0aGUga2Vy bmVsLWRvYyBub3cgc3RhdGVzLiB2MidzIGNvdmVyIGxldHRlciBoYXMgdGhlDQpyZXN0IG9mIHRo ZSBjaGFuZ2Vsb2cuDQoNCi0tDQpUaGFua3MsDQpFbGlhdg0K