From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: [PATCH 01/10] drm: Extract drm_dumb_buffers.c Date: Mon, 14 Nov 2016 12:58:16 +0100 Message-ID: <20161114115825.22050-2-daniel.vetter@ffwll.ch> References: <20161114115825.22050-1-daniel.vetter@ffwll.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20161114115825.22050-1-daniel.vetter@ffwll.ch> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: DRI Development Cc: Daniel Vetter , Intel Graphics Development List-Id: dri-devel@lists.freedesktop.org SnVzdCBjb2RlIG1vdmVtZW50LCBkb2MgY2xlYW51cCB3aWxsIGZvbGxvdyB1cCBsYXRlci4KClNp Z25lZC1vZmYtYnk6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+Ci0tLQog ZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlICAgICAgICAgICAgfCAgIDMgKy0KIGRyaXZlcnMvZ3B1 L2RybS9kcm1fY3J0Yy5jICAgICAgICAgIHwgMTA5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2NydGNfaW50ZXJuYWwuaCB8ICAxOCArKy0tLQogZHJp dmVycy9ncHUvZHJtL2RybV9kdW1iX2J1ZmZlcnMuYyAgfCAxMzUgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDE0NyBpbnNlcnRpb25zKCspLCAx MTggZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2RybV9k dW1iX2J1ZmZlcnMuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSBiL2Ry aXZlcnMvZ3B1L2RybS9NYWtlZmlsZQppbmRleCBmMjE3Mjc0NzU0ZDQuLmFkY2ZjOGY5MjJlMyAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9NYWtlZmlsZQpAQCAtMTUsNyArMTUsOCBAQCBkcm0teSAgICAgICA6PQlkcm1fYXV0aC5vIGRy bV9idWZzLm8gZHJtX2NhY2hlLm8gXAogCQlkcm1fbW9kZXNldF9sb2NrLm8gZHJtX2F0b21pYy5v IGRybV9icmlkZ2UubyBcCiAJCWRybV9mcmFtZWJ1ZmZlci5vIGRybV9jb25uZWN0b3IubyBkcm1f YmxlbmQubyBcCiAJCWRybV9lbmNvZGVyLm8gZHJtX21vZGVfb2JqZWN0Lm8gZHJtX3Byb3BlcnR5 Lm8gXAotCQlkcm1fcGxhbmUubyBkcm1fY29sb3JfbWdtdC5vIGRybV9wcmludC5vCisJCWRybV9w bGFuZS5vIGRybV9jb2xvcl9tZ210Lm8gZHJtX3ByaW50Lm8gXAorCQlkcm1fZHVtYl9idWZmZXJz Lm8KIAogZHJtLSQoQ09ORklHX0NPTVBBVCkgKz0gZHJtX2lvYzMyLm8KIGRybS0kKENPTkZJR19E Uk1fR0VNX0NNQV9IRUxQRVIpICs9IGRybV9nZW1fY21hX2hlbHBlci5vCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vZHJtX2NydGMuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Yy5jCmlu ZGV4IDRmMzRkOWEzNDE5MC4uMGVjZTMzY2MwZGM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vZHJtX2NydGMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGMuYwpAQCAtOTYwLDEx NSArOTYwLDYgQEAgdm9pZCBkcm1fbW9kZV9jb25maWdfcmVzZXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKIEVYUE9SVF9TWU1CT0woZHJtX21vZGVfY29uZmlnX3Jlc2V0KTsKIAogLyoqCi0gKiBk cm1fbW9kZV9jcmVhdGVfZHVtYl9pb2N0bCAtIGNyZWF0ZSBhIGR1bWIgYmFja2luZyBzdG9yYWdl IGJ1ZmZlcgotICogQGRldjogRFJNIGRldmljZQotICogQGRhdGE6IGlvY3RsIGRhdGEKLSAqIEBm aWxlX3ByaXY6IERSTSBmaWxlIGluZm8KLSAqCi0gKiBUaGlzIGNyZWF0ZXMgYSBuZXcgZHVtYiBi dWZmZXIgaW4gdGhlIGRyaXZlcidzIGJhY2tpbmcgc3RvcmFnZSBtYW5hZ2VyIChHRU0sCi0gKiBU VE0gb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHkpIGFuZCByZXR1cm5zIHRoZSByZXN1bHRpbmcg YnVmZmVyIGhhbmRsZS4gVGhpcwotICogaGFuZGxlIGNhbiB0aGVuIGJlIHdyYXBwZWQgdXAgaW50 byBhIGZyYW1lYnVmZmVyIG1vZGVzZXQgb2JqZWN0LgotICoKLSAqIE5vdGUgdGhhdCB1c2Vyc3Bh Y2UgaXMgbm90IGFsbG93ZWQgdG8gdXNlIHN1Y2ggb2JqZWN0cyBmb3IgcmVuZGVyCi0gKiBhY2Nl bGVyYXRpb24gLSBkcml2ZXJzIG11c3QgY3JlYXRlIHRoZWlyIG93biBwcml2YXRlIGlvY3RscyBm b3Igc3VjaCBhIHVzZQotICogY2FzZS4KLSAqCi0gKiBDYWxsZWQgYnkgdGhlIHVzZXIgdmlhIGlv Y3RsLgotICoKLSAqIFJldHVybnM6Ci0gKiBaZXJvIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm5v IG9uIGZhaWx1cmUuCi0gKi8KLWludCBkcm1fbW9kZV9jcmVhdGVfZHVtYl9pb2N0bChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAotCQkJICAgICAgIHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAq ZmlsZV9wcml2KQotewotCXN0cnVjdCBkcm1fbW9kZV9jcmVhdGVfZHVtYiAqYXJncyA9IGRhdGE7 Ci0JdTMyIGNwcCwgc3RyaWRlLCBzaXplOwotCi0JaWYgKCFkZXYtPmRyaXZlci0+ZHVtYl9jcmVh dGUpCi0JCXJldHVybiAtRU5PU1lTOwotCWlmICghYXJncy0+d2lkdGggfHwgIWFyZ3MtPmhlaWdo dCB8fCAhYXJncy0+YnBwKQotCQlyZXR1cm4gLUVJTlZBTDsKLQotCS8qIG92ZXJmbG93IGNoZWNr cyBmb3IgMzJiaXQgc2l6ZSBjYWxjdWxhdGlvbnMgKi8KLQkvKiBOT1RFOiBESVZfUk9VTkRfVVAo KSBjYW4gb3ZlcmZsb3cgKi8KLQljcHAgPSBESVZfUk9VTkRfVVAoYXJncy0+YnBwLCA4KTsKLQlp ZiAoIWNwcCB8fCBjcHAgPiAweGZmZmZmZmZmVSAvIGFyZ3MtPndpZHRoKQotCQlyZXR1cm4gLUVJ TlZBTDsKLQlzdHJpZGUgPSBjcHAgKiBhcmdzLT53aWR0aDsKLQlpZiAoYXJncy0+aGVpZ2h0ID4g MHhmZmZmZmZmZlUgLyBzdHJpZGUpCi0JCXJldHVybiAtRUlOVkFMOwotCi0JLyogdGVzdCBmb3Ig d3JhcC1hcm91bmQgKi8KLQlzaXplID0gYXJncy0+aGVpZ2h0ICogc3RyaWRlOwotCWlmIChQQUdF X0FMSUdOKHNpemUpID09IDApCi0JCXJldHVybiAtRUlOVkFMOwotCi0JLyoKLQkgKiBoYW5kbGUs IHBpdGNoIGFuZCBzaXplIGFyZSBvdXRwdXQgcGFyYW1ldGVycy4gWmVybyB0aGVtIG91dCB0bwot CSAqIHByZXZlbnQgZHJpdmVycyBmcm9tIGFjY2lkZW50YWxseSB1c2luZyB1bmluaXRpYWxpemVk IGRhdGEuIFNpbmNlCi0JICogbm90IGFsbCBleGlzdGluZyB1c2Vyc3BhY2UgaXMgY2xlYXJpbmcg dGhlc2UgZmllbGRzIHByb3Blcmx5IHdlCi0JICogY2Fubm90IHJlamVjdCBJT0NUTCB3aXRoIGdh cmJhZ2UgaW4gdGhlbS4KLQkgKi8KLQlhcmdzLT5oYW5kbGUgPSAwOwotCWFyZ3MtPnBpdGNoID0g MDsKLQlhcmdzLT5zaXplID0gMDsKLQotCXJldHVybiBkZXYtPmRyaXZlci0+ZHVtYl9jcmVhdGUo ZmlsZV9wcml2LCBkZXYsIGFyZ3MpOwotfQotCi0vKioKLSAqIGRybV9tb2RlX21tYXBfZHVtYl9p b2N0bCAtIGNyZWF0ZSBhbiBtbWFwIG9mZnNldCBmb3IgYSBkdW1iIGJhY2tpbmcgc3RvcmFnZSBi dWZmZXIKLSAqIEBkZXY6IERSTSBkZXZpY2UKLSAqIEBkYXRhOiBpb2N0bCBkYXRhCi0gKiBAZmls ZV9wcml2OiBEUk0gZmlsZSBpbmZvCi0gKgotICogQWxsb2NhdGUgYW4gb2Zmc2V0IGluIHRoZSBk cm0gZGV2aWNlIG5vZGUncyBhZGRyZXNzIHNwYWNlIHRvIGJlIGFibGUgdG8KLSAqIG1lbW9yeSBt YXAgYSBkdW1iIGJ1ZmZlci4KLSAqCi0gKiBDYWxsZWQgYnkgdGhlIHVzZXIgdmlhIGlvY3RsLgot ICoKLSAqIFJldHVybnM6Ci0gKiBaZXJvIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm5vIG9uIGZh aWx1cmUuCi0gKi8KLWludCBkcm1fbW9kZV9tbWFwX2R1bWJfaW9jdGwoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKLQkJCSAgICAgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYp Ci17Ci0Jc3RydWN0IGRybV9tb2RlX21hcF9kdW1iICphcmdzID0gZGF0YTsKLQotCS8qIGNhbGwg ZHJpdmVyIGlvY3RsIHRvIGdldCBtbWFwIG9mZnNldCAqLwotCWlmICghZGV2LT5kcml2ZXItPmR1 bWJfbWFwX29mZnNldCkKLQkJcmV0dXJuIC1FTk9TWVM7Ci0KLQlyZXR1cm4gZGV2LT5kcml2ZXIt PmR1bWJfbWFwX29mZnNldChmaWxlX3ByaXYsIGRldiwgYXJncy0+aGFuZGxlLCAmYXJncy0+b2Zm c2V0KTsKLX0KLQotLyoqCi0gKiBkcm1fbW9kZV9kZXN0cm95X2R1bWJfaW9jdGwgLSBkZXN0cm95 IGEgZHVtYiBiYWNraW5nIHN0cmFnZSBidWZmZXIKLSAqIEBkZXY6IERSTSBkZXZpY2UKLSAqIEBk YXRhOiBpb2N0bCBkYXRhCi0gKiBAZmlsZV9wcml2OiBEUk0gZmlsZSBpbmZvCi0gKgotICogVGhp cyBkZXN0cm95cyB0aGUgdXNlcnNwYWNlIGhhbmRsZSBmb3IgdGhlIGdpdmVuIGR1bWIgYmFja2lu ZyBzdG9yYWdlIGJ1ZmZlci4KLSAqIFNpbmNlIGJ1ZmZlciBvYmplY3RzIG11c3QgYmUgcmVmZXJl bmNlIGNvdW50ZWQgaW4gdGhlIGtlcm5lbCBhIGJ1ZmZlciBvYmplY3QKLSAqIHdvbid0IGJlIGlt bWVkaWF0ZWx5IGZyZWVkIGlmIGEgZnJhbWVidWZmZXIgbW9kZXNldCBvYmplY3Qgc3RpbGwgdXNl cyBpdC4KLSAqCi0gKiBDYWxsZWQgYnkgdGhlIHVzZXIgdmlhIGlvY3RsLgotICoKLSAqIFJldHVy bnM6Ci0gKiBaZXJvIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm5vIG9uIGZhaWx1cmUuCi0gKi8K LWludCBkcm1fbW9kZV9kZXN0cm95X2R1bWJfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK LQkJCQl2b2lkICpkYXRhLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdikKLXsKLQlzdHJ1Y3Qg ZHJtX21vZGVfZGVzdHJveV9kdW1iICphcmdzID0gZGF0YTsKLQotCWlmICghZGV2LT5kcml2ZXIt PmR1bWJfZGVzdHJveSkKLQkJcmV0dXJuIC1FTk9TWVM7Ci0KLQlyZXR1cm4gZGV2LT5kcml2ZXIt PmR1bWJfZGVzdHJveShmaWxlX3ByaXYsIGRldiwgYXJncy0+aGFuZGxlKTsKLX0KLQotLyoqCiAg KiBkcm1fbW9kZV9jb25maWdfaW5pdCAtIGluaXRpYWxpemUgRFJNIG1vZGVfY29uZmlndXJhdGlv biBzdHJ1Y3R1cmUKICAqIEBkZXY6IERSTSBkZXZpY2UKICAqCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vZHJtX2NydGNfaW50ZXJuYWwuaCBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Y19p bnRlcm5hbC5oCmluZGV4IGIwNzZlZjU4NjM1ZC4uM2QyM2E0NzNlYzM1IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vZHJtX2NydGNfaW50ZXJuYWwuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0v ZHJtX2NydGNfaW50ZXJuYWwuaApAQCAtNDMsMTQgKzQzLDYgQEAgaW50IGRybV9jcnRjX2NoZWNr X3ZpZXdwb3J0KGNvbnN0IHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAogdm9pZCBkcm1fZmJfcmVs ZWFzZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7CiAKLS8qIGR1bWIgYnVmZmVyIHN1cHBv cnQgSU9DVExzICovCi1pbnQgZHJtX21vZGVfY3JlYXRlX2R1bWJfaW9jdGwoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKLQkJCSAgICAgICB2b2lkICpkYXRhLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVf cHJpdik7Ci1pbnQgZHJtX21vZGVfbW1hcF9kdW1iX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCi0JCQkgICAgIHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKLWlu dCBkcm1fbW9kZV9kZXN0cm95X2R1bWJfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKLQkJ CQl2b2lkICpkYXRhLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7Ci0KIC8qIElPQ1RMcyAq LwogaW50IGRybV9tb2RlX2dldHJlc291cmNlcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJ ICB2b2lkICpkYXRhLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7CkBAIC01OSw2ICs1MSwx NiBAQCBpbnQgZHJtX21vZGVfZ2V0Y3J0YyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogaW50IGRy bV9tb2RlX3NldGNydGMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJICAgICB2b2lkICpkYXRh LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7CiAKKy8qIGRybV9kdW1iX2J1ZmZlcnMuYyAq LworCisvKiBJT0NUTHMgKi8KK2ludCBkcm1fbW9kZV9jcmVhdGVfZHVtYl9pb2N0bChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAorCQkJICAgICAgIHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAq ZmlsZV9wcml2KTsKK2ludCBkcm1fbW9kZV9tbWFwX2R1bWJfaW9jdGwoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKKwkJCSAgICAgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYp OworaW50IGRybV9tb2RlX2Rlc3Ryb3lfZHVtYl9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAorCQkJCXZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKKwogLyogZHJt X2NvbG9yX21nbXQuYyAqLwogCiAvKiBJT0NUTHMgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9kcm1fZHVtYl9idWZmZXJzLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2R1bWJfYnVmZmVy cy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNGI0MzY0YjYxYzhk Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9kdW1iX2J1ZmZlcnMuYwpA QCAtMCwwICsxLDEzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNiBJbnRlbCBDb3Jwb3Jh dGlvbgorICoKKyAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGRpc3RyaWJ1dGUs IGFuZCBzZWxsIHRoaXMgc29mdHdhcmUgYW5kIGl0cworICogZG9jdW1lbnRhdGlvbiBmb3IgYW55 IHB1cnBvc2UgaXMgaGVyZWJ5IGdyYW50ZWQgd2l0aG91dCBmZWUsIHByb3ZpZGVkIHRoYXQKKyAq IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzIGFuZCB0aGF0 IGJvdGggdGhhdCBjb3B5cmlnaHQKKyAqIG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGlj ZSBhcHBlYXIgaW4gc3VwcG9ydGluZyBkb2N1bWVudGF0aW9uLCBhbmQKKyAqIHRoYXQgdGhlIG5h bWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXJzIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9y CisgKiBwdWJsaWNpdHkgcGVydGFpbmluZyB0byBkaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJl IHdpdGhvdXQgc3BlY2lmaWMsCisgKiB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uICBUaGUgY29w eXJpZ2h0IGhvbGRlcnMgbWFrZSBubyByZXByZXNlbnRhdGlvbnMKKyAqIGFib3V0IHRoZSBzdWl0 YWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVk ICJhcworICogaXMiIHdpdGhvdXQgZXhwcmVzcyBvciBpbXBsaWVkIHdhcnJhbnR5LgorICoKKyAq IFRIRSBDT1BZUklHSFQgSE9MREVSUyBESVNDTEFJTSBBTEwgV0FSUkFOVElFUyBXSVRIIFJFR0FS RCBUTyBUSElTIFNPRlRXQVJFLAorICogSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMg T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLCBJTiBOTworICogRVZFTlQgU0hBTEwgVEhF IENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIElORElSRUNUIE9S CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNV TFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwKKyAqIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBB TiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIKKyAqIFRPUlRJT1VTIEFD VElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVS Rk9STUFOQ0UKKyAqIE9GIFRISVMgU09GVFdBUkUuCisgKi8KKworI2luY2x1ZGUgPGRybS9kcm1Q Lmg+CisKKyNpbmNsdWRlICJkcm1fY3J0Y19pbnRlcm5hbC5oIgorCisvKioKKyAqIGRybV9tb2Rl X2NyZWF0ZV9kdW1iX2lvY3RsIC0gY3JlYXRlIGEgZHVtYiBiYWNraW5nIHN0b3JhZ2UgYnVmZmVy CisgKiBAZGV2OiBEUk0gZGV2aWNlCisgKiBAZGF0YTogaW9jdGwgZGF0YQorICogQGZpbGVfcHJp djogRFJNIGZpbGUgaW5mbworICoKKyAqIFRoaXMgY3JlYXRlcyBhIG5ldyBkdW1iIGJ1ZmZlciBp biB0aGUgZHJpdmVyJ3MgYmFja2luZyBzdG9yYWdlIG1hbmFnZXIgKEdFTSwKKyAqIFRUTSBvciBz b21ldGhpbmcgZWxzZSBlbnRpcmVseSkgYW5kIHJldHVybnMgdGhlIHJlc3VsdGluZyBidWZmZXIg aGFuZGxlLiBUaGlzCisgKiBoYW5kbGUgY2FuIHRoZW4gYmUgd3JhcHBlZCB1cCBpbnRvIGEgZnJh bWVidWZmZXIgbW9kZXNldCBvYmplY3QuCisgKgorICogTm90ZSB0aGF0IHVzZXJzcGFjZSBpcyBu b3QgYWxsb3dlZCB0byB1c2Ugc3VjaCBvYmplY3RzIGZvciByZW5kZXIKKyAqIGFjY2VsZXJhdGlv biAtIGRyaXZlcnMgbXVzdCBjcmVhdGUgdGhlaXIgb3duIHByaXZhdGUgaW9jdGxzIGZvciBzdWNo IGEgdXNlCisgKiBjYXNlLgorICoKKyAqIENhbGxlZCBieSB0aGUgdXNlciB2aWEgaW9jdGwuCisg KgorICogUmV0dXJuczoKKyAqIFplcm8gb24gc3VjY2VzcywgbmVnYXRpdmUgZXJybm8gb24gZmFp bHVyZS4KKyAqLworaW50IGRybV9tb2RlX2NyZWF0ZV9kdW1iX2lvY3RsKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCisJCQkgICAgICAgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxlICpmaWxlX3By aXYpCit7CisJc3RydWN0IGRybV9tb2RlX2NyZWF0ZV9kdW1iICphcmdzID0gZGF0YTsKKwl1MzIg Y3BwLCBzdHJpZGUsIHNpemU7CisKKwlpZiAoIWRldi0+ZHJpdmVyLT5kdW1iX2NyZWF0ZSkKKwkJ cmV0dXJuIC1FTk9TWVM7CisJaWYgKCFhcmdzLT53aWR0aCB8fCAhYXJncy0+aGVpZ2h0IHx8ICFh cmdzLT5icHApCisJCXJldHVybiAtRUlOVkFMOworCisJLyogb3ZlcmZsb3cgY2hlY2tzIGZvciAz MmJpdCBzaXplIGNhbGN1bGF0aW9ucyAqLworCS8qIE5PVEU6IERJVl9ST1VORF9VUCgpIGNhbiBv dmVyZmxvdyAqLworCWNwcCA9IERJVl9ST1VORF9VUChhcmdzLT5icHAsIDgpOworCWlmICghY3Bw IHx8IGNwcCA+IDB4ZmZmZmZmZmZVIC8gYXJncy0+d2lkdGgpCisJCXJldHVybiAtRUlOVkFMOwor CXN0cmlkZSA9IGNwcCAqIGFyZ3MtPndpZHRoOworCWlmIChhcmdzLT5oZWlnaHQgPiAweGZmZmZm ZmZmVSAvIHN0cmlkZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvKiB0ZXN0IGZvciB3cmFwLWFy b3VuZCAqLworCXNpemUgPSBhcmdzLT5oZWlnaHQgKiBzdHJpZGU7CisJaWYgKFBBR0VfQUxJR04o c2l6ZSkgPT0gMCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvKgorCSAqIGhhbmRsZSwgcGl0Y2gg YW5kIHNpemUgYXJlIG91dHB1dCBwYXJhbWV0ZXJzLiBaZXJvIHRoZW0gb3V0IHRvCisJICogcHJl dmVudCBkcml2ZXJzIGZyb20gYWNjaWRlbnRhbGx5IHVzaW5nIHVuaW5pdGlhbGl6ZWQgZGF0YS4g U2luY2UKKwkgKiBub3QgYWxsIGV4aXN0aW5nIHVzZXJzcGFjZSBpcyBjbGVhcmluZyB0aGVzZSBm aWVsZHMgcHJvcGVybHkgd2UKKwkgKiBjYW5ub3QgcmVqZWN0IElPQ1RMIHdpdGggZ2FyYmFnZSBp biB0aGVtLgorCSAqLworCWFyZ3MtPmhhbmRsZSA9IDA7CisJYXJncy0+cGl0Y2ggPSAwOworCWFy Z3MtPnNpemUgPSAwOworCisJcmV0dXJuIGRldi0+ZHJpdmVyLT5kdW1iX2NyZWF0ZShmaWxlX3By aXYsIGRldiwgYXJncyk7Cit9CisKKy8qKgorICogZHJtX21vZGVfbW1hcF9kdW1iX2lvY3RsIC0g Y3JlYXRlIGFuIG1tYXAgb2Zmc2V0IGZvciBhIGR1bWIgYmFja2luZyBzdG9yYWdlIGJ1ZmZlcgor ICogQGRldjogRFJNIGRldmljZQorICogQGRhdGE6IGlvY3RsIGRhdGEKKyAqIEBmaWxlX3ByaXY6 IERSTSBmaWxlIGluZm8KKyAqCisgKiBBbGxvY2F0ZSBhbiBvZmZzZXQgaW4gdGhlIGRybSBkZXZp Y2Ugbm9kZSdzIGFkZHJlc3Mgc3BhY2UgdG8gYmUgYWJsZSB0bworICogbWVtb3J5IG1hcCBhIGR1 bWIgYnVmZmVyLgorICoKKyAqIENhbGxlZCBieSB0aGUgdXNlciB2aWEgaW9jdGwuCisgKgorICog UmV0dXJuczoKKyAqIFplcm8gb24gc3VjY2VzcywgbmVnYXRpdmUgZXJybm8gb24gZmFpbHVyZS4K KyAqLworaW50IGRybV9tb2RlX21tYXBfZHVtYl9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAorCQkJICAgICB2b2lkICpkYXRhLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdikKK3sKKwlz dHJ1Y3QgZHJtX21vZGVfbWFwX2R1bWIgKmFyZ3MgPSBkYXRhOworCisJLyogY2FsbCBkcml2ZXIg aW9jdGwgdG8gZ2V0IG1tYXAgb2Zmc2V0ICovCisJaWYgKCFkZXYtPmRyaXZlci0+ZHVtYl9tYXBf b2Zmc2V0KQorCQlyZXR1cm4gLUVOT1NZUzsKKworCXJldHVybiBkZXYtPmRyaXZlci0+ZHVtYl9t YXBfb2Zmc2V0KGZpbGVfcHJpdiwgZGV2LCBhcmdzLT5oYW5kbGUsICZhcmdzLT5vZmZzZXQpOwor fQorCisvKioKKyAqIGRybV9tb2RlX2Rlc3Ryb3lfZHVtYl9pb2N0bCAtIGRlc3Ryb3kgYSBkdW1i IGJhY2tpbmcgc3RyYWdlIGJ1ZmZlcgorICogQGRldjogRFJNIGRldmljZQorICogQGRhdGE6IGlv Y3RsIGRhdGEKKyAqIEBmaWxlX3ByaXY6IERSTSBmaWxlIGluZm8KKyAqCisgKiBUaGlzIGRlc3Ry b3lzIHRoZSB1c2Vyc3BhY2UgaGFuZGxlIGZvciB0aGUgZ2l2ZW4gZHVtYiBiYWNraW5nIHN0b3Jh Z2UgYnVmZmVyLgorICogU2luY2UgYnVmZmVyIG9iamVjdHMgbXVzdCBiZSByZWZlcmVuY2UgY291 bnRlZCBpbiB0aGUga2VybmVsIGEgYnVmZmVyIG9iamVjdAorICogd29uJ3QgYmUgaW1tZWRpYXRl bHkgZnJlZWQgaWYgYSBmcmFtZWJ1ZmZlciBtb2Rlc2V0IG9iamVjdCBzdGlsbCB1c2VzIGl0Lgor ICoKKyAqIENhbGxlZCBieSB0aGUgdXNlciB2aWEgaW9jdGwuCisgKgorICogUmV0dXJuczoKKyAq IFplcm8gb24gc3VjY2VzcywgbmVnYXRpdmUgZXJybm8gb24gZmFpbHVyZS4KKyAqLworaW50IGRy bV9tb2RlX2Rlc3Ryb3lfZHVtYl9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkJCXZv aWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KQoreworCXN0cnVjdCBkcm1fbW9k ZV9kZXN0cm95X2R1bWIgKmFyZ3MgPSBkYXRhOworCisJaWYgKCFkZXYtPmRyaXZlci0+ZHVtYl9k ZXN0cm95KQorCQlyZXR1cm4gLUVOT1NZUzsKKworCXJldHVybiBkZXYtPmRyaXZlci0+ZHVtYl9k ZXN0cm95KGZpbGVfcHJpdiwgZGV2LCBhcmdzLT5oYW5kbGUpOworfQorCi0tIAoyLjEwLjIKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=