From nobody Fri May 10 11:45:58 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+114369+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+114369+1787277+3901457@groups.io; arc=fail (BodyHash is different from the expected one); dmarc=fail(p=none dis=none) header.from=intel.com Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 170616944086050.8644355168326; Wed, 24 Jan 2024 23:57:20 -0800 (PST) Return-Path: DKIM-Signature: a=rsa-sha256; bh=Zx1gTdlTwPmY/Y7xsBZZ0hv1JRpGHViZSgqSgOfALEQ=; c=relaxed/simple; d=groups.io; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:Accept-Language:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type; s=20140610; t=1706169440; v=1; b=FE1MUeDrhZGbdb7ooorkiph49XgHZE+WIETu7XwyvVf5p47e87lKsIVEviv2o5pxBGCBT1Kc f7Y4RjTWTDQYkyzwbq4SwHLQdSTBI9U6jtoHCyc67Ebb6kpZhcphSHPETF5GB0Y3irB6wEk58mK M/x574IhfXoxc9VfuG1gwmyw= X-Received: by 127.0.0.2 with SMTP id 7VvuYY1788612xyJ54Ea2vnU; Wed, 24 Jan 2024 23:57:20 -0800 X-Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.8]) by mx.groups.io with SMTP id smtpd.web11.12172.1706169439081096661 for ; Wed, 24 Jan 2024 23:57:19 -0800 X-IronPort-AV: E=McAfee;i="6600,9927,10962"; a="15622903" X-IronPort-AV: E=Sophos;i="6.05,216,1701158400"; d="diff'?scan'208,217";a="15622903" X-Received: from orviesa001.jf.intel.com ([10.64.159.141]) by fmvoesa102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Jan 2024 23:57:18 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.05,216,1701158400"; d="diff'?scan'208,217";a="35039182" X-Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by orviesa001.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 24 Jan 2024 23:57:17 -0800 X-Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Wed, 24 Jan 2024 23:57:16 -0800 X-Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Wed, 24 Jan 2024 23:57:16 -0800 X-Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend Transport; Wed, 24 Jan 2024 23:57:16 -0800 X-Received: from NAM04-MW2-obe.outbound.protection.outlook.com (104.47.73.168) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Wed, 24 Jan 2024 23:57:16 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RwJHJJWDA95vlD5UM7ZJ3+klchR3bp9omClW0+f2aG6gW6dcexMJkU3Rp66ZQzqarQZhWaww6jVlFtgVM6b0smrj9rvZWkPgGI28dDGScVAjB+FyilDbKVh+ZmHy0JCVb+1EzV3jo8QwWhRCEWs1gMRHFKsTxyBMozWDoDBVjImNLRFaoixrqY4GWQBZKw4oGhbnjxt1rQWtnsd6jTssr/a++e7gKSGxVb7qT7BN3QX3854D1dKgL9XQAHozV49iLfzwEZxKChaNR8DpfwPTgmkQUH6qHV1P6VXzPR+SRDZ4TBEHP6TM2ClWEwXvL9JcEp3vrC31NNZbxjZHziSYBg== 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=MeB81lMdGNDfV4o63Vd9RfqzuK7UhITi2r/HqcJlrkg=; b=SNd89eMbvppKxFcBIUYn8Fr2Ox6q2ub3SLIgDpjnjONFwx3shRPkXMbtZdSjrZcX6WQQOC2DZ6v7wYkbDakz5vm06IHOQdFEvft4Wzho0fznxA4lvul4Hs6jtML437DmEOnvj10bkQxdZe10u0FjO6y21goihep1f4Vi9Xy7m/xxTeSUBddxjNRNWHpaK/+b2fTBZefZ/lUVST/B6f97fXRoC2m28RJv7rZiz8BcirgVaDy2Y8MzvpGVZzCac6di4ShlhM9+JkE2K52isBYTbdPDvHAQmrek8I3NjFu8AgCXuGPVLuUQWO2QR2nXgbY2BPy4tRIQBvwztQpitR7ESw== 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 X-Received: from MN6PR11MB8244.namprd11.prod.outlook.com (2603:10b6:208:470::14) by PH0PR11MB4901.namprd11.prod.outlook.com (2603:10b6:510:3a::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7228.22; Thu, 25 Jan 2024 07:57:14 +0000 X-Received: from MN6PR11MB8244.namprd11.prod.outlook.com ([fe80::fdd3:11d7:1c15:6c2d]) by MN6PR11MB8244.namprd11.prod.outlook.com ([fe80::fdd3:11d7:1c15:6c2d%7]) with mapi id 15.20.7228.022; Thu, 25 Jan 2024 07:57:14 +0000 From: "Ni, Ray" To: Michael Brown , Laszlo Ersek , "Kinney, Michael D" CC: "Ni, Ray" , "devel@edk2.groups.io" Subject: [edk2-devel] RFC: Another solution to the nested interrupt issue Thread-Topic: RFC: Another solution to the nested interrupt issue Thread-Index: AdpPYiLGhISY3QOFRhSUvxFcefhCWA== Date: Thu, 25 Jan 2024 07:57:13 +0000 Message-ID: Accept-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MN6PR11MB8244:EE_|PH0PR11MB4901:EE_ x-ms-office365-filtering-correlation-id: bf20a613-32df-4cbb-4187-08dc1d7b3e22 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: 65CSXzpE0/pfntRNsCVDzDNM1ubRc1k/o8EmpoOu/ZUDBUdpWBlnai1DuMSi7U5SuqJhjiM+g+BOAx79kIjvQZxftko1xwTkI2Wdp018nmxIYf1iHAcEzPmhUy6iB59HAmgri7Tb/QXGy72qlV9de3itbWJMr6hcKXSKO/J4WHUlkToqGaagewNebwnAZJNQJv/gbwB/Q48GmpzXA/sVppBHLwkAm2v2Rfr4DCaR1BDdMrCXe+4NDOUUCXNKOu4Tihs1QMzB1cvt76TBALwYNfJoB36B/Ei8PXqOzjieFlVSCspeVgEgMtCHtMpJMtPTbkkbI9IRCOTZvxHQ2ht79qDEb64S49Jiw5Ql6YxHBEBZeeatTY0J1NgJCTBN4BWJ0mVlUGLoiD2kYyCA58yvwKwEs0aoAJioU8xXDKcrGuD4JOtPGP6xDb021cRv7MI+gSzGJMsUZYFBZ4GDGzpKgOS/ycUk3X91z6lcJu1avV2o6yrxUn6uOnB/dkn6yOlTRpj0SzIXX1M85nIpvL0rpDNsegE6pxF+oYe9wtYWiOW3UX09HqEyHBnhB9zv0u25iw3YRSQa27PEyEe/f7rpRrKAbe81ifFjDX1m4WxwD1I= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?zqDpDIes8GxQ74n756O/5++bNC10GT3DLMbILGV9YxfDoK5E2d7eIfRIkw1O?= =?us-ascii?Q?2sLBCMC9AGBgsEdtI5aQlJ1XEN0bKhGFrgTyp0j62J07APnzpeCSllcbAc3n?= =?us-ascii?Q?Wkk6ApudquwRyQoOszCcBTQz3LqPISYQf3raAYkecU9qbUanGZGM/7vZADW9?= =?us-ascii?Q?UxxA6+DIrAcYqj6hXedpQcJZPAzvWumAApdsNrnJJdYVVyCNfeKZkF1qo7Wj?= =?us-ascii?Q?X1ZebUT/lCHwBXj+NC/9lnMDMCXxx1+9VmdYom2TiUJLNR9NZgvZm7ZM2VZ+?= =?us-ascii?Q?EblsJEFFbzrbUTJ5xxO8PHjLHDAtZpNyBgDWbMv4evKnOA0tzWGmYtXqdWYf?= =?us-ascii?Q?lqfVDMzyv1kR6+stm9Qxka/nt//R6rEKXYTAlrIiUCUvAjnHPDARxYoRg0Lt?= =?us-ascii?Q?EvVCMTmaGo/D0zJ6zbJMay9iKIPnq/cNBOqNoQqdX3CywikLpR4JX3pIcNTB?= =?us-ascii?Q?ahuJ8rsmJrxy41AumgKapWaAUDIQu6Rk4dgznnoerrMGMFpuQ20UjxeM5zUw?= =?us-ascii?Q?avMGP01sEjdjLeTMZ9wRZhidGODqgswY56ZfhBEOx9x/IMrga1EnsNtXDFwB?= =?us-ascii?Q?SFWetzzBx0hd+hhR4rUhG20v/qPGIlNcfzuH0X3+2Fhwb7O4Ab/xWNRXaXpb?= =?us-ascii?Q?R5MnQvSTi08njmPVcqPKJ3zslE8hhDw0wy6OFJYUz9rlynjfstobGlNyEyD2?= =?us-ascii?Q?9Rg0eRp2qVyGNwTzpfHhyYf9cHmzGSwokNk/NP+bagLSh/6Rgq2jixhH/73C?= =?us-ascii?Q?cIA9o+7Fkl3cy2WB1ae31pWq1XGp0wfBR8r30altWEeOhmEtkcFx1iGutZK9?= =?us-ascii?Q?Ag0Xehmv4qN7ea7pW2mpNtmeKMPDCgAcutXIUGkkwUfMLQAuApv7sUlTjpMS?= =?us-ascii?Q?fyiTTqJqj+l2rIvYUTveI8UZXlVt/SErZvJKELTE/htMw1HLohmqengQ4JVb?= =?us-ascii?Q?S9hNfpV2jxTzAMW9WhHvcro0pSFCf+OtbS9zZUfDDPQJKjfWOt1zAGrBr7p7?= =?us-ascii?Q?61PbIxfMl5lEOjuAPaisJb7PCnw9AMGntxK5p91bvIEzpxlUmttc5db+xoV0?= =?us-ascii?Q?QYh6S3UW+woxo1dWlgZSI8oGRjycX6XTJkunoJDzptqAboWQVtBiJnvq1w2J?= =?us-ascii?Q?vjQzejqS1YOiPbWR0wdu8AJdHXiZDHlsRS07yGzxSsKZJpFXfIUUZD9zkqT0?= =?us-ascii?Q?+fmK10HXe2nWk01Pyq+xJOhKOBzHdqsPu6Ts+yYnqluUAOS1gs67YkEQ8iIe?= =?us-ascii?Q?x7nB6xCHJW4jNCvm6z/xK/wm2zXaPytVNuCqofPLxiQVtGjAqv4Zg2sorUb7?= =?us-ascii?Q?Je1uCFB2+cuTuHOeIw/fGFIeqbfVP4TkURZlKT8A0yps0vhuewlGJ5ygWoF1?= =?us-ascii?Q?TirXy3jW3UNWZVZHo+YsR2RjVuBpQhwJSebXBWF1uZung88dLKHQxyLZO9dH?= =?us-ascii?Q?mGVF4TRmGv+Tbjrbm+DcBtkoF7TGosUVGkihY5G4gsObyeTqeBWzocg/5V0J?= =?us-ascii?Q?0h1AWziEC5HcBxHxp3WYoc09Ye2pUJm9JoF0ninacKg1JbYDePS9LFJ2SZAl?= =?us-ascii?Q?jhuhW/0bPeinpZ7SaiY=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN6PR11MB8244.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: bf20a613-32df-4cbb-4187-08dc1d7b3e22 X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Jan 2024 07:57:13.9930 (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: GOnDRcuKtU3VLLHsO1KRPF1r5zxDBZtbNJznC80q6Zv8eiMBYSaQxEqp7YNPT/87c/jcTeC8iWsJZigzDF78OQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB4901 X-OriginatorOrg: intel.com Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,ray.ni@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: O7bxtUhEQIee7lWRKUnyO4l6x1787277AA= Content-Language: en-US Content-Type: multipart/mixed; boundary="_004_MN6PR11MB82443B73244CEF84481629F08C7A2MN6PR11MB8244namp_" X-Zoho-Virus-Status: 1 X-Zoho-AV-Stamp: zmail-av-1.1.0/204.902.92 X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1706169441696100001 --_004_MN6PR11MB82443B73244CEF84481629F08C7A2MN6PR11MB8244namp_ Content-Type: multipart/alternative; boundary="_000_MN6PR11MB82443B73244CEF84481629F08C7A2MN6PR11MB8244namp_" --_000_MN6PR11MB82443B73244CEF84481629F08C7A2MN6PR11MB8244namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable All, This mail is to bring another approach to solve the stack-overflow due to n= ested interrupts. Michael solved this problem in OVMF through NestedInterru= ptTplLib. I made a draft patch as attached "DxeCore.diff". The patch simply to avoid = the interrupt in enable state when TPL is dropped to the interrupted TPL. T= he interrupt will be enabled later through "IRET". So, a timer driver has two ways to implement its timer interrupt handler: 1. Do raise/restore TPL in the TimerInterruptHandler(). But call the A= PIs in NestedInterruptTplLib. 2. Do not raise/restore TPL in the TimerInterruptHandler(). So that on= ly DxeCore restores the TPL. And when DxeCore restores the TPL, the interru= pt is not enabled when TPL is dropped to the interrupted TPL (as it will be= enabled later by "IRET"). Implementing the logic in DxeCore does not prevent the TimerInterruptHandle= r() from implementing the way #1. Agree on the draft patch? My 2nd question is can we set a rule that TimerInterruptHandler() should NO= T restore TPL so that way #2 (changing DxeCore) is enough to solve the stac= k overflow issue due to nested interrupts. I was aware of the discussion between Laszlo and Michael in end of 2022 but= never dig deeply as today into this problem. I really appreciate the long discussion in the bugzilla (https://bugzilla.t= ianocore.org/show_bug.cgi?id=3D4162) and comments in NestedInterruptTplLib.= I learned a lot from them and they are quite interesting! Thanks, Ray -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#114369): https://edk2.groups.io/g/devel/message/114369 Mute This Topic: https://groups.io/mt/103950154/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/leave/3901457/1787277/102458076= /xyzzy [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- --_000_MN6PR11MB82443B73244CEF84481629F08C7A2MN6PR11MB8244namp_ Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable

All,=

This= mail is to bring another approach to solve the stack-overflow due to neste= d interrupts. Michael solved this problem in OVMF through NestedInterruptTp= lLib.

 

I ma= de a draft patch as attached “DxeCore.diff”. The patch simply t= o avoid the interrupt in enable state when TPL is dropped to the interrupte= d TPL. The interrupt will be enabled later through “IRET”.

 

So, = a timer driver has two ways to implement its timer interrupt handler:<= /o:p>

1.      Do raise/restore TPL in the TimerInterruptHandler(). But call the APIs = in NestedInterruptTplLib.

2.      Do not raise/restore TPL in the TimerInterruptHandler(). So that only D= xeCore restores the TPL. And when DxeCore restores the TPL, the interrupt i= s not enabled when TPL is dropped to the interrupted TPL (as it will be enabled later by “IRET”).

 

 

Impl= ementing the logic in DxeCore does not prevent the TimerInterruptHandler() = from implementing the way #1.

Agre= e on the draft patch?

 

My 2= nd question is can we set a rule that TimerInterruptHandler() sh= ould NOT restore TPL so that way #2 (changing DxeCore) is enough to solve t= he stack overflow issue due to nested interrupts.

 

I wa= s aware of the discussion between Laszlo and Michael in end of 2022 but nev= er dig deeply as today into this problem.

I re= ally appreciate the long discussion in the bugzilla (https://bugzilla.tianocore.org/= show_bug.cgi?id=3D4162) and comments in NestedInterruptTplLib. I learned a lot from them and they are quite intere= sting!

 =

Thanks,

Ray

_._,_._,_

Groups.io Links:

=20 You receive all messages sent to this group. =20 =20

View/Reply Online (#114369) | =20 | Mute= This Topic | New Topic
Your Subscriptio= n | Contact Group Owner | Unsubscribe [importer@patchew.org]

_._,_._,_
--_000_MN6PR11MB82443B73244CEF84481629F08C7A2MN6PR11MB8244namp_-- --_004_MN6PR11MB82443B73244CEF84481629F08C7A2MN6PR11MB8244namp_ Content-Type: application/octet-stream; name="DxeCore.diff" Content-Description: DxeCore.diff Content-Disposition: attachment; filename="DxeCore.diff"; size=2457; creation-date="Thu, 25 Jan 2024 07:55:58 GMT"; modification-date="Thu, 25 Jan 2024 07:57:12 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL01kZU1vZHVsZVBrZy9Db3JlL0R4ZS9FdmVudC9UaW1lci5jIGIvTWRlTW9k dWxlUGtnL0NvcmUvRHhlL0V2ZW50L1RpbWVyLmMKaW5kZXggMjllNTA3YzY3Yy4uOGU4YjlkNjU5 MiAxMDA2NDQKLS0tIGEvTWRlTW9kdWxlUGtnL0NvcmUvRHhlL0V2ZW50L1RpbWVyLmMKKysrIGIv TWRlTW9kdWxlUGtnL0NvcmUvRHhlL0V2ZW50L1RpbWVyLmMKQEAgLTE3Niw2ICsxNzYsMTEgQEAg Q29yZUluaXRpYWxpemVUaW1lciAoCiAgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQogfQ0K IA0KK1ZPSUQNCitDb3JlUmVzdG9yZVRwbERlZmVyRW5hYmxlSW50ZXJydXB0ICgNCisgIElOIEVG SV9UUEwgIE5ld1RwbA0KKyAgKTsNCisNCiAvKioNCiAgIENhbGxlZCBieSB0aGUgcGxhdGZvcm0g Y29kZSB0byBwcm9jZXNzIGEgdGljay4NCiANCkBAIC0xOTAsMTEgKzE5NSw5IEBAIENvcmVUaW1l clRpY2sgKAogICApDQogew0KICAgSUVWRU5UICAqRXZlbnQ7DQorICBFRklfVFBMICBPcmlnaW5h bFRwbDsNCiANCi0gIC8vDQotICAvLyBDaGVjayBydW50aWVtIGZsYWcgaW4gY2FzZSB0aGVyZSBh cmUgdGlja3Mgd2hpbGUgZXhpdGluZyBib290IHNlcnZpY2VzDQotICAvLw0KLSAgQ29yZUFjcXVp cmVMb2NrICgmbUVmaVN5c3RlbVRpbWVMb2NrKTsNCisgIE9yaWdpbmFsVHBsID0gQ29yZVJhaXNl VHBsIChUUExfSElHSF9MRVZFTCk7DQogDQogICAvLw0KICAgLy8gVXBkYXRlIHRoZSBzeXN0ZW0g dGltZQ0KQEAgLTIxMyw3ICsyMTYsNyBAQCBDb3JlVGltZXJUaWNrICgKICAgICB9DQogICB9DQog DQotICBDb3JlUmVsZWFzZUxvY2sgKCZtRWZpU3lzdGVtVGltZUxvY2spOw0KKyAgQ29yZVJlc3Rv cmVUcGxEZWZlckVuYWJsZUludGVycnVwdCAoT3JpZ2luYWxUcGwpOyAgIC8vQ29yZVJlc3RvcmVU cGwgKE9yaWdpbmFsVHBsKTsNCiB9DQogDQogLyoqDQpkaWZmIC0tZ2l0IGEvTWRlTW9kdWxlUGtn L0NvcmUvRHhlL0V2ZW50L1RwbC5jIGIvTWRlTW9kdWxlUGtnL0NvcmUvRHhlL0V2ZW50L1RwbC5j CmluZGV4IGIzM2Y4MDU3M2MuLjhkNGI5MmVmNGUgMTAwNjQ0Ci0tLSBhL01kZU1vZHVsZVBrZy9D b3JlL0R4ZS9FdmVudC9UcGwuYworKysgYi9NZGVNb2R1bGVQa2cvQ29yZS9EeGUvRXZlbnQvVHBs LmMKQEAgLTE0NywzICsxNDcsNTUgQEAgQ29yZVJlc3RvcmVUcGwgKAogICAgIENvcmVTZXRJbnRl cnJ1cHRTdGF0ZSAoVFJVRSk7DQogICB9DQogfQ0KKw0KKw0KK1ZPSUQNCitDb3JlUmVzdG9yZVRw bERlZmVyRW5hYmxlSW50ZXJydXB0ICgNCisgIElOIEVGSV9UUEwgIE5ld1RwbA0KKyAgKQ0KK3sN CisgIEVGSV9UUEwgIE9sZFRwbDsNCisgIEVGSV9UUEwgIFBlbmRpbmdUcGw7DQorDQorICBPbGRU cGwgPSBnRWZpQ3VycmVudFRwbDsNCisgIGlmIChOZXdUcGwgPiBPbGRUcGwpIHsNCisgICAgREVC VUcgKChERUJVR19FUlJPUiwgIkZBVEFMIEVSUk9SIC0gUmVzdG9yZVRwbCB3aXRoIE5ld1RwbCgw eCV4KSA+IE9sZFRwbCgweCV4KVxuIiwgTmV3VHBsLCBPbGRUcGwpKTsNCisgICAgQVNTRVJUIChG QUxTRSk7DQorICB9DQorDQorICBBU1NFUlQgKFZBTElEX1RQTCAoTmV3VHBsKSk7DQorDQorICAv Lw0KKyAgLy8gSWYgbG93ZXJpbmcgYmVsb3cgSElHSF9MRVZFTCwgbWFrZSBzdXJlDQorICAvLyBp bnRlcnJ1cHRzIGFyZSBlbmFibGVkDQorICAvLw0KKw0KKyAgaWYgKChPbGRUcGwgPj0gVFBMX0hJ R0hfTEVWRUwpICYmICAoTmV3VHBsIDwgVFBMX0hJR0hfTEVWRUwpKSB7DQorICAgIGdFZmlDdXJy ZW50VHBsID0gVFBMX0hJR0hfTEVWRUw7DQorICB9DQorDQorICAvLw0KKyAgLy8gRGlzcGF0Y2gg YW55IHBlbmRpbmcgZXZlbnRzDQorICAvLw0KKyAgd2hpbGUgKGdFdmVudFBlbmRpbmcgIT0gMCkg ew0KKyAgICBQZW5kaW5nVHBsID0gKFVJTlROKUhpZ2hCaXRTZXQ2NCAoZ0V2ZW50UGVuZGluZyk7 DQorICAgIGlmIChQZW5kaW5nVHBsIDw9IE5ld1RwbCkgew0KKyAgICAgIGJyZWFrOw0KKyAgICB9 DQorDQorICAgIGdFZmlDdXJyZW50VHBsID0gUGVuZGluZ1RwbDsNCisgICAgaWYgKGdFZmlDdXJy ZW50VHBsIDwgVFBMX0hJR0hfTEVWRUwpIHsNCisgICAgICBDb3JlU2V0SW50ZXJydXB0U3RhdGUg KFRSVUUpOw0KKyAgICB9DQorDQorICAgIENvcmVEaXNwYXRjaEV2ZW50Tm90aWZpZXMgKGdFZmlD dXJyZW50VHBsKTsNCisgIH0NCisNCisgIC8vDQorICAvLyBEaXNhYmxlIGludGVycnVwdCBiZWZv cmUgcmVzdG9yaW5nIHRvIHRoZSBvcmlnaW5hbCBUUEwuDQorICAvLyBUaGlzIGlzIHRvIGF2b2lk IHRoZSBuZXN0IGludGVycnVwdCBoYXBwZW5zIGluIHRoZSBzYW1lIFRQTA0KKyAgLy8gd2hpY2gg d2lsbCBiZSBlbmRsZXNzLg0KKyAgLy8NCisgIENvcmVTZXRJbnRlcnJ1cHRTdGF0ZSAoRkFMU0Up Ow0KKyAgZ0VmaUN1cnJlbnRUcGwgPSBOZXdUcGw7DQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m IGZpbGUK --_004_MN6PR11MB82443B73244CEF84481629F08C7A2MN6PR11MB8244namp_--