From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2076.outbound.protection.outlook.com [40.107.220.76]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 11C0A2D3ED6 for ; Fri, 11 Jul 2025 12:59:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.220.76 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752238765; cv=fail; b=UtlSbF5otSTX7B7XZBj/lid1BXT9/aG+ZhKgNvIEqKg/4qsHt3E+64Tc2i+89Di5dJXuS4IzcAfXUZtKpH6P6wgSsBBnKbVt8oi/8seVwHI3A6d2ueXTNMJh+Ppl6Xkvosk26fRX1sj6962kAm/WppZu9Z4/g7S53vl4ZKxBju4= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752238765; c=relaxed/simple; bh=AK7Tgfrs/4Kqd3jdtYt5zAaY5sjid+iGRunx6BvPavA=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=LxIwZt1f5MhuuG6mFz7Gwijkwkqn/a0M+OY/2CkRQjIL0X0A1JloTlll4G2ZLW6BvMRSUJmIK3kt2PuY9KN/HCLO9k6qQzA6Uh81n7d2UyuKxZ24G/vc6ayGPc2HYxP97/Zxs3z1g5EhHn8Y139ZvXlmvWVZbp7XzxbVjthkpLo= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=K4nbx8ww; arc=fail smtp.client-ip=40.107.220.76 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="K4nbx8ww" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ymSeGd4F+9r3qnW4BAGhEHylfDoDL7UmqJh0OdVb37zeguUKap/8Ul9XotkLiBLDRbfkFS3C/Cu/UGV9RxyS1020hznxbLUpSaIKDROBq4xi65G+FRqL4/P2T4rQcTnGU20dJM/C62soO/7Yv1+A+ITmVkXWBVv/3/732aho66peJQMYIWRhS5mMBBnaf4jcgECdPKBa9DrebJIEsjfGQHRK7bxKDNTG3LNVxft+qnGKG9JKkGt3AHeSzsJEBPXiPmkoorXNSBRkNyrU1uoO6ERhCq7PIQHD38U066LOhqSHLPyFhSTx13fSoKrONhVcDP6ksFWLQUQXDqA323iyOg== 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=AK7Tgfrs/4Kqd3jdtYt5zAaY5sjid+iGRunx6BvPavA=; b=vEpeMRzuP66QxQvZHOzZJ7BAjv0pz9N6LL6j0YMeCstLTFbKpg6LJjhyhdmPDy9vz1KPROlU8Y28zvC3uz/0uQKrBezM3ahaiTvwRti6r9PFQ1Tm378I3XgoPej7LMKkCuFPlRVJ93Hdk0F6zpuG85fw2PZsoeZit//5il/8EdE0tnl/MFi1EzLebl6EUiC+wy9dWePSAZM1WJJv3xVnAacNrMKExHbkxEvWcFM6bXpeUcdBO/0fRcviYryKi1WYhi7RGjwKvO/NJu6zlvtATGEjtqpuQpPsIsaI+B6UqtLnJgEGzrXDsvBDxfJ4m0QmCc2M36+d1TyJaZxzkyKUtw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=AK7Tgfrs/4Kqd3jdtYt5zAaY5sjid+iGRunx6BvPavA=; b=K4nbx8wwl3hZ/8Dfe2i44PFnHaKs3Jn+6GTdf9gnoxU/sZ35nKAYoC+xJQJiL4nN9ut8JW3ZJDwBgM95dFF4ibQSEEwfcSCVXEIhxeFkOXewTvGqmqLH+e2WV8wO6xJFBeAGn7uAbqq2d1OtAunK9xvUHsvA9uw7cSQXxdiDHTR05xvMXEDQufvcj7KpaP3FTYumioJcfWMh4HJpFUnxXrIzyQkvLOIQnTp50S8YmZ/eedA7+kRWZRMTrRwJXAw9c51ZOLl1ent42CXOwoN8dqqMrSmLn77rjVoApnI8Wz/fcqLt+Iw5MKtGDbhGE6l7ylwR1qf8Uj9qACkUixGDBg== Received: from DS5PPF266051432.namprd12.prod.outlook.com (2603:10b6:f:fc00::648) by DS0PR12MB9276.namprd12.prod.outlook.com (2603:10b6:8:1a0::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.29; Fri, 11 Jul 2025 12:59:19 +0000 Received: from DS5PPF266051432.namprd12.prod.outlook.com ([fe80::a991:20ac:3e28:4b08]) by DS5PPF266051432.namprd12.prod.outlook.com ([fe80::a991:20ac:3e28:4b08%6]) with mapi id 15.20.8835.025; Fri, 11 Jul 2025 12:59:19 +0000 From: Cosmin Ratiu To: "corbet@lwn.net" , "andrew+netdev@lunn.ch" , "davem@davemloft.net" , "kuba@kernel.org" , "horms@kernel.org" , "daniel.zahka@gmail.com" , "edumazet@google.com" , "donald.hunter@gmail.com" , "pabeni@redhat.com" CC: Boris Pismenny , Jianbo Liu , "aleksander.lobakin@intel.com" , "kuniyu@google.com" , "leon@kernel.org" , "toke@redhat.com" , Rahul Rameshbabu , "willemb@google.com" , Raed Salem , Dragos Tatulea , "ncardwell@google.com" , "dsahern@kernel.org" , "sdf@fomichev.me" , Saeed Mahameed , "netdev@vger.kernel.org" , Tariq Toukan , Patrisious Haddad , "jacob.e.keller@intel.com" Subject: Re: [PATCH v3 15/19] net/mlx5e: Add PSP steering in local NIC RX Thread-Topic: [PATCH v3 15/19] net/mlx5e: Add PSP steering in local NIC RX Thread-Index: AQHb63TxG8MNoo6yzUWCaPrSgVTUoLQs8E8A Date: Fri, 11 Jul 2025 12:59:18 +0000 Message-ID: References: <20250702171326.3265825-1-daniel.zahka@gmail.com> <20250702171326.3265825-16-daniel.zahka@gmail.com> In-Reply-To: <20250702171326.3265825-16-daniel.zahka@gmail.com> Reply-To: Cosmin Ratiu Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DS5PPF266051432:EE_|DS0PR12MB9276:EE_ x-ms-office365-filtering-correlation-id: fdf1e987-8f32-4484-fc95-08ddc07abfa6 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|366016|376014|7416014|38070700018; x-microsoft-antispam-message-info: =?utf-8?B?OGo4cDNPeE5nS1pOb3pPL1F1VlQyWEJVcVV6d1ZFWnlLRTZacFhCUURiY1po?= =?utf-8?B?RmMxMEdKVjJqMGMzYm9sRjByUW9XdTU3YVBveTRMaEIraklDUi81TVpBVmdn?= =?utf-8?B?SnJWLzcvTDNVWDlMVjgyNDRFN0c0cUpOM3JiQ2Y3N0Zmckx5UUFvNGovd0RT?= =?utf-8?B?VXJDLytkZ0cvRG9IdUVpSHNMRnplSWlucFJieVFsVGlJZUw5UnBiNzNhQ1Bj?= =?utf-8?B?YnFWWkNURTJWeDh4ZGZucEFOVDV5WTMySHBVQjgvNGpPQ09TUFJpVFRUcDVq?= =?utf-8?B?YnNHc2pRczAwZjVGSlAreFZVU0s1Y2lvb29kQVYzbXp0NE9RNjZHcTViOUlO?= =?utf-8?B?bjJ1QUxJZ2l2MUVnMzNDc1Bmek5URGFGbHBMamtQWEJKZXFkODZ5bHVpenFC?= =?utf-8?B?Y1dRdStvLzVLbVpkNk5tQkhZQzgxanVBa2pkaTZienpCOWpQVTZFc2s4cnVn?= =?utf-8?B?K1gwNmU3NlU3cVlvUWNVdndPbEowcEpibDlkblNRWDJBVXppNWRSbGQ5VDFB?= =?utf-8?B?WXpwZE1obWJCQUVFZnhEWms2QVVtZW9uSTVucVh3emw5cG5lcVZOVlAyTzJS?= =?utf-8?B?ZjV0VHpoeE0rUjc0M1N4M2xEVzg5TnlVOER4SWFDWnNPUnlXdzJtV3paZWRk?= =?utf-8?B?WkdNOTNzWmhaMFFRbTAyRzBhNERsd3phVHAyaGNIeUpPNE5QRzVsMFQ1bWRj?= =?utf-8?B?RXhqK2dyb1lPcGRFYUh3dnRKZ25Pamswc1JzMlI1SnV4YlAzMHk5ZTdRMmY2?= =?utf-8?B?OUZxdzR0Z1JDaGFCMzVQUG9mZW40THdYZmh1N2h1UXJaTllwMit4dStrcllH?= =?utf-8?B?T1QrLzBQUVcvdXRiTHd5cjIzMS9kRFpiRUcrNWdKWmR4U2sza2JJQjZMVGEy?= =?utf-8?B?ZnZzMmxFSTgydnFqVzVYaEkxYTNoVDJHUTFISUVtMGZzb25oOFdWNVhjUEIw?= =?utf-8?B?dGN3dXlvOGN6WnhNVHcybFpUMU8vcDFZTjFLNStTRk9OdUhINW9lZDh6ZUtY?= =?utf-8?B?Uk1SOVJKYzlMOHJwbzVVdVpsNG9SWTMzcWJQTmtadkNjaVMrNGRRN28ySlE4?= =?utf-8?B?aE5DYWNnU0J3OG5ZemV0RFZ2UjNhT2FUdzd2VFg2RG9tL1RhS2FWYXFMZW0v?= =?utf-8?B?aGF5TE9XVjNwTVNYdUlwekJ1WWp3Wk0vUlpwSmdPMWRuYWdJd2lJdm1NY29a?= =?utf-8?B?MzlBQS9pTEI5bEZFeVJRQUJqekdzZ21FcmVFRVp1T1BSQVBXaG5MSERFUUpG?= =?utf-8?B?OWlpczl1dkplK2E1Z0x1VVg4OFlJZzB1QzcwaUpxVFlXcVdwWEFLbVhCMWtw?= =?utf-8?B?V1YwbXBueTFuaDdxcHVaeVZwSTJ6TCtFeW91YWdJellFcWhiS2FpcHZqVDRO?= =?utf-8?B?dDJKNXAybEZtR2NtR1dBMnJvbnRrSTVmc2VHd1lVTFdLTEF6SmFrejNoUmF0?= =?utf-8?B?V0RLN0lMRlJUbndGbzJUbmQwNWRzeTVsNUhNRTBMNldnbC9ISFFaZUVCK005?= =?utf-8?B?YUlNK04wRFhQTEh1VWpjRytqeDFzamQrL0FJQWN4eGZZd0h4TGJMTlA3UUNt?= =?utf-8?B?L0haNEpreFRjRC9oV0FraTFtczNQSVFGbGJ3KzQvR1RpU0M5YzRYNGVrRVBx?= =?utf-8?B?YjJ1MHNzNjN6QUEweHY4NU4vVnVXM3ZWSlZhNU1GRFNXZFRMdnpiUTZjNlZt?= =?utf-8?B?SFpzckpMR3F2MGJabkFSY2E1QmFXb0o5UlNscXZtODZrVEZzRHIwQ1lid09o?= =?utf-8?B?QUJMTWh6WENZaU5Za3krZVRUWWhPdWdFZEp1NEsxQWdUQ1Npajd2NzdRdEsx?= =?utf-8?B?S3RLUGh0a2ZKU1ZnRUdzVit2VTAvMXZQRGVpWlVCZmd4eTBsWlN4M0xUL0lp?= =?utf-8?B?M1NPeXNnd1JuUitCRHJDc0UrQnUrSDhhb1BMdVNHZ3NVemNySG9lMm5VSlJu?= =?utf-8?B?VmlUVmFqR001V1I2eEJSMjRxYkc1ZWV5LzJ2RjlnRjN1YURxWWpRaUxOcGNX?= =?utf-8?Q?hPdJkN3+FwJAsD4P5yxT3IAfBg5/4E=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS5PPF266051432.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(7416014)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?emNjRGhZS2hiR200VU9zd1RjaUtXVnlnMkNuV2JndFZZZk12OHRhZm81LzUv?= =?utf-8?B?c0YrbW9nZ2R6RjBYWlk0NFNEMnpXUmk1R0VHU0pzSEQ1Z1k4SzFHeEhYTHBX?= =?utf-8?B?dDd3VlZrUmU1L21CSFBYZDNoMjZoekNoUGgvT00rMlhGZTV1ODRrcmZzc0Qz?= =?utf-8?B?ajRWdDlRQWdaUTlEQlBQTkUzb0JoeEU3QjNQeVUrKzRqZTI3NGEvVm9XQTB1?= =?utf-8?B?SzNaRGQ3WmVLc05xNWR6YUNDNXdwVDU1Y0w3bUNIUFhwV0R5T0pXUlYwTVc1?= =?utf-8?B?MDdOQzE0dlNwVXlaMzI2MUZUZEl5d3UzMllrdjF0MDdoTDE3TWswZldTUHNE?= =?utf-8?B?MjU2dFZ2Q0Nyc0dGTml3S28rNllUaHZFWHVSak81U1FMVlRrbC9rQUNDczg0?= =?utf-8?B?OHRYd0ZiV0U3ZndudUFZZU80M21LVDVmblVOTXVENDR1Um5Fd3phbmNoY2Ru?= =?utf-8?B?V3RJeU5XcjhxMUsyQ2tpTEZOVE9LZkF0TmxMZHBGVVNiZ0U1RWJpUGJaVFRV?= =?utf-8?B?Ny9zRXZsNHNZcXQ1dWFZNmVtZS82VHhEM2dNOTVsSEx3OGwvaDFPVmdUd2tU?= =?utf-8?B?ejFyOWc3R2hOVzkrTEFLSDVJbkFtemd0NEk3N3pXbjh4Nk5VbG5hbzRVT2Q3?= =?utf-8?B?U1VjaWdONDdGTG5OR2cvY0drOVBqWm1BTk8zTW5yMHY3N0RmMEY3Z2UzZE1x?= =?utf-8?B?NlhGNHpSa2s5SFNxUW9paCsvcXd4b3cyQ0xQVlBnYS9jYXMwWTZodjZqejNq?= =?utf-8?B?L3pqS0xtVjJIN0pTRkZubmlZU0crcjRaN0JwdENaUmJINEJYWUFSRlJFYllF?= =?utf-8?B?bXBQWU52NDlYV2NwTkJYd2NjbHNYRHd6UUk4T0FLaTZBS1dpNFZha2hjWEh0?= =?utf-8?B?NXR0MGlEaDVKV2g4MlJUSFgxYXREaG1KVWlIZC9yd3g3NnNHSjFtY3FwQ0dY?= =?utf-8?B?SExBM0MxNVN6Ukd6UW5sNk1sQktIZTFwVkFtSGswYXF4cC9aZVR4TzM3Mm05?= =?utf-8?B?aUJwVVkxZ0lMWmVmd1NRTDZDSm1wLzRpWjNDTWw3UXZPYXpVNkxhb2ZZa2ky?= =?utf-8?B?aWc3WWFKcFZlL3VEcDhQNXYyOXhMN3J0RTM4ZmN4RXI1T3AwcDdFMmZDU3pz?= =?utf-8?B?cjNVTlpIbUdjZ2hkUFFjbDBVdjVsTU5iMTMySHJvODcvWDJvMldGY1h3L3cw?= =?utf-8?B?SmE4UCtWZXBSZld6VUVCSW1JSUtzdUFubVFmN0l1cHpPUTc1cGVRS3F0MldP?= =?utf-8?B?eXd4WFpxRDlTMmNNbkdkRDdqN1IrRGpyM1VLanRCOVJiUURtSEFMMEIxNnEv?= =?utf-8?B?elhuZHhGNi9vd3JHNnAxdnMvNTdVOVpxd0NCRHVDWERHSGx2KzNVZmREd2VJ?= =?utf-8?B?Y3FHOHp1NVdJR1dZOGlpMEFGSkFBSXlFdzJMUGlDLzMrVE5UcGdacVhXNUtR?= =?utf-8?B?QW1XYTU5SGZJNzVHQitZcENGT3hsWEY4bXpVUDY1YXpJMlBYeVBtTis4ZHpX?= =?utf-8?B?SjdWOEwybUNva244MU5SUGNGK1NuSzhPVUNTRXEySThqQVV5K0pFOW15dFl6?= =?utf-8?B?QkpKclI0VHlmTmJJZHpReHA2NTUzTGpBUmpVekhWS0Z2N1IrcWYvWE0vaUkx?= =?utf-8?B?VFhUNGk1MGwrSWFDSHBiVmlzM0ZpU1FCRTlXQ09kbkNVOFFLTytGcW5Zaklt?= =?utf-8?B?WEpHWU44ZHFNVUVOR28vTjFUbzR6dWFBM0cvSnNRZGdsNzhqRTBVWFZUQmJP?= =?utf-8?B?OE1qUEVGajNQc3lDcjJQNzVFT2swZ0pZRlZES2ZQYTNleDRteHRZbUZLREFN?= =?utf-8?B?TFJDQS9RRi9ML0htQjN1ODExQXVFbU1ZeVA2QTAraWs2Yzducit6RHJncjB1?= =?utf-8?B?amY4V0JtcEg5czhqeklNczlyaWlJMUU4dkVVWnZDbUNET3V0am5XQ1pkdkF2?= =?utf-8?B?UklQanIyS2MzblBBUUowUlgzV1J5NDZmTFJ5M002YzVBMlJrVUcvTmpHNmp4?= =?utf-8?B?MUVzWGVwMUoyeWtlYVM1NTl4Wk5DVXErRGRuakxmYytJNDM3VmQzR0tBY3Y0?= =?utf-8?B?b0pNakpOZk9HYW4rTnJSTnZyNEpCMTVOOXVZR0EvOHREZGQvQzhMMU0rTCtB?= =?utf-8?Q?vij4FlfYNOtq7gxzOgqPF4wyT?= Content-Type: text/plain; charset="utf-8" Content-ID: <6CA9E8147BA4C145ADF4D24A53795930@namprd12.prod.outlook.com> Content-Transfer-Encoding: base64 Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DS5PPF266051432.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fdf1e987-8f32-4484-fc95-08ddc07abfa6 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Jul 2025 12:59:19.0211 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: cI7z/II/o+GdHcBVVf+Rom78JdrVxlIQafur4elMyszCUHopFiAk7d6NIa3ecYPNmtdl+P6NjL9DyJBoqaaIUQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB9276 T24gV2VkLCAyMDI1LTA3LTAyIGF0IDEwOjEzIC0wNzAwLCBEYW5pZWwgWmFoa2Egd3JvdGU6DQo+ IEZyb206IFJhZWQgU2FsZW0gPHJhZWRzQG52aWRpYS5jb20+DQo+IA0KPiBJbnRyb2R1Y2UgZGVj cnlwdCBGVCwgdGhlIFJYIGVycm9yIEZULCBhbmQgdGhlIGRlZmF1bHQgcnVsZXMuDQo+IA0KPiBU aGUgUFNQIChQU1ApIFJYIGRlY3J5cHQgZmxvdyB0YWJsZSBpcyBwb2ludGVkIGJ5IHRoZSBUVEMN Cj4gKFRyYWZmaWMgVHlwZSBDbGFzc2lmaWVyKSBVRFAgc3RlZXJpbmcgcnVsZXMuDQo+IFRoZSBk ZWNyeXB0IGZsb3cgdGFibGUgaGFzIHR3byBmbG93IGdyb3Vwcy4gVGhlIGZpcnN0IGZsb3cgZ3Jv dXANCj4ga2VlcHMgdGhlIGRlY3J5cHQgc3RlZXJpbmcgcnVsZSBwcm9ncmFtbWVkIGFsd2F5cyB3 aGVuIFBTUCBwYWNrZXQgaXMNCj4gcmVjb2duaXplZCB1c2luZyB0aGUgZGVkaWNhdGVkIHVkcCBk ZXN0aW5hdGlvbiBwb3J0IG51bWJlciAxMDAwLCBpZg0KPiBwYWNrZXQgaXMgZGVjcnlwdGVkIHRo ZW4gYSBQU1AgbWFya2VyIGlzIHNldCBpbiBtZXRhZGF0YV9yZWdCWzMwXS4NCj4gVGhlIHNlY29u ZCBmbG93IGdyb3VwIGhhcyBhIGRlZmF1bHQgcnVsZSB0byBmb3J3YXJkIGFsbCBub24tb2ZmbG9h ZGVkDQo+IFBTUCBwYWNrZXQgdG8gdGhlIFRUQyBVRFAgZGVmYXVsdCBSU1MgVElSLg0KPiANCj4g VGhlIFJYIGVycm9yIGZsb3cgdGFibGUgaXMgdGhlIGRlc3RpbmF0aW9uIG9mIHRoZSBkZWNyeXB0 IHN0ZWVyaW5nDQo+IHJ1bGVzIGluDQo+IHRoZSBQU1AgUlggZGVjcnlwdCBmbG93IHRhYmxlLiBJ dCBoYXMgdHdvIGZpeGVkIHJ1bGUgb25lIHdpdGggc2luZ2xlDQo+IGNvcHkNCj4gYWN0aW9uIHRo YXQgY29waWVzIHBzcF9zeW5kcm9tZSB0byBtZXRhZGF0YV9yZWdCWzIzOjI5XS4gVGhlIFBTUA0K PiBtYXJrZXINCj4gYW5kIHN5bmRyb21lIGlzIHVzZWQgdG8gZmlsdGVyIG91dCBub24tcHNwIHBh Y2tldCBhbmQgdG8gcmV0dXJuIHRoZQ0KPiBQU1ANCj4gY3J5cHRvIG9mZmxvYWQgc3RhdHVzIGlu IFJ4IGZsb3cuIFRoZSBtYXJrZXIgaXMgdXNlZCB0byBpZGVudGlmeSBzdWNoDQo+IHBhY2tldCBp biBkcml2ZXIgc28gdGhlIGRyaXZlciBjb3VsZCBzZXQgU0tCIFBTUCBtZXRhZGF0YS4gVGhlDQo+ IGRlc3RpbmF0aW9uDQo+IG9mIFJYIGVycm9yIGZsb3cgdGFibGUgaXMgdGhlIFRUQyBVRFAgZGVm YXVsdCBSU1MgVElSLiBUaGUgc2Vjb25kDQo+IHJ1bGUgd2lsbA0KPiBkcm9wIHBhY2tldHMgdGhh dCBmYWlsZWQgdG8gYmUgZGVjcnlwdGVkIChsaWtlIGluIGNhc2UgaWxsZWdhbCBTUEkgb3INCj4g ZXhwaXJlZCBTUEkgaXMgdXNlZCkuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBSYWVkIFNhbGVtIDxy YWVkc0BudmlkaWEuY29tPg0KPiBTaWduZWQtb2ZmLWJ5OiBSYWh1bCBSYW1lc2hiYWJ1IDxycmFt ZXNoYmFidUBudmlkaWEuY29tPg0KPiBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgWmFoa2EgPGRhbmll bC56YWhrYUBnbWFpbC5jb20+DQo+IC0tLQ0KPiANCj4gTm90ZXM6DQo+IMKgwqDCoCB2MToNCj4g wqDCoMKgIC0NCj4gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbmV0ZGV2LzIwMjQwNTEwMDMwNDM1 LjEyMDkzNS0xMy1rdWJhQGtlcm5lbC5vcmcvDQo+IA0KPiDCoC4uLi9uZXQvZXRoZXJuZXQvbWVs bGFub3gvbWx4NS9jb3JlL2VuL2ZzLmjCoMKgIHzCoMKgIDIgKy0NCj4gwqAuLi4vbWVsbGFub3gv bWx4NS9jb3JlL2VuX2FjY2VsL3BzcF9mcy5jwqDCoMKgwqDCoCB8IDQ4MQ0KPiArKysrKysrKysr KysrKysrKy0NCj4gwqAyIGZpbGVzIGNoYW5nZWQsIDQ3NiBpbnNlcnRpb25zKCspLCA3IGRlbGV0 aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94 L21seDUvY29yZS9lbi9mcy5oDQo+IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4 NS9jb3JlL2VuL2ZzLmgNCj4gaW5kZXggYjVjM2EyYTlkMmE1Li4zNWE3YjJhZjgzZDkgMTAwNjQ0 DQo+IC0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9mcy5o DQo+ICsrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9mcy5o DQo+IEBAIC04Myw3ICs4Myw3IEBAIGVudW0gew0KPiDCoCNpZmRlZiBDT05GSUdfTUxYNV9FTl9B UkZTDQo+IMKgCU1MWDVFX0FSRlNfRlRfTEVWRUwgPSBNTFg1RV9JTk5FUl9UVENfRlRfTEVWRUwg KyAxLA0KPiDCoCNlbmRpZg0KPiAtI2lmZGVmIENPTkZJR19NTFg1X0VOX0lQU0VDDQo+ICsjaWYg ZGVmaW5lZChDT05GSUdfTUxYNV9FTl9JUFNFQykgfHwgZGVmaW5lZChDT05GSUdfTUxYNV9FTl9Q U1ApDQo+IMKgCU1MWDVFX0FDQ0VMX0ZTX0VTUF9GVF9MRVZFTCA9IE1MWDVFX0lOTkVSX1RUQ19G VF9MRVZFTCArIDEsDQo+IMKgCU1MWDVFX0FDQ0VMX0ZTX0VTUF9GVF9FUlJfTEVWRUwsDQo+IMKg CU1MWDVFX0FDQ0VMX0ZTX1BPTF9GVF9MRVZFTCwNCj4gZGlmZiAtLWdpdA0KPiBhL2RyaXZlcnMv bmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9hY2NlbC9wc3BfZnMuYw0KPiBiL2Ry aXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9hY2NlbC9wc3BfZnMuYw0K PiBpbmRleCBjYWJiYzhmMGQ4NGEuLjc4OWQ0MzczYzFhZCAxMDA2NDQNCj4gLS0tIGEvZHJpdmVy cy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX2FjY2VsL3BzcF9mcy5jDQo+ICsr KyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9hY2NlbC9wc3Bf ZnMuYw0KPiBAQCAtOCw2ICs4LDEyIEBADQo+IMKgI2luY2x1ZGUgImVuX2FjY2VsL3BzcF9mcy5o Ig0KPiDCoCNpbmNsdWRlICJlbl9hY2NlbC9wc3AuaCINCj4gwqANCj4gK2VudW0gYWNjZWxfZnNf cHNwX3R5cGUgew0KPiArCUFDQ0VMX0ZTX1BTUDQsDQo+ICsJQUNDRUxfRlNfUFNQNiwNCj4gKwlB Q0NFTF9GU19QU1BfTlVNX1RZUEVTLA0KPiArfTsNCj4gKw0KPiDCoHN0cnVjdCBtbHg1ZV9wc3Bf dHggew0KPiDCoAlzdHJ1Y3QgbWx4NV9mbG93X25hbWVzcGFjZSAqbnM7DQo+IMKgCXN0cnVjdCBt bHg1X2Zsb3dfdGFibGUgKmZ0Ow0KPiBAQCAtMTcsMTQgKzIzLDE1IEBAIHN0cnVjdCBtbHg1ZV9w c3BfdHggew0KPiDCoAl1MzIgcmVmY250Ow0KPiDCoH07DQo+IMKgDQo+IC1zdHJ1Y3QgbWx4NWVf cHNwX2ZzIHsNCj4gLQlzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldjsNCj4gLQlzdHJ1Y3QgbWx4 NWVfcHNwX3R4ICp0eF9mczsNCj4gLQlzdHJ1Y3QgbWx4NWVfZmxvd19zdGVlcmluZyAqZnM7DQo+ IC19Ow0KPiAtDQo+IMKgZW51bSBhY2NlbF9wc3BfcnVsZV9hY3Rpb24gew0KPiDCoAlBQ0NFTF9Q U1BfUlVMRV9BQ1RJT05fRU5DUllQVCwNCj4gKwlBQ0NFTF9QU1BfUlVMRV9BQ1RJT05fREVDUllQ VCwNCj4gK307DQo+ICsNCj4gK2VudW0gYWNjZWxfcHNwX3N5bmRyb21lIHsNCj4gKwlQU1BfT0sg PSAwLA0KPiArCVBTUF9JQ1ZfRkFJTCwNCj4gKwlQU1BfQkFEX1RSQUlMRVIsDQo+IMKgfTsNCj4g wqANCj4gwqBzdHJ1Y3QgbWx4NWVfYWNjZWxfcHNwX3J1bGUgew0KPiBAQCAtMzIsNiArMzksMjE2 IEBAIHN0cnVjdCBtbHg1ZV9hY2NlbF9wc3BfcnVsZSB7DQo+IMKgCXU4IGFjdGlvbjsNCj4gwqB9 Ow0KPiDCoA0KPiArc3RydWN0IG1seDVlX3BzcF9yeF9lcnIgew0KPiArCXN0cnVjdCBtbHg1X2Zs b3dfdGFibGUgKmZ0Ow0KPiArCXN0cnVjdCBtbHg1X2Zsb3dfaGFuZGxlICpydWxlOw0KPiArCXN0 cnVjdCBtbHg1X2Zsb3dfaGFuZGxlICpkcm9wX3J1bGU7DQo+ICsJc3RydWN0IG1seDVfbW9kaWZ5 X2hkciAqY29weV9tb2RpZnlfaGRyOw0KPiArfTsNCj4gKw0KPiArc3RydWN0IG1seDVlX2FjY2Vs X2ZzX3BzcF9wcm90IHsNCj4gKwlzdHJ1Y3QgbWx4NV9mbG93X3RhYmxlICpmdDsNCj4gKwlzdHJ1 Y3QgbWx4NV9mbG93X2dyb3VwICptaXNzX2dyb3VwOw0KPiArCXN0cnVjdCBtbHg1X2Zsb3dfaGFu ZGxlICptaXNzX3J1bGU7DQo+ICsJc3RydWN0IG1seDVfZmxvd19kZXN0aW5hdGlvbiBkZWZhdWx0 X2Rlc3Q7DQo+ICsJc3RydWN0IG1seDVlX3BzcF9yeF9lcnIgcnhfZXJyOw0KPiArCXUzMiByZWZj bnQ7DQo+ICsJc3RydWN0IG11dGV4IHByb3RfbXV0ZXg7IC8qIHByb3RlY3QgRVNQNC9FU1A2IHBy b3RvY29sICovDQo+ICsJc3RydWN0IG1seDVfZmxvd19oYW5kbGUgKmRlZl9ydWxlOw0KPiArfTsN Cj4gKw0KPiArc3RydWN0IG1seDVlX2FjY2VsX2ZzX3BzcCB7DQo+ICsJc3RydWN0IG1seDVlX2Fj Y2VsX2ZzX3BzcF9wcm90DQo+IGZzX3Byb3RbQUNDRUxfRlNfUFNQX05VTV9UWVBFU107DQo+ICt9 Ow0KPiArDQo+ICtzdHJ1Y3QgbWx4NWVfcHNwX2ZzIHsNCj4gKwlzdHJ1Y3QgbWx4NV9jb3JlX2Rl diAqbWRldjsNCj4gKwlzdHJ1Y3QgbWx4NWVfcHNwX3R4ICp0eF9mczsNCj4gKwkvKiBSeCBtYW5h Z2UgKi8NCj4gKwlzdHJ1Y3QgbWx4NWVfZmxvd19zdGVlcmluZyAqZnM7DQo+ICsJc3RydWN0IG1s eDVlX2FjY2VsX2ZzX3BzcCAqcnhfZnM7DQo+ICt9Ow0KPiArDQo+ICsvKiBQU1AgUlggZmxvdyBz dGVlcmluZyAqLw0KPiArc3RhdGljIGVudW0gbWx4NV90cmFmZmljX3R5cGVzIGZzX3BzcDJ0dChl bnVtIGFjY2VsX2ZzX3BzcF90eXBlIGkpDQo+ICt7DQo+ICsJaWYgKGkgPT0gQUNDRUxfRlNfUFNQ NCkNCj4gKwkJcmV0dXJuIE1MWDVfVFRfSVBWNF9VRFA7DQo+ICsNCj4gKwlyZXR1cm4gTUxYNV9U VF9JUFY2X1VEUDsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgYWNjZWxfcHNwX2ZzX3J4X2Vy cl9kZWxfcnVsZXMoc3RydWN0IG1seDVlX3BzcF9mcyAqZnMsDQo+ICsJCQkJCcKgIHN0cnVjdCBt bHg1ZV9wc3BfcnhfZXJyDQo+ICpyeF9lcnIpDQo+ICt7DQo+ICsJaWYgKHJ4X2Vyci0+ZHJvcF9y dWxlKSB7DQo+ICsJCW1seDVfZGVsX2Zsb3dfcnVsZXMocnhfZXJyLT5kcm9wX3J1bGUpOw0KPiAr CQlyeF9lcnItPmRyb3BfcnVsZSA9IE5VTEw7DQo+ICsJfQ0KPiArDQo+ICsJaWYgKHJ4X2Vyci0+ cnVsZSkgew0KPiArCQltbHg1X2RlbF9mbG93X3J1bGVzKHJ4X2Vyci0+cnVsZSk7DQo+ICsJCXJ4 X2Vyci0+cnVsZSA9IE5VTEw7DQo+ICsJfQ0KPiArDQo+ICsJaWYgKHJ4X2Vyci0+Y29weV9tb2Rp ZnlfaGRyKSB7DQo+ICsJCW1seDVfbW9kaWZ5X2hlYWRlcl9kZWFsbG9jKGZzLT5tZGV2LCByeF9l cnItDQo+ID5jb3B5X21vZGlmeV9oZHIpOw0KPiArCQlyeF9lcnItPmNvcHlfbW9kaWZ5X2hkciA9 IE5VTEw7DQo+ICsJfQ0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBhY2NlbF9wc3BfZnNfcnhf ZXJyX2Rlc3Ryb3lfZnQoc3RydWN0IG1seDVlX3BzcF9mcyAqZnMsDQo+ICsJCQkJCcKgwqAgc3Ry dWN0IG1seDVlX3BzcF9yeF9lcnINCj4gKnJ4X2VycikNCj4gK3sNCj4gKwlhY2NlbF9wc3BfZnNf cnhfZXJyX2RlbF9ydWxlcyhmcywgcnhfZXJyKTsNCj4gKw0KPiArCWlmIChyeF9lcnItPmZ0KSB7 DQo+ICsJCW1seDVfZGVzdHJveV9mbG93X3RhYmxlKHJ4X2Vyci0+ZnQpOw0KPiArCQlyeF9lcnIt PmZ0ID0gTlVMTDsNCj4gKwl9DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGFjY2VsX3BzcF9z ZXR1cF9zeW5kcm9tZV9tYXRjaChzdHJ1Y3QgbWx4NV9mbG93X3NwZWMNCj4gKnNwZWMsDQo+ICsJ CQkJCcKgwqAgZW51bSBhY2NlbF9wc3Bfc3luZHJvbWUNCj4gc3luZHJvbWUpDQo+ICt7DQo+ICsJ dm9pZCAqbWlzY19wYXJhbXNfMjsNCj4gKw0KPiArCXNwZWMtPm1hdGNoX2NyaXRlcmlhX2VuYWJs ZSB8PSBNTFg1X01BVENIX01JU0NfUEFSQU1FVEVSU18yOw0KPiArCW1pc2NfcGFyYW1zXzIgPSBN TFg1X0FERFJfT0YoZnRlX21hdGNoX3BhcmFtLCBzcGVjLQ0KPiA+bWF0Y2hfY3JpdGVyaWEsIG1p c2NfcGFyYW1ldGVyc18yKTsNCj4gKwlNTFg1X1NFVF9UT19PTkVTKGZ0ZV9tYXRjaF9zZXRfbWlz YzIsIG1pc2NfcGFyYW1zXzIsDQo+IHBzcF9zeW5kcm9tZSk7DQo+ICsJbWlzY19wYXJhbXNfMiA9 IE1MWDVfQUREUl9PRihmdGVfbWF0Y2hfcGFyYW0sIHNwZWMtDQo+ID5tYXRjaF92YWx1ZSwgbWlz Y19wYXJhbWV0ZXJzXzIpOw0KPiArCU1MWDVfU0VUKGZ0ZV9tYXRjaF9zZXRfbWlzYzIsIG1pc2Nf cGFyYW1zXzIsIHBzcF9zeW5kcm9tZSwNCj4gc3luZHJvbWUpOw0KPiArfQ0KPiArDQo+ICtzdGF0 aWMgaW50IGFjY2VsX3BzcF9mc19yeF9lcnJfYWRkX3J1bGUoc3RydWN0IG1seDVlX3BzcF9mcyAq ZnMsDQo+ICsJCQkJCXN0cnVjdA0KPiBtbHg1ZV9hY2NlbF9mc19wc3BfcHJvdCAqZnNfcHJvdCwN Cj4gKwkJCQkJc3RydWN0IG1seDVlX3BzcF9yeF9lcnINCj4gKnJ4X2VycikNCj4gK3sNCj4gKwl1 OCBhY3Rpb25bTUxYNV9VTl9TWl9CWVRFUyhzZXRfYWRkX2NvcHlfYWN0aW9uX2luX2F1dG8pXSA9 DQo+IHt9Ow0KPiArCXN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2ID0gZnMtPm1kZXY7DQo+ICsJ c3RydWN0IG1seDVfZmxvd19hY3QgZmxvd19hY3QgPSB7fTsNCj4gKwlzdHJ1Y3QgbWx4NV9tb2Rp ZnlfaGRyICptb2RpZnlfaGRyOw0KPiArCXN0cnVjdCBtbHg1X2Zsb3dfaGFuZGxlICpmdGU7DQo+ ICsJc3RydWN0IG1seDVfZmxvd19zcGVjICpzcGVjOw0KPiArCWludCBlcnIgPSAwOw0KPiArDQo+ ICsJc3BlYyA9IGt6YWxsb2Moc2l6ZW9mKCpzcGVjKSwgR0ZQX0tFUk5FTCk7DQo+ICsJaWYgKCFz cGVjKQ0KPiArCQlyZXR1cm4gLUVOT01FTTsNCj4gKw0KPiArCS8qIEFjdGlvbiB0byBjb3B5IDcg Yml0IHBzcF9zeW5kcm9tZSB0byByZWdCWzIzOjI5XSAqLw0KPiArCU1MWDVfU0VUKGNvcHlfYWN0 aW9uX2luLCBhY3Rpb24sIGFjdGlvbl90eXBlLA0KPiBNTFg1X0FDVElPTl9UWVBFX0NPUFkpOw0K PiArCU1MWDVfU0VUKGNvcHlfYWN0aW9uX2luLCBhY3Rpb24sIHNyY19maWVsZCwNCj4gTUxYNV9B Q1RJT05fSU5fRklFTERfUFNQX1NZTkRST01FKTsNCj4gKwlNTFg1X1NFVChjb3B5X2FjdGlvbl9p biwgYWN0aW9uLCBzcmNfb2Zmc2V0LCAwKTsNCj4gKwlNTFg1X1NFVChjb3B5X2FjdGlvbl9pbiwg YWN0aW9uLCBsZW5ndGgsIDcpOw0KPiArCU1MWDVfU0VUKGNvcHlfYWN0aW9uX2luLCBhY3Rpb24s IGRzdF9maWVsZCwNCj4gTUxYNV9BQ1RJT05fSU5fRklFTERfTUVUQURBVEFfUkVHX0IpOw0KPiAr CU1MWDVfU0VUKGNvcHlfYWN0aW9uX2luLCBhY3Rpb24sIGRzdF9vZmZzZXQsIDIzKTsNCj4gKw0K PiArCW1vZGlmeV9oZHIgPSBtbHg1X21vZGlmeV9oZWFkZXJfYWxsb2MobWRldiwNCj4gTUxYNV9G TE9XX05BTUVTUEFDRV9LRVJORUwsDQo+ICsJCQkJCcKgwqDCoMKgwqAgMSwgYWN0aW9uKTsNCj4g KwlpZiAoSVNfRVJSKG1vZGlmeV9oZHIpKSB7DQo+ICsJCWVyciA9IFBUUl9FUlIobW9kaWZ5X2hk cik7DQo+ICsJCW1seDVfY29yZV9lcnIobWRldiwNCj4gKwkJCcKgwqDCoMKgwqAgImZhaWwgdG8g YWxsb2MgcHNwIGNvcHkNCj4gbW9kaWZ5X2hlYWRlcl9pZCBlcnI9JWRcbiIsIGVycik7DQo+ICsJ CWdvdG8gb3V0X3NwZWM7DQo+ICsJfQ0KPiArDQo+ICsJYWNjZWxfcHNwX3NldHVwX3N5bmRyb21l X21hdGNoKHNwZWMsIFBTUF9PSyk7DQo+ICsJLyogY3JlYXRlIGZ0ZSAqLw0KPiArCWZsb3dfYWN0 LmFjdGlvbiA9IE1MWDVfRkxPV19DT05URVhUX0FDVElPTl9NT0RfSERSIHwNCj4gKwkJTUxYNV9G TE9XX0NPTlRFWFRfQUNUSU9OX0ZXRF9ERVNUOw0KPiArCWZsb3dfYWN0Lm1vZGlmeV9oZHIgPSBt b2RpZnlfaGRyOw0KPiArCWZ0ZSA9IG1seDVfYWRkX2Zsb3dfcnVsZXMocnhfZXJyLT5mdCwgc3Bl YywgJmZsb3dfYWN0LA0KPiArCQkJCcKgICZmc19wcm90LT5kZWZhdWx0X2Rlc3QsIDEpOw0KPiAr CWlmIChJU19FUlIoZnRlKSkgew0KPiArCQllcnIgPSBQVFJfRVJSKGZ0ZSk7DQo+ICsJCW1seDVf Y29yZV9lcnIobWRldiwgImZhaWwgdG8gYWRkIHBzcCByeCBlcnIgY29weQ0KPiBydWxlIGVycj0l ZFxuIiwgZXJyKTsNCj4gKwkJZ290byBvdXQ7DQo+ICsJfQ0KPiArCXJ4X2Vyci0+cnVsZSA9IGZ0 ZTsNCj4gKw0KPiArCS8qIGFkZCBkZWZhdWx0IGRyb3AgcnVsZSAqLw0KPiArCW1lbXNldChzcGVj LCAwLCBzaXplb2YoKnNwZWMpKTsNCj4gKwltZW1zZXQoJmZsb3dfYWN0LCAwLCBzaXplb2YoZmxv d19hY3QpKTsNCj4gKwkvKiBjcmVhdGUgZnRlICovDQo+ICsJZmxvd19hY3QuYWN0aW9uID0gTUxY NV9GTE9XX0NPTlRFWFRfQUNUSU9OX0RST1A7DQo+ICsJZnRlID0gbWx4NV9hZGRfZmxvd19ydWxl cyhyeF9lcnItPmZ0LCBzcGVjLCAmZmxvd19hY3QsIE5VTEwsDQo+IDApOw0KPiArCWlmIChJU19F UlIoZnRlKSkgew0KPiArCQllcnIgPSBQVFJfRVJSKGZ0ZSk7DQo+ICsJCW1seDVfY29yZV9lcnIo bWRldiwgImZhaWwgdG8gYWRkIHBzcCByeCBlcnIgZHJvcA0KPiBydWxlIGVycj0lZFxuIiwgZXJy KTsNCj4gKwkJZ290byBvdXRfZHJvcF9ydWxlOw0KPiArCX0NCj4gKwlyeF9lcnItPmRyb3BfcnVs ZSA9IGZ0ZTsNCj4gKwlyeF9lcnItPmNvcHlfbW9kaWZ5X2hkciA9IG1vZGlmeV9oZHI7DQo+ICsN Cj4gKwlnb3RvIG91dF9zcGVjOw0KPiArDQo+ICtvdXRfZHJvcF9ydWxlOg0KPiArCW1seDVfZGVs X2Zsb3dfcnVsZXMocnhfZXJyLT5ydWxlKTsNCj4gKwlyeF9lcnItPnJ1bGUgPSBOVUxMOw0KPiAr b3V0Og0KPiArCW1seDVfbW9kaWZ5X2hlYWRlcl9kZWFsbG9jKG1kZXYsIG1vZGlmeV9oZHIpOw0K PiArb3V0X3NwZWM6DQo+ICsJa2ZyZWUoc3BlYyk7DQo+ICsJcmV0dXJuIGVycjsNCj4gK30NCj4g Kw0KPiArc3RhdGljIGludCBhY2NlbF9wc3BfZnNfcnhfZXJyX2NyZWF0ZV9mdChzdHJ1Y3QgbWx4 NWVfcHNwX2ZzICpmcywNCj4gKwkJCQkJIHN0cnVjdA0KPiBtbHg1ZV9hY2NlbF9mc19wc3BfcHJv dCAqZnNfcHJvdCwNCj4gKwkJCQkJIHN0cnVjdCBtbHg1ZV9wc3BfcnhfZXJyDQo+ICpyeF9lcnIp DQo+ICt7DQo+ICsJc3RydWN0IG1seDVfZmxvd19uYW1lc3BhY2UgKm5zID0gbWx4NWVfZnNfZ2V0 X25zKGZzLT5mcywNCj4gZmFsc2UpOw0KPiArCXN0cnVjdCBtbHg1X2Zsb3dfdGFibGVfYXR0ciBm dF9hdHRyID0ge307DQo+ICsJc3RydWN0IG1seDVfZmxvd190YWJsZSAqZnQ7DQo+ICsJaW50IGVy cjsNCj4gKw0KPiArCWZ0X2F0dHIubWF4X2Z0ZSA9IDI7DQo+ICsJZnRfYXR0ci5hdXRvZ3JvdXAu bWF4X251bV9ncm91cHMgPSAyOw0KPiArCWZ0X2F0dHIubGV2ZWwgPSBNTFg1RV9BQ0NFTF9GU19F U1BfRlRfRVJSX0xFVkVMOyAvLw0KPiBNTFg1RV9BQ0NFTF9GU19UQ1BfRlRfTEVWRUwNCj4gKwlm dF9hdHRyLnByaW8gPSBNTFg1RV9OSUNfUFJJTzsNCj4gKwlmdCA9IG1seDVfY3JlYXRlX2F1dG9f Z3JvdXBlZF9mbG93X3RhYmxlKG5zLCAmZnRfYXR0cik7DQo+ICsJaWYgKElTX0VSUihmdCkpIHsN Cj4gKwkJZXJyID0gUFRSX0VSUihmdCk7DQo+ICsJCW1seDVfY29yZV9lcnIoZnMtPm1kZXYsICJm YWlsIHRvIGNyZWF0ZSBwc3AgcngNCj4gaW5saW5lIGZ0IGVycj0lZFxuIiwgZXJyKTsNCj4gKwkJ cmV0dXJuIGVycjsNCj4gKwl9DQo+ICsNCj4gKwlyeF9lcnItPmZ0ID0gZnQ7DQo+ICsJZXJyID0g YWNjZWxfcHNwX2ZzX3J4X2Vycl9hZGRfcnVsZShmcywgZnNfcHJvdCwgcnhfZXJyKTsNCj4gKwlp ZiAoZXJyKQ0KPiArCQlnb3RvIG91dF9lcnI7DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gKw0KPiAr b3V0X2VycjoNCj4gKwltbHg1X2Rlc3Ryb3lfZmxvd190YWJsZShmdCk7DQo+ICsJcnhfZXJyLT5m dCA9IE5VTEw7DQo+ICsJcmV0dXJuIGVycjsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgYWNj ZWxfcHNwX2ZzX3J4X2ZzX2Rlc3Ryb3koc3RydWN0DQo+IG1seDVlX2FjY2VsX2ZzX3BzcF9wcm90 ICpmc19wcm90KQ0KPiArew0KPiArCWlmIChmc19wcm90LT5kZWZfcnVsZSkgew0KPiArCQltbHg1 X2RlbF9mbG93X3J1bGVzKGZzX3Byb3QtPmRlZl9ydWxlKTsNCj4gKwkJZnNfcHJvdC0+ZGVmX3J1 bGUgPSBOVUxMOw0KPiArCX0NCj4gKw0KPiArCWlmIChmc19wcm90LT5taXNzX3J1bGUpIHsNCj4g KwkJbWx4NV9kZWxfZmxvd19ydWxlcyhmc19wcm90LT5taXNzX3J1bGUpOw0KPiArCQlmc19wcm90 LT5taXNzX3J1bGUgPSBOVUxMOw0KPiArCX0NCj4gKw0KPiArCWlmIChmc19wcm90LT5taXNzX2dy b3VwKSB7DQo+ICsJCW1seDVfZGVzdHJveV9mbG93X2dyb3VwKGZzX3Byb3QtPm1pc3NfZ3JvdXAp Ow0KPiArCQlmc19wcm90LT5taXNzX2dyb3VwID0gTlVMTDsNCj4gKwl9DQo+ICsNCj4gKwlpZiAo ZnNfcHJvdC0+ZnQpIHsNCj4gKwkJbWx4NV9kZXN0cm95X2Zsb3dfdGFibGUoZnNfcHJvdC0+ZnQp Ow0KPiArCQlmc19wcm90LT5mdCA9IE5VTEw7DQo+ICsJfQ0KPiArfQ0KPiArDQo+IMKgc3RhdGlj IHZvaWQgc2V0dXBfZnRlX3VkcF9wc3Aoc3RydWN0IG1seDVfZmxvd19zcGVjICpzcGVjLCB1MTYN Cj4gdWRwX3BvcnQpDQo+IMKgew0KPiDCoAlzcGVjLT5tYXRjaF9jcml0ZXJpYV9lbmFibGUgfD0g TUxYNV9NQVRDSF9PVVRFUl9IRUFERVJTOw0KPiBAQCAtNDEsNiArMjU4LDI1MSBAQCBzdGF0aWMg dm9pZCBzZXR1cF9mdGVfdWRwX3BzcChzdHJ1Y3QNCj4gbWx4NV9mbG93X3NwZWMgKnNwZWMsIHUx NiB1ZHBfcG9ydCkNCj4gwqAJTUxYNV9TRVQoZnRlX21hdGNoX3NldF9seXJfMl80LCBzcGVjLT5t YXRjaF92YWx1ZSwNCj4gaXBfcHJvdG9jb2wsIElQUFJPVE9fVURQKTsNCj4gwqB9DQo+IMKgDQo+ ICtzdGF0aWMgaW50IGFjY2VsX3BzcF9mc19yeF9jcmVhdGVfZnQoc3RydWN0IG1seDVlX3BzcF9m cyAqZnMsDQo+ICsJCQkJwqDCoMKgwqAgc3RydWN0IG1seDVlX2FjY2VsX2ZzX3BzcF9wcm90DQo+ ICpmc19wcm90KQ0KPiArew0KPiArCXN0cnVjdCBtbHg1X2Zsb3dfbmFtZXNwYWNlICpucyA9IG1s eDVlX2ZzX2dldF9ucyhmcy0+ZnMsDQo+IGZhbHNlKTsNCj4gKwl1OCBhY3Rpb25bTUxYNV9VTl9T Wl9CWVRFUyhzZXRfYWRkX2NvcHlfYWN0aW9uX2luX2F1dG8pXSA9DQo+IHt9Ow0KPiArCWludCBp bmxlbiA9IE1MWDVfU1RfU1pfQllURVMoY3JlYXRlX2Zsb3dfZ3JvdXBfaW4pOw0KPiArCXN0cnVj dCBtbHg1X21vZGlmeV9oZHIgKm1vZGlmeV9oZHIgPSBOVUxMOw0KPiArCXN0cnVjdCBtbHg1X2Zs b3dfdGFibGVfYXR0ciBmdF9hdHRyID0ge307DQo+ICsJc3RydWN0IG1seDVfZmxvd19kZXN0aW5h dGlvbiBkZXN0ID0ge307DQo+ICsJc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBmcy0+bWRl djsNCj4gKwlzdHJ1Y3QgbWx4NV9mbG93X2dyb3VwICptaXNzX2dyb3VwOw0KPiArCU1MWDVfREVD TEFSRV9GTE9XX0FDVChmbG93X2FjdCk7DQo+ICsJc3RydWN0IG1seDVfZmxvd19oYW5kbGUgKnJ1 bGU7DQo+ICsJc3RydWN0IG1seDVfZmxvd19zcGVjICpzcGVjOw0KPiArCXN0cnVjdCBtbHg1X2Zs b3dfdGFibGUgKmZ0Ow0KPiArCXUzMiAqZmxvd19ncm91cF9pbjsNCj4gKwlpbnQgZXJyID0gMDsN Cj4gKw0KPiArCWZsb3dfZ3JvdXBfaW4gPSBrdnphbGxvYyhpbmxlbiwgR0ZQX0tFUk5FTCk7DQo+ ICsJc3BlYyA9IGt2emFsbG9jKHNpemVvZigqc3BlYyksIEdGUF9LRVJORUwpOw0KPiArCWlmICgh Zmxvd19ncm91cF9pbiB8fCAhc3BlYykgew0KPiArCQllcnIgPSAtRU5PTUVNOw0KPiArCQlnb3Rv IG91dDsNCj4gKwl9DQo+ICsNCj4gKwkvKiBDcmVhdGUgRlQgKi8NCj4gKwlmdF9hdHRyLm1heF9m dGUgPSAyOw0KPiArCWZ0X2F0dHIubGV2ZWwgPSBNTFg1RV9BQ0NFTF9GU19FU1BfRlRfTEVWRUw7 DQo+ICsJZnRfYXR0ci5wcmlvID0gTUxYNUVfTklDX1BSSU87DQo+ICsJZnRfYXR0ci5hdXRvZ3Jv dXAubnVtX3Jlc2VydmVkX2VudHJpZXMgPSAxOw0KPiArCWZ0X2F0dHIuYXV0b2dyb3VwLm1heF9u dW1fZ3JvdXBzID0gMTsNCj4gKwlmdCA9IG1seDVfY3JlYXRlX2F1dG9fZ3JvdXBlZF9mbG93X3Rh YmxlKG5zLCAmZnRfYXR0cik7DQo+ICsJaWYgKElTX0VSUihmdCkpIHsNCj4gKwkJZXJyID0gUFRS X0VSUihmdCk7DQo+ICsJCW1seDVfY29yZV9lcnIobWRldiwgImZhaWwgdG8gY3JlYXRlIHBzcCBy eCBmdA0KPiBlcnI9JWRcbiIsIGVycik7DQo+ICsJCWdvdG8gb3V0X2VycjsNCj4gKwl9DQo+ICsJ ZnNfcHJvdC0+ZnQgPSBmdDsNCj4gKw0KPiArCS8qIENyZWF0ZSBtaXNzX2dyb3VwICovDQo+ICsJ TUxYNV9TRVQoY3JlYXRlX2Zsb3dfZ3JvdXBfaW4sIGZsb3dfZ3JvdXBfaW4sDQo+IHN0YXJ0X2Zs b3dfaW5kZXgsIGZ0LT5tYXhfZnRlIC0gMSk7DQo+ICsJTUxYNV9TRVQoY3JlYXRlX2Zsb3dfZ3Jv dXBfaW4sIGZsb3dfZ3JvdXBfaW4sDQo+IGVuZF9mbG93X2luZGV4LCBmdC0+bWF4X2Z0ZSAtIDEp Ow0KPiArCW1pc3NfZ3JvdXAgPSBtbHg1X2NyZWF0ZV9mbG93X2dyb3VwKGZ0LCBmbG93X2dyb3Vw X2luKTsNCj4gKwlpZiAoSVNfRVJSKG1pc3NfZ3JvdXApKSB7DQo+ICsJCWVyciA9IFBUUl9FUlIo bWlzc19ncm91cCk7DQo+ICsJCW1seDVfY29yZV9lcnIobWRldiwgImZhaWwgdG8gY3JlYXRlIHBz cCByeA0KPiBtaXNzX2dyb3VwIGVycj0lZFxuIiwgZXJyKTsNCj4gKwkJZ290byBvdXRfZXJyOw0K PiArCX0NCj4gKwlmc19wcm90LT5taXNzX2dyb3VwID0gbWlzc19ncm91cDsNCj4gKw0KPiArCS8q IENyZWF0ZSBtaXNzIHJ1bGUgKi8NCj4gKwlydWxlID0gbWx4NV9hZGRfZmxvd19ydWxlcyhmdCwg c3BlYywgJmZsb3dfYWN0LCAmZnNfcHJvdC0NCj4gPmRlZmF1bHRfZGVzdCwgMSk7DQo+ICsJaWYg KElTX0VSUihydWxlKSkgew0KPiArCQllcnIgPSBQVFJfRVJSKHJ1bGUpOw0KPiArCQltbHg1X2Nv cmVfZXJyKG1kZXYsICJmYWlsIHRvIGNyZWF0ZSBwc3AgcnggbWlzc19ydWxlDQo+IGVycj0lZFxu IiwgZXJyKTsNCj4gKwkJZ290byBvdXRfZXJyOw0KPiArCX0NCj4gKwlmc19wcm90LT5taXNzX3J1 bGUgPSBydWxlOw0KPiArDQo+ICsJLyogQWRkIGRlZmF1bHQgUnggcHNwIHJ1bGUgKi8NCj4gKwlz ZXR1cF9mdGVfdWRwX3BzcChzcGVjLCBQU1BfREVGQVVMVF9VRFBfUE9SVCk7DQo+ICsJZmxvd19h Y3QuY3J5cHRvLnR5cGUgPQ0KPiBNTFg1X0ZMT1dfQ09OVEVYVF9FTkNSWVBUX0RFQ1JZUFRfVFlQ RV9QU1A7DQo+ICsJLyogU2V0IGJpdFszMSwgMzBdIFBTUCBtYXJrZXIgKi8NCj4gKwkvKiBTZXQg Yml0WzI5LTIzXSBwc3Bfc3luZHJvbWUgaXMgc2V0IGluIGVycm9yIEZUICovDQo+ICsjZGVmaW5l IE1MWDVFX1BTUF9NQVJLRVJfQklUIChCSVQoMzApIHwgQklUKDMxKSkNCj4gKwlNTFg1X1NFVChz ZXRfYWN0aW9uX2luLCBhY3Rpb24sIGFjdGlvbl90eXBlLA0KPiBNTFg1X0FDVElPTl9UWVBFX1NF VCk7DQo+ICsJTUxYNV9TRVQoc2V0X2FjdGlvbl9pbiwgYWN0aW9uLCBmaWVsZCwNCj4gTUxYNV9B Q1RJT05fSU5fRklFTERfTUVUQURBVEFfUkVHX0IpOw0KPiArCU1MWDVfU0VUKHNldF9hY3Rpb25f aW4sIGFjdGlvbiwgZGF0YSwgTUxYNUVfUFNQX01BUktFUl9CSVQpOw0KPiArCU1MWDVfU0VUKHNl dF9hY3Rpb25faW4sIGFjdGlvbiwgb2Zmc2V0LCAwKTsNCj4gKwlNTFg1X1NFVChzZXRfYWN0aW9u X2luLCBhY3Rpb24sIGxlbmd0aCwgMzIpOw0KPiArDQo+ICsJbW9kaWZ5X2hkciA9IG1seDVfbW9k aWZ5X2hlYWRlcl9hbGxvYyhtZGV2LA0KPiBNTFg1X0ZMT1dfTkFNRVNQQUNFX0tFUk5FTCwgMSwg YWN0aW9uKTsNCj4gKwlpZiAoSVNfRVJSKG1vZGlmeV9oZHIpKSB7DQo+ICsJCWVyciA9IFBUUl9F UlIobW9kaWZ5X2hkcik7DQo+ICsJCW1seDVfY29yZV9lcnIobWRldiwgImZhaWwgdG8gYWxsb2Mg cHNwIHNldA0KPiBtb2RpZnlfaGVhZGVyX2lkIGVycj0lZFxuIiwgZXJyKTsNCj4gKwkJbW9kaWZ5 X2hkciA9IE5VTEw7DQo+ICsJCWdvdG8gb3V0X2VycjsNCj4gKwl9DQo+ICsNCj4gKwlmbG93X2Fj dC5hY3Rpb24gPSBNTFg1X0ZMT1dfQ09OVEVYVF9BQ1RJT05fRldEX0RFU1QgfA0KPiArCQkJwqAg TUxYNV9GTE9XX0NPTlRFWFRfQUNUSU9OX0NSWVBUT19ERUNSWVBUIHwNCj4gKwkJCcKgIE1MWDVf RkxPV19DT05URVhUX0FDVElPTl9NT0RfSERSOw0KPiArCWZsb3dfYWN0Lm1vZGlmeV9oZHIgPSBt b2RpZnlfaGRyOw0KPiArCWRlc3QudHlwZSA9IE1MWDVfRkxPV19ERVNUSU5BVElPTl9UWVBFX0ZM T1dfVEFCTEU7DQo+ICsJZGVzdC5mdCA9IGZzX3Byb3QtPnJ4X2Vyci5mdDsNCj4gKwlydWxlID0g bWx4NV9hZGRfZmxvd19ydWxlcyhmc19wcm90LT5mdCwgc3BlYywgJmZsb3dfYWN0LA0KPiAmZGVz dCwgMSk7DQo+ICsJaWYgKElTX0VSUihydWxlKSkgew0KPiArCQllcnIgPSBQVFJfRVJSKHJ1bGUp Ow0KPiArCQltbHg1X2NvcmVfZXJyKG1kZXYsDQo+ICsJCQnCoMKgwqDCoMKgICJmYWlsIHRvIGFk ZCBwc3AgcnVsZSBSeCBkeWNycHRpb24sDQo+IGVycj0lZCwgZmxvd19hY3QuYWN0aW9uID0gJSMw NFhcbiIsDQoNCk5pdDogVHlwbyBoZXJlLCBzL2R5Y3JwdGlvbi9kZWNyeXB0aW9uLw0KDQo=