From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lukasz Kosewski Subject: [PATCH 2/3] Add disk hotswap support to libata RESEND #2 Date: Mon, 1 Aug 2005 03:01:22 -0700 Message-ID: <355e5e5e05080103012c6e70d4@mail.gmail.com> Reply-To: Lukasz Kosewski Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_3087_6666178.1122890482872" Return-path: Sender: linux-scsi-owner@vger.kernel.org To: jgarzik@pobox.com Cc: linux-ide@vger.kernel.org, linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org List-Id: linux-ide@vger.kernel.org ------=_Part_3087_6666178.1122890482872 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Patch 02: Add a hotswap infrastructure to libata As described in the archives, this patch adds a framework and API to libata to allow for hotswapping. This version comes with a debounce timer... exciting! Luke Kosewski ------=_Part_3087_6666178.1122890482872 Content-Type: text/x-patch; name="02-libata_hotswap_infrastructure-2.6.13-rc3-mm1-2.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="02-libata_hotswap_infrastructure-2.6.13-rc3-mm1-2.diff" MDEuMDguMDUgIEx1a2UgS29zZXdza2kgIDxsa29zZXdza0BuaXQuY2E+CgoJKiBBIHBhdGNoIHRv IGFkZCBhIGdlbmVyYWwtcHVycG9zZSBob3Rzd2FwIGZyYW1ld29yayB0byBsaWJhdGEuICBGcm9t CgkgIHRoZSBwb2ludCBvZiB2aWV3IG9mIHRoZSBkcml2ZXIgd3JpdGVyLCB3ZSBvbmx5IGhhdmUg b25lIG5ldyBBUEkKCSAgZnVuY3Rpb247ICdhdGFfaG90cGx1Z19vcCcsIHdoaWNoIGlzIGNhbGxl ZCB0byBzY2hlZHVsZSBhIHBsdWcvdW5wbHVnCgkgIGV2ZW50LiAgV2UgYWxzbyBuZWVkIHRvIHBy ZXBhcmUgb3VyIGRyaXZlciB0byB0ZWxsIHRoaXMgZnVuY3Rpb24sIHdoZW4KCSAgZXhlY3V0ZWQs IHdoZXRoZXIgd2UgYXJlIGRvaW5nIGEgcGx1Zy91bnBsdWc7IGZvciB0aGlzIHdlIGFsc28gaGF2 ZQoJICB0byBmaWxsIGluIHRoZSBhcC0+b3BzLT5ob3RwbHVnX2FjdGlvbiBjYWxsYmFjayBpbiBv dXIgZHJpdmVyLgoJKiBBIGZldyBtaXNjIGNoYW5nZXMgYXJlIG5lY2Vzc2FyeSB0byBwcm9wZXJs eSByZXNldCBmbGFncyB3aGljaCBhcmUKCSAgc2V0IGJ5IGRldmljZXMgd2hlbiB0aGV5IGFyZSBw cmVzZW50IHRvIG1ha2Ugc3VyZSB0aGF0IG5ldyBkZXZpY2VzCgkgIChmb3IgaW5zdGFuY2UsIGRp c2tzIHdpdGggZGlmZmVyZW50IG1heCBVRE1BIHRyYW5zZmVyIHJhdGVzLCBub3QgdXNpbmcKCSAg TEJBNDgsIGV0Yy4pIGJlaW5nIHN3YXBwZWQgaW4gZG8gbm90IGFzc3VtZSB2YWx1ZXMgZm9yIHRo ZSBvbGQKCSAgZGV2aWNlcy4KCSogR3JhdHVpdG91cyBjb21tZW50cyBoZXJlIHRoYXQgY2FuIHBy b2JhYmx5IGJlIHJlbW92ZWQsIHNvIHRoYXQgYW55b25lCgkgIGxvb2tpbmcgYXQgdGhpcyBjYW4g dW5kZXJzdGFuZCB0aGlzIGFuZCBwb2tlIGhvbGVzIGluIG15IGxvZ2ljLgoJKiBUaGlzIGlzIGEg cmVzZW5kIG9mIHRoZSBvcmlnaW5hbCBwYXRjaCB3aGljaCBpbiBwYXJ0aWN1bGFyOgoJICAtIHVz ZXMgYSAnZGVib3VuY2UgaGFuZGxlcicsIGRvbmUgd2l0aCBhIHRpbWVyLCB0byB0YWtlIGNhcmUg b2YgY2FzZXMKCSAgICB3aGVyZSB3ZSBnZXQgc3B1cmlvdXMgaW50ZXJydXB0cywgdXN1YWxseSBj YXVzZWQgYnkgdGhlIG1ldGFsIHBpbnMKCSAgICBvbiBhIGNvbm5lY3RvciB3b2JibGluZyBpcnJl Z3VsYXJseSBhcyB0aGV5J3JlIHB1c2hlZCBpbi4KClNpZ25lZC1vZmYtYnk6ICBMdWtlIEtvc2V3 c2tpIDxsa29zZXdza0BuaXQuY2E+CgotLS0gbGludXgtMi42LjEzLXJjMy9kcml2ZXJzL3Njc2kv bGliYXRhLWNvcmUuYy5vbGQJMjAwNS0wOC0wMSAwMDoyMTo1NS4wMDAwMDAwMDAgLTA3MDAKKysr IGxpbnV4LTIuNi4xMy1yYzMvZHJpdmVycy9zY3NpL2xpYmF0YS1jb3JlLmMJMjAwNS0wOC0wMSAw MjoxMzozNi4wMDAwMDAwMDAgLTA3MDAKQEAgLTExMzQsNiArMTEzNSwxMSBAQCBzdGF0aWMgdm9p ZCBhdGFfZGV2X2lkZW50aWZ5KHN0cnVjdCBhdGFfCiAJCXJldHVybjsKIAl9CiAKKwkvKiBOZWNl c3NhcnkgaWYgd2UgaGFkIGFuIExCQTQ4IGRyaXZlIGluLCB3ZSBwdWxsZWQgaXQgb3V0LCBhbmQg cHV0IGluCisJICogYSBub24tTEJBNDggZHJpdmUgdG8gcmVwbGFjZSBpdC4KKwkgKi8KKwlkZXYt PmZsYWdzICY9IH5BVEFfREZMQUdfTEJBNDg7CisKIAlpZiAoYXAtPmZsYWdzICYgKEFUQV9GTEFH X1NSU1QgfCBBVEFfRkxBR19TQVRBX1JFU0VUKSkKIAkJdXNpbmdfZWRkID0gMDsKIAllbHNlCkBA IC0zNjM1LDYgKzM2NDEsOTMgQEAgaWRsZV9pcnE6CiAJcmV0dXJuIDA7CS8qIGlycSBub3QgaGFu ZGxlZCAqLwogfQogCit2b2lkIGF0YV9jaGVja19raWxsX3FjKHN0cnVjdCBhdGFfcG9ydCAqYXAp Cit7CisJc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYyA9IGF0YV9xY19mcm9tX3RhZyhhcCwgYXAt PmFjdGl2ZV90YWcpOworCisJaWYgKHVubGlrZWx5KHFjKSkgeworCQkvKiBUaGlzIGlzIFNPIGJh ZC4gIEJ1dCB3ZSBjYW4ndCBqdXN0IHJ1bgorCQkgKiBhdGFfcWNfY29tcGxldGUgd2l0aG91dCBk b2luZyB0aGlzLCBiZWNhdXNlCisJCSAqIGF0YV9zY3NpX3FjX2NvbXBsZXRlIHdhbnRzIHRvIHRh bGsgdG8gdGhlIGRldmljZSwKKwkJICogYW5kIHdlIGNhbid0IGxldCBpdCBkbyB0aGF0IHNpbmNl IGl0IGRvZXNuJ3QgZXhpc3QKKwkJICogYW55bW9yZS4KKwkJICovCisJCWF0YV9zY3NpX3ByZXBh cmVfcWNfYWJvcnQocWMpOworCQlhdGFfcWNfY29tcGxldGUocWMsIEFUQV9FUlIpOworCX0KK30K Kworc3RhdGljIGlubGluZSB2b2lkIGF0YV9ob3RwbHVnX3VucGx1Z19mdW5jKHN0cnVjdCBhdGFf cG9ydCAqYXApCit7CisJRFBSSU5USygiR290IGFuIHVucGx1ZyByZXF1ZXN0IG9uIHBvcnQgJWRc biIsIGFwLT5pZCk7CisKKwlhdGFfcG9ydF9kaXNhYmxlKGFwKTsgIC8vR29uZSBnb25lIGdvbmUh CisJYXRhX3Njc2lfaGFuZGxlX3VucGx1ZyhhcCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBh dGFfaG90cGx1Z19wbHVnX2Z1bmMoc3RydWN0IGF0YV9wb3J0ICphcCkKK3sKKwlEUFJJTlRLKCJH b3QgYSBwbHVnIHJlcXVlc3Qgb24gcG9ydCAlZFxuIiwgYXAtPmlkKTsKKworCS8qIFB1cmUgZXZp bC4gIFN1cHBvc2UgdGhhdCB5b3UgaGF2ZSBhbiAndW5wbHVnJyB3YWl0aW5nIG9uIHlvdXIKKwkg KiBxdWV1ZSwgYW5kIHRoaXMgZnVuY3Rpb24gZXhlY3V0ZXMgd2hpbGUgaXQncyB0aGVyZSAoYmVj YXVzZSAKKwkgKiB5b3UgdW5wbHVnZ2VkL3BsdWdnZWQgaW4gYSBkaXNrIG9uIGFuIFNNUCBzeXN0 ZW0gVkVSWSBGQVNUKS4KKwkgKiBSRUFMTFkgYmFkIG5ld3MsIGJlY2F1c2Ugd2hlbiB5b3UgdW5w bHVnZ2VkIHlvdXIgZGlzaywgeW91CisJICogbWlnaHQgaGF2ZSBoYWQgYSBwZW5kaW5nIHFjIHdo aWNoIHdpbGwgbm93IHNpdCB0aGVyZSBhbmQgdGltZQorCSAqIG91dCBsaWtlIHRoZSBtb2ZvIGl0 IGlzLiAgQ2hlY2sgdG8gc2VlIGlmIHdlIGhhdmUgb25lIHNpdHRpbmcKKwkgKiBhcm91bmQgYW5k IEtJTEwgSVQgaWYgdGhpcyBpcyBzby4KKwkgKi8KKwlhdGFfY2hlY2tfa2lsbF9xYyhhcCk7CisJ YXAtPmZsYWdzIHw9IEFUQV9GTEFHX1NBVEFfUkVTRVQ7IC8vIE5lY2Vzc2FyeSBvbiBzb21lIFNl YWdhdGUgZHJpdmVzLgorCWFwLT51ZG1hX21hc2sgPSBhcC0+b3JpZ191ZG1hX21hc2s7CisKKwlp ZiAoYXRhX2J1c19wcm9iZShhcCkpCisJCWF0YV9zY3NpX2hhbmRsZV91bnBsdWcoYXApOyAgLy9t aWdodCBiZSBuZWNlc3Nhcnkgb24gU01QCisJZWxzZQorCQlhdGFfc2NzaV9oYW5kbGVfcGx1Zyhh cCk7Cit9CisKK3N0YXRpYyB2b2lkIGF0YV9ob3RwbHVnX3RpbWVyX2Z1bmModW5zaWduZWQgbG9u ZyBfZGF0YSkKK3sKKwlzdHJ1Y3QgYXRhX3BvcnQgKmFwID0gKHN0cnVjdCBhdGFfcG9ydCAqKV9k YXRhOworCWludCBhY3Rpb247CisKKwkvL0EgZHJpdmVyIHRoYXQgd2FudHMgdG8gcGxheSB3aXRo IGhvdHBsdWdnaW5nIEhBUyB0byBkZWZpbmUgdGhpcyBmdW5jLgorCUJVR19PTighYXAtPm9wcy0+ aG90cGx1Z19hY3Rpb24pOworCisJc3Bpbl9sb2NrKCZhcC0+aG9zdF9zZXQtPmxvY2spOworCS8q IEkgd291bGQgaGF2ZSB0aG91Z2h0IHRoYXQgd2UgY2FuIGp1c3Qgc2V0IGEgJ3BsdWcnIG9yICd1 bnBsdWcnCisJICogZnVuY3Rpb24gdXAgYXMgdGhlIHRpbWVyIGNhbGxlci4gIEhvd2V2ZXIsIHNv bWUgaW5mbyBmcm9tIHRoZSBTaWwKKwkgKiBndXlzIGluZGljYXRlcyB0aGF0IHdlIHNob3VsZCBk byBhbm90aGVyIGNoZWNrIHRvIHNlZSB3aGV0aGVyIHdlIHdhbnQKKwkgKiB0byBwbHVnIG9yIHVu cGx1Zy4gIEhlbmNlLCB3ZSB1c2UgdGhpcyBmdW5jdGlvbiBjYWxsYmFjayBpbnN0ZWFkLgorCSAq IFRoaXMgaGFzIHRoZSBhZHZhbnRhZ2Ugb2Ygb25seSBoYXZpbmcgb25lIHRpbWVyIHBlciBhcDsg d2UgY2FuJ3QgdXNlCisJICogb25seSBvbmUgdGltZXIgdG8gbWFrZSBjYWxsYmFja3MgZm9yIGJv dGggcGx1Zy91bnBsdWcgYmVjYXVzZSBvbiBhbgorCSAqIFNNUCBub24teDg2ICg/KSBzeXN0ZW0s IHdlIG1pZ2h0IGJlIG92ZXJyaWRpbmcgdGhlIG1lbW9yeSBsb2NhdGlvbgorCSAqIHN0b3Jpbmcg YSBwb2ludGVyIHRvIHRoZSBjYWxsYmFjayBhdCB0aGUgc2FtZSB0aW1lIGFzIGEgQ1BVIGdyYWJz CisJICogdGhhdCB0aW1lciBhbmQgdHJpZXMgdG8gcnVuIGl0ID09IHBvc3NpYmxlIGtlcm5lbCBw YW5pYy4KKwkgKiBUaGF0IENPVUxEIGhhdmUgYmVlbiBmaXhlZCBieSBydW5uaW5nIGRlbF90aW1l cl9zeW5jIHJhdGhlciB0aGFuCisJICogZGVsX3RpbWVyIGluIHRoZSBhdGFfaG90cGx1Z18odW4p cGx1ZyBmdW5jdGlvbnMsIGV4Y2VwdCB3ZSBjYW4ndCBydW4KKwkgKiBkZWxfdGltZXJfc3luYyBm cm9tIGFuIGludGVycnVwdCBjb250ZXh0LCBzbyB3ZSBoYXZlIHRoaXMKKwkgKiBob3RwbHVnX2Fj dGlvbiBzb2x1dGlvbiBpbnN0ZWFkLgorCSAqLworCWFjdGlvbiA9IGFwLT5vcHMtPmhvdHBsdWdf YWN0aW9uKGFwKTsKKwlzcGluX3VubG9jaygmYXAtPmhvc3Rfc2V0LT5sb2NrKTsKKworCWlmIChh Y3Rpb24pCisJCWF0YV9ob3RwbHVnX3BsdWdfZnVuYyhhcCk7CisJZWxzZQorCQlhdGFfaG90cGx1 Z191bnBsdWdfZnVuYyhhcCk7Cit9CisKKy8qIFNob3VsZCBiZSBwcm90ZWN0ZWQgYnkgaG9zdF9z ZXQtPmxvY2sgKi8KK3ZvaWQgYXRhX2hvdHBsdWdfb3Aoc3RydWN0IGF0YV9wb3J0ICphcCkKK3sK KwlkZWxfdGltZXIoJmFwLT5ob3RwbHVnX3RpbWVyKTsKKworCWFwLT5ob3RwbHVnX3RpbWVyLmV4 cGlyZXMgPSBqaWZmaWVzICsgQVRBX1RNT1VUX0hPVFNXQVA7CisJYWRkX3RpbWVyKCZhcC0+aG90 cGx1Z190aW1lcik7Cit9CisKIC8qKgogICoJYXRhX2ludGVycnVwdCAtIERlZmF1bHQgQVRBIGhv c3QgaW50ZXJydXB0IGhhbmRsZXIKICAqCUBpcnE6IGlycSBsaW5lICh1bnVzZWQpCkBAIC0zODYw LDcgKzM5NTMsMTEgQEAgc3RhdGljIHZvaWQgYXRhX2hvc3RfaW5pdChzdHJ1Y3QgYXRhX3Bvcgog CWFwLT5jYmwgPSBBVEFfQ0JMX05PTkU7CiAJYXAtPmFjdGl2ZV90YWcgPSBBVEFfVEFHX1BPSVNP TjsKIAlhcC0+bGFzdF9jdGwgPSAweEZGOworCWFwLT5vcmlnX3VkbWFfbWFzayA9IGVudC0+dWRt YV9tYXNrOwogCisJYXAtPmhvdHBsdWdfdGltZXIuZnVuY3Rpb24gPSBhdGFfaG90cGx1Z190aW1l cl9mdW5jOworCWFwLT5ob3RwbHVnX3RpbWVyLmRhdGEgPSAodW5zaWduZWQgaW50KWFwOworCWlu aXRfdGltZXIoJmFwLT5ob3RwbHVnX3RpbWVyKTsKIAlJTklUX1dPUksoJmFwLT5wYWNrZXRfdGFz aywgYXRhcGlfcGFja2V0X3Rhc2ssIGFwKTsKIAlJTklUX1dPUksoJmFwLT5waW9fdGFzaywgYXRh X3Bpb190YXNrLCBhcCk7CiAKQEAgLTQ1MzEsNiArNDYyOCw3IEBAIEVYUE9SVF9TWU1CT0xfR1BM KGF0YV9kZXZfY2xhc3NpZnkpOwogRVhQT1JUX1NZTUJPTF9HUEwoYXRhX2Rldl9pZF9zdHJpbmcp OwogRVhQT1JUX1NZTUJPTF9HUEwoYXRhX2Rldl9jb25maWcpOwogRVhQT1JUX1NZTUJPTF9HUEwo YXRhX3Njc2lfc2ltdWxhdGUpOworRVhQT1JUX1NZTUJPTF9HUEwoYXRhX2hvdHBsdWdfb3ApOwog CiAjaWZkZWYgQ09ORklHX1BDSQogRVhQT1JUX1NZTUJPTF9HUEwocGNpX3Rlc3RfY29uZmlnX2Jp dHMpOwotLS0gbGludXgtMi42LjEzLXJjMy9kcml2ZXJzL3Njc2kvbGliYXRhLXNjc2kuYy5vbGQJ MjAwNS0wOC0wMSAwMDoyMjowMS4wMDAwMDAwMDAgLTA3MDAKKysrIGxpbnV4LTIuNi4xMy1yYzMv ZHJpdmVycy9zY3NpL2xpYmF0YS1zY3NpLmMJMjAwNS0wOC0wMSAwMDoyMjoyNi4wMDAwMDAwMDAg LTA3MDAKQEAgLTEwMTEsNiArMTAxMSw1MyBAQCBzdGF0aWMgaW50IGF0YV9zY3NpX3FjX2NvbXBs ZXRlKHN0cnVjdCBhCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgYXRhX3Njc2lfcWNfYWJv cnQoc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYywgdTggZHJ2X3N0YXQpCit7CisJc3RydWN0IHNj c2lfY21uZCAqY21kID0gcWMtPnNjc2ljbWQ7CisKKwljbWQtPnJlc3VsdCA9IFNBTV9TVEFUX1RB U0tfQUJPUlRFRDsgLy9GSVhNRTogIElzIHRoaXMgd2hhdCB3ZSB3YW50PworCisJcWMtPnNjc2lk b25lKGNtZCk7CisKKwlyZXR1cm4gMDsKK30KKwordm9pZCBhdGFfc2NzaV9wcmVwYXJlX3FjX2Fi b3J0KHN0cnVjdCBhdGFfcXVldWVkX2NtZCAqcWMpCit7CisJLy8gRm9yIHNvbWUgcmVhc29uIG9y IGFub3RoZXIsIHdlIGNhbid0IGFsbG93IGEgbm9ybWFsIHNjc2lfcWNfY29tcGxldGUKKwlpZiAo cWMtPmNvbXBsZXRlX2ZuID09IGF0YV9zY3NpX3FjX2NvbXBsZXRlKTsKKwkJcWMtPmNvbXBsZXRl X2ZuID0gYXRhX3Njc2lfcWNfYWJvcnQ7Cit9CisKK3ZvaWQgYXRhX3Njc2lfaGFuZGxlX3BsdWco c3RydWN0IGF0YV9wb3J0ICphcCkKK3sKKwkvL0N1cnJlbnRseSBTQVRBIG9ubHkKKwlzY3NpX2Fk ZF9kZXZpY2UoYXAtPmhvc3QsIDAsIDAsIDApOworfQorCit2b2lkIGF0YV9zY3NpX2hhbmRsZV91 bnBsdWcoc3RydWN0IGF0YV9wb3J0ICphcCkKK3sKKwkvL1NBVEEgb25seSwgbm8gUEFUQQorCXN0 cnVjdCBzY3NpX2RldmljZSAqc2NkID0gc2NzaV9kZXZpY2VfbG9va3VwKGFwLT5ob3N0LCAwLCAw LCAwKTsKKwkvKiBzY2QgbWlnaHQgbm90IGV4aXN0OyBzb21lb25lIGRpZCAnZWNobyAic2NzaSBy ZW1vdmUtc2luZ2xlLWRldmljZQorCSAqIC4uLiAiID4gL3Byb2Mvc2NzaS9zY3NpJyBvciBzb21l Ym9keSAgd2FzIHR1cm5pbmcgdGhlIGtleSBpbiB0aGUKKwkgKiBob3Rzd2FwIGJheSBiZXR3ZWVu IG9uIGFuZCBvZmYgcmVhbGx5IHJlYWxseSBmYXN0LgorCSAqLworCWlmIChzY2QpIHsKKwkJc2Nz aV9kZXZpY2Vfc2V0X3N0YXRlKHNjZCwgU0RFVl9DQU5DRUwpOworCQkvKiBXZSBtaWdodCBoYXZl IGEgcGVuZGluZyBxYyBvbiBJL08gdG8gYSByZW1vdmVkIGRldmljZSwKKwkJICogaG93ZXZlciwg SSBhcmd1ZSBpdCdzIGltcG9zc2libGUgdW5sZXNzIHdlIGhhdmUgYW4gJ3NjZCcKKwkJICogYmVj YXVzZSBpdCBtZWFucyB3ZSBuZXZlciBjb21wbGV0ZWQgYSAncGx1ZycgaW50byB0aGUgc3lzdGVt CisJCSAqIChvciBubyBkZXZpY2Ugd2FzIHByZXNlbnQgb24gYm9vdHVwKSwgc28gZWl0aGVyIHdl IGhhdmUgbm8KKwkJICogcG9zc2libGUgSS9PLCBvciBhIHFjIHdoaWNoICdhdGFfaG90cGx1Z19w bHVnX2Z1bmMnIHRvb2sKKwkJICogY2FyZSBvZgorCQkgKi8KKwkJYXRhX2NoZWNrX2tpbGxfcWMo YXApOworCQlzY3NpX3JlbW92ZV9kZXZpY2Uoc2NkKTsKKwkJc2NzaV9kZXZpY2VfcHV0KHNjZCk7 CisJfQorfQorCiAvKioKICAqCWF0YV9zY3NpX3RyYW5zbGF0ZSAtIFRyYW5zbGF0ZSB0aGVuIGlz c3VlIFNDU0kgY29tbWFuZCB0byBBVEEgZGV2aWNlCiAgKglAYXA6IEFUQSBwb3J0IHRvIHdoaWNo IHRoZSBjb21tYW5kIGlzIGFkZHJlc3NlZAotLS0gbGludXgtMi42LjEzLXJjMy9kcml2ZXJzL3Nj c2kvbGliYXRhLmgub2xkCTIwMDUtMDgtMDEgMDA6MjI6MDUuMDAwMDAwMDAwIC0wNzAwCisrKyBs aW51eC0yLjYuMTMtcmMzL2RyaXZlcnMvc2NzaS9saWJhdGEuaAkyMDA1LTA4LTAxIDAwOjIyOjI2 LjAwMDAwMDAwMCAtMDcwMApAQCAtNDAsNiArNDAsNyBAQCBleHRlcm4gc3RydWN0IGF0YV9xdWV1 ZWRfY21kICphdGFfcWNfbmV3CiBleHRlcm4gdm9pZCBhdGFfcWNfZnJlZShzdHJ1Y3QgYXRhX3F1 ZXVlZF9jbWQgKnFjKTsKIGV4dGVybiBpbnQgYXRhX3FjX2lzc3VlKHN0cnVjdCBhdGFfcXVldWVk X2NtZCAqcWMpOwogZXh0ZXJuIGludCBhdGFfY2hlY2tfYXRhcGlfZG1hKHN0cnVjdCBhdGFfcXVl dWVkX2NtZCAqcWMpOworZXh0ZXJuIHZvaWQgYXRhX2NoZWNrX2tpbGxfcWMoc3RydWN0IGF0YV9w b3J0ICphcCk7CiBleHRlcm4gdm9pZCBhdGFfZGV2X3NlbGVjdChzdHJ1Y3QgYXRhX3BvcnQgKmFw LCB1bnNpZ25lZCBpbnQgZGV2aWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgaW50IHdhaXQsIHVuc2lnbmVkIGludCBjYW5fc2xlZXApOwogZXh0ZXJuIHZvaWQgYXRhX3Rm X3RvX2hvc3Rfbm9sb2NrKHN0cnVjdCBhdGFfcG9ydCAqYXAsIHN0cnVjdCBhdGFfdGFza2ZpbGUg KnRmKTsKQEAgLTc2LDYgKzc3LDkgQEAgZXh0ZXJuIHZvaWQgYXRhX3Njc2lfYmFkY21kKHN0cnVj dCBzY3NpXwogZXh0ZXJuIHZvaWQgYXRhX3Njc2lfcmJ1Zl9maWxsKHN0cnVjdCBhdGFfc2NzaV9h cmdzICphcmdzLCAKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAoKmFjdG9y KSAoc3RydWN0IGF0YV9zY3NpX2FyZ3MgKmFyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdTggKnJidWYsIHVuc2lnbmVkIGludCBidWZsZW4pKTsKK2V4dGVy biB2b2lkIGF0YV9zY3NpX3ByZXBhcmVfcWNfYWJvcnQoc3RydWN0IGF0YV9xdWV1ZWRfY21kICpx Yyk7CitleHRlcm4gdm9pZCBhdGFfc2NzaV9oYW5kbGVfcGx1ZyhzdHJ1Y3QgYXRhX3BvcnQgKmFw KTsKK2V4dGVybiB2b2lkIGF0YV9zY3NpX2hhbmRsZV91bnBsdWcoc3RydWN0IGF0YV9wb3J0ICph cCk7CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBhdGFfYmFkX3Njc2lvcChzdHJ1Y3Qgc2NzaV9jbW5k ICpjbWQsIHZvaWQgKCpkb25lKShzdHJ1Y3Qgc2NzaV9jbW5kICopKQogewotLS0gbGludXgtMi42 LjEzLXJjMy9pbmNsdWRlL2xpbnV4L2xpYmF0YS5oLm9sZAkyMDA1LTA4LTAxIDAwOjIyOjEzLjAw MDAwMDAwMCAtMDcwMAorKysgbGludXgtMi42LjEzLXJjMy9pbmNsdWRlL2xpbnV4L2xpYmF0YS5o CTIwMDUtMDgtMDEgMDI6MTM6NTcuMDAwMDAwMDAwIC0wNzAwCkBAIC0yOSw2ICsyOSw3IEBACiAj aW5jbHVkZSA8YXNtL2lvLmg+CiAjaW5jbHVkZSA8bGludXgvYXRhLmg+CiAjaW5jbHVkZSA8bGlu dXgvd29ya3F1ZXVlLmg+CisjaW5jbHVkZSA8bGludXgvdGltZXIuaD4KIAogLyoKICAqIGNvbXBp bGUtdGltZSBvcHRpb25zCkBAIC0xMjcsNiArMTI4LDcgQEAgZW51bSB7CiAJQVRBX1RNT1VUX0JP T1RfUVVJQ0sJPSA3ICogSFosCS8qIGh1ZXJpc3RpYyAqLwogCUFUQV9UTU9VVF9DREIJCT0gMzAg KiBIWiwKIAlBVEFfVE1PVVRfQ0RCX1FVSUNLCT0gNSAqIEhaLAorCUFUQV9UTU9VVF9IT1RTV0FQ CT0gSFogLyAyLAkvKiBIZXVyaXN0aWMgc3VnZ2VzdGVkIGJ5IFNpbCAqLwogCiAJLyogQVRBIGJ1 cyBzdGF0ZXMgKi8KIAlCVVNfVU5LTk9XTgkJPSAwLApAQCAtMzE5LDYgKzMyMSw3IEBAIHN0cnVj dCBhdGFfcG9ydCB7CiAJc3RydWN0IGF0YV9ob3N0X3N0YXRzCXN0YXRzOwogCXN0cnVjdCBhdGFf aG9zdF9zZXQJKmhvc3Rfc2V0OwogCisJc3RydWN0IHRpbWVyX2xpc3QJaG90cGx1Z190aW1lcjsK IAlzdHJ1Y3Qgd29ya19zdHJ1Y3QJcGFja2V0X3Rhc2s7CiAKIAlzdHJ1Y3Qgd29ya19zdHJ1Y3QJ cGlvX3Rhc2s7CkBAIC0zMjYsNiArMzI5LDggQEAgc3RydWN0IGF0YV9wb3J0IHsKIAl1bnNpZ25l ZCBsb25nCQlwaW9fdGFza190aW1lb3V0OwogCiAJdm9pZAkJCSpwcml2YXRlX2RhdGE7CisKKwl1 bnNpZ25lZCBpbnQJCW9yaWdfdWRtYV9tYXNrOwogfTsKIAogc3RydWN0IGF0YV9wb3J0X29wZXJh dGlvbnMgewpAQCAtMzcyLDYgKzM3Nyw3IEBAIHN0cnVjdCBhdGFfcG9ydF9vcGVyYXRpb25zIHsK IAogCXZvaWQgKCpibWRtYV9zdG9wKSAoc3RydWN0IGF0YV9wb3J0ICphcCk7CiAJdTggICAoKmJt ZG1hX3N0YXR1cykgKHN0cnVjdCBhdGFfcG9ydCAqYXApOworCWludCAoKmhvdHBsdWdfYWN0aW9u KSAoc3RydWN0IGF0YV9wb3J0ICphcCk7CiB9OwogCiBzdHJ1Y3QgYXRhX3BvcnRfaW5mbyB7CkBA IC00MDIsNiArNDA4LDcgQEAgZXh0ZXJuIGludCBhdGFfc2NzaV9xdWV1ZWNtZChzdHJ1Y3Qgc2Nz aQogZXh0ZXJuIGludCBhdGFfc2NzaV9lcnJvcihzdHJ1Y3QgU2NzaV9Ib3N0ICpob3N0KTsKIGV4 dGVybiBpbnQgYXRhX3Njc2lfcmVsZWFzZShzdHJ1Y3QgU2NzaV9Ib3N0ICpob3N0KTsKIGV4dGVy biB1bnNpZ25lZCBpbnQgYXRhX2hvc3RfaW50cihzdHJ1Y3QgYXRhX3BvcnQgKmFwLCBzdHJ1Y3Qg YXRhX3F1ZXVlZF9jbWQgKnFjKTsKK2V4dGVybiB2b2lkIGF0YV9ob3RwbHVnX29wKHN0cnVjdCBh dGFfcG9ydCAqYXApOwogLyoKICAqIERlZmF1bHQgZHJpdmVyIG9wcyBpbXBsZW1lbnRhdGlvbnMK ICAqLwo= ------=_Part_3087_6666178.1122890482872--