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 11923EFB7F9 for ; Tue, 24 Feb 2026 07:57:52 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 8057410E4D2; Tue, 24 Feb 2026 07:57:51 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.b="arou11wA"; dkim-atps=neutral Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by gabe.freedesktop.org (Postfix) with ESMTPS id 621C58921E for ; Tue, 24 Feb 2026 07:57:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771919868; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Ubz5WAMKhrtnkZnzIk4R7uLZr/Dhys3hck7R3zRbUlU=; b=arou11wANS5KECndVCZpFwvcS5E679b8OHHFatyyzKcnamcGnpfk2WcC6cbftm1hQz7hFY jmsGepdGpZGm5Qzt8cFOtaG/PGSXhWyhijXoK3/kueO2X9si89L1FtxA8av3Ftbx9+g1T9 ns1ZEuHwuJIcL5JaQfxEgVoTcPPIL/M= Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-128-qrsgtJnKPW6YkYR9y2AElw-1; Tue, 24 Feb 2026 02:57:44 -0500 X-MC-Unique: qrsgtJnKPW6YkYR9y2AElw-1 X-Mimecast-MFC-AGG-ID: qrsgtJnKPW6YkYR9y2AElw_1771919862 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 1550A19560A7; Tue, 24 Feb 2026 07:57:42 +0000 (UTC) Received: from [192.168.1.153] (unknown [10.45.225.2]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 8FDFF3000707; Tue, 24 Feb 2026 07:57:36 +0000 (UTC) From: Albert Esteve Date: Tue, 24 Feb 2026 08:57:33 +0100 Subject: [PATCH] dma-buf: heaps: Add Coherent heap to dmabuf heaps MIME-Version: 1.0 Message-Id: <20260224-b4-dmabuf-heap-coherent-rmem-v1-1-dffef43298ac@redhat.com> X-B4-Tracking: v=1; b=H4sIAAAAAAAC/x3MQQqDMBAF0KvIrDugYxHiVaSLaH6aWSTKpC0F8 e4NXb7NO6nCFJXm7iTDR6vupWG4dbQlX55gDc0kvUy9yMjrnUP26ztygj942xMM5cWWkdkNMYx OJh/hqBWHIer33y+P6/oBAbRGmG4AAAA= X-Change-ID: 20260223-b4-dmabuf-heap-coherent-rmem-91fd3926afe9 To: Sumit Semwal , Benjamin Gaignard , Brian Starkey , John Stultz , "T.J. Mercier" , =?utf-8?q?Christian_K=C3=B6nig?= , Marek Szyprowski , Robin Murphy Cc: linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, iommu@lists.linux.dev, echanude@redhat.com, mripard@redhat.com, Albert Esteve X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-MFC-PROC-ID: 0n--2r31V1u8hhB4GVajOEXwMXr9d2zbQe-GsP03RKw_1771919862 X-Mimecast-Originator: redhat.com 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" QWRkIGEgZG1hLWJ1ZiBoZWFwIGZvciBEVCBjb2hlcmVudCByZXNlcnZlZC1tZW1vcnkKKGkuZS4s ICdzaGFyZWQtZG1hLXBvb2wnIHdpdGhvdXQgJ3JldXNhYmxlJyBwcm9wZXJ0eSksCmV4cG9zaW5n IG9uZSBoZWFwIHBlciByZWdpb24gZm9yIHVzZXJzcGFjZSBidWZmZXJzLgoKVGhlIGhlYXAgYmlu ZHMgYSBzeW50aGV0aWMgcGxhdGZvcm0gZGV2aWNlIHRvIGVhY2ggcmVnaW9uCnNvIGNvaGVyZW50 IGFsbG9jYXRpb25zIHVzZSB0aGUgY29ycmVjdCBkZXYtPmRtYV9tZW0sCmFuZCBpdCBkZWZlcnMg cmVnaXN0cmF0aW9uIHVudGlsIGxhdGVfaW5pdGNhbGwgd2hlbgpub3JtYWwgYWxsb2NhdG9yIGFy ZSBhdmFpbGFibGUuCgpUaGlzIHBhdGNoIGluY2x1ZGVzIGNoYXJnaW5nIG9mIHRoZSBjb2hlcmVu dCBoZWFwCmFsbG9jYXRvciB0byB0aGUgZG1lbSBjZ3JvdXAuCgpTaWduZWQtb2ZmLWJ5OiBBbGJl cnQgRXN0ZXZlIDxhZXN0ZXZlQHJlZGhhdC5jb20+Ci0tLQpUaGlzIHBhdGNoIGludHJvZHVjZXMg YSBuZXcgZHJpdmVyIHRvIGV4cG9zZSBEVCBjb2hlcmVudCByZXNlcnZlZC1tZW1vcnkKcmVnaW9u cyBhcyBkbWEtYnVmIGhlYXBzLCBhbGxvd2luZyB1c2Vyc3BhY2UgYnVmZmVycyB0byBiZSBjcmVh dGVkLgoKU2luY2UgdGhlc2UgcmVnaW9ucyBhcmUgZGV2aWNlLWRlcGVuZGVudCwgd2UgYmluZCBh IHN5bnRoZXRpYyBwbGF0Zm9ybQpkZXZpY2UgdG8gZWFjaCByZWdpb24gc28gY29oZXJlbnQgYWxs b2NhdGlvbnMgdXNlIHRoZSBjb3JyZWN0IGRldi0+ZG1hX21lbS4KCkZvbGxvd2luZyBFcmlj4oCZ cyBbMV0gYW5kIE1heGltZeKAmXMgWzJdIHdvcmsgb24gY2hhcmdpbmcgRE1BIGJ1ZmZlcnMKYWxs b2NhdGVkIGZyb20gdXNlcnNwYWNlIHRvIGNncm91cHMgKGRtZW0pLCB0aGlzIHBhdGNoIGFkZHMg dGhlIHNhbWUKY2hhcmdpbmcgcGF0dGVybiB1c2VkIGJ5IENNQSBoZWFwcyBwYXRjaC4gQ2hhcmdp bmcgaXMgZG9uZSBvbmx5IHRocm91Z2gKdGhlIGRtYS1idWYgaGVhcCBpbnRlcmZhY2Ugc28gaXQg Y2FuIGJlIGF0dHJpYnV0ZWQgdG8gYSB1c2Vyc3BhY2UgYWxsb2NhdG9yLgoKVGhpcyBhbGxvd3Mg ZWFjaCBkZXZpY2Utc3BlY2lmaWMgcmVzZXJ2ZWQtbWVtb3J5IHJlZ2lvbiB0byBlbmZvcmNlIGl0 cwpvd24gbGltaXRzLgoKWzFdIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2FsbC8yMDI2MDIxOC1k bWFidWYtaGVhcC1jbWEtZG1lbS12Mi0wLWIyNDk4ODZmYjdiMkByZWRoYXQuY29tLwpbMl0gaHR0 cHM6Ly9sb3JlLmtlcm5lbC5vcmcvYWxsLzIwMjUwMzEwLWRtZW0tY2dyb3Vwcy12MS0wLTI5ODRj MWJjOTMxMkBrZXJuZWwub3JnLwotLS0KIGRyaXZlcnMvZG1hLWJ1Zi9oZWFwcy9LY29uZmlnICAg ICAgICAgfCAgMTcgKysKIGRyaXZlcnMvZG1hLWJ1Zi9oZWFwcy9NYWtlZmlsZSAgICAgICAgfCAg IDEgKwogZHJpdmVycy9kbWEtYnVmL2hlYXBzL2NvaGVyZW50X2hlYXAuYyB8IDQ4NSArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCiBpbmNsdWRlL2xpbnV4L2RtYS1oZWFwLmggICAg ICAgICAgICAgIHwgIDExICsKIGtlcm5lbC9kbWEvY29oZXJlbnQuYyAgICAgICAgICAgICAgICAg fCAgIDkgKwogNSBmaWxlcyBjaGFuZ2VkLCA1MjMgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZG1hLWJ1Zi9oZWFwcy9LY29uZmlnIGIvZHJpdmVycy9kbWEtYnVmL2hlYXBzL0tj b25maWcKaW5kZXggYTVlZWYwNmM0MjI2NC4uOTM3NjVkY2ExNjRlMyAxMDA2NDQKLS0tIGEvZHJp dmVycy9kbWEtYnVmL2hlYXBzL0tjb25maWcKKysrIGIvZHJpdmVycy9kbWEtYnVmL2hlYXBzL0tj b25maWcKQEAgLTEyLDMgKzEyLDIwIEBAIGNvbmZpZyBETUFCVUZfSEVBUFNfQ01BCiAJICBDaG9v c2UgdGhpcyBvcHRpb24gdG8gZW5hYmxlIGRtYS1idWYgQ01BIGhlYXAuIFRoaXMgaGVhcCBpcyBi YWNrZWQKIAkgIGJ5IHRoZSBDb250aWd1b3VzIE1lbW9yeSBBbGxvY2F0b3IgKENNQSkuIElmIHlv dXIgc3lzdGVtIGhhcyB0aGVzZQogCSAgcmVnaW9ucywgeW91IHNob3VsZCBzYXkgWSBoZXJlLgor Citjb25maWcgRE1BQlVGX0hFQVBTX0NPSEVSRU5UCisJYm9vbCAiRE1BLUJVRiBDb2hlcmVudCBS ZXNlcnZlZC1NZW1vcnkgSGVhcCIKKwlkZXBlbmRzIG9uIERNQUJVRl9IRUFQUyAmJiBPRl9SRVNF UlZFRF9NRU0gJiYgRE1BX0RFQ0xBUkVfQ09IRVJFTlQKKwloZWxwCisJICBDaG9vc2UgdGhpcyBv cHRpb24gdG8gZW5hYmxlIGNvaGVyZW50IHJlc2VydmVkLW1lbW9yeSBkbWEtYnVmIGhlYXBzLgor CSAgVGhpcyBoZWFwIGlzIGJhY2tlZCBieSBub24tcmV1c2FibGUgRFQgInNoYXJlZC1kbWEtcG9v bCIgcmVnaW9ucy4KKwkgIElmIHlvdXIgc3lzdGVtIGRlZmluZXMgY29oZXJlbnQgcmVzZXJ2ZWQt bWVtb3J5IHJlZ2lvbnMsIHlvdSBzaG91bGQKKwkgIHNheSBZIGhlcmUuCisKK2NvbmZpZyBDT0hF UkVOVF9BUkVBU19ERUZFUlJFRAorCWludCAiTWF4IGRlZmVycmVkIGNvaGVyZW50IHJlc2VydmVk LW1lbW9yeSByZWdpb25zIgorCWRlcGVuZHMgb24gRE1BQlVGX0hFQVBTX0NPSEVSRU5UCisJZGVm YXVsdCAxNgorCWhlbHAKKwkgIE1heGltdW0gbnVtYmVyIG9mIGNvaGVyZW50IHJlc2VydmVkLW1l bW9yeSByZWdpb25zIHRoYXQgY2FuIGJlCisJICBkZWZlcnJlZCBmb3IgbGF0ZXIgcmVnaXN0cmF0 aW9uIGR1cmluZyBlYXJseSBib290LgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEtYnVmL2hlYXBz L01ha2VmaWxlIGIvZHJpdmVycy9kbWEtYnVmL2hlYXBzL01ha2VmaWxlCmluZGV4IDk3NDQ2Nzc5 MTAzMmYuLjk2YmRhN2E2NWYwNDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZG1hLWJ1Zi9oZWFwcy9N YWtlZmlsZQorKysgYi9kcml2ZXJzL2RtYS1idWYvaGVhcHMvTWFrZWZpbGUKQEAgLTEsMyArMSw0 IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiBvYmotJChDT05GSUdfRE1B QlVGX0hFQVBTX1NZU1RFTSkJKz0gc3lzdGVtX2hlYXAubwogb2JqLSQoQ09ORklHX0RNQUJVRl9I RUFQU19DTUEpCQkrPSBjbWFfaGVhcC5vCitvYmotJChDT05GSUdfRE1BQlVGX0hFQVBTX0NPSEVS RU5UKQkrPSBjb2hlcmVudF9oZWFwLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hLWJ1Zi9oZWFw cy9jb2hlcmVudF9oZWFwLmMgYi9kcml2ZXJzL2RtYS1idWYvaGVhcHMvY29oZXJlbnRfaGVhcC5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjg3MGIyYjg5YWVmY2IK LS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2RtYS1idWYvaGVhcHMvY29oZXJlbnRfaGVhcC5j CkBAIC0wLDAgKzEsNDg1IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAor LyoKKyAqIERNQUJVRiBoZWFwIGZvciBjb2hlcmVudCByZXNlcnZlZC1tZW1vcnkgcmVnaW9ucwor ICoKKyAqIENvcHlyaWdodCAoQykgMjAyNiBSZWQgSGF0LCBJbmMuCisgKiBBdXRob3I6IEFsYmVy dCBFc3RldmUgPGFlc3RldmVAcmVkaGF0LmNvbT4KKyAqCisgKi8KKworI2luY2x1ZGUgPGxpbnV4 L2Nncm91cF9kbWVtLmg+CisjaW5jbHVkZSA8bGludXgvZG1hLWhlYXAuaD4KKyNpbmNsdWRlIDxs aW51eC9kbWEtYnVmLmg+CisjaW5jbHVkZSA8bGludXgvZG1hLW1hcHBpbmcuaD4KKyNpbmNsdWRl IDxsaW51eC9lcnIuaD4KKyNpbmNsdWRlIDxsaW51eC9oaWdobWVtLmg+CisjaW5jbHVkZSA8bGlu dXgvaW9zeXMtbWFwLmg+CisjaW5jbHVkZSA8bGludXgvb2ZfcmVzZXJ2ZWRfbWVtLmg+CisjaW5j bHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvc2NhdHRlcmxp c3QuaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSA8bGludXgvdm1hbGxvYy5o PgorCisjZGVmaW5lIERFRkVSUkVEX0FSRUFTX01BWCBDT05GSUdfQ09IRVJFTlRfQVJFQVNfREVG RVJSRUQKKworLyoKKyAqIEVhcmx5IGluaXQgY2FuJ3QgdXNlIG5vcm1hbCBtZW1vcnkgbWFuYWdl bWVudCB5ZXQgKG1lbWJsb2NrIGlzIHVzZWQKKyAqIGluc3RlYWQpLCBzbyBrZWVwIGEgc21hbGwg ZGVmZXJyZWQgbGlzdCBhbmQgcmV0cnkgYXQgbGF0ZV9pbml0Y2FsbC4KKyAqLworc3RhdGljIHN0 cnVjdCByZXNlcnZlZF9tZW0gKnJtZW1fYXJlYXNfZGVmZXJyZWRbREVGRVJSRURfQVJFQVNfTUFY XTsKK3N0YXRpYyB1bnNpZ25lZCBpbnQgcm1lbV9hcmVhc19kZWZlcnJlZF9udW07CisKK3N0YXRp YyBpbnQgY29oZXJlbnRfaGVhcF9hZGRfZGVmZXJyZWQoc3RydWN0IHJlc2VydmVkX21lbSAqcm1l bSkKK3sKKwlpZiAocm1lbV9hcmVhc19kZWZlcnJlZF9udW0gPj0gREVGRVJSRURfQVJFQVNfTUFY KSB7CisJCXByX3dhcm4oIkRlZmVycmVkIGhlYXAgYXJlYXMgbGlzdCBmdWxsLCBkcm9wcGluZyAl c1xuIiwKKwkJCXJtZW0tPm5hbWUgPyBybWVtLT5uYW1lIDogInVua25vd24iKTsKKwkJcmV0dXJu IC1FSU5WQUw7CisJfQorCXJtZW1fYXJlYXNfZGVmZXJyZWRbcm1lbV9hcmVhc19kZWZlcnJlZF9u dW0rK10gPSBybWVtOworCXJldHVybiAwOworfQorCitzdHJ1Y3QgY29oZXJlbnRfaGVhcCB7CisJ c3RydWN0IGRtYV9oZWFwICpoZWFwOworCXN0cnVjdCByZXNlcnZlZF9tZW0gKnJtZW07CisJY2hh ciAqbmFtZTsKKwlzdHJ1Y3QgZGV2aWNlICpkZXY7CisJc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldjsKKyNpZiBJU19FTkFCTEVEKENPTkZJR19DR1JPVVBfRE1FTSkKKwlzdHJ1Y3QgZG1lbV9j Z3JvdXBfcmVnaW9uICpjZzsKKyNlbmRpZgorfTsKKworc3RydWN0IGNvaGVyZW50X2hlYXBfYnVm ZmVyIHsKKwlzdHJ1Y3QgY29oZXJlbnRfaGVhcCAqaGVhcDsKKwlzdHJ1Y3QgbGlzdF9oZWFkIGF0 dGFjaG1lbnRzOworCXN0cnVjdCBtdXRleCBsb2NrOworCXVuc2lnbmVkIGxvbmcgbGVuOworCWRt YV9hZGRyX3QgZG1hX2FkZHI7CisJdm9pZCAqYWxsb2NfdmFkZHI7CisJc3RydWN0IHBhZ2UgKipw YWdlczsKKwlwZ29mZl90IHBhZ2Vjb3VudDsKKwlpbnQgdm1hcF9jbnQ7CisJdm9pZCAqdmFkZHI7 CisjaWYgSVNfRU5BQkxFRChDT05GSUdfQ0dST1VQX0RNRU0pCisJc3RydWN0IGRtZW1fY2dyb3Vw X3Bvb2xfc3RhdGUgKnBvb2w7CisjZW5kaWYKK307CisKK3N0cnVjdCBkbWFfaGVhcF9hdHRhY2ht ZW50IHsKKwlzdHJ1Y3QgZGV2aWNlICpkZXY7CisJc3RydWN0IHNnX3RhYmxlIHRhYmxlOworCXN0 cnVjdCBsaXN0X2hlYWQgbGlzdDsKKwlib29sIG1hcHBlZDsKK307CisKK3N0YXRpYyBpbnQgY29o ZXJlbnRfaGVhcF9hdHRhY2goc3RydWN0IGRtYV9idWYgKmRtYWJ1ZiwKKwkJCQlzdHJ1Y3QgZG1h X2J1Zl9hdHRhY2htZW50ICphdHRhY2htZW50KQoreworCXN0cnVjdCBjb2hlcmVudF9oZWFwX2J1 ZmZlciAqYnVmZmVyID0gZG1hYnVmLT5wcml2OworCXN0cnVjdCBkbWFfaGVhcF9hdHRhY2htZW50 ICphOworCWludCByZXQ7CisKKwlhID0ga3phbGxvY19vYmooKmEpOworCWlmICghYSkKKwkJcmV0 dXJuIC1FTk9NRU07CisKKwlyZXQgPSBzZ19hbGxvY190YWJsZV9mcm9tX3BhZ2VzKCZhLT50YWJs ZSwgYnVmZmVyLT5wYWdlcywKKwkJCQkJYnVmZmVyLT5wYWdlY291bnQsIDAsCisJCQkJCWJ1ZmZl ci0+cGFnZWNvdW50IDw8IFBBR0VfU0hJRlQsCisJCQkJCUdGUF9LRVJORUwpOworCWlmIChyZXQp IHsKKwkJa2ZyZWUoYSk7CisJCXJldHVybiByZXQ7CisJfQorCisJYS0+ZGV2ID0gYXR0YWNobWVu dC0+ZGV2OworCUlOSVRfTElTVF9IRUFEKCZhLT5saXN0KTsKKwlhLT5tYXBwZWQgPSBmYWxzZTsK KworCWF0dGFjaG1lbnQtPnByaXYgPSBhOworCisJbXV0ZXhfbG9jaygmYnVmZmVyLT5sb2NrKTsK KwlsaXN0X2FkZCgmYS0+bGlzdCwgJmJ1ZmZlci0+YXR0YWNobWVudHMpOworCW11dGV4X3VubG9j aygmYnVmZmVyLT5sb2NrKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBjb2hlcmVu dF9oZWFwX2RldGFjaChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLAorCQkJCSBzdHJ1Y3QgZG1hX2J1 Zl9hdHRhY2htZW50ICphdHRhY2htZW50KQoreworCXN0cnVjdCBjb2hlcmVudF9oZWFwX2J1ZmZl ciAqYnVmZmVyID0gZG1hYnVmLT5wcml2OworCXN0cnVjdCBkbWFfaGVhcF9hdHRhY2htZW50ICph ID0gYXR0YWNobWVudC0+cHJpdjsKKworCW11dGV4X2xvY2soJmJ1ZmZlci0+bG9jayk7CisJbGlz dF9kZWwoJmEtPmxpc3QpOworCW11dGV4X3VubG9jaygmYnVmZmVyLT5sb2NrKTsKKworCXNnX2Zy ZWVfdGFibGUoJmEtPnRhYmxlKTsKKwlrZnJlZShhKTsKK30KKworc3RhdGljIHN0cnVjdCBzZ190 YWJsZSAqY29oZXJlbnRfaGVhcF9tYXBfZG1hX2J1ZihzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50 ICphdHRhY2htZW50LAorCQkJCQkJICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rpb24p Cit7CisJc3RydWN0IGRtYV9oZWFwX2F0dGFjaG1lbnQgKmEgPSBhdHRhY2htZW50LT5wcml2Owor CXN0cnVjdCBzZ190YWJsZSAqdGFibGUgPSAmYS0+dGFibGU7CisJaW50IHJldDsKKworCXJldCA9 IGRtYV9tYXBfc2d0YWJsZShhdHRhY2htZW50LT5kZXYsIHRhYmxlLCBkaXJlY3Rpb24sIDApOwor CWlmIChyZXQpCisJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOworCWEtPm1hcHBlZCA9IHRydWU7 CisKKwlyZXR1cm4gdGFibGU7Cit9CisKK3N0YXRpYyB2b2lkIGNvaGVyZW50X2hlYXBfdW5tYXBf ZG1hX2J1ZihzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2htZW50LAorCQkJCQlzdHJ1 Y3Qgc2dfdGFibGUgKnRhYmxlLAorCQkJCQllbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rp b24pCit7CisJc3RydWN0IGRtYV9oZWFwX2F0dGFjaG1lbnQgKmEgPSBhdHRhY2htZW50LT5wcml2 OworCisJYS0+bWFwcGVkID0gZmFsc2U7CisJZG1hX3VubWFwX3NndGFibGUoYXR0YWNobWVudC0+ ZGV2LCB0YWJsZSwgZGlyZWN0aW9uLCAwKTsKK30KKworc3RhdGljIGludCBjb2hlcmVudF9oZWFw X2RtYV9idWZfYmVnaW5fY3B1X2FjY2VzcyhzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLAorCQkJCQkJ ICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisJc3RydWN0IGNvaGVyZW50 X2hlYXBfYnVmZmVyICpidWZmZXIgPSBkbWFidWYtPnByaXY7CisJc3RydWN0IGRtYV9oZWFwX2F0 dGFjaG1lbnQgKmE7CisKKwltdXRleF9sb2NrKCZidWZmZXItPmxvY2spOworCWlmIChidWZmZXIt PnZtYXBfY250KQorCQlpbnZhbGlkYXRlX2tlcm5lbF92bWFwX3JhbmdlKGJ1ZmZlci0+dmFkZHIs IGJ1ZmZlci0+bGVuKTsKKworCWxpc3RfZm9yX2VhY2hfZW50cnkoYSwgJmJ1ZmZlci0+YXR0YWNo bWVudHMsIGxpc3QpIHsKKwkJaWYgKCFhLT5tYXBwZWQpCisJCQljb250aW51ZTsKKwkJZG1hX3N5 bmNfc2d0YWJsZV9mb3JfY3B1KGEtPmRldiwgJmEtPnRhYmxlLCBkaXJlY3Rpb24pOworCX0KKwlt dXRleF91bmxvY2soJmJ1ZmZlci0+bG9jayk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlu dCBjb2hlcmVudF9oZWFwX2RtYV9idWZfZW5kX2NwdV9hY2Nlc3Moc3RydWN0IGRtYV9idWYgKmRt YWJ1ZiwKKwkJCQkJCWVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKwlzdHJ1 Y3QgY29oZXJlbnRfaGVhcF9idWZmZXIgKmJ1ZmZlciA9IGRtYWJ1Zi0+cHJpdjsKKwlzdHJ1Y3Qg ZG1hX2hlYXBfYXR0YWNobWVudCAqYTsKKworCW11dGV4X2xvY2soJmJ1ZmZlci0+bG9jayk7CisJ aWYgKGJ1ZmZlci0+dm1hcF9jbnQpCisJCWZsdXNoX2tlcm5lbF92bWFwX3JhbmdlKGJ1ZmZlci0+ dmFkZHIsIGJ1ZmZlci0+bGVuKTsKKworCWxpc3RfZm9yX2VhY2hfZW50cnkoYSwgJmJ1ZmZlci0+ YXR0YWNobWVudHMsIGxpc3QpIHsKKwkJaWYgKCFhLT5tYXBwZWQpCisJCQljb250aW51ZTsKKwkJ ZG1hX3N5bmNfc2d0YWJsZV9mb3JfZGV2aWNlKGEtPmRldiwgJmEtPnRhYmxlLCBkaXJlY3Rpb24p OworCX0KKwltdXRleF91bmxvY2soJmJ1ZmZlci0+bG9jayk7CisKKwlyZXR1cm4gMDsKK30KKwor c3RhdGljIGludCBjb2hlcmVudF9oZWFwX21tYXAoc3RydWN0IGRtYV9idWYgKmRtYWJ1Ziwgc3Ry dWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCit7CisJc3RydWN0IGNvaGVyZW50X2hlYXBfYnVmZmVy ICpidWZmZXIgPSBkbWFidWYtPnByaXY7CisJc3RydWN0IGNvaGVyZW50X2hlYXAgKmNvaF9oZWFw ID0gYnVmZmVyLT5oZWFwOworCisJcmV0dXJuIGRtYV9tbWFwX2NvaGVyZW50KGNvaF9oZWFwLT5k ZXYsIHZtYSwgYnVmZmVyLT5hbGxvY192YWRkciwKKwkJCQkgYnVmZmVyLT5kbWFfYWRkciwgYnVm ZmVyLT5sZW4pOworfQorCitzdGF0aWMgdm9pZCAqY29oZXJlbnRfaGVhcF9kb192bWFwKHN0cnVj dCBjb2hlcmVudF9oZWFwX2J1ZmZlciAqYnVmZmVyKQoreworCXZvaWQgKnZhZGRyOworCisJdmFk ZHIgPSB2bWFwKGJ1ZmZlci0+cGFnZXMsIGJ1ZmZlci0+cGFnZWNvdW50LCBWTV9NQVAsIFBBR0Vf S0VSTkVMKTsKKwlpZiAoIXZhZGRyKQorCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKKworCXJl dHVybiB2YWRkcjsKK30KKworc3RhdGljIGludCBjb2hlcmVudF9oZWFwX3ZtYXAoc3RydWN0IGRt YV9idWYgKmRtYWJ1Ziwgc3RydWN0IGlvc3lzX21hcCAqbWFwKQoreworCXN0cnVjdCBjb2hlcmVu dF9oZWFwX2J1ZmZlciAqYnVmZmVyID0gZG1hYnVmLT5wcml2OworCXZvaWQgKnZhZGRyOworCWlu dCByZXQgPSAwOworCisJbXV0ZXhfbG9jaygmYnVmZmVyLT5sb2NrKTsKKwlpZiAoYnVmZmVyLT52 bWFwX2NudCkgeworCQlidWZmZXItPnZtYXBfY250Kys7CisJCWlvc3lzX21hcF9zZXRfdmFkZHIo bWFwLCBidWZmZXItPnZhZGRyKTsKKwkJZ290byBvdXQ7CisJfQorCisJdmFkZHIgPSBjb2hlcmVu dF9oZWFwX2RvX3ZtYXAoYnVmZmVyKTsKKwlpZiAoSVNfRVJSKHZhZGRyKSkgeworCQlyZXQgPSBQ VFJfRVJSKHZhZGRyKTsKKwkJZ290byBvdXQ7CisJfQorCisJYnVmZmVyLT52YWRkciA9IHZhZGRy OworCWJ1ZmZlci0+dm1hcF9jbnQrKzsKKwlpb3N5c19tYXBfc2V0X3ZhZGRyKG1hcCwgYnVmZmVy LT52YWRkcik7CitvdXQ6CisJbXV0ZXhfdW5sb2NrKCZidWZmZXItPmxvY2spOworCisJcmV0dXJu IHJldDsKK30KKworc3RhdGljIHZvaWQgY29oZXJlbnRfaGVhcF92dW5tYXAoc3RydWN0IGRtYV9i dWYgKmRtYWJ1Ziwgc3RydWN0IGlvc3lzX21hcCAqbWFwKQoreworCXN0cnVjdCBjb2hlcmVudF9o ZWFwX2J1ZmZlciAqYnVmZmVyID0gZG1hYnVmLT5wcml2OworCisJbXV0ZXhfbG9jaygmYnVmZmVy LT5sb2NrKTsKKwlpZiAoIS0tYnVmZmVyLT52bWFwX2NudCkgeworCQl2dW5tYXAoYnVmZmVyLT52 YWRkcik7CisJCWJ1ZmZlci0+dmFkZHIgPSBOVUxMOworCX0KKwltdXRleF91bmxvY2soJmJ1ZmZl ci0+bG9jayk7CisJaW9zeXNfbWFwX2NsZWFyKG1hcCk7Cit9CisKK3N0YXRpYyB2b2lkIGNvaGVy ZW50X2hlYXBfZG1hX2J1Zl9yZWxlYXNlKHN0cnVjdCBkbWFfYnVmICpkbWFidWYpCit7CisJc3Ry dWN0IGNvaGVyZW50X2hlYXBfYnVmZmVyICpidWZmZXIgPSBkbWFidWYtPnByaXY7CisJc3RydWN0 IGNvaGVyZW50X2hlYXAgKmNvaF9oZWFwID0gYnVmZmVyLT5oZWFwOworCisJaWYgKGJ1ZmZlci0+ dm1hcF9jbnQgPiAwKSB7CisJCVdBUk4oMSwgIiVzOiBidWZmZXIgc3RpbGwgbWFwcGVkIGluIHRo ZSBrZXJuZWxcbiIsIF9fZnVuY19fKTsKKwkJdnVubWFwKGJ1ZmZlci0+dmFkZHIpOworCQlidWZm ZXItPnZhZGRyID0gTlVMTDsKKwkJYnVmZmVyLT52bWFwX2NudCA9IDA7CisJfQorCisJaWYgKGJ1 ZmZlci0+YWxsb2NfdmFkZHIpCisJCWRtYV9mcmVlX2NvaGVyZW50KGNvaF9oZWFwLT5kZXYsIGJ1 ZmZlci0+bGVuLCBidWZmZXItPmFsbG9jX3ZhZGRyLAorCQkJICAgICAgIGJ1ZmZlci0+ZG1hX2Fk ZHIpOworCWtmcmVlKGJ1ZmZlci0+cGFnZXMpOworI2lmIElTX0VOQUJMRUQoQ09ORklHX0NHUk9V UF9ETUVNKQorCWRtZW1fY2dyb3VwX3VuY2hhcmdlKGJ1ZmZlci0+cG9vbCwgYnVmZmVyLT5sZW4p OworI2VuZGlmCisJa2ZyZWUoYnVmZmVyKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkbWFf YnVmX29wcyBjb2hlcmVudF9oZWFwX2J1Zl9vcHMgPSB7CisJLmF0dGFjaCA9IGNvaGVyZW50X2hl YXBfYXR0YWNoLAorCS5kZXRhY2ggPSBjb2hlcmVudF9oZWFwX2RldGFjaCwKKwkubWFwX2RtYV9i dWYgPSBjb2hlcmVudF9oZWFwX21hcF9kbWFfYnVmLAorCS51bm1hcF9kbWFfYnVmID0gY29oZXJl bnRfaGVhcF91bm1hcF9kbWFfYnVmLAorCS5iZWdpbl9jcHVfYWNjZXNzID0gY29oZXJlbnRfaGVh cF9kbWFfYnVmX2JlZ2luX2NwdV9hY2Nlc3MsCisJLmVuZF9jcHVfYWNjZXNzID0gY29oZXJlbnRf aGVhcF9kbWFfYnVmX2VuZF9jcHVfYWNjZXNzLAorCS5tbWFwID0gY29oZXJlbnRfaGVhcF9tbWFw LAorCS52bWFwID0gY29oZXJlbnRfaGVhcF92bWFwLAorCS52dW5tYXAgPSBjb2hlcmVudF9oZWFw X3Z1bm1hcCwKKwkucmVsZWFzZSA9IGNvaGVyZW50X2hlYXBfZG1hX2J1Zl9yZWxlYXNlLAorfTsK Kworc3RhdGljIHN0cnVjdCBkbWFfYnVmICpjb2hlcmVudF9oZWFwX2FsbG9jYXRlKHN0cnVjdCBk bWFfaGVhcCAqaGVhcCwKKwkJCQkJICAgICAgdW5zaWduZWQgbG9uZyBsZW4sCisJCQkJCSAgICAg IHUzMiBmZF9mbGFncywKKwkJCQkJICAgICAgdTY0IGhlYXBfZmxhZ3MpCit7CisJc3RydWN0IGNv aGVyZW50X2hlYXAgKmNvaF9oZWFwOworCXN0cnVjdCBjb2hlcmVudF9oZWFwX2J1ZmZlciAqYnVm ZmVyOworCURFRklORV9ETUFfQlVGX0VYUE9SVF9JTkZPKGV4cF9pbmZvKTsKKwlzaXplX3Qgc2l6 ZSA9IFBBR0VfQUxJR04obGVuKTsKKwlwZ29mZl90IHBhZ2Vjb3VudCA9IHNpemUgPj4gUEFHRV9T SElGVDsKKwlzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmOworCWludCByZXQgPSAtRU5PTUVNOworCXBn b2ZmX3QgcGc7CisKKwljb2hfaGVhcCA9IGRtYV9oZWFwX2dldF9kcnZkYXRhKGhlYXApOworCWlm ICghY29oX2hlYXApCisJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOworCWlmICghY29oX2hlYXAt PmRldikKKwkJcmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7CisKKwlidWZmZXIgPSBremFsbG9jX29i aigqYnVmZmVyKTsKKwlpZiAoIWJ1ZmZlcikKKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CisK KwlJTklUX0xJU1RfSEVBRCgmYnVmZmVyLT5hdHRhY2htZW50cyk7CisJbXV0ZXhfaW5pdCgmYnVm ZmVyLT5sb2NrKTsKKwlidWZmZXItPmxlbiA9IHNpemU7CisJYnVmZmVyLT5oZWFwID0gY29oX2hl YXA7CisJYnVmZmVyLT5wYWdlY291bnQgPSBwYWdlY291bnQ7CisKKyNpZiBJU19FTkFCTEVEKENP TkZJR19DR1JPVVBfRE1FTSkKKwlpZiAobWVtX2FjY291bnRpbmcpIHsKKwkJcmV0ID0gZG1lbV9j Z3JvdXBfdHJ5X2NoYXJnZShjb2hfaGVhcC0+Y2csIHNpemUsCisJCQkJCSAgICAgJmJ1ZmZlci0+ cG9vbCwgTlVMTCk7CisJCWlmIChyZXQpCisJCQlnb3RvIGZyZWVfYnVmZmVyOworCX0KKyNlbmRp ZgorCisJYnVmZmVyLT5hbGxvY192YWRkciA9IGRtYV9hbGxvY19jb2hlcmVudChjb2hfaGVhcC0+ ZGV2LCBidWZmZXItPmxlbiwKKwkJCQkJCSAmYnVmZmVyLT5kbWFfYWRkciwgR0ZQX0tFUk5FTCk7 CisJaWYgKCFidWZmZXItPmFsbG9jX3ZhZGRyKSB7CisJCXJldCA9IC1FTk9NRU07CisjaWYgSVNf RU5BQkxFRChDT05GSUdfQ0dST1VQX0RNRU0pCisJCWdvdG8gdW5jaGFyZ2VfY2dyb3VwOworI2Vs c2UKKwkJZ290byBmcmVlX2J1ZmZlcjsKKyNlbmRpZgorCX0KKworCWJ1ZmZlci0+cGFnZXMgPSBr bWFsbG9jX2FycmF5KHBhZ2Vjb3VudCwgc2l6ZW9mKCpidWZmZXItPnBhZ2VzKSwKKwkJCQkgICAg ICBHRlBfS0VSTkVMKTsKKwlpZiAoIWJ1ZmZlci0+cGFnZXMpIHsKKwkJcmV0ID0gLUVOT01FTTsK KwkJZ290byBmcmVlX2RtYTsKKwl9CisKKwlmb3IgKHBnID0gMDsgcGcgPCBwYWdlY291bnQ7IHBn KyspCisJCWJ1ZmZlci0+cGFnZXNbcGddID0gdmlydF90b19wYWdlKChjaGFyICopYnVmZmVyLT5h bGxvY192YWRkciArCisJCQkJCQkgKHBnICogUEFHRV9TSVpFKSk7CisKKwkvKiBjcmVhdGUgdGhl IGRtYWJ1ZiAqLworCWV4cF9pbmZvLmV4cF9uYW1lID0gZG1hX2hlYXBfZ2V0X25hbWUoaGVhcCk7 CisJZXhwX2luZm8ub3BzID0gJmNvaGVyZW50X2hlYXBfYnVmX29wczsKKwlleHBfaW5mby5zaXpl ID0gYnVmZmVyLT5sZW47CisJZXhwX2luZm8uZmxhZ3MgPSBmZF9mbGFnczsKKwlleHBfaW5mby5w cml2ID0gYnVmZmVyOworCWRtYWJ1ZiA9IGRtYV9idWZfZXhwb3J0KCZleHBfaW5mbyk7CisJaWYg KElTX0VSUihkbWFidWYpKSB7CisJCXJldCA9IFBUUl9FUlIoZG1hYnVmKTsKKwkJZ290byBmcmVl X3BhZ2VzOworCX0KKwlyZXR1cm4gZG1hYnVmOworCitmcmVlX3BhZ2VzOgorCWtmcmVlKGJ1ZmZl ci0+cGFnZXMpOworZnJlZV9kbWE6CisJZG1hX2ZyZWVfY29oZXJlbnQoY29oX2hlYXAtPmRldiwg YnVmZmVyLT5sZW4sIGJ1ZmZlci0+YWxsb2NfdmFkZHIsCisJCQkgIGJ1ZmZlci0+ZG1hX2FkZHIp OworI2lmIElTX0VOQUJMRUQoQ09ORklHX0NHUk9VUF9ETUVNKQordW5jaGFyZ2VfY2dyb3VwOgor CWRtZW1fY2dyb3VwX3VuY2hhcmdlKGJ1ZmZlci0+cG9vbCwgc2l6ZSk7CisjZW5kaWYKK2ZyZWVf YnVmZmVyOgorCWtmcmVlKGJ1ZmZlcik7CisJcmV0dXJuIEVSUl9QVFIocmV0KTsKK30KKworc3Rh dGljIGNvbnN0IHN0cnVjdCBkbWFfaGVhcF9vcHMgY29oZXJlbnRfaGVhcF9vcHMgPSB7CisJLmFs bG9jYXRlID0gY29oZXJlbnRfaGVhcF9hbGxvY2F0ZSwKK307CisKK3N0YXRpYyBpbnQgX19jb2hl cmVudF9oZWFwX3JlZ2lzdGVyKHN0cnVjdCByZXNlcnZlZF9tZW0gKnJtZW0pCit7CisJc3RydWN0 IGRtYV9oZWFwX2V4cG9ydF9pbmZvIGV4cF9pbmZvOworCXN0cnVjdCBjb2hlcmVudF9oZWFwICpj b2hfaGVhcDsKKyNpZiBJU19FTkFCTEVEKENPTkZJR19DR1JPVVBfRE1FTSkKKwlzdHJ1Y3QgZG1l bV9jZ3JvdXBfcmVnaW9uICpyZWdpb247CisjZW5kaWYKKwljb25zdCBjaGFyICpybWVtX25hbWU7 CisJaW50IHJldDsKKworCWlmICghcm1lbSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlybWVtX25h bWUgPSBybWVtLT5uYW1lID8gcm1lbS0+bmFtZSA6ICJ1bmtub3duIjsKKworCWNvaF9oZWFwID0g a3phbGxvY19vYmooKmNvaF9oZWFwKTsKKwlpZiAoIWNvaF9oZWFwKQorCQlyZXR1cm4gLUVOT01F TTsKKworCWNvaF9oZWFwLT5uYW1lID0ga2FzcHJpbnRmKEdGUF9LRVJORUwsICJjb2hlcmVudF8l cyIsIHJtZW1fbmFtZSk7CisJaWYgKCFjb2hfaGVhcC0+bmFtZSkgeworCQlyZXQgPSAtRU5PTUVN OworCQlnb3RvIGZyZWVfY29oZXJlbnRfaGVhcDsKKwl9CisKKwljb2hfaGVhcC0+cm1lbSA9IHJt ZW07CisKKwkvKiBjcmVhdGUgYSBwbGF0Zm9ybSBkZXZpY2UgcGVyIHJtZW0gYW5kIGJpbmQgaXQg Ki8KKwljb2hfaGVhcC0+cGRldiA9IHBsYXRmb3JtX2RldmljZV9yZWdpc3Rlcl9zaW1wbGUoImNv aGVyZW50LWhlYXAiLAorCQkJCQkJCSBQTEFURk9STV9ERVZJRF9BVVRPLAorCQkJCQkJCSBOVUxM LCAwKTsKKwlpZiAoSVNfRVJSKGNvaF9oZWFwLT5wZGV2KSkgeworCQlyZXQgPSBQVFJfRVJSKGNv aF9oZWFwLT5wZGV2KTsKKwkJZ290byBmcmVlX25hbWU7CisJfQorCisJaWYgKHJtZW0tPm9wcyAm JiBybWVtLT5vcHMtPmRldmljZV9pbml0KSB7CisJCXJldCA9IHJtZW0tPm9wcy0+ZGV2aWNlX2lu aXQocm1lbSwgJmNvaF9oZWFwLT5wZGV2LT5kZXYpOworCQlpZiAocmV0KQorCQkJZ290byBwZGV2 X3VucmVnaXN0ZXI7CisJfQorCisJY29oX2hlYXAtPmRldiA9ICZjb2hfaGVhcC0+cGRldi0+ZGV2 OworI2lmIElTX0VOQUJMRUQoQ09ORklHX0NHUk9VUF9ETUVNKQorCXJlZ2lvbiA9IGRtZW1fY2dy b3VwX3JlZ2lzdGVyX3JlZ2lvbihybWVtLT5zaXplLCAiY29oLyVzIiwgcm1lbV9uYW1lKTsKKwlp ZiAoSVNfRVJSKHJlZ2lvbikpIHsKKwkJcmV0ID0gUFRSX0VSUihyZWdpb24pOworCQlnb3RvIHBk ZXZfdW5yZWdpc3RlcjsKKwl9CisJY29oX2hlYXAtPmNnID0gcmVnaW9uOworI2VuZGlmCisKKwll eHBfaW5mby5uYW1lID0gY29oX2hlYXAtPm5hbWU7CisJZXhwX2luZm8ub3BzID0gJmNvaGVyZW50 X2hlYXBfb3BzOworCWV4cF9pbmZvLnByaXYgPSBjb2hfaGVhcDsKKworCWNvaF9oZWFwLT5oZWFw ID0gZG1hX2hlYXBfYWRkKCZleHBfaW5mbyk7CisJaWYgKElTX0VSUihjb2hfaGVhcC0+aGVhcCkp IHsKKwkJcmV0ID0gUFRSX0VSUihjb2hfaGVhcC0+aGVhcCk7CisJCWdvdG8gY2dfdW5yZWdpc3Rl cjsKKwl9CisKKwlyZXR1cm4gMDsKKworY2dfdW5yZWdpc3RlcjoKKyNpZiBJU19FTkFCTEVEKENP TkZJR19DR1JPVVBfRE1FTSkKKwlkbWVtX2Nncm91cF91bnJlZ2lzdGVyX3JlZ2lvbihjb2hfaGVh cC0+Y2cpOworI2VuZGlmCitwZGV2X3VucmVnaXN0ZXI6CisJcGxhdGZvcm1fZGV2aWNlX3VucmVn aXN0ZXIoY29oX2hlYXAtPnBkZXYpOworCWNvaF9oZWFwLT5wZGV2ID0gTlVMTDsKK2ZyZWVfbmFt ZToKKwlrZnJlZShjb2hfaGVhcC0+bmFtZSk7CitmcmVlX2NvaGVyZW50X2hlYXA6CisJa2ZyZWUo Y29oX2hlYXApOworCisJcmV0dXJuIHJldDsKK30KKworaW50IGRtYV9oZWFwX2NvaGVyZW50X3Jl Z2lzdGVyKHN0cnVjdCByZXNlcnZlZF9tZW0gKnJtZW0pCit7CisJaW50IHJldDsKKworCXJldCA9 IF9fY29oZXJlbnRfaGVhcF9yZWdpc3RlcihybWVtKTsKKwlpZiAocmV0ID09IC1FTk9NRU0pCisJ CXJldHVybiBjb2hlcmVudF9oZWFwX2FkZF9kZWZlcnJlZChybWVtKTsKKwlyZXR1cm4gcmV0Owor fQorCitzdGF0aWMgaW50IF9faW5pdCBjb2hlcmVudF9oZWFwX3JlZ2lzdGVyX2RlZmVycmVkKHZv aWQpCit7CisJdW5zaWduZWQgaW50IGk7CisJaW50IHJldDsKKworCWZvciAoaSA9IDA7IGkgPCBy bWVtX2FyZWFzX2RlZmVycmVkX251bTsgaSsrKSB7CisJCXN0cnVjdCByZXNlcnZlZF9tZW0gKnJt ZW0gPSBybWVtX2FyZWFzX2RlZmVycmVkW2ldOworCisJCXJldCA9IF9fY29oZXJlbnRfaGVhcF9y ZWdpc3RlcihybWVtKTsKKwkJaWYgKHJldCkgeworCQkJcHJfd2FybigiRmFpbGVkIHRvIGFkZCBj b2hlcmVudCBoZWFwICVzIiwKKwkJCQlybWVtLT5uYW1lID8gcm1lbS0+bmFtZSA6ICJ1bmtub3du Iik7CisJCQljb250aW51ZTsKKwkJfQorCX0KKworCXJldHVybiAwOworfQorbGF0ZV9pbml0Y2Fs bChjb2hlcmVudF9oZWFwX3JlZ2lzdGVyX2RlZmVycmVkKTsKK01PRFVMRV9ERVNDUklQVElPTigi RE1BLUJVRiBoZWFwIGZvciBjb2hlcmVudCByZXNlcnZlZC1tZW1vcnkgcmVnaW9ucyIpOwpkaWZm IC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kbWEtaGVhcC5oIGIvaW5jbHVkZS9saW51eC9kbWEtaGVh cC5oCmluZGV4IDY0ODMyOGE2NGIyN2UuLmU4OTRjZmExZWNmMWEgMTAwNjQ0Ci0tLSBhL2luY2x1 ZGUvbGludXgvZG1hLWhlYXAuaAorKysgYi9pbmNsdWRlL2xpbnV4L2RtYS1oZWFwLmgKQEAgLTks OSArOSwxMSBAQAogI2lmbmRlZiBfRE1BX0hFQVBTX0gKICNkZWZpbmUgX0RNQV9IRUFQU19ICiAK KyNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgogI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CiAKIHN0 cnVjdCBkbWFfaGVhcDsKK3N0cnVjdCByZXNlcnZlZF9tZW07CiAKIC8qKgogICogc3RydWN0IGRt YV9oZWFwX29wcyAtIG9wcyB0byBvcGVyYXRlIG9uIGEgZ2l2ZW4gaGVhcApAQCAtNDgsNCArNTAs MTMgQEAgc3RydWN0IGRtYV9oZWFwICpkbWFfaGVhcF9hZGQoY29uc3Qgc3RydWN0IGRtYV9oZWFw X2V4cG9ydF9pbmZvICpleHBfaW5mbyk7CiAKIGV4dGVybiBib29sIG1lbV9hY2NvdW50aW5nOwog CisjaWYgSVNfRU5BQkxFRChDT05GSUdfRE1BQlVGX0hFQVBTX0NPSEVSRU5UKQoraW50IGRtYV9o ZWFwX2NvaGVyZW50X3JlZ2lzdGVyKHN0cnVjdCByZXNlcnZlZF9tZW0gKnJtZW0pOworI2Vsc2UK K3N0YXRpYyBpbmxpbmUgaW50IGRtYV9oZWFwX2NvaGVyZW50X3JlZ2lzdGVyKHN0cnVjdCByZXNl cnZlZF9tZW0gKnJtZW0pCit7CisJcmV0dXJuIC1FT1BOT1RTVVBQOworfQorI2VuZGlmCisKICNl bmRpZiAvKiBfRE1BX0hFQVBTX0ggKi8KZGlmZiAtLWdpdCBhL2tlcm5lbC9kbWEvY29oZXJlbnQu YyBiL2tlcm5lbC9kbWEvY29oZXJlbnQuYwppbmRleCAxMTQ3NDk3YmM1MTJjLi5mNDlkMTNlNDYw ZTRiIDEwMDY0NAotLS0gYS9rZXJuZWwvZG1hL2NvaGVyZW50LmMKKysrIGIva2VybmVsL2RtYS9j b2hlcmVudC5jCkBAIC05LDYgKzksNyBAQAogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgogI2lu Y2x1ZGUgPGxpbnV4L2RtYS1kaXJlY3QuaD4KICNpbmNsdWRlIDxsaW51eC9kbWEtbWFwLW9wcy5o PgorI2luY2x1ZGUgPGxpbnV4L2RtYS1oZWFwLmg+CiAKIHN0cnVjdCBkbWFfY29oZXJlbnRfbWVt IHsKIAl2b2lkCQkqdmlydF9iYXNlOwpAQCAtMzkzLDYgKzM5NCwxNCBAQCBzdGF0aWMgaW50IF9f aW5pdCBybWVtX2RtYV9zZXR1cChzdHJ1Y3QgcmVzZXJ2ZWRfbWVtICpybWVtKQogCXJtZW0tPm9w cyA9ICZybWVtX2RtYV9vcHM7CiAJcHJfaW5mbygiUmVzZXJ2ZWQgbWVtb3J5OiBjcmVhdGVkIERN QSBtZW1vcnkgcG9vbCBhdCAlcGEsIHNpemUgJWxkIE1pQlxuIiwKIAkJJnJtZW0tPmJhc2UsICh1 bnNpZ25lZCBsb25nKXJtZW0tPnNpemUgLyBTWl8xTSk7CisKKwlpZiAoSVNfRU5BQkxFRChDT05G SUdfRE1BQlVGX0hFQVBTX0NPSEVSRU5UKSkgeworCQlpbnQgcmV0ID0gZG1hX2hlYXBfY29oZXJl bnRfcmVnaXN0ZXIocm1lbSk7CisKKwkJaWYgKHJldCkKKwkJCXByX3dhcm4oIlJlc2VydmVkIG1l bW9yeTogZmFpbGVkIHRvIHJlZ2lzdGVyIGNvaGVyZW50IGhlYXAgZm9yICVzICglZClcbiIsCisJ CQkJcm1lbS0+bmFtZSA/IHJtZW0tPm5hbWUgOiAidW5rbm93biIsIHJldCk7CisJfQogCXJldHVy biAwOwogfQogCgotLS0KYmFzZS1jb21taXQ6IDZkZTIzZjgxYTVlMDhiZThmYmY1ZThkN2U5ZmVi YzcyYTViNWYyN2YKY2hhbmdlLWlkOiAyMDI2MDIyMy1iNC1kbWFidWYtaGVhcC1jb2hlcmVudC1y bWVtLTkxZmQzOTI2YWZlOQoKQmVzdCByZWdhcmRzLAotLSAKQWxiZXJ0IEVzdGV2ZSA8YWVzdGV2 ZUByZWRoYXQuY29tPgoK