From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: [PATCH 02/14] drm: Hide hw.lock cleanup in filp->release better Date: Tue, 14 Jun 2016 20:50:57 +0200 Message-ID: <1465930269-7883-3-git-send-email-daniel.vetter@ffwll.ch> References: <1465930269-7883-1-git-send-email-daniel.vetter@ffwll.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1465930269-7883-1-git-send-email-daniel.vetter@ffwll.ch> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: DRI Development Cc: Daniel Vetter , Intel Graphics Development , Daniel Vetter List-Id: dri-devel@lists.freedesktop.org QSBmZXcgdGhpbmdzOgotIFJlbmFtZSB0aGUgY2xlYW51cCBmdW5jdGlvbiBmcm9tIGRybV9tYXN0 ZXJfcmVsZWFzZSB0bwogIGRybV9sZWdhY3lfbG9ja19yZWxlYXNlLiBJdCBkb2Vzbid0IHJlbGFz ZSBhbnkgbWFzdGVyIHN0dWZmLCBidXQKICBqdXN0IHRoZSBsZWdhY3kgaHcgbG9jay4KLSBIaWRl IGl0IGluIGRybV9sb2NrLmMsIHdoaWNoIGFsbG93cyB1cyB0byBtYWtlIGEgZmV3IG1vcmUgZnVu Y3Rpb25zCiAgc3RhdGljIGluIHRoZXJlLiBUbyBhdm9pZCBmb3J3YXJkIGRlY2wgd2UgbmVlZCB0 byBzaHVmZmxlIHRoZSBjb2RlIGEKICBiaXQgdGhvdWdoLgotIFB1c2ggdGhlIGNoZWNrIGZvciAt Pm1hc3RlciBpbnRvIHRoZSBmdW5jdGlvbiBpdHNlbGYuCi0gT25seSBjYWxsIHRoaXMgZm9yICFE UklWRVJfTU9ERVNFVC4KCkVuZCByZXN1bHQ6IEFub3RoZXIgcGxhY2UgdGhhdCB0YWtlcyBzdHJ1 Y3RfbXV0ZXggZ29uZSBmb3IgZ29vZCBmb3IKbW9kZXJuIGRyaXZlcnMuCgp2MjogUmVtb3ZlIGxl ZnRvdmVyIGNvbW1lbnQuCgpTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0 dGVyQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2ZvcHMuYyAgIHwgIDE3ICst LS0KIGRyaXZlcnMvZ3B1L2RybS9kcm1fbGVnYWN5LmggfCAgIDggKy0KIGRyaXZlcnMvZ3B1L2Ry bS9kcm1fbG9jay5jICAgfCAyMzggKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0t LS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAxMjYgaW5zZXJ0aW9ucygrKSwgMTM3IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZm9wcy5jIGIvZHJpdmVycy9n cHUvZHJtL2RybV9mb3BzLmMKaW5kZXggYTI3YmM3Y2RhOTc1Li4yZmQ0ZjQyYjkwN2EgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZm9wcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9k cm1fZm9wcy5jCkBAIC0zMzgsMTggKzMzOCw2IEBAIG91dF9wcmltZV9kZXN0cm95OgogCXJldHVy biByZXQ7CiB9CiAKLXN0YXRpYyB2b2lkIGRybV9tYXN0ZXJfcmVsZWFzZShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCBzdHJ1Y3QgZmlsZSAqZmlscCkKLXsKLQlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVf cHJpdiA9IGZpbHAtPnByaXZhdGVfZGF0YTsKLQotCWlmIChkcm1fbGVnYWN5X2lfaGF2ZV9od19s b2NrKGRldiwgZmlsZV9wcml2KSkgewotCQlEUk1fREVCVUcoIkZpbGUgJXAgcmVsZWFzZWQsIGZy ZWVpbmcgbG9jayBmb3IgY29udGV4dCAlZFxuIiwKLQkJCSAgZmlscCwgX0RSTV9MT0NLSU5HX0NP TlRFWFQoZmlsZV9wcml2LT5tYXN0ZXItPmxvY2suaHdfbG9jay0+bG9jaykpOwotCQlkcm1fbGVn YWN5X2xvY2tfZnJlZSgmZmlsZV9wcml2LT5tYXN0ZXItPmxvY2ssCi0JCQkJICAgICBfRFJNX0xP Q0tJTkdfQ09OVEVYVChmaWxlX3ByaXYtPm1hc3Rlci0+bG9jay5od19sb2NrLT5sb2NrKSk7Ci0J fQotfQotCiBzdGF0aWMgdm9pZCBkcm1fZXZlbnRzX3JlbGVhc2Uoc3RydWN0IGRybV9maWxlICpm aWxlX3ByaXYpCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGZpbGVfcHJpdi0+bWlub3It PmRldjsKQEAgLTQ2OCw5ICs0NTYsOCBAQCBpbnQgZHJtX3JlbGVhc2Uoc3RydWN0IGlub2RlICpp bm9kZSwgc3RydWN0IGZpbGUgKmZpbHApCiAJCSAgKGxvbmcpb2xkX2VuY29kZV9kZXYoZmlsZV9w cml2LT5taW5vci0+a2Rldi0+ZGV2dCksCiAJCSAgZGV2LT5vcGVuX2NvdW50KTsKIAotCS8qIGlm IHRoZSBtYXN0ZXIgaGFzIGdvbmUgYXdheSB3ZSBjYW4ndCBkbyBhbnl0aGluZyB3aXRoIHRoZSBs b2NrICovCi0JaWYgKGZpbGVfcHJpdi0+bWlub3ItPm1hc3RlcikKLQkJZHJtX21hc3Rlcl9yZWxl YXNlKGRldiwgZmlscCk7CisJaWYgKCFkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVS X01PREVTRVQpKQorCQlkcm1fbGVnYWN5X2xvY2tfcmVsZWFzZShkZXYsIGZpbHApOwogCiAJaWYg KGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfSEFWRV9ETUEpKQogCQlkcm1fbGVn YWN5X3JlY2xhaW1fYnVmZmVycyhkZXYsIGZpbGVfcHJpdik7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vZHJtX2xlZ2FjeS5oIGIvZHJpdmVycy9ncHUvZHJtL2RybV9sZWdhY3kuaAppbmRl eCBkM2I2ZWUzNTdhMmIuLmM2ZjQyMmU4NzlkZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2RybV9sZWdhY3kuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2xlZ2FjeS5oCkBAIC04OCwx NCArODgsMTAgQEAgc3RydWN0IGRybV9hZ3BfbWVtIHsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGhlYWQ7 CiB9OwogCi0vKgotICogR2VuZXJpYyBVc2Vyc3BhY2UgTG9ja2luZy1BUEkKLSAqLwotCi1pbnQg ZHJtX2xlZ2FjeV9pX2hhdmVfaHdfbG9jayhzdHJ1Y3QgZHJtX2RldmljZSAqZCwgc3RydWN0IGRy bV9maWxlICpmKTsKKy8qIGRybV9sb2NrLmMgKi8KIGludCBkcm1fbGVnYWN5X2xvY2soc3RydWN0 IGRybV9kZXZpY2UgKmQsIHZvaWQgKnYsIHN0cnVjdCBkcm1fZmlsZSAqZik7CiBpbnQgZHJtX2xl Z2FjeV91bmxvY2soc3RydWN0IGRybV9kZXZpY2UgKmQsIHZvaWQgKnYsIHN0cnVjdCBkcm1fZmls ZSAqZik7Ci1pbnQgZHJtX2xlZ2FjeV9sb2NrX2ZyZWUoc3RydWN0IGRybV9sb2NrX2RhdGEgKmxv Y2ssIHVuc2lnbmVkIGludCBjdHgpOwordm9pZCBkcm1fbGVnYWN5X2xvY2tfcmVsZWFzZShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZmlsZSAqZmlscCk7CiAKIC8qIERNQSBzdXBwb3J0 ICovCiBpbnQgZHJtX2xlZ2FjeV9kbWFfc2V0dXAoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2xvY2suYyBiL2RyaXZlcnMvZ3B1L2RybS9k cm1fbG9jay5jCmluZGV4IGRhYTJmZjEyMTAxYi4uMGZiOGY5ZTczNDg2IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vZHJtX2xvY2suYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2xvY2su YwpAQCAtNDEsNiArNDEsMTEwIEBACiBzdGF0aWMgaW50IGRybV9sb2NrX3Rha2Uoc3RydWN0IGRy bV9sb2NrX2RhdGEgKmxvY2tfZGF0YSwgdW5zaWduZWQgaW50IGNvbnRleHQpOwogCiAvKioKKyAq IFRha2UgdGhlIGhlYXZ5d2VpZ2h0IGxvY2suCisgKgorICogXHBhcmFtIGxvY2sgbG9jayBwb2lu dGVyLgorICogXHBhcmFtIGNvbnRleHQgbG9ja2luZyBjb250ZXh0LgorICogXHJldHVybiBvbmUg aWYgdGhlIGxvY2sgaXMgaGVsZCwgb3IgemVybyBvdGhlcndpc2UuCisgKgorICogQXR0ZW1wdCB0 byBtYXJrIHRoZSBsb2NrIGFzIGhlbGQgYnkgdGhlIGdpdmVuIGNvbnRleHQsIHZpYSB0aGUgXHAg Y21weGNoZyBpbnN0cnVjdGlvbi4KKyAqLworc3RhdGljCitpbnQgZHJtX2xvY2tfdGFrZShzdHJ1 Y3QgZHJtX2xvY2tfZGF0YSAqbG9ja19kYXRhLAorCQkgIHVuc2lnbmVkIGludCBjb250ZXh0KQor eworCXVuc2lnbmVkIGludCBvbGQsIG5ldywgcHJldjsKKwl2b2xhdGlsZSB1bnNpZ25lZCBpbnQg KmxvY2sgPSAmbG9ja19kYXRhLT5od19sb2NrLT5sb2NrOworCisJc3Bpbl9sb2NrX2JoKCZsb2Nr X2RhdGEtPnNwaW5sb2NrKTsKKwlkbyB7CisJCW9sZCA9ICpsb2NrOworCQlpZiAob2xkICYgX0RS TV9MT0NLX0hFTEQpCisJCQluZXcgPSBvbGQgfCBfRFJNX0xPQ0tfQ09OVDsKKwkJZWxzZSB7CisJ CQluZXcgPSBjb250ZXh0IHwgX0RSTV9MT0NLX0hFTEQgfAorCQkJCSgobG9ja19kYXRhLT51c2Vy X3dhaXRlcnMgKyBsb2NrX2RhdGEtPmtlcm5lbF93YWl0ZXJzID4gMSkgPworCQkJCSBfRFJNX0xP Q0tfQ09OVCA6IDApOworCQl9CisJCXByZXYgPSBjbXB4Y2hnKGxvY2ssIG9sZCwgbmV3KTsKKwl9 IHdoaWxlIChwcmV2ICE9IG9sZCk7CisJc3Bpbl91bmxvY2tfYmgoJmxvY2tfZGF0YS0+c3Bpbmxv Y2spOworCisJaWYgKF9EUk1fTE9DS0lOR19DT05URVhUKG9sZCkgPT0gY29udGV4dCkgeworCQlp ZiAob2xkICYgX0RSTV9MT0NLX0hFTEQpIHsKKwkJCWlmIChjb250ZXh0ICE9IERSTV9LRVJORUxf Q09OVEVYVCkgeworCQkJCURSTV9FUlJPUigiJWQgaG9sZHMgaGVhdnl3ZWlnaHQgbG9ja1xuIiwK KwkJCQkJICBjb250ZXh0KTsKKwkJCX0KKwkJCXJldHVybiAwOworCQl9CisJfQorCisJaWYgKChf RFJNX0xPQ0tJTkdfQ09OVEVYVChuZXcpKSA9PSBjb250ZXh0ICYmIChuZXcgJiBfRFJNX0xPQ0tf SEVMRCkpIHsKKwkJLyogSGF2ZSBsb2NrICovCisJCXJldHVybiAxOworCX0KKwlyZXR1cm4gMDsK K30KKworLyoqCisgKiBUaGlzIHRha2VzIGEgbG9jayBmb3JjaWJseSBhbmQgaGFuZHMgaXQgdG8g Y29udGV4dC4JU2hvdWxkIE9OTFkgYmUgdXNlZAorICogaW5zaWRlICpfdW5sb2NrIHRvIGdpdmUg bG9jayB0byBrZXJuZWwgYmVmb3JlIGNhbGxpbmcgKl9kbWFfc2NoZWR1bGUuCisgKgorICogXHBh cmFtIGRldiBEUk0gZGV2aWNlLgorICogXHBhcmFtIGxvY2sgbG9jayBwb2ludGVyLgorICogXHBh cmFtIGNvbnRleHQgbG9ja2luZyBjb250ZXh0LgorICogXHJldHVybiBhbHdheXMgb25lLgorICoK KyAqIFJlc2V0cyB0aGUgbG9jayBmaWxlIHBvaW50ZXIuCisgKiBNYXJrcyB0aGUgbG9jayBhcyBo ZWxkIGJ5IHRoZSBnaXZlbiBjb250ZXh0LCB2aWEgdGhlIFxwIGNtcHhjaGcgaW5zdHJ1Y3Rpb24u CisgKi8KK3N0YXRpYyBpbnQgZHJtX2xvY2tfdHJhbnNmZXIoc3RydWN0IGRybV9sb2NrX2RhdGEg KmxvY2tfZGF0YSwKKwkJCSAgICAgdW5zaWduZWQgaW50IGNvbnRleHQpCit7CisJdW5zaWduZWQg aW50IG9sZCwgbmV3LCBwcmV2OworCXZvbGF0aWxlIHVuc2lnbmVkIGludCAqbG9jayA9ICZsb2Nr X2RhdGEtPmh3X2xvY2stPmxvY2s7CisKKwlsb2NrX2RhdGEtPmZpbGVfcHJpdiA9IE5VTEw7CisJ ZG8geworCQlvbGQgPSAqbG9jazsKKwkJbmV3ID0gY29udGV4dCB8IF9EUk1fTE9DS19IRUxEOwor CQlwcmV2ID0gY21weGNoZyhsb2NrLCBvbGQsIG5ldyk7CisJfSB3aGlsZSAocHJldiAhPSBvbGQp OworCXJldHVybiAxOworfQorCitzdGF0aWMgaW50IGRybV9sZWdhY3lfbG9ja19mcmVlKHN0cnVj dCBkcm1fbG9ja19kYXRhICpsb2NrX2RhdGEsCisJCQkJdW5zaWduZWQgaW50IGNvbnRleHQpCit7 CisJdW5zaWduZWQgaW50IG9sZCwgbmV3LCBwcmV2OworCXZvbGF0aWxlIHVuc2lnbmVkIGludCAq bG9jayA9ICZsb2NrX2RhdGEtPmh3X2xvY2stPmxvY2s7CisKKwlzcGluX2xvY2tfYmgoJmxvY2tf ZGF0YS0+c3BpbmxvY2spOworCWlmIChsb2NrX2RhdGEtPmtlcm5lbF93YWl0ZXJzICE9IDApIHsK KwkJZHJtX2xvY2tfdHJhbnNmZXIobG9ja19kYXRhLCAwKTsKKwkJbG9ja19kYXRhLT5pZGxlX2hh c19sb2NrID0gMTsKKwkJc3Bpbl91bmxvY2tfYmgoJmxvY2tfZGF0YS0+c3BpbmxvY2spOworCQly ZXR1cm4gMTsKKwl9CisJc3Bpbl91bmxvY2tfYmgoJmxvY2tfZGF0YS0+c3BpbmxvY2spOworCisJ ZG8geworCQlvbGQgPSAqbG9jazsKKwkJbmV3ID0gX0RSTV9MT0NLSU5HX0NPTlRFWFQob2xkKTsK KwkJcHJldiA9IGNtcHhjaGcobG9jaywgb2xkLCBuZXcpOworCX0gd2hpbGUgKHByZXYgIT0gb2xk KTsKKworCWlmIChfRFJNX0xPQ0tfSVNfSEVMRChvbGQpICYmIF9EUk1fTE9DS0lOR19DT05URVhU KG9sZCkgIT0gY29udGV4dCkgeworCQlEUk1fRVJST1IoIiVkIGZyZWVkIGhlYXZ5d2VpZ2h0IGxv Y2sgaGVsZCBieSAlZFxuIiwKKwkJCSAgY29udGV4dCwgX0RSTV9MT0NLSU5HX0NPTlRFWFQob2xk KSk7CisJCXJldHVybiAxOworCX0KKwl3YWtlX3VwX2ludGVycnVwdGlibGUoJmxvY2tfZGF0YS0+ bG9ja19xdWV1ZSk7CisJcmV0dXJuIDA7Cit9CisKKy8qKgogICogTG9jayBpb2N0bC4KICAqCiAg KiBccGFyYW0gaW5vZGUgZGV2aWNlIGlub2RlLgpAQCAtMTY1LDEyMCArMjY5LDYgQEAgaW50IGRy bV9sZWdhY3lfdW5sb2NrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIHN0cnVj dCBkcm1fZmlsZSAqZmlsZV8KIH0KIAogLyoqCi0gKiBUYWtlIHRoZSBoZWF2eXdlaWdodCBsb2Nr LgotICoKLSAqIFxwYXJhbSBsb2NrIGxvY2sgcG9pbnRlci4KLSAqIFxwYXJhbSBjb250ZXh0IGxv Y2tpbmcgY29udGV4dC4KLSAqIFxyZXR1cm4gb25lIGlmIHRoZSBsb2NrIGlzIGhlbGQsIG9yIHpl cm8gb3RoZXJ3aXNlLgotICoKLSAqIEF0dGVtcHQgdG8gbWFyayB0aGUgbG9jayBhcyBoZWxkIGJ5 IHRoZSBnaXZlbiBjb250ZXh0LCB2aWEgdGhlIFxwIGNtcHhjaGcgaW5zdHJ1Y3Rpb24uCi0gKi8K LXN0YXRpYwotaW50IGRybV9sb2NrX3Rha2Uoc3RydWN0IGRybV9sb2NrX2RhdGEgKmxvY2tfZGF0 YSwKLQkJICB1bnNpZ25lZCBpbnQgY29udGV4dCkKLXsKLQl1bnNpZ25lZCBpbnQgb2xkLCBuZXcs IHByZXY7Ci0Jdm9sYXRpbGUgdW5zaWduZWQgaW50ICpsb2NrID0gJmxvY2tfZGF0YS0+aHdfbG9j ay0+bG9jazsKLQotCXNwaW5fbG9ja19iaCgmbG9ja19kYXRhLT5zcGlubG9jayk7Ci0JZG8gewot CQlvbGQgPSAqbG9jazsKLQkJaWYgKG9sZCAmIF9EUk1fTE9DS19IRUxEKQotCQkJbmV3ID0gb2xk IHwgX0RSTV9MT0NLX0NPTlQ7Ci0JCWVsc2UgewotCQkJbmV3ID0gY29udGV4dCB8IF9EUk1fTE9D S19IRUxEIHwKLQkJCQkoKGxvY2tfZGF0YS0+dXNlcl93YWl0ZXJzICsgbG9ja19kYXRhLT5rZXJu ZWxfd2FpdGVycyA+IDEpID8KLQkJCQkgX0RSTV9MT0NLX0NPTlQgOiAwKTsKLQkJfQotCQlwcmV2 ID0gY21weGNoZyhsb2NrLCBvbGQsIG5ldyk7Ci0JfSB3aGlsZSAocHJldiAhPSBvbGQpOwotCXNw aW5fdW5sb2NrX2JoKCZsb2NrX2RhdGEtPnNwaW5sb2NrKTsKLQotCWlmIChfRFJNX0xPQ0tJTkdf Q09OVEVYVChvbGQpID09IGNvbnRleHQpIHsKLQkJaWYgKG9sZCAmIF9EUk1fTE9DS19IRUxEKSB7 Ci0JCQlpZiAoY29udGV4dCAhPSBEUk1fS0VSTkVMX0NPTlRFWFQpIHsKLQkJCQlEUk1fRVJST1Io IiVkIGhvbGRzIGhlYXZ5d2VpZ2h0IGxvY2tcbiIsCi0JCQkJCSAgY29udGV4dCk7Ci0JCQl9Ci0J CQlyZXR1cm4gMDsKLQkJfQotCX0KLQotCWlmICgoX0RSTV9MT0NLSU5HX0NPTlRFWFQobmV3KSkg PT0gY29udGV4dCAmJiAobmV3ICYgX0RSTV9MT0NLX0hFTEQpKSB7Ci0JCS8qIEhhdmUgbG9jayAq LwotCQlyZXR1cm4gMTsKLQl9Ci0JcmV0dXJuIDA7Ci19Ci0KLS8qKgotICogVGhpcyB0YWtlcyBh IGxvY2sgZm9yY2libHkgYW5kIGhhbmRzIGl0IHRvIGNvbnRleHQuCVNob3VsZCBPTkxZIGJlIHVz ZWQKLSAqIGluc2lkZSAqX3VubG9jayB0byBnaXZlIGxvY2sgdG8ga2VybmVsIGJlZm9yZSBjYWxs aW5nICpfZG1hX3NjaGVkdWxlLgotICoKLSAqIFxwYXJhbSBkZXYgRFJNIGRldmljZS4KLSAqIFxw YXJhbSBsb2NrIGxvY2sgcG9pbnRlci4KLSAqIFxwYXJhbSBjb250ZXh0IGxvY2tpbmcgY29udGV4 dC4KLSAqIFxyZXR1cm4gYWx3YXlzIG9uZS4KLSAqCi0gKiBSZXNldHMgdGhlIGxvY2sgZmlsZSBw b2ludGVyLgotICogTWFya3MgdGhlIGxvY2sgYXMgaGVsZCBieSB0aGUgZ2l2ZW4gY29udGV4dCwg dmlhIHRoZSBccCBjbXB4Y2hnIGluc3RydWN0aW9uLgotICovCi1zdGF0aWMgaW50IGRybV9sb2Nr X3RyYW5zZmVyKHN0cnVjdCBkcm1fbG9ja19kYXRhICpsb2NrX2RhdGEsCi0JCQkgICAgIHVuc2ln bmVkIGludCBjb250ZXh0KQotewotCXVuc2lnbmVkIGludCBvbGQsIG5ldywgcHJldjsKLQl2b2xh dGlsZSB1bnNpZ25lZCBpbnQgKmxvY2sgPSAmbG9ja19kYXRhLT5od19sb2NrLT5sb2NrOwotCi0J bG9ja19kYXRhLT5maWxlX3ByaXYgPSBOVUxMOwotCWRvIHsKLQkJb2xkID0gKmxvY2s7Ci0JCW5l dyA9IGNvbnRleHQgfCBfRFJNX0xPQ0tfSEVMRDsKLQkJcHJldiA9IGNtcHhjaGcobG9jaywgb2xk LCBuZXcpOwotCX0gd2hpbGUgKHByZXYgIT0gb2xkKTsKLQlyZXR1cm4gMTsKLX0KLQotLyoqCi0g KiBGcmVlIGxvY2suCi0gKgotICogXHBhcmFtIGRldiBEUk0gZGV2aWNlLgotICogXHBhcmFtIGxv Y2sgbG9jay4KLSAqIFxwYXJhbSBjb250ZXh0IGNvbnRleHQuCi0gKgotICogUmVzZXRzIHRoZSBs b2NrIGZpbGUgcG9pbnRlci4KLSAqIE1hcmtzIHRoZSBsb2NrIGFzIG5vdCBoZWxkLCB2aWEgdGhl IFxwIGNtcHhjaGcgaW5zdHJ1Y3Rpb24uIFdha2VzIGFueSB0YXNrCi0gKiB3YWl0aW5nIG9uIHRo ZSBsb2NrIHF1ZXVlLgotICovCi1pbnQgZHJtX2xlZ2FjeV9sb2NrX2ZyZWUoc3RydWN0IGRybV9s b2NrX2RhdGEgKmxvY2tfZGF0YSwgdW5zaWduZWQgaW50IGNvbnRleHQpCi17Ci0JdW5zaWduZWQg aW50IG9sZCwgbmV3LCBwcmV2OwotCXZvbGF0aWxlIHVuc2lnbmVkIGludCAqbG9jayA9ICZsb2Nr X2RhdGEtPmh3X2xvY2stPmxvY2s7Ci0KLQlzcGluX2xvY2tfYmgoJmxvY2tfZGF0YS0+c3Bpbmxv Y2spOwotCWlmIChsb2NrX2RhdGEtPmtlcm5lbF93YWl0ZXJzICE9IDApIHsKLQkJZHJtX2xvY2tf dHJhbnNmZXIobG9ja19kYXRhLCAwKTsKLQkJbG9ja19kYXRhLT5pZGxlX2hhc19sb2NrID0gMTsK LQkJc3Bpbl91bmxvY2tfYmgoJmxvY2tfZGF0YS0+c3BpbmxvY2spOwotCQlyZXR1cm4gMTsKLQl9 Ci0Jc3Bpbl91bmxvY2tfYmgoJmxvY2tfZGF0YS0+c3BpbmxvY2spOwotCi0JZG8gewotCQlvbGQg PSAqbG9jazsKLQkJbmV3ID0gX0RSTV9MT0NLSU5HX0NPTlRFWFQob2xkKTsKLQkJcHJldiA9IGNt cHhjaGcobG9jaywgb2xkLCBuZXcpOwotCX0gd2hpbGUgKHByZXYgIT0gb2xkKTsKLQotCWlmIChf RFJNX0xPQ0tfSVNfSEVMRChvbGQpICYmIF9EUk1fTE9DS0lOR19DT05URVhUKG9sZCkgIT0gY29u dGV4dCkgewotCQlEUk1fRVJST1IoIiVkIGZyZWVkIGhlYXZ5d2VpZ2h0IGxvY2sgaGVsZCBieSAl ZFxuIiwKLQkJCSAgY29udGV4dCwgX0RSTV9MT0NLSU5HX0NPTlRFWFQob2xkKSk7Ci0JCXJldHVy biAxOwotCX0KLQl3YWtlX3VwX2ludGVycnVwdGlibGUoJmxvY2tfZGF0YS0+bG9ja19xdWV1ZSk7 Ci0JcmV0dXJuIDA7Ci19Ci0KLS8qKgogICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIGltbWVkaWF0 ZWx5IGFuZCB0YWtlcyB0aGUgaHcgbG9jawogICogd2l0aCB0aGUga2VybmVsIGNvbnRleHQgaWYg aXQgaXMgZnJlZSwgb3RoZXJ3aXNlIGl0IGdldHMgdGhlIGhpZ2hlc3QgcHJpb3JpdHkgd2hlbiBh bmQgaWYKICAqIGl0IGlzIGV2ZW50dWFsbHkgcmVsZWFzZWQuCkBAIC0zMzAsMTEgKzMyMCwyNyBA QCB2b2lkIGRybV9sZWdhY3lfaWRsZWxvY2tfcmVsZWFzZShzdHJ1Y3QgZHJtX2xvY2tfZGF0YSAq bG9ja19kYXRhKQogfQogRVhQT1JUX1NZTUJPTChkcm1fbGVnYWN5X2lkbGVsb2NrX3JlbGVhc2Up OwogCi1pbnQgZHJtX2xlZ2FjeV9pX2hhdmVfaHdfbG9jayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAotCQkJICAgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpCitzdGF0aWMgaW50IGRybV9s ZWdhY3lfaV9oYXZlX2h3X2xvY2soc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCQkgICAgIHN0 cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KQogewogCXN0cnVjdCBkcm1fbWFzdGVyICptYXN0ZXIg PSBmaWxlX3ByaXYtPm1hc3RlcjsKIAlyZXR1cm4gKGZpbGVfcHJpdi0+bG9ja19jb3VudCAmJiBt YXN0ZXItPmxvY2suaHdfbG9jayAmJgogCQlfRFJNX0xPQ0tfSVNfSEVMRChtYXN0ZXItPmxvY2su aHdfbG9jay0+bG9jaykgJiYKIAkJbWFzdGVyLT5sb2NrLmZpbGVfcHJpdiA9PSBmaWxlX3ByaXYp OwogfQorCit2b2lkIGRybV9sZWdhY3lfbG9ja19yZWxlYXNlKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHN0cnVjdCBmaWxlICpmaWxwKQoreworCXN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2ID0g ZmlscC0+cHJpdmF0ZV9kYXRhOworCisJLyogaWYgdGhlIG1hc3RlciBoYXMgZ29uZSBhd2F5IHdl IGNhbid0IGRvIGFueXRoaW5nIHdpdGggdGhlIGxvY2sgKi8KKwlpZiAoIWZpbGVfcHJpdi0+bWlu b3ItPm1hc3RlcikKKwkJcmV0dXJuOworCisJaWYgKGRybV9sZWdhY3lfaV9oYXZlX2h3X2xvY2so ZGV2LCBmaWxlX3ByaXYpKSB7CisJCURSTV9ERUJVRygiRmlsZSAlcCByZWxlYXNlZCwgZnJlZWlu ZyBsb2NrIGZvciBjb250ZXh0ICVkXG4iLAorCQkJICBmaWxwLCBfRFJNX0xPQ0tJTkdfQ09OVEVY VChmaWxlX3ByaXYtPm1hc3Rlci0+bG9jay5od19sb2NrLT5sb2NrKSk7CisJCWRybV9sZWdhY3lf bG9ja19mcmVlKCZmaWxlX3ByaXYtPm1hc3Rlci0+bG9jaywKKwkJCQkgICAgIF9EUk1fTE9DS0lO R19DT05URVhUKGZpbGVfcHJpdi0+bWFzdGVyLT5sb2NrLmh3X2xvY2stPmxvY2spKTsKKwl9Cit9 Ci0tIAoyLjguMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==