From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Anholt Subject: [PATCH 2/3] drm/vc4: Add HDMI audio support Date: Tue, 7 Feb 2017 13:07:02 -0800 Message-ID: <20170207210703.7082-2-eric@anholt.net> References: <20170207210703.7082-1-eric@anholt.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170207210703.7082-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: Florian Fainelli , David Airlie , dri-devel@lists.freedesktop.org, Mark Brown , Liam Girdwood , Lars-Peter Clausen , Rob Herring , Mark Rutland , devicetree@vger.kernel.org Cc: Stephen Warren , Lee Jones , 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: devicetree@vger.kernel.org VGhlIEhETUkgZW5jb2RlciBJUCBlbWJlZHMgYWxsIG5lZWRlZCBibG9ja3MgdG8gb3V0cHV0IGF1 ZGlvLCB3aXRoIGEKY3VzdG9tIERBSSBjYWxsZWQgTUFJIG1vdmluZyBhdWRpbyBiZXR3ZWVuIHRo ZSB0d28gcGFydHMgb2YgdGhlIEhETUkKY29yZS4gIFRoaXMgZHJpdmVyIG5vdyBleHBvc2VzIGEg c291bmQgY2FyZCB0byBsZXQgdXNlcnMgc3RyZWFtIGF1ZGlvCnRvIHRoZWlyIGRpc3BsYXkuCgpV c2luZyB0aGUgaGRtaS1jb2RlYyBkcml2ZXIgaGFzIGJlZW4gY29uc2lkZXJlZCBoZXJlLCBidXQg TUFJIG1lYW50CmhhdmluZyB0byBzaWduaWZpY2FudGx5IHJld29yayBoZG1pLWNvZGVjLCBhbmQg aXQgd291bGQgaGF2ZSBsZWZ0CmxpdHRsZSBzaGFyZWQgY29kZSB3aXRoIHRoZSBJMlMgbW9kZSBh bnl3YXkuCgpUaGUgZW5jb2RlciByZXF1aXJlcyB0aGF0IHRoZSBhdWRpbyBiZSBTUERJRi1mb3Jt YXR0ZWQgZnJhbWVzIG9ubHksCndoaWNoIGFsc2FsaWIgd2lsbCBmb3JtYXQtY29udmVydCBmb3Ig dXMuCgpUaGlzIHBhdGNoIGlzIHRoZSBjb21iaW5lZCB3b3JrIG9mIEVyaWMgQW5ob2x0IChpbml0 aWFsIHJlZ2lzdGVyIHNldHVwCndpdGggYSBzZXBhcmF0ZSBkbWFlbmdpbmUgZHJpdmVyIGFuZCB1 c2luZyBzaW1wbGUtYXVkaW8tY2FyZCkgYW5kCkJvcmlzIEJyZXppbGxvbiAobW92aW5nIGl0IGFs bCBpbnRvIEhETUksIG1hc3NpdmUgZGVidWcgdG8gZ2V0IGl0CmFjdHVhbGx5IHdvcmtpbmcpLCBh bmQgd2hpY2ggRXJpYyBoYXMgdGhlIHBlcm1pc3Npb24gdG8gcmVsZWFzZS4KClNpZ25lZC1vZmYt Ynk6IEVyaWMgQW5ob2x0IDxlcmljQGFuaG9sdC5uZXQ+Ci0tLQogZHJpdmVycy9ncHUvZHJtL3Zj NC9LY29uZmlnICAgIHwgICA0ICsKIGRyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2hkbWkuYyB8IDQ5 NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogZHJpdmVycy9ncHUv ZHJtL3ZjNC92YzRfcmVncy5oIHwgMTA3ICsrKysrKysrLQogMyBmaWxlcyBjaGFuZ2VkLCA2MDMg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vdmM0L0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vdmM0L0tjb25maWcKaW5kZXggZTE1MTdk MDdjYjdkLi45NzNiNDIwM2MwYjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92YzQvS2Nv bmZpZworKysgYi9kcml2ZXJzL2dwdS9kcm0vdmM0L0tjb25maWcKQEAgLTIsMTEgKzIsMTUgQEAg Y29uZmlnIERSTV9WQzQKIAl0cmlzdGF0ZSAiQnJvYWRjb20gVkM0IEdyYXBoaWNzIgogCWRlcGVu ZHMgb24gQVJDSF9CQ00yODM1IHx8IENPTVBJTEVfVEVTVAogCWRlcGVuZHMgb24gRFJNCisJZGVw ZW5kcyBvbiBTTkQgJiYgU05EX1NPQwogCWRlcGVuZHMgb24gQ09NTU9OX0NMSwogCXNlbGVjdCBE Uk1fS01TX0hFTFBFUgogCXNlbGVjdCBEUk1fS01TX0NNQV9IRUxQRVIKIAlzZWxlY3QgRFJNX0dF TV9DTUFfSEVMUEVSCiAJc2VsZWN0IERSTV9QQU5FTAorCXNlbGVjdCBTTkRfUENNCisJc2VsZWN0 IFNORF9QQ01fRUxECisJc2VsZWN0IFNORF9TT0NfR0VORVJJQ19ETUFFTkdJTkVfUENNCiAJc2Vs ZWN0IERSTV9NSVBJX0RTSQogCWhlbHAKIAkgIENob29zZSB0aGlzIG9wdGlvbiBpZiB5b3UgaGF2 ZSBhIHN5c3RlbSB0aGF0IGhhcyBhIEJyb2FkY29tCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vdmM0L3ZjNF9oZG1pLmMgYi9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9oZG1pLmMKaW5kZXgg OTNkNTk5NGYzYTA0Li41NmMyODUyNTNlZTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92 YzQvdmM0X2hkbWkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9oZG1pLmMKQEAgLTMx LDExICszMSwyNyBAQAogI2luY2x1ZGUgImxpbnV4L2Nsay5oIgogI2luY2x1ZGUgImxpbnV4L2Nv bXBvbmVudC5oIgogI2luY2x1ZGUgImxpbnV4L2kyYy5oIgorI2luY2x1ZGUgImxpbnV4L29mX2Fk ZHJlc3MuaCIKICNpbmNsdWRlICJsaW51eC9vZl9ncGlvLmgiCiAjaW5jbHVkZSAibGludXgvb2Zf cGxhdGZvcm0uaCIKKyNpbmNsdWRlICJsaW51eC9yYXRpb25hbC5oIgorI2luY2x1ZGUgInNvdW5k L2RtYWVuZ2luZV9wY20uaCIKKyNpbmNsdWRlICJzb3VuZC9wY21fZHJtX2VsZC5oIgorI2luY2x1 ZGUgInNvdW5kL3BjbV9wYXJhbXMuaCIKKyNpbmNsdWRlICJzb3VuZC9zb2MuaCIKICNpbmNsdWRl ICJ2YzRfZHJ2LmgiCiAjaW5jbHVkZSAidmM0X3JlZ3MuaCIKIAorLyogSERNSSBhdWRpbyBpbmZv cm1hdGlvbiAqLworc3RydWN0IHZjNF9oZG1pX2F1ZGlvIHsKKwlzdHJ1Y3Qgc25kX3NvY19jYXJk IGNhcmQ7CisJc3RydWN0IHNuZF9zb2NfZGFpX2xpbmsgbGluazsKKwlpbnQgc2FtcGxlcmF0ZTsK KwlpbnQgY2hhbm5lbHM7CisJc3RydWN0IHNuZF9kbWFlbmdpbmVfZGFpX2RtYV9kYXRhIGRtYV9k YXRhOworCXN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtOworfTsKKwogLyogR2Vu ZXJhbCBIRE1JIGhhcmR3YXJlIHN0YXRlLiAqLwogc3RydWN0IHZjNF9oZG1pIHsKIAlzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlICpwZGV2OwpAQCAtNDMsNiArNTksOCBAQCBzdHJ1Y3QgdmM0X2hkbWkg ewogCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKIAlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yOwogCisJc3RydWN0IHZjNF9oZG1pX2F1ZGlvIGF1ZGlvOworCiAJc3RydWN0IGky Y19hZGFwdGVyICpkZGM7CiAJdm9pZCBfX2lvbWVtICpoZG1pY29yZV9yZWdzOwogCXZvaWQgX19p b21lbSAqaGRfcmVnczsKQEAgLTk4LDYgKzExNiwxMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHsK IAlIRE1JX1JFRyhWQzRfSERNSV9TV19SRVNFVF9DT05UUk9MKSwKIAlIRE1JX1JFRyhWQzRfSERN SV9IT1RQTFVHX0lOVCksCiAJSERNSV9SRUcoVkM0X0hETUlfSE9UUExVRyksCisJSERNSV9SRUco VkM0X0hETUlfTUFJX0NIQU5ORUxfTUFQKSwKKwlIRE1JX1JFRyhWQzRfSERNSV9NQUlfQ09ORklH KSwKKwlIRE1JX1JFRyhWQzRfSERNSV9NQUlfRk9STUFUKSwKKwlIRE1JX1JFRyhWQzRfSERNSV9B VURJT19QQUNLRVRfQ09ORklHKSwKIAlIRE1JX1JFRyhWQzRfSERNSV9SQU1fUEFDS0VUX0NPTkZJ RyksCiAJSERNSV9SRUcoVkM0X0hETUlfSE9SWkEpLAogCUhETUlfUkVHKFZDNF9IRE1JX0hPUlpC KSwKQEAgLTEwOCw2ICsxMzAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHsKIAlIRE1JX1JFRyhW QzRfSERNSV9WRVJUQjApLAogCUhETUlfUkVHKFZDNF9IRE1JX1ZFUlRCMSksCiAJSERNSV9SRUco VkM0X0hETUlfVFhfUEhZX1JFU0VUX0NUTCksCisJSERNSV9SRUcoVkM0X0hETUlfVFhfUEhZX0NU TDApLAogfTsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCB7CkBAIC0xMTYsNiArMTM5LDkgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCB7CiB9IGhkX3JlZ3NbXSA9IHsKIAlIRE1JX1JFRyhWQzRfSERfTV9D VEwpLAogCUhETUlfUkVHKFZDNF9IRF9NQUlfQ1RMKSwKKwlIRE1JX1JFRyhWQzRfSERfTUFJX1RI UiksCisJSERNSV9SRUcoVkM0X0hEX01BSV9GTVQpLAorCUhETUlfUkVHKFZDNF9IRF9NQUlfU01Q KSwKIAlIRE1JX1JFRyhWQzRfSERfVklEX0NUTCksCiAJSERNSV9SRUcoVkM0X0hEX0NTQ19DVEwp LAogCUhETUlfUkVHKFZDNF9IRF9GUkFNRV9DT1VOVCksCkBAIC0yMTUsNiArMjQxLDcgQEAgc3Rh dGljIGludCB2YzRfaGRtaV9jb25uZWN0b3JfZ2V0X21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3IpCiAKIAlkcm1fbW9kZV9jb25uZWN0b3JfdXBkYXRlX2VkaWRfcHJvcGVydHko Y29ubmVjdG9yLCBlZGlkKTsKIAlyZXQgPSBkcm1fYWRkX2VkaWRfbW9kZXMoY29ubmVjdG9yLCBl ZGlkKTsKKwlkcm1fZWRpZF90b19lbGQoY29ubmVjdG9yLCBlZGlkKTsKIAogCXJldHVybiByZXQ7 CiB9CkBAIC0zMDAsNyArMzI3LDcgQEAgc3RhdGljIHZvaWQgdmM0X2hkbWlfd3JpdGVfaW5mb2Zy YW1lKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gZW5jb2Rlci0+ZGV2OwogCXN0cnVjdCB2YzRfZGV2ICp2YzQgPSB0b192YzRfZGV2KGRldik7 CiAJdTMyIHBhY2tldF9pZCA9IGZyYW1lLT5hbnkudHlwZSAtIDB4ODA7Ci0JdTMyIHBhY2tldF9y ZWcgPSBWQzRfSERNSV9HQ1BfMCArIFZDNF9IRE1JX1BBQ0tFVF9TVFJJREUgKiBwYWNrZXRfaWQ7 CisJdTMyIHBhY2tldF9yZWcgPSBWQzRfSERNSV9SQU1fUEFDS0VUKHBhY2tldF9pZCk7CiAJdWlu dDhfdCBidWZmZXJbVkM0X0hETUlfUEFDS0VUX1NUUklERV07CiAJc3NpemVfdCBsZW4sIGk7CiAJ aW50IHJldDsKQEAgLTM4MSw2ICs0MDgsMjQgQEAgc3RhdGljIHZvaWQgdmM0X2hkbWlfc2V0X3Nw ZF9pbmZvZnJhbWUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQogCXZjNF9oZG1pX3dyaXRl X2luZm9mcmFtZShlbmNvZGVyLCAmZnJhbWUpOwogfQogCitzdGF0aWMgdm9pZCB2YzRfaGRtaV9z ZXRfYXVkaW9faW5mb2ZyYW1lKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKK3sKKwlzdHJ1 Y3QgZHJtX2RldmljZSAqZHJtID0gZW5jb2Rlci0+ZGV2OworCXN0cnVjdCB2YzRfZGV2ICp2YzQg PSBkcm0tPmRldl9wcml2YXRlOworCXN0cnVjdCB2YzRfaGRtaSAqaGRtaSA9IHZjNC0+aGRtaTsK Kwl1bmlvbiBoZG1pX2luZm9mcmFtZSBmcmFtZTsKKwlpbnQgcmV0OworCisJcmV0ID0gaGRtaV9h dWRpb19pbmZvZnJhbWVfaW5pdCgmZnJhbWUuYXVkaW8pOworCisJZnJhbWUuYXVkaW8uY29kaW5n X3R5cGUgPSBIRE1JX0FVRElPX0NPRElOR19UWVBFX1NUUkVBTTsKKwlmcmFtZS5hdWRpby5zYW1w bGVfZnJlcXVlbmN5ID0gSERNSV9BVURJT19TQU1QTEVfRlJFUVVFTkNZX1NUUkVBTTsKKwlmcmFt ZS5hdWRpby5zYW1wbGVfc2l6ZSA9IEhETUlfQVVESU9fU0FNUExFX1NJWkVfU1RSRUFNOworCWZy YW1lLmF1ZGlvLmNoYW5uZWxzID0gaGRtaS0+YXVkaW8uY2hhbm5lbHM7CisKKwl2YzRfaGRtaV93 cml0ZV9pbmZvZnJhbWUoZW5jb2RlciwgJmZyYW1lKTsKK30KKwogc3RhdGljIHZvaWQgdmM0X2hk bWlfc2V0X2luZm9mcmFtZXMoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQogewogCXZjNF9o ZG1pX3NldF9hdmlfaW5mb2ZyYW1lKGVuY29kZXIpOwpAQCAtNTg5LDYgKzYzNCw0NDcgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9oZWxwZXJfZnVuY3MgdmM0X2hkbWlfZW5jb2Rl cl9oZWxwZXJfZnVuY3MgPSB7CiAJLmVuYWJsZSA9IHZjNF9oZG1pX2VuY29kZXJfZW5hYmxlLAog fTsKIAorLyogSERNSSBhdWRpbyBjb2RlYyBjYWxsYmFja3MgKi8KK3N0YXRpYyB2b2lkIHZjNF9o ZG1pX2F1ZGlvX3NldF9tYWlfY2xvY2soc3RydWN0IHZjNF9oZG1pICpoZG1pKQoreworCXN0cnVj dCBkcm1fZGV2aWNlICpkcm0gPSBoZG1pLT5lbmNvZGVyLT5kZXY7CisJc3RydWN0IHZjNF9kZXYg KnZjNCA9IHRvX3ZjNF9kZXYoZHJtKTsKKwl1MzIgaHNtX2Nsb2NrID0gY2xrX2dldF9yYXRlKGhk bWktPmhzbV9jbG9jayk7CisJdW5zaWduZWQgbG9uZyBuLCBtOworCisJcmF0aW9uYWxfYmVzdF9h cHByb3hpbWF0aW9uKGhzbV9jbG9jaywgaGRtaS0+YXVkaW8uc2FtcGxlcmF0ZSwKKwkJCQkgICAg VkM0X0hEX01BSV9TTVBfTl9NQVNLID4+CisJCQkJICAgIFZDNF9IRF9NQUlfU01QX05fU0hJRlQs CisJCQkJICAgIChWQzRfSERfTUFJX1NNUF9NX01BU0sgPj4KKwkJCQkgICAgIFZDNF9IRF9NQUlf U01QX01fU0hJRlQpICsgMSwKKwkJCQkgICAgJm4sICZtKTsKKworCUhEX1dSSVRFKFZDNF9IRF9N QUlfU01QLAorCQkgVkM0X1NFVF9GSUVMRChuLCBWQzRfSERfTUFJX1NNUF9OKSB8CisJCSBWQzRf U0VUX0ZJRUxEKG0gLSAxLCBWQzRfSERfTUFJX1NNUF9NKSk7Cit9CisKK3N0YXRpYyB2b2lkIHZj NF9oZG1pX3NldF9uX2N0cyhzdHJ1Y3QgdmM0X2hkbWkgKmhkbWkpCit7CisJc3RydWN0IGRybV9l bmNvZGVyICplbmNvZGVyID0gaGRtaS0+ZW5jb2RlcjsKKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMg PSBlbmNvZGVyLT5jcnRjOworCXN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBlbmNvZGVyLT5kZXY7 CisJc3RydWN0IHZjNF9kZXYgKnZjNCA9IHRvX3ZjNF9kZXYoZHJtKTsKKwljb25zdCBzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9ICZjcnRjLT5zdGF0ZS0+YWRqdXN0ZWRfbW9kZTsKKwl1 MzIgc2FtcGxlcmF0ZSA9IGhkbWktPmF1ZGlvLnNhbXBsZXJhdGU7CisJdTMyIG4sIGN0czsKKwl1 NjQgdG1wOworCisJbiA9IDEyOCAqIHNhbXBsZXJhdGUgLyAxMDAwOworCXRtcCA9ICh1NjQpKG1v ZGUtPmNsb2NrICogMTAwMCkgKiBuOworCWRvX2Rpdih0bXAsIDEyOCAqIHNhbXBsZXJhdGUpOwor CWN0cyA9IHRtcDsKKworCUhETUlfV1JJVEUoVkM0X0hETUlfQ1JQX0NGRywKKwkJICAgVkM0X0hE TUlfQ1JQX0NGR19FWFRFUk5BTF9DVFNfRU4gfAorCQkgICBWQzRfU0VUX0ZJRUxEKG4sIFZDNF9I RE1JX0NSUF9DRkdfTikpOworCisJLyoKKwkgKiBXZSBjb3VsZCBnZXQgc2xpZ2h0bHkgbW9yZSBh Y2N1cmF0ZSBjbG9ja3MgaW4gc29tZSBjYXNlcyBieQorCSAqIHByb3ZpZGluZyBhIENUU18xIHZh bHVlLiAgVGhlIHR3byBDVFMgdmFsdWVzIGFyZSBhbHRlcm5hdGVkCisJICogYmV0d2VlbiBiYXNl ZCBvbiB0aGUgcGVyaW9kIGZpZWxkcworCSAqLworCUhETUlfV1JJVEUoVkM0X0hETUlfQ1RTXzAs IGN0cyk7CisJSERNSV9XUklURShWQzRfSERNSV9DVFNfMSwgY3RzKTsKK30KKworc3RhdGljIGlu bGluZSBzdHJ1Y3QgdmM0X2hkbWkgKmRhaV90b19oZG1pKHN0cnVjdCBzbmRfc29jX2RhaSAqZGFp KQoreworCXN0cnVjdCBzbmRfc29jX2NhcmQgKmNhcmQgPSBzbmRfc29jX2RhaV9nZXRfZHJ2ZGF0 YShkYWkpOworCisJcmV0dXJuIHNuZF9zb2NfY2FyZF9nZXRfZHJ2ZGF0YShjYXJkKTsKK30KKwor c3RhdGljIGludCB2YzRfaGRtaV9hdWRpb19zdGFydHVwKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVh bSAqc3Vic3RyZWFtLAorCQkJCSAgc3RydWN0IHNuZF9zb2NfZGFpICpkYWkpCit7CisJc3RydWN0 IHZjNF9oZG1pICpoZG1pID0gZGFpX3RvX2hkbWkoZGFpKTsKKwlzdHJ1Y3QgZHJtX2VuY29kZXIg KmVuY29kZXIgPSBoZG1pLT5lbmNvZGVyOworCXN0cnVjdCB2YzRfZGV2ICp2YzQgPSB0b192YzRf ZGV2KGVuY29kZXItPmRldik7CisJaW50IHJldDsKKworCWlmIChoZG1pLT5hdWRpby5zdWJzdHJl YW0gJiYgaGRtaS0+YXVkaW8uc3Vic3RyZWFtICE9IHN1YnN0cmVhbSkKKwkJcmV0dXJuIC1FSU5W QUw7CisKKwloZG1pLT5hdWRpby5zdWJzdHJlYW0gPSBzdWJzdHJlYW07CisKKwkvKgorCSAqIElm IHRoZSBIRE1JIGVuY29kZXIgaGFzbid0IHByb2JlZCwgb3IgdGhlIGVuY29kZXIgaXMKKwkgKiBj dXJyZW50bHkgaW4gRFZJIG1vZGUsIHRyZWF0IHRoZSBjb2RlYyBkYWkgYXMgbWlzc2luZy4KKwkg Ki8KKwlpZiAoIWVuY29kZXItPmNydGMgfHwgIShIRE1JX1JFQUQoVkM0X0hETUlfUkFNX1BBQ0tF VF9DT05GSUcpICYKKwkJCQlWQzRfSERNSV9SQU1fUEFDS0VUX0VOQUJMRSkpCisJCXJldHVybiAt RU5PREVWOworCisJcmV0ID0gc25kX3BjbV9od19jb25zdHJhaW50X2VsZChzdWJzdHJlYW0tPnJ1 bnRpbWUsCisJCQkJCWhkbWktPmNvbm5lY3Rvci0+ZWxkKTsKKwlpZiAocmV0KQorCQlyZXR1cm4g cmV0OworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgdmM0X2hkbWlfYXVkaW9fc2V0X2Zt dChzdHJ1Y3Qgc25kX3NvY19kYWkgKmRhaSwgdW5zaWduZWQgaW50IGZtdCkKK3sKKwlyZXR1cm4g MDsKK30KKworc3RhdGljIHZvaWQgdmM0X2hkbWlfYXVkaW9fcmVzZXQoc3RydWN0IHZjNF9oZG1p ICpoZG1pKQoreworCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciA9IGhkbWktPmVuY29kZXI7 CisJc3RydWN0IGRybV9kZXZpY2UgKmRybSA9IGVuY29kZXItPmRldjsKKwlzdHJ1Y3QgZGV2aWNl ICpkZXYgPSAmaGRtaS0+cGRldi0+ZGV2OworCXN0cnVjdCB2YzRfZGV2ICp2YzQgPSB0b192YzRf ZGV2KGRybSk7CisJaW50IHJldDsKKworCXJldCA9IHZjNF9oZG1pX3N0b3BfcGFja2V0KGVuY29k ZXIsIEhETUlfSU5GT0ZSQU1FX1RZUEVfQVVESU8pOworCWlmIChyZXQpCisJCWRldl9lcnIoZGV2 LCAiRmFpbGVkIHRvIHN0b3AgYXVkaW8gaW5mb2ZyYW1lOiAlZFxuIiwgcmV0KTsKKworCUhEX1dS SVRFKFZDNF9IRF9NQUlfQ1RMLCBWQzRfSERfTUFJX0NUTF9SRVNFVCk7CisJSERfV1JJVEUoVkM0 X0hEX01BSV9DVEwsIFZDNF9IRF9NQUlfQ1RMX0VSUk9SRik7CisJSERfV1JJVEUoVkM0X0hEX01B SV9DVEwsIFZDNF9IRF9NQUlfQ1RMX0ZMVVNIKTsKK30KKworc3RhdGljIHZvaWQgdmM0X2hkbWlf YXVkaW9fc2h1dGRvd24oc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0sCisJCQkJ ICAgIHN0cnVjdCBzbmRfc29jX2RhaSAqZGFpKQoreworCXN0cnVjdCB2YzRfaGRtaSAqaGRtaSA9 IGRhaV90b19oZG1pKGRhaSk7CisKKwlpZiAoc3Vic3RyZWFtICE9IGhkbWktPmF1ZGlvLnN1YnN0 cmVhbSkKKwkJcmV0dXJuOworCisJdmM0X2hkbWlfYXVkaW9fcmVzZXQoaGRtaSk7CisKKwloZG1p LT5hdWRpby5zdWJzdHJlYW0gPSBOVUxMOworfQorCisvKiBIRE1JIGF1ZGlvIGNvZGVjIGNhbGxi YWNrcyAqLworc3RhdGljIGludCB2YzRfaGRtaV9hdWRpb19od19wYXJhbXMoc3RydWN0IHNuZF9w Y21fc3Vic3RyZWFtICpzdWJzdHJlYW0sCisJCQkJICAgIHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFt cyAqcGFyYW1zLAorCQkJCSAgICBzdHJ1Y3Qgc25kX3NvY19kYWkgKmRhaSkKK3sKKwlzdHJ1Y3Qg dmM0X2hkbWkgKmhkbWkgPSBkYWlfdG9faGRtaShkYWkpOworCXN0cnVjdCBkcm1fZW5jb2RlciAq ZW5jb2RlciA9IGhkbWktPmVuY29kZXI7CisJc3RydWN0IGRybV9kZXZpY2UgKmRybSA9IGVuY29k ZXItPmRldjsKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmaGRtaS0+cGRldi0+ZGV2OworCXN0cnVj dCB2YzRfZGV2ICp2YzQgPSB0b192YzRfZGV2KGRybSk7CisJdTMyIGF1ZGlvX3BhY2tldF9jb25m aWcsIGNoYW5uZWxfbWFzazsKKwl1MzIgY2hhbm5lbF9tYXAsIGk7CisKKwlpZiAoc3Vic3RyZWFt ICE9IGhkbWktPmF1ZGlvLnN1YnN0cmVhbSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlkZXZfZGJn KGRldiwgIiVzOiAldSBIeiwgJWQgYml0LCAlZCBjaGFubmVsc1xuIiwgX19mdW5jX18sCisJCXBh cmFtc19yYXRlKHBhcmFtcyksIHBhcmFtc193aWR0aChwYXJhbXMpLAorCQlwYXJhbXNfY2hhbm5l bHMocGFyYW1zKSk7CisKKwloZG1pLT5hdWRpby5jaGFubmVscyA9IHBhcmFtc19jaGFubmVscyhw YXJhbXMpOworCWhkbWktPmF1ZGlvLnNhbXBsZXJhdGUgPSBwYXJhbXNfcmF0ZShwYXJhbXMpOwor CisJSERfV1JJVEUoVkM0X0hEX01BSV9DVEwsCisJCSBWQzRfSERfTUFJX0NUTF9SRVNFVCB8CisJ CSBWQzRfSERfTUFJX0NUTF9GTFVTSCB8CisJCSBWQzRfSERfTUFJX0NUTF9ETEFURSB8CisJCSBW QzRfSERfTUFJX0NUTF9FUlJPUkUgfAorCQkgVkM0X0hEX01BSV9DVExfRVJST1JGKTsKKworCXZj NF9oZG1pX2F1ZGlvX3NldF9tYWlfY2xvY2soaGRtaSk7CisKKwlhdWRpb19wYWNrZXRfY29uZmln ID0KKwkJVkM0X0hETUlfQVVESU9fUEFDS0VUX1pFUk9fREFUQV9PTl9TQU1QTEVfRkxBVCB8CisJ CVZDNF9IRE1JX0FVRElPX1BBQ0tFVF9aRVJPX0RBVEFfT05fSU5BQ1RJVkVfQ0hBTk5FTFMgfAor CQlWQzRfU0VUX0ZJRUxEKDB4ZiwgVkM0X0hETUlfQVVESU9fUEFDS0VUX0JfRlJBTUVfSURFTlRJ RklFUik7CisKKwljaGFubmVsX21hc2sgPSBHRU5NQVNLKGhkbWktPmF1ZGlvLmNoYW5uZWxzIC0g MSwgMCk7CisJYXVkaW9fcGFja2V0X2NvbmZpZyB8PSBWQzRfU0VUX0ZJRUxEKGNoYW5uZWxfbWFz aywKKwkJCQkJICAgICBWQzRfSERNSV9BVURJT19QQUNLRVRfQ0VBX01BU0spOworCisJLyogU2V0 IHRoZSBNQUkgdGhyZXNob2xkLiAgVGhpcyBsb2dpYyBtaW1pY3MgdGhlIGZpcm13YXJlJ3MuICov CisJaWYgKGhkbWktPmF1ZGlvLnNhbXBsZXJhdGUgPiA5NjAwMCkgeworCQlIRF9XUklURShWQzRf SERfTUFJX1RIUiwKKwkJCSBWQzRfU0VUX0ZJRUxEKDB4MTIsIFZDNF9IRF9NQUlfVEhSX0RSRVFI SUdIKSB8CisJCQkgVkM0X1NFVF9GSUVMRCgweDEyLCBWQzRfSERfTUFJX1RIUl9EUkVRTE9XKSk7 CisJfSBlbHNlIGlmIChoZG1pLT5hdWRpby5zYW1wbGVyYXRlID4gNDgwMDApIHsKKwkJSERfV1JJ VEUoVkM0X0hEX01BSV9USFIsCisJCQkgVkM0X1NFVF9GSUVMRCgweDE0LCBWQzRfSERfTUFJX1RI Ul9EUkVRSElHSCkgfAorCQkJIFZDNF9TRVRfRklFTEQoMHgxMiwgVkM0X0hEX01BSV9USFJfRFJF UUxPVykpOworCX0gZWxzZSB7CisJCUhEX1dSSVRFKFZDNF9IRF9NQUlfVEhSLAorCQkJIFZDNF9T RVRfRklFTEQoMHgxMCwgVkM0X0hEX01BSV9USFJfUEFOSUNISUdIKSB8CisJCQkgVkM0X1NFVF9G SUVMRCgweDEwLCBWQzRfSERfTUFJX1RIUl9QQU5JQ0xPVykgfAorCQkJIFZDNF9TRVRfRklFTEQo MHgxMCwgVkM0X0hEX01BSV9USFJfRFJFUUhJR0gpIHwKKwkJCSBWQzRfU0VUX0ZJRUxEKDB4MTAs IFZDNF9IRF9NQUlfVEhSX0RSRVFMT1cpKTsKKwl9CisKKwlIRE1JX1dSSVRFKFZDNF9IRE1JX01B SV9DT05GSUcsCisJCSAgIFZDNF9IRE1JX01BSV9DT05GSUdfQklUX1JFVkVSU0UgfAorCQkgICBW QzRfU0VUX0ZJRUxEKGNoYW5uZWxfbWFzaywgVkM0X0hETUlfTUFJX0NIQU5ORUxfTUFTSykpOwor CisJY2hhbm5lbF9tYXAgPSAwOworCWZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHsKKwkJaWYgKGNo YW5uZWxfbWFzayAmIEJJVChpKSkKKwkJCWNoYW5uZWxfbWFwIHw9IGkgPDwgKDMgKiBpKTsKKwl9 CisKKwlIRE1JX1dSSVRFKFZDNF9IRE1JX01BSV9DSEFOTkVMX01BUCwgY2hhbm5lbF9tYXApOwor CUhETUlfV1JJVEUoVkM0X0hETUlfQVVESU9fUEFDS0VUX0NPTkZJRywgYXVkaW9fcGFja2V0X2Nv bmZpZyk7CisJdmM0X2hkbWlfc2V0X25fY3RzKGhkbWkpOworCisJcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyBpbnQgdmM0X2hkbWlfYXVkaW9fdHJpZ2dlcihzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0g KnN1YnN0cmVhbSwgaW50IGNtZCwKKwkJCQkgIHN0cnVjdCBzbmRfc29jX2RhaSAqZGFpKQorewor CXN0cnVjdCB2YzRfaGRtaSAqaGRtaSA9IGRhaV90b19oZG1pKGRhaSk7CisJc3RydWN0IGRybV9l bmNvZGVyICplbmNvZGVyID0gaGRtaS0+ZW5jb2RlcjsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJt ID0gZW5jb2Rlci0+ZGV2OworCXN0cnVjdCB2YzRfZGV2ICp2YzQgPSB0b192YzRfZGV2KGRybSk7 CisKKwlzd2l0Y2ggKGNtZCkgeworCWNhc2UgU05EUlZfUENNX1RSSUdHRVJfU1RBUlQ6CisJCXZj NF9oZG1pX3NldF9hdWRpb19pbmZvZnJhbWUoZW5jb2Rlcik7CisJCUhETUlfV1JJVEUoVkM0X0hE TUlfVFhfUEhZX0NUTDAsCisJCQkgICBIRE1JX1JFQUQoVkM0X0hETUlfVFhfUEhZX0NUTDApICYK KwkJCSAgIH5WQzRfSERNSV9UWF9QSFlfUk5HX1BXUkROKTsKKwkJSERfV1JJVEUoVkM0X0hEX01B SV9DVEwsCisJCQkgVkM0X1NFVF9GSUVMRChoZG1pLT5hdWRpby5jaGFubmVscywKKwkJCQkgICAg ICAgVkM0X0hEX01BSV9DVExfQ0hOVU0pIHwKKwkJCSBWQzRfSERfTUFJX0NUTF9FTkFCTEUpOwor CQlicmVhazsKKwljYXNlIFNORFJWX1BDTV9UUklHR0VSX1NUT1A6CisJCUhEX1dSSVRFKFZDNF9I RF9NQUlfQ1RMLAorCQkJIFZDNF9IRF9NQUlfQ1RMX0RMQVRFIHwKKwkJCSBWQzRfSERfTUFJX0NU TF9FUlJPUkUgfAorCQkJIFZDNF9IRF9NQUlfQ1RMX0VSUk9SRik7CisJCUhETUlfV1JJVEUoVkM0 X0hETUlfVFhfUEhZX0NUTDAsCisJCQkgICBIRE1JX1JFQUQoVkM0X0hETUlfVFhfUEhZX0NUTDAp IHwKKwkJCSAgIFZDNF9IRE1JX1RYX1BIWV9STkdfUFdSRE4pOworCQlicmVhazsKKwlkZWZhdWx0 OgorCQlicmVhazsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlubGluZSBzdHJ1Y3Qg dmM0X2hkbWkgKgorc25kX2NvbXBvbmVudF90b19oZG1pKHN0cnVjdCBzbmRfc29jX2NvbXBvbmVu dCAqY29tcG9uZW50KQoreworCXN0cnVjdCBzbmRfc29jX2NhcmQgKmNhcmQgPSBzbmRfc29jX2Nv bXBvbmVudF9nZXRfZHJ2ZGF0YShjb21wb25lbnQpOworCisJcmV0dXJuIHNuZF9zb2NfY2FyZF9n ZXRfZHJ2ZGF0YShjYXJkKTsKK30KKworc3RhdGljIGludCB2YzRfaGRtaV9hdWRpb19lbGRfY3Rs X2luZm8oc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsCisJCQkJICAgICAgIHN0cnVjdCBz bmRfY3RsX2VsZW1faW5mbyAqdWluZm8pCit7CisJc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpj b21wb25lbnQgPSBzbmRfa2NvbnRyb2xfY2hpcChrY29udHJvbCk7CisJc3RydWN0IHZjNF9oZG1p ICpoZG1pID0gc25kX2NvbXBvbmVudF90b19oZG1pKGNvbXBvbmVudCk7CisKKwl1aW5mby0+dHlw ZSA9IFNORFJWX0NUTF9FTEVNX1RZUEVfQllURVM7CisJdWluZm8tPmNvdW50ID0gc2l6ZW9mKGhk bWktPmNvbm5lY3Rvci0+ZWxkKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHZjNF9o ZG1pX2F1ZGlvX2VsZF9jdGxfZ2V0KHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLAorCQkJ CSAgICAgIHN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgKnVjb250cm9sKQoreworCXN0cnVjdCBz bmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50ID0gc25kX2tjb250cm9sX2NoaXAoa2NvbnRyb2wp OworCXN0cnVjdCB2YzRfaGRtaSAqaGRtaSA9IHNuZF9jb21wb25lbnRfdG9faGRtaShjb21wb25l bnQpOworCisJbWVtY3B5KHVjb250cm9sLT52YWx1ZS5ieXRlcy5kYXRhLCBoZG1pLT5jb25uZWN0 b3ItPmVsZCwKKwkgICAgICAgc2l6ZW9mKGhkbWktPmNvbm5lY3Rvci0+ZWxkKSk7CisKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IHZjNF9oZG1p X2F1ZGlvX2NvbnRyb2xzW10gPSB7CisJeworCQkuYWNjZXNzID0gU05EUlZfQ1RMX0VMRU1fQUND RVNTX1JFQUQgfAorCQkJICBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfVk9MQVRJTEUsCisJCS5pZmFj ZSA9IFNORFJWX0NUTF9FTEVNX0lGQUNFX1BDTSwKKwkJLm5hbWUgPSAiRUxEIiwKKwkJLmluZm8g PSB2YzRfaGRtaV9hdWRpb19lbGRfY3RsX2luZm8sCisJCS5nZXQgPSB2YzRfaGRtaV9hdWRpb19l bGRfY3RsX2dldCwKKwl9LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfc29jX2RhcG1f d2lkZ2V0IHZjNF9oZG1pX2F1ZGlvX3dpZGdldHNbXSA9IHsKKwlTTkRfU09DX0RBUE1fT1VUUFVU KCJUWCIpLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfc29jX2RhcG1fcm91dGUgdmM0 X2hkbWlfYXVkaW9fcm91dGVzW10gPSB7CisJeyAiVFgiLCBOVUxMLCAiUGxheWJhY2siIH0sCit9 OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9zb2NfY29kZWNfZHJpdmVyIHZjNF9oZG1pX2F1 ZGlvX2NvZGVjX2RydiA9IHsKKwkuY29tcG9uZW50X2RyaXZlciA9IHsKKwkJLmNvbnRyb2xzID0g dmM0X2hkbWlfYXVkaW9fY29udHJvbHMsCisJCS5udW1fY29udHJvbHMgPSBBUlJBWV9TSVpFKHZj NF9oZG1pX2F1ZGlvX2NvbnRyb2xzKSwKKwkJLmRhcG1fd2lkZ2V0cyA9IHZjNF9oZG1pX2F1ZGlv X3dpZGdldHMsCisJCS5udW1fZGFwbV93aWRnZXRzID0gQVJSQVlfU0laRSh2YzRfaGRtaV9hdWRp b193aWRnZXRzKSwKKwkJLmRhcG1fcm91dGVzID0gdmM0X2hkbWlfYXVkaW9fcm91dGVzLAorCQku bnVtX2RhcG1fcm91dGVzID0gQVJSQVlfU0laRSh2YzRfaGRtaV9hdWRpb19yb3V0ZXMpLAorCX0s Cit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9zb2NfZGFpX29wcyB2YzRfaGRtaV9hdWRp b19kYWlfb3BzID0geworCS5zdGFydHVwID0gdmM0X2hkbWlfYXVkaW9fc3RhcnR1cCwKKwkuc2h1 dGRvd24gPSB2YzRfaGRtaV9hdWRpb19zaHV0ZG93biwKKwkuaHdfcGFyYW1zID0gdmM0X2hkbWlf YXVkaW9faHdfcGFyYW1zLAorCS5zZXRfZm10ID0gdmM0X2hkbWlfYXVkaW9fc2V0X2ZtdCwKKwku dHJpZ2dlciA9IHZjNF9oZG1pX2F1ZGlvX3RyaWdnZXIsCit9OworCitzdGF0aWMgc3RydWN0IHNu ZF9zb2NfZGFpX2RyaXZlciB2YzRfaGRtaV9hdWRpb19jb2RlY19kYWlfZHJ2ID0geworCS5uYW1l ID0gInZjNC1oZG1pLWhpZmkiLAorCS5wbGF5YmFjayA9IHsKKwkJLnN0cmVhbV9uYW1lID0gIlBs YXliYWNrIiwKKwkJLmNoYW5uZWxzX21pbiA9IDIsCisJCS5jaGFubmVsc19tYXggPSA4LAorCQku cmF0ZXMgPSBTTkRSVl9QQ01fUkFURV8zMjAwMCB8IFNORFJWX1BDTV9SQVRFXzQ0MTAwIHwKKwkJ CSBTTkRSVl9QQ01fUkFURV80ODAwMCB8IFNORFJWX1BDTV9SQVRFXzg4MjAwIHwKKwkJCSBTTkRS Vl9QQ01fUkFURV85NjAwMCB8IFNORFJWX1BDTV9SQVRFXzE3NjQwMCB8CisJCQkgU05EUlZfUENN X1JBVEVfMTkyMDAwLAorCQkuZm9ybWF0cyA9IFNORFJWX1BDTV9GTVRCSVRfSUVDOTU4X1NVQkZS QU1FX0xFLAorCX0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9zb2NfY29tcG9uZW50 X2RyaXZlciB2YzRfaGRtaV9hdWRpb19jcHVfZGFpX2NvbXAgPSB7CisJLm5hbWUgPSAidmM0LWhk bWktY3B1LWRhaS1jb21wb25lbnQiLAorfTsKKworc3RhdGljIGludCB2YzRfaGRtaV9hdWRpb19j cHVfZGFpX3Byb2JlKHN0cnVjdCBzbmRfc29jX2RhaSAqZGFpKQoreworCXN0cnVjdCB2YzRfaGRt aSAqaGRtaSA9IGRhaV90b19oZG1pKGRhaSk7CisKKwlzbmRfc29jX2RhaV9pbml0X2RtYV9kYXRh KGRhaSwgJmhkbWktPmF1ZGlvLmRtYV9kYXRhLCBOVUxMKTsKKworCXJldHVybiAwOworfQorCitz dGF0aWMgc3RydWN0IHNuZF9zb2NfZGFpX2RyaXZlciB2YzRfaGRtaV9hdWRpb19jcHVfZGFpX2Ry diA9IHsKKwkubmFtZSA9ICJ2YzQtaGRtaS1jcHUtZGFpIiwKKwkucHJvYmUgID0gdmM0X2hkbWlf YXVkaW9fY3B1X2RhaV9wcm9iZSwKKwkucGxheWJhY2sgPSB7CisJCS5zdHJlYW1fbmFtZSA9ICJQ bGF5YmFjayIsCisJCS5jaGFubmVsc19taW4gPSAxLAorCQkuY2hhbm5lbHNfbWF4ID0gOCwKKwkJ LnJhdGVzID0gU05EUlZfUENNX1JBVEVfMzIwMDAgfCBTTkRSVl9QQ01fUkFURV80NDEwMCB8CisJ CQkgU05EUlZfUENNX1JBVEVfNDgwMDAgfCBTTkRSVl9QQ01fUkFURV84ODIwMCB8CisJCQkgU05E UlZfUENNX1JBVEVfOTYwMDAgfCBTTkRSVl9QQ01fUkFURV8xNzY0MDAgfAorCQkJIFNORFJWX1BD TV9SQVRFXzE5MjAwMCwKKwkJLmZvcm1hdHMgPSBTTkRSVl9QQ01fRk1UQklUX0lFQzk1OF9TVUJG UkFNRV9MRSwKKwl9LAorCS5vcHMgPSAmdmM0X2hkbWlfYXVkaW9fZGFpX29wcywKK307CisKK3N0 YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2RtYWVuZ2luZV9wY21fY29uZmlnIHBjbV9jb25mID0gewor CS5jaGFuX25hbWVzW1NORFJWX1BDTV9TVFJFQU1fUExBWUJBQ0tdID0gImF1ZGlvLXJ4IiwKKwku cHJlcGFyZV9zbGF2ZV9jb25maWcgPSBzbmRfZG1hZW5naW5lX3BjbV9wcmVwYXJlX3NsYXZlX2Nv bmZpZywKK307CisKK3N0YXRpYyBpbnQgdmM0X2hkbWlfYXVkaW9faW5pdChzdHJ1Y3QgdmM0X2hk bWkgKmhkbWkpCit7CisJc3RydWN0IHNuZF9zb2NfZGFpX2xpbmsgKmRhaV9saW5rID0gJmhkbWkt PmF1ZGlvLmxpbms7CisJc3RydWN0IHNuZF9zb2NfY2FyZCAqY2FyZCA9ICZoZG1pLT5hdWRpby5j YXJkOworCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZoZG1pLT5wZGV2LT5kZXY7CisJY29uc3QgX19i ZTMyICphZGRyOworCWludCByZXQ7CisKKwlpZiAoIW9mX2ZpbmRfcHJvcGVydHkoZGV2LT5vZl9u b2RlLCAiZG1hcyIsIE5VTEwpKSB7CisJCWRldl93YXJuKGRldiwKKwkJCSAiJ2RtYXMnIERUIHBy b3BlcnR5IGlzIG1pc3NpbmcsIG5vIEhETUkgYXVkaW9cbiIpOworCQlyZXR1cm4gMDsKKwl9CisK KwkvKgorCSAqIEdldCB0aGUgcGh5c2ljYWwgYWRkcmVzcyBvZiBWQzRfSERfTUFJX0RBVEEuIFdl IG5lZWQgdG8gcmV0cmlldmUKKwkgKiB0aGUgYnVzIGFkZHJlc3Mgc3BlY2lmaWVkIGluIHRoZSBE VCwgYmVjYXVzZSB0aGUgcGh5c2ljYWwgYWRkcmVzcworCSAqICh0aGUgb25lIHJldHVybmVkIGJ5 IHBsYXRmb3JtX2dldF9yZXNvdXJjZSgpKSBpcyBub3QgYXBwcm9wcmlhdGUKKwkgKiBmb3IgRE1B IHRyYW5zZmVycy4KKwkgKiBUaGlzIFZDL01NVSBzaG91bGQgcHJvYmFibHkgYmUgZXhwb3NlZCB0 byBhdm9pZCB0aGlzIGtpbmQgb2YgaGFja3MuCisJICovCisJYWRkciA9IG9mX2dldF9hZGRyZXNz KGRldi0+b2Zfbm9kZSwgMSwgTlVMTCwgTlVMTCk7CisJaGRtaS0+YXVkaW8uZG1hX2RhdGEuYWRk ciA9IGJlMzJfdG9fY3B1cChhZGRyKSArIFZDNF9IRF9NQUlfREFUQTsKKwloZG1pLT5hdWRpby5k bWFfZGF0YS5hZGRyX3dpZHRoID0gRE1BX1NMQVZFX0JVU1dJRFRIXzRfQllURVM7CisJaGRtaS0+ YXVkaW8uZG1hX2RhdGEubWF4YnVyc3QgPSAyOworCisJcmV0ID0gZGV2bV9zbmRfZG1hZW5naW5l X3BjbV9yZWdpc3RlcihkZXYsICZwY21fY29uZiwgMCk7CisJaWYgKHJldCkgeworCQlkZXZfZXJy KGRldiwgIkNvdWxkIG5vdCByZWdpc3RlciBQQ00gY29tcG9uZW50OiAlZFxuIiwgcmV0KTsKKwkJ cmV0dXJuIHJldDsKKwl9CisKKwlyZXQgPSBkZXZtX3NuZF9zb2NfcmVnaXN0ZXJfY29tcG9uZW50 KGRldiwgJnZjNF9oZG1pX2F1ZGlvX2NwdV9kYWlfY29tcCwKKwkJCQkJICAgICAgJnZjNF9oZG1p X2F1ZGlvX2NwdV9kYWlfZHJ2LCAxKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoZGV2LCAiQ291 bGQgbm90IHJlZ2lzdGVyIENQVSBEQUk6ICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0K KworCS8qIHJlZ2lzdGVyIGNvZGVjIGFuZCBjb2RlYyBkYWkgKi8KKwlyZXQgPSBzbmRfc29jX3Jl Z2lzdGVyX2NvZGVjKGRldiwgJnZjNF9oZG1pX2F1ZGlvX2NvZGVjX2RydiwKKwkJCQkgICAgICZ2 YzRfaGRtaV9hdWRpb19jb2RlY19kYWlfZHJ2LCAxKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIo ZGV2LCAiQ291bGQgbm90IHJlZ2lzdGVyIGNvZGVjOiAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJl dDsKKwl9CisKKwlkYWlfbGluay0+bmFtZSA9ICJNQUkiOworCWRhaV9saW5rLT5zdHJlYW1fbmFt ZSA9ICJNQUkgUENNIjsKKwlkYWlfbGluay0+Y29kZWNfZGFpX25hbWUgPSB2YzRfaGRtaV9hdWRp b19jb2RlY19kYWlfZHJ2Lm5hbWU7CisJZGFpX2xpbmstPmNwdV9kYWlfbmFtZSA9IGRldl9uYW1l KGRldik7CisJZGFpX2xpbmstPmNvZGVjX25hbWUgPSBkZXZfbmFtZShkZXYpOworCWRhaV9saW5r LT5wbGF0Zm9ybV9uYW1lID0gZGV2X25hbWUoZGV2KTsKKworCWNhcmQtPmRhaV9saW5rID0gZGFp X2xpbms7CisJY2FyZC0+bnVtX2xpbmtzID0gMTsKKwljYXJkLT5uYW1lID0gInZjNC1oZG1pLWF1 ZGlvIjsKKwljYXJkLT5kZXYgPSBkZXY7CisKKwkvKgorCSAqIEJlIGNhcmVmdWwsIHNuZF9zb2Nf cmVnaXN0ZXJfY2FyZCgpIGNhbGxzIGRldl9zZXRfZHJ2ZGF0YSgpIGFuZAorCSAqIHN0b3JlcyBh IHBvaW50ZXIgdG8gdGhlIHNuZCBjYXJkIG9iamVjdCBpbiBkZXYtPmRyaXZlcl9kYXRhLiBUaGlz CisJICogbWVhbnMgd2UgY2Fubm90IHVzZSBpdCBmb3Igc29tZXRoaW5nIGVsc2UuIFRoZSBoZG1p IGJhY2stcG9pbnRlciBpcworCSAqIG5vdyBzdG9yZWQgaW4gY2FyZC0+ZHJ2ZGF0YSBhbmQgc2hv dWxkIGJlIHJldHJpZXZlZCB3aXRoCisJICogc25kX3NvY19jYXJkX2dldF9kcnZkYXRhKCkgaWYg bmVlZGVkLgorCSAqLworCXNuZF9zb2NfY2FyZF9zZXRfZHJ2ZGF0YShjYXJkLCBoZG1pKTsKKwly ZXQgPSBkZXZtX3NuZF9zb2NfcmVnaXN0ZXJfY2FyZChkZXYsIGNhcmQpOworCWlmIChyZXQpIHsK KwkJZGV2X2VycihkZXYsICJDb3VsZCBub3QgcmVnaXN0ZXIgc291bmQgY2FyZDogJWRcbiIsIHJl dCk7CisJCWdvdG8gdW5yZWdpc3Rlcl9jb2RlYzsKKwl9CisKKwlyZXR1cm4gMDsKKwordW5yZWdp c3Rlcl9jb2RlYzoKKwlzbmRfc29jX3VucmVnaXN0ZXJfY29kZWMoZGV2KTsKKworCXJldHVybiBy ZXQ7Cit9CisKK3N0YXRpYyB2b2lkIHZjNF9oZG1pX2F1ZGlvX2NsZWFudXAoc3RydWN0IHZjNF9o ZG1pICpoZG1pKQoreworCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZoZG1pLT5wZGV2LT5kZXY7CisK KwkvKgorCSAqIElmIGRydmRhdGEgaXMgbm90IHNldCB0aGlzIG1lYW5zIHRoZSBhdWRpbyBjYXJk IHdhcyBub3QKKwkgKiByZWdpc3RlcmVkLCBqdXN0IHNraXAgY29kZWMgdW5yZWdpc3RyYXRpb24g aW4gdGhpcyBjYXNlLgorCSAqLworCWlmIChkZXZfZ2V0X2RydmRhdGEoZGV2KSkKKwkJc25kX3Nv Y191bnJlZ2lzdGVyX2NvZGVjKGRldik7Cit9CisKIHN0YXRpYyBpbnQgdmM0X2hkbWlfYmluZChz dHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1hc3Rlciwgdm9pZCAqZGF0YSkKIHsK IAlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gdG9fcGxhdGZvcm1fZGV2aWNlKGRldik7 CkBAIC03MjAsNiArMTIwNiwxMCBAQCBzdGF0aWMgaW50IHZjNF9oZG1pX2JpbmQoc3RydWN0IGRl dmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsIHZvaWQgKmRhdGEpCiAJCWdvdG8gZXJy X2Rlc3Ryb3lfZW5jb2RlcjsKIAl9CiAKKwlyZXQgPSB2YzRfaGRtaV9hdWRpb19pbml0KGhkbWkp OworCWlmIChyZXQpCisJCWdvdG8gZXJyX2Rlc3Ryb3lfZW5jb2RlcjsKKwogCXJldHVybiAwOwog CiBlcnJfZGVzdHJveV9lbmNvZGVyOgpAQCAtNzQxLDYgKzEyMzEsOCBAQCBzdGF0aWMgdm9pZCB2 YzRfaGRtaV91bmJpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIs CiAJc3RydWN0IHZjNF9kZXYgKnZjNCA9IGRybS0+ZGV2X3ByaXZhdGU7CiAJc3RydWN0IHZjNF9o ZG1pICpoZG1pID0gdmM0LT5oZG1pOwogCisJdmM0X2hkbWlfYXVkaW9fY2xlYW51cChoZG1pKTsK KwogCXZjNF9oZG1pX2Nvbm5lY3Rvcl9kZXN0cm95KGhkbWktPmNvbm5lY3Rvcik7CiAJdmM0X2hk bWlfZW5jb2Rlcl9kZXN0cm95KGhkbWktPmVuY29kZXIpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vdmM0L3ZjNF9yZWdzLmggYi9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9yZWdzLmgK aW5kZXggMzg1NDA1YTJkZjA1Li45MzIwOTM5MzYxNzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS92YzQvdmM0X3JlZ3MuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9yZWdzLmgK QEAgLTQ0NiwxMSArNDQ2LDYyIEBACiAjZGVmaW5lIFZDNF9IRE1JX0hPVFBMVUcJCQkweDAwYwog IyBkZWZpbmUgVkM0X0hETUlfSE9UUExVR19DT05ORUNURUQJCUJJVCgwKQogCisvKiAzIGJpdHMg cGVyIGZpZWxkLCB3aGVyZSBlYWNoIGZpZWxkIG1hcHMgZnJvbSB0aGF0IGNvcnJlc3BvbmRpbmcg TUFJCisgKiBidXMgY2hhbm5lbCB0byB0aGUgZ2l2ZW4gSERNSSBjaGFubmVsLgorICovCisjZGVm aW5lIFZDNF9IRE1JX01BSV9DSEFOTkVMX01BUAkJMHgwOTAKKworI2RlZmluZSBWQzRfSERNSV9N QUlfQ09ORklHCQkJMHgwOTQKKyMgZGVmaW5lIFZDNF9IRE1JX01BSV9DT05GSUdfRk9STUFUX1JF VkVSU0UJCUJJVCgyNykKKyMgZGVmaW5lIFZDNF9IRE1JX01BSV9DT05GSUdfQklUX1JFVkVSU0UJ CUJJVCgyNikKKyMgZGVmaW5lIFZDNF9IRE1JX01BSV9DSEFOTkVMX01BU0tfTUFTSwkJCVZDNF9N QVNLKDE1LCAwKQorIyBkZWZpbmUgVkM0X0hETUlfTUFJX0NIQU5ORUxfTUFTS19TSElGVAkJMAor CisvKiBMYXN0IHJlY2VpdmVkIGZvcm1hdCB3b3JkIG9uIHRoZSBNQUkgYnVzLiAqLworI2RlZmlu ZSBWQzRfSERNSV9NQUlfRk9STUFUCQkJMHgwOTgKKworI2RlZmluZSBWQzRfSERNSV9BVURJT19Q QUNLRVRfQ09ORklHCQkweDA5YworIyBkZWZpbmUgVkM0X0hETUlfQVVESU9fUEFDS0VUX1pFUk9f REFUQV9PTl9TQU1QTEVfRkxBVAkJQklUKDI5KQorIyBkZWZpbmUgVkM0X0hETUlfQVVESU9fUEFD S0VUX1pFUk9fREFUQV9PTl9JTkFDVElWRV9DSEFOTkVMUwlCSVQoMjQpCisjIGRlZmluZSBWQzRf SERNSV9BVURJT19QQUNLRVRfRk9SQ0VfU0FNUExFX1BSRVNFTlQJCUJJVCgxOSkKKyMgZGVmaW5l IFZDNF9IRE1JX0FVRElPX1BBQ0tFVF9GT1JDRV9CX0ZSQU1FCQkJQklUKDE4KQorIyBkZWZpbmUg VkM0X0hETUlfQVVESU9fUEFDS0VUX0JfRlJBTUVfSURFTlRJRklFUl9NQVNLCQlWQzRfTUFTSygx MywgMTApCisjIGRlZmluZSBWQzRfSERNSV9BVURJT19QQUNLRVRfQl9GUkFNRV9JREVOVElGSUVS X1NISUZUCQkxMAorLyogSWYgc2V0LCB0aGVuIG11bHRpY2hhbm5lbCwgb3RoZXJ3aXNlIDIgY2hh bm5lbC4gKi8KKyMgZGVmaW5lIFZDNF9IRE1JX0FVRElPX1BBQ0tFVF9BVURJT19MQVlPVVQJCQlC SVQoOSkKKy8qIElmIHNldCwgdGhlbiBBVURJT19MQVlPVVQgb3ZlcnJpZGVzIGF1ZGlvX2NlYV9t YXNrICovCisjIGRlZmluZSBWQzRfSERNSV9BVURJT19QQUNLRVRfRk9SQ0VfQVVESU9fTEFZT1VU CQlCSVQoOCkKKyMgZGVmaW5lIFZDNF9IRE1JX0FVRElPX1BBQ0tFVF9DRUFfTUFTS19NQVNLCQkJ VkM0X01BU0soNywgMCkKKyMgZGVmaW5lIFZDNF9IRE1JX0FVRElPX1BBQ0tFVF9DRUFfTUFTS19T SElGVAkJCTAKKwogI2RlZmluZSBWQzRfSERNSV9SQU1fUEFDS0VUX0NPTkZJRwkJMHgwYTAKICMg ZGVmaW5lIFZDNF9IRE1JX1JBTV9QQUNLRVRfRU5BQkxFCQlCSVQoMTYpCiAKICNkZWZpbmUgVkM0 X0hETUlfUkFNX1BBQ0tFVF9TVEFUVVMJCTB4MGE0CiAKKyNkZWZpbmUgVkM0X0hETUlfQ1JQX0NG RwkJCTB4MGE4CisvKiBXaGVuIHNldCwgdGhlIENUU19QRVJJT0QgY291bnRzIGJhc2VkIG9uIE1B SSBidXMgc3luYyBwdWxzZSBpbnN0ZWFkCisgKiBvZiBwaXhlbCBjbG9jay4KKyAqLworIyBkZWZp bmUgVkM0X0hETUlfQ1JQX1VTRV9NQUlfQlVTX1NZTkNfRk9SX0NUUwlCSVQoMjYpCisvKiBXaGVu IHNldCwgbm8gQ1JQIHBhY2tldHMgd2lsbCBiZSBzZW50LiAqLworIyBkZWZpbmUgVkM0X0hETUlf Q1JQX0NGR19ESVNBQkxFCQlCSVQoMjUpCisvKiBJZiBzZXQsIGdlbmVyYXRlcyBDVFMgdmFsdWVz IGJhc2VkIG9uIE4sIGF1ZGlvIGNsb2NrLCBhbmQgdmlkZW8KKyAqIGNsb2NrLiAgTiBtdXN0IGJl IGRpdmlzaWJsZSBieSAxMjguCisgKi8KKyMgZGVmaW5lIFZDNF9IRE1JX0NSUF9DRkdfRVhURVJO QUxfQ1RTX0VOCUJJVCgyNCkKKyMgZGVmaW5lIFZDNF9IRE1JX0NSUF9DRkdfTl9NQVNLCQlWQzRf TUFTSygxOSwgMCkKKyMgZGVmaW5lIFZDNF9IRE1JX0NSUF9DRkdfTl9TSElGVAkJMAorCisvKiAy MC1iaXQgZmllbGRzIGNvbnRhaW5pbmcgQ1RTIHZhbHVlcyB0byBiZSB0cmFuc21pdHRlZCBpZiAh RVhURVJOQUxfQ1RTX0VOICovCisjZGVmaW5lIFZDNF9IRE1JX0NUU18wCQkJCTB4MGFjCisjZGVm aW5lIFZDNF9IRE1JX0NUU18xCQkJCTB4MGIwCisvKiAyMC1iaXQgZmllbGRzIGNvbnRhaW5pbmcg bnVtYmVyIG9mIGNsb2NrcyB0byBzZW5kIENUUzAvMSBiZWZvcmUKKyAqIHN3aXRjaGluZyB0byB0 aGUgb3RoZXIgb25lLgorICovCisjZGVmaW5lIFZDNF9IRE1JX0NUU19QRVJJT0RfMAkJCTB4MGI0 CisjZGVmaW5lIFZDNF9IRE1JX0NUU19QRVJJT0RfMQkJCTB4MGI4CisKICNkZWZpbmUgVkM0X0hE TUlfSE9SWkEJCQkJMHgwYzQKICMgZGVmaW5lIFZDNF9IRE1JX0hPUlpBX1ZQT1MJCQlCSVQoMTQp CiAjIGRlZmluZSBWQzRfSERNSV9IT1JaQV9IUE9TCQkJQklUKDEzKQpAQCAtNTEyLDcgKzU2Mywx MSBAQAogCiAjZGVmaW5lIFZDNF9IRE1JX1RYX1BIWV9SRVNFVF9DVEwJCTB4MmMwCiAKLSNkZWZp bmUgVkM0X0hETUlfR0NQXzAJCQkJMHg0MDAKKyNkZWZpbmUgVkM0X0hETUlfVFhfUEhZX0NUTDAJ CQkweDJjNAorIyBkZWZpbmUgVkM0X0hETUlfVFhfUEhZX1JOR19QV1JETgkJQklUKDI1KQorCisj ZGVmaW5lIFZDNF9IRE1JX0dDUCh4KQkJCQkoMHg0MDAgKyAoKHgpICogMHg0KSkKKyNkZWZpbmUg VkM0X0hETUlfUkFNX1BBQ0tFVCh4KQkJCSgweDQwMCArICgoeCkgKiAweDI0KSkKICNkZWZpbmUg VkM0X0hETUlfUEFDS0VUX1NUUklERQkJCTB4MjQKIAogI2RlZmluZSBWQzRfSERfTV9DVEwJCQkJ MHgwMGMKQEAgLTUyMiw2ICs1NzcsNTYgQEAKICMgZGVmaW5lIFZDNF9IRF9NX0VOQUJMRQkJCUJJ VCgwKQogCiAjZGVmaW5lIFZDNF9IRF9NQUlfQ1RMCQkJCTB4MDE0CisvKiBTZXQgd2hlbiBhdWRp byBzdHJlYW0gaXMgcmVjZWl2ZWQgYXQgYSBzbG93ZXIgcmF0ZSB0aGFuIHRoZQorICogc2FtcGxp bmcgcGVyaW9kLCBzbyBNQUkgZmlmbyBnb2VzIGVtcHR5LiAgV3JpdGUgMSB0byBjbGVhci4KKyAq LworIyBkZWZpbmUgVkM0X0hEX01BSV9DVExfRExBVEUJCQlCSVQoMTUpCisjIGRlZmluZSBWQzRf SERfTUFJX0NUTF9CVVNZCQkJQklUKDE0KQorIyBkZWZpbmUgVkM0X0hEX01BSV9DVExfQ0hBTElH TgkJCUJJVCgxMykKKyMgZGVmaW5lIFZDNF9IRF9NQUlfQ1RMX1dIT0xTTVAJCQlCSVQoMTIpCisj IGRlZmluZSBWQzRfSERfTUFJX0NUTF9GVUxMCQkJQklUKDExKQorIyBkZWZpbmUgVkM0X0hEX01B SV9DVExfRU1QVFkJCQlCSVQoMTApCisjIGRlZmluZSBWQzRfSERfTUFJX0NUTF9GTFVTSAkJCUJJ VCg5KQorLyogSWYgc2V0LCBNQUkgYnVzIGdlbmVyYXRlcyBTUERJRiAoYml0IDMxKSBwYXJpdHkg aW5zdGVhZCBvZiBwYXNzaW5nCisgKiB0aHJvdWdoLgorICovCisjIGRlZmluZSBWQzRfSERfTUFJ X0NUTF9QQVJFTgkJCUJJVCg4KQorIyBkZWZpbmUgVkM0X0hEX01BSV9DVExfQ0hOVU1fTUFTSwkJ VkM0X01BU0soNywgNCkKKyMgZGVmaW5lIFZDNF9IRF9NQUlfQ1RMX0NITlVNX1NISUZUCQk0Cisj IGRlZmluZSBWQzRfSERfTUFJX0NUTF9FTkFCTEUJCQlCSVQoMykKKy8qIFVuZGVyZmxvdyBlcnJv ciBzdGF0dXMgYml0LCB3cml0ZSAxIHRvIGNsZWFyLiAqLworIyBkZWZpbmUgVkM0X0hEX01BSV9D VExfRVJST1JFCQkJQklUKDIpCisvKiBPdmVyZmxvdyBlcnJvciBzdGF0dXMgYml0LCB3cml0ZSAx IHRvIGNsZWFyLiAqLworIyBkZWZpbmUgVkM0X0hEX01BSV9DVExfRVJST1JGCQkJQklUKDEpCisv KiBTaW5nbGUtc2hvdCByZXNldCBiaXQuICBSZWFkIHZhbHVlIGlzIHVuZGVmaW5lZC4gKi8KKyMg ZGVmaW5lIFZDNF9IRF9NQUlfQ1RMX1JFU0VUCQkJQklUKDApCisKKyNkZWZpbmUgVkM0X0hEX01B SV9USFIJCQkJMHgwMTgKKyMgZGVmaW5lIFZDNF9IRF9NQUlfVEhSX1BBTklDSElHSF9NQVNLCQlW QzRfTUFTSygyOSwgMjQpCisjIGRlZmluZSBWQzRfSERfTUFJX1RIUl9QQU5JQ0hJR0hfU0hJRlQJ CTI0CisjIGRlZmluZSBWQzRfSERfTUFJX1RIUl9QQU5JQ0xPV19NQVNLCQlWQzRfTUFTSygyMSwg MTYpCisjIGRlZmluZSBWQzRfSERfTUFJX1RIUl9QQU5JQ0xPV19TSElGVAkJMTYKKyMgZGVmaW5l IFZDNF9IRF9NQUlfVEhSX0RSRVFISUdIX01BU0sJCVZDNF9NQVNLKDEzLCA4KQorIyBkZWZpbmUg VkM0X0hEX01BSV9USFJfRFJFUUhJR0hfU0hJRlQJCTgKKyMgZGVmaW5lIFZDNF9IRF9NQUlfVEhS X0RSRVFMT1dfTUFTSwkJVkM0X01BU0soNSwgMCkKKyMgZGVmaW5lIFZDNF9IRF9NQUlfVEhSX0RS RVFMT1dfU0hJRlQJCTAKKworLyogRm9ybWF0IGhlYWRlciB0byBiZSBwbGFjZWQgb24gdGhlIE1B SSBkYXRhLiBVbnVzZWQuICovCisjZGVmaW5lIFZDNF9IRF9NQUlfRk1UCQkJCTB4MDFjCisKKy8q IFJlZ2lzdGVyIGZvciBETUFpbmcgaW4gYXVkaW8gZGF0YSB0byBiZSB0cmFuc3BvcnRlZCBvdmVy IHRoZSBNQUkKKyAqIGJ1cyB0byB0aGUgRmFsY29uIGNvcmUuCisgKi8KKyNkZWZpbmUgVkM0X0hE X01BSV9EQVRBCQkJCTB4MDIwCisKKy8qIERpdmlkZXIgZnJvbSBIRE1JIEhTTSBjbG9jayB0byBN QUkgc2VyaWFsIGNsb2NrLiAgU2FtcGxpbmcgcGVyaW9kCisgKiBjb252ZXJnZXMgdG8gTiAvIChN ICsgMSkgY3ljbGVzLgorICovCisjZGVmaW5lIFZDNF9IRF9NQUlfU01QCQkJCTB4MDJjCisjIGRl ZmluZSBWQzRfSERfTUFJX1NNUF9OX01BU0sJCQlWQzRfTUFTSygzMSwgOCkKKyMgZGVmaW5lIFZD NF9IRF9NQUlfU01QX05fU0hJRlQJCQk4CisjIGRlZmluZSBWQzRfSERfTUFJX1NNUF9NX01BU0sJ CQlWQzRfTUFTSyg3LCAwKQorIyBkZWZpbmUgVkM0X0hEX01BSV9TTVBfTV9TSElGVAkJCTAKIAog I2RlZmluZSBWQzRfSERfVklEX0NUTAkJCQkweDAzOAogIyBkZWZpbmUgVkM0X0hEX1ZJRF9DVExf RU5BQkxFCQkJQklUKDMxKQotLSAKMi4xMS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9kcmktZGV2ZWwK