From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by mail.toke.dk (Postfix) with ESMTPS id 6D8EF8E7DC1 for ; Thu, 18 Nov 2021 09:05:44 +0100 (CET) Authentication-Results: mail.toke.dk; dkim=pass (1024-bit key) header.d=intel.onmicrosoft.com header.i=@intel.onmicrosoft.com header.b=mwUBA0Or X-IronPort-AV: E=McAfee;i="6200,9189,10171"; a="221018131" X-IronPort-AV: E=Sophos;i="5.87,243,1631602800"; d="scan'208";a="221018131" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Nov 2021 00:05:35 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.87,243,1631602800"; d="scan'208";a="495274951" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by orsmga007.jf.intel.com with ESMTP; 18 Nov 2021 00:05:34 -0800 Received: from fmsmsx612.amr.corp.intel.com (10.18.126.92) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Thu, 18 Nov 2021 00:05:33 -0800 Received: from fmsmsx605.amr.corp.intel.com (10.18.126.85) 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.12; Thu, 18 Nov 2021 00:05:33 -0800 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx605.amr.corp.intel.com (10.18.126.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Thu, 18 Nov 2021 00:05:33 -0800 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.168) 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.12; Thu, 18 Nov 2021 00:05:33 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZVG1epUaljYCOUnOIl05q9kbZfZrsM4i4OK8WNc6b485ckolvCBPRoXQIuP07WVLMICAfocRw5IQEcXvDGuAIFV8mG+a13S6OiSGdTNU9e2ow2BGisboc+lHgGvbVjYYP5P/we1kdeemUYYF6Ku6XHsdkjWh3mW6nVqHYebWIhlLvvFcajbg8H39s4B/qE9HqOhX1F+LYTPpKLuHheZ9x/xv5ur0LMwT4Ze7N5Ji29ZjM4aA58Cb5Kv1J/tSwTWtCv5c5RtuUQY5ZJJVwt6rM+9D9JP6S4iO5bXSZlYc/xLUXM+u4tbYdKO06SBKMECoDxBibPOEZRXl6laE56yimA== 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=eELGHM9h9TIY0IVqWqZRuxeu0SRiMvDQ8tgknjq9jXY=; b=KgzCk1365jnjBSU4z2VnvxvokYuUKOp7S8S1RbDpWIn2arKP3vZSTJQUKXf2Cd2/TMwuOXUihI6qrN7DVlFhKM+xKM1MUFylDX5+MVV1CpKPTUqEF5LDdpZVFaEypUR9M9bD3/oZjleqJUsXw2JlCvQABsWreOMqKkvI4dYECSWKkT19gzyqGSuphN6gCo/r6IiIR5JCRv3WkY1+qDf8UruU6VVsQsbw1KxVL0fVt6/r/+rXYl9S7q+70z6ZS0coG7Xps1CldFgxIDqlLq+qDfFJKXhMhOAv3XaXLi5IW9/tUK8sYqJ9bxgE2aVw3NZmftc7+dehQDpnryh5uuH8LA== 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=eELGHM9h9TIY0IVqWqZRuxeu0SRiMvDQ8tgknjq9jXY=; b=mwUBA0OrofLVPAnDHcKc7L+hbx7XEYlEVi6mv86CVqD2vw8mrIUKVXOYHOkCxgIqm7FMjDzBR0DUMgPJDM2xMTc0fg/MN27U+qb+2b9EdxlHqk40vMVgxFGV+0SrO/wEbejNg9HQrepOc7W8qBxN4XXNFSSNHiZWpASyU9ImzfY= Received: from MW3PR11MB4602.namprd11.prod.outlook.com (2603:10b6:303:52::19) by CO1PR11MB4899.namprd11.prod.outlook.com (2603:10b6:303:6e::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.25; Thu, 18 Nov 2021 08:05:31 +0000 Received: from MW3PR11MB4602.namprd11.prod.outlook.com ([fe80::4f9:ec4:ba79:1cfa]) by MW3PR11MB4602.namprd11.prod.outlook.com ([fe80::4f9:ec4:ba79:1cfa%6]) with mapi id 15.20.4690.027; Thu, 18 Nov 2021 08:05:31 +0000 From: "Karlsson, Magnus" To: =?utf-8?B?VG9rZSBIw7hpbGFuZC1Kw7hyZ2Vuc2Vu?= , "Jesper Dangaard Brouer" , "Desouza, Ederson" Thread-Topic: [xdp-hints] Re: XDP-hints via local BTF info Thread-Index: AQHX3AVBvX+d1rp2wUWfQ5M3iSKXbawI4Tqw Date: Thu, 18 Nov 2021 08:05:31 +0000 Message-ID: References: <875ysqflg1.fsf@toke.dk> In-Reply-To: <875ysqflg1.fsf@toke.dk> Accept-Language: sv-SE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMzI5OTc3YjctNzFjZS00MjNlLTg1MDEtYzZhMjU0ZjYzNzFkIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiS3pGYVpMUUttVndSUk1PZ2FwSlhlb3JIZjk1YjNhOVZYOWpcL0M4ZTRDcUJcLzlmXC9RQ1FGeWpUK0o0VDduanIxSyJ9 dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.200.16 x-ctpclassification: CTP_NT authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: bd2c6352-1ebb-4658-8936-08d9aa6a30d9 x-ms-traffictypediagnostic: CO1PR11MB4899: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: dMNOaeeINu4QgzSTDDag4ZTb3VmcVKIGDzZkM/eWCUhUs6A9oSAV95lzgF8DnGUlDt9+Js9Ey5JsW9C0wQ9GU1g1JbgXZ3PX9b//laTZVdacxKx8rIYD5p3CdoGLa4zfj16LnhD1jp90lOVrPqHFZpidk4bMJ1U9A5MXaMzTGm1kR+z7GYWsIcvLiWcWv8YO336WbMXIshQ2GH8E0ugwCFmi8c0J5r2QSgspcpcM7WK2ywCw2Iuxhr9iZvrCaPj5i6fSdrk0vzEsVaM2UzZreRouQSm3HAkAdBsahXGL+0t0QqfieVoNnmZsjFp7+64iJGlf51pW1VYU1InKJjhYmyK56TczWsnkV+eNxG9n9oa+M0gM9bONsZw0fWVGoZgPDmR/18pbDCi2BA7FuJ82uOK2jSPpiAGUYrJw+6j2YPf7Z7s0ZjpT5ujV0f+7oc7/VgEU+UuhwDSzwhteotMZnfmE1XW71mTA6DwTXsl4df/s1RpUKnBZGeZr+hquzXQ7ZtHliKqeO8+Qo66O3UKIFTj3vk99dWho8npNoRyVQI2XTm2sijQdUXbhq/BeHvieS6wQdFbVOn1PJUJJvM9Bl+FBWpnyqUVSCbXF8VOBo0qzYmsxZvkr/2bwg8kBkdhVl+vWmw2NSxi1Fo6YtWredVxB3gKb7BcId+Q1S4yt8gZG0OQrQ6l+GT1HtEDBfelWk7EnqplxUsUCL2lVTlcG7z3dyVRqUntJre0duHlVk+o= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW3PR11MB4602.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(508600001)(9686003)(54906003)(110136005)(76116006)(66476007)(8676002)(6506007)(66556008)(53546011)(55016002)(38070700005)(64756008)(7696005)(6636002)(4326008)(107886003)(66446008)(186003)(82960400001)(122000001)(38100700002)(66946007)(71200400001)(33656002)(5660300002)(52536014)(8936002)(316002)(26005)(30864003)(86362001)(66574015)(83380400001)(2906002)(21314003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?QmtFeHpucFQyamJjM1EvNnNoUHh4NUFBU3lnR29IMGFaMTVSN29zY2xUM1BT?= =?utf-8?B?c3I0SDd5M1JVVjhYS1h2c0J1M3VHL0E3VndrTTBjYndESHVDeVBScjFzRlBx?= =?utf-8?B?Rm9mNUpteVovRnRweHBqZHVsQ3ZyanM5RVdnVTRHSlNNYWhmd3FIKzdEUXpz?= =?utf-8?B?VHRobld6Z1VSZ3F6OEhsbFJiRjVCeEFzeTJlQ1BWanJDUzNTeHYzbjQ4M2RV?= =?utf-8?B?UHN6SU1mS3pMREMvV3pRaVF2SHJ1VTU2Q2NxR0tseTZ3VE9kbmVSYzhhaDQ4?= =?utf-8?B?TGpoQnRWSWREc3VSY1dBTjhrS0VLOFV6cUM3MktHY0xDTnYwYkdyMlN1TzFy?= =?utf-8?B?a2QzbUVMWHlyYndQOFhHZWlmQTRrQWZiYVp2QWJvM05ONEVMc0RrNWlnUTJu?= =?utf-8?B?VlUzMUw1Z2tZekEycHNSTVhGbHRERENHRHFLcWJjbG9WQVBDemZxSE9PNUtv?= =?utf-8?B?eXFBZkFxcUQxYmRXQnEwbVVETkpYYlJVbE5lb2lYS2VudnR0Z2FFcWpINENO?= =?utf-8?B?a0FqaG0yV05ydGpkdGptbjRkVFhJRndtdHI4RmJXUmhUcExYZE1QTHVERjNE?= =?utf-8?B?ZzIySlRkbitBb2pJK2VLdkpMY2Z4Q1pkRWYyQmgxTWlVWGRWR3Z6VW1wMXNn?= =?utf-8?B?alVuSVRneHNJbmtzY0JRZUJYZVFHRENKSWM4YTFncEFhalRacE9JUnkvdWVI?= =?utf-8?B?TDR3dkQwR0dUL2Z6VVN2cnNRUjdCT3pJakpWeUhrMkNQNE01eGlxaVlPRXcr?= =?utf-8?B?bTlsWm8ySkRqSjhXSXJnWC9vUXZUaVBTb2FkTy9hQkR5R0NMeDM4RzN5czlM?= =?utf-8?B?NU9obXp1OS82NkNKdzc5YXJBSllvelZUTGc0cS8xMERhN2ovRXd0YUVWNWhV?= =?utf-8?B?Slc0bkVRVXMrMEY2VzdLdjRqaE9hUUJuc3EvSmV2bEMrZjBNaXpEZlZhZWhu?= =?utf-8?B?RG5MOElSVDljcUpuZkRzblFOeTNobTdRbHNrb2Z4RWZ6SmNVRFhJMVpXeFpR?= =?utf-8?B?N1IrbExKS0R5MTh6N2k3NU14N0UxUVZHcmdNQ0M2YmtrNjZMOFB3RWU1T2ha?= =?utf-8?B?SHR6NnB0SXc0bkxhZit0VjhTbmZ5bDFmUm1BcmNUcFJlNXZVL2JXdzJ0ZEFV?= =?utf-8?B?ZjRyR2hPcXJucGx3ZllUS2Yvc3dNWTlLNFNkMEpQMFgyZ2Z1M0tyaW55RHlu?= =?utf-8?B?N3h2emVnVEEwWWMxaHRITDNSTDJ6R0FCa1FKSkphNTM1WFNvVmhqd081NjFN?= =?utf-8?B?cGZjMFUydUdTeUcwUUNQdUxpdGNYdlJHd0dmUlBicWdTRFQ5Qm9lMEFPUnNL?= =?utf-8?B?UHk0NzV5WWxreUtFMytkcmlRSWM0VHMrQ3ZwT2JWWCt6dzhyWnQxbnpoVk5k?= =?utf-8?B?WG5BeE9NQkI3dTJFYmVNeTlvazJ1VGU5dmxhRDdyNXJ4RjUycGNsSEZOdWV0?= =?utf-8?B?d3hTRTh1ZWgvUWIyQUxTQ3F0Uzh4bTUyREw2d3ROREtDcEQ5SjRsOEpRUEpY?= =?utf-8?B?UGxVYmZvYnRJY1BjL2xPcGtxK1R0VFRDVFRYcmJDRktLaEtQYWRNcHg3eWJn?= =?utf-8?B?Nm9LWWlLc1dSYS9yNWx3WHNScDdraHhtMVJXb3FMaDh1UmdmZVhSYkVqeFVt?= =?utf-8?B?STl0RVh2ZmE4WFRYczNhYXVtVEltOUdFWGRNMVBjWTZGc3hLYnhwM3lIUVl1?= =?utf-8?B?dUdqS1RFL1RSYUpnYlkwbEZZejM3VEs1clRUWk5DMTBMKzZ6NVRxVWU2QWVR?= =?utf-8?B?UnBDbkplR2FZRFdYOHJzU1FZZlpjc3lha3RYQ1dNMFNHRFRGRkZWa092ODRF?= =?utf-8?B?TkZxSHpUQkQxUVJOZ3BMcDY0aDd5Nm13N1E3dVRXSURPMnBJRFU2eWRrWEJt?= =?utf-8?B?UVR3WHp3T3hxODVJL05HUjUrbXVrOWN0c2owMGJrVHVwNmRVc0xOdktkQUMy?= =?utf-8?B?MEh6MEZ2OWtEd2s0M3RwYlFWOWlPN1M3czBKZTVaUGwzMkhBaW5ncnBRdkVP?= =?utf-8?B?d0Rhd3JqdkFZMkN4dUx0TTN2QmJNNmY5UG9ydUx4UTdOYVhXT3Z4QXF4a2lI?= =?utf-8?B?bURZWEF2ZmtjMXRzdE9iOHRDWStnOVhxS0szN1lKcDZnK0hEbmlTcU9PVXdn?= =?utf-8?B?MFlhQllONGM2Y3JwYzZoOWZRSTFwdDltU1FVSkhzb0hiOEowd0MwSFBlY1JN?= =?utf-8?B?eHVjblAwZUN3dElBb25OdjJzdWNiTUI0TnlNYmVHakNaQldSakQvck5TTTBQ?= =?utf-8?B?eUFpU0NEd3A4NERtYzJieitLSUhRPT0=?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW3PR11MB4602.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: bd2c6352-1ebb-4658-8936-08d9aa6a30d9 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Nov 2021 08:05:31.1119 (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: 4MWMXQcybrdXp60NypbkkgDxDcSH+TE5eqcSPkQp4r7cMiQxm9q7032+Qkx7Fd8YX4OaeiGF9KDpWzbKSo3K1/9SiQHFs/OSCAqLg+KXJTQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR11MB4899 X-OriginatorOrg: intel.com Message-ID-Hash: QBHVHS72ZBGQ7KJJPIP3ARLIV6HC6ATZ X-Message-ID-Hash: QBHVHS72ZBGQ7KJJPIP3ARLIV6HC6ATZ X-MailFrom: magnus.karlsson@intel.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: "brouer@redhat.com" , "xdp-hints@xdp-project.net" , Eelco Chaudron , Andrii Nakryiko , "Fijalkowski, Maciej" , "Burakov, Anatoly" X-Mailman-Version: 3.3.4 Precedence: list Subject: [xdp-hints] Re: XDP-hints via local BTF info List-Id: XDP hardware hints design discussion Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogVG9rZSBIw7hpbGFuZC1K w7hyZ2Vuc2VuIDx0b2tlQHJlZGhhdC5jb20+DQo+IFNlbnQ6IFdlZG5lc2RheSwgTm92ZW1iZXIg MTcsIDIwMjEgMTE6NDggUE0NCj4gVG86IEthcmxzc29uLCBNYWdudXMgPG1hZ251cy5rYXJsc3Nv bkBpbnRlbC5jb20+OyBKZXNwZXIgRGFuZ2FhcmQNCj4gQnJvdWVyIDxqYnJvdWVyQHJlZGhhdC5j b20+OyBEZXNvdXphLCBFZGVyc29uDQo+IDxlZGVyc29uLmRlc291emFAaW50ZWwuY29tPg0KPiBD YzogYnJvdWVyQHJlZGhhdC5jb207IHhkcC1oaW50c0B4ZHAtcHJvamVjdC5uZXQ7IEVlbGNvIENo YXVkcm9uDQo+IDxlY2hhdWRyb0ByZWRoYXQuY29tPjsgQW5kcmlpIE5ha3J5aWtvIDxhbmRyaWlA a2VybmVsLm9yZz47IEZpamFsa293c2tpLA0KPiBNYWNpZWogPG1hY2llai5maWphbGtvd3NraUBp bnRlbC5jb20+OyBCdXJha292LCBBbmF0b2x5DQo+IDxhbmF0b2x5LmJ1cmFrb3ZAaW50ZWwuY29t Pg0KPiBTdWJqZWN0OiBSZTogW3hkcC1oaW50c10gUmU6IFhEUC1oaW50cyB2aWEgbG9jYWwgQlRG IGluZm8NCj4gDQo+ICJLYXJsc3NvbiwgTWFnbnVzIiA8bWFnbnVzLmthcmxzc29uQGludGVsLmNv bT4gd3JpdGVzOg0KPiANCj4gPiBUb2dldGhlciB3aXRoIE1hY2llaiBhbmQgQW5hdG9seSwgSSBo YXZlIGJlZW4gdG95aW5nIHdpdGggaG93IHRvDQo+ID4gYWNjb21wbGlzaCB0aGlzLCBidXQgaXQg aXMgZWFybHkgZGF5cyBzbyB3YXJuaW5nIGZvciBzb21lIHNlcmlvdXMNCj4gPiBoYW5kd2F2aW5n LiBXaWxsIHByb2R1Y2Ugc29tZSBjb2RlIHRvIHNlZSBpZiBpdCBpcyBwb3NzaWJsZSBhdCBhbGwu DQo+ID4gT25lIGRyYXdiYWNrIHdpdGggaGF2aW5nIGl0IGNvbXBsZXRlbHkgZmxleGlibGUgYW5k IGxldHRpbmcgdXNlci1zcGFjZQ0KPiA+IGRlY2lkZSBpcyB0aGUgY29tcGxleGl0eSBpbXBsZW1l bnRpbmcgdGhpcyBpbiB0aGUgZHJpdmVyL2tlcm5lbC4gQnV0DQo+ID4gaXMgdGhpcyBub3Qgd2h5 IHdlIGhhdmUgZUJQRiBmb3IgaW4gdGhlIGZpcnN0IHBsYWNlPyBNYXliZSBpdCBjYW4gY29tZQ0K PiA+IHRvIHRoZSByZXNjdWUgaGVyZS4NCj4gDQo+IEkgdGhpbmsgdGhlcmUgYXJlIGEgY291cGxl IG9mIGRpc3RpbmN0aW9ucyB3ZSBuZWVkIHRvIG1ha2UsIHdoaWNoIHlvdXINCj4gImhhbmR3YXZp bmciIGdsb3NzZXMgb3ZlciBhIGxpdHRsZSBiaXQgOikNCj4gDQo+IEZpcnN0LCB3ZSBoYXZlIHRv IGRpc3Rpbmd1aXNoIGJldHdlZW4gdHdvIGNhc2VzIGhlcmU6IGhvdyB0byB3b3JrIHdpdGgNCj4g ZXhpc3RpbmcgaGFyZHdhcmUgYW5kIGRyaXZlcnMgYW5kIHRoZWlyIG1ldGFkYXRhIGltcGxlbWVu dGF0aW9ucywgYW5kIGhvdw0KPiB0byB3b3JrIHdpdGggZnV0dXJlIGRldmljZXMgdGhhdCB3aWxs IChwcmVzdW1hYmx5KSBiZSBjb21wbGV0ZWx5IGZsZXhpYmxlDQo+IGFuZC9vciBwcm9ncmFtbWFi bGUgdG8gcHJvdmlkZSBhbnkgbWV0YWRhdGEgY29uZmlndXJhdGlvbiBkaXJlY3RseSBmcm9tDQo+ IHRoZSBoYXJkd2FyZS4gVGhlIFhEUCBoaW50cyBzY2hlbWUgb2J2aW91c2x5IG5lZWRzIHRvIHdv cmsgd2l0aCBib3RoLg0KDQpUaGFua3MgVG9rZSBmb3IgcHJvdmlkaW5nIGZlZWRiYWNrIG9uIHRo aXMuIEp1c3QgaGFkIHRvIGdldCB0aGlzIHN0dWZmICJvZmYgbXkgY2hlc3QiIPCfmIkuIEkgd2Fz IHN0dWNrIGluIHRoZSB6ZXJvLWNvcHkgd29ybGQgd2hlcmUgeW91IGNhbiBtb2RpZnkgZHJpdmVy cywgYnV0IG9mIGNvdXJzZSB3ZSBuZWVkIHRvIGNvbnNpZGVyICJvbGRlciIgZHJpdmVycyB3aXRo IFhEUCBzdXBwb3J0LiBXaXRoIHRoYXQgaW4gbWluZCwgSSBkbyBhZ3JlZSB3aXRoIG1vc3Qgb2Yg eW91ciBjb21tZW50cy4gVGhlcmUgYXJlIHNvbWUgcXVlc3Rpb25zIGFuZCB0aG91Z2h0cyBpbnRl cnNwZXJzZWQgYmVsb3cgYW5kIGEgc3VnZ2VzdGlvbiBmb3IgaG93IHRvIGdvIGZvcndhcmQgYXQg dGhlIGVuZC4NCg0KPiBTZWNvbmRseSwgd2Ugc2hvdWxkIGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhl IGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlIGFuZCB0aGUNCj4gbWV0YWRhdGEgY29uc3VtcHRpb24g ZnJvbSB3aXRoaW4gdGhlIGRhdGEgcGF0aC4gSSB0aGluayB0aG9zZSBzaG91bGQgYmUNCj4gc2Vw YXJhdGUgaW50ZXJmYWNlczsgaW4gcGFydGljdWxhciwgSSBkb24ndCB0aGluayBsb2FkaW5nIGFu IFhEUCBwcm9ncmFtIGluDQo+IGl0c2VsZiBzaG91bGQgaGF2ZSB0aGUgc2lkZSBlZmZlY3Qgb2Yg cmVjb25maWd1cmluZyB0aGUgaGFyZHdhcmUgbWV0YWRhdGENCj4gZm9ybWF0LiBSYXRoZXIsIHRo ZSByZWNvbmZpZ3VyYXRpb24gc2hvdWxkIGJlIGEgc2VwYXJhdGUsIGV4cGxpY2l0IHN0ZXAgdXNp bmcNCj4gd2hhdGV2ZXIgQVBJIHdlIGNhbiBlbmQgdXAgYWdyZWVpbmcgb24gKGV0aHRvb2wgb3Ig cnRuZXRsaW5rIGNvbWUgdG8gbWluZA0KPiBhcyBvYnZpb3VzIGNvbnRlbmRlcnMpLiBIb3dldmVy LCB0aGUNCj4gKmZvcm1hdCogZm9yIHRoaXMgY29uZmlndXJhdGlvbiBjb3VsZCB2ZXJ5IHdlbGwg YmUgQlRGLWJhc2VkLCBzbyB1c2Vyc3BhY2UNCj4gY2FuIGdldCB3aGF0ZXZlciBmb3JtYXQgaXQg d2FudHMsIGFzc3VtaW5nIHRoZSBoYXJkd2FyZSBzdXBwb3J0cyBpdC4NCj4gDQo+IFNvLCBzYXkg d2UgaGF2ZSB0aGlzIGZhbmN5IHByb2dyYW1tYWJsZSBoYXJkd2FyZSwgYW5kIHdlIHdyaXRlIGEg cHJvZ3JhbQ0KPiB3aXRoIGEgc3RydWN0IGRlZmluaXRpb24gbGlrZToNCj4gDQo+IHN0cnVjdCBt eV9tZXRhX2Zvcm1hdCB7DQo+ICAgICAgICBfX3U2NCByeF90aW1lc3RhbXA7DQo+ICAgICAgICBf X3U2NCBtYWdpY19jb2xvdXJfb2ZfcGFja2V0Ow0KPiAgICAgICAgX191MzIgYnRmX2lkOw0KPiB9 Ow0KPiANCj4gYW5kIGZyb20gdXNlcnNwYWNlIHdlIGNhbiB0aGVuIGRvOg0KPiANCj4gZGV2X21l dGFkYXRhX2NvbmZpZ3VyZShpZmluZGV4LCBCVEZfT0ZfU1RSVUNUKG15X21ldGFfZm9ybWF0KSk7 DQo+IA0KPiB3aGljaCB3aWxsIHBhc3MgdGhlIEJURi1mb3JtYXQgc3RydWN0IHRvIHRoZSBrZXJu ZWwgYW5kIGNvbmZpZ3VyZSB0aGUNCj4gaGFyZHdhcmUgdG8gd3JpdGUgdGhvc2UgZmllbGRzLiBB ZnRlciB0aGlzLCB0aGUgWERQIHByb2dyYW0gY2FuIGp1c3QgZG86DQo+IA0KPiBpbnQgbXlfeGRw X3Byb2coc3RydWN0IHhkcF9idWZmICpjdHgpDQo+IHsNCj4gICBzdHJ1Y3QgbXlfbWV0YV9mb3Jt YXQgKm1ldGEgPSBjdHgtPmRhdGFfbWV0YTsNCj4gDQo+ICAgZG9fc29tZXRoaW5nX3dpdGgobWV0 YS0+bWFnaWNfY29sb3VyX29mX3BhY2tldCk7DQo+ICAgcmV0dXJuIFhEUF9YWFg7DQo+IH0NCj4g DQo+IGFuZCBpdCB3aWxsIGp1c3Qgd29yay4gU2FtZSB0aGluZyBmcm9tIHVzZXJzcGFjZS4NCj4g DQo+IE9yIGl0IGNhbiBkZWZpbmUgYSBDTy1SRSBlbmFibGVkIHN0cnVjdCBsaWtlOg0KPiANCj4g c3RydWN0IG15X21ldGFfc3Vic2V0IHsNCj4gICAgICAgIF9fdTY0IG1hZ2ljX2NvbG91cl9vZl9w YWNrZXQ7IC8qIHdlIG9ubHkgY2FyZSBhYm91dCB0aGlzIGF0dHIgKi8gfQ0KPiBfX2F0dHJpYnV0 ZV9fKChwcmVzZXJ2ZV9hY2Nlc3NfaW5kZXgpKTsNCj4gDQo+IGludCBteV94ZHBfcHJvZyhzdHJ1 Y3QgeGRwX2J1ZmYgKmN0eCkNCj4gew0KPiAgIHN0cnVjdCBteV9tZXRhX3N1YnNldCAqbWV0YSA9 IGN0eC0+ZGF0YV9tZXRhOw0KPiANCj4gICBkb19zb21ldGhpbmdfd2l0aChtZXRhLT5tYWdpY19j b2xvdXJfb2ZfcGFja2V0KTsNCj4gICByZXR1cm4gWERQX1hYWDsNCj4gfQ0KPiANCj4gYW5kIGxp YmJwZiB3aWxsIHJld3JpdGUgdGhlIGZpZWxkIGFjY2Vzc2VzIHVzaW5nIHRoZSBCVEYgaW5mb3Jt YXRpb24sIHJlLQ0KPiBleHBvcnRlZCBmcm9tIHRoZSBrZXJuZWwgZnJvbSB3aGF0IHVzZXJzcGFj ZSBwYXNzZWQgaW4gd2hlbiBjb25maWd1cmluZy4NCj4gDQo+IFdpdGggdGhlIGFib3ZlIGluIG1p bmQsIGEgZmV3IGNvbW1lbnRzIG9uIHNvbWUgb2YgeW91ciBvdGhlciBwb2ludHM6DQo+IA0KPiA+ IFRoZSBrZXkgZmVhdHVyZSBoZXJlIGlzIHRoYXQgYnBmX3hkcF9nZXRfbWV0YWRhdGEoKSB3aWxs IGFjdHVhbGx5IGdvDQo+ID4gYW5kIGZldGNoIHRoaXMgZnJvbSB0aGUgSFcsIGJ5IGNhbGxpbmcg YSBzbWFsbCBjYWxsYmFjayBmdW5jdGlvbiBpbg0KPiA+IHRoZSBkcml2ZXIgdGhhdCByZWFkcyBm b3IgZXhhbXBsZSByeF90aW1lc3RhbXAgZnJvbSB0aGUgSFcgYW5kIHJldHVybnMNCj4gPiBpdCB0 byB0aGUgWERQIHByb2dyYW0uIFRoaXMgaXMgY2xlYXJseSBub3QgcG9zc2libGUgdG9kYXkgYW5k IHdvdWxkDQo+ID4gcmVxdWlyZSBuZXcgcGx1bWJpbmcsIGlmIGl0IGlzIGV2ZW4gcG9zc2libGUg dG8gaW1wbGVtZW50IHRoaXMuIEJ1dA0KPiA+IGxldCB1cyBsZWF2ZSBhc2lkZSB0aGUgaW1wbGVt ZW50YXRpb24gZm9yIG5vdyBhbmQganVzdCBmb2N1cyBvbiB0aGUNCj4gPiBiZW5lZml0IHRoaXMg KG9yIHNvbWV0aGluZyBsaWtlIGl0KSBjb3VsZCBwcm92aWRlIGNvbXBhcmVkIHRvIGENCj4gPiBr ZXJuZWwtY2VudHJpYyBhcHByb2FjaC4NCj4gDQo+IFRvb2sgbWUgYSB3aGlsZSB0byB1bmRlcnN0 YW5kIHdoYXQgeW91IG1lYW50IHdpdGggdGhpcywgYnV0IEkgdGhpbmsgaXQgZmluYWxseQ0KPiBj bGlja2VkIHdpdGggeW91ciBleGFtcGxlIGJlbG93LCBzbyBJJ2xsIGxlYXZlIHRoZSBjb21tZW50 IHRvIHRoZXJlLi4uDQo+IA0KPiA+ICogVXNlci1zcGFjZSBjYW4gY29tcGxldGVseSBjb250cm9s IHdoZXJlIHRvIHB1dCBkYXRhIGFuZCB3aGF0IGl0IHB1dHMNCj4gPiB0aGVyZS4gVGhpbmsgb2Yg cHJvZHVjaW5nIHRoZSBzdHJ1Y3R1cmUgeW91IHdhbnQgaW4gdXNlciBzcGFjZQ0KPiA+IGRpcmVj dGx5IHdpdGhvdXQgaGF2aW5nIHRvIGNvcHkgdGhpbmdzIGFyb3VuZC4gWW91IGNvdWxkIGZvciBl eGFtcGxlDQo+ID4gcHJvZHVjZSBhIERQREsgbWJ1Ziwgb3IgdGhlIFZQUCwgU3VyaWthdGEgZXF1 aXZhbGVudCBkaXJlY3RseS4gV291bGQNCj4gPiBzYXZlIGEgbG90IG9mIGN5Y2xlcy4NCj4gDQo+ IEkgdGhpbmsgdGhhdCB1c2Vyc3BhY2UgYmVpbmcgaW4gY29udHJvbCBvZiB0aGUgbWV0YWRhdGEg Zm9ybWF0IGlzIGEgZ3JlYXQgZ29hbA0KPiB3ZSBzaG91bGQga2VlcCBpbiBtaW5kLCBhbmQgYXMg bWVudGlvbmVkIGFib3ZlIHdlIGNhbiBkbyB0aGF0IHdpdGggYSBCVEYtDQo+IGJhc2VkIGludGVy ZmFjZS4NCj4gDQo+ID4gKiBObyBuZWVkIGZvciBhIG1ldGFkYXRhIGVuYWJsZW1lbnQgaW50ZXJm YWNlLiBlQlBGIGNvdWxkIGZpbmQgdGhpcw0KPiA+IG91dCBieSBqdXN0IHBhcnNpbmcgdGhlIFhE UCBwcm9ncmFtIGFuZCBlbmFibGUgdGhlIHVzZWQgbWV0YWRhdGENCj4gPiBmZWF0dXJlcyBpbiB0 aGUgSFcgYnkgY2FsbGluZyBlbmFibGUvZGlzYWJsZSBtZXRhZGF0YSBmdW5jdGlvbnMgaW4gdGhl DQo+ID4gZHJpdmVyLg0KPiANCj4gQXMgbWVudGlvbmVkIGFib3ZlIEkgdGhpbmsgdGhpcyBpcyBh IG1pcy1mZWF0dXJlOiBjb25maWd1cmF0aW9uIHNob3VsZCBiZQ0KPiBleHBsaWNpdCBhbmQgb3V0 IG9mIGJhbmQsIG5vdCB0aWVkIHRvIHRoZSBkYXRhIHBhdGggaW1wbGVtZW50YXRpb24uDQo+IA0K PiA+ICogTm8gcmVhc29uIHRvIGV4cG9zZSBCVEZzIHRvIHVzZXItc3BhY2UuIE1ha2VzIGl0IGEg bG90IHNpbXBsZXIuDQo+ID4gQWN0dWFsbHksIG5vIG5lZWQgdG8gdXNlIHRoZW0gaW4gdGhlIGRy aXZlciBlaXRoZXIuDQo+IA0KPiBCVEYgaXMganVzdCBhIGhhbmR5IGZvcm1hdCBmb3IgZGVzY3Jp YmluZyB0aGUgZGF0YSBsYXlvdXQuIFRoZXJlIGhhcyB0byBiZQ0KPiAqc29tZSogZm9ybWF0IHRv IGNvbW11bmljYXRlIHRoaXMsIGFuZCBleHBvc2luZyB0aGUgQlRGIGZvcm1hdCB0bw0KPiB1c2Vy c3BhY2UgaXMganVzdCBhIHdheSBmb3IgdGhlIGtlcm5lbCB0byBzYXkgInRoaXMgaXMgaG93IHRo ZSBoYXJkd2FyZSBpcw0KPiBjdXJyZW50bHkgY29uZmlndXJlZCIuIEkgZG9uJ3QgdW5kZXJzdGFu ZCB3aHkgeW91IHRoaW5rIG5vdCBoYXZpbmcgdGhhdA0KPiBtYWtlcyB0aGluZ3Mgc2ltcGxlcj8N Cg0KSSBqdXN0IHRoaW5rIHRoYXQgYSBvbmUtbGluZXIgaW4gYSBwcm9ncmFtIGlzIHNpbXBsZXIg dGhhbiBhbiBlbnRyeSBpbiB0aGUgQlRGIGZvcm1hdC4gQnV0IHRoaXMgaXMgbW9vdCBhbnl3YXku IFlvdSBjYW5ub3QgdXNlIGEgcHJvZ3JhbSB0byBjb21tdW5pY2F0ZSBmcm9tIHRoZSBrZXJuZWws IHNvIEJURiBpdCBpcy4NCg0KPiA+ICogV2UgZG8gbm90IGhhdmUgdG8gdXNlIHRoZSBtZXRhZGF0 YSBhcmVhIHVubGVzcyBpdCBpcyBhY3R1YWxseQ0KPiA+IG5lZWRlZC4gSW4gdGhlIGNhc2Ugb2Yg QUZfWERQLCB3ZSBoYXZlIHRvIHdyaXRlIGl0IHRoZXJlLCBidXQgbG9jYWwNCj4gPiB1c2UgaW4g WERQIGRvZXMgbm90LiBZb3Ugd291bGQgc2F2ZSBvbmUgY2FjaGUgbWlzcyBwZXIgcGFja2V0IHJp Z2h0DQo+ID4gdGhlcmUuDQo+IA0KPiBSZWdhcmRsZXNzIG9mIGhvdyB0aGUgZm9ybWF0IGlzIGNv bmZpZ3VyZWQsIHdoeSB3b3VsZCBhbiBYRFAgcHJvZ3JhbSByZWFkDQo+IGl0IGlmIGl0IGRvZXNu J3QgbmVlZCBpdD8NCg0KVGhlIGRyaXZlciByZWFkcyBzb21lIG1ldGFkYXRhIGVudHJ5IGZyb20g SFcgYW5kIHB1dHMgaXQgaW4gdGhlIG1ldGFkYXRhIHNlY3Rpb24gYmVmb3JlIHRoZSBwYWNrZXQu IFhEUCBpcyBpbnZva2VkIGFuZCByZWFkcyB0aGlzIGVudHJ5IGZyb20gdGhlIG1ldGFkYXRhIGFy ZWEgYW5kIHVzZXMgaXQgaW4gc29tZSB3YXkuIFRoaXMgZ2VuZXJhdGVzIGEgY2FjaGUgbWlzcyBm b3IgdGhlIHdyaXRlL3JlYWQgdG8gdGhlIG1ldGFkYXRhIGVudHJ5LiBDb21wYXJlIHRoaXMgdG8g dGhlIFhEUCBwcm9ncmFtIGNhbGxzIGEgaGVscGVyIHRoYXQgcmVhZHMgdGhlIG1ldGFkYXRhIGZy b20gSFcgYW5kIHB1dHMgaXQgZGlyZWN0bHkgaW50byBhIGxvY2FsIHZhcmlhYmxlIGluIHRoZSBY RFAgcHJvZ3JhbS4gTWV0YWRhdGEgYXJlYSBpcyBub3QgdXNlZCwgYW5kIHdlIHNhdmUgb25lIGNh Y2hlIG1pc3MuDQoNCj4gPiAqIFdlIGdldCBhd2F5IGZyb20gbm9uLXNjYWxhYmxlIGRyaXZlciBp bXBsZW1lbnRhdGlvbnMgc3VjaCBhczoNCj4gPg0KPiA+IElmIChtZXRhZGF0YV9hX2VuYWJsZWQp DQo+ID4gICAgIG1ldGEtPmEgPSBSZWFkX21ldGFkYXRhX2EoKTsNCj4gPiBJZiAobWV0YWRhdGFf Yl9lbmFibGVkKQ0KPiA+ICAgICBtZXRhLT5iID0gUmVhZF9tZXRhZGF0YV9iKCk7DQo+ID4gSWYg KG1ldGFkYXRhX2NfZW5hYmxlZCkNCj4gPiAgICAgbWV0YS0+YyA9IFJlYWRfbWV0YWRhdGFfYygp Ow0KPiA+ICBhbmQgc28gb24gZm9yIG1hbnkgZW50cmllcy4uLi4uDQo+IA0KPiBJbXBsZW1lbnRh dGlvbnMgc3VjaCBhcyB0aGlzIGV4aXN0LCB0aG91Z2gsIGFuZCB3ZSBoYXZlIHRvIHN1cHBvcnQg dGhlbTsgYXMNCj4gbWVudGlvbmVkIGFib3ZlLCBJIHRoaW5rIGl0J3MgYWJzb2x1dGVseSBhIHdv cnRoeSBnb2FsIHRvIG1ha2UgdGhlIG1ldGFkYXRhDQo+IGZvcm1hdCBjb21wbGV0ZWx5IGZ1bmdp YmxlIGZyb20gdXNlcnNwYWNlLCBidXQgdGhlIFhEUCBoaW50cyBpbnRlcmZhY2UNCj4gbmVlZHMg dG8gYWxzbyBzdXBwb3J0IG9sZCBkcml2ZXJzIHRoYXQgZG8gdGhpbmdzIGluIHRoZSB0cmFkaXRp b25hbCB3YXksIGV2ZW4gaWYNCj4gaXQncyBpbmVmZmljaWVudC4NCj4gPg0KPiA+IE9yIGV2ZW4g d29yc2U6DQo+ID4gICAgIG1ldGEtPmEgPSBSZWFkX21ldGFkYXRhX2IoKTsNCj4gPiAgICAgbWV0 YS0+YiA9IFJlYWRfbWV0YWRhdGFfYSgpOw0KPiA+ICAgICBtZXRhLT5jID0gUmVhZF9tZXRhZGF0 YV9jKCk7DQo+ID4gICAgIGFuZCBzbyBvbi4uLi4NCj4gPg0KPiA+IFRoZSBsYXN0IG9uZSB3b3Vs ZCBraWxsIHBlcmZvcm1hbmNlIGFueSBkYXkuIEV2ZW4gdGhlIGZpcnN0IG9uZSBpcw0KPiA+IHNo dW5uZWQgaW4gRFBESyBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4NCj4gPg0KPiA+IE5vdGUgdGhh dCBpbiBteSBwcm9wb3NhbCBhYm92ZSwgcmVhZF9tZXRhZGF0YV9hKCkgaXMgYSBmdW5jdGlvbiB0 aGF0DQo+ID4gd2lsbCBiZSBjYWxsZWQgZnJvbSB0aGUgWERQIHByb2dyYW0gd2hlbiBuZWVkZWQg YW5kIG9ubHkgdGhlbiwgbm90DQo+ID4gZnJvbSB0aGUgZHJpdmVyLCBzbyBkcml2ZXIgY29kZSBi ZWNvbWVzIHVuY2x1dHRlcmVkIGJ5IHRoZXNlIGxhcmdlIGlmDQo+ID4gc3RhdGVtZW50cy4NCj4g DQo+IEFoLCB3aXRoIHRoaXMgYml0IEkgdW5kZXJzdG9vZCB5b3VyIHBvaW50IGFib3ZlIGFib3V0 ICJhIGhlbHBlciByZWFkaW5nIHRoZQ0KPiBkYXRhIGZyb20gdGhlIGhhcmR3YXJlIi4gTGV0IG1l IHNlZSBpZiBJIGNhbiByZXBocmFzZSB5b3VyIHByb3Bvc2FsLCBhbmQgbGV0DQo+IG1lIGtub3cg aWYgSSBnb3QgaXQgd3Jvbmc6DQo+IA0KPiBUaGUgcHJvYmxlbSB5b3UncmUgc3BlYWtpbmcgb2Yg aGVyZSwgaXMgdGhhdCBvZiB0cmFuc2Zvcm1pbmcgdGhlIGJpdHMgdGhhdA0KPiBjb21lIGluIGZy b20gdGhlIGhhcmR3YXJlIChpbiBhbiBSWC1kZXNjLCBzYXkpLCBpbnRvIHRoZSBtZXRhZGF0YSBm b3JtYXQNCj4gY29uc3VtZWQgYnkgWERQLiBTYXksIGZvciBpbnN0YW5jZSB0aGF0IHRoZSBkcml2 ZXIgaGFzIGEgZnVuY3Rpb24NCj4gbGlrZToNCj4gDQo+IHU2NCBteV9kcml2ZXJfcmVhZF9yeF90 aW1lc3RhbXAodm9pZCAqcGt0X2RzYyk7DQo+IA0KPiB3aGljaCBkb2VzIHdoYXRldmVyIGJpdCBv ZiBkZXZpY2Utc3BlY2lmaWMgbWFnaWMgaXQgbmVlZGVkIHRvIGdldCBhIHdlbGwtDQo+IGZvcm1l ZCB1NjQgdGltZXN0YW1wIG91dCBvZiB0aGUgcGFja2V0IGRlc2NyaXB0b3IsIG1heWJlIGludm9s dmluZw0KPiBoYW5kbGluZyBIVy1zcGVjaWZpYyBxdWlya3MgZXRjLiBBbmQgeW91IHdhbnQgdG8g ZXhwb3NlIHRoaXMgZnVuY3Rpb24NCj4gZGlyZWN0bHkgdG8gQlBGIGluc3RlYWQgb2YgaGF2aW5n IGEgYmlnIGNvbmRpdGlvbmFsIGluIHRoZSBkcml2ZXIgQyBjb2RlLCBzbyB3ZQ0KPiBjYW4gdXNl IEJQRiBjb2RlIGVsaW1pbmF0aW9uIHRvIG9ubHkgZ2V0IHRoZSBiaXRzIHdlIHdhbnQsIHJpZ2h0 Pw0KDQpZb3UgZ290IGl0IQ0KDQo+IFRoaXMgaXMgYWN0dWFsbHkgc29tZXRoaW5nIEplc3BlciBh bmQgSSBoYXZlIGJlZW4gZGlzY3Vzc2luZyBhcyBhIHBvc3NpYmxlDQo+IGZ1dHVyZSBzb2x1dGlv biEgSG93ZXZlciwgd2hhdCB3ZSBkaXNjdXNzZWQgd2FzIG5vdCBleHBvc2luZyB0aGlzICp0bw0K PiBYRFAqLCBidXQgcmF0aGVyIHRvIGhhdmUgYSBzZXBhcmF0ZSBCUEYgcHJvZ3JhbSAqd2hpY2gg aXMgcGFydCBvZiB0aGUNCj4gZHJpdmVyKiB0aGF0IGRvZXMgdGhpcy4gQW5kIHRoaXMgQlBGIHBy b2dyYW0gY2FuIHRoZW4gYmUgcGFpcmVkIHdpdGggdGhlIEJURg0KPiBmb3JtYXQgY29taW5nIGlu IGZyb20gdXNlcnNwYWNlLCBzbyB0aGF0IGl0IHdpbGwgb25seSBsb2FkIHRoZSBmaWVsZHMNCj4g cmVxdWVzdGVkLiBTbywgZ29pbmcgYmFjayB0byBteSBpbWFnaW5hcnkgY29uZmlndXJhdGlvbiBp bnRlcmZhY2UgYWJvdmUsDQo+IHdoZW4gdXNlcnNwYWNlIGNhbGxzOg0KPiANCj4gZGV2X21ldGFk YXRhX2NvbmZpZ3VyZShpZmluZGV4LCBCVEZfT0ZfU1RSVUNUKG15X21ldGFfZm9ybWF0KSk7DQo+ IA0KPiB0aGUgZHJpdmVyIHR1cm5zIHRoaXMgb3ZlciB0byB0aGUgQlBGIHN1YnN5c3RlbSB3aXRo IGEgQlBGIHByb2dyYW0gbGlrZToNCj4gDQo+IGludCBteV9kcml2ZXJfY29udmVydF9tZXRhKHZv aWQgKmN0eCwgdm9pZCAqbWV0YV9kc3QpIHsNCj4gICAgICAgICBzdHJ1Y3QgbXlfbWV0YV9mb3Jt YXQgKm1ldGFfZHN0X2ZtdCA9IG1ldGFfZHN0Ow0KPiANCj4gICAgICAgICBpZiAoYnBmX2NvcmVf ZmllbGRfZXhpc3RzKG1ldGFfZHN0LT5yeF90aW1lc3RhbXApKQ0KPiAgICAgICAgICAgIG1ldGFf ZHN0LT5yeF90aW1lc3RhbXAgPSBteV9kcml2ZXJfcmVhZF9yeF90aW1lc3RhbXAoY3R4KTsNCj4g ICAgICAgICBpZiAoYnBmX2NvcmVfZmllbGRfZXhpc3RzKG1ldGFfZHN0LT5tYWdpY19jb2xvdXJf b2ZfcGFja2V0KSkNCj4gICAgICAgICAgICBtZXRhX2RzdC0+bWFnaWNfY29sb3VyX29mX3BhY2tl dCA9DQo+IG15X2RyaXZlcl9yZWFkX21hZ2ljX2NvbG91cl9vZl9wYWNrZXQoY3R4KTsNCj4gICAg ICAgICAuLi5ldGMNCj4gfQ0KPiANCj4gDQo+IEFuZCB0aGVuIHRoZSBkcml2ZXIgY29kZSB3aGVy ZSBiZWZvcmUgeW91IGhhZCwgYXMgeW91IHNhaWQ6DQo+IA0KPiA+IElmIChtZXRhZGF0YV9hX2Vu YWJsZWQpDQo+ID4gICAgIG1ldGEtPmEgPSBSZWFkX21ldGFkYXRhX2EoKTsNCj4gPiBJZiAobWV0 YWRhdGFfYl9lbmFibGVkKQ0KPiA+ICAgICBtZXRhLT5iID0gUmVhZF9tZXRhZGF0YV9iKCk7DQo+ IA0KPiB3aWxsIGp1c3QgYmUNCj4gDQo+IEJQRl9QUk9HX1JVTihkcnYtPm1ldGFfd3JpdGVyX3By b2csIG1ldGEpOw0KPiANCj4gYW5kIHRoYXQgd2lsbCBydW4gdGhlIEJQRiBwcm9ncmFtIHRoYXQg d2FzIGxvYWRlZCAodmlhIGEgdXNlcm1vZGUgaGVscGVyLA0KPiBwcm9iYWJseSkgd2hlbiB1c2Vy c3BhY2UgY29uZmlndXJlZCB0aGUgbWV0YWRhdGEgZm9ybWF0IGFuZCB3ZSdsbCBnZXQgdGhlDQo+ IGNvbmRpdGlvbmFsIGNvZGUgZ29vZG5lc3MgYW5kIGJldHRlciBwZXJmb3JtYW5jZS4NCg0KUGVy ZmVjdCEgVGhpcyB3YXMgYWN0dWFsbHkgbXkgZmlyc3QgdGhvdWdodCB0b28sIHRvIGhhdmUgYSBu ZXcgaG9vayBwb2ludCBmb3IgbWV0YWRhdGEgcG9wdWxhdGlvbi4gQnV0IEkgdHVybmVkIHRvIHRo ZSBjdXJyZW50IGFwcHJvYWNoIGJlY2F1c2UgSSB0aG91Z2h0IGl0IHdvdWxkIGJlIHRvbyBoYXJk IHRvIGdldCBhIG5ldyBob29rIHBvaW50IGluLiBUaG91Z2gsIHRoZXJlIGFyZSBwb3RlbnRpYWxs eSBhIG51bWJlciBvZiBhZHZhbnRhZ2VzIHdpdGggaGF2aW5nIGEgbmV3IGhvb2sgcG9pbnQgZm9y IHRoaXMuIE9uZSBmcm9tIGFuIEFGX1hEUCBwb2ludCBvZiB2aWV3IHdvdWxkIGJlIHRoYXQgd2Ug Y291bGQgb3B0aW9uYWxseSBwZXJmb3JtIHRoZSBhdHRhY2ggb24gYSBwZXIgbmV0ZGV2L3F1ZXVl IGJhc2lzIGFuZCBnZXQgYSBtdWNoIGVhc2llciBoYW5kbGluZyBvZiBwZXIgQUZfWERQIGFwcGxp Y2F0aW9uL3NvY2tldCBtZXRhZGF0YSB1c2FnZS4gQnV0IGdyZWF0IHRoYXQgd2UgYXJlIHRoaW5r aW5nIGFib3V0IHJvdWdobHkgdGhlIHNhbWUgdGhpbmdzLiBFbmNvdXJhZ2luZy4NCg0KPiBIb3dl dmVyLCBoYXZpbmcgc3VjaCBhIGZhY2lsaXR5IGZvciBkcml2ZXJzIHRvIGR5bmFtaWNhbGx5ICp3 cml0ZSogbWV0YWRhdGENCj4gaXMsIEkgYmVsaWV2ZSwgY29tcGxldGVseSBvcnRob2dvbmFsIHRv IGhvdyB3ZSBpbXBsZW1lbnQgdGhlIGRlc2NyaXB0aW9uDQo+IGZvcm1hdCBmb3IgY29uc3VtaW5n IHRoaXMgbWV0YWRhdGEgZnJvbSBYRFAgYW5kIHVzZXJzcGFjZS4NCj4gRm9yIG9uZSB0aGluZywg bm90IGFsbCBkcml2ZXJzIHdpbGwgcHJvYmFibHkgd2FudCB0byB1c2UgdGhlIGR5bmFtaWMgbWV0 aG9kLA0KPiBzbyB3ZSBzaG91bGQgbm90IHRpZSB1cCB0aGUgY29uc3VtcHRpb24gb2YgbWV0YWRh dGEgdG8gdGhpcy4gRm9yIGFub3RoZXIsDQo+IGl0J3Mgd2F5IHRvbyBjb21wbGV4IHRvIGltcGxl bWVudCBldmVyeXRoaW5nIGF0IG9uY2UsIHNvIGRlZmluaW5nIHRoZQ0KPiBjb25zdW1wdGlvbiBm b3JtYXQgZmlyc3QsIHRoZW4gd29ya2luZyBvbiBlZmZpY2llbnRseSB3cml0aW5nIGl0IGFmdGVy d2FyZHMgKG9yDQo+IGluIHBhcmFsbGVsLCBtYXliZSkgbWFrZXMgaXQgcG9zc2libGUgdG8gaGF2 ZSBpbmNyZW1lbnRhbCBwcm9ncmVzcy4NCg0KQWdyZWVkLg0KDQo+IFRoYXQgYmVpbmcgc2FpZCwg aGF2aW5nIGJvdGggdGhpbmdzIGluIG1pbmQgd2hlbiBkZWZpbmluZyB0aGluZ3MgaXMgYSBnb29k DQo+IGlkZWEuIEJ1dCBhcyBJIGhhdmUgaG9wZWZ1bGx5IG91dGxpbmVkIGFib3ZlLCB1c2luZyBC VEYgYXMgdGhlIGRlc2NyaXB0aW9uDQo+IGZvcm1hdCBhbGxvd3MgYm90aCB3cml0aW5nIGFuZCBy ZWFkaW5nIG9mIG1ldGFkYXRhIHRvIGJlIGZsZXhpYmxlIGFuZA0KPiBleHRlbnNpYmxlLg0KPiAN Cj4gPiAqIFdlIGFsc28gZ2V0IGF3YXkgZnJvbSB0aGUgcHJvYmxlbSB0aGF0IHRoZSBCVEYgaWQg Y2FuIGNoYW5nZSBmcm9tDQo+ID4gdW5kZXJuZWF0aCB0aGUgQUZfWERQIGFwcGxpY2F0aW9uLiBU aGlzIGJlY29tZXMgZXNwZWNpYWxseSBwcm9ibGVtYXRpYw0KPiA+IHdoZW4gd2Ugd291bGQgbGlr ZSB0byBhcHBseSB0aGlzIHRvIHRoZSBUeCBwYXRoIGFuZCBkbyBvZmZsb2Fkcy4NCj4gDQo+IEZv ciB0aGlzIHBvaW50LCBJIHRoaW5rIG1heWJlIHRoZSBleGlzdGVuY2Ugb2YgdGhlIGJ0Zl9pZCBm aWVsZCBpbiB0aGUgbWV0YWRhdGENCj4gc3RydWN0IGhhcyBnaXZlbiB5b3UgdGhlIGltcHJlc3Np b24gdGhhdCB0aGUgZm9ybWF0IGNhbiBnbyBhbmQgY2hhbmdlIGF0IGFueQ0KPiB0aW1lPyBJIGRv bid0IHRoaW5rIHRoYXQgaGFzIHRvIGJlIHRoZSBjYXNlOiBpZiBhIHVzZXIga25vd3MgdGhhdCB0 aGV5IHdpbGwNCj4gYWx3YXlzIHVzZSB0aGUgc2FtZSBtZXRhZGF0YSBmb3JtYXQsIGFuZCB0aGV5 IGtub3cgd2hhdCB0aGF0IGZvcm1hdCBpcywNCj4gaXQncyBwZXJmZWN0bHkgdmFsaWQgdG8ganVz dCBpZ25vcmUgdGhlIGJ0Zl9pZCBmaWVsZCBhbmQganVzdCBjYXN0IHRoZSBtZXRhZGF0YQ0KPiBm aWVsZCB0byBhIHN0cnVjdC4gSG93ZXZlciwgdGhlIGZpZWxkIGhhcyB0byBiZSB0aGVyZSBzbyB0 aGF0IGl0IGlzIHBvc3NpYmxlIGZvcg0KPiB0aGUgY29uc3VtZXIgdG8gZGV0ZWN0IHdoZW4gaXQg Y2hhbmdlcywgaW4gb3JkZXIgdG8gc3VwcG9ydCBwb3J0YWJsZQ0KPiBhcHBsaWNhdGlvbnMuIFRo ZXJlIGFyZSB0d28gdXNlIGNhc2VzIGZvciB0aGlzOg0KDQpJdCB3b3VsZCBiZSBncmVhdCBpZiB3 ZSBjb3VsZCBrbm93IGl0IGlzIGZpeGVkLCBidXQgSSBkbyBub3QgdW5kZXJzdGFuZCBob3cgdGhl IHVzZXIgY2FuIGtub3cgdGhpcywgZXNwZWNpYWxseSBzaW5jZSB0aGUgY29udHJvbCBvZiB0aGlz IGlzIG91dC1vZi1iYW5kLiBIb3cgd291bGQgd2UgZGVhbCB3aXRoIHRoZSBmb2xsb3dpbmcgc2Nl bmFyaW8/DQoNCkFwcCAxIGNvbWVzIHVwLCBvcGVucyB1cCBhbiBBRl9YRFAgc29ja2V0IGFuZCBy ZXF1ZXN0cyBtZXRhZGF0YV8xDQpBcHAgMiBjb21lcyB1cCwgb3BlbnMgdXAgYW5vdGhlciBBRl9Y RFAgc29ja2V0IG9uIHRoZSBzYW1lIG5ldGRldiBhbmQgcmVxdWVzdHMgbWV0YWRhdGFfMg0KDQpX ZSBjYW4gcHJvdmlkZSB0aGUgYXBwcyB3aXRoIHR3byBkaWZmZXJlbnQgYnRmX2lkcywgYnV0IGlz IHRoaXMgc29tZXRoaW5nIHRoYXQgYW4gZXhpc3RpbmcgZHJpdmVyIGNhbiBzdXBwb3J0IGFuZCBo b3cgZG9lcyB0aGlzIHNjYWxlIGFzIHdlIGFkZCBzb2NrZXRzIGFuZCBkaWZmZXJlbnQgdXNhZ2Vz IG9mIG1ldGFkYXRhPyBOb3RlIHRoYXQgd2UgaGF2ZSBubyBpZGVhIHdoYXQgdGhlIGRlc3RpbmF0 aW9uIGlzIHVudGlsIGFmdGVyIHdlIGhhdmUgZXhlY3V0ZWQgb3VyIFhEUCBwcm9ncmFtIGFuZCBw b3RlbnRpYWxseSB1c2VkIHRoZSBtZXRhZGF0YSBhcmVhIHRoZXJlLiBCdXQgb3VyIHBvcHVsYXRp b24gb2YgdGhlIG1ldGFkYXRhIGZpZWxkIGlzIGJlZm9yZSB0aGUgWERQIHByb2dyYW0uIEtpbmQg b2YgY2hpY2tlbiBhbmQgZWdnLg0KDQpUaGUgaWRlYSBvZiBhIHNlcGFyYXRlIG1ldGFkYXRhIHBv cHVsYXRpb24gaG9vayBwb2ludCBvbiB0aGUgbmV0ZGV2L3F1ZXVlX2lkIGxldmVsIGNvdWxkIHBv dGVudGlhbGx5IHNvbHZlIHRoaXMuIFdlbGwsIGFzIGxvbmcgYXMgeW91IGFyZSBub3QgYXR0YWNo aW5nIHNldmVyYWwgc29ja2V0cyB0byB0aGUgc2FtZSBuZXRkZXYgYW5kIHF1ZXVlX2lkLCBidXQg dGhhdCBpcyByYXJlLg0KDQo+IC0gV3JpdGluZyBhbiBhcHBsaWNhdGlvbiB0aGF0IGNhbiBzdXBw b3J0IGRpZmZlcmVudCBtZXRhZGF0YSBmb3JtYXRzIHNvDQo+ICAgaXQgY2FuIHJ1biB3aXRob3V0 IHJlLWNvbXBpbGF0aW9uIG9uIGRpZmZlcmVudCBoYXJkd2FyZS4gRm9yIHRoaXMsIGl0DQo+ICAg aXMgcG9zc2libGUgdG8gbG9hZCB0aGUgcHJvZ3JhbSB3aXRoIGEgdGFyZ2V0IGRldmljZSwgc28g dGhhdCB0aGUgbG9uZw0KPiAgIHNlcXVlbmNlIG9mIGNoZWNrcyBvZiB0aGUgYnRmX2lkIGNhbiBi ZSBlbGltaW5hdGVkIGJ5IENPLVJFIGF0IGxvYWQNCj4gICB0aW1lLCBhbmQgdHVybmVkIGludG8g anVzdCBhIHNpbmdsZSBzYW5pdHkgY2hlY2sgc28gdGhhdCB0aGUgbWV0YWRhdGENCj4gICBpcyBu b3QgbG9hZGVkIGlmIHRoZSBjb25maWd1cmF0aW9uIGNoYW5nZXMuDQoNCldvdWxkIGJlIGdyZWF0 IGlmIHdlIGhhZCBDTy1SRSBmb3IgdXNlci1zcGFjZSwgYnV0IGFzIGl0IGlzIG5vdCB0aGVyZSBp biBsbHZtIG9yIGdjYyBmb3IgeDg2LCB3ZSBwcm9iYWJseSBoYXZlIHRvIGdvIHRocm91Z2ggYWxs IHRoZSB0ZXN0cyBpbiBBRl9YRFAuDQoNCj4gLSBXcml0aW5nIGFuIGFwcGxpY2F0aW9uIHRoYXQg ZGVhbHMgd2l0aCBwYWNrZXRzIGZyb20gbXVsdGlwbGUgZGV2aWNlcw0KPiAgIGluIHRoZSBzYW1l IHByb2dyYW0gKHNheSwgYSBkZXZtYXAgcHJvZ3JhbSB0aGF0IGdldHMgcmVkaXJlY3RzIGZyb20N Cj4gICBkaWZmZXJlbnQgaGFyZHdhcmUgaW50byB0aGUgc2FtZSBlZ3Jlc3MgZGV2aWNlKS4NCg0K WWVzLiBUaGUgc2FtZSBnb2VzIGZvciBBRl9YRFAgYW5kIGEgc2hhcmVkIHVtZW0gYmV0d2VlbiBk aWZmZXJlbnQgTklDcy4NCg0KPiAtIERlYWxpbmcgd2l0aCBtZXRhZGF0YSBjb25maWd1cmF0aW9u IHdoZXJlIGEgc3Vic2V0IG9mIHRoZSB0cmFmZmljIGhhcw0KPiAgIGRpZmZlcmVudCBtZXRhZGF0 YSAoZS5nLiwgdGltZXN0YW1wcyBtYXkgb25seSBhcHBlYXIgb24gUFRQIHBhY2tldHMsDQo+ICAg c2F5KS4gSGVyZSB0aGUgY2hlY2sgb2YgdGhlIEJURiBJRCBjYW4gYmUgdXNlZCB0byBkZW11eCB0 aGUgcGFja2V0DQo+ICAgdHlwZS4NCg0KV291bGQgdGhpcyBub3QgbGVhZCB0byBhIGNvbWJpbmF0 b3JpYWwgZXhwbG9zaW9uIG9mIEJURiBJRHMgYXMgd2UgYWRkIGZpZWxkcyB0aGF0IG1pZ2h0IG9y IG1pZ2h0IG5vdCBoYXZlIGEgdmFsaWQgZW50cnk/IFdvdWxkIGl0IG5vdCBiZSBiZXR0ZXIgd2l0 aCBhIGZsYWdzIGZpZWxkIGluIHRoZSBNRCBzZWN0aW9uPw0KDQpUaGFuayB5b3Ugc28gbXVjaCBm b3IgeW91ciBmZWVkYmFjay4gSXQgcmVhbGx5IGhlbHBlZCEgSW4gc3VtbWFyeSwgQlRGIGl0IGlz IGFzIGFuIGludGVyZmFjZSBhbmQgSSBhZ3JlZSB0aGF0IHdlIHNob3VsZCBzdGFydCBzaW1wbGUg YW5kIGp1c3QgZ2V0IHRoaXMgdG8gd29yayB3aXRoIHRoZSBpZi1zdGF0ZW1lbnQgbWV0aG9kLiBC dXQgaXQgc2VlbXMgdGhhdCBJIGNhbiBhbHNvIGNvbnRpbnVlIHRvIHByb3RvdHlwZSB0aGUgbWFp biBpZGVhIG9mIHJlYWRpbmcgbWV0YWRhdGEgZnJvbSBYRFAuIERvIHlvdSB0aGluayBpdCB3b3Vs ZCBiZSBwb3NzaWJsZSB0byBnZXQgYSBuZXcgaG9vayBwb2ludCBmb3IgWERQIG1ldGFkYXRhIHBv cHVsYXRpb24/IElmIHNvLCBJIHRoaW5rIHdlIHNob3VsZCBwdXJzdWUgdGhhdCwgZXNwZWNpYWxs eSBpZiB3ZSBjb3VsZCB0aWUgaXQgdG8gYSBuZXRkZXYvcXVldWVfaWQgcGFpci4gVGhhdCB3b3Vs ZCBzaW1wbGlmeSBhIGxvdCBmb3IgQUZfWERQLiANCg0KL01hZ251cw0KDQo+IC1Ub2tlDQoNCg==