From mboxrd@z Thu Jan 1 00:00:00 1970 From: "=?UTF-8?q?Christian=20K=C3=B6nig?=" Subject: [PATCH 6/6] drm/amdgpu: add independent DMA-buf import v6 Date: Tue, 18 Jun 2019 13:54:55 +0200 Message-ID: <20190618115455.1253-6-christian.koenig@amd.com> References: <20190618115455.1253-1-christian.koenig@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190618115455.1253-1-christian.koenig@amd.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org SW5zdGVhZCBvZiByZWx5aW5nIG9uIHRoZSBEUk0gZnVuY3Rpb25zIGp1c3QgaW1wbGVtZW50IG91 ciBvd24gaW1wb3J0CmZ1bmN0aW9ucy4gVGhpcyBwcmVwYXJlcyBzdXBwb3J0IGZvciB0YWtpbmcg Y2FyZSBvZiB1bnBpbm5lZCBETUEtYnVmLgoKdjI6IGVuYWJsZSBmb3IgYWxsIGV4cG9ydGVycywg bm90IGp1c3QgYW1kZ3B1LCBmaXggaW52YWxpZGF0aW9uCiAgICBoYW5kbGluZywgbG9jayByZXNl cnZhdGlvbiBvYmplY3Qgd2hpbGUgc2V0dGluZyBjYWxsYmFjawp2MzogY2hhbmdlIHRvIG5ldyBk bWFfYnVmIGF0dGFjaCBpbnRlcmZhY2UKdjQ6IHNwbGl0IG91dCBmcm9tIHVucGlubmVkIERNQS1i dWYgd29yawp2NTogcmViYXNlZCBhbmQgY2xlYW51cCBvbiBuZXcgRE1BLWJ1ZiBpbnRlcmZhY2UK djY6IHNxdWFzaCB3aXRoIGludmFsaWRhdGlvbiBjYWxsYmFjayBjaGFuZ2UsCiAgICBzdG9wIHVz aW5nIF8obWFwfHVubWFwKV9sb2NrZWQKClNpZ25lZC1vZmYtYnk6IENocmlzdGlhbiBLw7ZuaWcg PGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfZG1hX2J1Zi5jIHwgNjUgKysrKysrKysrKysrKysrKy0tLS0tCiBkcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZG1hX2J1Zi5oIHwgIDQgLS0KIGRyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYyAgICAgfCAgMSAtCiBkcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfb2JqZWN0LmMgIHwgIDYgKysKIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV90dG0uYyAgICAgfCAzMiArKysrKysrKy0tCiA1IGZpbGVzIGNoYW5nZWQsIDgz IGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kbWFfYnVmLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfZG1hX2J1Zi5jCmluZGV4IDU3OWUzM2IzMWYyZC4uMzE1MTFkN2RlOGEwIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZG1hX2J1Zi5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kbWFfYnVmLmMKQEAgLTQyNCwz MSArNDI0LDI4IEBAIHN0cnVjdCBkbWFfYnVmICphbWRncHVfZ2VtX3ByaW1lX2V4cG9ydChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAogfQogCiAvKioKLSAqIGFtZGdwdV9nZW1fcHJpbWVfaW1wb3J0 X3NnX3RhYmxlIC0gJmRybV9kcml2ZXIuZ2VtX3ByaW1lX2ltcG9ydF9zZ190YWJsZQotICogaW1w bGVtZW50YXRpb24KKyAqIGFtZGdwdV9kbWFfYnVmX2NyZWF0ZV9vYmogLSBjcmVhdGUgQk8gZm9y IERNQS1idWYgaW1wb3J0CisgKgogICogQGRldjogRFJNIGRldmljZQotICogQGF0dGFjaDogRE1B LWJ1ZiBhdHRhY2htZW50Ci0gKiBAc2c6IFNjYXR0ZXIvZ2F0aGVyIHRhYmxlCisgKiBAZG1hX2J1 ZjogRE1BLWJ1ZgogICoKLSAqIEltcG9ydHMgc2hhcmVkIERNQSBidWZmZXIgbWVtb3J5IGV4cG9y dGVkIGJ5IGFub3RoZXIgZGV2aWNlLgorICogQ3JlYXRlcyBhbiBlbXB0eSBTRyBCTyBmb3IgRE1B LWJ1ZiBpbXBvcnQuCiAgKgogICogUmV0dXJuczoKICAqIEEgbmV3IEdFTSBCTyBvZiB0aGUgZ2l2 ZW4gRFJNIGRldmljZSwgcmVwcmVzZW50aW5nIHRoZSBtZW1vcnkKICAqIGRlc2NyaWJlZCBieSB0 aGUgZ2l2ZW4gRE1BLWJ1ZiBhdHRhY2htZW50IGFuZCBzY2F0dGVyL2dhdGhlciB0YWJsZS4KICAq Lwotc3RydWN0IGRybV9nZW1fb2JqZWN0ICoKLWFtZGdwdV9nZW1fcHJpbWVfaW1wb3J0X3NnX3Rh YmxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCi0JCQkJIHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1l bnQgKmF0dGFjaCwKLQkJCQkgc3RydWN0IHNnX3RhYmxlICpzZykKK3N0YXRpYyBzdHJ1Y3QgZHJt X2dlbV9vYmplY3QgKgorYW1kZ3B1X2RtYV9idWZfY3JlYXRlX29iaihzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCBzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZikKIHsKLQlzdHJ1Y3QgcmVzZXJ2YXRpb25f b2JqZWN0ICpyZXN2ID0gYXR0YWNoLT5kbWFidWYtPnJlc3Y7CisJc3RydWN0IHJlc2VydmF0aW9u X29iamVjdCAqcmVzdiA9IGRtYV9idWYtPnJlc3Y7CiAJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBhbWRncHVfYm8gKmJvOwogCXN0cnVjdCBh bWRncHVfYm9fcGFyYW0gYnA7CiAJaW50IHJldDsKIAogCW1lbXNldCgmYnAsIDAsIHNpemVvZihi cCkpOwotCWJwLnNpemUgPSBhdHRhY2gtPmRtYWJ1Zi0+c2l6ZTsKKwlicC5zaXplID0gZG1hX2J1 Zi0+c2l6ZTsKIAlicC5ieXRlX2FsaWduID0gUEFHRV9TSVpFOwogCWJwLmRvbWFpbiA9IEFNREdQ VV9HRU1fRE9NQUlOX0NQVTsKIAlicC5mbGFncyA9IDA7CkBAIC00NTksMTEgKzQ1Niw5IEBAIGFt ZGdwdV9nZW1fcHJpbWVfaW1wb3J0X3NnX3RhYmxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJ aWYgKHJldCkKIAkJZ290byBlcnJvcjsKIAotCWJvLT50Ym8uc2cgPSBzZzsKLQliby0+dGJvLnR0 bS0+c2cgPSBzZzsKIAliby0+YWxsb3dlZF9kb21haW5zID0gQU1ER1BVX0dFTV9ET01BSU5fR1RU OwogCWJvLT5wcmVmZXJyZWRfZG9tYWlucyA9IEFNREdQVV9HRU1fRE9NQUlOX0dUVDsKLQlpZiAo YXR0YWNoLT5kbWFidWYtPm9wcyAhPSAmYW1kZ3B1X2RtYWJ1Zl9vcHMpCisJaWYgKGRtYV9idWYt Pm9wcyAhPSAmYW1kZ3B1X2RtYWJ1Zl9vcHMpCiAJCWJvLT5wcmltZV9zaGFyZWRfY291bnQgPSAx OwogCiAJd3dfbXV0ZXhfdW5sb2NrKCZyZXN2LT5sb2NrKTsKQEAgLTQ3NCw2ICs0NjksMzIgQEAg YW1kZ3B1X2dlbV9wcmltZV9pbXBvcnRfc2dfdGFibGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK IAlyZXR1cm4gRVJSX1BUUihyZXQpOwogfQogCisvKioKKyAqIGFtZGdwdV9nZW1fcHJpbWVfaW52 YWxpZGF0ZV9tYXBwaW5ncyAtICZhdHRhY2guaW52YWxpZGF0ZSBpbXBsZW1lbnRhdGlvbgorICoK KyAqIEBhdHRhY2g6IHRoZSBETUEtYnVmIGF0dGFjaG1lbnQKKyAqCisgKiBJbnZhbGlkYXRlIHRo ZSBETUEtYnVmIGF0dGFjaG1lbnQsIG1ha2luZyBzdXJlIHRoYXQgdGhlIHdlIHJlLWNyZWF0ZSB0 aGUKKyAqIG1hcHBpbmcgYmVmb3JlIHRoZSBuZXh0IHVzZS4KKyAqLworc3RhdGljIHZvaWQKK2Ft ZGdwdV9nZW1fcHJpbWVfaW52YWxpZGF0ZV9tYXBwaW5ncyhzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2ht ZW50ICphdHRhY2gpCit7CisJc3RydWN0IHR0bV9vcGVyYXRpb25fY3R4IGN0eCA9IHsgZmFsc2Us IGZhbHNlIH07CisJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmogPSBhdHRhY2gtPmltcG9ydGVy X3ByaXY7CisJc3RydWN0IGFtZGdwdV9ibyAqYm8gPSBnZW1fdG9fYW1kZ3B1X2JvKG9iaik7CisJ c3RydWN0IHR0bV9wbGFjZW1lbnQgcGxhY2VtZW50ID0ge307CisJaW50IHI7CisKKwlyID0gdHRt X2JvX3ZhbGlkYXRlKCZiby0+dGJvLCAmcGxhY2VtZW50LCAmY3R4KTsKKwlpZiAocikKKwkJRFJN X0VSUk9SKCJGYWlsZWQgdG8gaW52YWxpZGF0ZSBETUEtYnVmIGltcG9ydCAoJWQpKVxuIiwgcik7 Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2hfb3BzIGFtZGdwdV9kbWFf YnVmX2F0dGFjaF9vcHMgPSB7CisJLmludmFsaWRhdGUgPSBhbWRncHVfZ2VtX3ByaW1lX2ludmFs aWRhdGVfbWFwcGluZ3MKK307CisKIC8qKgogICogYW1kZ3B1X2dlbV9wcmltZV9pbXBvcnQgLSAm ZHJtX2RyaXZlci5nZW1fcHJpbWVfaW1wb3J0IGltcGxlbWVudGF0aW9uCiAgKiBAZGV2OiBEUk0g ZGV2aWNlCkBAIC00ODgsNiArNTA5LDcgQEAgYW1kZ3B1X2dlbV9wcmltZV9pbXBvcnRfc2dfdGFi bGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqYW1kZ3B1 X2dlbV9wcmltZV9pbXBvcnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkJICAgIHN0cnVj dCBkbWFfYnVmICpkbWFfYnVmKQogeworCXN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFj aDsKIAlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iajsKIAogCWlmIChkbWFfYnVmLT5vcHMgPT0g JmFtZGdwdV9kbWFidWZfb3BzKSB7CkBAIC01MDIsNSArNTI0LDE4IEBAIHN0cnVjdCBkcm1fZ2Vt X29iamVjdCAqYW1kZ3B1X2dlbV9wcmltZV9pbXBvcnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK IAkJfQogCX0KIAotCXJldHVybiBkcm1fZ2VtX3ByaW1lX2ltcG9ydChkZXYsIGRtYV9idWYpOwor CW9iaiA9IGFtZGdwdV9kbWFfYnVmX2NyZWF0ZV9vYmooZGV2LCBkbWFfYnVmKTsKKwlpZiAoSVNf RVJSKG9iaikpCisJCXJldHVybiBvYmo7CisKKwlhdHRhY2ggPSBkbWFfYnVmX2R5bmFtaWNfYXR0 YWNoKGRtYV9idWYsIGRldi0+ZGV2LAorCQkJCQkmYW1kZ3B1X2RtYV9idWZfYXR0YWNoX29wcywg b2JqKTsKKwlpZiAoSVNfRVJSKGF0dGFjaCkpIHsKKwkJZHJtX2dlbV9vYmplY3RfcHV0KG9iaik7 CisJCXJldHVybiBFUlJfQ0FTVChhdHRhY2gpOworCX0KKworCWdldF9kbWFfYnVmKGRtYV9idWYp OworCW9iai0+aW1wb3J0X2F0dGFjaCA9IGF0dGFjaDsKKwlyZXR1cm4gb2JqOwogfQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RtYV9idWYuaCBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kbWFfYnVmLmgKaW5kZXggZjE1MjIyOTI4MTRj Li4yNzY1NDEzNzcwYjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9kbWFfYnVmLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rt YV9idWYuaApAQCAtMjUsMTAgKzI1LDYgQEAKIAogI2luY2x1ZGUgPGRybS9kcm1fZ2VtLmg+CiAK LXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqCi1hbWRncHVfZ2VtX3ByaW1lX2ltcG9ydF9zZ190YWJs ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAotCQkJCSBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50 ICphdHRhY2gsCi0JCQkJIHN0cnVjdCBzZ190YWJsZSAqc2cpOwogc3RydWN0IGRtYV9idWYgKmFt ZGdwdV9nZW1fcHJpbWVfZXhwb3J0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJCXN0cnVj dCBkcm1fZ2VtX29iamVjdCAqZ29iaiwKIAkJCQkJaW50IGZsYWdzKTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9kcnYuYwppbmRleCA1ZjNiN2NhYjgzOTAuLjc2ZDQ0NTkxNmM5YSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYwpAQCAtMTMzNCw3ICsxMzM0 LDYgQEAgc3RhdGljIHN0cnVjdCBkcm1fZHJpdmVyIGttc19kcml2ZXIgPSB7CiAJLmdlbV9wcmlt ZV9leHBvcnQgPSBhbWRncHVfZ2VtX3ByaW1lX2V4cG9ydCwKIAkuZ2VtX3ByaW1lX2ltcG9ydCA9 IGFtZGdwdV9nZW1fcHJpbWVfaW1wb3J0LAogCS5nZW1fcHJpbWVfcmVzX29iaiA9IGFtZGdwdV9n ZW1fcHJpbWVfcmVzX29iaiwKLQkuZ2VtX3ByaW1lX2ltcG9ydF9zZ190YWJsZSA9IGFtZGdwdV9n ZW1fcHJpbWVfaW1wb3J0X3NnX3RhYmxlLAogCS5nZW1fcHJpbWVfdm1hcCA9IGFtZGdwdV9nZW1f cHJpbWVfdm1hcCwKIAkuZ2VtX3ByaW1lX3Z1bm1hcCA9IGFtZGdwdV9nZW1fcHJpbWVfdnVubWFw LAogCS5nZW1fcHJpbWVfbW1hcCA9IGFtZGdwdV9nZW1fcHJpbWVfbW1hcCwKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuYyBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuYwppbmRleCA3ODQzYjNjNmNhNTQuLjk5YmNm NmU3MTBhNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29i amVjdC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuYwpA QCAtODUwLDYgKzg1MCw5IEBAIGludCBhbWRncHVfYm9fcGluX3Jlc3RyaWN0ZWQoc3RydWN0IGFt ZGdwdV9ibyAqYm8sIHUzMiBkb21haW4sCiAJCXJldHVybiAwOwogCX0KIAorCWlmIChiby0+Z2Vt X2Jhc2UuaW1wb3J0X2F0dGFjaCkKKwkJZG1hX2J1Zl9waW4oYm8tPmdlbV9iYXNlLmltcG9ydF9h dHRhY2gpOworCiAJYm8tPmZsYWdzIHw9IEFNREdQVV9HRU1fQ1JFQVRFX1ZSQU1fQ09OVElHVU9V UzsKIAkvKiBmb3JjZSB0byBwaW4gaW50byB2aXNpYmxlIHZpZGVvIHJhbSAqLwogCWlmICghKGJv LT5mbGFncyAmIEFNREdQVV9HRU1fQ1JFQVRFX05PX0NQVV9BQ0NFU1MpKQpAQCAtOTMzLDYgKzkz Niw5IEBAIGludCBhbWRncHVfYm9fdW5waW4oc3RydWN0IGFtZGdwdV9ibyAqYm8pCiAKIAlhbWRn cHVfYm9fc3VidHJhY3RfcGluX3NpemUoYm8pOwogCisJaWYgKGJvLT5nZW1fYmFzZS5pbXBvcnRf YXR0YWNoKQorCQlkbWFfYnVmX3VucGluKGJvLT5nZW1fYmFzZS5pbXBvcnRfYXR0YWNoKTsKKwog CWZvciAoaSA9IDA7IGkgPCBiby0+cGxhY2VtZW50Lm51bV9wbGFjZW1lbnQ7IGkrKykgewogCQli by0+cGxhY2VtZW50c1tpXS5scGZuID0gMDsKIAkJYm8tPnBsYWNlbWVudHNbaV0uZmxhZ3MgJj0g flRUTV9QTF9GTEFHX05PX0VWSUNUOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X3R0bS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3R0 bS5jCmluZGV4IGQ4MWJlYmY3NjMxMC4uYzg5ZmE1OGE3OTE0IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdHRtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X3R0bS5jCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSA8bGludXgv c2xhYi5oPgogI2luY2x1ZGUgPGxpbnV4L3N3YXAuaD4KICNpbmNsdWRlIDxsaW51eC9zd2lvdGxi Lmg+CisjaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi5oPgogCiAjaW5jbHVkZSA8ZHJtL3R0bS90dG1f Ym9fYXBpLmg+CiAjaW5jbHVkZSA8ZHJtL3R0bS90dG1fYm9fZHJpdmVyLmg+CkBAIC03MTEsNiAr NzEyLDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgYW1kZ3B1X3R0bV9pb19tZW1fcGZuKHN0cnVj dCB0dG1fYnVmZmVyX29iamVjdCAqYm8sCiAgKi8KIHN0cnVjdCBhbWRncHVfdHRtX3R0IHsKIAlz dHJ1Y3QgdHRtX2RtYV90dAl0dG07CisJc3RydWN0IGRybV9nZW1fb2JqZWN0CSpnb2JqOwogCXU2 NAkJCW9mZnNldDsKIAl1aW50NjRfdAkJdXNlcnB0cjsKIAlzdHJ1Y3QgdGFza19zdHJ1Y3QJKnVz ZXJ0YXNrOwpAQCAtMTE5OCw2ICsxMjAwLDcgQEAgc3RhdGljIHN0cnVjdCB0dG1fdHQgKmFtZGdw dV90dG1fdHRfY3JlYXRlKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8sCiAJCXJldHVybiBO VUxMOwogCX0KIAlndHQtPnR0bS50dG0uZnVuYyA9ICZhbWRncHVfYmFja2VuZF9mdW5jOworCWd0 dC0+Z29iaiA9ICZ0dG1fdG9fYW1kZ3B1X2JvKGJvKS0+Z2VtX2Jhc2U7CiAKIAkvKiBhbGxvY2F0 ZSBzcGFjZSBmb3IgdGhlIHVuaW5pdGlhbGl6ZWQgcGFnZSBlbnRyaWVzICovCiAJaWYgKHR0bV9z Z190dF9pbml0KCZndHQtPnR0bSwgYm8sIHBhZ2VfZmxhZ3MpKSB7CkBAIC0xMjE4LDcgKzEyMjEs NiBAQCBzdGF0aWMgaW50IGFtZGdwdV90dG1fdHRfcG9wdWxhdGUoc3RydWN0IHR0bV90dCAqdHRt LAogewogCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gYW1kZ3B1X3R0bV9hZGV2KHR0bS0+ YmRldik7CiAJc3RydWN0IGFtZGdwdV90dG1fdHQgKmd0dCA9ICh2b2lkICopdHRtOwotCWJvb2wg c2xhdmUgPSAhISh0dG0tPnBhZ2VfZmxhZ3MgJiBUVE1fUEFHRV9GTEFHX1NHKTsKIAogCS8qIHVz ZXIgcGFnZXMgYXJlIGJvdW5kIGJ5IGFtZGdwdV90dG1fdHRfcGluX3VzZXJwdHIoKSAqLwogCWlm IChndHQgJiYgZ3R0LT51c2VycHRyKSB7CkBAIC0xMjMxLDcgKzEyMzMsMTkgQEAgc3RhdGljIGlu dCBhbWRncHVfdHRtX3R0X3BvcHVsYXRlKHN0cnVjdCB0dG1fdHQgKnR0bSwKIAkJcmV0dXJuIDA7 CiAJfQogCi0JaWYgKHNsYXZlICYmIHR0bS0+c2cpIHsKKwlpZiAodHRtLT5wYWdlX2ZsYWdzICYg VFRNX1BBR0VfRkxBR19TRykgeworCQlpZiAoIXR0bS0+c2cpIHsKKwkJCXN0cnVjdCBkbWFfYnVm X2F0dGFjaG1lbnQgKmF0dGFjaDsKKwkJCXN0cnVjdCBzZ190YWJsZSAqc2d0OworCisJCQlhdHRh Y2ggPSBndHQtPmdvYmotPmltcG9ydF9hdHRhY2g7CisJCQlzZ3QgPSBkbWFfYnVmX21hcF9hdHRh Y2htZW50KGF0dGFjaCwgRE1BX0JJRElSRUNUSU9OQUwpOworCQkJaWYgKElTX0VSUihzZ3QpKQor CQkJCXJldHVybiBQVFJfRVJSKHNndCk7CisKKwkJCXR0bS0+c2cgPSBzZ3Q7CisJCX0KKwogCQlk cm1fcHJpbWVfc2dfdG9fcGFnZV9hZGRyX2FycmF5cyh0dG0tPnNnLCB0dG0tPnBhZ2VzLAogCQkJ CQkJIGd0dC0+dHRtLmRtYV9hZGRyZXNzLAogCQkJCQkJIHR0bS0+bnVtX3BhZ2VzKTsKQEAgLTEy NTgsOSArMTI3Miw4IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X3R0bV90dF9wb3B1bGF0ZShzdHJ1Y3Qg dHRtX3R0ICp0dG0sCiAgKi8KIHN0YXRpYyB2b2lkIGFtZGdwdV90dG1fdHRfdW5wb3B1bGF0ZShz dHJ1Y3QgdHRtX3R0ICp0dG0pCiB7Ci0Jc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXY7CiAJc3Ry dWN0IGFtZGdwdV90dG1fdHQgKmd0dCA9ICh2b2lkICopdHRtOwotCWJvb2wgc2xhdmUgPSAhISh0 dG0tPnBhZ2VfZmxhZ3MgJiBUVE1fUEFHRV9GTEFHX1NHKTsKKwlzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldjsKIAogCWlmIChndHQgJiYgZ3R0LT51c2VycHRyKSB7CiAJCWFtZGdwdV90dG1fdHRf c2V0X3VzZXJfcGFnZXModHRtLCBOVUxMKTsKQEAgLTEyNjksNyArMTI4MiwxNiBAQCBzdGF0aWMg dm9pZCBhbWRncHVfdHRtX3R0X3VucG9wdWxhdGUoc3RydWN0IHR0bV90dCAqdHRtKQogCQlyZXR1 cm47CiAJfQogCi0JaWYgKHNsYXZlKQorCWlmICh0dG0tPnNnICYmIGd0dC0+Z29iai0+aW1wb3J0 X2F0dGFjaCkgeworCQlzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2g7CisKKwkJYXR0 YWNoID0gZ3R0LT5nb2JqLT5pbXBvcnRfYXR0YWNoOworCQlkbWFfYnVmX3VubWFwX2F0dGFjaG1l bnQoYXR0YWNoLCB0dG0tPnNnLCBETUFfQklESVJFQ1RJT05BTCk7CisJCXR0bS0+c2cgPSBOVUxM OworCQlyZXR1cm47CisJfQorCisJaWYgKHR0bS0+cGFnZV9mbGFncyAmIFRUTV9QQUdFX0ZMQUdf U0cpCiAJCXJldHVybjsKIAogCWFkZXYgPSBhbWRncHVfdHRtX2FkZXYodHRtLT5iZGV2KTsKLS0g CjIuMTcuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K ZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs