From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 10BF0CD6E56 for ; Sun, 31 May 2026 20:19:31 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 841AE10E539; Sun, 31 May 2026 20:19:27 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=igalia.com header.i=@igalia.com header.b="CrONobff"; dkim-atps=neutral Received: from fanzine2.igalia.com (fanzine2.igalia.com [213.97.179.56]) by gabe.freedesktop.org (Postfix) with ESMTPS id B095C10E536 for ; Sun, 31 May 2026 20:19:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=Cc:To:In-Reply-To:References:Message-Id: Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From:Sender: Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender :Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=E0rjxWmoNcbNKwHu4CgukgacZoEKXMHSddfZ+0ZXRUE=; b=CrONobffm+Y+kr5n10+EYfWqpc qfBRfUWtQ8GEs1Fl1oCndawFa/gbA4njUanVvHx+6hpZjrVv5/S5kb3CCQiQmfXLX/NxIF8yLBHKp kR0F2OscgiqiOFi3y347/t4t7OQhrRKn2olN5ux970Xfrjy776PWMnkMt49BfW1Qz9dfh338VAWO2 4R/R5JZck/i9cef8BsLRprt8/iQ4GqHs+2732jHH1yllmLEwXyM4/3wLIsdPdPivCfLk/qmxrHYY4 aod7WSQCek91dB61zrBdUXzHRgra5/Eh56Oj4ZTh4sVlXJdDmQTA/WSl0cXm7Fo3b0SWXEXpkZiUb W1yIvalw==; Received: from [189.7.87.67] (helo=[10.0.0.1]) by fanzine2.igalia.com with esmtpsa (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim) id 1wTmcy-00Agcp-3g; Sun, 31 May 2026 22:19:20 +0200 From: =?utf-8?q?Ma=C3=ADra_Canal?= Date: Sun, 31 May 2026 17:18:56 -0300 Subject: [PATCH v2 2/4] drm/v3d: Refactor perfmon locking MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Message-Id: <20260531-v3d-perfmon-lifetime-v2-2-60ed4485a203@igalia.com> References: <20260531-v3d-perfmon-lifetime-v2-0-60ed4485a203@igalia.com> In-Reply-To: <20260531-v3d-perfmon-lifetime-v2-0-60ed4485a203@igalia.com> To: Melissa Wen , Iago Toral , Tvrtko Ursulin , David Airlie , Simona Vetter Cc: kernel-dev@igalia.com, dri-devel@lists.freedesktop.org, =?utf-8?q?Ma=C3=ADra_Canal?= X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=16864; i=mcanal@igalia.com; h=from:subject:message-id; bh=AweGswWReDGFITS1RhNNNm7Es16FFx24bgi0yySqUUg=; b=owEBbQGS/pANAwAKAT/zDop2iPqqAcsmYgBqHJe92Q6hO2Wt3M1DP3FRcCrUILzkogHJlpZnu Tf4Wvt0AnqJATMEAAEKAB0WIQT45F19ARZ3Bymmd9E/8w6Kdoj6qgUCahyXvQAKCRA/8w6Kdoj6 qpwuB/9+0/PRseSZ74eTBRo/bnS3wDHlT4MDDeJMJdSA6J37Tqzbj2W3UlSgk6j4wXp0M25HNhY k0Fj/Lk2iWnuR5wJU/WOJmwkFxrPWWHQabClirKKm2JzZ32A3iaVhuIQ5aojqialvAHovMBA8aQ LShRPUvbcn8hn0nVYm0gsfjbGzJ3umEGdFWuKmZ3WZVMJzYrtusqF/ntkF4WesASepI/aHI7bvq h0PG5B0/2jtE0IAvqGEx7GjC7w4gjWGrtsEUwk07HVTuuqZ/b0S0DuTFcZDYrMp/nRbodNBk5tW Ca12eC3Xg+yuD+/nq84NtXXY/ASR6Y9pIQhosSdr5QhpZhq2 X-Developer-Key: i=mcanal@igalia.com; a=openpgp; fpr=F8E45D7D0116770729A677D13FF30E8A7688FAAA X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" djNkIGV4cG9zZXMgYSBzaW5nbGUgc2V0IG9mIHBlcmZvcm1hbmNlIGNvdW50ZXJzIHBlciBjb3Jl LCBzbyBhdCBhbnkKbW9tZW50IGF0IG1vc3Qgb25lIHBlcmZvcm1hbmNlIG1vbml0b3IgY2FuIGJl IHByb2dyYW1tZWQgaW4gSFcuIEluCnNvZnR3YXJlLCB0aGlzIHNpbmdsZXRvbiBpcyByZXByZXNl bnRlZCBieSB2M2RfZGV2LT5hY3RpdmVfcGVyZm1vbiwgYnV0CnVudGlsIG5vdyBub3RoaW5nIGFj dHVhbGx5IHNlcmlhbGl6ZWQgYWNjZXNzIHRvIGl0OiBzY2hlZHVsZXIgY2FsbGJhY2tzLAp0aGUg R1BVLXJlc2V0IHBhdGgsIGFuZCBwZXJmbW9uIGlvY3RscyBhbGwgcmVhZCBhbmQgd3JvdGUgdGhh dCBmaWVsZApsb2NrLWZyZWUuCgpUaGUgZXhpc3RlbmNlIG9mIHYzZF9wZXJmbW9uLT5sb2NrIG11 dGV4IGRpZCBub3QgY2xvc2UgdGhlIGdhcC4gSXQKc2VyaWFsaXplZCBzdGFydC9zdG9wIG9mICpv bmUqIHBlcmZtb24gb2JqZWN0IGFnYWluc3QgaXRzZWxmLCBidXQgdGhlCmludmFyaWFudCB0aGF0 IG5lZWRzIHByb3RlY3Rpb24gaXMgZGV2aWNlLXdpZGU6IHRoZXJlIGNhbiBiZSBleGFjdGx5IG9u ZQphY3RpdmUgcGVyZm1vbiBhdCBhbnkgbW9tZW50IGluIEhXLiBUd28gdGhyZWFkcyBhY3Rpbmcg b24gZGlmZmVyZW50CnBlcmZtb24gb2JqZWN0cyBjb3VsZCByYWNlIHRocm91Z2ggdjNkX2Rldi0+ YWN0aXZlX3BlcmZtb24gYW5kIHRoZQpjb3VudGVyIHJlZ2lzdGVycywgbGVhdmluZyBzb2Z0d2Fy ZSBhbmQgSFcgb3V0IG9mIHN5bmMuCgpUaGlzIGNvbW1pdCBtb3ZlcyB0aGUgbG9ja2luZyB0byB3 aGVyZSB0aGUgaW52YXJpYW50IGFjdHVhbGx5IGxpdmVzLiBHcm91cAp0aGUgYWN0aXZlIHBlcmZt b24gcG9pbnRlciB3aXRoIGEgZGV2aWNlLXdpZGUgc3BpbmxvY2sgYW5kIHJvdXRlIGV2ZXJ5CnN0 YXRlIHRyYW5zaXRpb24gKGpvYiBzdGFydCwgam9iIGNvbXBsZXRpb24sIHNldCBnbG9iYWwsIHJl c2V0LApzdXNwZW5kL3Jlc3VtZSwgZGVzdHJ1Y3Rpb24pIHRocm91Z2ggYSBzbWFsbCBzZXQgb2Yg bG9ja2VkIGVudHJ5IHBvaW50cwp0aGF0IGFyZSB0aGUgb25seSBtdXRhdG9ycyBvZiB0aGUgSFcg Y291bnRlcnMuCgpTb21lIGRlc2lnbiBpbXByb3ZlbWVudHMgbmVlZGVkIHRvIGJlIG1hZGUgZm9y IHRoZSByZWZhY3RvcjoKCiAgMS4gU3RvcCB0aGUgcGVyZm1vbiBmcm9tIHRoZSBJUlEgaGFuZGxl ciBhdCBqb2ItY29tcGxldGlvbiB0aW1lICh0aGUKICAgICBuYXR1cmFsIGJvdW5kYXJ5IGZvciAi YWN0aXZlIHBlcmZtb24gZm9sbG93cyB0aGUgYWN0aXZlIGpvYiIpLiBUaGlzCiAgICAgcmVxdWly ZWQgYSBjaGFuZ2UgZnJvbSBhIG11dGV4IHRvIGEgc3BpbmxvY2suIFRoaXMgc29sdmVzIGFub3Ro ZXIKICAgICBpc3N1ZSBvZiB0aGUgZXhpc3RpbmcgZGVzaWduOiBwZXJmbW9uIHN0YXJ0L3N0b3Ag d2FzIGV4Y2x1c2l2ZWx5CiAgICAgYXR0YWNoZWQgdG8gcnVuX2pvYigpIGNhbGxiYWNrcywgd2hp Y2ggbWVhbnMgdGhhdCBpZiBub3RoaW5nIHdhcwogICAgIGZ1cnRoZXIgcXVldWVkIHVwLCBhIHBl cmZtb24gd291bGQgbmV2ZXIgYWN0dWFsbHkgYmUgc3RvcHBlZC4KCiAgMi4gUGF1c2UvcmVzdW1l IHRoZSBIVyBjb3VudGVycyBhY3Jvc3MgcnVudGltZS1QTSB0cmFuc2l0aW9ucyB3aXRob3V0CiAg ICAgZHJvcHBpbmcgdGhlIHNvZnR3YXJlIHJlZmVyZW5jZS4gVGhpcyBwcmVzZXJ2ZXMgdGhlIHBl cmZtb24gc3RhdGUKICAgICB3aGlsZSB0aGUgZGV2aWNlIGlzIGlkbGUuCgogIDMuIE1vdmUgdGhl IGdsb2JhbCBwZXJmbW9uIGxpZmVjeWNsZSBtYW5hZ2VtZW50IHRvIHRoZSBzZXRfZ2xvYmFsCiAg ICAgSU9DVEwuIFRoaXMgc2ltcGxpZmllcyB0aGUgbG9naWMgaW4gdjNkX3BlcmZtb25fc3RhcnQo KSBhbmQKICAgICB2M2RfcGVyZm1vbl9zdG9wKCksIGFzIHRoZXJlIGlzIG5vIG5lZWQgdG8gYWx3 YXlzIGNoZWNrIGlmIHRoZQogICAgIGdsb2JhbCBwZXJmbW9uIGlzIGVuYWJsZWQuCgogIDQuIHYz ZF9wZXJmbW9uX2dldF92YWx1ZXNfaW9jdGwoKSBkb2Vzbid0IHN0b3AgdGhlIHBlcmZtb24gd2hl bgogICAgIGNhcHR1cmluZyB0aGUgdmFsdWVzLiBBbGwgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgaXMg aGFuZGxlZCBieSB0aGUKICAgICBqb2IgKGZvciBwZXItam9iIHBlcmZtb25zKSBvciB0aGUgc2V0 X2dsb2JhbCBJT0NUTCAoZm9yIGdsb2JhbAogICAgIHBlcmZtb25zKS4KClNpZ25lZC1vZmYtYnk6 IE1hw61yYSBDYW5hbCA8bWNhbmFsQGlnYWxpYS5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL3Yz ZC92M2RfZHJ2LmggICAgIHwgIDE3ICsrLS0KIGRyaXZlcnMvZ3B1L2RybS92M2QvdjNkX2dlbS5j ICAgICB8ICAgNCArLQogZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfaXJxLmMgICAgIHwgICA3ICst CiBkcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9wZXJmbW9uLmMgfCAxODMgKysrKysrKysrKysrKysr KysrKysrKysrKysrLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS92M2QvdjNkX3Bvd2VyLmMg ICB8ICAgNCArCiBkcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9zY2hlZC5jICAgfCAgMjYgKystLS0t CiBkcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9zdWJtaXQuYyAgfCAgIDYgKy0KIDcgZmlsZXMgY2hh bmdlZCwgMTY1IGluc2VydGlvbnMoKyksIDgyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS92M2QvdjNkX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfZHJ2 LmgKaW5kZXggMDcxZDkxOWZlODYwLi41MTQ4NmFmNjhjZjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS92M2QvdjNkX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX2Rydi5o CkBAIC04Niw5ICs4Niw2IEBAIHN0cnVjdCB2M2RfcGVyZm1vbiB7CiAJICovCiAJcmVmY291bnRf dCByZWZjbnQ7CiAKLQkvKiBQcm90ZWN0cyBwZXJmbW9uIHN0b3AsIGFzIGl0IGNhbiBiZSBpbnZv a2VkIGZyb20gbXVsdGlwbGUgcGxhY2VzLiAqLwotCXN0cnVjdCBtdXRleCBsb2NrOwotCiAJLyog TnVtYmVyIG9mIGNvdW50ZXJzIGFjdGl2YXRlZCBpbiB0aGlzIHBlcmZtb24gaW5zdGFuY2UKIAkg KiAoc2hvdWxkIGJlIGxlc3MgdGhhbiBEUk1fVjNEX01BWF9QRVJGX0NPVU5URVJTKS4KIAkgKi8K QEAgLTE3MCw4ICsxNjcsMTQgQEAgc3RydWN0IHYzZF9kZXYgewogCiAJc3RydWN0IHYzZF9xdWV1 ZV9zdGF0ZSBxdWV1ZVtWM0RfTUFYX1FVRVVFU107CiAKLQkvKiBVc2VkIHRvIHRyYWNrIHRoZSBh Y3RpdmUgcGVyZm1vbiBpZiBhbnkuICovCi0Jc3RydWN0IHYzZF9wZXJmbW9uICphY3RpdmVfcGVy Zm1vbjsKKwkvKiBUcmFja3MgdGhlIHBlcmZvcm1hbmNlIG1vbml0b3Igc3RhdGUuICovCisJc3Ry dWN0IHsKKwkJLyogUHJvdGVjdHMgQGFjdGl2ZS4gKi8KKwkJc3BpbmxvY2tfdCBsb2NrOworCisJ CS8qIFBlcmZtb24gY3VycmVudGx5IHByb2dyYW1tZWQgaW4gSFcgKG9yIE5VTEwgaWYgbm9uZSku ICovCisJCXN0cnVjdCB2M2RfcGVyZm1vbiAqYWN0aXZlOworCX0gcGVyZm1vbl9zdGF0ZTsKIAog CS8qIFByb3RlY3RzIGJvX3N0YXRzICovCiAJc3RydWN0IG11dGV4IGJvX2xvY2s7CkBAIC02NjMs NiArNjY2LDEwIEBAIHZvaWQgdjNkX3BlcmZtb25fcHV0KHN0cnVjdCB2M2RfcGVyZm1vbiAqcGVy Zm1vbik7CiB2b2lkIHYzZF9wZXJmbW9uX3N0YXJ0KHN0cnVjdCB2M2RfZGV2ICp2M2QsIHN0cnVj dCB2M2RfcGVyZm1vbiAqcGVyZm1vbik7CiB2b2lkIHYzZF9wZXJmbW9uX3N0b3Aoc3RydWN0IHYz ZF9kZXYgKnYzZCwgc3RydWN0IHYzZF9wZXJmbW9uICpwZXJmbW9uLAogCQkgICAgICBib29sIGNh cHR1cmUpOwordm9pZCB2M2RfcGVyZm1vbl9zdG9wX2xvY2tlZChzdHJ1Y3QgdjNkX2RldiAqdjNk LCBzdHJ1Y3QgdjNkX3BlcmZtb24gKnBlcmZtb24sCisJCQkgICAgIGJvb2wgY2FwdHVyZSk7Cit2 b2lkIHYzZF9wZXJmbW9uX3N1c3BlbmQoc3RydWN0IHYzZF9kZXYgKnYzZCk7Cit2b2lkIHYzZF9w ZXJmbW9uX3Jlc3VtZShzdHJ1Y3QgdjNkX2RldiAqdjNkKTsKIHN0cnVjdCB2M2RfcGVyZm1vbiAq djNkX3BlcmZtb25fZmluZChzdHJ1Y3QgdjNkX2ZpbGVfcHJpdiAqdjNkX3ByaXYsIGludCBpZCk7 CiB2b2lkIHYzZF9wZXJmbW9uX29wZW5fZmlsZShzdHJ1Y3QgdjNkX2ZpbGVfcHJpdiAqdjNkX3By aXYpOwogdm9pZCB2M2RfcGVyZm1vbl9jbG9zZV9maWxlKHN0cnVjdCB2M2RfZmlsZV9wcml2ICp2 M2RfcHJpdik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9nZW0uYyBiL2Ry aXZlcnMvZ3B1L2RybS92M2QvdjNkX2dlbS5jCmluZGV4IDFlZTNjMDM4ZDVmNi4uOTQ4N2FiN2Fj ZDAzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9nZW0uYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vdjNkL3YzZF9nZW0uYwpAQCAtMTM3LDcgKzEzNyw4IEBAIHYzZF9yZXNldChz dHJ1Y3QgdjNkX2RldiAqdjNkKQogCXYzZF9tbXVfc2V0X3BhZ2VfdGFibGUodjNkKTsKIAl2M2Rf aXJxX3Jlc2V0KHYzZCk7CiAKLQl2M2RfcGVyZm1vbl9zdG9wKHYzZCwgdjNkLT5hY3RpdmVfcGVy Zm1vbiwgZmFsc2UpOworCS8qIFJlLWFybSB0aGUgZ2xvYmFsIHBlcmZtb24gSFcgY291bnRlcnMg dGhhdCB0aGUgcmVzZXQgemVyb2VkLiAqLworCXYzZF9wZXJmbW9uX3Jlc3VtZSh2M2QpOwogCiAJ dHJhY2VfdjNkX3Jlc2V0X2VuZChkZXYpOwogfQpAQCAtMjk5LDYgKzMwMCw3IEBAIHYzZF9nZW1f aW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCX0KIAogCXNwaW5fbG9ja19pbml0KCZ2M2Qt Pm1tX2xvY2spOworCXNwaW5fbG9ja19pbml0KCZ2M2QtPnBlcmZtb25fc3RhdGUubG9jayk7CiAJ cmV0ID0gZHJtbV9tdXRleF9pbml0KGRldiwgJnYzZC0+Ym9fbG9jayk7CiAJaWYgKHJldCkKIAkJ Z290byBlcnJfc3RhdHM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9pcnEu YyBiL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX2lycS5jCmluZGV4IDc1NGE5NjliODYyYi4uNDFm Y2UxZjhmOTZjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9pcnEuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9pcnEuYwpAQCAtODcsOSArODcsMTIgQEAgdjNkX2ly cV9zaWduYWxfZmVuY2Uoc3RydWN0IHYzZF9kZXYgKnYzZCwgZW51bSB2M2RfcXVldWUgcSwKIAkJ ICAgICB2b2lkICgqdHJhY2VfaXJxKShzdHJ1Y3QgZHJtX2RldmljZSAqLCB1aW50NjRfdCkpCiB7 CiAJc3RydWN0IHYzZF9xdWV1ZV9zdGF0ZSAqcXVldWUgPSAmdjNkLT5xdWV1ZVtxXTsKLQlzdHJ1 Y3QgdjNkX2ZlbmNlICpmZW5jZSA9IHRvX3YzZF9mZW5jZShxdWV1ZS0+YWN0aXZlX2pvYi0+aXJx X2ZlbmNlKTsKKwlzdHJ1Y3QgdjNkX2pvYiAqam9iID0gcXVldWUtPmFjdGl2ZV9qb2I7CisJc3Ry dWN0IHYzZF9mZW5jZSAqZmVuY2UgPSB0b192M2RfZmVuY2Uoam9iLT5pcnFfZmVuY2UpOwogCi0J djNkX2pvYl91cGRhdGVfc3RhdHMocXVldWUtPmFjdGl2ZV9qb2IpOworCXYzZF9wZXJmbW9uX3N0 b3AodjNkLCBqb2ItPnBlcmZtb24sIHRydWUpOworCisJdjNkX2pvYl91cGRhdGVfc3RhdHMoam9i KTsKIAl0cmFjZV9pcnEoJnYzZC0+ZHJtLCBmZW5jZS0+c2Vxbm8pOwogCiAJcXVldWUtPmFjdGl2 ZV9qb2IgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfcGVyZm1v bi5jIGIvZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfcGVyZm1vbi5jCmluZGV4IDQ4YWU3NDgyNDdi ZS4uM2FkMGYwMjI3NTNjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9wZXJm bW9uLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfcGVyZm1vbi5jCkBAIC0yMTcsMjYg KzIxNywxNSBAQCB2b2lkIHYzZF9wZXJmbW9uX2dldChzdHJ1Y3QgdjNkX3BlcmZtb24gKnBlcmZt b24pCiAKIHZvaWQgdjNkX3BlcmZtb25fcHV0KHN0cnVjdCB2M2RfcGVyZm1vbiAqcGVyZm1vbikK IHsKLQlpZiAocGVyZm1vbiAmJiByZWZjb3VudF9kZWNfYW5kX3Rlc3QoJnBlcmZtb24tPnJlZmNu dCkpIHsKLQkJbXV0ZXhfZGVzdHJveSgmcGVyZm1vbi0+bG9jayk7CisJaWYgKHBlcmZtb24gJiYg cmVmY291bnRfZGVjX2FuZF90ZXN0KCZwZXJmbW9uLT5yZWZjbnQpKQogCQlrZnJlZShwZXJmbW9u KTsKLQl9CiB9CiAKLXZvaWQgdjNkX3BlcmZtb25fc3RhcnQoc3RydWN0IHYzZF9kZXYgKnYzZCwg c3RydWN0IHYzZF9wZXJmbW9uICpwZXJmbW9uKQorc3RhdGljIHZvaWQgdjNkX3BlcmZtb25faHdf c3RhcnQoc3RydWN0IHYzZF9kZXYgKnYzZCwgc3RydWN0IHYzZF9wZXJmbW9uICpwZXJmbW9uKQog eworCXU4IG5jb3VudGVycyA9IHBlcmZtb24tPm5jb3VudGVyczsKKwl1MzIgbWFzayA9IEdFTk1B U0sobmNvdW50ZXJzIC0gMSwgMCk7CiAJdW5zaWduZWQgaW50IGk7Ci0JdTMyIG1hc2s7Ci0JdTgg bmNvdW50ZXJzOwotCi0JaWYgKFdBUk5fT05fT05DRSghcGVyZm1vbiB8fCB2M2QtPmFjdGl2ZV9w ZXJmbW9uKSkKLQkJcmV0dXJuOwotCi0JaWYgKCFwbV9ydW50aW1lX2dldF9pZl9hY3RpdmUodjNk LT5kcm0uZGV2KSkKLQkJcmV0dXJuOwotCi0JbmNvdW50ZXJzID0gcGVyZm1vbi0+bmNvdW50ZXJz OwotCW1hc2sgPSBHRU5NQVNLKG5jb3VudGVycyAtIDEsIDApOwogCiAJZm9yIChpID0gMDsgaSA8 IG5jb3VudGVyczsgaSsrKSB7CiAJCXUzMiBzb3VyY2UgPSBpIC8gNDsKQEAgLTI1OCwzOSArMjQ3 LDEwNiBAQCB2b2lkIHYzZF9wZXJmbW9uX3N0YXJ0KHN0cnVjdCB2M2RfZGV2ICp2M2QsIHN0cnVj dCB2M2RfcGVyZm1vbiAqcGVyZm1vbikKIAlWM0RfQ09SRV9XUklURSgwLCBWM0RfVjRfUENUUl8w X0VOLCBtYXNrKTsKIAlWM0RfQ09SRV9XUklURSgwLCBWM0RfVjRfUENUUl8wX0NMUiwgbWFzayk7 CiAJVjNEX0NPUkVfV1JJVEUoMCwgVjNEX1BDVFJfMF9PVkVSRkxPVywgbWFzayk7Cit9CiAKLQl2 M2QtPmFjdGl2ZV9wZXJmbW9uID0gcGVyZm1vbjsKK3N0YXRpYyB2b2lkIHYzZF9wZXJmbW9uX2h3 X2NhcHR1cmUoc3RydWN0IHYzZF9kZXYgKnYzZCwgc3RydWN0IHYzZF9wZXJmbW9uICpwZXJmbW9u KQoreworCXUzMiBtYXNrID0gR0VOTUFTSyhwZXJmbW9uLT5uY291bnRlcnMgLSAxLCAwKTsKIAor CWZvciAoaW50IGkgPSAwOyBpIDwgcGVyZm1vbi0+bmNvdW50ZXJzOyBpKyspCisJCXBlcmZtb24t PnZhbHVlc1tpXSArPSBWM0RfQ09SRV9SRUFEKDAsIFYzRF9QQ1RSXzBfUENUUlgoaSkpOworCisJ VjNEX0NPUkVfV1JJVEUoMCwgVjNEX1Y0X1BDVFJfMF9DTFIsIG1hc2spOworfQorCitzdGF0aWMg dm9pZCB2M2RfcGVyZm1vbl9od19zdG9wKHN0cnVjdCB2M2RfZGV2ICp2M2QsIHN0cnVjdCB2M2Rf cGVyZm1vbiAqcGVyZm1vbiwKKwkJCQlib29sIGNhcHR1cmUpCit7CisJaWYgKGNhcHR1cmUpCisJ CXYzZF9wZXJmbW9uX2h3X2NhcHR1cmUodjNkLCBwZXJmbW9uKTsKKworCVYzRF9DT1JFX1dSSVRF KDAsIFYzRF9WNF9QQ1RSXzBfRU4sIDApOworfQorCit2b2lkIHYzZF9wZXJmbW9uX3N0YXJ0KHN0 cnVjdCB2M2RfZGV2ICp2M2QsIHN0cnVjdCB2M2RfcGVyZm1vbiAqcGVyZm1vbikKK3sKKwlndWFy ZChzcGlubG9ja19pcnFzYXZlKSgmdjNkLT5wZXJmbW9uX3N0YXRlLmxvY2spOworCisJaWYgKCFw ZXJmbW9uIHx8IHYzZC0+Z2xvYmFsX3BlcmZtb24pCisJCXJldHVybjsKKworCWlmICghcG1fcnVu dGltZV9nZXRfaWZfYWN0aXZlKHYzZC0+ZHJtLmRldikpCisJCXJldHVybjsKKworCXYzZF9wZXJm bW9uX2h3X3N0YXJ0KHYzZCwgcGVyZm1vbik7CisJdjNkLT5wZXJmbW9uX3N0YXRlLmFjdGl2ZSA9 IHBlcmZtb247CisKKwl2M2RfcG1fcnVudGltZV9wdXQodjNkKTsKK30KKworc3RhdGljIHZvaWQg djNkX3BlcmZtb25fY2FwdHVyZV9sb2NrZWQoc3RydWN0IHYzZF9kZXYgKnYzZCwKKwkJCQkgICAg ICAgc3RydWN0IHYzZF9wZXJmbW9uICpwZXJmbW9uKQoreworCWxvY2tkZXBfYXNzZXJ0X2hlbGQo JnYzZC0+cGVyZm1vbl9zdGF0ZS5sb2NrKTsKKworCWlmICghcGVyZm1vbiB8fCBwZXJmbW9uICE9 IHYzZC0+cGVyZm1vbl9zdGF0ZS5hY3RpdmUpCisJCXJldHVybjsKKworCWlmICghcG1fcnVudGlt ZV9nZXRfaWZfYWN0aXZlKHYzZC0+ZHJtLmRldikpCisJCXJldHVybjsKKworCXYzZF9wZXJmbW9u X2h3X2NhcHR1cmUodjNkLCBwZXJmbW9uKTsKKwl2M2RfcG1fcnVudGltZV9wdXQodjNkKTsKK30K Kwordm9pZCB2M2RfcGVyZm1vbl9zdG9wX2xvY2tlZChzdHJ1Y3QgdjNkX2RldiAqdjNkLCBzdHJ1 Y3QgdjNkX3BlcmZtb24gKnBlcmZtb24sCisJCQkgICAgIGJvb2wgY2FwdHVyZSkKK3sKKwlsb2Nr ZGVwX2Fzc2VydF9oZWxkKCZ2M2QtPnBlcmZtb25fc3RhdGUubG9jayk7CisKKwlpZiAoIXBlcmZt b24gfHwgcGVyZm1vbiAhPSB2M2QtPnBlcmZtb25fc3RhdGUuYWN0aXZlKQorCQlyZXR1cm47CisK Kwl2M2QtPnBlcmZtb25fc3RhdGUuYWN0aXZlID0gTlVMTDsKKworCS8qIElmIHRoZSBkZXZpY2Ug aXMgc3VzcGVuZGVkLCB0aGUgSFcgaGFzIGFscmVhZHkgc3RvcHBlZCBjb3VudGluZy4gKi8KKwlp ZiAoIXBtX3J1bnRpbWVfZ2V0X2lmX2FjdGl2ZSh2M2QtPmRybS5kZXYpKQorCQlyZXR1cm47CisK Kwl2M2RfcGVyZm1vbl9od19zdG9wKHYzZCwgcGVyZm1vbiwgY2FwdHVyZSk7CiAJdjNkX3BtX3J1 bnRpbWVfcHV0KHYzZCk7CiB9CiAKIHZvaWQgdjNkX3BlcmZtb25fc3RvcChzdHJ1Y3QgdjNkX2Rl diAqdjNkLCBzdHJ1Y3QgdjNkX3BlcmZtb24gKnBlcmZtb24sCiAJCSAgICAgIGJvb2wgY2FwdHVy ZSkKIHsKLQl1bnNpZ25lZCBpbnQgaTsKLQotCWlmICghcGVyZm1vbiB8fCAhdjNkLT5hY3RpdmVf cGVyZm1vbikKKwlpZiAoIXBlcmZtb24pCiAJCXJldHVybjsKIAotCW11dGV4X2xvY2soJnBlcmZt b24tPmxvY2spOwotCWlmIChwZXJmbW9uICE9IHYzZC0+YWN0aXZlX3BlcmZtb24pCi0JCWdvdG8g b3V0OworCWd1YXJkKHNwaW5sb2NrX2lycXNhdmUpKCZ2M2QtPnBlcmZtb25fc3RhdGUubG9jayk7 CisJdjNkX3BlcmZtb25fc3RvcF9sb2NrZWQodjNkLCBwZXJmbW9uLCBjYXB0dXJlKTsKK30KIAot CWlmICghcG1fcnVudGltZV9nZXRfaWZfYWN0aXZlKHYzZC0+ZHJtLmRldikpCi0JCWdvdG8gb3V0 X2NsZWFyOwordm9pZAordjNkX3BlcmZtb25fc3VzcGVuZChzdHJ1Y3QgdjNkX2RldiAqdjNkKQor eworCWd1YXJkKHNwaW5sb2NrX2lycXNhdmUpKCZ2M2QtPnBlcmZtb25fc3RhdGUubG9jayk7CiAK LQlpZiAoY2FwdHVyZSkKLQkJZm9yIChpID0gMDsgaSA8IHBlcmZtb24tPm5jb3VudGVyczsgaSsr KQotCQkJcGVyZm1vbi0+dmFsdWVzW2ldICs9IFYzRF9DT1JFX1JFQUQoMCwgVjNEX1BDVFJfMF9Q Q1RSWChpKSk7CisJaWYgKCF2M2QtPnBlcmZtb25fc3RhdGUuYWN0aXZlKQorCQlyZXR1cm47CiAK LQlWM0RfQ09SRV9XUklURSgwLCBWM0RfVjRfUENUUl8wX0VOLCAwKTsKKwl2M2RfcGVyZm1vbl9o d19zdG9wKHYzZCwgdjNkLT5wZXJmbW9uX3N0YXRlLmFjdGl2ZSwgdHJ1ZSk7Cit9CiAKLQl2M2Rf cG1fcnVudGltZV9wdXQodjNkKTsKK3ZvaWQKK3YzZF9wZXJmbW9uX3Jlc3VtZShzdHJ1Y3QgdjNk X2RldiAqdjNkKQoreworCWd1YXJkKHNwaW5sb2NrX2lycXNhdmUpKCZ2M2QtPnBlcmZtb25fc3Rh dGUubG9jayk7CiAKLW91dF9jbGVhcjoKLQl2M2QtPmFjdGl2ZV9wZXJmbW9uID0gTlVMTDsKLW91 dDoKLQltdXRleF91bmxvY2soJnBlcmZtb24tPmxvY2spOworCWlmICghdjNkLT5wZXJmbW9uX3N0 YXRlLmFjdGl2ZSkKKwkJcmV0dXJuOworCisJdjNkX3BlcmZtb25faHdfc3RhcnQodjNkLCB2M2Qt PnBlcmZtb25fc3RhdGUuYWN0aXZlKTsKIH0KIAogc3RydWN0IHYzZF9wZXJmbW9uICp2M2RfcGVy Zm1vbl9maW5kKHN0cnVjdCB2M2RfZmlsZV9wcml2ICp2M2RfcHJpdiwgaW50IGlkKQpAQCAtMzE2 LDE0ICszNzIsMTcgQEAgc3RhdGljIHZvaWQgdjNkX3BlcmZtb25fZGVsZXRlKHN0cnVjdCB2M2Rf ZmlsZV9wcml2ICp2M2RfcHJpdiwKIAlzdHJ1Y3QgdjNkX2RldiAqdjNkID0gdjNkX3ByaXYtPnYz ZDsKIAogCS8qIElmIHRoZSBhY3RpdmUgcGVyZm1vbiBpcyBiZWluZyBkZXN0cm95ZWQsIHN0b3Ag aXQgZmlyc3QgKi8KLQlpZiAocGVyZm1vbiA9PSB2M2QtPmFjdGl2ZV9wZXJmbW9uKQotCQl2M2Rf cGVyZm1vbl9zdG9wKHYzZCwgcGVyZm1vbiwgZmFsc2UpOworCXNjb3BlZF9ndWFyZChzcGlubG9j a19pcnFzYXZlLCAmdjNkLT5wZXJmbW9uX3N0YXRlLmxvY2spIHsKKwkJdjNkX3BlcmZtb25fc3Rv cF9sb2NrZWQodjNkLCBwZXJmbW9uLCBmYWxzZSk7CiAKLQkvKiBJZiB0aGUgZ2xvYmFsIHBlcmZt b24gaXMgYmVpbmcgZGVzdHJveWVkLCBjbGVhbiBpdCBhbmQgcmVsZWFzZQotCSAqIHRoZSByZWZl cmVuY2Ugc3Rhc2hlZCBpbiB2M2RfcGVyZm1vbl9zZXRfZ2xvYmFsX2lvY3RsKCkuCi0JICovCi0J aWYgKGNtcHhjaGcoJnYzZC0+Z2xvYmFsX3BlcmZtb24sIHBlcmZtb24sIE5VTEwpID09IHBlcmZt b24pCi0JCXYzZF9wZXJmbW9uX3B1dChwZXJmbW9uKTsKKwkJLyogSWYgdGhlIGdsb2JhbCBwZXJm bW9uIGlzIGJlaW5nIGRlc3Ryb3llZCwgY2xlYW4gaXQgYW5kIHJlbGVhc2UKKwkJICogdGhlIHJl ZmVyZW5jZSBzdGFzaGVkIGluIHYzZF9wZXJmbW9uX3NldF9nbG9iYWxfaW9jdGwoKS4KKwkJICov CisJCWlmICh2M2QtPmdsb2JhbF9wZXJmbW9uID09IHBlcmZtb24pIHsKKwkJCXYzZF9wZXJmbW9u X3B1dCh2M2QtPmdsb2JhbF9wZXJmbW9uKTsKKwkJCXYzZC0+Z2xvYmFsX3BlcmZtb24gPSBOVUxM OworCQl9CisJfQogCiAJdjNkX3BlcmZtb25fcHV0KHBlcmZtb24pOwogfQpAQCAtMzcxLDEyICs0 MzAsMTAgQEAgaW50IHYzZF9wZXJmbW9uX2NyZWF0ZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB2b2lkICpkYXRhLAogCXBlcmZtb24tPm5jb3VudGVycyA9IHJlcS0+bmNvdW50ZXJzOwog CiAJcmVmY291bnRfc2V0KCZwZXJmbW9uLT5yZWZjbnQsIDEpOwotCW11dGV4X2luaXQoJnBlcmZt b24tPmxvY2spOwogCiAJcmV0ID0geGFfYWxsb2MoJnYzZF9wcml2LT5wZXJmbW9ucywgJmlkLCBw ZXJmbW9uLCB4YV9saW1pdF8zMmIsCiAJCSAgICAgICBHRlBfS0VSTkVMKTsKIAlpZiAocmV0IDwg MCkgewotCQltdXRleF9kZXN0cm95KCZwZXJmbW9uLT5sb2NrKTsKIAkJa2ZyZWUocGVyZm1vbik7 CiAJCXJldHVybiByZXQ7CiAJfQpAQCAtNDA4LDcgKzQ2NSw5IEBAIGludCB2M2RfcGVyZm1vbl9n ZXRfdmFsdWVzX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJc3Ry dWN0IHYzZF9kZXYgKnYzZCA9IHRvX3YzZF9kZXYoZGV2KTsKIAlzdHJ1Y3QgdjNkX2ZpbGVfcHJp diAqdjNkX3ByaXYgPSBmaWxlX3ByaXYtPmRyaXZlcl9wcml2OwogCXN0cnVjdCBkcm1fdjNkX3Bl cmZtb25fZ2V0X3ZhbHVlcyAqcmVxID0gZGF0YTsKKwl1NjQgdmFsdWVzW0RSTV9WM0RfTUFYX1BF UkZfQ09VTlRFUlNdOwogCXN0cnVjdCB2M2RfcGVyZm1vbiAqcGVyZm1vbjsKKwlzaXplX3Qgc2l6 ZTsKIAlpbnQgcmV0ID0gMDsKIAogCWlmIChyZXEtPnBhZCAhPSAwKQpAQCAtNDE4LDEwICs0Nzcs MTQgQEAgaW50IHYzZF9wZXJmbW9uX2dldF92YWx1ZXNfaW9jdGwoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgdm9pZCAqZGF0YSwKIAlpZiAoIXBlcmZtb24pCiAJCXJldHVybiAtRUlOVkFMOwogCi0J djNkX3BlcmZtb25fc3RvcCh2M2QsIHBlcmZtb24sIHRydWUpOworCXNpemUgPSBwZXJmbW9uLT5u Y291bnRlcnMgKiBzaXplb2YodTY0KTsKIAotCWlmIChjb3B5X3RvX3VzZXIodTY0X3RvX3VzZXJf cHRyKHJlcS0+dmFsdWVzX3B0ciksIHBlcmZtb24tPnZhbHVlcywKLQkJCSBwZXJmbW9uLT5uY291 bnRlcnMgKiBzaXplb2YodTY0KSkpCisJc2NvcGVkX2d1YXJkKHNwaW5sb2NrX2lycXNhdmUsICZ2 M2QtPnBlcmZtb25fc3RhdGUubG9jaykgeworCQl2M2RfcGVyZm1vbl9jYXB0dXJlX2xvY2tlZCh2 M2QsIHBlcmZtb24pOworCQltZW1jcHkodmFsdWVzLCBwZXJmbW9uLT52YWx1ZXMsIHNpemUpOwor CX0KKworCWlmIChjb3B5X3RvX3VzZXIodTY0X3RvX3VzZXJfcHRyKHJlcS0+dmFsdWVzX3B0ciks IHZhbHVlcywgc2l6ZSkpCiAJCXJldCA9IC1FRkFVTFQ7CiAKIAl2M2RfcGVyZm1vbl9wdXQocGVy Zm1vbik7CkBAIC00ODIsMTggKzU0NSwzNiBAQCBpbnQgdjNkX3BlcmZtb25fc2V0X2dsb2JhbF9p b2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkgKi8KIAkJdjNkX3Bl cmZtb25fcHV0KHBlcmZtb24pOwogCi0JCW9sZCA9IHhjaGcoJnYzZC0+Z2xvYmFsX3BlcmZtb24s IE5VTEwpOwotCQlpZiAoIW9sZCkKLQkJCXJldHVybiAtRUlOVkFMOworCQlzY29wZWRfZ3VhcmQo c3BpbmxvY2tfaXJxc2F2ZSwgJnYzZC0+cGVyZm1vbl9zdGF0ZS5sb2NrKSB7CisJCQlvbGQgPSB2 M2QtPmdsb2JhbF9wZXJmbW9uOworCQkJaWYgKCFvbGQpCisJCQkJcmV0dXJuIC1FSU5WQUw7CisK KwkJCXYzZF9wZXJmbW9uX3N0b3BfbG9ja2VkKHYzZCwgb2xkLCB0cnVlKTsKKwkJCXYzZC0+Z2xv YmFsX3BlcmZtb24gPSBOVUxMOworCQl9CiAKIAkJdjNkX3BlcmZtb25fcHV0KG9sZCk7CiAKIAkJ cmV0dXJuIDA7CiAJfQogCi0JaWYgKGNtcHhjaGcoJnYzZC0+Z2xvYmFsX3BlcmZtb24sIE5VTEws IHBlcmZtb24pKSB7Ci0JCXYzZF9wZXJmbW9uX3B1dChwZXJmbW9uKTsKLQkJcmV0dXJuIC1FQlVT WTsKKwlzY29wZWRfZ3VhcmQoc3BpbmxvY2tfaXJxc2F2ZSwgJnYzZC0+cGVyZm1vbl9zdGF0ZS5s b2NrKSB7CisJCWlmICh2M2QtPnBlcmZtb25fc3RhdGUuYWN0aXZlIHx8IHYzZC0+Z2xvYmFsX3Bl cmZtb24pIHsKKwkJCXYzZF9wZXJmbW9uX3B1dChwZXJmbW9uKTsKKwkJCXJldHVybiAtRUJVU1k7 CisJCX0KKworCQl2M2QtPmdsb2JhbF9wZXJmbW9uID0gcGVyZm1vbjsKKwkJdjNkLT5wZXJmbW9u X3N0YXRlLmFjdGl2ZSA9IHBlcmZtb247CisKKwkJLyogSWYgdGhlIGRldmljZSBpcyBzdXNwZW5k ZWQsIHYzZF9wZXJmbW9uX3Jlc3VtZSgpIHdpbGwKKwkJICogcHJvZ3JhbSB0aGUgSFcgb24gdGhl IG5leHQgcmVzdW1lLgorCQkgKi8KKwkJaWYgKHBtX3J1bnRpbWVfZ2V0X2lmX2FjdGl2ZSh2M2Qt PmRybS5kZXYpKSB7CisJCQl2M2RfcGVyZm1vbl9od19zdGFydCh2M2QsIHBlcmZtb24pOworCQkJ djNkX3BtX3J1bnRpbWVfcHV0KHYzZCk7CisJCX0KIAl9CiAKIAlyZXR1cm4gMDsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX3Bvd2VyLmMgYi9kcml2ZXJzL2dwdS9kcm0vdjNk L3YzZF9wb3dlci5jCmluZGV4IDc2OWU5MDAzMmIwNC4uMWE0YjY1MWEyYzVmIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9wb3dlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92 M2QvdjNkX3Bvd2VyLmMKQEAgLTUwLDYgKzUwLDggQEAgaW50IHYzZF9wb3dlcl9zdXNwZW5kKHN0 cnVjdCBkZXZpY2UgKmRldikKIAlzdHJ1Y3QgdjNkX2RldiAqdjNkID0gdG9fdjNkX2Rldihkcm0p OwogCWludCByZXQ7CiAKKwl2M2RfcGVyZm1vbl9zdXNwZW5kKHYzZCk7CisKIAl2M2RfaXJxX2Rp c2FibGUodjNkKTsKIAogCXJldCA9IHYzZF9zdXNwZW5kX3Ntcyh2M2QpOwpAQCAtODMsNSArODUs NyBAQCBpbnQgdjNkX3Bvd2VyX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJdjNkX21tdV9z ZXRfcGFnZV90YWJsZSh2M2QpOwogCXYzZF9pcnFfZW5hYmxlKHYzZCk7CiAKKwl2M2RfcGVyZm1v bl9yZXN1bWUodjNkKTsKKwogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL3YzZC92M2Rfc2NoZWQuYyBiL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX3NjaGVkLmMKaW5k ZXggYzE2YTlkNGQ0MWU2Li40ZDJiOTFkNDk1NDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS92M2QvdjNkX3NjaGVkLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3YzZC92M2Rfc2NoZWQuYwpA QCAtMTI1LDI0ICsxMjUsNiBAQCB2M2RfcGVyZm9ybWFuY2VfcXVlcnlfaW5mb19mcmVlKHN0cnVj dCB2M2RfcGVyZm9ybWFuY2VfcXVlcnlfaW5mbyAqcXVlcnlfaW5mbywKIAl9CiB9CiAKLXN0YXRp YyB2b2lkCi12M2Rfc3dpdGNoX3BlcmZtb24oc3RydWN0IHYzZF9kZXYgKnYzZCwgc3RydWN0IHYz ZF9qb2IgKmpvYikKLXsKLQlzdHJ1Y3QgdjNkX3BlcmZtb24gKnBlcmZtb24gPSB2M2QtPmdsb2Jh bF9wZXJmbW9uOwotCi0JaWYgKCFwZXJmbW9uKQotCQlwZXJmbW9uID0gam9iLT5wZXJmbW9uOwot Ci0JaWYgKHBlcmZtb24gPT0gdjNkLT5hY3RpdmVfcGVyZm1vbikKLQkJcmV0dXJuOwotCi0JaWYg KHBlcmZtb24gIT0gdjNkLT5hY3RpdmVfcGVyZm1vbikKLQkJdjNkX3BlcmZtb25fc3RvcCh2M2Qs IHYzZC0+YWN0aXZlX3BlcmZtb24sIHRydWUpOwotCi0JaWYgKHBlcmZtb24gJiYgdjNkLT5hY3Rp dmVfcGVyZm1vbiAhPSBwZXJmbW9uKQotCQl2M2RfcGVyZm1vbl9zdGFydCh2M2QsIHBlcmZtb24p OwotfQotCiBzdGF0aWMgdm9pZAogdjNkX3N0YXRzX3N0YXJ0KHN0cnVjdCB2M2Rfc3RhdHMgKnN0 YXRzLCB1NjQgbm93KQogewpAQCAtMjE5LDcgKzIwMSw3IEBAIHN0YXRpYyBzdHJ1Y3QgZG1hX2Zl bmNlICp2M2RfYmluX2pvYl9ydW4oc3RydWN0IGRybV9zY2hlZF9qb2IgKnNjaGVkX2pvYikKIAkJ CSAgICBqb2ItPnN0YXJ0LCBqb2ItPmVuZCk7CiAKIAl2M2Rfam9iX3N0YXJ0X3N0YXRzKCZqb2It PmJhc2UpOwotCXYzZF9zd2l0Y2hfcGVyZm1vbih2M2QsICZqb2ItPmJhc2UpOworCXYzZF9wZXJm bW9uX3N0YXJ0KHYzZCwgam9iLT5iYXNlLnBlcmZtb24pOwogCiAJLyogU2V0IHRoZSBjdXJyZW50 IGFuZCBlbmQgYWRkcmVzcyBvZiB0aGUgY29udHJvbCBsaXN0LgogCSAqIFdyaXRpbmcgdGhlIGVu ZCByZWdpc3RlciBpcyB3aGF0IHN0YXJ0cyB0aGUgam9iLgpAQCAtMjc3LDcgKzI1OSw3IEBAIHN0 YXRpYyBzdHJ1Y3QgZG1hX2ZlbmNlICp2M2RfcmVuZGVyX2pvYl9ydW4oc3RydWN0IGRybV9zY2hl ZF9qb2IgKnNjaGVkX2pvYikKIAkJCSAgICBqb2ItPnN0YXJ0LCBqb2ItPmVuZCk7CiAKIAl2M2Rf am9iX3N0YXJ0X3N0YXRzKCZqb2ItPmJhc2UpOwotCXYzZF9zd2l0Y2hfcGVyZm1vbih2M2QsICZq b2ItPmJhc2UpOworCXYzZF9wZXJmbW9uX3N0YXJ0KHYzZCwgam9iLT5iYXNlLnBlcmZtb24pOwog CiAJLyogWFhYOiBTZXQgdGhlIFFDRkcgKi8KIApAQCAtMzcwLDcgKzM1Miw3IEBAIHYzZF9jc2Rf am9iX3J1bihzdHJ1Y3QgZHJtX3NjaGVkX2pvYiAqc2NoZWRfam9iKQogCXRyYWNlX3YzZF9zdWJt aXRfY3NkKGRldiwgdG9fdjNkX2ZlbmNlKGZlbmNlKS0+c2Vxbm8pOwogCiAJdjNkX2pvYl9zdGFy dF9zdGF0cygmam9iLT5iYXNlKTsKLQl2M2Rfc3dpdGNoX3BlcmZtb24odjNkLCAmam9iLT5iYXNl KTsKKwl2M2RfcGVyZm1vbl9zdGFydCh2M2QsIGpvYi0+YmFzZS5wZXJmbW9uKTsKIAogCWNzZF9j ZmcwX3JlZyA9IFYzRF9DU0RfUVVFVUVEX0NGRzAodjNkLT52ZXIpOwogCWZvciAoaSA9IDE7IGkg PD0gNjsgaSsrKQpAQCAtNzExLDYgKzY5Myw4IEBAIHYzZF9ncHVfcmVzZXRfZm9yX3RpbWVvdXQo c3RydWN0IHYzZF9kZXYgKnYzZCwgc3RydWN0IGRybV9zY2hlZF9qb2IgKnNjaGVkX2pvYiwKIAlp ZiAoc2NoZWRfam9iKQogCQlkcm1fc2NoZWRfaW5jcmVhc2Vfa2FybWEoc2NoZWRfam9iKTsKIAor CXYzZF9wZXJmbW9uX3N0b3AodjNkLCBqb2ItPnBlcmZtb24sIGZhbHNlKTsKKwogCS8qIGdldCB0 aGUgR1BVIGJhY2sgaW50byB0aGUgaW5pdCBzdGF0ZSAqLwogCXYzZF9yZXNldCh2M2QpOwogCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9zdWJtaXQuYyBiL2RyaXZlcnMvZ3B1 L2RybS92M2QvdjNkX3N1Ym1pdC5jCmluZGV4IDAyNDQxZDRmNDk1ZC4uNGM1MjZhYWZjNGUwIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9zdWJtaXQuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vdjNkL3YzZF9zdWJtaXQuYwpAQCAtMjc1LDggKzI3NSwxMCBAQCB2M2RfYXR0YWNo X3BlcmZtb25fdG9fam9icyhzdHJ1Y3QgdjNkX3N1Ym1pdCAqc3VibWl0LCB1MzIgcGVyZm1vbl9p ZCkKIAlpZiAoIXBlcmZtb25faWQpCiAJCXJldHVybiAwOwogCi0JaWYgKHYzZC0+Z2xvYmFsX3Bl cmZtb24pCi0JCXJldHVybiAtRUFHQUlOOworCXNjb3BlZF9ndWFyZChzcGlubG9ja19pcnFzYXZl LCAmdjNkLT5wZXJmbW9uX3N0YXRlLmxvY2spIHsKKwkJaWYgKHYzZC0+Z2xvYmFsX3BlcmZtb24p CisJCQlyZXR1cm4gLUVBR0FJTjsKKwl9CiAKIAlwZXJmbW9uID0gdjNkX3BlcmZtb25fZmluZCh2 M2RfcHJpdiwgcGVyZm1vbl9pZCk7CiAJaWYgKCFwZXJmbW9uKQoKLS0gCjIuNTQuMAoK