From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anchal Agarwal Subject: [RFC PATCH 06/12] xen-blkfront: add callbacks for PM suspend and hibernation Date: Tue, 12 Jun 2018 20:56:13 +0000 Message-ID: <20180612205619.28156-7-anchalag@amazon.com> References: <20180612205619.28156-1-anchalag@amazon.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: jgross@suse.com, len.brown@intel.com, eduval@amazon.com, vallish@amazon.com, netdev@vger.kernel.org, fllinden@amazon.com, kamatam@amazon.com, rjw@rjwysocki.net, linux-kernel@vger.kernel.org, anchalag@amazon.com, cyberax@amazon.com, pavel@ucw.cz, linux-pm@vger.kernel.org, xen-devel@lists.xenproject.org, boris.ostrovsky@oracle.com, guruanb@amazon.com, roger.pau@citrix.com To: , , , Return-path: In-Reply-To: <20180612205619.28156-1-anchalag@amazon.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" List-Id: netdev.vger.kernel.org RnJvbTogTXVuZWhpc2EgS2FtYXRhIDxrYW1hdGFtQGFtYXpvbi5jb20+CgpBZGQgZnJlZXplIGFu ZCByZXN0b3JlIGNhbGxiYWNrcyBmb3IgUE0gc3VzcGVuZCBhbmQgaGliZXJuYXRpb24gc3VwcG9y dC4KVGhlIGZyZWV6ZSBoYW5kbGVyIHN0b3BzIGEgYmxvY2stbGF5ZXIgcXVldWUgYW5kIGRpc2Nv bm5lY3QgdGhlIGZyb250ZW5kCmZyb20gdGhlIGJhY2tlbmQgd2hpbGUgZnJlZWluZyByaW5nX2lu Zm8gYW5kIGFzc29jaWF0ZWQgcmVzb3VyY2VzLiBUaGUKcmVzdG9yZSBoYW5kbGVyIHJlLWFsbG9j YXRlcyByaW5nX2luZm8gYW5kIHJlLWNvbm5lY3QgdG8gdGhlIGJhY2tlZGVuZCwKc28gdGhlIHJl c3Qgb2YgdGhlIGtlcm5lbCBjYW4gY29udGludWUgdG8gdXNlIHRoZSBibG9jayBkZXZpY2UKdHJh bnNwYXJlbnRseS5BbHNvLCB0aGUgaGFuZGxlcnMgYXJlIHVzZWQgZm9yIGJvdGggUE0Kc3VzcGVu ZCBhbmQgaGliZXJuYXRpb24gc28gdGhhdCB3ZSBjYW4ga2VlcCB0aGUgZXhpc3Rpbmcgc3VzcGVu ZC9yZXN1bWUKY2FsbGJhY2tzIGZvciBYZW4gc3VzcGVuZCB3aXRob3V0IG1vZGlmaWNhdGlvbi4K SWYgYSBiYWNrZW5kIGRvZXNuJ3QgaGF2ZSBjb21taXQgMTJlYTcyOTY0NWFjICgieGVuL2Jsa2Jh Y2s6IHVubWFwIGFsbApwZXJzaXN0ZW50IGdyYW50cyB3aGVuIGZyb250ZW5kIGdldHMgZGlzY29u bmVjdGVkIiksIHRoZSBmcm9udGVuZCBtYXkgc2VlCm1hc3NpdmUgYW1vdW50IG9mIGdyYW50IHRh YmxlIHdhcm5pbmcgd2hlbiBmcmVlaW5nIHJlc291cmNlcy4KCiBbICAgMzYuODUyNjU5XSBkZWZl cnJpbmcgZy5lLiAweGY5IChwZm4gMHhmZmZmZmZmZmZmZmZmZmZmKQogWyAgIDM2Ljg1NTA4OV0g eGVuOmdyYW50X3RhYmxlOiBXQVJOSU5HOiBnLmUuIDB4MTEyIHN0aWxsIGluIHVzZSEKCkluIHRo aXMgY2FzZSwgcGVyc2lzdGVudCBncmFudHMgd291bGQgbmVlZCB0byBiZSBkaXNhYmxlZC4KCkVu c3VyZSBubyByZXFzL3JzcHMgaW4gcmluZ3MgYmVmb3JlIGRpc2Nvbm5lY3RpbmcuIFdoZW4gZGlz Y29ubmVjdGluZwp0aGUgZnJvbnRlbmQgZnJvbSB0aGUgYmFja2VuZCBpbiBibGtmcm9udF9mcmVl emUoKSwgdGhlcmUgc3RpbGwgbWF5IGJlCnVuY29uc3VtZWQgcmVxdWVzdHMgb3IgcmVzcG9uc2Vz IGluIHRoZSByaW5ncywgZXNwZWNpYWxseSB3aGVuIHRoZQpiYWNrZW5kIGlzIGJhY2tlZCBieSBu ZXR3b3JrLWJhc2VkIGRldmljZS4gSWYgdGhlIGZyb250ZW5kIGdldHMKZGlzY29ubmVjdGVkIHdp dGggc3VjaCByZXFzL3JzcHMgcmVtYWluaW5nIHRoZXJlLCBpdCBjYW4gY2F1c2UKZ3JhbnQgd2Fy bmluZ3MgYW5kL29yIGxvc2luZyByZXFzL3JzcHMgYnkgZnJlZWluZyBwYWdlcyBhZnRlcndhcmQu ClRoaXMgY2FuIGxlYWQgcmVzdW1lZCBrZXJuZWwgaW50byB1bnJlY292ZXJhYmxlIHN0YXRlIGxp a2UgdW5leHBlY3RlZApmcmVlaW5nIG9mIGdyYW50IHBhZ2UgYW5kL29yIGh1bmcgdGFzayBkdWUg dG8gdGhlIGxvc3QgcmVxcyBvciByc3BzLgpUaGVyZWZvcmUgd2UgaGF2ZSB0byBlbnN1cmUgdGhh dCB0aGVyZSBpcyBubyB1bmNvbnN1bWVkIHJlcXVlc3RzIG9yCnJlc3BvbnNlcyBiZWZvcmUgZGlz Y29ubmVjdGluZy4KCkFjdHVhbGx5LCB0aGUgZnJvbnRlbmQganVzdCBuZWVkcyB0byB3YWl0IGZv ciBzb21lIGFtb3VudCBvZiB0aW1lIHNvIHRoYXQKdGhlIGJhY2tlbmQgY2FuIHByb2Nlc3MgdGhl IHJlcXVlc3RzLCBwdXQgcmVzcG9uc2VzIGFuZCBub3RpZnkgdGhlCmZyb250ZW5kIGJhY2suIFRp bWVvdXQgdXNlZCBoZXJlIGlzIGJhc2VkIG9uIHNvbWUgaGV1cmlzdGljLiBJZiB3ZSBzb21laG93 CmhpdCB0aGUgdGltZW91dCwgaXQgd291bGQgbWVhbiBzb21ldGhpbmcgc2VyaW91cyBoYXBwZW5z IGluIHRoZSBiYWNrZW5kLAp0aGUgZnJvbnRlbmQgd2lsbCBqdXN0IHJldHVybiBhbiBlcnJvciB0 byBQTSBjb3JlIGFuZCBQTQpzdXNwZW5kL2hpYmVybmF0aW9uIHdpbGwgYmUgYWJvcnRlZC4gVGhp cyBtYXkgYmUgc29tZXRoaW5nIHNob3VsZCBiZQpmaXhlZCBieSB0aGUgYmFja2VuZCBzaWRlLCBi dXQgYSBmcm9udGVuZCBzaWRlIGZpeCBpcyBwcm9iYWJseQpzdGlsbCB3b3J0aCBkb2luZyB0byB3 b3JrIHdpdGggYnJvYWRlciBiYWNrZW5kcy4KClNpZ25lZC1vZmYtYnk6IEFuY2hhbCBBZ2Fyd2Fs IDxhbmNoYWxhZ0BhbWF6b24uY29tPgpSZXZpZXdlZC1ieTogTXVuZWhpc2EgS2FtYXRhIDxrYW1h dGFtQGFtYXpvbi5jb20+ClJldmlld2VkLWJ5OiBFZHVhcmRvIFZhbGVudGluIDxlZHV2YWxAYW1h em9uLmNvbT4KLS0tCiBkcml2ZXJzL2Jsb2NrL3hlbi1ibGtmcm9udC5jIHwgMTU4ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KIDEgZmlsZSBjaGFuZ2VkLCAxNTEg aW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2Nr L3hlbi1ibGtmcm9udC5jIGIvZHJpdmVycy9ibG9jay94ZW4tYmxrZnJvbnQuYwppbmRleCBhZTAw YTgyZjM1MGIuLmEyMjM4NjRjMjIyMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay94ZW4tYmxr ZnJvbnQuYworKysgYi9kcml2ZXJzL2Jsb2NrL3hlbi1ibGtmcm9udC5jCkBAIC00Niw2ICs0Niw4 IEBACiAjaW5jbHVkZSA8bGludXgvc2NhdHRlcmxpc3QuaD4KICNpbmNsdWRlIDxsaW51eC9iaXRt YXAuaD4KICNpbmNsdWRlIDxsaW51eC9saXN0Lmg+CisjaW5jbHVkZSA8bGludXgvY29tcGxldGlv bi5oPgorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CiAKICNpbmNsdWRlIDx4ZW4veGVuLmg+CiAj aW5jbHVkZSA8eGVuL3hlbmJ1cy5oPgpAQCAtNzgsNiArODAsOCBAQCBlbnVtIGJsa2lmX3N0YXRl IHsKIAlCTEtJRl9TVEFURV9ESVNDT05ORUNURUQsCiAJQkxLSUZfU1RBVEVfQ09OTkVDVEVELAog CUJMS0lGX1NUQVRFX1NVU1BFTkRFRCwKKwlCTEtJRl9TVEFURV9GUkVFWklORywKKwlCTEtJRl9T VEFURV9GUk9aRU4KIH07CiAKIHN0cnVjdCBncmFudCB7CkBAIC0yMTYsNiArMjIwLDcgQEAgc3Ry dWN0IGJsa2Zyb250X2luZm8KIAkvKiBTYXZlIHVuY29tcGxldGUgcmVxcyBhbmQgYmlvcyBmb3Ig bWlncmF0aW9uLiAqLwogCXN0cnVjdCBsaXN0X2hlYWQgcmVxdWVzdHM7CiAJc3RydWN0IGJpb19s aXN0IGJpb19saXN0OworCXN0cnVjdCBjb21wbGV0aW9uIHdhaXRfYmFja2VuZF9kaXNjb25uZWN0 ZWQ7CiB9OwogCiBzdGF0aWMgdW5zaWduZWQgaW50IG5yX21pbm9yczsKQEAgLTI2Miw2ICsyNjcs MTYgQEAgc3RhdGljIERFRklORV9TUElOTE9DSyhtaW5vcl9sb2NrKTsKIHN0YXRpYyBpbnQgYmxr ZnJvbnRfc2V0dXBfaW5kaXJlY3Qoc3RydWN0IGJsa2Zyb250X3JpbmdfaW5mbyAqcmluZm8pOwog c3RhdGljIHZvaWQgYmxrZnJvbnRfZ2F0aGVyX2JhY2tlbmRfZmVhdHVyZXMoc3RydWN0IGJsa2Zy b250X2luZm8gKmluZm8pOwogc3RhdGljIGludCBuZWdvdGlhdGVfbXEoc3RydWN0IGJsa2Zyb250 X2luZm8gKmluZm8pOworc3RhdGljIHZvaWQgX19ibGtpZl9mcmVlKHN0cnVjdCBibGtmcm9udF9p bmZvICppbmZvKTsKKworc3RhdGljIGlubGluZSBib29sIGJsa2Zyb250X3JpbmdfaXNfYnVzeShz dHJ1Y3QgYmxraWZfZnJvbnRfcmluZyAqcmluZykKK3sKKyAgICAgICBpZiAoUklOR19TSVpFKHJp bmcpID4gUklOR19GUkVFX1JFUVVFU1RTKHJpbmcpIHx8CisJCVJJTkdfSEFTX1VOQ09OU1VNRURf UkVTUE9OU0VTKHJpbmcpKQorCQlyZXR1cm4gdHJ1ZTsKKwllbHNlCisJCXJldHVybiBmYWxzZTsK K30KIAogc3RhdGljIGludCBnZXRfaWRfZnJvbV9mcmVlbGlzdChzdHJ1Y3QgYmxrZnJvbnRfcmlu Z19pbmZvICpyaW5mbykKIHsKQEAgLTk5Niw2ICsxMDExLDcgQEAgc3RhdGljIGludCB4bHZiZF9p bml0X2Jsa19xdWV1ZShzdHJ1Y3QgZ2VuZGlzayAqZ2QsIHUxNiBzZWN0b3Jfc2l6ZSwKIAlpbmZv LT5zZWN0b3Jfc2l6ZSA9IHNlY3Rvcl9zaXplOwogCWluZm8tPnBoeXNpY2FsX3NlY3Rvcl9zaXpl ID0gcGh5c2ljYWxfc2VjdG9yX3NpemU7CiAJYmxraWZfc2V0X3F1ZXVlX2xpbWl0cyhpbmZvKTsK Kwlpbml0X2NvbXBsZXRpb24oJmluZm8tPndhaXRfYmFja2VuZF9kaXNjb25uZWN0ZWQpOwogCiAJ cmV0dXJuIDA7CiB9CkBAIC0xMjE5LDYgKzEyMzUsOCBAQCBzdGF0aWMgdm9pZCB4bHZiZF9yZWxl YXNlX2dlbmRpc2soc3RydWN0IGJsa2Zyb250X2luZm8gKmluZm8pCiAvKiBBbHJlYWR5IGhvbGQg cmluZm8tPnJpbmdfbG9jay4gKi8KIHN0YXRpYyBpbmxpbmUgdm9pZCBraWNrX3BlbmRpbmdfcmVx dWVzdF9xdWV1ZXNfbG9ja2VkKHN0cnVjdCBibGtmcm9udF9yaW5nX2luZm8gKnJpbmZvKQogewor CWlmICh1bmxpa2VseShyaW5mby0+ZGV2X2luZm8tPmNvbm5lY3RlZCA9PSBCTEtJRl9TVEFURV9G UkVFWklORykpCisJCXJldHVybjsKIAlpZiAoIVJJTkdfRlVMTCgmcmluZm8tPnJpbmcpKQogCQli bGtfbXFfc3RhcnRfc3RvcHBlZF9od19xdWV1ZXMocmluZm8tPmRldl9pbmZvLT5ycSwgdHJ1ZSk7 CiB9CkBAIC0xMzQyLDggKzEzNjAsNiBAQCBzdGF0aWMgdm9pZCBibGtpZl9mcmVlX3Jpbmcoc3Ry dWN0IGJsa2Zyb250X3JpbmdfaW5mbyAqcmluZm8pCiAKIHN0YXRpYyB2b2lkIGJsa2lmX2ZyZWUo c3RydWN0IGJsa2Zyb250X2luZm8gKmluZm8sIGludCBzdXNwZW5kKQogewotCXVuc2lnbmVkIGlu dCBpOwotCiAJLyogUHJldmVudCBuZXcgcmVxdWVzdHMgYmVpbmcgaXNzdWVkIHVudGlsIHdlIGZp eCB0aGluZ3MgdXAuICovCiAJaW5mby0+Y29ubmVjdGVkID0gc3VzcGVuZCA/CiAJCUJMS0lGX1NU QVRFX1NVU1BFTkRFRCA6IEJMS0lGX1NUQVRFX0RJU0NPTk5FQ1RFRDsKQEAgLTEzNTEsNiArMTM2 NywxMyBAQCBzdGF0aWMgdm9pZCBibGtpZl9mcmVlKHN0cnVjdCBibGtmcm9udF9pbmZvICppbmZv LCBpbnQgc3VzcGVuZCkKIAlpZiAoaW5mby0+cnEpCiAJCWJsa19tcV9zdG9wX2h3X3F1ZXVlcyhp bmZvLT5ycSk7CiAKKwlfX2Jsa2lmX2ZyZWUoaW5mbyk7Cit9CisKK3N0YXRpYyB2b2lkIF9fYmxr aWZfZnJlZShzdHJ1Y3QgYmxrZnJvbnRfaW5mbyAqaW5mbykKK3sKKwl1bnNpZ25lZCBpbnQgaTsK KwogCWZvciAoaSA9IDA7IGkgPCBpbmZvLT5ucl9yaW5nczsgaSsrKQogCQlibGtpZl9mcmVlX3Jp bmcoJmluZm8tPnJpbmZvW2ldKTsKIApAQCAtMTU1NCw4ICsxNTc3LDEwIEBAIHN0YXRpYyBpcnFy ZXR1cm5fdCBibGtpZl9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2lkKQogCXN0cnVjdCBi bGtmcm9udF9yaW5nX2luZm8gKnJpbmZvID0gKHN0cnVjdCBibGtmcm9udF9yaW5nX2luZm8gKilk ZXZfaWQ7CiAJc3RydWN0IGJsa2Zyb250X2luZm8gKmluZm8gPSByaW5mby0+ZGV2X2luZm87CiAK LQlpZiAodW5saWtlbHkoaW5mby0+Y29ubmVjdGVkICE9IEJMS0lGX1NUQVRFX0NPTk5FQ1RFRCkp Ci0JCXJldHVybiBJUlFfSEFORExFRDsKKwlpZiAodW5saWtlbHkoaW5mby0+Y29ubmVjdGVkICE9 IEJMS0lGX1NUQVRFX0NPTk5FQ1RFRCkpIHsKKwkJaWYgKGluZm8tPmNvbm5lY3RlZCAhPSBCTEtJ Rl9TVEFURV9GUkVFWklORykKKwkJCXJldHVybiBJUlFfSEFORExFRDsKKwl9CiAKIAlzcGluX2xv Y2tfaXJxc2F2ZSgmcmluZm8tPnJpbmdfbG9jaywgZmxhZ3MpOwogIGFnYWluOgpAQCAtMjAwNSw2 ICsyMDMwLDcgQEAgc3RhdGljIGludCBibGtpZl9yZWNvdmVyKHN0cnVjdCBibGtmcm9udF9pbmZv ICppbmZvKQogCXN0cnVjdCBiaW8gKmJpbzsKIAl1bnNpZ25lZCBpbnQgc2VnczsKIAorCWJvb2wg ZnJvemVuID0gaW5mby0+Y29ubmVjdGVkID09IEJMS0lGX1NUQVRFX0ZST1pFTjsKIAlibGtmcm9u dF9nYXRoZXJfYmFja2VuZF9mZWF0dXJlcyhpbmZvKTsKIAkvKiBSZXNldCBsaW1pdHMgY2hhbmdl ZCBieSBibGtfbXFfdXBkYXRlX25yX2h3X3F1ZXVlcygpLiAqLwogCWJsa2lmX3NldF9xdWV1ZV9s aW1pdHMoaW5mbyk7CkBAIC0yMDMxLDYgKzIwNTcsOSBAQCBzdGF0aWMgaW50IGJsa2lmX3JlY292 ZXIoc3RydWN0IGJsa2Zyb250X2luZm8gKmluZm8pCiAJCWtpY2tfcGVuZGluZ19yZXF1ZXN0X3F1 ZXVlcyhyaW5mbyk7CiAJfQogCisJaWYgKGZyb3plbikKKwkJcmV0dXJuIDA7CisKIAlsaXN0X2Zv cl9lYWNoX2VudHJ5X3NhZmUocmVxLCBuLCAmaW5mby0+cmVxdWVzdHMsIHF1ZXVlbGlzdCkgewog CQkvKiBSZXF1ZXVlIHBlbmRpbmcgcmVxdWVzdHMgKGZsdXNoIG9yIGRpc2NhcmQpICovCiAJCWxp c3RfZGVsX2luaXQoJnJlcS0+cXVldWVsaXN0KTsKQEAgLTIzMzUsNiArMjM2NCw3IEBAIHN0YXRp YyB2b2lkIGJsa2Zyb250X2Nvbm5lY3Qoc3RydWN0IGJsa2Zyb250X2luZm8gKmluZm8pCiAKIAkJ cmV0dXJuOwogCWNhc2UgQkxLSUZfU1RBVEVfU1VTUEVOREVEOgorCWNhc2UgQkxLSUZfU1RBVEVf RlJPWkVOOgogCQkvKgogCQkgKiBJZiB3ZSBhcmUgcmVjb3ZlcmluZyBmcm9tIHN1c3BlbnNpb24s IHdlIG5lZWQgdG8gd2FpdAogCQkgKiBmb3IgdGhlIGJhY2tlbmQgdG8gYW5ub3VuY2UgaXQncyBm ZWF0dXJlcyBiZWZvcmUKQEAgLTI0NTIsMTIgKzI0ODIsMzcgQEAgc3RhdGljIHZvaWQgYmxrYmFj a19jaGFuZ2VkKHN0cnVjdCB4ZW5idXNfZGV2aWNlICpkZXYsCiAJCWJyZWFrOwogCiAJY2FzZSBY ZW5idXNTdGF0ZUNsb3NlZDoKLQkJaWYgKGRldi0+c3RhdGUgPT0gWGVuYnVzU3RhdGVDbG9zZWQp CisJCWlmIChkZXYtPnN0YXRlID09IFhlbmJ1c1N0YXRlQ2xvc2VkKSB7CisJCQlpZiAoaW5mby0+ Y29ubmVjdGVkID09IEJMS0lGX1NUQVRFX0ZSRUVaSU5HKSB7CisJCQkJX19ibGtpZl9mcmVlKGlu Zm8pOworCQkJCWluZm8tPmNvbm5lY3RlZCA9IEJMS0lGX1NUQVRFX0ZST1pFTjsKKwkJCQljb21w bGV0ZSgmaW5mby0+d2FpdF9iYWNrZW5kX2Rpc2Nvbm5lY3RlZCk7CisJCQkJYnJlYWs7CisJCQl9 CisKKwkJCWJyZWFrOworCQl9CisKKwkJLyoKKwkJICogV2UgbWF5IHNvbWVob3cgcmVjZWl2ZSBi YWNrZW5kJ3MgQ2xvc2VkIGFnYWluIHdoaWxlIHRoYXdpbmcKKwkJICogb3IgcmVzdG9yaW5nIGFu ZCBpdCBjYXVzZXMgdGhhd2luZyBvciByZXN0b3JpbmcgdG8gZmFpbC4KKwkJICogSWdub3JlIHN1 Y2ggdW5leHBlY3RlZCBzdGF0ZSBhbnl3YXkuCisJCSAqLworCQlpZiAoaW5mby0+Y29ubmVjdGVk ID09IEJMS0lGX1NUQVRFX0ZST1pFTiAmJgorCQkJCWRldi0+c3RhdGUgPT0gWGVuYnVzU3RhdGVJ bml0aWFsaXNlZCkgeworCQkJZGV2X2RiZygmZGV2LT5kZXYsCisJCQkJCSJpZ25vcmUgdGhlIGJh Y2tlbmQncyBDbG9zZWQgc3RhdGU6ICVzIiwKKwkJCQkJZGV2LT5ub2RlbmFtZSk7CiAJCQlicmVh azsKKwkJfQogCQkvKiBmYWxsIHRocm91Z2ggKi8KIAljYXNlIFhlbmJ1c1N0YXRlQ2xvc2luZzoK LQkJaWYgKGluZm8pCi0JCQlibGtmcm9udF9jbG9zaW5nKGluZm8pOworCQlpZiAoaW5mbykgewor CQkJaWYgKGluZm8tPmNvbm5lY3RlZCA9PSBCTEtJRl9TVEFURV9GUkVFWklORykKKwkJCQl4ZW5i dXNfZnJvbnRlbmRfY2xvc2VkKGRldik7CisJCQllbHNlCisJCQkJYmxrZnJvbnRfY2xvc2luZyhp bmZvKTsKKwkJfQogCQlicmVhazsKIAl9CiB9CkBAIC0yNTk0LDYgKzI2NDksOTIgQEAgc3RhdGlj IHZvaWQgYmxraWZfcmVsZWFzZShzdHJ1Y3QgZ2VuZGlzayAqZGlzaywgZm1vZGVfdCBtb2RlKQog CW11dGV4X3VubG9jaygmYmxrZnJvbnRfbXV0ZXgpOwogfQogCitzdGF0aWMgaW50IGJsa2Zyb250 X2ZyZWV6ZShzdHJ1Y3QgeGVuYnVzX2RldmljZSAqZGV2KQoreworCXVuc2lnbmVkIGludCBpOwor CXN0cnVjdCBibGtmcm9udF9pbmZvICppbmZvID0gZGV2X2dldF9kcnZkYXRhKCZkZXYtPmRldik7 CisJc3RydWN0IGJsa2Zyb250X3JpbmdfaW5mbyAqcmluZm87CisJc3RydWN0IGJsa2lmX2Zyb250 X3JpbmcgKnJpbmc7CisJLyogVGhpcyB3b3VsZCBiZSByZWFzb25hYmxlIHRpbWVvdXQgYXMgdXNl ZCBpbiB4ZW5idXNfZGV2X3NodXRkb3duKCkgKi8KKwl1bnNpZ25lZCBpbnQgdGltZW91dCA9IDUg KiBIWjsKKwlpbnQgZXJyID0gMDsKKworCWluZm8tPmNvbm5lY3RlZCA9IEJMS0lGX1NUQVRFX0ZS RUVaSU5HOworCisJYmxrX21xX3N0b3BfaHdfcXVldWVzKGluZm8tPnJxKTsKKworCWZvciAoaSA9 IDA7IGkgPCBpbmZvLT5ucl9yaW5nczsgaSsrKSB7CisJCXJpbmZvID0gJmluZm8tPnJpbmZvW2ld OworCisJCWdudHRhYl9jYW5jZWxfZnJlZV9jYWxsYmFjaygmcmluZm8tPmNhbGxiYWNrKTsKKwkJ Zmx1c2hfd29yaygmcmluZm8tPndvcmspOworCX0KKworCWZvciAoaSA9IDA7IGkgPCBpbmZvLT5u cl9yaW5nczsgaSsrKSB7CisJCXNwaW5sb2NrX3QgKmxvY2s7CisJCWJvb2wgYnVzeTsKKwkJdW5z aWduZWQgbG9uZyByZXFfdGltZW91dF9tcyA9IDI1OworCQl1bnNpZ25lZCBsb25nIHJpbmdfdGlt ZW91dDsKKworCQlyaW5mbyA9ICZpbmZvLT5yaW5mb1tpXTsKKwkJcmluZyA9ICZyaW5mby0+cmlu ZzsKKworCQlsb2NrID0gJnJpbmZvLT5yaW5nX2xvY2s7CisKKwkJcmluZ190aW1lb3V0ID0gamlm ZmllcyArCisJCQltc2Vjc190b19qaWZmaWVzKHJlcV90aW1lb3V0X21zICogUklOR19TSVpFKHJp bmcpKTsKKworCQlkbyB7CisJCQlzcGluX2xvY2tfaXJxKGxvY2spOworCQkJYnVzeSA9IGJsa2Zy b250X3JpbmdfaXNfYnVzeShyaW5nKTsKKwkJCXNwaW5fdW5sb2NrX2lycShsb2NrKTsKKworCQkJ aWYgKGJ1c3kpCisJCQkJbXNsZWVwKHJlcV90aW1lb3V0X21zKTsKKwkJCWVsc2UKKwkJCQlicmVh azsKKwkJfSB3aGlsZSAodGltZV9pc19hZnRlcl9qaWZmaWVzKHJpbmdfdGltZW91dCkpOworCisJ CS8qIFRpbWVkIG91dCAqLworCQlpZiAoYnVzeSkgeworCQkJeGVuYnVzX2Rldl9lcnJvcihkZXYs IGVyciwgInRoZSByaW5nIGlzIHN0aWxsIGJ1c3kiKTsKKwkJCWluZm8tPmNvbm5lY3RlZCA9IEJM S0lGX1NUQVRFX0NPTk5FQ1RFRDsKKwkJCXJldHVybiAtRUJVU1k7CisJCX0KKwl9CisKKwkvKiBL aWNrIHRoZSBiYWNrZW5kIHRvIGRpc2Nvbm5lY3QgKi8KKwl4ZW5idXNfc3dpdGNoX3N0YXRlKGRl diwgWGVuYnVzU3RhdGVDbG9zaW5nKTsKKworCS8qCisJICogV2UgZG9uJ3Qgd2FudCB0byBtb3Zl IGZvcndhcmQgYmVmb3JlIHRoZSBmcm9udGVuZCBpcyBkaWNvbm5lY3RlZAorCSAqIGZyb20gdGhl IGJhY2tlbmQgY2xlYW5seS4KKwkgKi8KKwl0aW1lb3V0ID0gd2FpdF9mb3JfY29tcGxldGlvbl90 aW1lb3V0KCZpbmZvLT53YWl0X2JhY2tlbmRfZGlzY29ubmVjdGVkLAorCQkJCQkgICAgICB0aW1l b3V0KTsKKwlpZiAoIXRpbWVvdXQpIHsKKwkJZXJyID0gLUVCVVNZOworCQl4ZW5idXNfZGV2X2Vy cm9yKGRldiwgZXJyLCAiRnJlZXppbmcgdGltZWQgb3V0OyIKKwkJCQkgInRoZSBkZXZpY2UgbWF5 IGJlY29tZSBpbmNvbnNpc3RlbnQgc3RhdGUiKTsKKwl9CisKKwlyZXR1cm4gZXJyOworfQorCitz dGF0aWMgaW50IGJsa2Zyb250X3Jlc3RvcmUoc3RydWN0IHhlbmJ1c19kZXZpY2UgKmRldikKK3sK KwlzdHJ1Y3QgYmxrZnJvbnRfaW5mbyAqaW5mbyA9IGRldl9nZXRfZHJ2ZGF0YSgmZGV2LT5kZXYp OworCWludCBlcnIgPSAwOworCisJZXJyID0gdGFsa190b19ibGtiYWNrKGRldiwgaW5mbyk7CisJ aWYgKGVycikKKwkJZ290byBvdXQ7CisJYmxrX21xX3VwZGF0ZV9ucl9od19xdWV1ZXMoJmluZm8t PnRhZ19zZXQsIGluZm8tPm5yX3JpbmdzKTsKKworb3V0OgorCXJldHVybiBlcnI7Cit9CisKIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgYmxvY2tfZGV2aWNlX29wZXJhdGlvbnMgeGx2YmRfYmxvY2tfZm9w cyA9CiB7CiAJLm93bmVyID0gVEhJU19NT0RVTEUsCkBAIC0yNjE2LDYgKzI3NTcsOSBAQCBzdGF0 aWMgc3RydWN0IHhlbmJ1c19kcml2ZXIgYmxrZnJvbnRfZHJpdmVyID0gewogCS5yZXN1bWUgPSBi bGtmcm9udF9yZXN1bWUsCiAJLm90aGVyZW5kX2NoYW5nZWQgPSBibGtiYWNrX2NoYW5nZWQsCiAJ LmlzX3JlYWR5ID0gYmxrZnJvbnRfaXNfcmVhZHksCisJLmZyZWV6ZSA9IGJsa2Zyb250X2ZyZWV6 ZSwKKwkudGhhdyA9IGJsa2Zyb250X3Jlc3RvcmUsCisJLnJlc3RvcmUgPSBibGtmcm9udF9yZXN0 b3JlCiB9OwogCiBzdGF0aWMgaW50IF9faW5pdCB4bGJsa19pbml0KHZvaWQpCi0tIAoyLjEzLjYK CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2 ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xp c3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs