From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rodrigo Vivi Subject: [PATCH 2/2] drm/i915: Add Baytrail PSR Support. Date: Wed, 5 Feb 2014 17:04:31 -0200 Message-ID: <1391627071-10097-1-git-send-email-rodrigo.vivi@gmail.com> References: <20140204135424.GT17001@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pd0-f170.google.com (mail-pd0-f170.google.com [209.85.192.170]) by gabe.freedesktop.org (Postfix) with ESMTP id BE5D0435A9 for ; Wed, 5 Feb 2014 11:03:59 -0800 (PST) Received: by mail-pd0-f170.google.com with SMTP id p10so721564pdj.1 for ; Wed, 05 Feb 2014 11:03:59 -0800 (PST) In-Reply-To: <20140204135424.GT17001@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces@lists.freedesktop.org Errors-To: intel-gfx-bounces@lists.freedesktop.org To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org VGhpcyBwYXRjaCBhZGRzIFBTUiBTdXBwb3J0IHRvIEJheXRyYWlsLgoKQmF5dHJhaWwgY2Fubm90 IGVhc2lseSBkZXRlY3Qgc2NyZWVuIHVwZGF0ZXMgYW5kIGZvcmNlIFBTUiBleGl0LgpTbyB3ZSBp bmFjdGl2YXRlIGl0IG9uIHtidXN5X2lvY3RsLCBzZXRfZG9tYWluLCBzd19maW5pc2ggYW5kIG1h cmtfYnVzeX0KYW5kIHVwZGF0ZSB0byBlbmFibGUgaXQgYmFjayBvbiBuZXh0IGRpc3BsYXkgbWFy a19pZGxlLgoKdjI6IEFsc28gaW5hY3RpdmF0ZSBQU1Igb24gY3Vyc29yIHVwZGF0ZS4KdjM6IElu YWN0aXZhdGUgUFNSIG9uIG1hcmtfYnVzeSwgZHNldF9kb21haW4gYW5kIHN3X2ZpbmlzaF9pb2N0 bCwgYW5kCiAgICBlYXJseSBvbiBwYWdlIGZsaXAgYmVzaWRlcyBhdm9pZCBpbml0aWFsaXppbmcg aW5hY3RpdmUvYWN0aXZlIGZsYWcKICAgIG1vcmUgdGhhbiBvbmNlLgp2NDogRml4IGlkZW50YXRp b24gaXNzdWVzLgp2NTogUmViYXNlIGFuZCBhZGQgQmF5dHJhaWwgcGVyIHBpcGUgc3VwcG9ydCBh bHRob3VnaCBsZWF2aW5nIFBJUEVfQgogICAgc3VwcG9ydCBkaXNhYmxlZCBieSBmb3Igbm93IHNp bmNlIGl0IGlzbid0IHdvcmtpbmcgcHJvcGVybHkgeWV0Lgp2NjogUmVtb3ZpbmcgZm9yZ290dGVu IGNvbW1lbnQgYW5kIHVzZWxlc3MgY2xrZ2F0aW5nIGRlZmluaXRpb24uCnY3OiBSZW1vdmUgaW5h Y3RpdmF0ZSBmcm9tIHNldF9kb21haW4uIENocmlzIHdhcm5lZCB0aGlzIHdhcyBzZW1hbnRpY2Fs eQogICAgd3JvbmcuCnY4OiBBY2NlcHQgVmlsbGUncyBzdWdnZXN0aW9uczogVXNlIHJlZ2lzdGVy J3MgbmFtZXMgbWF0Y2hpbmcgc3BlYyBhbmQKICAgIHdhcm4gaWYgdHJhbnNpdGlvbiB0b29rIGxv bmdlciB0aGFuIGl0IHNob3VsZC4Kdjk6IE5ldyB2ZXJzaW9uIHdpdGggZGVsYXllZCB3b3JrIHRv IGdldCBQU1IgYmFjay4gRGlzYWJsaW5nIGl0IG9uCiAgICBzZXRfZG9tYWluIGJ1dCBub3QgcmVz Y2hlZHVpbmcgaXQgYmFjayB1bnRpbCBuZXh0IGZpbmlzaF9wYWdlX2ZsaXAuCgpDYzogQ2hyaXMg V2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CkNjOiBWaWxsZSBTeXJqw6Rsw6QgPHZp bGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBSb2RyaWdvIFZpdmkg PHJvZHJpZ28udml2aUBnbWFpbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k ZWJ1Z2ZzLmMgIHwgIDM2ICsrKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAg ICAgfCAgIDUgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICB8ICAxMiAr KwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICAgIHwgIDM3ICsrKysrCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N1c3BlbmQuYyAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8ICAxOCArKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RwLmMgICAgICB8IDI1NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwgICAxICsKIDggZmlsZXMgY2hh bmdlZCwgMzIzIGluc2VydGlvbnMoKyksIDQ0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kZWJ1Z2ZzLmMKaW5kZXggYmM4NzA3Zi4uMjk0OWM0OCAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kZWJ1Z2ZzLmMKQEAgLTE5MDAsNiArMTkwMCw4IEBAIHN0YXRpYyBpbnQgaTkxNV9lZHBf cHNyX3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCiAJc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IG5vZGUtPm1pbm9yLT5kZXY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAl1MzIgcHNycGVyZiA9IDA7CisJdTMyIHN0 YXRBID0gMDsKKwl1MzIgc3RhdEIgPSAwOwogCWJvb2wgZW5hYmxlZCA9IGZhbHNlOwogCiAJaW50 ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwpAQCAtMTkwNywxNCArMTkwOSwzOCBAQCBzdGF0 aWMgaW50IGk5MTVfZWRwX3Bzcl9zdGF0dXMoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRh KQogCXNlcV9wcmludGYobSwgIlNpbmtfU3VwcG9ydDogJXNcbiIsIHllc25vKGRldl9wcml2LT5w c3Iuc2lua19zdXBwb3J0KSk7CiAJc2VxX3ByaW50ZihtLCAiU291cmNlX09LOiAlc1xuIiwgeWVz bm8oZGV2X3ByaXYtPnBzci5zb3VyY2Vfb2spKTsKIAotCWVuYWJsZWQgPSBIQVNfUFNSKGRldikg JiYKLQkJSTkxNV9SRUFEKEVEUF9QU1JfQ1RMKGRldikpICYgRURQX1BTUl9FTkFCTEU7Ci0Jc2Vx X3ByaW50ZihtLCAiRW5hYmxlZDogJXNcbiIsIHllc25vKGVuYWJsZWQpKTsKKwlpZiAoSEFTX1BT UihkZXYpKSB7CisJCWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKKwkJCXN0YXRBID0gSTkxNV9S RUFEKFZMVl9QU1JTVEFUKFBJUEVfQSkpICYKKwkJCQlWTFZfRURQX1BTUl9DVVJSX1NUQVRFX01B U0s7CisJCQlzdGF0QiA9IEk5MTVfUkVBRChWTFZfUFNSU1RBVChQSVBFX0IpKSAmCisJCQkJVkxW X0VEUF9QU1JfQ1VSUl9TVEFURV9NQVNLOworCQkJZW5hYmxlZCA9ICgoc3RhdEEgPT0gVkxWX0VE UF9QU1JfQUNUSVZFX05PUkZCX1VQKSB8fAorCQkJCSAgIChzdGF0QSA9PSBWTFZfRURQX1BTUl9B Q1RJVkVfU0ZfVVBEQVRFKSB8fAorCQkJCSAgIChzdGF0QiA9PSBWTFZfRURQX1BTUl9BQ1RJVkVf Tk9SRkJfVVApIHx8CisJCQkJICAgKHN0YXRCID09IFZMVl9FRFBfUFNSX0FDVElWRV9TRl9VUERB VEUpKTsKKwkJfSBlbHNlCisJCQllbmFibGVkID0gSTkxNV9SRUFEKEVEUF9QU1JfQ1RMKGRldikp ICYgRURQX1BTUl9FTkFCTEU7CisJfQorCXNlcV9wcmludGYobSwgIkVuYWJsZWQ6ICVzIiwgeWVz bm8oZW5hYmxlZCkpOwogCi0JaWYgKEhBU19QU1IoZGV2KSkKKwlpZiAoSVNfVkFMTEVZVklFVyhk ZXYpKSB7CisJCWlmICgoc3RhdEEgPT0gVkxWX0VEUF9QU1JfQUNUSVZFX05PUkZCX1VQKSB8fAor CQkgICAgKHN0YXRBID09IFZMVl9FRFBfUFNSX0FDVElWRV9TRl9VUERBVEUpKQorCQkJc2VxX3B1 dHMobSwgIiBwaXBlIEEiKTsKKwkJaWYgKChzdGF0QiA9PSBWTFZfRURQX1BTUl9BQ1RJVkVfTk9S RkJfVVApIHx8CisJCSAgICAoc3RhdEIgPT0gVkxWX0VEUF9QU1JfQUNUSVZFX1NGX1VQREFURSkp CisJCQlzZXFfcHV0cyhtLCAiIHBpcGUgQiIpOworCX0KKworCXNlcV9wdXRzKG0sICJcbiIpOwor CisJLyogVkxWIFBTUiBoYXMgbm8ga2luZCBvZiBwZXJmb3JtYW5jZSBjb3VudGVyICovCisJaWYg KEhBU19QU1IoZGV2KSAmJiAhSVNfVkFMTEVZVklFVyhkZXYpKSB7CiAJCXBzcnBlcmYgPSBJOTE1 X1JFQUQoRURQX1BTUl9QRVJGX0NOVChkZXYpKSAmCiAJCQlFRFBfUFNSX1BFUkZfQ05UX01BU0s7 Ci0Jc2VxX3ByaW50ZihtLCAiUGVyZm9ybWFuY2VfQ291bnRlcjogJXVcbiIsIHBzcnBlcmYpOwor CQlzZXFfcHJpbnRmKG0sICJQZXJmb3JtYW5jZV9Db3VudGVyOiAldVxuIiwgcHNycGVyZik7CisJ fQogCiAJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwogCXJldHVybiAwOwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmgKaW5kZXggMjE0NzBiZS4uODdjMzQ2YSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oCkBAIC03NDcsNyArNzQ3LDkgQEAgc3RydWN0IGk5MTVfcHNyIHsKIAlib29sIHNpbmtf c3VwcG9ydDsKIAlib29sIHNvdXJjZV9vazsKIAlib29sIHNldHVwX2RvbmU7CisJYm9vbCBhY3Rp dmU7CiAJc3RydWN0IG11dGV4IGxvY2s7CisJc3RydWN0IGRlbGF5ZWRfd29yayB3b3JrOwogfTsK IAogZW51bSBpbnRlbF9wY2ggewpAQCAtMTg2Nyw3ICsxODY5LDggQEAgc3RydWN0IGRybV9pOTE1 X2ZpbGVfcHJpdmF0ZSB7CiAKICNkZWZpbmUgSEFTX0RESShkZXYpCQkoSU5URUxfSU5GTyhkZXYp LT5oYXNfZGRpKQogI2RlZmluZSBIQVNfRlBHQV9EQkdfVU5DTEFJTUVEKGRldikJKElOVEVMX0lO Rk8oZGV2KS0+aGFzX2ZwZ2FfZGJnKQotI2RlZmluZSBIQVNfUFNSKGRldikJCShJU19IQVNXRUxM KGRldikgfHwgSVNfQlJPQURXRUxMKGRldikpCisjZGVmaW5lIEhBU19QU1IoZGV2KQkJKElTX0hB U1dFTEwoZGV2KSB8fCBJU19CUk9BRFdFTEwoZGV2KSB8fCBcCisJCQkJIElTX1ZBTExFWVZJRVco ZGV2KSkKICNkZWZpbmUgSEFTX1BDOChkZXYpCQkoSVNfSEFTV0VMTChkZXYpKSAvKiBYWFggSFNX OlVMWCAqLwogI2RlZmluZSBIQVNfUlVOVElNRV9QTShkZXYpCShJU19IQVNXRUxMKGRldikpCiAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbS5jCmluZGV4IDM5NzcwZjcuLjVlZjEzODAgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW0uYwpAQCAtMTI1Niw2ICsxMjU2LDE0IEBAIGk5MTVfZ2VtX3NldF9kb21haW5f aW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJZ290byB1bmxvY2s7 CiAJfQogCisJLyogSGVyZSB3ZSBkb24ndCByZXNjaGVkdWxlIHdvcmsgdG8gZ2V0IFBTUiBiYWNr IGJlY2F1c2UgdXNlcnNwYWNlCisJKiBjYW4gc2V0IGRvbWFpbiBhbmQgdGFrZSBhcyBtdWNoIGFz IHRpbWUgaXQgd2FudHMgdG8gd3JpdGUgaXQuCisJKiBXZSBvbmx5IHJlc2NoZWR1bGUgaXQgYmFj ayBvbiBuZXh0IGZpbmlzaF9wYWdlX2ZsaXAuIFRoZXJlIGlzIHRoZQorCSogcmlzayBvZiBQU1Ig YmUgaW5hY3RpdmUgZm9yZXZlciBkZXBlbmRpbmcgb24gaG93IGNvbXBvc2l0b3Igd29ya3MsCisJ KiBidXQgdGhpcyBpcyB0aGUgc2FmZXN0IHdheSB0byBhdm9pZCBsb29zaW5nIHNjcmVlbiB1cGRh dGVzLgorCSovCisJaW50ZWxfZWRwX3Bzcl9pbmFjdGl2YXRlKGRldiwgZmFsc2UpOworCiAJLyog VHJ5IHRvIGZsdXNoIHRoZSBvYmplY3Qgb2ZmIHRoZSBHUFUgd2l0aG91dCBob2xkaW5nIHRoZSBs b2NrLgogCSAqIFdlIHdpbGwgcmVwZWF0IHRoZSBmbHVzaCBob2xkaW5nIHRoZSBsb2NrIGluIHRo ZSBub3JtYWwgbWFubmVyCiAJICogdG8gY2F0Y2ggY2FzZXMgd2hlcmUgd2UgYXJlIGdhenVtcGVk LgpAQCAtMTI5OSw2ICsxMzA3LDggQEAgaTkxNV9nZW1fc3dfZmluaXNoX2lvY3RsKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAor CWludGVsX2VkcF9wc3JfaW5hY3RpdmF0ZShkZXYsIHRydWUpOworCiAJb2JqID0gdG9faW50ZWxf Ym8oZHJtX2dlbV9vYmplY3RfbG9va3VwKGRldiwgZmlsZSwgYXJncy0+aGFuZGxlKSk7CiAJaWYg KCZvYmotPmJhc2UgPT0gTlVMTCkgewogCQlyZXQgPSAtRU5PRU5UOwpAQCAtNDA1OSw2ICs0MDY5 LDggQEAgaTkxNV9nZW1fYnVzeV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpk YXRhLAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKKwlpbnRlbF9lZHBfcHNyX2luYWN0aXZh dGUoZGV2LCB0cnVlKTsKKwogCW9iaiA9IHRvX2ludGVsX2JvKGRybV9nZW1fb2JqZWN0X2xvb2t1 cChkZXYsIGZpbGUsIGFyZ3MtPmhhbmRsZSkpOwogCWlmICgmb2JqLT5iYXNlID09IE5VTEwpIHsK IAkJcmV0ID0gLUVOT0VOVDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCmluZGV4IGNiYmFmMjYuLmE1 ODE1ZDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaApAQCAtMTk2OCw2ICsxOTY4LDQzIEBACiAj ZGVmaW5lIEJDTFJQQVQocGlwZSkgX1BJUEUocGlwZSwgX0JDTFJQQVRfQSwgX0JDTFJQQVRfQikK ICNkZWZpbmUgVlNZTkNTSElGVCh0cmFucykgX1RSQU5TQ09ERVIodHJhbnMsIF9WU1lOQ1NISUZU X0EsIF9WU1lOQ1NISUZUX0IpCiAKKy8qIFZMViBlRFAgUFNSIHJlZ2lzdGVycyAqLworI2RlZmlu ZSBfUFNSQ1RMQQkJCQkoVkxWX0RJU1BMQVlfQkFTRSArIDB4NjAwOTApCisjZGVmaW5lIF9QU1JD VExCCQkJCShWTFZfRElTUExBWV9CQVNFICsgMHg2MTA5MCkKKyNkZWZpbmUgIFZMVl9FRFBfUFNS X0VOQUJMRQkJCSgxPDwwKQorI2RlZmluZSAgVkxWX0VEUF9QU1JfUkVTRVQJCQkoMTw8MSkKKyNk ZWZpbmUgIFZMVl9FRFBfUFNSX01PREVfTUFTSwkJCSg3PDwyKQorI2RlZmluZSAgVkxWX0VEUF9Q U1JfTU9ERV9IV19USU1FUgkJKDE8PDMpCisjZGVmaW5lICBWTFZfRURQX1BTUl9NT0RFX1NXX1RJ TUVSCQkoMTw8MikKKyNkZWZpbmUgIFZMVl9FRFBfUFNSX1NJTkdMRV9GUkFNRV9VUERBVEUJKDE8 PDcpCisjZGVmaW5lICBWTFZfRURQX1BTUl9BQ1RJVkVfRU5UUlkJCSgxPDw4KQorI2RlZmluZSAg VkxWX0VEUF9QU1JfU1JDX1RSQU5TTUlUVEVSX1NUQVRFCSgxPDw5KQorI2RlZmluZSAgVkxWX0VE UF9QU1JfREJMX0ZSQU1FCQkJKDE8PDEwKQorI2RlZmluZSAgVkxWX0VEUF9QU1JfRlJBTUVfQ09V TlRfTUFTSwkJKDB4ZmY8PDE2KQorI2RlZmluZSAgVkxWX0VEUF9QU1JfSURMRV9GUkFNRV9TSElG VAkJMTYKKyNkZWZpbmUgIFZMVl9FRFBfUFNSX0lOVF9UUkFOU0lUSU9OCQkoMTw8MjQpCisjZGVm aW5lIFZMVl9QU1JDVEwocGlwZSkgX1BJUEUocGlwZSwgX1BTUkNUTEEsIF9QU1JDVExCKQorCisj ZGVmaW5lIF9WU0NTRFBBCQkJKFZMVl9ESVNQTEFZX0JBU0UgKyAweDYwMGEwKQorI2RlZmluZSBf VlNDU0RQQgkJCShWTFZfRElTUExBWV9CQVNFICsgMHg2MTBhMCkKKyNkZWZpbmUgIFZMVl9FRFBf UFNSX1NEUF9GUkVRX01BU0sJKDM8PDMwKQorI2RlZmluZSAgVkxWX0VEUF9QU1JfU0RQX0ZSRVFf T05DRQkoMTw8MzEpCisjZGVmaW5lICBWTFZfRURQX1BTUl9TRFBfRlJFUV9FVkZSQU1FCSgxPDwz MCkKKyNkZWZpbmUgVkxWX1ZTQ1NEUChwaXBlKQlfUElQRShwaXBlLCBfVlNDU0RQQSwgX1ZTQ1NE UEIpCisKKyNkZWZpbmUgX1BTUlNUQVRBCQkJKFZMVl9ESVNQTEFZX0JBU0UgKyAweDYwMDk0KQor I2RlZmluZSBfUFNSU1RBVEIJCQkoVkxWX0RJU1BMQVlfQkFTRSArIDB4NjEwOTQpCisjZGVmaW5l ICBWTFZfRURQX1BTUl9MQVNUX1NUQVRFX01BU0sJKDc8PDMpCisjZGVmaW5lICBWTFZfRURQX1BT Ul9DVVJSX1NUQVRFX01BU0sJNworI2RlZmluZSAgVkxWX0VEUF9QU1JfRElTQUJMRUQJCSgwPDww KQorI2RlZmluZSAgVkxWX0VEUF9QU1JfSU5BQ1RJVkUJCSgxPDwwKQorI2RlZmluZSAgVkxWX0VE UF9QU1JfSU5fVFJBTlNfVE9fQUNUSVZFCSgyPDwwKQorI2RlZmluZSAgVkxWX0VEUF9QU1JfQUNU SVZFX05PUkZCX1VQCSgzPDwwKQorI2RlZmluZSAgVkxWX0VEUF9QU1JfQUNUSVZFX1NGX1VQREFU RQkoNDw8MCkKKyNkZWZpbmUgIFZMVl9FRFBfUFNSX0VYSVQJCSg1PDwwKQorI2RlZmluZSAgVkxW X0VEUF9QU1JfSU5fVFJBTlMJCSgxPDw3KQorI2RlZmluZSBWTFZfUFNSU1RBVChwaXBlKSBfUElQ RShwaXBlLCBfUFNSU1RBVEEsIF9QU1JTVEFUQikKKwogLyogSFNXKyBlRFAgUFNSIHJlZ2lzdGVy cyAqLwogI2RlZmluZSBFRFBfUFNSX0JBU0UoZGV2KSAgICAgICAgICAgICAgICAgICAgICAgKElT X0hBU1dFTEwoZGV2KSA/IDB4NjQ4MDAgOiAweDZmODAwKQogI2RlZmluZSBFRFBfUFNSX0NUTChk ZXYpCQkJKEVEUF9QU1JfQkFTRShkZXYpICsgMCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfc3VzcGVuZC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zdXNwZW5k LmMKaW5kZXggZmZjYmEyMS4uNmIzMTAyMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9zdXNwZW5kLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zdXNwZW5k LmMKQEAgLTI4OSw4ICsyODksOCBAQCBzdGF0aWMgdm9pZCBpOTE1X3Jlc3RvcmVfZGlzcGxheShz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCX0KIAogCS8qIEZvcmNlIGEgZnVsbCBQU1Igc2V0dXAg b24gcmVzdW1lICovCisJaW50ZWxfZWRwX3Bzcl9pbmFjdGl2YXRlKGRldiwgZmFsc2UpOwogCWRl dl9wcml2LT5wc3Iuc2V0dXBfZG9uZSA9IGZhbHNlOwotCWludGVsX2VkcF9wc3JfdXBkYXRlKGRl dik7CiAKIAkvKiBvbmx5IHJlc3RvcmUgRkJDIGluZm8gb24gdGhlIHBsYXRmb3JtIHRoYXQgc3Vw cG9ydHMgRkJDKi8KIAlpbnRlbF9kaXNhYmxlX2ZiYyhkZXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jCmluZGV4IDFhOWFhMTkuLjkyZDZkZjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMKQEAgLTQ0NTEsOSArNDQ1MSwxMyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9j b25uZWN0b3JfY2hlY2tfc3RhdGUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQog ICogY29uc2lkZXIuICovCiB2b2lkIGludGVsX2Nvbm5lY3Rvcl9kcG1zKHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IsIGludCBtb2RlKQogeworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBjb25uZWN0b3ItPmRldjsKKwogCS8qIEFsbCB0aGUgc2ltcGxlIGNhc2VzIG9ubHkgc3VwcG9y dCB0d28gZHBtcyBzdGF0ZXMuICovCi0JaWYgKG1vZGUgIT0gRFJNX01PREVfRFBNU19PTikKKwlp ZiAobW9kZSAhPSBEUk1fTU9ERV9EUE1TX09OKSB7CiAJCW1vZGUgPSBEUk1fTU9ERV9EUE1TX09G RjsKKwkJaW50ZWxfZWRwX3Bzcl9pbmFjdGl2YXRlKGRldiwgZmFsc2UpOworCX0KIAogCWlmICht b2RlID09IGNvbm5lY3Rvci0+ZHBtcykKIAkJcmV0dXJuOwpAQCAtNzUwMSw2ICs3NTA1LDggQEAg c3RhdGljIHZvaWQgaW50ZWxfY3J0Y191cGRhdGVfY3Vyc29yKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywKIAl1MzIgYmFzZSA9IDAsIHBvcyA9IDA7CiAJYm9vbCB2aXNpYmxlOwogCisJaW50ZWxfZWRw X3Bzcl9pbmFjdGl2YXRlKGRldiwgdHJ1ZSk7CisKIAlpZiAob24pCiAJCWJhc2UgPSBpbnRlbF9j cnRjLT5jdXJzb3JfYWRkcjsKIApAQCAtODIzMCwxMiArODIzNiwxNSBAQCB2b2lkIGludGVsX21h cmtfaWRsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQlnZW42X3Jwc19pZGxlKGRldi0+ZGV2 X3ByaXZhdGUpOwogfQogCisKIHZvaWQgaW50ZWxfbWFya19mYl9idXN5KHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmosCiAJCQlzdHJ1Y3QgaW50ZWxfcmluZ19idWZmZXIgKnJpbmcpCiB7 CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG9iai0+YmFzZS5kZXY7CiAJc3RydWN0IGRybV9j cnRjICpjcnRjOwogCisJaW50ZWxfZWRwX3Bzcl9pbmFjdGl2YXRlKGRldiwgdHJ1ZSk7CisKIAlp ZiAoIWk5MTUucG93ZXJzYXZlKQogCQlyZXR1cm47CiAKQEAgLTgzMzYsNiArODM0NSwxMCBAQCBz dGF0aWMgdm9pZCBkb19pbnRlbF9maW5pc2hfcGFnZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCiAJcXVldWVfd29yayhkZXZfcHJpdi0+d3EsICZ3b3JrLT53b3JrKTsKIAogCXRyYWNlX2k5 MTVfZmxpcF9jb21wbGV0ZShpbnRlbF9jcnRjLT5wbGFuZSwgd29yay0+cGVuZGluZ19mbGlwX29i aik7CisKKwkvKiBHZXQgUFNSIGJhY2sgYWZ0ZXIgc2V0X2RvbWFpbiBpbmFjdGl2YXRlZCBpdCB3 aXRob3V0IHJlc2NoZWR1bGluZworCSogaXQgYmFjay4gKi8KKwlzY2hlZHVsZV9kZWxheWVkX3dv cmsoJmRldl9wcml2LT5wc3Iud29yaywgbXNlY3NfdG9famlmZmllcyg1MDAwKSk7CiB9CiAKIHZv aWQgaW50ZWxfZmluaXNoX3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgcGlw ZSkKQEAgLTg2ODgsNiArODcwMSw5IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19wYWdlX2ZsaXAo c3RydWN0IGRybV9jcnRjICpjcnRjLAogCWlmICh3b3JrID09IE5VTEwpCiAJCXJldHVybiAtRU5P TUVNOwogCisJLyogSW5hY3RpdmF0ZSBQU1IgZWFybHkgaW4gcGFnZSBmbGlwICovCisJaW50ZWxf ZWRwX3Bzcl9pbmFjdGl2YXRlKGRldiwgdHJ1ZSk7CisKIAl3b3JrLT5ldmVudCA9IGV2ZW50Owog CXdvcmstPmNydGMgPSBjcnRjOwogCXdvcmstPm9sZF9mYl9vYmogPSB0b19pbnRlbF9mcmFtZWJ1 ZmZlcihvbGRfZmIpLT5vYmo7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwppbmRleCA4MDA1NGJiLi41 NzZjMjA0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKQEAgLTE1NzgsMjEgKzE1NzgsMzUgQEAg c3RhdGljIHZvaWQgaW50ZWxfZHBfZ2V0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlciwKIAl9CiB9CiAKLXN0YXRpYyBib29sIGlzX2VkcF9wc3Ioc3RydWN0IGRybV9kZXZpY2Ug KmRldikKK3N0YXRpYyBib29sIGlzX2VkcF9wc3Ioc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkK K3sKKwlyZXR1cm4gaW50ZWxfZHAtPnBzcl9kcGNkWzBdICYgRFBfUFNSX0lTX1NVUFBPUlRFRDsK K30KKworc3RhdGljIGJvb2wgdmx2X2VkcF9pc19wc3JfZW5hYmxlZF9vbl9waXBlKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIGludCBwaXBlKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJdWludDMyX3QgdmFsOwogCi0JcmV0dXJuIGRl dl9wcml2LT5wc3Iuc2lua19zdXBwb3J0OworCXZhbCA9IEk5MTVfUkVBRChWTFZfUFNSU1RBVChw aXBlKSkgJgorCQlWTFZfRURQX1BTUl9DVVJSX1NUQVRFX01BU0s7CisJcmV0dXJuICh2YWwgPT0g VkxWX0VEUF9QU1JfQUNUSVZFX05PUkZCX1VQKSB8fAorCQkodmFsID09IFZMVl9FRFBfUFNSX0FD VElWRV9TRl9VUERBVEUpOwogfQogCiBzdGF0aWMgYm9vbCBpbnRlbF9lZHBfaXNfcHNyX2VuYWJs ZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCi0JaWYgKCFIQVNfUFNSKGRldikpCi0JCXJl dHVybiBmYWxzZTsKKwlpZiAoSEFTX1BTUihkZXYpKSB7CisJCWlmIChJU19WQUxMRVlWSUVXKGRl dikpCisJCQlyZXR1cm4gdmx2X2VkcF9pc19wc3JfZW5hYmxlZF9vbl9waXBlKGRldiwgUElQRV9B KSB8fAorCQkJCXZsdl9lZHBfaXNfcHNyX2VuYWJsZWRfb25fcGlwZShkZXYsIFBJUEVfQik7CisJ CWVsc2UKKwkJCXJldHVybiBJOTE1X1JFQUQoRURQX1BTUl9DVEwoZGV2KSkgJiBFRFBfUFNSX0VO QUJMRTsKKwl9CiAKLQlyZXR1cm4gSTkxNV9SRUFEKEVEUF9QU1JfQ1RMKGRldikpICYgRURQX1BT Ul9FTkFCTEU7CisJcmV0dXJuIGZhbHNlOwogfQogCiBzdGF0aWMgdm9pZCBpbnRlbF9lZHBfcHNy X3dyaXRlX3ZzYyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLApAQCAtMTYyNCwzMiArMTYzOCw2 MCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9lZHBfcHNyX3dyaXRlX3ZzYyhzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwLAogCVBPU1RJTkdfUkVBRChjdGxfcmVnKTsKIH0KIAorc3RhdGljIHZvaWQgaW50 ZWxfZWRwX3Bzcl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKK3sKKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQorCQljb250YWluZXJfb2Yod29yaywgdHlwZW9mKCpk ZXZfcHJpdiksIHBzci53b3JrLndvcmspOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkZXZf cHJpdi0+ZGV2OworCisJaW50ZWxfZWRwX3Bzcl91cGRhdGUoZGV2KTsKK30KKwogc3RhdGljIHZv aWQgaW50ZWxfZWRwX3Bzcl9zZXR1cChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogewotCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9kcF90b19kZXYoaW50ZWxfZHApOworCXN0cnVj dCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gZHBfdG9fZGlnX3BvcnQoaW50 ZWxfZHApOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9kaWdfcG9ydC0+YmFzZS5i YXNlLmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9w cml2YXRlOwogCXN0cnVjdCBlZHBfdnNjX3BzciBwc3JfdnNjOworCXVpbnQzMl90IHZhbDsKIAog CWlmIChkZXZfcHJpdi0+cHNyLnNldHVwX2RvbmUpCiAJCXJldHVybjsKIAotCW11dGV4X2luaXQo JmRldl9wcml2LT5wc3IubG9jayk7Ci0KLQkvKiBQcmVwYXJlIFZTQyBwYWNrZXQgYXMgcGVyIEVE UCAxLjMgc3BlYywgVGFibGUgMy4xMCAqLwotCW1lbXNldCgmcHNyX3ZzYywgMCwgc2l6ZW9mKHBz cl92c2MpKTsKLQlwc3JfdnNjLnNkcF9oZWFkZXIuSEIwID0gMDsKLQlwc3JfdnNjLnNkcF9oZWFk ZXIuSEIxID0gMHg3OwotCXBzcl92c2Muc2RwX2hlYWRlci5IQjIgPSAweDI7Ci0JcHNyX3ZzYy5z ZHBfaGVhZGVyLkhCMyA9IDB4ODsKLQlpbnRlbF9lZHBfcHNyX3dyaXRlX3ZzYyhpbnRlbF9kcCwg JnBzcl92c2MpOwotCi0JLyogQXZvaWQgY29udGludW91cyBQU1IgZXhpdCBieSBtYXNraW5nIG1l bXVwIGFuZCBocGQgKi8KLQlJOTE1X1dSSVRFKEVEUF9QU1JfREVCVUdfQ1RMKGRldiksIEVEUF9Q U1JfREVCVUdfTUFTS19NRU1VUCB8Ci0JCSAgIEVEUF9QU1JfREVCVUdfTUFTS19IUEQgfCBFRFBf UFNSX0RFQlVHX01BU0tfTFBTUCk7CisJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgeworCQl2YWwg ID0gSTkxNV9SRUFEKFZMVl9WU0NTRFAoUElQRV9BKSk7CisJCXZhbCAmPSB+VkxWX0VEUF9QU1Jf U0RQX0ZSRVFfTUFTSzsKKwkJdmFsIHw9IFZMVl9FRFBfUFNSX1NEUF9GUkVRX0VWRlJBTUU7CisJ CUk5MTVfV1JJVEUoVkxWX1ZTQ1NEUChQSVBFX0EpLCB2YWwpOworCisJCXZhbCAgPSBJOTE1X1JF QUQoVkxWX1ZTQ1NEUChQSVBFX0IpKTsKKwkJdmFsICY9IH5WTFZfRURQX1BTUl9TRFBfRlJFUV9N QVNLOworCQl2YWwgfD0gVkxWX0VEUF9QU1JfU0RQX0ZSRVFfRVZGUkFNRTsKKwkJSTkxNV9XUklU RShWTFZfVlNDU0RQKFBJUEVfQiksIHZhbCk7CisJfSBlbHNlIHsKKwkJLyogUHJlcGFyZSBWU0Mg cGFja2V0IGFzIHBlciBFRFAgMS4zIHNwZWMsIFRhYmxlIDMuMTAgKi8KKwkJbWVtc2V0KCZwc3Jf dnNjLCAwLCBzaXplb2YocHNyX3ZzYykpOworCQlwc3JfdnNjLnNkcF9oZWFkZXIuSEIwID0gMDsK KwkJcHNyX3ZzYy5zZHBfaGVhZGVyLkhCMSA9IDB4NzsKKwkJcHNyX3ZzYy5zZHBfaGVhZGVyLkhC MiA9IDB4MjsKKwkJcHNyX3ZzYy5zZHBfaGVhZGVyLkhCMyA9IDB4ODsKKwkJaW50ZWxfZWRwX3Bz cl93cml0ZV92c2MoaW50ZWxfZHAsICZwc3JfdnNjKTsKKworCQkvKiBBdm9pZCBjb250aW51b3Vz IFBTUiBleGl0IGJ5IG1hc2tpbmcgbWVtdXAgYW5kIGhwZCAqLworCQlJOTE1X1dSSVRFKEVEUF9Q U1JfREVCVUdfQ1RMKGRldiksIEVEUF9QU1JfREVCVUdfTUFTS19NRU1VUCB8CisJCQkgICBFRFBf UFNSX0RFQlVHX01BU0tfSFBEIHwgRURQX1BTUl9ERUJVR19NQVNLX0xQU1ApOworCX0KIAogCWRl dl9wcml2LT5wc3Iuc2V0dXBfZG9uZSA9IHRydWU7CiB9CiAKK3N0YXRpYyB2b2lkIHZsdl9lZHBf cHNyX2VuYWJsZV9zaW5rKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCit7CisJLyogRW5hYmxl IFBTUiBpbiBzaW5rICovCisJaW50ZWxfZHBfYXV4X25hdGl2ZV93cml0ZV8xKGludGVsX2RwLCBE UF9QU1JfRU5fQ0ZHLAorCQkJCQkgICAgRFBfUFNSX0VOQUJMRSk7Cit9CisKIHN0YXRpYyB2b2lk IGludGVsX2VkcF9wc3JfZW5hYmxlX3Npbmsoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIHsK IAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50ZWxfZHBfdG9fZGV2KGludGVsX2RwKTsKQEAg LTE2ODAsNiArMTcyMiwyNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9lZHBfcHNyX2VuYWJsZV9zaW5r KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiAJCSAgIChhdXhfY2xvY2tfZGl2aWRlciA8PCBE UF9BVVhfQ0hfQ1RMX0JJVF9DTE9DS18yWF9TSElGVCkpOwogfQogCitzdGF0aWMgdm9pZCB2bHZf ZWRwX3Bzcl9lbmFibGVfc291cmNlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCit7CisJc3Ry dWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPSBkcF90b19kaWdfcG9ydChp bnRlbF9kcCk7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2RpZ19wb3J0LT5iYXNl LmJhc2UuZGV2OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2 X3ByaXZhdGU7CisJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPQorCQl0b19pbnRlbF9j cnRjKGludGVsX2RpZ19wb3J0LT5iYXNlLmJhc2UuY3J0Yyk7CisKKwl1aW50MzJfdCBpZGxlX2Zy YW1lcyA9IDE7CisJdWludDMyX3QgdmFsID0gMDsKKworCXZhbCB8PSBWTFZfRURQX1BTUl9FTkFC TEU7CisJdmFsICY9IH5WTFZfRURQX1BTUl9NT0RFX01BU0s7CisKKwl2YWwgfD0gVkxWX0VEUF9Q U1JfTU9ERV9IV19USU1FUjsKKwl2YWwgJj0gflZMVl9FRFBfUFNSX0ZSQU1FX0NPVU5UX01BU0s7 CisJdmFsIHw9IGlkbGVfZnJhbWVzIDw8IEVEUF9QU1JfSURMRV9GUkFNRV9TSElGVDsKKworCUk5 MTVfV1JJVEUoVkxWX1BTUkNUTChpbnRlbF9jcnRjLT5waXBlKSwgdmFsKTsKK30KKwogc3RhdGlj IHZvaWQgaW50ZWxfZWRwX3Bzcl9lbmFibGVfc291cmNlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHApCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2RwX3RvX2RldihpbnRlbF9k cCk7CkBAIC0xNzIxLDggKzE3ODQsOCBAQCBzdGF0aWMgYm9vbCBpbnRlbF9lZHBfcHNyX21hdGNo X2NvbmRpdGlvbnMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIAkJcmV0dXJuIGZhbHNlOwog CX0KIAotCWlmICgoaW50ZWxfZW5jb2Rlci0+dHlwZSAhPSBJTlRFTF9PVVRQVVRfRURQKSB8fAot CSAgICAoZGlnX3BvcnQtPnBvcnQgIT0gUE9SVF9BKSkgeworCWlmIChIQVNfRERJKGRldikgJiYg KChpbnRlbF9lbmNvZGVyLT50eXBlICE9IElOVEVMX09VVFBVVF9FRFApIHx8CisJCQkgICAgIChk aWdfcG9ydC0+cG9ydCAhPSBQT1JUX0EpKSkgewogCQlEUk1fREVCVUdfS01TKCJIU1cgdGllcyBQ U1IgdG8gRERJIEEgKGVEUClcbiIpOwogCQlyZXR1cm4gZmFsc2U7CiAJfQpAQCAtMTc2NywyMyAr MTgzMCw0NSBAQCBzdGF0aWMgYm9vbCBpbnRlbF9lZHBfcHNyX21hdGNoX2NvbmRpdGlvbnMoc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCkKIAkJcmV0dXJuIGZhbHNlOwogCX0KIAorCS8qIEJheXRy YWlsIHN1cHBvcnRzIHBlci1waXBlIFBTUiBjb25maWd1cmF0aW9uLCBob3dldmVyIFBTUiBvbgor CSogUElQRV9CIGlzbid0IHdvcmtpbmcgcHJvcGVybHkuIFNvIGxldCdzIGtlZXAgaXQgZGlzYWJs ZWQgZm9yIG5vdy4gKi8KKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpICYmIGludGVsX2NydGMtPnBp cGUgIT0gUElQRV9BKSB7CisJCURSTV9ERUJVR19LTVMoIlBTUiBvbiBCWVQgaXNuJ3QgZW5hYmxl ZCBvbiBwaXBlIEIuXG4iKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKwogCWRldl9wcml2LT5wc3Iu c291cmNlX29rID0gdHJ1ZTsKIAlyZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIHZvaWQgaW50ZWxf ZWRwX3Bzcl9kb19lbmFibGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIHsKLQlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gaW50ZWxfZHBfdG9fZGV2KGludGVsX2RwKTsKKwlzdHJ1Y3QgaW50 ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2Rw KTsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50ZWxfZGlnX3BvcnQtPmJhc2UuYmFzZS5k ZXY7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0 ZTsKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9CisJCXRvX2ludGVsX2NydGMoaW50 ZWxfZGlnX3BvcnQtPmJhc2UuYmFzZS5jcnRjKTsKIAotCWlmICghaW50ZWxfZWRwX3Bzcl9tYXRj aF9jb25kaXRpb25zKGludGVsX2RwKSB8fAotCSAgICBpbnRlbF9lZHBfaXNfcHNyX2VuYWJsZWQo ZGV2KSkKLQkJcmV0dXJuOworCWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKKwkJaWYgKHZsdl9l ZHBfaXNfcHNyX2VuYWJsZWRfb25fcGlwZShkZXYsIGludGVsX2NydGMtPnBpcGUpKQorCQkJcmV0 dXJuOworCX0gZWxzZQorCQlpZiAoaW50ZWxfZWRwX2lzX3Bzcl9lbmFibGVkKGRldikpCisJCQly ZXR1cm47CiAKIAkvKiBFbmFibGUgUFNSIG9uIHRoZSBwYW5lbCAqLwotCWludGVsX2VkcF9wc3Jf ZW5hYmxlX3NpbmsoaW50ZWxfZHApOworCWlmIChJU19WQUxMRVlWSUVXKGRldikpCisJCXZsdl9l ZHBfcHNyX2VuYWJsZV9zaW5rKGludGVsX2RwKTsKKwllbHNlCisJCWludGVsX2VkcF9wc3JfZW5h YmxlX3NpbmsoaW50ZWxfZHApOwogCiAJLyogRW5hYmxlIFBTUiBvbiB0aGUgaG9zdCAqLwotCWlu dGVsX2VkcF9wc3JfZW5hYmxlX3NvdXJjZShpbnRlbF9kcCk7CisJaWYgKElTX1ZBTExFWVZJRVco ZGV2KSkKKwkJdmx2X2VkcF9wc3JfZW5hYmxlX3NvdXJjZShpbnRlbF9kcCk7CisJZWxzZQorCQlp bnRlbF9lZHBfcHNyX2VuYWJsZV9zb3VyY2UoaW50ZWxfZHApOworCisJZGV2X3ByaXYtPnBzci5h Y3RpdmUgPSB0cnVlOwogfQogCiB2b2lkIGludGVsX2VkcF9wc3JfZW5hYmxlKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHApCkBAIC0xNzkxLDE2ICsxODc2LDQzIEBAIHZvaWQgaW50ZWxfZWRwX3Bz cl9lbmFibGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIAlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gaW50ZWxfZHBfdG9fZGV2KGludGVsX2RwKTsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCisJaWYgKCFpc19lZHBfcHNyKGludGVs X2RwKSkKKwkJcmV0dXJuOworCiAJLyogU2V0dXAgUFNSIG9uY2UgKi8KIAlpbnRlbF9lZHBfcHNy X3NldHVwKGludGVsX2RwKTsKIAogCW11dGV4X2xvY2soJmRldl9wcml2LT5wc3IubG9jayk7Ci0J aWYgKGludGVsX2VkcF9wc3JfbWF0Y2hfY29uZGl0aW9ucyhpbnRlbF9kcCkgJiYKLQkgICAgIWlu dGVsX2VkcF9pc19wc3JfZW5hYmxlZChkZXYpKQorCWlmIChpbnRlbF9lZHBfcHNyX21hdGNoX2Nv bmRpdGlvbnMoaW50ZWxfZHApKQogCQlpbnRlbF9lZHBfcHNyX2RvX2VuYWJsZShpbnRlbF9kcCk7 CiAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwogfQogCit2b2lkIHZsdl9lZHBf cHNyX2Rpc2FibGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKK3sKKwlzdHJ1Y3QgaW50ZWxf ZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsK KwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50ZWxfZGlnX3BvcnQtPmJhc2UuYmFzZS5kZXY7 CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsK KwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9CisJCXRvX2ludGVsX2NydGMoaW50ZWxf ZGlnX3BvcnQtPmJhc2UuYmFzZS5jcnRjKTsKKwl1aW50MzJfdCB2YWw7CisKKwlpZiAoIWRldl9w cml2LT5wc3Iuc2V0dXBfZG9uZSkKKwkJcmV0dXJuOworCisJaW50ZWxfZWRwX3Bzcl9pbmFjdGl2 YXRlKGRldiwgZmFsc2UpOworCisJaWYgKHdhaXRfZm9yKChJOTE1X1JFQUQoVkxWX1BTUlNUQVQo aW50ZWxfY3J0Yy0+cGlwZSkpICYKKwkJICAgICAgVkxWX0VEUF9QU1JfSU5fVFJBTlMpID09IDAs IDI1MCkpCisJCVdBUk4oMSwgIlBTUiB0cmFuc2l0aW9uIHRvb2sgbG9uZ2VyIHRoYW4gZXhwZWN0 ZWRcbiIpOworCisJdmFsID0gSTkxNV9SRUFEKFZMVl9QU1JDVEwoaW50ZWxfY3J0Yy0+cGlwZSkp OworCXZhbCAmPSB+VkxWX0VEUF9QU1JfQUNUSVZFX0VOVFJZOworCXZhbCAmPSB+VkxWX0VEUF9Q U1JfRU5BQkxFOworCXZhbCAmPSB+VkxWX0VEUF9QU1JfTU9ERV9NQVNLOworCUk5MTVfV1JJVEUo VkxWX1BTUkNUTChpbnRlbF9jcnRjLT5waXBlKSwgdmFsKTsKK30KKwogdm9pZCBpbnRlbF9lZHBf cHNyX2Rpc2FibGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIHsKIAlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gaW50ZWxfZHBfdG9fZGV2KGludGVsX2RwKTsKQEAgLTE4MjMsNiArMTkzNSw3 IEBAIHZvaWQgaW50ZWxfZWRwX3Bzcl91cGRhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyOwogCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAg PSBOVUxMOworCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjOwogCiAJaWYgKCFkZXZfcHJp di0+cHNyLnNldHVwX2RvbmUpCiAJCXJldHVybjsKQEAgLTE4MzAsMjYgKzE5NDMsOTMgQEAgdm9p ZCBpbnRlbF9lZHBfcHNyX3VwZGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCWxpc3RfZm9y X2VhY2hfZW50cnkoZW5jb2RlciwgJmRldi0+bW9kZV9jb25maWcuZW5jb2Rlcl9saXN0LCBiYXNl LmhlYWQpCiAJCWlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9FRFApIHsKIAkJCWlu dGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKCZlbmNvZGVyLT5iYXNlKTsKLQotCQkJaWYgKCFpc19l ZHBfcHNyKGRldikpCi0JCQkJcmV0dXJuOworCQkJaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMo ZW5jb2Rlci0+YmFzZS5jcnRjKTsKIAogCQkJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBzci5sb2Nr KTsKLQkJCWlmICghaW50ZWxfZWRwX3Bzcl9tYXRjaF9jb25kaXRpb25zKGludGVsX2RwKSkKLQkJ CQlpbnRlbF9lZHBfcHNyX2Rpc2FibGUoaW50ZWxfZHApOwotCQkJZWxzZQorCQkJaWYgKCFpbnRl bF9lZHBfcHNyX21hdGNoX2NvbmRpdGlvbnMoaW50ZWxfZHApKSB7CisJCQkJaWYgKElTX1ZBTExF WVZJRVcoZGV2KSkKKwkJCQkJdmx2X2VkcF9wc3JfZGlzYWJsZShpbnRlbF9kcCk7CisJCQkJZWxz ZQorCQkJCQlpbnRlbF9lZHBfcHNyX2Rpc2FibGUoaW50ZWxfZHApOworCQkJfSBlbHNlCiAJCQkJ aWYgKCFpbnRlbF9lZHBfaXNfcHNyX2VuYWJsZWQoZGV2KSkKIAkJCQkJaW50ZWxfZWRwX3Bzcl9k b19lbmFibGUoaW50ZWxfZHApOwogCQkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2sp OwogCQl9CiB9CiAKK3ZvaWQgaW50ZWxfZWRwX3Bzcl9kb19pbmFjdGl2YXRlKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2 LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3I7CisJc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7CisJc3RydWN0IGludGVsX2NydGMgKmludGVsX2Ny dGM7CisJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IE5VTEw7CisKKwlsaXN0X2Zvcl9lYWNo X2VudHJ5KGNvbm5lY3RvciwgJmRldi0+bW9kZV9jb25maWcuY29ubmVjdG9yX2xpc3QsCisJCQkg ICAgYmFzZS5oZWFkKSB7CisKKwkJaWYgKGNvbm5lY3Rvci0+YmFzZS5kcG1zICE9IERSTV9NT0RF X0RQTVNfT04pCisJCQljb250aW51ZTsKKworCQllbmNvZGVyID0gdG9faW50ZWxfZW5jb2Rlcihj b25uZWN0b3ItPmJhc2UuZW5jb2Rlcik7CisJCWlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09V VFBVVF9FRFApIHsKKworCQkJaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoJmVuY29kZXItPmJh c2UpOworCQkJaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoZW5jb2Rlci0+YmFzZS5jcnRjKTsK KworCQkJaWYgKCF2bHZfZWRwX2lzX3Bzcl9lbmFibGVkX29uX3BpcGUoZGV2LAorCQkJCQkJCSAg ICBpbnRlbF9jcnRjLT5waXBlKSkKKwkJCQljb250aW51ZTsKKworCQkJZGV2X3ByaXYtPnBzci5h Y3RpdmUgPSBmYWxzZTsKKworCQkJSTkxNV9XUklURShWTFZfUFNSQ1RMKGludGVsX2NydGMtPnBp cGUpLAorCQkJCSAgIFZMVl9FRFBfUFNSX1JFU0VUKTsKKwkJCS8qIFdhQ2xlYXJQU1JSZXNldDp2 bHYgKi8KKwkJCUk5MTVfV1JJVEUoVkxWX1BTUkNUTChpbnRlbF9jcnRjLT5waXBlKSwgMCk7CisK KwkJCWludGVsX2RwX3NpbmtfZHBtcyhpbnRlbF9kcCwgRFJNX01PREVfRFBNU19PTik7CisJCX0K Kwl9Cit9CisKK3ZvaWQgaW50ZWxfZWRwX3Bzcl9pbmFjdGl2YXRlKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIGJvb2wgc2NoZWR1bGVfYmFjaykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCisJaWYgKCFJU19WQUxMRVlWSUVXKGRldikp CisJCXJldHVybjsKKworCWlmICghZGV2X3ByaXYtPnBzci5zZXR1cF9kb25lKQorCQlyZXR1cm47 CisKKwkvKiBJZiBpdCB3YXMgcmVxdWVzdGVkIHRvIG5vdCB0dXJuIHBzciBiYWNrIGRlbGF5ZWQg d29yayBtdXN0IGJlCisJICogY2FuY2VsZWQgZXZlbiBpZiBpdCBpcyBhbHJlYWR5IG9uIGluYWN0 aXZhdGVkIHN0YXRlLiAqLworCWlmICghc2NoZWR1bGVfYmFjaykKKwkJY2FuY2VsX2RlbGF5ZWRf d29ya19zeW5jKCZkZXZfcHJpdi0+cHNyLndvcmspOworCisJaWYgKCFkZXZfcHJpdi0+cHNyLmFj dGl2ZSkKKwkJcmV0dXJuOworCisJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZkZXZfcHJpdi0+ cHNyLndvcmspOworCisJaW50ZWxfZWRwX3Bzcl9kb19pbmFjdGl2YXRlKGRldik7CisKKwlpZiAo c2NoZWR1bGVfYmFjaykKKwkJc2NoZWR1bGVfZGVsYXllZF93b3JrKCZkZXZfcHJpdi0+cHNyLndv cmssCisJCQkJICAgICAgbXNlY3NfdG9famlmZmllcyg1MDAwKSk7Cit9CisKIHN0YXRpYyB2b2lk IGludGVsX2Rpc2FibGVfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCiB7CiAJc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcCgmZW5jb2Rlci0+YmFzZSk7 CiAJZW51bSBwb3J0IHBvcnQgPSBkcF90b19kaWdfcG9ydChpbnRlbF9kcCktPnBvcnQ7CiAJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmJhc2UuZGV2OwogCisJaWYgKElTX1ZBTExF WVZJRVcoZGV2KSkKKwkJdmx2X2VkcF9wc3JfZGlzYWJsZShpbnRlbF9kcCk7CisKIAkvKiBNYWtl IHN1cmUgdGhlIHBhbmVsIGlzIG9mZiBiZWZvcmUgdHJ5aW5nIHRvIGNoYW5nZSB0aGUgbW9kZS4g QnV0IGFsc28KIAkgKiBlbnN1cmUgdGhhdCB3ZSBoYXZlIHZkZCB3aGlsZSB3ZSBzd2l0Y2ggb2Zm IHRoZSBwYW5lbC4gKi8KIAlpbnRlbF9lZHBfYmFja2xpZ2h0X29mZihpbnRlbF9kcCk7CkBAIC0x OTA2LDYgKzIwODYsNyBAQCBzdGF0aWMgdm9pZCB2bHZfZW5hYmxlX2RwKHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyKQogCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50 ZWxfZHAoJmVuY29kZXItPmJhc2UpOwogCiAJaW50ZWxfZWRwX2JhY2tsaWdodF9vbihpbnRlbF9k cCk7CisJaW50ZWxfZWRwX3Bzcl9lbmFibGUoaW50ZWxfZHApOwogfQogCiBzdGF0aWMgdm9pZCBn NHhfcHJlX2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKQEAgLTM4NDYs OCArNDAyNywxMSBAQCBpbnRlbF9kcF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGlnaXRh bF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKIAkJQlVHKCk7CiAJfQogCi0JaWYgKGlzX2VkcChpbnRl bF9kcCkpCisJaWYgKGlzX2VkcChpbnRlbF9kcCkpIHsKIAkJaW50ZWxfZHBfaW5pdF9wYW5lbF9w b3dlcl9zZXF1ZW5jZXIoZGV2LCBpbnRlbF9kcCwgJnBvd2VyX3NlcSk7CisJCUlOSVRfREVMQVlF RF9XT1JLKCZkZXZfcHJpdi0+cHNyLndvcmssIGludGVsX2VkcF9wc3Jfd29yayk7CisJCW11dGV4 X2luaXQoJmRldl9wcml2LT5wc3IubG9jayk7CisJfQogCiAJZXJyb3IgPSBpbnRlbF9kcF9pMmNf aW5pdChpbnRlbF9kcCwgaW50ZWxfY29ubmVjdG9yLCBuYW1lKTsKIAlXQVJOKGVycm9yLCAiaW50 ZWxfZHBfaTJjX2luaXQgZmFpbGVkIHdpdGggZXJyb3IgJWQgZm9yIHBvcnQgJWNcbiIsCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oCmluZGV4IDcxYzEzNzEuLmQ4MTAzZjkgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oCkBAIC03NDgsNiArNzQ4LDcgQEAgdm9pZCBpbnRlbF9lZHBfcGFuZWxfb2Zm KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwogdm9pZCBpbnRlbF9lZHBfcHNyX2VuYWJsZShz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKIHZvaWQgaW50ZWxfZWRwX3Bzcl9kaXNhYmxlKHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwogdm9pZCBpbnRlbF9lZHBfcHNyX3VwZGF0ZShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KTsKK3ZvaWQgaW50ZWxfZWRwX3Bzcl9pbmFjdGl2YXRlKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIGJvb2wgc2NoZWR1bGVfYmFjayk7CiAKIAogLyogaW50ZWxfZHNp LmMgKi8KLS0gCjEuOC4xLjIKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cg==