From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bruno =?UTF-8?B?UHLDqW1vbnQ=?= Subject: [RFC patch v3] x86: Improve boot_vga/vga_default_device() for EFI Date: Tue, 18 Mar 2014 18:05:19 +0100 Message-ID: <20140318180519.102f7988@neptune.home> References: <20131125205441.5046e0cb@neptune.home> <20131130145222.292c3f9f@neptune.home> <20131218194655.044563d2@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 11A526E55A for ; Tue, 18 Mar 2014 10:05:23 -0700 (PDT) In-Reply-To: <20131218194655.044563d2@neptune.home> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: Matthew Garrett , matt.fleming@intel.com, Linux PCI , "H. Peter Anvin" , Peter Jones , Bjorn Helgaas List-Id: dri-devel@lists.freedesktop.org V2l0aCBjb21taXQgYjRhYTAxNjMwNTZiNmM3MDAyOWI2ZTg2MTljZTA3YzI3NDM1MWY0MiBNYXR0 aGV3IEdhcnJldAppbnRyb2R1Y2VkIGEgZWZpZmIgdmdhX2RlZmF1bHRfZGV2aWNlKCkgc28gdGhh dCBFRkkgc3lzdGVtcyB0aGF0IGRvIG5vdApsb2FkIHNoYWRvdyBWQklPUyBvciBzZXR1cCBWR0Eg Z2V0IHByb3BlciB2YWx1ZSBmb3IgYm9vdF92Z2EgUENJIHN5c2ZzCmF0dHJpYnV0ZSBvbiB0aGUg Y29ycmVzcG9uZGluZyBQQ0kgZGV2aWNlLgoKWG9yZyBpcyByZWZ1c2luZyB0byBkZXRlY3QgZGV2 aWNlcyB3aGVuIGJvb3RfdmdhPTAgd2hpY2ggaXMgdGhlIGNhc2Ugb24Kc29tZSBFRkkgc3lzdGVt IChlLmcuIE1hY0Jvb2tBaXIyLDEpLiBYb3JnIGRldGVjdHMgdGhlIEdQVSBhbmQgZmluZHMKdGhl IGRyaSBkZXZpY2UgYnV0IHRoZW4gYmFpbHMgb3V0IHdpdGggIm5vIGRldmljZXMgZGV0ZWN0ZWQi LgoKV2l0aCBpbnRyb2R1Y3Rpb24gb2Ygc3lzZmIvc2ltcGxlZmIvc2ltcGxlZHJtIGVmaWZiIGlz IGdldHRpbmcgb2Jzb2xldGUKd2hpbGUgaGF2aW5nIG5hdGl2ZSBkcml2ZXJzIGZvciB0aGUgR1BV IGFsc28gbWFrZXMgc2VsZWN0aW5nCnN5c2ZiL2VmaWZiIG9wdGlvbmFsLgoKUmVtb3ZlIHRoZSBl ZmlmYiBpbXBsZW1lbnRhdGlvbiBvZiB2Z2FfZGVmYXVsdF9kZXZpY2UoKSBhbmQgaW5pdGlhbGl6 ZQp2Z2FhcmIncyB2Z2FfZGVmYXVsdF9kZXZpY2UoKSB3aXRoIHRoZSBQQ0kgR1BVIHRoYXQgbWF0 Y2hlcyBib290CnNjcmVlbl9pbmZvIGluIHBjaV9maXh1cF92aWRlbygpIFt4ODYgYW5kIGlhNjQg cGNpX2ZpeHVwX3ZpZGVvIG1lcmdlZAppbnRvIGNvbW1vbiBmdW5jdGlvbiBpbiB2Z2FhcmIuY10u CgpPdGhlciBhcmNoaXRlY3R1cmVzIHdpdGggUENJIEdQVSBtaWdodCBuZWVkIGEgc2ltaWxhciBm aXh1cC4KCk5vdGU6IElmIENPTkZJR19WR0FfQVJCIGlzIHVuc2V0IHZnYV9kZWZhdWx0X2Rldmlj ZSgpIGlzIG9ubHkgYXZhaWxhYmxlCiAgICAgIGFzIGEgc3R1YiB0aGF0IHJldHVybnMgTlVMTCwg bWFraW5nIHRoaXMgYWRqdXN0bWVudCBpbnN1ZmZpY2llbnQuCiAgICAgIEluIGFkZGl0aW9uLCB3 aXRoIHRoZSBtZXJnZSBvZiB4ODYvaWE2NCBmaXh1cCBjb2RlLCB0aGlzIHdvdWxkCiAgICAgIGFs c28gcmVzdWx0IGluIGRpc2FibGVkIGZpeHVwLgogICAgICBVbnNldHRpbmcgQ09ORklHX1ZHQV9B UkIgcmVxdWlyZXMgQ09ORklHX0VYUEVSVD15IHRob3VnaC4KClNpZ25lZC1vZmYtYnk6IEJydW5v IFByw6ltb250IDxib25ib25zQGxpbnV4LXZzZXJ2ZXIub3JnPgotLS0KIGFyY2gvaWE2NC9wY2kv Zml4dXAuYyAgICAgIHwgNTYgKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS92Z2EuaCB8ICA2IC0tLS0tCiBhcmNoL3g4Ni9w Y2kvZml4dXAuYyAgICAgICB8IDUzICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogZHJpdmVycy9ncHUvdmdhL3ZnYWFyYi5jICAgfCA1NyArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL3ZpZGVvL2VmaWZiLmMgICAg ICB8IDM4IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGluY2x1ZGUvbGludXgvdmdh YXJiLmggICAgIHwgMzcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiA2IGZpbGVzIGNo YW5nZWQsIDk5IGluc2VydGlvbnMoKyksIDE0OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9h cmNoL2lhNjQvcGNpL2ZpeHVwLmMgYi9hcmNoL2lhNjQvcGNpL2ZpeHVwLmMKaW5kZXggNWRjOTY5 ZC4uYjAzNjQyMyAxMDA2NDQKLS0tIGEvYXJjaC9pYTY0L3BjaS9maXh1cC5jCisrKyBiL2FyY2gv aWE2NC9wY2kvZml4dXAuYwpAQCAtNSw2NSArNSwxNyBAQAogCiAjaW5jbHVkZSA8bGludXgvcGNp Lmg+CiAjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L3ZnYWFyYi5oPgog CiAjaW5jbHVkZSA8YXNtL21hY2h2ZWMuaD4KIAotLyoKLSAqIEZpeHVwIHRvIG1hcmsgYm9vdCBC SU9TIHZpZGVvIHNlbGVjdGVkIGJ5IEJJT1MgYmVmb3JlIGl0IGNoYW5nZXMKLSAqCi0gKiBGcm9t IGluZm9ybWF0aW9uIHByb3ZpZGVkIGJ5ICJKb24gU21pcmwiIDxqb25zbWlybEBnbWFpbC5jb20+ Ci0gKgotICogVGhlIHN0YW5kYXJkIGJvb3QgUk9NIHNlcXVlbmNlIGZvciBhbiB4ODYgbWFjaGlu ZSB1c2VzIHRoZSBCSU9TCi0gKiB0byBzZWxlY3QgYW4gaW5pdGlhbCB2aWRlbyBjYXJkIGZvciBi b290IGRpc3BsYXkuIFRoaXMgYm9vdCB2aWRlbwotICogY2FyZCB3aWxsIGhhdmUgaXQncyBCSU9T IGNvcGllZCB0byBDMDAwMCBpbiBzeXN0ZW0gUkFNLgotICogSU9SRVNPVVJDRV9ST01fU0hBRE9X IGlzIHVzZWQgdG8gYXNzb2NpYXRlIHRoZSBib290IHZpZGVvCi0gKiBjYXJkIHdpdGggdGhpcyBj b3B5LiBPbiBsYXB0b3BzIHRoaXMgY29weSBoYXMgdG8gYmUgdXNlZCBzaW5jZQotICogdGhlIG1h aW4gUk9NIG1heSBiZSBjb21wcmVzc2VkIG9yIGNvbWJpbmVkIHdpdGggYW5vdGhlciBpbWFnZS4K LSAqIFNlZSBwY2lfbWFwX3JvbSgpIGZvciB1c2Ugb2YgdGhpcyBmbGFnLiBJT1JFU09VUkNFX1JP TV9TSEFET1cKLSAqIGlzIG1hcmtlZCBoZXJlIHNpbmNlIHRoZSBib290IHZpZGVvIGRldmljZSB3 aWxsIGJlIHRoZSBvbmx5IGVuYWJsZWQKLSAqIHZpZGVvIGRldmljZSBhdCB0aGlzIHBvaW50Lgot ICovCi0KLXN0YXRpYyB2b2lkIHBjaV9maXh1cF92aWRlbyhzdHJ1Y3QgcGNpX2RldiAqcGRldikK K3N0YXRpYyB2b2lkIHBjaV9pYTY0X2ZpeHVwX3ZpZGVvKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQog ewotCXN0cnVjdCBwY2lfZGV2ICpicmlkZ2U7Ci0Jc3RydWN0IHBjaV9idXMgKmJ1czsKLQl1MTYg Y29uZmlnOwotCiAJaWYgKChzdHJjbXAoaWE2NF9wbGF0Zm9ybV9uYW1lLCAiZGlnIikgIT0gMCkK IAkgICAgJiYgKHN0cmNtcChpYTY0X3BsYXRmb3JtX25hbWUsICJocHp4MSIpICAhPSAwKSkKIAkJ cmV0dXJuOwogCS8qIE1heWJlLCB0aGlzIG1hY2hpbmUgc3VwcG9ydHMgbGVnYWN5IG1lbW9yeSBt YXAuICovCiAKLQlpZiAoKHBkZXYtPmNsYXNzID4+IDgpICE9IFBDSV9DTEFTU19ESVNQTEFZX1ZH QSkKLQkJcmV0dXJuOwotCi0JLyogSXMgVkdBIHJvdXRlZCB0byB1cz8gKi8KLQlidXMgPSBwZGV2 LT5idXM7Ci0Jd2hpbGUgKGJ1cykgewotCQlicmlkZ2UgPSBidXMtPnNlbGY7Ci0KLQkJLyoKLQkJ ICogRnJvbSBpbmZvcm1hdGlvbiBwcm92aWRlZCBieQotCQkgKiAiRGF2aWQgTWlsbGVyIiA8ZGF2 ZW1AZGF2ZW1sb2Z0Lm5ldD4KLQkJICogVGhlIGJyaWRnZSBjb250cm9sIHJlZ2lzdGVyIGlzIHZh bGlkIGZvciBQQ0kgaGVhZGVyCi0JCSAqIHR5cGUgQlJJREdFLCBvciBDQVJEQlVTLiBIb3N0IHRv IFBDSSBjb250cm9sbGVycyB1c2UKLQkJICogUENJIGhlYWRlciB0eXBlIE5PUk1BTC4KLQkJICov Ci0JCWlmIChicmlkZ2UKLQkJICAgICYmKChicmlkZ2UtPmhkcl90eXBlID09IFBDSV9IRUFERVJf VFlQRV9CUklER0UpCi0JCSAgICAgICB8fChicmlkZ2UtPmhkcl90eXBlID09IFBDSV9IRUFERVJf VFlQRV9DQVJEQlVTKSkpIHsKLQkJCXBjaV9yZWFkX2NvbmZpZ193b3JkKGJyaWRnZSwgUENJX0JS SURHRV9DT05UUk9MLAotCQkJCQkJJmNvbmZpZyk7Ci0JCQlpZiAoIShjb25maWcgJiBQQ0lfQlJJ REdFX0NUTF9WR0EpKQotCQkJCXJldHVybjsKLQkJfQotCQlidXMgPSBidXMtPnBhcmVudDsKLQl9 Ci0JcGNpX3JlYWRfY29uZmlnX3dvcmQocGRldiwgUENJX0NPTU1BTkQsICZjb25maWcpOwotCWlm IChjb25maWcgJiAoUENJX0NPTU1BTkRfSU8gfCBQQ0lfQ09NTUFORF9NRU1PUlkpKSB7Ci0JCXBk ZXYtPnJlc291cmNlW1BDSV9ST01fUkVTT1VSQ0VdLmZsYWdzIHw9IElPUkVTT1VSQ0VfUk9NX1NI QURPVzsKLQkJZGV2X3ByaW50ayhLRVJOX0RFQlVHLCAmcGRldi0+ZGV2LCAiQm9vdCB2aWRlbyBk ZXZpY2VcbiIpOwotCX0KKwlwY2lfZml4dXBfdmlkZW8ocGRldik7CiB9Ci1ERUNMQVJFX1BDSV9G SVhVUF9IRUFERVIoUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgcGNpX2ZpeHVwX3ZpZGVvKTsKK0RF Q0xBUkVfUENJX0ZJWFVQX0NMQVNTX0hFQURFUihQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCBQQ0lf Q0xBU1NfRElTUExBWV9WR0EsIDgsIHBjaV9pYTY0X2ZpeHVwX3ZpZGVvKTsKZGlmZiAtLWdpdCBh L2FyY2gveDg2L2luY2x1ZGUvYXNtL3ZnYS5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vdmdhLmgK aW5kZXggNDQyODJmYi4uYzRiOWRjMiAxMDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20v dmdhLmgKKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vdmdhLmgKQEAgLTE3LDEwICsxNyw0IEBA CiAjZGVmaW5lIHZnYV9yZWFkYih4KSAoKih4KSkKICNkZWZpbmUgdmdhX3dyaXRlYih4LCB5KSAo Kih5KSA9ICh4KSkKIAotI2lmZGVmIENPTkZJR19GQl9FRkkKLSNkZWZpbmUgX19BUkNIX0hBU19W R0FfREVGQVVMVF9ERVZJQ0UKLWV4dGVybiBzdHJ1Y3QgcGNpX2RldiAqdmdhX2RlZmF1bHRfZGV2 aWNlKHZvaWQpOwotZXh0ZXJuIHZvaWQgdmdhX3NldF9kZWZhdWx0X2RldmljZShzdHJ1Y3QgcGNp X2RldiAqcGRldik7Ci0jZW5kaWYKLQogI2VuZGlmIC8qIF9BU01fWDg2X1ZHQV9IICovCmRpZmYg LS1naXQgYS9hcmNoL3g4Ni9wY2kvZml4dXAuYyBiL2FyY2gveDg2L3BjaS9maXh1cC5jCmluZGV4 IGJjYTllODUuLjIyYTRmYmUgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L3BjaS9maXh1cC5jCisrKyBi L2FyY2gveDg2L3BjaS9maXh1cC5jCkBAIC0zMDIsNTggKzMwMiw3IEBAIERFQ0xBUkVfUENJX0ZJ WFVQX0ZJTkFMKFBDSV9WRU5ET1JfSURfSU5URUwsCVBDSV9ERVZJQ0VfSURfSU5URUxfTUNIX1BC MSwJcGNpZV9yCiBERUNMQVJFX1BDSV9GSVhVUF9GSU5BTChQQ0lfVkVORE9SX0lEX0lOVEVMLAlQ Q0lfREVWSUNFX0lEX0lOVEVMX01DSF9QQywJcGNpZV9yb290cG9ydF9hc3BtX3F1aXJrKTsKIERF Q0xBUkVfUENJX0ZJWFVQX0ZJTkFMKFBDSV9WRU5ET1JfSURfSU5URUwsCVBDSV9ERVZJQ0VfSURf SU5URUxfTUNIX1BDMSwJcGNpZV9yb290cG9ydF9hc3BtX3F1aXJrKTsKIAotLyoKLSAqIEZpeHVw IHRvIG1hcmsgYm9vdCBCSU9TIHZpZGVvIHNlbGVjdGVkIGJ5IEJJT1MgYmVmb3JlIGl0IGNoYW5n ZXMKLSAqCi0gKiBGcm9tIGluZm9ybWF0aW9uIHByb3ZpZGVkIGJ5ICJKb24gU21pcmwiIDxqb25z bWlybEBnbWFpbC5jb20+Ci0gKgotICogVGhlIHN0YW5kYXJkIGJvb3QgUk9NIHNlcXVlbmNlIGZv ciBhbiB4ODYgbWFjaGluZSB1c2VzIHRoZSBCSU9TCi0gKiB0byBzZWxlY3QgYW4gaW5pdGlhbCB2 aWRlbyBjYXJkIGZvciBib290IGRpc3BsYXkuIFRoaXMgYm9vdCB2aWRlbwotICogY2FyZCB3aWxs IGhhdmUgaXQncyBCSU9TIGNvcGllZCB0byBDMDAwMCBpbiBzeXN0ZW0gUkFNLgotICogSU9SRVNP VVJDRV9ST01fU0hBRE9XIGlzIHVzZWQgdG8gYXNzb2NpYXRlIHRoZSBib290IHZpZGVvCi0gKiBj YXJkIHdpdGggdGhpcyBjb3B5LiBPbiBsYXB0b3BzIHRoaXMgY29weSBoYXMgdG8gYmUgdXNlZCBz aW5jZQotICogdGhlIG1haW4gUk9NIG1heSBiZSBjb21wcmVzc2VkIG9yIGNvbWJpbmVkIHdpdGgg YW5vdGhlciBpbWFnZS4KLSAqIFNlZSBwY2lfbWFwX3JvbSgpIGZvciB1c2Ugb2YgdGhpcyBmbGFn LiBJT1JFU09VUkNFX1JPTV9TSEFET1cKLSAqIGlzIG1hcmtlZCBoZXJlIHNpbmNlIHRoZSBib290 IHZpZGVvIGRldmljZSB3aWxsIGJlIHRoZSBvbmx5IGVuYWJsZWQKLSAqIHZpZGVvIGRldmljZSBh dCB0aGlzIHBvaW50LgotICovCi0KLXN0YXRpYyB2b2lkIHBjaV9maXh1cF92aWRlbyhzdHJ1Y3Qg cGNpX2RldiAqcGRldikKLXsKLQlzdHJ1Y3QgcGNpX2RldiAqYnJpZGdlOwotCXN0cnVjdCBwY2lf YnVzICpidXM7Ci0JdTE2IGNvbmZpZzsKLQotCS8qIElzIFZHQSByb3V0ZWQgdG8gdXM/ICovCi0J YnVzID0gcGRldi0+YnVzOwotCXdoaWxlIChidXMpIHsKLQkJYnJpZGdlID0gYnVzLT5zZWxmOwot Ci0JCS8qCi0JCSAqIEZyb20gaW5mb3JtYXRpb24gcHJvdmlkZWQgYnkKLQkJICogIkRhdmlkIE1p bGxlciIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0JCSAqIFRoZSBicmlkZ2UgY29udHJvbCByZWdp c3RlciBpcyB2YWxpZCBmb3IgUENJIGhlYWRlcgotCQkgKiB0eXBlIEJSSURHRSwgb3IgQ0FSREJV Uy4gSG9zdCB0byBQQ0kgY29udHJvbGxlcnMgdXNlCi0JCSAqIFBDSSBoZWFkZXIgdHlwZSBOT1JN QUwuCi0JCSAqLwotCQlpZiAoYnJpZGdlCi0JCSAgICAmJiAoKGJyaWRnZS0+aGRyX3R5cGUgPT0g UENJX0hFQURFUl9UWVBFX0JSSURHRSkKLQkJICAgICAgIHx8IChicmlkZ2UtPmhkcl90eXBlID09 IFBDSV9IRUFERVJfVFlQRV9DQVJEQlVTKSkpIHsKLQkJCXBjaV9yZWFkX2NvbmZpZ193b3JkKGJy aWRnZSwgUENJX0JSSURHRV9DT05UUk9MLAotCQkJCQkJJmNvbmZpZyk7Ci0JCQlpZiAoIShjb25m aWcgJiBQQ0lfQlJJREdFX0NUTF9WR0EpKQotCQkJCXJldHVybjsKLQkJfQotCQlidXMgPSBidXMt PnBhcmVudDsKLQl9Ci0JcGNpX3JlYWRfY29uZmlnX3dvcmQocGRldiwgUENJX0NPTU1BTkQsICZj b25maWcpOwotCWlmIChjb25maWcgJiAoUENJX0NPTU1BTkRfSU8gfCBQQ0lfQ09NTUFORF9NRU1P UlkpKSB7Ci0JCXBkZXYtPnJlc291cmNlW1BDSV9ST01fUkVTT1VSQ0VdLmZsYWdzIHw9IElPUkVT T1VSQ0VfUk9NX1NIQURPVzsKLQkJZGV2X3ByaW50ayhLRVJOX0RFQlVHLCAmcGRldi0+ZGV2LCAi Qm9vdCB2aWRlbyBkZXZpY2VcbiIpOwotCQlpZiAoIXZnYV9kZWZhdWx0X2RldmljZSgpKQotCQkJ dmdhX3NldF9kZWZhdWx0X2RldmljZShwZGV2KTsKLQl9Ci19CisvKiBwY2lfZml4dXBfdmlkZW8g c2hhcmVkIGluIHZnYWFyYi5jICovCiBERUNMQVJFX1BDSV9GSVhVUF9DTEFTU19GSU5BTChQQ0lf QU5ZX0lELCBQQ0lfQU5ZX0lELAogCQkJCVBDSV9DTEFTU19ESVNQTEFZX1ZHQSwgOCwgcGNpX2Zp eHVwX3ZpZGVvKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvdmdhL3ZnYWFyYi5jIGIvZHJp dmVycy9ncHUvdmdhL3ZnYWFyYi5jCmluZGV4IGFmMDI1OTcuLjNhYjllMzUgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L3ZnYS92Z2FhcmIuYworKysgYi9kcml2ZXJzL2dwdS92Z2EvdmdhYXJiLmMK QEAgLTE0OSw2ICsxNDksNjMgQEAgdm9pZCB2Z2Ffc2V0X2RlZmF1bHRfZGV2aWNlKHN0cnVjdCBw Y2lfZGV2ICpwZGV2KQogfQogI2VuZGlmCiAKK3ZvaWQgcGNpX2ZpeHVwX3ZpZGVvKHN0cnVjdCBw Y2lfZGV2ICpwZGV2KQoreworCXN0cnVjdCBwY2lfZGV2ICpicmlkZ2U7CisJc3RydWN0IHBjaV9i dXMgKmJ1czsKKwl1MTYgY29uZmlnOworCisJaWYgKCF2Z2FfZGVmYXVsdF9kZXZpY2UoKSkgewor CQlyZXNvdXJjZV9zaXplX3Qgc3RhcnQsIGVuZDsKKwkJaW50IGk7CisKKwkJZm9yIChpPTA7IGkg PCBERVZJQ0VfQ09VTlRfUkVTT1VSQ0U7IGkrKykgeworCQkJaWYgKCEocGNpX3Jlc291cmNlX2Zs YWdzKHBkZXYsIGkpICYgSU9SRVNPVVJDRV9NRU0pKQorCQkJCWNvbnRpbnVlOworCisJCQlzdGFy dCA9IHBjaV9yZXNvdXJjZV9zdGFydChwZGV2LCBpKTsKKwkJCWVuZCAgPSBwY2lfcmVzb3VyY2Vf ZW5kKHBkZXYsIGkpOworCisJCQlpZiAoIXN0YXJ0IHx8ICFlbmQpCisJCQkJY29udGludWU7CisK KwkJCWlmIChzY3JlZW5faW5mby5sZmJfYmFzZSA+PSBzdGFydCAmJgorCQkJCShzY3JlZW5faW5m by5sZmJfYmFzZSArIHNjcmVlbl9pbmZvLmxmYl9zaXplKSA8IGVuZCkKKwkJCQl2Z2Ffc2V0X2Rl ZmF1bHRfZGV2aWNlKHBkZXYpOworCQl9CisJfQorCisJLyogSXMgVkdBIHJvdXRlZCB0byB1cz8g Ki8KKwlidXMgPSBwZGV2LT5idXM7CisJd2hpbGUgKGJ1cykgeworCQlicmlkZ2UgPSBidXMtPnNl bGY7CisKKwkJLyoKKwkJICogRnJvbSBpbmZvcm1hdGlvbiBwcm92aWRlZCBieQorCQkgKiAiRGF2 aWQgTWlsbGVyIiA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KKwkJICogVGhlIGJyaWRnZSBjb250cm9s IHJlZ2lzdGVyIGlzIHZhbGlkIGZvciBQQ0kgaGVhZGVyCisJCSAqIHR5cGUgQlJJREdFLCBvciBD QVJEQlVTLiBIb3N0IHRvIFBDSSBjb250cm9sbGVycyB1c2UKKwkJICogUENJIGhlYWRlciB0eXBl IE5PUk1BTC4KKwkJICovCisJCWlmIChicmlkZ2UKKwkJICAgICYmICgoYnJpZGdlLT5oZHJfdHlw ZSA9PSBQQ0lfSEVBREVSX1RZUEVfQlJJREdFKQorCQkgICAgICAgfHwgKGJyaWRnZS0+aGRyX3R5 cGUgPT0gUENJX0hFQURFUl9UWVBFX0NBUkRCVVMpKSkgeworCQkJcGNpX3JlYWRfY29uZmlnX3dv cmQoYnJpZGdlLCBQQ0lfQlJJREdFX0NPTlRST0wsCisJCQkJCQkmY29uZmlnKTsKKwkJCWlmICgh KGNvbmZpZyAmIFBDSV9CUklER0VfQ1RMX1ZHQSkpCisJCQkJcmV0dXJuOworCQl9CisJCWJ1cyA9 IGJ1cy0+cGFyZW50OworCX0KKwlwY2lfcmVhZF9jb25maWdfd29yZChwZGV2LCBQQ0lfQ09NTUFO RCwgJmNvbmZpZyk7CisJaWYgKGNvbmZpZyAmIChQQ0lfQ09NTUFORF9JTyB8IFBDSV9DT01NQU5E X01FTU9SWSkpIHsKKwkJcGRldi0+cmVzb3VyY2VbUENJX1JPTV9SRVNPVVJDRV0uZmxhZ3MgfD0g SU9SRVNPVVJDRV9ST01fU0hBRE9XOworCQlkZXZfcHJpbnRrKEtFUk5fREVCVUcsICZwZGV2LT5k ZXYsICJCb290IHZpZGVvIGRldmljZVxuIik7CisJCWlmICghdmdhX2RlZmF1bHRfZGV2aWNlKCkp CisJCQl2Z2Ffc2V0X2RlZmF1bHRfZGV2aWNlKHBkZXYpOworCX0KK30KKwogc3RhdGljIGlubGlu ZSB2b2lkIHZnYV9pcnFfc2V0X3N0YXRlKHN0cnVjdCB2Z2FfZGV2aWNlICp2Z2FkZXYsIGJvb2wg c3RhdGUpCiB7CiAJaWYgKHZnYWRldi0+aXJxX3NldF9zdGF0ZSkKZGlmZiAtLWdpdCBhL2RyaXZl cnMvdmlkZW8vZWZpZmIuYyBiL2RyaXZlcnMvdmlkZW8vZWZpZmIuYwppbmRleCBjZDdjMGRmLi45 NTQ0NjVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2VmaWZiLmMKKysrIGIvZHJpdmVycy92 aWRlby9lZmlmYi5jCkBAIC0xOSw4ICsxOSw2IEBACiAKIHN0YXRpYyBib29sIHJlcXVlc3RfbWVt X3N1Y2NlZWRlZCA9IGZhbHNlOwogCi1zdGF0aWMgc3RydWN0IHBjaV9kZXYgKmRlZmF1bHRfdmdh OwotCiBzdGF0aWMgc3RydWN0IGZiX3Zhcl9zY3JlZW5pbmZvIGVmaWZiX2RlZmluZWQgPSB7CiAJ LmFjdGl2YXRlCQk9IEZCX0FDVElWQVRFX05PVywKIAkuaGVpZ2h0CQkJPSAtMSwKQEAgLTg1LDE4 ICs4Myw2IEBAIHN0YXRpYyBzdHJ1Y3QgZmJfb3BzIGVmaWZiX29wcyA9IHsKIAkuZmJfaW1hZ2Vi bGl0CT0gY2ZiX2ltYWdlYmxpdCwKIH07CiAKLXN0cnVjdCBwY2lfZGV2ICp2Z2FfZGVmYXVsdF9k ZXZpY2Uodm9pZCkKLXsKLQlyZXR1cm4gZGVmYXVsdF92Z2E7Ci19Ci0KLUVYUE9SVF9TWU1CT0xf R1BMKHZnYV9kZWZhdWx0X2RldmljZSk7Ci0KLXZvaWQgdmdhX3NldF9kZWZhdWx0X2RldmljZShz dHJ1Y3QgcGNpX2RldiAqcGRldikKLXsKLQlkZWZhdWx0X3ZnYSA9IHBkZXY7Ci19Ci0KIHN0YXRp YyBpbnQgZWZpZmJfc2V0dXAoY2hhciAqb3B0aW9ucykKIHsKIAljaGFyICp0aGlzX29wdDsKQEAg LTEyNywzMCArMTEzLDYgQEAgc3RhdGljIGludCBlZmlmYl9zZXR1cChjaGFyICpvcHRpb25zKQog CQl9CiAJfQogCi0JZm9yX2VhY2hfcGNpX2RldihkZXYpIHsKLQkJaW50IGk7Ci0KLQkJaWYgKChk ZXYtPmNsYXNzID4+IDgpICE9IFBDSV9DTEFTU19ESVNQTEFZX1ZHQSkKLQkJCWNvbnRpbnVlOwot Ci0JCWZvciAoaT0wOyBpIDwgREVWSUNFX0NPVU5UX1JFU09VUkNFOyBpKyspIHsKLQkJCXJlc291 cmNlX3NpemVfdCBzdGFydCwgZW5kOwotCi0JCQlpZiAoIShwY2lfcmVzb3VyY2VfZmxhZ3MoZGV2 LCBpKSAmIElPUkVTT1VSQ0VfTUVNKSkKLQkJCQljb250aW51ZTsKLQotCQkJc3RhcnQgPSBwY2lf cmVzb3VyY2Vfc3RhcnQoZGV2LCBpKTsKLQkJCWVuZCAgPSBwY2lfcmVzb3VyY2VfZW5kKGRldiwg aSk7Ci0KLQkJCWlmICghc3RhcnQgfHwgIWVuZCkKLQkJCQljb250aW51ZTsKLQotCQkJaWYgKHNj cmVlbl9pbmZvLmxmYl9iYXNlID49IHN0YXJ0ICYmCi0JCQkgICAgKHNjcmVlbl9pbmZvLmxmYl9i YXNlICsgc2NyZWVuX2luZm8ubGZiX3NpemUpIDwgZW5kKQotCQkJCWRlZmF1bHRfdmdhID0gZGV2 OwotCQl9Ci0JfQotCiAJcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgv dmdhYXJiLmggYi9pbmNsdWRlL2xpbnV4L3ZnYWFyYi5oCmluZGV4IDJjMDJmM2EuLjY1MTg0NjAg MTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvdmdhYXJiLmgKKysrIGIvaW5jbHVkZS9saW51eC92 Z2FhcmIuaApAQCAtMTYyLDYgKzE2Miw0MyBAQCBleHRlcm4gdm9pZCB2Z2FfcHV0KHN0cnVjdCBw Y2lfZGV2ICpwZGV2LCB1bnNpZ25lZCBpbnQgcnNyYyk7CiAjZGVmaW5lIHZnYV9wdXQocGRldiwg cnNyYykKICNlbmRpZgogCisvKioKKyAqICAgICBwY2lfZml4dXBfdmlkZW8KKyAqCisgKiAgICAg VGhpcyBjYW4gYmUgY2FsbGVkIGJ5IGFyY2ggUENJIHRvIGZpeHVwIGJvb3QgVkdBIHRhZ2dpbmcK KyAqICAgICBvZiBWR0EgUENJIGRldmljZXMgKGUuZy4gZm9yIFg4NiwgSUE2NCkKKyAqCisgKiAg ICAgVGhpcyBjb2RlIHdhcyBpbml0aWFsbHkgc3ByZWFkL2R1cGxpY2F0ZWQgYWNyb3NzOgorICog ICAgIC0gWDg2IFBDSS1maXh1cAorICogICAgIC0gSUE2NCBQQ0ktZml4dXAKKyAqICAgICAtIEVG SV9GQgorICoKKyAqICAgICAqIFBDSS1maXh1cCBwYXJ0OgorICogICAgIEZpeHVwIHRvIG1hcmsg Ym9vdCBCSU9TIHZpZGVvIHNlbGVjdGVkIGJ5IEJJT1MgYmVmb3JlIGl0IGNoYW5nZXMKKyAqCisg KiAgICAgRnJvbSBpbmZvcm1hdGlvbiBwcm92aWRlZCBieSAiSm9uIFNtaXJsIiA8am9uc21pcmxA Z21haWwuY29tPgorICoKKyAqICAgICBUaGUgc3RhbmRhcmQgYm9vdCBST00gc2VxdWVuY2UgZm9y IGFuIHg4NiBtYWNoaW5lIHVzZXMgdGhlIEJJT1MKKyAqICAgICB0byBzZWxlY3QgYW4gaW5pdGlh bCB2aWRlbyBjYXJkIGZvciBib290IGRpc3BsYXkuIFRoaXMgYm9vdCB2aWRlbworICogICAgIGNh cmQgd2lsbCBoYXZlIGl0J3MgQklPUyBjb3BpZWQgdG8gQzAwMDAgaW4gc3lzdGVtIFJBTS4KKyAq ICAgICBJT1JFU09VUkNFX1JPTV9TSEFET1cgaXMgdXNlZCB0byBhc3NvY2lhdGUgdGhlIGJvb3Qg dmlkZW8KKyAqICAgICBjYXJkIHdpdGggdGhpcyBjb3B5LiBPbiBsYXB0b3BzIHRoaXMgY29weSBo YXMgdG8gYmUgdXNlZCBzaW5jZQorICogICAgIHRoZSBtYWluIFJPTSBtYXkgYmUgY29tcHJlc3Nl ZCBvciBjb21iaW5lZCB3aXRoIGFub3RoZXIgaW1hZ2UuCisgKiAgICAgU2VlIHBjaV9tYXBfcm9t KCkgZm9yIHVzZSBvZiB0aGlzIGZsYWcuIElPUkVTT1VSQ0VfUk9NX1NIQURPVworICogICAgIGlz IG1hcmtlZCBoZXJlIHNpbmNlIHRoZSBib290IHZpZGVvIGRldmljZSB3aWxsIGJlIHRoZSBvbmx5 IGVuYWJsZWQKKyAqICAgICB2aWRlbyBkZXZpY2UgYXQgdGhpcyBwb2ludC4KKyAqCisgKiAgICAg KiBFRklfRkIgcGFydDoKKyAqICAgICBTb21lIEVGSS1iYXNlZCBzeXN0ZW0gKGUuZy4gSW50ZWwt TWFjcyBmcm9tIEFwcGxlKSBkbyBub3Qgc2V0dXAKKyAqICAgICBzaGFkb3cgVmlkZW8tQklPUyBh bmQgdGh1cyBjYW4gb25seSBiZSBkZXRlY3RlZCBieSBmcmFtZWJ1ZmZlcgorICogICAgIElPIG1l bW9yeSByYW5nZS4gRmxhZyB0aGUgY29ycmVzcG9uZGluZyBHUFUgYXMgYm9vdF92Z2EuCisgKi8K KworI2lmIGRlZmluZWQoQ09ORklHX1ZHQV9BUkIpCit2b2lkIHBjaV9maXh1cF92aWRlbyhzdHJ1 Y3QgcGNpX2RldiAqcGRldik7CisjZWxzZQorc3RhdGljIGlubGluZSB2b2lkIHBjaV9maXh1cF92 aWRlbyhzdHJ1Y3QgcGNpX2RldiAqcGRldikgeyB9CisjZW5kaWYKIAogLyoqCiAgKiAgICAgdmdh X2RlZmF1bHRfZGV2aWNlCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRl dmVsCg==