From mboxrd@z Thu Jan 1 00:00:00 1970 From: Keith Packard Subject: [PATCH 5/7] vulkan: add VK_EXT_display_control [v5] Date: Thu, 14 Jun 2018 19:52:54 -0700 Message-ID: <20180615025256.10657-6-keithp@keithp.com> References: <20180615025256.10657-1-keithp@keithp.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180615025256.10657-1-keithp@keithp.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: mesa-dev@lists.freedesktop.org Cc: Keith Packard , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org VGhpcyBleHRlbnNpb24gcHJvdmlkZXMgZmVuY2VzIGFuZCBmcmFtZSBjb3VudCBpbmZvcm1hdGlv biB0byBkaXJlY3QKZGlzcGxheSBjb250ZXh0cy4gSXQgdXNlcyBuZXcga2VybmVsIGlvY3RscyB0 byBwcm92aWRlIDY0LWJpdHMgb2YKdmJsYW5rIHNlcXVlbmNlIGFuZCBuYW5vc2Vjb25kIHJlc29s dXRpb24uCgp2MjogUmVtb3ZlIERSTV9DUlRDX1NFUVVFTkNFX0ZJUlNUX1BJWEVMX09VVCBmbGFn LiBUaGlzIGhhcwogICAgYmVlbiByZW1vdmVkIGZyb20gdGhlIHByb3Bvc2VkIGtlcm5lbCBBUEku CgogICAgQWRkIE5VTEwgcGFyYW1ldGVyIHRvIGRybUNydGNRdWV1ZVNlcXVlbmNlIGlvY3RsIGFz IHdlCiAgICBkb24ndCBjYXJlIHdoYXQgc2VxdWVuY2UgdGhlIGV2ZW50IHdhcyBhY3R1YWxseSBx dWV1ZWQgdG8uCgp2MzogQWRhcHQgdG8gcHRocmVhZCBjbG9jayBzd2l0Y2ggdG8gTU9OT1RPTklD Cgp2NDogRml4IHNjb3BlIGZvciB3c2lfZGlzcGxheV9tb2RlIGFuZHdzaV9kaXNwbGF5X2Nvbm5l Y3RvciBhbGxvY3MKCiAgICBTdWdnZXN0ZWQtYnk6IEphc29uIEVrc3RyYW5kIDxqYXNvbkBqbGVr c3RyYW5kLm5ldD4KCnY1OiBBZG9wdCBKYXNvbiBFa3N0cmFuZCdzIGNvZGluZyBjb252ZW50aW9u cwoKICAgIERlY2xhcmUgdmFyaWFibGVzIGF0IGZpcnN0IHVzZSwgZWxpbWluYXRlIGV4dHJhIHdo aXRlc3BhY2UgYmV0d2VlbgogICAgdHlwZXMgYW5kIG5hbWVzLiBXcmFwIGxpbmVzIHRvIDgwIGNv bHVtbnMuCgogICAgVXNlIHdzaV9yZWxfdG9fYWJzX3RpbWUgaGVscGVyIGZ1bmN0aW9uIHRvIGNv bnZlcnQgcmVsYXRpdmUKICAgIHRpbWVvdXRzIHRvIGFic29sdXRlIHRpbWVvdXRzIHdpdGhvdXQg Y2F1c2luZyBvdmVyZmxvdy4KCiAgICBTdWdnZXN0ZWQtYnk6IEphc29uIEVrc3RyYW5kIDxqYXNv bi5la3N0cmFuZEBpbnRlbC5jb20+CgpTaWduZWQtb2ZmLWJ5OiBLZWl0aCBQYWNrYXJkIDxrZWl0 aHBAa2VpdGhwLmNvbT4KLS0tCiBzcmMvdnVsa2FuL3dzaS93c2lfY29tbW9uLmggICAgICAgICB8 ICAxMCArCiBzcmMvdnVsa2FuL3dzaS93c2lfY29tbW9uX2Rpc3BsYXkuYyB8IDMwNyArKysrKysr KysrKysrKysrKysrKysrKysrKystCiBzcmMvdnVsa2FuL3dzaS93c2lfY29tbW9uX2Rpc3BsYXku aCB8ICAyOSArKysKIDMgZmlsZXMgY2hhbmdlZCwgMzQ1IGluc2VydGlvbnMoKyksIDEgZGVsZXRp b24oLSkKCmRpZmYgLS1naXQgYS9zcmMvdnVsa2FuL3dzaS93c2lfY29tbW9uLmggYi9zcmMvdnVs a2FuL3dzaS93c2lfY29tbW9uLmgKaW5kZXggMDU0YWFkMjNjMWMuLjA4MWZlMWRjZjhkIDEwMDY0 NAotLS0gYS9zcmMvdnVsa2FuL3dzaS93c2lfY29tbW9uLmgKKysrIGIvc3JjL3Z1bGthbi93c2kv d3NpX2NvbW1vbi5oCkBAIC02Niw2ICs2NiwxNiBAQCBzdHJ1Y3Qgd3NpX2Zvcm1hdF9tb2RpZmll cl9wcm9wZXJ0aWVzX2xpc3QgewogICAgc3RydWN0IHdzaV9mb3JtYXRfbW9kaWZpZXJfcHJvcGVy dGllcyAqbW9kaWZpZXJfcHJvcGVydGllczsKIH07CiAKK3N0cnVjdCB3c2lfZmVuY2UgeworICAg VmtEZXZpY2UgICAgICAgICAgICAgICAgICAgICBkZXZpY2U7CisgICBjb25zdCBzdHJ1Y3Qgd3Np X2RldmljZSAgICAgICp3c2lfZGV2aWNlOworICAgVmtEaXNwbGF5S0hSICAgICAgICAgICAgICAg ICBkaXNwbGF5OworICAgY29uc3QgVmtBbGxvY2F0aW9uQ2FsbGJhY2tzICAqYWxsb2M7CisgICBi b29sICAgICAgICAgICAgICAgICAgICAgICAgICgqd2FpdCkoc3RydWN0IHdzaV9mZW5jZSAqZmVu Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhYnNvbHV0 ZSwgdWludDY0X3QgdGltZW91dCk7CisgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICgq ZGVzdHJveSkoc3RydWN0IHdzaV9mZW5jZSAqZmVuY2UpOworfTsKKwogc3RydWN0IHdzaV9pbnRl cmZhY2U7CiAKICNkZWZpbmUgVktfSUNEX1dTSV9QTEFURk9STV9NQVggKFZLX0lDRF9XU0lfUExB VEZPUk1fRElTUExBWSArIDEpCmRpZmYgLS1naXQgYS9zcmMvdnVsa2FuL3dzaS93c2lfY29tbW9u X2Rpc3BsYXkuYyBiL3NyYy92dWxrYW4vd3NpL3dzaV9jb21tb25fZGlzcGxheS5jCmluZGV4IDUw NGY3NzQxZDczLi40MGVhYTZhMzIyZSAxMDA2NDQKLS0tIGEvc3JjL3Z1bGthbi93c2kvd3NpX2Nv bW1vbl9kaXNwbGF5LmMKKysrIGIvc3JjL3Z1bGthbi93c2kvd3NpX2NvbW1vbl9kaXNwbGF5LmMK QEAgLTc5LDYgKzc5LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qgd3NpX2Rpc3BsYXlfY29ubmVjdG9yIHsK ICAgIHN0cnVjdCBsaXN0X2hlYWQgICAgICAgICAgICAgZGlzcGxheV9tb2RlczsKICAgIHdzaV9k aXNwbGF5X21vZGUgICAgICAgICAgICAgKmN1cnJlbnRfbW9kZTsKICAgIGRybU1vZGVNb2RlSW5m byAgICAgICAgICAgICAgY3VycmVudF9kcm1fbW9kZTsKKyAgIHVpbnQzMl90ICAgICAgICAgICAg ICAgICAgICAgZHBtc19wcm9wZXJ0eTsKICNpZmRlZiBWS19VU0VfUExBVEZPUk1fWExJQl9YUkFO RFJfRVhUCiAgICB4Y2JfcmFuZHJfb3V0cHV0X3QgICAgICAgICAgIG91dHB1dDsKICNlbmRpZgpA QCAtMTMyLDYgKzEzMywxNSBAQCBzdHJ1Y3Qgd3NpX2Rpc3BsYXlfc3dhcGNoYWluIHsKICAgIHN0 cnVjdCB3c2lfZGlzcGxheV9pbWFnZSAgICAgaW1hZ2VzWzBdOwogfTsKIAorc3RydWN0IHdzaV9k aXNwbGF5X2ZlbmNlIHsKKyAgIHN0cnVjdCB3c2lfZmVuY2UgICAgICAgICAgICAgYmFzZTsKKyAg IGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRfcmVjZWl2ZWQ7CisgICBib29sICAg ICAgICAgICAgICAgICAgICAgICAgIGRlc3Ryb3llZDsKKyAgIHVpbnQ2NF90ICAgICAgICAgICAg ICAgICAgICAgc2VxdWVuY2U7Cit9OworCitzdGF0aWMgdWludDY0X3QgZmVuY2Vfc2VxdWVuY2U7 CisKIElDRF9ERUZJTkVfTk9ORElTUF9IQU5ETEVfQ0FTVFMod3NpX2Rpc3BsYXlfbW9kZSwgVmtE aXNwbGF5TW9kZUtIUikKIElDRF9ERUZJTkVfTk9ORElTUF9IQU5ETEVfQ0FTVFMod3NpX2Rpc3Bs YXlfY29ubmVjdG9yLCBWa0Rpc3BsYXlLSFIpCiAKQEAgLTMwNyw2ICszMTcsMTkgQEAgd3NpX2Rp c3BsYXlfZ2V0X2Nvbm5lY3RvcihzdHJ1Y3Qgd3NpX2RldmljZSAqd3NpX2RldmljZSwKIAogICAg Y29ubmVjdG9yLT5jb25uZWN0ZWQgPSBkcm1fY29ubmVjdG9yLT5jb25uZWN0aW9uICE9IERSTV9N T0RFX0RJU0NPTk5FQ1RFRDsKIAorICAgLyogTG9vayBmb3IgYSBEUE1TIHByb3BlcnR5ICovCisg ICBmb3IgKGludCBwID0gMDsgcCA8IGRybV9jb25uZWN0b3ItPmNvdW50X3Byb3BzOyBwKyspIHsK KyAgICAgIGRybU1vZGVQcm9wZXJ0eVB0ciBwcm9wID0gZHJtTW9kZUdldFByb3BlcnR5KHdzaS0+ ZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk cm1fY29ubmVjdG9yLT5wcm9wc1twXSk7CisgICAgICBpZiAoIXByb3ApCisgICAgICAgICBjb250 aW51ZTsKKyAgICAgIGlmIChwcm9wLT5mbGFncyAmIERSTV9NT0RFX1BST1BfRU5VTSkgeworICAg ICAgICAgaWYgKCFzdHJjbXAocHJvcC0+bmFtZSwgIkRQTVMiKSkKKyAgICAgICAgICAgIGNvbm5l Y3Rvci0+ZHBtc19wcm9wZXJ0eSA9IGRybV9jb25uZWN0b3ItPnByb3BzW3BdOworICAgICAgfQor ICAgICAgZHJtTW9kZUZyZWVQcm9wZXJ0eShwcm9wKTsKKyAgIH0KKwogICAgLyogTWFyayBhbGwg Y29ubmVjdG9yIG1vZGVzIGFzIGludmFsaWQgKi8KICAgIHdzaV9kaXNwbGF5X2ludmFsaWRhdGVf Y29ubmVjdG9yX21vZGVzKHdzaV9kZXZpY2UsIGNvbm5lY3Rvcik7CiAKQEAgLTY2Myw3ICs2ODYs NyBAQCB3c2lfZGlzcGxheV9zdXJmYWNlX2dldF9jYXBhYmlsaXRpZXMyZXh0KFZrSWNkU3VyZmFj ZUJhc2UgKmljZF9zdXJmYWNlLAogICAgY2Fwcy0+Y3VycmVudFRyYW5zZm9ybSA9IGtocl9jYXBz LmN1cnJlbnRUcmFuc2Zvcm07CiAgICBjYXBzLT5zdXBwb3J0ZWRDb21wb3NpdGVBbHBoYSA9IGto cl9jYXBzLnN1cHBvcnRlZENvbXBvc2l0ZUFscGhhOwogICAgY2Fwcy0+c3VwcG9ydGVkVXNhZ2VG bGFncyA9IGtocl9jYXBzLnN1cHBvcnRlZFVzYWdlRmxhZ3M7Ci0gICBjYXBzLT5zdXBwb3J0ZWRT dXJmYWNlQ291bnRlcnMgPSAwOworICAgY2Fwcy0+c3VwcG9ydGVkU3VyZmFjZUNvdW50ZXJzID0g VktfU1VSRkFDRV9DT1VOVEVSX1ZCTEFOS19FWFQ7CiAgICByZXR1cm4gcmV0OwogfQogCkBAIC04 OTYsMTIgKzkxOSwyMSBAQCBzdGF0aWMgdm9pZCB3c2lfZGlzcGxheV9wYWdlX2ZsaXBfaGFuZGxl cihpbnQgZmQsCiAgICB3c2lfZGlzcGxheV9wYWdlX2ZsaXBfaGFuZGxlcjIoZmQsIGZyYW1lLCBz ZWMsIHVzZWMsIDAsIGRhdGEpOwogfQogCitzdGF0aWMgdm9pZCB3c2lfZGlzcGxheV92Ymxhbmtf aGFuZGxlcihpbnQgZmQsIHVuc2lnbmVkIGludCBmcmFtZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzZWMsIHVuc2lnbmVkIGludCB1c2VjLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0YSk7CisKK3N0 YXRpYyB2b2lkIHdzaV9kaXNwbGF5X3NlcXVlbmNlX2hhbmRsZXIoaW50IGZkLCB1aW50NjRfdCBm cmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3Qg bnMsIHVpbnQ2NF90IHVzZXJfZGF0YSk7CisKIHN0YXRpYyBkcm1FdmVudENvbnRleHQgZXZlbnRf Y29udGV4dCA9IHsKICAgIC52ZXJzaW9uID0gRFJNX0VWRU5UX0NPTlRFWFRfVkVSU0lPTiwKICAg IC5wYWdlX2ZsaXBfaGFuZGxlciA9IHdzaV9kaXNwbGF5X3BhZ2VfZmxpcF9oYW5kbGVyLAogI2lm IERSTV9FVkVOVF9DT05URVhUX1ZFUlNJT04gPj0gMwogICAgLnBhZ2VfZmxpcF9oYW5kbGVyMiA9 IHdzaV9kaXNwbGF5X3BhZ2VfZmxpcF9oYW5kbGVyMiwKICNlbmRpZgorICAgLnZibGFua19oYW5k bGVyID0gd3NpX2Rpc3BsYXlfdmJsYW5rX2hhbmRsZXIsCisgICAuc2VxdWVuY2VfaGFuZGxlciA9 IHdzaV9kaXNwbGF5X3NlcXVlbmNlX2hhbmRsZXIsCiB9OwogCiBzdGF0aWMgdm9pZCAqCkBAIC0x MTY4LDYgKzEyMDAsMTQ3IEBAIGJhaWw6CiAKIH0KIAorc3RhdGljIGJvb2wKK3dzaV9kaXNwbGF5 X2ZlbmNlX3dhaXQoc3RydWN0IHdzaV9mZW5jZSAqZmVuY2Vfd3NpLAorICAgICAgICAgICAgICAg ICAgICAgICBib29sIGFic29sdXRlLAorICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCB0 aW1lb3V0KQoreworICAgY29uc3Qgc3RydWN0IHdzaV9kZXZpY2UgKndzaV9kZXZpY2UgPSBmZW5j ZV93c2ktPndzaV9kZXZpY2U7CisgICBzdHJ1Y3Qgd3NpX2Rpc3BsYXkgKndzaSA9CisgICAgICAo c3RydWN0IHdzaV9kaXNwbGF5ICopIHdzaV9kZXZpY2UtPndzaVtWS19JQ0RfV1NJX1BMQVRGT1JN X0RJU1BMQVldOworICAgc3RydWN0IHdzaV9kaXNwbGF5X2ZlbmNlICpmZW5jZSA9IChzdHJ1Y3Qg d3NpX2Rpc3BsYXlfZmVuY2UgKikgZmVuY2Vfd3NpOworCisgICBpZiAoIWFic29sdXRlKQorICAg ICAgdGltZW91dCA9IHdzaV9yZWxfdG9fYWJzX3RpbWUodGltZW91dCk7CisKKyAgIHdzaV9kaXNw bGF5X2RlYnVnKCIlOWx1IHdhaXQgZmVuY2UgJWx1ICVsZFxuIiwKKyAgICAgICAgICAgICAgICAg ICAgIHB0aHJlYWRfc2VsZigpLCBmZW5jZS0+c2VxdWVuY2UsCisgICAgICAgICAgICAgICAgICAg ICAoaW50NjRfdCkgKHRpbWVvdXQgLSB3c2lfZ2V0X2N1cnJlbnRfbW9ub3RvbmljKCkpKTsKKyAg IHdzaV9kaXNwbGF5X2RlYnVnX2NvZGUodWludDY0X3Qgc3RhcnRfbnMgPSB3c2lfZ2V0X2N1cnJl bnRfbW9ub3RvbmljKCkpOworICAgcHRocmVhZF9tdXRleF9sb2NrKCZ3c2ktPndhaXRfbXV0ZXgp OworCisgICBib29sIHZhbHVlID0gZmFsc2U7CisgICBpbnQgcmV0ID0gMDsKKyAgIGZvciAoOzsp IHsKKyAgICAgIGlmIChmZW5jZS0+ZXZlbnRfcmVjZWl2ZWQpIHsKKyAgICAgICAgIHdzaV9kaXNw bGF5X2RlYnVnKCIlOWx1IGZlbmNlICVsdSBwYXNzZWRcbiIsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICBwdGhyZWFkX3NlbGYoKSwgZmVuY2UtPnNlcXVlbmNlKTsKKyAgICAgICAgIHZhbHVl ID0gdHJ1ZTsKKyAgICAgICAgIGJyZWFrOworICAgICAgfQorCisgICAgICBpZiAocmV0ID09IEVU SU1FRE9VVCkgeworICAgICAgICAgd3NpX2Rpc3BsYXlfZGVidWcoIiU5bHUgZmVuY2UgJWx1IHRp bWVvdXRcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwdGhyZWFkX3NlbGYoKSwgZmVu Y2UtPnNlcXVlbmNlKTsKKyAgICAgICAgIHZhbHVlID0gZmFsc2U7CisgICAgICAgICBicmVhazsK KyAgICAgIH0KKworICAgICAgcmV0ID0gd3NpX2Rpc3BsYXlfd2FpdF9mb3JfZXZlbnQod3NpLCB0 aW1lb3V0KTsKKworICAgICAgaWYgKHJldCAmJiByZXQgIT0gRVRJTUVET1VUKSB7CisgICAgICAg ICB3c2lfZGlzcGxheV9kZWJ1ZygiJTlsdSBmZW5jZSAlbHUgZXJyb3JcbiIsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBwdGhyZWFkX3NlbGYoKSwgZmVuY2UtPnNlcXVlbmNlKTsKKyAgICAg ICAgIHZhbHVlID0gZmFsc2U7CisgICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgIH0KKyAgIHB0 aHJlYWRfbXV0ZXhfdW5sb2NrKCZ3c2ktPndhaXRfbXV0ZXgpOworICAgd3NpX2Rpc3BsYXlfZGVi dWcoIiU5bHUgZmVuY2Ugd2FpdCAlZiBtc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgIHB0aHJl YWRfc2VsZigpLAorICAgICAgICAgICAgICAgICAgICAgKChpbnQ2NF90KSAod3NpX2dldF9jdXJy ZW50X21vbm90b25pYygpIC0gc3RhcnRfbnMpKSAvCisgICAgICAgICAgICAgICAgICAgICAxLjBl Nik7CisgICByZXR1cm4gdmFsdWU7Cit9CisKK3N0YXRpYyB2b2lkCit3c2lfZGlzcGxheV9mZW5j ZV9jaGVja19mcmVlKHN0cnVjdCB3c2lfZGlzcGxheV9mZW5jZSAqZmVuY2UpCit7CisgICBpZiAo ZmVuY2UtPmV2ZW50X3JlY2VpdmVkICYmIGZlbmNlLT5kZXN0cm95ZWQpCisgICAgICB2a19mcmVl KGZlbmNlLT5iYXNlLmFsbG9jLCBmZW5jZSk7Cit9CisKK3N0YXRpYyB2b2lkCit3c2lfZGlzcGxh eV9mZW5jZV9kZXN0cm95KHN0cnVjdCB3c2lfZmVuY2UgKmZlbmNlX3dzaSkKK3sKKyAgIHN0cnVj dCB3c2lfZGlzcGxheV9mZW5jZSAqZmVuY2UgPSAoc3RydWN0IHdzaV9kaXNwbGF5X2ZlbmNlICop IGZlbmNlX3dzaTsKKworICAgZmVuY2UtPmRlc3Ryb3llZCA9IHRydWU7CisgICB3c2lfZGlzcGxh eV9mZW5jZV9jaGVja19mcmVlKGZlbmNlKTsKK30KKworc3RhdGljIHN0cnVjdCB3c2lfZGlzcGxh eV9mZW5jZSAqCit3c2lfZGlzcGxheV9mZW5jZV9hbGxvYyhWa0RldmljZSBkZXZpY2UsCisgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qgd3NpX2RldmljZSAqd3NpX2RldmljZSwK KyAgICAgICAgICAgICAgICAgICAgICAgIFZrRGlzcGxheUtIUiBkaXNwbGF5LAorICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgVmtBbGxvY2F0aW9uQ2FsbGJhY2tzICphbGxvY2F0b3IpCit7 CisgICBzdHJ1Y3Qgd3NpX2Rpc3BsYXlfZmVuY2UgKmZlbmNlID0KKyAgICAgIHZrX3phbGxvYyhh bGxvY2F0b3IsIHNpemVvZiAoKmZlbmNlKSwKKyAgICAgICAgICAgICAgICA4LCBWS19TWVNURU1f QUxMT0NBVElPTl9TQ09QRV9PQkpFQ1QpOworCisgICBpZiAoIWZlbmNlKQorICAgICAgcmV0dXJu IE5VTEw7CisKKyAgIGZlbmNlLT5iYXNlLmRldmljZSA9IGRldmljZTsKKyAgIGZlbmNlLT5iYXNl LmRpc3BsYXkgPSBkaXNwbGF5OworICAgZmVuY2UtPmJhc2Uud3NpX2RldmljZSA9IHdzaV9kZXZp Y2U7CisgICBmZW5jZS0+YmFzZS5hbGxvYyA9IGFsbG9jYXRvcjsKKyAgIGZlbmNlLT5iYXNlLndh aXQgPSB3c2lfZGlzcGxheV9mZW5jZV93YWl0OworICAgZmVuY2UtPmJhc2UuZGVzdHJveSA9IHdz aV9kaXNwbGF5X2ZlbmNlX2Rlc3Ryb3k7CisgICBmZW5jZS0+ZXZlbnRfcmVjZWl2ZWQgPSBmYWxz ZTsKKyAgIGZlbmNlLT5kZXN0cm95ZWQgPSBmYWxzZTsKKyAgIGZlbmNlLT5zZXF1ZW5jZSA9ICsr ZmVuY2Vfc2VxdWVuY2U7CisgICByZXR1cm4gZmVuY2U7Cit9CisKK3N0YXRpYyBWa1Jlc3VsdAor d3NpX3JlZ2lzdGVyX3ZibGFua19ldmVudChzdHJ1Y3Qgd3NpX2Rpc3BsYXlfZmVuY2UgKmZlbmNl LAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qgd3NpX2RldmljZSAqd3Np X2RldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgVmtEaXNwbGF5S0hSIGRpc3BsYXks CisgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzLAorICAgICAgICAgICAg ICAgICAgICAgICAgICB1aW50NjRfdCBmcmFtZV9yZXF1ZXN0ZWQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgIHVpbnQ2NF90ICpmcmFtZV9xdWV1ZWQpCit7CisgICBzdHJ1Y3Qgd3NpX2Rpc3Bs YXkgKndzaSA9CisgICAgICAoc3RydWN0IHdzaV9kaXNwbGF5ICopIHdzaV9kZXZpY2UtPndzaVtW S19JQ0RfV1NJX1BMQVRGT1JNX0RJU1BMQVldOworICAgc3RydWN0IHdzaV9kaXNwbGF5X2Nvbm5l Y3RvciAqY29ubmVjdG9yID0KKyAgICAgIHdzaV9kaXNwbGF5X2Nvbm5lY3Rvcl9mcm9tX2hhbmRs ZShkaXNwbGF5KTsKKworICAgaWYgKHdzaS0+ZmQgPCAwKQorICAgICAgcmV0dXJuIFZLX0VSUk9S X0lOSVRJQUxJWkFUSU9OX0ZBSUxFRDsKKworICAgZm9yICg7OykgeworICAgICAgaW50IHJldCA9 IGRybUNydGNRdWV1ZVNlcXVlbmNlKHdzaS0+ZmQsIGNvbm5lY3Rvci0+Y3J0Y19pZCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBmcmFtZV9yZXF1ZXN0ZWQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZnJhbWVfcXVldWVkLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICh1aW50NjRfdCkgZmVuY2UpOworCisgICAgICBpZiAoIXJldCkKKyAgICAg ICAgIHJldHVybiBWS19TVUNDRVNTOworCisgICAgICBpZiAoZXJybm8gIT0gRU5PTUVNKSB7Cisg ICAgICAgICB3c2lfZGlzcGxheV9kZWJ1ZygicXVldWUgdmJsYW5rIGV2ZW50ICVsdSBmYWlsZWRc biIsIGZlbmNlLT5zZXF1ZW5jZSk7CisgICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgZGVsYXkgPSB7 CisgICAgICAgICAgICAudHZfc2VjID0gMCwKKyAgICAgICAgICAgIC50dl9uc2VjID0gMTAwMDAw MDAwdWxsLAorICAgICAgICAgfTsKKyAgICAgICAgIG5hbm9zbGVlcCgmZGVsYXksIE5VTEwpOwor ICAgICAgICAgcmV0dXJuIFZLX0VSUk9SX09VVF9PRl9IT1NUX01FTU9SWTsKKyAgICAgIH0KKwor ICAgICAgcHRocmVhZF9tdXRleF9sb2NrKCZ3c2ktPndhaXRfbXV0ZXgpOworICAgICAgcmV0ID0g d3NpX2Rpc3BsYXlfd2FpdF9mb3JfZXZlbnQod3NpLCB3c2lfcmVsX3RvX2Fic190aW1lKDEwMDAw MDAwMHVsbCkpOworICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soJndzaS0+d2FpdF9tdXRleCk7 CisKKyAgICAgIGlmIChyZXQpIHsKKyAgICAgICAgIHdzaV9kaXNwbGF5X2RlYnVnKCJ2Ymxhbmsg cXVldWUgZnVsbCwgZXZlbnQgd2FpdCBmYWlsZWRcbiIpOworICAgICAgICAgcmV0dXJuIFZLX0VS Uk9SX09VVF9PRl9IT1NUX01FTU9SWTsKKyAgICAgIH0KKyAgIH0KK30KKwogLyoKICAqIENoZWNr IHRvIHNlZSBpZiB0aGUga2VybmVsIGhhcyBubyBmbGlwIHF1ZXVlZCBhbmQgaWYgdGhlcmUncyBh biBpbWFnZQogICogd2FpdGluZyB0byBiZSBkaXNwbGF5ZWQuCkBAIC0xOTYzLDMgKzIxMzYsMTM1 IEBAIHdzaV9nZXRfcmFuZHJfb3V0cHV0X2Rpc3BsYXkoVmtQaHlzaWNhbERldmljZSBwaHlzaWNh bF9kZXZpY2UsCiB9CiAKICNlbmRpZgorCisvKiBWS19FWFRfZGlzcGxheV9jb250cm9sICovCitW a1Jlc3VsdAord3NpX2Rpc3BsYXlfcG93ZXJfY29udHJvbChWa0RldmljZSBkZXZpY2UsCisgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB3c2lfZGV2aWNlICp3c2lfZGV2aWNlLAorICAg ICAgICAgICAgICAgICAgICAgICAgICBWa0Rpc3BsYXlLSFIgZGlzcGxheSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgVmtEaXNwbGF5UG93ZXJJbmZvRVhUICpkaXNwbGF5X3Bvd2Vy X2luZm8pCit7CisgICBzdHJ1Y3Qgd3NpX2Rpc3BsYXkgKndzaSA9CisgICAgICAoc3RydWN0IHdz aV9kaXNwbGF5ICopIHdzaV9kZXZpY2UtPndzaVtWS19JQ0RfV1NJX1BMQVRGT1JNX0RJU1BMQVld OworICAgc3RydWN0IHdzaV9kaXNwbGF5X2Nvbm5lY3RvciAqY29ubmVjdG9yID0KKyAgICAgIHdz aV9kaXNwbGF5X2Nvbm5lY3Rvcl9mcm9tX2hhbmRsZShkaXNwbGF5KTsKKyAgIGludCBtb2RlOwor CisgICBpZiAod3NpLT5mZCA8IDApCisgICAgICByZXR1cm4gVktfRVJST1JfSU5JVElBTElaQVRJ T05fRkFJTEVEOworCisgICBzd2l0Y2ggKGRpc3BsYXlfcG93ZXJfaW5mby0+cG93ZXJTdGF0ZSkg eworICAgY2FzZSBWS19ESVNQTEFZX1BPV0VSX1NUQVRFX09GRl9FWFQ6CisgICAgICBtb2RlID0g RFJNX01PREVfRFBNU19PRkY7CisgICAgICBicmVhazsKKyAgIGNhc2UgVktfRElTUExBWV9QT1dF Ul9TVEFURV9TVVNQRU5EX0VYVDoKKyAgICAgIG1vZGUgPSBEUk1fTU9ERV9EUE1TX1NVU1BFTkQ7 CisgICAgICBicmVhazsKKyAgIGRlZmF1bHQ6CisgICAgICBtb2RlID0gRFJNX01PREVfRFBNU19P TjsKKyAgICAgIGJyZWFrOworICAgfQorICAgZHJtTW9kZUNvbm5lY3RvclNldFByb3BlcnR5KHdz aS0+ZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdG9yLT5pZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0b3ItPmRwbXNfcHJvcGVydHksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZSk7CisgICByZXR1cm4gVktfU1VDQ0VT UzsKK30KKworVmtSZXN1bHQKK3dzaV9yZWdpc3Rlcl9kZXZpY2VfZXZlbnQoVmtEZXZpY2UgZGV2 aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgd3NpX2RldmljZSAqd3NpX2Rl dmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmtEZXZpY2VFdmVudEluZm9F WFQgKmRldmljZV9ldmVudF9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBW a0FsbG9jYXRpb25DYWxsYmFja3MgKmFsbG9jYXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IHdzaV9mZW5jZSAqKmZlbmNlX3ApCit7CisgICByZXR1cm4gVktfRVJST1JfRkVB VFVSRV9OT1RfUFJFU0VOVDsKK30KKworVmtSZXN1bHQKK3dzaV9yZWdpc3Rlcl9kaXNwbGF5X2V2 ZW50KFZrRGV2aWNlIGRldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB3 c2lfZGV2aWNlICp3c2lfZGV2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtEaXNw bGF5S0hSIGRpc3BsYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWa0Rpc3Bs YXlFdmVudEluZm9FWFQgKmRpc3BsYXlfZXZlbnRfaW5mbywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IFZrQWxsb2NhdGlvbkNhbGxiYWNrcyAqYWxsb2NhdG9yLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IHdzaV9mZW5jZSAqKmZlbmNlX3ApCit7CisgICBzdHJ1 Y3Qgd3NpX2Rpc3BsYXlfZmVuY2UgKmZlbmNlOworICAgVmtSZXN1bHQgcmV0ID0gVktfRVJST1Jf RkVBVFVSRV9OT1RfUFJFU0VOVDsKKworICAgc3dpdGNoIChkaXNwbGF5X2V2ZW50X2luZm8tPmRp c3BsYXlFdmVudCkgeworICAgY2FzZSBWS19ESVNQTEFZX0VWRU5UX1RZUEVfRklSU1RfUElYRUxf T1VUX0VYVDoKKworICAgICAgZmVuY2UgPSB3c2lfZGlzcGxheV9mZW5jZV9hbGxvYyhkZXZpY2Us IHdzaV9kZXZpY2UsIGRpc3BsYXksIGFsbG9jYXRvcik7CisKKyAgICAgIGlmICghZmVuY2UpCisg ICAgICAgICByZXR1cm4gVktfRVJST1JfT1VUX09GX0hPU1RfTUVNT1JZOworCisgICAgICByZXQg PSB3c2lfcmVnaXN0ZXJfdmJsYW5rX2V2ZW50KGZlbmNlLCB3c2lfZGV2aWNlLCBkaXNwbGF5LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEUk1fQ1JUQ19TRVFVRU5DRV9S RUxBVElWRSwgMSwgTlVMTCk7CisKKyAgICAgIGlmIChyZXQgPT0gVktfU1VDQ0VTUykKKyAgICAg ICAgICpmZW5jZV9wID0gJmZlbmNlLT5iYXNlOworICAgICAgZWxzZSBpZiAoZmVuY2UgIT0gTlVM TCkKKyAgICAgICAgIHZrX2ZyZWUoYWxsb2NhdG9yLCBmZW5jZSk7CisKKyAgICAgIGJyZWFrOwor ICAgfQorCisgICByZXR1cm4gcmV0OworfQorCisKK1ZrUmVzdWx0Cit3c2lfZ2V0X3N3YXBjaGFp bl9jb3VudGVyKFZrRGV2aWNlIGRldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IHdzaV9kZXZpY2UgKndzaV9kZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFZr U3dhcGNoYWluS0hSIF9zd2FwY2hhaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgIFZrU3Vy ZmFjZUNvdW50ZXJGbGFnQml0c0VYVCBmbGFnX2JpdHMsCisgICAgICAgICAgICAgICAgICAgICAg ICAgIHVpbnQ2NF90ICp2YWx1ZSkKK3sKKyAgIHN0cnVjdCB3c2lfZGlzcGxheSAqd3NpID0KKyAg ICAgIChzdHJ1Y3Qgd3NpX2Rpc3BsYXkgKikgd3NpX2RldmljZS0+d3NpW1ZLX0lDRF9XU0lfUExB VEZPUk1fRElTUExBWV07CisgICBzdHJ1Y3Qgd3NpX2Rpc3BsYXlfc3dhcGNoYWluICpzd2FwY2hh aW4gPQorICAgICAgKHN0cnVjdCB3c2lfZGlzcGxheV9zd2FwY2hhaW4gKikgd3NpX3N3YXBjaGFp bl9mcm9tX2hhbmRsZShfc3dhcGNoYWluKTsKKyAgIHN0cnVjdCB3c2lfZGlzcGxheV9jb25uZWN0 b3IgKmNvbm5lY3RvciA9CisgICAgICB3c2lfZGlzcGxheV9tb2RlX2Zyb21faGFuZGxlKHN3YXBj aGFpbi0+c3VyZmFjZS0+ZGlzcGxheU1vZGUpLT5jb25uZWN0b3I7CisKKyAgIGlmICh3c2ktPmZk IDwgMCkKKyAgICAgIHJldHVybiBWS19FUlJPUl9JTklUSUFMSVpBVElPTl9GQUlMRUQ7CisKKyAg IGlmICghY29ubmVjdG9yLT5hY3RpdmUpIHsKKyAgICAgICp2YWx1ZSA9IDA7CisgICAgICByZXR1 cm4gVktfU1VDQ0VTUzsKKyAgIH0KKworICAgaW50IHJldCA9IGRybUNydGNHZXRTZXF1ZW5jZSh3 c2ktPmZkLCBjb25uZWN0b3ItPmNydGNfaWQsIHZhbHVlLCBOVUxMKTsKKyAgIGlmIChyZXQpCisg ICAgICAqdmFsdWUgPSAwOworCisgICByZXR1cm4gVktfU1VDQ0VTUzsKK30KKworc3RhdGljIHZv aWQgd3NpX2Rpc3BsYXlfZmVuY2VfZXZlbnRfaGFuZGxlcihzdHJ1Y3Qgd3NpX2Rpc3BsYXlfZmVu Y2UgKmZlbmNlKQoreworICAgZmVuY2UtPmV2ZW50X3JlY2VpdmVkID0gdHJ1ZTsKKyAgIHdzaV9k aXNwbGF5X2ZlbmNlX2NoZWNrX2ZyZWUoZmVuY2UpOworfQorCitzdGF0aWMgdm9pZCB3c2lfZGlz cGxheV92YmxhbmtfaGFuZGxlcihpbnQgZmQsIHVuc2lnbmVkIGludCBmcmFtZSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzZWMsIHVuc2lnbmVk IGludCB1c2VjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAq ZGF0YSkKK3sKKyAgIHN0cnVjdCB3c2lfZGlzcGxheV9mZW5jZSAqZmVuY2UgPSBkYXRhOworCisg ICB3c2lfZGlzcGxheV9mZW5jZV9ldmVudF9oYW5kbGVyKGZlbmNlKTsKK30KKworc3RhdGljIHZv aWQgd3NpX2Rpc3BsYXlfc2VxdWVuY2VfaGFuZGxlcihpbnQgZmQsIHVpbnQ2NF90IGZyYW1lLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBuc2VjLCB1 aW50NjRfdCB1c2VyX2RhdGEpCit7CisgICBzdHJ1Y3Qgd3NpX2Rpc3BsYXlfZmVuY2UgKmZlbmNl ID0KKyAgICAgIChzdHJ1Y3Qgd3NpX2Rpc3BsYXlfZmVuY2UgKikgKHVpbnRwdHJfdCkgdXNlcl9k YXRhOworCisgICB3c2lfZGlzcGxheV9mZW5jZV9ldmVudF9oYW5kbGVyKGZlbmNlKTsKK30KKwpk aWZmIC0tZ2l0IGEvc3JjL3Z1bGthbi93c2kvd3NpX2NvbW1vbl9kaXNwbGF5LmggYi9zcmMvdnVs a2FuL3dzaS93c2lfY29tbW9uX2Rpc3BsYXkuaAppbmRleCA1ODQ0N2QyYzZlYi4uMmY3NjBmODI1 ZmIgMTAwNjQ0Ci0tLSBhL3NyYy92dWxrYW4vd3NpL3dzaV9jb21tb25fZGlzcGxheS5oCisrKyBi L3NyYy92dWxrYW4vd3NpL3dzaV9jb21tb25fZGlzcGxheS5oCkBAIC05Niw0ICs5NiwzMyBAQCB3 c2lfZ2V0X3JhbmRyX291dHB1dF9kaXNwbGF5KFZrUGh5c2ljYWxEZXZpY2UgICBwaHlzaWNhbF9k ZXZpY2UsCiAKICNlbmRpZiAvKiBWS19VU0VfUExBVEZPUk1fWExJQl9YUkFORFJfRVhUICovCiAK Ky8qIFZLX0VYVF9kaXNwbGF5X2NvbnRyb2wgKi8KK1ZrUmVzdWx0Cit3c2lfZGlzcGxheV9wb3dl cl9jb250cm9sKFZrRGV2aWNlICAgICAgICAgICAgICAgICAgICAgIGRldmljZSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IHdzaV9kZXZpY2UgICAgICAgICAgICAgKndzaV9kZXZp Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFZrRGlzcGxheUtIUiAgICAgICAgICAgICAg ICAgIGRpc3BsYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZrRGlzcGxheVBv d2VySW5mb0VYVCAgICpkaXNwbGF5X3Bvd2VyX2luZm8pOworCitWa1Jlc3VsdAord3NpX3JlZ2lz dGVyX2RldmljZV9ldmVudChWa0RldmljZSAgICAgICAgICAgICAgICAgICAgICBkZXZpY2UsCisg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB3c2lfZGV2aWNlICAgICAgICAgICAgICp3 c2lfZGV2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWa0RldmljZUV2ZW50 SW5mb0VYVCAgICAqZGV2aWNlX2V2ZW50X2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IFZrQWxsb2NhdGlvbkNhbGxiYWNrcyAgICphbGxvY2F0b3IsCisgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCB3c2lfZmVuY2UgICAgICAgICAgICAgICoqZmVuY2UpOworCitW a1Jlc3VsdAord3NpX3JlZ2lzdGVyX2Rpc3BsYXlfZXZlbnQoVmtEZXZpY2UgICAgICAgICAgICAg ICAgICAgICBkZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgd3NpX2Rl dmljZSAgICAgICAgICAgICp3c2lfZGV2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg VmtEaXNwbGF5S0hSICAgICAgICAgICAgICAgICBkaXNwbGF5LAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgVmtEaXNwbGF5RXZlbnRJbmZvRVhUICAqZGlzcGxheV9ldmVudF9pbmZv LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmtBbGxvY2F0aW9uQ2FsbGJhY2tz ICAqYWxsb2NhdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHdzaV9mZW5j ZSAgICAgICAgICAgICAqKmZlbmNlKTsKKworVmtSZXN1bHQKK3dzaV9nZXRfc3dhcGNoYWluX2Nv dW50ZXIoVmtEZXZpY2UgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlLAorICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3Qgd3NpX2RldmljZSAgICAgICAgICAgICAqd3NpX2RldmljZSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgVmtTd2FwY2hhaW5LSFIgICAgICAgICAgICAgICAg c3dhcGNoYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICBWa1N1cmZhY2VDb3VudGVyRmxh Z0JpdHNFWFQgICBmbGFnX2JpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90 ICAgICAgICAgICAgICAgICAgICAgICp2YWx1ZSk7CisKICNlbmRpZgotLSAKMi4xNy4xCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFp bGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK