From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Brezillon Subject: [RFC 1/2] drm/vc4: Handle async page flips in the atomic_commit() path Date: Fri, 30 Mar 2018 17:09:03 +0200 Message-ID: <20180330150904.30458-2-boris.brezillon@bootlin.com> References: <20180330150904.30458-1-boris.brezillon@bootlin.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail.bootlin.com (mail.bootlin.com [62.4.15.54]) by gabe.freedesktop.org (Postfix) with ESMTP id 6665F89F5F for ; Fri, 30 Mar 2018 15:09:09 +0000 (UTC) In-Reply-To: <20180330150904.30458-1-boris.brezillon@bootlin.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: David Airlie , Daniel Vetter , dri-devel@lists.freedesktop.org, Eric Anholt , Gustavo Padovan Cc: Boris Brezillon List-Id: dri-devel@lists.freedesktop.org UmV3b3JrIHRoZSBhdG9taWMgY29tbWl0IGxvZ2ljIHRvIGhhbmRsZSBhc3luYyBwYWdlIGZsaXAg cmVxdWVzdHMgaW4KdGhlIGF0b21pYyB1cGRhdGUgcGF0aC4KCkFzeW5jIHBhZ2UgZmxpcHMgYXJl IGEgYml0IG1vcmUgY29tcGxpY2F0ZWQgdGhhbiBhc3luYyBjdXJzb3IgdXBkYXRlcwooYWxyZWFk eSBoYW5kbGVkIGluIHRoZSB2YzRfYXRvbWljX2NvbW1pdCgpIGZ1bmN0aW9uKSBpbiB0aGF0IHlv dSBuZWVkCnRvIHdhaXQgZm9yIGZlbmNlcyBvbiB0aGUgbmV3IGZyYW1lYnVmZmVycyB0byBiZSBz aWduYWxlZCBiZWZvcmUgZG9pbmcKdGhlIGZsaXAuIEluIG9yZGVyIHRvIGVuc3VyZSB0aGF0LCB3 ZSBzY2hlZHVsZSBhIGNvbW1pdF93b3JrIHdvcmsgdG8gZG8KdGhlIGFzeW5jIHVwZGF0ZSAobm90 ZSB0aGF0IHRoZSBleGlzdGluZyBpbXBsZW1lbnRhdGlvbiBhbHJlYWR5IHVzZXMgYQp3b3JrIHRv IHdhaXQgZm9yIGZlbmNlcyB0byBiZSBzaWduYWxlZCwgc28sIHRoZSBsYXRlbmN5IHNob3VsZG4n dApjaGFuZ2UgdGhhdCBtdWNoKS4KCk9mIGNvdXJzZSwgd2UgaGF2ZSB0byBtb2RpZnkgYSBiaXQg dGhlIGF0b21pY19jb21wbGV0ZV9jb21taXQoKQppbXBsZW1lbnRhdGlvbiB0byBhdm9pZCB3YWl0 aW5nIGZvciB0aGluZ3Mgd2UgZG9uJ3QgY2FyZSBhYm91dCB3aGVuCmRvaW5nIGFuIGFzeW5jIHBh Z2UgZmxpcDoKCiogZHJtX2F0b21pY19oZWxwZXJfd2FpdF9mb3JfZGVwZW5kZW5jaWVzKCkgd2Fp dHMgZm9yIGZsaXBfZG9uZSB3aGljaAogIHdlIGRvbid0IGNhcmUgYWJvdXQgd2hlbiBkb2luZyBh c3luYyBwYWdlIGZsaXBzLiBJbnN0ZWFkIHdlIHJlcGxhY2UKICB0aGF0IGNhbGwgYnkgYSBsb29w IHRoYXQgd2FpdHMgZm9yIGh3X2RvbmUgb25seQoqIGRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9t b2Rlc2V0X2Rpc2FibGVzKCkgYW5kCiAgZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X21vZGVzZXRf ZW5hYmxlcygpIGFyZSBub3QgbmVlZGVkIGJlY2F1c2UKICBub3RoaW5nIGV4Y2VwdCB0aGUgcGxh bmVzJyBGQnMgYXJlIHVwZGF0ZWQgaW4gYXN5bmMgcGFnZSBmbGlwcwoqIGRybV9hdG9taWNfaGVs cGVyX2NvbW1pdF9wbGFuZXMoKSBpcyByZXBsYWNlZCBieQogIHZjNF9wbGFuZV9hc3luY19zZXRf ZmIoKSB3aGljaCBpcyBkb2luZyBvbmx5IHRoZSBGQiB1cGRhdGUgYW5kIGlzCiAgdGh1cyBtdWNo IHNpbXBsZXIKKiBkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl92YmxhbmtzKCkgaXMgbm90IG5l ZWRlZCBiZWNhdXNlIHdlIGRvbid0CiAgd2FpdCBmb3IgdGhlIG5leHQgVkJMQU5LIHBlcmlvZCB0 byBhcHBseSB0aGUgbmV3IHN0YXRlLCBhbmQgZmxpcAogIGV2ZW50cyBhcmUgc2lnbmFsZWQgbWFu dWFsbHkganVzdCBhZnRlciB0aGUgSFcgaGFzIGJlZW4gdXBkYXRlZAoKVGhhbmtzIHRvIHRoaXMg cmV3b3JrLCB3ZSBjYW4gZ2V0IHJpZCBvZiB0aGUgY3VzdG9tIHZjNF9wYWdlX2ZsaXAoKQppbXBs ZW1lbnRhdGlvbiBhbmQgaXRzIGRlcGVuZGVuY2llcyBhbmQgdXNlCmRybV9hdG9taWNfaGVscGVy X3BhZ2VfZmxpcCgpIGluc3RlYWQuCgpTaWduZWQtb2ZmLWJ5OiBCb3JpcyBCcmV6aWxsb24gPGJv cmlzLmJyZXppbGxvbkBib290bGluLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9j cnRjLmMgfCAxMDMgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRy aXZlcnMvZ3B1L2RybS92YzQvdmM0X2ttcy5jICB8IDEwMSArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKystLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDg2IGluc2VydGlvbnMoKyksIDEx OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9jcnRj LmMgYi9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9jcnRjLmMKaW5kZXggYmY0NjY3NDgxOTM1Li4z ODQzYzM5ZGNlNjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2NydGMuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9jcnRjLmMKQEAgLTc1NywxMDcgKzc1Nyw2IEBA IHN0YXRpYyBpcnFyZXR1cm5fdCB2YzRfY3J0Y19pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpk YXRhKQogCXJldHVybiByZXQ7CiB9CiAKLXN0cnVjdCB2YzRfYXN5bmNfZmxpcF9zdGF0ZSB7Ci0J c3RydWN0IGRybV9jcnRjICpjcnRjOwotCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiOwotCXN0 cnVjdCBkcm1fcGVuZGluZ192YmxhbmtfZXZlbnQgKmV2ZW50OwotCi0Jc3RydWN0IHZjNF9zZXFu b19jYiBjYjsKLX07Ci0KLS8qIENhbGxlZCB3aGVuIHRoZSBWM0QgZXhlY3V0aW9uIGZvciB0aGUg Qk8gYmVpbmcgZmxpcHBlZCB0byBpcyBkb25lLCBzbyB0aGF0Ci0gKiB3ZSBjYW4gYWN0dWFsbHkg dXBkYXRlIHRoZSBwbGFuZSdzIGFkZHJlc3MgdG8gcG9pbnQgdG8gaXQuCi0gKi8KLXN0YXRpYyB2 b2lkCi12YzRfYXN5bmNfcGFnZV9mbGlwX2NvbXBsZXRlKHN0cnVjdCB2YzRfc2Vxbm9fY2IgKmNi KQotewotCXN0cnVjdCB2YzRfYXN5bmNfZmxpcF9zdGF0ZSAqZmxpcF9zdGF0ZSA9Ci0JCWNvbnRh aW5lcl9vZihjYiwgc3RydWN0IHZjNF9hc3luY19mbGlwX3N0YXRlLCBjYik7Ci0Jc3RydWN0IGRy bV9jcnRjICpjcnRjID0gZmxpcF9zdGF0ZS0+Y3J0YzsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gY3J0Yy0+ZGV2OwotCXN0cnVjdCB2YzRfZGV2ICp2YzQgPSB0b192YzRfZGV2KGRldik7Ci0J c3RydWN0IGRybV9wbGFuZSAqcGxhbmUgPSBjcnRjLT5wcmltYXJ5OwotCi0JdmM0X3BsYW5lX2Fz eW5jX3NldF9mYihwbGFuZSwgZmxpcF9zdGF0ZS0+ZmIpOwotCWlmIChmbGlwX3N0YXRlLT5ldmVu dCkgewotCQl1bnNpZ25lZCBsb25nIGZsYWdzOwotCi0JCXNwaW5fbG9ja19pcnFzYXZlKCZkZXYt PmV2ZW50X2xvY2ssIGZsYWdzKTsKLQkJZHJtX2NydGNfc2VuZF92YmxhbmtfZXZlbnQoY3J0Yywg ZmxpcF9zdGF0ZS0+ZXZlbnQpOwotCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPmV2ZW50 X2xvY2ssIGZsYWdzKTsKLQl9Ci0KLQlkcm1fY3J0Y192YmxhbmtfcHV0KGNydGMpOwotCWRybV9m cmFtZWJ1ZmZlcl9wdXQoZmxpcF9zdGF0ZS0+ZmIpOwotCWtmcmVlKGZsaXBfc3RhdGUpOwotCi0J dXAoJnZjNC0+YXN5bmNfbW9kZXNldCk7Ci19Ci0KLS8qIEltcGxlbWVudHMgYXN5bmMgKG5vbi12 Ymxhbmstc3luY2VkKSBwYWdlIGZsaXBzLgotICoKLSAqIFRoZSBwYWdlIGZsaXAgaW9jdGwgbmVl ZHMgdG8gcmV0dXJuIGltbWVkaWF0ZWx5LCBzbyB3ZSBncmFiIHRoZQotICogbW9kZXNldCBzZW1h cGhvcmUgb24gdGhlIHBpcGUsIGFuZCBxdWV1ZSB0aGUgYWRkcmVzcyB1cGRhdGUgZm9yCi0gKiB3 aGVuIFYzRCBpcyBkb25lIHdpdGggdGhlIEJPIGJlaW5nIGZsaXBwZWQgdG8uCi0gKi8KLXN0YXRp YyBpbnQgdmM0X2FzeW5jX3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCi0JCQkgICAg ICAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCi0JCQkgICAgICAgc3RydWN0IGRybV9wZW5k aW5nX3ZibGFua19ldmVudCAqZXZlbnQsCi0JCQkgICAgICAgdWludDMyX3QgZmxhZ3MpCi17Ci0J c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKLQlzdHJ1Y3QgdmM0X2RldiAqdmM0 ID0gdG9fdmM0X2RldihkZXYpOwotCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lID0gY3J0Yy0+cHJp bWFyeTsKLQlpbnQgcmV0ID0gMDsKLQlzdHJ1Y3QgdmM0X2FzeW5jX2ZsaXBfc3RhdGUgKmZsaXBf c3RhdGU7Ci0Jc3RydWN0IGRybV9nZW1fY21hX29iamVjdCAqY21hX2JvID0gZHJtX2ZiX2NtYV9n ZXRfZ2VtX29iaihmYiwgMCk7Ci0Jc3RydWN0IHZjNF9ibyAqYm8gPSB0b192YzRfYm8oJmNtYV9i by0+YmFzZSk7Ci0KLQlmbGlwX3N0YXRlID0ga3phbGxvYyhzaXplb2YoKmZsaXBfc3RhdGUpLCBH RlBfS0VSTkVMKTsKLQlpZiAoIWZsaXBfc3RhdGUpCi0JCXJldHVybiAtRU5PTUVNOwotCi0JZHJt X2ZyYW1lYnVmZmVyX2dldChmYik7Ci0JZmxpcF9zdGF0ZS0+ZmIgPSBmYjsKLQlmbGlwX3N0YXRl LT5jcnRjID0gY3J0YzsKLQlmbGlwX3N0YXRlLT5ldmVudCA9IGV2ZW50OwotCi0JLyogTWFrZSBz dXJlIGFsbCBvdGhlciBhc3luYyBtb2Rlc2V0ZXMgaGF2ZSBsYW5kZWQuICovCi0JcmV0ID0gZG93 bl9pbnRlcnJ1cHRpYmxlKCZ2YzQtPmFzeW5jX21vZGVzZXQpOwotCWlmIChyZXQpIHsKLQkJZHJt X2ZyYW1lYnVmZmVyX3B1dChmYik7Ci0JCWtmcmVlKGZsaXBfc3RhdGUpOwotCQlyZXR1cm4gcmV0 OwotCX0KLQotCVdBUk5fT04oZHJtX2NydGNfdmJsYW5rX2dldChjcnRjKSAhPSAwKTsKLQotCS8q IEltbWVkaWF0ZWx5IHVwZGF0ZSB0aGUgcGxhbmUncyBsZWdhY3kgZmIgcG9pbnRlciwgc28gdGhh dCBsYXRlcgotCSAqIG1vZGVzZXQgcHJlcCBzZWVzIHRoZSBzdGF0ZSB0aGF0IHdpbGwgYmUgcHJl c2VudCB3aGVuIHRoZSBzZW1hcGhvcmUKLQkgKiBpcyByZWxlYXNlZC4KLQkgKi8KLQlkcm1fYXRv bWljX3NldF9mYl9mb3JfcGxhbmUocGxhbmUtPnN0YXRlLCBmYik7Ci0JcGxhbmUtPmZiID0gZmI7 Ci0KLQl2YzRfcXVldWVfc2Vxbm9fY2IoZGV2LCAmZmxpcF9zdGF0ZS0+Y2IsIGJvLT5zZXFubywK LQkJCSAgIHZjNF9hc3luY19wYWdlX2ZsaXBfY29tcGxldGUpOwotCi0JLyogRHJpdmVyIHRha2Vz IG93bmVyc2hpcCBvZiBzdGF0ZSBvbiBzdWNjZXNzZnVsIGFzeW5jIGNvbW1pdC4gKi8KLQlyZXR1 cm4gMDsKLX0KLQotc3RhdGljIGludCB2YzRfcGFnZV9mbGlwKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywKLQkJCSBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKLQkJCSBzdHJ1Y3QgZHJtX3BlbmRp bmdfdmJsYW5rX2V2ZW50ICpldmVudCwKLQkJCSB1aW50MzJfdCBmbGFncywKLQkJCSBzdHJ1Y3Qg ZHJtX21vZGVzZXRfYWNxdWlyZV9jdHggKmN0eCkKLXsKLQlpZiAoZmxhZ3MgJiBEUk1fTU9ERV9Q QUdFX0ZMSVBfQVNZTkMpCi0JCXJldHVybiB2YzRfYXN5bmNfcGFnZV9mbGlwKGNydGMsIGZiLCBl dmVudCwgZmxhZ3MpOwotCWVsc2UKLQkJcmV0dXJuIGRybV9hdG9taWNfaGVscGVyX3BhZ2VfZmxp cChjcnRjLCBmYiwgZXZlbnQsIGZsYWdzLCBjdHgpOwotfQotCiBzdGF0aWMgc3RydWN0IGRybV9j cnRjX3N0YXRlICp2YzRfY3J0Y19kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9jcnRjICpjcnRj KQogewogCXN0cnVjdCB2YzRfY3J0Y19zdGF0ZSAqdmM0X3N0YXRlOwpAQCAtOTAyLDcgKzgwMSw3 IEBAIHZjNF9jcnRjX3Jlc2V0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIHN0YXRpYyBjb25zdCBz dHJ1Y3QgZHJtX2NydGNfZnVuY3MgdmM0X2NydGNfZnVuY3MgPSB7CiAJLnNldF9jb25maWcgPSBk cm1fYXRvbWljX2hlbHBlcl9zZXRfY29uZmlnLAogCS5kZXN0cm95ID0gdmM0X2NydGNfZGVzdHJv eSwKLQkucGFnZV9mbGlwID0gdmM0X3BhZ2VfZmxpcCwKKwkucGFnZV9mbGlwID0gZHJtX2F0b21p Y19oZWxwZXJfcGFnZV9mbGlwLAogCS5zZXRfcHJvcGVydHkgPSBOVUxMLAogCS5jdXJzb3Jfc2V0 ID0gTlVMTCwgLyogaGFuZGxlZCBieSBkcm1fbW9kZV9jdXJzb3JfdW5pdmVyc2FsICovCiAJLmN1 cnNvcl9tb3ZlID0gTlVMTCwgLyogaGFuZGxlZCBieSBkcm1fbW9kZV9jdXJzb3JfdW5pdmVyc2Fs ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9rbXMuYyBiL2RyaXZlcnMv Z3B1L2RybS92YzQvdmM0X2ttcy5jCmluZGV4IGU3OTFlNDk4YTNkZC4uZmFhMmMyNmYxMjM1IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9rbXMuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vdmM0L3ZjNF9rbXMuYwpAQCAtMjUsMzMgKzI1LDg5IEBACiAjaW5jbHVkZSAidmM0X2Ry di5oIgogCiBzdGF0aWMgdm9pZAotdmM0X2F0b21pY19jb21wbGV0ZV9jb21taXQoc3RydWN0IGRy bV9hdG9taWNfc3RhdGUgKnN0YXRlKQordmM0X2F0b21pY19jb21wbGV0ZV9jb21taXQoc3RydWN0 IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLCBib29sIGFzeW5jKQogewogCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXYgPSBzdGF0ZS0+ZGV2OwogCXN0cnVjdCB2YzRfZGV2ICp2YzQgPSB0b192YzRfZGV2 KGRldik7CiAKIAlkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl9mZW5jZXMoZGV2LCBzdGF0ZSwg ZmFsc2UpOwogCi0JZHJtX2F0b21pY19oZWxwZXJfd2FpdF9mb3JfZGVwZW5kZW5jaWVzKHN0YXRl KTsKKwlpZiAoYXN5bmMpIHsKKwkJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGU7 CisJCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGU7CisJCXN0cnVjdCBkcm1f cGxhbmUgKnBsYW5lOworCQlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7CisJCWludCBpOworCisJCS8q IFdlIG5lZWQgdG8gd2FpdCBmb3IgSFcgZG9uZSBiZWZvcmUgYXBwbHlpbmcgdGhlIG5ldyBGQnMK KwkJICogb3RoZXJ3aXNlIG91ciB1cGRhdGUgbWlnaHQgYmUgb3ZlcndyaXR0ZW4gYnkgdGhlIHBy ZXZpb3VzCisJCSAqIGNvbW1pdC4KKwkJICovCisJCWZvcl9lYWNoX29sZF9wbGFuZV9pbl9zdGF0 ZShzdGF0ZSwgcGxhbmUsIHBsYW5lX3N0YXRlLCBpKSB7CisJCQlzdHJ1Y3QgZHJtX2NydGNfY29t bWl0ICpjb21taXQgPSBwbGFuZV9zdGF0ZS0+Y29tbWl0OworCQkJaW50IHJldDsKKworCQkJaWYg KCFjb21taXQpCisJCQkJY29udGludWU7CisKKwkJCXJldCA9IHdhaXRfZm9yX2NvbXBsZXRpb25f dGltZW91dCgmY29tbWl0LT5od19kb25lLAorCQkJCQkJCSAgMTAgKiBIWik7CisJCQlpZiAoIXJl dCkKKwkJCQlEUk1fRVJST1IoIltQTEFORTolZDolc10gaHdfZG9uZSB0aW1lZCBvdXRcbiIsCisJ CQkJCSAgcGxhbmUtPmJhc2UuaWQsIHBsYW5lLT5uYW1lKTsKKwkJfQogCi0JZHJtX2F0b21pY19o ZWxwZXJfY29tbWl0X21vZGVzZXRfZGlzYWJsZXMoZGV2LCBzdGF0ZSk7CisJCS8qIEZJWE1FOgor CQkgKiBXZSBjb3VsZCB1c2UgZHJtX2F0b21pY19oZWxwZXJfYXN5bmNfY29tbWl0KCkgaGVyZSwg YnV0CisJCSAqIFZDNCdzIC0+YXRvbWljX2FzeW5jX3VwZGF0ZSgpIGltcGxlbWVudGF0aW9uIGV4 cGVjdHMKKwkJICogcGxhbmUtPnN0YXRlIHRvIHBvaW50IHRvIHRoZSBvbGRfc3RhdGUgYW5kIG9s ZC9uZXcgc3RhdGVzCisJCSAqIGhhdmUgYWxyZWFkeSBiZWVuIHN3YXBwZWQuCisJCSAqIExldCdz IGp1c3QgY2FsbCBvdXIgY3VzdG9tIGZ1bmN0aW9uIGZvciBub3cgYW5kIHNlZSBob3cgd2UKKwkJ ICogY2FuIG1ha2UgdGhhdCBtb3JlIGdlbmVyaWMgYWZ0ZXJ3YXJkcy4KKwkJICovCisJCWZvcl9l YWNoX25ld19wbGFuZV9pbl9zdGF0ZShzdGF0ZSwgcGxhbmUsIHBsYW5lX3N0YXRlLCBpKQorCQkJ dmM0X3BsYW5lX2FzeW5jX3NldF9mYihwbGFuZSwgcGxhbmVfc3RhdGUtPmZiKTsKKworCQkvKiBO b3csIHNlbmQgJ2Zha2UnIFZCTEFOSyBldmVudHMgdG8gbGV0IHRoZSB1c2VyIG5vdyBpdHMKKwkJ ICogcGFnZWZsaXAgaXMgZG9uZS4gQnkgZmFrZSBJIG1lYW4gdGhleSBhcmUgcmVhbGx5IFZCTEFO SworCQkgKiBzeW5jaHJvbml6ZWQgYnV0IGl0IHNlZW1zIHRvIGJlIGV4cGVjdGVkIGJ5IHRoZSBj b3JlLgorCQkgKi8KKwkJZm9yX2VhY2hfbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIG5l d19jcnRjX3N0YXRlLCBpKSB7CisJCQl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJCQlpZiAoIW5l d19jcnRjX3N0YXRlLT5ldmVudCkKKwkJCQljb250aW51ZTsKKworCQkJV0FSTl9PTihkcm1fY3J0 Y192YmxhbmtfZ2V0KGNydGMpKTsKKwkJCXNwaW5fbG9ja19pcnFzYXZlKCZkZXYtPmV2ZW50X2xv Y2ssIGZsYWdzKTsKKwkJCWRybV9jcnRjX3NlbmRfdmJsYW5rX2V2ZW50KGNydGMsIG5ld19jcnRj X3N0YXRlLT5ldmVudCk7CisJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPmV2ZW50X2xv Y2ssIGZsYWdzKTsKKwkJCWRybV9jcnRjX3ZibGFua19wdXQoY3J0Yyk7CisJCX0KKwl9IGVsc2Ug eworCQlkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl9kZXBlbmRlbmNpZXMoc3RhdGUpOwogCi0J ZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X3BsYW5lcyhkZXYsIHN0YXRlLCAwKTsKKwkJZHJtX2F0 b21pY19oZWxwZXJfY29tbWl0X21vZGVzZXRfZGlzYWJsZXMoZGV2LCBzdGF0ZSk7CiAKLQlkcm1f YXRvbWljX2hlbHBlcl9jb21taXRfbW9kZXNldF9lbmFibGVzKGRldiwgc3RhdGUpOworCQlkcm1f YXRvbWljX2hlbHBlcl9jb21taXRfcGxhbmVzKGRldiwgc3RhdGUsIDApOwogCi0JLyogTWFrZSBz dXJlIHRoYXQgZHJtX2F0b21pY19oZWxwZXJfd2FpdF9mb3JfdmJsYW5rcygpCi0JICogYWN0dWFs bHkgd2FpdHMgZm9yIHZibGFuay4gIElmIHdlJ3JlIGRvaW5nIGEgZnVsbCBhdG9taWMKLQkgKiBt b2Rlc2V0IChhcyBvcHBvc2VkIHRvIGEgdmM0X3VwZGF0ZV9wbGFuZSgpIHNob3J0IGNpcmN1aXQp LAotCSAqIHRoZW4gd2UgbmVlZCB0byB3YWl0IGZvciBzY2Fub3V0IHRvIGJlIGRvbmUgd2l0aCBv dXIKLQkgKiBkaXNwbGF5IGxpc3RzIGJlZm9yZSB3ZSBmcmVlIGl0IGFuZCBwb3RlbnRpYWxseSBy ZWFsbG9jYXRlCi0JICogYW5kIG92ZXJ3cml0ZSB0aGUgZGxpc3QgbWVtb3J5IHdpdGggYSBuZXcg bW9kZXNldC4KLQkgKi8KLQlzdGF0ZS0+bGVnYWN5X2N1cnNvcl91cGRhdGUgPSBmYWxzZTsKKwkJ ZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X21vZGVzZXRfZW5hYmxlcyhkZXYsIHN0YXRlKTsKKwl9 CiAKIAlkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfaHdfZG9uZShzdGF0ZSk7CiAKLQlkcm1fYXRv bWljX2hlbHBlcl93YWl0X2Zvcl92YmxhbmtzKGRldiwgc3RhdGUpOworCWlmICghYXN5bmMpIHsK KwkJLyogTWFrZSBzdXJlIHRoYXQgZHJtX2F0b21pY19oZWxwZXJfd2FpdF9mb3JfdmJsYW5rcygp CisJCSAqIGFjdHVhbGx5IHdhaXRzIGZvciB2YmxhbmsuICBJZiB3ZSdyZSBkb2luZyBhIGZ1bGwg YXRvbWljCisJCSAqIG1vZGVzZXQgKGFzIG9wcG9zZWQgdG8gYSB2YzRfdXBkYXRlX3BsYW5lKCkg c2hvcnQgY2lyY3VpdCksCisJCSAqIHRoZW4gd2UgbmVlZCB0byB3YWl0IGZvciBzY2Fub3V0IHRv IGJlIGRvbmUgd2l0aCBvdXIKKwkJICogZGlzcGxheSBsaXN0cyBiZWZvcmUgd2UgZnJlZSBpdCBh bmQgcG90ZW50aWFsbHkgcmVhbGxvY2F0ZQorCQkgKiBhbmQgb3ZlcndyaXRlIHRoZSBkbGlzdCBt ZW1vcnkgd2l0aCBhIG5ldyBtb2Rlc2V0LgorCQkgKi8KKwkJc3RhdGUtPmxlZ2FjeV9jdXJzb3Jf dXBkYXRlID0gZmFsc2U7CisKKwkJZHJtX2F0b21pY19oZWxwZXJfd2FpdF9mb3JfdmJsYW5rcyhk ZXYsIHN0YXRlKTsKKwl9CiAKIAlkcm1fYXRvbWljX2hlbHBlcl9jbGVhbnVwX3BsYW5lcyhkZXYs IHN0YXRlKTsKIApAQCAtNjcsNyArMTIzLDIwIEBAIHN0YXRpYyB2b2lkIGNvbW1pdF93b3JrKHN0 cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUg PSBjb250YWluZXJfb2Yod29yaywKIAkJCQkJCSAgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRl LAogCQkJCQkJICAgICAgY29tbWl0X3dvcmspOwotCXZjNF9hdG9taWNfY29tcGxldGVfY29tbWl0 KHN0YXRlKTsKKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlOworCWJvb2wg YXN5bmNfY29tbWl0ID0gdHJ1ZTsKKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7CisJaW50IGk7CisK Kwlmb3JfZWFjaF9uZXdfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgbmV3X2NydGNfc3RhdGUs IGkpIHsKKwkJaWYgKG5ld19jcnRjX3N0YXRlLT5wYWdlZmxpcF9mbGFncyAmIERSTV9NT0RFX1BB R0VfRkxJUF9BU1lOQykKKwkJCWNvbnRpbnVlOworCisJCWFzeW5jX2NvbW1pdCA9IGZhbHNlOwor CQlicmVhazsKKwl9CisKKwl2YzRfYXRvbWljX2NvbXBsZXRlX2NvbW1pdChzdGF0ZSwgYXN5bmNf Y29tbWl0KTsKIH0KIAogLyoqCkBAIC0xNjMsNyArMjMyLDcgQEAgc3RhdGljIGludCB2YzRfYXRv bWljX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCWlmIChub25ibG9jaykKIAkJcXVl dWVfd29yayhzeXN0ZW1fdW5ib3VuZF93cSwgJnN0YXRlLT5jb21taXRfd29yayk7CiAJZWxzZQot CQl2YzRfYXRvbWljX2NvbXBsZXRlX2NvbW1pdChzdGF0ZSk7CisJCXZjNF9hdG9taWNfY29tcGxl dGVfY29tbWl0KHN0YXRlLCBmYWxzZSk7CiAKIAlyZXR1cm4gMDsKIH0KLS0gCjIuMTQuMQoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1h aWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==