From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lukas Wunner Subject: [PATCH 00/11] Enable gpu switching on the MacBook Pro Date: Tue, 21 Apr 2015 11:58:20 +0200 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mailout2.hostsharing.net (mailout2.hostsharing.net [83.223.90.233]) by gabe.freedesktop.org (Postfix) with ESMTP id 1264C89829 for ; Tue, 21 Apr 2015 04:38:35 -0700 (PDT) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: Daniel Vetter , Seth Forshee , Matthew Garrett , Dave Airlie List-Id: dri-devel@lists.freedesktop.org VGhlIGZvbGxvd2luZyBwYXRjaHNldCBleHRlbmRzIHZnYV9zd2l0Y2hlcm9vIGFuZCByZWxhdGVk IGRyaXZlcnMKdG8gZW5hYmxlIGdwdSBzd2l0Y2hpbmcgb24gdGhlIE1hY0Jvb2sgUHJvLgoKT24g TUJQcywgdGhlIHBhbmVsIGlzIG5vdCBjb25uZWN0ZWQgdG8gb25lIG9mIHRoZSBncHVzLCBidXQg dG8gdGhlCmdtdXggY2hpcCAodGhlICJoYW5kbGVyIiBpbiB2Z2Ffc3dpdGNoZXJvbyBzcGVhayku IEluaXRpYWxseSB0aGUgZ211eAppcyBzd2l0Y2hlZCB0byB0aGUgZGlzY3JldGUgZ3B1LiBUaGUg aW50ZWdyYXRlZCBpOTE1IGdwdSBpcyB0aGVyZWZvcmUKdW5hYmxlIHRvIGRldGVjdCB0aGUgTFZE UyAob3IgZURQKSBjb25uZWN0b3Igb24gYm9vdHVwIGFuZCBzd2l0Y2hpbmcKdG8gdGhlIGludGVn cmF0ZWQgZ3B1IHdpbGwgbGVhZCB0byBhIGJsYWNrIHNjcmVlbi4gVGhlIHNvbHV0aW9uIGlzCnRv IHRlbXBvcmFyaWx5IHN3aXRjaCB0aGUgRERDIGxpbmVzIHRvIHRoZSBpbnRlZ3JhdGVkIGdwdSB3 aGVuIHJlYWRpbmcKdGhlIEVESUQsIHdoaWNoIHRoZSBnbXV4IGlzIGNhcGFibGUgb2YuIExhY2sg b2Ygc3VwcG9ydCBmb3IgdGhpcyBpbgp2Z2Ffc3dpdGNoZXJvbyBpcyBwcmV0dHkgbXVjaCB0aGUg b25seSBvYnN0YWNsZSB0byBnZXQgZ3B1IHN3aXRjaGluZwp0byB3b3JrIG9uIE1CUHMuCgoKU2V0 aCBGb3JzaGVlIGNhbWUgdXAgd2l0aCBhIHBhdGNoc2V0IGluIGZhbGwgMjAxMiBidXQgb25seSBh IHBvcnRpb24Kb2YgaXQgZ290IG1lcmdlZC4gTWF0dGhldyBHYXJyZXR0IGRldmVsb3BlZCB0aGlz IGZ1cnRoZXIgaW4gMjAxNDoKaHR0cDovL3d3dy5jb2Rvbi5vcmcudWsvfm1qZzU5L3RtcC9yZXRp bmFfcGF0Y2hlcy8KaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZlcy9kcmktZGV2 ZWwvMjAxNC1KdW5lLzA2MDk0Ny5odG1sCgpNYXR0aGV3IEdhcnJldHQncyBwYXRjaGVzIHdlcmVu J3QgbWVyZ2VkIGVpdGhlcjogRGF2ZSBBaXJsaWUgcmVzcG9uZGVkCnRoYXQgaGUgaGFkIHJld3Jp dHRlbiBTZXRoIEZvcnNoZWUncyBjb2RlIGluIERlY2VtYmVyIDIwMTIuIFdoZXJlYXMKU2V0aCBG b3JzaGVlIGhhZCB1c2VkIGEgc2luZ2xlIGZ1bmN0aW9uIHZnYV9zd2l0Y2hlcm9vX3N3aXRjaF9k ZGMoKQp3aXRoIGEgbXV0ZXggaW4gZHJtX2dldF9lZGlkKCkgdG8gYXZvaWQgcmFjZSBjb25kaXRp b25zLCBEYXZlIEFpcmxpZQpoYWQgbW92ZWQgdGhlIG11dGV4IHRvIHZnYV9zd2l0Y2hlcm9vLmMg YW5kIHVzZWQgKnR3byogZnVuY3Rpb25zCnZnYV9zd2l0Y2hlcm9vX2xvY2tfZGRjKCkgYW5kIHZn YV9zd2l0Y2hlcm9vX3VubG9ja19kZGMoKToKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9h cmNoaXZlcy9kcmktZGV2ZWwvMjAxNC1KdW5lLzA2MTYyOS5odG1sCmh0dHA6Ly9jZ2l0LmZyZWVk ZXNrdG9wLm9yZy9+YWlybGllZC9saW51eC9sb2cvP2g9c3dpdGNoeS13aXAKClF1b3RoIERhdmUg QWlybGllOiAiSSBjYW4ndCBmaWd1cmUgb3V0IHdoeSBJIGRpZG4ndCBsaWtlIHRoaXMsIGJ1dCBJ CnJld3JvdGUgdGhpcyB3YXkgYmFjayB0byBsb2NrL3VubG9jayB0aGUgZGRjIGxpbmVzLCBiaXRz IGFyZSBjb250YWluZWQKaW4gdGhpcyBXSVAgbWVzcy4gSSB0aGluayBJJ2QgcHJlZmVyIHNvbWV0 aGluZyBsaWtlIHRoYXQgb3RoZXJ3aXNlIHRoZQppbnRlcmZhY2UgZ290IHJlYWxseSB1Z2x5LiIK CgpJIGJhc2ljYWxseSB0b29rIERhdmUgQWlybGllcyBXSVAgY29kZSBvZiBEZWNlbWJlciAyMDEy LCBhZGRlZCBhbGwgdGhlCm1pc3NpbmcgcGllY2VzLCBhcHBsaWVkIG9uZSBvZiBNYXR0aGV3IEdh cnJldHQncyBwYXRjaGVzIHZlcmJhdGltIGFuZApyZXdyb3RlIHR3byBvdGhlcnMuCgpUaGlzIHdv cmtzIG9uIGEgTWFjQm9va1BybzksMSB3aXRoIEludGVsIEhENDAwMCAoSXZ5IEJyaWRnZSkgYW5k Ck52aWRpYSBHVDY1ME0gKE5WRTcgLyBHSzEwNykgcGx1cyBhICJjbGFzc2ljIiAobm9uLWluZGV4 ZWQpIGdtdXgKY29ubmVjdGVkIHRvIGEgMTY4MHgxMDUwIHBhbmVsIHdpdGggZHVhbCBjaGFubmVs IExWRFMgKGFwcGxpZWQKb24gdG9wIG9mIGRybS1uZXh0IGFuZCB1c2luZyBub3V2ZWF1KS4KCkRh dmUgQWlybGllJ3MgY29tbWl0IHJlbW92ZXMgYSBwb3J0aW9uIG9mIFNldGggRm9yc2hlZSdzIGNv ZGUgYW5kIG15CmNvbW1pdCBpbiB0dXJuIHJlbW92ZXMgc29tZSBvZiBEYXZlIEFpcmxpZSdzIGNv ZGUuIEJlY2F1c2UgdGhpcyBtYWtlcwpyZXZpZXdpbmcgZGlmZmljdWx0LCBJJ20gaW5jbHVkaW5n IGJlbG93IGEgZGlmZiB3aGljaCBjb250YWlucyBhbGwKY29tbWl0cyBzcXVhc2hlZCBpbnRvIG9u ZS4gUmV2aWV3ZXJzIG1heSB3YW50IHRvIGxvb2sgYXQgdGhhdCBkaWZmCmZpcnN0IGluc3RlYWQg b2YgdGhlIGluZGl2aWR1YWwgY29tbWl0cy4KCgpPbmUgZGlmZmljdWx0eSBvbmUgbmVlZHMgdG8g YmUgYXdhcmUgb2YgaXMgdGhhdCBnbXV4IG1heSByZWdpc3RlcgphZnRlciB0aGUgaTkxNSBkcml2 ZXIsIG1ha2luZyBpdCBpbXBvc3NpYmxlIHRvIHN3aXRjaCB0aGUgRERDIGxpbmVzCnVwb24gaTkx NSBpbml0aWFsaXphdGlvbi4gU2V0aCBGb3JzaGVlIHNvbHZlZCB0aGlzIGJ5IGRlZmVycmluZwpp bml0aWFsaXphdGlvbiBvZiB0aGUgZ3JhcGhpY3MgZHJpdmVyOgpodHRwOi8vY2dpdC5mcmVlZGVz a3RvcC5vcmcvfmFpcmxpZWQvbGludXgvY29tbWl0Lz9oPXN3aXRjaHktd2lwJmlkPWY3YWNiZWFl M2U5OTc3NTBjM2QyM2E1NmFkMTUwMWQ0YWViMGQ4OTYKCk1hdHRoZXcgR2FycmV0dCBjYW1lIHVw IHdpdGggYSBzaW1wbGVyIGFwcHJvYWNoLCBoZSBhZGRlZCBhIGNhbGxiYWNrCnJlcHJvYmVfY29u bmVjdG9ycygpIHdoaWNoIGdldHMgaW52b2tlZCBpbiB2Z2Ffc3dpdGNoZXJvb19lbmFibGUoKToK aHR0cDovL3d3dy5jb2Rvbi5vcmcudWsvfm1qZzU5L3RtcC9yZXRpbmFfcGF0Y2hlcy8wMDE0LXZn YV9zd2l0Y2hlcm9vLUFkZC1zdXBwb3J0LWZvci1yZXByb2JpbmctY29ubmVjdG9ycy5wYXRjaAoK VGhlIGxhdHRlciBhcHByb2FjaCBpcyBmdXJ0aGVyIHJlZmluZWQgaW4gdGhlIGZvbGxvd2luZyBw YXRjaHNldCBieQppbnZva2luZyB0aGUgY2FsbGJhY2sgYXMgc29vbiBhcyBnbXV4IHJlZ2lzdGVy cywgd2hpY2ggaXMgZWFybGllcgp0aGFuIGluIE1hdHRoZXcgR2FycmV0dCdzIHBhdGNoIHNpbmNl IHZnYV9zd2l0Y2hlcm9vX2VuYWJsZSgpIHdhaXRzCmZvciByZWdpc3RyYXRpb24gb2YgYSBzZWNv bmQgZ3B1LiAoSXQgbWF5IG5ldmVyIHJlZ2lzdGVyIGlmIGl0cwpkcml2ZXIgaXMgYmxhY2tsaXN0 ZWQgb3Igbm90IGluc3RhbGxlZC4pCgoKVGhlIGZvbGxvd2luZyBpc3N1ZXMgY3VycmVudGx5IHJl bWFpbjoKCi0gU29tZXRpbWVzIHRoZXJlJ3MgZmxpY2tlcmluZyB3aGVuIHN3aXRjaGluZywgc28g dGhlIHVzZXIgZXhwZXJpZW5jZSBpcwogIG5vdCB5ZXQgYXMgc21vb3RoIGFzIG9uIE9TIFguIChP biBPUyBYIHRoZXJlJ3MgbmV2ZXIgYW55IGZsaWNrZXJpbmcuKQoKLSBJZiBnbXV4IHJlZ2lzdGVy cyAqYmVmb3JlKiB0aGUgaTkxNSBkcml2ZXIsIHRoZSBsYXR0ZXIgd2lsbCBmaW5kIHRoZQogIExW RFMgY29ubmVjdG9yIHBsdXMgYSBkaXNjb25uZWN0ZWQgVkdBIGNvbm5lY3Rvci4gSWYgZ211eCBy ZWdpc3RlcnMKICAqYWZ0ZXIqIHRoZSBpOTE1IGRyaXZlciwgdGhlIGxhdHRlciBpbml0aWFsbHkg b25seSBmaW5kcyB0aGUgVkdBCiAgY29ubmVjdG9yLiBVcG9uIHJlcHJvYmUgaXQgd2lsbCBmaW5k IHRoZSBMVkRTIGNvbm5lY3RvciBhbmQgKmFub3RoZXIqCiAgKGdob3N0KSBWR0EgY29ubmVjdG9y LiBUaGF0J3MgYmVjYXVzZSBJIGNhbGwgaW50ZWxfc2V0dXBfb3V0cHV0cygpCiAgd2hpY2ggcHJv YmVzIGZvciBhbGwgc29ydHMgb2YgY29ubmVjdG9ycy4gTWF0dGhldyBHYXJyZXR0IGR1cGxpY2F0 ZWQKICB0aGF0IGZ1bmN0aW9uIGFuZCByZWR1Y2VkIGl0IHRvIGp1c3QgdGhlIGVEUCBwcm9iaW5n IHBvcnRpb24gKHdoaWNoCiAgaXMgbm90IHN1ZmZpY2llbnQgc2luY2UgcHJlLXJldGluYSBNQlBz IHVzZWQgTFZEUyk6CiAgaHR0cDovL3d3dy5jb2Rvbi5vcmcudWsvfm1qZzU5L3RtcC9yZXRpbmFf cGF0Y2hlcy8wMDI0LWk5MTUtQWRkLXN1cHBvcnQtZm9yLXJlcHJvYmluZy1mb3ItYS1wYW5lbC5w YXRjaAogIEl0IHdvdWxkIGJlIGdyZWF0IGlmIEludGVsIGRldmVsb3BlcnMgY291bGQgZ2l2ZSBh ZHZpY2Ugb24gaG93IHRvCiAgYmVzdCBpbnRlZ3JhdGUgcmVwcm9iaW5nIHdpdGggdGhlaXIgZHJp dmVyIG9yIGhvdyBkZXRlY3Rpb24gb2YKICBnaG9zdCBWR0EgY29ubmVjdG9ycyBjYW4gYmUgYXZv aWRlZC4KCi0gVGhlIE52aWRpYSBncHUgc29tZXRpbWVzIGdldHMgc3R1Y2sgaW4gcG93ZXJzYXZp bmcgbW9kZSBhbmQgcmVmdXNlcwogIHRvIHdha2UgdXAgKCJSZWZ1c2VkIHRvIGNoYW5nZSBwb3dl ciBzdGF0ZSwgY3VycmVudGx5IGluIEQzIikuCiAgSXQgc2VlbXMgdGhhdCBhIGRlbGF5IGlzIG5l Y2Vzc2FyeSBiZXR3ZWVuIHB1dHRpbmcgdGhlIGRldmljZSBpbgogIEQzaG90IGFuZCBjdXR0aW5n IHRoZSBwb3dlci4gKE9uIE1CUHMsIHBvd2VyIGlzIGN1dCBieSB0aGUgZ211eC4pCiAgSSBhZGRl ZCBhIGRlbGF5IG9mIDIwMCB1c2VjIGFuZCB0aGlzIHNlZW1zIHRvIHdvcmsgbW9zdCBvZiB0aGUg dGltZQogIGJ1dCBub3QgYWx3YXlzLiBNeSBpbXByZXNzaW9uIGlzIHRoYXQgdGhlIHJlcXVpcmVk IGxlbmd0aCBvZiB0aGUKICBkZWxheSBpcyBzb21laG93IGhlYXQgcmVsYXRlZDogSSBzdHJlc3Mg dGVzdGVkIHRoZSBjb2RlIGJ5IHN3aXRjaGluZwogIGJhY2sgYW5kIGZvcnRoIGluIGFuIGVuZGxl c3MgbG9vcCwgY2F1c2luZyB0aGUgZmFucyB0byBzcGluIGZhc3QgYXMKICB0aGUgY29uc3RhbnQg cG93ZXJ1cCBhbmQgcG93ZXJkb3duIHNlZW1zIHRvIGRyYXcgYSBsb3Qgb2YgZW5lcmd5LAogIGFu ZCBhZnRlciBhYm91dCA1IG1pbnV0ZXMgb2YgY29uc3RhbnQgc3dpdGNoaW5nIHRoZSBOdmlkaWEg Z3B1IGdldHMKICBzdHVjayBpbiBEMyBldmVuIGlmIHRoZSBkZWxheSBpcyBpbmNyZWFzZWQgdG8g MiBzZWNvbmRzLiBVc2luZyBEM2NvbGQKICBpbnN0ZWFkIG9mIEQzaG90IGRpZG4ndCBoZWxwIGVp dGhlci4KCgpLaW5kIHJlZ2FyZHMsCgpMdWthcwoKCkRhdmUgQWlybGllICgxKToKICB2Z2Ffc3dp dGNoZXJvbzogTG9jay91bmxvY2sgRERDIGxpbmVzCgpMdWthcyBXdW5uZXIgKDUpOgogIHZnYV9z d2l0Y2hlcm9vOiBMb2NrL3VubG9jayBEREMgbGluZXMgaGFyZGVyCiAgUmV2ZXJ0ICJ2Z2Ffc3dp dGNoZXJvbzogQWRkIGhlbHBlciBmdW5jdGlvbiB0byBnZXQgdGhlIGFjdGl2ZSBjbGllbnQiCiAg dmdhX3N3aXRjaGVyb286IFJlcHJvYmUgY29ubmVjdG9ycyBpZiBoYW5kbGVyIHJlZ2lzdGVycyBs YXRlCiAgZHJtL2k5MTU6IFJlcHJvYmUgY29ubmVjdG9ycyBpZiB2Z2Ffc3dpdGNoZXJvbyBoYW5k bGVyIHJlZ2lzdGVycyBsYXRlCiAgZHJtL25vdXZlYXU6IFBhdXNlIGJldHdlZW4gc2V0dGluZyBn cHUgdG8gRDNob3QgYW5kIGN1dHRpbmcgdGhlIHBvd2VyCgpNYXR0aGV3IEdhcnJldHQgKDEpOgog IGFwcGxlLWdtdXg6IEFzc2lnbiBhcHBsZV9nbXV4X2RhdGEgYmVmb3JlIHJlZ2lzdGVyaW5nCgpT ZXRoIEZvcnNoZWUgKDQpOgogIHZnYV9zd2l0Y2hlcm9vOiBBZGQgc3VwcG9ydCBmb3Igc3dpdGNo aW5nIG9ubHkgdGhlIEREQwogIHZnYV9zd2l0Y2hlcm9vOiBBZGQgaGVscGVyIGZ1bmN0aW9uIHRv IGdldCB0aGUgYWN0aXZlIGNsaWVudAogIGFwcGxlLWdtdXg6IEFkZCBzd2l0Y2hfZGRjIHN1cHBv cnQKICBkcm0vZWRpZDogU3dpdGNoIEREQyB3aGVuIHJlYWRpbmcgdGhlIEVESUQKCiBkcml2ZXJz L2dwdS9kcm0vZHJtX2VkaWQuYyAgICAgICAgICAgIHwgIDEwICsrKy0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZG1hLmMgICAgICAgfCAgNDAgKysrKysrKysrKysrKwogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5j ICAgICAgIHwgICA2ICstCiBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jIHwg ICAyICsKIGRyaXZlcnMvZ3B1L3ZnYS92Z2Ffc3dpdGNoZXJvby5jICAgICAgfCAxMDUgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrLQogZHJpdmVycy9wbGF0Zm9ybS94ODYvYXBwbGUt Z211eC5jICAgICB8ICAzNSArKysrKysrKysrLS0KIGluY2x1ZGUvbGludXgvdmdhX3N3aXRjaGVy b28uaCAgICAgICAgfCAgIDcgKysrCiA5IGZpbGVzIGNoYW5nZWQsIDE5NiBpbnNlcnRpb25zKCsp LCAxMiBkZWxldGlvbnMoLSkKCi0tID44IC0tCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2RybV9lZGlkLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQuYwppbmRleCA1M2JjN2E2Li44 OTUwNzIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vZHJtX2VkaWQuYwpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPGxpbnV4 L2hkbWkuaD4KICNpbmNsdWRlIDxsaW51eC9pMmMuaD4KICNpbmNsdWRlIDxsaW51eC9tb2R1bGUu aD4KKyNpbmNsdWRlIDxsaW51eC92Z2Ffc3dpdGNoZXJvby5oPgogI2luY2x1ZGUgPGRybS9kcm1Q Lmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9lZGlkLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9kaXNwbGF5 aWQuaD4KQEAgLTEzMjYsMTIgKzEzMjcsMTkgQEAgc3RydWN0IGVkaWQgKmRybV9nZXRfZWRpZChz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAogewogCXN0cnVjdCBlZGlkICplZGlkOwog Ci0JaWYgKCFkcm1fcHJvYmVfZGRjKGFkYXB0ZXIpKQorCXZnYV9zd2l0Y2hlcm9vX2xvY2tfZGRj KGNvbm5lY3Rvci0+ZGV2LT5wZGV2KTsKKworCWlmICghZHJtX3Byb2JlX2RkYyhhZGFwdGVyKSkg eworCQl2Z2Ffc3dpdGNoZXJvb191bmxvY2tfZGRjKGNvbm5lY3Rvci0+ZGV2LT5wZGV2KTsKIAkJ cmV0dXJuIE5VTEw7CisJfQogCiAJZWRpZCA9IGRybV9kb19nZXRfZWRpZChjb25uZWN0b3IsIGRy bV9kb19wcm9iZV9kZGNfZWRpZCwgYWRhcHRlcik7CiAJaWYgKGVkaWQpCiAJCWRybV9nZXRfZGlz cGxheWlkKGNvbm5lY3RvciwgZWRpZCk7CisKKwl2Z2Ffc3dpdGNoZXJvb191bmxvY2tfZGRjKGNv bm5lY3Rvci0+ZGV2LT5wZGV2KTsKKwogCXJldHVybiBlZGlkOwogfQogRVhQT1JUX1NZTUJPTChk cm1fZ2V0X2VkaWQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKaW5kZXggNjhlMGM4NS4uODY3MjZi NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCkBAIC0zNzksOSArMzc5LDQ5IEBAIHN0YXRpYyBi b29sIGk5MTVfc3dpdGNoZXJvb19jYW5fc3dpdGNoKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQogCXJl dHVybiBkZXYtPm9wZW5fY291bnQgPT0gMDsKIH0KIAorc3RhdGljIHZvaWQgaTkxNV9zd2l0Y2hl cm9vX3JlcHJvYmVfY29ubmVjdG9ycyhzdHJ1Y3QgcGNpX2RldiAqcGRldikKK3sKKwlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gcGNpX2dldF9kcnZkYXRhKHBkZXYpOworCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXI7CisKKwkvKgorCSAqIENoZWNrIHdoZXRoZXIgd2UndmUgYWxyZWFkeSBm b3VuZCBhIHBhbmVsLgorCSAqIElmIHNvLCB3ZSBkb24ndCBuZWVkIHRvIHJlcHJvYmUKKwkgKi8K Kwlmb3JfZWFjaF9pbnRlbF9lbmNvZGVyKGRldiwgZW5jb2RlcikKKwkJaWYgKGVuY29kZXItPnR5 cGUgPT0gSU5URUxfT1VUUFVUX0xWRFMgfHwKKwkJICAgIGVuY29kZXItPnR5cGUgPT0gSU5URUxf T1VUUFVUX0VEUCkKKwkJCXJldHVybjsKKworCS8qCisJICogaW50ZWxfbW9kZXNldF9nZW1faW5p dCgpIHNldHMgbHZkc191c2Vfc3NjIHRvIDAsCisJICogcmVzZXQgdG8gMSBzbyB0aGF0IHRoZSBT U0MgZ2V0cyB1c2VkIG9uIHRoZSBwYW5lbAorCSAqLworCWRldl9wcml2LT52YnQubHZkc191c2Vf c3NjID0KKwkJIShpOTE1LnBhbmVsX3VzZV9zc2MgPT0gMCB8fAorCQkgIGRldl9wcml2LT5xdWly a3MgJiBRVUlSS19MVkRTX1NTQ19ESVNBQkxFKTsKKwlpbnRlbF9zZXR1cF9vdXRwdXRzKGRldik7 CisKKwkvKiBEZXN0cm95IGRlZmF1bHQgMTAyNHg3NjggZmJkZXYgYW5kIHJlaW5pdGlhbGl6ZSAq LworCWludGVsX2ZiZGV2X2ZpbmkoZGV2KTsKKwlpZiAoaW50ZWxfZmJkZXZfaW5pdChkZXYpKQor CQlnb3RvIGNsZWFudXBfZ2VtOworCWFzeW5jX3NjaGVkdWxlKGludGVsX2ZiZGV2X2luaXRpYWxf Y29uZmlnLCBkZXZfcHJpdik7CisJcmV0dXJuOworCitjbGVhbnVwX2dlbToKKwlEUk1fRVJST1Io ImZhaWxlZCB0byByZWluaXRpYWxpemUgZmJkZXZcbiIpOworCW11dGV4X2xvY2soJmRldi0+c3Ry dWN0X211dGV4KTsKKwlpOTE1X2dlbV9jbGVhbnVwX3JpbmdidWZmZXIoZGV2KTsKKwlpOTE1X2dl bV9jb250ZXh0X2ZpbmkoZGV2KTsKKwltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsK K30KKwogc3RhdGljIGNvbnN0IHN0cnVjdCB2Z2Ffc3dpdGNoZXJvb19jbGllbnRfb3BzIGk5MTVf c3dpdGNoZXJvb19vcHMgPSB7CiAJLnNldF9ncHVfc3RhdGUgPSBpOTE1X3N3aXRjaGVyb29fc2V0 X3N0YXRlLAogCS5yZXByb2JlID0gTlVMTCwKKwkucmVwcm9iZV9jb25uZWN0b3JzID0gaTkxNV9z d2l0Y2hlcm9vX3JlcHJvYmVfY29ubmVjdG9ycywKIAkuY2FuX3N3aXRjaCA9IGk5MTVfc3dpdGNo ZXJvb19jYW5fc3dpdGNoLAogfTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggZTMyNmFj OS4uN2Y1ODg1OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0zMTIwLDYgKzMxMjAsNyBA QCBleHRlcm4gdm9pZCBpbnRlbF9zZXRfbWVtb3J5X2N4c3Ioc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAogZXh0ZXJuIHZvaWQgaW50ZWxfZGV0ZWN0X3BjaChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KTsKIGV4dGVybiBpbnQgaW50ZWxfdHJhbnNfZHBfcG9ydF9zZWwoc3RydWN0IGRy bV9jcnRjICpjcnRjKTsKIGV4dGVybiBpbnQgaW50ZWxfZW5hYmxlX3JjNihjb25zdCBzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KTsKK2V4dGVybiB2b2lkIGludGVsX3NldHVwX291dHB1dHMoc3RydWN0 IGRybV9kZXZpY2UgKmRldik7CiAKIGV4dGVybiBib29sIGk5MTVfc2VtYXBob3JlX2lzX2VuYWJs ZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiBpbnQgaTkxNV9yZWdfcmVhZF9pb2N0bChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jCmluZGV4IGQ1NDdkOWM4Li45NDgxMjA2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jCkBAIC0xMzAyNyw3ICsxMzAyNyw3IEBAIHN0YXRpYyBib29sIGludGVsX2NydF9w cmVzZW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRp YyB2b2lkIGludGVsX3NldHVwX291dHB1dHMoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3ZvaWQg aW50ZWxfc2V0dXBfb3V0cHV0cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogewogCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXI7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwppbmRleCBkMDIzNzEw Li5lOWM0MGIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKQEAgLTMwLDYgKzMwLDcgQEAKICNp bmNsdWRlIDxsaW51eC9leHBvcnQuaD4KICNpbmNsdWRlIDxsaW51eC9ub3RpZmllci5oPgogI2lu Y2x1ZGUgPGxpbnV4L3JlYm9vdC5oPgorI2luY2x1ZGUgPGxpbnV4L3ZnYV9zd2l0Y2hlcm9vLmg+ CiAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIu aD4KICNpbmNsdWRlIDxkcm0vZHJtX2NydGMuaD4KQEAgLTQwNzksNiArNDA4MCw3IEBAIGludGVs X2RwX2RldGVjdF9kcGNkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiB7CiAJdWludDhfdCAq ZHBjZCA9IGludGVsX2RwLT5kcGNkOwogCXVpbnQ4X3QgdHlwZTsKKwlzdHJ1Y3QgcGNpX2RldiAq cGRldiA9IGludGVsX2RwLT5hdHRhY2hlZF9jb25uZWN0b3ItPmJhc2UuZGV2LT5wZGV2OwogCiAJ aWYgKCFpbnRlbF9kcF9nZXRfZHBjZChpbnRlbF9kcCkpCiAJCXJldHVybiBjb25uZWN0b3Jfc3Rh dHVzX2Rpc2Nvbm5lY3RlZDsKQEAgLTQxMDEsNyArNDEwMyw5IEBAIGludGVsX2RwX2RldGVjdF9k cGNkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiAJfQogCiAJLyogSWYgbm8gSFBELCBwb2tl IEREQyBnZW50bHkgKi8KLQlpZiAoZHJtX3Byb2JlX2RkYygmaW50ZWxfZHAtPmF1eC5kZGMpKQor CWlmICh2Z2Ffc3dpdGNoZXJvb19sb2NrX2RkYyhwZGV2KSA+PSAwICYmCisJICAgIGRybV9wcm9i ZV9kZGMoJmludGVsX2RwLT5hdXguZGRjKSAmJgorCSAgICB2Z2Ffc3dpdGNoZXJvb191bmxvY2tf ZGRjKHBkZXYpID49IDApCiAJCXJldHVybiBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZDsKIAog CS8qIFdlbGwgd2UgdHJpZWQsIHNheSB1bmtub3duIGZvciB1bnJlbGlhYmxlIHBvcnQgdHlwZXMg Ki8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmMgYi9k cml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RybS5jCmluZGV4IDg5MDQ5MzMuLjY0OTAy NGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJtLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kcm0uYwpAQCAtMjMsNiArMjMsNyBA QAogICovCiAKICNpbmNsdWRlIDxsaW51eC9jb25zb2xlLmg+CisjaW5jbHVkZSA8bGludXgvZGVs YXkuaD4KICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KICNpbmNsdWRlIDxsaW51eC9wY2kuaD4K ICNpbmNsdWRlIDxsaW51eC9wbV9ydW50aW1lLmg+CkBAIC02NjYsNiArNjY3LDcgQEAgbm91dmVh dV9wbW9wc19zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKIAlwY2lfc2F2ZV9zdGF0ZShwZGV2 KTsKIAlwY2lfZGlzYWJsZV9kZXZpY2UocGRldik7CiAJcGNpX3NldF9wb3dlcl9zdGF0ZShwZGV2 LCBQQ0lfRDNob3QpOworCXVkZWxheSgyMDApOwogCXJldHVybiAwOwogfQogCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS92Z2EvdmdhX3N3aXRjaGVyb28uYyBiL2RyaXZlcnMvZ3B1L3ZnYS92Z2Ff c3dpdGNoZXJvby5jCmluZGV4IDM3YWM3YjUuLjNiMTNlOWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L3ZnYS92Z2Ffc3dpdGNoZXJvby5jCisrKyBiL2RyaXZlcnMvZ3B1L3ZnYS92Z2Ffc3dpdGNo ZXJvby5jCkBAIC05LDEyICs5LDEzIEBACiAKICBTd2l0Y2hlciBpbnRlcmZhY2UgLSBtZXRob2Rz IHJlcXVpcmUgZm9yIEFUUFggYW5kIERDTQogIC0gc3dpdGNodG8gLSB0aGlzIHRocm93cyB0aGUg b3V0cHV0IE1VWCBzd2l0Y2gKLSAtIGRpc2NyZXRlX3NldF9wb3dlciAtIHNldHMgdGhlIHBvd2Vy IHN0YXRlIGZvciB0aGUgZGlzY3JldGUgY2FyZAorIC0gc3dpdGNoX2RkYyAtIHN3aXRjaCBvbmx5 IEREQyBsaW5lcywgcmV0dXJuIG9sZCBEREMgb3duZXIgKG9yIDwgMCBvbiBmYWlsdXJlKQorIC0g cG93ZXJfc3RhdGUgLSBzZXRzIHRoZSBwb3dlciBzdGF0ZSBmb3IgZWl0aGVyIEdQVQogCiAgR1BV IGRyaXZlciBpbnRlcmZhY2UKICAtIHNldF9ncHVfc3RhdGUgLSB0aGlzIHNob3VsZCBkbyB0aGUg ZXF1aXYgb2Ygcy9yIGZvciB0aGUgY2FyZAogCQkgIC0gdGhpcyBzaG91bGQgKm5vdCogc2V0IHRo ZSBkaXNjcmV0ZSBwb3dlciBzdGF0ZQotIC0gc3dpdGNoX2NoZWNrICAtIGNoZWNrIGlmIHRoZSBk ZXZpY2UgaXMgaW4gYSBwb3NpdGlvbiB0byBzd2l0Y2ggbm93CisgLSBjYW5fc3dpdGNoIC0gY2hl Y2sgaWYgdGhlIGRldmljZSBpcyBpbiBhIHBvc2l0aW9uIHRvIHN3aXRjaCBub3cKICAqLwogCiAj aW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CkBAIC01Nyw2ICs1OCw5IEBAIHN0cnVjdCB2Z2Fzcl9w cml2IHsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGNsaWVudHM7CiAKIAlzdHJ1Y3QgdmdhX3N3aXRjaGVy b29faGFuZGxlciAqaGFuZGxlcjsKKworCXN0cnVjdCBtdXRleCBkZGNfbG9jazsKKwllbnVtIHZn YV9zd2l0Y2hlcm9vX2NsaWVudF9pZCBvbGRfZGRjX293bmVyOwogfTsKIAogI2RlZmluZSBJRF9C SVRfQVVESU8JCTB4MTAwCkBAIC03MCw2ICs3NCw3IEBAIHN0YXRpYyB2b2lkIHZnYV9zd2l0Y2hl cm9vX2RlYnVnZnNfZmluaShzdHJ1Y3Qgdmdhc3JfcHJpdiAqcHJpdik7CiAvKiBvbmx5IG9uZSBz d2l0Y2hlcm9vIHBlciBzeXN0ZW0gKi8KIHN0YXRpYyBzdHJ1Y3Qgdmdhc3JfcHJpdiB2Z2Fzcl9w cml2ID0gewogCS5jbGllbnRzID0gTElTVF9IRUFEX0lOSVQodmdhc3JfcHJpdi5jbGllbnRzKSwK KwkuZGRjX2xvY2sgPSBfX01VVEVYX0lOSVRJQUxJWkVSKHZnYXNyX3ByaXYuZGRjX2xvY2spLAog fTsKIAogc3RhdGljIGJvb2wgdmdhX3N3aXRjaGVyb29fcmVhZHkodm9pZCkKQEAgLTEwMyw2ICsx MDgsOCBAQCBzdGF0aWMgdm9pZCB2Z2Ffc3dpdGNoZXJvb19lbmFibGUodm9pZCkKIAogaW50IHZn YV9zd2l0Y2hlcm9vX3JlZ2lzdGVyX2hhbmRsZXIoc3RydWN0IHZnYV9zd2l0Y2hlcm9vX2hhbmRs ZXIgKmhhbmRsZXIpCiB7CisJc3RydWN0IHZnYV9zd2l0Y2hlcm9vX2NsaWVudCAqY2xpZW50Owor CiAJbXV0ZXhfbG9jaygmdmdhc3JfbXV0ZXgpOwogCWlmICh2Z2Fzcl9wcml2LmhhbmRsZXIpIHsK IAkJbXV0ZXhfdW5sb2NrKCZ2Z2Fzcl9tdXRleCk7CkBAIC0xMTAsNiArMTE3LDEyIEBAIGludCB2 Z2Ffc3dpdGNoZXJvb19yZWdpc3Rlcl9oYW5kbGVyKHN0cnVjdCB2Z2Ffc3dpdGNoZXJvb19oYW5k bGVyICpoYW5kbGVyKQogCX0KIAogCXZnYXNyX3ByaXYuaGFuZGxlciA9IGhhbmRsZXI7CisKKwkv KiBjbGllbnRzIHdoaWNoIHJlZ2lzdGVyZWQgYmVmb3JlIHRoZSBoYW5kbGVyIG11c3QgcmVwcm9i ZSAqLworCWxpc3RfZm9yX2VhY2hfZW50cnkoY2xpZW50LCAmdmdhc3JfcHJpdi5jbGllbnRzLCBs aXN0KQorCQlpZiAoIWNsaWVudC0+YWN0aXZlICYmIGNsaWVudC0+b3BzLT5yZXByb2JlX2Nvbm5l Y3RvcnMpCisJCQljbGllbnQtPm9wcy0+cmVwcm9iZV9jb25uZWN0b3JzKGNsaWVudC0+cGRldik7 CisKIAlpZiAodmdhX3N3aXRjaGVyb29fcmVhZHkoKSkgewogCQlwcmludGsoS0VSTl9JTkZPICJ2 Z2Ffc3dpdGNoZXJvbzogZW5hYmxlZFxuIik7CiAJCXZnYV9zd2l0Y2hlcm9vX2VuYWJsZSgpOwpA QCAtMjU2LDYgKzI2OSw2MCBAQCB2b2lkIHZnYV9zd2l0Y2hlcm9vX2NsaWVudF9mYl9zZXQoc3Ry dWN0IHBjaV9kZXYgKnBkZXYsCiB9CiBFWFBPUlRfU1lNQk9MKHZnYV9zd2l0Y2hlcm9vX2NsaWVu dF9mYl9zZXQpOwogCitpbnQgdmdhX3N3aXRjaGVyb29fbG9ja19kZGMoc3RydWN0IHBjaV9kZXYg KnBkZXYpCit7CisJaW50IHJldCA9IDA7CisJaW50IGlkOworCisJaWYgKCF2Z2Fzcl9wcml2Lmhh bmRsZXIpIHsKKwkJcmV0ID0gLUVOT0RFVjsKKwkJZ290byBvdXQ7CisJfQorCisJaWYgKHZnYXNy X3ByaXYuaGFuZGxlci0+c3dpdGNoX2RkYykgeworCQltdXRleF9sb2NrKCZ2Z2Fzcl9wcml2LmRk Y19sb2NrKTsKKworCQlpZCA9IHZnYXNyX3ByaXYuaGFuZGxlci0+Z2V0X2NsaWVudF9pZChwZGV2 KTsKKwkJcmV0ID0gdmdhc3JfcHJpdi5oYW5kbGVyLT5zd2l0Y2hfZGRjKGlkKTsKKworCQlpZiAo cmV0IDwgMCkgeworCQkJbXV0ZXhfdW5sb2NrKCZ2Z2Fzcl9wcml2LmRkY19sb2NrKTsKKwkJCXBy aW50ayhLRVJOX0VSUiAidmdhX3N3aXRjaGVyb286IGZhaWxlZCB0byBzd2l0Y2ggRERDIGxpbmVz XG4iKTsKKwkJfSBlbHNlCisJCQl2Z2Fzcl9wcml2Lm9sZF9kZGNfb3duZXIgPSByZXQ7CisJfQor CitvdXQ6CisJcmV0dXJuIHJldDsKK30KK0VYUE9SVF9TWU1CT0wodmdhX3N3aXRjaGVyb29fbG9j a19kZGMpOworCitpbnQgdmdhX3N3aXRjaGVyb29fdW5sb2NrX2RkYyhzdHJ1Y3QgcGNpX2RldiAq cGRldikKK3sKKwlpbnQgcmV0ID0gMDsKKwlpbnQgaWQ7CisKKwlpZiAoIXZnYXNyX3ByaXYuaGFu ZGxlcikgeworCQlyZXQgPSAtRU5PREVWOworCQlnb3RvIG91dDsKKwl9CisKKwlpZiAodmdhc3Jf cHJpdi5oYW5kbGVyLT5zd2l0Y2hfZGRjKSB7CisJCWlkID0gdmdhc3JfcHJpdi5oYW5kbGVyLT5n ZXRfY2xpZW50X2lkKHBkZXYpOworCisJCWlmICh2Z2Fzcl9wcml2Lm9sZF9kZGNfb3duZXIgIT0g aWQpCisJCQlyZXQgPSB2Z2Fzcl9wcml2LmhhbmRsZXItPnN3aXRjaF9kZGModmdhc3JfcHJpdi5v bGRfZGRjX293bmVyKTsKKwkJaWYgKHJldCA8IDApCisJCQlwcmludGsoS0VSTl9FUlIgInZnYV9z d2l0Y2hlcm9vOiBmYWlsZWQgdG8gc3dpdGNoIEREQyBsaW5lc1xuIik7CisKKwkJbXV0ZXhfdW5s b2NrKCZ2Z2Fzcl9wcml2LmRkY19sb2NrKTsKKwl9CisKK291dDoKKwlyZXR1cm4gcmV0OworfQor RVhQT1JUX1NZTUJPTCh2Z2Ffc3dpdGNoZXJvb191bmxvY2tfZGRjKTsKKwogc3RhdGljIGludCB2 Z2Ffc3dpdGNoZXJvb19zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdikKIHsKIAlzdHJ1 Y3QgdmdhX3N3aXRjaGVyb29fY2xpZW50ICpjbGllbnQ7CkBAIC0zNTMsOSArNDIwLDI1IEBAIHN0 YXRpYyBpbnQgdmdhX3N3aXRjaHRvX3N0YWdlMihzdHJ1Y3QgdmdhX3N3aXRjaGVyb29fY2xpZW50 ICpuZXdfY2xpZW50KQogCQljb25zb2xlX3VubG9jaygpOwogCX0KIAorCWlmICh2Z2Fzcl9wcml2 LmhhbmRsZXItPnN3aXRjaF9kZGMpIHsKKwkJbXV0ZXhfbG9jaygmdmdhc3JfcHJpdi5kZGNfbG9j ayk7CisJCXJldCA9IHZnYXNyX3ByaXYuaGFuZGxlci0+c3dpdGNoX2RkYyhuZXdfY2xpZW50LT5p ZCk7CisJCW11dGV4X3VubG9jaygmdmdhc3JfcHJpdi5kZGNfbG9jayk7CisJCWlmIChyZXQgPCAw KSB7CisJCQlwcmludGsoS0VSTl9FUlIgInZnYV9zd2l0Y2hlcm9vOiBmYWlsZWQgdG8gc3dpdGNo IEREQyBsaW5lc1xuIik7CisJCQlyZXR1cm4gcmV0OworCQl9CisJfQorCiAJcmV0ID0gdmdhc3Jf cHJpdi5oYW5kbGVyLT5zd2l0Y2h0byhuZXdfY2xpZW50LT5pZCk7Ci0JaWYgKHJldCkKKwlpZiAo cmV0KSB7CisJCXByaW50ayhLRVJOX0VSUiAidmdhX3N3aXRjaGVyb286IGZhaWxlZCB0byBzd2l0 Y2ggdG8gY2xpZW50ICVkXG4iLCBuZXdfY2xpZW50LT5pZCk7CisJCS8qIHJlc3RvcmUgRERDIGxp bmVzICovCisJCW11dGV4X2xvY2soJnZnYXNyX3ByaXYuZGRjX2xvY2spOworCQl2Z2Fzcl9wcml2 LmhhbmRsZXItPnN3aXRjaF9kZGMoYWN0aXZlLT5pZCk7CisJCW11dGV4X3VubG9jaygmdmdhc3Jf cHJpdi5kZGNfbG9jayk7CiAJCXJldHVybiByZXQ7CisJfQogCiAJaWYgKG5ld19jbGllbnQtPm9w cy0+cmVwcm9iZSkKIAkJbmV3X2NsaWVudC0+b3BzLT5yZXByb2JlKG5ld19jbGllbnQtPnBkZXYp OwpAQCAtNDY4LDYgKzU1MSwxNSBAQCB2Z2Ffc3dpdGNoZXJvb19kZWJ1Z2ZzX3dyaXRlKHN0cnVj dCBmaWxlICpmaWxwLCBjb25zdCBjaGFyIF9fdXNlciAqdWJ1ZiwKIAl2Z2Fzcl9wcml2LmRlbGF5 ZWRfc3dpdGNoX2FjdGl2ZSA9IGZhbHNlOwogCiAJaWYgKGp1c3RfbXV4KSB7CisJCWlmICh2Z2Fz cl9wcml2LmhhbmRsZXItPnN3aXRjaF9kZGMpIHsKKwkJCW11dGV4X2xvY2soJnZnYXNyX3ByaXYu ZGRjX2xvY2spOworCQkJcmV0ID0gdmdhc3JfcHJpdi5oYW5kbGVyLT5zd2l0Y2hfZGRjKGNsaWVu dF9pZCk7CisJCQltdXRleF91bmxvY2soJnZnYXNyX3ByaXYuZGRjX2xvY2spOworCQkJaWYgKHJl dCA8IDApIHsKKwkJCQlwcmludGsoS0VSTl9FUlIgInZnYV9zd2l0Y2hlcm9vOiBmYWlsZWQgdG8g c3dpdGNoIEREQyBsaW5lc1xuIik7CisJCQkJZ290byBvdXQ7CisJCQl9CisJCX0KIAkJcmV0ID0g dmdhc3JfcHJpdi5oYW5kbGVyLT5zd2l0Y2h0byhjbGllbnRfaWQpOwogCQlnb3RvIG91dDsKIAl9 CkBAIC02MjMsNiArNzE1LDEzIEBAIHN0YXRpYyBpbnQgdmdhX3N3aXRjaGVyb29fcnVudGltZV9z dXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKIAlyZXQgPSBkZXYtPmJ1cy0+cG0tPnJ1bnRpbWVf c3VzcGVuZChkZXYpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CisJaWYgKHZnYXNyX3ByaXYu aGFuZGxlci0+c3dpdGNoX2RkYykgeworCQltdXRleF9sb2NrKCZ2Z2Fzcl9wcml2LmRkY19sb2Nr KTsKKwkJcmV0ID0gdmdhc3JfcHJpdi5oYW5kbGVyLT5zd2l0Y2hfZGRjKFZHQV9TV0lUQ0hFUk9P X0lHRCk7CisJCW11dGV4X3VubG9jaygmdmdhc3JfcHJpdi5kZGNfbG9jayk7CisJCWlmIChyZXQg PCAwKQorCQkJcHJpbnRrKEtFUk5fRVJSICJ2Z2Ffc3dpdGNoZXJvbzogZmFpbGVkIHRvIHN3aXRj aCBEREMgbGluZXNcbiIpOworCX0KIAlpZiAodmdhc3JfcHJpdi5oYW5kbGVyLT5zd2l0Y2h0bykK IAkJdmdhc3JfcHJpdi5oYW5kbGVyLT5zd2l0Y2h0byhWR0FfU1dJVENIRVJPT19JR0QpOwogCXZn YV9zd2l0Y2hlcm9vX3Bvd2VyX3N3aXRjaChwZGV2LCBWR0FfU1dJVENIRVJPT19PRkYpOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9wbGF0Zm9ybS94ODYvYXBwbGUtZ211eC5jIGIvZHJpdmVycy9wbGF0 Zm9ybS94ODYvYXBwbGUtZ211eC5jCmluZGV4IGI5NDI5ZmIuLjA1YmJhOTIgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvcGxhdGZvcm0veDg2L2FwcGxlLWdtdXguYworKysgYi9kcml2ZXJzL3BsYXRmb3Jt L3g4Ni9hcHBsZS1nbXV4LmMKQEAgLTI3MSwxNCArMjcxLDM0IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgYmFja2xpZ2h0X29wcyBnbXV4X2JsX29wcyA9IHsKIAkudXBkYXRlX3N0YXR1cyA9IGdtdXhf dXBkYXRlX3N0YXR1cywKIH07CiAKK3N0YXRpYyBpbnQgZ211eF9zd2l0Y2hfZGRjKGVudW0gdmdh X3N3aXRjaGVyb29fY2xpZW50X2lkIGlkKQoreworCWVudW0gdmdhX3N3aXRjaGVyb29fY2xpZW50 X2lkIG9sZF9kZGNfb3duZXI7CisKKwlpZiAoZ211eF9yZWFkOChhcHBsZV9nbXV4X2RhdGEsIEdN VVhfUE9SVF9TV0lUQ0hfRERDKSA9PSAxKQorCQlvbGRfZGRjX293bmVyID0gVkdBX1NXSVRDSEVS T09fSUdEOworCWVsc2UKKwkJb2xkX2RkY19vd25lciA9IFZHQV9TV0lUQ0hFUk9PX0RJUzsKKwor CXByX2RlYnVnKCJTd2l0Y2hpbmcgZ211eCBEREMgZnJvbSAlZCB0byAlZFxuIiwgb2xkX2RkY19v d25lciwgaWQpOworCisJaWYgKGlkID09IG9sZF9kZGNfb3duZXIpCisJCXJldHVybiBvbGRfZGRj X293bmVyOworCisJaWYgKGlkID09IFZHQV9TV0lUQ0hFUk9PX0lHRCkKKwkJZ211eF93cml0ZTgo YXBwbGVfZ211eF9kYXRhLCBHTVVYX1BPUlRfU1dJVENIX0REQywgMSk7CisJZWxzZQorCQlnbXV4 X3dyaXRlOChhcHBsZV9nbXV4X2RhdGEsIEdNVVhfUE9SVF9TV0lUQ0hfRERDLCAyKTsKKworCXJl dHVybiBvbGRfZGRjX293bmVyOworfQorCiBzdGF0aWMgaW50IGdtdXhfc3dpdGNodG8oZW51bSB2 Z2Ffc3dpdGNoZXJvb19jbGllbnRfaWQgaWQpCiB7CiAJaWYgKGlkID09IFZHQV9TV0lUQ0hFUk9P X0lHRCkgewotCQlnbXV4X3dyaXRlOChhcHBsZV9nbXV4X2RhdGEsIEdNVVhfUE9SVF9TV0lUQ0hf RERDLCAxKTsKIAkJZ211eF93cml0ZTgoYXBwbGVfZ211eF9kYXRhLCBHTVVYX1BPUlRfU1dJVENI X0RJU1BMQVksIDIpOwogCQlnbXV4X3dyaXRlOChhcHBsZV9nbXV4X2RhdGEsIEdNVVhfUE9SVF9T V0lUQ0hfRVhURVJOQUwsIDIpOwogCX0gZWxzZSB7Ci0JCWdtdXhfd3JpdGU4KGFwcGxlX2dtdXhf ZGF0YSwgR01VWF9QT1JUX1NXSVRDSF9EREMsIDIpOwogCQlnbXV4X3dyaXRlOChhcHBsZV9nbXV4 X2RhdGEsIEdNVVhfUE9SVF9TV0lUQ0hfRElTUExBWSwgMyk7CiAJCWdtdXhfd3JpdGU4KGFwcGxl X2dtdXhfZGF0YSwgR01VWF9QT1JUX1NXSVRDSF9FWFRFUk5BTCwgMyk7CiAJfQpAQCAtMzQ1LDYg KzM2NSw3IEBAIGdtdXhfYWN0aXZlX2NsaWVudChzdHJ1Y3QgYXBwbGVfZ211eF9kYXRhICpnbXV4 X2RhdGEpCiB9CiAKIHN0YXRpYyBzdHJ1Y3QgdmdhX3N3aXRjaGVyb29faGFuZGxlciBnbXV4X2hh bmRsZXIgPSB7CisJLnN3aXRjaF9kZGMgPSBnbXV4X3N3aXRjaF9kZGMsCiAJLnN3aXRjaHRvID0g Z211eF9zd2l0Y2h0bywKIAkucG93ZXJfc3RhdGUgPSBnbXV4X3NldF9wb3dlcl9zdGF0ZSwKIAku Z2V0X2NsaWVudF9pZCA9IGdtdXhfZ2V0X2NsaWVudF9pZCwKQEAgLTU1MiwxOCArNTczLDIwIEBA IHN0YXRpYyBpbnQgZ211eF9wcm9iZShzdHJ1Y3QgcG5wX2RldiAqcG5wLCBjb25zdCBzdHJ1Y3Qg cG5wX2RldmljZV9pZCAqaWQpCiAJCWdtdXhfZGF0YS0+Z3BlID0gLTE7CiAJfQogCisJYXBwbGVf Z211eF9kYXRhID0gZ211eF9kYXRhOworCWluaXRfY29tcGxldGlvbigmZ211eF9kYXRhLT5wb3dl cmNoYW5nZV9kb25lKTsKKwlnbXV4X2VuYWJsZV9pbnRlcnJ1cHRzKGdtdXhfZGF0YSk7CisKIAlp ZiAodmdhX3N3aXRjaGVyb29fcmVnaXN0ZXJfaGFuZGxlcigmZ211eF9oYW5kbGVyKSkgewogCQly ZXQgPSAtRU5PREVWOwogCQlnb3RvIGVycl9yZWdpc3Rlcl9oYW5kbGVyOwogCX0KIAotCWluaXRf Y29tcGxldGlvbigmZ211eF9kYXRhLT5wb3dlcmNoYW5nZV9kb25lKTsKLQlhcHBsZV9nbXV4X2Rh dGEgPSBnbXV4X2RhdGE7Ci0JZ211eF9lbmFibGVfaW50ZXJydXB0cyhnbXV4X2RhdGEpOwotCiAJ cmV0dXJuIDA7CiAKIGVycl9yZWdpc3Rlcl9oYW5kbGVyOgorCWdtdXhfZGlzYWJsZV9pbnRlcnJ1 cHRzKGdtdXhfZGF0YSk7CisJYXBwbGVfZ211eF9kYXRhID0gTlVMTDsKIAlpZiAoZ211eF9kYXRh LT5ncGUgPj0gMCkKIAkJYWNwaV9kaXNhYmxlX2dwZShOVUxMLCBnbXV4X2RhdGEtPmdwZSk7CiBl cnJfZW5hYmxlX2dwZToKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdmdhX3N3aXRjaGVyb28u aCBiL2luY2x1ZGUvbGludXgvdmdhX3N3aXRjaGVyb28uaAppbmRleCBiNDgzYWJkLi5jM2FkOGJm IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3ZnYV9zd2l0Y2hlcm9vLmgKKysrIGIvaW5jbHVk ZS9saW51eC92Z2Ffc3dpdGNoZXJvby5oCkBAIC0yOSw2ICsyOSw3IEBAIGVudW0gdmdhX3N3aXRj aGVyb29fY2xpZW50X2lkIHsKIH07CiAKIHN0cnVjdCB2Z2Ffc3dpdGNoZXJvb19oYW5kbGVyIHsK KwlpbnQgKCpzd2l0Y2hfZGRjKShlbnVtIHZnYV9zd2l0Y2hlcm9vX2NsaWVudF9pZCBpZCk7CiAJ aW50ICgqc3dpdGNodG8pKGVudW0gdmdhX3N3aXRjaGVyb29fY2xpZW50X2lkIGlkKTsKIAlpbnQg KCpwb3dlcl9zdGF0ZSkoZW51bSB2Z2Ffc3dpdGNoZXJvb19jbGllbnRfaWQgaWQsCiAJCQkgICBl bnVtIHZnYV9zd2l0Y2hlcm9vX3N0YXRlIHN0YXRlKTsKQEAgLTM5LDYgKzQwLDcgQEAgc3RydWN0 IHZnYV9zd2l0Y2hlcm9vX2hhbmRsZXIgewogc3RydWN0IHZnYV9zd2l0Y2hlcm9vX2NsaWVudF9v cHMgewogCXZvaWQgKCpzZXRfZ3B1X3N0YXRlKShzdHJ1Y3QgcGNpX2RldiAqZGV2LCBlbnVtIHZn YV9zd2l0Y2hlcm9vX3N0YXRlKTsKIAl2b2lkICgqcmVwcm9iZSkoc3RydWN0IHBjaV9kZXYgKmRl dik7CisJdm9pZCAoKnJlcHJvYmVfY29ubmVjdG9ycykoc3RydWN0IHBjaV9kZXYgKmRldik7CiAJ Ym9vbCAoKmNhbl9zd2l0Y2gpKHN0cnVjdCBwY2lfZGV2ICpkZXYpOwogfTsKIApAQCAtNTQsNiAr NTYsOSBAQCBpbnQgdmdhX3N3aXRjaGVyb29fcmVnaXN0ZXJfYXVkaW9fY2xpZW50KHN0cnVjdCBw Y2lfZGV2ICpwZGV2LAogdm9pZCB2Z2Ffc3dpdGNoZXJvb19jbGllbnRfZmJfc2V0KHN0cnVjdCBw Y2lfZGV2ICpkZXYsCiAJCQkJICBzdHJ1Y3QgZmJfaW5mbyAqaW5mbyk7CiAKK2ludCB2Z2Ffc3dp dGNoZXJvb19sb2NrX2RkYyhzdHJ1Y3QgcGNpX2RldiAqcGRldik7CitpbnQgdmdhX3N3aXRjaGVy b29fdW5sb2NrX2RkYyhzdHJ1Y3QgcGNpX2RldiAqcGRldik7CisKIGludCB2Z2Ffc3dpdGNoZXJv b19yZWdpc3Rlcl9oYW5kbGVyKHN0cnVjdCB2Z2Ffc3dpdGNoZXJvb19oYW5kbGVyICpoYW5kbGVy KTsKIHZvaWQgdmdhX3N3aXRjaGVyb29fdW5yZWdpc3Rlcl9oYW5kbGVyKHZvaWQpOwogCkBAIC03 Miw2ICs3Nyw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB2Z2Ffc3dpdGNoZXJvb191bnJlZ2lzdGVy X2NsaWVudChzdHJ1Y3QgcGNpX2RldiAqZGV2KSB7fQogc3RhdGljIGlubGluZSBpbnQgdmdhX3N3 aXRjaGVyb29fcmVnaXN0ZXJfY2xpZW50KHN0cnVjdCBwY2lfZGV2ICpkZXYsCiAJCWNvbnN0IHN0 cnVjdCB2Z2Ffc3dpdGNoZXJvb19jbGllbnRfb3BzICpvcHMsIGJvb2wgZHJpdmVyX3Bvd2VyX2Nv bnRyb2wpIHsgcmV0dXJuIDA7IH0KIHN0YXRpYyBpbmxpbmUgdm9pZCB2Z2Ffc3dpdGNoZXJvb19j bGllbnRfZmJfc2V0KHN0cnVjdCBwY2lfZGV2ICpkZXYsIHN0cnVjdCBmYl9pbmZvICppbmZvKSB7 fQorc3RhdGljIGlubGluZSBpbnQgdmdhX3N3aXRjaGVyb29fbG9ja19kZGMoc3RydWN0IHBjaV9k ZXYgKnBkZXYpIHsgcmV0dXJuIDA7IH0KK3N0YXRpYyBpbmxpbmUgaW50IHZnYV9zd2l0Y2hlcm9v X3VubG9ja19kZGMoc3RydWN0IHBjaV9kZXYgKnBkZXYpIHsgcmV0dXJuIDA7IH0KIHN0YXRpYyBp bmxpbmUgaW50IHZnYV9zd2l0Y2hlcm9vX3JlZ2lzdGVyX2hhbmRsZXIoc3RydWN0IHZnYV9zd2l0 Y2hlcm9vX2hhbmRsZXIgKmhhbmRsZXIpIHsgcmV0dXJuIDA7IH0KIHN0YXRpYyBpbmxpbmUgaW50 IHZnYV9zd2l0Y2hlcm9vX3JlZ2lzdGVyX2F1ZGlvX2NsaWVudChzdHJ1Y3QgcGNpX2RldiAqcGRl diwKIAljb25zdCBzdHJ1Y3QgdmdhX3N3aXRjaGVyb29fY2xpZW50X29wcyAqb3BzLAoKCi0tIAox LjguNS4yIChBcHBsZSBHaXQtNDgpCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2RyaS1kZXZlbAo=