From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Anholt Subject: [PATCH v2 2/3] drm/vc4: Add HDMI audio support Date: Mon, 27 Feb 2017 12:28:02 -0800 Message-ID: <20170227202803.12855-2-eric@anholt.net> References: <20170227202803.12855-1-eric@anholt.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170227202803.12855-1-eric@anholt.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Lee Jones , Florian Fainelli , dri-devel@lists.freedesktop.org, Mark Brown , Liam Girdwood , Lars-Peter Clausen , alsa-devel@alsa-project.org Cc: Stefan Wahren , Stephen Warren , linux-kernel@vger.kernel.org, bcm-kernel-feedback-list@broadcom.com, linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org List-Id: alsa-devel@alsa-project.org VGhlIEhETUkgZW5jb2RlciBJUCBlbWJlZHMgYWxsIG5lZWRlZCBibG9ja3MgdG8gb3V0cHV0IGF1 ZGlvLCB3aXRoIGEKY3VzdG9tIERBSSBjYWxsZWQgTUFJIG1vdmluZyBhdWRpbyBiZXR3ZWVuIHRo ZSB0d28gcGFydHMgb2YgdGhlIEhETUkKY29yZS4gIFRoaXMgZHJpdmVyIG5vdyBleHBvc2VzIGEg c291bmQgY2FyZCB0byBsZXQgdXNlcnMgc3RyZWFtIGF1ZGlvCnRvIHRoZWlyIGRpc3BsYXkuCgpV c2luZyB0aGUgaGRtaS1jb2RlYyBkcml2ZXIgaGFzIGJlZW4gY29uc2lkZXJlZCBoZXJlLCBidXQg TUFJIG1lYW50CmhhdmluZyB0byBzaWduaWZpY2FudGx5IHJld29yayBoZG1pLWNvZGVjLCBhbmQg aXQgd291bGQgaGF2ZSBsZWZ0CmxpdHRsZSBzaGFyZWQgY29kZSB3aXRoIHRoZSBJMlMgbW9kZSBh bnl3YXkuCgpUaGUgZW5jb2RlciByZXF1aXJlcyB0aGF0IHRoZSBhdWRpbyBiZSBTUERJRi1mb3Jt YXR0ZWQgZnJhbWVzIG9ubHksCndoaWNoIGFsc2FsaWIgd2lsbCBmb3JtYXQtY29udmVydCBmb3Ig dXMuCgpUaGlzIHBhdGNoIGlzIHRoZSBjb21iaW5lZCB3b3JrIG9mIEVyaWMgQW5ob2x0IChpbml0 aWFsIHJlZ2lzdGVyIHNldHVwCndpdGggYSBzZXBhcmF0ZSBkbWFlbmdpbmUgZHJpdmVyIGFuZCB1 c2luZyBzaW1wbGUtYXVkaW8tY2FyZCkgYW5kCkJvcmlzIEJyZXppbGxvbiAobW92aW5nIGl0IGFs bCBpbnRvIEhETUksIG1hc3NpdmUgZGVidWcgdG8gZ2V0IGl0CmFjdHVhbGx5IHdvcmtpbmcpLCBh bmQgd2hpY2ggRXJpYyBoYXMgdGhlIHBlcm1pc3Npb24gdG8gcmVsZWFzZS4KCnYyOiBEcm9wICIt YXVkaW8iIGZyb20gc291bmQgY2FyZCBuYW1lLCBzaW5jZSB0aGF0J3MgYWxyZWFkeSBpbXBsaWVk CiAgICAoc3VnZ2VzdGlvbiBieSBCb3JpcykKClNpZ25lZC1vZmYtYnk6IEVyaWMgQW5ob2x0IDxl cmljQGFuaG9sdC5uZXQ+Ci0tLQogZHJpdmVycy9ncHUvZHJtL3ZjNC9LY29uZmlnICAgIHwgICA0 ICsKIGRyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2hkbWkuYyB8IDQ5NCArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLQogZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfcmVncy5o IHwgMTA3ICsrKysrKysrLQogMyBmaWxlcyBjaGFuZ2VkLCA2MDMgaW5zZXJ0aW9ucygrKSwgMiBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmM0L0tjb25maWcgYi9k cml2ZXJzL2dwdS9kcm0vdmM0L0tjb25maWcKaW5kZXggZTE1MTdkMDdjYjdkLi45NzNiNDIwM2Mw YjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92YzQvS2NvbmZpZworKysgYi9kcml2ZXJz L2dwdS9kcm0vdmM0L0tjb25maWcKQEAgLTIsMTEgKzIsMTUgQEAgY29uZmlnIERSTV9WQzQKIAl0 cmlzdGF0ZSAiQnJvYWRjb20gVkM0IEdyYXBoaWNzIgogCWRlcGVuZHMgb24gQVJDSF9CQ00yODM1 IHx8IENPTVBJTEVfVEVTVAogCWRlcGVuZHMgb24gRFJNCisJZGVwZW5kcyBvbiBTTkQgJiYgU05E X1NPQwogCWRlcGVuZHMgb24gQ09NTU9OX0NMSwogCXNlbGVjdCBEUk1fS01TX0hFTFBFUgogCXNl bGVjdCBEUk1fS01TX0NNQV9IRUxQRVIKIAlzZWxlY3QgRFJNX0dFTV9DTUFfSEVMUEVSCiAJc2Vs ZWN0IERSTV9QQU5FTAorCXNlbGVjdCBTTkRfUENNCisJc2VsZWN0IFNORF9QQ01fRUxECisJc2Vs ZWN0IFNORF9TT0NfR0VORVJJQ19ETUFFTkdJTkVfUENNCiAJc2VsZWN0IERSTV9NSVBJX0RTSQog CWhlbHAKIAkgIENob29zZSB0aGlzIG9wdGlvbiBpZiB5b3UgaGF2ZSBhIHN5c3RlbSB0aGF0IGhh cyBhIEJyb2FkY29tCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9oZG1pLmMg Yi9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9oZG1pLmMKaW5kZXggOTNkNTk5NGYzYTA0Li5lNGFi ZjRiZmM0NjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2hkbWkuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9oZG1pLmMKQEAgLTMxLDExICszMSwyNyBAQAogI2lu Y2x1ZGUgImxpbnV4L2Nsay5oIgogI2luY2x1ZGUgImxpbnV4L2NvbXBvbmVudC5oIgogI2luY2x1 ZGUgImxpbnV4L2kyYy5oIgorI2luY2x1ZGUgImxpbnV4L29mX2FkZHJlc3MuaCIKICNpbmNsdWRl ICJsaW51eC9vZl9ncGlvLmgiCiAjaW5jbHVkZSAibGludXgvb2ZfcGxhdGZvcm0uaCIKKyNpbmNs dWRlICJsaW51eC9yYXRpb25hbC5oIgorI2luY2x1ZGUgInNvdW5kL2RtYWVuZ2luZV9wY20uaCIK KyNpbmNsdWRlICJzb3VuZC9wY21fZHJtX2VsZC5oIgorI2luY2x1ZGUgInNvdW5kL3BjbV9wYXJh bXMuaCIKKyNpbmNsdWRlICJzb3VuZC9zb2MuaCIKICNpbmNsdWRlICJ2YzRfZHJ2LmgiCiAjaW5j bHVkZSAidmM0X3JlZ3MuaCIKIAorLyogSERNSSBhdWRpbyBpbmZvcm1hdGlvbiAqLworc3RydWN0 IHZjNF9oZG1pX2F1ZGlvIHsKKwlzdHJ1Y3Qgc25kX3NvY19jYXJkIGNhcmQ7CisJc3RydWN0IHNu ZF9zb2NfZGFpX2xpbmsgbGluazsKKwlpbnQgc2FtcGxlcmF0ZTsKKwlpbnQgY2hhbm5lbHM7CisJ c3RydWN0IHNuZF9kbWFlbmdpbmVfZGFpX2RtYV9kYXRhIGRtYV9kYXRhOworCXN0cnVjdCBzbmRf cGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtOworfTsKKwogLyogR2VuZXJhbCBIRE1JIGhhcmR3YXJl IHN0YXRlLiAqLwogc3RydWN0IHZjNF9oZG1pIHsKIAlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpw ZGV2OwpAQCAtNDMsNiArNTksOCBAQCBzdHJ1Y3QgdmM0X2hkbWkgewogCXN0cnVjdCBkcm1fZW5j b2RlciAqZW5jb2RlcjsKIAlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOwogCisJc3Ry dWN0IHZjNF9oZG1pX2F1ZGlvIGF1ZGlvOworCiAJc3RydWN0IGkyY19hZGFwdGVyICpkZGM7CiAJ dm9pZCBfX2lvbWVtICpoZG1pY29yZV9yZWdzOwogCXZvaWQgX19pb21lbSAqaGRfcmVnczsKQEAg LTk4LDYgKzExNiwxMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHsKIAlIRE1JX1JFRyhWQzRfSERN SV9TV19SRVNFVF9DT05UUk9MKSwKIAlIRE1JX1JFRyhWQzRfSERNSV9IT1RQTFVHX0lOVCksCiAJ SERNSV9SRUcoVkM0X0hETUlfSE9UUExVRyksCisJSERNSV9SRUcoVkM0X0hETUlfTUFJX0NIQU5O RUxfTUFQKSwKKwlIRE1JX1JFRyhWQzRfSERNSV9NQUlfQ09ORklHKSwKKwlIRE1JX1JFRyhWQzRf SERNSV9NQUlfRk9STUFUKSwKKwlIRE1JX1JFRyhWQzRfSERNSV9BVURJT19QQUNLRVRfQ09ORklH KSwKIAlIRE1JX1JFRyhWQzRfSERNSV9SQU1fUEFDS0VUX0NPTkZJRyksCiAJSERNSV9SRUcoVkM0 X0hETUlfSE9SWkEpLAogCUhETUlfUkVHKFZDNF9IRE1JX0hPUlpCKSwKQEAgLTEwOCw2ICsxMzAs NyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHsKIAlIRE1JX1JFRyhWQzRfSERNSV9WRVJUQjApLAog CUhETUlfUkVHKFZDNF9IRE1JX1ZFUlRCMSksCiAJSERNSV9SRUcoVkM0X0hETUlfVFhfUEhZX1JF U0VUX0NUTCksCisJSERNSV9SRUcoVkM0X0hETUlfVFhfUEhZX0NUTDApLAogfTsKIAogc3RhdGlj IGNvbnN0IHN0cnVjdCB7CkBAIC0xMTYsNiArMTM5LDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB7 CiB9IGhkX3JlZ3NbXSA9IHsKIAlIRE1JX1JFRyhWQzRfSERfTV9DVEwpLAogCUhETUlfUkVHKFZD NF9IRF9NQUlfQ1RMKSwKKwlIRE1JX1JFRyhWQzRfSERfTUFJX1RIUiksCisJSERNSV9SRUcoVkM0 X0hEX01BSV9GTVQpLAorCUhETUlfUkVHKFZDNF9IRF9NQUlfU01QKSwKIAlIRE1JX1JFRyhWQzRf SERfVklEX0NUTCksCiAJSERNSV9SRUcoVkM0X0hEX0NTQ19DVEwpLAogCUhETUlfUkVHKFZDNF9I RF9GUkFNRV9DT1VOVCksCkBAIC0yMTUsNiArMjQxLDcgQEAgc3RhdGljIGludCB2YzRfaGRtaV9j b25uZWN0b3JfZ2V0X21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCiAKIAlk cm1fbW9kZV9jb25uZWN0b3JfdXBkYXRlX2VkaWRfcHJvcGVydHkoY29ubmVjdG9yLCBlZGlkKTsK IAlyZXQgPSBkcm1fYWRkX2VkaWRfbW9kZXMoY29ubmVjdG9yLCBlZGlkKTsKKwlkcm1fZWRpZF90 b19lbGQoY29ubmVjdG9yLCBlZGlkKTsKIAogCXJldHVybiByZXQ7CiB9CkBAIC0zMDAsNyArMzI3 LDcgQEAgc3RhdGljIHZvaWQgdmM0X2hkbWlfd3JpdGVfaW5mb2ZyYW1lKHN0cnVjdCBkcm1fZW5j b2RlciAqZW5jb2RlciwKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rlci0+ZGV2Owog CXN0cnVjdCB2YzRfZGV2ICp2YzQgPSB0b192YzRfZGV2KGRldik7CiAJdTMyIHBhY2tldF9pZCA9 IGZyYW1lLT5hbnkudHlwZSAtIDB4ODA7Ci0JdTMyIHBhY2tldF9yZWcgPSBWQzRfSERNSV9HQ1Bf MCArIFZDNF9IRE1JX1BBQ0tFVF9TVFJJREUgKiBwYWNrZXRfaWQ7CisJdTMyIHBhY2tldF9yZWcg PSBWQzRfSERNSV9SQU1fUEFDS0VUKHBhY2tldF9pZCk7CiAJdWludDhfdCBidWZmZXJbVkM0X0hE TUlfUEFDS0VUX1NUUklERV07CiAJc3NpemVfdCBsZW4sIGk7CiAJaW50IHJldDsKQEAgLTM4MSw2 ICs0MDgsMjQgQEAgc3RhdGljIHZvaWQgdmM0X2hkbWlfc2V0X3NwZF9pbmZvZnJhbWUoc3RydWN0 IGRybV9lbmNvZGVyICplbmNvZGVyKQogCXZjNF9oZG1pX3dyaXRlX2luZm9mcmFtZShlbmNvZGVy LCAmZnJhbWUpOwogfQogCitzdGF0aWMgdm9pZCB2YzRfaGRtaV9zZXRfYXVkaW9faW5mb2ZyYW1l KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJt ID0gZW5jb2Rlci0+ZGV2OworCXN0cnVjdCB2YzRfZGV2ICp2YzQgPSBkcm0tPmRldl9wcml2YXRl OworCXN0cnVjdCB2YzRfaGRtaSAqaGRtaSA9IHZjNC0+aGRtaTsKKwl1bmlvbiBoZG1pX2luZm9m cmFtZSBmcmFtZTsKKwlpbnQgcmV0OworCisJcmV0ID0gaGRtaV9hdWRpb19pbmZvZnJhbWVfaW5p dCgmZnJhbWUuYXVkaW8pOworCisJZnJhbWUuYXVkaW8uY29kaW5nX3R5cGUgPSBIRE1JX0FVRElP X0NPRElOR19UWVBFX1NUUkVBTTsKKwlmcmFtZS5hdWRpby5zYW1wbGVfZnJlcXVlbmN5ID0gSERN SV9BVURJT19TQU1QTEVfRlJFUVVFTkNZX1NUUkVBTTsKKwlmcmFtZS5hdWRpby5zYW1wbGVfc2l6 ZSA9IEhETUlfQVVESU9fU0FNUExFX1NJWkVfU1RSRUFNOworCWZyYW1lLmF1ZGlvLmNoYW5uZWxz ID0gaGRtaS0+YXVkaW8uY2hhbm5lbHM7CisKKwl2YzRfaGRtaV93cml0ZV9pbmZvZnJhbWUoZW5j b2RlciwgJmZyYW1lKTsKK30KKwogc3RhdGljIHZvaWQgdmM0X2hkbWlfc2V0X2luZm9mcmFtZXMo c3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQogewogCXZjNF9oZG1pX3NldF9hdmlfaW5mb2Zy YW1lKGVuY29kZXIpOwpAQCAtNTg5LDYgKzYzNCw0NDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBk cm1fZW5jb2Rlcl9oZWxwZXJfZnVuY3MgdmM0X2hkbWlfZW5jb2Rlcl9oZWxwZXJfZnVuY3MgPSB7 CiAJLmVuYWJsZSA9IHZjNF9oZG1pX2VuY29kZXJfZW5hYmxlLAogfTsKIAorLyogSERNSSBhdWRp byBjb2RlYyBjYWxsYmFja3MgKi8KK3N0YXRpYyB2b2lkIHZjNF9oZG1pX2F1ZGlvX3NldF9tYWlf Y2xvY2soc3RydWN0IHZjNF9oZG1pICpoZG1pKQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkcm0g PSBoZG1pLT5lbmNvZGVyLT5kZXY7CisJc3RydWN0IHZjNF9kZXYgKnZjNCA9IHRvX3ZjNF9kZXYo ZHJtKTsKKwl1MzIgaHNtX2Nsb2NrID0gY2xrX2dldF9yYXRlKGhkbWktPmhzbV9jbG9jayk7CisJ dW5zaWduZWQgbG9uZyBuLCBtOworCisJcmF0aW9uYWxfYmVzdF9hcHByb3hpbWF0aW9uKGhzbV9j bG9jaywgaGRtaS0+YXVkaW8uc2FtcGxlcmF0ZSwKKwkJCQkgICAgVkM0X0hEX01BSV9TTVBfTl9N QVNLID4+CisJCQkJICAgIFZDNF9IRF9NQUlfU01QX05fU0hJRlQsCisJCQkJICAgIChWQzRfSERf TUFJX1NNUF9NX01BU0sgPj4KKwkJCQkgICAgIFZDNF9IRF9NQUlfU01QX01fU0hJRlQpICsgMSwK KwkJCQkgICAgJm4sICZtKTsKKworCUhEX1dSSVRFKFZDNF9IRF9NQUlfU01QLAorCQkgVkM0X1NF VF9GSUVMRChuLCBWQzRfSERfTUFJX1NNUF9OKSB8CisJCSBWQzRfU0VUX0ZJRUxEKG0gLSAxLCBW QzRfSERfTUFJX1NNUF9NKSk7Cit9CisKK3N0YXRpYyB2b2lkIHZjNF9oZG1pX3NldF9uX2N0cyhz dHJ1Y3QgdmM0X2hkbWkgKmhkbWkpCit7CisJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyID0g aGRtaS0+ZW5jb2RlcjsKKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBlbmNvZGVyLT5jcnRjOwor CXN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBlbmNvZGVyLT5kZXY7CisJc3RydWN0IHZjNF9kZXYg KnZjNCA9IHRvX3ZjNF9kZXYoZHJtKTsKKwljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAq bW9kZSA9ICZjcnRjLT5zdGF0ZS0+YWRqdXN0ZWRfbW9kZTsKKwl1MzIgc2FtcGxlcmF0ZSA9IGhk bWktPmF1ZGlvLnNhbXBsZXJhdGU7CisJdTMyIG4sIGN0czsKKwl1NjQgdG1wOworCisJbiA9IDEy OCAqIHNhbXBsZXJhdGUgLyAxMDAwOworCXRtcCA9ICh1NjQpKG1vZGUtPmNsb2NrICogMTAwMCkg KiBuOworCWRvX2Rpdih0bXAsIDEyOCAqIHNhbXBsZXJhdGUpOworCWN0cyA9IHRtcDsKKworCUhE TUlfV1JJVEUoVkM0X0hETUlfQ1JQX0NGRywKKwkJICAgVkM0X0hETUlfQ1JQX0NGR19FWFRFUk5B TF9DVFNfRU4gfAorCQkgICBWQzRfU0VUX0ZJRUxEKG4sIFZDNF9IRE1JX0NSUF9DRkdfTikpOwor CisJLyoKKwkgKiBXZSBjb3VsZCBnZXQgc2xpZ2h0bHkgbW9yZSBhY2N1cmF0ZSBjbG9ja3MgaW4g c29tZSBjYXNlcyBieQorCSAqIHByb3ZpZGluZyBhIENUU18xIHZhbHVlLiAgVGhlIHR3byBDVFMg dmFsdWVzIGFyZSBhbHRlcm5hdGVkCisJICogYmV0d2VlbiBiYXNlZCBvbiB0aGUgcGVyaW9kIGZp ZWxkcworCSAqLworCUhETUlfV1JJVEUoVkM0X0hETUlfQ1RTXzAsIGN0cyk7CisJSERNSV9XUklU RShWQzRfSERNSV9DVFNfMSwgY3RzKTsKK30KKworc3RhdGljIGlubGluZSBzdHJ1Y3QgdmM0X2hk bWkgKmRhaV90b19oZG1pKHN0cnVjdCBzbmRfc29jX2RhaSAqZGFpKQoreworCXN0cnVjdCBzbmRf c29jX2NhcmQgKmNhcmQgPSBzbmRfc29jX2RhaV9nZXRfZHJ2ZGF0YShkYWkpOworCisJcmV0dXJu IHNuZF9zb2NfY2FyZF9nZXRfZHJ2ZGF0YShjYXJkKTsKK30KKworc3RhdGljIGludCB2YzRfaGRt aV9hdWRpb19zdGFydHVwKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLAorCQkJ CSAgc3RydWN0IHNuZF9zb2NfZGFpICpkYWkpCit7CisJc3RydWN0IHZjNF9oZG1pICpoZG1pID0g ZGFpX3RvX2hkbWkoZGFpKTsKKwlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIgPSBoZG1pLT5l bmNvZGVyOworCXN0cnVjdCB2YzRfZGV2ICp2YzQgPSB0b192YzRfZGV2KGVuY29kZXItPmRldik7 CisJaW50IHJldDsKKworCWlmIChoZG1pLT5hdWRpby5zdWJzdHJlYW0gJiYgaGRtaS0+YXVkaW8u c3Vic3RyZWFtICE9IHN1YnN0cmVhbSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwloZG1pLT5hdWRp by5zdWJzdHJlYW0gPSBzdWJzdHJlYW07CisKKwkvKgorCSAqIElmIHRoZSBIRE1JIGVuY29kZXIg aGFzbid0IHByb2JlZCwgb3IgdGhlIGVuY29kZXIgaXMKKwkgKiBjdXJyZW50bHkgaW4gRFZJIG1v ZGUsIHRyZWF0IHRoZSBjb2RlYyBkYWkgYXMgbWlzc2luZy4KKwkgKi8KKwlpZiAoIWVuY29kZXIt PmNydGMgfHwgIShIRE1JX1JFQUQoVkM0X0hETUlfUkFNX1BBQ0tFVF9DT05GSUcpICYKKwkJCQlW QzRfSERNSV9SQU1fUEFDS0VUX0VOQUJMRSkpCisJCXJldHVybiAtRU5PREVWOworCisJcmV0ID0g c25kX3BjbV9od19jb25zdHJhaW50X2VsZChzdWJzdHJlYW0tPnJ1bnRpbWUsCisJCQkJCWhkbWkt PmNvbm5lY3Rvci0+ZWxkKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBpbnQgdmM0X2hkbWlfYXVkaW9fc2V0X2ZtdChzdHJ1Y3Qgc25kX3NvY19k YWkgKmRhaSwgdW5zaWduZWQgaW50IGZtdCkKK3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZv aWQgdmM0X2hkbWlfYXVkaW9fcmVzZXQoc3RydWN0IHZjNF9oZG1pICpoZG1pKQoreworCXN0cnVj dCBkcm1fZW5jb2RlciAqZW5jb2RlciA9IGhkbWktPmVuY29kZXI7CisJc3RydWN0IGRybV9kZXZp Y2UgKmRybSA9IGVuY29kZXItPmRldjsKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmaGRtaS0+cGRl di0+ZGV2OworCXN0cnVjdCB2YzRfZGV2ICp2YzQgPSB0b192YzRfZGV2KGRybSk7CisJaW50IHJl dDsKKworCXJldCA9IHZjNF9oZG1pX3N0b3BfcGFja2V0KGVuY29kZXIsIEhETUlfSU5GT0ZSQU1F X1RZUEVfQVVESU8pOworCWlmIChyZXQpCisJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIHN0b3Ag YXVkaW8gaW5mb2ZyYW1lOiAlZFxuIiwgcmV0KTsKKworCUhEX1dSSVRFKFZDNF9IRF9NQUlfQ1RM LCBWQzRfSERfTUFJX0NUTF9SRVNFVCk7CisJSERfV1JJVEUoVkM0X0hEX01BSV9DVEwsIFZDNF9I RF9NQUlfQ1RMX0VSUk9SRik7CisJSERfV1JJVEUoVkM0X0hEX01BSV9DVEwsIFZDNF9IRF9NQUlf Q1RMX0ZMVVNIKTsKK30KKworc3RhdGljIHZvaWQgdmM0X2hkbWlfYXVkaW9fc2h1dGRvd24oc3Ry dWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0sCisJCQkJICAgIHN0cnVjdCBzbmRfc29j X2RhaSAqZGFpKQoreworCXN0cnVjdCB2YzRfaGRtaSAqaGRtaSA9IGRhaV90b19oZG1pKGRhaSk7 CisKKwlpZiAoc3Vic3RyZWFtICE9IGhkbWktPmF1ZGlvLnN1YnN0cmVhbSkKKwkJcmV0dXJuOwor CisJdmM0X2hkbWlfYXVkaW9fcmVzZXQoaGRtaSk7CisKKwloZG1pLT5hdWRpby5zdWJzdHJlYW0g PSBOVUxMOworfQorCisvKiBIRE1JIGF1ZGlvIGNvZGVjIGNhbGxiYWNrcyAqLworc3RhdGljIGlu dCB2YzRfaGRtaV9hdWRpb19od19wYXJhbXMoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJz dHJlYW0sCisJCQkJICAgIHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyAqcGFyYW1zLAorCQkJCSAg ICBzdHJ1Y3Qgc25kX3NvY19kYWkgKmRhaSkKK3sKKwlzdHJ1Y3QgdmM0X2hkbWkgKmhkbWkgPSBk YWlfdG9faGRtaShkYWkpOworCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciA9IGhkbWktPmVu Y29kZXI7CisJc3RydWN0IGRybV9kZXZpY2UgKmRybSA9IGVuY29kZXItPmRldjsKKwlzdHJ1Y3Qg ZGV2aWNlICpkZXYgPSAmaGRtaS0+cGRldi0+ZGV2OworCXN0cnVjdCB2YzRfZGV2ICp2YzQgPSB0 b192YzRfZGV2KGRybSk7CisJdTMyIGF1ZGlvX3BhY2tldF9jb25maWcsIGNoYW5uZWxfbWFzazsK Kwl1MzIgY2hhbm5lbF9tYXAsIGk7CisKKwlpZiAoc3Vic3RyZWFtICE9IGhkbWktPmF1ZGlvLnN1 YnN0cmVhbSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlkZXZfZGJnKGRldiwgIiVzOiAldSBIeiwg JWQgYml0LCAlZCBjaGFubmVsc1xuIiwgX19mdW5jX18sCisJCXBhcmFtc19yYXRlKHBhcmFtcyks IHBhcmFtc193aWR0aChwYXJhbXMpLAorCQlwYXJhbXNfY2hhbm5lbHMocGFyYW1zKSk7CisKKwlo ZG1pLT5hdWRpby5jaGFubmVscyA9IHBhcmFtc19jaGFubmVscyhwYXJhbXMpOworCWhkbWktPmF1 ZGlvLnNhbXBsZXJhdGUgPSBwYXJhbXNfcmF0ZShwYXJhbXMpOworCisJSERfV1JJVEUoVkM0X0hE X01BSV9DVEwsCisJCSBWQzRfSERfTUFJX0NUTF9SRVNFVCB8CisJCSBWQzRfSERfTUFJX0NUTF9G TFVTSCB8CisJCSBWQzRfSERfTUFJX0NUTF9ETEFURSB8CisJCSBWQzRfSERfTUFJX0NUTF9FUlJP UkUgfAorCQkgVkM0X0hEX01BSV9DVExfRVJST1JGKTsKKworCXZjNF9oZG1pX2F1ZGlvX3NldF9t YWlfY2xvY2soaGRtaSk7CisKKwlhdWRpb19wYWNrZXRfY29uZmlnID0KKwkJVkM0X0hETUlfQVVE SU9fUEFDS0VUX1pFUk9fREFUQV9PTl9TQU1QTEVfRkxBVCB8CisJCVZDNF9IRE1JX0FVRElPX1BB Q0tFVF9aRVJPX0RBVEFfT05fSU5BQ1RJVkVfQ0hBTk5FTFMgfAorCQlWQzRfU0VUX0ZJRUxEKDB4 ZiwgVkM0X0hETUlfQVVESU9fUEFDS0VUX0JfRlJBTUVfSURFTlRJRklFUik7CisKKwljaGFubmVs X21hc2sgPSBHRU5NQVNLKGhkbWktPmF1ZGlvLmNoYW5uZWxzIC0gMSwgMCk7CisJYXVkaW9fcGFj a2V0X2NvbmZpZyB8PSBWQzRfU0VUX0ZJRUxEKGNoYW5uZWxfbWFzaywKKwkJCQkJICAgICBWQzRf SERNSV9BVURJT19QQUNLRVRfQ0VBX01BU0spOworCisJLyogU2V0IHRoZSBNQUkgdGhyZXNob2xk LiAgVGhpcyBsb2dpYyBtaW1pY3MgdGhlIGZpcm13YXJlJ3MuICovCisJaWYgKGhkbWktPmF1ZGlv LnNhbXBsZXJhdGUgPiA5NjAwMCkgeworCQlIRF9XUklURShWQzRfSERfTUFJX1RIUiwKKwkJCSBW QzRfU0VUX0ZJRUxEKDB4MTIsIFZDNF9IRF9NQUlfVEhSX0RSRVFISUdIKSB8CisJCQkgVkM0X1NF VF9GSUVMRCgweDEyLCBWQzRfSERfTUFJX1RIUl9EUkVRTE9XKSk7CisJfSBlbHNlIGlmIChoZG1p LT5hdWRpby5zYW1wbGVyYXRlID4gNDgwMDApIHsKKwkJSERfV1JJVEUoVkM0X0hEX01BSV9USFIs CisJCQkgVkM0X1NFVF9GSUVMRCgweDE0LCBWQzRfSERfTUFJX1RIUl9EUkVRSElHSCkgfAorCQkJ IFZDNF9TRVRfRklFTEQoMHgxMiwgVkM0X0hEX01BSV9USFJfRFJFUUxPVykpOworCX0gZWxzZSB7 CisJCUhEX1dSSVRFKFZDNF9IRF9NQUlfVEhSLAorCQkJIFZDNF9TRVRfRklFTEQoMHgxMCwgVkM0 X0hEX01BSV9USFJfUEFOSUNISUdIKSB8CisJCQkgVkM0X1NFVF9GSUVMRCgweDEwLCBWQzRfSERf TUFJX1RIUl9QQU5JQ0xPVykgfAorCQkJIFZDNF9TRVRfRklFTEQoMHgxMCwgVkM0X0hEX01BSV9U SFJfRFJFUUhJR0gpIHwKKwkJCSBWQzRfU0VUX0ZJRUxEKDB4MTAsIFZDNF9IRF9NQUlfVEhSX0RS RVFMT1cpKTsKKwl9CisKKwlIRE1JX1dSSVRFKFZDNF9IRE1JX01BSV9DT05GSUcsCisJCSAgIFZD NF9IRE1JX01BSV9DT05GSUdfQklUX1JFVkVSU0UgfAorCQkgICBWQzRfU0VUX0ZJRUxEKGNoYW5u ZWxfbWFzaywgVkM0X0hETUlfTUFJX0NIQU5ORUxfTUFTSykpOworCisJY2hhbm5lbF9tYXAgPSAw OworCWZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHsKKwkJaWYgKGNoYW5uZWxfbWFzayAmIEJJVChp KSkKKwkJCWNoYW5uZWxfbWFwIHw9IGkgPDwgKDMgKiBpKTsKKwl9CisKKwlIRE1JX1dSSVRFKFZD NF9IRE1JX01BSV9DSEFOTkVMX01BUCwgY2hhbm5lbF9tYXApOworCUhETUlfV1JJVEUoVkM0X0hE TUlfQVVESU9fUEFDS0VUX0NPTkZJRywgYXVkaW9fcGFja2V0X2NvbmZpZyk7CisJdmM0X2hkbWlf c2V0X25fY3RzKGhkbWkpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgdmM0X2hkbWlf YXVkaW9fdHJpZ2dlcihzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwgaW50IGNt ZCwKKwkJCQkgIHN0cnVjdCBzbmRfc29jX2RhaSAqZGFpKQoreworCXN0cnVjdCB2YzRfaGRtaSAq aGRtaSA9IGRhaV90b19oZG1pKGRhaSk7CisJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyID0g aGRtaS0+ZW5jb2RlcjsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gZW5jb2Rlci0+ZGV2Owor CXN0cnVjdCB2YzRfZGV2ICp2YzQgPSB0b192YzRfZGV2KGRybSk7CisKKwlzd2l0Y2ggKGNtZCkg eworCWNhc2UgU05EUlZfUENNX1RSSUdHRVJfU1RBUlQ6CisJCXZjNF9oZG1pX3NldF9hdWRpb19p bmZvZnJhbWUoZW5jb2Rlcik7CisJCUhETUlfV1JJVEUoVkM0X0hETUlfVFhfUEhZX0NUTDAsCisJ CQkgICBIRE1JX1JFQUQoVkM0X0hETUlfVFhfUEhZX0NUTDApICYKKwkJCSAgIH5WQzRfSERNSV9U WF9QSFlfUk5HX1BXUkROKTsKKwkJSERfV1JJVEUoVkM0X0hEX01BSV9DVEwsCisJCQkgVkM0X1NF VF9GSUVMRChoZG1pLT5hdWRpby5jaGFubmVscywKKwkJCQkgICAgICAgVkM0X0hEX01BSV9DVExf Q0hOVU0pIHwKKwkJCSBWQzRfSERfTUFJX0NUTF9FTkFCTEUpOworCQlicmVhazsKKwljYXNlIFNO RFJWX1BDTV9UUklHR0VSX1NUT1A6CisJCUhEX1dSSVRFKFZDNF9IRF9NQUlfQ1RMLAorCQkJIFZD NF9IRF9NQUlfQ1RMX0RMQVRFIHwKKwkJCSBWQzRfSERfTUFJX0NUTF9FUlJPUkUgfAorCQkJIFZD NF9IRF9NQUlfQ1RMX0VSUk9SRik7CisJCUhETUlfV1JJVEUoVkM0X0hETUlfVFhfUEhZX0NUTDAs CisJCQkgICBIRE1JX1JFQUQoVkM0X0hETUlfVFhfUEhZX0NUTDApIHwKKwkJCSAgIFZDNF9IRE1J X1RYX1BIWV9STkdfUFdSRE4pOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlicmVhazsKKwl9CisK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlubGluZSBzdHJ1Y3QgdmM0X2hkbWkgKgorc25kX2Nv bXBvbmVudF90b19oZG1pKHN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50KQorewor CXN0cnVjdCBzbmRfc29jX2NhcmQgKmNhcmQgPSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0 YShjb21wb25lbnQpOworCisJcmV0dXJuIHNuZF9zb2NfY2FyZF9nZXRfZHJ2ZGF0YShjYXJkKTsK K30KKworc3RhdGljIGludCB2YzRfaGRtaV9hdWRpb19lbGRfY3RsX2luZm8oc3RydWN0IHNuZF9r Y29udHJvbCAqa2NvbnRyb2wsCisJCQkJICAgICAgIHN0cnVjdCBzbmRfY3RsX2VsZW1faW5mbyAq dWluZm8pCit7CisJc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQgPSBzbmRfa2Nv bnRyb2xfY2hpcChrY29udHJvbCk7CisJc3RydWN0IHZjNF9oZG1pICpoZG1pID0gc25kX2NvbXBv bmVudF90b19oZG1pKGNvbXBvbmVudCk7CisKKwl1aW5mby0+dHlwZSA9IFNORFJWX0NUTF9FTEVN X1RZUEVfQllURVM7CisJdWluZm8tPmNvdW50ID0gc2l6ZW9mKGhkbWktPmNvbm5lY3Rvci0+ZWxk KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHZjNF9oZG1pX2F1ZGlvX2VsZF9jdGxf Z2V0KHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLAorCQkJCSAgICAgIHN0cnVjdCBzbmRf Y3RsX2VsZW1fdmFsdWUgKnVjb250cm9sKQoreworCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAq Y29tcG9uZW50ID0gc25kX2tjb250cm9sX2NoaXAoa2NvbnRyb2wpOworCXN0cnVjdCB2YzRfaGRt aSAqaGRtaSA9IHNuZF9jb21wb25lbnRfdG9faGRtaShjb21wb25lbnQpOworCisJbWVtY3B5KHVj b250cm9sLT52YWx1ZS5ieXRlcy5kYXRhLCBoZG1pLT5jb25uZWN0b3ItPmVsZCwKKwkgICAgICAg c2l6ZW9mKGhkbWktPmNvbm5lY3Rvci0+ZWxkKSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGlj IGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IHZjNF9oZG1pX2F1ZGlvX2NvbnRyb2xzW10g PSB7CisJeworCQkuYWNjZXNzID0gU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1JFQUQgfAorCQkJICBT TkRSVl9DVExfRUxFTV9BQ0NFU1NfVk9MQVRJTEUsCisJCS5pZmFjZSA9IFNORFJWX0NUTF9FTEVN X0lGQUNFX1BDTSwKKwkJLm5hbWUgPSAiRUxEIiwKKwkJLmluZm8gPSB2YzRfaGRtaV9hdWRpb19l bGRfY3RsX2luZm8sCisJCS5nZXQgPSB2YzRfaGRtaV9hdWRpb19lbGRfY3RsX2dldCwKKwl9LAor fTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfc29jX2RhcG1fd2lkZ2V0IHZjNF9oZG1pX2F1 ZGlvX3dpZGdldHNbXSA9IHsKKwlTTkRfU09DX0RBUE1fT1VUUFVUKCJUWCIpLAorfTsKKworc3Rh dGljIGNvbnN0IHN0cnVjdCBzbmRfc29jX2RhcG1fcm91dGUgdmM0X2hkbWlfYXVkaW9fcm91dGVz W10gPSB7CisJeyAiVFgiLCBOVUxMLCAiUGxheWJhY2siIH0sCit9OworCitzdGF0aWMgY29uc3Qg c3RydWN0IHNuZF9zb2NfY29kZWNfZHJpdmVyIHZjNF9oZG1pX2F1ZGlvX2NvZGVjX2RydiA9IHsK KwkuY29tcG9uZW50X2RyaXZlciA9IHsKKwkJLmNvbnRyb2xzID0gdmM0X2hkbWlfYXVkaW9fY29u dHJvbHMsCisJCS5udW1fY29udHJvbHMgPSBBUlJBWV9TSVpFKHZjNF9oZG1pX2F1ZGlvX2NvbnRy b2xzKSwKKwkJLmRhcG1fd2lkZ2V0cyA9IHZjNF9oZG1pX2F1ZGlvX3dpZGdldHMsCisJCS5udW1f ZGFwbV93aWRnZXRzID0gQVJSQVlfU0laRSh2YzRfaGRtaV9hdWRpb193aWRnZXRzKSwKKwkJLmRh cG1fcm91dGVzID0gdmM0X2hkbWlfYXVkaW9fcm91dGVzLAorCQkubnVtX2RhcG1fcm91dGVzID0g QVJSQVlfU0laRSh2YzRfaGRtaV9hdWRpb19yb3V0ZXMpLAorCX0sCit9OworCitzdGF0aWMgY29u c3Qgc3RydWN0IHNuZF9zb2NfZGFpX29wcyB2YzRfaGRtaV9hdWRpb19kYWlfb3BzID0geworCS5z dGFydHVwID0gdmM0X2hkbWlfYXVkaW9fc3RhcnR1cCwKKwkuc2h1dGRvd24gPSB2YzRfaGRtaV9h dWRpb19zaHV0ZG93biwKKwkuaHdfcGFyYW1zID0gdmM0X2hkbWlfYXVkaW9faHdfcGFyYW1zLAor CS5zZXRfZm10ID0gdmM0X2hkbWlfYXVkaW9fc2V0X2ZtdCwKKwkudHJpZ2dlciA9IHZjNF9oZG1p X2F1ZGlvX3RyaWdnZXIsCit9OworCitzdGF0aWMgc3RydWN0IHNuZF9zb2NfZGFpX2RyaXZlciB2 YzRfaGRtaV9hdWRpb19jb2RlY19kYWlfZHJ2ID0geworCS5uYW1lID0gInZjNC1oZG1pLWhpZmki LAorCS5wbGF5YmFjayA9IHsKKwkJLnN0cmVhbV9uYW1lID0gIlBsYXliYWNrIiwKKwkJLmNoYW5u ZWxzX21pbiA9IDIsCisJCS5jaGFubmVsc19tYXggPSA4LAorCQkucmF0ZXMgPSBTTkRSVl9QQ01f UkFURV8zMjAwMCB8IFNORFJWX1BDTV9SQVRFXzQ0MTAwIHwKKwkJCSBTTkRSVl9QQ01fUkFURV80 ODAwMCB8IFNORFJWX1BDTV9SQVRFXzg4MjAwIHwKKwkJCSBTTkRSVl9QQ01fUkFURV85NjAwMCB8 IFNORFJWX1BDTV9SQVRFXzE3NjQwMCB8CisJCQkgU05EUlZfUENNX1JBVEVfMTkyMDAwLAorCQku Zm9ybWF0cyA9IFNORFJWX1BDTV9GTVRCSVRfSUVDOTU4X1NVQkZSQU1FX0xFLAorCX0sCit9Owor CitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9zb2NfY29tcG9uZW50X2RyaXZlciB2YzRfaGRtaV9h dWRpb19jcHVfZGFpX2NvbXAgPSB7CisJLm5hbWUgPSAidmM0LWhkbWktY3B1LWRhaS1jb21wb25l bnQiLAorfTsKKworc3RhdGljIGludCB2YzRfaGRtaV9hdWRpb19jcHVfZGFpX3Byb2JlKHN0cnVj dCBzbmRfc29jX2RhaSAqZGFpKQoreworCXN0cnVjdCB2YzRfaGRtaSAqaGRtaSA9IGRhaV90b19o ZG1pKGRhaSk7CisKKwlzbmRfc29jX2RhaV9pbml0X2RtYV9kYXRhKGRhaSwgJmhkbWktPmF1ZGlv LmRtYV9kYXRhLCBOVUxMKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IHNuZF9z b2NfZGFpX2RyaXZlciB2YzRfaGRtaV9hdWRpb19jcHVfZGFpX2RydiA9IHsKKwkubmFtZSA9ICJ2 YzQtaGRtaS1jcHUtZGFpIiwKKwkucHJvYmUgID0gdmM0X2hkbWlfYXVkaW9fY3B1X2RhaV9wcm9i ZSwKKwkucGxheWJhY2sgPSB7CisJCS5zdHJlYW1fbmFtZSA9ICJQbGF5YmFjayIsCisJCS5jaGFu bmVsc19taW4gPSAxLAorCQkuY2hhbm5lbHNfbWF4ID0gOCwKKwkJLnJhdGVzID0gU05EUlZfUENN X1JBVEVfMzIwMDAgfCBTTkRSVl9QQ01fUkFURV80NDEwMCB8CisJCQkgU05EUlZfUENNX1JBVEVf NDgwMDAgfCBTTkRSVl9QQ01fUkFURV84ODIwMCB8CisJCQkgU05EUlZfUENNX1JBVEVfOTYwMDAg fCBTTkRSVl9QQ01fUkFURV8xNzY0MDAgfAorCQkJIFNORFJWX1BDTV9SQVRFXzE5MjAwMCwKKwkJ LmZvcm1hdHMgPSBTTkRSVl9QQ01fRk1UQklUX0lFQzk1OF9TVUJGUkFNRV9MRSwKKwl9LAorCS5v cHMgPSAmdmM0X2hkbWlfYXVkaW9fZGFpX29wcywKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg c25kX2RtYWVuZ2luZV9wY21fY29uZmlnIHBjbV9jb25mID0geworCS5jaGFuX25hbWVzW1NORFJW X1BDTV9TVFJFQU1fUExBWUJBQ0tdID0gImF1ZGlvLXJ4IiwKKwkucHJlcGFyZV9zbGF2ZV9jb25m aWcgPSBzbmRfZG1hZW5naW5lX3BjbV9wcmVwYXJlX3NsYXZlX2NvbmZpZywKK307CisKK3N0YXRp YyBpbnQgdmM0X2hkbWlfYXVkaW9faW5pdChzdHJ1Y3QgdmM0X2hkbWkgKmhkbWkpCit7CisJc3Ry dWN0IHNuZF9zb2NfZGFpX2xpbmsgKmRhaV9saW5rID0gJmhkbWktPmF1ZGlvLmxpbms7CisJc3Ry dWN0IHNuZF9zb2NfY2FyZCAqY2FyZCA9ICZoZG1pLT5hdWRpby5jYXJkOworCXN0cnVjdCBkZXZp Y2UgKmRldiA9ICZoZG1pLT5wZGV2LT5kZXY7CisJY29uc3QgX19iZTMyICphZGRyOworCWludCBy ZXQ7CisKKwlpZiAoIW9mX2ZpbmRfcHJvcGVydHkoZGV2LT5vZl9ub2RlLCAiZG1hcyIsIE5VTEwp KSB7CisJCWRldl93YXJuKGRldiwKKwkJCSAiJ2RtYXMnIERUIHByb3BlcnR5IGlzIG1pc3Npbmcs IG5vIEhETUkgYXVkaW9cbiIpOworCQlyZXR1cm4gMDsKKwl9CisKKwkvKgorCSAqIEdldCB0aGUg cGh5c2ljYWwgYWRkcmVzcyBvZiBWQzRfSERfTUFJX0RBVEEuIFdlIG5lZWQgdG8gcmV0cmlldmUK KwkgKiB0aGUgYnVzIGFkZHJlc3Mgc3BlY2lmaWVkIGluIHRoZSBEVCwgYmVjYXVzZSB0aGUgcGh5 c2ljYWwgYWRkcmVzcworCSAqICh0aGUgb25lIHJldHVybmVkIGJ5IHBsYXRmb3JtX2dldF9yZXNv dXJjZSgpKSBpcyBub3QgYXBwcm9wcmlhdGUKKwkgKiBmb3IgRE1BIHRyYW5zZmVycy4KKwkgKiBU aGlzIFZDL01NVSBzaG91bGQgcHJvYmFibHkgYmUgZXhwb3NlZCB0byBhdm9pZCB0aGlzIGtpbmQg b2YgaGFja3MuCisJICovCisJYWRkciA9IG9mX2dldF9hZGRyZXNzKGRldi0+b2Zfbm9kZSwgMSwg TlVMTCwgTlVMTCk7CisJaGRtaS0+YXVkaW8uZG1hX2RhdGEuYWRkciA9IGJlMzJfdG9fY3B1cChh ZGRyKSArIFZDNF9IRF9NQUlfREFUQTsKKwloZG1pLT5hdWRpby5kbWFfZGF0YS5hZGRyX3dpZHRo ID0gRE1BX1NMQVZFX0JVU1dJRFRIXzRfQllURVM7CisJaGRtaS0+YXVkaW8uZG1hX2RhdGEubWF4 YnVyc3QgPSAyOworCisJcmV0ID0gZGV2bV9zbmRfZG1hZW5naW5lX3BjbV9yZWdpc3RlcihkZXYs ICZwY21fY29uZiwgMCk7CisJaWYgKHJldCkgeworCQlkZXZfZXJyKGRldiwgIkNvdWxkIG5vdCBy ZWdpc3RlciBQQ00gY29tcG9uZW50OiAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisK KwlyZXQgPSBkZXZtX3NuZF9zb2NfcmVnaXN0ZXJfY29tcG9uZW50KGRldiwgJnZjNF9oZG1pX2F1 ZGlvX2NwdV9kYWlfY29tcCwKKwkJCQkJICAgICAgJnZjNF9oZG1pX2F1ZGlvX2NwdV9kYWlfZHJ2 LCAxKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoZGV2LCAiQ291bGQgbm90IHJlZ2lzdGVyIENQ VSBEQUk6ICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworCS8qIHJlZ2lzdGVyIGNv ZGVjIGFuZCBjb2RlYyBkYWkgKi8KKwlyZXQgPSBzbmRfc29jX3JlZ2lzdGVyX2NvZGVjKGRldiwg JnZjNF9oZG1pX2F1ZGlvX2NvZGVjX2RydiwKKwkJCQkgICAgICZ2YzRfaGRtaV9hdWRpb19jb2Rl Y19kYWlfZHJ2LCAxKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoZGV2LCAiQ291bGQgbm90IHJl Z2lzdGVyIGNvZGVjOiAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlkYWlfbGlu ay0+bmFtZSA9ICJNQUkiOworCWRhaV9saW5rLT5zdHJlYW1fbmFtZSA9ICJNQUkgUENNIjsKKwlk YWlfbGluay0+Y29kZWNfZGFpX25hbWUgPSB2YzRfaGRtaV9hdWRpb19jb2RlY19kYWlfZHJ2Lm5h bWU7CisJZGFpX2xpbmstPmNwdV9kYWlfbmFtZSA9IGRldl9uYW1lKGRldik7CisJZGFpX2xpbmst PmNvZGVjX25hbWUgPSBkZXZfbmFtZShkZXYpOworCWRhaV9saW5rLT5wbGF0Zm9ybV9uYW1lID0g ZGV2X25hbWUoZGV2KTsKKworCWNhcmQtPmRhaV9saW5rID0gZGFpX2xpbms7CisJY2FyZC0+bnVt X2xpbmtzID0gMTsKKwljYXJkLT5uYW1lID0gInZjNC1oZG1pIjsKKwljYXJkLT5kZXYgPSBkZXY7 CisKKwkvKgorCSAqIEJlIGNhcmVmdWwsIHNuZF9zb2NfcmVnaXN0ZXJfY2FyZCgpIGNhbGxzIGRl dl9zZXRfZHJ2ZGF0YSgpIGFuZAorCSAqIHN0b3JlcyBhIHBvaW50ZXIgdG8gdGhlIHNuZCBjYXJk IG9iamVjdCBpbiBkZXYtPmRyaXZlcl9kYXRhLiBUaGlzCisJICogbWVhbnMgd2UgY2Fubm90IHVz ZSBpdCBmb3Igc29tZXRoaW5nIGVsc2UuIFRoZSBoZG1pIGJhY2stcG9pbnRlciBpcworCSAqIG5v dyBzdG9yZWQgaW4gY2FyZC0+ZHJ2ZGF0YSBhbmQgc2hvdWxkIGJlIHJldHJpZXZlZCB3aXRoCisJ ICogc25kX3NvY19jYXJkX2dldF9kcnZkYXRhKCkgaWYgbmVlZGVkLgorCSAqLworCXNuZF9zb2Nf Y2FyZF9zZXRfZHJ2ZGF0YShjYXJkLCBoZG1pKTsKKwlyZXQgPSBkZXZtX3NuZF9zb2NfcmVnaXN0 ZXJfY2FyZChkZXYsIGNhcmQpOworCWlmIChyZXQpIHsKKwkJZGV2X2VycihkZXYsICJDb3VsZCBu b3QgcmVnaXN0ZXIgc291bmQgY2FyZDogJWRcbiIsIHJldCk7CisJCWdvdG8gdW5yZWdpc3Rlcl9j b2RlYzsKKwl9CisKKwlyZXR1cm4gMDsKKwordW5yZWdpc3Rlcl9jb2RlYzoKKwlzbmRfc29jX3Vu cmVnaXN0ZXJfY29kZWMoZGV2KTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIHZj NF9oZG1pX2F1ZGlvX2NsZWFudXAoc3RydWN0IHZjNF9oZG1pICpoZG1pKQoreworCXN0cnVjdCBk ZXZpY2UgKmRldiA9ICZoZG1pLT5wZGV2LT5kZXY7CisKKwkvKgorCSAqIElmIGRydmRhdGEgaXMg bm90IHNldCB0aGlzIG1lYW5zIHRoZSBhdWRpbyBjYXJkIHdhcyBub3QKKwkgKiByZWdpc3RlcmVk LCBqdXN0IHNraXAgY29kZWMgdW5yZWdpc3RyYXRpb24gaW4gdGhpcyBjYXNlLgorCSAqLworCWlm IChkZXZfZ2V0X2RydmRhdGEoZGV2KSkKKwkJc25kX3NvY191bnJlZ2lzdGVyX2NvZGVjKGRldik7 Cit9CisKIHN0YXRpYyBpbnQgdmM0X2hkbWlfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVj dCBkZXZpY2UgKm1hc3Rlciwgdm9pZCAqZGF0YSkKIHsKIAlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl ICpwZGV2ID0gdG9fcGxhdGZvcm1fZGV2aWNlKGRldik7CkBAIC03MjAsNiArMTIwNiwxMCBAQCBz dGF0aWMgaW50IHZjNF9oZG1pX2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNl ICptYXN0ZXIsIHZvaWQgKmRhdGEpCiAJCWdvdG8gZXJyX2Rlc3Ryb3lfZW5jb2RlcjsKIAl9CiAK KwlyZXQgPSB2YzRfaGRtaV9hdWRpb19pbml0KGhkbWkpOworCWlmIChyZXQpCisJCWdvdG8gZXJy X2Rlc3Ryb3lfZW5jb2RlcjsKKwogCXJldHVybiAwOwogCiBlcnJfZGVzdHJveV9lbmNvZGVyOgpA QCAtNzQxLDYgKzEyMzEsOCBAQCBzdGF0aWMgdm9pZCB2YzRfaGRtaV91bmJpbmQoc3RydWN0IGRl dmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsCiAJc3RydWN0IHZjNF9kZXYgKnZjNCA9 IGRybS0+ZGV2X3ByaXZhdGU7CiAJc3RydWN0IHZjNF9oZG1pICpoZG1pID0gdmM0LT5oZG1pOwog CisJdmM0X2hkbWlfYXVkaW9fY2xlYW51cChoZG1pKTsKKwogCXZjNF9oZG1pX2Nvbm5lY3Rvcl9k ZXN0cm95KGhkbWktPmNvbm5lY3Rvcik7CiAJdmM0X2hkbWlfZW5jb2Rlcl9kZXN0cm95KGhkbWkt PmVuY29kZXIpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9yZWdzLmgg Yi9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9yZWdzLmgKaW5kZXggMzg1NDA1YTJkZjA1Li45MzIw OTM5MzYxNzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X3JlZ3MuaAorKysg Yi9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9yZWdzLmgKQEAgLTQ0NiwxMSArNDQ2LDYyIEBACiAj ZGVmaW5lIFZDNF9IRE1JX0hPVFBMVUcJCQkweDAwYwogIyBkZWZpbmUgVkM0X0hETUlfSE9UUExV R19DT05ORUNURUQJCUJJVCgwKQogCisvKiAzIGJpdHMgcGVyIGZpZWxkLCB3aGVyZSBlYWNoIGZp ZWxkIG1hcHMgZnJvbSB0aGF0IGNvcnJlc3BvbmRpbmcgTUFJCisgKiBidXMgY2hhbm5lbCB0byB0 aGUgZ2l2ZW4gSERNSSBjaGFubmVsLgorICovCisjZGVmaW5lIFZDNF9IRE1JX01BSV9DSEFOTkVM X01BUAkJMHgwOTAKKworI2RlZmluZSBWQzRfSERNSV9NQUlfQ09ORklHCQkJMHgwOTQKKyMgZGVm aW5lIFZDNF9IRE1JX01BSV9DT05GSUdfRk9STUFUX1JFVkVSU0UJCUJJVCgyNykKKyMgZGVmaW5l IFZDNF9IRE1JX01BSV9DT05GSUdfQklUX1JFVkVSU0UJCUJJVCgyNikKKyMgZGVmaW5lIFZDNF9I RE1JX01BSV9DSEFOTkVMX01BU0tfTUFTSwkJCVZDNF9NQVNLKDE1LCAwKQorIyBkZWZpbmUgVkM0 X0hETUlfTUFJX0NIQU5ORUxfTUFTS19TSElGVAkJMAorCisvKiBMYXN0IHJlY2VpdmVkIGZvcm1h dCB3b3JkIG9uIHRoZSBNQUkgYnVzLiAqLworI2RlZmluZSBWQzRfSERNSV9NQUlfRk9STUFUCQkJ MHgwOTgKKworI2RlZmluZSBWQzRfSERNSV9BVURJT19QQUNLRVRfQ09ORklHCQkweDA5YworIyBk ZWZpbmUgVkM0X0hETUlfQVVESU9fUEFDS0VUX1pFUk9fREFUQV9PTl9TQU1QTEVfRkxBVAkJQklU KDI5KQorIyBkZWZpbmUgVkM0X0hETUlfQVVESU9fUEFDS0VUX1pFUk9fREFUQV9PTl9JTkFDVElW RV9DSEFOTkVMUwlCSVQoMjQpCisjIGRlZmluZSBWQzRfSERNSV9BVURJT19QQUNLRVRfRk9SQ0Vf U0FNUExFX1BSRVNFTlQJCUJJVCgxOSkKKyMgZGVmaW5lIFZDNF9IRE1JX0FVRElPX1BBQ0tFVF9G T1JDRV9CX0ZSQU1FCQkJQklUKDE4KQorIyBkZWZpbmUgVkM0X0hETUlfQVVESU9fUEFDS0VUX0Jf RlJBTUVfSURFTlRJRklFUl9NQVNLCQlWQzRfTUFTSygxMywgMTApCisjIGRlZmluZSBWQzRfSERN SV9BVURJT19QQUNLRVRfQl9GUkFNRV9JREVOVElGSUVSX1NISUZUCQkxMAorLyogSWYgc2V0LCB0 aGVuIG11bHRpY2hhbm5lbCwgb3RoZXJ3aXNlIDIgY2hhbm5lbC4gKi8KKyMgZGVmaW5lIFZDNF9I RE1JX0FVRElPX1BBQ0tFVF9BVURJT19MQVlPVVQJCQlCSVQoOSkKKy8qIElmIHNldCwgdGhlbiBB VURJT19MQVlPVVQgb3ZlcnJpZGVzIGF1ZGlvX2NlYV9tYXNrICovCisjIGRlZmluZSBWQzRfSERN SV9BVURJT19QQUNLRVRfRk9SQ0VfQVVESU9fTEFZT1VUCQlCSVQoOCkKKyMgZGVmaW5lIFZDNF9I RE1JX0FVRElPX1BBQ0tFVF9DRUFfTUFTS19NQVNLCQkJVkM0X01BU0soNywgMCkKKyMgZGVmaW5l IFZDNF9IRE1JX0FVRElPX1BBQ0tFVF9DRUFfTUFTS19TSElGVAkJCTAKKwogI2RlZmluZSBWQzRf SERNSV9SQU1fUEFDS0VUX0NPTkZJRwkJMHgwYTAKICMgZGVmaW5lIFZDNF9IRE1JX1JBTV9QQUNL RVRfRU5BQkxFCQlCSVQoMTYpCiAKICNkZWZpbmUgVkM0X0hETUlfUkFNX1BBQ0tFVF9TVEFUVVMJ CTB4MGE0CiAKKyNkZWZpbmUgVkM0X0hETUlfQ1JQX0NGRwkJCTB4MGE4CisvKiBXaGVuIHNldCwg dGhlIENUU19QRVJJT0QgY291bnRzIGJhc2VkIG9uIE1BSSBidXMgc3luYyBwdWxzZSBpbnN0ZWFk CisgKiBvZiBwaXhlbCBjbG9jay4KKyAqLworIyBkZWZpbmUgVkM0X0hETUlfQ1JQX1VTRV9NQUlf QlVTX1NZTkNfRk9SX0NUUwlCSVQoMjYpCisvKiBXaGVuIHNldCwgbm8gQ1JQIHBhY2tldHMgd2ls bCBiZSBzZW50LiAqLworIyBkZWZpbmUgVkM0X0hETUlfQ1JQX0NGR19ESVNBQkxFCQlCSVQoMjUp CisvKiBJZiBzZXQsIGdlbmVyYXRlcyBDVFMgdmFsdWVzIGJhc2VkIG9uIE4sIGF1ZGlvIGNsb2Nr LCBhbmQgdmlkZW8KKyAqIGNsb2NrLiAgTiBtdXN0IGJlIGRpdmlzaWJsZSBieSAxMjguCisgKi8K KyMgZGVmaW5lIFZDNF9IRE1JX0NSUF9DRkdfRVhURVJOQUxfQ1RTX0VOCUJJVCgyNCkKKyMgZGVm aW5lIFZDNF9IRE1JX0NSUF9DRkdfTl9NQVNLCQlWQzRfTUFTSygxOSwgMCkKKyMgZGVmaW5lIFZD NF9IRE1JX0NSUF9DRkdfTl9TSElGVAkJMAorCisvKiAyMC1iaXQgZmllbGRzIGNvbnRhaW5pbmcg Q1RTIHZhbHVlcyB0byBiZSB0cmFuc21pdHRlZCBpZiAhRVhURVJOQUxfQ1RTX0VOICovCisjZGVm aW5lIFZDNF9IRE1JX0NUU18wCQkJCTB4MGFjCisjZGVmaW5lIFZDNF9IRE1JX0NUU18xCQkJCTB4 MGIwCisvKiAyMC1iaXQgZmllbGRzIGNvbnRhaW5pbmcgbnVtYmVyIG9mIGNsb2NrcyB0byBzZW5k IENUUzAvMSBiZWZvcmUKKyAqIHN3aXRjaGluZyB0byB0aGUgb3RoZXIgb25lLgorICovCisjZGVm aW5lIFZDNF9IRE1JX0NUU19QRVJJT0RfMAkJCTB4MGI0CisjZGVmaW5lIFZDNF9IRE1JX0NUU19Q RVJJT0RfMQkJCTB4MGI4CisKICNkZWZpbmUgVkM0X0hETUlfSE9SWkEJCQkJMHgwYzQKICMgZGVm aW5lIFZDNF9IRE1JX0hPUlpBX1ZQT1MJCQlCSVQoMTQpCiAjIGRlZmluZSBWQzRfSERNSV9IT1Ja QV9IUE9TCQkJQklUKDEzKQpAQCAtNTEyLDcgKzU2MywxMSBAQAogCiAjZGVmaW5lIFZDNF9IRE1J X1RYX1BIWV9SRVNFVF9DVEwJCTB4MmMwCiAKLSNkZWZpbmUgVkM0X0hETUlfR0NQXzAJCQkJMHg0 MDAKKyNkZWZpbmUgVkM0X0hETUlfVFhfUEhZX0NUTDAJCQkweDJjNAorIyBkZWZpbmUgVkM0X0hE TUlfVFhfUEhZX1JOR19QV1JETgkJQklUKDI1KQorCisjZGVmaW5lIFZDNF9IRE1JX0dDUCh4KQkJ CQkoMHg0MDAgKyAoKHgpICogMHg0KSkKKyNkZWZpbmUgVkM0X0hETUlfUkFNX1BBQ0tFVCh4KQkJ CSgweDQwMCArICgoeCkgKiAweDI0KSkKICNkZWZpbmUgVkM0X0hETUlfUEFDS0VUX1NUUklERQkJ CTB4MjQKIAogI2RlZmluZSBWQzRfSERfTV9DVEwJCQkJMHgwMGMKQEAgLTUyMiw2ICs1NzcsNTYg QEAKICMgZGVmaW5lIFZDNF9IRF9NX0VOQUJMRQkJCUJJVCgwKQogCiAjZGVmaW5lIFZDNF9IRF9N QUlfQ1RMCQkJCTB4MDE0CisvKiBTZXQgd2hlbiBhdWRpbyBzdHJlYW0gaXMgcmVjZWl2ZWQgYXQg YSBzbG93ZXIgcmF0ZSB0aGFuIHRoZQorICogc2FtcGxpbmcgcGVyaW9kLCBzbyBNQUkgZmlmbyBn b2VzIGVtcHR5LiAgV3JpdGUgMSB0byBjbGVhci4KKyAqLworIyBkZWZpbmUgVkM0X0hEX01BSV9D VExfRExBVEUJCQlCSVQoMTUpCisjIGRlZmluZSBWQzRfSERfTUFJX0NUTF9CVVNZCQkJQklUKDE0 KQorIyBkZWZpbmUgVkM0X0hEX01BSV9DVExfQ0hBTElHTgkJCUJJVCgxMykKKyMgZGVmaW5lIFZD NF9IRF9NQUlfQ1RMX1dIT0xTTVAJCQlCSVQoMTIpCisjIGRlZmluZSBWQzRfSERfTUFJX0NUTF9G VUxMCQkJQklUKDExKQorIyBkZWZpbmUgVkM0X0hEX01BSV9DVExfRU1QVFkJCQlCSVQoMTApCisj IGRlZmluZSBWQzRfSERfTUFJX0NUTF9GTFVTSAkJCUJJVCg5KQorLyogSWYgc2V0LCBNQUkgYnVz IGdlbmVyYXRlcyBTUERJRiAoYml0IDMxKSBwYXJpdHkgaW5zdGVhZCBvZiBwYXNzaW5nCisgKiB0 aHJvdWdoLgorICovCisjIGRlZmluZSBWQzRfSERfTUFJX0NUTF9QQVJFTgkJCUJJVCg4KQorIyBk ZWZpbmUgVkM0X0hEX01BSV9DVExfQ0hOVU1fTUFTSwkJVkM0X01BU0soNywgNCkKKyMgZGVmaW5l IFZDNF9IRF9NQUlfQ1RMX0NITlVNX1NISUZUCQk0CisjIGRlZmluZSBWQzRfSERfTUFJX0NUTF9F TkFCTEUJCQlCSVQoMykKKy8qIFVuZGVyZmxvdyBlcnJvciBzdGF0dXMgYml0LCB3cml0ZSAxIHRv IGNsZWFyLiAqLworIyBkZWZpbmUgVkM0X0hEX01BSV9DVExfRVJST1JFCQkJQklUKDIpCisvKiBP dmVyZmxvdyBlcnJvciBzdGF0dXMgYml0LCB3cml0ZSAxIHRvIGNsZWFyLiAqLworIyBkZWZpbmUg VkM0X0hEX01BSV9DVExfRVJST1JGCQkJQklUKDEpCisvKiBTaW5nbGUtc2hvdCByZXNldCBiaXQu ICBSZWFkIHZhbHVlIGlzIHVuZGVmaW5lZC4gKi8KKyMgZGVmaW5lIFZDNF9IRF9NQUlfQ1RMX1JF U0VUCQkJQklUKDApCisKKyNkZWZpbmUgVkM0X0hEX01BSV9USFIJCQkJMHgwMTgKKyMgZGVmaW5l IFZDNF9IRF9NQUlfVEhSX1BBTklDSElHSF9NQVNLCQlWQzRfTUFTSygyOSwgMjQpCisjIGRlZmlu ZSBWQzRfSERfTUFJX1RIUl9QQU5JQ0hJR0hfU0hJRlQJCTI0CisjIGRlZmluZSBWQzRfSERfTUFJ X1RIUl9QQU5JQ0xPV19NQVNLCQlWQzRfTUFTSygyMSwgMTYpCisjIGRlZmluZSBWQzRfSERfTUFJ X1RIUl9QQU5JQ0xPV19TSElGVAkJMTYKKyMgZGVmaW5lIFZDNF9IRF9NQUlfVEhSX0RSRVFISUdI X01BU0sJCVZDNF9NQVNLKDEzLCA4KQorIyBkZWZpbmUgVkM0X0hEX01BSV9USFJfRFJFUUhJR0hf U0hJRlQJCTgKKyMgZGVmaW5lIFZDNF9IRF9NQUlfVEhSX0RSRVFMT1dfTUFTSwkJVkM0X01BU0so NSwgMCkKKyMgZGVmaW5lIFZDNF9IRF9NQUlfVEhSX0RSRVFMT1dfU0hJRlQJCTAKKworLyogRm9y bWF0IGhlYWRlciB0byBiZSBwbGFjZWQgb24gdGhlIE1BSSBkYXRhLiBVbnVzZWQuICovCisjZGVm aW5lIFZDNF9IRF9NQUlfRk1UCQkJCTB4MDFjCisKKy8qIFJlZ2lzdGVyIGZvciBETUFpbmcgaW4g YXVkaW8gZGF0YSB0byBiZSB0cmFuc3BvcnRlZCBvdmVyIHRoZSBNQUkKKyAqIGJ1cyB0byB0aGUg RmFsY29uIGNvcmUuCisgKi8KKyNkZWZpbmUgVkM0X0hEX01BSV9EQVRBCQkJCTB4MDIwCisKKy8q IERpdmlkZXIgZnJvbSBIRE1JIEhTTSBjbG9jayB0byBNQUkgc2VyaWFsIGNsb2NrLiAgU2FtcGxp bmcgcGVyaW9kCisgKiBjb252ZXJnZXMgdG8gTiAvIChNICsgMSkgY3ljbGVzLgorICovCisjZGVm aW5lIFZDNF9IRF9NQUlfU01QCQkJCTB4MDJjCisjIGRlZmluZSBWQzRfSERfTUFJX1NNUF9OX01B U0sJCQlWQzRfTUFTSygzMSwgOCkKKyMgZGVmaW5lIFZDNF9IRF9NQUlfU01QX05fU0hJRlQJCQk4 CisjIGRlZmluZSBWQzRfSERfTUFJX1NNUF9NX01BU0sJCQlWQzRfTUFTSyg3LCAwKQorIyBkZWZp bmUgVkM0X0hEX01BSV9TTVBfTV9TSElGVAkJCTAKIAogI2RlZmluZSBWQzRfSERfVklEX0NUTAkJ CQkweDAzOAogIyBkZWZpbmUgVkM0X0hEX1ZJRF9DVExfRU5BQkxFCQkJQklUKDMxKQotLSAKMi4x MS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmkt ZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK