From mboxrd@z Thu Jan 1 00:00:00 1970 From: Zhi Wang Subject: [RFC 12/29] drm/i915: gvt: vGPU life cycle management Date: Thu, 28 Jan 2016 18:21:34 +0800 Message-ID: <1453976511-27322-13-git-send-email-zhi.a.wang@intel.com> References: <1453976511-27322-1-git-send-email-zhi.a.wang@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 0644D6E7F7 for ; Thu, 28 Jan 2016 02:24:16 -0800 (PST) In-Reply-To: <1453976511-27322-1-git-send-email-zhi.a.wang@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, igvt-g@lists.01.org Cc: daniel.vetter@ffwll.ch, david.j.cowperthwaite@intel.com List-Id: intel-gfx@lists.freedesktop.org VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHZHUFUgbGlmZSBjeWNsZSBtYW5hZ2VtZW50IGZyYW1ld29y ay4gdkdQVSBpbnN0YW5jZQppcyBhIGNvbGxlY3Rpb24gb2YgdmlydHVhbCBHRU4gaGFyZHdhcmUg c3RhdHVzLCBsaWtlIHZpcnR1YWwgQ0ZHL01NSU8gcmVnaXN0ZXJzLApob3cgbXVjaCBHR1RUIG1l bW9yeSBzcGFjZS9GZW5jZSB0aGlzIHZHUFUgb3ducywgZXRjLgoKQSB2R1BVIGluc3RhbmNlIGNv bnNpc3RzIGZvbGxvd2luZyB2aXJ0dWFsaXplZC9saW1pdGVkIHJlc291cmNlczoKCi0gQ29uZmln dXJhdGlvbiBzcGFjZSh2aXJ0dWFsaXplZCkKLSBNTUlPIHJlZ2lzdGVycyh2aXJ0dWFsaXplZCkK LSBHR1RUIG1lbW9yeSBzcGFjZShsaW1pdGVkKQotIEdHVFQgcGFnZSB0YWJsZShzaGFkb3dlZCkK LSBGZW5jZShsaW1pdGVkKQoKVGhlIGZyYW1ld29yayBpcyByZXNwb25zaWJsZSBmb3IgY3JlYXRl aW5nL2Rlc3Ryb3lpbmcgYSB2R1BVIGluc3RhbmNlLAphbGxvY2F0aW5nL2ZyZWVpbmcgdGhlIHBl ci12R1BVIHJlc291cmNlIGZyb20gR1ZULWcgcmVzb3VyY2UgYWxsb2NhdG9yLApwcmVzZW50aW5n IHRoZW0gaW4gdGhlIHZpcnR1YWwgUFZJTkZPIHBhZ2UgbG9jYXRlZCBpbiB2aXJ0dWFsIE1NSU8g YmFyLCB3aGljaApwcm92aWRlcyB0aGUgYmFzaWMgZm91bmRhdGlvbiBibG9ja3MgdG8gR1ZULWcg Q0ZHL01NSU8gZW11bGF0aW9uIGZyYW1ld29yay4KCkEgYmlnIHBpY3R1cmUgaGVyZSBsb29rcyBs aWtlOgoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKwp8ICAgICAgICAgICAgICAgICAgICAgIFhFTi9LVk0gSHlw ZXJ2aXNvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS1eLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsK ICAgQ0ZHL01NSU8gZW11bGF0ZSByZXF1ZXN0IHwgICAgICAgIHwgRW11bGF0aW9uIGlzIGRvbmUK ICAgIGZyb20gaHlwZXJ2aXNvciAgICAgICAgIHwgICAgICAgIHwgUmV0dXJuIHRoZSByZXN1bHQg dG8gaHlwZXJ2aXNvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgfAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tdi0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKwp8ICAgICAgICAgICAgICAgICAgR1ZULWcgIENGRy9NTUlPIGVtdWxhdGlv biBmcmFtZXdvcmsgICAgICAgICAgICAgICAgICAgfAorLS0tLS0rLS0tLS1eLS0tLS0tLS0tLS0t LS0tLSstLS0tLV4tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLV4tLS0tLS0tKwogICAgICB8 ICAgICB8ICAgICAgICAgICAgICAgIHwgICAgIHwgICAgICAgICAgICAgICAgICAgICB8ICAgICAg IHwKICAgICAgfCAgICAgfCAqdkdQVSBpbnN0YW5jZSB8ICAgICB8ICAgICAgICAgICAgICp2R1BV IDIgfCAgICAgICB8CistLS0tLXYtLS0tLSstLS0tLS0tLS0tKy0tLS0tdi0tLS0tKy0tLS0tLS0t LS0tLS0rICstLS0tLXYtLS0tLS0tKy0tLS0tLS0rCnwgdkNvbmZpZ3VyYXRpb24gU3BhY2UgfHZH VFQvTU1JTy9GZW5jZSByZWdpc3RlcnN8IHwgIC4uLiAgICAgICAgICAgICAgICB8CistLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICstLS0tLS0tLS0tLS0t LS0tLS0tLS0rCiAgICAgICAgICAgICAgICAgICAgICAgICAgdkdQVSBsaWZlIGN5Y2xlIG1hbmFn ZW1lbnQKClNpZ25lZC1vZmYtYnk6IFpoaSBXYW5nIDx6aGkuYS53YW5nQGludGVsLmNvbT4KLS0t CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvTWFrZWZpbGUgICB8ICAgMiArLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Z0L2d2dC5oICAgICAgfCAgNjYgKysrKysrKysrKwogZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L2luc3RhbmNlLmMgfCAyMzUgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvbW1pby5jICAgICB8ICAzMiArKysr KwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3BhcmFtcy5jICAgfCAgIDEgKwogZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Z0L3BhcmFtcy5oICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3Z0L3JlZy5oICAgICAgfCAgMjkgKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdw dS5oICAgIHwgICA1ICstCiA4IGZpbGVzIGNoYW5nZWQsIDM2NSBpbnNlcnRpb25zKCspLCA2IGRl bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9p bnN0YW5jZS5jCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L01ha2VmaWxl IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L01ha2VmaWxlCmluZGV4IDVkMjhlZDEuLmY0ZGNm OWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9NYWtlZmlsZQorKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvTWFrZWZpbGUKQEAgLTEsNCArMSw0IEBACi1HVlRfU09V UkNFIDo9IGd2dC5vIHBhcmFtcy5vIGFwZXJ0dXJlX2dtLm8gbW1pby5vIGhhbmRsZXJzLm8gZmJf ZGVjb2Rlci5vCitHVlRfU09VUkNFIDo9IGd2dC5vIHBhcmFtcy5vIGFwZXJ0dXJlX2dtLm8gbW1p by5vIGhhbmRsZXJzLm8gaW5zdGFuY2UubyBmYl9kZWNvZGVyLm8KIAogY2NmbGFncy15CQkJKz0g LUkkKHNyYykgLUkkKHNyYykvLi4gLVdhbGwgLVdlcnJvciAtV25vLXVudXNlZC1mdW5jdGlvbgog aTkxNV9ndnQteQkJCTo9ICQoR1ZUX1NPVVJDRSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d2dC9ndnQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuaAppbmRleCA3 OThlMjE2Li5jNTgzMDVmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0 LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5oCkBAIC03NSw2ICs3NSwxNyBA QCBzdHJ1Y3QgZ3Z0X2dtX25vZGUgewogCXN0cnVjdCBkcm1fbW1fbm9kZSAqaGlnaF9nbV9ub2Rl OwogfTsKIAorc3RydWN0IGd2dF92aXJ0dWFsX21taW9fc3RhdGUgeworCXZvaWQgKnZyZWc7CisJ dm9pZCAqc3JlZzsKK307CisKK3N0cnVjdCBndnRfdmlydHVhbF9jZmdfc3RhdGUgeworCXVuc2ln bmVkIGNoYXIgc3BhY2VbR1ZUX0NGR19TUEFDRV9TWl07CisJYm9vbCBiYXJfbWFwcGVkW0dWVF9C QVJfTlVNXTsKKwl1NjQgYmFyX3NpemVbR1ZUX0JBUl9OVU1dOworfTsKKwogc3RydWN0IGd2dF92 aXJ0dWFsX2dtX3N0YXRlIHsKIAl1NjQgYXBlcnR1cmVfYmFzZTsKIAl2b2lkICphcGVydHVyZV9i YXNlX3ZhOwpAQCAtODksNiArMTAwLDggQEAgc3RydWN0IGd2dF92aXJ0dWFsX2dtX3N0YXRlIHsK IAogc3RydWN0IGd2dF92aXJ0dWFsX2RldmljZV9zdGF0ZSB7CiAJc3RydWN0IGd2dF92aXJ0dWFs X2dtX3N0YXRlIGdtOworCXN0cnVjdCBndnRfdmlydHVhbF9tbWlvX3N0YXRlIG1taW87CisJc3Ry dWN0IGd2dF92aXJ0dWFsX2NmZ19zdGF0ZSBjZmc7CiB9OwogCiBzdHJ1Y3Qgdmd0X2RldmljZSB7 CkBAIC05Niw2ICsxMDksNyBAQCBzdHJ1Y3Qgdmd0X2RldmljZSB7CiAJaW50IHZtX2lkOwogCXN0 cnVjdCBwZ3RfZGV2aWNlICpwZGV2OwogCWJvb2wgd2Fybl91bnRyYWNrOworCWF0b21pY190IGFj dGl2ZTsKIAlzdHJ1Y3QgZ3Z0X3ZpcnR1YWxfZGV2aWNlX3N0YXRlIHN0YXRlOwogfTsKIApAQCAt MzU5LDQgKzM3Myw1NiBAQCBleHRlcm4gYm9vbCBndnRfc2V0dXBfaW5pdGlhbF9tbWlvX3N0YXRl KHN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2KTsKIGV4dGVybiB2b2lkIGd2dF9jbGVhbl9tbWlvX2Vt dWxhdGlvbl9zdGF0ZShzdHJ1Y3QgcGd0X2RldmljZSAqcGRldik7CiBleHRlcm4gYm9vbCBndnRf c2V0dXBfbW1pb19lbXVsYXRpb25fc3RhdGUoc3RydWN0IHBndF9kZXZpY2UgKnBkZXYpOwogCitz dGF0aWMgaW5saW5lIHZvaWQgZ3Z0X3BjaV9iYXJfd3JpdGVfMzIoc3RydWN0IHZndF9kZXZpY2Ug KnZndCwgdWludDMyX3QgYmFyX29mZnNldCwgdWludDMyX3QgdmFsKQoreworCXVpbnQzMl90KiBj ZmdfcmVnOworCisJLyogQkFSIG9mZnNldCBzaG91bGQgYmUgMzIgYml0cyBhbGdpZW5kICovCisJ Y2ZnX3JlZyA9ICh1MzIgKikmdmd0LT5zdGF0ZS5jZmcuc3BhY2VbYmFyX29mZnNldCAmIH4zXTsK KworCS8qIG9ubHkgd3JpdGUgdGhlIGJpdHMgMzEtNCwgbGVhdmUgdGhlIDMtMCBiaXRzIHVuY2hh bmdlZCwgYXMgdGhleSBhcmUgcmVhZC1vbmx5ICovCisJKmNmZ19yZWcgPSAodmFsICYgMHhGRkZG RkZGMCkgfCAoKmNmZ19yZWcgJiAweEYpOworfQorCitzdGF0aWMgaW5saW5lIGludCBndnRfcGNp X21taW9faXNfZW5hYmxlZChzdHJ1Y3Qgdmd0X2RldmljZSAqdmd0KQoreworCXJldHVybiB2Z3Qt PnN0YXRlLmNmZy5zcGFjZVtHVlRfUkVHX0NGR19DT01NQU5EXSAmCisJCV9SRUdCSVRfQ0ZHX0NP TU1BTkRfTUVNT1JZOworfQorCisjZGVmaW5lIF9fdnJlZyh2Z3QsIG9mZikgKCoodTMyKikodmd0 LT5zdGF0ZS5tbWlvLnZyZWcgKyBvZmYpKQorI2RlZmluZSBfX3ZyZWc4KHZndCwgb2ZmKSAoKih1 OCopKHZndC0+c3RhdGUubW1pby52cmVnICsgb2ZmKSkKKyNkZWZpbmUgX192cmVnMTYodmd0LCBv ZmYpICgqKHUxNiopKHZndC0+c3RhdGUubW1pby52cmVnICsgb2ZmKSkKKyNkZWZpbmUgX192cmVn NjQodmd0LCBvZmYpICgqKHU2NCopKHZndC0+c3RhdGUubW1pby52cmVnICsgb2ZmKSkKKworI2Rl ZmluZSBfX3NyZWcodmd0LCBvZmYpICgqKHUzMiopKHZndC0+c3RhdGUubW1pby5zcmVnICsgb2Zm KSkKKyNkZWZpbmUgX19zcmVnOCh2Z3QsIG9mZikgKCoodTgqKSh2Z3QtPnN0YXRlLm1taW8uc3Jl ZyArIG9mZikpCisjZGVmaW5lIF9fc3JlZzE2KHZndCwgb2ZmKSAoKih1MTYqKSh2Z3QtPnN0YXRl Lm1taW8uc3JlZyArIG9mZikpCisjZGVmaW5lIF9fc3JlZzY0KHZndCwgb2ZmKSAoKih1NjQqKSh2 Z3QtPnN0YXRlLm1taW8uc3JlZyArIG9mZikpCisKK3N0YXRpYyBpbmxpbmUgdm9pZCBndnRfc2V0 X2luc3RhbmNlX29ubGluZShzdHJ1Y3Qgdmd0X2RldmljZSAqdmd0KQoreworCWF0b21pY19zZXQo JnZndC0+YWN0aXZlLCAxKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGd2dF9zZXRfaW5zdGFu Y2Vfb2ZmbGluZShzdHJ1Y3Qgdmd0X2RldmljZSAqdmd0KQoreworCWF0b21pY19zZXQoJnZndC0+ YWN0aXZlLCAwKTsKK30KKworc3RhdGljIGlubGluZSBib29sIGd2dF9pbnN0YW5jZV9pc19vbmxp bmUoc3RydWN0IHZndF9kZXZpY2UgKnZndCkKK3sKKwlyZXR1cm4gYXRvbWljX3JlYWQoJnZndC0+ YWN0aXZlKTsKK30KKworI2RlZmluZSBmb3JfZWFjaF9vbmxpbmVfaW5zdGFuY2UocGRldiwgdmd0 LCBpZCkgXAorICAgICAgIGlkcl9mb3JfZWFjaF9lbnRyeSgmcGRldi0+aW5zdGFuY2VfaWRyLCB2 Z3QsIGlkKSBcCisgICAgICAgICAgICAgICBpZiAoZ3Z0X2luc3RhbmNlX2lzX29ubGluZSh2Z3Qp KQorCitleHRlcm4gdm9pZCBndnRfaW5pdF9zaGFkb3dfbW1pb19yZWdpc3RlcihzdHJ1Y3Qgdmd0 X2RldmljZSAqcGRldik7CitleHRlcm4gdm9pZCBndnRfaW5pdF92aXJ0dWFsX21taW9fcmVnaXN0 ZXIoc3RydWN0IHZndF9kZXZpY2UgKnBkZXYpOworZXh0ZXJuIHN0cnVjdCB2Z3RfZGV2aWNlICpn dnRfY3JlYXRlX2luc3RhbmNlKHN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2LAorCQlzdHJ1Y3QgZ3Z0 X2luc3RhbmNlX2luZm8gKmluZm8pOworZXh0ZXJuIHZvaWQgZ3Z0X2Rlc3Ryb3lfaW5zdGFuY2Uo c3RydWN0IHZndF9kZXZpY2UgKnZndCk7CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Z0L2luc3RhbmNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvaW5z dGFuY2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wN2I3OTdhCi0tLSAv ZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2luc3RhbmNlLmMKQEAgLTAs MCArMSwyMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQoYykgMjAxMS0yMDE2IEludGVsIENvcnBvcmF0 aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdy YW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5 IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhl ICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmlj dGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2Us IGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisg KiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNv bnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVj dCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdo dCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAor ICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50 aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElT IFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Mg T1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJ RVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9S UyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBP UiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwg VE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKyAqIE9VVCBPRiBPUiBJTiBDT05ORUNU SU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhF CisgKiBTT0ZUV0FSRS4KKyAqLworCisjaW5jbHVkZSAiZ3Z0LmgiCisjaW5jbHVkZSAiaTkxNV92 Z3B1LmgiCisKK3N0YXRpYyB2b2lkIGRlc3Ryb3lfdmlydHVhbF9tbWlvX3N0YXRlKHN0cnVjdCB2 Z3RfZGV2aWNlICp2Z3QpCit7CisJc3RydWN0IGd2dF92aXJ0dWFsX2RldmljZV9zdGF0ZSAqc3Rh dGUgPSAmdmd0LT5zdGF0ZTsKKworCWlmIChzdGF0ZS0+bW1pby52cmVnKSB7CisJCXZmcmVlKHN0 YXRlLT5tbWlvLnZyZWcpOworCQlzdGF0ZS0+bW1pby52cmVnID0gTlVMTDsKKwl9CisJaWYgKHN0 YXRlLT5tbWlvLnNyZWcpIHsKKwkJdmZyZWUoc3RhdGUtPm1taW8uc3JlZyk7CisJCXN0YXRlLT5t bWlvLnNyZWcgPSBOVUxMOworCX0KK30KKworc3RhdGljIGJvb2wgY3JlYXRlX3ZpcnR1YWxfbW1p b19zdGF0ZShzdHJ1Y3Qgdmd0X2RldmljZSAqdmd0KQoreworCXN0cnVjdCBwZ3RfZGV2aWNlICpw ZGV2ID0gdmd0LT5wZGV2OworCXN0cnVjdCBndnRfdmlydHVhbF9kZXZpY2Vfc3RhdGUgKnN0YXRl ID0gJnZndC0+c3RhdGU7CisKKwlzdGF0ZS0+bW1pby52cmVnID0gdnphbGxvYyhwZGV2LT5tbWlv X3NpemUpOworCXN0YXRlLT5tbWlvLnNyZWcgPSB2emFsbG9jKHBkZXYtPm1taW9fc2l6ZSk7CisK KwlpZiAoc3RhdGUtPm1taW8udnJlZyA9PSBOVUxMIHx8IHN0YXRlLT5tbWlvLnNyZWcgPT0gTlVM TCApIHsKKwkJZ3Z0X2VycigiZmFpbCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIHZpcnR1YWwgc3Rh dGVzLiIpOworCQlnb3RvIGVycjsKKwl9CisKKwlndnRfaW5pdF9zaGFkb3dfbW1pb19yZWdpc3Rl cih2Z3QpOworCWd2dF9pbml0X3ZpcnR1YWxfbW1pb19yZWdpc3Rlcih2Z3QpOworCisJcmV0dXJu IHRydWU7CitlcnI6CisJZGVzdHJveV92aXJ0dWFsX21taW9fc3RhdGUodmd0KTsKKwlyZXR1cm4g ZmFsc2U7Cit9CisKK3N0YXRpYyB2b2lkIGluaXRfdmlydHVhbF9jZmdfc3BhY2Vfc3RhdGUoc3Ry dWN0IHZndF9kZXZpY2UgKnZndCwKKwlzdHJ1Y3QgZ3Z0X2luc3RhbmNlX2luZm8gKmluZm8pCit7 CisJc3RydWN0IHBndF9kZXZpY2UgKnBkZXYgPSB2Z3QtPnBkZXY7CisJc3RydWN0IGd2dF92aXJ0 dWFsX2RldmljZV9zdGF0ZSAqc3RhdGUgPSAmdmd0LT5zdGF0ZTsKKwlpbnQgaTsKKworCWNoYXIg KmNmZ19zcGFjZTsKKwl1MTYgKmdtY2hfY3RsOworCisJY2ZnX3NwYWNlID0gc3RhdGUtPmNmZy5z cGFjZTsKKworCW1lbWNweShjZmdfc3BhY2UsIHBkZXYtPmluaXRpYWxfY2ZnX3NwYWNlLCBHVlRf Q0ZHX1NQQUNFX1NaKTsKKwljZmdfc3BhY2VbR1ZUX1JFR19DRkdfU1BBQ0VfTVNBQ10gPSBzdGF0 ZS0+Y2ZnLmJhcl9zaXplWzFdOworCisJaWYgKGluZm8tPnByaW1hcnkgPT0gMCB8fCAoKGluZm8t PnByaW1hcnkgPT0gLTEpICYmICFndnQucHJpbWFyeSkpIHsKKwkJY2ZnX3NwYWNlW0dWVF9SRUdf Q0ZHX0NMQVNTX0NPREVdID0gR1ZUX1BDSV9DTEFTU19WR0E7CisJCWNmZ19zcGFjZVtHVlRfUkVH X0NGR19TVUJfQ0xBU1NfQ09ERV0gPSBHVlRfUENJX0NMQVNTX1ZHQV9PVEhFUjsKKwkJY2ZnX3Nw YWNlW0dWVF9SRUdfQ0ZHX0NMQVNTX1BST0dfSUZdID0gR1ZUX1BDSV9DTEFTU19WR0FfT1RIRVI7 CisJfQorCisJLyogU2hvdyBndWVzdCB0aGF0IHRoZXJlIGlzbid0IGFueSBzdG9sZW4gbWVtb3J5 LiovCisJZ21jaF9jdGwgPSAodTE2ICopKGNmZ19zcGFjZSArIF9SRUdfR01DSF9DT05UUk9MKTsK KwkqZ21jaF9jdGwgJj0gfihfUkVHQklUX0JEV19HTUNIX0dNU19NQVNLIDw8IF9SRUdCSVRfQkRX X0dNQ0hfR01TX1NISUZUKTsKKworCWd2dF9wY2lfYmFyX3dyaXRlXzMyKHZndCwgR1ZUX1JFR19D RkdfU1BBQ0VfQkFSMSwgcGh5c19hcGVydHVyZV9iYXNlKHBkZXYpKTsKKworCWNmZ19zcGFjZVtH VlRfUkVHX0NGR19DT01NQU5EXSAmPSB+KF9SRUdCSVRfQ0ZHX0NPTU1BTkRfSU8gfAorCQkJX1JF R0JJVF9DRkdfQ09NTUFORF9NRU1PUlkgfAorCQkJX1JFR0JJVF9DRkdfQ09NTUFORF9NQVNURVIp OworCisJLyogQ2xlYXIgdGhlIGJhciB1cHBlciAzMmJpdCBhbmQgbGV0IGh2bWxvYWRlciB0byBh c3NpZ24gdGhlIG5ldyB2YWx1ZSAqLworCW1lbXNldCgmY2ZnX3NwYWNlW0dWVF9SRUdfQ0ZHX1NQ QUNFX0JBUjAgKyA0XSwgMCwgNCk7CisJbWVtc2V0KCZjZmdfc3BhY2VbR1ZUX1JFR19DRkdfU1BB Q0VfQkFSMSArIDRdLCAwLCA0KTsKKworCXN0YXRlLT5jZmcuYmFyX3NpemVbMF0gPSBwZGV2LT5i YXJfc2l6ZVswXTsJLyogTU1JT0dUVCAqLworCXN0YXRlLT5jZmcuYmFyX3NpemVbMV0gPSBwZGV2 LT5iYXJfc2l6ZVsxXTsKKwlzdGF0ZS0+Y2ZnLmJhcl9zaXplWzJdID0gcGRldi0+YmFyX3NpemVb Ml07CS8qIFBJTyAqLworCXN0YXRlLT5jZmcuYmFyX3NpemVbM10gPSBwZGV2LT5iYXJfc2l6ZVsz XTsJLyogUk9NICovCisKKwlmb3IgKGkgPSAwOyBpIDwgR1ZUX0JBUl9OVU07IGkrKykKKwkJc3Rh dGUtPmNmZy5iYXJfbWFwcGVkW2ldID0gZmFsc2U7Cit9CisKK3N0YXRpYyB2b2lkIGRlc3Ryb3lf dmlydHVhbF9nbV9zdGF0ZShzdHJ1Y3Qgdmd0X2RldmljZSAqdmd0KQoreworCWd2dF9mcmVlX2dt X2FuZF9mZW5jZV9yZXNvdXJjZSh2Z3QpOworfQorCitzdGF0aWMgdm9pZCBwb3B1bGF0ZV9wdmlu Zm9fcGFnZShzdHJ1Y3Qgdmd0X2RldmljZSAqdmd0KQoreworCS8qIHNldHVwIHRoZSBiYWxsb29u aW5nIGluZm9ybWF0aW9uICovCisJX192cmVnNjQodmd0LCBfdmd0aWZfcmVnKG1hZ2ljKSkgPSBW R1RfTUFHSUM7CisJX192cmVnKHZndCwgX3ZndGlmX3JlZyh2ZXJzaW9uX21ham9yKSkgPSAxOwor CV9fdnJlZyh2Z3QsIF92Z3RpZl9yZWcodmVyc2lvbl9taW5vcikpID0gMDsKKwlfX3ZyZWcodmd0 LCBfdmd0aWZfcmVnKGRpc3BsYXlfcmVhZHkpKSA9IDA7CisJX192cmVnKHZndCwgX3ZndGlmX3Jl Zyh2Z3RfaWQpKSA9IHZndC0+aWQ7CisJX192cmVnKHZndCwgX3ZndGlmX3JlZyhhdmFpbF9ycy5t YXBwYWJsZV9nbWFkci5iYXNlKSkgPSBndnRfdmlzaWJsZV9nbV9iYXNlKHZndCk7CisJX192cmVn KHZndCwgX3ZndGlmX3JlZyhhdmFpbF9ycy5tYXBwYWJsZV9nbWFkci5zaXplKSkgPSBndnRfYXBl cnR1cmVfc3oodmd0KTsKKwlfX3ZyZWcodmd0LCBfdmd0aWZfcmVnKGF2YWlsX3JzLm5vbm1hcHBh YmxlX2dtYWRyLmJhc2UpKSA9IGd2dF9oaWRkZW5fZ21fYmFzZSh2Z3QpOworCV9fdnJlZyh2Z3Qs IF92Z3RpZl9yZWcoYXZhaWxfcnMubm9ubWFwcGFibGVfZ21hZHIuc2l6ZSkpID0gZ3Z0X2hpZGRl bl9nbV9zeih2Z3QpOworCisJX192cmVnKHZndCwgX3ZndGlmX3JlZyhhdmFpbF9ycy5mZW5jZV9u dW0pKSA9IGd2dF9mZW5jZV9zeih2Z3QpOworCWd2dF9pbmZvKCJmaWxsaW5nIFZHVF9QVklORk9f UEFHRSBmb3IgZG9tJWQ6IgorCQkJIiAgIHZpc2FibGVfZ21fYmFzZT0weCVsbHgsIHNpemU9MHgl bGx4IgorCQkJIiAgIGhpZGRlbl9nbV9iYXNlPTB4JWxseCwgc2l6ZT0weCVsbHgiCisJCQkiICAg ZmVuY2VfYmFzZT0lZCwgbnVtPSVkIiwKKwkJCXZndC0+aWQsCisJCQlndnRfdmlzaWJsZV9nbV9i YXNlKHZndCksIGd2dF9hcGVydHVyZV9zeih2Z3QpLAorCQkJZ3Z0X2hpZGRlbl9nbV9iYXNlKHZn dCksIGd2dF9oaWRkZW5fZ21fc3oodmd0KSwKKwkJCWd2dF9mZW5jZV9iYXNlKHZndCksIGd2dF9m ZW5jZV9zeih2Z3QpKTsKKworCUFTU0VSVChzaXplb2Yoc3RydWN0IHZndF9pZikgPT0gVkdUX1BW SU5GT19TSVpFKTsKK30KKworc3RhdGljIGJvb2wgY3JlYXRlX3ZpcnR1YWxfZ21fc3RhdGUoc3Ry dWN0IHZndF9kZXZpY2UgKnZndCwKKwkJc3RydWN0IGd2dF9pbnN0YW5jZV9pbmZvICppbmZvKQor eworCXN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2ID0gdmd0LT5wZGV2OworCXN0cnVjdCBndnRfdmly dHVhbF9kZXZpY2Vfc3RhdGUgKnN0YXRlID0gJnZndC0+c3RhdGU7CisKKwlpZiAoZ3Z0X2FsbG9j X2dtX2FuZF9mZW5jZV9yZXNvdXJjZSh2Z3QsIGluZm8pIDwgMCkgeworCQlndnRfZXJyKCJmYWls IHRvIGFsbG9jYXRlIGdyYXBoaWNzIG1lbW9yeSBhbmQgZmVuY2UiKTsKKwkJcmV0dXJuIGZhbHNl OworCX0KKworCXN0YXRlLT5nbS5hcGVydHVyZV9vZmZzZXQgPSBhcGVydHVyZV8yX2dtKHBkZXYs IHN0YXRlLT5nbS5hcGVydHVyZV9iYXNlKTsKKwlzdGF0ZS0+Z20uYXBlcnR1cmVfYmFzZV92YSA9 IHBoeXNfYXBlcnR1cmVfdmJhc2UocGRldikgKyBzdGF0ZS0+Z20uYXBlcnR1cmVfb2Zmc2V0Owor CisJcG9wdWxhdGVfcHZpbmZvX3BhZ2Uodmd0KTsKKworCXJldHVybiB0cnVlOworfQorCitzdGF0 aWMgdm9pZCBkZXN0cm95X3ZpcnR1YWxfZGV2aWNlX3N0YXRlKHN0cnVjdCB2Z3RfZGV2aWNlICp2 Z3QpCit7CisJZGVzdHJveV92aXJ0dWFsX21taW9fc3RhdGUodmd0KTsKKwlkZXN0cm95X3ZpcnR1 YWxfZ21fc3RhdGUodmd0KTsKK30KKworc3RhdGljIGJvb2wgY3JlYXRlX3ZpcnR1YWxfZGV2aWNl X3N0YXRlKHN0cnVjdCB2Z3RfZGV2aWNlICp2Z3QsCisJCXN0cnVjdCBndnRfaW5zdGFuY2VfaW5m byAqaW5mbykKK3sKKwlpZiAoIWNyZWF0ZV92aXJ0dWFsX21taW9fc3RhdGUodmd0KSkKKwkJcmV0 dXJuIGZhbHNlOworCisJaWYgKCFjcmVhdGVfdmlydHVhbF9nbV9zdGF0ZSh2Z3QsIGluZm8pKQor CQlyZXR1cm4gZmFsc2U7CisKKwlpbml0X3ZpcnR1YWxfY2ZnX3NwYWNlX3N0YXRlKHZndCwgaW5m byk7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBndnRfZGVzdHJveV9pbnN0YW5jZShzdHJ1 Y3Qgdmd0X2RldmljZSAqdmd0KQoreworCXN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2ID0gdmd0LT5w ZGV2OworCisJbXV0ZXhfbG9jaygmcGRldi0+bG9jayk7CisJZ3Z0X3NldF9pbnN0YW5jZV9vZmZs aW5lKHZndCk7CisJaWYgKHZndC0+aWQgIT0gLTEpCisJCWlkcl9yZW1vdmUoJnBkZXYtPmluc3Rh bmNlX2lkciwgdmd0LT5pZCk7CisJbXV0ZXhfdW5sb2NrKCZwZGV2LT5sb2NrKTsKKworCWh5cGVy dmlzb3JfaHZtX2V4aXQodmd0KTsKKwlkZXN0cm95X3ZpcnR1YWxfZGV2aWNlX3N0YXRlKHZndCk7 CisJdmZyZWUodmd0KTsKK30KKworc3RydWN0IHZndF9kZXZpY2UgKmd2dF9jcmVhdGVfaW5zdGFu Y2Uoc3RydWN0IHBndF9kZXZpY2UgKnBkZXYsCisJCXN0cnVjdCBndnRfaW5zdGFuY2VfaW5mbyAq aW5mbykKK3sKKwlzdHJ1Y3Qgdmd0X2RldmljZSAqdmd0ID0gTlVMTDsKKwlpbnQgaWQ7CisKKwln dnRfaW5mbygidm1faWQ9JWQsIGxvd19nbV9zej0lZE1CLCBoaWdoX2dtX3N6PSVkTUIsIGZlbmNl X3N6PSVkIiwKKwkJaW5mby0+ZG9taWQsIGluZm8tPmxvd19nbV9zeiwgaW5mby0+aGlnaF9nbV9z eiwgaW5mby0+ZmVuY2Vfc3opOworCisJdmd0ID0gdnphbGxvYyhzaXplb2YoKnZndCkpOworCWlm ICh2Z3QgPT0gTlVMTCkgeworCQlndnRfZXJyKCJmYWlsIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3Ig aW5zdGFuY2UuIik7CisJCXJldHVybiBOVUxMOworCX0KKworCW11dGV4X2xvY2soJnBkZXYtPmxv Y2spOworCisJZ3Z0X3NldF9pbnN0YW5jZV9vZmZsaW5lKHZndCk7CisJaWQgPSBpZHJfYWxsb2Mo JnBkZXYtPmluc3RhbmNlX2lkciwgdmd0LCAxLCBHVlRfTUFYX1ZHUFUgLSAxLCBHRlBfS0VSTkVM KTsKKwlpZiAoaWQgPCAwKSB7CisJCWd2dF9lcnIoImZhaWwgdG8gYWxsb2NhdGUgaWQgZm9yIHZn dCBpbnN0YW5jZS4iKTsKKwkJZ290byBlcnI7CisJfQorCisJbXV0ZXhfdW5sb2NrKCZwZGV2LT5s b2NrKTsKKworCXZndC0+dm1faWQgPSBpbmZvLT5kb21pZDsKKwl2Z3QtPmlkID0gaWQ7CisJdmd0 LT5wZGV2ID0gcGRldjsKKworCWlmICghY3JlYXRlX3ZpcnR1YWxfZGV2aWNlX3N0YXRlKHZndCwg aW5mbykpCisJCWdvdG8gZXJyOworCisJaWYgKGh5cGVydmlzb3JfaHZtX2luaXQodmd0KSA8IDAp CisJCWdvdG8gZXJyOworCisJZ3Z0X3NldF9pbnN0YW5jZV9vbmxpbmUodmd0KTsKKworCXJldHVy biB2Z3Q7CitlcnI6CisJbXV0ZXhfdW5sb2NrKCZwZGV2LT5sb2NrKTsKKwlndnRfZGVzdHJveV9p bnN0YW5jZSh2Z3QpOworCXJldHVybiBOVUxMOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L21taW8uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9tbWlvLmMKaW5k ZXggMGZiYWJkMi4uMjhlMTM5MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0 L21taW8uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvbW1pby5jCkBAIC0yODgsMyAr Mjg4LDM1IEBAIGVycjoKIAlndnRfY2xlYW5fbW1pb19lbXVsYXRpb25fc3RhdGUocGRldik7CiAJ cmV0dXJuIGZhbHNlOwogfQorCit2b2lkIGd2dF9pbml0X3ZpcnR1YWxfbW1pb19yZWdpc3Rlcihz dHJ1Y3Qgdmd0X2RldmljZSAqdmd0KQoreworCXN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2ID0gdmd0 LT5wZGV2OworCWludCBpOworCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwZGV2LT5tbWlvX3Np emU7IGkgKz0gc2l6ZW9mKHUzMikpIHsKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAg ICAgICAqIHNraXAgdGhlIGFyZWEgb2YgVkdUIFBWIElORk8gUEFHRSBiZWNhdXNlIHdlIG5lZWQg a2VlcAorICAgICAgICAgICAgICAgICAqIGl0cyBjb250ZW50IGFjcm9zcyBEb20wIFMzLgorICAg ICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgaWYgKGkgPj0gVkdUX1BWSU5GT19QQUdF ICYmCisgICAgICAgICAgICAgICAgICAgICAgICBpIDwgVkdUX1BWSU5GT19QQUdFICsgVkdUX1BW SU5GT19TSVpFKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg ICAgICAgICBfX3ZyZWcodmd0LCBpKSA9IHBkZXYtPmluaXRpYWxfbW1pb19zdGF0ZVtSRUdfSU5E RVgoaSldOworICAgICAgICB9CisKKyAgICAgICAgLyogc2V0IHRoZSBiaXQgMDoyIChUaHJlYWQg Qy1TdGF0ZSkgdG8gQzAKKyAgICAgICAgICogVE9ETzogY29uc2lkZXIgb3RoZXIgYml0IDM6MzEK KyAgICAgICAgICovCisgICAgICAgIF9fdnJlZyh2Z3QsIF9HRU42X0dUX1RIUkVBRF9TVEFUVVNf UkVHKSA9IDA7CisKKyAgICAgICAgLyogc2V0IHRoZSBiaXQgMDoyKENvcmUgQy1TdGF0ZSApIHRv IEMwICovCisgICAgICAgIF9fdnJlZyh2Z3QsIF9HRU42X0dUX0NPUkVfU1RBVFVTKSA9IDA7Cit9 CisKK3ZvaWQgZ3Z0X2luaXRfc2hhZG93X21taW9fcmVnaXN0ZXIoc3RydWN0IHZndF9kZXZpY2Ug KnZndCkKK3sKKwlzdHJ1Y3QgZ3Z0X3ZpcnR1YWxfZGV2aWNlX3N0YXRlICpzdGF0ZSA9ICZ2Z3Qt PnN0YXRlOworICAgICAgICBtZW1jcHkgKHN0YXRlLT5tbWlvLnNyZWcsIHZndC0+cGRldi0+aW5p dGlhbF9tbWlvX3N0YXRlLCB2Z3QtPnBkZXYtPm1taW9fc2l6ZSk7Cit9CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvcGFyYW1zLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dnQvcGFyYW1zLmMKaW5kZXggNmNkMzI0Yy4uZmNhNDliMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Z0L3BhcmFtcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9w YXJhbXMuYwpAQCAtMjUsNiArMjUsNyBAQAogCiBzdHJ1Y3QgZ3Z0X2tlcm5lbF9wYXJhbXMgZ3Z0 ID0gewogCS5lbmFibGUgPSB0cnVlLAorCS5wcmltYXJ5ID0gdHJ1ZSwKIAkuZGVidWcgPSAwLAog CS5kb20wX2xvd19nbV9zeiA9IDk2LAogCS5kb20wX2hpZ2hfZ21fc3ogPSAzODQsCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvcGFyYW1zLmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndnQvcGFyYW1zLmgKaW5kZXggMDUwNzg3MC4uODAyNTVjMyAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3BhcmFtcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d2dC9wYXJhbXMuaApAQCAtMjYsNiArMjYsNyBAQAogCiBzdHJ1Y3QgZ3Z0X2tlcm5lbF9wYXJh bXMgewogCWJvb2wgZW5hYmxlOworCWJvb2wgcHJpbWFyeTsKIAlpbnQgZGVidWc7CiAJaW50IGRv bTBfbG93X2dtX3N6OwogCWludCBkb20wX2hpZ2hfZ21fc3o7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndnQvcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvcmVnLmgK aW5kZXggNTY4MmUxYy4uMmVkYWY3YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3Z0L3JlZy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9yZWcuaApAQCAtMjcsMTIg KzI3LDM1IEBACiAjZGVmaW5lIEdWVF9DRkdfU1BBQ0VfU1oJMjU2CiAjZGVmaW5lIEdWVF9CQVJf TlVNCQk0CiAKLSNkZWZpbmUgR1ZUX1JFR19DRkdfU1BBQ0VfQkFSMAkweDEwCi0jZGVmaW5lIEdW VF9SRUdfQ0ZHX1NQQUNFX0JBUjEJMHgxOAotI2RlZmluZSBHVlRfUkVHX0NGR19TUEFDRV9CQVIy CTB4MjAKKyNkZWZpbmUgR1ZUX1BDSV9DTEFTU19WR0EJCQkweDAzCisjZGVmaW5lIEdWVF9QQ0lf Q0xBU1NfVkdBX09USEVSCQkJMHg4MAorCisjZGVmaW5lIEdWVF9SRUdfQ0ZHX1ZFTkRPUl9JRCAg ICAgICAgICAgICAgICAgICAweDAwCisjZGVmaW5lIEdWVF9SRUdfQ0ZHX0NPTU1BTkQgICAgICAg ICAgICAgICAgICAgICAweDA0CisjZGVmaW5lIF9SRUdCSVRfQ0ZHX0NPTU1BTkRfSU8gICAgICAg ICAgICAgICAgICAoMSA8PCAwKQorI2RlZmluZSBfUkVHQklUX0NGR19DT01NQU5EX01FTU9SWSAg ICAgICAgICAgICAgKDEgPDwgMSkKKyNkZWZpbmUgX1JFR0JJVF9DRkdfQ09NTUFORF9NQVNURVIg ICAgICAgICAgICAgICgxIDw8IDIpCisjZGVmaW5lIEdWVF9SRUdfQ0ZHX0NMQVNTX1BST0dfSUYg ICAgICAgICAgICAgICAweDA5CisjZGVmaW5lIEdWVF9SRUdfQ0ZHX1NVQl9DTEFTU19DT0RFICAg ICAgICAgICAgICAweDBBCisjZGVmaW5lIEdWVF9SRUdfQ0ZHX0NMQVNTX0NPREUgICAgICAgICAg ICAgICAgICAweDBCCisjZGVmaW5lIEdWVF9SRUdfQ0ZHX1NQQUNFX0JBUjAgICAgICAgICAgICAg ICAgICAweDEwCisjZGVmaW5lIEdWVF9SRUdfQ0ZHX1NQQUNFX0JBUjEgICAgICAgICAgICAgICAg ICAweDE4CisjZGVmaW5lIEdWVF9SRUdfQ0ZHX1NQQUNFX0JBUjIgICAgICAgICAgICAgICAgICAw eDIwCisjZGVmaW5lIEdWVF9SRUdfQ0ZHX1NQQUNFX0JBUl9ST00gICAgICAgICAgICAgICAweDMw CisjZGVmaW5lIEdWVF9SRUdfQ0ZHX1NQQUNFX01TQUMgICAgICAgICAgICAgICAgICAweDYyCisj ZGVmaW5lIEdWVF9SRUdfQ0ZHX1NXU0NJX1RSSUdHRVIgICAgICAgICAgICAgICAweEU4CisjZGVm aW5lIF9SRUdCSVRfQ0ZHX1NXU0NJX1NDSV9TRUxFQ1QgICAgICAgICAgICAoMSA8PCAxNSkKKyNk ZWZpbmUgX1JFR0JJVF9DRkdfU1dTQ0lfU0NJX1RSSUdHRVIgICAgICAgICAgIDEKKyNkZWZpbmUg R1ZUX1JFR19DRkdfT1BSRUdJT04gICAgICAgICAgICAgICAgICAgIDB4RkMKKworI2RlZmluZSBf UkVHX0dNQ0hfQ09OVFJPTCAgICAgICAgICAgICAgIDB4NTAKKyNkZWZpbmUgICAgX1JFR0JJVF9C RFdfR01DSF9HTVNfU0hJRlQgICA4CisjZGVmaW5lICAgIF9SRUdCSVRfQkRXX0dNQ0hfR01TX01B U0sgICAgMHhmZgogCiAjZGVmaW5lIF9QQ0hfR01CVVMyCQkJMHhjNTEwOAogCiAjZGVmaW5lIF9H RU42X0dEUlNUCQkJMHg5NDFjCisjZGVmaW5lIF9HRU42X0dUX1RIUkVBRF9TVEFUVVNfUkVHCTB4 MTM4MDVjCisjZGVmaW5lIF9HRU42X0dUX0NPUkVfU1RBVFVTCQkweDEzODA2MAogCiAjZW5kaWYK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV92Z3B1LmgKaW5kZXggMjFjNzdhMi4uYjZkOWZjNyAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmgKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV92Z3B1LmgKQEAgLTE2Myw4ICsxNjMsOSBAQCBzdHJ1Y3Qgdmd0X2lmIHsKIAl1 aW50MzJfdCAgcnN2NlsweDIwMC0yNV07ICAgIC8qIHBhZCB0byBvbmUgcGFnZSAqLwogfSBfX3Bh Y2tlZDsKIAotI2RlZmluZSB2Z3RpZl9yZWcoeCkgXAotCV9NTUlPKChWR1RfUFZJTkZPX1BBR0Ug KyAobG9uZykmKChzdHJ1Y3Qgdmd0X2lmICopTlVMTCktPngpKQorI2RlZmluZSBfdmd0aWZfcmVn KHgpIFwKKwkoKFZHVF9QVklORk9fUEFHRSArIChsb25nKSYoKHN0cnVjdCB2Z3RfaWYgKilOVUxM KS0+eCkpCisjZGVmaW5lIHZndGlmX3JlZyh4KSBfTU1JTyhfdmd0aWZfcmVnKHgpKQogCiBleHRl cm4gdm9pZCBpOTE1X2NoZWNrX3ZncHUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiBleHRlcm4g aW50IGludGVsX3ZndF9iYWxsb29uKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwotLSAKMS45LjEK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==