From mboxrd@z Thu Jan 1 00:00:00 1970 From: jglisse@redhat.com Subject: [RFC PATCH 07/13] drm/nouveau: special mapping method for HMM Date: Fri, 9 Mar 2018 22:21:35 -0500 Message-ID: <20180310032141.6096-8-jglisse@redhat.com> References: <20180310032141.6096-1-jglisse@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180310032141.6096-1-jglisse@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org, nouveau@lists.freedesktop.org Cc: Ralph Campbell , Evgeny Baskakov , linux-mm@kvack.org, =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , Ben Skeggs , John Hubbard List-Id: dri-devel@lists.freedesktop.org RnJvbTogSsOpcsO0bWUgR2xpc3NlIDxqZ2xpc3NlQHJlZGhhdC5jb20+CgpITU0gZG9lcyBub3Qg aGF2ZSBhbnkgb2YgdGhlIHVzdWFsIG1lbW9yeSBvYmplY3QgcHJvcGVydGllcy4gRm9yIEhNTQpp bnNpZGUgYW55IHJhbmdlIHRoZSBmb2xsb3dpbmcgaXMgdHJ1ZToKICAgIC0gbm90IGFsbCBwYWdl IGluIGEgcmFuZ2UgYXJlIHZhbGlkCiAgICAtIG5vdCBhbGwgcGFnZSBoYXZlIHNhbWUgcGVybWlz c2lvbiAocmVhZCBvbmx5LCByZWFkIGFuZCB3cml0ZSkKICAgIC0gbm90IGFsbCBwYWdlIGFyZSBp biBzYW1lIG1lbW9yeSAoc3lzdGVtIG1lbW9yeSwgR1BVIG1lbW9yeSkKClNpZ25lZC1vZmYtYnk6 IErDqXLDtG1lIEdsaXNzZSA8amdsaXNzZUByZWRoYXQuY29tPgpDYzogQmVuIFNrZWdncyA8YnNr ZWdnc0ByZWRoYXQuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L2luY2x1ZGUvbnZr bS9zdWJkZXYvbW11LmggIHwgIDIxICsrKysrCiBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmtt L3N1YmRldi9tbXUvdm1tLmMgICAgICB8IDEwNSArKysrKysrKysrKysrKysrKysrKy0KIGRyaXZl cnMvZ3B1L2RybS9ub3V2ZWF1L252a20vc3ViZGV2L21tdS92bW0uaCAgICAgIHwgICA2ICsrCiBk cml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL3N1YmRldi9tbXUvdm1tZ3AxMDAuYyB8ICA3MyAr KysrKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAyMDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxl dGlvbigtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L2luY2x1ZGUvbnZr bS9zdWJkZXYvbW11LmggYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9pbmNsdWRlL252a20vc3Vi ZGV2L21tdS5oCmluZGV4IGJhYWI5MzM5OGU1NC4uNzE5ZDUwZTYyOTZmIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vbm91dmVhdS9pbmNsdWRlL252a20vc3ViZGV2L21tdS5oCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9ub3V2ZWF1L2luY2x1ZGUvbnZrbS9zdWJkZXYvbW11LmgKQEAgLTIsNiAr MiwyMSBAQAogI2lmbmRlZiBfX05WS01fTU1VX0hfXwogI2RlZmluZSBfX05WS01fTU1VX0hfXwog I2luY2x1ZGUgPGNvcmUvc3ViZGV2Lmg+CisjaW5jbHVkZSA8bGludXgvaG1tLmg+CisKKy8qIE5l ZWQgdG8gY2hhbmdlIEhNTSB0byBiZSBtb3JlIGRyaXZlciBmcmllbmRseSAqLworI2lmIElTX0VO QUJMRUQoQ09ORklHX0hNTSkKKyNlbHNlCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaG1tX3Bmbl90 OworI2RlZmluZSBITU1fUEZOX1ZBTElEICgxIDw8IDApCisjZGVmaW5lIEhNTV9QRk5fUkVBRCAo MSA8PCAxKQorI2RlZmluZSBITU1fUEZOX1dSSVRFICgxIDw8IDIpCisjZGVmaW5lIEhNTV9QRk5f RVJST1IgKDEgPDwgMykKKyNkZWZpbmUgSE1NX1BGTl9FTVBUWSAoMSA8PCA0KQorI2RlZmluZSBI TU1fUEZOX1NQRUNJQUwgKDEgPDwgNSkKKyNkZWZpbmUgSE1NX1BGTl9ERVZJQ0VfVU5BRERSRVNT QUJMRSAoMSA8PCA2KQorI2RlZmluZSBITU1fUEZOX1NISUZUIDcKKyNlbmRpZgogCiBzdHJ1Y3Qg bnZrbV92bWEgewogCXN0cnVjdCBsaXN0X2hlYWQgaGVhZDsKQEAgLTU2LDYgKzcxLDcgQEAgdm9p ZCBudmttX3ZtbV9wYXJ0KHN0cnVjdCBudmttX3ZtbSAqLCBzdHJ1Y3QgbnZrbV9tZW1vcnkgKmlu c3QpOwogaW50IG52a21fdm1tX2dldChzdHJ1Y3QgbnZrbV92bW0gKiwgdTggcGFnZSwgdTY0IHNp emUsIHN0cnVjdCBudmttX3ZtYSAqKik7CiB2b2lkIG52a21fdm1tX3B1dChzdHJ1Y3QgbnZrbV92 bW0gKiwgc3RydWN0IG52a21fdm1hICoqKTsKIAorCiBzdHJ1Y3QgbnZrbV92bW1fbWFwIHsKIAlz dHJ1Y3QgbnZrbV9tZW1vcnkgKm1lbW9yeTsKIAl1NjQgb2Zmc2V0OwpAQCAtNjMsNiArNzksMTEg QEAgc3RydWN0IG52a21fdm1tX21hcCB7CiAJc3RydWN0IG52a21fbW1fbm9kZSAqbWVtOwogCXN0 cnVjdCBzY2F0dGVybGlzdCAqc2dsOwogCWRtYV9hZGRyX3QgKmRtYTsKKyNkZWZpbmUgTlZfSE1N X1BBR0VfRkxBR19WIEhNTV9QRk5fVkFMSUQKKyNkZWZpbmUgTlZfSE1NX1BBR0VfRkxBR19XIEhN TV9QRk5fV1JJVEUKKyNkZWZpbmUgTlZfSE1NX1BBR0VfRkxBR19FIEhNTV9QRk5fRVJST1IKKyNk ZWZpbmUgTlZfSE1NX1BBR0VfUEZOX1NISUZUIEhNTV9QRk5fU0hJRlQKKwl1NjQgKnBhZ2VzOwog CXU2NCBvZmY7CiAKIAljb25zdCBzdHJ1Y3QgbnZrbV92bW1fcGFnZSAqcGFnZTsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vc3ViZGV2L21tdS92bW0uYyBiL2RyaXZl cnMvZ3B1L2RybS9ub3V2ZWF1L252a20vc3ViZGV2L21tdS92bW0uYwppbmRleCAyMGQzMTUyNmJh OGYuLjk2NjcxOTg3Y2U1MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZr bS9zdWJkZXYvbW11L3ZtbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vc3Vi ZGV2L21tdS92bW0uYwpAQCAtNzUsNyArNzUsNyBAQCBzdHJ1Y3QgbnZrbV92bW1faXRlciB7CiAJ c3RydWN0IG52a21fdm1tICp2bW07CiAJdTY0IGNudDsKIAl1MTYgbWF4LCBsdmw7Ci0JdTY0IHN0 YXJ0LCBhZGRyOworCXU2NCBzdGFydCwgYWRkciwgKnBhZ2VzOwogCXUzMiBwdGVbTlZLTV9WTU1f TEVWRUxTX01BWF07CiAJc3RydWN0IG52a21fdm1tX3B0ICpwdFtOVktNX1ZNTV9MRVZFTFNfTUFY XTsKIAlpbnQgZmx1c2g7CkBAIC0yODEsNiArMjgxLDU5IEBAIG52a21fdm1tX3VucmVmX3B0ZXMo c3RydWN0IG52a21fdm1tX2l0ZXIgKml0LCB1MzIgcHRlaSwgdTMyIHB0ZXMpCiAJcmV0dXJuIHRy dWU7CiB9CiAKK3N0YXRpYyBib29sCitudmttX3ZtbV91bnJlZl9obW1fcHRlcyhzdHJ1Y3QgbnZr bV92bW1faXRlciAqaXQsIHUzMiBwdGVpLCB1MzIgcHRlcykKK3sKKwljb25zdCBzdHJ1Y3QgbnZr bV92bW1fZGVzYyAqZGVzYyA9IGl0LT5kZXNjOworCWNvbnN0IGludCB0eXBlID0gZGVzYy0+dHlw ZSA9PSBTUFQ7CisJc3RydWN0IG52a21fdm1tX3B0ICpwZ3QgPSBpdC0+cHRbMF07CisJc3RydWN0 IG52a21fbW11X3B0ICpwdDsKKwlpbnQgbWFwcGVkOworCisJcHQgPSBwZ3QtPnB0W3R5cGVdOwor CW1hcHBlZCA9IGRlc2MtPmZ1bmMtPmhtbV91bm1hcChpdC0+dm1tLCBwdCwgcHRlaSwgcHRlcywg TlVMTCk7CisJaWYgKG1hcHBlZCA8PSAwKQorCQlyZXR1cm4gZmFsc2U7CisJcHRlcyA9IG1hcHBl ZDsKKworCS8qIER1YWwtUFRzIG5lZWQgc3BlY2lhbCBoYW5kbGluZywgdW5sZXNzIFBERSBiZWNv bWluZyBpbnZhbGlkLiAqLworCWlmIChkZXNjLT50eXBlID09IFNQVCAmJiAocGd0LT5yZWZzWzBd IHx8IHBndC0+cmVmc1sxXSkpCisJCW52a21fdm1tX3VucmVmX3NwdGVzKGl0LCBwZ3QsIGRlc2Ms IHB0ZWksIHB0ZXMpOworCisJLyogR1BVIG1heSBoYXZlIGNhY2hlZCB0aGUgUFRzLCBmbHVzaCBi ZWZvcmUgZnJlZWluZy4gKi8KKwludmttX3ZtbV9mbHVzaF9tYXJrKGl0KTsKKwludmttX3ZtbV9m bHVzaChpdCk7CisKKwludmttX2ttYXAocHQtPm1lbW9yeSk7CisJd2hpbGUgKG1hcHBlZC0tKSB7 CisJCXU2NCBkYXRhID0gbnZrbV9ybzY0KHB0LT5tZW1vcnksIHB0LT5iYXNlICsgcHRlaSAqIDgp OworCQlkbWFfYWRkcl90IGRtYSA9IChkYXRhID4+IDgpIDw8IDEyOworCisJCWlmICghZGF0YSkg eworCQkJcHRlaSsrOworCQkJY29udGludWU7CisJCX0KKwkJZG1hX3VubWFwX3BhZ2UoaXQtPnZt bS0+bW11LT5zdWJkZXYuZGV2aWNlLT5kZXYsIGRtYSwKKwkJCSAgICAgICBQQUdFX1NJWkUsIERN QV9CSURJUkVDVElPTkFMKTsKKwkJVk1NX1dPMDY0KHB0LCBpdC0+dm1tLCBwdGVpKysgKiA4LCAw VUwpOworCX0KKwludmttX2RvbmUocHQtPm1lbW9yeSk7CisKKwkvKiBEcm9wIFBURSByZWZlcmVu Y2VzLiAqLworCXBndC0+cmVmc1t0eXBlXSAtPSBwdGVzOworCisJLyogUFQgbm8gbG9uZ2VyIG5l ZWVkPyAgRGVzdHJveSBpdC4gKi8KKwlpZiAoIXBndC0+cmVmc1t0eXBlXSkgeworCQlpdC0+bHZs Kys7CisJCVRSQShpdCwgIiVzIGVtcHR5IiwgbnZrbV92bW1fZGVzY190eXBlKGRlc2MpKTsKKwkJ aXQtPmx2bC0tOworCQludmttX3ZtbV91bnJlZl9wZGVzKGl0KTsKKwkJcmV0dXJuIGZhbHNlOyAv KiBQVEUgd3JpdGVzIGZvciB1bm1hcCgpIG5vdCBuZWNlc3NhcnkuICovCisJfQorCisJcmV0dXJu IHRydWU7Cit9CisKIHN0YXRpYyB2b2lkCiBudmttX3ZtbV9yZWZfc3B0ZXMoc3RydWN0IG52a21f dm1tX2l0ZXIgKml0LCBzdHJ1Y3QgbnZrbV92bW1fcHQgKnBndCwKIAkJICAgY29uc3Qgc3RydWN0 IG52a21fdm1tX2Rlc2MgKmRlc2MsIHUzMiBwdGVpLCB1MzIgcHRlcykKQEAgLTM0OSw2ICs0MDIs MzIgQEAgbnZrbV92bW1fcmVmX3NwdGVzKHN0cnVjdCBudmttX3ZtbV9pdGVyICppdCwgc3RydWN0 IG52a21fdm1tX3B0ICpwZ3QsCiAJfQogfQogCitzdGF0aWMgYm9vbAorbnZrbV92bW1fcmVmX2ht bV9wdGVzKHN0cnVjdCBudmttX3ZtbV9pdGVyICppdCwgdTMyIHB0ZWksIHUzMiBwdGVzKQorewor CWNvbnN0IHN0cnVjdCBudmttX3ZtbV9kZXNjICpkZXNjID0gaXQtPmRlc2M7CisJY29uc3QgaW50 IHR5cGUgPSBkZXNjLT50eXBlID09IFNQVDsKKwlzdHJ1Y3QgbnZrbV92bW1fcHQgKnBndCA9IGl0 LT5wdFswXTsKKwlzdHJ1Y3QgbnZrbV9tbXVfcHQgKnB0OworCWludCBtYXBwZWQ7CisKKwlwdCA9 IHBndC0+cHRbdHlwZV07CisJbWFwcGVkID0gZGVzYy0+ZnVuYy0+aG1tX21hcChpdC0+dm1tLCBw dCwgcHRlaSwgcHRlcywKKwkJCSZpdC0+cGFnZXNbKGl0LT5hZGRyIC0gaXQtPnN0YXJ0KSA+PiBQ QUdFX1NISUZUXSk7CisJaWYgKG1hcHBlZCA8PSAwKQorCQlyZXR1cm4gZmFsc2U7CisJcHRlcyA9 IG1hcHBlZDsKKworCS8qIFRha2UgUFRFIHJlZmVyZW5jZXMuICovCisJcGd0LT5yZWZzW3R5cGVd ICs9IHB0ZXM7CisKKwkvKiBEdWFsLVBUcyBuZWVkIHNwZWNpYWwgaGFuZGxpbmcuICovCisJaWYg KGRlc2MtPnR5cGUgPT0gU1BUKQorCQludmttX3ZtbV9yZWZfc3B0ZXMoaXQsIHBndCwgZGVzYywg cHRlaSwgcHRlcyk7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKwogc3RhdGljIGJvb2wKIG52a21fdm1t X3JlZl9wdGVzKHN0cnVjdCBudmttX3ZtbV9pdGVyICppdCwgdTMyIHB0ZWksIHUzMiBwdGVzKQog ewpAQCAtNTIwLDYgKzU5OSw3IEBAIG52a21fdm1tX2l0ZXIoc3RydWN0IG52a21fdm1tICp2bW0s IGNvbnN0IHN0cnVjdCBudmttX3ZtbV9wYWdlICpwYWdlLAogCWl0LmNudCA9IHNpemUgPj4gcGFn ZS0+c2hpZnQ7CiAJaXQuZmx1c2ggPSBOVktNX1ZNTV9MRVZFTFNfTUFYOwogCWl0LnN0YXJ0ID0g aXQuYWRkciA9IGFkZHI7CisJaXQucGFnZXMgPSBtYXAgPyBtYXAtPnBhZ2VzIDogTlVMTDsKIAog CS8qIERlY29uc3RydWN0IGFkZHJlc3MgaW50byBQVEUgaW5kaWNlcyBmb3IgZWFjaCBtYXBwaW5n IGxldmVsLiAqLwogCWZvciAoaXQubHZsID0gMDsgZGVzY1tpdC5sdmxdLmJpdHM7IGl0Lmx2bCsr KSB7CkBAIC0xMTg0LDYgKzEyNjQsMjkgQEAgbnZrbV92bW1fbWFwKHN0cnVjdCBudmttX3ZtbSAq dm1tLCBzdHJ1Y3QgbnZrbV92bWEgKnZtYSwgdm9pZCAqYXJndiwgdTMyIGFyZ2MsCiAJcmV0dXJu IHJldDsKIH0KIAordm9pZAorbnZrbV92bW1faG1tX21hcChzdHJ1Y3QgbnZrbV92bW0gKnZtbSwg dTY0IGFkZHIsIHU2NCBucGFnZXMsIHU2NCAqcGFnZXMpCit7CisJc3RydWN0IG52a21fdm1tX21h cCBtYXAgPSB7MH07CisKKwlmb3IgKG1hcC5wYWdlID0gdm1tLT5mdW5jLT5wYWdlOyBtYXAucGFn ZS0+c2hpZnQgIT0gMTI7IG1hcC5wYWdlKyspOworCW1hcC5wYWdlcyA9IHBhZ2VzOworCisJbnZr bV92bW1faXRlcih2bW0sIG1hcC5wYWdlLCBhZGRyLCBucGFnZXMgPDwgUEFHRV9TSElGVCwgInJl ZiArIG1hcCIsCisJCSAgICAgIHRydWUsIG52a21fdm1tX3JlZl9obW1fcHRlcywgTlVMTCwgJm1h cCwgTlVMTCk7Cit9CisKK3ZvaWQKK252a21fdm1tX2htbV91bm1hcChzdHJ1Y3QgbnZrbV92bW0g KnZtbSwgdTY0IGFkZHIsIHU2NCBucGFnZXMpCit7CisJc3RydWN0IG52a21fdm1tX21hcCBtYXAg PSB7MH07CisKKwlmb3IgKG1hcC5wYWdlID0gdm1tLT5mdW5jLT5wYWdlOyBtYXAucGFnZS0+c2hp ZnQgIT0gMTI7IG1hcC5wYWdlKyspOworCisJbnZrbV92bW1faXRlcih2bW0sIG1hcC5wYWdlLCBh ZGRyLCBucGFnZXMgPDwgUEFHRV9TSElGVCwgInVubWFwICsgdW5yZWYiLAorCQkgICAgICBmYWxz ZSwgbnZrbV92bW1fdW5yZWZfaG1tX3B0ZXMsIE5VTEwsIE5VTEwsIE5VTEwpOworfQorCiBzdGF0 aWMgdm9pZAogbnZrbV92bW1fcHV0X3JlZ2lvbihzdHJ1Y3QgbnZrbV92bW0gKnZtbSwgc3RydWN0 IG52a21fdm1hICp2bWEpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9u dmttL3N1YmRldi9tbXUvdm1tLmggYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL3N1YmRl di9tbXUvdm1tLmgKaW5kZXggZGEwNmU2NGQ4YTdkLi5hNjMwYWEyYTc3ZTQgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vc3ViZGV2L21tdS92bW0uaAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL3N1YmRldi9tbXUvdm1tLmgKQEAgLTU2LDYgKzU2LDgg QEAgdHlwZWRlZiB2b2lkICgqbnZrbV92bW1fcGRlX2Z1bmMpKHN0cnVjdCBudmttX3ZtbSAqLAog CQkJCSAgc3RydWN0IG52a21fdm1tX3B0ICosIHUzMiBwZGVpKTsKIHR5cGVkZWYgdm9pZCAoKm52 a21fdm1tX3B0ZV9mdW5jKShzdHJ1Y3QgbnZrbV92bW0gKiwgc3RydWN0IG52a21fbW11X3B0ICos CiAJCQkJICB1MzIgcHRlaSwgdTMyIHB0ZXMsIHN0cnVjdCBudmttX3ZtbV9tYXAgKik7Cit0eXBl ZGVmIGludCAoKm52a21fdm1tX2htbV9mdW5jKShzdHJ1Y3QgbnZrbV92bW0gKiwgc3RydWN0IG52 a21fbW11X3B0ICosCisJCQkJIHUzMiBwdGVpLCB1MzIgcHRlcywgdTY0ICpwYWdlcyk7CiAKIHN0 cnVjdCBudmttX3ZtbV9kZXNjX2Z1bmMgewogCW52a21fdm1tX3B4ZV9mdW5jIGludmFsaWQ7CkBA IC02Nyw2ICs2OSw4IEBAIHN0cnVjdCBudmttX3ZtbV9kZXNjX2Z1bmMgewogCW52a21fdm1tX3B0 ZV9mdW5jIG1lbTsKIAludmttX3ZtbV9wdGVfZnVuYyBkbWE7CiAJbnZrbV92bW1fcHRlX2Z1bmMg c2dsOworCW52a21fdm1tX2htbV9mdW5jIGhtbV9tYXA7CisJbnZrbV92bW1faG1tX2Z1bmMgaG1t X3VubWFwOwogfTsKIAogZXh0ZXJuIGNvbnN0IHN0cnVjdCBudmttX3ZtbV9kZXNjX2Z1bmMgZ2Yx MDBfdm1tX3BnZDsKQEAgLTE2Myw2ICsxNjcsOCBAQCBpbnQgbnZrbV92bW1fZ2V0X2xvY2tlZChz dHJ1Y3QgbnZrbV92bW0gKiwgYm9vbCBnZXRyZWYsIGJvb2wgbWFwcmVmLAogdm9pZCBudmttX3Zt bV9wdXRfbG9ja2VkKHN0cnVjdCBudmttX3ZtbSAqLCBzdHJ1Y3QgbnZrbV92bWEgKik7CiB2b2lk IG52a21fdm1tX3VubWFwX2xvY2tlZChzdHJ1Y3QgbnZrbV92bW0gKiwgc3RydWN0IG52a21fdm1h ICopOwogdm9pZCBudmttX3ZtbV91bm1hcF9yZWdpb24oc3RydWN0IG52a21fdm1tICp2bW0sIHN0 cnVjdCBudmttX3ZtYSAqdm1hKTsKK3ZvaWQgbnZrbV92bW1faG1tX21hcChzdHJ1Y3QgbnZrbV92 bW0gKnZtbSwgdTY0IGFkZHIsIHU2NCBucGFnZXMsIHU2NCAqcGFnZXMpOwordm9pZCBudmttX3Zt bV9obW1fdW5tYXAoc3RydWN0IG52a21fdm1tICp2bW0sIHU2NCBhZGRyLCB1NjQgbnBhZ2VzKTsK IAogc3RydWN0IG52a21fdm1hICpudmttX3ZtYV90YWlsKHN0cnVjdCBudmttX3ZtYSAqLCB1NjQg dGFpbCk7CiB2b2lkIG52a21fdm1tX25vZGVfaW5zZXJ0KHN0cnVjdCBudmttX3ZtbSAqLCBzdHJ1 Y3QgbnZrbV92bWEgKik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmtt L3N1YmRldi9tbXUvdm1tZ3AxMDAuYyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vc3Vi ZGV2L21tdS92bW1ncDEwMC5jCmluZGV4IDg3NTJkOWNlNGFmMC4uYmFlMzJmYzI4Mjg5IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL3N1YmRldi9tbXUvdm1tZ3AxMDAu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL3N1YmRldi9tbXUvdm1tZ3AxMDAu YwpAQCAtNjcsNiArNjcsNzcgQEAgZ3AxMDBfdm1tX3BndF9kbWEoc3RydWN0IG52a21fdm1tICp2 bW0sIHN0cnVjdCBudmttX21tdV9wdCAqcHQsCiAJVk1NX01BUF9JVEVSX0RNQSh2bW0sIHB0LCBw dGVpLCBwdGVzLCBtYXAsIGdwMTAwX3ZtbV9wZ3RfcHRlKTsKIH0KIAorc3RhdGljIGludAorZ3Ax MDBfdm1tX3BndF9obW1fbWFwKHN0cnVjdCBudmttX3ZtbSAqdm1tLCBzdHJ1Y3QgbnZrbV9tbXVf cHQgKnB0LAorCQkgICAgICB1MzIgcHRlaSwgdTMyIHB0ZXMsIHU2NCAqcGFnZXMpCit7CisJaW50 IG1hcHBlZCA9IDA7CisKKwludmttX2ttYXAocHQtPm1lbW9yeSk7CisJd2hpbGUgKHB0ZXMtLSkg eworCQl1NjQgZGF0YSA9IG52a21fcm82NChwdC0+bWVtb3J5LCBwdC0+YmFzZSArIHB0ZWkgKiA4 KTsKKwkJdTY0IHBhZ2UgPSAqcGFnZXM7CisJCXN0cnVjdCBwYWdlICp0bXA7CisJCWRtYV9hZGRy X3QgZG1hOworCisJCWlmICghKHBhZ2UgJiBOVl9ITU1fUEFHRV9GTEFHX1YpKSB7CisJCQlwYWdl cysrOyBwdGVpKys7CisJCQljb250aW51ZTsKKwkJfQorCisJCWlmICgoZGF0YSAmIDEpKSB7CisJ CQkqcGFnZXMgfD0gTlZfSE1NX1BBR0VfRkxBR19WOworCQkJcGFnZXMrKzsgcHRlaSsrOworCQkJ Y29udGludWU7CisJCX0KKworCQl0bXAgPSBwZm5fdG9fcGFnZShwYWdlID4+IE5WX0hNTV9QQUdF X1BGTl9TSElGVCk7CisJCWRtYSA9IGRtYV9tYXBfcGFnZSh2bW0tPm1tdS0+c3ViZGV2LmRldmlj ZS0+ZGV2LCB0bXAsCisJCQkJICAgMCwgUEFHRV9TSVpFLCBETUFfQklESVJFQ1RJT05BTCk7CisJ CWlmIChkbWFfbWFwcGluZ19lcnJvcih2bW0tPm1tdS0+c3ViZGV2LmRldmljZS0+ZGV2LCBkbWEp KSB7CisJCQkqcGFnZXMgfD0gTlZfSE1NX1BBR0VfRkxBR19FOworCQkJcGFnZXMrKzsgcHRlaSsr OworCQkJY29udGludWU7CisJCX0KKworCQlkYXRhID0gKDIgPDwgMSk7CisJCWRhdGEgfD0gKChk bWEgPj4gUEFHRV9TSElGVCkgPDwgOCk7CisJCWRhdGEgfD0gcGFnZSAmIE5WX0hNTV9QQUdFX0ZM QUdfViA/ICgxIDw8IDApIDogMDsKKwkJZGF0YSB8PSBwYWdlICYgTlZfSE1NX1BBR0VfRkxBR19X ID8gMCA6ICgxIDw8IDYpOworCisJCVZNTV9XTzA2NChwdCwgdm1tLCBwdGVpKysgKiA4LCBkYXRh KTsKKwkJbWFwcGVkKys7CisJCXBhZ2VzKys7CisJfQorCW52a21fZG9uZShwdC0+bWVtb3J5KTsK KworCXJldHVybiBtYXBwZWQ7Cit9CisKK3N0YXRpYyBpbnQKK2dwMTAwX3ZtbV9wZ3RfaG1tX3Vu bWFwKHN0cnVjdCBudmttX3ZtbSAqdm1tLCBzdHJ1Y3QgbnZrbV9tbXVfcHQgKnB0LAorCQkJdTMy IHB0ZWksIHUzMiBwdGVzLCB1NjQgKnBhZ2VzKQoreworCWludCB1bm1hcHBlZCA9IDA7CisKKwlu dmttX2ttYXAocHQtPm1lbW9yeSk7CisJd2hpbGUgKHB0ZXMtLSkgeworCQl1NjQgZGF0YSA9IG52 a21fcm82NChwdC0+bWVtb3J5LCBwdC0+YmFzZSArIHB0ZWkgKiA4KTsKKworCQlpZiAoIShkYXRh ICYgMSkpIHsKKwkJCVZNTV9XTzA2NChwdCwgdm1tLCBwdGVpKysgKiA4LCAwVUwpOworCQkJY29u dGludWU7CisJCX0KKworCQkvKiBDbGVhciB2YWxpZCBidXQga2VlcCBwdGUgdmFsdWUgc28gd2Ug Y2FuIGRtYV91bm1hcCgpICovCisJCVZNTV9XTzA2NChwdCwgdm1tLCBwdGVpKysgKiA4LCBkYXRh IF4gMSk7CisJCXVubWFwcGVkKys7CisJfQorCW52a21fZG9uZShwdC0+bWVtb3J5KTsKKworCXJl dHVybiB1bm1hcHBlZDsKK30KKwogc3RhdGljIHZvaWQKIGdwMTAwX3ZtbV9wZ3RfbWVtKHN0cnVj dCBudmttX3ZtbSAqdm1tLCBzdHJ1Y3QgbnZrbV9tbXVfcHQgKnB0LAogCQkgIHUzMiBwdGVpLCB1 MzIgcHRlcywgc3RydWN0IG52a21fdm1tX21hcCAqbWFwKQpAQCAtODksNiArMTYwLDggQEAgZ3Ax MDBfdm1tX2Rlc2Nfc3B0ID0gewogCS5tZW0gPSBncDEwMF92bW1fcGd0X21lbSwKIAkuZG1hID0g Z3AxMDBfdm1tX3BndF9kbWEsCiAJLnNnbCA9IGdwMTAwX3ZtbV9wZ3Rfc2dsLAorCS5obW1fbWFw ID0gZ3AxMDBfdm1tX3BndF9obW1fbWFwLAorCS5obW1fdW5tYXAgPSBncDEwMF92bW1fcGd0X2ht bV91bm1hcCwKIH07CiAKIHN0YXRpYyB2b2lkCi0tIAoyLjE0LjMKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJp LWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=