From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Zimmermann Subject: [PATCH 5/5] drm/udl: Replace fbdev code with generic emulation Date: Thu, 24 Oct 2019 16:42:37 +0200 Message-ID: <20191024144237.8898-6-tzimmermann@suse.de> References: <20191024144237.8898-1-tzimmermann@suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.suse.de (mx2.suse.de [195.135.220.15]) by gabe.freedesktop.org (Postfix) with ESMTPS id 24F946E428 for ; Thu, 24 Oct 2019 14:42:50 +0000 (UTC) In-Reply-To: <20191024144237.8898-1-tzimmermann@suse.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: airlied@redhat.com, sean@poorly.run, daniel@ffwll.ch, sam@ravnborg.org, noralf@tronnes.org Cc: Thomas Zimmermann , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org U2lnbmVkLW9mZi1ieTogVGhvbWFzIFppbW1lcm1hbm4gPHR6aW1tZXJtYW5uQHN1c2UuZGU+Ci0t LQogZHJpdmVycy9ncHUvZHJtL3VkbC91ZGxfZHJ2LmMgICAgIHwgICAzICsKIGRyaXZlcnMvZ3B1 L2RybS91ZGwvdWRsX2Rydi5oICAgICB8ICAgNCAtCiBkcml2ZXJzL2dwdS9kcm0vdWRsL3VkbF9m Yi5jICAgICAgfCAyNjMgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dw dS9kcm0vdWRsL3VkbF9tYWluLmMgICAgfCAgIDIgLQogZHJpdmVycy9ncHUvZHJtL3VkbC91ZGxf bW9kZXNldC5jIHwgICAzICstCiA1IGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMjY3 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS91ZGwvdWRsX2Rydi5j IGIvZHJpdmVycy9ncHUvZHJtL3VkbC91ZGxfZHJ2LmMKaW5kZXggMTVhZDdhMzM4ZjlkLi42YmVh YTExMDljMmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS91ZGwvdWRsX2Rydi5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS91ZGwvdWRsX2Rydi5jCkBAIC03LDYgKzcsNyBAQAogCiAjaW5jbHVk ZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgogI2luY2x1ZGUgPGRybS9kcm1fZHJ2Lmg+CisjaW5j bHVkZSA8ZHJtL2RybV9mYl9oZWxwZXIuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2ZpbGUuaD4KICNp bmNsdWRlIDxkcm0vZHJtX2lvY3RsLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9wcm9iZV9oZWxwZXIu aD4KQEAgLTYyLDYgKzYzLDggQEAgc3RhdGljIHN0cnVjdCBkcm1fZHJpdmVyIGRyaXZlciA9IHsK IAkuZHJpdmVyX2ZlYXR1cmVzID0gRFJJVkVSX01PREVTRVQgfCBEUklWRVJfR0VNLAogCS5yZWxl YXNlID0gdWRsX2RyaXZlcl9yZWxlYXNlLAogCisJLmxhc3RjbG9zZSA9IGRybV9mYl9oZWxwZXJf bGFzdGNsb3NlLAorCiAJLyogZ2VtIGhvb2tzICovCiAJLmdlbV9mcmVlX29iamVjdF91bmxvY2tl ZCA9IHVkbF9nZW1fZnJlZV9vYmplY3QsCiAJLmdlbV92bV9vcHMgPSAmdWRsX2dlbV92bV9vcHMs CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdWRsL3VkbF9kcnYuaCBiL2RyaXZlcnMvZ3B1 L2RybS91ZGwvdWRsX2Rydi5oCmluZGV4IDEyYTk3MGZkOWE4Ny4uNWY4YTdhYzA4NGY2IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdWRsL3VkbF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9k cm0vdWRsL3VkbF9kcnYuaApAQCAtNTAsOCArNTAsNiBAQCBzdHJ1Y3QgdXJiX2xpc3QgewogCXNp emVfdCBzaXplOwogfTsKIAotc3RydWN0IHVkbF9mYmRldjsKLQogc3RydWN0IHVkbF9kZXZpY2Ug ewogCXN0cnVjdCBkcm1fZGV2aWNlIGRybTsKIAlzdHJ1Y3QgZGV2aWNlICpkZXY7CkBAIC02NSw3 ICs2Myw2IEBAIHN0cnVjdCB1ZGxfZGV2aWNlIHsKIAlzdHJ1Y3QgdXJiX2xpc3QgdXJiczsKIAlh dG9taWNfdCBsb3N0X3BpeGVsczsgLyogMSA9IGEgcmVuZGVyIG9wIGZhaWxlZC4gTmVlZCBzY3Jl ZW4gcmVmcmVzaCAqLwogCi0Jc3RydWN0IHVkbF9mYmRldiAqZmJkZXY7CiAJY2hhciBtb2RlX2J1 ZlsxMDI0XTsKIAl1aW50MzJfdCBtb2RlX2J1Zl9sZW47CiAJYXRvbWljX3QgYnl0ZXNfcmVuZGVy ZWQ7IC8qIHJhdyBwaXhlbC1ieXRlcyBkcml2ZXIgYXNrZWQgdG8gcmVuZGVyICovCkBAIC0xMTEs NyArMTA4LDYgQEAgaW50IHVkbF9pbml0KHN0cnVjdCB1ZGxfZGV2aWNlICp1ZGwpOwogdm9pZCB1 ZGxfZmluaShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIAogaW50IHVkbF9mYmRldl9pbml0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpOwotdm9pZCB1ZGxfZmJkZXZfY2xlYW51cChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KTsKIHZvaWQgdWRsX2ZiZGV2X3VucGx1ZyhzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KTsKIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKgogdWRsX2ZiX3VzZXJfZmJfY3JlYXRlKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdWRsL3Vk bF9mYi5jIGIvZHJpdmVycy9ncHUvZHJtL3VkbC91ZGxfZmIuYwppbmRleCBlZjM1MDRkMDYzNDMu LjQzYTFkYTNhNTZjMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3VkbC91ZGxfZmIuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vdWRsL3VkbF9mYi5jCkBAIC0xOSwxOSArMTksOSBAQAogCiAj aW5jbHVkZSAidWRsX2Rydi5oIgogCi0jZGVmaW5lIERMX0RFRklPX1dSSVRFX0RFTEFZICAgIChI Wi8yMCkgLyogZmJfZGVmZXJyZWRfaW8uZGVsYXkgaW4gamlmZmllcyAqLwotCi1zdGF0aWMgaW50 IGZiX2RlZmlvID0gMDsgIC8qIE9wdGlvbmFsbHkgZW5hYmxlIGV4cGVyaW1lbnRhbCBmYl9kZWZp byBtbWFwIHN1cHBvcnQgKi8KIHN0YXRpYyBpbnQgZmJfYnBwID0gMTY7CiAKIG1vZHVsZV9wYXJh bShmYl9icHAsIGludCwgU19JV1VTUiB8IFNfSVJVU1IgfCBTX0lXR1JQIHwgU19JUkdSUCk7Ci1t b2R1bGVfcGFyYW0oZmJfZGVmaW8sIGludCwgU19JV1VTUiB8IFNfSVJVU1IgfCBTX0lXR1JQIHwg U19JUkdSUCk7Ci0KLXN0cnVjdCB1ZGxfZmJkZXYgewotCXN0cnVjdCBkcm1fZmJfaGVscGVyIGhl bHBlcjsgLyogbXVzdCBiZSBmaXJzdCAqLwotCXN0cnVjdCB1ZGxfZnJhbWVidWZmZXIgdWZiOwot CWludCBmYl9jb3VudDsKLX07CiAKICNkZWZpbmUgRExfQUxJR05fVVAoeCwgYSkgQUxJR04oeCwg YSkKICNkZWZpbmUgRExfQUxJR05fRE9XTih4LCBhKSBBTElHTl9ET1dOKHgsIGEpCkBAIC0xNTcs MTIzICsxNDcsNiBAQCBpbnQgdWRsX2hhbmRsZV9kYW1hZ2Uoc3RydWN0IHVkbF9mcmFtZWJ1ZmZl ciAqZmIsIGludCB4LCBpbnQgeSwKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCB1ZGxfZmJf bW1hcChzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCi17 Ci0JdW5zaWduZWQgbG9uZyBzdGFydCA9IHZtYS0+dm1fc3RhcnQ7Ci0JdW5zaWduZWQgbG9uZyBz aXplID0gdm1hLT52bV9lbmQgLSB2bWEtPnZtX3N0YXJ0OwotCXVuc2lnbmVkIGxvbmcgb2Zmc2V0 OwotCXVuc2lnbmVkIGxvbmcgcGFnZSwgcG9zOwotCi0JaWYgKHZtYS0+dm1fcGdvZmYgPiAofjBV TCA+PiBQQUdFX1NISUZUKSkKLQkJcmV0dXJuIC1FSU5WQUw7Ci0KLQlvZmZzZXQgPSB2bWEtPnZt X3Bnb2ZmIDw8IFBBR0VfU0hJRlQ7Ci0KLQlpZiAob2Zmc2V0ID4gaW5mby0+Zml4LnNtZW1fbGVu IHx8IHNpemUgPiBpbmZvLT5maXguc21lbV9sZW4gLSBvZmZzZXQpCi0JCXJldHVybiAtRUlOVkFM OwotCi0JcG9zID0gKHVuc2lnbmVkIGxvbmcpaW5mby0+Zml4LnNtZW1fc3RhcnQgKyBvZmZzZXQ7 Ci0KLQlwcl9kZWJ1ZygibW1hcCgpIGZyYW1lYnVmZmVyIGFkZHI6JWx1IHNpemU6JWx1XG4iLAot CQkgIHBvcywgc2l6ZSk7Ci0KLQkvKiBXZSBkb24ndCB3YW50IHRoZSBmcmFtZWJ1ZmZlciB0byBi ZSBtYXBwZWQgZW5jcnlwdGVkICovCi0Jdm1hLT52bV9wYWdlX3Byb3QgPSBwZ3Byb3RfZGVjcnlw dGVkKHZtYS0+dm1fcGFnZV9wcm90KTsKLQotCXdoaWxlIChzaXplID4gMCkgewotCQlwYWdlID0g dm1hbGxvY190b19wZm4oKHZvaWQgKilwb3MpOwotCQlpZiAocmVtYXBfcGZuX3JhbmdlKHZtYSwg c3RhcnQsIHBhZ2UsIFBBR0VfU0laRSwgUEFHRV9TSEFSRUQpKQotCQkJcmV0dXJuIC1FQUdBSU47 Ci0KLQkJc3RhcnQgKz0gUEFHRV9TSVpFOwotCQlwb3MgKz0gUEFHRV9TSVpFOwotCQlpZiAoc2l6 ZSA+IFBBR0VfU0laRSkKLQkJCXNpemUgLT0gUEFHRV9TSVpFOwotCQllbHNlCi0JCQlzaXplID0g MDsKLQl9Ci0KLQkvKiBWTV9JTyB8IFZNX0RPTlRFWFBBTkQgfCBWTV9ET05URFVNUCBhcmUgc2V0 IGJ5IHJlbWFwX3Bmbl9yYW5nZSgpICovCi0JcmV0dXJuIDA7Ci19Ci0KLS8qCi0gKiBJdCdzIGNv bW1vbiBmb3Igc2V2ZXJhbCBjbGllbnRzIHRvIGhhdmUgZnJhbWVidWZmZXIgb3BlbiBzaW11bHRh bmVvdXNseS4KLSAqIGUuZy4gYm90aCBmYmNvbiBhbmQgWC4gTWFrZXMgdGhpbmdzIGludGVyZXN0 aW5nLgotICogQXNzdW1lcyBjYWxsZXIgaXMgaG9sZGluZyBpbmZvLT5sb2NrIChmb3Igb3BlbiBh bmQgcmVsZWFzZSBhdCBsZWFzdCkKLSAqLwotc3RhdGljIGludCB1ZGxfZmJfb3BlbihzdHJ1Y3Qg ZmJfaW5mbyAqaW5mbywgaW50IHVzZXIpCi17Ci0Jc3RydWN0IHVkbF9mYmRldiAqdWZiZGV2ID0g aW5mby0+cGFyOwotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSB1ZmJkZXYtPnVmYi5iYXNlLmRl djsKLQlzdHJ1Y3QgdWRsX2RldmljZSAqdWRsID0gdG9fdWRsKGRldik7Ci0KLQkvKiBJZiB0aGUg VVNCIGRldmljZSBpcyBnb25lLCB3ZSBkb24ndCBhY2NlcHQgbmV3IG9wZW5zICovCi0JaWYgKGRy bV9kZXZfaXNfdW5wbHVnZ2VkKCZ1ZGwtPmRybSkpCi0JCXJldHVybiAtRU5PREVWOwotCi0JdWZi ZGV2LT5mYl9jb3VudCsrOwotCi0jaWZkZWYgQ09ORklHX0RSTV9GQkRFVl9FTVVMQVRJT04KLQlp ZiAoZmJfZGVmaW8gJiYgKGluZm8tPmZiZGVmaW8gPT0gTlVMTCkpIHsKLQkJLyogZW5hYmxlIGRl ZmlvIGF0IGxhc3QgbW9tZW50IGlmIG5vdCBkaXNhYmxlZCBieSBjbGllbnQgKi8KLQotCQlzdHJ1 Y3QgZmJfZGVmZXJyZWRfaW8gKmZiZGVmaW87Ci0KLQkJZmJkZWZpbyA9IGt6YWxsb2Moc2l6ZW9m KHN0cnVjdCBmYl9kZWZlcnJlZF9pbyksIEdGUF9LRVJORUwpOwotCi0JCWlmIChmYmRlZmlvKSB7 Ci0JCQlmYmRlZmlvLT5kZWxheSA9IERMX0RFRklPX1dSSVRFX0RFTEFZOwotCQkJZmJkZWZpby0+ ZGVmZXJyZWRfaW8gPSBkcm1fZmJfaGVscGVyX2RlZmVycmVkX2lvOwotCQl9Ci0KLQkJaW5mby0+ ZmJkZWZpbyA9IGZiZGVmaW87Ci0JCWZiX2RlZmVycmVkX2lvX2luaXQoaW5mbyk7Ci0JfQotI2Vu ZGlmCi0KLQlwcl9kZWJ1Zygib3BlbiAvZGV2L2ZiJWQgdXNlcj0lZCBmYl9pbmZvPSVwIGNvdW50 PSVkXG4iLAotCQkgIGluZm8tPm5vZGUsIHVzZXIsIGluZm8sIHVmYmRldi0+ZmJfY291bnQpOwot Ci0JcmV0dXJuIDA7Ci19Ci0KLQotLyoKLSAqIEFzc3VtZXMgY2FsbGVyIGlzIGhvbGRpbmcgaW5m by0+bG9jayBtdXRleCAoZm9yIG9wZW4gYW5kIHJlbGVhc2UgYXQgbGVhc3QpCi0gKi8KLXN0YXRp YyBpbnQgdWRsX2ZiX3JlbGVhc2Uoc3RydWN0IGZiX2luZm8gKmluZm8sIGludCB1c2VyKQotewot CXN0cnVjdCB1ZGxfZmJkZXYgKnVmYmRldiA9IGluZm8tPnBhcjsKLQotCXVmYmRldi0+ZmJfY291 bnQtLTsKLQotI2lmZGVmIENPTkZJR19EUk1fRkJERVZfRU1VTEFUSU9OCi0JaWYgKCh1ZmJkZXYt PmZiX2NvdW50ID09IDApICYmIChpbmZvLT5mYmRlZmlvKSkgewotCQlmYl9kZWZlcnJlZF9pb19j bGVhbnVwKGluZm8pOwotCQlrZnJlZShpbmZvLT5mYmRlZmlvKTsKLQkJaW5mby0+ZmJkZWZpbyA9 IE5VTEw7Ci0JCWluZm8tPmZib3BzLT5mYl9tbWFwID0gdWRsX2ZiX21tYXA7Ci0JfQotI2VuZGlm Ci0KLQlwcl9kZWJ1ZygicmVsZWFzZWQgL2Rldi9mYiVkIHVzZXI9JWQgY291bnQ9JWRcbiIsCi0J CWluZm8tPm5vZGUsIHVzZXIsIHVmYmRldi0+ZmJfY291bnQpOwotCi0JcmV0dXJuIDA7Ci19Ci0K LXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIHVkbGZiX29wcyA9IHsKLQkub3duZXIgPSBUSElTX01PRFVM RSwKLQlEUk1fRkJfSEVMUEVSX0RFRkFVTFRfT1BTLAotCS5mYl9maWxscmVjdCA9IGRybV9mYl9o ZWxwZXJfc3lzX2ZpbGxyZWN0LAotCS5mYl9jb3B5YXJlYSA9IGRybV9mYl9oZWxwZXJfc3lzX2Nv cHlhcmVhLAotCS5mYl9pbWFnZWJsaXQgPSBkcm1fZmJfaGVscGVyX3N5c19pbWFnZWJsaXQsCi0J LmZiX21tYXAgPSB1ZGxfZmJfbW1hcCwKLQkuZmJfb3BlbiA9IHVkbF9mYl9vcGVuLAotCS5mYl9y ZWxlYXNlID0gdWRsX2ZiX3JlbGVhc2UsCi19OwotCiBzdGF0aWMgaW50IHVkbF91c2VyX2ZyYW1l YnVmZmVyX2RpcnR5KHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAogCQkJCSAgICAgIHN0cnVj dCBkcm1fZmlsZSAqZmlsZSwKIAkJCQkgICAgICB1bnNpZ25lZCBmbGFncywgdW5zaWduZWQgY29s b3IsCkBAIC0zNDYsMTUwICsyMTksMjAgQEAgdWRsX2ZyYW1lYnVmZmVyX2luaXQoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKIAlyZXR1cm4gcmV0OwogfQogCi0KLXN0YXRpYyBpbnQgdWRsZmJfY3Jl YXRlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpoZWxwZXIsCi0JCQlzdHJ1Y3QgZHJtX2ZiX2hlbHBl cl9zdXJmYWNlX3NpemUgKnNpemVzKQotewotCXN0cnVjdCB1ZGxfZmJkZXYgKnVmYmRldiA9Ci0J CWNvbnRhaW5lcl9vZihoZWxwZXIsIHN0cnVjdCB1ZGxfZmJkZXYsIGhlbHBlcik7Ci0Jc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IHVmYmRldi0+aGVscGVyLmRldjsKLQlzdHJ1Y3QgZmJfaW5mbyAq aW5mbzsKLQlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYjsKLQlzdHJ1Y3QgZHJtX21vZGVfZmJf Y21kMiBtb2RlX2NtZDsKLQlzdHJ1Y3QgdWRsX2dlbV9vYmplY3QgKm9iajsKLQl1aW50MzJfdCBz aXplOwotCWludCByZXQgPSAwOwotCi0JaWYgKHNpemVzLT5zdXJmYWNlX2JwcCA9PSAyNCkKLQkJ c2l6ZXMtPnN1cmZhY2VfYnBwID0gMzI7Ci0KLQltb2RlX2NtZC53aWR0aCA9IHNpemVzLT5zdXJm YWNlX3dpZHRoOwotCW1vZGVfY21kLmhlaWdodCA9IHNpemVzLT5zdXJmYWNlX2hlaWdodDsKLQlt b2RlX2NtZC5waXRjaGVzWzBdID0gbW9kZV9jbWQud2lkdGggKiAoKHNpemVzLT5zdXJmYWNlX2Jw cCArIDcpIC8gOCk7Ci0KLQltb2RlX2NtZC5waXhlbF9mb3JtYXQgPSBkcm1fbW9kZV9sZWdhY3lf ZmJfZm9ybWF0KHNpemVzLT5zdXJmYWNlX2JwcCwKLQkJCQkJCQkgIHNpemVzLT5zdXJmYWNlX2Rl cHRoKTsKLQotCXNpemUgPSBtb2RlX2NtZC5waXRjaGVzWzBdICogbW9kZV9jbWQuaGVpZ2h0Owot CXNpemUgPSBBTElHTihzaXplLCBQQUdFX1NJWkUpOwotCi0Jb2JqID0gdWRsX2dlbV9hbGxvY19v YmplY3QoZGV2LCBzaXplKTsKLQlpZiAoIW9iaikKLQkJZ290byBvdXQ7Ci0KLQlyZXQgPSB1ZGxf Z2VtX3ZtYXAob2JqKTsKLQlpZiAocmV0KSB7Ci0JCURSTV9FUlJPUigiZmFpbGVkIHRvIHZtYXAg ZmJcbiIpOwotCQlnb3RvIG91dF9nZnJlZTsKLQl9Ci0KLQlpbmZvID0gZHJtX2ZiX2hlbHBlcl9h bGxvY19mYmkoaGVscGVyKTsKLQlpZiAoSVNfRVJSKGluZm8pKSB7Ci0JCXJldCA9IFBUUl9FUlIo aW5mbyk7Ci0JCWdvdG8gb3V0X2dmcmVlOwotCX0KLQotCXJldCA9IHVkbF9mcmFtZWJ1ZmZlcl9p bml0KGRldiwgJnVmYmRldi0+dWZiLCAmbW9kZV9jbWQsIG9iaik7Ci0JaWYgKHJldCkKLQkJZ290 byBvdXRfZ2ZyZWU7Ci0KLQlmYiA9ICZ1ZmJkZXYtPnVmYi5iYXNlOwotCi0JdWZiZGV2LT5oZWxw ZXIuZmIgPSBmYjsKLQotCWluZm8tPnNjcmVlbl9iYXNlID0gdWZiZGV2LT51ZmIub2JqLT52bWFw cGluZzsKLQlpbmZvLT5maXguc21lbV9sZW4gPSBzaXplOwotCWluZm8tPmZpeC5zbWVtX3N0YXJ0 ID0gKHVuc2lnbmVkIGxvbmcpdWZiZGV2LT51ZmIub2JqLT52bWFwcGluZzsKLQotCWluZm8tPmZi b3BzID0gJnVkbGZiX29wczsKLQlkcm1fZmJfaGVscGVyX2ZpbGxfaW5mbyhpbmZvLCAmdWZiZGV2 LT5oZWxwZXIsIHNpemVzKTsKLQotCURSTV9ERUJVR19LTVMoImFsbG9jYXRlZCAlZHglZCB2bWFs ICVwXG4iLAotCQkgICAgICBmYi0+d2lkdGgsIGZiLT5oZWlnaHQsCi0JCSAgICAgIHVmYmRldi0+ dWZiLm9iai0+dm1hcHBpbmcpOwotCi0JcmV0dXJuIHJldDsKLW91dF9nZnJlZToKLQlkcm1fZ2Vt X29iamVjdF9wdXRfdW5sb2NrZWQoJnVmYmRldi0+dWZiLm9iai0+YmFzZSk7Ci1vdXQ6Ci0JcmV0 dXJuIHJldDsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZmJfaGVscGVyX2Z1bmNzIHVk bF9mYl9oZWxwZXJfZnVuY3MgPSB7Ci0JLmZiX3Byb2JlID0gdWRsZmJfY3JlYXRlLAotfTsKLQot c3RhdGljIHZvaWQgdWRsX2ZiZGV2X2Rlc3Ryb3koc3RydWN0IGRybV9kZXZpY2UgKmRldiwKLQkJ CSAgICAgIHN0cnVjdCB1ZGxfZmJkZXYgKnVmYmRldikKLXsKLQlkcm1fZmJfaGVscGVyX3VucmVn aXN0ZXJfZmJpKCZ1ZmJkZXYtPmhlbHBlcik7Ci0JZHJtX2ZiX2hlbHBlcl9maW5pKCZ1ZmJkZXYt PmhlbHBlcik7Ci0JaWYgKHVmYmRldi0+dWZiLm9iaikgewotCQlkcm1fZnJhbWVidWZmZXJfdW5y ZWdpc3Rlcl9wcml2YXRlKCZ1ZmJkZXYtPnVmYi5iYXNlKTsKLQkJZHJtX2ZyYW1lYnVmZmVyX2Ns ZWFudXAoJnVmYmRldi0+dWZiLmJhc2UpOwotCQlkcm1fZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQo JnVmYmRldi0+dWZiLm9iai0+YmFzZSk7Ci0JfQotfQotCiBpbnQgdWRsX2ZiZGV2X2luaXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKIHsKLQlzdHJ1Y3QgdWRsX2RldmljZSAqdWRsID0gdG9fdWRs KGRldik7CiAJaW50IGJwcF9zZWwgPSBmYl9icHA7Ci0Jc3RydWN0IHVkbF9mYmRldiAqdWZiZGV2 OwogCWludCByZXQ7CiAKLQl1ZmJkZXYgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgdWRsX2ZiZGV2 KSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCF1ZmJkZXYpCi0JCXJldHVybiAtRU5PTUVNOwotCi0JdWRs LT5mYmRldiA9IHVmYmRldjsKLQotCWRybV9mYl9oZWxwZXJfcHJlcGFyZShkZXYsICZ1ZmJkZXYt PmhlbHBlciwgJnVkbF9mYl9oZWxwZXJfZnVuY3MpOwotCi0JcmV0ID0gZHJtX2ZiX2hlbHBlcl9p bml0KGRldiwgJnVmYmRldi0+aGVscGVyLCAxKTsKLQlpZiAocmV0KQotCQlnb3RvIGZyZWU7Ci0K LQlyZXQgPSBkcm1fZmJfaGVscGVyX3NpbmdsZV9hZGRfYWxsX2Nvbm5lY3RvcnMoJnVmYmRldi0+ aGVscGVyKTsKKwlyZXQgPSBkcm1fZmJkZXZfZ2VuZXJpY19zZXR1cChkZXYsIGJwcF9zZWwpOwog CWlmIChyZXQpCi0JCWdvdG8gZmluaTsKLQotCS8qIGRpc2FibGUgYWxsIHRoZSBwb3NzaWJsZSBv dXRwdXRzL2NydGNzIGJlZm9yZSBlbnRlcmluZyBLTVMgbW9kZSAqLwotCWRybV9oZWxwZXJfZGlz YWJsZV91bnVzZWRfZnVuY3Rpb25zKGRldik7Ci0KLQlyZXQgPSBkcm1fZmJfaGVscGVyX2luaXRp YWxfY29uZmlnKCZ1ZmJkZXYtPmhlbHBlciwgYnBwX3NlbCk7Ci0JaWYgKHJldCkKLQkJZ290byBm aW5pOwotCisJCXJldHVybiByZXQ7CiAJcmV0dXJuIDA7Ci0KLWZpbmk6Ci0JZHJtX2ZiX2hlbHBl cl9maW5pKCZ1ZmJkZXYtPmhlbHBlcik7Ci1mcmVlOgotCWtmcmVlKHVmYmRldik7Ci0JcmV0dXJu IHJldDsKLX0KLQotdm9pZCB1ZGxfZmJkZXZfY2xlYW51cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQotewotCXN0cnVjdCB1ZGxfZGV2aWNlICp1ZGwgPSB0b191ZGwoZGV2KTsKLQlpZiAoIXVkbC0+ ZmJkZXYpCi0JCXJldHVybjsKLQotCXVkbF9mYmRldl9kZXN0cm95KGRldiwgdWRsLT5mYmRldik7 Ci0Ja2ZyZWUodWRsLT5mYmRldik7Ci0JdWRsLT5mYmRldiA9IE5VTEw7CiB9CiAKIHZvaWQgdWRs X2ZiZGV2X3VucGx1ZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogewotCXN0cnVjdCB1ZGxfZGV2 aWNlICp1ZGwgPSB0b191ZGwoZGV2KTsKLQlzdHJ1Y3QgdWRsX2ZiZGV2ICp1ZmJkZXY7Ci0JaWYg KCF1ZGwtPmZiZGV2KQotCQlyZXR1cm47Ci0KLQl1ZmJkZXYgPSB1ZGwtPmZiZGV2OwotCWRybV9m Yl9oZWxwZXJfdW5saW5rX2ZiaSgmdWZiZGV2LT5oZWxwZXIpOworCWRybV9mYl9oZWxwZXJfdW5s aW5rX2ZiaShkZXYtPmZiX2hlbHBlcik7CiB9CiAKIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3VkbC91ZGxfbWFpbi5jIGIvZHJpdmVycy9ncHUv ZHJtL3VkbC91ZGxfbWFpbi5jCmluZGV4IDRlODU0ZTAxNzM5MC4uMmE2Mzk5MjkwZjA5IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdWRsL3VkbF9tYWluLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL3VkbC91ZGxfbWFpbi5jCkBAIC0zNjcsNiArMzY3LDQgQEAgdm9pZCB1ZGxfZmluaShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQogCiAJaWYgKHVkbC0+dXJicy5jb3VudCkKIAkJdWRsX2ZyZWVf dXJiX2xpc3QoZGV2KTsKLQotCXVkbF9mYmRldl9jbGVhbnVwKGRldik7CiB9CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vdWRsL3VkbF9tb2Rlc2V0LmMgYi9kcml2ZXJzL2dwdS9kcm0vdWRs L3VkbF9tb2Rlc2V0LmMKaW5kZXggYmMxYWI2MDYwZGM2Li4xNTE3ZDVlODgxYjggMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS91ZGwvdWRsX21vZGVzZXQuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vdWRsL3VkbF9tb2Rlc2V0LmMKQEAgLTEwLDYgKzEwLDcgQEAKICAqLwogCiAjaW5jbHVkZSA8 ZHJtL2RybV9jcnRjX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fZmJfaGVscGVyLmg+CiAj aW5jbHVkZSA8ZHJtL2RybV9tb2Rlc2V0X2hlbHBlcl92dGFibGVzLmg+CiAjaW5jbHVkZSA8ZHJt L2RybV92YmxhbmsuaD4KIApAQCAtNDIyLDcgKzQyMyw3IEBAIHN0YXRpYyBpbnQgdWRsX2NydGNf aW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9t b2RlX2NvbmZpZ19mdW5jcyB1ZGxfbW9kZV9mdW5jcyA9IHsKIAkuZmJfY3JlYXRlID0gdWRsX2Zi X3VzZXJfZmJfY3JlYXRlLAotCS5vdXRwdXRfcG9sbF9jaGFuZ2VkID0gTlVMTCwKKwkub3V0cHV0 X3BvbGxfY2hhbmdlZCA9IGRybV9mYl9oZWxwZXJfb3V0cHV0X3BvbGxfY2hhbmdlZCwKIH07CiAK IGludCB1ZGxfbW9kZXNldF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCi0tIAoyLjIzLjAK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZl bCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==