From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joonyoung Shim Subject: Re: [PATCH 1/5] drm: add plane support Date: Fri, 04 Nov 2011 11:22:10 +0900 Message-ID: <4EB34C52.2010104@samsung.com> References: <1320264203-18715-1-git-send-email-jbarnes@virtuousgeek.org> <1320264203-18715-2-git-send-email-jbarnes@virtuousgeek.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-reply-to: <1320264203-18715-2-git-send-email-jbarnes@virtuousgeek.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org Errors-To: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org To: Jesse Barnes Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, rob.clark@linaro.org List-Id: dri-devel@lists.freedesktop.org MTEvMDMvMjAxMSAwNTowMyBBTSwgSmVzc2UgQmFybmVzIOyTtCDquIA6Cj4gUGxhbmVzIGFyZSBh IGJpdCBsaWtlIGhhbGYtQ1JUQ3MuICBUaGV5IGhhdmUgYSBsb2NhdGlvbiBhbmQgZmIsIGJ1dAo+ IGRvbid0IGRyaXZlIG91dHB1dHMgZGlyZWN0bHkuICBBZGQgc3VwcG9ydCBmb3IgaGFuZGxpbmcg dGhlbSB0byB0aGUgY29yZQo+IEtNUyBjb2RlLgo+Cj4gU2lnbmVkLW9mZi1ieTogSmVzc2UgQmFy bmVzPGpiYXJuZXNAdmlydHVvdXNnZWVrLm9yZz4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9k cm1fY3J0Yy5jIHwgIDIzNiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLQo+ICAgZHJpdmVycy9ncHUvZHJtL2RybV9kcnYuYyAgfCAgICAzICsKPiAgIGluY2x1ZGUv ZHJtL2RybS5oICAgICAgICAgIHwgICAgMyArCj4gICBpbmNsdWRlL2RybS9kcm1fY3J0Yy5oICAg ICB8ICAgNzYgKysrKysrKysrKysrKystCj4gICBpbmNsdWRlL2RybS9kcm1fbW9kZS5oICAgICB8 ICAgMzMgKysrKysrCj4gICA1IGZpbGVzIGNoYW5nZWQsIDM0OCBpbnNlcnRpb25zKCspLCAzIGRl bGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Yy5jIGIv ZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMKPiBpbmRleCBmZTczOGYwLi4wZTEyOWIxIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Yy5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2RybV9jcnRjLmMKPiBAQCAtNTM1LDYgKzUzNSw0OCBAQCB2b2lkIGRybV9lbmNvZGVyX2Ns ZWFudXAoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQo+ICAgfQo+ICAgRVhQT1JUX1NZTUJP TChkcm1fZW5jb2Rlcl9jbGVhbnVwKTsKPgo+ICt2b2lkIGRybV9wbGFuZV9pbml0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICsJCSAgICB1bnNpZ25l ZCBsb25nIHBvc3NpYmxlX2NydGNzLAo+ICsJCSAgICBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1 bmNzICpmdW5jcywKPiArCQkgICAgdWludDMyX3QgKmZvcm1hdHMsIHVpbnQzMl90IGZvcm1hdF9j b3VudCkKPiArewo+ICsJbXV0ZXhfbG9jaygmZGV2LT5tb2RlX2NvbmZpZy5tdXRleCk7Cj4gKwo+ ICsJcGxhbmUtPmRldiA9IGRldjsKPiArCWRybV9tb2RlX29iamVjdF9nZXQoZGV2LCZwbGFuZS0+ YmFzZSwgRFJNX01PREVfT0JKRUNUX1BMQU5FKTsKPiArCXBsYW5lLT5mdW5jcyA9IGZ1bmNzOwo+ ICsJcGxhbmUtPmZvcm1hdF90eXBlcyA9IGttYWxsb2Moc2l6ZW9mKHVpbnQzMl90KSAqIGZvcm1h dF9jb3VudCwKPiArCQkJCSAgICAgIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFwbGFuZS0+Zm9ybWF0 X3R5cGVzKSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygib3V0IG9mIG1lbW9yeSB3aGVuIGFsbG9jYXRp bmcgcGxhbmVcbiIpOwo+ICsJCWRybV9tb2RlX29iamVjdF9wdXQoZGV2LCZwbGFuZS0+YmFzZSk7 Cj4gKwkJcmV0dXJuOwo+ICsJfQo+ICsKPiArCW1lbWNweShwbGFuZS0+Zm9ybWF0X3R5cGVzLCBm b3JtYXRzLCBmb3JtYXRfY291bnQpOwo+ICsJcGxhbmUtPmZvcm1hdF9jb3VudCA9IGZvcm1hdF9j b3VudDsKPiArCXBsYW5lLT5wb3NzaWJsZV9jcnRjcyA9IHBvc3NpYmxlX2NydGNzOwo+ICsKPiAr CWxpc3RfYWRkX3RhaWwoJnBsYW5lLT5oZWFkLCZkZXYtPm1vZGVfY29uZmlnLnBsYW5lX2xpc3Qp Owo+ICsJZGV2LT5tb2RlX2NvbmZpZy5udW1fcGxhbmUrKzsKPiArCj4gKwltdXRleF91bmxvY2so JmRldi0+bW9kZV9jb25maWcubXV0ZXgpOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0woZHJtX3BsYW5l X2luaXQpOwo+ICsKPiArdm9pZCBkcm1fcGxhbmVfY2xlYW51cChzdHJ1Y3QgZHJtX3BsYW5lICpw bGFuZSkKPiArewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHBsYW5lLT5kZXY7Cj4gKwo+ ICsJbXV0ZXhfbG9jaygmZGV2LT5tb2RlX2NvbmZpZy5tdXRleCk7Cj4gKwlrZnJlZShwbGFuZS0+ Zm9ybWF0X3R5cGVzKTsKPiArCWRybV9tb2RlX29iamVjdF9wdXQoZGV2LCZwbGFuZS0+YmFzZSk7 Cj4gKwlsaXN0X2RlbCgmcGxhbmUtPmhlYWQpOwo+ICsJZGV2LT5tb2RlX2NvbmZpZy5udW1fcGxh bmUtLTsKPiArCW11dGV4X3VubG9jaygmZGV2LT5tb2RlX2NvbmZpZy5tdXRleCk7Cj4gK30KPiAr RVhQT1JUX1NZTUJPTChkcm1fcGxhbmVfY2xlYW51cCk7Cj4gKwo+ICAgLyoqCj4gICAgKiBkcm1f bW9kZV9jcmVhdGUgLSBjcmVhdGUgYSBuZXcgZGlzcGxheSBtb2RlCj4gICAgKiBAZGV2OiBEUk0g ZGV2aWNlCj4gQEAgLTg2Niw2ICs5MDgsNyBAQCB2b2lkIGRybV9tb2RlX2NvbmZpZ19pbml0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJSU5JVF9MSVNUX0hFQUQoJmRldi0+bW9kZV9jb25m aWcuZW5jb2Rlcl9saXN0KTsKPiAgIAlJTklUX0xJU1RfSEVBRCgmZGV2LT5tb2RlX2NvbmZpZy5w cm9wZXJ0eV9saXN0KTsKPiAgIAlJTklUX0xJU1RfSEVBRCgmZGV2LT5tb2RlX2NvbmZpZy5wcm9w ZXJ0eV9ibG9iX2xpc3QpOwo+ICsJSU5JVF9MSVNUX0hFQUQoJmRldi0+bW9kZV9jb25maWcucGxh bmVfbGlzdCk7Cj4gICAJaWRyX2luaXQoJmRldi0+bW9kZV9jb25maWcuY3J0Y19pZHIpOwo+Cj4g ICAJbXV0ZXhfbG9jaygmZGV2LT5tb2RlX2NvbmZpZy5tdXRleCk7Cj4gQEAgLTE0NjYsNiArMTUw OSwxOTMgQEAgb3V0Ogo+ICAgfQo+Cj4gICAvKioKPiArICogZHJtX21vZGVfZ2V0cGxhbmVfcmVz IC0gZ2V0IHBsYW5lIGluZm8KPiArICogQGRldjogRFJNIGRldmljZQo+ICsgKiBAZGF0YTogaW9j dGwgZGF0YQo+ICsgKiBAZmlsZV9wcml2OiBEUk0gZmlsZSBpbmZvCj4gKyAqCj4gKyAqIFJldHVy biBhbiBwbGFuZSBjb3VudCBhbmQgc2V0IG9mIElEcy4KPiArICovCj4gK2ludCBkcm1fbW9kZV9n ZXRwbGFuZV9yZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiArCQkJICAg IHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX21vZGVfZ2V0 X3BsYW5lX3JlcyAqcGxhbmVfcmVzcCA9IGRhdGE7Cj4gKwlzdHJ1Y3QgZHJtX21vZGVfY29uZmln ICpjb25maWc7Cj4gKwlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKPiArCXVpbnQzMl90IF9fdXNl ciAqcGxhbmVfcHRyOwo+ICsJaW50IGNvcGllZCA9IDAsIHJldCA9IDA7Cj4gKwo+ICsJaWYgKCFk cm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX01PREVTRVQpKQo+ICsJCXJldHVybiAt RUlOVkFMOwo+ICsKPiArCW11dGV4X2xvY2soJmRldi0+bW9kZV9jb25maWcubXV0ZXgpOwo+ICsJ Y29uZmlnID0mZGV2LT5tb2RlX2NvbmZpZzsKPiArCj4gKwkvKgo+ICsJICogVGhpcyBpb2N0bCBp cyBjYWxsZWQgdHdpY2UsIG9uY2UgdG8gZGV0ZXJtaW5lIGhvdyBtdWNoIHNwYWNlIGlzCj4gKwkg KiBuZWVkZWQsIGFuZCB0aGUgMm5kIHRpbWUgdG8gZmlsbCBpdC4KPiArCSAqLwo+ICsJaWYgKGNv bmZpZy0+bnVtX3BsYW5lJiYKPiArCSAgICAocGxhbmVfcmVzcC0+Y291bnRfcGxhbmVzPj0gY29u ZmlnLT5udW1fcGxhbmUpKSB7Cj4gKwkJcGxhbmVfcHRyID0gKHVpbnQzMl90ICopKHVuc2lnbmVk IGxvbmcpcGxhbmVfcmVzcC0+cGxhbmVfaWRfcHRyOwo+ICsKPiArCQlsaXN0X2Zvcl9lYWNoX2Vu dHJ5KHBsYW5lLCZjb25maWctPnBsYW5lX2xpc3QsIGhlYWQpIHsKPiArCQkJaWYgKHB1dF91c2Vy KHBsYW5lLT5iYXNlLmlkLCBwbGFuZV9wdHIgKyBjb3BpZWQpKSB7Cj4gKwkJCQlyZXQgPSAtRUZB VUxUOwo+ICsJCQkJZ290byBvdXQ7Cj4gKwkJCX0KPiArCQkJY29waWVkKys7Cj4gKwkJfQo+ICsJ fQo+ICsJcGxhbmVfcmVzcC0+Y291bnRfcGxhbmVzID0gY29uZmlnLT5udW1fcGxhbmU7Cj4gKwo+ ICtvdXQ6Cj4gKwltdXRleF91bmxvY2soJmRldi0+bW9kZV9jb25maWcubXV0ZXgpOwo+ICsJcmV0 dXJuIHJldDsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGRybV9tb2RlX2dldHBsYW5lIC0gZ2V0IHBs YW5lIGluZm8KPiArICogQGRldjogRFJNIGRldmljZQo+ICsgKiBAZGF0YTogaW9jdGwgZGF0YQo+ ICsgKiBAZmlsZV9wcml2OiBEUk0gZmlsZSBpbmZvCj4gKyAqCj4gKyAqIFJldHVybiBwbGFuZSBp bmZvLCBpbmNsdWRpbmcgZm9ybWF0cyBzdXBwb3J0ZWQsIGdhbW1hIHNpemUsIGFueQo+ICsgKiBj dXJyZW50IGZiLCBldGMuCj4gKyAqLwo+ICtpbnQgZHJtX21vZGVfZ2V0cGxhbmUoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiArCQkJc3RydWN0IGRybV9maWxlICpmaWxlX3By aXYpCj4gK3sKPiArCXN0cnVjdCBkcm1fbW9kZV9nZXRfcGxhbmUgKnBsYW5lX3Jlc3AgPSBkYXRh Owo+ICsJc3RydWN0IGRybV9tb2RlX29iamVjdCAqb2JqOwo+ICsJc3RydWN0IGRybV9wbGFuZSAq cGxhbmU7Cj4gKwl1aW50MzJfdCBfX3VzZXIgKmZvcm1hdF9wdHI7Cj4gKwlpbnQgcmV0ID0gMDsK PiArCj4gKwlpZiAoIWRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfTU9ERVNFVCkp Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJbXV0ZXhfbG9jaygmZGV2LT5tb2RlX2NvbmZp Zy5tdXRleCk7Cj4gKwlvYmogPSBkcm1fbW9kZV9vYmplY3RfZmluZChkZXYsIHBsYW5lX3Jlc3At PnBsYW5lX2lkLAo+ICsJCQkJICAgRFJNX01PREVfT0JKRUNUX1BMQU5FKTsKPiArCWlmICghb2Jq KSB7Cj4gKwkJcmV0ID0gLUVJTlZBTDsKPiArCQlnb3RvIG91dDsKPiArCX0KPiArCXBsYW5lID0g b2JqX3RvX3BsYW5lKG9iaik7Cj4gKwo+ICsJaWYgKHBsYW5lLT5jcnRjKQo+ICsJCXBsYW5lX3Jl c3AtPmNydGNfaWQgPSBwbGFuZS0+Y3J0Yy0+YmFzZS5pZDsKPiArCWVsc2UKPiArCQlwbGFuZV9y ZXNwLT5jcnRjX2lkID0gMDsKPiArCj4gKwlpZiAocGxhbmUtPmZiKQo+ICsJCXBsYW5lX3Jlc3At PmZiX2lkID0gcGxhbmUtPmZiLT5iYXNlLmlkOwo+ICsJZWxzZQo+ICsJCXBsYW5lX3Jlc3AtPmZi X2lkID0gMDsKPiArCj4gKwlwbGFuZV9yZXNwLT5wbGFuZV9pZCA9IHBsYW5lLT5iYXNlLmlkOwo+ ICsJcGxhbmVfcmVzcC0+cG9zc2libGVfY3J0Y3MgPSBwbGFuZS0+cG9zc2libGVfY3J0Y3M7Cj4g KwlwbGFuZV9yZXNwLT5nYW1tYV9zaXplID0gcGxhbmUtPmdhbW1hX3NpemU7Cj4gKwo+ICsJLyoK PiArCSAqIFRoaXMgaW9jdGwgaXMgY2FsbGVkIHR3aWNlLCBvbmNlIHRvIGRldGVybWluZSBob3cg bXVjaCBzcGFjZSBpcwo+ICsJICogbmVlZGVkLCBhbmQgdGhlIDJuZCB0aW1lIHRvIGZpbGwgaXQu Cj4gKwkgKi8KPiArCWlmIChwbGFuZS0+Zm9ybWF0X2NvdW50JiYKPiArCSAgICAocGxhbmVfcmVz cC0+Y291bnRfZm9ybWF0X3R5cGVzPj0gcGxhbmUtPmZvcm1hdF9jb3VudCkpIHsKPiArCQlmb3Jt YXRfcHRyID0gKHVpbnQzMl90ICopKHVuc2lnbmVkIGxvbmcpcGxhbmVfcmVzcC0+Zm9ybWF0X3R5 cGVfcHRyOwo+ICsJCWlmIChjb3B5X3RvX3VzZXIoZm9ybWF0X3B0ciwKPiArCQkJCSBwbGFuZS0+ Zm9ybWF0X3R5cGVzLAo+ICsJCQkJIHNpemVvZih1aW50MzJfdCkgKiBwbGFuZS0+Zm9ybWF0X2Nv dW50KSkgewo+ICsJCQlyZXQgPSAtRUZBVUxUOwo+ICsJCQlnb3RvIG91dDsKPiArCQl9Cj4gKwl9 Cj4gKwlwbGFuZV9yZXNwLT5jb3VudF9mb3JtYXRfdHlwZXMgPSBwbGFuZS0+Zm9ybWF0X2NvdW50 Owo+ICsKPiArb3V0Ogo+ICsJbXV0ZXhfdW5sb2NrKCZkZXYtPm1vZGVfY29uZmlnLm11dGV4KTsK PiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBkcm1fbW9kZV9zZXRwbGFuZSAt IHNldCB1cCBvciB0ZWFyIGRvd24gYW4gcGxhbmUKPiArICogQGRldjogRFJNIGRldmljZQo+ICsg KiBAZGF0YTogaW9jdGwgZGF0YSoKPiArICogQGZpbGVfcHJpdmU6IERSTSBmaWxlIGluZm8KPiAr ICoKPiArICogU2V0IHBsYW5lIGluZm8sIGluY2x1ZGluZyBwbGFjZW1lbnQsIGZiLCBzY2FsaW5n LCBhbmQgb3RoZXIgZmFjdG9ycy4KPiArICogT3IgcGFzcyBhIE5VTEwgZmIgdG8gZGlzYWJsZS4K PiArICovCj4gK2ludCBkcm1fbW9kZV9zZXRwbGFuZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2 b2lkICpkYXRhLAo+ICsJCQlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdikKPiArewo+ICsJc3Ry dWN0IGRybV9tb2RlX3NldF9wbGFuZSAqcGxhbmVfcmVxID0gZGF0YTsKPiArCXN0cnVjdCBkcm1f bW9kZV9vYmplY3QgKm9iajsKPiArCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwo+ICsJc3RydWN0 IGRybV9jcnRjICpjcnRjOwo+ICsJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmI7Cj4gKwlpbnQg cmV0ID0gMDsKPiArCj4gKwlpZiAoIWRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJf TU9ERVNFVCkpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJbXV0ZXhfbG9jaygmZGV2LT5t b2RlX2NvbmZpZy5tdXRleCk7Cj4gKwo+ICsJLyoKPiArCSAqIEZpcnN0LCBmaW5kIHRoZSBwbGFu ZSwgY3J0YywgYW5kIGZiIG9iamVjdHMuICBJZiBub3QgYXZhaWxhYmxlLAo+ICsJICogd2UgZG9u J3QgYm90aGVyIHRvIGNhbGwgdGhlIGRyaXZlci4KPiArCSAqLwo+ICsJb2JqID0gZHJtX21vZGVf b2JqZWN0X2ZpbmQoZGV2LCBwbGFuZV9yZXEtPnBsYW5lX2lkLAo+ICsJCQkJICAgRFJNX01PREVf T0JKRUNUX1BMQU5FKTsKPiArCWlmICghb2JqKSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygiVW5rbm93 biBwbGFuZSBJRCAlZFxuIiwKPiArCQkJICAgICAgcGxhbmVfcmVxLT5wbGFuZV9pZCk7Cj4gKwkJ cmV0ID0gLUVJTlZBTDsKPiArCQlnb3RvIG91dDsKPiArCX0KPiArCXBsYW5lID0gb2JqX3RvX3Bs YW5lKG9iaik7Cj4gKwo+ICsJLyogTm8gZmIgbWVhbnMgc2h1dCBpdCBkb3duICovCj4gKwlpZiAo IXBsYW5lX3JlcS0+ZmJfaWQpIHsKPiArCQlwbGFuZS0+ZnVuY3MtPmRpc2FibGVfcGxhbmUocGxh bmUpOwo+ICsJCWdvdG8gb3V0Owo+ICsJfQo+ICsKPiArCW9iaiA9IGRybV9tb2RlX29iamVjdF9m aW5kKGRldiwgcGxhbmVfcmVxLT5jcnRjX2lkLAo+ICsJCQkJICAgRFJNX01PREVfT0JKRUNUX0NS VEMpOwo+ICsJaWYgKCFvYmopIHsKPiArCQlEUk1fREVCVUdfS01TKCJVbmtub3duIGNydGMgSUQg JWRcbiIsCj4gKwkJCSAgICAgIHBsYW5lX3JlcS0+Y3J0Y19pZCk7Cj4gKwkJcmV0ID0gLUVJTlZB TDsKPiArCQlnb3RvIG91dDsKPiArCX0KPiArCWNydGMgPSBvYmpfdG9fY3J0YyhvYmopOwo+ICsK PiArCW9iaiA9IGRybV9tb2RlX29iamVjdF9maW5kKGRldiwgcGxhbmVfcmVxLT5mYl9pZCwKPiAr CQkJCSAgIERSTV9NT0RFX09CSkVDVF9GQik7Cj4gKwlpZiAoIW9iaikgewo+ICsJCURSTV9ERUJV R19LTVMoIlVua25vd24gZnJhbWVidWZmZXIgSUQgJWRcbiIsCj4gKwkJCSAgICAgIHBsYW5lX3Jl cS0+ZmJfaWQpOwo+ICsJCXJldCA9IC1FSU5WQUw7Cj4gKwkJZ290byBvdXQ7Cj4gKwl9Cj4gKwlm YiA9IG9ial90b19mYihvYmopOwo+ICsKPiArCXJldCA9IHBsYW5lLT5mdW5jcy0+dXBkYXRlX3Bs YW5lKHBsYW5lLCBjcnRjLCBmYiwKPiArCQkJCQkgcGxhbmVfcmVxLT5jcnRjX3gsIHBsYW5lX3Jl cS0+Y3J0Y195LAo+ICsJCQkJCSBwbGFuZV9yZXEtPmNydGNfdywgcGxhbmVfcmVxLT5jcnRjX2gs Cj4gKwkJCQkJIHBsYW5lX3JlcS0+c3JjX3gsIHBsYW5lX3JlcS0+c3JjX3ksCj4gKwkJCQkJIHBs YW5lX3JlcS0+c3JjX2gsIHBsYW5lX3JlcS0+c3JjX3cpOwo+ICsKPiArb3V0Ogo+ICsJbXV0ZXhf dW5sb2NrKCZkZXYtPm1vZGVfY29uZmlnLm11dGV4KTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9 Cj4gKwo+ICsvKioKPiAgICAqIGRybV9tb2RlX3NldGNydGMgLSBzZXQgQ1JUQyBjb25maWd1cmF0 aW9uCj4gICAgKiBAaW5vZGU6IGlub2RlIGZyb20gdGhlIGlvY3RsCj4gICAgKiBAZmlscDogZmls ZSAqIGZyb20gdGhlIGlvY3RsCj4gQEAgLTE2ODgsMTEgKzE5MTgsMTMgQEAgaW50IGRybV9tb2Rl X2FkZGZiKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAJCXJldHVybiAtRUlOVkFMOwo+Cj4g ICAJaWYgKChjb25maWctPm1pbl93aWR0aD4gIHItPndpZHRoKSB8fCAoci0+d2lkdGg+ICBjb25m aWctPm1heF93aWR0aCkpIHsKPiAtCQlEUk1fRVJST1IoIm1vZGUgbmV3IGZyYW1lYnVmZmVyIHdp ZHRoIG5vdCB3aXRoaW4gbGltaXRzXG4iKTsKPiArCQlEUk1fRVJST1IoImJhZCBmcmFtZWJ1ZmZl ciB3aWR0aCAlZCwgc2hvdWxkIGJlPj0gJWQmJiAgPD0gJWRcbiIsCj4gKwkJCSAgci0+d2lkdGgs IGNvbmZpZy0+bWluX3dpZHRoLCBjb25maWctPm1heF93aWR0aCk7Cj4gICAJCXJldHVybiAtRUlO VkFMOwo+ICAgCX0KPiAgIAlpZiAoKGNvbmZpZy0+bWluX2hlaWdodD4gIHItPmhlaWdodCkgfHwg KHItPmhlaWdodD4gIGNvbmZpZy0+bWF4X2hlaWdodCkpIHsKPiAtCQlEUk1fRVJST1IoIm1vZGUg bmV3IGZyYW1lYnVmZmVyIGhlaWdodCBub3Qgd2l0aGluIGxpbWl0c1xuIik7Cj4gKwkJRFJNX0VS Uk9SKCJiYWQgZnJhbWVidWZmZXIgaGVpZ2h0ICVkLCBzaG91bGQgYmU+PSAlZCYmICA8PSAlZFxu IiwKPiArCQkJICByLT5oZWlnaHQsIGNvbmZpZy0+bWluX2hlaWdodCwgY29uZmlnLT5tYXhfaGVp Z2h0KTsKPiAgIAkJcmV0dXJuIC1FSU5WQUw7Cj4gICAJfQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9kcm1fZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2Rydi5jCj4gaW5kZXgg OTNhMTEyZC4uMTVkYTYxOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2Rydi5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9kcnYuYwo+IEBAIC0xMzUsOCArMTM1LDExIEBA IHN0YXRpYyBzdHJ1Y3QgZHJtX2lvY3RsX2Rlc2MgZHJtX2lvY3Rsc1tdID0gewo+ICAgCURSTV9J T0NUTF9ERUYoRFJNX0lPQ1RMX0dFTV9PUEVOLCBkcm1fZ2VtX29wZW5faW9jdGwsIERSTV9BVVRI fERSTV9VTkxPQ0tFRCksCj4KPiAgIAlEUk1fSU9DVExfREVGKERSTV9JT0NUTF9NT0RFX0dFVFJF U09VUkNFUywgZHJtX21vZGVfZ2V0cmVzb3VyY2VzLCBEUk1fTUFTVEVSfERSTV9DT05UUk9MX0FM TE9XfERSTV9VTkxPQ0tFRCksCj4gKwlEUk1fSU9DVExfREVGKERSTV9JT0NUTF9NT0RFX0dFVFBM QU5FUkVTT1VSQ0VTLCBkcm1fbW9kZV9nZXRwbGFuZV9yZXMsIERSTV9NQVNURVJ8RFJNX0NPTlRS T0xfQUxMT1d8RFJNX1VOTE9DS0VEKSwKPiAgIAlEUk1fSU9DVExfREVGKERSTV9JT0NUTF9NT0RF X0dFVENSVEMsIGRybV9tb2RlX2dldGNydGMsIERSTV9NQVNURVJ8RFJNX0NPTlRST0xfQUxMT1d8 RFJNX1VOTE9DS0VEKSwKPiAgIAlEUk1fSU9DVExfREVGKERSTV9JT0NUTF9NT0RFX1NFVENSVEMs IGRybV9tb2RlX3NldGNydGMsIERSTV9NQVNURVJ8RFJNX0NPTlRST0xfQUxMT1d8RFJNX1VOTE9D S0VEKSwKPiArCURSTV9JT0NUTF9ERUYoRFJNX0lPQ1RMX01PREVfR0VUUExBTkUsIGRybV9tb2Rl X2dldHBsYW5lLCBEUk1fTUFTVEVSfERSTV9DT05UUk9MX0FMTE9XfERSTV9VTkxPQ0tFRCksCj4g KwlEUk1fSU9DVExfREVGKERSTV9JT0NUTF9NT0RFX1NFVFBMQU5FLCBkcm1fbW9kZV9zZXRwbGFu ZSwgRFJNX01BU1RFUnxEUk1fQ09OVFJPTF9BTExPV3xEUk1fVU5MT0NLRUQpLAo+ICAgCURSTV9J T0NUTF9ERUYoRFJNX0lPQ1RMX01PREVfQ1VSU09SLCBkcm1fbW9kZV9jdXJzb3JfaW9jdGwsIERS TV9NQVNURVJ8RFJNX0NPTlRST0xfQUxMT1d8RFJNX1VOTE9DS0VEKSwKPiAgIAlEUk1fSU9DVExf REVGKERSTV9JT0NUTF9NT0RFX0dFVEdBTU1BLCBkcm1fbW9kZV9nYW1tYV9nZXRfaW9jdGwsIERS TV9NQVNURVJ8RFJNX1VOTE9DS0VEKSwKPiAgIAlEUk1fSU9DVExfREVGKERSTV9JT0NUTF9NT0RF X1NFVEdBTU1BLCBkcm1fbW9kZV9nYW1tYV9zZXRfaW9jdGwsIERSTV9NQVNURVJ8RFJNX1VOTE9D S0VEKSwKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtLmggYi9pbmNsdWRlL2RybS9kcm0u aAo+IGluZGV4IDRiZTMzYjQuLjI4OTc5NjcgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJt LmgKPiArKysgYi9pbmNsdWRlL2RybS9kcm0uaAo+IEBAIC03MTQsNiArNzE0LDkgQEAgc3RydWN0 IGRybV9nZXRfY2FwIHsKPiAgICNkZWZpbmUgRFJNX0lPQ1RMX01PREVfQ1JFQVRFX0RVTUIgRFJN X0lPV1IoMHhCMiwgc3RydWN0IGRybV9tb2RlX2NyZWF0ZV9kdW1iKQo+ICAgI2RlZmluZSBEUk1f SU9DVExfTU9ERV9NQVBfRFVNQiAgICBEUk1fSU9XUigweEIzLCBzdHJ1Y3QgZHJtX21vZGVfbWFw X2R1bWIpCj4gICAjZGVmaW5lIERSTV9JT0NUTF9NT0RFX0RFU1RST1lfRFVNQiAgICBEUk1fSU9X UigweEI0LCBzdHJ1Y3QgZHJtX21vZGVfZGVzdHJveV9kdW1iKQo+ICsjZGVmaW5lIERSTV9JT0NU TF9NT0RFX0dFVFBMQU5FUkVTT1VSQ0VTIERSTV9JT1dSKDB4QjUsIHN0cnVjdCBkcm1fbW9kZV9n ZXRfcGxhbmVfcmVzKQo+ICsjZGVmaW5lIERSTV9JT0NUTF9NT0RFX0dFVFBMQU5FCURSTV9JT1dS KDB4QjYsIHN0cnVjdCBkcm1fbW9kZV9nZXRfcGxhbmUpCj4gKyNkZWZpbmUgRFJNX0lPQ1RMX01P REVfU0VUUExBTkUJRFJNX0lPV1IoMHhCNywgc3RydWN0IGRybV9tb2RlX3NldF9wbGFuZSkKPgo+ ICAgLyoqCj4gICAgKiBEZXZpY2Ugc3BlY2lmaWMgaW9jdGxzIHNob3VsZCBvbmx5IGJlIGluIHRo ZWlyIHJlc3BlY3RpdmUgaGVhZGVycwo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fY3J0 Yy5oIGIvaW5jbHVkZS9kcm0vZHJtX2NydGMuaAo+IGluZGV4IDgwMjA3OTguLmI0NTE5ZjggMTAw NjQ0Cj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2NydGMuaAo+ICsrKyBiL2luY2x1ZGUvZHJtL2Ry bV9jcnRjLmgKPiBAQCAtNDQsNiArNDQsNyBAQCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyOwo+ICAg I2RlZmluZSBEUk1fTU9ERV9PQkpFQ1RfUFJPUEVSVFkgMHhiMGIwYjBiMAo+ICAgI2RlZmluZSBE Uk1fTU9ERV9PQkpFQ1RfRkIgMHhmYmZiZmJmYgo+ICAgI2RlZmluZSBEUk1fTU9ERV9PQkpFQ1Rf QkxPQiAweGJiYmJiYmJiCj4gKyNkZWZpbmUgRFJNX01PREVfT0JKRUNUX1BMQU5FIDB4ZWVlZWVl ZWUKPgo+ICAgc3RydWN0IGRybV9tb2RlX29iamVjdCB7Cj4gICAJdWludDMyX3QgaWQ7Cj4gQEAg LTI3OCw2ICsyNzksNyBAQCBzdHJ1Y3QgZHJtX2NydGM7Cj4gICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rv cjsKPiAgIHN0cnVjdCBkcm1fZW5jb2RlcjsKPiAgIHN0cnVjdCBkcm1fcGVuZGluZ192Ymxhbmtf ZXZlbnQ7Cj4gK3N0cnVjdCBkcm1fcGxhbmU7Cj4KPiAgIC8qKgo+ICAgICogZHJtX2NydGNfZnVu Y3MgLSBjb250cm9sIENSVENzIGZvciBhIGdpdmVuIGRldmljZQo+IEBAIC01MzYsNiArNTM4LDYz IEBAIHN0cnVjdCBkcm1fY29ubmVjdG9yIHsKPiAgIH07Cj4KPiAgIC8qKgo+ICsgKiBkcm1fcGxh bmVfZnVuY3MgLSBkcml2ZXIgcGxhbmUgY29udHJvbCBmdW5jdGlvbnMKPiArICogQHVwZGF0ZV9w bGFuZTogdXBkYXRlIHRoZSBwbGFuZSBjb25maWd1cmF0aW9uCj4gKyAqLwo+ICtzdHJ1Y3QgZHJt X3BsYW5lX2Z1bmNzIHsKPiArCWludCAoKnVwZGF0ZV9wbGFuZSkoc3RydWN0IGRybV9wbGFuZSAq cGxhbmUsCj4gKwkJCSAgICBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHN0cnVjdCBkcm1fZnJhbWVi dWZmZXIgKmZiLAo+ICsJCQkgICAgaW50IGNydGNfeCwgaW50IGNydGNfeSwKPiArCQkJICAgIHVu c2lnbmVkIGludCBjcnRjX3csIHVuc2lnbmVkIGludCBjcnRjX2gsCj4gKwkJCSAgICB1aW50MzJf dCBzcmNfeCwgdWludDMyX3Qgc3JjX3ksCj4gKwkJCSAgICB1aW50MzJfdCBzcmNfdywgdWludDMy X3Qgc3JjX2gpOwo+ICsJaW50ICgqZGlzYWJsZV9wbGFuZSkoc3RydWN0IGRybV9wbGFuZSAqcGxh bmUpOwo+ICt9Owo+ICsKPiArLyoqCj4gKyAqIGRybV9wbGFuZSAtIGNlbnRyYWwgRFJNIHBsYW5l IGNvbnRyb2wgc3RydWN0dXJlCj4gKyAqIEBkZXY6IERSTSBkZXZpY2UgdGhpcyBwbGFuZSBiZWxv bmdzIHRvCj4gKyAqIEBrZGV2OiBrZXJuZWwgZGV2aWNlCj4gKyAqIEBhdHRyOiBrZGV2IGF0dHJp YnV0ZXMKPiArICogQGhlYWQ6IGZvciBsaXN0IG1hbmFnZW1lbnQKPiArICogQGJhc2U6IGJhc2Ug bW9kZSBvYmplY3QKPiArICogQHBvc3NpYmxlX2NydGNzOiBwaXBlcyB0aGlzIHBsYW5lIGNhbiBi ZSBib3VuZCB0bwo+ICsgKiBAZm9ybWF0X3R5cGVzOiBhcnJheSBvZiBmb3JtYXRzIHN1cHBvcnRl ZCBieSB0aGlzIHBsYW5lCj4gKyAqIEBmb3JtYXRfY291bnQ6IG51bWJlciBvZiBmb3JtYXRzIHN1 cHBvcnRlZAo+ICsgKiBAY3J0YzogY3VycmVudGx5IGJvdW5kIENSVEMKPiArICogQGZiOiBjdXJy ZW50bHkgYm91bmQgZmIKPiArICogQGdhbW1hX3NpemU6IHNpemUgb2YgZ2FtbWEgdGFibGUKPiAr ICogQGdhbW1hX3N0b3JlOiBnYW1tYSBjb3JyZWN0aW9uIHRhYmxlCj4gKyAqIEBlbmFibGVkOiBl bmFibGVkIGZsYWcKPiArICogQGZ1bmNzOiBoZWxwZXIgZnVuY3Rpb25zCj4gKyAqIEBoZWxwZXJf cHJpdmF0ZTogc3RvcmFnZSBmb3IgZHJ2ZXIgbGF5ZXIKPiArICovCj4gK3N0cnVjdCBkcm1fcGxh bmUgewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldjsKPiArCXN0cnVjdCBkZXZpY2Uga2RldjsK PiArCXN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyOwo+ICsJc3RydWN0IGxpc3RfaGVhZCBo ZWFkOwo+ICsKPiArCXN0cnVjdCBkcm1fbW9kZV9vYmplY3QgYmFzZTsKPiArCj4gKwl1aW50MzJf dCBwb3NzaWJsZV9jcnRjczsKPiArCXVpbnQzMl90ICpmb3JtYXRfdHlwZXM7Cj4gKwl1aW50MzJf dCBmb3JtYXRfY291bnQ7Cj4gKwo+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjOwo+ICsJc3RydWN0 IGRybV9mcmFtZWJ1ZmZlciAqZmI7CgpXaGVyZSBhcmUgY3J0YyBhbmQgZmIgb2Ygc3RydWN0IGRy bV9wbGFuZSBhc3NpZ25lZD8KRmlyc3QsIGkgZGlkIGl0IGluIGRldmljZSBzcGVjaWZpYyB1cGRh dGVfcGxhbmUsIGJ1dCBjYW4gZG8gaW4KZHJtX21vZGVfc2V0cGxhbmU/CgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0 CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=