From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Deucher Subject: [PATCH 01/12] drm/amdgpu: add amd_gnb_bus support Date: Thu, 6 Aug 2015 10:25:02 -0400 Message-ID: <1438871112-25946-2-git-send-email-alexander.deucher@amd.com> References: <1438871112-25946-1-git-send-email-alexander.deucher@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-yk0-f176.google.com (mail-yk0-f176.google.com [209.85.160.176]) by gabe.freedesktop.org (Postfix) with ESMTPS id 29D5F6EBCB for ; Thu, 6 Aug 2015 07:25:21 -0700 (PDT) Received: by ykcq64 with SMTP id q64so58592060ykc.2 for ; Thu, 06 Aug 2015 07:25:20 -0700 (PDT) In-Reply-To: <1438871112-25946-1-git-send-email-alexander.deucher@amd.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: broonie@kernel.org, airlied@gmail.com, dri-devel@lists.freedesktop.org, alsa-devel@alsa-project.org Cc: maruthi.bayyavarapu@amd.com, lgirdwood@gmail.com, perex@perex.cz, Alex Deucher List-Id: dri-devel@lists.freedesktop.org RnJvbTogQ2h1bm1pbmcgWmhvdSA8ZGF2aWQxLnpob3VAYW1kLmNvbT4KClRoaXMgaXMgdXNlZCBi eSB0aGUgaW5jb21pbmcgQUNQIGRyaXZlci4gIFRoZSBETUEKZW5naW5lIGZvciB0aGUgaTJzIGF1 ZGlvIGNvZGVjIGlzIHBhcnQgb2YgdGhlIEdQVS4KClRoaXMgZXhwb3NlcyBhbiBhbWQgZ25iIGJ1 cyBmb3IgdGhlIGkycyBjb2RlYyB0bwpoYW5nIG9mZiBvZi4KClJldmlld2VkLWJ5OiBKYW1teSBa aG91IDxKYW1teS5aaG91QGFtZC5jb20+ClNpZ25lZC1vZmYtYnk6IENodW5taW5nIFpob3UgPGRh dmlkMS56aG91QGFtZC5jb20+ClNpZ25lZC1vZmYtYnk6IEFsZXggRGV1Y2hlciA8YWxleGFuZGVy LmRldWNoZXJAYW1kLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vS2NvbmZpZyAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDMgKwogZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlICAgICAgICAgICAg ICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9hbWQvYnVzL0tjb25maWcgICAgICAg ICAgICAgICB8ICAgNyArCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2J1cy9NYWtlZmlsZSAgICAgICAg ICAgICAgfCAgIDQgKwogZHJpdmVycy9ncHUvZHJtL2FtZC9idXMvYW1kX2duYl9idXMuYyAgICAg ICAgIHwgMjY2ICsrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vYW1k L2luY2x1ZGUvYnVzL2FtZF9nbmJfYnVzLmggfCAgNzggKysrKysrKysKIDYgZmlsZXMgY2hhbmdl ZCwgMzU5IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0v YW1kL2J1cy9LY29uZmlnCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2FtZC9i dXMvTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYW1kL2J1cy9h bWRfZ25iX2J1cy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2FtZC9pbmNs dWRlL2J1cy9hbWRfZ25iX2J1cy5oCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL0tjb25m aWcgYi9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZwppbmRleCBjNDZjYTMxLi44YzNjYzllIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZworKysgYi9kcml2ZXJzL2dwdS9kcm0vS2Nv bmZpZwpAQCAtMTIwLDYgKzEyMCw4IEBAIGNvbmZpZyBEUk1fUkFERU9OCiAKIHNvdXJjZSAiZHJp dmVycy9ncHUvZHJtL3JhZGVvbi9LY29uZmlnIgogCitzb3VyY2UgImRyaXZlcnMvZ3B1L2RybS9h bWQvYnVzL0tjb25maWciCisKIGNvbmZpZyBEUk1fQU1ER1BVCiAJdHJpc3RhdGUgIkFNRCBHUFUi CiAJZGVwZW5kcyBvbiBEUk0gJiYgUENJCkBAIC0xMzQsNiArMTM2LDcgQEAgY29uZmlnIERSTV9B TURHUFUKIAlzZWxlY3QgSFdNT04KIAlzZWxlY3QgQkFDS0xJR0hUX0NMQVNTX0RFVklDRQogCXNl bGVjdCBJTlRFUlZBTF9UUkVFCisJc2VsZWN0IERSTV9BTURfR05CX0JVUwogCWhlbHAKIAkgIENo b29zZSB0aGlzIG9wdGlvbiBpZiB5b3UgaGF2ZSBhIHJlY2VudCBBTUQgUmFkZW9uIGdyYXBoaWNz IGNhcmQuCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSBiL2RyaXZlcnMv Z3B1L2RybS9NYWtlZmlsZQppbmRleCA1NzEzZDA1Li41MzgwNDc3IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCkBAIC0z Nyw2ICszNyw3IEBAIG9iai0kKENPTkZJR19EUk1fVERGWCkJKz0gdGRmeC8KIG9iai0kKENPTkZJ R19EUk1fUjEyOCkJKz0gcjEyOC8KIG9iai0kKENPTkZJR19IU0FfQU1EKSArPSBhbWQvYW1ka2Zk Lwogb2JqLSQoQ09ORklHX0RSTV9SQURFT04pKz0gcmFkZW9uLworb2JqLSQoQ09ORklHX0RSTV9B TURfR05CX0JVUykgICArPSBhbWQvYnVzLwogb2JqLSQoQ09ORklHX0RSTV9BTURHUFUpKz0gYW1k L2FtZGdwdS8KIG9iai0kKENPTkZJR19EUk1fTUdBKQkrPSBtZ2EvCiBvYmotJChDT05GSUdfRFJN X0k4MTApCSs9IGk4MTAvCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2J1cy9LY29u ZmlnIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9idXMvS2NvbmZpZwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5mMTAxZGQ4Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9idXMvS2NvbmZpZwpAQCAtMCwwICsxLDcgQEAKK21lbnUgIkFNRCBHTkIgQlVTIgor CXZpc2libGUgaWYgMAorCitjb25maWcgRFJNX0FNRF9HTkJfQlVTCisJdHJpc3RhdGUgIkFNRCBH TkIgYnVzIC0gdXNlZCBmb3IgR05CIElQcyBzdWNoIGFzIEFDUCBhbmQgSVNQIgorCitlbmRtZW51 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2J1cy9NYWtlZmlsZSBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYnVzL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmM0MWZmYzkKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2J1cy9N YWtlZmlsZQpAQCAtMCwwICsxLDQgQEAKKyMKK2NjZmxhZ3MteSA6PSAtSWluY2x1ZGUvZHJtIC1J ZHJpdmVycy9ncHUvZHJtL2FtZC9pbmNsdWRlL2J1cy8KKworb2JqLSQoQ09ORklHX0RSTV9BTURf R05CX0JVUykgOj0gYW1kX2duYl9idXMubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9idXMvYW1kX2duYl9idXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYnVzL2FtZF9nbmJfYnVz LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDcxYjE2YwotLS0gL2Rldi9u dWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYnVzL2FtZF9nbmJfYnVzLmMKQEAgLTAsMCAr MSwyNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxNCBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJ bmMuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2Us IHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQg YXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBk ZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91 dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwg cHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBv ZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29m dHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29u ZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJt aXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJz dGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElT IFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Mg T1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJ RVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQ09QWVJJ R0hUIEhPTERFUihTKSBPUiBBVVRIT1IoUykgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFH RVMgT1IKKyAqIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJB Q1QsIFRPUlQgT1IgT1RIRVJXSVNFLAorICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09O TkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCisgKiBPVEhFUiBERUFMSU5H UyBJTiBUSEUgU09GVFdBUkUuCisgKgorICoKKyAqLworI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5o PgorI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUu aD4KKyNpbmNsdWRlICJhbWRfZ25iX2J1cy5oIgorCisjZGVmaW5lIHRvX2FtZF9nbmJfYnVzX2Rl dmljZSh4KSBjb250YWluZXJfb2YoKHgpLCBzdHJ1Y3QgYW1kX2duYl9idXNfZGV2LCBkZXYpCisj ZGVmaW5lIHRvX2FtZF9nbmJfYnVzX2RyaXZlcihkcnYpIChjb250YWluZXJfb2YoKGRydiksCQkJ XAorCQkJCQkJc3RydWN0IGFtZF9nbmJfYnVzX2RyaXZlciwgXAorCQkJCQkJZHJpdmVyKSkKKwor c3RhdGljIGludCBhbWRfZ25iX2J1c19tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBk ZXZpY2VfZHJpdmVyICpkcnYpCit7CisJc3RydWN0IGFtZF9nbmJfYnVzX2RldiAqYW1kX2duYl9i dXNfZGV2ID0gdG9fYW1kX2duYl9idXNfZGV2aWNlKGRldik7CisJc3RydWN0IGFtZF9nbmJfYnVz X2RyaXZlciAqYW1kX2duYl9idXNfZHJpdmVyID0KKwkJdG9fYW1kX2duYl9idXNfZHJpdmVyKGRy dik7CisKKwlyZXR1cm4gYW1kX2duYl9idXNfZGV2LT5pcCA9PSBhbWRfZ25iX2J1c19kcml2ZXIt PmlwID8gMSA6IDA7Cit9CisKKyNpZmRlZiBDT05GSUdfUE1fU0xFRVAKK3N0YXRpYyBpbnQgYW1k X2duYl9idXNfbGVnYWN5X3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2LCBwbV9tZXNzYWdlX3Qg bWVzZykKK3sKKwlzdHJ1Y3QgYW1kX2duYl9idXNfZGV2ICphbWRfZ25iX2J1c19kZXYgPSB0b19h bWRfZ25iX2J1c19kZXZpY2UoZGV2KTsKKwlzdHJ1Y3QgYW1kX2duYl9idXNfZHJpdmVyICpkcml2 ZXI7CisKKwlpZiAoIWFtZF9nbmJfYnVzX2RldiB8fCAhZGV2LT5kcml2ZXIpCisJCXJldHVybiAw OworCWRyaXZlciA9IHRvX2FtZF9nbmJfYnVzX2RyaXZlcihkZXYtPmRyaXZlcik7CisJaWYgKCFk cml2ZXItPnN1c3BlbmQpCisJCXJldHVybiAwOworCXJldHVybiBkcml2ZXItPnN1c3BlbmQoYW1k X2duYl9idXNfZGV2LCBtZXNnKTsKK30KKworc3RhdGljIGludCBhbWRfZ25iX2J1c19sZWdhY3lf cmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgYW1kX2duYl9idXNfZGV2ICph bWRfZ25iX2J1c19kZXYgPSB0b19hbWRfZ25iX2J1c19kZXZpY2UoZGV2KTsKKwlzdHJ1Y3QgYW1k X2duYl9idXNfZHJpdmVyICpkcml2ZXI7CisKKwlpZiAoIWFtZF9nbmJfYnVzX2RldiB8fCAhZGV2 LT5kcml2ZXIpCisJCXJldHVybiAwOworCWRyaXZlciA9IHRvX2FtZF9nbmJfYnVzX2RyaXZlcihk ZXYtPmRyaXZlcik7CisJaWYgKCFkcml2ZXItPnJlc3VtZSkKKwkJcmV0dXJuIDA7CisJcmV0dXJu IGRyaXZlci0+cmVzdW1lKGFtZF9nbmJfYnVzX2Rldik7Cit9CisKK3N0YXRpYyBpbnQgYW1kX2du Yl9idXNfZGV2aWNlX3BtX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQoreworCWNvbnN0IHN0 cnVjdCBkZXZfcG1fb3BzICpwbSA9IGRldi0+ZHJpdmVyID8gZGV2LT5kcml2ZXItPnBtIDogTlVM TDsKKworCWlmIChwbSkKKwkJcmV0dXJuIHBtX2dlbmVyaWNfc3VzcGVuZChkZXYpOworCWVsc2UK KwkJcmV0dXJuIGFtZF9nbmJfYnVzX2xlZ2FjeV9zdXNwZW5kKGRldiwgUE1TR19TVVNQRU5EKTsK K30KKworc3RhdGljIGludCBhbWRfZ25iX2J1c19kZXZpY2VfcG1fcmVzdW1lKHN0cnVjdCBkZXZp Y2UgKmRldikKK3sKKwljb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyAqcG0gPSBkZXYtPmRyaXZlciA/ IGRldi0+ZHJpdmVyLT5wbSA6IE5VTEw7CisKKwlpZiAocG0pCisJCXJldHVybiBwbV9nZW5lcmlj X3Jlc3VtZShkZXYpOworCWVsc2UKKwkJcmV0dXJuIGFtZF9nbmJfYnVzX2xlZ2FjeV9yZXN1bWUo ZGV2KTsKK30KKworc3RhdGljIGludCBhbWRfZ25iX2J1c19kZXZpY2VfcG1fZnJlZXplKHN0cnVj dCBkZXZpY2UgKmRldikKK3sKKwljb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyAqcG0gPSBkZXYtPmRy aXZlciA/IGRldi0+ZHJpdmVyLT5wbSA6IE5VTEw7CisKKwlpZiAocG0pCisJCXJldHVybiBwbV9n ZW5lcmljX2ZyZWV6ZShkZXYpOworCWVsc2UKKwkJcmV0dXJuIGFtZF9nbmJfYnVzX2xlZ2FjeV9z dXNwZW5kKGRldiwgUE1TR19GUkVFWkUpOworfQorCitzdGF0aWMgaW50IGFtZF9nbmJfYnVzX2Rl dmljZV9wbV90aGF3KHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwljb25zdCBzdHJ1Y3QgZGV2X3Bt X29wcyAqcG0gPSBkZXYtPmRyaXZlciA/IGRldi0+ZHJpdmVyLT5wbSA6IE5VTEw7CisKKwlpZiAo cG0pCisJCXJldHVybiBwbV9nZW5lcmljX3RoYXcoZGV2KTsKKwllbHNlCisJCXJldHVybiBhbWRf Z25iX2J1c19sZWdhY3lfcmVzdW1lKGRldik7Cit9CisKK3N0YXRpYyBpbnQgYW1kX2duYl9idXNf ZGV2aWNlX3BtX3Bvd2Vyb2ZmKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwljb25zdCBzdHJ1Y3Qg ZGV2X3BtX29wcyAqcG0gPSBkZXYtPmRyaXZlciA/IGRldi0+ZHJpdmVyLT5wbSA6IE5VTEw7CisK KwlpZiAocG0pCisJCXJldHVybiBwbV9nZW5lcmljX3Bvd2Vyb2ZmKGRldik7CisJZWxzZQorCQly ZXR1cm4gYW1kX2duYl9idXNfbGVnYWN5X3N1c3BlbmQoZGV2LCBQTVNHX0hJQkVSTkFURSk7Cit9 CisKK3N0YXRpYyBpbnQgYW1kX2duYl9idXNfZGV2aWNlX3BtX3Jlc3RvcmUoc3RydWN0IGRldmlj ZSAqZGV2KQoreworCWNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzICpwbSA9IGRldi0+ZHJpdmVyID8g ZGV2LT5kcml2ZXItPnBtIDogTlVMTDsKKworCWlmIChwbSkKKwkJcmV0dXJuIHBtX2dlbmVyaWNf cmVzdG9yZShkZXYpOworCWVsc2UKKwkJcmV0dXJuIGFtZF9nbmJfYnVzX2xlZ2FjeV9yZXN1bWUo ZGV2KTsKK30KKyNlbHNlIC8qICFDT05GSUdfUE1fU0xFRVAgKi8KKyNkZWZpbmUgYW1kX2duYl9i dXNfZGV2aWNlX3BtX3N1c3BlbmQJTlVMTAorI2RlZmluZSBhbWRfZ25iX2J1c19kZXZpY2VfcG1f cmVzdW1lCU5VTEwKKyNkZWZpbmUgYW1kX2duYl9idXNfZGV2aWNlX3BtX2ZyZWV6ZQlOVUxMCisj ZGVmaW5lIGFtZF9nbmJfYnVzX2RldmljZV9wbV90aGF3CU5VTEwKKyNkZWZpbmUgYW1kX2duYl9i dXNfZGV2aWNlX3BtX3Bvd2Vyb2ZmCU5VTEwKKyNkZWZpbmUgYW1kX2duYl9idXNfZGV2aWNlX3Bt X3Jlc3RvcmUJTlVMTAorI2VuZGlmIC8qICFDT05GSUdfUE1fU0xFRVAgKi8KKworc3RhdGljIGNv bnN0IHN0cnVjdCBkZXZfcG1fb3BzIGFtZF9nbmJfYnVzX2RldmljZV9wbV9vcHMgPSB7CisJLnN1 c3BlbmQgPSBhbWRfZ25iX2J1c19kZXZpY2VfcG1fc3VzcGVuZCwKKwkucmVzdW1lID0gYW1kX2du Yl9idXNfZGV2aWNlX3BtX3Jlc3VtZSwKKwkuZnJlZXplID0gYW1kX2duYl9idXNfZGV2aWNlX3Bt X2ZyZWV6ZSwKKwkudGhhdyA9IGFtZF9nbmJfYnVzX2RldmljZV9wbV90aGF3LAorCS5wb3dlcm9m ZiA9IGFtZF9nbmJfYnVzX2RldmljZV9wbV9wb3dlcm9mZiwKKwkucmVzdG9yZSA9IGFtZF9nbmJf YnVzX2RldmljZV9wbV9yZXN0b3JlLAorCVNFVF9SVU5USU1FX1BNX09QUygKKwkJcG1fZ2VuZXJp Y19ydW50aW1lX3N1c3BlbmQsCisJCXBtX2dlbmVyaWNfcnVudGltZV9yZXN1bWUsCisJCXBtX3J1 bnRpbWVfaWRsZQorCSkKK307CisKKy8qIFRoZSBidXMgc2hvdWxkIG9ubHkgYmUgcmVnaXN0ZXJl ZCBieSB0aGUgZmlyc3QgYW1kX2duYiwgYnV0IGZ1cnRoZXIKKyAqIHNvY3MgY2FuIGFkZCBkZXZp Y2VzIHRvIHRoZSBidXMuICovCitzdHJ1Y3QgYnVzX3R5cGUgYW1kX2duYl9idXNfdHlwZSA9IHsK KwkubmFtZSAgPSAiYW1kX2duYiIsCisJLm1hdGNoID0gYW1kX2duYl9idXNfbWF0Y2gsCisJLnBt ICAgID0gJmFtZF9nbmJfYnVzX2RldmljZV9wbV9vcHMsCit9OworRVhQT1JUX1NZTUJPTChhbWRf Z25iX2J1c190eXBlKTsKKworc3RhdGljIGludCBhbWRfZ25iX2J1c19kcnZfcHJvYmUoc3RydWN0 IGRldmljZSAqX2RldikKK3sKKwlzdHJ1Y3QgYW1kX2duYl9idXNfZHJpdmVyICpkcnYgPSB0b19h bWRfZ25iX2J1c19kcml2ZXIoX2Rldi0+ZHJpdmVyKTsKKwlzdHJ1Y3QgYW1kX2duYl9idXNfZGV2 ICpkZXYgPSB0b19hbWRfZ25iX2J1c19kZXZpY2UoX2Rldik7CisKKwlyZXR1cm4gZHJ2LT5wcm9i ZShkZXYpOworfQorCitzdGF0aWMgaW50IGFtZF9nbmJfYnVzX2Rydl9yZW1vdmUoc3RydWN0IGRl dmljZSAqX2RldikKK3sKKwlzdHJ1Y3QgYW1kX2duYl9idXNfZHJpdmVyICpkcnYgPSB0b19hbWRf Z25iX2J1c19kcml2ZXIoX2Rldi0+ZHJpdmVyKTsKKwlzdHJ1Y3QgYW1kX2duYl9idXNfZGV2ICpk ZXYgPSB0b19hbWRfZ25iX2J1c19kZXZpY2UoX2Rldik7CisKKwlyZXR1cm4gZHJ2LT5yZW1vdmUo ZGV2KTsKK30KKworc3RhdGljIHZvaWQgYW1kX2duYl9idXNfZHJ2X3NodXRkb3duKHN0cnVjdCBk ZXZpY2UgKl9kZXYpCit7CisJc3RydWN0IGFtZF9nbmJfYnVzX2RyaXZlciAqZHJ2ID0gdG9fYW1k X2duYl9idXNfZHJpdmVyKF9kZXYtPmRyaXZlcik7CisJc3RydWN0IGFtZF9nbmJfYnVzX2RldiAq ZGV2ID0gdG9fYW1kX2duYl9idXNfZGV2aWNlKF9kZXYpOworCisJZHJ2LT5zaHV0ZG93bihkZXYp OworfQorCitpbnQgYW1kX2duYl9idXNfcmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCBhbWRfZ25iX2J1 c19kcml2ZXIgKmRydiwKKwkJCSAgICAgICBzdHJ1Y3QgbW9kdWxlICpvd25lciwKKwkJCSAgICAg ICBjb25zdCBjaGFyICptb2RfbmFtZSkKK3sKKwkvKiBpbml0aWFsaXplIGNvbW1vbiBkcml2ZXIg ZmllbGRzICovCisJZHJ2LT5kcml2ZXIubmFtZSA9IGRydi0+bmFtZTsKKwlkcnYtPmRyaXZlci5i dXMgPSAmYW1kX2duYl9idXNfdHlwZTsKKwlkcnYtPmRyaXZlci5vd25lciA9IG93bmVyOworCWRy di0+ZHJpdmVyLm1vZF9uYW1lID0gbW9kX25hbWU7CisKKwlpZiAoZHJ2LT5wcm9iZSkKKwkJZHJ2 LT5kcml2ZXIucHJvYmUgPSBhbWRfZ25iX2J1c19kcnZfcHJvYmU7CisJaWYgKGRydi0+cmVtb3Zl KQorCQlkcnYtPmRyaXZlci5yZW1vdmUgPSBhbWRfZ25iX2J1c19kcnZfcmVtb3ZlOworCWlmIChk cnYtPnNodXRkb3duKQorCQlkcnYtPmRyaXZlci5zaHV0ZG93biA9IGFtZF9nbmJfYnVzX2Rydl9z aHV0ZG93bjsKKworCS8qIHJlZ2lzdGVyIHdpdGggY29yZSAqLworCXJldHVybiBkcml2ZXJfcmVn aXN0ZXIoJmRydi0+ZHJpdmVyKTsKK30KK0VYUE9SVF9TWU1CT0woYW1kX2duYl9idXNfcmVnaXN0 ZXJfZHJpdmVyKTsKKwordm9pZCBhbWRfZ25iX2J1c191bnJlZ2lzdGVyX2RyaXZlcihzdHJ1Y3Qg YW1kX2duYl9idXNfZHJpdmVyICpkcnYpCit7CisJLyogcmVnaXN0ZXIgd2l0aCBjb3JlICovCisJ ZHJpdmVyX3VucmVnaXN0ZXIoJmRydi0+ZHJpdmVyKTsKK30KK0VYUE9SVF9TWU1CT0woYW1kX2du Yl9idXNfdW5yZWdpc3Rlcl9kcml2ZXIpOworCitpbnQgYW1kX2duYl9idXNfcmVnaXN0ZXJfZGV2 aWNlKHN0cnVjdCBhbWRfZ25iX2J1c19kZXYgKmRldikKK3sKKwlkZXYtPmRldi5idXMgPSAmYW1k X2duYl9idXNfdHlwZTsKKwlyZXR1cm4gZGV2aWNlX2FkZCgmZGV2LT5kZXYpOworfQorRVhQT1JU X1NZTUJPTChhbWRfZ25iX2J1c19yZWdpc3Rlcl9kZXZpY2UpOworCit2b2lkIGFtZF9nbmJfYnVz X3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBhbWRfZ25iX2J1c19kZXYgKmRldikKK3sKKwlpZiAo ZGV2KQorCQlkZXZpY2VfZGVsKCZkZXYtPmRldik7Cit9CitFWFBPUlRfU1lNQk9MKGFtZF9nbmJf YnVzX3VucmVnaXN0ZXJfZGV2aWNlKTsKKworaW50IGFtZF9nbmJfYnVzX2RldmljZV9pbml0KHN0 cnVjdCBhbWRfZ25iX2J1c19kZXYgKmJ1c19kZXYsCisJCQkgICAgZW51bSBhbWRfZ25iX2J1c19p cCBpcCwKKwkJCSAgICBjaGFyICpkZXZfbmFtZSwKKwkJCSAgICB2b2lkICpoYW5kbGUsCisJCQkg ICAgc3RydWN0IGRldmljZSAqcGFyZW50KQoreworCWRldmljZV9pbml0aWFsaXplKCZidXNfZGV2 LT5kZXYpOworCWJ1c19kZXYtPmRldi5pbml0X25hbWUgPSBkZXZfbmFtZTsKKwlidXNfZGV2LT5p cCA9IGlwOworCWJ1c19kZXYtPnByaXZhdGVfZGF0YSA9IGhhbmRsZTsKKwlidXNfZGV2LT5kZXYu cGFyZW50ID0gcGFyZW50OworCXJldHVybiBhbWRfZ25iX2J1c19yZWdpc3Rlcl9kZXZpY2UoYnVz X2Rldik7Cit9CitFWFBPUlRfU1lNQk9MKGFtZF9nbmJfYnVzX2RldmljZV9pbml0KTsKKworc3Rh dGljIGludCBfX2luaXQgYW1kX2duYl9idXNfaW5pdCh2b2lkKQoreworCWludCByZXQgPSAwOwor CS8qIGRvZXMgdGhpcyBuZWVkIHRvIGJlIHRocmVhZCBzYWZlPyAqLworCXJldCA9IGJ1c19yZWdp c3RlcigmYW1kX2duYl9idXNfdHlwZSk7CisJaWYgKHJldCkKKwkJcHJfZXJyKCIlczogYnVzIHJl Z2lzdGVyIGZhaWxlZFxuIiwgX19mdW5jX18pOworCWVsc2UKKwkJcHJfaW5mbygiJXM6IGluaXRp YWxpemF0aW9uIGlzIHN1Y2Nlc3NmdWxcbiIsIF9fZnVuY19fKTsKKworCXJldHVybiByZXQ7Cit9 CisKK3N0YXRpYyB2b2lkIF9fZXhpdCBhbWRfZ25iX2J1c19leGl0KHZvaWQpCit7CisJYnVzX3Vu cmVnaXN0ZXIoJmFtZF9nbmJfYnVzX3R5cGUpOworfQorCittb2R1bGVfaW5pdChhbWRfZ25iX2J1 c19pbml0KTsKK21vZHVsZV9leGl0KGFtZF9nbmJfYnVzX2V4aXQpOworCitNT0RVTEVfQVVUSE9S KCJBTUQiKTsKK01PRFVMRV9ERVNDUklQVElPTigiQU1EIEdQVSBidXMiKTsKK01PRFVMRV9MSUNF TlNFKCJHUEwgYW5kIGFkZGl0aW9uYWwgcmlnaHRzIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2luY2x1ZGUvYnVzL2FtZF9nbmJfYnVzLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2luY2x1ZGUvYnVzL2FtZF9nbmJfYnVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uM2U5MDA3NwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvaW5j bHVkZS9idXMvYW1kX2duYl9idXMuaApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0 IDIwMTQgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgorICoKKyAqIFBlcm1pc3Npb24gaXMg aGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBh CisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBm aWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91 dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0 cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1Ymxp Y2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVy bWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBz bywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3Zl IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5j bHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNv ZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VU IFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcg QlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAq IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJ TiBOTyBFVkVOVCBTSEFMTAorICogVEhFIENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVUSE9SKFMp IEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCisgKiBPVEhFUiBMSUFCSUxJVFks IFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKKyAq IEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUg T1IgVEhFIFVTRSBPUgorICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAq CisgKi8KKworI2lmbmRlZiBfX0FNRF9HTkJfQlVTX0hfXworI2RlZmluZSBfX0FNRF9HTkJfQlVT X0hfXworCisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKworZW51bSBhbWRfZ25iX2J1c19pcCB7 CisJQU1EX0dOQl9JUF9BQ1BfRE1BLAorCUFNRF9HTkJfSVBfQUNQX0kyUywKKwlBTURfR05CX0lQ X0FDUF9QQ00sCisJQU1EX0dOQl9JUF9JU1AsCisJQU1EX0dOQl9JUF9OVU0KK307CisKK3N0cnVj dCBhbWRfZ25iX2J1c19kZXYgeworCXN0cnVjdCBkZXZpY2UgZGV2OyAvKiBnZW5lcmljIGRldmlj ZSBpbnRlcmZhY2UgKi8KKwllbnVtIGFtZF9nbmJfYnVzX2lwIGlwOworCS8qIHByaXZhdGUgZGF0 YSBjYW4gYmUgYWNwX2hhbmRsZS9pc3BfaGFuZGxlIGV0Yy4qLworCXZvaWQgKnByaXZhdGVfZGF0 YTsKK307CisKK3N0cnVjdCBhbWRfZ25iX2J1c19kcml2ZXIgeworCWNvbnN0IGNoYXIgKm5hbWU7 CisJZW51bSBhbWRfZ25iX2J1c19pcCBpcDsKKwlpbnQgKCpwcm9iZSkoc3RydWN0IGFtZF9nbmJf YnVzX2RldiAqZGV2KTsgLyogTmV3IGRldmljZSBpbnNlcnRlZCAqLworCWludCAoKnJlbW92ZSko c3RydWN0IGFtZF9nbmJfYnVzX2RldiAqZGV2KTsgLyogRGV2aWNlIHJlbW92ZWQgKi8KKwlpbnQg KCpzdXNwZW5kKShzdHJ1Y3QgYW1kX2duYl9idXNfZGV2ICpkZXYsIHBtX21lc3NhZ2VfdCBzdGF0 ZSk7CisJaW50ICgqcmVzdW1lKShzdHJ1Y3QgYW1kX2duYl9idXNfZGV2ICpkZXYpOworCXZvaWQg KCpzaHV0ZG93bikoc3RydWN0IGFtZF9nbmJfYnVzX2RldiAqZGV2KTsKKwlzdHJ1Y3QgZGV2aWNl X2RyaXZlciBkcml2ZXI7ICAvKiBnZW5lcmljIGRldmljZSBkcml2ZXIgaW50ZXJmYWNlICovCit9 OworCisjZGVmaW5lIGFtZF9nbmJfdG9fYWNwX2RldmljZSh4KSBjb250YWluZXJfb2YoKHgpLCBc CisJCQkJCSAgICAgc3RydWN0IGFtZF9nbmJfYnVzX2Rldl9hY3AsIFwKKwkJCQkJICAgICBiYXNl KQorI2RlZmluZSBhbWRfZ25iX3RvX2lzcF9kZXZpY2UoeCkgY29udGFpbmVyX29mKCh4KSwgXAor CQkJCQkgICAgIHN0cnVjdCBhbWRfZ25iX2J1c19kZXZfaXNwLCBcCisJCQkJCSAgICAgYmFzZSkK KyNkZWZpbmUgYW1kX2duYl9wYXJlbnRfdG9fcGNpX2RldmljZSh4KSBjb250YWluZXJfb2YoKHgp LT5kZXYucGFyZW50LCBcCisJCQkJCQkgICAgIHN0cnVjdCBwY2lfZGV2LCAgXAorCQkJCQkJICAg ICBkZXYpCisKK2ludCBhbWRfZ25iX2J1c19yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IGFtZF9nbmJf YnVzX2RldiAqZGV2KTsKK3ZvaWQgYW1kX2duYl9idXNfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0 IGFtZF9nbmJfYnVzX2RldiAqZGV2KTsKK2ludCBhbWRfZ25iX2J1c19kZXZpY2VfaW5pdChzdHJ1 Y3QgYW1kX2duYl9idXNfZGV2ICpidXNfZGV2LAorCQkJICAgIGVudW0gYW1kX2duYl9idXNfaXAg aXAsCisJCQkgICAgY2hhciAqZGV2X25hbWUsCisJCQkgICAgdm9pZCAqaGFuZGxlLAorCQkJICAg IHN0cnVjdCBkZXZpY2UgKnBhcmVudCk7CitpbnQgYW1kX2duYl9idXNfcmVnaXN0ZXJfZHJpdmVy KHN0cnVjdCBhbWRfZ25iX2J1c19kcml2ZXIgKmRydiwKKwkJCSAgICAgICBzdHJ1Y3QgbW9kdWxl ICpvd25lciwKKwkJCSAgICAgICBjb25zdCBjaGFyICptb2RfbmFtZSk7Cit2b2lkIGFtZF9nbmJf YnVzX3VucmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCBhbWRfZ25iX2J1c19kcml2ZXIgKmRydik7CisK KyNlbmRpZgotLSAKMS44LjMuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9k cmktZGV2ZWwK