From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932502AbcE0Hs2 (ORCPT ); Fri, 27 May 2016 03:48:28 -0400 Received: from mx1.redhat.com ([209.132.183.28]:35574 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754282AbcE0HsZ (ORCPT ); Fri, 27 May 2016 03:48:25 -0400 Message-ID: <1464335302.10663.10.camel@redhat.com> Subject: Re: [PATCH] Add virtio gpu driver. From: Gerd Hoffmann To: Daniel Vetter Cc: virtio-dev@lists.oasis-open.org, "Michael S. Tsirkin" , "open list:ABI/API" , Rusty Russell , open list , "open list:DRM DRIVERS" , "open list:VIRTIO CORE, NET..." , Dave Airlie Date: Fri, 27 May 2016 09:48:22 +0200 In-Reply-To: References: <1427213239-8775-1-git-send-email-kraxel@redhat.com> <20150324165057.GN1349@phenom.ffwll.local> <1427718227.3372.33.camel@nilsson.home.kraxel.org> <20150330144927.GN23521@phenom.ffwll.local> Content-Type: multipart/mixed; boundary="=-fnUCd6Tt6VVV2jvtuhim" Mime-Version: 1.0 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Fri, 27 May 2016 07:48:25 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --=-fnUCd6Tt6VVV2jvtuhim Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, > I guess I didn't do a good job at looking at your v2: Cursor is still > using legacy interfaces and not a proper plane. Would be awesome if > you could fix that up. Atomic drivers really shouldn't use the legacy > cursor interfaces any more at all. > -Daniel Figured that one for the most part, see attached draft. The only thing I'm wondering is how the hotspot is handled. drm_mode_cursor_universal doesn't even look at req->hot_{x,y}. /me looks confused. cheers, Gerd --=-fnUCd6Tt6VVV2jvtuhim Content-Disposition: attachment; filename="0001-wip-virtio-gpu-switch-to-atomic-cursor-interfaces.patch" Content-Type: text/x-patch; name="0001-wip-virtio-gpu-switch-to-atomic-cursor-interfaces.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBmYjFkMDcwMGE0NmQ4NTBlYzlmOTMxMzA0YTllOTk4NTRhM2NlNWU5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHZXJkIEhvZmZtYW5uIDxrcmF4ZWxAcmVkaGF0LmNvbT4KRGF0 ZTogVGh1LCAyNiBNYXkgMjAxNiAxMTo0Mjo1MiArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIFt3aXBd IHZpcnRpby1ncHU6IHN3aXRjaCB0byBhdG9taWMgY3Vyc29yIGludGVyZmFjZXMKClNpZ25lZC1v ZmYtYnk6IEdlcmQgSG9mZm1hbm4gPGtyYXhlbEByZWRoYXQuY29tPgotLS0KIGRyaXZlcnMvZ3B1 L2RybS92aXJ0aW8vdmlydGdwdV9kaXNwbGF5LmMgfCAxMDIgKysrLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KIGRyaXZlcnMvZ3B1L2RybS92aXJ0aW8vdmlydGdwdV9kcnYuaCAgICAgfCAgIDEgKwog ZHJpdmVycy9ncHUvZHJtL3ZpcnRpby92aXJ0Z3B1X3BsYW5lLmMgICB8IDEyMiArKysrKysrKysr KysrKysrKysrKysrKystLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDEwOSBpbnNlcnRpb25zKCsp LCAxMTYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZpcnRpby92 aXJ0Z3B1X2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS92aXJ0aW8vdmlydGdwdV9kaXNwbGF5 LmMKaW5kZXggNTk5MGNhYi4uZDZiMTZkMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Zp cnRpby92aXJ0Z3B1X2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdmlydGlvL3ZpcnRn cHVfZGlzcGxheS5jCkBAIC0yOSw4ICsyOSw4IEBACiAjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hl bHBlci5oPgogI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgogCi0jZGVmaW5lIFhS RVNfTUlOICAgMzIwCi0jZGVmaW5lIFlSRVNfTUlOICAgMjAwCisjZGVmaW5lIFhSRVNfTUlOICAg IDMyCisjZGVmaW5lIFlSRVNfTUlOICAgIDMyCiAKICNkZWZpbmUgWFJFU19ERUYgIDEwMjQKICNk ZWZpbmUgWVJFU19ERUYgICA3NjgKQEAgLTM4LDg2ICszOCw2IEBACiAjZGVmaW5lIFhSRVNfTUFY ICA4MTkyCiAjZGVmaW5lIFlSRVNfTUFYICA4MTkyCiAKLXN0YXRpYyB2b2lkCi12aXJ0aW9fZ3B1 X2hpZGVfY3Vyc29yKHN0cnVjdCB2aXJ0aW9fZ3B1X2RldmljZSAqdmdkZXYsCi0JCSAgICAgICBz dHJ1Y3QgdmlydGlvX2dwdV9vdXRwdXQgKm91dHB1dCkKLXsKLQlvdXRwdXQtPmN1cnNvci5oZHIu dHlwZSA9IGNwdV90b19sZTMyKFZJUlRJT19HUFVfQ01EX1VQREFURV9DVVJTT1IpOwotCW91dHB1 dC0+Y3Vyc29yLnJlc291cmNlX2lkID0gMDsKLQl2aXJ0aW9fZ3B1X2N1cnNvcl9waW5nKHZnZGV2 LCBvdXRwdXQpOwotfQotCi1zdGF0aWMgaW50IHZpcnRpb19ncHVfY3J0Y19jdXJzb3Jfc2V0KHN0 cnVjdCBkcm1fY3J0YyAqY3J0YywKLQkJCQkgICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJp diwKLQkJCQkgICAgICB1aW50MzJfdCBoYW5kbGUsCi0JCQkJICAgICAgdWludDMyX3Qgd2lkdGgs Ci0JCQkJICAgICAgdWludDMyX3QgaGVpZ2h0LAotCQkJCSAgICAgIGludDMyX3QgaG90X3gsIGlu dDMyX3QgaG90X3kpCi17Ci0Jc3RydWN0IHZpcnRpb19ncHVfZGV2aWNlICp2Z2RldiA9IGNydGMt PmRldi0+ZGV2X3ByaXZhdGU7Ci0Jc3RydWN0IHZpcnRpb19ncHVfb3V0cHV0ICpvdXRwdXQgPQot CQljb250YWluZXJfb2YoY3J0Yywgc3RydWN0IHZpcnRpb19ncHVfb3V0cHV0LCBjcnRjKTsKLQlz dHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdvYmogPSBOVUxMOwotCXN0cnVjdCB2aXJ0aW9fZ3B1X29i amVjdCAqcW9iaiA9IE5VTEw7Ci0Jc3RydWN0IHZpcnRpb19ncHVfZmVuY2UgKmZlbmNlID0gTlVM TDsKLQlpbnQgcmV0ID0gMDsKLQotCWlmIChoYW5kbGUgPT0gMCkgewotCQl2aXJ0aW9fZ3B1X2hp ZGVfY3Vyc29yKHZnZGV2LCBvdXRwdXQpOwotCQlyZXR1cm4gMDsKLQl9Ci0KLQkvKiBsb29rdXAg dGhlIGN1cnNvciAqLwotCWdvYmogPSBkcm1fZ2VtX29iamVjdF9sb29rdXAoY3J0Yy0+ZGV2LCBm aWxlX3ByaXYsIGhhbmRsZSk7Ci0JaWYgKGdvYmogPT0gTlVMTCkKLQkJcmV0dXJuIC1FTk9FTlQ7 Ci0KLQlxb2JqID0gZ2VtX3RvX3ZpcnRpb19ncHVfb2JqKGdvYmopOwotCi0JaWYgKCFxb2JqLT5o d19yZXNfaGFuZGxlKSB7Ci0JCXJldCA9IC1FSU5WQUw7Ci0JCWdvdG8gb3V0OwotCX0KLQotCXZp cnRpb19ncHVfY21kX3RyYW5zZmVyX3RvX2hvc3RfMmQodmdkZXYsIHFvYmotPmh3X3Jlc19oYW5k bGUsIDAsCi0JCQkJCSAgIGNwdV90b19sZTMyKDY0KSwKLQkJCQkJICAgY3B1X3RvX2xlMzIoNjQp LAotCQkJCQkgICAwLCAwLCAmZmVuY2UpOwotCXJldCA9IHZpcnRpb19ncHVfb2JqZWN0X3Jlc2Vy dmUocW9iaiwgZmFsc2UpOwotCWlmICghcmV0KSB7Ci0JCXJlc2VydmF0aW9uX29iamVjdF9hZGRf ZXhjbF9mZW5jZShxb2JqLT50Ym8ucmVzdiwKLQkJCQkJCSAgJmZlbmNlLT5mKTsKLQkJZmVuY2Vf cHV0KCZmZW5jZS0+Zik7Ci0JCXZpcnRpb19ncHVfb2JqZWN0X3VucmVzZXJ2ZShxb2JqKTsKLQkJ dmlydGlvX2dwdV9vYmplY3Rfd2FpdChxb2JqLCBmYWxzZSk7Ci0JfQotCi0Jb3V0cHV0LT5jdXJz b3IuaGRyLnR5cGUgPSBjcHVfdG9fbGUzMihWSVJUSU9fR1BVX0NNRF9VUERBVEVfQ1VSU09SKTsK LQlvdXRwdXQtPmN1cnNvci5yZXNvdXJjZV9pZCA9IGNwdV90b19sZTMyKHFvYmotPmh3X3Jlc19o YW5kbGUpOwotCW91dHB1dC0+Y3Vyc29yLmhvdF94ID0gY3B1X3RvX2xlMzIoaG90X3gpOwotCW91 dHB1dC0+Y3Vyc29yLmhvdF95ID0gY3B1X3RvX2xlMzIoaG90X3kpOwotCXZpcnRpb19ncHVfY3Vy c29yX3BpbmcodmdkZXYsIG91dHB1dCk7Ci0JcmV0ID0gMDsKLQotb3V0OgotCWRybV9nZW1fb2Jq ZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKGdvYmopOwotCXJldHVybiByZXQ7Ci19Ci0KLXN0YXRp YyBpbnQgdmlydGlvX2dwdV9jcnRjX2N1cnNvcl9tb3ZlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywK LQkJCQkgICAgaW50IHgsIGludCB5KQotewotCXN0cnVjdCB2aXJ0aW9fZ3B1X2RldmljZSAqdmdk ZXYgPSBjcnRjLT5kZXYtPmRldl9wcml2YXRlOwotCXN0cnVjdCB2aXJ0aW9fZ3B1X291dHB1dCAq b3V0cHV0ID0KLQkJY29udGFpbmVyX29mKGNydGMsIHN0cnVjdCB2aXJ0aW9fZ3B1X291dHB1dCwg Y3J0Yyk7Ci0KLQlvdXRwdXQtPmN1cnNvci5oZHIudHlwZSA9IGNwdV90b19sZTMyKFZJUlRJT19H UFVfQ01EX01PVkVfQ1VSU09SKTsKLQlvdXRwdXQtPmN1cnNvci5wb3MueCA9IGNwdV90b19sZTMy KHgpOwotCW91dHB1dC0+Y3Vyc29yLnBvcy55ID0gY3B1X3RvX2xlMzIoeSk7Ci0JdmlydGlvX2dw dV9jdXJzb3JfcGluZyh2Z2Rldiwgb3V0cHV0KTsKLQlyZXR1cm4gMDsKLX0KLQogc3RhdGljIGlu dCB2aXJ0aW9fZ3B1X3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCQkJc3RydWN0 IGRybV9mcmFtZWJ1ZmZlciAqZmIsCiAJCQkJc3RydWN0IGRybV9wZW5kaW5nX3ZibGFua19ldmVu dCAqZXZlbnQsCkBAIC0xNjQsOCArODQsNiBAQCBzdGF0aWMgaW50IHZpcnRpb19ncHVfcGFnZV9m bGlwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1f Y3J0Y19mdW5jcyB2aXJ0aW9fZ3B1X2NydGNfZnVuY3MgPSB7Ci0JLmN1cnNvcl9zZXQyICAgICAg ICAgICAgPSB2aXJ0aW9fZ3B1X2NydGNfY3Vyc29yX3NldCwKLQkuY3Vyc29yX21vdmUgICAgICAg ICAgICA9IHZpcnRpb19ncHVfY3J0Y19jdXJzb3JfbW92ZSwKIAkuc2V0X2NvbmZpZyAgICAgICAg ICAgICA9IGRybV9hdG9taWNfaGVscGVyX3NldF9jb25maWcsCiAJLmRlc3Ryb3kgICAgICAgICAg ICAgICAgPSBkcm1fY3J0Y19jbGVhbnVwLAogCkBAIC00MDYsNyArMzI0LDcgQEAgc3RhdGljIGlu dCB2Z2Rldl9vdXRwdXRfaW5pdChzdHJ1Y3QgdmlydGlvX2dwdV9kZXZpY2UgKnZnZGV2LCBpbnQg aW5kZXgpCiAJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9ICZvdXRwdXQtPmNvbm47 CiAJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyID0gJm91dHB1dC0+ZW5jOwogCXN0cnVjdCBk cm1fY3J0YyAqY3J0YyA9ICZvdXRwdXQtPmNydGM7Ci0Jc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7 CisJc3RydWN0IGRybV9wbGFuZSAqcHJpbWFyeSwgKmN1cnNvcjsKIAogCW91dHB1dC0+aW5kZXgg PSBpbmRleDsKIAlpZiAoaW5kZXggPT0gMCkgewpAQCAtNDE1LDE0ICszMzMsMTggQEAgc3RhdGlj IGludCB2Z2Rldl9vdXRwdXRfaW5pdChzdHJ1Y3QgdmlydGlvX2dwdV9kZXZpY2UgKnZnZGV2LCBp bnQgaW5kZXgpCiAJCW91dHB1dC0+aW5mby5yLmhlaWdodCA9IGNwdV90b19sZTMyKFlSRVNfREVG KTsKIAl9CiAKLQlwbGFuZSA9IHZpcnRpb19ncHVfcGxhbmVfaW5pdCh2Z2RldiwgaW5kZXgpOwot CWlmIChJU19FUlIocGxhbmUpKQotCQlyZXR1cm4gUFRSX0VSUihwbGFuZSk7Ci0JZHJtX2NydGNf aW5pdF93aXRoX3BsYW5lcyhkZXYsIGNydGMsIHBsYW5lLCBOVUxMLAorCXByaW1hcnkgPSB2aXJ0 aW9fZ3B1X3BsYW5lX2luaXQodmdkZXYsIERSTV9QTEFORV9UWVBFX1BSSU1BUlksIGluZGV4KTsK KwlpZiAoSVNfRVJSKHByaW1hcnkpKQorCQlyZXR1cm4gUFRSX0VSUihwcmltYXJ5KTsKKwljdXJz b3IgPSB2aXJ0aW9fZ3B1X3BsYW5lX2luaXQodmdkZXYsIERSTV9QTEFORV9UWVBFX0NVUlNPUiwg aW5kZXgpOworCWlmIChJU19FUlIoY3Vyc29yKSkKKwkJcmV0dXJuIFBUUl9FUlIoY3Vyc29yKTsK Kwlkcm1fY3J0Y19pbml0X3dpdGhfcGxhbmVzKGRldiwgY3J0YywgcHJpbWFyeSwgY3Vyc29yLAog CQkJCSAgJnZpcnRpb19ncHVfY3J0Y19mdW5jcywgTlVMTCk7CiAJZHJtX21vZGVfY3J0Y19zZXRf Z2FtbWFfc2l6ZShjcnRjLCAyNTYpOwogCWRybV9jcnRjX2hlbHBlcl9hZGQoY3J0YywgJnZpcnRp b19ncHVfY3J0Y19oZWxwZXJfZnVuY3MpOwotCXBsYW5lLT5jcnRjID0gY3J0YzsKKwlwcmltYXJ5 LT5jcnRjID0gY3J0YzsKKwljdXJzb3ItPmNydGMgPSBjcnRjOwogCiAJZHJtX2Nvbm5lY3Rvcl9p bml0KGRldiwgY29ubmVjdG9yLCAmdmlydGlvX2dwdV9jb25uZWN0b3JfZnVuY3MsCiAJCQkgICBE Uk1fTU9ERV9DT05ORUNUT1JfVklSVFVBTCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v dmlydGlvL3ZpcnRncHVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vdmlydGlvL3ZpcnRncHVfZHJ2 LmgKaW5kZXggOGY0ODZmNC4uYTFmN2U5ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Zp cnRpby92aXJ0Z3B1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92aXJ0aW8vdmlydGdwdV9k cnYuaApAQCAtMzM1LDYgKzMzNSw3IEBAIHZvaWQgdmlydGlvX2dwdV9tb2Rlc2V0X2Zpbmkoc3Ry dWN0IHZpcnRpb19ncHVfZGV2aWNlICp2Z2Rldik7CiAKIC8qIHZpcnRpb19ncHVfcGxhbmUuYyAq Lwogc3RydWN0IGRybV9wbGFuZSAqdmlydGlvX2dwdV9wbGFuZV9pbml0KHN0cnVjdCB2aXJ0aW9f Z3B1X2RldmljZSAqdmdkZXYsCisJCQkJCWVudW0gZHJtX3BsYW5lX3R5cGUgdHlwZSwKIAkJCQkJ aW50IGluZGV4KTsKIAogLyogdmlydGlvX2dwdV90dG0uYyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL3ZpcnRpby92aXJ0Z3B1X3BsYW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vdmlydGlv L3ZpcnRncHVfcGxhbmUuYwppbmRleCA3MGI0NGEyLi5kNjgyNzBmIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vdmlydGlvL3ZpcnRncHVfcGxhbmUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v dmlydGlvL3ZpcnRncHVfcGxhbmUuYwpAQCAtMzgsNiArMzgsMTAgQEAgc3RhdGljIGNvbnN0IHVp bnQzMl90IHZpcnRpb19ncHVfZm9ybWF0c1tdID0gewogCURSTV9GT1JNQVRfQUJHUjg4ODgsCiB9 OwogCitzdGF0aWMgY29uc3QgdWludDMyX3QgdmlydGlvX2dwdV9jdXJzb3JfZm9ybWF0c1tdID0g eworCURSTV9GT1JNQVRfQVJHQjg4ODgsCit9OworCiBzdGF0aWMgdm9pZCB2aXJ0aW9fZ3B1X3Bs YW5lX2Rlc3Ryb3koc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCiB7CiAJa2ZyZWUocGxhbmUpOwpA QCAtNjMsMzkgKzY3LDk3IEBAIHN0YXRpYyB2b2lkIHZpcnRpb19ncHVfcGxhbmVfYXRvbWljX3Vw ZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gcGxhbmUtPmRldjsKIAlzdHJ1Y3QgdmlydGlvX2dwdV9kZXZpY2UgKnZnZGV2ID0gZGV2LT5k ZXZfcHJpdmF0ZTsKLQlzdHJ1Y3QgdmlydGlvX2dwdV9vdXRwdXQgKm91dHB1dCA9IGRybV9jcnRj X3RvX3ZpcnRpb19ncHVfb3V0cHV0KHBsYW5lLT5jcnRjKTsKKwlzdHJ1Y3QgdmlydGlvX2dwdV9v dXRwdXQgKm91dHB1dCA9IE5VTEw7CiAJc3RydWN0IHZpcnRpb19ncHVfZnJhbWVidWZmZXIgKnZn ZmI7Ci0Jc3RydWN0IHZpcnRpb19ncHVfb2JqZWN0ICpibzsKKwlzdHJ1Y3QgdmlydGlvX2dwdV9m ZW5jZSAqZmVuY2UgPSBOVUxMOworCXN0cnVjdCB2aXJ0aW9fZ3B1X29iamVjdCAqYm8gPSBOVUxM OwogCXVpbnQzMl90IGhhbmRsZTsKKwlpbnQgcmV0ID0gMDsKKworCWlmIChwbGFuZS0+c3RhdGUt PmNydGMpCisJCW91dHB1dCA9IGRybV9jcnRjX3RvX3ZpcnRpb19ncHVfb3V0cHV0KHBsYW5lLT5z dGF0ZS0+Y3J0Yyk7CisJaWYgKG9sZF9zdGF0ZS0+Y3J0YykKKwkJb3V0cHV0ID0gZHJtX2NydGNf dG9fdmlydGlvX2dwdV9vdXRwdXQob2xkX3N0YXRlLT5jcnRjKTsKKwlXQVJOX09OKCFvdXRwdXQp OwogCiAJaWYgKHBsYW5lLT5zdGF0ZS0+ZmIpIHsKIAkJdmdmYiA9IHRvX3ZpcnRpb19ncHVfZnJh bWVidWZmZXIocGxhbmUtPnN0YXRlLT5mYik7CiAJCWJvID0gZ2VtX3RvX3ZpcnRpb19ncHVfb2Jq KHZnZmItPm9iaik7CiAJCWhhbmRsZSA9IGJvLT5od19yZXNfaGFuZGxlOwotCQlpZiAoYm8tPmR1 bWIpIHsKLQkJCXZpcnRpb19ncHVfY21kX3RyYW5zZmVyX3RvX2hvc3RfMmQKLQkJCQkodmdkZXYs IGhhbmRsZSwgMCwKLQkJCQkgY3B1X3RvX2xlMzIocGxhbmUtPnN0YXRlLT5jcnRjX3cpLAotCQkJ CSBjcHVfdG9fbGUzMihwbGFuZS0+c3RhdGUtPmNydGNfaCksCi0JCQkJIHBsYW5lLT5zdGF0ZS0+ Y3J0Y194LCBwbGFuZS0+c3RhdGUtPmNydGNfeSwgTlVMTCk7Ci0JCX0KIAl9IGVsc2UgewogCQlo YW5kbGUgPSAwOwogCX0KIAotCURSTV9ERUJVRygiaGFuZGxlIDB4JXgsIGNydGMgJWR4JWQrJWQr JWRcbiIsIGhhbmRsZSwKLQkJICBwbGFuZS0+c3RhdGUtPmNydGNfdywgcGxhbmUtPnN0YXRlLT5j cnRjX2gsCi0JCSAgcGxhbmUtPnN0YXRlLT5jcnRjX3gsIHBsYW5lLT5zdGF0ZS0+Y3J0Y195KTsK LQl2aXJ0aW9fZ3B1X2NtZF9zZXRfc2Nhbm91dCh2Z2Rldiwgb3V0cHV0LT5pbmRleCwgaGFuZGxl LAotCQkJCSAgIHBsYW5lLT5zdGF0ZS0+Y3J0Y193LAotCQkJCSAgIHBsYW5lLT5zdGF0ZS0+Y3J0 Y19oLAotCQkJCSAgIHBsYW5lLT5zdGF0ZS0+Y3J0Y194LAotCQkJCSAgIHBsYW5lLT5zdGF0ZS0+ Y3J0Y195KTsKLQl2aXJ0aW9fZ3B1X2NtZF9yZXNvdXJjZV9mbHVzaCh2Z2RldiwgaGFuZGxlLAot CQkJCSAgICAgIHBsYW5lLT5zdGF0ZS0+Y3J0Y194LAotCQkJCSAgICAgIHBsYW5lLT5zdGF0ZS0+ Y3J0Y195LAotCQkJCSAgICAgIHBsYW5lLT5zdGF0ZS0+Y3J0Y193LAotCQkJCSAgICAgIHBsYW5l LT5zdGF0ZS0+Y3J0Y19oKTsKKwlzd2l0Y2ggKHBsYW5lLT50eXBlKSB7CisJY2FzZSBEUk1fUExB TkVfVFlQRV9DVVJTT1I6CisJCWlmIChibyAmJiBiby0+ZHVtYiAmJiAocGxhbmUtPnN0YXRlLT5m YiAhPSBvbGRfc3RhdGUtPmZiKSkgeworCQkJLyogbmV3IGN1cnNvciAtLSB1cGRhdGUgJiB3YWl0 ICovCisJCQl2aXJ0aW9fZ3B1X2NtZF90cmFuc2Zlcl90b19ob3N0XzJkCisJCQkJKHZnZGV2LCBo YW5kbGUsIDAsCisJCQkJIGNwdV90b19sZTMyKHBsYW5lLT5zdGF0ZS0+Y3J0Y193KSwKKwkJCQkg Y3B1X3RvX2xlMzIocGxhbmUtPnN0YXRlLT5jcnRjX2gpLAorCQkJCSAwLCAwLCAmZmVuY2UpOwor CQkJcmV0ID0gdmlydGlvX2dwdV9vYmplY3RfcmVzZXJ2ZShibywgZmFsc2UpOworCQkJaWYgKCFy ZXQpIHsKKwkJCQlyZXNlcnZhdGlvbl9vYmplY3RfYWRkX2V4Y2xfZmVuY2UoYm8tPnRiby5yZXN2 LAorCQkJCQkJCQkgICZmZW5jZS0+Zik7CisJCQkJZmVuY2VfcHV0KCZmZW5jZS0+Zik7CisJCQkJ ZmVuY2UgPSBOVUxMOworCQkJCXZpcnRpb19ncHVfb2JqZWN0X3VucmVzZXJ2ZShibyk7CisJCQkJ dmlydGlvX2dwdV9vYmplY3Rfd2FpdChibywgZmFsc2UpOworCQkJfQorCQl9CisKKwkJaWYgKHBs YW5lLT5zdGF0ZS0+ZmIgIT0gb2xkX3N0YXRlLT5mYikgeworCQkJRFJNX0RFQlVHKCJjdXJzb3Ig dXBkYXRlLCBoYW5kbGUgJWQsICslZCslZFxuIiwgaGFuZGxlLAorCQkJCSAgcGxhbmUtPnN0YXRl LT5jcnRjX3gsCisJCQkJICBwbGFuZS0+c3RhdGUtPmNydGNfeSk7CisJCQlvdXRwdXQtPmN1cnNv ci5oZHIudHlwZSA9CisJCQkJY3B1X3RvX2xlMzIoVklSVElPX0dQVV9DTURfVVBEQVRFX0NVUlNP Uik7CisJCQlvdXRwdXQtPmN1cnNvci5yZXNvdXJjZV9pZCA9IGNwdV90b19sZTMyKGhhbmRsZSk7 CisjaWYgMAorCQkJb3V0cHV0LT5jdXJzb3IuaG90X3ggPSBjcHVfdG9fbGUzMihob3RfeCk7CisJ CQlvdXRwdXQtPmN1cnNvci5ob3RfeSA9IGNwdV90b19sZTMyKGhvdF95KTsKKyNlbmRpZgorCQl9 IGVsc2UgeworCQkJRFJNX0RFQlVHKCJjdXJzb3IgbW92ZSArJWQrJWRcbiIsCisJCQkJICBwbGFu ZS0+c3RhdGUtPmNydGNfeCwKKwkJCQkgIHBsYW5lLT5zdGF0ZS0+Y3J0Y195KTsKKwkJCW91dHB1 dC0+Y3Vyc29yLmhkci50eXBlID0KKwkJCQljcHVfdG9fbGUzMihWSVJUSU9fR1BVX0NNRF9NT1ZF X0NVUlNPUik7CisJCX0KKwkJb3V0cHV0LT5jdXJzb3IucG9zLnggPSBjcHVfdG9fbGUzMihwbGFu ZS0+c3RhdGUtPmNydGNfeCk7CisJCW91dHB1dC0+Y3Vyc29yLnBvcy55ID0gY3B1X3RvX2xlMzIo cGxhbmUtPnN0YXRlLT5jcnRjX3kpOworCQl2aXJ0aW9fZ3B1X2N1cnNvcl9waW5nKHZnZGV2LCBv dXRwdXQpOworCQlicmVhazsKKworCWNhc2UgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWToKKwkJRFJN X0RFQlVHKCJwcmltYXJ5LCBoYW5kbGUgMHgleCwgY3J0YyAlZHglZCslZCslZFxuIiwgaGFuZGxl LAorCQkJICBwbGFuZS0+c3RhdGUtPmNydGNfdywgcGxhbmUtPnN0YXRlLT5jcnRjX2gsCisJCQkg IHBsYW5lLT5zdGF0ZS0+Y3J0Y194LCBwbGFuZS0+c3RhdGUtPmNydGNfeSk7CisJCWlmIChibyAm JiBiby0+ZHVtYikgeworCQkJdmlydGlvX2dwdV9jbWRfdHJhbnNmZXJfdG9faG9zdF8yZAorCQkJ CSh2Z2RldiwgaGFuZGxlLCAwLAorCQkJCSBjcHVfdG9fbGUzMihwbGFuZS0+c3RhdGUtPmNydGNf dyksCisJCQkJIGNwdV90b19sZTMyKHBsYW5lLT5zdGF0ZS0+Y3J0Y19oKSwKKwkJCQkgcGxhbmUt PnN0YXRlLT5jcnRjX3gsIHBsYW5lLT5zdGF0ZS0+Y3J0Y195LAorCQkJCSAmZmVuY2UpOworCQl9 CisJCXZpcnRpb19ncHVfY21kX3NldF9zY2Fub3V0KHZnZGV2LCBvdXRwdXQtPmluZGV4LCBoYW5k bGUsCisJCQkJCSAgIHBsYW5lLT5zdGF0ZS0+Y3J0Y193LAorCQkJCQkgICBwbGFuZS0+c3RhdGUt PmNydGNfaCwKKwkJCQkJICAgcGxhbmUtPnN0YXRlLT5jcnRjX3gsCisJCQkJCSAgIHBsYW5lLT5z dGF0ZS0+Y3J0Y195KTsKKwkJdmlydGlvX2dwdV9jbWRfcmVzb3VyY2VfZmx1c2godmdkZXYsIGhh bmRsZSwKKwkJCQkJICAgICAgcGxhbmUtPnN0YXRlLT5jcnRjX3gsCisJCQkJCSAgICAgIHBsYW5l LT5zdGF0ZS0+Y3J0Y195LAorCQkJCQkgICAgICBwbGFuZS0+c3RhdGUtPmNydGNfdywKKwkJCQkJ ICAgICAgcGxhbmUtPnN0YXRlLT5jcnRjX2gpOworCQlicmVhazsKKworCWRlZmF1bHQ6CisJCVdB Uk5fT04odHJ1ZSk7CisJfQogfQogCiAKQEAgLTEwNSwyMSArMTY3LDI5IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgZHJtX3BsYW5lX2hlbHBlcl9mdW5jcyB2aXJ0aW9fZ3B1X3BsYW5lX2hlbHBlcl9m dW5jcyA9IHsKIH07CiAKIHN0cnVjdCBkcm1fcGxhbmUgKnZpcnRpb19ncHVfcGxhbmVfaW5pdChz dHJ1Y3QgdmlydGlvX2dwdV9kZXZpY2UgKnZnZGV2LAorCQkJCQllbnVtIGRybV9wbGFuZV90eXBl IHR5cGUsCiAJCQkJCWludCBpbmRleCkKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gdmdk ZXYtPmRkZXY7CiAJc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Ci0JaW50IHJldDsKKwljb25zdCB1 aW50MzJfdCAqZm9ybWF0czsKKwlpbnQgcmV0LCBuZm9ybWF0czsKIAogCXBsYW5lID0ga3phbGxv YyhzaXplb2YoKnBsYW5lKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFwbGFuZSkKIAkJcmV0dXJuIEVS Ul9QVFIoLUVOT01FTSk7CiAKKwlpZiAodHlwZSA9PSBEUk1fUExBTkVfVFlQRV9DVVJTT1IpIHsK KwkJZm9ybWF0cyA9IHZpcnRpb19ncHVfY3Vyc29yX2Zvcm1hdHM7CisJCW5mb3JtYXRzID0gQVJS QVlfU0laRSh2aXJ0aW9fZ3B1X2N1cnNvcl9mb3JtYXRzKTsKKwl9IGVsc2UgeworCQlmb3JtYXRz ID0gdmlydGlvX2dwdV9mb3JtYXRzOworCQluZm9ybWF0cyA9IEFSUkFZX1NJWkUodmlydGlvX2dw dV9mb3JtYXRzKTsKKwl9CiAJcmV0ID0gZHJtX3VuaXZlcnNhbF9wbGFuZV9pbml0KGRldiwgcGxh bmUsIDEgPDwgaW5kZXgsCiAJCQkJICAgICAgICZ2aXJ0aW9fZ3B1X3BsYW5lX2Z1bmNzLAotCQkJ CSAgICAgICB2aXJ0aW9fZ3B1X2Zvcm1hdHMsCi0JCQkJICAgICAgIEFSUkFZX1NJWkUodmlydGlv X2dwdV9mb3JtYXRzKSwKLQkJCQkgICAgICAgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSwgTlVMTCk7 CisJCQkJICAgICAgIGZvcm1hdHMsIG5mb3JtYXRzLAorCQkJCSAgICAgICB0eXBlLCBOVUxMKTsK IAlpZiAocmV0KQogCQlnb3RvIGVycl9wbGFuZV9pbml0OwogCi0tIAoxLjguMy4xCgo= --=-fnUCd6Tt6VVV2jvtuhim--