From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joao Martins Subject: [PATCH RFC 31/39] xen-shim: introduce shim domain driver Date: Wed, 20 Feb 2019 20:16:01 +0000 Message-ID: <20190220201609.28290-32-joao.m.martins__3209.31687472097$1550693979$gmane$org@oracle.com> References: <20190220201609.28290-1-joao.m.martins@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gwYKO-00065Y-Hn for xen-devel@lists.xenproject.org; Wed, 20 Feb 2019 20:18:48 +0000 In-Reply-To: <20190220201609.28290-1-joao.m.martins@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, xen-devel@lists.xenproject.org Cc: Juergen Gross , Joao Martins , Stefano Stabellini , =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= , x86@kernel.org, Ankur Arora , Ingo Molnar , Borislav Petkov , "H. Peter Anvin" , Paolo Bonzini , Boris Ostrovsky , Thomas Gleixner List-Id: xen-devel@lists.xenproject.org RnJvbTogQW5rdXIgQXJvcmEgPGFua3VyLmEuYXJvcmFAb3JhY2xlLmNvbT4KCnhlbi1zaGltLmtv IHNldHMgdXAgYW5kIHRlYXJzIGRvd24gc3RhdGUgbmVlZGVkIHRvIHN1cHBvcnQgWGVuCmJhY2tl bmRzLiBUaGUgdW5kZXJseWluZyBwcmltaXRpdmVzIHRoYXQgYXJlIGV4cG9zZWQgYXJlIGludGVy ZG9tYWluCmV2ZW50LWNoYW5uZWxzIGFuZCBncmFudC10YWJsZSBtYXAvdW5tYXAvY29weS4KCldl IHNldHVwIHRoZSBmb2xsb3dpbmc6CgogICogSW5pdGlhbGl6ZSBzaGFyZWRfaW5mbyBhbmQgdmNw dV9pbmZvIHBhZ2VzLCBlc3NlbnRpYWxseSBzZXR0aW5nCiAgICB1cCBldmVudC1jaGFubmVsIHN0 YXRlLgogICogU2V0IHVwIGZlYXR1cmVzICh0aGlzIGFsbG93cyB4ZW5fZmVhdHVyZSgpIHRvIHdv cmspCiAgKiBJbml0aWFsaXplIGV2ZW50LWNoYW5uZWwgc3Vic3lzdGVtIChzZWxlY3QgZXZlbnQg b3BzIGFuZCByZWxhdGVkCiAgICBzZXR1cC4pCiAgKiBJbml0aWFsaXplIHhlbmJ1cyBhbmQgdGVh ciBpdCBkb3duIG9uIG1vZHVsZSBleGl0LgoKVGhpcyBmdW5jdGlvbmFsaXR5IHdvdWxkIGJlIHVz ZWQgYnkgdGhlIGJhY2tlbmQgZHJpdmVycyAoZS5nLiBuZXRiYWNrLApzY3NpYmFjaywgYmxrYmFj ayBldGMpIGluIG9yZGVyIHRvIGRyaXZlIGd1ZXN0IEkvTy4KCkNvLWRldmVsb3BlZC1ieTogSm9h byBNYXJ0aW5zIDxqb2FvLm0ubWFydGluc0BvcmFjbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBBbmt1 ciBBcm9yYSA8YW5rdXIuYS5hcm9yYUBvcmFjbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBKb2FvIE1h cnRpbnMgPGpvYW8ubS5tYXJ0aW5zQG9yYWNsZS5jb20+Ci0tLQogYXJjaC94ODYvaW5jbHVkZS9h c20va3ZtX2hvc3QuaCAgICAgICAgICB8ICAgMiArCiBhcmNoL3g4Ni9rdm0vS2NvbmZpZyAgICAg ICAgICAgICAgICAgICAgIHwgIDEwICsrKwogYXJjaC94ODYva3ZtL01ha2VmaWxlICAgICAgICAg ICAgICAgICAgICB8ICAgMSArCiBhcmNoL3g4Ni9rdm0veGVuLXNoaW0uYyAgICAgICAgICAgICAg ICAgIHwgMTA3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGFyY2gveDg2L3hlbi9l bmxpZ2h0ZW4uYyAgICAgICAgICAgICAgICAgfCAgNDUgKysrKysrKysrKysrKwogZHJpdmVycy94 ZW4vZXZlbnRzL2V2ZW50c18ybC5jICAgICAgICAgICB8ICAgMiArLQogZHJpdmVycy94ZW4vZXZl bnRzL2V2ZW50c19iYXNlLmMgICAgICAgICB8ICAgNiArLQogZHJpdmVycy94ZW4vZmVhdHVyZXMu YyAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL3hlbi94ZW5idXMveGVuYnVzX2Rl dl9mcm9udGVuZC5jIHwgICA0ICstCiBpbmNsdWRlL3hlbi94ZW4uaCAgICAgICAgICAgICAgICAg ICAgICAgIHwgICA1ICsrCiBpbmNsdWRlL3hlbi94ZW5idXMuaCAgICAgICAgICAgICAgICAgICAg IHwgICAzICsKIDExIGZpbGVzIGNoYW5nZWQsIDE4MiBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9u cygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gveDg2L2t2bS94ZW4tc2hpbS5jCgpkaWZmIC0t Z2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaCBiL2FyY2gveDg2L2luY2x1ZGUv YXNtL2t2bV9ob3N0LmgKaW5kZXggNTU2MDllOTE5ZTE0Li42YmRhZTg2NDlkNTYgMTAwNjQ0Ci0t LSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKKysrIGIvYXJjaC94ODYvaW5jbHVk ZS9hc20va3ZtX2hvc3QuaApAQCAtODk2LDYgKzg5Niw4IEBAIHN0cnVjdCBrdm1fZ3JhbnRfdGFi bGUgewogLyogWGVuIGVtdWxhdGlvbiBjb250ZXh0ICovCiBzdHJ1Y3Qga3ZtX3hlbiB7CiAJdTY0 IHhlbl9oeXBlcmNhbGw7CisKKyNkZWZpbmUgWEVOX1NISU1fRE9NSUQJMAogCWRvbWlkX3QgZG9t aWQ7CiAKIAlnZm5fdCBzaGluZm9fYWRkcjsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9LY29u ZmlnIGIvYXJjaC94ODYva3ZtL0tjb25maWcKaW5kZXggNzJmYTk1NWY0YTE1Li40NzM0N2RmMjgy ZGMgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9LY29uZmlnCisrKyBiL2FyY2gveDg2L2t2bS9L Y29uZmlnCkBAIC05Niw2ICs5NiwxNiBAQCBjb25maWcgS1ZNX01NVV9BVURJVAogCSBUaGlzIG9w dGlvbiBhZGRzIGEgUi9XIGtWTSBtb2R1bGUgcGFyYW1ldGVyICdtbXVfYXVkaXQnLCB3aGljaCBh bGxvd3MKIAkgYXVkaXRpbmcgb2YgS1ZNIE1NVSBldmVudHMgYXQgcnVudGltZS4KIAorY29uZmln IFhFTl9TSElNCisgICAgICAgdHJpc3RhdGUgIlhlbiBoeXBlcmNhbGwgZW11bGF0aW9uIHNoaW0i CisgICAgICAgZGVwZW5kcyBvbiBLVk0KKyAgICAgICBkZXBlbmRzIG9uIFhFTgorICAgICAgIGRl ZmF1bHQgbQorICAgICAgIGhlbHAKKwlTaGltIHRvIHN1cHBvcnQgWGVuIGh5cGVyY2FsbHMgb24g bm9uLVhlbiBob3N0cy4gSXQgaW50ZXJjZXB0cyBncmFudAorCXRhYmxlIGFuZCBldmVudCBjaGFu bmVscyBoeXBlcmNhbGxzIHNhbWUgd2F5IGFzIFhlbiBoeXBlcnZpc29yLiBUaGlzIGlzCisJdXNl ZnVsIGZvciBoYXZpbmcgWGVuIGJhY2tlbmQgZHJpdmVycyB3b3JrIG9uIEtWTS4KKwogIyBPSywg aXQncyBhIGxpdHRsZSBjb3VudGVyLWludHVpdGl2ZSB0byBkbyB0aGlzLCBidXQgaXQgcHV0cyBp dCBuZWF0bHkgdW5kZXIKICMgdGhlIHZpcnR1YWxpemF0aW9uIG1lbnUuCiBzb3VyY2UgImRyaXZl cnMvdmhvc3QvS2NvbmZpZyIKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9NYWtlZmlsZSBiL2Fy Y2gveDg2L2t2bS9NYWtlZmlsZQppbmRleCBjMWVhYWJiZDBhNTQuLmE5NmE5NmEwMDJhNyAxMDA2 NDQKLS0tIGEvYXJjaC94ODYva3ZtL01ha2VmaWxlCisrKyBiL2FyY2gveDg2L2t2bS9NYWtlZmls ZQpAQCAtMTgsMyArMTgsNCBAQCBrdm0tYW1kLXkJCSs9IHN2bS5vIHBtdV9hbWQubwogb2JqLSQo Q09ORklHX0tWTSkJKz0ga3ZtLm8KIG9iai0kKENPTkZJR19LVk1fSU5URUwpCSs9IGt2bS1pbnRl bC5vCiBvYmotJChDT05GSUdfS1ZNX0FNRCkJKz0ga3ZtLWFtZC5vCitvYmotJChDT05GSUdfWEVO X1NISU0pICArPSB4ZW4tc2hpbS5vCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veGVuLXNoaW0u YyBiL2FyY2gveDg2L2t2bS94ZW4tc2hpbS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwMC4uNjFmZGNlYjYzZWMyCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC94ODYva3Zt L3hlbi1zaGltLmMKQEAgLTAsMCArMSwxMDcgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wCisvKgorICogQ29weXJpZ2h0IChjKSAyMDE5IE9yYWNsZSBhbmQvb3IgaXRzIGFm ZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogWGVuIGh5cGVyY2FsbCBlbXVs YXRpb24gc2hpbQorICovCisKKyNkZWZpbmUgcHJfZm10KGZtdCkgIktWTToiIEtCVUlMRF9NT0RO QU1FICI6ICIgZm10CisKKyNpbmNsdWRlIDxhc20va3ZtX2hvc3QuaD4KKworI2luY2x1ZGUgPHhl bi94ZW4uaD4KKyNpbmNsdWRlIDx4ZW4veGVuLW9wcy5oPgorI2luY2x1ZGUgPHhlbi9ldmVudHMu aD4KKyNpbmNsdWRlIDx4ZW4veGVuYnVzLmg+CisKKyNkZWZpbmUgQklUU19QRVJfRVZUQ0hOX1dP UkQgKHNpemVvZih4ZW5fdWxvbmdfdCkqOCkKKworc3RhdGljIHN0cnVjdCBrdm1feGVuIHNoaW0g PSB7IC5kb21pZCA9IFhFTl9TSElNX0RPTUlEIH07CisKK3N0YXRpYyB2b2lkIHNoaW1fZXZ0Y2hu X3NldHVwKHN0cnVjdCBzaGFyZWRfaW5mbyAqcykKK3sKKwlpbnQgY3B1OworCisJLyogUG9pbnQg WGVuJ3Mgc2hhcmVkX2luZm8gdG8gdGhlIGRvbWFpbidzIHNpbmZvIHBhZ2UgKi8KKwlIWVBFUlZJ U09SX3NoYXJlZF9pbmZvID0gczsKKworCS8qIEV2dGNobnMgd2lsbCBiZSBtYXJrZWQgcGVuZGlu ZyBvbiBhbGxvY2F0aW9uICovCisJbWVtc2V0KHMtPmV2dGNobl9wZW5kaW5nLCAwLCBzaXplb2Yo cy0+ZXZ0Y2huX3BlbmRpbmcpKTsKKwkvKiAuLi4gYnV0IHdlIGRvIG1hc2sgYWxsIG9mIC0tIGRv bTAgZXhwZWN0IGl0LiAqLworCW1lbXNldChzLT5ldnRjaG5fbWFzaywgMSwgc2l6ZW9mKHMtPmV2 dGNobl9tYXNrKSk7CisKKwlmb3JfZWFjaF9wb3NzaWJsZV9jcHUoY3B1KSB7CisJCXN0cnVjdCB2 Y3B1X2luZm8gKnZjcHVfaW5mbzsKKwkJaW50IGk7CisKKwkJLyogRGlyZWN0IENQVSBtYXBwaW5n IGFzIGZhciBhcyBkb20wIGlzIGNvbmNlcm5lZCAqLworCQlwZXJfY3B1KHhlbl92Y3B1X2lkLCBj cHUpID0gY3B1OworCisJCXZjcHVfaW5mbyA9ICZwZXJfY3B1KHhlbl92Y3B1X2luZm8sIGNwdSk7 CisJCW1lbXNldCh2Y3B1X2luZm8sIDAsIHNpemVvZigqdmNwdV9pbmZvKSk7CisKKwkJdmNwdV9p bmZvLT5ldnRjaG5fdXBjYWxsX21hc2sgPSAwOworCisJCXZjcHVfaW5mby0+ZXZ0Y2huX3VwY2Fs bF9wZW5kaW5nID0gMDsKKwkJZm9yIChpID0gMDsgaSA8IEJJVFNfUEVSX0VWVENITl9XT1JEOyBp KyspCisJCQljbGVhcl9iaXQoaSwgJnZjcHVfaW5mby0+ZXZ0Y2huX3BlbmRpbmdfc2VsKTsKKwor CQlwZXJfY3B1KHhlbl92Y3B1LCBjcHUpID0gdmNwdV9pbmZvOworCX0KK30KKworc3RhdGljIGlu dCBfX2luaXQgc2hpbV9yZWdpc3Rlcih2b2lkKQoreworCXN0cnVjdCBzaGFyZWRfaW5mbyAqc2hp bmZvOworCisJc2hpbmZvID0gKHN0cnVjdCBzaGFyZWRfaW5mbyAqKWdldF96ZXJvZWRfcGFnZShH RlBfS0VSTkVMKTsKKwlpZiAoIXNoaW5mbykgeworCQlwcl9lcnIoIkZhaWxlZCB0byBhbGxvY2F0 ZSBzaGFyZWRfaW5mbyBwYWdlXG4iKTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCXNoaW0uc2hp bmZvID0gc2hpbmZvOworCisJaWRyX2luaXQoJnNoaW0ucG9ydF90b19ldnQpOworCW11dGV4X2lu aXQoJnNoaW0ueGVuX2xvY2spOworCisJa3ZtX3hlbl9yZWdpc3Rlcl9sY2FsbCgmc2hpbSk7CisK KwkvKiBXZSBjYW4gaGFuZGxlIGh5cGVyY2FsbHMgYWZ0ZXIgdGhpcyBwb2ludCAqLworCXhlbl9z aGltX2RvbWFpbiA9IDE7CisKKwlzaGltX2V2dGNobl9zZXR1cChzaGltLnNoaW5mbyk7CisKKwl4 ZW5fc2V0dXBfZmVhdHVyZXMoKTsKKworCXhlbl9pbml0X0lSUSgpOworCisJeGVuYnVzX2luaXQo KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IF9faW5pdCBzaGltX2luaXQodm9pZCkK K3sKKwlpZiAoeGVuX2RvbWFpbigpKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCXJldHVybiBzaGlt X3JlZ2lzdGVyKCk7Cit9CisKK3N0YXRpYyB2b2lkIF9fZXhpdCBzaGltX2V4aXQodm9pZCkKK3sK Kwl4ZW5idXNfZGVpbml0KCk7CisJeGVuX3NoaW1fZG9tYWluID0gMDsKKworCWt2bV94ZW5fdW5y ZWdpc3Rlcl9sY2FsbCgpOworCUhZUEVSVklTT1Jfc2hhcmVkX2luZm8gPSBOVUxMOworCWZyZWVf cGFnZSgodW5zaWduZWQgbG9uZykgc2hpbS5zaGluZm8pOworCXNoaW0uc2hpbmZvID0gTlVMTDsK K30KKworbW9kdWxlX2luaXQoc2hpbV9pbml0KTsKK21vZHVsZV9leGl0KHNoaW1fZXhpdCkKKwor TU9EVUxFX0FVVEhPUigiQW5rdXIgQXJvcmEgPGFua3VyLmEuYXJvcmFAb3JhY2xlLmNvbT4sIgor CSAgICAgICJKb2FvIE1hcnRpbnMgPGpvYW8ubS5tYXJ0aW5zQG9yYWNsZS5jb20+Iik7CitNT0RV TEVfTElDRU5TRSgiR1BMIik7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni94ZW4vZW5saWdodGVuLmMg Yi9hcmNoL3g4Ni94ZW4vZW5saWdodGVuLmMKaW5kZXggYjM2YTEwZTZiNWQ3Li44ZDllOTNiNmVi MDkgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L3hlbi9lbmxpZ2h0ZW4uYworKysgYi9hcmNoL3g4Ni94 ZW4vZW5saWdodGVuLmMKQEAgLTU3LDYgKzU3LDkgQEAgRVhQT1JUX1BFUl9DUFVfU1lNQk9MKHhl bl92Y3B1X2luZm8pOwogZW51bSB4ZW5fZG9tYWluX3R5cGUgeGVuX2RvbWFpbl90eXBlID0gWEVO X05BVElWRTsKIEVYUE9SVF9TWU1CT0xfR1BMKHhlbl9kb21haW5fdHlwZSk7CiAKK2ludCB4ZW5f c2hpbV9kb21haW47CitFWFBPUlRfU1lNQk9MX0dQTCh4ZW5fc2hpbV9kb21haW4pOworCiB1bnNp Z25lZCBsb25nICptYWNoaW5lX3RvX3BoeXNfbWFwcGluZyA9ICh2b2lkICopTUFDSDJQSFlTX1ZJ UlRfU1RBUlQ7CiBFWFBPUlRfU1lNQk9MKG1hY2hpbmVfdG9fcGh5c19tYXBwaW5nKTsKIHVuc2ln bmVkIGxvbmcgIG1hY2hpbmVfdG9fcGh5c19ucjsKQEAgLTM0OSwzICszNTIsNDUgQEAgdm9pZCB4 ZW5fYXJjaF91bnJlZ2lzdGVyX2NwdShpbnQgbnVtKQogfQogRVhQT1JUX1NZTUJPTCh4ZW5fYXJj aF91bnJlZ2lzdGVyX2NwdSk7CiAjZW5kaWYKKworc3RhdGljIHN0cnVjdCBtb2R1bGUgKmZpbmRf bW9kdWxlX3NoaW0odm9pZCkKK3sKKwlzdGF0aWMgY29uc3QgY2hhciBuYW1lW10gPSAieGVuX3No aW0iOworCXN0cnVjdCBtb2R1bGUgKm1vZHVsZTsKKworCW11dGV4X2xvY2soJm1vZHVsZV9tdXRl eCk7CisJbW9kdWxlID0gZmluZF9tb2R1bGUobmFtZSk7CisJbXV0ZXhfdW5sb2NrKCZtb2R1bGVf bXV0ZXgpOworCisJcmV0dXJuIG1vZHVsZTsKK30KKworYm9vbCB4ZW5fc2hpbV9kb21haW5fZ2V0 KHZvaWQpCit7CisJc3RydWN0IG1vZHVsZSAqc2hpbTsKKworCWlmICgheGVuX3NoaW1fZG9tYWlu KCkpCisJCXJldHVybiBmYWxzZTsKKworCXNoaW0gPSBmaW5kX21vZHVsZV9zaGltKCk7CisJaWYg KCFzaGltKQorCQlyZXR1cm4gZmFsc2U7CisKKwlyZXR1cm4gdHJ5X21vZHVsZV9nZXQoc2hpbSk7 Cit9CitFWFBPUlRfU1lNQk9MKHhlbl9zaGltX2RvbWFpbl9nZXQpOworCit2b2lkIHhlbl9zaGlt X2RvbWFpbl9wdXQodm9pZCkKK3sKKwlzdHJ1Y3QgbW9kdWxlICpzaGltOworCisJaWYgKCF4ZW5f c2hpbV9kb21haW4oKSkKKwkJcmV0dXJuOworCisJc2hpbSA9IGZpbmRfbW9kdWxlX3NoaW0oKTsK KwlpZiAoIXNoaW0pCisJCXJldHVybjsKKworCW1vZHVsZV9wdXQoc2hpbSk7Cit9CitFWFBPUlRf U1lNQk9MKHhlbl9zaGltX2RvbWFpbl9wdXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vZXZl bnRzL2V2ZW50c18ybC5jIGIvZHJpdmVycy94ZW4vZXZlbnRzL2V2ZW50c18ybC5jCmluZGV4IGI1 YWNmNGIwOTk3MS4uZjA4ZDEzYTAzM2MxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi9ldmVudHMv ZXZlbnRzXzJsLmMKKysrIGIvZHJpdmVycy94ZW4vZXZlbnRzL2V2ZW50c18ybC5jCkBAIC04OSw3 ICs4OSw3IEBAIHN0YXRpYyB2b2lkIGV2dGNobl8ybF91bm1hc2sodW5zaWduZWQgcG9ydCkKIAl1 bnNpZ25lZCBpbnQgY3B1ID0gZ2V0X2NwdSgpOwogCWludCBkb19oeXBlcmNhbGwgPSAwLCBldnRj aG5fcGVuZGluZyA9IDA7CiAKLQlCVUdfT04oIWlycXNfZGlzYWJsZWQoKSk7CisJV0FSTl9PTigh aXJxc19kaXNhYmxlZCgpKTsKIAogCWlmICh1bmxpa2VseSgoY3B1ICE9IGNwdV9mcm9tX2V2dGNo bihwb3J0KSkpKQogCQlkb19oeXBlcmNhbGwgPSAxOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4v ZXZlbnRzL2V2ZW50c19iYXNlLmMgYi9kcml2ZXJzL3hlbi9ldmVudHMvZXZlbnRzX2Jhc2UuYwpp bmRleCAxMTdlNzZiMmY5MzkuLmEyMDg3Mjg3YzNiNiAxMDA2NDQKLS0tIGEvZHJpdmVycy94ZW4v ZXZlbnRzL2V2ZW50c19iYXNlLmMKKysrIGIvZHJpdmVycy94ZW4vZXZlbnRzL2V2ZW50c19iYXNl LmMKQEAgLTE2NjUsNyArMTY2NSw3IEBAIHZvaWQgeGVuX2NhbGxiYWNrX3ZlY3Rvcih2b2lkKSB7 fQogc3RhdGljIGJvb2wgZmlmb19ldmVudHMgPSB0cnVlOwogbW9kdWxlX3BhcmFtKGZpZm9fZXZl bnRzLCBib29sLCAwKTsKIAotdm9pZCBfX2luaXQgeGVuX2luaXRfSVJRKHZvaWQpCit2b2lkIHhl bl9pbml0X0lSUSh2b2lkKQogewogCWludCByZXQgPSAtRUlOVkFMOwogCXVuc2lnbmVkIGludCBl dnRjaG47CkBAIC0xNjgzLDYgKzE2ODMsOSBAQCB2b2lkIF9faW5pdCB4ZW5faW5pdF9JUlEodm9p ZCkKIAlmb3IgKGV2dGNobiA9IDA7IGV2dGNobiA8IHhlbl9ldnRjaG5fbnJfY2hhbm5lbHMoKTsg ZXZ0Y2huKyspCiAJCW1hc2tfZXZ0Y2huKGV2dGNobik7CiAKKwlpZiAoeGVuX3NoaW1fZG9tYWlu KCkpCisJCXJldHVybjsKKwogCXBpcnFfbmVlZHNfZW9pID0gcGlycV9uZWVkc19lb2lfZmxhZzsK IAogI2lmZGVmIENPTkZJR19YODYKQEAgLTE3MTQsMyArMTcxNyw0IEBAIHZvaWQgX19pbml0IHhl bl9pbml0X0lSUSh2b2lkKQogCX0KICNlbmRpZgogfQorRVhQT1JUX1NZTUJPTF9HUEwoeGVuX2lu aXRfSVJRKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL2ZlYXR1cmVzLmMgYi9kcml2ZXJzL3hl bi9mZWF0dXJlcy5jCmluZGV4IGQ3ZDM0ZmRmYzk5My4uMTUxOGMzYjZmMDA0IDEwMDY0NAotLS0g YS9kcml2ZXJzL3hlbi9mZWF0dXJlcy5jCisrKyBiL2RyaXZlcnMveGVuL2ZlYXR1cmVzLmMKQEAg LTMxLDMgKzMxLDQgQEAgdm9pZCB4ZW5fc2V0dXBfZmVhdHVyZXModm9pZCkKIAkJCXhlbl9mZWF0 dXJlc1tpICogMzIgKyBqXSA9ICEhKGZpLnN1Ym1hcCAmIDE8PGopOwogCX0KIH0KK0VYUE9SVF9T WU1CT0xfR1BMKHhlbl9zZXR1cF9mZWF0dXJlcyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi94 ZW5idXMveGVuYnVzX2Rldl9mcm9udGVuZC5jIGIvZHJpdmVycy94ZW4veGVuYnVzL3hlbmJ1c19k ZXZfZnJvbnRlbmQuYwppbmRleCBjM2UyMDEwMjVlZjAuLmE0MDgwZDA0YTAxYyAxMDA2NDQKLS0t IGEvZHJpdmVycy94ZW4veGVuYnVzL3hlbmJ1c19kZXZfZnJvbnRlbmQuYworKysgYi9kcml2ZXJz L3hlbi94ZW5idXMveGVuYnVzX2Rldl9mcm9udGVuZC5jCkBAIC02ODAsNyArNjgwLDcgQEAgc3Rh dGljIHN0cnVjdCBtaXNjZGV2aWNlIHhlbmJ1c19kZXYgPSB7CiAJLmZvcHMgPSAmeGVuX3hlbmJ1 c19mb3BzLAogfTsKIAotc3RhdGljIGludCBfX2luaXQgeGVuYnVzX2luaXQodm9pZCkKK3N0YXRp YyBpbnQgX19pbml0IHhlbmJ1c19mcm9udGVuZF9pbml0KHZvaWQpCiB7CiAJaW50IGVycjsKIApA QCAtNjkyLDQgKzY5Miw0IEBAIHN0YXRpYyBpbnQgX19pbml0IHhlbmJ1c19pbml0KHZvaWQpCiAJ CXByX2VycigiQ291bGQgbm90IHJlZ2lzdGVyIHhlbmJ1cyBmcm9udGVuZCBkZXZpY2VcbiIpOwog CXJldHVybiBlcnI7CiB9Ci1kZXZpY2VfaW5pdGNhbGwoeGVuYnVzX2luaXQpOworZGV2aWNlX2lu aXRjYWxsKHhlbmJ1c19mcm9udGVuZF9pbml0KTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUveGVuL3hl bi5oIGIvaW5jbHVkZS94ZW4veGVuLmgKaW5kZXggMGUyMTU2Nzg2YWQyLi4wNGRmYTk5ZTY3ZWIg MTAwNjQ0Ci0tLSBhL2luY2x1ZGUveGVuL3hlbi5oCisrKyBiL2luY2x1ZGUveGVuL3hlbi5oCkBA IC0xMCw4ICsxMCwxMiBAQCBlbnVtIHhlbl9kb21haW5fdHlwZSB7CiAKICNpZmRlZiBDT05GSUdf WEVOCiBleHRlcm4gZW51bSB4ZW5fZG9tYWluX3R5cGUgeGVuX2RvbWFpbl90eXBlOworZXh0ZXJu IGludCB4ZW5fc2hpbV9kb21haW47CitleHRlcm4gYm9vbCB4ZW5fc2hpbV9kb21haW5fZ2V0KHZv aWQpOworZXh0ZXJuIHZvaWQgeGVuX3NoaW1fZG9tYWluX3B1dCh2b2lkKTsKICNlbHNlCiAjZGVm aW5lIHhlbl9kb21haW5fdHlwZQkJWEVOX05BVElWRQorI2RlZmluZSB4ZW5fc2hpbV9kb21haW4g ICAgICAwCiAjZW5kaWYKIAogI2lmZGVmIENPTkZJR19YRU5fUFZICkBAIC0yNCw2ICsyOCw3IEBA IGV4dGVybiBib29sIHhlbl9wdmg7CiAjZGVmaW5lIHhlbl9wdl9kb21haW4oKQkJKHhlbl9kb21h aW5fdHlwZSA9PSBYRU5fUFZfRE9NQUlOKQogI2RlZmluZSB4ZW5faHZtX2RvbWFpbigpCSh4ZW5f ZG9tYWluX3R5cGUgPT0gWEVOX0hWTV9ET01BSU4pCiAjZGVmaW5lIHhlbl9wdmhfZG9tYWluKCkJ KHhlbl9wdmgpCisjZGVmaW5lIHhlbl9zaGltX2RvbWFpbigpCSgheGVuX2RvbWFpbigpICYmIHhl bl9zaGltX2RvbWFpbikKIAogI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CiAKZGlmZiAtLWdpdCBh L2luY2x1ZGUveGVuL3hlbmJ1cy5oIGIvaW5jbHVkZS94ZW4veGVuYnVzLmgKaW5kZXggODY5Yzgx NmQ1ZjhjLi5kMjc4OWU3ZDIwNTUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUveGVuL3hlbmJ1cy5oCisr KyBiL2luY2x1ZGUveGVuL3hlbmJ1cy5oCkBAIC0yMzMsNCArMjMzLDcgQEAgZXh0ZXJuIGNvbnN0 IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgeGVuX3hlbmJ1c19mb3BzOwogZXh0ZXJuIHN0cnVjdCB4 ZW5zdG9yZV9kb21haW5faW50ZXJmYWNlICp4ZW5fc3RvcmVfaW50ZXJmYWNlOwogZXh0ZXJuIGlu dCB4ZW5fc3RvcmVfZXZ0Y2huOwogCitpbnQgeGVuYnVzX2luaXQodm9pZCk7Cit2b2lkIHhlbmJ1 c19kZWluaXQodm9pZCk7CisKICNlbmRpZiAvKiBfWEVOX1hFTkJVU19IICovCi0tIAoyLjExLjAK CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2 ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xp c3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs