From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ralph Campbell Subject: [PATCH v2 3/7] mm/hmm: replace the block argument to hmm_range_fault with a flags value Date: Thu, 25 Jul 2019 17:56:46 -0700 Message-ID: <20190726005650.2566-4-rcampbell@nvidia.com> References: <20190726005650.2566-1-rcampbell@nvidia.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190726005650.2566-1-rcampbell@nvidia.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: linux-mm@kvack.org Cc: Ralph Campbell , nouveau@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , Jason Gunthorpe , amd-gfx@lists.freedesktop.org, Christoph Hellwig List-Id: dri-devel@lists.freedesktop.org RnJvbTogQ2hyaXN0b3BoIEhlbGx3aWcgPGhjaEBsc3QuZGU+CgpUaGlzIGFsbG93cyBlYXNpZXIg ZXhwYW5zaW9uIHRvIG90aGVyIGZsYWdzLCBhbmQgYWxzbyBtYWtlcyB0aGUKY2FsbGVycyBhIGxp dHRsZSBlYXNpZXIgdG8gcmVhZC4KClNpZ25lZC1vZmYtYnk6IENocmlzdG9waCBIZWxsd2lnIDxo Y2hAbHN0LmRlPgpTaWduZWQtb2ZmLWJ5OiBSYWxwaCBDYW1wYmVsbCA8cmNhbXBiZWxsQG52aWRp YS5jb20+CkNjOiAiSsOpcsO0bWUgR2xpc3NlIiA8amdsaXNzZUByZWRoYXQuY29tPgpDYzogSmFz b24gR3VudGhvcnBlIDxqZ2dAbWVsbGFub3guY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV90dG0uYyB8ICAyICstCiBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2 ZWF1X3N2bS5jICAgfCAgMiArLQogaW5jbHVkZS9saW51eC9obW0uaCAgICAgICAgICAgICAgICAg ICAgIHwgMTEgKysrLQogbW0vaG1tLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg NzQgKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQogNCBmaWxlcyBjaGFuZ2VkLCA0OCBpbnNlcnRp b25zKCspLCA0MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfdHRtLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf dHRtLmMKaW5kZXggZTUxYjQ4YWM0OGViLi4xMmE1OWFjODNmNzIgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV90dG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfdHRtLmMKQEAgLTgzMiw3ICs4MzIsNyBAQCBpbnQgYW1kZ3B1X3R0 bV90dF9nZXRfdXNlcl9wYWdlcyhzdHJ1Y3QgYW1kZ3B1X2JvICpibywgc3RydWN0IHBhZ2UgKipw YWdlcykKIAogCWRvd25fcmVhZCgmbW0tPm1tYXBfc2VtKTsKIAotCXIgPSBobW1fcmFuZ2VfZmF1 bHQocmFuZ2UsIHRydWUpOworCXIgPSBobW1fcmFuZ2VfZmF1bHQocmFuZ2UsIDApOwogCWlmICh1 bmxpa2VseShyIDwgMCkpIHsKIAkJaWYgKGxpa2VseShyID09IC1FQUdBSU4pKSB7CiAJCQkvKgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uYyBiL2RyaXZl cnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3ZtLmMKaW5kZXggNzliMjljOTE4NzE3Li40OWI1 MjBjNjBmYzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3Zt LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdm0uYwpAQCAtNTA1LDcg KzUwNSw3IEBAIG5vdXZlYXVfcmFuZ2VfZmF1bHQoc3RydWN0IGhtbV9taXJyb3IgKm1pcnJvciwg c3RydWN0IGhtbV9yYW5nZSAqcmFuZ2UpCiAJCXJldHVybiAtRUJVU1k7CiAJfQogCi0JcmV0ID0g aG1tX3JhbmdlX2ZhdWx0KHJhbmdlLCB0cnVlKTsKKwlyZXQgPSBobW1fcmFuZ2VfZmF1bHQocmFu Z2UsIDApOwogCWlmIChyZXQgPD0gMCkgewogCQlpZiAocmV0ID09IDApCiAJCQlyZXQgPSAtRUJV U1k7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2htbS5oIGIvaW5jbHVkZS9saW51eC9obW0u aAppbmRleCA2NTllMjVhMTU3MDAuLjE1ZjFiMTEzYmUzYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9s aW51eC9obW0uaAorKysgYi9pbmNsdWRlL2xpbnV4L2htbS5oCkBAIC00MDYsMTIgKzQwNiwxOSBA QCBpbnQgaG1tX3JhbmdlX3JlZ2lzdGVyKHN0cnVjdCBobW1fcmFuZ2UgKnJhbmdlLAogCQkgICAg ICAgdW5zaWduZWQgbG9uZyBlbmQsCiAJCSAgICAgICB1bnNpZ25lZCBwYWdlX3NoaWZ0KTsKIHZv aWQgaG1tX3JhbmdlX3VucmVnaXN0ZXIoc3RydWN0IGhtbV9yYW5nZSAqcmFuZ2UpOworCisvKgor ICogUmV0cnkgZmF1bHQgaWYgbm9uLWJsb2NraW5nLCBkcm9wIG1tYXBfc2VtIGFuZCByZXR1cm4g LUVBR0FJTiBpbiB0aGF0IGNhc2UuCisgKi8KKyNkZWZpbmUgSE1NX0ZBVUxUX0FMTE9XX1JFVFJZ CQkoMSA8PCAwKQorCiBsb25nIGhtbV9yYW5nZV9zbmFwc2hvdChzdHJ1Y3QgaG1tX3JhbmdlICpy YW5nZSk7Ci1sb25nIGhtbV9yYW5nZV9mYXVsdChzdHJ1Y3QgaG1tX3JhbmdlICpyYW5nZSwgYm9v bCBibG9jayk7Citsb25nIGhtbV9yYW5nZV9mYXVsdChzdHJ1Y3QgaG1tX3JhbmdlICpyYW5nZSwg dW5zaWduZWQgaW50IGZsYWdzKTsKKwogbG9uZyBobW1fcmFuZ2VfZG1hX21hcChzdHJ1Y3QgaG1t X3JhbmdlICpyYW5nZSwKIAkJICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldmljZSwKIAkJICAgICAg IGRtYV9hZGRyX3QgKmRhZGRycywKLQkJICAgICAgIGJvb2wgYmxvY2spOworCQkgICAgICAgdW5z aWduZWQgaW50IGZsYWdzKTsKIGxvbmcgaG1tX3JhbmdlX2RtYV91bm1hcChzdHJ1Y3QgaG1tX3Jh bmdlICpyYW5nZSwKIAkJCSBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKIAkJCSBzdHJ1Y3Qg ZGV2aWNlICpkZXZpY2UsCmRpZmYgLS1naXQgYS9tbS9obW0uYyBiL21tL2htbS5jCmluZGV4IDM2 Mjk0NGIwZmJjYS4uODRmMjc5MWQzNTEwIDEwMDY0NAotLS0gYS9tbS9obW0uYworKysgYi9tbS9o bW0uYwpAQCAtMjgxLDcgKzI4MSw3IEBAIHN0cnVjdCBobW1fdm1hX3dhbGsgewogCXN0cnVjdCBk ZXZfcGFnZW1hcAkqcGdtYXA7CiAJdW5zaWduZWQgbG9uZwkJbGFzdDsKIAlib29sCQkJZmF1bHQ7 Ci0JYm9vbAkJCWJsb2NrOworCXVuc2lnbmVkIGludAkJZmxhZ3M7CiB9OwogCiBzdGF0aWMgaW50 IGhtbV92bWFfZG9fZmF1bHQoc3RydWN0IG1tX3dhbGsgKndhbGssIHVuc2lnbmVkIGxvbmcgYWRk ciwKQEAgLTI5Myw4ICsyOTMsMTEgQEAgc3RhdGljIGludCBobW1fdm1hX2RvX2ZhdWx0KHN0cnVj dCBtbV93YWxrICp3YWxrLCB1bnNpZ25lZCBsb25nIGFkZHIsCiAJc3RydWN0IHZtX2FyZWFfc3Ry dWN0ICp2bWEgPSB3YWxrLT52bWE7CiAJdm1fZmF1bHRfdCByZXQ7CiAKLQlmbGFncyB8PSBobW1f dm1hX3dhbGstPmJsb2NrID8gMCA6IEZBVUxUX0ZMQUdfQUxMT1dfUkVUUlk7Ci0JZmxhZ3MgfD0g d3JpdGVfZmF1bHQgPyBGQVVMVF9GTEFHX1dSSVRFIDogMDsKKwlpZiAoaG1tX3ZtYV93YWxrLT5m bGFncyAmIEhNTV9GQVVMVF9BTExPV19SRVRSWSkKKwkJZmxhZ3MgfD0gRkFVTFRfRkxBR19BTExP V19SRVRSWTsKKwlpZiAod3JpdGVfZmF1bHQpCisJCWZsYWdzIHw9IEZBVUxUX0ZMQUdfV1JJVEU7 CisKIAlyZXQgPSBoYW5kbGVfbW1fZmF1bHQodm1hLCBhZGRyLCBmbGFncyk7CiAJaWYgKHJldCAm IFZNX0ZBVUxUX1JFVFJZKSB7CiAJCS8qIE5vdGUsIGhhbmRsZV9tbV9mYXVsdCBkaWQgdXBfcmVh ZCgmbW0tPm1tYXBfc2VtKSkgKi8KQEAgLTEwMTIsMjYgKzEwMTUsMjYgQEAgbG9uZyBobW1fcmFu Z2Vfc25hcHNob3Qoc3RydWN0IGhtbV9yYW5nZSAqcmFuZ2UpCiB9CiBFWFBPUlRfU1lNQk9MKGht bV9yYW5nZV9zbmFwc2hvdCk7CiAKLS8qCi0gKiBobW1fcmFuZ2VfZmF1bHQoKSAtIHRyeSB0byBm YXVsdCBzb21lIGFkZHJlc3MgaW4gYSB2aXJ0dWFsIGFkZHJlc3MgcmFuZ2UKLSAqIEByYW5nZTog cmFuZ2UgYmVpbmcgZmF1bHRlZAotICogQGJsb2NrOiBhbGxvdyBibG9ja2luZyBvbiBmYXVsdCAo aWYgdHJ1ZSBpdCBzbGVlcHMgYW5kIGRvIG5vdCBkcm9wIG1tYXBfc2VtKQotICogUmV0dXJuOiBu dW1iZXIgb2YgdmFsaWQgcGFnZXMgaW4gcmFuZ2UtPnBmbnNbXSAoZnJvbSByYW5nZSBzdGFydAot ICogICAgICAgICAgYWRkcmVzcykuIFRoaXMgbWF5IGJlIHplcm8uIElmIHRoZSByZXR1cm4gdmFs dWUgaXMgbmVnYXRpdmUsCi0gKiAgICAgICAgICB0aGVuIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZh bHVlcyBtYXkgYmUgcmV0dXJuZWQ6CisvKioKKyAqIGhtbV9yYW5nZV9mYXVsdCAtIHRyeSB0byBm YXVsdCBzb21lIGFkZHJlc3MgaW4gYSB2aXJ0dWFsIGFkZHJlc3MgcmFuZ2UKKyAqIEByYW5nZToJ cmFuZ2UgYmVpbmcgZmF1bHRlZAorICogQGZsYWdzOglITU1fRkFVTFRfKiBmbGFncwogICoKLSAq ICAgICAgICAgICAtRUlOVkFMICBpbnZhbGlkIGFyZ3VtZW50cyBvciBtbSBvciB2aXJ0dWFsIGFk ZHJlc3MgYXJlIGluIGFuCi0gKiAgICAgICAgICAgICAgICAgICAgaW52YWxpZCB2bWEgKGZvciBp bnN0YW5jZSBkZXZpY2UgZmlsZSB2bWEpLgotICogICAgICAgICAgIC1FTk9NRU06IE91dCBvZiBt ZW1vcnkuCi0gKiAgICAgICAgICAgLUVQRVJNOiAgSW52YWxpZCBwZXJtaXNzaW9uIChmb3IgaW5z dGFuY2UgYXNraW5nIGZvciB3cml0ZSBhbmQKLSAqICAgICAgICAgICAgICAgICAgICByYW5nZSBp cyByZWFkIG9ubHkpLgotICogICAgICAgICAgIC1FQUdBSU46IElmIHlvdSBuZWVkIHRvIHJldHJ5 IGFuZCBtbWFwX3NlbSB3YXMgZHJvcC4gVGhpcyBjYW4gb25seQotICogICAgICAgICAgICAgICAg ICAgIGhhcHBlbnMgaWYgYmxvY2sgYXJndW1lbnQgaXMgZmFsc2UuCi0gKiAgICAgICAgICAgLUVC VVNZOiAgSWYgdGhlIHRoZSByYW5nZSBpcyBiZWluZyBpbnZhbGlkYXRlZCBhbmQgeW91IHNob3Vs ZCB3YWl0Ci0gKiAgICAgICAgICAgICAgICAgICAgZm9yIGludmFsaWRhdGlvbiB0byBmaW5pc2gu Ci0gKiAgICAgICAgICAgLUVGQVVMVDogSW52YWxpZCAoaWUgZWl0aGVyIG5vIHZhbGlkIHZtYSBv ciBpdCBpcyBpbGxlZ2FsIHRvIGFjY2VzcwotICogICAgICAgICAgICAgICAgICAgIHRoYXQgcmFu Z2UpLCBudW1iZXIgb2YgdmFsaWQgcGFnZXMgaW4gcmFuZ2UtPnBmbnNbXSAoZnJvbQotICogICAg ICAgICAgICAgICAgICAgIHJhbmdlIHN0YXJ0IGFkZHJlc3MpLgorICogUmV0dXJuOiB0aGUgbnVt YmVyIG9mIHZhbGlkIHBhZ2VzIGluIHJhbmdlLT5wZm5zW10gKGZyb20gcmFuZ2Ugc3RhcnQKKyAq IGFkZHJlc3MpLCB3aGljaCBtYXkgYmUgemVyby4gIE9uIGVycm9yIG9uZSBvZiB0aGUgZm9sbG93 aW5nIHN0YXR1cyBjb2RlcworICogY2FuIGJlIHJldHVybmVkOgorICoKKyAqIC1FSU5WQUw6CUlu dmFsaWQgYXJndW1lbnRzIG9yIG1tIG9yIHZpcnR1YWwgYWRkcmVzcyBpcyBpbiBhbiBpbnZhbGlk IHZtYQorICoJCShlLmcuLCBkZXZpY2UgZmlsZSB2bWEpLgorICogLUVOT01FTToJT3V0IG9mIG1l bW9yeS4KKyAqIC1FUEVSTToJSW52YWxpZCBwZXJtaXNzaW9uIChlLmcuLCBhc2tpbmcgZm9yIHdy aXRlIGFuZCByYW5nZSBpcyByZWFkCisgKgkJb25seSkuCisgKiAtRUFHQUlOOglBIHBhZ2UgZmF1 bHQgbmVlZHMgdG8gYmUgcmV0cmllZCBhbmQgbW1hcF9zZW0gd2FzIGRyb3BwZWQuCisgKiAtRUJV U1k6CVRoZSByYW5nZSBoYXMgYmVlbiBpbnZhbGlkYXRlZCBhbmQgdGhlIGNhbGxlciBuZWVkcyB0 byB3YWl0IGZvcgorICoJCXRoZSBpbnZhbGlkYXRpb24gdG8gZmluaXNoLgorICogLUVGQVVMVDoJ SW52YWxpZCAoaS5lLiwgZWl0aGVyIG5vIHZhbGlkIHZtYSBvciBpdCBpcyBpbGxlZ2FsIHRvIGFj Y2VzcworICoJCXRoYXQgcmFuZ2UpIG51bWJlciBvZiB2YWxpZCBwYWdlcyBpbiByYW5nZS0+cGZu c1tdIChmcm9tCisgKiAgICAgICAgICAgICAgcmFuZ2Ugc3RhcnQgYWRkcmVzcykuCiAgKgogICog VGhpcyBpcyBzaW1pbGFyIHRvIGEgcmVndWxhciBDUFUgcGFnZSBmYXVsdCBleGNlcHQgdGhhdCBp dCB3aWxsIG5vdCB0cmlnZ2VyCiAgKiBhbnkgbWVtb3J5IG1pZ3JhdGlvbiBpZiB0aGUgbWVtb3J5 IGJlaW5nIGZhdWx0ZWQgaXMgbm90IGFjY2Vzc2libGUgYnkgQ1BVcwpAQCAtMTA0MCw3ICsxMDQz LDcgQEAgRVhQT1JUX1NZTUJPTChobW1fcmFuZ2Vfc25hcHNob3QpOwogICogT24gZXJyb3IsIGZv ciBvbmUgdmlydHVhbCBhZGRyZXNzIGluIHRoZSByYW5nZSwgdGhlIGZ1bmN0aW9uIHdpbGwgbWFy ayB0aGUKICAqIGNvcnJlc3BvbmRpbmcgSE1NIHBmbiBlbnRyeSB3aXRoIGFuIGVycm9yIGZsYWcu CiAgKi8KLWxvbmcgaG1tX3JhbmdlX2ZhdWx0KHN0cnVjdCBobW1fcmFuZ2UgKnJhbmdlLCBib29s IGJsb2NrKQorbG9uZyBobW1fcmFuZ2VfZmF1bHQoc3RydWN0IGhtbV9yYW5nZSAqcmFuZ2UsIHVu c2lnbmVkIGludCBmbGFncykKIHsKIAljb25zdCB1bnNpZ25lZCBsb25nIGRldmljZV92bWEgPSBW TV9JTyB8IFZNX1BGTk1BUCB8IFZNX01JWEVETUFQOwogCXVuc2lnbmVkIGxvbmcgc3RhcnQgPSBy YW5nZS0+c3RhcnQsIGVuZDsKQEAgLTEwODYsNyArMTA4OSw3IEBAIGxvbmcgaG1tX3JhbmdlX2Zh dWx0KHN0cnVjdCBobW1fcmFuZ2UgKnJhbmdlLCBib29sIGJsb2NrKQogCQlobW1fdm1hX3dhbGsu cGdtYXAgPSBOVUxMOwogCQlobW1fdm1hX3dhbGsubGFzdCA9IHN0YXJ0OwogCQlobW1fdm1hX3dh bGsuZmF1bHQgPSB0cnVlOwotCQlobW1fdm1hX3dhbGsuYmxvY2sgPSBibG9jazsKKwkJaG1tX3Zt YV93YWxrLmZsYWdzID0gZmxhZ3M7CiAJCWhtbV92bWFfd2Fsay5yYW5nZSA9IHJhbmdlOwogCQlt bV93YWxrLnByaXZhdGUgPSAmaG1tX3ZtYV93YWxrOwogCQllbmQgPSBtaW4ocmFuZ2UtPmVuZCwg dm1hLT52bV9lbmQpOwpAQCAtMTEyNSwyNSArMTEyOCwyMiBAQCBsb25nIGhtbV9yYW5nZV9mYXVs dChzdHJ1Y3QgaG1tX3JhbmdlICpyYW5nZSwgYm9vbCBibG9jaykKIEVYUE9SVF9TWU1CT0woaG1t X3JhbmdlX2ZhdWx0KTsKIAogLyoqCi0gKiBobW1fcmFuZ2VfZG1hX21hcCgpIC0gaG1tX3Jhbmdl X2ZhdWx0KCkgYW5kIGRtYSBtYXAgcGFnZSBhbGwgaW4gb25lLgotICogQHJhbmdlOiByYW5nZSBi ZWluZyBmYXVsdGVkCi0gKiBAZGV2aWNlOiBkZXZpY2UgYWdhaW5zdCB0byBkbWEgbWFwIHBhZ2Ug dG8KLSAqIEBkYWRkcnM6IGRtYSBhZGRyZXNzIG9mIG1hcHBlZCBwYWdlcwotICogQGJsb2NrOiBh bGxvdyBibG9ja2luZyBvbiBmYXVsdCAoaWYgdHJ1ZSBpdCBzbGVlcHMgYW5kIGRvIG5vdCBkcm9w IG1tYXBfc2VtKQotICogUmV0dXJuOiBudW1iZXIgb2YgcGFnZXMgbWFwcGVkIG9uIHN1Y2Nlc3Ms IC1FQUdBSU4gaWYgbW1hcF9zZW0gaGF2ZSBiZWVuCi0gKiAgICAgICAgICBkcm9wIGFuZCB5b3Ug bmVlZCB0byB0cnkgYWdhaW4sIHNvbWUgb3RoZXIgZXJyb3IgdmFsdWUgb3RoZXJ3aXNlCisgKiBo bW1fcmFuZ2VfZG1hX21hcCAtIGhtbV9yYW5nZV9mYXVsdCgpIGFuZCBkbWEgbWFwIHBhZ2UgYWxs IGluIG9uZS4KKyAqIEByYW5nZToJcmFuZ2UgYmVpbmcgZmF1bHRlZAorICogQGRldmljZToJZGV2 aWNlIHRvIG1hcCBwYWdlIHRvCisgKiBAZGFkZHJzOglhcnJheSBvZiBkbWEgYWRkcmVzc2VzIGZv ciB0aGUgbWFwcGVkIHBhZ2VzCisgKiBAZmxhZ3M6CUhNTV9GQVVMVF8qCiAgKgotICogTm90ZSBz YW1lIHVzYWdlIHBhdHRlcm4gYXMgaG1tX3JhbmdlX2ZhdWx0KCkuCisgKiBSZXR1cm46IHRoZSBu dW1iZXIgb2YgcGFnZXMgbWFwcGVkIG9uIHN1Y2Nlc3MgKGluY2x1ZGluZyB6ZXJvKSwgb3IgYW55 CisgKiBzdGF0dXMgcmV0dXJuIGZyb20gaG1tX3JhbmdlX2ZhdWx0KCkgb3RoZXJ3aXNlLgogICov Ci1sb25nIGhtbV9yYW5nZV9kbWFfbWFwKHN0cnVjdCBobW1fcmFuZ2UgKnJhbmdlLAotCQkgICAg ICAgc3RydWN0IGRldmljZSAqZGV2aWNlLAotCQkgICAgICAgZG1hX2FkZHJfdCAqZGFkZHJzLAot CQkgICAgICAgYm9vbCBibG9jaykKK2xvbmcgaG1tX3JhbmdlX2RtYV9tYXAoc3RydWN0IGhtbV9y YW5nZSAqcmFuZ2UsIHN0cnVjdCBkZXZpY2UgKmRldmljZSwKKwkJZG1hX2FkZHJfdCAqZGFkZHJz LCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7CiAJdW5zaWduZWQgbG9uZyBpLCBucGFnZXMsIG1hcHBl ZDsKIAlsb25nIHJldDsKIAotCXJldCA9IGhtbV9yYW5nZV9mYXVsdChyYW5nZSwgYmxvY2spOwor CXJldCA9IGhtbV9yYW5nZV9mYXVsdChyYW5nZSwgZmxhZ3MpOwogCWlmIChyZXQgPD0gMCkKIAkJ cmV0dXJuIHJldCA/IHJldCA6IC1FQlVTWTsKIAotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRy aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=