From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bruno =?UTF-8?B?UHLDqW1vbnQ=?= Subject: [PATCH 2/2 v2] x86, ia64: Merge common vga fixup code Date: Wed, 25 Jun 2014 00:58:35 +0200 Message-ID: <20140625005835.0c6b7ed6@neptune.home> References: <20140514224339.7f8be3a9@neptune.home> <20140527234255.GJ11907@google.com> <20140602201650.35f0e936@neptune.home> <20140602201926.4d476818@neptune.home> <20140625005501.7ff7e982@neptune.home> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from hygieia.santi-shop.eu (hygieia.santi-shop.eu [78.46.175.2]) by gabe.freedesktop.org (Postfix) with ESMTP id B91CC6E07C for ; Tue, 24 Jun 2014 15:58:38 -0700 (PDT) In-Reply-To: <20140625005501.7ff7e982@neptune.home> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Bjorn Helgaas Cc: Linux PCI , Anibal Francisco Martinez Cortina , DRI mailing list , Matthew Garrett List-Id: dri-devel@lists.freedesktop.org VGhlIGZpeHVwIGNvZGUgZm9yIFBDSSBWR0EgZGV2aWNlcyBpbiBpYTY0IGFuZCB4ODYgaXMgbW9z dGx5IGlkZW50aWNhbC4KCk1lcmdlIGl0IGludG8gYSBzaW5nbGUgZnVuY3Rpb24gY2FsbGVkIGZy b20gYm90aCBzaWRlcy4KClRoZSBjb21tb24gY29kZSBpcyBtb3ZlZCB0byB2Z2FhcmIuYyB3aGlj aCBtYWtlcyBpbiBkZXBlbmRhbnQgb24KQ09ORklHX1ZHQV9BUkIuCgpUZXN0ZWQtYnk6IEFuaWJh bCBGcmFuY2lzY28gTWFydGluZXogQ29ydGluYSA8bGludXhraWQuemV1ekBnbWFpbC5jb20+CkNj OiBNYXR0aGV3IEdhcnJldHQgPG1hdHRoZXcuZ2FycmV0dEBuZWJ1bGEuY29tPgpTaWduZWQtb2Zm LWJ5OiBCcnVubyBQcsOpbW9udCA8Ym9uYm9uc0BsaW51eC12c2VydmVyLm9yZz4KLS0tCgpDaGFu Z2VzIHNpbmNlIHYxOgogIEFkZGVkIFRlc3RlZC1ieSwgQ2MKCiBhcmNoL2lhNjQvcGNpL2ZpeHVw LmMgICAgfCA3NyArKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KIGFyY2gveDg2L3BjaS9maXh1cC5jICAgICB8IDc2ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS92Z2EvdmdhYXJiLmMgfCA3NSAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBpbmNsdWRlL2xp bnV4L3ZnYWFyYi5oICAgfCAzNyArKysrKysrKysrKysrKysrKysrKysrKwogNCBmaWxlcyBjaGFu Z2VkLCAxMTYgaW5zZXJ0aW9ucygrKSwgMTQ5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Fy Y2gvaWE2NC9wY2kvZml4dXAuYyBiL2FyY2gvaWE2NC9wY2kvZml4dXAuYwppbmRleCA5ZWQ1YmVm Li41ZGYyMmY5IDEwMDY0NAotLS0gYS9hcmNoL2lhNjQvcGNpL2ZpeHVwLmMKKysrIGIvYXJjaC9p YTY0L3BjaS9maXh1cC5jCkBAIC05LDg1ICs5LDE0IEBACiAKICNpbmNsdWRlIDxhc20vbWFjaHZl Yy5oPgogCi0vKgotICogRml4dXAgdG8gbWFyayBib290IEJJT1MgdmlkZW8gc2VsZWN0ZWQgYnkg QklPUyBiZWZvcmUgaXQgY2hhbmdlcwotICoKLSAqIEZyb20gaW5mb3JtYXRpb24gcHJvdmlkZWQg YnkgIkpvbiBTbWlybCIgPGpvbnNtaXJsQGdtYWlsLmNvbT4KLSAqCi0gKiBUaGUgc3RhbmRhcmQg Ym9vdCBST00gc2VxdWVuY2UgZm9yIGFuIHg4NiBtYWNoaW5lIHVzZXMgdGhlIEJJT1MKLSAqIHRv IHNlbGVjdCBhbiBpbml0aWFsIHZpZGVvIGNhcmQgZm9yIGJvb3QgZGlzcGxheS4gVGhpcyBib290 IHZpZGVvCi0gKiBjYXJkIHdpbGwgaGF2ZSBpdCdzIEJJT1MgY29waWVkIHRvIEMwMDAwIGluIHN5 c3RlbSBSQU0uCi0gKiBJT1JFU09VUkNFX1JPTV9TSEFET1cgaXMgdXNlZCB0byBhc3NvY2lhdGUg dGhlIGJvb3QgdmlkZW8KLSAqIGNhcmQgd2l0aCB0aGlzIGNvcHkuIE9uIGxhcHRvcHMgdGhpcyBj b3B5IGhhcyB0byBiZSB1c2VkIHNpbmNlCi0gKiB0aGUgbWFpbiBST00gbWF5IGJlIGNvbXByZXNz ZWQgb3IgY29tYmluZWQgd2l0aCBhbm90aGVyIGltYWdlLgotICogU2VlIHBjaV9tYXBfcm9tKCkg Zm9yIHVzZSBvZiB0aGlzIGZsYWcuIEJlZm9yZSBtYXJraW5nIHRoZSBkZXZpY2UKLSAqIHdpdGgg SU9SRVNPVVJDRV9ST01fU0hBRE9XIGNoZWNrIGlmIGEgdmdhX2RlZmF1bHRfZGV2aWNlIGlzIGFs cmVhZHkgc2V0Ci0gKiBieSBlaXRoZXIgYXJjaCBjZGUgb3IgdmdhLWFyYml0cmF0aW9uLCBpZiBz byBvbmx5IGFwcGx5IHRoZSBmaXh1cCB0byB0aGlzCi0gKiBhbHJlYWR5IGRldGVybWluZWQgcHJp bWFyeSB2aWRlbyBjYXJkLgotICovCi0KLXN0YXRpYyB2b2lkIHBjaV9maXh1cF92aWRlbyhzdHJ1 Y3QgcGNpX2RldiAqcGRldikKK3N0YXRpYyB2b2lkIHBjaV9pYTY0X2ZpeHVwX3ZpZGVvKHN0cnVj dCBwY2lfZGV2ICpwZGV2KQogewotCXN0cnVjdCBwY2lfZGV2ICpicmlkZ2U7Ci0Jc3RydWN0IHBj aV9idXMgKmJ1czsKLQl1MTYgY29uZmlnOwotCiAJaWYgKChzdHJjbXAoaWE2NF9wbGF0Zm9ybV9u YW1lLCAiZGlnIikgIT0gMCkKIAkgICAgJiYgKHN0cmNtcChpYTY0X3BsYXRmb3JtX25hbWUsICJo cHp4MSIpICAhPSAwKSkKIAkJcmV0dXJuOwogCS8qIE1heWJlLCB0aGlzIG1hY2hpbmUgc3VwcG9y dHMgbGVnYWN5IG1lbW9yeSBtYXAuICovCiAKLQlpZiAoIXZnYV9kZWZhdWx0X2RldmljZSgpKSB7 Ci0JCXJlc291cmNlX3NpemVfdCBzdGFydCwgZW5kOwotCQlpbnQgaTsKLQotCQkvKiBEb2VzIGZp cm13YXJlIGZyYW1lYnVmZmVyIGJlbG9uZyB0byB1cz8gKi8KLQkJZm9yIChpPTA7IGkgPCBERVZJ Q0VfQ09VTlRfUkVTT1VSQ0U7IGkrKykgewotCQkJaWYgKCEocGNpX3Jlc291cmNlX2ZsYWdzKHBk ZXYsIGkpICYgSU9SRVNPVVJDRV9NRU0pKQotCQkJCWNvbnRpbnVlOwotCi0JCQlzdGFydCA9IHBj aV9yZXNvdXJjZV9zdGFydChwZGV2LCBpKTsKLQkJCWVuZCAgPSBwY2lfcmVzb3VyY2VfZW5kKHBk ZXYsIGkpOwotCi0JCQlpZiAoIXN0YXJ0IHx8ICFlbmQpCi0JCQkJY29udGludWU7Ci0KLQkJCWlm IChzY3JlZW5faW5mby5sZmJfYmFzZSA+PSBzdGFydCAmJgotCQkJCShzY3JlZW5faW5mby5sZmJf YmFzZSArIHNjcmVlbl9pbmZvLmxmYl9zaXplKSA8IGVuZCkKLQkJCQl2Z2Ffc2V0X2RlZmF1bHRf ZGV2aWNlKHBkZXYpOwotCQl9Ci0JfQotCi0JLyogSXMgVkdBIHJvdXRlZCB0byB1cz8gKi8KLQli dXMgPSBwZGV2LT5idXM7Ci0Jd2hpbGUgKGJ1cykgewotCQlicmlkZ2UgPSBidXMtPnNlbGY7Ci0K LQkJLyoKLQkJICogRnJvbSBpbmZvcm1hdGlvbiBwcm92aWRlZCBieQotCQkgKiAiRGF2aWQgTWls bGVyIiA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLQkJICogVGhlIGJyaWRnZSBjb250cm9sIHJlZ2lz dGVyIGlzIHZhbGlkIGZvciBQQ0kgaGVhZGVyCi0JCSAqIHR5cGUgQlJJREdFLCBvciBDQVJEQlVT LiBIb3N0IHRvIFBDSSBjb250cm9sbGVycyB1c2UKLQkJICogUENJIGhlYWRlciB0eXBlIE5PUk1B TC4KLQkJICovCi0JCWlmIChicmlkZ2UKLQkJICAgICYmKChicmlkZ2UtPmhkcl90eXBlID09IFBD SV9IRUFERVJfVFlQRV9CUklER0UpCi0JCSAgICAgICB8fChicmlkZ2UtPmhkcl90eXBlID09IFBD SV9IRUFERVJfVFlQRV9DQVJEQlVTKSkpIHsKLQkJCXBjaV9yZWFkX2NvbmZpZ193b3JkKGJyaWRn ZSwgUENJX0JSSURHRV9DT05UUk9MLAotCQkJCQkJJmNvbmZpZyk7Ci0JCQlpZiAoIShjb25maWcg JiBQQ0lfQlJJREdFX0NUTF9WR0EpKQotCQkJCXJldHVybjsKLQkJfQotCQlidXMgPSBidXMtPnBh cmVudDsKLQl9Ci0JaWYgKCF2Z2FfZGVmYXVsdF9kZXZpY2UoKSB8fCBwZGV2ID09IHZnYV9kZWZh dWx0X2RldmljZSgpKSB7Ci0JCXBjaV9yZWFkX2NvbmZpZ193b3JkKHBkZXYsIFBDSV9DT01NQU5E LCAmY29uZmlnKTsKLQkJaWYgKGNvbmZpZyAmIChQQ0lfQ09NTUFORF9JTyB8IFBDSV9DT01NQU5E X01FTU9SWSkpIHsKLQkJCXBkZXYtPnJlc291cmNlW1BDSV9ST01fUkVTT1VSQ0VdLmZsYWdzIHw9 IElPUkVTT1VSQ0VfUk9NX1NIQURPVzsKLQkJCWRldl9wcmludGsoS0VSTl9ERUJVRywgJnBkZXYt PmRldiwgIkJvb3QgdmlkZW8gZGV2aWNlXG4iKTsKLQkJCXZnYV9zZXRfZGVmYXVsdF9kZXZpY2Uo cGRldik7Ci0JCX0KLQl9CisJcGNpX2ZpeHVwX3ZpZGVvKHBkZXYpOwogfQogREVDTEFSRV9QQ0lf RklYVVBfQ0xBU1NfRklOQUwoUENJX0FOWV9JRCwgUENJX0FOWV9JRCwKLQkJCQlQQ0lfQ0xBU1Nf RElTUExBWV9WR0EsIDgsIHBjaV9maXh1cF92aWRlbyk7CisJCQkJUENJX0NMQVNTX0RJU1BMQVlf VkdBLCA4LCBwY2lfaWE2NF9maXh1cF92aWRlbyk7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9wY2kv Zml4dXAuYyBiL2FyY2gveDg2L3BjaS9maXh1cC5jCmluZGV4IDcyNDZjZjIuLmI1OTk4NDcgMTAw NjQ0Ci0tLSBhL2FyY2gveDg2L3BjaS9maXh1cC5jCisrKyBiL2FyY2gveDg2L3BjaS9maXh1cC5j CkBAIC0zMDIsODEgKzMwMiw3IEBAIERFQ0xBUkVfUENJX0ZJWFVQX0ZJTkFMKFBDSV9WRU5ET1Jf SURfSU5URUwsCVBDSV9ERVZJQ0VfSURfSU5URUxfTUNIX1BCMSwJcGNpZV9yCiBERUNMQVJFX1BD SV9GSVhVUF9GSU5BTChQQ0lfVkVORE9SX0lEX0lOVEVMLAlQQ0lfREVWSUNFX0lEX0lOVEVMX01D SF9QQywJcGNpZV9yb290cG9ydF9hc3BtX3F1aXJrKTsKIERFQ0xBUkVfUENJX0ZJWFVQX0ZJTkFM KFBDSV9WRU5ET1JfSURfSU5URUwsCVBDSV9ERVZJQ0VfSURfSU5URUxfTUNIX1BDMSwJcGNpZV9y b290cG9ydF9hc3BtX3F1aXJrKTsKIAotLyoKLSAqIEZpeHVwIHRvIG1hcmsgYm9vdCBCSU9TIHZp ZGVvIHNlbGVjdGVkIGJ5IEJJT1MgYmVmb3JlIGl0IGNoYW5nZXMKLSAqCi0gKiBGcm9tIGluZm9y bWF0aW9uIHByb3ZpZGVkIGJ5ICJKb24gU21pcmwiIDxqb25zbWlybEBnbWFpbC5jb20+Ci0gKgot ICogVGhlIHN0YW5kYXJkIGJvb3QgUk9NIHNlcXVlbmNlIGZvciBhbiB4ODYgbWFjaGluZSB1c2Vz IHRoZSBCSU9TCi0gKiB0byBzZWxlY3QgYW4gaW5pdGlhbCB2aWRlbyBjYXJkIGZvciBib290IGRp c3BsYXkuIFRoaXMgYm9vdCB2aWRlbwotICogY2FyZCB3aWxsIGhhdmUgaXQncyBCSU9TIGNvcGll ZCB0byBDMDAwMCBpbiBzeXN0ZW0gUkFNLgotICogSU9SRVNPVVJDRV9ST01fU0hBRE9XIGlzIHVz ZWQgdG8gYXNzb2NpYXRlIHRoZSBib290IHZpZGVvCi0gKiBjYXJkIHdpdGggdGhpcyBjb3B5LiBP biBsYXB0b3BzIHRoaXMgY29weSBoYXMgdG8gYmUgdXNlZCBzaW5jZQotICogdGhlIG1haW4gUk9N IG1heSBiZSBjb21wcmVzc2VkIG9yIGNvbWJpbmVkIHdpdGggYW5vdGhlciBpbWFnZS4KLSAqIFNl ZSBwY2lfbWFwX3JvbSgpIGZvciB1c2Ugb2YgdGhpcyBmbGFnLiBCZWZvcmUgbWFya2luZyB0aGUg ZGV2aWNlCi0gKiB3aXRoIElPUkVTT1VSQ0VfUk9NX1NIQURPVyBjaGVjayBpZiBhIHZnYV9kZWZh dWx0X2RldmljZSBpcyBhbHJlYWR5IHNldAotICogYnkgZWl0aGVyIGFyY2ggY2RlIG9yIHZnYS1h cmJpdHJhdGlvbiwgaWYgc28gb25seSBhcHBseSB0aGUgZml4dXAgdG8gdGhpcwotICogYWxyZWFk eSBkZXRlcm1pbmVkIHByaW1hcnkgdmlkZW8gY2FyZC4KLSAqLwotCi1zdGF0aWMgdm9pZCBwY2lf Zml4dXBfdmlkZW8oc3RydWN0IHBjaV9kZXYgKnBkZXYpCi17Ci0Jc3RydWN0IHBjaV9kZXYgKmJy aWRnZTsKLQlzdHJ1Y3QgcGNpX2J1cyAqYnVzOwotCXUxNiBjb25maWc7Ci0KLQlpZiAoIXZnYV9k ZWZhdWx0X2RldmljZSgpKSB7Ci0JCXJlc291cmNlX3NpemVfdCBzdGFydCwgZW5kOwotCQlpbnQg aTsKLQotCQkvKiBEb2VzIGZpcm13YXJlIGZyYW1lYnVmZmVyIGJlbG9uZyB0byB1cz8gKi8KLQkJ Zm9yIChpPTA7IGkgPCBERVZJQ0VfQ09VTlRfUkVTT1VSQ0U7IGkrKykgewotCQkJaWYgKCEocGNp X3Jlc291cmNlX2ZsYWdzKHBkZXYsIGkpICYgSU9SRVNPVVJDRV9NRU0pKQotCQkJCWNvbnRpbnVl OwotCi0JCQlzdGFydCA9IHBjaV9yZXNvdXJjZV9zdGFydChwZGV2LCBpKTsKLQkJCWVuZCAgPSBw Y2lfcmVzb3VyY2VfZW5kKHBkZXYsIGkpOwotCi0JCQlpZiAoIXN0YXJ0IHx8ICFlbmQpCi0JCQkJ Y29udGludWU7Ci0KLQkJCWlmIChzY3JlZW5faW5mby5sZmJfYmFzZSA+PSBzdGFydCAmJgotCQkJ CShzY3JlZW5faW5mby5sZmJfYmFzZSArIHNjcmVlbl9pbmZvLmxmYl9zaXplKSA8IGVuZCkKLQkJ CQl2Z2Ffc2V0X2RlZmF1bHRfZGV2aWNlKHBkZXYpOwotCQl9Ci0JfQotCi0JLyogSXMgVkdBIHJv dXRlZCB0byB1cz8gKi8KLQlidXMgPSBwZGV2LT5idXM7Ci0Jd2hpbGUgKGJ1cykgewotCQlicmlk Z2UgPSBidXMtPnNlbGY7Ci0KLQkJLyoKLQkJICogRnJvbSBpbmZvcm1hdGlvbiBwcm92aWRlZCBi eQotCQkgKiAiRGF2aWQgTWlsbGVyIiA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLQkJICogVGhlIGJy aWRnZSBjb250cm9sIHJlZ2lzdGVyIGlzIHZhbGlkIGZvciBQQ0kgaGVhZGVyCi0JCSAqIHR5cGUg QlJJREdFLCBvciBDQVJEQlVTLiBIb3N0IHRvIFBDSSBjb250cm9sbGVycyB1c2UKLQkJICogUENJ IGhlYWRlciB0eXBlIE5PUk1BTC4KLQkJICovCi0JCWlmIChicmlkZ2UKLQkJICAgICYmICgoYnJp ZGdlLT5oZHJfdHlwZSA9PSBQQ0lfSEVBREVSX1RZUEVfQlJJREdFKQotCQkgICAgICAgfHwgKGJy aWRnZS0+aGRyX3R5cGUgPT0gUENJX0hFQURFUl9UWVBFX0NBUkRCVVMpKSkgewotCQkJcGNpX3Jl YWRfY29uZmlnX3dvcmQoYnJpZGdlLCBQQ0lfQlJJREdFX0NPTlRST0wsCi0JCQkJCQkmY29uZmln KTsKLQkJCWlmICghKGNvbmZpZyAmIFBDSV9CUklER0VfQ1RMX1ZHQSkpCi0JCQkJcmV0dXJuOwot CQl9Ci0JCWJ1cyA9IGJ1cy0+cGFyZW50OwotCX0KLQlpZiAoIXZnYV9kZWZhdWx0X2RldmljZSgp IHx8IHBkZXYgPT0gdmdhX2RlZmF1bHRfZGV2aWNlKCkpIHsKLQkJcGNpX3JlYWRfY29uZmlnX3dv cmQocGRldiwgUENJX0NPTU1BTkQsICZjb25maWcpOwotCQlpZiAoY29uZmlnICYgKFBDSV9DT01N QU5EX0lPIHwgUENJX0NPTU1BTkRfTUVNT1JZKSkgewotCQkJcGRldi0+cmVzb3VyY2VbUENJX1JP TV9SRVNPVVJDRV0uZmxhZ3MgfD0gSU9SRVNPVVJDRV9ST01fU0hBRE9XOwotCQkJZGV2X3ByaW50 ayhLRVJOX0RFQlVHLCAmcGRldi0+ZGV2LCAiQm9vdCB2aWRlbyBkZXZpY2VcbiIpOwotCQkJdmdh X3NldF9kZWZhdWx0X2RldmljZShwZGV2KTsKLQkJfQotCX0KLX0KKy8qIHBjaV9maXh1cF92aWRl byBzaGFyZWQgaW4gdmdhYXJiLmMgKi8KIERFQ0xBUkVfUENJX0ZJWFVQX0NMQVNTX0ZJTkFMKFBD SV9BTllfSUQsIFBDSV9BTllfSUQsCiAJCQkJUENJX0NMQVNTX0RJU1BMQVlfVkdBLCA4LCBwY2lf Zml4dXBfdmlkZW8pOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS92Z2EvdmdhYXJiLmMgYi9k cml2ZXJzL2dwdS92Z2EvdmdhYXJiLmMKaW5kZXggYWYwMjU5Ny4uZjBmYmRmNiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvdmdhL3ZnYWFyYi5jCisrKyBiL2RyaXZlcnMvZ3B1L3ZnYS92Z2FhcmIu YwpAQCAtMTQ5LDYgKzE0OSw4MSBAQCB2b2lkIHZnYV9zZXRfZGVmYXVsdF9kZXZpY2Uoc3RydWN0 IHBjaV9kZXYgKnBkZXYpCiB9CiAjZW5kaWYKIAorLyoKKyAqIEZpeHVwIHRvIG1hcmsgYm9vdCBC SU9TIHZpZGVvIHNlbGVjdGVkIGJ5IEJJT1MgYmVmb3JlIGl0IGNoYW5nZXMKKyAqCisgKiBGcm9t IGluZm9ybWF0aW9uIHByb3ZpZGVkIGJ5ICJKb24gU21pcmwiIDxqb25zbWlybEBnbWFpbC5jb20+ CisgKgorICogVGhlIHN0YW5kYXJkIGJvb3QgUk9NIHNlcXVlbmNlIGZvciBhbiB4ODYgbWFjaGlu ZSB1c2VzIHRoZSBCSU9TCisgKiB0byBzZWxlY3QgYW4gaW5pdGlhbCB2aWRlbyBjYXJkIGZvciBi b290IGRpc3BsYXkuIFRoaXMgYm9vdCB2aWRlbworICogY2FyZCB3aWxsIGhhdmUgaXQncyBCSU9T IGNvcGllZCB0byBDMDAwMCBpbiBzeXN0ZW0gUkFNLgorICogSU9SRVNPVVJDRV9ST01fU0hBRE9X IGlzIHVzZWQgdG8gYXNzb2NpYXRlIHRoZSBib290IHZpZGVvCisgKiBjYXJkIHdpdGggdGhpcyBj b3B5LiBPbiBsYXB0b3BzIHRoaXMgY29weSBoYXMgdG8gYmUgdXNlZCBzaW5jZQorICogdGhlIG1h aW4gUk9NIG1heSBiZSBjb21wcmVzc2VkIG9yIGNvbWJpbmVkIHdpdGggYW5vdGhlciBpbWFnZS4K KyAqIFNlZSBwY2lfbWFwX3JvbSgpIGZvciB1c2Ugb2YgdGhpcyBmbGFnLiBCZWZvcmUgbWFya2lu ZyB0aGUgZGV2aWNlCisgKiB3aXRoIElPUkVTT1VSQ0VfUk9NX1NIQURPVyBjaGVjayBpZiBhIHZn YV9kZWZhdWx0X2RldmljZSBpcyBhbHJlYWR5IHNldAorICogYnkgZWl0aGVyIGFyY2ggY2RlIG9y IHZnYS1hcmJpdHJhdGlvbiwgaWYgc28gb25seSBhcHBseSB0aGUgZml4dXAgdG8gdGhpcworICog YWxyZWFkeSBkZXRlcm1pbmVkIHByaW1hcnkgdmlkZW8gY2FyZC4KKyAqLworCit2b2lkIHBjaV9m aXh1cF92aWRlbyhzdHJ1Y3QgcGNpX2RldiAqcGRldikKK3sKKwlzdHJ1Y3QgcGNpX2RldiAqYnJp ZGdlOworCXN0cnVjdCBwY2lfYnVzICpidXM7CisJdTE2IGNvbmZpZzsKKworCWlmICghdmdhX2Rl ZmF1bHRfZGV2aWNlKCkpIHsKKwkJcmVzb3VyY2Vfc2l6ZV90IHN0YXJ0LCBlbmQ7CisJCWludCBp OworCisJCWZvciAoaT0wOyBpIDwgREVWSUNFX0NPVU5UX1JFU09VUkNFOyBpKyspIHsKKwkJCWlm ICghKHBjaV9yZXNvdXJjZV9mbGFncyhwZGV2LCBpKSAmIElPUkVTT1VSQ0VfTUVNKSkKKwkJCQlj b250aW51ZTsKKworCQkJc3RhcnQgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGRldiwgaSk7CisJCQll bmQgID0gcGNpX3Jlc291cmNlX2VuZChwZGV2LCBpKTsKKworCQkJaWYgKCFzdGFydCB8fCAhZW5k KQorCQkJCWNvbnRpbnVlOworCisJCQlpZiAoc2NyZWVuX2luZm8ubGZiX2Jhc2UgPj0gc3RhcnQg JiYKKwkJCQkoc2NyZWVuX2luZm8ubGZiX2Jhc2UgKyBzY3JlZW5faW5mby5sZmJfc2l6ZSkgPCBl bmQpCisJCQkJdmdhX3NldF9kZWZhdWx0X2RldmljZShwZGV2KTsKKwkJfQorCX0KKworCS8qIElz IFZHQSByb3V0ZWQgdG8gdXM/ICovCisJYnVzID0gcGRldi0+YnVzOworCXdoaWxlIChidXMpIHsK KwkJYnJpZGdlID0gYnVzLT5zZWxmOworCisJCS8qCisJCSAqIEZyb20gaW5mb3JtYXRpb24gcHJv dmlkZWQgYnkKKwkJICogIkRhdmlkIE1pbGxlciIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+CisJCSAq IFRoZSBicmlkZ2UgY29udHJvbCByZWdpc3RlciBpcyB2YWxpZCBmb3IgUENJIGhlYWRlcgorCQkg KiB0eXBlIEJSSURHRSwgb3IgQ0FSREJVUy4gSG9zdCB0byBQQ0kgY29udHJvbGxlcnMgdXNlCisJ CSAqIFBDSSBoZWFkZXIgdHlwZSBOT1JNQUwuCisJCSAqLworCQlpZiAoYnJpZGdlCisJCSAgICAm JiAoKGJyaWRnZS0+aGRyX3R5cGUgPT0gUENJX0hFQURFUl9UWVBFX0JSSURHRSkKKwkJICAgICAg IHx8IChicmlkZ2UtPmhkcl90eXBlID09IFBDSV9IRUFERVJfVFlQRV9DQVJEQlVTKSkpIHsKKwkJ CXBjaV9yZWFkX2NvbmZpZ193b3JkKGJyaWRnZSwgUENJX0JSSURHRV9DT05UUk9MLAorCQkJCQkJ JmNvbmZpZyk7CisJCQlpZiAoIShjb25maWcgJiBQQ0lfQlJJREdFX0NUTF9WR0EpKQorCQkJCXJl dHVybjsKKwkJfQorCQlidXMgPSBidXMtPnBhcmVudDsKKwl9CisJaWYgKCF2Z2FfZGVmYXVsdF9k ZXZpY2UoKSB8fCBwZGV2ID09IHZnYV9kZWZhdWx0X2RldmljZSgpKSB7CisJCXBjaV9yZWFkX2Nv bmZpZ193b3JkKHBkZXYsIFBDSV9DT01NQU5ELCAmY29uZmlnKTsKKwkJaWYgKGNvbmZpZyAmIChQ Q0lfQ09NTUFORF9JTyB8IFBDSV9DT01NQU5EX01FTU9SWSkpIHsKKwkJCXBkZXYtPnJlc291cmNl W1BDSV9ST01fUkVTT1VSQ0VdLmZsYWdzIHw9IElPUkVTT1VSQ0VfUk9NX1NIQURPVzsKKwkJCWRl dl9wcmludGsoS0VSTl9ERUJVRywgJnBkZXYtPmRldiwgIkJvb3QgdmlkZW8gZGV2aWNlXG4iKTsK KwkJCXZnYV9zZXRfZGVmYXVsdF9kZXZpY2UocGRldik7CisJCX0KKwl9Cit9CisKIHN0YXRpYyBp bmxpbmUgdm9pZCB2Z2FfaXJxX3NldF9zdGF0ZShzdHJ1Y3QgdmdhX2RldmljZSAqdmdhZGV2LCBi b29sIHN0YXRlKQogewogCWlmICh2Z2FkZXYtPmlycV9zZXRfc3RhdGUpCmRpZmYgLS1naXQgYS9p bmNsdWRlL2xpbnV4L3ZnYWFyYi5oIGIvaW5jbHVkZS9saW51eC92Z2FhcmIuaAppbmRleCAyYzAy ZjNhLi42NTE4NDYwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3ZnYWFyYi5oCisrKyBiL2lu Y2x1ZGUvbGludXgvdmdhYXJiLmgKQEAgLTE2Miw2ICsxNjIsNDMgQEAgZXh0ZXJuIHZvaWQgdmdh X3B1dChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdW5zaWduZWQgaW50IHJzcmMpOwogI2RlZmluZSB2 Z2FfcHV0KHBkZXYsIHJzcmMpCiAjZW5kaWYKIAorLyoqCisgKiAgICAgcGNpX2ZpeHVwX3ZpZGVv CisgKgorICogICAgIFRoaXMgY2FuIGJlIGNhbGxlZCBieSBhcmNoIFBDSSB0byBmaXh1cCBib290 IFZHQSB0YWdnaW5nCisgKiAgICAgb2YgVkdBIFBDSSBkZXZpY2VzIChlLmcuIGZvciBYODYsIElB NjQpCisgKgorICogICAgIFRoaXMgY29kZSB3YXMgaW5pdGlhbGx5IHNwcmVhZC9kdXBsaWNhdGVk IGFjcm9zczoKKyAqICAgICAtIFg4NiBQQ0ktZml4dXAKKyAqICAgICAtIElBNjQgUENJLWZpeHVw CisgKiAgICAgLSBFRklfRkIKKyAqCisgKiAgICAgKiBQQ0ktZml4dXAgcGFydDoKKyAqICAgICBG aXh1cCB0byBtYXJrIGJvb3QgQklPUyB2aWRlbyBzZWxlY3RlZCBieSBCSU9TIGJlZm9yZSBpdCBj aGFuZ2VzCisgKgorICogICAgIEZyb20gaW5mb3JtYXRpb24gcHJvdmlkZWQgYnkgIkpvbiBTbWly bCIgPGpvbnNtaXJsQGdtYWlsLmNvbT4KKyAqCisgKiAgICAgVGhlIHN0YW5kYXJkIGJvb3QgUk9N IHNlcXVlbmNlIGZvciBhbiB4ODYgbWFjaGluZSB1c2VzIHRoZSBCSU9TCisgKiAgICAgdG8gc2Vs ZWN0IGFuIGluaXRpYWwgdmlkZW8gY2FyZCBmb3IgYm9vdCBkaXNwbGF5LiBUaGlzIGJvb3Qgdmlk ZW8KKyAqICAgICBjYXJkIHdpbGwgaGF2ZSBpdCdzIEJJT1MgY29waWVkIHRvIEMwMDAwIGluIHN5 c3RlbSBSQU0uCisgKiAgICAgSU9SRVNPVVJDRV9ST01fU0hBRE9XIGlzIHVzZWQgdG8gYXNzb2Np YXRlIHRoZSBib290IHZpZGVvCisgKiAgICAgY2FyZCB3aXRoIHRoaXMgY29weS4gT24gbGFwdG9w cyB0aGlzIGNvcHkgaGFzIHRvIGJlIHVzZWQgc2luY2UKKyAqICAgICB0aGUgbWFpbiBST00gbWF5 IGJlIGNvbXByZXNzZWQgb3IgY29tYmluZWQgd2l0aCBhbm90aGVyIGltYWdlLgorICogICAgIFNl ZSBwY2lfbWFwX3JvbSgpIGZvciB1c2Ugb2YgdGhpcyBmbGFnLiBJT1JFU09VUkNFX1JPTV9TSEFE T1cKKyAqICAgICBpcyBtYXJrZWQgaGVyZSBzaW5jZSB0aGUgYm9vdCB2aWRlbyBkZXZpY2Ugd2ls bCBiZSB0aGUgb25seSBlbmFibGVkCisgKiAgICAgdmlkZW8gZGV2aWNlIGF0IHRoaXMgcG9pbnQu CisgKgorICogICAgICogRUZJX0ZCIHBhcnQ6CisgKiAgICAgU29tZSBFRkktYmFzZWQgc3lzdGVt IChlLmcuIEludGVsLU1hY3MgZnJvbSBBcHBsZSkgZG8gbm90IHNldHVwCisgKiAgICAgc2hhZG93 IFZpZGVvLUJJT1MgYW5kIHRodXMgY2FuIG9ubHkgYmUgZGV0ZWN0ZWQgYnkgZnJhbWVidWZmZXIK KyAqICAgICBJTyBtZW1vcnkgcmFuZ2UuIEZsYWcgdGhlIGNvcnJlc3BvbmRpbmcgR1BVIGFzIGJv b3RfdmdhLgorICovCisKKyNpZiBkZWZpbmVkKENPTkZJR19WR0FfQVJCKQordm9pZCBwY2lfZml4 dXBfdmlkZW8oc3RydWN0IHBjaV9kZXYgKnBkZXYpOworI2Vsc2UKK3N0YXRpYyBpbmxpbmUgdm9p ZCBwY2lfZml4dXBfdmlkZW8oc3RydWN0IHBjaV9kZXYgKnBkZXYpIHsgfQorI2VuZGlmCiAKIC8q KgogICogICAgIHZnYV9kZWZhdWx0X2RldmljZQotLSAKMS44LjUuNQoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApk cmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK