From mboxrd@z Thu Jan 1 00:00:00 1970 From: joeyli Subject: Re: [PATCH] drm/radeon: add new AMD ACPI header and update relevant code Date: Mon, 30 Jul 2012 16:32:47 +0800 Message-ID: <1343637167.6341.76.camel@linux-s257.site> References: <1343237889-5220-1-git-send-email-alexdeucher@gmail.com> <20120726125838.GA28853@growl> <20120726193346.GA11288@growl> <20120728145626.GA6304@growl> <1343533908.6341.6.camel@linux-s257.site> <20120729131058.GB12378@growl> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from smtp.nue.novell.com (smtp.nue.novell.com [195.135.221.5]) by gabe.freedesktop.org (Postfix) with ESMTP id 8322B9F6A5 for ; Mon, 30 Jul 2012 01:35:32 -0700 (PDT) In-Reply-To: <20120729131058.GB12378@growl> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org Errors-To: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org To: Luca Tettamanti Cc: Alex Deucher , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org 5pa8IOaXpe+8jDIwMTItMDctMjkg5pa8IDE1OjEwICswMjAw77yMTHVjYSBUZXR0YW1hbnRpIOaP kOWIsO+8mgo+IE9uIFN1biwgSnVsIDI5LCAyMDEyIGF0IDExOjUxOjQ4QU0gKzA4MDAsIGpvZXls aSB3cm90ZToKPiA+IEhpIEx1Y2EsIAo+ID4gCj4gPiDmlrwg5YWt77yMMjAxMi0wNy0yOCDmlrwg MTY6NTYgKzAyMDDvvIxMdWNhIFRldHRhbWFudGkg5o+Q5Yiw77yaCj4gPiA+IEkganVzdCBmb3Vu ZCB0aGUgZmlyc3QgcHJvYmxlbSAocHJvYmFibHkgYSBCSU9TIGJ1Zyk6Cj4gPiA+IEFUSUZfRlVO Q1RJT05fR0VUX1NZU1RFTV9QQVJBTUVURVJTIGlzIGltcGxlbWVudGVkIGluIHRoZSBEU0RULCBi dXQgdGhlCj4gPiA+IGNvcnJlc3BvbmRpbmcgYml0IEFUSUZfR0VUX1NZU1RFTV9QQVJBTUVURVJT X1NVUFBPUlRFRCBpcyBub3Qgc2V0IDooCj4gPiA+IEkgaW50ZW5kZWQgdG8gdXNlIHRoZSBtZXRo b2QgdG8gc2V0IHVwIHRoZSBub3RpZmljYXRpb24gaGFuZGxlciBidXQgbm93Cj4gPiA+IG15IEJJ T1Mgc2F5cyB0aGF0IGl0J3Mgbm90IHRoZXJlIGV2ZW4gaWYgaXQgaXMuLi4KPiA+ID4gQ2FuIEkg YXNzdW1lIHNvbWUgZGVmYXVsdCB2YWx1ZXMgKGUuZy4gbm90aWZpY2F0aW9ucyBhcmUgZW5hYmxl ZCBhbmQgd2lsbAo+ID4gPiB1c2UgMHg4MSB1bmxlc3MgQVRJRl9GVU5DVElPTl9HRVRfU1lTVEVN X1BBUkFNRVRFUlMgc2F5cyBzb21ldGhpbmcKPiA+ID4gZGlmZmVyZW50KT8KPiA+ID4gCj4gPiAK PiA+IERpZCB5b3UgY2hlY2sgeW91ciBEU0RUIGZvciB0aGVyZSBoYXZlIHNvbWUgIk5vdGlmeSAo VkdBLCAweDgxKSIKPiA+IHN0YXRlbWVudCBpbiBBRk4wLi5BRk4xNT8KPiA+IElmIFlFUywgSSB0 aGluayB0aGF0IG1lYW5zIHlvdXIgbWFjaGluZSBpbiBjYXNlIHRoZSAweDgxIGlzIGZvciBBVEkg dXNlZAo+ID4gYnkgZGVmYXVsdC4KPiAKPiBZZXMsIG15IHBvaW50IGlzIHRoYXQgdGhlIG5vZmlj YXRpb24gaXMgdGhlcmUsIGJ1dCBzaW5jZQo+IEdFVF9TWVNURU1fUEFSQU1FVEVSUyBpcyBub3Qg YW5ub3VuY2VkIEkgaGF2ZSBub3Qgd2F5IHRvIGNoZWNrIGl0Lgo+IElPVywgd2hhdCBpcyBpbXBs ZW1lbnRlZCBpbiB0aGUgRFNEVCBkb2VzIG5vdCBtYXRjaCB3aGF0IGlzIGFubm91bmNlZCBieQo+ IFZFUklGWV9JTlRFUkZBQ0UuCj4gRm9yIHJlZmVyZW5jZSB0aGlzIGlzIHRoZSBEU0RUOiBodHRw Oi8vcGFzdGViaW4uY29tL0tLUzdac1R0Cj4gCj4gTHVjYQo+IAoKWWVzLCBzYXcgdGhlIHByb2Js ZW0gaW4geW91ciBEU0RUOgoKICAgICAgICBNZXRob2QgKEFGMDAsIDAsIE5vdFNlcmlhbGl6ZWQp CiAgICAgICAgewogICAgICAgICAgICBDcmVhdGVXb3JkRmllbGQgKEFUSUIsIFplcm8sIFNTWkUp CgkJLi4uCiAgICAgICAgICAgIFN0b3JlICgweDgwLCBOTVNLKQogICAgICAgICAgICBTdG9yZSAo MHgwMiwgU0ZVTikJCTw9PT0gMTBiLCBiaXQgMCBpcyAwCiAgICAgICAgICAgIFJldHVybiAoQVRJ QikKICAgICAgICB9CgpCdXQsIEFGMDEgc3RpbGwgc3VwcG9ydGVkIGluIEFUSUYgb24gdGhpcyBt YWNoaW5lLCBtYXliZSB3ZSBzaG91bGQgc3RpbGwKdHJ5IEdFVF9TWVNURU1fUEFSQU1FVEVSUyBl dmVuIHRoZSBmdW5jdGlvbiB2ZWN0b3Igc2V0IHRvIDA/Ck5vIGlkZWEuLi4KCgpPbiB0aGUgb3Ro ZXIgaGFuZCwgCk15IHBhdGNoIHRvIGF2b2lkIDB4ODEgZXZlbnQgY29uZmxpY3Qgd2l0aCBhY3Bp L3ZpZGVvIGRyaXZlciBsaWtlIGJlbG93LgpUaGlzIHBhdGNoIHdva3Mgb24gbXkgbm90ZWJvb2su IFlvdXIgcGF0Y2hlcyBkbyBtdWNoIG1vcmUgdGhpbmdzIHRoZW4KbWluZSwgc28gSSB0aGluayBt eSBwYXRjaCBqdXN0IGZvciByZWZlcmVuY2UuICAKClRoZXJlIGhhdmUgYSBwcm9ibGVtIGlzOgpJ ZiB3ZSB3YW50IHVzZSBhY3BpX25vdGlmaWVyX2NhbGxfY2hhaW4gdG8gY2hlY2sgZG9lcyBldmVu dCBjb25zdW1lIGJ5CmFueSBub3RpZmllciBpbiBhY3BpJ3MgYmxvY2tpbmcgbm90aWZpZXIgY2hh aW4sIHRoZW4gd2UgbmVlZCByZXR1cm4KTk9USUZZX0JBRCBpbiByYWRlb25fYWNwaSBidXQgbm90 IE5PVElGWV9PSy4KClNvLCBJIHN1Z2dlc3QgcmFkZW9uX2FjcGkgc2hvdWxkIHJlZ2lzdGVyIHRv IGFjcGkgbm90aWZpZXIgY2hhaW4gYnkKaXRzZWxmIGJ1dCBub3QgYXBwZW5kIG9uIHJhZGVvbl9h Y3BpX2V2ZW50IGluIHJhZGVvbl9wbS4gCgpBbmQsCnN1Z2dlc3QgYWxzbyBjaGVjayB0aGUgZGV2 aWNlIGNsYXNzIGlzIEFDUElfVklERU9fQ0xBU1MgbGlrZSBmb2xsb3dpbmc6Cgorc3RhdGljIGlu dCByYWRlb25fYWNwaV92aWRlb19ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLAouLi4K KwlpZiAoc3RyY21wKGV2ZW50LT5kZXZpY2VfY2xhc3MsIEFDUElfVklERU9fQ0xBU1MpICE9IDAp CisJCXJldHVybiBOT1RJRllfRE9ORTsKKwoKVGhhbmtzIGEgbG90IQpKb2V5IExlZQoKCj5Gcm9t IDljMGM0MmFiOGYzN2RhZmQzYjUxMmNhMzk1YjY0YmYzOTgxOWQyNmIgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IExlZSwgQ2h1bi1ZaSA8amxlZUBzdXNlLmNvbT4KRGF0ZTogTW9uLCAz MCBKdWwgMjAxMiAxNjoxNzowNSArMDgwMApTdWJqZWN0OiBbUEFUQ0hdIGRybS9yYWRlb24gYXZv aWQgMHg4MSBhY3BpIGV2ZW50IGNvbmZsaWN0IHdpdGggYWNwaSB2aWRlbwogZHJpdmVyCgpkcm0v cmFkZW9uIGF2b2lkIDB4ODEgYWNwaSBldmVudCBjb25mbGljdCB3aXRoIGFjcGkgdmlkZW8gZHJp dmVyCgpTaWduZWQtb2ZmLWJ5OiBMZWUsIENodW4tWWkgPGpsZWVAc3VzZS5jb20+Ci0tLQogZHJp dmVycy9hY3BpL3ZpZGVvLmMgICAgICAgICAgICAgICAgIHwgICAgNiArLQogZHJpdmVycy9ncHUv ZHJtL3JhZGVvbi9yYWRlb25fYWNwaS5jIHwgIDE1MCArKysrKysrKysrKysrKysrKysrKysrKysr KysrKystLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDEzOSBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvdmlkZW8uYyBiL2RyaXZlcnMvYWNwaS92 aWRlby5jCmluZGV4IDFlMGE5ZTEuLmUzMjQ5MmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS92 aWRlby5jCisrKyBiL2RyaXZlcnMvYWNwaS92aWRlby5jCkBAIC0xNDU3LDcgKzE0NTcsOCBAQCBz dGF0aWMgdm9pZCBhY3BpX3ZpZGVvX2J1c19ub3RpZnkoc3RydWN0IGFjcGlfZGV2aWNlICpkZXZp Y2UsIHUzMiBldmVudCkKIAkJYWNwaV92aWRlb19kZXZpY2VfZW51bWVyYXRlKHZpZGVvKTsKIAkJ YWNwaV92aWRlb19kZXZpY2VfcmViaW5kKHZpZGVvKTsKIAkJYWNwaV9idXNfZ2VuZXJhdGVfcHJv Y19ldmVudChkZXZpY2UsIGV2ZW50LCAwKTsKLQkJa2V5Y29kZSA9IEtFWV9TV0lUQ0hWSURFT01P REU7CisJCWlmICghYWNwaV9ub3RpZmllcl9jYWxsX2NoYWluKGRldmljZSwgZXZlbnQsIDApKQor CQkJa2V5Y29kZSA9IEtFWV9TV0lUQ0hWSURFT01PREU7CiAJCWJyZWFrOwogCiAJY2FzZSBBQ1BJ X1ZJREVPX05PVElGWV9DWUNMRToJLyogQ3ljbGUgRGlzcGxheSBvdXRwdXQgaG90a2V5IHByZXNz ZWQuICovCkBAIC0xNDc5LDcgKzE0ODAsOCBAQCBzdGF0aWMgdm9pZCBhY3BpX3ZpZGVvX2J1c19u b3RpZnkoc3RydWN0IGFjcGlfZGV2aWNlICpkZXZpY2UsIHUzMiBldmVudCkKIAkJYnJlYWs7CiAJ fQogCi0JaWYgKGV2ZW50ICE9IEFDUElfVklERU9fTk9USUZZX1NXSVRDSCkKKwlpZiAoZXZlbnQg IT0gQUNQSV9WSURFT19OT1RJRllfU1dJVENIIHx8CisJICAgIGV2ZW50ICE9IEFDUElfVklERU9f Tk9USUZZX1BST0JFKQogCQlhY3BpX25vdGlmaWVyX2NhbGxfY2hhaW4oZGV2aWNlLCBldmVudCwg MCk7CiAKIAlpZiAoa2V5Y29kZSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVv bi9yYWRlb25fYWNwaS5jIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fYWNwaS5jCmlu ZGV4IDViMzJlNDkuLjM3ZWQ1ZTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24v cmFkZW9uX2FjcGkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9hY3BpLmMK QEAgLTMsNiArMyw3IEBACiAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgogI2luY2x1ZGUgPGFjcGkv YWNwaV9kcml2ZXJzLmg+CiAjaW5jbHVkZSA8YWNwaS9hY3BpX2J1cy5oPgorI2luY2x1ZGUgPGFj cGkvdmlkZW8uaD4KIAogI2luY2x1ZGUgImRybVAuaCIKICNpbmNsdWRlICJkcm0uaCIKQEAgLTEz LDM2ICsxNCwxNTAgQEAKIAogI2luY2x1ZGUgPGxpbnV4L3ZnYV9zd2l0Y2hlcm9vLmg+CiAKK3N0 cnVjdCBhdGlmX3ZlcmlmeV9vdXRwdXQgeworCXUxNiBzaXplOwkJLyogc3RydWN0dXJlIHNpemUg aW4gYnl0ZXMgKGluY2x1ZGVzIHNpemUgZmllbGQpICovCisJdTE2IHZlcnNpb247CQkvKiB2ZXJz aW9uICovCisJdTMyIG5vdGlmX21hc2s7CQkvKiBzdXBwb3J0ZWQgbm90aWZpY2F0aW9ucyBtYXNr ICovCisJdTMyIGZ1bmNfYml0czsJCS8qIHN1cHBvcnRlZCBmdW5jdGlvbnMgYml0IHZlY3RvciAq LworfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKworc3RhdGljIHN0cnVjdCBhdGlmX3Zlcmlm eV9vdXRwdXQgKnZlcmlmeV9vdXRwdXQ7CisKK3N0cnVjdCBhdGlmX2dldF9zeXNwYXJhbXNfb3V0 cHV0IHsKKwl1MTYgc2l6ZTsJCS8qIHN0cnVjdHVyZSBzaXplIGluIGJ5dGVzIChpbmNsdWRlcyBz aXplIGZpZWxkKSAqLworCXUzMiB2YWxpZF9mbGFnc19tYXNrOwkvKiB2YWxpZCBmbGFncyBtYXNr ICovCisJdTMyIGZsYWdzOwkJLyogZmxhZ3MgKi8KKwl1OCAgbm90aWZ5X2NvZGU7CS8qIG5vdGlm eSBjb21tYW5kIGNvZGUgKi8KK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisKK3N0YXRpYyB1 OCBub3RpZnlfY29kZTsKKwogLyogQ2FsbCB0aGUgQVRJRiBtZXRob2QKICAqCiAgKiBOb3RlOiBj dXJyZW50bHkgd2UgZGlzY2FyZCB0aGUgb3V0cHV0CiAgKi8KLXN0YXRpYyBpbnQgcmFkZW9uX2F0 aWZfY2FsbChhY3BpX2hhbmRsZSBoYW5kbGUpCitzdGF0aWMgaW50IHJhZGVvbl9hdGlmX2NhbGwo YWNwaV9oYW5kbGUgaGFuZGxlLCBpbnQgZnVuY3Rpb24sIHN0cnVjdCBhY3BpX2J1ZmZlciAqcGFy YW1zLCBzdHJ1Y3QgYWNwaV9idWZmZXIgKm91dHB1dCkKIHsKIAlhY3BpX3N0YXR1cyBzdGF0dXM7 CiAJdW5pb24gYWNwaV9vYmplY3QgYXRpZl9hcmdfZWxlbWVudHNbMl07CiAJc3RydWN0IGFjcGlf b2JqZWN0X2xpc3QgYXRpZl9hcmc7Ci0Jc3RydWN0IGFjcGlfYnVmZmVyIGJ1ZmZlciA9IHsgQUNQ SV9BTExPQ0FURV9CVUZGRVIsIE5VTEx9OworCXVuaW9uIGFjcGlfb2JqZWN0ICpvYmo7CiAKLQlh dGlmX2FyZy5jb3VudCA9IDI7CisJYXRpZl9hcmcuY291bnQgPSAxOwogCWF0aWZfYXJnLnBvaW50 ZXIgPSAmYXRpZl9hcmdfZWxlbWVudHNbMF07CiAKIAlhdGlmX2FyZ19lbGVtZW50c1swXS50eXBl ID0gQUNQSV9UWVBFX0lOVEVHRVI7Ci0JYXRpZl9hcmdfZWxlbWVudHNbMF0uaW50ZWdlci52YWx1 ZSA9IEFUSUZfRlVOQ1RJT05fVkVSSUZZX0lOVEVSRkFDRTsKLQlhdGlmX2FyZ19lbGVtZW50c1sx XS50eXBlID0gQUNQSV9UWVBFX0lOVEVHRVI7Ci0JYXRpZl9hcmdfZWxlbWVudHNbMV0uaW50ZWdl ci52YWx1ZSA9IDA7CisJYXRpZl9hcmdfZWxlbWVudHNbMF0uaW50ZWdlci52YWx1ZSA9IGZ1bmN0 aW9uOwogCi0Jc3RhdHVzID0gYWNwaV9ldmFsdWF0ZV9vYmplY3QoaGFuZGxlLCAiQVRJRiIsICZh dGlmX2FyZywgJmJ1ZmZlcik7CisJaWYgKHBhcmFtcykgeworCQlhdGlmX2FyZy5jb3VudCA9IDI7 CisJCWF0aWZfYXJnX2VsZW1lbnRzWzFdLnR5cGUgPSBBQ1BJX1RZUEVfQlVGRkVSOworCQlhdGlm X2FyZ19lbGVtZW50c1sxXS5idWZmZXIubGVuZ3RoID0gcGFyYW1zLT5sZW5ndGg7CisJCWF0aWZf YXJnX2VsZW1lbnRzWzFdLmJ1ZmZlci5wb2ludGVyID0gcGFyYW1zLT5wb2ludGVyOworCX0KIAot CS8qIEZhaWwgb25seSBpZiBjYWxsaW5nIHRoZSBtZXRob2QgZmFpbHMgYW5kIEFUSUYgaXMgc3Vw cG9ydGVkICovCi0JaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpICYmIHN0YXR1cyAhPSBBRV9OT1Rf Rk9VTkQpIHsKLQkJRFJNX0RFQlVHX0RSSVZFUigiZmFpbGVkIHRvIGV2YWx1YXRlIEFUSUYgZ290 ICVzXG4iLAotCQkJCSBhY3BpX2Zvcm1hdF9leGNlcHRpb24oc3RhdHVzKSk7Ci0JCWtmcmVlKGJ1 ZmZlci5wb2ludGVyKTsKKwlzdGF0dXMgPSBhY3BpX2V2YWx1YXRlX29iamVjdChoYW5kbGUsICJB VElGIiwgJmF0aWZfYXJnLCBvdXRwdXQpOworCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkKIAkJ cmV0dXJuIDE7CisKKwlvYmogPSAodW5pb24gYWNwaV9vYmplY3QgKikgb3V0cHV0LT5wb2ludGVy OworCWlmICghb2JqKQorCQlyZXR1cm4gMTsKKwllbHNlIGlmIChvYmotPnR5cGUgIT0gQUNQSV9U WVBFX0JVRkZFUikgeworCQlrZnJlZShvYmopOworCQlyZXR1cm4gMTsKKwl9IGVsc2UgaWYgKG9i ai0+YnVmZmVyLmxlbmd0aCAhPSAyNTYpIHsKKwkJRFJNX0RFQlVHX0RSSVZFUigiVW5rbm93biBB VElGIG91dHB1dCBidWZmZXIgbGVuZ3RoICVkXG4iLCBvYmotPmJ1ZmZlci5sZW5ndGgpOworCQlr ZnJlZShvYmopOworCQlyZXR1cm4gMTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlu dCByYWRlb25fYXRpZl92ZXJpZnkoYWNwaV9oYW5kbGUgaGFuZGxlKQoreworCXN0cnVjdCBhY3Bp X2J1ZmZlciBvdXRwdXQgPSB7IEFDUElfQUxMT0NBVEVfQlVGRkVSLCBOVUxMIH07CisJc3RydWN0 IGF0aWZfdmVyaWZ5X291dHB1dCAqdm91dHB1dDsKKwl1bmlvbiBhY3BpX29iamVjdCAqb2JqOwor CWludCByZXQ7CisKKwkvKiBldmFsdWF0ZSB0aGUgQVRJRiB2ZXJpZnkgZnVuY3Rpb24gKi8KKwly ZXQgPSByYWRlb25fYXRpZl9jYWxsKGhhbmRsZSwgQVRJRl9GVU5DVElPTl9WRVJJRllfSU5URVJG QUNFLCBOVUxMLCAmb3V0cHV0KTsKKwlpZiAocmV0KSB7CisJCWtmcmVlKG91dHB1dC5wb2ludGVy KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlvYmogPSAodW5pb24gYWNwaV9vYmplY3QgKikgb3V0 cHV0LnBvaW50ZXI7CisKKwl2b3V0cHV0ID0gKHN0cnVjdCBhdGlmX3ZlcmlmeV9vdXRwdXQgKikg b2JqLT5idWZmZXIucG9pbnRlcjsKKwl2ZXJpZnlfb3V0cHV0ID0ga3phbGxvYyhzaXplb2Yoc3Ry dWN0IGF0aWZfdmVyaWZ5X291dHB1dCksIEdGUF9LRVJORUwpOwkJLyogVE9ETzoga2ZyZWUgKi8K Kwl2ZXJpZnlfb3V0cHV0LT5zaXplID0gdm91dHB1dC0+c2l6ZTsKKwl2ZXJpZnlfb3V0cHV0LT52 ZXJzaW9uID0gdm91dHB1dC0+dmVyc2lvbjsKKwl2ZXJpZnlfb3V0cHV0LT5ub3RpZl9tYXNrID0g dm91dHB1dC0+bm90aWZfbWFzazsKKwl2ZXJpZnlfb3V0cHV0LT5mdW5jX2JpdHMgPSB2b3V0cHV0 LT5mdW5jX2JpdHM7CisKKwlrZnJlZShvdXRwdXQucG9pbnRlcik7CisJcmV0dXJuIDA7Cit9CisK K3N0YXRpYyBpbnQgcmFkZW9uX2FjcGlfdmlkZW9fZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2Nr ICpuYiwKKwkJCQkgICB1bnNpZ25lZCBsb25nIHZhbCwgdm9pZCAqZGF0YSkKK3sKKwkvKiBUaGUg b25seSB2aWRlbyBldmVudHMgcmVsZXZhbnQgdG8gb3ByZWdpb24gYXJlIDB4ODEgb3Igbi4gVGhl c2UgaW5kaWNhdGUKKwkgICBlaXRoZXIgYSBkb2NraW5nIGV2ZW50LCBsaWQgc3dpdGNoIG9yIGRp c3BsYXkgc3dpdGNoIHJlcXVlc3QuIEluCisJICAgTGludXgsIHRoZXNlIGFyZSBoYW5kbGVkIGJ5 IHRoZSBkb2NrLCBidXR0b24gYW5kIHZpZGVvIGRyaXZlcnMuCisJKi8KKworCXN0cnVjdCBhY3Bp X2J1c19ldmVudCAqZXZlbnQgPSBkYXRhOworCWludCByZXQgPSBOT1RJRllfQkFEOwkJLyogUXVl c3Rpb246IGZvciBmaWxsIGFjcGkncyBibG9ja2luZyBub3RpZmllciBjaGFpbnMgKi8KKworCWlm IChzdHJjbXAoZXZlbnQtPmRldmljZV9jbGFzcywgQUNQSV9WSURFT19DTEFTUykgIT0gMCkKKwkJ cmV0dXJuIE5PVElGWV9ET05FOworCisJaWYgKGV2ZW50LT50eXBlICE9IG5vdGlmeV9jb2RlKQor CQlyZXR1cm4gTk9USUZZX0RPTkU7CisKKwkvKiBUT0RPOiBydW4gYW55dGhpbmcgc2hvdWxkIHRh a2UgY2FyZSBieSByYWRlb24gKi8KKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qg bm90aWZpZXJfYmxvY2sgcmFkZW9uX2FjcGlfbm90aWZpZXIgPSB7CisJLm5vdGlmaWVyX2NhbGwg PSByYWRlb25fYWNwaV92aWRlb19ldmVudCwKK307CisKK3N0YXRpYyBpbnQgcmFkZW9uX2F0aWZf Z2V0X3N5c3RlbV9wYXJhbShhY3BpX2hhbmRsZSBoYW5kbGUpCit7CisJc3RydWN0IGFjcGlfYnVm ZmVyIG91dHB1dCA9IHsgQUNQSV9BTExPQ0FURV9CVUZGRVIsIE5VTEwgfTsKKwlzdHJ1Y3QgYXRp Zl9nZXRfc3lzcGFyYW1zX291dHB1dCAqcGFyYW1zX291dHB1dDsKKwl1bmlvbiBhY3BpX29iamVj dCAqb2JqOworCXUzMiBmbGFnczsKKwlpbnQgcmV0OworCisJLyogZXZhbHVhdGUgdGhlIEFUSUYg Z2V0IHN5c3RlbSBwYXJhbWV0ZXJzIGZ1bmN0aW9uICovCisJcmV0ID0gcmFkZW9uX2F0aWZfY2Fs bChoYW5kbGUsIEFUSUZfRlVOQ1RJT05fR0VUX1NZU1RFTV9QQVJBTUVURVJTLCBOVUxMLCAmb3V0 cHV0KTsKKwlpZiAocmV0KSB7CisJCWtmcmVlKG91dHB1dC5wb2ludGVyKTsKKwkJcmV0dXJuIHJl dDsKIAl9CiAKLQlrZnJlZShidWZmZXIucG9pbnRlcik7CisJb2JqID0gKHVuaW9uIGFjcGlfb2Jq ZWN0ICopIG91dHB1dC5wb2ludGVyOworCisJcGFyYW1zX291dHB1dCA9IChzdHJ1Y3QgYXRpZl9n ZXRfc3lzcGFyYW1zX291dHB1dCAqKSBvYmotPmJ1ZmZlci5wb2ludGVyOworCWZsYWdzID0gcGFy YW1zX291dHB1dC0+ZmxhZ3M7CisKKwlpZiAoZmxhZ3MpIHsKKwkJaWYgKGZsYWdzID09IDEpCisJ CQlub3RpZnlfY29kZSA9IDB4ODE7CisJCWVsc2UgaWYgKGZsYWdzID09IDIpCisJCQlub3RpZnlf Y29kZSA9IHBhcmFtc19vdXRwdXQtPm5vdGlmeV9jb2RlOworCisJCXJlZ2lzdGVyX2FjcGlfbm90 aWZpZXIoJnJhZGVvbl9hY3BpX25vdGlmaWVyKTsKKwl9CisKKwlrZnJlZShvdXRwdXQucG9pbnRl cik7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTU5LDExICsxNzQsMTYgQEAgaW50IHJhZGVvbl9hY3Bp X2luaXQoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYpCiAJaWYgKCFBU0lDX0lTX0FWSVZPKHJk ZXYpIHx8ICFyZGV2LT5iaW9zIHx8ICFoYW5kbGUpCiAJCXJldHVybiAwOwogCi0JLyogQ2FsbCB0 aGUgQVRJRiBtZXRob2QgKi8KLQlyZXQgPSByYWRlb25fYXRpZl9jYWxsKGhhbmRsZSk7CisJLyog Q2FsbCB0aGUgQVRJRiB2ZXJpZnkgZnVuY3Rpb24gKi8KKwlyZXQgPSByYWRlb25fYXRpZl92ZXJp ZnkoaGFuZGxlKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCisJaWYgKHZlcmlmeV9vdXRw dXQtPmZ1bmNfYml0cyAmIEFUSUZfR0VUX1NZU1RFTV9QQVJBTUVURVJTX1NVUFBPUlRFRCkKKwkJ cmV0ID0gcmFkZW9uX2F0aWZfZ2V0X3N5c3RlbV9wYXJhbShoYW5kbGUpOworCQlpZiAocmV0KQor CQkJcmV0dXJuIHJldDsKKwogCXJldHVybiAwOwogfQogCi0tIAoxLjcuNwoKCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBs aXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=