Received: by 2002:a05:6358:11c7:b0:104:8066:f915 with SMTP id i7csp5619973rwl; Tue, 4 Apr 2023 00:48:17 -0700 (PDT) X-Google-Smtp-Source: AKy350Y46Lzi3KmaWxL+k3T3fCq1G7A5uVyzYg+d/QrKm6z3NeViBvUmHiISn/d3TprPTwN99QTY X-Received: by 2002:a17:902:f1cd:b0:19a:945d:e31 with SMTP id e13-20020a170902f1cd00b0019a945d0e31mr1511242plc.13.1680594497168; Tue, 04 Apr 2023 00:48:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680594497; cv=none; d=google.com; s=arc-20160816; b=KBFV9XjRHVcJ0Pd81GnsHotsZ4gQeJe/bfQGNLbai31ZBjUne5aJ1NY/1RU3rZB5gg n3/4jr+RWUApVwykcVPdJgtzFzDSrvB1zTPYd/rwSvqzbPQ/X4vujK4X2hkoOibb50aT BjEKbz0vYVth9U/hYESBdbFgcwF6Ak1Z/8zeLVH/TyW3xRNBM2K6QBZ/6LevHjezVEfL NCsjlL0vl9QLIBP6TmNaXpvhoyzT4qo12hiB7ALPmhA1ZMhqvEjzbD1z93B9Waby19dB CjyGn8dzVrUJPfgpWksvXp3q10XguXQCsETAQ20g9O2Y3PLCVgNhQadiirmJ4w8ln/tJ SswA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:user-agent :content-transfer-encoding:references:in-reply-to:date:cc:to:from :subject:message-id:dkim-signature; bh=TZN8A3N6qzEZaoi8BzshL3M0v/LkVxLjd9SUgn/F4m0=; b=uY1bkTc8QT66BcbVgRNhQAyB5euMtLehkMxG1FRMFBMfudXZ5NLwul820tRugMrHC/ qi9IpmDwtcXoocdNOcrBrzylL7dmjr8YyGSySTjc3LRWi/UQXWtXDSyNfLEUz+aC+TQP BFRA05MCvOqslvb7TrBFYXKXV7nvuZPY8I+NC64zJ5vH5k3/xcL4TmHwiG6hHeD45wAo JxJ5F2Mw/tM2AwTxoBVNqofVpPl5d95LJK3dQiIeLmq9+wrFbPKWQzJdEmYsWPEYYO8t KO6jbtQMWZvextZqIWkTWGHKneT8XT2ciogCdWnZH9Ixn7GME2fHvWH/MVg6oIr049iu lvtQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=Z45Ni9JM; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id a21-20020a63e855000000b00513924dc6f9si10301919pgk.890.2023.04.04.00.48.04; Tue, 04 Apr 2023 00:48:17 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=Z45Ni9JM; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233823AbjDDHbE (ORCPT + 99 others); Tue, 4 Apr 2023 03:31:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56742 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233675AbjDDHat (ORCPT ); Tue, 4 Apr 2023 03:30:49 -0400 Received: from mail-qv1-xf2d.google.com (mail-qv1-xf2d.google.com [IPv6:2607:f8b0:4864:20::f2d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 30510109; Tue, 4 Apr 2023 00:30:48 -0700 (PDT) Received: by mail-qv1-xf2d.google.com with SMTP id on15so9603363qvb.7; Tue, 04 Apr 2023 00:30:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680593447; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject :date:message-id:reply-to; bh=TZN8A3N6qzEZaoi8BzshL3M0v/LkVxLjd9SUgn/F4m0=; b=Z45Ni9JMHRQQs5YoPsYhPZe4Xa5TB1rBf7FeN0TOcSv3+G86Eyopl0QcDkZkFh37V5 I0ZzmZmT18FtgMXWwguRM9kkD8DbrHC8Krq7eRWsY2EMF8Tj4MFKgtaL7z803T1ECTKO wl7Se8wwD/cpdFrJZbKNNyOTr/GSlRXX5K30LhU/F9qFe+tK7PtZMCtMEABkeuNWIKJi rGa4/6fzcRyCHxpapmPRulp3KZLmdMYaxkvyO02fRh7CgNStCkq7URn0CV7k6ms6MrHK bMaLrOJd6Mq0aK6gUhnLwwclUhoOys0lCjxpMMq5KUwc++8S/+bUA0xlSn/wLDkboCc1 rZLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680593447; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=TZN8A3N6qzEZaoi8BzshL3M0v/LkVxLjd9SUgn/F4m0=; b=gfbUSXXu1xBBNjDMTYTc0FGU5BgIrsNKmiVzwG0x4sflfAs6nzyeaF4Zw6T19dUW0+ 4lBh976Qa3VP9dERFfW+CWDJ1FVsVsgIPVvKZ56tlMx2hgLEyTNymsWhIpN4FA53qKp9 yqrDUBpJ4iCtAOzIe2I/IiMFeXyQk2UJamthDqbJIsJEqQ70/o8iNo+J25LEYAaNY/6V Gb5CK4HWSHHAbbj5T7sTBM3TDo/yJI5neJPBu1rHXnKAOwPnwRcurewdrTvc1evbf/pS EOPRl0AOH85TKKDPYV/J0zSh7+Kqi8XZus66gADGEN4XMBmtfPMFYOQzfz+VCvLu631Q 2pYg== X-Gm-Message-State: AAQBX9dlqs33Idp2UxPY3sH8vDfCHcewSAFr3KaymE98ksb4Ey+B0xkp GkJydvflNt5y9JCYNQYcZdI= X-Received: by 2002:a05:6214:1c8d:b0:5cc:e059:efa3 with SMTP id ib13-20020a0562141c8d00b005cce059efa3mr2059486qvb.23.1680593447228; Tue, 04 Apr 2023 00:30:47 -0700 (PDT) Received: from ?IPv6:2003:f6:ef05:8700:853c:3ba5:d710:3c1d? (p200300f6ef058700853c3ba5d7103c1d.dip0.t-ipconnect.de. [2003:f6:ef05:8700:853c:3ba5:d710:3c1d]) by smtp.gmail.com with ESMTPSA id om30-20020a0562143d9e00b005dd8b934576sm3232903qvb.14.2023.04.04.00.30.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Apr 2023 00:30:46 -0700 (PDT) Message-ID: <798e1ff0651da8e4b113d30bf8cec2a7a0e6898f.camel@gmail.com> Subject: Re: [PATCH v3 07/11] iio: core: Add new DMABUF interface infrastructure From: Nuno =?ISO-8859-1?Q?S=E1?= To: Paul Cercueil , Jonathan Cameron , Lars-Peter Clausen , Vinod Koul , Michael Hennerich , Sumit Semwal , Christian =?ISO-8859-1?Q?K=F6nig?= Cc: linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, dmaengine@vger.kernel.org, linux-media@vger.kernel.org Date: Tue, 04 Apr 2023 09:32:50 +0200 In-Reply-To: <20230403154800.215924-8-paul@crapouillou.net> References: <20230403154800.215924-1-paul@crapouillou.net> <20230403154800.215924-8-paul@crapouillou.net> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 User-Agent: Evolution 3.46.4 MIME-Version: 1.0 X-Spam-Status: No, score=-0.2 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gTW9uLCAyMDIzLTA0LTAzIGF0IDE3OjQ3ICswMjAwLCBQYXVsIENlcmN1ZWlsIHdyb3RlOgo+ IEFkZCB0aGUgbmVjZXNzYXJ5IGluZnJhc3RydWN0dXJlIHRvIHRoZSBJSU8gY29yZSB0byBzdXBw b3J0IGEgbmV3Cj4gb3B0aW9uYWwgRE1BQlVGIGJhc2VkIGludGVyZmFjZS4KPiAKPiBXaXRoIHRo aXMgbmV3IGludGVyZmFjZSwgRE1BQlVGIG9iamVjdHMgKGV4dGVybmFsbHkgY3JlYXRlZCkgY2Fu IGJlCj4gYXR0YWNoZWQgdG8gYSBJSU8gYnVmZmVyLCBhbmQgc3Vic2VxdWVudGx5IHVzZWQgZm9y IGRhdGEgdHJhbnNmZXIuCj4gCj4gQSB1c2Vyc3BhY2UgYXBwbGljYXRpb24gY2FuIHRoZW4gdXNl IHRoaXMgaW50ZXJmYWNlIHRvIHNoYXJlIERNQUJVRgo+IG9iamVjdHMgYmV0d2VlbiBzZXZlcmFs IGludGVyZmFjZXMsIGFsbG93aW5nIGl0IHRvIHRyYW5zZmVyIGRhdGEgaW4gYQo+IHplcm8tY29w eSBmYXNoaW9uLCBmb3IgaW5zdGFuY2UgYmV0d2VlbiBJSU8gYW5kIHRoZSBVU0Igc3RhY2suCj4g Cj4gVGhlIHVzZXJzcGFjZSBhcHBsaWNhdGlvbiBjYW4gYWxzbyBtZW1vcnktbWFwIHRoZSBETUFC VUYgb2JqZWN0cywgYW5kCj4gYWNjZXNzIHRoZSBzYW1wbGUgZGF0YSBkaXJlY3RseS4gVGhlIGFk dmFudGFnZSBvZiBkb2luZyB0aGlzIHZzLiB0aGUKPiByZWFkKCkgaW50ZXJmYWNlIGlzIHRoYXQg aXQgYXZvaWRzIGFuIGV4dHJhIGNvcHkgb2YgdGhlIGRhdGEgYmV0d2Vlbgo+IHRoZQo+IGtlcm5l bCBhbmQgdXNlcnNwYWNlLiBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VyZnVsIGZvciBoaWdoLXNw ZWVkCj4gZGV2aWNlcyB3aGljaCBwcm9kdWNlIHNldmVyYWwgbWVnYWJ5dGVzIG9yIGV2ZW4gZ2ln YWJ5dGVzIG9mIGRhdGEgcGVyCj4gc2Vjb25kLgo+IAo+IEFzIHBhcnQgb2YgdGhlIGludGVyZmFj ZSwgMyBuZXcgSU9DVExzIGhhdmUgYmVlbiBhZGRlZDoKPiAKPiBJSU9fQlVGRkVSX0RNQUJVRl9B VFRBQ0hfSU9DVEwoaW50IGZkKToKPiDCoEF0dGFjaCB0aGUgRE1BQlVGIG9iamVjdCBpZGVudGlm aWVkIGJ5IHRoZSBnaXZlbiBmaWxlIGRlc2NyaXB0b3IgdG8KPiB0aGUKPiDCoGJ1ZmZlci4KPiAK PiBJSU9fQlVGRkVSX0RNQUJVRl9ERVRBQ0hfSU9DVEwoaW50IGZkKToKPiDCoERldGFjaCB0aGUg RE1BQlVGIG9iamVjdCBpZGVudGlmaWVkIGJ5IHRoZSBnaXZlbiBmaWxlIGRlc2NyaXB0b3IKPiBm cm9tCj4gwqB0aGUgYnVmZmVyLiBOb3RlIHRoYXQgY2xvc2luZyB0aGUgSUlPIGJ1ZmZlcidzIGZp bGUgZGVzY3JpcHRvciB3aWxsCj4gwqBhdXRvbWF0aWNhbGx5IGRldGFjaCBhbGwgcHJldmlvdXNs eSBhdHRhY2hlZCBETUFCVUYgb2JqZWN0cy4KPiAKPiBJSU9fQlVGRkVSX0RNQUJVRl9FTlFVRVVF X0lPQ1RMKHN0cnVjdCBpaW9fZG1hYnVmICopOgo+IMKgUmVxdWVzdCBhIGRhdGEgdHJhbnNmZXIg dG8vZnJvbSB0aGUgZ2l2ZW4gRE1BQlVGIG9iamVjdC4gSXRzIGZpbGUKPiDCoGRlc2NyaXB0b3Is IGFzIHdlbGwgYXMgdGhlIHRyYW5zZmVyIHNpemUgYW5kIGZsYWdzIGFyZSBwcm92aWRlZCBpbgo+ IHRoZQo+IMKgImlpb19kbWFidWYiIHN0cnVjdHVyZS4KPiAKPiBUaGVzZSB0aHJlZSBJT0NUTHMg aGF2ZSB0byBiZSBwZXJmb3JtZWQgb24gdGhlIElJTyBidWZmZXIncyBmaWxlCj4gZGVzY3JpcHRv ciwgb2J0YWluZWQgdXNpbmcgdGhlIElJT19CVUZGRVJfR0VUX0ZEX0lPQ1RMKCkgaW9jdGwuCj4g Cj4gU2lnbmVkLW9mZi1ieTogUGF1bCBDZXJjdWVpbCA8cGF1bEBjcmFwb3VpbGxvdS5uZXQ+Cj4g Cj4gLS0tCj4gdjI6IE9ubHkgYWxsb3cgdGhlIG5ldyBJT0NUTHMgb24gdGhlIGJ1ZmZlciBGRCBj cmVhdGVkIHdpdGgKPiDCoMKgwqAgSUlPX0JVRkZFUl9HRVRfRkRfSU9DVEwoKS4KPiAKPiB2Mzog LSBHZXQgcmlkIG9mIHRoZSBvbGQgSU9DVExzLiBUaGUgSUlPIHN1YnN5c3RlbSBkb2VzIG5vdCBj cmVhdGUgb3IKPiDCoMKgwqAgbWFuYWdlIERNQUJVRnMgYW55bW9yZSwgYW5kIG9ubHkgYXR0YWNo ZXMvZGV0YWNoZXMgZXh0ZXJuYWxseQo+IMKgwqDCoCBjcmVhdGVkIERNQUJVRnMuCj4gwqDCoMKg IC0gQWRkIElJT19CVUZGRVJfRE1BQlVGX0NZQ0xJQyB0byB0aGUgc3VwcG9ydGVkIGZsYWdzLgo+ IC0tLQo+IMKgZHJpdmVycy9paW8vaW5kdXN0cmlhbGlvLWJ1ZmZlci5jIHwgNDAyCj4gKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCj4gwqBpbmNsdWRlL2xpbnV4L2lpby9idWZmZXJfaW1w bC5owqDCoCB8wqAgMjIgKysKPiDCoGluY2x1ZGUvdWFwaS9saW51eC9paW8vYnVmZmVyLmjCoMKg IHzCoCAyMiArKwo+IMKgMyBmaWxlcyBjaGFuZ2VkLCA0NDYgaW5zZXJ0aW9ucygrKQo+IAo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2lpby9pbmR1c3RyaWFsaW8tYnVmZmVyLmMKPiBiL2RyaXZlcnMv aWlvL2luZHVzdHJpYWxpby1idWZmZXIuYwo+IGluZGV4IDgwYzc4YmQ2YmJlZi4uNWQ4OGUwOThi M2U3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvaWlvL2luZHVzdHJpYWxpby1idWZmZXIuYwo+ICsr KyBiL2RyaXZlcnMvaWlvL2luZHVzdHJpYWxpby1idWZmZXIuYwo+IEBAIC0xMywxMCArMTMsMTQg QEAKPiDCoCNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KPiDCoCNpbmNsdWRlIDxsaW51eC9leHBv cnQuaD4KPiDCoCNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2Rt YS1idWYuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2RtYS1mZW5jZS5oPgo+ICsjaW5jbHVkZSA8bGlu dXgvZG1hLXJlc3YuaD4KPiDCoCNpbmNsdWRlIDxsaW51eC9maWxlLmg+Cj4gwqAjaW5jbHVkZSA8 bGludXgvZnMuaD4KPiDCoCNpbmNsdWRlIDxsaW51eC9jZGV2Lmg+Cj4gwqAjaW5jbHVkZSA8bGlu dXgvc2xhYi5oPgo+ICsjaW5jbHVkZSA8bGludXgvbW0uaD4KPiDCoCNpbmNsdWRlIDxsaW51eC9w b2xsLmg+Cj4gwqAjaW5jbHVkZSA8bGludXgvc2NoZWQvc2lnbmFsLmg+Cj4gwqAKPiBAQCAtMjgs MTEgKzMyLDQxIEBACj4gwqAjaW5jbHVkZSA8bGludXgvaWlvL2J1ZmZlci5oPgo+IMKgI2luY2x1 ZGUgPGxpbnV4L2lpby9idWZmZXJfaW1wbC5oPgo+IMKgCj4gKyNkZWZpbmUgRE1BQlVGX0VOUVVF VUVfVElNRU9VVF9NUyA1MDAwCj4gKwo+ICtzdHJ1Y3QgaWlvX2RtYV9mZW5jZTsKPiArCj4gK3N0 cnVjdCBpaW9fZG1hYnVmX3ByaXYgewo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBsaXN0X2hlYWQg ZW50cnk7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGtyZWYgcmVmOwo+ICsKPiArwqDCoMKgwqDC oMKgwqBzdHJ1Y3QgaWlvX2J1ZmZlciAqYnVmZmVyOwo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBp aW9fZG1hX2J1ZmZlcl9ibG9jayAqYmxvY2s7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoHU2NCBjb250 ZXh0Owo+ICvCoMKgwqDCoMKgwqDCoHNwaW5sb2NrX3QgbG9jazsKPiArCj4gK8KgwqDCoMKgwqDC oMKgc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoOwo+ICvCoMKgwqDCoMKgwqDCoHN0 cnVjdCBpaW9fZG1hX2ZlbmNlICpmZW5jZTsKPiArfTsKPiArCj4gK3N0cnVjdCBpaW9fZG1hX2Zl bmNlIHsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgZG1hX2ZlbmNlIGJhc2U7Cj4gK8KgwqDCoMKg wqDCoMKgc3RydWN0IGlpb19kbWFidWZfcHJpdiAqcHJpdjsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1 Y3Qgc2dfdGFibGUgKnNndDsKPiArwqDCoMKgwqDCoMKgwqBlbnVtIGRtYV9kYXRhX2RpcmVjdGlv biBkaXI7Cj4gK307Cj4gKwo+IMKgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBpaW9fZW5kaWFu X3ByZWZpeFtdID0gewo+IMKgwqDCoMKgwqDCoMKgwqBbSUlPX0JFXSA9ICJiZSIsCj4gwqDCoMKg wqDCoMKgwqDCoFtJSU9fTEVdID0gImxlIiwKPiDCoH07Cj4gwqAKPiArc3RhdGljIGlubGluZSBz dHJ1Y3QgaWlvX2RtYV9mZW5jZSAqdG9faWlvX2RtYV9mZW5jZShzdHJ1Y3QKPiBkbWFfZmVuY2Ug KmZlbmNlKQo+ICt7Cj4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIGNvbnRhaW5lcl9vZihmZW5jZSwg c3RydWN0IGlpb19kbWFfZmVuY2UsIGJhc2UpOwo+ICt9Cj4gKwoKS2luZCBvZiBhIG5pdHBpY2sg YnV0IEkgb25seSBzZWUgdGhpcyBiZWluZyB1c2VkIG9uY2Ugc28gSSB3b3VsZCBtYXliZQp1c2Ug cGxhaW4gJ2NvbnRhaW5lcl9vZigpJyBhcyB5b3UgYXJlIGFscmVhZHkgZG9pbmcgZm9yOgoKLi4u ID0gY29udGFpbmVyX29mKHJlZiwgc3RydWN0IGlpb19kbWFidWZfcHJpdiwgcmVmKTsKClNvIEkg d291bGQgYXQgbGVhc3QgYWR2b2NhdGUgZm9yIGNvbnNpc3RlbmN5LiBJIHdvdWxkIGFsc28gcHJv YmFibHkKZGl0Y2ggdGhlIGlubGluZSBidXQgSSBndWVzcyB0aGF0IGlzIG1vcmUgYSBtYXR0ZXIg b2Ygc3R5bGUvcHJlZmVyZW5jZS4KCj4gwqBzdGF0aWMgYm9vbCBpaW9fYnVmZmVyX2lzX2FjdGl2 ZShzdHJ1Y3QgaWlvX2J1ZmZlciAqYnVmKQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4g IWxpc3RfZW1wdHkoJmJ1Zi0+YnVmZmVyX2xpc3QpOwo+IEBAIC0zMjksNiArMzYzLDcgQEAgdm9p ZCBpaW9fYnVmZmVyX2luaXQoc3RydWN0IGlpb19idWZmZXIgKmJ1ZmZlcikKPiDCoHsKPiAKCi4u LgoKPiArwqDCoMKgwqDCoMKgwqBwcml2ID0gYXR0YWNoLT5pbXBvcnRlcl9wcml2Owo+ICvCoMKg wqDCoMKgwqDCoGxpc3RfZGVsX2luaXQoJnByaXYtPmVudHJ5KTsKPiArCj4gK8KgwqDCoMKgwqDC oMKgaWlvX2J1ZmZlcl9kbWFidWZfcHV0KGF0dGFjaCk7Cj4gK8KgwqDCoMKgwqDCoMKgaWlvX2J1 ZmZlcl9kbWFidWZfcHV0KGF0dGFjaCk7Cj4gKwoKSXMgdGhpcyBpbnRlbmRlZD8gTG9va3Mgc3Vz cGljaW91cy4uLgoKPiArb3V0X2RtYWJ1Zl9wdXQ6Cj4gK8KgwqDCoMKgwqDCoMKgZG1hX2J1Zl9w dXQoZG1hYnVmKTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiArfQo+ICsKPiAr c3RhdGljIGNvbnN0IGNoYXIgKgo+ICtpaW9fYnVmZmVyX2RtYV9mZW5jZV9nZXRfZHJpdmVyX25h bWUoc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpCj4gK3sKPiArwqDCoMKgwqDCoMKgwqByZXR1cm4g ImlpbyI7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGlpb19idWZmZXJfZG1hX2ZlbmNlX3JlbGVh c2Uoc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpCj4gK3sKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qg aWlvX2RtYV9mZW5jZSAqaWlvX2ZlbmNlID0gdG9faWlvX2RtYV9mZW5jZShmZW5jZSk7Cj4gKwo+ ICvCoMKgwqDCoMKgwqDCoGtmcmVlKGlpb19mZW5jZSk7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25z dCBzdHJ1Y3QgZG1hX2ZlbmNlX29wcyBpaW9fYnVmZmVyX2RtYV9mZW5jZV9vcHMgPSB7Cj4gK8Kg wqDCoMKgwqDCoMKgLmdldF9kcml2ZXJfbmFtZcKgwqDCoMKgwqDCoMKgwqA9Cj4gaWlvX2J1ZmZl cl9kbWFfZmVuY2VfZ2V0X2RyaXZlcl9uYW1lLAo+ICvCoMKgwqDCoMKgwqDCoC5nZXRfdGltZWxp bmVfbmFtZcKgwqDCoMKgwqDCoD0KPiBpaW9fYnVmZmVyX2RtYV9mZW5jZV9nZXRfZHJpdmVyX25h bWUsCj4gK8KgwqDCoMKgwqDCoMKgLnJlbGVhc2XCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoD0gaWlvX2J1ZmZlcl9kbWFfZmVuY2VfcmVsZWFzZSwKPiArfTsKPiArCj4gK3N0YXRpYyBp bnQgaWlvX2J1ZmZlcl9lbnF1ZXVlX2RtYWJ1ZihzdHJ1Y3QgaWlvX2Rldl9idWZmZXJfcGFpciAq aWIsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGlpb19kbWFidWYgX191c2VyCj4gKmlpb19kbWFi dWZfcmVxLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJvb2wgbm9uYmxvY2spCj4gK3sKPiArwqDCoMKgwqDC oMKgwqBzdHJ1Y3QgaWlvX2J1ZmZlciAqYnVmZmVyID0gaWItPmJ1ZmZlcjsKPiArwqDCoMKgwqDC oMKgwqBzdHJ1Y3QgaWlvX2RtYWJ1ZiBpaW9fZG1hYnVmOwo+ICvCoMKgwqDCoMKgwqDCoHN0cnVj dCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaDsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaWlv X2RtYWJ1Zl9wcml2ICpwcml2Owo+ICvCoMKgwqDCoMKgwqDCoGVudW0gZG1hX2RhdGFfZGlyZWN0 aW9uIGRpcjsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaWlvX2RtYV9mZW5jZSAqZmVuY2U7Cj4g K8KgwqDCoMKgwqDCoMKgc3RydWN0IGRtYV9idWYgKmRtYWJ1ZjsKPiArwqDCoMKgwqDCoMKgwqBz dHJ1Y3Qgc2dfdGFibGUgKnNndDsKPiArwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBsb25nIHRpbWVv dXQ7Cj4gK8KgwqDCoMKgwqDCoMKgYm9vbCBkbWFfdG9fcmFtOwo+ICvCoMKgwqDCoMKgwqDCoGJv b2wgY3ljbGljOwo+ICvCoMKgwqDCoMKgwqDCoGludCByZXQ7Cj4gKwo+ICvCoMKgwqDCoMKgwqDC oGlmIChjb3B5X2Zyb21fdXNlcigmaWlvX2RtYWJ1ZiwgaWlvX2RtYWJ1Zl9yZXEsCj4gc2l6ZW9m KGlpb19kbWFidWYpKSkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIC1F RkFVTFQ7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGlmIChpaW9fZG1hYnVmLmZsYWdzICYgfklJT19C VUZGRVJfRE1BQlVGX1NVUFBPUlRFRF9GTEFHUykKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGN5Y2xpYyA9IGlpb19k bWFidWYuZmxhZ3MgJiBJSU9fQlVGRkVSX0RNQUJVRl9DWUNMSUM7Cj4gKwo+ICvCoMKgwqDCoMKg wqDCoC8qIEN5Y2xpYyBmbGFnIGlzIG9ubHkgc3VwcG9ydGVkIG9uIG91dHB1dCBidWZmZXJzICov Cj4gK8KgwqDCoMKgwqDCoMKgaWYgKGN5Y2xpYyAmJiBidWZmZXItPmRpcmVjdGlvbiAhPSBJSU9f QlVGRkVSX0RJUkVDVElPTl9PVVQpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJl dHVybiAtRUlOVkFMOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBkbWFidWYgPSBkbWFfYnVmX2dldChp aW9fZG1hYnVmLmZkKTsKPiArwqDCoMKgwqDCoMKgwqBpZiAoSVNfRVJSKGRtYWJ1ZikpCj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBQVFJfRVJSKGRtYWJ1Zik7Cj4gKwo+ ICvCoMKgwqDCoMKgwqDCoGlmICghaWlvX2RtYWJ1Zi5ieXRlc191c2VkIHx8IGlpb19kbWFidWYu Ynl0ZXNfdXNlZCA+IGRtYWJ1Zi0KPiA+c2l6ZSkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqByZXQgPSAtRUlOVkFMOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBn b3RvIGVycl9kbWFidWZfcHV0Owo+ICvCoMKgwqDCoMKgwqDCoH0KPiArCj4gK8KgwqDCoMKgwqDC oMKgYXR0YWNoID0gaWlvX2J1ZmZlcl9maW5kX2F0dGFjaG1lbnQoaWItPmluZGlvX2RldiwgZG1h YnVmKTsKPiArwqDCoMKgwqDCoMKgwqBpZiAoSVNfRVJSKGF0dGFjaCkpIHsKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0ID0gUFRSX0VSUihhdHRhY2gpOwo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBnb3RvIGVycl9kbWFidWZfcHV0Owo+ICvCoMKgwqDCoMKgwqDC oH0KPiArCj4gK8KgwqDCoMKgwqDCoMKgcHJpdiA9IGF0dGFjaC0+aW1wb3J0ZXJfcHJpdjsKPiAr Cj4gK8KgwqDCoMKgwqDCoMKgZG1hX3RvX3JhbSA9IGJ1ZmZlci0+ZGlyZWN0aW9uID09IElJT19C VUZGRVJfRElSRUNUSU9OX0lOOwo+ICvCoMKgwqDCoMKgwqDCoGRpciA9IGRtYV90b19yYW0gPyBE TUFfRlJPTV9ERVZJQ0UgOiBETUFfVE9fREVWSUNFOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBzZ3Qg PSBkbWFfYnVmX21hcF9hdHRhY2htZW50KGF0dGFjaCwgZGlyKTsKPiArwqDCoMKgwqDCoMKgwqBp ZiAoSVNfRVJSKHNndCkpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0ID0g UFRSX0VSUihzZ3QpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwcl9lcnIoIlVu YWJsZSB0byBtYXAgYXR0YWNobWVudDogJWRcbiIsIHJldCk7CgpkZXZfZXJyKCk/IFdlIHNob3Vs ZCBiZSBhYmxlIHRvIHJlYWNoIHRoZSBpaW9fZGV2Cgo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBnb3RvIGVycl9hdHRhY2htZW50X3B1dDsKPiArwqDCoMKgwqDCoMKgwqB9Cj4gKwo+ ICvCoMKgwqDCoMKgwqDCoGZlbmNlID0ga21hbGxvYyhzaXplb2YoKmZlbmNlKSwgR0ZQX0tFUk5F TCk7Cj4gK8KgwqDCoMKgwqDCoMKgaWYgKCFmZW5jZSkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqByZXQgPSAtRU5PTUVNOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBnb3RvIGVycl91bm1hcF9hdHRhY2htZW50Owo+ICvCoMKgwqDCoMKgwqDCoH0KPiArCj4gCgou Li4KCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBpaW9fYnVmZmVyX2No cmRldl9maWxlb3BzID0gewo+IMKgwqDCoMKgwqDCoMKgwqAub3duZXIgPSBUSElTX01PRFVMRSwK PiDCoMKgwqDCoMKgwqDCoMKgLmxsc2VlayA9IG5vb3BfbGxzZWVrLAo+IMKgwqDCoMKgwqDCoMKg wqAucmVhZCA9IGlpb19idWZmZXJfcmVhZCwKPiDCoMKgwqDCoMKgwqDCoMKgLndyaXRlID0gaWlv X2J1ZmZlcl93cml0ZSwKPiArwqDCoMKgwqDCoMKgwqAudW5sb2NrZWRfaW9jdGwgPSBpaW9fYnVm ZmVyX2NocmRldl9pb2N0bCwKPiArwqDCoMKgwqDCoMKgwqAuY29tcGF0X2lvY3RsID0gY29tcGF0 X3B0cl9pb2N0bCwKPiDCoMKgwqDCoMKgwqDCoMKgLnBvbGwgPSBpaW9fYnVmZmVyX3BvbGwsCj4g wqDCoMKgwqDCoMKgwqDCoC5yZWxlYXNlID0gaWlvX2J1ZmZlcl9jaHJkZXZfcmVsZWFzZSwKPiDC oH07CgpIbW1tLCB3aGF0IGFib3V0IHRoZSBsZWdhY3kgYnVmZmVyPyBXZSBzaG91bGQgYWxzbyBz dXBwb3J0IHRoaXMKaW50ZXJmYWNlIHVzaW5nIGl0LCByaWdodD8gT3RoZXJ3aXNlLCB1c2luZyBv bmUgb2YgdGhlIG5ldyBJT0NUTCBpbgppaW9fZGV2aWNlX2J1ZmZlcl9pb2N0bCgpIChvciAvZGV2 L2lpbzpkZXZpY2UwKSB3aWxsIGVycm9yIG91dC4KCi0gTnVubyBTw6EKCg==