From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christopher Clark Subject: [PATCH 05/25] argo: Add initial argo_init and argo_destroy Date: Fri, 30 Nov 2018 17:32:44 -0800 Message-ID: <1543627984-21394-6-git-send-email-christopher.w.clark@gmail.com> References: <1543627984-21394-1-git-send-email-christopher.w.clark@gmail.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 1gSuA3-0006Z0-Qz for xen-devel@lists.xenproject.org; Sat, 01 Dec 2018 01:33:35 +0000 Received: by mail-io1-xd44.google.com with SMTP id f10so252654iop.10 for ; Fri, 30 Nov 2018 17:33:33 -0800 (PST) In-Reply-To: <1543627984-21394-1-git-send-email-christopher.w.clark@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Stefano Stabellini , Wei Liu , James McKenzie , Ross Philipson , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Jason Andryuk , Ian Jackson , Rich Persaud , Tim Deegan , Daniel Smith , Julien Grall , Paul Durrant , Jan Beulich , Eric Chanudet List-Id: xen-devel@lists.xenproject.org SW5pdGlhbGlzZXMgYmFzaWMgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBwZXJmb3JtcyB0ZWFyZG93biBv ZiBhcmdvIHN0YXRlCmZvciBkb21haW4gc2h1dGRvd24uCgpJbnRyb2R1Y2VzIGhlYWRlcnM6CiAg PHB1YmxpYy9hcmdvLmg+IHdpdGggZGVmaW5pb25zIG9mIGFkZHJlc3NlcyBhbmQgcmluZyBzdHJ1 Y3R1cmUsIGluY2x1ZGluZwogIGluZGV4ZXMgZm9yIGF0b21pYyB1cGRhdGUgZm9yIGNvbW11bmlj YXRpb24gYmV0d2VlbiBkb21haW4gYW5kIGh5cGVydmlzb3IsCiAgYW5kIDx4ZW4vYXJnby5oPiB0 byBzdXBwb3J0IGhvb2tpbmcgaW5pdCBhbmQgZGVzdHJveSBpbnRvIGRvbWFpbiBsaWZlY3ljbGUu CgpJZiBDT05GSUdfQVJHTyBpcyBlbmFibGVkOgoKQWRkcyBwZXItZG9tYWluIGluaXQgb2YgYXJn byBkYXRhIHN0cnVjdHVyZXMgdG8gZG9tYWluX2NyZWF0ZSBieSBjYWxsaW5nCmFyZ29faW5pdCwg YW5kIHNpbWlsYXJseSBhZGRzIHRlYXJkb3duIHZpYSBhcmdvX2Rlc3Ryb3kgaW50byBkb21haW5f ZGVzdHJveQphbmQgdGhlIGVycm9yIGV4aXQgcGF0aCBvZiBkb21haW5fY3JlYXRlLgoKYXJnb19p bml0IGFsbG9jYXRlcyBhbiBldmVudCBjaGFubmVsIGZvciB1c2UgZm9yIHNpZ25hbGxpbmcgdG8g dGhlIGRvbWFpbi4KVGhlIGV2ZW50IGNoYW5uZWwgaXMgb2YgdHlwZSBJUEkgc2luY2UgdGhhdCBi ZWhhdmVzIGluIHRoZSByZXF1aXJlZCB3YXk7CnVuYm91bmQgZXZlbnQgY2hhbm5lbHMgYXJlIHVu c3VpdGFibGUgc2luY2UgdGhleSBzaWxlbnRseSBkcm9wIGV2ZW50cy4KVGhlIG9ubHkgZGlzYWR2 YW50YWdlIG9mIHRoZSBJUEkgdHlwZSBpcyB0aGF0IHRoZSBjaGFubmVsIGNhbm5vdCBiZSByZWJv dW5kCnRvIGFueSBvdGhlciBWQ1BVOyB0aGF0IHNlZW1zIHRvIGJlIHRvbGVyYWJsZSBhbmQgYXZv aWRzIGludHJvZHVjaW5nIGFueQpmdXJ0aGVyIGNoYW5nZXMgdG8gYWRkIGFub3RoZXIgY2hhbm5l bCB0eXBlLgoKSW4gYWNjb3JkYW5jZSB3aXRoIHJlY2VudCB3b3JrIG9uIF9kb21haW5fZGVzdHJv eSwgYXJnb19kZXN0cm95IGlzIGlkZW1wb3RlbnQuCgpBZGRzIHR3byBuZXcgZmllbGRzIHRvIHN0 cnVjdCBkb21haW46CiAgICByd2xvY2tfdCBhcmdvX2xvY2s7CiAgICBzdHJ1Y3QgYXJnb19kb21h aW4gKmFyZ287CgpTaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGhlciBDbGFyayA8Y2hyaXN0b3BoZXIu Y2xhcms2QGJhZXN5c3RlbXMuY29tPgotLS0KIHhlbi9jb21tb24vYXJnby5jICAgICAgICAgfCAy NzcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogeGVuL2Nv bW1vbi9kb21haW4uYyAgICAgICB8ICAxNSArKysKIHhlbi9pbmNsdWRlL3B1YmxpYy9hcmdvLmgg fCAgNTUgKysrKysrKysrCiB4ZW4vaW5jbHVkZS94ZW4vYXJnby5oICAgIHwgIDMwICsrKysrCiB4 ZW4vaW5jbHVkZS94ZW4vc2NoZWQuaCAgIHwgICA3ICsrCiA1IGZpbGVzIGNoYW5nZWQsIDM4MyBp bnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2luY2x1 ZGUvcHVibGljL2FyZ28uaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL3hlbi9hcmdv LmgKCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL2FyZ28uYyBiL3hlbi9jb21tb24vYXJnby5jCmlu ZGV4IDY5MTdmOTguLjE4NzJkMzcgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vYXJnby5jCisrKyBi L3hlbi9jb21tb24vYXJnby5jCkBAIC0xNyw3ICsxNywxMDEgQEAKICAqLwogCiAjaW5jbHVkZSA8 eGVuL2Vycm5vLmg+CisjaW5jbHVkZSA8eGVuL3NjaGVkLmg+CisjaW5jbHVkZSA8eGVuL2RvbWFp bi5oPgorI2luY2x1ZGUgPHhlbi9hcmdvLmg+CisjaW5jbHVkZSA8eGVuL2V2ZW50Lmg+CisjaW5j bHVkZSA8eGVuL2RvbWFpbl9wYWdlLmg+CiAjaW5jbHVkZSA8eGVuL2d1ZXN0X2FjY2Vzcy5oPgor I2luY2x1ZGUgPHhlbi90aW1lLmg+CisKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKGFyZ29fYWRk cl90KTsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKGFyZ29fcmluZ190KTsKKworc3RydWN0IGFy Z29fcGVuZGluZ19lbnQKK3sKKyAgICBzdHJ1Y3QgaGxpc3Rfbm9kZSBub2RlOworICAgIGRvbWlk X3QgaWQ7CisgICAgdWludDMyX3QgbGVuOworfTsKKworc3RydWN0IGFyZ29fcmluZ19pbmZvCit7 CisgICAgLyogbmV4dCBub2RlIGluIHRoZSBoYXNoLCBwcm90ZWN0ZWQgYnkgTDIgKi8KKyAgICBz dHJ1Y3QgaGxpc3Rfbm9kZSBub2RlOworICAgIC8qIHRoaXMgcmluZydzIGlkLCBwcm90ZWN0ZWQg YnkgTDIgKi8KKyAgICBhcmdvX3JpbmdfaWRfdCBpZDsKKyAgICAvKiB1c2VkIHRvIGNvbmZpcm0g c2VuZGVyIGlkLCBwcm90ZWN0ZWQgYnkgTDIgKi8KKyAgICB1aW50NjRfdCBwYXJ0bmVyX2Nvb2tp ZTsKKyAgICAvKiBMMyAqLworICAgIHNwaW5sb2NrX3QgbG9jazsKKyAgICAvKiBjYWNoZWQgbGVu Z3RoIG9mIHRoZSByaW5nIChmcm9tIHJpbmctPmxlbiksIHByb3RlY3RlZCBieSBMMyAqLworICAg IHVpbnQzMl90IGxlbjsKKyAgICAvKiBudW1iZXIgb2YgcGFnZXMgaW4gdGhlIHJpbmcsIHByb3Rl Y3RlZCBieSBMMyAqLworICAgIHVpbnQzMl90IG5wYWdlOworICAgIC8qIG51bWJlciBvZiBwYWdl cyB0cmFuc2xhdGVkIGludG8gbWZucywgcHJvdGVjdGVkIGJ5IEwzICovCisgICAgdWludDMyX3Qg bm1mbnM7CisgICAgLyogY2FjaGVkIHR4IHBvaW50ZXIgbG9jYXRpb24sIHByb3RlY3RlZCBieSBM MyAqLworICAgIHVpbnQzMl90IHR4X3B0cjsKKyAgICAvKiBtYXBwZWQgcmluZyBwYWdlcyBwcm90 ZWN0ZWQgYnkgTDMgKi8KKyAgICB1aW50OF90ICoqbWZuX21hcHBpbmc7CisgICAgLyogbGlzdCBv ZiBtZm5zIG9mIGd1ZXN0IHJpbmcsIHByb3RlY3RlZCBieSBMMyAqLworICAgIG1mbl90ICptZm5z OworICAgIC8qIGxpc3Qgb2Ygc3RydWN0IGFyZ29fcGVuZGluZ19lbnQgZm9yIHRoaXMgcmluZywg cHJvdGVjdGVkIGJ5IEwzICovCisgICAgc3RydWN0IGhsaXN0X2hlYWQgcGVuZGluZzsKK307CisK Ky8qCisgKiBUaGUgdmFsdWUgb2YgdGhlIGFyZ28gZWxlbWVudCBpbiBhIHN0cnVjdCBkb21haW4g aXMKKyAqIHByb3RlY3RlZCBieSB0aGUgZ2xvYmFsIGxvY2sgYXJnb19sb2NrOiBMMQorICovCisj ZGVmaW5lIEFSR09fSFRBQkxFX1NJWkUgMzIKK3N0cnVjdCBhcmdvX2RvbWFpbgoreworICAgIC8q IEwyICovCisgICAgcndsb2NrX3QgbG9jazsKKyAgICAvKiBldmVudCBjaGFubmVsICovCisgICAg ZXZ0Y2huX3BvcnRfdCBldnRjaG5fcG9ydDsKKyAgICAvKiBwcm90ZWN0ZWQgYnkgTDIgKi8KKyAg ICBzdHJ1Y3QgaGxpc3RfaGVhZCByaW5nX2hhc2hbQVJHT19IVEFCTEVfU0laRV07CisgICAgLyog aWQgY29va2llLCB3cml0dGVuIG9ubHkgYXQgaW5pdCwgc28gcmVhZGFibGUgd2l0aCBSKEwxKSAq LworICAgIHVpbnQ2NF90IGRvbWFpbl9jb29raWU7Cit9OworCisvKgorICogbG9ja3MKKyAqLwor CisvKgorICogbG9ja2luZyBpcyBvcmdhbml6ZWQgYXMgZm9sbG93czoKKyAqCisgKiBMMSA6IFRo ZSBnbG9iYWwgbG9jazogYXJnb19sb2NrCisgKiBQcm90ZWN0cyB0aGUgYXJnbyBlbGVtZW50cyBv ZiBhbGwgc3RydWN0IGRvbWFpbiAqZCBpbiB0aGUgc3lzdGVtLgorICogSXQgZG9lcyBub3QgcHJv dGVjdCBhbnkgb2YgdGhlIGVsZW1lbnRzIG9mIGQtPmFyZ28sIG9ubHkgdGhlaXIKKyAqIGFkZHJl c3Nlcy4KKyAqIEJ5IGV4dGVuc2lvbiBzaW5jZSB0aGUgZGVzdHJ1Y3Rpb24gb2YgYSBkb21haW4g d2l0aCBhIG5vbi1OVUxMCisgKiBkLT5hcmdvIHdpbGwgbmVlZCB0byBmcmVlIHRoZSBkLT5hcmdv IHBvaW50ZXIsIGhvbGRpbmcgdGhpcyBsb2NrCisgKiBndWFyYW50ZWVzIHRoYXQgbm8gZG9tYWlu cyBwb2ludGVycyB0aGF0IGFyZ28gaXMgaW50ZXJlc3RlZCBpbgorICogYmVjb21lIGludmFsaWQg d2hpbHN0IHRoaXMgbG9jayBpcyBoZWxkLgorICovCisKK3N0YXRpYyBERUZJTkVfUldMT0NLKGFy Z29fbG9jayk7IC8qIEwxICovCisKKy8qCisgKiBMMiA6IFRoZSBwZXItZG9tYWluIGxvY2s6IGQt PmFyZ28tPmxvY2sKKyAqIEhvbGRpbmcgYSByZWFkIGxvY2sgb24gTDIgcHJvdGVjdHMgdGhlIGhh c2ggdGFibGUgYW5kCisgKiB0aGUgZWxlbWVudHMgaW4gdGhlIGhhc2hfdGFibGUgZC0+YXJnby0+ cmluZ19oYXNoLCBhbmQKKyAqIHRoZSBub2RlIGFuZCBpZCBmaWVsZHMgaW4gc3RydWN0IGFyZ29f cmluZ19pbmZvIGluIHRoZQorICogaGFzaCB0YWJsZS4KKyAqIEhvbGRpbmcgYSB3cml0ZSBsb2Nr IG9uIEwyIHByb3RlY3RzIGFsbCBvZiB0aGUgZWxlbWVudHMgb2YKKyAqIHN0cnVjdCBhcmdvX3Jp bmdfaW5mby4KKyAqIFRvIHRha2UgTDIgeW91IG11c3QgYWxyZWFkeSBoYXZlIFIoTDEpLiBXKEwx KSBpbXBsaWVzIFcoTDIpIGFuZCBMMy4KKyAqCisgKiBMMyA6IFRoZSByaW5naW5mbyBsb2NrOiBh cmdvX3JpbmdfaW5mbyAqcmluZ2luZm87IHJpbmdpbmZvLT5sb2NrCisgKiBQcm90ZWN0cyBsZW4s IHR4X3B0ciwgdGhlIGd1ZXN0IHJpbmcsIHRoZSBndWVzdCByaW5nX2RhdGEgYW5kCisgKiB0aGUg cGVuZGluZyBsaXN0LgorICogVG8gYXF1aXJlIEwzIHlvdSBtdXN0IGFscmVhZHkgaGF2ZSBSKEwy KS4gVyhMMikgaW1wbGllcyBMMy4KKyAqLwogCiAvKgogICogRGVidWdzCkBAIC0zMiwxMCArMTI2 LDE5MSBAQAogI2RlZmluZSBhcmdvX2RwcmludGsoZm9ybWF0LCAuLi4gKSAodm9pZCkwCiAjZW5k aWYKIAorLyoKKyAqIHJpbmcgYnVmZmVyCisgKi8KKworLyogY2FsbGVyIG11c3QgaGF2ZSBMMyBv ciBXKEwyKSAqLworc3RhdGljIHZvaWQKK2FyZ29fcmluZ191bm1hcChzdHJ1Y3QgYXJnb19yaW5n X2luZm8gKnJpbmdfaW5mbykKK3sKKyAgICBpbnQgaTsKKworICAgIGlmICggIXJpbmdfaW5mby0+ bWZuX21hcHBpbmcgKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IHJp bmdfaW5mby0+bm1mbnM7IGkrKyApCisgICAgeworICAgICAgICBpZiAoICFyaW5nX2luZm8tPm1m bl9tYXBwaW5nW2ldICkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoIHJpbmdf aW5mby0+bWZucyApCisgICAgICAgICAgICBhcmdvX2RwcmludGsoWEVOTE9HX0VSUiAiYXJnbzog dW5tYXBwaW5nIHBhZ2UgJSJQUklfbWZuIiBmcm9tICVwXG4iLAorICAgICAgICAgICAgICAgICAg ICAgICAgIG1mbl94KHJpbmdfaW5mby0+bWZuc1tpXSksCisgICAgICAgICAgICAgICAgICAgICAg ICAgcmluZ19pbmZvLT5tZm5fbWFwcGluZ1tpXSk7CisgICAgICAgIHVubWFwX2RvbWFpbl9wYWdl X2dsb2JhbChyaW5nX2luZm8tPm1mbl9tYXBwaW5nW2ldKTsKKyAgICAgICAgcmluZ19pbmZvLT5t Zm5fbWFwcGluZ1tpXSA9IE5VTEw7CisgICAgfQorfQorCisvKgorICogcGVuZGluZworICovCitz dGF0aWMgdm9pZAorYXJnb19wZW5kaW5nX3JlbW92ZV9lbnQoc3RydWN0IGFyZ29fcGVuZGluZ19l bnQgKmVudCkKK3sKKyAgICBobGlzdF9kZWwoJmVudC0+bm9kZSk7CisgICAgeGZyZWUoZW50KTsK K30KKworc3RhdGljIHZvaWQKK2FyZ29fcGVuZGluZ19yZW1vdmVfYWxsKHN0cnVjdCBhcmdvX3Jp bmdfaW5mbyAqcmluZ19pbmZvKQoreworICAgIHN0cnVjdCBobGlzdF9ub2RlICpub2RlLCAqbmV4 dDsKKyAgICBzdHJ1Y3QgYXJnb19wZW5kaW5nX2VudCAqcGVuZGluZ19lbnQ7CisKKyAgICBobGlz dF9mb3JfZWFjaF9lbnRyeV9zYWZlKHBlbmRpbmdfZW50LCBub2RlLCBuZXh0LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJnJpbmdfaW5mby0+cGVuZGluZywgbm9kZSkKKyAgICB7Cisg ICAgICAgIGFyZ29fcGVuZGluZ19yZW1vdmVfZW50KHBlbmRpbmdfZW50KTsKKyAgICB9Cit9CisK K3N0YXRpYyB2b2lkIGFyZ29fcmluZ19yZW1vdmVfbWZucyhjb25zdCBzdHJ1Y3QgZG9tYWluICpk LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBhcmdvX3JpbmdfaW5m byAqcmluZ19pbmZvKQoreworICAgIGludCBpOworCisgICAgQVNTRVJUKHJ3X2lzX3dyaXRlX2xv Y2tlZCgmZC0+YXJnby0+bG9jaykpOworCisgICAgaWYgKCAhcmluZ19pbmZvLT5tZm5zICkKKyAg ICAgICAgcmV0dXJuOworICAgIEFTU0VSVChyaW5nX2luZm8tPm1mbl9tYXBwaW5nKTsKKworICAg IGFyZ29fcmluZ191bm1hcChyaW5nX2luZm8pOworCisgICAgZm9yICggaSA9IDA7IGkgPCByaW5n X2luZm8tPm5tZm5zOyBpKysgKQorICAgICAgICBpZiAoIG1mbl94KHJpbmdfaW5mby0+bWZuc1tp XSkgIT0gbWZuX3goSU5WQUxJRF9NRk4pICkKKyAgICAgICAgICAgIHB1dF9wYWdlX2FuZF90eXBl KG1mbl90b19wYWdlKHJpbmdfaW5mby0+bWZuc1tpXSkpOworCisgICAgeGZyZWUocmluZ19pbmZv LT5tZm5zKTsKKyAgICByaW5nX2luZm8tPm1mbnMgPSBOVUxMOworICAgIHJpbmdfaW5mby0+bnBh Z2UgPSAwOworICAgIHhmcmVlKHJpbmdfaW5mby0+bWZuX21hcHBpbmcpOworICAgIHJpbmdfaW5m by0+bWZuX21hcHBpbmcgPSBOVUxMOworICAgIHJpbmdfaW5mby0+bm1mbnMgPSAwOworfQorCitz dGF0aWMgdm9pZAorYXJnb19yaW5nX3JlbW92ZV9pbmZvKHN0cnVjdCBkb21haW4gKmQsIHN0cnVj dCBhcmdvX3JpbmdfaW5mbyAqcmluZ19pbmZvKQoreworICAgIEFTU0VSVChyd19pc193cml0ZV9s b2NrZWQoJmQtPmFyZ28tPmxvY2spKTsKKworICAgIC8qIEhvbGRpbmcgVyhMMikgc28gZG8gbm90 IG5lZWQgdG8gYWNxdWlyZSBMMyAqLworICAgIGFyZ29fcGVuZGluZ19yZW1vdmVfYWxsKHJpbmdf aW5mbyk7CisgICAgaGxpc3RfZGVsKCZyaW5nX2luZm8tPm5vZGUpOworICAgIGFyZ29fcmluZ19y ZW1vdmVfbWZucyhkLCByaW5nX2luZm8pOworICAgIHhmcmVlKHJpbmdfaW5mbyk7Cit9CisKIGxv bmcKIGRvX2FyZ29fbWVzc2FnZV9vcChpbnQgY21kLCBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZv aWQpIGFyZzEsCiAgICAgICAgICAgICAgICAgICAgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lk KSBhcmcyLAogICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFyZzMsIHVpbnQzMl90IGFyZzQp CiB7Ci0gICAgcmV0dXJuIC1FTk9TWVM7CisgICAgc3RydWN0IGRvbWFpbiAqZCA9IGN1cnJlbnQt PmRvbWFpbjsKKyAgICBsb25nIHJjID0gLUVGQVVMVDsKKworICAgIGFyZ29fZHByaW50aygiLT5k b19hcmdvX21lc3NhZ2Vfb3AoJWQsJXAsJXAsJWQsJWQpXG4iLCBjbWQsCisgICAgICAgICAgICAg ICAgICh2b2lkICopYXJnMS5wLCAodm9pZCAqKWFyZzIucCwgKGludCkgYXJnMywgKGludCkgYXJn NCk7CisKKyAgICBkb21haW5fbG9jayhkKTsKKworICAgIHN3aXRjaCAoY21kKQorICAgIHsKKyAg ICBkZWZhdWx0OgorICAgICAgICByYyA9IC1FTk9TWVM7CisgICAgICAgIGJyZWFrOworICAgIH0K KworICAgIGRvbWFpbl91bmxvY2soZCk7CisgICAgYXJnb19kcHJpbnRrKCI8LWRvX2FyZ29fbWVz c2FnZV9vcCgpPSVsZFxuIiwgcmMpOworICAgIHJldHVybiByYzsKK30KKworaW50CithcmdvX2lu aXQoc3RydWN0IGRvbWFpbiAqZCkKK3sKKyAgICBzdHJ1Y3QgYXJnb19kb21haW4gKmFyZ287Cisg ICAgZXZ0Y2huX3BvcnRfdCBwb3J0OworICAgIGludCBpOworICAgIGludCByYzsKKworICAgIGFy Z28gPSB4bWFsbG9jKHN0cnVjdCBhcmdvX2RvbWFpbik7CisgICAgaWYgKCAhYXJnbyApCisgICAg ICAgIHJldHVybiAtRU5PTUVNOworCisgICAgcndsb2NrX2luaXQoJmFyZ28tPmxvY2spOworCisg ICAgZm9yICggaSA9IDA7IGkgPCBBUkdPX0hUQUJMRV9TSVpFOyArK2kgKQorICAgICAgICBJTklU X0hMSVNUX0hFQUQoJmFyZ28tPnJpbmdfaGFzaFtpXSk7CisKKyAgICByYyA9IGV2dGNobl9iaW5k X2lwaV92Y3B1MF9kb21haW4oZCwgJnBvcnQpOworICAgIGlmICggcmMgKQorICAgIHsKKyAgICAg ICAgeGZyZWUoYXJnbyk7CisgICAgICAgIHJldHVybiByYzsKKyAgICB9CisgICAgYXJnby0+ZXZ0 Y2huX3BvcnQgPSBwb3J0OworICAgIGFyZ28tPmRvbWFpbl9jb29raWUgPSAodWludDY0X3QpTk9X KCk7CisKKyAgICB3cml0ZV9sb2NrKCZhcmdvX2xvY2spOworICAgIGQtPmFyZ28gPSBhcmdvOwor ICAgIHdyaXRlX3VubG9jaygmYXJnb19sb2NrKTsKKworICAgIHJldHVybiAwOworfQorCit2b2lk CithcmdvX2Rlc3Ryb3koc3RydWN0IGRvbWFpbiAqZCkKK3sKKyAgICBpbnQgaTsKKworICAgIEJV R19PTighZC0+aXNfZHlpbmcpOworICAgIHdyaXRlX2xvY2soJmFyZ29fbG9jayk7CisKKyAgICBh cmdvX2RwcmludGsoImQtPnY9JXBcbiIsIGQtPmFyZ28pOworCisgICAgaWYgKCBkLT5hcmdvICkK KyAgICB7CisgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgQVJHT19IVEFCTEVfU0laRTsgKytpICkK KyAgICAgICAgeworICAgICAgICAgICAgc3RydWN0IGhsaXN0X25vZGUgKm5vZGUsICpuZXh0Owor ICAgICAgICAgICAgc3RydWN0IGFyZ29fcmluZ19pbmZvICpyaW5nX2luZm87CisKKyAgICAgICAg ICAgIGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocmluZ19pbmZvLCBub2RlLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0LCAmZC0+YXJnby0+cmluZ19oYXNoW2ld LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlKQorICAgICAgICAg ICAgeworICAgICAgICAgICAgICAgIGFyZ29fcmluZ19yZW1vdmVfaW5mbyhkLCByaW5nX2luZm8p OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIC8qCisgICAgICAgICAqIFNpbmNl IHRoaXMgZnVuY3Rpb24gaXMgb25seSBjYWxsZWQgZHVyaW5nIGRvbWFpbiBkZXN0cnVjdGlvbiwK KyAgICAgICAgICogYXJnby0+ZXZ0Y2huX3BvcnQgbmVlZCBub3QgYmUgY2xvc2VkIGhlcmUuIHJl ZjogZXZ0Y2huX2Rlc3Ryb3kKKyAgICAgICAgICovCisgICAgICAgIGQtPmFyZ28tPmRvbWFpbl9j b29raWUgPSAwOworICAgICAgICB4ZnJlZShkLT5hcmdvKTsKKyAgICAgICAgZC0+YXJnbyA9IE5V TEw7CisgICAgfQorICAgIHdyaXRlX3VubG9jaygmYXJnb19sb2NrKTsKKworICAgIC8qCisgICAg ICogVGhpcyAoZHlpbmcpIGRvbWFpbidzIGRvbWlkIG1heSBiZSByZWNvcmRlZCBhcyB0aGUgYXV0 aG9yaXplZCBzZW5kZXIKKyAgICAgKiB0byByaW5ncyByZWdpc3RlcmVkIGJ5IG90aGVyIGRvbWFp bnMsIGFuZCB0aG9zZSByaW5ncyBhcmUgbm90CisgICAgICogdW5yZWdpc3RlcmVkIGhlcmUuCisg ICAgICogSWYgYSBsYXRlciBkb21haW4gaXMgY3JlYXRlZCB0aGF0IGhhcyB0aGUgc2FtZSBkb21p ZCBhcyB0aGlzIG9uZSwgdGhlCisgICAgICogZG9tYWluX2Nvb2tpZSB3aWxsIGRpZmZlciwgd2hp Y2ggZW5zdXJlcyB0aGF0IHRoZSBuZXcgZG9tYWluIGNhbm5vdAorICAgICAqIHVzZSB0aGUgaW5o ZXJpdGVkIGF1dGhvcml6YXRpb25zIHRvIHRyYW5zbWl0IHRoYXQgd2VyZSBpc3N1ZWQgdG8gdGhp cworICAgICAqIGRvbWFpbi4KKyAgICAgKi8KIH0KZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vZG9t YWluLmMgYi94ZW4vY29tbW9uL2RvbWFpbi5jCmluZGV4IDc4Y2M1MjQuLmVhZGVhNGQgMTAwNjQ0 Ci0tLSBhL3hlbi9jb21tb24vZG9tYWluLmMKKysrIGIveGVuL2NvbW1vbi9kb21haW4uYwpAQCAt Mjc3LDYgKzI3NywxMCBAQCBzdGF0aWMgdm9pZCBfZG9tYWluX2Rlc3Ryb3koc3RydWN0IGRvbWFp biAqZCkKIAogICAgIHhmcmVlKGQtPnBidWYpOwogCisjaWZkZWYgQ09ORklHX0FSR08KKyAgICBh cmdvX2Rlc3Ryb3koZCk7CisjZW5kaWYKKwogICAgIHJhbmdlc2V0X2RvbWFpbl9kZXN0cm95KGQp OwogCiAgICAgZnJlZV9jcHVtYXNrX3ZhcihkLT5kaXJ0eV9jcHVtYXNrKTsKQEAgLTM3Niw2ICsz ODAsOSBAQCBzdHJ1Y3QgZG9tYWluICpkb21haW5fY3JlYXRlKGRvbWlkX3QgZG9taWQsCiAgICAg c3Bpbl9sb2NrX2luaXQoJmQtPmh5cGVyY2FsbF9kZWFkbG9ja19tdXRleCk7CiAgICAgSU5JVF9Q QUdFX0xJU1RfSEVBRCgmZC0+cGFnZV9saXN0KTsKICAgICBJTklUX1BBR0VfTElTVF9IRUFEKCZk LT54ZW5wYWdlX2xpc3QpOworI2lmZGVmIENPTkZJR19BUkdPCisgICAgcndsb2NrX2luaXQoJmQt PmFyZ29fbG9jayk7CisjZW5kaWYKIAogICAgIHNwaW5fbG9ja19pbml0KCZkLT5ub2RlX2FmZmlu aXR5X2xvY2spOwogICAgIGQtPm5vZGVfYWZmaW5pdHkgPSBOT0RFX01BU0tfQUxMOwpAQCAtNDQ1 LDYgKzQ1MiwxMSBAQCBzdHJ1Y3QgZG9tYWluICpkb21haW5fY3JlYXRlKGRvbWlkX3QgZG9taWQs CiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIGluaXRfc3RhdHVzIHw9IElOSVRfZ250 dGFiOwogCisjaWZkZWYgQ09ORklHX0FSR08KKyAgICAgICAgaWYgKCAoZXJyID0gYXJnb19pbml0 KGQpKSAhPSAwICkKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyNlbmRpZgorCiAgICAgICAgIGVy ciA9IC1FTk9NRU07CiAKICAgICAgICAgZC0+cGJ1ZiA9IHh6YWxsb2NfYXJyYXkoY2hhciwgRE9N QUlOX1BCVUZfU0laRSk7CkBAIC03MTcsNiArNzI5LDkgQEAgaW50IGRvbWFpbl9raWxsKHN0cnVj dCBkb21haW4gKmQpCiAgICAgICAgIGlmICggZC0+aXNfZHlpbmcgIT0gRE9NRFlJTkdfYWxpdmUg KQogICAgICAgICAgICAgcmV0dXJuIGRvbWFpbl9raWxsKGQpOwogICAgICAgICBkLT5pc19keWlu ZyA9IERPTURZSU5HX2R5aW5nOworI2lmZGVmIENPTkZJR19BUkdPCisgICAgICAgIGFyZ29fZGVz dHJveShkKTsKKyNlbmRpZgogICAgICAgICBldnRjaG5fZGVzdHJveShkKTsKICAgICAgICAgZ250 dGFiX3JlbGVhc2VfbWFwcGluZ3MoZCk7CiAgICAgICAgIHRtZW1fZGVzdHJveShkLT50bWVtX2Ns aWVudCk7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvYXJnby5oIGIveGVuL2luY2x1 ZGUvcHVibGljL2FyZ28uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMGRh YmMwCi0tLSAvZGV2L251bGwKKysrIGIveGVuL2luY2x1ZGUvcHVibGljL2FyZ28uaApAQCAtMCww ICsxLDU1IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBBcmdvIDogSHlwZXJ2aXNvci1N ZWRpYXRlZCBkYXRhIGVYY2hhbmdlCisgKgorICogRGVyaXZlZCBmcm9tIHY0diwgdGhlIHZlcnNp b24gMiBvZiB2MnYuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDEwLCBDaXRyaXggU3lzdGVtcwor ICogQ29weXJpZ2h0IChjKSAyMDE4LCBCQUUgU3lzdGVtcworICoKKyAqIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3Qs IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1w bGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKwor I2lmbmRlZiBfX1hFTl9QVUJMSUNfQVJHT19IX18KKyNkZWZpbmUgX19YRU5fUFVCTElDX0FSR09f SF9fCisKKyNpbmNsdWRlICJ4ZW4uaCIKKwordHlwZWRlZiBzdHJ1Y3QgYXJnb19hZGRyCit7Cisg ICAgdWludDMyX3QgcG9ydDsKKyAgICBkb21pZF90IGRvbWFpbl9pZDsKKyAgICB1aW50MTZfdCBw YWQ7Cit9IGFyZ29fYWRkcl90OworCit0eXBlZGVmIHN0cnVjdCBhcmdvX3JpbmdfaWQKK3sKKyAg ICBzdHJ1Y3QgYXJnb19hZGRyIGFkZHI7CisgICAgZG9taWRfdCBwYXJ0bmVyOworICAgIHVpbnQx Nl90IHBhZDsKK30gYXJnb19yaW5nX2lkX3Q7CisKK3R5cGVkZWYgc3RydWN0IGFyZ29fcmluZwor eworICAgIHVpbnQ2NF90IG1hZ2ljOworICAgIGFyZ29fcmluZ19pZF90IGlkOworICAgIHVpbnQz Ml90IGxlbjsKKyAgICAvKiBHdWVzdHMgc2hvdWxkIHVzZSBhdG9taWMgb3BlcmF0aW9ucyB0byBh Y2Nlc3MgcnhfcHRyICovCisgICAgdWludDMyX3QgcnhfcHRyOworICAgIC8qIEd1ZXN0cyBzaG91 bGQgdXNlIGF0b21pYyBvcGVyYXRpb25zIHRvIGFjY2VzcyB0eF9wdHIgKi8KKyAgICB1aW50MzJf dCB0eF9wdHI7CisgICAgdWludDhfdCByZXNlcnZlZFszMl07CisjaWYgZGVmaW5lZChfX1NURENf VkVSU0lPTl9fKSAmJiBfX1NURENfVkVSU0lPTl9fID49IDE5OTkwMUwKKyAgICB1aW50OF90IHJp bmdbXTsKKyNlbGlmIGRlZmluZWQoX19HTlVDX18pCisgICAgdWludDhfdCByaW5nWzBdOworI2Vu ZGlmCit9IGFyZ29fcmluZ190OworCisjZW5kaWYKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hl bi9hcmdvLmggYi94ZW4vaW5jbHVkZS94ZW4vYXJnby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmMwMzdkZTYKLS0tIC9kZXYvbnVsbAorKysgYi94ZW4vaW5jbHVkZS94ZW4v YXJnby5oCkBAIC0wLDAgKzEsMzAgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEFyZ28g OiBIeXBlcnZpc29yLU1lZGlhdGVkIGRhdGEgZVhjaGFuZ2UKKyAqCisgKiBEZXJpdmVkIGZyb20g djR2LCB0aGUgdmVyc2lvbiAyIG9mIHYydi4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAsIENp dHJpeCBTeXN0ZW1zCisgKiBDb3B5cmlnaHQgKGMpIDIwMTgsIEJBRSBTeXN0ZW1zCisgKgorICog VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24s IEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3 ICBVU0EKKyAqLworCisjaWZuZGVmIF9fWEVOX0FSR09fSF9fCisjZGVmaW5lIF9fWEVOX0FSR09f SF9fCisKKyNpbmNsdWRlIDx4ZW4vdHlwZXMuaD4KKyNpbmNsdWRlIDxwdWJsaWMvYXJnby5oPgor CitzdHJ1Y3QgYXJnb19kb21haW47CisKK2ludCBhcmdvX2luaXQoc3RydWN0IGRvbWFpbiAqZCk7 Cit2b2lkIGFyZ29fZGVzdHJveShzdHJ1Y3QgZG9tYWluICpkKTsKKworI2VuZGlmCmRpZmYgLS1n aXQgYS94ZW4vaW5jbHVkZS94ZW4vc2NoZWQuaCBiL3hlbi9pbmNsdWRlL3hlbi9zY2hlZC5oCmlu ZGV4IDAzMDljMWYuLjRhMTliNTUgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi9zY2hlZC5o CisrKyBiL3hlbi9pbmNsdWRlL3hlbi9zY2hlZC5oCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVk ZSA8YXNtL2F0b21pYy5oPgogI2luY2x1ZGUgPHhlbi92cGNpLmg+CiAjaW5jbHVkZSA8eGVuL3dh aXQuaD4KKyNpbmNsdWRlIDx4ZW4vYXJnby5oPgogI2luY2x1ZGUgPHB1YmxpYy94ZW4uaD4KICNp bmNsdWRlIDxwdWJsaWMvZG9tY3RsLmg+CiAjaW5jbHVkZSA8cHVibGljL3N5c2N0bC5oPgpAQCAt NDkwLDYgKzQ5MSwxMiBAQCBzdHJ1Y3QgZG9tYWluCiAgICAgICAgIHVuc2lnbmVkIGludCBndWVz dF9yZXF1ZXN0X2VuYWJsZWQgICAgICAgOiAxOwogICAgICAgICB1bnNpZ25lZCBpbnQgZ3Vlc3Rf cmVxdWVzdF9zeW5jICAgICAgICAgIDogMTsKICAgICB9IG1vbml0b3I7CisKKyNpZmRlZiBDT05G SUdfQVJHTworICAgIC8qIEFyZ28gaW50ZXJkb21haW4gY29tbXVuaWNhdGlvbiBzdXBwb3J0ICov CisgICAgcndsb2NrX3QgYXJnb19sb2NrOworICAgIHN0cnVjdCBhcmdvX2RvbWFpbiAqYXJnbzsK KyNlbmRpZgogfTsKIAogLyogUHJvdGVjdCB1cGRhdGVzL3JlYWRzIChyZXNwLikgb2YgZG9tYWlu X2xpc3QgYW5kIGRvbWFpbl9oYXNoLiAqLwotLSAKMi4xLjQKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h aWxtYW4vbGlzdGluZm8veGVuLWRldmVs