From mboxrd@z Thu Jan 1 00:00:00 1970 From: Haozhong Zhang Subject: [RFC XEN PATCH v2 02/15] xen: probe pmem regions via ACPI NFIT Date: Mon, 20 Mar 2017 08:09:36 +0800 Message-ID: <20170320000949.24675-3-haozhong.zhang@intel.com> References: <20170320000949.24675-1-haozhong.zhang@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170320000949.24675-1-haozhong.zhang@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Konrad Rzeszutek Wilk , Dan Williams , Andrew Cooper , Jan Beulich , Haozhong Zhang List-Id: xen-devel@lists.xenproject.org UHJvYmUgdGhlIGFkZHJlc3MgcmFuZ2VzIG9mIHBtZW0gcmVnaW9ucyB2aWEgQUNQSSBORklUIGFu ZCByZXBvcnQgdGhlbQp0byBYZW4gaHlwZXJ2aXNvci4KClNpZ25lZC1vZmYtYnk6IEhhb3pob25n IFpoYW5nIDxoYW96aG9uZy56aGFuZ0BpbnRlbC5jb20+Ci0tLQpDYzogSmFuIEJldWxpY2ggPGpi ZXVsaWNoQHN1c2UuY29tPgpDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4 LmNvbT4KLS0tCiB4ZW4vYXJjaC94ODYvYWNwaS9ib290LmMgIHwgICA0ICsrCiB4ZW4vY29tbW9u L01ha2VmaWxlICAgICAgIHwgICAxICsKIHhlbi9jb21tb24vcG1lbS5jICAgICAgICAgfCAxMDYg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4vZHJpdmVycy9h Y3BpL01ha2VmaWxlIHwgICAyICsKIHhlbi9kcml2ZXJzL2FjcGkvbmZpdC5jICAgfCAxMTYgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2luY2x1ZGUv YWNwaS9hY3RibC5oICB8ICAgMSArCiB4ZW4vaW5jbHVkZS9hY3BpL2FjdGJsMS5oIHwgIDQyICsr KysrKysrKysrKysrKysrCiB4ZW4vaW5jbHVkZS94ZW4vYWNwaS5oICAgIHwgICA0ICsrCiB4ZW4v aW5jbHVkZS94ZW4vcG1lbS5oICAgIHwgIDI4ICsrKysrKysrKysrCiA5IGZpbGVzIGNoYW5nZWQs IDMwNCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2NvbW1vbi9wbWVtLmMK IGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vZHJpdmVycy9hY3BpL25maXQuYwogY3JlYXRlIG1vZGUg MTAwNjQ0IHhlbi9pbmNsdWRlL3hlbi9wbWVtLmgKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYv YWNwaS9ib290LmMgYi94ZW4vYXJjaC94ODYvYWNwaS9ib290LmMKaW5kZXggMzNjOTEzMzgxMi4u ODNkNzM4NjhkNiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2FjcGkvYm9vdC5jCisrKyBiL3hl bi9hcmNoL3g4Ni9hY3BpL2Jvb3QuYwpAQCAtNzU0LDUgKzc1NCw5IEBAIGludCBfX2luaXQgYWNw aV9ib290X2luaXQodm9pZCkKIAogCWFjcGlfdGFibGVfcGFyc2UoQUNQSV9TSUdfQkdSVCwgYWNw aV9pbnZhbGlkYXRlX2JncnQpOwogCisjaWZkZWYgQ09ORklHX1BNRU0KKwlhY3BpX25maXRfaW5p dCgpOworI2VuZGlmCisKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vTWFr ZWZpbGUgYi94ZW4vY29tbW9uL01ha2VmaWxlCmluZGV4IDBmZWQzMGJjYzYuLjE2YzI3M2I2ZDQg MTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vTWFrZWZpbGUKKysrIGIveGVuL2NvbW1vbi9NYWtlZmls ZQpAQCAtMjksNiArMjksNyBAQCBvYmoteSArPSBub3RpZmllci5vCiBvYmoteSArPSBwYWdlX2Fs bG9jLm8KIG9iai0kKENPTkZJR19IQVNfUERYKSArPSBwZHgubwogb2JqLSQoQ09ORklHX1BFUkZf Q09VTlRFUlMpICs9IHBlcmZjLm8KK29iai0kKENPTkZJR19QTUVNKSArPSBwbWVtLm8KIG9iai15 ICs9IHByZWVtcHQubwogb2JqLXkgKz0gcmFuZG9tLm8KIG9iai15ICs9IHJhbmdlc2V0Lm8KZGlm ZiAtLWdpdCBhL3hlbi9jb21tb24vcG1lbS5jIGIveGVuL2NvbW1vbi9wbWVtLmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uM2MxNTBjZjFkZAotLS0gL2Rldi9udWxsCisr KyBiL3hlbi9jb21tb24vcG1lbS5jCkBAIC0wLDAgKzEsMTA2IEBACisvKgorICogeGVuL2NvbW1v bi9wbWVtLmMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcsIEludGVsIENvcnBvcmF0aW9uLgor ICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSwgdmVyc2lvbiAyLCBhcyBwdWJs aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlIEdOVQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNpbmNsdWRl IDx4ZW4vZXJybm8uaD4KKyNpbmNsdWRlIDx4ZW4vbGlzdC5oPgorI2luY2x1ZGUgPHhlbi9wbWVt Lmg+CisjaW5jbHVkZSA8eGVuL3NwaW5sb2NrLmg+CisKKy8qCisgKiBBbGwgcG1lbSByZWdpb25z IHByb2JlZCB2aWEgU1BBIHJhbmdlIHN0cnVjdHVyZXMgb2YgQUNQSSBORklUIGFyZQorICogbGlu a2VkIGluIHBtZW1fcmVnaW9ucy4KKyAqLworc3RhdGljIERFRklORV9TUElOTE9DSyhwbWVtX3Jl Z2lvbnNfbG9jayk7CitzdGF0aWMgTElTVF9IRUFEKHBtZW1fcmVnaW9ucyk7CisKK3N0cnVjdCBw bWVtIHsKKyAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxpbms7ICAgICAgLyogbGluayB0byBwbWVtX2xp c3QgKi8KKyAgICB1bnNpZ25lZCBsb25nIHNtZm47ICAgICAgICAgLyogc3RhcnQgTUZOIG9mIHRo ZSB3aG9sZSBwbWVtIHJlZ2lvbiAqLworICAgIHVuc2lnbmVkIGxvbmcgZW1mbjsgICAgICAgICAv KiBlbmQgTUZOIG9mIHRoZSB3aG9sZSBwbWVtIHJlZ2lvbiAqLworfTsKKworc3RhdGljIGJvb2wg Y2hlY2tfb3ZlcmxhcCh1bnNpZ25lZCBsb25nIHNtZm4xLCB1bnNpZ25lZCBsb25nIGVtZm4xLAor ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNtZm4yLCB1bnNpZ25lZCBs b25nIGVtZm4yKQoreworICAgIHJldHVybiBzbWZuMSA8IGVtZm4yICYmIHNtZm4yIDwgZW1mbjE7 Cit9CisKK3N0YXRpYyBzdHJ1Y3QgcG1lbSAqYWxsb2NfcG1lbV9zdHJ1Y3QodW5zaWduZWQgbG9u ZyBzbWZuLCB1bnNpZ25lZCBsb25nIGVtZm4pCit7CisgICAgc3RydWN0IHBtZW0gKnBtZW0gPSB4 emFsbG9jKHN0cnVjdCBwbWVtKTsKKworICAgIGlmICggIXBtZW0gKQorICAgICAgICByZXR1cm4g TlVMTDsKKworICAgIHBtZW0tPnNtZm4gPSBzbWZuOworICAgIHBtZW0tPmVtZm4gPSBlbWZuOwor CisgICAgcmV0dXJuIHBtZW07Cit9CisKK3N0YXRpYyBpbnQgcG1lbV9saXN0X2FkZChzdHJ1Y3Qg bGlzdF9oZWFkICpsaXN0LCBzdHJ1Y3QgcG1lbSAqZW50cnkpCit7CisgICAgc3RydWN0IGxpc3Rf aGVhZCAqY3VyOworICAgIHVuc2lnbmVkIGxvbmcgc21mbiA9IGVudHJ5LT5zbWZuLCBlbWZuID0g ZW50cnktPmVtZm47CisKKyAgICBsaXN0X2Zvcl9lYWNoX3ByZXYoY3VyLCBsaXN0KQorICAgIHsK KyAgICAgICAgc3RydWN0IHBtZW0gKmN1cl9wbWVtID0gbGlzdF9lbnRyeShjdXIsIHN0cnVjdCBw bWVtLCBsaW5rKTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBjdXJfc21mbiA9IGN1cl9wbWVtLT5z bWZuOworICAgICAgICB1bnNpZ25lZCBsb25nIGN1cl9lbWZuID0gY3VyX3BtZW0tPmVtZm47CisK KyAgICAgICAgaWYgKCBjaGVja19vdmVybGFwKHNtZm4sIGVtZm4sIGN1cl9zbWZuLCBjdXJfZW1m bikgKQorICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICAgICAgaWYgKCBjdXJfc21m biA8IHNtZm4gKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgbGlzdF9hZGQoJmVu dHJ5LT5saW5rLCBjdXIpOworCisgICAgcmV0dXJuIDA7Cit9CisKKy8qKgorICogUmVnaXN0ZXIg YSBwbWVtIHJlZ2lvbiB0byBYZW4uIEl0J3MgdXNlZCBieSBYZW4gaHlwZXJ2aXNvciB0byBjb2xs ZWN0CisgKiBhbGwgcG1lbSByZWdpb25zIGNhbiBiZSB1c2VkIGxhdGVyLgorICoKKyAqIFBhcmFt ZXRlcnM6CisgKiAgc21mbiwgZW1mbjogc3RhcnQgYW5kIGVuZCBNRk5zIG9mIHRoZSBwbWVtIHJl Z2lvbgorICoKKyAqIFJldHVybjoKKyAqICBPbiBzdWNjZXNzLCByZXR1cm4gMC4gT3RoZXJ3aXNl LCBhbiBlcnJvciBudW1iZXIgaXMgcmV0dXJuZWQuCisgKi8KK2ludCBwbWVtX3JlZ2lzdGVyKHVu c2lnbmVkIGxvbmcgc21mbiwgdW5zaWduZWQgbG9uZyBlbWZuKQoreworICAgIGludCByYzsKKyAg ICBzdHJ1Y3QgcG1lbSAqcG1lbTsKKworICAgIGlmICggc21mbiA+PSBlbWZuICkKKyAgICAgICAg cmV0dXJuIC1FSU5WQUw7CisKKyAgICBwbWVtID0gYWxsb2NfcG1lbV9zdHJ1Y3Qoc21mbiwgZW1m bik7CisgICAgaWYgKCAhcG1lbSApCisgICAgICAgIHJldHVybiAtRU5PTUVNOworCisgICAgc3Bp bl9sb2NrKCZwbWVtX3JlZ2lvbnNfbG9jayk7CisgICAgcmMgPSBwbWVtX2xpc3RfYWRkKCZwbWVt X3JlZ2lvbnMsIHBtZW0pOworICAgIHNwaW5fdW5sb2NrKCZwbWVtX3JlZ2lvbnNfbG9jayk7CisK KyAgICByZXR1cm4gcmM7Cit9CmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9hY3BpL01ha2VmaWxl IGIveGVuL2RyaXZlcnMvYWNwaS9NYWtlZmlsZQppbmRleCA0NDRiMTFkNTgzLi5jZWY5ZDkwMjIy IDEwMDY0NAotLS0gYS94ZW4vZHJpdmVycy9hY3BpL01ha2VmaWxlCisrKyBiL3hlbi9kcml2ZXJz L2FjcGkvTWFrZWZpbGUKQEAgLTksMyArOSw1IEBAIG9iai0kKENPTkZJR19IQVNfQ1BVRlJFUSkg Kz0gcG1zdGF0Lm8KIAogb2JqLSQoQ09ORklHX1g4NikgKz0gaHdyZWdzLm8KIG9iai0kKENPTkZJ R19YODYpICs9IHJlYm9vdC5vCisKK29iai0kKENPTkZJR19QTUVNKSArPSBuZml0Lm8KZGlmZiAt LWdpdCBhL3hlbi9kcml2ZXJzL2FjcGkvbmZpdC5jIGIveGVuL2RyaXZlcnMvYWNwaS9uZml0LmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uY2VhYzEyMWRkMgotLS0gL2Rl di9udWxsCisrKyBiL3hlbi9kcml2ZXJzL2FjcGkvbmZpdC5jCkBAIC0wLDAgKzEsMTE2IEBACisv KgorICogeGVuL2RyaXZlcnMvYWNwaS9uZml0LmMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcs IEludGVsIENvcnBvcmF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg dGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z ZSwgdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbTsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LgorICovCisKKyNpbmNsdWRlIDx4ZW4vYWNwaS5oPgorI2luY2x1ZGUgPHhlbi9lcnJuby5o PgorI2luY2x1ZGUgPHhlbi9pbml0Lmg+CisjaW5jbHVkZSA8eGVuL21tLmg+CisjaW5jbHVkZSA8 eGVuL3Bmbi5oPgorI2luY2x1ZGUgPHhlbi9wbWVtLmg+CisKK3N0YXRpYyBzdHJ1Y3QgYWNwaV90 YWJsZV9uZml0ICpuZml0IF9fcmVhZF9tb3N0bHkgPSBOVUxMOworCisvKiBBQ1BJIDYuMTogR1VJ RCBvZiBhIGJ5dGUgYWRkcmVzc2FibGUgcGVyc2lzdGVudCBtZW1vcnkgcmVnaW9uICovCitzdGF0 aWMgY29uc3QgdWludDhfdCBuZml0X3NwYV9wbWVtX3V1aWRbXSA9Cit7CisgICAgMHg3OSwgMHhk MywgMHhmMCwgMHg2NiwgMHhmMywgMHhiNCwgMHg3NCwgMHg0MCwKKyAgICAweGFjLCAweDQzLCAw eDBkLCAweDMzLCAweDE4LCAweGI3LCAweDhjLCAweGRiLAorfTsKKworLyoqCisgKiBFbnVtZXJh dGUgZWFjaCBzdWItdGFibGUgb2YgTkZJVC4KKyAqCisgKiBGb3IgYSBzdWItdGFibGUgb2YgdHlw ZSBAdHlwZSwgQHBhcnNlX2NiKCkgKGlmIG5vdCBOVUxMKSBpcyBjYWxsZWQKKyAqIHRvIHBhcnNl IHRoZSBzdWItdGFibGUuIEBwYXJzZV9jYigpIHJldHVybnMgMCBvbiBzdWNjZXNzLCBhbmQKKyAq IHJldHVybnMgbm9uLXplcm8gZXJyb3IgY29kZSBvbiBlcnJvcnMuCisgKgorICogUGFyYW1ldGVy czoKKyAqICBuZml0OiAgICAgIE5GSVQKKyAqICB0eXBlOiAgICAgIHRoZSB0eXBlIG9mIHN1Yi10 YWJsZSB0aGF0IHdpbGwgYmUgcGFyc2VkCisgKiAgcGFyc2VfY2I6ICB0aGUgZnVuY3Rpb24gdXNl ZCB0byBwYXJzZSBlYWNoIHN1Yi10YWJsZQorICogIGFyZzogICAgICAgdGhlIGFyZ3VtZW50IHBh c3NlZCB0byBAcGFyc2VfY2IoKQorICoKKyAqIFJldHVybjoKKyAqICAwIG9uIHN1Y2Nlc3MsIG5v bi16ZXJvIG9uIGZhaWx1cmUKKyAqLworc3RhdGljIGludCBhY3BpX25maXRfZm9yZWFjaF9zdWJ0 YWJsZSgKKyAgICBzdHJ1Y3QgYWNwaV90YWJsZV9uZml0ICpuZml0LCBlbnVtIGFjcGlfbmZpdF90 eXBlIHR5cGUsCisgICAgaW50ICgqcGFyc2VfY2IpKGNvbnN0IHN0cnVjdCBhY3BpX25maXRfaGVh ZGVyICosIHZvaWQgKmFyZyksIHZvaWQgKmFyZykKK3sKKyAgICBzdHJ1Y3QgYWNwaV90YWJsZV9o ZWFkZXIgKnRhYmxlID0gKHN0cnVjdCBhY3BpX3RhYmxlX2hlYWRlciAqKW5maXQ7CisgICAgc3Ry dWN0IGFjcGlfbmZpdF9oZWFkZXIgKmhkcjsKKyAgICB1aW50MzJfdCBoZHJfb2Zmc2V0ID0gc2l6 ZW9mKCpuZml0KTsKKyAgICBpbnQgcmV0ID0gMDsKKworICAgIHdoaWxlICggaGRyX29mZnNldCA8 IHRhYmxlLT5sZW5ndGggKQorICAgIHsKKyAgICAgICAgaGRyID0gKHZvaWQgKiluZml0ICsgaGRy X29mZnNldDsKKyAgICAgICAgaGRyX29mZnNldCArPSBoZHItPmxlbmd0aDsKKyAgICAgICAgaWYg KCBoZHItPnR5cGUgPT0gdHlwZSAmJiBwYXJzZV9jYiApCisgICAgICAgIHsKKyAgICAgICAgICAg IHJldCA9IHBhcnNlX2NiKGhkciwgYXJnKTsKKyAgICAgICAgICAgIGlmICggcmV0ICkKKyAgICAg ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiByZXQ7Cit9 CisKK3N0YXRpYyBpbnQgX19pbml0IGFjcGlfbmZpdF9zcGFfcHJvYmVfcG1lbShjb25zdCBzdHJ1 Y3QgYWNwaV9uZml0X2hlYWRlciAqaGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHZvaWQgKm9wYXF1ZSkKK3sKKyAgICBzdHJ1Y3QgYWNwaV9uZml0X3N5c3Rl bV9hZGRyZXNzICpzcGEgPQorICAgICAgICAoc3RydWN0IGFjcGlfbmZpdF9zeXN0ZW1fYWRkcmVz cyAqKWhkcjsKKyAgICB1bnNpZ25lZCBsb25nIHNtZm4gPSBwYWRkcl90b19wZm4oc3BhLT5hZGRy ZXNzKTsKKyAgICB1bnNpZ25lZCBsb25nIGVtZm4gPSBwYWRkcl90b19wZm4oc3BhLT5hZGRyZXNz ICsgc3BhLT5sZW5ndGgpOworICAgIGludCByYzsKKworICAgIGlmICggbWVtY21wKHNwYS0+cmFu Z2VfZ3VpZCwgbmZpdF9zcGFfcG1lbV91dWlkLCAxNikgKQorICAgICAgICByZXR1cm4gMDsKKwor ICAgIHJjID0gcG1lbV9yZWdpc3RlcihzbWZuLCBlbWZuKTsKKyAgICBpZiAoIHJjICkKKyAgICAg ICAgcHJpbnRrKFhFTkxPR19FUlIKKyAgICAgICAgICAgICAgICJORklUOiBmYWlsZWQgdG8gYWRk IHBtZW0gbWZuczogMHglbHggLSAweCVseCwgZXJyICVkXG4iLAorICAgICAgICAgICAgICAgc21m biwgZW1mbiwgcmMpOworICAgIGVsc2UKKyAgICAgICAgcHJpbnRrKFhFTkxPR19JTkZPICJORklU OiBwbWVtIG1mbiAweCVseCAtIDB4JWx4XG4iLCBzbWZuLCBlbWZuKTsKKworICAgIC8qIGlnbm9y ZSB0aGUgZXJyb3IgYW5kIGNvbnRpbnVlIHRvIGFkZCB0aGUgbmV4dCBwbWVtIHJhbmdlICovCisg ICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgX19pbml0IGFjcGlfbmZpdF9pbml0KHZvaWQpCit7Cisg ICAgYWNwaV9zdGF0dXMgc3RhdHVzOworICAgIGFjcGlfcGh5c2ljYWxfYWRkcmVzcyBuZml0X2Fk ZHI7CisgICAgYWNwaV9uYXRpdmVfdWludCBuZml0X2xlbjsKKworICAgIHN0YXR1cyA9IGFjcGlf Z2V0X3RhYmxlX3BoeXMoQUNQSV9TSUdfTkZJVCwgMCwgJm5maXRfYWRkciwgJm5maXRfbGVuKTsK KyAgICBpZiAoIEFDUElfRkFJTFVSRShzdGF0dXMpICkKKyAgICAgICAgIHJldHVybjsKKworICAg IG1hcF9wYWdlc190b194ZW4oKHVuc2lnbmVkIGxvbmcpX192YShuZml0X2FkZHIpLCBQRk5fRE9X TihuZml0X2FkZHIpLAorICAgICAgICAgICAgICAgICAgICAgUEZOX1VQKG5maXRfYWRkciArIG5m aXRfbGVuKSAtIFBGTl9ET1dOKG5maXRfYWRkciksCisgICAgICAgICAgICAgICAgICAgICBQQUdF X0hZUEVSVklTT1IpOworICAgIG5maXQgPSAoc3RydWN0IGFjcGlfdGFibGVfbmZpdCAqKV9fdmEo bmZpdF9hZGRyKTsKKworICAgIGFjcGlfbmZpdF9mb3JlYWNoX3N1YnRhYmxlKG5maXQsIEFDUElf TkZJVF9UWVBFX1NZU1RFTV9BRERSRVNTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGFjcGlfbmZpdF9zcGFfcHJvYmVfcG1lbSwgTlVMTCk7Cit9CmRpZmYgLS1naXQgYS94ZW4vaW5j bHVkZS9hY3BpL2FjdGJsLmggYi94ZW4vaW5jbHVkZS9hY3BpL2FjdGJsLmgKaW5kZXggMzA3OTE3 Njk5Mi4uNmUxMTNiMDg3MyAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYWNwaS9hY3RibC5oCisr KyBiL3hlbi9pbmNsdWRlL2FjcGkvYWN0YmwuaApAQCAtNzEsNiArNzEsNyBAQAogI2RlZmluZSBB Q1BJX1NJR19YU0RUICAgICAgICAgICAiWFNEVCIJLyogRXh0ZW5kZWQgIFN5c3RlbSBEZXNjcmlw dGlvbiBUYWJsZSAqLwogI2RlZmluZSBBQ1BJX1NJR19TU0RUICAgICAgICAgICAiU1NEVCIJLyog U2Vjb25kYXJ5IFN5c3RlbSBEZXNjcmlwdGlvbiBUYWJsZSAqLwogI2RlZmluZSBBQ1BJX1JTRFBf TkFNRSAgICAgICAgICAiUlNEUCIJLyogU2hvcnQgbmFtZSBmb3IgUlNEUCwgbm90IHNpZ25hdHVy ZSAqLworI2RlZmluZSBBQ1BJX1NJR19ORklUICAgICAgICAgICAiTkZJVCIJLyogTlZESU1NIEZp cm13YXJlIEludGVyZmFjZSBUYWJsZSAqLwogCiAvKgogICogQWxsIHRhYmxlcyBhbmQgc3RydWN0 dXJlcyBtdXN0IGJlIGJ5dGUtcGFja2VkIHRvIG1hdGNoIHRoZSBBQ1BJCmRpZmYgLS1naXQgYS94 ZW4vaW5jbHVkZS9hY3BpL2FjdGJsMS5oIGIveGVuL2luY2x1ZGUvYWNwaS9hY3RibDEuaAppbmRl eCBlMTk5MTM2MmRjLi5hNTlhYzExMzI1IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hY3BpL2Fj dGJsMS5oCisrKyBiL3hlbi9pbmNsdWRlL2FjcGkvYWN0YmwxLmgKQEAgLTkwNSw2ICs5MDUsNDgg QEAgc3RydWN0IGFjcGlfbXNjdF9wcm94aW1pdHkgewogCiAvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgogICoKKyAqIE5GSVQgLSBOVkRJTU0gSW50ZXJmYWNlIFRhYmxlIChBQ1BJIDYuMCspCisgKiAg ICAgICAgVmVyc2lvbiAxCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RydWN0IGFj cGlfdGFibGVfbmZpdCB7CisJc3RydWN0IGFjcGlfdGFibGVfaGVhZGVyIGhlYWRlcjsJLyogQ29t bW9uIEFDUEkgdGFibGUgaGVhZGVyICovCisJdTMyIHJlc2VydmVkOwkJCQkJCS8qIFJlc2VydmVk LCBtdXN0IGJlIHplcm8gKi8KK307CisKKy8qIFN1YnRhYmxlIGhlYWRlciBmb3IgTkZJVCAqLwor CitzdHJ1Y3QgYWNwaV9uZml0X2hlYWRlciB7CisJdTE2IHR5cGU7CisJdTE2IGxlbmd0aDsKK307 CisKKy8qIFZhbHVlcyBmb3Igc3VidGFibGUgdHlwZSBpbiBzdHJ1Y3QgYWNwaV9uZml0X2hlYWRl ciAqLworCitlbnVtIGFjcGlfbmZpdF90eXBlIHsKKwlBQ1BJX05GSVRfVFlQRV9TWVNURU1fQURE UkVTUyA9IDAsCit9OworCisvKgorICogTkZJVCBTdWJ0YWJsZXMKKyAqLworCisvKiB0eXBlIDA6 IFN5c3RlbSBQaHlzaWNhbCBBZGRyZXNzIFJhbmdlIFN0cnVjdHVyZSAqLworc3RydWN0IGFjcGlf bmZpdF9zeXN0ZW1fYWRkcmVzcyB7CisJc3RydWN0IGFjcGlfbmZpdF9oZWFkZXIgaGVhZGVyOwor CXUxNiByYW5nZV9pbmRleDsKKwl1MTYgZmxhZ3M7CisJdTMyIHJlc2VydmVkOwkJLyogUmVzZXZl ZCwgbXVzdCBiZSB6ZXJvICovCisJdTMyIHByb3hpbWl0eV9kb21haW47CisJdTggcmFuZ2VfZ3Vp ZFsxNl07CisJdTY0IGFkZHJlc3M7CisJdTY0IGxlbmd0aDsKKwl1NjQgbWVtb3J5X21hcHBpbmc7 Cit9OworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKICAqIFNCU1QgLSBTbWFydCBCYXR0 ZXJ5IFNwZWNpZmljYXRpb24gVGFibGUKICAqICAgICAgICBWZXJzaW9uIDEKICAqCmRpZmYgLS1n aXQgYS94ZW4vaW5jbHVkZS94ZW4vYWNwaS5oIGIveGVuL2luY2x1ZGUveGVuL2FjcGkuaAppbmRl eCAzMGVjMGVlYzVmLi44ZWRiOWEyNzVlIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4vYWNw aS5oCisrKyBiL3hlbi9pbmNsdWRlL3hlbi9hY3BpLmgKQEAgLTE4MCw0ICsxODAsOCBAQCB2b2lk IGFjcGlfcmVib290KHZvaWQpOwogdm9pZCBhY3BpX2RtYXJfemFwKHZvaWQpOwogdm9pZCBhY3Bp X2RtYXJfcmVpbnN0YXRlKHZvaWQpOwogCisjaWZkZWYgQ09ORklHX1BNRU0KK3ZvaWQgYWNwaV9u Zml0X2luaXQodm9pZCk7CisjZW5kaWYgLyogQ09ORklHX1BNRU0gKi8KKwogI2VuZGlmIC8qX0xJ TlVYX0FDUElfSCovCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vcG1lbS5oIGIveGVuL2lu Y2x1ZGUveGVuL3BtZW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4x MTQ0ZTg2Zjk4Ci0tLSAvZGV2L251bGwKKysrIGIveGVuL2luY2x1ZGUveGVuL3BtZW0uaApAQCAt MCwwICsxLDI4IEBACisvKgorICogeGVuL2luY2x1ZGUveGVuL3BtZW0uaAorICoKKyAqIENvcHly aWdodCAoQykgMjAxNywgSW50ZWwgQ29ycG9yYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5 IGl0IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljCisgKiBMaWNlbnNlLCB2ZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg KiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgKiBM aWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2lmbmRlZiBfX1hFTl9QTUVNX0hfXworI2RlZmlu ZSBfX1hFTl9QTUVNX0hfXworI2lmZGVmIENPTkZJR19QTUVNCisKKyNpbmNsdWRlIDx4ZW4vdHlw ZXMuaD4KKworaW50IHBtZW1fcmVnaXN0ZXIodW5zaWduZWQgbG9uZyBzbWZuLCB1bnNpZ25lZCBs b25nIGVtZm4pOworCisjZW5kaWYgLyogQ09ORklHX1BNRU0gKi8KKyNlbmRpZiAvKiBfX1hFTl9Q TUVNX0hfXyAqLwotLSAKMi4xMi4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVu Lm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==