From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from cxsh.intel-email.com (cxsh.intel-email.com [121.46.250.151]) by mx.groups.io with SMTP id smtpd.web10.12399.1684465406695031660 for ; Thu, 18 May 2023 20:03:29 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@byosoft.com.cn header.s=cloud-union header.b=XFTTTUUT; spf=pass (domain: byosoft.com.cn, ip: 121.46.250.151, mailfrom: fanjianfeng@byosoft.com.cn) Received: from cxsh.intel-email.com (localhost [127.0.0.1]) by cxsh.intel-email.com (Postfix) with ESMTP id 1B48DDDA7CC for ; Fri, 19 May 2023 11:03:24 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=byosoft.com.cn; s=cloud-union; t=1684465404; bh=ODBDHkM2I/U+NZCucKKrAF8Bov1l1nuffJMqU9AXqwI=; h=Date:From:To:Cc:Subject:References; b=XFTTTUUT6XvJASwNp79gU1XWJ32JQrrJpW3VXvn6YgfQKPjXrSxUAwR1MqgEoyznk JPP7hSQfGHbUWfMPhrWDETG1j53EBkhV99c7zkul8bu+ofIENcR+cof3mG8GEP/N8D iSIfXjn8NWdzksC2tcQRAhg9fOdO4xq7D82EZgQA= Received: from localhost (localhost [127.0.0.1]) by cxsh.intel-email.com (Postfix) with ESMTP id 16168DDA7CD for ; Fri, 19 May 2023 11:03:24 +0800 (CST) Received: from cxsh.intel-email.com (localhost [127.0.0.1]) by cxsh.intel-email.com (Postfix) with ESMTP id 9E39ADDA7C7 for ; Fri, 19 May 2023 11:03:23 +0800 (CST) Authentication-Results: cxsh.intel-email.com; none Received: from mail.byosoft.com.cn (mail.byosoft.com.cn [58.240.74.242]) by cxsh.intel-email.com (Postfix) with SMTP id 444CADDA7B7 for ; Fri, 19 May 2023 11:03:20 +0800 (CST) Received: from DESKTOP-M5NI163 ([58.246.60.130]) (envelope-sender ) by 192.168.6.13 with ESMTP for ; Fri, 19 May 2023 11:03:08 +0800 X-WM-Sender: fanjianfeng@byosoft.com.cn X-Originating-IP: 58.246.60.130 X-WM-AuthFlag: YES X-WM-AuthUser: fanjianfeng@byosoft.com.cn Date: Fri, 19 May 2023 11:03:11 +0800 From: "Jeff Fan" To: "devel@edk2.groups.io" , =?UTF-8?B?TmksIFJheQ==?= , "'Andrew Fish'" , =?UTF-8?B?S2lubmV5LCBNaWNoYWVsIEQ=?= Cc: "Rebecca Cran" Subject: Re: [edk2-devel] CpuDeadLoop() is optimized by compiler References: , , <7C9FD4BA-328C-4CFE-AF5A-3A795BB147E4@apple.com>, , , , <0EECE39F-0B65-4BFE-8668-CB59448C578D@apple.com>, <17605136DCF3E084.26337@groups.io>, , , <69A704CE-16A4-4C8D-9A32-9BBD22C00475@apple.com>, X-Priority: 3 X-Has-Attach: no X-Mailer: Foxmail 7.2.20.269[cn] Mime-Version: 1.0 Message-ID: <202305191103109984545@byosoft.com.cn> Sender: "fanjianfeng@byosoft.com.cn" Content-Type: multipart/alternative; boundary="----=_001_NextPart433571137613_=----" ------=_001_NextPart433571137613_=---- Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 UmF5LA0KDQpJZiB5b3UgY2hvb3NlcyBhc3NlbWJseSBzb2x1dGlvbiwgeW91J2QgYmV0dGVyIHRv IGNvbnNpZGVyIHN0YWNrIGFkanVzdCB0byBmb2xsb3cgY2FsbGluZyBjb252ZW50aW9uLiBPdGhl cndpc2UsIGl0IG1heSBicmVhayBzb21lIGRlYnVnZ2VyIHRvb2xzIHRvIGRvIGNhbGwgc3RhY2sg dHJhY2UuDQoNCkplZmYNCg0KDQpmYW5qaWFuZmVuZ0BieW9zb2Z0LmNvbS5jbg0KIA0KRnJvbTog TmksIFJheQ0KRGF0ZTogMjAyMy0wNS0xOSAxMDo1Mw0KVG86IEFuZHJldyAoRUZJKSBGaXNoOyBk ZXZlbEBlZGsyLmdyb3Vwcy5pbzsgS2lubmV5LCBNaWNoYWVsIEQNCkNDOiBSZWJlY2NhIENyYW4N ClN1YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0gQ3B1RGVhZExvb3AoKSBpcyBvcHRpbWl6ZWQgYnkg Y29tcGlsZXINCkkgdGhpbmsgYWxsIHRoZSBvcHRpb25zIHdlIGNvbnNpZGVyZWQgYXJlIHdvcmth cm91bmRzLiBUaGVzZSBtaWdodCBicmVhayBhZ2FpbiBpZiBjb21waWxlciBpcyDigJxjbGV2ZXJl cuKAnSBpbiBmdXR1cmUuIFVubGVzcyBzb21lIEN4eCBzcGVjIGNsZWFybHkgZ3VhcmFudGVlcyB0 aGF0Lg0KIA0KSSBsaWtlIE1pa2XigJlzIGlkZWEgdG8gdXNlIGFzc2VtYmx5IGltcGxlbWVudGF0 aW9uIGZvciBDcHVEZWFkTG9vcC4gVGhlIGFzc2VtYmx5IGNhbiBzaW1wbHkg4oCcam1wICTigJ0g dGhlbiDigJxyZXTigJ0uDQogDQpJIGRpZG7igJl0IGZpbmQgYSBkZWFkLWxvb3AgaW50cmluc2lj IGZ1bmN0aW9uIGluIE1TVkMuDQpBbnkgYmV0dGVyIGlkZWE/DQogDQpUaGFua3MsDQpSYXkNCiAN CkZyb206IEFuZHJldyAoRUZJKSBGaXNoIDxhZmlzaEBhcHBsZS5jb20+IA0KU2VudDogRnJpZGF5 LCBNYXkgMTksIDIwMjMgODo0MiBBTQ0KVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBLaW5uZXks IE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQpDYzogTmksIFJheSA8cmF5 Lm5pQGludGVsLmNvbT47IFJlYmVjY2EgQ3JhbiA8cmViZWNjYUBic2Rpby5jb20+DQpTdWJqZWN0 OiBSZTogW2VkazItZGV2ZWxdIENwdURlYWRMb29wKCkgaXMgb3B0aW1pemVkIGJ5IGNvbXBpbGVy DQogDQpNaWtlLA0KIA0KU29ycnkgc3RhdGljIHdhcyBqdXN0IHRvIHNjb3BlIHRoZSBuYW1lIHRv IHRoZSBmaWxlIHNpbmNlIGl0IGlzIGEgbGliLCBub3QgdG8gbWFrZSBpdCB3b3JrLg0KIA0KVGhh dCBpcyBhIGNvb2wgc2l0ZS4gSSBsZWFybmVkIGFib3V0IGl0IGNvbXBsYWluaW5nIGFib3V0IHN0 dWZmIHRvIHRoZSBjb21waWxlciB0ZWFtIG9uIG91ciBpbnRlcm5hbCBjbGFuZyBTbGFjayBjaGFu bmVsIGFzIHRoZXkgdXNlIGl0IHRvIGFuc3dlciBteSBxdWVzdGlvbnMuDQogDQpUaGFua3MsDQog DQpBbmRyZXcgRmlzaA0KDQoNCk9uIE1heSAxOCwgMjAyMywgYXQgMjo0MiBQTSwgTWljaGFlbCBE IEtpbm5leSA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+IHdyb3RlOg0KIA0KVXNpbmcgdGhh dCB0b29sLCB0aGUgZm9sbG93aW5nIGZyYWdtZW50IHNlZW1zIHRvIGdlbmVyYXRlIHRoZSByaWdo dCBjb2RlLiAgVm9sYXRpbGUgaXMgcmVxdWlyZWQuICBTdGF0aWMgaXMgb3B0aW9uYWwuDQogDQpz dGF0aWMgdm9sYXRpbGUgaW50ICBtRGVhZExvb3BDb3VudCA9IDA7DQogDQp2b2lkDQpDcHVEZWFk TG9vcCgNCiAgdm9pZA0KICApDQp7DQogIHdoaWxlIChtRGVhZExvb3BDb3VudCA9PSAwKTsNCn0N CiANCiANCkdDQw0KPT09DQpDcHVEZWFkTG9vcCgpOg0KLkwyOg0KICAgICAgICBtb3YgICAgIGVh eCwgRFdPUkQgUFRSIG1EZWFkTG9vcENvdW50W3JpcF0NCiAgICAgICAgdGVzdCAgICBlYXgsIGVh eA0KICAgICAgICBqZSAgICAgIC5MMg0KICAgICAgICByZXQNCiANCiANCkNMQU5HDQo9PT09PQ0K Q3B1RGVhZExvb3AoKTogICAgICAgICAgICAgICAgICAgICAgICMgQENwdURlYWRMb29wKCkNCi5M QkIwXzE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjID0+VGhpcyBJbm5lciBMb29w IEhlYWRlcjogRGVwdGg9MQ0KICAgICAgICBjbXAgICAgIGR3b3JkIHB0ciBbcmlwICsgX1pMMTRt RGVhZExvb3BDb3VudF0sIDANCiAgICAgICAgamUgICAgICAuTEJCMF8xDQogICAgICAgIHJldA0K IA0KIA0KTWlrZQ0KIA0KIA0KRnJvbTogQW5kcmV3IChFRkkpIEZpc2ggPGFmaXNoQGFwcGxlLmNv bT4gDQpTZW50OiBUaHVyc2RheSwgTWF5IDE4LCAyMDIzIDE6NDUgUE0NClRvOiBlZGsyLWRldmVs LWdyb3Vwcy1pbyA8ZGV2ZWxAZWRrMi5ncm91cHMuaW8+OyBBbmRyZXcgRmlzaCA8YWZpc2hAYXBw bGUuY29tPg0KQ2M6IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNv bT47IE5pLCBSYXkgPHJheS5uaUBpbnRlbC5jb20+OyBSZWJlY2NhIENyYW4gPHJlYmVjY2FAYnNk aW8uY29tPg0KU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBDcHVEZWFkTG9vcCgpIGlzIG9wdGlt aXplZCBieSBjb21waWxlcg0KIA0KV2hvb3BzIHdyb25nIGNvbXBpbGVyLiBIZXJlIGlzIGFuIHVw ZGF0ZS4gSSBhZGRlZCB0aGUgZmxhZ3Mgc28gdGhpcyBvbmUgcmVwcm9kdWNlcyB0aGUgaXNzdWUu DQogDQpDb21waWxlciBFeHBsb3Jlcg0KZ29kYm9sdC5vcmcNCjxpbWFnZTAwMS5wbmc+DQogDQpU aGFua3MsDQogDQpBbmRyZXcgRmlzaA0KDQoNCg0KT24gTWF5IDE4LCAyMDIzLCBhdCAxMTo0NSBB TSwgQW5kcmV3IEZpc2ggdmlhIGdyb3Vwcy5pbzxhZmlzaD1hcHBsZS5jb21AZ3JvdXBzLmlvPiB3 cm90ZToNCiANCk1pa2UsDQogDQpUaGlzIGlzIGEgZ29vZCB3YXkgdG8gcGxheSBhcm91bmQgd2l0 aCBmaXhlcywgYW5kIHRvIHJlcG9ydCBidWdzLiBZb3UgY2FuIHNlZSB0aGUgYXNzZW1ibGVyIGZv ciBkaWZmZXJlbnQgY29tcGlsZXJzIHdpdGggZGlmZmVyZW50IGZsYWcuIA0KIA0KQ29tcGlsZXIg RXhwbG9yZXINCmdvZGJvbHQub3JnDQo8ZmF2aWNvbi5wbmc+DQogDQpTb3JyeSBJ4oCZbSB0cmF2 ZWxpbmcgYW5kIGluIEN1cGVydGlubyB3aXRoIGxvdHMgb2YgbWVldGluZ3Mgc28gSSBkaWQgbm90 IGhhdmUgdGltZSB0byBhZGp1c3QgdGhlIGNvbXBpbGVyIGZsYWdz4oCmLg0KIA0KVGhhbmtzLA0K IA0KQW5kcmV3IEZpc2gNCg0KDQoNCk9uIE1heSAxOCwgMjAyMywgYXQgMTA6MjQgQU0sIEFuZHJl dyAoRUZJKSBGaXNoIDxhZmlzaEBhcHBsZS5jb20+IHdyb3RlOg0KIA0KTWlrZSwNCiANCkkgZ3Vl c3MgbXkgb3RoZXIgcXVlc3Rpb27igKYgSWYgdGhpcyB0dXJucyBvdXQgdG8gYmUgYSBjb21waWxl ciBidWcgc2hvdWxkIHdlIHNjb3BlIHRoZSBjaGFuZ2UgdG8gdGhlIGJyb2tlbiB0b29sY2hhaW4u IEnigJltIG5vdCBzdXJlIHdoYXQgdGhlIHJpZ2h0IGFuc3dlciBpcyBmb3IgdGhhdCwgYnV0IEkg d2FudCB0byBhc2sgdGhlIHF1ZXN0aW9uPyANCiANClRoYW5rcywNCiANCkFuZHJldyBGaXNoDQoN Cg0KDQpPbiBNYXkgMTgsIDIwMjMsIGF0IDEwOjE5IEFNLCBNaWNoYWVsIEQgS2lubmV5IDxtaWNo YWVsLmQua2lubmV5QGludGVsLmNvbT4gd3JvdGU6DQogDQpBbmRyZXcsDQogDQpUaGlzIG1pZ2h0 IHdvcmsgZm9yIFhJUC4gIFNldCBub24gY29uc3QgZ2xvYmFsIHRvIGluaXRpYWwgdmFsdWUgdGhh dCBpcyBleHBlY3RlZCB2YWx1ZSB0byBzdGF5IGluIGRlYWQgbG9vcC4NCiANClVJTlROICBtRGVh ZExvb3BDb3VudCA9IDA7DQogDQpWT0lEDQpDcHVEZWFkTG9vcCgNCiAgVk9JRA0KICApIA0Kew0K ICB3aGlsZSAobURlYWRMb29wQ291bnQgPT0gMCkgew0KICAgICAgQ3B1UGF1c2UoKTsNCiAgfQ0K fQ0KIA0KV2hlbiBkZWFkbG9vcCBpcyBlbnRlcmVkLCBkZXZlbG9wZXIgY2FuIG5vdCBjaGFuZ2Ug dmFsdWUgb2YgbURlYWRMb29wQ291bnQsIGJ1dCB0aGV5IGNhbiB1c2UgZGVidWdnZXIgdG8gZm9y Y2UgZXhpdCBsb29wIGFuZCByZXR1cm4gZnJvbSBmdW5jdGlvbi4NCiANCk1pa2UNCiANCiANCkZy b206IEFuZHJldyAoRUZJKSBGaXNoIDxhZmlzaEBhcHBsZS5jb20+IA0KU2VudDogVGh1cnNkYXks IE1heSAxOCwgMjAyMyAxMDowOSBBTQ0KVG86IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQu a2lubmV5QGludGVsLmNvbT4NCkNjOiBlZGsyLWRldmVsLWdyb3Vwcy1pbyA8ZGV2ZWxAZWRrMi5n cm91cHMuaW8+OyBOaSwgUmF5IDxyYXkubmlAaW50ZWwuY29tPjsgUmViZWNjYSBDcmFuIDxyZWJl Y2NhQGJzZGlvLmNvbT4NClN1YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0gQ3B1RGVhZExvb3AoKSBp cyBvcHRpbWl6ZWQgYnkgY29tcGlsZXINCiANCk1pa2UsDQogDQpHb29kIHBvaW50LCB0aGF0IGlz IHdoeSB3ZSBhcmUgdXNpbmcgdGhlIHN0YWNrIOKApi4NCiANClRoZSBvbmx5IG90aGVyIHRoaW5n IEkgY2FuIHRoaW5rIG9mIGlzIHRvIHBhc3MgdGhlIGFkZHJlc3Mgb2YgSW5kZXggdG8gc29tZSBp bmxpbmUgYXNzZW1ibGVyLCBvciBhbiBhc20gbm8gb3AgZnVuY3Rpb24sIHRvIGdpdmUgaXQgYSBz aWRlIGVmZmVjdCB0aGUgY29tcGlsZXIgY2Fu4oCZdCByZXNvbHZlLiANCiANClRoYW5rcywNCiAN CkFuZHJldyBGaXNoDQoNCg0KDQoNCk9uIE1heSAxOCwgMjAyMywgYXQgMTA6MDUgQU0sIEtpbm5l eSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4gd3JvdGU6DQogDQpTdGF0 aWMgZ2xvYmFsIHdpbGwgbm90IHdvcmsgZm9yIFhJUA0KIA0KTWlrZQ0KIA0KRnJvbTogQW5kcmV3 IChFRkkpIEZpc2ggPGFmaXNoQGFwcGxlLmNvbT4gDQpTZW50OiBUaHVyc2RheSwgTWF5IDE4LCAy MDIzIDk6NDkgQU0NClRvOiBlZGsyLWRldmVsLWdyb3Vwcy1pbyA8ZGV2ZWxAZWRrMi5ncm91cHMu aW8+OyBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQpDYzog TmksIFJheSA8cmF5Lm5pQGludGVsLmNvbT47IFJlYmVjY2EgQ3JhbiA8cmViZWNjYUBic2Rpby5j b20+DQpTdWJqZWN0OiBSZTogW2VkazItZGV2ZWxdIENwdURlYWRMb29wKCkgaXMgb3B0aW1pemVk IGJ5IGNvbXBpbGVyDQogDQpNaWtlLA0KIA0KSSBwaW5nZWQgc29tZSBjb21waWxlciBleHBlcnRz IHRvIHNlZSBpZiBvdXIgY29kZSBpcyBjb3JyZWN0LCBvciBpZiB0aGUgY29tcGlsZXIgaGFzIGFu IGlzc3VlLiBTZWVtcyB0byBiZSB0cmVuZGluZyBjb21waWxlciBpc3N1ZSByaWdodCBub3csIGJ1 dCBJ4oCZdmUgTk9UIGdvdHRlbiBmZWVkYmFjayBmcm9tIGFueW9uZSBvbiB0aGUgc3BlYyBjb21t aXR0ZWUgeWV0LiANCiANCklmIHdlIG1vdmUgSW5kZXggdG8gYSBzdGF0aWMgZ2xvYmFsIHRoYXQg d291bGQgbGlrZWx5IHdvcmsgYXJvdW5kIHRoZSBjb21waWxlciBpc3N1ZS4NCiANClRoYW5rcywN CiANCkFuZHJldyBGaXNoDQoNCg0KDQoNCg0KT24gTWF5IDE4LCAyMDIzLCBhdCA4OjM2IEFNLCBN aWNoYWVsIEQgS2lubmV5IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4gd3JvdGU6DQogDQpI aSBSYXksDQogDQpTbyB0aGUgY29kZSBnZW5lcmF0ZWQgZG9lcyBkZWFkbG9vcCwgYnV0IGlzIGp1 c3Qgbm90IGVhc3kgdG8gcmVzdW1lIGZyb20gYXMgd2UgaGF2ZSBiZWVuIGFibGUgdG8gZG8gaW4g dGhlIHBhc3QuDQogDQpXZSB1c2UgQ3B1RGVhZGxvb3AoKSBmb3IgMiBwdXJwb3Nlcy4gIE9uZSBp cyBhIHRlcm1pbmFsIGNvbmRpdGlvbiB3aXRoIG5vIHJlYXNvbiB0byBldmVyIGNvbnRpbnVlLg0K IA0KVGhlIDJuZCBpcyBhIGRlYnVnIGFpZGUgZm9yIGRldmVsb3BlcnMgdG8gaGFsdCB0aGUgc3lz dGVtIGF0IGEgc3BlY2lmaWMgbG9jYXRpb24gYW5kIHRoZW4gY29udGludWUgZnJvbSB0aGF0IHBv aW50LCB1c3VhbGx5IHdpdGggYSBkZWJ1Z2dlciwgdG8gc3RlcCB0aHJvdWdoIGNvZGUgdG8gYW4g YXJlYSB0byBldmFsdWF0ZSB1bmV4cGVjdGVkIGJlaGF2aW9yLg0KIA0KV2UgbWF5IGhhdmUgdG8g ZG8gYSBOQVNNIGltcGxlbWVudGF0aW9uIG9mIENwdURlYWRsb29wKCkgdG8gbWFrZSBzdXJlIGl0 IG1lZXRzIGJvdGggdXNlIGNhc2VzLg0KIA0KTWlrZQ0KIA0KRnJvbTogTmksIFJheSA8cmF5Lm5p QGludGVsLmNvbT4gDQpTZW50OiBUaHVyc2RheSwgTWF5IDE4LCAyMDIzIDM6MDAgQU0NClRvOiBk ZXZlbEBlZGsyLmdyb3Vwcy5pbw0KQ2M6IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lu bmV5QGludGVsLmNvbT47IFJlYmVjY2EgQ3JhbiA8cmViZWNjYUBic2Rpby5jb20+OyBOaSwgUmF5 IDxyYXkubmlAaW50ZWwuY29tPg0KU3ViamVjdDogQ3B1RGVhZExvb3AoKSBpcyBvcHRpbWl6ZWQg YnkgY29tcGlsZXINCiANCkhpLA0KU3RhcnRpbmcgZnJvbSBjZXJ0YWluIHZlcnNpb24gb2YgVmlz dWFsIFN0dWRpbyBDIGNvbXBpbGVyIChJIGRvbuKAmXQgaGF2ZSB0aGUgZXhhY3QgdmVyc2lvbi4g SSBhbSB1c2luZyBWUzIwMTkpLCBDcHVEZWFkTG9vcCBpcyBub3cgb3B0aW1pemVkIHF1aXRlIHdl bGwgYnkgY29tcGlsZXIuDQogDQpUaGUgb3B0aW1pemF0aW9uIGlzIHNvIOKAnGdvb2TigJ0gdGhh dCBpdCBiZWNvbWVzIGhhcmRlciBmb3IgZGV2ZWxvcGVycyB0byBicmVhayBvdXQgb2YgdGhlIGRl YWRsb29wLg0KIA0KSSBjb3BpZWQgdGhlIGFzc2VtYmx5IGluc3RydWN0aW9ucyBhcyBiZWxvdyBm b3IgeW91ciByZWZlcmVuY2UuDQpUaGUgY29tcGlsZXIgZG9lcyBub3QgZ2VuZXJhdGUgaW5zdHJ1 Y3Rpb25zIHRoYXQganVtcCBvdXQgb2YgdGhlIGxvb3Agd2hlbiB0aGUgSW5kZXggaXMgbm90IHpl cm8uDQpTbyBpbiBvcmRlciB0byBicmVhayBvdXQgb2YgdGhlIGxvb3AsIGRldmVsb3BlcnMgbmVl ZCB0bzoNCk1hbnVhbGx5IGFkanVzdCByc3AgYnkgaW5jcmVhc2luZyA0MA0KTWFudWFsbHkg4oCc cmV04oCdDQogDQpJIGFtIG5vdCBzdXJlIGlmIGFueW9uZSBoYXMgaW50ZXJlc3QgdG8gcmUtd3Jp dGUgdGhpcyBmdW5jdGlvbiBzbyB0aGF0IGNvbXBpbGVyIGNhbiBiZSDigJxmb29sZWTigJ0gYWdh aW4uDQpUaGFua3MsDQpSYXkNCiANCj09PT09PT09PT09PT09PT09PT09PT09DQo7IEZ1bmN0aW9u IGNvbXBpbGUgZmxhZ3M6IC9PZ3NweQ0KOyBGaWxlIGU6XHdvcmtcZWRrMlxNZGVQa2dcTGlicmFy eVxCYXNlTGliXENwdURlYWRMb29wLmMNCjsgICAgICAgICAgICAgIENPTURBVCBDcHVEZWFkTG9v cA0KX1RFWFQgICAgU0VHTUVOVA0KSW5kZXgkID0gNDgNCkNwdURlYWRMb29wIFBST0MgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDsgQ09NREFUDQogDQo7IDI2ICAgOiB7DQogDQokTE4xMjoNCiAgMDAwMDAgIDQ4IDgzIGVj IDI4ICAgICAgICAgc3ViICAgICAgICByc3AsIDQwICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA7IDAwMDAwMDI4SA0KIA0KOyAyNyAgIDogICB2b2xhdGlsZSBVSU5UTiAgSW5kZXg7DQo7 IDI4ICAgOiANCjsgMjkgICA6ICAgZm9yIChJbmRleCA9IDA7IEluZGV4ID09IDA7KSB7DQogDQog IDAwMDA0ICA0OCBjNyA0NCAyNCAzMA0KICAgICAgICAgICAgICAgMDAgMDAgMDAgMDAgICAgICAg IG1vdiAgICAgIFFXT1JEIFBUUiBJbmRleCRbcnNwXSwgMA0KJExOMTBAQ3B1RGVhZExvbzoNCiAN CjsgMzAgICA6ICAgICBDcHVQYXVzZSAoKTsNCiANCiAgMDAwMGQgIDQ4IDhiIDQ0IDI0IDMwICAg bW92ICAgICAgcmF4LCBRV09SRCBQVFIgSW5kZXgkW3JzcF0NCiAgMDAwMTIgIGU4IDAwIDAwIDAw IDAwICAgY2FsbCAgICAgICAgQ3B1UGF1c2UNCiAgMDAwMTcgIGViIGY0ICAgICAgICAgICAgICAg ICAgICAgam1wICAgICAgIFNIT1JUICRMTjEwQENwdURlYWRMb28NCkNwdURlYWRMb29wIEVORFAN Cl9URVhUICAgIEVORFMNCkVORA0KIA0KIA0KIA0KIA0KIA0KIA0KIA0KDQo= ------=_001_NextPart433571137613_=---- Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Ray,

If you chooses assembly sol= ution, you'd better to consider stack adjust to follow calling convention. = Otherwise, it may break some debugger tools to do call stack trace.

Jeff

fanjianfeng@byosoft.com.cn
 
Fr= om: Ni, Ray
Date: 2023-05-19=  10:53
<= b>Subject: Re: [edk2-devel] CpuDeadLoop() is optimized by compiler=

I think all the options we considered are workarounds= . These might break again if compiler is =E2=80=9Ccleverer=E2=80=9D in futu= re. Unless some Cxx spec clearly guarantees that.

 

I like Mike=E2=80=99s idea to use assembly implementa= tion for CpuDeadLoop. The assembly can simply =E2=80=9Cjmp $=E2=80=9D then = =E2=80=9Cret=E2=80=9D.

 

I didn=E2=80=99t find a dead-loop intrinsic function = in MSVC.

Any better idea?

 

Thanks,

Ray

 

From: Andrew (EFI) Fish <afish@apple.com>= ;
Sent: Friday, May 19, 2023 8:42 AM
To: devel@edk2.groups.io; Kinney, Michael D <michael.d.kinney@int= el.com>
Cc: Ni, Ray <ray.ni@intel.com>; Rebecca Cran <rebecca@bsdio= .com>
Subject: Re: [edk2-devel] CpuDeadLoop() is optimized by compiler

 

Mike,

 

Sorry static was just to scope the name to the file s= ince it is a lib, not to make it work.

 

That is a cool site. I learned about it complaining a= bout stuff to the compiler team on our internal clang Slack channel as they= use it to answer my questions.

 

Thanks,

 

Andrew Fish



On May 18, 2023, at 2:42 PM, Michael D Kinney <michael.d.kinney@intel.com> wrote:

 

Using that tool, the following fragment seems to gene= rate the right code.  Volatile is required.  Static is optional.<= o:p>

 

static volatile int <= /span>&nb= sp;mDeadLoopCount =3D 0;=

 

void

CpuDeadL= oop(

  void

  )=

{=

  while (mDeadLoopCount =3D=3D 0);

}=

 

 

GCC

=3D=3D=3D

CpuDeadLo= op():

.L2:

  &= nbsp;     mov     eax, DWORD&= nbsp;PTR mDeadLoopCount[rip<= /span>]

  &= nbsp;     test    eax, eax=

  &= nbsp;     je      .L2

  &= nbsp;     ret

 

 

CLANG

=3D=3D=3D=3D=3D

CpuDeadLo= op():                       # @CpuDeadLoop()

.LBB0_1: =                      = ;          # =3D>This Inner Loop Header:=  Depth=3D1

  &= nbsp;     cmp     dword ptr = ;[rip + _ZL14mDeadLoopCount], 0

  &= nbsp;     je      .LBB0_1

  &= nbsp;     ret

 

 

Mike

 

 

From:&nb= sp;Andrew (EFI) Fish <afish@apple.com> 
Sent: Thursday, Ma= y 18, 2023 1:45 PM
To: edk2-devel-gro= ups-io <devel@edk2.groups.io>; Andrew Fish <afish@apple.com>
Cc: Kinney, Michae= l D <michael.d.kinney@intel.com>; Ni, Ray &= lt;ray.ni@intel.com>; Rebecca Cran <rebe= cca@bsdio.com>
Subject: Re: [edk2= -devel] CpuDeadLoop() is optimized by compiler

 

Whoops wrong compiler. Here is an update. I added the= flags so this one reproduces the issue.

 

 

Thanks,

 

Andrew Fish




On May 18, 2023, at 11:45 AM, Andrew Fish via groups.io<afish=3Dapple.com@groups.io> wrote:

 

Mike,

 

This is a good way to play around with fixes, and to = report bugs. You can see the assembler for different compilers with differe= nt flag. 

 

 

Sorry I=E2=80=99m traveling and in Cupertino with lot= s of meetings so I did not have time to adjust the compiler flags=E2=80=A6.=

 

Thanks,

 

Andrew Fish




On May 18, 2023, at 10:24 AM, Andrew (EFI) Fish <<= a href=3D"mailto:afish@apple.com" style=3D"color: blue; text-decoration: un= derline;">afish@apple.com> wrote:

 

Mike,

 

I guess my other question=E2=80=A6 If this turns out = to be a compiler bug should we scope the change to the broken toolchain. I= =E2=80=99m not sure what the right answer is for that, but I want to ask th= e question? 

 

Thanks,

 

Andrew Fish




On May 18, 2023, at 10:19 AM, Michael D Kinney <michael.d.kinney@intel.com> wrote:

 

Andrew,

 

This might work for XIP.  Set non const global t= o initial value that is expected value to stay in dead loop.

 

UINTN  mDeadLoopCount =3D 0;

 

VOID

CpuDeadLoop(

  VOID

  ) <= /span>

{

  while (mDeadLoopCount =3D=3D 0) {

      CpuPause();=

  }

}

 

When deadloop is entered, developer can not change va= lue of mDeadLoopCount, but they can use debugger to force exit loop and ret= urn from function.

 

Mike

 

 

From:&nb= sp;Andrew (EFI) Fish <afish@apple.com> 
Sent: Thursday, Ma= y 18, 2023 10:09 AM
To: Kinney, Michae= l D <michael.d.kinney@intel.com>
Cc: edk2-devel-gro= ups-io <devel@edk2.groups.io>; Ni, Ray <ray.ni@intel.com>; Rebecca Cran <rebecca@bsdio= .com>
Subject: Re: [edk2= -devel] CpuDeadLoop() is optimized by compiler

 

Mike,

 

Good point, that is why we are using the stack =E2=80= =A6.

 

The only other thing I can think of is to pass the ad= dress of Index to some inline assembler, or an asm no op function, to give = it a side effect the compiler can=E2=80=99t resolve. 

 

Thanks,

 

Andrew Fish





On May 18, 2023, at 10:05 AM, Kinney, Michael D <<= a href=3D"mailto:michael.d.kinney@intel.com" style=3D"color: blue; text-dec= oration: underline;">michael.d.kinney@intel.com> wrote:

 

Static global will not work for XIP

 

Mike

 

From:&nb= sp;Andrew (EFI) Fish <afish@apple.com> 
Sent: Thursday, Ma= y 18, 2023 9:49 AM
To: edk2-devel-gro= ups-io <devel@edk2.groups.io>; Kinney, Michael D = <michael.d.kinney@intel.com>
Cc: Ni, Ray <ray.ni@intel.com>; Rebecca Cran <rebecca@b= sdio.com>
Subject: Re: [edk2= -devel] CpuDeadLoop() is optimized by compiler

 

Mike,

 

I pinged some compiler experts to see if our code is = correct, or if the compiler has an issue. Seems to be trending compiler iss= ue right now, but I=E2=80=99ve NOT gotten feedback from anyone on the spec = committee yet. 

 

If we move Index to a static global that would likely= work around the compiler issue.

 

Thanks,

 

Andrew Fish






On May 18, 2023, at 8:36 AM, Michael D Kinney <michael.d.kinney@intel.com> wrote:

 

Hi Ray,

 

So the code generated does deadloop, but is just not = easy to resume from as we have been able to do in the past.

 

We use CpuDeadloop() for 2 purposes.  One is a t= erminal condition with no reason to ever continue.

 

The 2nd is a debug aide for developers to halt the system at a spec= ific location and then continue from that point, usually with a debugger, t= o step through code to an area to evaluate unexpected behavior.

 

We may have to do a NASM implementation of CpuDeadloo= p() to make sure it meets both use cases.

 

Mike

 

From:&nb= sp;Ni, Ray <ray.ni@intel.com> 
Sent: Thursday, Ma= y 18, 2023 3:00 AM
To:  Kinney, Michae= l D <michael.d.kinney@intel.com>; Rebecca C= ran <rebecca@bsdio.com>; Ni, Ray <ray= .ni@intel.com>
Subject: CpuDeadLo= op() is optimized by compiler

 

Hi,

Starting from certain version of Visual Studio C comp= iler (I don=E2=80=99t have the exact version. I am using VS2019), CpuDeadLo= op is now optimized quite well by compiler.

 

The optimization is so =E2=80=9Cgood=E2=80=9D that it= becomes harder for developers to break out of the deadloop.

 

I copied the assembly instructions as below for your = reference.

The compiler does not generate instructions that jump= out of the loop when the Index is not zero.

So in order to break out of the loop, developers need= to:

  1. Manually adjust rsp by increasing 40
  2. Manually =E2=80=9Cret=E2=80=9D

 

I am not sure if anyone has interest to re-write this= function so that compiler can be =E2=80=9Cfooled=E2=80=9D again.

Thanks,
Ray

 

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D

; Function compile flags: /Ogspy

; File e:\work\edk2\MdePkg\Library\BaseLib\CpuDeadLoo= p.c

;        &nbs= p;     COMDAT CpuDeadLoop

_TEXT    SEGMENT

Index$ =3D 48

CpuDeadLoop PROC      &= nbsp;           &nbs= p;            &= nbsp;           &nbs= p;            &= nbsp;           ; COMDAT<= o:p>

 

; 26   : {

 

$LN12:

  00000  48 83 ec 28    = ;     sub        rsp= , 40            = ;            &n= bsp;       ; 00000028H

 

; 27   :   volatile UINTN  I= ndex;

; 28   : 

; 29   :   for (Index =3D 0; Inde= x =3D=3D 0;) {

 

  00004  48 c7 44 24 30

         = ;      00 00 00 00     &n= bsp;  mov      QWORD PTR Index$[rsp], 0<= /o:p>

$LN10@CpuDeadLoo:

 

; 30   :     CpuPause (= );

 

  0000d  48 8b 44 24 30   mov&nbs= p;     rax, QWORD PTR Index$[rsp]

  00012  e8 00 00 00 00   call&nb= sp;       CpuPause

  00017  eb f4     = ;            &n= bsp;   jmp       SHORT $LN10@CpuDea= dLoo

CpuDeadLoop ENDP

_TEXT    ENDS

END

 

 

 

 

 

 

 

------=_001_NextPart433571137613_=------