From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michel Thierry Subject: [PATCH 07/12] drm/i915/bdw: Support 64 bit PPGTT in lrc mode Date: Fri, 20 Feb 2015 17:46:01 +0000 Message-ID: <1424454366-19006-8-git-send-email-michel.thierry@intel.com> References: <1424454366-19006-1-git-send-email-michel.thierry@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id D359F6E6FA for ; Fri, 20 Feb 2015 09:46:13 -0800 (PST) In-Reply-To: <1424454366-19006-1-git-send-email-michel.thierry@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org SW4gNjRiICg0OGJpdCBjYW5vbmljYWwpIFBQR1RUIGFkZHJlc3NpbmcsIHRoZSBQRFAwIHJlZ2lz dGVyIGNvbnRhaW5zCnRoZSBiYXNlIGFkZHJlc3MgdG8gUE1MNCwgd2hpbGUgdGhlIG90aGVyIFBE UCByZWdpc3RlcnMgYXJlIGlnbm9yZWQuCgpBbHNvLCB0aGUgYWRkcmVzc2luZyBtb2RlIG11c3Qg YmUgc3BlY2lmaWVkIGluIGV2ZXJ5IGNvbnRleHQgZGVzY3JpcHRvci4KClNpZ25lZC1vZmYtYnk6 IE1pY2hlbCBUaGllcnJ5IDxtaWNoZWwudGhpZXJyeUBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgfCAxNjcgKysrKysrKysrKysrKysrKysrKysrKysrKyst LS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTE0IGluc2VydGlvbnMoKyksIDUzIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKaW5kZXggZjQ2MTYzMS4uMmI2ZDI2MiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKQEAgLTI1NSw3ICsyNTUsOCBAQCB1MzIgaW50ZWxf ZXhlY2xpc3RzX2N0eF9pZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqY3R4X29iaikKIH0K IAogc3RhdGljIHVpbnQ2NF90IGV4ZWNsaXN0c19jdHhfZGVzY3JpcHRvcihzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICpyaW5nLAotCQkJCQkgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmN0eF9v YmopCisJCQkJCSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqY3R4X29iaiwKKwkJCQkJIGJv b2wgbGVnYWN5XzY0Yml0X2N0eCkKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcmluZy0+ ZGV2OwogCXVpbnQ2NF90IGRlc2M7CkBAIC0yNjQsNyArMjY1LDEwIEBAIHN0YXRpYyB1aW50NjRf dCBleGVjbGlzdHNfY3R4X2Rlc2NyaXB0b3Ioc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywK IAlXQVJOX09OKGxyY2EgJiAweEZGRkZGRkZGMDAwMDBGRkZVTEwpOwogCiAJZGVzYyA9IEdFTjhf Q1RYX1ZBTElEOwotCWRlc2MgfD0gTEVHQUNZX0NPTlRFWFQgPDwgR0VOOF9DVFhfTU9ERV9TSElG VDsKKwlpZiAobGVnYWN5XzY0Yml0X2N0eCkKKwkJZGVzYyB8PSBMRUdBQ1lfNjRCX0NPTlRFWFQg PDwgR0VOOF9DVFhfTU9ERV9TSElGVDsKKwllbHNlCisJCWRlc2MgfD0gTEVHQUNZX0NPTlRFWFQg PDwgR0VOOF9DVFhfTU9ERV9TSElGVDsKIAlkZXNjIHw9IEdFTjhfQ1RYX0wzTExDX0NPSEVSRU5U OwogCWRlc2MgfD0gR0VOOF9DVFhfUFJJVklMRUdFOwogCWRlc2MgfD0gbHJjYTsKQEAgLTI5Miwx NiArMjk2LDE3IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19lbHNwX3dyaXRlKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKnJpbmcsCiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g ZGV2LT5kZXZfcHJpdmF0ZTsKIAl1aW50NjRfdCB0ZW1wID0gMDsKIAl1aW50MzJfdCBkZXNjWzRd OworCWJvb2wgbGVnYWN5XzY0Yml0X2N0eCA9IFVTRVNfRlVMTF80OEJJVF9QUEdUVChkZXYpOwog CiAJLyogWFhYOiBZb3UgbXVzdCBhbHdheXMgd3JpdGUgYm90aCBkZXNjcmlwdG9ycyBpbiB0aGUg b3JkZXIgYmVsb3cuICovCiAJaWYgKGN0eF9vYmoxKQotCQl0ZW1wID0gZXhlY2xpc3RzX2N0eF9k ZXNjcmlwdG9yKHJpbmcsIGN0eF9vYmoxKTsKKwkJdGVtcCA9IGV4ZWNsaXN0c19jdHhfZGVzY3Jp cHRvcihyaW5nLCBjdHhfb2JqMSwgbGVnYWN5XzY0Yml0X2N0eCk7CiAJZWxzZQogCQl0ZW1wID0g MDsKIAlkZXNjWzFdID0gKHUzMikodGVtcCA+PiAzMik7CiAJZGVzY1swXSA9ICh1MzIpdGVtcDsK IAotCXRlbXAgPSBleGVjbGlzdHNfY3R4X2Rlc2NyaXB0b3IocmluZywgY3R4X29iajApOworCXRl bXAgPSBleGVjbGlzdHNfY3R4X2Rlc2NyaXB0b3IocmluZywgY3R4X29iajAsIGxlZ2FjeV82NGJp dF9jdHgpOwogCWRlc2NbM10gPSAodTMyKSh0ZW1wID4+IDMyKTsKIAlkZXNjWzJdID0gKHUzMil0 ZW1wOwogCkBAIC0zMzIsMzcgKzMzNyw2MCBAQCBzdGF0aWMgaW50IGV4ZWNsaXN0c191cGRhdGVf Y29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqY3R4X29iaiwKIAlyZWdfc3RhdGVb Q1RYX1JJTkdfVEFJTCsxXSA9IHRhaWw7CiAJcmVnX3N0YXRlW0NUWF9SSU5HX0JVRkZFUl9TVEFS VCsxXSA9IGk5MTVfZ2VtX29ial9nZ3R0X29mZnNldChyaW5nX29iaik7CiAKLQkvKiBUcnVlIFBQ R1RUIHdpdGggZHluYW1pYyBwYWdlIGFsbG9jYXRpb246IHVwZGF0ZSBQRFAgcmVnaXN0ZXJzIGFu ZAotCSAqIHBvaW50IHRoZSB1bmFsbG9jYXRlZCBQRFBzIHRvIHRoZSBzY3JhdGNoIHBhZ2UKLQkg Ki8KLQlpZiAocHBndHQpIHsKKwlpZiAocHBndHQgJiYgVVNFU19GVUxMXzQ4QklUX1BQR1RUKHBw Z3R0LT5iYXNlLmRldikpIHsKKwkJLyogVHJ1ZSA2NGIgUFBHVFQgKDQ4Yml0IGNhbm9uaWNhbCkK KwkJICogUERQMF9ERVNDUklQVE9SIGNvbnRhaW5zIHRoZSBiYXNlIGFkZHJlc3MgdG8gUE1MNCBh bmQKKwkJICogb3RoZXIgUERQIERlc2NyaXB0b3JzIGFyZSBpZ25vcmVkCisJCSAqLworCQlyZWdf c3RhdGVbQ1RYX1BEUDBfVURXKzFdID0gdXBwZXJfMzJfYml0cyhwcGd0dC0+cG1sNC5kYWRkcik7 CisJCXJlZ19zdGF0ZVtDVFhfUERQMF9MRFcrMV0gPSBsb3dlcl8zMl9iaXRzKHBwZ3R0LT5wbWw0 LmRhZGRyKTsKKwl9IGVsc2UgaWYgKHBwZ3R0KSB7CisJCS8qIFRydWUgMzJiIFBQR1RUIHdpdGgg ZHluYW1pYyBwYWdlIGFsbG9jYXRpb246IHVwZGF0ZSBQRFAKKwkJICogcmVnaXN0ZXJzIGFuZCBw b2ludCB0aGUgdW5hbGxvY2F0ZWQgUERQcyB0byB0aGUgc2NyYXRjaCBwYWdlCisJCSAqLwogCQlp ZiAodGVzdF9iaXQoMywgcHBndHQtPnBkcC51c2VkX3BkcGVzKSkgewotCQkJcmVnX3N0YXRlW0NU WF9QRFAzX1VEVysxXSA9IHVwcGVyXzMyX2JpdHMocHBndHQtPnBkcC5wYWdlX2RpcmVjdG9yeVsz XS0+ZGFkZHIpOwotCQkJcmVnX3N0YXRlW0NUWF9QRFAzX0xEVysxXSA9IGxvd2VyXzMyX2JpdHMo cHBndHQtPnBkcC5wYWdlX2RpcmVjdG9yeVszXS0+ZGFkZHIpOworCQkJcmVnX3N0YXRlW0NUWF9Q RFAzX1VEVysxXSA9CisJCQkJCXVwcGVyXzMyX2JpdHMocHBndHQtPnBkcC5wYWdlX2RpcmVjdG9y eVszXS0+ZGFkZHIpOworCQkJcmVnX3N0YXRlW0NUWF9QRFAzX0xEVysxXSA9CisJCQkJCWxvd2Vy XzMyX2JpdHMocHBndHQtPnBkcC5wYWdlX2RpcmVjdG9yeVszXS0+ZGFkZHIpOwogCQl9IGVsc2Ug ewotCQkJcmVnX3N0YXRlW0NUWF9QRFAzX1VEVysxXSA9IHVwcGVyXzMyX2JpdHMocHBndHQtPnNj cmF0Y2hfcGQtPmRhZGRyKTsKLQkJCXJlZ19zdGF0ZVtDVFhfUERQM19MRFcrMV0gPSBsb3dlcl8z Ml9iaXRzKHBwZ3R0LT5zY3JhdGNoX3BkLT5kYWRkcik7CisJCQlyZWdfc3RhdGVbQ1RYX1BEUDNf VURXKzFdID0KKwkJCQkJdXBwZXJfMzJfYml0cyhwcGd0dC0+c2NyYXRjaF9wZC0+ZGFkZHIpOwor CQkJcmVnX3N0YXRlW0NUWF9QRFAzX0xEVysxXSA9CisJCQkJCWxvd2VyXzMyX2JpdHMocHBndHQt PnNjcmF0Y2hfcGQtPmRhZGRyKTsKIAkJfQogCQlpZiAodGVzdF9iaXQoMiwgcHBndHQtPnBkcC51 c2VkX3BkcGVzKSkgewotCQkJcmVnX3N0YXRlW0NUWF9QRFAyX1VEVysxXSA9IHVwcGVyXzMyX2Jp dHMocHBndHQtPnBkcC5wYWdlX2RpcmVjdG9yeVsyXS0+ZGFkZHIpOwotCQkJcmVnX3N0YXRlW0NU WF9QRFAyX0xEVysxXSA9IGxvd2VyXzMyX2JpdHMocHBndHQtPnBkcC5wYWdlX2RpcmVjdG9yeVsy XS0+ZGFkZHIpOworCQkJcmVnX3N0YXRlW0NUWF9QRFAyX1VEVysxXSA9CisJCQkJCXVwcGVyXzMy X2JpdHMocHBndHQtPnBkcC5wYWdlX2RpcmVjdG9yeVsyXS0+ZGFkZHIpOworCQkJcmVnX3N0YXRl W0NUWF9QRFAyX0xEVysxXSA9CisJCQkJCWxvd2VyXzMyX2JpdHMocHBndHQtPnBkcC5wYWdlX2Rp cmVjdG9yeVsyXS0+ZGFkZHIpOwogCQl9IGVsc2UgewotCQkJcmVnX3N0YXRlW0NUWF9QRFAyX1VE VysxXSA9IHVwcGVyXzMyX2JpdHMocHBndHQtPnNjcmF0Y2hfcGQtPmRhZGRyKTsKLQkJCXJlZ19z dGF0ZVtDVFhfUERQMl9MRFcrMV0gPSBsb3dlcl8zMl9iaXRzKHBwZ3R0LT5zY3JhdGNoX3BkLT5k YWRkcik7CisJCQlyZWdfc3RhdGVbQ1RYX1BEUDJfVURXKzFdID0KKwkJCQkJdXBwZXJfMzJfYml0 cyhwcGd0dC0+c2NyYXRjaF9wZC0+ZGFkZHIpOworCQkJcmVnX3N0YXRlW0NUWF9QRFAyX0xEVysx XSA9CisJCQkJCWxvd2VyXzMyX2JpdHMocHBndHQtPnNjcmF0Y2hfcGQtPmRhZGRyKTsKIAkJfQog CQlpZiAodGVzdF9iaXQoMSwgcHBndHQtPnBkcC51c2VkX3BkcGVzKSkgewotCQkJcmVnX3N0YXRl W0NUWF9QRFAxX1VEVysxXSA9IHVwcGVyXzMyX2JpdHMocHBndHQtPnBkcC5wYWdlX2RpcmVjdG9y eVsxXS0+ZGFkZHIpOwotCQkJcmVnX3N0YXRlW0NUWF9QRFAxX0xEVysxXSA9IGxvd2VyXzMyX2Jp dHMocHBndHQtPnBkcC5wYWdlX2RpcmVjdG9yeVsxXS0+ZGFkZHIpOworCQkJcmVnX3N0YXRlW0NU WF9QRFAxX1VEVysxXSA9CisJCQkJCXVwcGVyXzMyX2JpdHMocHBndHQtPnBkcC5wYWdlX2RpcmVj dG9yeVsxXS0+ZGFkZHIpOworCQkJcmVnX3N0YXRlW0NUWF9QRFAxX0xEVysxXSA9CisJCQkJCWxv d2VyXzMyX2JpdHMocHBndHQtPnBkcC5wYWdlX2RpcmVjdG9yeVsxXS0+ZGFkZHIpOwogCQl9IGVs c2UgewotCQkJcmVnX3N0YXRlW0NUWF9QRFAxX1VEVysxXSA9IHVwcGVyXzMyX2JpdHMocHBndHQt PnNjcmF0Y2hfcGQtPmRhZGRyKTsKLQkJCXJlZ19zdGF0ZVtDVFhfUERQMV9MRFcrMV0gPSBsb3dl cl8zMl9iaXRzKHBwZ3R0LT5zY3JhdGNoX3BkLT5kYWRkcik7CisJCQlyZWdfc3RhdGVbQ1RYX1BE UDFfVURXKzFdID0KKwkJCQkJdXBwZXJfMzJfYml0cyhwcGd0dC0+c2NyYXRjaF9wZC0+ZGFkZHIp OworCQkJcmVnX3N0YXRlW0NUWF9QRFAxX0xEVysxXSA9CisJCQkJCWxvd2VyXzMyX2JpdHMocHBn dHQtPnNjcmF0Y2hfcGQtPmRhZGRyKTsKIAkJfQogCQlpZiAodGVzdF9iaXQoMCwgcHBndHQtPnBk cC51c2VkX3BkcGVzKSkgewotCQkJcmVnX3N0YXRlW0NUWF9QRFAwX1VEVysxXSA9IHVwcGVyXzMy X2JpdHMocHBndHQtPnBkcC5wYWdlX2RpcmVjdG9yeVswXS0+ZGFkZHIpOwotCQkJcmVnX3N0YXRl W0NUWF9QRFAwX0xEVysxXSA9IGxvd2VyXzMyX2JpdHMocHBndHQtPnBkcC5wYWdlX2RpcmVjdG9y eVswXS0+ZGFkZHIpOworCQkJcmVnX3N0YXRlW0NUWF9QRFAwX1VEVysxXSA9CisJCQkJCXVwcGVy XzMyX2JpdHMocHBndHQtPnBkcC5wYWdlX2RpcmVjdG9yeVswXS0+ZGFkZHIpOworCQkJcmVnX3N0 YXRlW0NUWF9QRFAwX0xEVysxXSA9CisJCQkJCWxvd2VyXzMyX2JpdHMocHBndHQtPnBkcC5wYWdl X2RpcmVjdG9yeVswXS0+ZGFkZHIpOwogCQl9IGVsc2UgewotCQkJcmVnX3N0YXRlW0NUWF9QRFAw X1VEVysxXSA9IHVwcGVyXzMyX2JpdHMocHBndHQtPnNjcmF0Y2hfcGQtPmRhZGRyKTsKLQkJCXJl Z19zdGF0ZVtDVFhfUERQMF9MRFcrMV0gPSBsb3dlcl8zMl9iaXRzKHBwZ3R0LT5zY3JhdGNoX3Bk LT5kYWRkcik7CisJCQlyZWdfc3RhdGVbQ1RYX1BEUDBfVURXKzFdID0KKwkJCQkJdXBwZXJfMzJf Yml0cyhwcGd0dC0+c2NyYXRjaF9wZC0+ZGFkZHIpOworCQkJcmVnX3N0YXRlW0NUWF9QRFAwX0xE VysxXSA9CisJCQkJCWxvd2VyXzMyX2JpdHMocHBndHQtPnNjcmF0Y2hfcGQtPmRhZGRyKTsKIAkJ fQogCX0KIApAQCAtMTc3MSwzNiArMTc5OSw2OSBAQCBwb3B1bGF0ZV9scl9jb250ZXh0KHN0cnVj dCBpbnRlbF9jb250ZXh0ICpjdHgsIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpjdHhfbwog CXJlZ19zdGF0ZVtDVFhfUERQMF9VRFddID0gR0VOOF9SSU5HX1BEUF9VRFcocmluZywgMCk7CiAJ cmVnX3N0YXRlW0NUWF9QRFAwX0xEV10gPSBHRU44X1JJTkdfUERQX0xEVyhyaW5nLCAwKTsKIAot CS8qIFdpdGggZHluYW1pYyBwYWdlIGFsbG9jYXRpb24sIFBEUHMgbWF5IG5vdCBiZSBhbGxvY2F0 ZWQgYXQgdGhpcyBwb2ludCwKLQkgKiBQb2ludCB0aGUgdW5hbGxvY2F0ZWQgUERQcyB0byB0aGUg c2NyYXRjaCBwYWdlCi0JICovCi0JaWYgKHRlc3RfYml0KDMsIHBwZ3R0LT5wZHAudXNlZF9wZHBl cykpIHsKLQkJcmVnX3N0YXRlW0NUWF9QRFAzX1VEVysxXSA9IHVwcGVyXzMyX2JpdHMocHBndHQt PnBkcC5wYWdlX2RpcmVjdG9yeVszXS0+ZGFkZHIpOwotCQlyZWdfc3RhdGVbQ1RYX1BEUDNfTERX KzFdID0gbG93ZXJfMzJfYml0cyhwcGd0dC0+cGRwLnBhZ2VfZGlyZWN0b3J5WzNdLT5kYWRkcik7 Ci0JfSBlbHNlIHsKLQkJcmVnX3N0YXRlW0NUWF9QRFAzX1VEVysxXSA9IHVwcGVyXzMyX2JpdHMo cHBndHQtPnNjcmF0Y2hfcGQtPmRhZGRyKTsKLQkJcmVnX3N0YXRlW0NUWF9QRFAzX0xEVysxXSA9 IGxvd2VyXzMyX2JpdHMocHBndHQtPnNjcmF0Y2hfcGQtPmRhZGRyKTsKLQl9Ci0JaWYgKHRlc3Rf Yml0KDIsIHBwZ3R0LT5wZHAudXNlZF9wZHBlcykpIHsKLQkJcmVnX3N0YXRlW0NUWF9QRFAyX1VE VysxXSA9IHVwcGVyXzMyX2JpdHMocHBndHQtPnBkcC5wYWdlX2RpcmVjdG9yeVsyXS0+ZGFkZHIp OwotCQlyZWdfc3RhdGVbQ1RYX1BEUDJfTERXKzFdID0gbG93ZXJfMzJfYml0cyhwcGd0dC0+cGRw LnBhZ2VfZGlyZWN0b3J5WzJdLT5kYWRkcik7Ci0JfSBlbHNlIHsKLQkJcmVnX3N0YXRlW0NUWF9Q RFAyX1VEVysxXSA9IHVwcGVyXzMyX2JpdHMocHBndHQtPnNjcmF0Y2hfcGQtPmRhZGRyKTsKLQkJ cmVnX3N0YXRlW0NUWF9QRFAyX0xEVysxXSA9IGxvd2VyXzMyX2JpdHMocHBndHQtPnNjcmF0Y2hf cGQtPmRhZGRyKTsKLQl9Ci0JaWYgKHRlc3RfYml0KDEsIHBwZ3R0LT5wZHAudXNlZF9wZHBlcykp IHsKLQkJcmVnX3N0YXRlW0NUWF9QRFAxX1VEVysxXSA9IHVwcGVyXzMyX2JpdHMocHBndHQtPnBk cC5wYWdlX2RpcmVjdG9yeVsxXS0+ZGFkZHIpOwotCQlyZWdfc3RhdGVbQ1RYX1BEUDFfTERXKzFd ID0gbG93ZXJfMzJfYml0cyhwcGd0dC0+cGRwLnBhZ2VfZGlyZWN0b3J5WzFdLT5kYWRkcik7Ci0J fSBlbHNlIHsKLQkJcmVnX3N0YXRlW0NUWF9QRFAxX1VEVysxXSA9IHVwcGVyXzMyX2JpdHMocHBn dHQtPnNjcmF0Y2hfcGQtPmRhZGRyKTsKLQkJcmVnX3N0YXRlW0NUWF9QRFAxX0xEVysxXSA9IGxv d2VyXzMyX2JpdHMocHBndHQtPnNjcmF0Y2hfcGQtPmRhZGRyKTsKLQl9Ci0JaWYgKHRlc3RfYml0 KDAsIHBwZ3R0LT5wZHAudXNlZF9wZHBlcykpIHsKLQkJcmVnX3N0YXRlW0NUWF9QRFAwX1VEVysx XSA9IHVwcGVyXzMyX2JpdHMocHBndHQtPnBkcC5wYWdlX2RpcmVjdG9yeVswXS0+ZGFkZHIpOwot CQlyZWdfc3RhdGVbQ1RYX1BEUDBfTERXKzFdID0gbG93ZXJfMzJfYml0cyhwcGd0dC0+cGRwLnBh Z2VfZGlyZWN0b3J5WzBdLT5kYWRkcik7CisJaWYgKFVTRVNfRlVMTF80OEJJVF9QUEdUVChwcGd0 dC0+YmFzZS5kZXYpKSB7CisJCS8qIDY0YiBQUEdUVCAoNDhiaXQgY2Fub25pY2FsKQorCQkgKiBQ RFAwX0RFU0NSSVBUT1IgY29udGFpbnMgdGhlIGJhc2UgYWRkcmVzcyB0byBQTUw0IGFuZAorCQkg KiBvdGhlciBQRFAgRGVzY3JpcHRvcnMgYXJlIGlnbm9yZWQKKwkJICovCisJCXJlZ19zdGF0ZVtD VFhfUERQM19VRFcrMV0gPSAwOworCQlyZWdfc3RhdGVbQ1RYX1BEUDNfTERXKzFdID0gMDsKKwkJ cmVnX3N0YXRlW0NUWF9QRFAyX1VEVysxXSA9IDA7CisJCXJlZ19zdGF0ZVtDVFhfUERQMl9MRFcr MV0gPSAwOworCQlyZWdfc3RhdGVbQ1RYX1BEUDFfVURXKzFdID0gMDsKKwkJcmVnX3N0YXRlW0NU WF9QRFAxX0xEVysxXSA9IDA7CisJCXJlZ19zdGF0ZVtDVFhfUERQMF9VRFcrMV0gPSB1cHBlcl8z Ml9iaXRzKHBwZ3R0LT5wbWw0LmRhZGRyKTsKKwkJcmVnX3N0YXRlW0NUWF9QRFAwX0xEVysxXSA9 IGxvd2VyXzMyX2JpdHMocHBndHQtPnBtbDQuZGFkZHIpOwogCX0gZWxzZSB7Ci0JCXJlZ19zdGF0 ZVtDVFhfUERQMF9VRFcrMV0gPSB1cHBlcl8zMl9iaXRzKHBwZ3R0LT5zY3JhdGNoX3BkLT5kYWRk cik7Ci0JCXJlZ19zdGF0ZVtDVFhfUERQMF9MRFcrMV0gPSBsb3dlcl8zMl9iaXRzKHBwZ3R0LT5z Y3JhdGNoX3BkLT5kYWRkcik7CisJCS8qIDMyYiBQUEdUVAorCQkgKiBQRFAqX0RFU0NSSVBUT1Ig Y29udGFpbnMgdGhlIGJhc2UgYWRkcmVzcyBvZiBzcGFjZSBzdXBwb3J0ZWQuCisJCSAqIFdpdGgg ZHluYW1pYyBwYWdlIGFsbG9jYXRpb24sIFBEUHMgbWF5IG5vdCBiZSBhbGxvY2F0ZWQgYXQKKwkJ ICogdGhpcyBwb2ludC4gUG9pbnQgdGhlIHVuYWxsb2NhdGVkIFBEUHMgdG8gdGhlIHNjcmF0Y2gg cGFnZQorCQkgKi8KKwkJaWYgKHRlc3RfYml0KDMsIHBwZ3R0LT5wZHAudXNlZF9wZHBlcykpIHsK KwkJCXJlZ19zdGF0ZVtDVFhfUERQM19VRFcrMV0gPQorCQkJCQl1cHBlcl8zMl9iaXRzKHBwZ3R0 LT5wZHAucGFnZV9kaXJlY3RvcnlbM10tPmRhZGRyKTsKKwkJCXJlZ19zdGF0ZVtDVFhfUERQM19M RFcrMV0gPQorCQkJCQlsb3dlcl8zMl9iaXRzKHBwZ3R0LT5wZHAucGFnZV9kaXJlY3RvcnlbM10t PmRhZGRyKTsKKwkJfSBlbHNlIHsKKwkJCXJlZ19zdGF0ZVtDVFhfUERQM19VRFcrMV0gPQorCQkJ CQl1cHBlcl8zMl9iaXRzKHBwZ3R0LT5zY3JhdGNoX3BkLT5kYWRkcik7CisJCQlyZWdfc3RhdGVb Q1RYX1BEUDNfTERXKzFdID0KKwkJCQkJbG93ZXJfMzJfYml0cyhwcGd0dC0+c2NyYXRjaF9wZC0+ ZGFkZHIpOworCQl9CisJCWlmICh0ZXN0X2JpdCgyLCBwcGd0dC0+cGRwLnVzZWRfcGRwZXMpKSB7 CisJCQlyZWdfc3RhdGVbQ1RYX1BEUDJfVURXKzFdID0KKwkJCQkJdXBwZXJfMzJfYml0cyhwcGd0 dC0+cGRwLnBhZ2VfZGlyZWN0b3J5WzJdLT5kYWRkcik7CisJCQlyZWdfc3RhdGVbQ1RYX1BEUDJf TERXKzFdID0KKwkJCQkJbG93ZXJfMzJfYml0cyhwcGd0dC0+cGRwLnBhZ2VfZGlyZWN0b3J5WzJd LT5kYWRkcik7CisJCX0gZWxzZSB7CisJCQlyZWdfc3RhdGVbQ1RYX1BEUDJfVURXKzFdID0KKwkJ CQkJdXBwZXJfMzJfYml0cyhwcGd0dC0+c2NyYXRjaF9wZC0+ZGFkZHIpOworCQkJcmVnX3N0YXRl W0NUWF9QRFAyX0xEVysxXSA9CisJCQkJCWxvd2VyXzMyX2JpdHMocHBndHQtPnNjcmF0Y2hfcGQt PmRhZGRyKTsKKwkJfQorCQlpZiAodGVzdF9iaXQoMSwgcHBndHQtPnBkcC51c2VkX3BkcGVzKSkg eworCQkJcmVnX3N0YXRlW0NUWF9QRFAxX1VEVysxXSA9CisJCQkJCXVwcGVyXzMyX2JpdHMocHBn dHQtPnBkcC5wYWdlX2RpcmVjdG9yeVsxXS0+ZGFkZHIpOworCQkJcmVnX3N0YXRlW0NUWF9QRFAx X0xEVysxXSA9CisJCQkJCWxvd2VyXzMyX2JpdHMocHBndHQtPnBkcC5wYWdlX2RpcmVjdG9yeVsx XS0+ZGFkZHIpOworCQl9IGVsc2UgeworCQkJcmVnX3N0YXRlW0NUWF9QRFAxX1VEVysxXSA9CisJ CQkJCXVwcGVyXzMyX2JpdHMocHBndHQtPnNjcmF0Y2hfcGQtPmRhZGRyKTsKKwkJCXJlZ19zdGF0 ZVtDVFhfUERQMV9MRFcrMV0gPQorCQkJCQlsb3dlcl8zMl9iaXRzKHBwZ3R0LT5zY3JhdGNoX3Bk LT5kYWRkcik7CisJCX0KKwkJaWYgKHRlc3RfYml0KDAsIHBwZ3R0LT5wZHAudXNlZF9wZHBlcykp IHsKKwkJCXJlZ19zdGF0ZVtDVFhfUERQMF9VRFcrMV0gPQorCQkJCQl1cHBlcl8zMl9iaXRzKHBw Z3R0LT5wZHAucGFnZV9kaXJlY3RvcnlbMF0tPmRhZGRyKTsKKwkJCXJlZ19zdGF0ZVtDVFhfUERQ MF9MRFcrMV0gPQorCQkJCQlsb3dlcl8zMl9iaXRzKHBwZ3R0LT5wZHAucGFnZV9kaXJlY3Rvcnlb MF0tPmRhZGRyKTsKKwkJfSBlbHNlIHsKKwkJCXJlZ19zdGF0ZVtDVFhfUERQMF9VRFcrMV0gPQor CQkJCQl1cHBlcl8zMl9iaXRzKHBwZ3R0LT5zY3JhdGNoX3BkLT5kYWRkcik7CisJCQlyZWdfc3Rh dGVbQ1RYX1BEUDBfTERXKzFdID0KKwkJCQkJbG93ZXJfMzJfYml0cyhwcGd0dC0+c2NyYXRjaF9w ZC0+ZGFkZHIpOworCQl9CiAJfQogCiAJaWYgKHJpbmctPmlkID09IFJDUykgewotLSAKMi4xLjEK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==