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 A8662FCB619 for ; Fri, 6 Mar 2026 16:35:04 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 6773410ED91; Fri, 6 Mar 2026 16:34:58 +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="jSaDPImG"; dkim-atps=neutral Received: from fanzine2.igalia.com (fanzine2.igalia.com [213.97.179.56]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2C08C10E32C; Fri, 6 Mar 2026 16:34:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References: In-Reply-To:Message-ID:Date:Subject:Cc:To: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=f3pd6yRbR9iq7g6TEUxQ/2yAj2Q6nE+6ejsmA1zkacg=; b=jSaDPImGo5sszq0UwmX0enR9J5 TTHVv9ud8fcxKTKYG1KkyWyc74/lry/jaCa1kcpSCq8eb+Oikt4WcTzNl/7gfjtrwyNDCkvecSDNr GJPOROxbetIdX9sPPgTZCg2y1+I+tzAQa4SRtGfeAwRTPcSg8RWM/7LIsW6pJgqHXFHSV2d+tqP8T Ygbfm8mCEOBuehR8DACsa1lERDnbwEKjyiFnXMizKgLXpZ2g3KEw6fRLs3GonSAQg81NMA1NJRBZf 5faAB+XRUwXRSUy9dLaoc+n9i2gk99KMFwRB+0ceYjo375pNwoTWBh+ZcmgQ+mB4PZkwifgV2VDLw 6kovStbA==; Received: from [90.240.106.137] (helo=localhost) by fanzine2.igalia.com with esmtpsa (Cipher TLS1.3:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim) id 1vyY8a-00APRj-A2; Fri, 06 Mar 2026 17:34:52 +0100 From: Tvrtko Ursulin To: amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Cc: kernel-dev@igalia.com, intel-xe@lists.freedesktop.org, Danilo Krummrich , Philipp Stanner , Tvrtko Ursulin , =?UTF-8?q?Christian=20K=C3=B6nig?= , Matthew Brost Subject: [PATCH v7 03/29] drm/sched: Move run queue related code into a separate file Date: Fri, 6 Mar 2026 16:34:19 +0000 Message-ID: <20260306163445.97243-4-tvrtko.ursulin@igalia.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260306163445.97243-1-tvrtko.ursulin@igalia.com> References: <20260306163445.97243-1-tvrtko.ursulin@igalia.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 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" TGV0cyBtb3ZlIGFsbCB0aGUgY29kZSBkZWFsaW5nIHdpdGggc3RydWN0IGRybV9zY2hlZF9ycSBp bnRvIGEgc2VwYXJhdGUKY29tcGlsYXRpb24gdW5pdC4gQWR2YW50YWdlIGJlaW5nIHNjaGVkX21h aW4uYyBpcyBsZWZ0IHdpdGggYSBjbGVhcmVyIHNldApvZiByZXNwb25zaWJpbGl0aWVzLgoKU2ln bmVkLW9mZi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGlnYWxpYS5jb20+CkNj OiBDaHJpc3RpYW4gS8O2bmlnIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5jb20+CkNjOiBEYW5pbG8g S3J1bW1yaWNoIDxkYWtyQGtlcm5lbC5vcmc+CkNjOiBNYXR0aGV3IEJyb3N0IDxtYXR0aGV3LmJy b3N0QGludGVsLmNvbT4KQ2M6IFBoaWxpcHAgU3Rhbm5lciA8cGhhc3RhQGtlcm5lbC5vcmc+ClJl dmlld2VkLWJ5OiBNYXR0aGV3IEJyb3N0IDxtYXR0aGV3LmJyb3N0QGludGVsLmNvbT4gIyB2MQpB Y2tlZC1ieTogRGFuaWxvIEtydW1tcmljaCA8ZGFrckBrZXJuZWwub3JnPgotLS0KdjI6CiAqIFJl LWJhc2VkIGZvciBtb3ZpbmcgZWFybGllciBpbiB0aGUgc2VyaWVzLgotLS0KIGRyaXZlcnMvZ3B1 L2RybS9zY2hlZHVsZXIvTWFrZWZpbGUgICAgICAgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJt L3NjaGVkdWxlci9zY2hlZF9pbnRlcm5hbC5oIHwgIDEyICsKIGRyaXZlcnMvZ3B1L2RybS9zY2hl ZHVsZXIvc2NoZWRfbWFpbi5jICAgICB8IDI2MSArLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVy cy9ncHUvZHJtL3NjaGVkdWxlci9zY2hlZF9ycS5jICAgICAgIHwgMjYyICsrKysrKysrKysrKysr KysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAyNzcgaW5zZXJ0aW9ucygrKSwgMjYwIGRlbGV0aW9u cygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9zY2hlZHVsZXIvc2NoZWRf cnEuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9zY2hlZHVsZXIvTWFrZWZpbGUgYi9k cml2ZXJzL2dwdS9kcm0vc2NoZWR1bGVyL01ha2VmaWxlCmluZGV4IDZlMTNlNGM2M2U5ZC4uNzRl NzVlZmY2ZGY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vc2NoZWR1bGVyL01ha2VmaWxl CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9zY2hlZHVsZXIvTWFrZWZpbGUKQEAgLTIwLDcgKzIwLDcg QEAKICMgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgogIwogIwotZ3B1LXNjaGVkLXkg Oj0gc2NoZWRfbWFpbi5vIHNjaGVkX2ZlbmNlLm8gc2NoZWRfZW50aXR5Lm8KK2dwdS1zY2hlZC15 IDo9IHNjaGVkX21haW4ubyBzY2hlZF9mZW5jZS5vIHNjaGVkX2VudGl0eS5vIHNjaGVkX3JxLm8K IAogb2JqLSQoQ09ORklHX0RSTV9TQ0hFRCkgKz0gZ3B1LXNjaGVkLm8KIApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL3NjaGVkdWxlci9zY2hlZF9pbnRlcm5hbC5oIGIvZHJpdmVycy9ncHUv ZHJtL3NjaGVkdWxlci9zY2hlZF9pbnRlcm5hbC5oCmluZGV4IDgyNjljNTM5MmE4Mi4uYWFiNjNh ODcyMWQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vc2NoZWR1bGVyL3NjaGVkX2ludGVy bmFsLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3NjaGVkdWxlci9zY2hlZF9pbnRlcm5hbC5oCkBA IC0xMCwxNCArMTAsMjYgQEAgZXh0ZXJuIGludCBkcm1fc2NoZWRfcG9saWN5OwogI2RlZmluZSBE Uk1fU0NIRURfUE9MSUNZX1JSICAgIDAKICNkZWZpbmUgRFJNX1NDSEVEX1BPTElDWV9GSUZPICAx CiAKK2Jvb2wgZHJtX3NjaGVkX2Nhbl9xdWV1ZShzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNj aGVkLAorCQkJIHN0cnVjdCBkcm1fc2NoZWRfZW50aXR5ICplbnRpdHkpOwogdm9pZCBkcm1fc2No ZWRfd2FrZXVwKHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQpOwogCit2b2lkIGRybV9z Y2hlZF9ycV9pbml0KHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQsCisJCSAgICAgICBz dHJ1Y3QgZHJtX3NjaGVkX3JxICpycSk7CisKIHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqCiBk cm1fc2NoZWRfcnFfYWRkX2VudGl0eShzdHJ1Y3QgZHJtX3NjaGVkX2VudGl0eSAqZW50aXR5LCBr dGltZV90IHRzKTsKIHZvaWQgZHJtX3NjaGVkX3JxX3JlbW92ZV9lbnRpdHkoc3RydWN0IGRybV9z Y2hlZF9ycSAqcnEsCiAJCQkJc3RydWN0IGRybV9zY2hlZF9lbnRpdHkgKmVudGl0eSk7CiB2b2lk IGRybV9zY2hlZF9ycV9wb3BfZW50aXR5KHN0cnVjdCBkcm1fc2NoZWRfZW50aXR5ICplbnRpdHkp OwogCitzdHJ1Y3QgZHJtX3NjaGVkX2VudGl0eSAqCitkcm1fc2NoZWRfcnFfc2VsZWN0X2VudGl0 eV9ycihzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkLAorCQkJICAgICAgc3RydWN0IGRy bV9zY2hlZF9ycSAqcnEpOworc3RydWN0IGRybV9zY2hlZF9lbnRpdHkgKgorZHJtX3NjaGVkX3Jx X3NlbGVjdF9lbnRpdHlfZmlmbyhzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkLAorCQkJ CXN0cnVjdCBkcm1fc2NoZWRfcnEgKnJxKTsKKwogdm9pZCBkcm1fc2NoZWRfZW50aXR5X3NlbGVj dF9ycShzdHJ1Y3QgZHJtX3NjaGVkX2VudGl0eSAqZW50aXR5KTsKIHN0cnVjdCBkcm1fc2NoZWRf am9iICpkcm1fc2NoZWRfZW50aXR5X3BvcF9qb2Ioc3RydWN0IGRybV9zY2hlZF9lbnRpdHkgKmVu dGl0eSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9zY2hlZHVsZXIvc2NoZWRfbWFp bi5jIGIvZHJpdmVycy9ncHUvZHJtL3NjaGVkdWxlci9zY2hlZF9tYWluLmMKaW5kZXggZjRhYWIy OTE1ZGY4Li4yOTg1MDllNDBkNjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9zY2hlZHVs ZXIvc2NoZWRfbWFpbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9zY2hlZHVsZXIvc2NoZWRfbWFp bi5jCkBAIC0xMTIsOCArMTEyLDggQEAgc3RhdGljIHUzMiBkcm1fc2NoZWRfYXZhaWxhYmxlX2Ny ZWRpdHMoc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCkKICAqIFJldHVybiB0cnVlIGlm IHdlIGNhbiBwdXNoIGF0IGxlYXN0IG9uZSBtb3JlIGpvYiBmcm9tIEBlbnRpdHksIGZhbHNlCiAg KiBvdGhlcndpc2UuCiAgKi8KLXN0YXRpYyBib29sIGRybV9zY2hlZF9jYW5fcXVldWUoc3RydWN0 IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCwKLQkJCQlzdHJ1Y3QgZHJtX3NjaGVkX2VudGl0eSAq ZW50aXR5KQorYm9vbCBkcm1fc2NoZWRfY2FuX3F1ZXVlKHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxl ciAqc2NoZWQsCisJCQkgc3RydWN0IGRybV9zY2hlZF9lbnRpdHkgKmVudGl0eSkKIHsKIAlzdHJ1 Y3QgZHJtX3NjaGVkX2pvYiAqc19qb2I7CiAKQEAgLTEzMywyNjMgKzEzMyw2IEBAIHN0YXRpYyBi b29sIGRybV9zY2hlZF9jYW5fcXVldWUoc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCwK IAlyZXR1cm4gZHJtX3NjaGVkX2F2YWlsYWJsZV9jcmVkaXRzKHNjaGVkKSA+PSBzX2pvYi0+Y3Jl ZGl0czsKIH0KIAotc3RhdGljIF9fYWx3YXlzX2lubGluZSBib29sIGRybV9zY2hlZF9lbnRpdHlf Y29tcGFyZV9iZWZvcmUoc3RydWN0IHJiX25vZGUgKmEsCi0JCQkJCQkJICAgIGNvbnN0IHN0cnVj dCByYl9ub2RlICpiKQotewotCXN0cnVjdCBkcm1fc2NoZWRfZW50aXR5ICplbnRfYSA9ICByYl9l bnRyeSgoYSksIHN0cnVjdCBkcm1fc2NoZWRfZW50aXR5LCByYl90cmVlX25vZGUpOwotCXN0cnVj dCBkcm1fc2NoZWRfZW50aXR5ICplbnRfYiA9ICByYl9lbnRyeSgoYiksIHN0cnVjdCBkcm1fc2No ZWRfZW50aXR5LCByYl90cmVlX25vZGUpOwotCi0JcmV0dXJuIGt0aW1lX2JlZm9yZShlbnRfYS0+ b2xkZXN0X2pvYl93YWl0aW5nLCBlbnRfYi0+b2xkZXN0X2pvYl93YWl0aW5nKTsKLX0KLQotc3Rh dGljIHZvaWQgZHJtX3NjaGVkX3JxX3JlbW92ZV9maWZvX2xvY2tlZChzdHJ1Y3QgZHJtX3NjaGVk X2VudGl0eSAqZW50aXR5LAotCQkJCQkgICAgc3RydWN0IGRybV9zY2hlZF9ycSAqcnEpCi17Ci0J aWYgKCFSQl9FTVBUWV9OT0RFKCZlbnRpdHktPnJiX3RyZWVfbm9kZSkpIHsKLQkJcmJfZXJhc2Vf Y2FjaGVkKCZlbnRpdHktPnJiX3RyZWVfbm9kZSwgJnJxLT5yYl90cmVlX3Jvb3QpOwotCQlSQl9D TEVBUl9OT0RFKCZlbnRpdHktPnJiX3RyZWVfbm9kZSk7Ci0JfQotfQotCi1zdGF0aWMgdm9pZCBk cm1fc2NoZWRfcnFfdXBkYXRlX2ZpZm9fbG9ja2VkKHN0cnVjdCBkcm1fc2NoZWRfZW50aXR5ICpl bnRpdHksCi0JCQkJCSAgICBzdHJ1Y3QgZHJtX3NjaGVkX3JxICpycSwKLQkJCQkJICAgIGt0aW1l X3QgdHMpCi17Ci0JLyoKLQkgKiBCb3RoIGxvY2tzIG5lZWQgdG8gYmUgZ3JhYmJlZCwgb25lIHRv IHByb3RlY3QgZnJvbSBlbnRpdHktPnJxIGNoYW5nZQotCSAqIGZvciBlbnRpdHkgZnJvbSB3aXRo aW4gY29uY3VycmVudCBkcm1fc2NoZWRfZW50aXR5X3NlbGVjdF9ycSBhbmQgdGhlCi0JICogb3Ro ZXIgdG8gdXBkYXRlIHRoZSByYiB0cmVlIHN0cnVjdHVyZS4KLQkgKi8KLQlsb2NrZGVwX2Fzc2Vy dF9oZWxkKCZlbnRpdHktPmxvY2spOwotCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnJxLT5sb2NrKTsK LQotCWRybV9zY2hlZF9ycV9yZW1vdmVfZmlmb19sb2NrZWQoZW50aXR5LCBycSk7Ci0KLQllbnRp dHktPm9sZGVzdF9qb2Jfd2FpdGluZyA9IHRzOwotCi0JcmJfYWRkX2NhY2hlZCgmZW50aXR5LT5y Yl90cmVlX25vZGUsICZycS0+cmJfdHJlZV9yb290LAotCQkgICAgICBkcm1fc2NoZWRfZW50aXR5 X2NvbXBhcmVfYmVmb3JlKTsKLX0KLQotLyoqCi0gKiBkcm1fc2NoZWRfcnFfaW5pdCAtIGluaXRp YWxpemUgYSBnaXZlbiBydW4gcXVldWUgc3RydWN0Ci0gKgotICogQHNjaGVkOiBzY2hlZHVsZXIg aW5zdGFuY2UgdG8gYXNzb2NpYXRlIHdpdGggdGhpcyBydW4gcXVldWUKLSAqIEBycTogc2NoZWR1 bGVyIHJ1biBxdWV1ZQotICoKLSAqIEluaXRpYWxpemVzIGEgc2NoZWR1bGVyIHJ1bnF1ZXVlLgot ICovCi1zdGF0aWMgdm9pZCBkcm1fc2NoZWRfcnFfaW5pdChzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVs ZXIgKnNjaGVkLAotCQkJICAgICAgc3RydWN0IGRybV9zY2hlZF9ycSAqcnEpCi17Ci0Jc3Bpbl9s b2NrX2luaXQoJnJxLT5sb2NrKTsKLQlJTklUX0xJU1RfSEVBRCgmcnEtPmVudGl0aWVzKTsKLQly cS0+cmJfdHJlZV9yb290ID0gUkJfUk9PVF9DQUNIRUQ7Ci0JcnEtPmN1cnJlbnRfZW50aXR5ID0g TlVMTDsKLQlycS0+c2NoZWQgPSBzY2hlZDsKLX0KLQotLyoqCi0gKiBkcm1fc2NoZWRfcnFfYWRk X2VudGl0eSAtIGFkZCBhbiBlbnRpdHkKLSAqIEBlbnRpdHk6IHNjaGVkdWxlciBlbnRpdHkKLSAq IEB0czogc3VibWlzc2lvbiB0aW1lc3RhbXAKLSAqCi0gKiBBZGRzIGEgc2NoZWR1bGVyIGVudGl0 eSB0byB0aGUgcnVuIHF1ZXVlLgotICoKLSAqIFJldHVybjogRFJNIHNjaGVkdWxlciBzZWxlY3Rl ZCB0byBoYW5kbGUgdGhpcyBlbnRpdHkgb3IgTlVMTCBpZiBlbnRpdHkgaGFzCi0gKiBiZWVuIHN0 b3BwZWQgYW5kIGNhbm5vdCBiZSBzdWJtaXR0ZWQgdG8uCi0gKi8KLXN0cnVjdCBkcm1fZ3B1X3Nj aGVkdWxlciAqCi1kcm1fc2NoZWRfcnFfYWRkX2VudGl0eShzdHJ1Y3QgZHJtX3NjaGVkX2VudGl0 eSAqZW50aXR5LCBrdGltZV90IHRzKQotewotCXN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2No ZWQ7Ci0Jc3RydWN0IGRybV9zY2hlZF9ycSAqcnE7Ci0KLQkvKiBBZGQgdGhlIGVudGl0eSB0byB0 aGUgcnVuIHF1ZXVlICovCi0Jc3Bpbl9sb2NrKCZlbnRpdHktPmxvY2spOwotCWlmIChlbnRpdHkt PnN0b3BwZWQpIHsKLQkJc3Bpbl91bmxvY2soJmVudGl0eS0+bG9jayk7Ci0KLQkJRFJNX0VSUk9S KCJUcnlpbmcgdG8gcHVzaCB0byBhIGtpbGxlZCBlbnRpdHlcbiIpOwotCQlyZXR1cm4gTlVMTDsK LQl9Ci0KLQlycSA9IGVudGl0eS0+cnE7Ci0Jc3Bpbl9sb2NrKCZycS0+bG9jayk7Ci0Jc2NoZWQg PSBycS0+c2NoZWQ7Ci0KLQlpZiAobGlzdF9lbXB0eSgmZW50aXR5LT5saXN0KSkgewotCQlhdG9t aWNfaW5jKHNjaGVkLT5zY29yZSk7Ci0JCWxpc3RfYWRkX3RhaWwoJmVudGl0eS0+bGlzdCwgJnJx LT5lbnRpdGllcyk7Ci0JfQotCi0JaWYgKGRybV9zY2hlZF9wb2xpY3kgPT0gRFJNX1NDSEVEX1BP TElDWV9GSUZPKQotCQlkcm1fc2NoZWRfcnFfdXBkYXRlX2ZpZm9fbG9ja2VkKGVudGl0eSwgcnEs IHRzKTsKLQotCXNwaW5fdW5sb2NrKCZycS0+bG9jayk7Ci0Jc3Bpbl91bmxvY2soJmVudGl0eS0+ bG9jayk7Ci0KLQlyZXR1cm4gc2NoZWQ7Ci19Ci0KLS8qKgotICogZHJtX3NjaGVkX3JxX3JlbW92 ZV9lbnRpdHkgLSByZW1vdmUgYW4gZW50aXR5Ci0gKgotICogQHJxOiBzY2hlZHVsZXIgcnVuIHF1 ZXVlCi0gKiBAZW50aXR5OiBzY2hlZHVsZXIgZW50aXR5Ci0gKgotICogUmVtb3ZlcyBhIHNjaGVk dWxlciBlbnRpdHkgZnJvbSB0aGUgcnVuIHF1ZXVlLgotICovCi12b2lkIGRybV9zY2hlZF9ycV9y ZW1vdmVfZW50aXR5KHN0cnVjdCBkcm1fc2NoZWRfcnEgKnJxLAotCQkJCXN0cnVjdCBkcm1fc2No ZWRfZW50aXR5ICplbnRpdHkpCi17Ci0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmZW50aXR5LT5sb2Nr KTsKLQotCWlmIChsaXN0X2VtcHR5KCZlbnRpdHktPmxpc3QpKQotCQlyZXR1cm47Ci0KLQlzcGlu X2xvY2soJnJxLT5sb2NrKTsKLQotCWF0b21pY19kZWMocnEtPnNjaGVkLT5zY29yZSk7Ci0JbGlz dF9kZWxfaW5pdCgmZW50aXR5LT5saXN0KTsKLQotCWlmIChycS0+Y3VycmVudF9lbnRpdHkgPT0g ZW50aXR5KQotCQlycS0+Y3VycmVudF9lbnRpdHkgPSBOVUxMOwotCi0JaWYgKGRybV9zY2hlZF9w b2xpY3kgPT0gRFJNX1NDSEVEX1BPTElDWV9GSUZPKQotCQlkcm1fc2NoZWRfcnFfcmVtb3ZlX2Zp Zm9fbG9ja2VkKGVudGl0eSwgcnEpOwotCi0Jc3Bpbl91bmxvY2soJnJxLT5sb2NrKTsKLX0KLQot LyoqCi0gKiBkcm1fc2NoZWRfcnFfcG9wX2VudGl0eSAtIHBvcHMgYW4gZW50aXR5Ci0gKiBAZW50 aXR5OiBzY2hlZHVsZXIgZW50aXR5Ci0gKgotICogVG8gYmUgY2FsbGVkIGV2ZXJ5IHRpbWUgYWZ0 ZXIgYSBqb2IgaXMgcG9wcGVkIGZyb20gdGhlIGVudGl0eS4KLSAqLwotdm9pZCBkcm1fc2NoZWRf cnFfcG9wX2VudGl0eShzdHJ1Y3QgZHJtX3NjaGVkX2VudGl0eSAqZW50aXR5KQotewotCS8qCi0J ICogVXBkYXRlIHRoZSBlbnRpdHkncyBsb2NhdGlvbiBpbiB0aGUgbWluIGhlYXAgYWNjb3JkaW5n IHRvCi0JICogdGhlIHRpbWVzdGFtcCBvZiB0aGUgbmV4dCBqb2IsIGlmIGFueS4KLQkgKi8KLQlp ZiAoZHJtX3NjaGVkX3BvbGljeSA9PSBEUk1fU0NIRURfUE9MSUNZX0ZJRk8pIHsKLQkJc3RydWN0 IGRybV9zY2hlZF9qb2IgKm5leHQ7Ci0KLQkJbmV4dCA9IGRybV9zY2hlZF9lbnRpdHlfcXVldWVf cGVlayhlbnRpdHkpOwotCQlpZiAobmV4dCkgewotCQkJc3RydWN0IGRybV9zY2hlZF9ycSAqcnE7 Ci0KLQkJCXNwaW5fbG9jaygmZW50aXR5LT5sb2NrKTsKLQkJCXJxID0gZW50aXR5LT5ycTsKLQkJ CXNwaW5fbG9jaygmcnEtPmxvY2spOwotCQkJZHJtX3NjaGVkX3JxX3VwZGF0ZV9maWZvX2xvY2tl ZChlbnRpdHksIHJxLAotCQkJCQkJCW5leHQtPnN1Ym1pdF90cyk7Ci0JCQlzcGluX3VubG9jaygm cnEtPmxvY2spOwotCQkJc3Bpbl91bmxvY2soJmVudGl0eS0+bG9jayk7Ci0JCX0KLQl9Ci19Ci0K LS8qKgotICogZHJtX3NjaGVkX3JxX3NlbGVjdF9lbnRpdHlfcnIgLSBTZWxlY3QgYW4gZW50aXR5 IHdoaWNoIGNvdWxkIHByb3ZpZGUgYSBqb2IgdG8gcnVuCi0gKgotICogQHNjaGVkOiB0aGUgZ3B1 IHNjaGVkdWxlcgotICogQHJxOiBzY2hlZHVsZXIgcnVuIHF1ZXVlIHRvIGNoZWNrLgotICoKLSAq IFRyeSB0byBmaW5kIHRoZSBuZXh0IHJlYWR5IGVudGl0eS4KLSAqCi0gKiBSZXR1cm4gYW4gZW50 aXR5IGlmIG9uZSBpcyBmb3VuZDsgcmV0dXJuIGFuIGVycm9yLXBvaW50ZXIgKCFOVUxMKSBpZiBh bgotICogZW50aXR5IHdhcyByZWFkeSwgYnV0IHRoZSBzY2hlZHVsZXIgaGFkIGluc3VmZmljaWVu dCBjcmVkaXRzIHRvIGFjY29tbW9kYXRlCi0gKiBpdHMgam9iOyByZXR1cm4gTlVMTCwgaWYgbm8g cmVhZHkgZW50aXR5IHdhcyBmb3VuZC4KLSAqLwotc3RhdGljIHN0cnVjdCBkcm1fc2NoZWRfZW50 aXR5ICoKLWRybV9zY2hlZF9ycV9zZWxlY3RfZW50aXR5X3JyKHN0cnVjdCBkcm1fZ3B1X3NjaGVk dWxlciAqc2NoZWQsCi0JCQkgICAgICBzdHJ1Y3QgZHJtX3NjaGVkX3JxICpycSkKLXsKLQlzdHJ1 Y3QgZHJtX3NjaGVkX2VudGl0eSAqZW50aXR5OwotCi0Jc3Bpbl9sb2NrKCZycS0+bG9jayk7Ci0K LQllbnRpdHkgPSBycS0+Y3VycmVudF9lbnRpdHk7Ci0JaWYgKGVudGl0eSkgewotCQlsaXN0X2Zv cl9lYWNoX2VudHJ5X2NvbnRpbnVlKGVudGl0eSwgJnJxLT5lbnRpdGllcywgbGlzdCkgewotCQkJ aWYgKGRybV9zY2hlZF9lbnRpdHlfaXNfcmVhZHkoZW50aXR5KSkKLQkJCQlnb3RvIGZvdW5kOwot CQl9Ci0JfQotCi0JbGlzdF9mb3JfZWFjaF9lbnRyeShlbnRpdHksICZycS0+ZW50aXRpZXMsIGxp c3QpIHsKLQkJaWYgKGRybV9zY2hlZF9lbnRpdHlfaXNfcmVhZHkoZW50aXR5KSkKLQkJCWdvdG8g Zm91bmQ7Ci0KLQkJaWYgKGVudGl0eSA9PSBycS0+Y3VycmVudF9lbnRpdHkpCi0JCQlicmVhazsK LQl9Ci0KLQlzcGluX3VubG9jaygmcnEtPmxvY2spOwotCi0JcmV0dXJuIE5VTEw7Ci0KLWZvdW5k OgotCWlmICghZHJtX3NjaGVkX2Nhbl9xdWV1ZShzY2hlZCwgZW50aXR5KSkgewotCQkvKgotCQkg KiBJZiBzY2hlZHVsZXIgY2Fubm90IHRha2UgbW9yZSBqb2JzIHNpZ25hbCB0aGUgY2FsbGVyIHRv IG5vdAotCQkgKiBjb25zaWRlciBsb3dlciBwcmlvcml0eSBxdWV1ZXMuCi0JCSAqLwotCQllbnRp dHkgPSBFUlJfUFRSKC1FTk9TUEMpOwotCX0gZWxzZSB7Ci0JCXJxLT5jdXJyZW50X2VudGl0eSA9 IGVudGl0eTsKLQkJcmVpbml0X2NvbXBsZXRpb24oJmVudGl0eS0+ZW50aXR5X2lkbGUpOwotCX0K LQotCXNwaW5fdW5sb2NrKCZycS0+bG9jayk7Ci0KLQlyZXR1cm4gZW50aXR5OwotfQotCi0vKioK LSAqIGRybV9zY2hlZF9ycV9zZWxlY3RfZW50aXR5X2ZpZm8gLSBTZWxlY3QgYW4gZW50aXR5IHdo aWNoIHByb3ZpZGVzIGEgam9iIHRvIHJ1bgotICoKLSAqIEBzY2hlZDogdGhlIGdwdSBzY2hlZHVs ZXIKLSAqIEBycTogc2NoZWR1bGVyIHJ1biBxdWV1ZSB0byBjaGVjay4KLSAqCi0gKiBGaW5kIG9s ZGVzdCB3YWl0aW5nIHJlYWR5IGVudGl0eS4KLSAqCi0gKiBSZXR1cm4gYW4gZW50aXR5IGlmIG9u ZSBpcyBmb3VuZDsgcmV0dXJuIGFuIGVycm9yLXBvaW50ZXIgKCFOVUxMKSBpZiBhbgotICogZW50 aXR5IHdhcyByZWFkeSwgYnV0IHRoZSBzY2hlZHVsZXIgaGFkIGluc3VmZmljaWVudCBjcmVkaXRz IHRvIGFjY29tbW9kYXRlCi0gKiBpdHMgam9iOyByZXR1cm4gTlVMTCwgaWYgbm8gcmVhZHkgZW50 aXR5IHdhcyBmb3VuZC4KLSAqLwotc3RhdGljIHN0cnVjdCBkcm1fc2NoZWRfZW50aXR5ICoKLWRy bV9zY2hlZF9ycV9zZWxlY3RfZW50aXR5X2ZpZm8oc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpz Y2hlZCwKLQkJCQlzdHJ1Y3QgZHJtX3NjaGVkX3JxICpycSkKLXsKLQlzdHJ1Y3QgcmJfbm9kZSAq cmI7Ci0KLQlzcGluX2xvY2soJnJxLT5sb2NrKTsKLQlmb3IgKHJiID0gcmJfZmlyc3RfY2FjaGVk KCZycS0+cmJfdHJlZV9yb290KTsgcmI7IHJiID0gcmJfbmV4dChyYikpIHsKLQkJc3RydWN0IGRy bV9zY2hlZF9lbnRpdHkgKmVudGl0eTsKLQotCQllbnRpdHkgPSByYl9lbnRyeShyYiwgc3RydWN0 IGRybV9zY2hlZF9lbnRpdHksIHJiX3RyZWVfbm9kZSk7Ci0JCWlmIChkcm1fc2NoZWRfZW50aXR5 X2lzX3JlYWR5KGVudGl0eSkpIHsKLQkJCS8qIElmIHdlIGNhbid0IHF1ZXVlIHlldCwgcHJlc2Vy dmUgdGhlIGN1cnJlbnQgZW50aXR5IGluCi0JCQkgKiB0ZXJtcyBvZiBmYWlybmVzcy4KLQkJCSAq LwotCQkJaWYgKCFkcm1fc2NoZWRfY2FuX3F1ZXVlKHNjaGVkLCBlbnRpdHkpKSB7Ci0JCQkJc3Bp bl91bmxvY2soJnJxLT5sb2NrKTsKLQkJCQlyZXR1cm4gRVJSX1BUUigtRU5PU1BDKTsKLQkJCX0K LQotCQkJcmVpbml0X2NvbXBsZXRpb24oJmVudGl0eS0+ZW50aXR5X2lkbGUpOwotCQkJYnJlYWs7 Ci0JCX0KLQl9Ci0Jc3Bpbl91bmxvY2soJnJxLT5sb2NrKTsKLQotCXJldHVybiByYiA/IHJiX2Vu dHJ5KHJiLCBzdHJ1Y3QgZHJtX3NjaGVkX2VudGl0eSwgcmJfdHJlZV9ub2RlKSA6IE5VTEw7Ci19 Ci0KIC8qKgogICogZHJtX3NjaGVkX3J1bl9qb2JfcXVldWUgLSBlbnF1ZXVlIHJ1bi1qb2Igd29y awogICogQHNjaGVkOiBzY2hlZHVsZXIgaW5zdGFuY2UKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9zY2hlZHVsZXIvc2NoZWRfcnEuYyBiL2RyaXZlcnMvZ3B1L2RybS9zY2hlZHVsZXIvc2No ZWRfcnEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmNmYzE4ZmM3 YTQxMQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9zY2hlZHVsZXIvc2NoZWRf cnEuYwpAQCAtMCwwICsxLDI2MiBAQAorI2luY2x1ZGUgPGxpbnV4L3JidHJlZS5oPgorCisjaW5j bHVkZSA8ZHJtL2RybV9wcmludC5oPgorI2luY2x1ZGUgPGRybS9ncHVfc2NoZWR1bGVyLmg+CisK KyNpbmNsdWRlICJzY2hlZF9pbnRlcm5hbC5oIgorCitzdGF0aWMgX19hbHdheXNfaW5saW5lIGJv b2wKK2RybV9zY2hlZF9lbnRpdHlfY29tcGFyZV9iZWZvcmUoc3RydWN0IHJiX25vZGUgKmEsIGNv bnN0IHN0cnVjdCByYl9ub2RlICpiKQoreworCXN0cnVjdCBkcm1fc2NoZWRfZW50aXR5ICplYSA9 CisJCXJiX2VudHJ5KChhKSwgc3RydWN0IGRybV9zY2hlZF9lbnRpdHksIHJiX3RyZWVfbm9kZSk7 CisJc3RydWN0IGRybV9zY2hlZF9lbnRpdHkgKmViID0KKwkJcmJfZW50cnkoKGIpLCBzdHJ1Y3Qg ZHJtX3NjaGVkX2VudGl0eSwgcmJfdHJlZV9ub2RlKTsKKworCXJldHVybiBrdGltZV9iZWZvcmUo ZWEtPm9sZGVzdF9qb2Jfd2FpdGluZywgZWItPm9sZGVzdF9qb2Jfd2FpdGluZyk7Cit9CisKK3N0 YXRpYyB2b2lkIGRybV9zY2hlZF9ycV9yZW1vdmVfZmlmb19sb2NrZWQoc3RydWN0IGRybV9zY2hl ZF9lbnRpdHkgKmVudGl0eSwKKwkJCQkJICAgIHN0cnVjdCBkcm1fc2NoZWRfcnEgKnJxKQorewor CWlmICghUkJfRU1QVFlfTk9ERSgmZW50aXR5LT5yYl90cmVlX25vZGUpKSB7CisJCXJiX2VyYXNl X2NhY2hlZCgmZW50aXR5LT5yYl90cmVlX25vZGUsICZycS0+cmJfdHJlZV9yb290KTsKKwkJUkJf Q0xFQVJfTk9ERSgmZW50aXR5LT5yYl90cmVlX25vZGUpOworCX0KK30KKworc3RhdGljIHZvaWQg ZHJtX3NjaGVkX3JxX3VwZGF0ZV9maWZvX2xvY2tlZChzdHJ1Y3QgZHJtX3NjaGVkX2VudGl0eSAq ZW50aXR5LAorCQkJCQkgICAgc3RydWN0IGRybV9zY2hlZF9ycSAqcnEsCisJCQkJCSAgICBrdGlt ZV90IHRzKQoreworCS8qCisJICogQm90aCBsb2NrcyBuZWVkIHRvIGJlIGdyYWJiZWQsIG9uZSB0 byBwcm90ZWN0IGZyb20gZW50aXR5LT5ycSBjaGFuZ2UKKwkgKiBmb3IgZW50aXR5IGZyb20gd2l0 aGluIGNvbmN1cnJlbnQgZHJtX3NjaGVkX2VudGl0eV9zZWxlY3RfcnEgYW5kIHRoZQorCSAqIG90 aGVyIHRvIHVwZGF0ZSB0aGUgcmIgdHJlZSBzdHJ1Y3R1cmUuCisJICovCisJbG9ja2RlcF9hc3Nl cnRfaGVsZCgmZW50aXR5LT5sb2NrKTsKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZycS0+bG9jayk7 CisKKwlkcm1fc2NoZWRfcnFfcmVtb3ZlX2ZpZm9fbG9ja2VkKGVudGl0eSwgcnEpOworCisJZW50 aXR5LT5vbGRlc3Rfam9iX3dhaXRpbmcgPSB0czsKKworCXJiX2FkZF9jYWNoZWQoJmVudGl0eS0+ cmJfdHJlZV9ub2RlLCAmcnEtPnJiX3RyZWVfcm9vdCwKKwkJICAgICAgZHJtX3NjaGVkX2VudGl0 eV9jb21wYXJlX2JlZm9yZSk7Cit9CisKKy8qKgorICogZHJtX3NjaGVkX3JxX2luaXQgLSBpbml0 aWFsaXplIGEgZ2l2ZW4gcnVuIHF1ZXVlIHN0cnVjdAorICogQHNjaGVkOiBzY2hlZHVsZXIgaW5z dGFuY2UgdG8gYXNzb2NpYXRlIHdpdGggdGhpcyBydW4gcXVldWUKKyAqIEBycTogc2NoZWR1bGVy IHJ1biBxdWV1ZQorICoKKyAqIEluaXRpYWxpemVzIGEgc2NoZWR1bGVyIHJ1bnF1ZXVlLgorICov Cit2b2lkIGRybV9zY2hlZF9ycV9pbml0KHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQs CisJCSAgICAgICBzdHJ1Y3QgZHJtX3NjaGVkX3JxICpycSkKK3sKKwlzcGluX2xvY2tfaW5pdCgm cnEtPmxvY2spOworCUlOSVRfTElTVF9IRUFEKCZycS0+ZW50aXRpZXMpOworCXJxLT5yYl90cmVl X3Jvb3QgPSBSQl9ST09UX0NBQ0hFRDsKKwlycS0+c2NoZWQgPSBzY2hlZDsKK30KKworLyoqCisg KiBkcm1fc2NoZWRfcnFfYWRkX2VudGl0eSAtIGFkZCBhbiBlbnRpdHkKKyAqIEBlbnRpdHk6IHNj aGVkdWxlciBlbnRpdHkKKyAqIEB0czogc3VibWlzc2lvbiB0aW1lc3RhbXAKKyAqCisgKiBBZGRz IGEgc2NoZWR1bGVyIGVudGl0eSB0byB0aGUgcnVuIHF1ZXVlLgorICoKKyAqIFJldHVybjogRFJN IHNjaGVkdWxlciBzZWxlY3RlZCB0byBoYW5kbGUgdGhpcyBlbnRpdHkgb3IgTlVMTCBpZiBlbnRp dHkgaGFzCisgKiBiZWVuIHN0b3BwZWQgYW5kIGNhbm5vdCBiZSBzdWJtaXR0ZWQgdG8uCisgKi8K K3N0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqCitkcm1fc2NoZWRfcnFfYWRkX2VudGl0eShzdHJ1 Y3QgZHJtX3NjaGVkX2VudGl0eSAqZW50aXR5LCBrdGltZV90IHRzKQoreworCXN0cnVjdCBkcm1f Z3B1X3NjaGVkdWxlciAqc2NoZWQ7CisJc3RydWN0IGRybV9zY2hlZF9ycSAqcnE7CisKKwkvKiBB ZGQgdGhlIGVudGl0eSB0byB0aGUgcnVuIHF1ZXVlICovCisJc3Bpbl9sb2NrKCZlbnRpdHktPmxv Y2spOworCWlmIChlbnRpdHktPnN0b3BwZWQpIHsKKwkJc3Bpbl91bmxvY2soJmVudGl0eS0+bG9j ayk7CisKKwkJRFJNX0VSUk9SKCJUcnlpbmcgdG8gcHVzaCB0byBhIGtpbGxlZCBlbnRpdHlcbiIp OworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwlycSA9IGVudGl0eS0+cnE7CisJc3Bpbl9sb2NrKCZy cS0+bG9jayk7CisJc2NoZWQgPSBycS0+c2NoZWQ7CisKKwlpZiAobGlzdF9lbXB0eSgmZW50aXR5 LT5saXN0KSkgeworCQlhdG9taWNfaW5jKHNjaGVkLT5zY29yZSk7CisJCWxpc3RfYWRkX3RhaWwo JmVudGl0eS0+bGlzdCwgJnJxLT5lbnRpdGllcyk7CisJfQorCisJaWYgKGRybV9zY2hlZF9wb2xp Y3kgPT0gRFJNX1NDSEVEX1BPTElDWV9GSUZPKQorCQlkcm1fc2NoZWRfcnFfdXBkYXRlX2ZpZm9f bG9ja2VkKGVudGl0eSwgcnEsIHRzKTsKKworCXNwaW5fdW5sb2NrKCZycS0+bG9jayk7CisJc3Bp bl91bmxvY2soJmVudGl0eS0+bG9jayk7CisKKwlyZXR1cm4gc2NoZWQ7Cit9CisKKy8qKgorICog ZHJtX3NjaGVkX3JxX3JlbW92ZV9lbnRpdHkgLSByZW1vdmUgYW4gZW50aXR5CisgKiBAcnE6IHNj aGVkdWxlciBydW4gcXVldWUKKyAqIEBlbnRpdHk6IHNjaGVkdWxlciBlbnRpdHkKKyAqCisgKiBS ZW1vdmVzIGEgc2NoZWR1bGVyIGVudGl0eSBmcm9tIHRoZSBydW4gcXVldWUuCisgKi8KK3ZvaWQg ZHJtX3NjaGVkX3JxX3JlbW92ZV9lbnRpdHkoc3RydWN0IGRybV9zY2hlZF9ycSAqcnEsCisJCQkJ c3RydWN0IGRybV9zY2hlZF9lbnRpdHkgKmVudGl0eSkKK3sKKwlsb2NrZGVwX2Fzc2VydF9oZWxk KCZlbnRpdHktPmxvY2spOworCisJaWYgKGxpc3RfZW1wdHkoJmVudGl0eS0+bGlzdCkpCisJCXJl dHVybjsKKworCXNwaW5fbG9jaygmcnEtPmxvY2spOworCisJYXRvbWljX2RlYyhycS0+c2NoZWQt PnNjb3JlKTsKKwlsaXN0X2RlbF9pbml0KCZlbnRpdHktPmxpc3QpOworCisJaWYgKHJxLT5jdXJy ZW50X2VudGl0eSA9PSBlbnRpdHkpCisJCXJxLT5jdXJyZW50X2VudGl0eSA9IE5VTEw7CisKKwlp ZiAoZHJtX3NjaGVkX3BvbGljeSA9PSBEUk1fU0NIRURfUE9MSUNZX0ZJRk8pCisJCWRybV9zY2hl ZF9ycV9yZW1vdmVfZmlmb19sb2NrZWQoZW50aXR5LCBycSk7CisKKwlzcGluX3VubG9jaygmcnEt PmxvY2spOworfQorCisvKioKKyAqIGRybV9zY2hlZF9ycV9wb3BfZW50aXR5IC0gcG9wcyBhbiBl bnRpdHkKKyAqIEBlbnRpdHk6IHNjaGVkdWxlciBlbnRpdHkKKyAqCisgKiBUbyBiZSBjYWxsZWQg ZXZlcnkgdGltZSBhZnRlciBhIGpvYiBpcyBwb3BwZWQgZnJvbSB0aGUgZW50aXR5LgorICovCit2 b2lkIGRybV9zY2hlZF9ycV9wb3BfZW50aXR5KHN0cnVjdCBkcm1fc2NoZWRfZW50aXR5ICplbnRp dHkpCit7CisJLyoKKwkgKiBVcGRhdGUgdGhlIGVudGl0eSdzIGxvY2F0aW9uIGluIHRoZSBtaW4g aGVhcCBhY2NvcmRpbmcgdG8KKwkgKiB0aGUgdGltZXN0YW1wIG9mIHRoZSBuZXh0IGpvYiwgaWYg YW55LgorCSAqLworCWlmIChkcm1fc2NoZWRfcG9saWN5ID09IERSTV9TQ0hFRF9QT0xJQ1lfRklG TykgeworCQlzdHJ1Y3QgZHJtX3NjaGVkX2pvYiAqbmV4dDsKKworCQluZXh0ID0gZHJtX3NjaGVk X2VudGl0eV9xdWV1ZV9wZWVrKGVudGl0eSk7CisJCWlmIChuZXh0KSB7CisJCQlzdHJ1Y3QgZHJt X3NjaGVkX3JxICpycTsKKworCQkJc3Bpbl9sb2NrKCZlbnRpdHktPmxvY2spOworCQkJcnEgPSBl bnRpdHktPnJxOworCQkJc3Bpbl9sb2NrKCZycS0+bG9jayk7CisJCQlkcm1fc2NoZWRfcnFfdXBk YXRlX2ZpZm9fbG9ja2VkKGVudGl0eSwgcnEsCisJCQkJCQkJbmV4dC0+c3VibWl0X3RzKTsKKwkJ CXNwaW5fdW5sb2NrKCZycS0+bG9jayk7CisJCQlzcGluX3VubG9jaygmZW50aXR5LT5sb2NrKTsK KwkJfQorCX0KK30KKworLyoqCisgKiBkcm1fc2NoZWRfcnFfc2VsZWN0X2VudGl0eV9yciAtIFNl bGVjdCBhbiBlbnRpdHkgd2hpY2ggY291bGQgcHJvdmlkZSBhIGpvYiB0byBydW4KKyAqCisgKiBA c2NoZWQ6IHRoZSBncHUgc2NoZWR1bGVyCisgKiBAcnE6IHNjaGVkdWxlciBydW4gcXVldWUgdG8g Y2hlY2suCisgKgorICogVHJ5IHRvIGZpbmQgdGhlIG5leHQgcmVhZHkgZW50aXR5LgorICoKKyAq IFJldHVybiBhbiBlbnRpdHkgaWYgb25lIGlzIGZvdW5kOyByZXR1cm4gYW4gZXJyb3ItcG9pbnRl ciAoIU5VTEwpIGlmIGFuCisgKiBlbnRpdHkgd2FzIHJlYWR5LCBidXQgdGhlIHNjaGVkdWxlciBo YWQgaW5zdWZmaWNpZW50IGNyZWRpdHMgdG8gYWNjb21tb2RhdGUKKyAqIGl0cyBqb2I7IHJldHVy biBOVUxMLCBpZiBubyByZWFkeSBlbnRpdHkgd2FzIGZvdW5kLgorICovCitzdHJ1Y3QgZHJtX3Nj aGVkX2VudGl0eSAqCitkcm1fc2NoZWRfcnFfc2VsZWN0X2VudGl0eV9ycihzdHJ1Y3QgZHJtX2dw dV9zY2hlZHVsZXIgKnNjaGVkLAorCQkJICAgICAgc3RydWN0IGRybV9zY2hlZF9ycSAqcnEpCit7 CisJc3RydWN0IGRybV9zY2hlZF9lbnRpdHkgKmVudGl0eTsKKworCXNwaW5fbG9jaygmcnEtPmxv Y2spOworCisJZW50aXR5ID0gcnEtPmN1cnJlbnRfZW50aXR5OworCWlmIChlbnRpdHkpIHsKKwkJ bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZShlbnRpdHksICZycS0+ZW50aXRpZXMsIGxpc3Qp IHsKKwkJCWlmIChkcm1fc2NoZWRfZW50aXR5X2lzX3JlYWR5KGVudGl0eSkpCisJCQkJZ290byBm b3VuZDsKKwkJfQorCX0KKworCWxpc3RfZm9yX2VhY2hfZW50cnkoZW50aXR5LCAmcnEtPmVudGl0 aWVzLCBsaXN0KSB7CisJCWlmIChkcm1fc2NoZWRfZW50aXR5X2lzX3JlYWR5KGVudGl0eSkpCisJ CQlnb3RvIGZvdW5kOworCisJCWlmIChlbnRpdHkgPT0gcnEtPmN1cnJlbnRfZW50aXR5KQorCQkJ YnJlYWs7CisJfQorCisJc3Bpbl91bmxvY2soJnJxLT5sb2NrKTsKKworCXJldHVybiBOVUxMOwor Citmb3VuZDoKKwlpZiAoIWRybV9zY2hlZF9jYW5fcXVldWUoc2NoZWQsIGVudGl0eSkpIHsKKwkJ LyoKKwkJICogSWYgc2NoZWR1bGVyIGNhbm5vdCB0YWtlIG1vcmUgam9icyBzaWduYWwgdGhlIGNh bGxlciB0byBub3QKKwkJICogY29uc2lkZXIgbG93ZXIgcHJpb3JpdHkgcXVldWVzLgorCQkgKi8K KwkJZW50aXR5ID0gRVJSX1BUUigtRU5PU1BDKTsKKwl9IGVsc2UgeworCQlycS0+Y3VycmVudF9l bnRpdHkgPSBlbnRpdHk7CisJCXJlaW5pdF9jb21wbGV0aW9uKCZlbnRpdHktPmVudGl0eV9pZGxl KTsKKwl9CisKKwlzcGluX3VubG9jaygmcnEtPmxvY2spOworCisJcmV0dXJuIGVudGl0eTsKK30K KworLyoqCisgKiBkcm1fc2NoZWRfcnFfc2VsZWN0X2VudGl0eV9maWZvIC0gU2VsZWN0IGFuIGVu dGl0eSB3aGljaCBwcm92aWRlcyBhIGpvYiB0byBydW4KKyAqCisgKiBAc2NoZWQ6IHRoZSBncHUg c2NoZWR1bGVyCisgKiBAcnE6IHNjaGVkdWxlciBydW4gcXVldWUgdG8gY2hlY2suCisgKgorICog RmluZCBvbGRlc3Qgd2FpdGluZyByZWFkeSBlbnRpdHkuCisgKgorICogUmV0dXJuIGFuIGVudGl0 eSBpZiBvbmUgaXMgZm91bmQ7IHJldHVybiBhbiBlcnJvci1wb2ludGVyICghTlVMTCkgaWYgYW4K KyAqIGVudGl0eSB3YXMgcmVhZHksIGJ1dCB0aGUgc2NoZWR1bGVyIGhhZCBpbnN1ZmZpY2llbnQg Y3JlZGl0cyB0byBhY2NvbW1vZGF0ZQorICogaXRzIGpvYjsgcmV0dXJuIE5VTEwsIGlmIG5vIHJl YWR5IGVudGl0eSB3YXMgZm91bmQuCisgKi8KK3N0cnVjdCBkcm1fc2NoZWRfZW50aXR5ICoKK2Ry bV9zY2hlZF9ycV9zZWxlY3RfZW50aXR5X2ZpZm8oc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpz Y2hlZCwKKwkJCQlzdHJ1Y3QgZHJtX3NjaGVkX3JxICpycSkKK3sKKwlzdHJ1Y3QgcmJfbm9kZSAq cmI7CisKKwlzcGluX2xvY2soJnJxLT5sb2NrKTsKKwlmb3IgKHJiID0gcmJfZmlyc3RfY2FjaGVk KCZycS0+cmJfdHJlZV9yb290KTsgcmI7IHJiID0gcmJfbmV4dChyYikpIHsKKwkJc3RydWN0IGRy bV9zY2hlZF9lbnRpdHkgKmVudGl0eTsKKworCQllbnRpdHkgPSByYl9lbnRyeShyYiwgc3RydWN0 IGRybV9zY2hlZF9lbnRpdHksIHJiX3RyZWVfbm9kZSk7CisJCWlmIChkcm1fc2NoZWRfZW50aXR5 X2lzX3JlYWR5KGVudGl0eSkpIHsKKwkJCS8qIElmIHdlIGNhbid0IHF1ZXVlIHlldCwgcHJlc2Vy dmUgdGhlIGN1cnJlbnQgZW50aXR5IGluCisJCQkgKiB0ZXJtcyBvZiBmYWlybmVzcy4KKwkJCSAq LworCQkJaWYgKCFkcm1fc2NoZWRfY2FuX3F1ZXVlKHNjaGVkLCBlbnRpdHkpKSB7CisJCQkJc3Bp bl91bmxvY2soJnJxLT5sb2NrKTsKKwkJCQlyZXR1cm4gRVJSX1BUUigtRU5PU1BDKTsKKwkJCX0K KworCQkJcmVpbml0X2NvbXBsZXRpb24oJmVudGl0eS0+ZW50aXR5X2lkbGUpOworCQkJYnJlYWs7 CisJCX0KKwl9CisJc3Bpbl91bmxvY2soJnJxLT5sb2NrKTsKKworCXJldHVybiByYiA/IHJiX2Vu dHJ5KHJiLCBzdHJ1Y3QgZHJtX3NjaGVkX2VudGl0eSwgcmJfdHJlZV9ub2RlKSA6IE5VTEw7Cit9 Ci0tIAoyLjUyLjAKCg==