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 X-Spam-Level: X-Spam-Status: No, score=-11.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 34F42C34022 for ; Mon, 17 Feb 2020 19:38:38 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 0D20320578 for ; Mon, 17 Feb 2020 19:38:38 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ffwll.ch header.i=@ffwll.ch header.b="ThcK6AZn" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0D20320578 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ffwll.ch Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 48D766E9A6; Mon, 17 Feb 2020 19:38:35 +0000 (UTC) Received: from mail-ot1-x343.google.com (mail-ot1-x343.google.com [IPv6:2607:f8b0:4864:20::343]) by gabe.freedesktop.org (Postfix) with ESMTPS id D39B56E0FC for ; Mon, 17 Feb 2020 19:38:33 +0000 (UTC) Received: by mail-ot1-x343.google.com with SMTP id i6so17207484otr.7 for ; Mon, 17 Feb 2020 11:38:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=I61ESAqvmsXBqM2Hj0FAxIDyP6wd3OVog0zMOhR3c0I=; b=ThcK6AZnQg5cQ/sewGkGPqdbV9R7hjfW1FoWnJ64RM2aqfKHxBw2iLOxe3bpGLvk1f YWAILoCPmYbWXpaykr5epIyw2IHTEuXerpTY1BNeyGeVPkGFXji6+kBplPS8yBs9c5WH viYf3KxAvHKLAtuKX+tbtBjN6DGoYDaLX395M= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=I61ESAqvmsXBqM2Hj0FAxIDyP6wd3OVog0zMOhR3c0I=; b=RD6goZRIxSn/PppzyYgwfId821AjWDpFY/ewYA/zlI25c6n4Rg4v40ltXt5xFY5bdZ 3Z26hh2Tc2StNd8P18Fo8uLOYbL0HYaKLdWJVlXAdBBUj8rZD+na96Z21aHDD9/UiMlv XrDNV8nGjCs/TeB+P+TpjaAjkFPfpqphLEGxMDU0b6LYc66oyqSSRlg/s+f514+crSL1 arkO4hR/Tk39PmiLQgpGy/tQAcpKXRB+YQoow+liprWnxn0mOO+zBM+nYrn66/VqbqqE qjdmEC5yVH/apYeyAwOwTB5ZH/F3St3eZPcFnhF1SkXPYrku7llpAPTm1mSZgFaq48UU O5Vw== X-Gm-Message-State: APjAAAUe9CiWJeF7t8WqDvzm9Iv8wfQhvPFvvxQLacS/eKFJjAvBzK4e 7frUnZYLcP+Ey6jyfv5BW9ywAox010l2p3WRFMsWWA== X-Google-Smtp-Source: APXvYqxqRLWsf23M5SejvObaVt0QQRa/E9oJndC9A22+CmBO2L6qmEsWpp6Bc0ttDq5ry9M7nOuF0S41i9vGPiJ2pbw= X-Received: by 2002:a9d:7f11:: with SMTP id j17mr14093098otq.281.1581968312843; Mon, 17 Feb 2020 11:38:32 -0800 (PST) MIME-Version: 1.0 References: <20200217154509.2265-1-christian.koenig@amd.com> <20200217154509.2265-6-christian.koenig@amd.com> <20200217175518.GL2363188@phenom.ffwll.local> <59995ab9-b74b-67c5-0090-f526788713b9@gmail.com> In-Reply-To: <59995ab9-b74b-67c5-0090-f526788713b9@gmail.com> From: Daniel Vetter Date: Mon, 17 Feb 2020 20:38:21 +0100 Message-ID: Subject: Re: [PATCH 5/5] drm/amdgpu: implement amdgpu_gem_prime_move_notify v2 To: =?UTF-8?Q?Christian_K=C3=B6nig?= 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: , Cc: "moderated list:DMA BUFFER SHARING FRAMEWORK" , intel-gfx , dri-devel , "open list:DMA BUFFER SHARING FRAMEWORK" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" T24gTW9uLCBGZWIgMTcsIDIwMjAgYXQgNzo1OCBQTSBDaHJpc3RpYW4gS8O2bmlnCjxja29lbmln LmxlaWNodHp1bWVya2VuQGdtYWlsLmNvbT4gd3JvdGU6Cj4KPiBBbSAxNy4wMi4yMCB1bSAxODo1 NSBzY2hyaWViIERhbmllbCBWZXR0ZXI6Cj4gPiBPbiBNb24sIEZlYiAxNywgMjAyMCBhdCAwNDo0 NTowOVBNICswMTAwLCBDaHJpc3RpYW4gS8O2bmlnIHdyb3RlOgo+ID4+IEltcGxlbWVudCB0aGUg aW1wb3J0ZXIgc2lkZSBvZiB1bnBpbm5lZCBETUEtYnVmIGhhbmRsaW5nLgo+ID4+Cj4gPj4gdjI6 IHVwZGF0ZSBwYWdlIHRhYmxlcyBpbW1lZGlhdGVseQo+ID4+Cj4gPj4gU2lnbmVkLW9mZi1ieTog Q2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgo+ID4+IC0tLQo+ID4+ ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RtYV9idWYuYyB8IDY2ICsrKysr KysrKysrKysrKysrKysrLQo+ID4+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X29iamVjdC5jICB8ICA2ICsrCj4gPj4gICAyIGZpbGVzIGNoYW5nZWQsIDcxIGluc2VydGlvbnMo KyksIDEgZGVsZXRpb24oLSkKPiA+Pgo+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfZG1hX2J1Zi5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X2RtYV9idWYuYwo+ID4+IGluZGV4IDc3MGJhYmE2MjFiMy4uNDhkZTc2MjRkNDljIDEw MDY0NAo+ID4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kbWFfYnVm LmMKPiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZG1hX2J1Zi5j Cj4gPj4gQEAgLTQ1Myw3ICs0NTMsNzEgQEAgYW1kZ3B1X2RtYV9idWZfY3JlYXRlX29iaihzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZikKPiA+PiAgICAgIHJl dHVybiBFUlJfUFRSKHJldCk7Cj4gPj4gICB9Cj4gPj4KPiA+PiArLyoqCj4gPj4gKyAqIGFtZGdw dV9kbWFfYnVmX21vdmVfbm90aWZ5IC0gJmF0dGFjaC5tb3ZlX25vdGlmeSBpbXBsZW1lbnRhdGlv bgo+ID4+ICsgKgo+ID4+ICsgKiBAYXR0YWNoOiB0aGUgRE1BLWJ1ZiBhdHRhY2htZW50Cj4gPj4g KyAqCj4gPj4gKyAqIEludmFsaWRhdGUgdGhlIERNQS1idWYgYXR0YWNobWVudCwgbWFraW5nIHN1 cmUgdGhhdCB0aGUgd2UgcmUtY3JlYXRlIHRoZQo+ID4+ICsgKiBtYXBwaW5nIGJlZm9yZSB0aGUg bmV4dCB1c2UuCj4gPj4gKyAqLwo+ID4+ICtzdGF0aWMgdm9pZAo+ID4+ICthbWRncHVfZG1hX2J1 Zl9tb3ZlX25vdGlmeShzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gpCj4gPj4gK3sK PiA+PiArICAgIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqID0gYXR0YWNoLT5pbXBvcnRlcl9w cml2Owo+ID4+ICsgICAgc3RydWN0IHd3X2FjcXVpcmVfY3R4ICp0aWNrZXQgPSBkbWFfcmVzdl9s b2NraW5nX2N0eChvYmotPnJlc3YpOwo+ID4+ICsgICAgc3RydWN0IGFtZGdwdV9ibyAqYm8gPSBn ZW1fdG9fYW1kZ3B1X2JvKG9iaik7Cj4gPj4gKyAgICBzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diA9IGFtZGdwdV90dG1fYWRldihiby0+dGJvLmJkZXYpOwo+ID4+ICsgICAgc3RydWN0IHR0bV9v cGVyYXRpb25fY3R4IGN0eCA9IHsgZmFsc2UsIGZhbHNlIH07Cj4gPj4gKyAgICBzdHJ1Y3QgdHRt X3BsYWNlbWVudCBwbGFjZW1lbnQgPSB7fTsKPiA+PiArICAgIHN0cnVjdCBhbWRncHVfdm1fYm9f YmFzZSAqYm9fYmFzZTsKPiA+PiArICAgIGludCByOwo+ID4+ICsKPiA+PiArICAgIGlmIChiby0+ dGJvLm1lbS5tZW1fdHlwZSA9PSBUVE1fUExfU1lTVEVNKQo+ID4+ICsgICAgICAgICAgICByZXR1 cm47Cj4gPj4gKwo+ID4+ICsgICAgciA9IHR0bV9ib192YWxpZGF0ZSgmYm8tPnRibywgJnBsYWNl bWVudCwgJmN0eCk7Cj4gPj4gKyAgICBpZiAocikgewo+ID4+ICsgICAgICAgICAgICBEUk1fRVJS T1IoIkZhaWxlZCB0byBpbnZhbGlkYXRlIERNQS1idWYgaW1wb3J0ICglZCkpXG4iLCByKTsKPiA+ PiArICAgICAgICAgICAgcmV0dXJuOwo+ID4+ICsgICAgfQo+ID4+ICsKPiA+PiArICAgIGZvciAo Ym9fYmFzZSA9IGJvLT52bV9ibzsgYm9fYmFzZTsgYm9fYmFzZSA9IGJvX2Jhc2UtPm5leHQpIHsK PiA+PiArICAgICAgICAgICAgc3RydWN0IGFtZGdwdV92bSAqdm0gPSBib19iYXNlLT52bTsKPiA+ PiArICAgICAgICAgICAgc3RydWN0IGRtYV9yZXN2ICpyZXN2ID0gdm0tPnJvb3QuYmFzZS5iby0+ dGJvLmJhc2UucmVzdjsKPiA+PiArCj4gPj4gKyAgICAgICAgICAgIGlmICh0aWNrZXQpIHsKPiA+ IFllYWggc28gdGhpcyBpcyBraW5kYSB3aHkgSSd2ZSBiZWVuIGEgdG90YWwgcGFpbiBhYm91dCB0 aGUgZXhhY3Qgc2VtYW50aWNzCj4gPiBvZiB0aGUgbW92ZV9ub3RpZnkgaG9vay4gSSB0aGluayB3 ZSBzaG91bGQgZmxhdC1vdXQgcmVxdWlyZSB0aGF0IGltcG9ydGVycwo+ID4gX2Fsd2F5c18gaGF2 ZSBhIHRpY2tldCBhdHRhY2ggd2hlbiB0aGV5IGNhbGwgdGhpcywgYW5kIHRoYXQgdGhleSBjYW4g Y29wZQo+ID4gd2l0aCBhZGRpdGlvbmFsIGxvY2tzIGJlaW5nIHRha2VuIChpLmUuIGZ1bGwgRURF QURMQ0spIGhhbmRsaW5nLgo+Cj4gVGhhdCBpcyBwcmV0dHkgbXVjaCBleGFjdGx5IG15IHRoaW5r aW5nIGFzIHdlbGwuCj4KPiBBbmQgaXMgYWxzbyB0aGUgc29sZSByZWFzb24gd2h5IEkgc3RhcnRl ZCBsb29raW5nIGludG8gdGhlIHd3X211dGV4Cj4gY3Vyc29yIGhhbmRsaW5nIGEgd2hpbGUgYmFj ayAoZS5nLiB0aGUgaW5pdGlhbCB2ZXJzaW9uIHdpdGggdGhlIGhvcnJpYmxlCj4gbWFjcm8gaGFj aykuCj4KPiBCdXQgdGhpcyBpcyByZWFsbHkgcmVhbGx5IGhhcmQgdG8gZ2V0IHJpZ2h0LiBTbyBt eSB0aGlua2luZyBmb3Igbm93IGlzCj4gdG8gcHVzaCB0aGlzIHNlcmllcyB1cHN0cmVhbSB0byBh dCBsZWFzdCB1bmJsb2NrIG15IG9uZ29pbmcgUDJQIHdvcmsuCgpIbSwgYnV0IGF0IGxlYXN0IHRo ZSBtb3ZlX25vdGlmeSBzdHVmZiBhbmQgdGhlIGxvY2tpbmcgbmlnaHRtYXJlCmFyb3VuZCB0aGF0 IGZlZWxzIHJ1c2hlZCBpZiB3ZSBqdXN0IHB1c2ggdGhhdC4gT3RvaCBpdCdzIGluZGVlZApnZXR0 aW5nIHBhaW5mdWwsIGFuZCB3ZSdsbCBwcm9iYWJseSBoYXZlIGFub3RoZXIgZmV3IHJvdW5kcyBv ZgpoZWFkYWNoZXMgdG8gc29ydCB0aGlzIGFsbCBvdXQuIFdoYXQgYWJvdXQgYQoKY29uZmlnIEVY UEVSSU1FTlRBTF9EWU5BTUlDX0RNQV9CVUYKICAgIGRlcGVuZHMgb24gQlJPS0VOCgpXcmFwcGVk IGFyb3VuZCB0aGUgbmV3IC0+bW92ZV9ub3RpZnkgaG9vaywgcGx1cyBhbGwgcmVsZXZhbnQgY29k ZT8KVGhhdCB3YXkgeW91IGNhbiBsYW5kIGF0IGxlYXN0IHNvbWV0aGluZywgaW4tdHJlZSByZWZh Y3RvcmluZyBtaWdodApiZWNvbWUgZWFzaWVyIHdpdGggYXQgbGVhc3Qgc29tZSBleGFtcGxlIG9m IHdoYXQgaXQgbmVlZHMgdG8gYWNoaWV2ZS4KQnV0IHdlJ3JlIGFsc28gbm90IHRyaWNraW5nIGFu eW9uZSBpbnRvIGJlbGlldmluZyB0aGF0IHRoaXMgaXMKcHJvZHVjdGlvbiByZWFkeS4KCj4gPiBT aW1wbGVzdCB3YXkgdG8gZm9yY2UgdGhhdCBjb250cmFjdCBpcyB0byBhZGQgYSBkdW1teSAybmQg d3dfbXV0ZXggbG9jayB0bwo+ID4gdGhlIGRtYV9yZXN2IG9iamVjdCwgd2hpY2ggd2UgdGhlbiBj YW4gdGFrZSAjaWZkZWYKPiA+IENPTkZJR19XV19NVVRFWF9TTE9XUEFUSF9ERUJVRy4gUGx1cyBt YWJ5ZSBhIFdBUk5fT04oIXRpY2tldCkuCj4gPgo+ID4gTm93IHRoZSByZWFsIGRpc2FzdGVyIGlz IGhvdyB3ZSBoYW5kbGUgZGVhZGxvY2tzLiBUd28gaXNzdWVzOgo+ID4KPiA+IC0gSWRlYWxseSB3 ZSdkIGtlZXAgYW55IGxvY2sgd2UndmUgdGFrZW4gbG9ja2VkIHVudGlsIHRoZSBlbmQsIGl0IGhl bHBzCj4gPiAgICBuZWVkbGVzcyBiYWNrb2Zmcy4gSSd2ZSBwbGF5ZWQgYXJvdW5kIGEgYml0IHdp dGggdGhhdCBidXQgbm90IGV2ZW4gcG9jCj4gPiAgICBsZXZlbCwganVzdCBhbiBpZGVhOgo+ID4K PiA+IGh0dHBzOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcvfmRhbnZldC9kcm0vY29tbWl0Lz9pZD1i MTc5OWM1YTBmMDJkZjllMWJiMDhkMjdiZTM3MzMxMjU1YWI3NTgyCj4gPgo+ID4gICAgSWRlYSBp cyBlc3NlbnRpYWxseSB0byB0cmFjayBhIGxpc3Qgb2Ygb2JqZWN0cyB3ZSBoYWQgdG8gbG9jayBh cyBwYXJ0IG9mCj4gPiAgICB0aGUgdHRtX2JvX3ZhbGlkYXRlIG9mIHRoZSBtYWluIG9iamVjdC4K PiA+Cj4gPiAtIFNlY29uZCBvbmUgaXMgaWYgd2UgZ2V0IGEgRURFQURMQ0sgb24gb25lIG9mIHRo ZXNlIHN1YmxvY2tzIChsaWtlIHRoZQo+ID4gICAgb25lIGhlcmUpLiBXZSBuZWVkIHRvIHBhc3Mg dGhhdCB1cCB0aGUgZW50aXJlIGNhbGxjaGFpbiwgaW5jbHVkaW5nIGEKPiA+ICAgIHRlbXBvcmFy eSByZWZlcmVuY2UgKHdlIGhhdmUgdG8gZHJvcCBsb2NrcyB0byBkbyB0aGUgd3dfbXV0ZXhfbG9j a19zbG93Cj4gPiAgICBjYWxsKSwgYW5kIG5lZWQgYSBjdXN0b20gY2FsbGJhY2sgdG8gZHJvcCB0 aGF0IHRlbXBvcmFyeSByZWZlcmVuY2UKPiA+ICAgIChzaW5jZSB0aGF0J3MgYWxsIGRyaXZlciBz cGVjaWZpYywgbWlnaHQgZXZlbiBiZSBpbnRlcm5hbCB3d19tdXRleCBhbmQKPiA+ICAgIG5vdCBh bnl0aGluZyByZW1vdGVseSBsb29raW5nIGxpa2UgYSBub3JtYWwgZG1hX2J1ZikuIFRoaXMgcHJv YmFibHkKPiA+ICAgIG5lZWRzIHRoZSBleGVjIHV0aWwgaGVscGVycyBmcm9tIHR0bSwgYnV0IGF0 IHRoZSBkbWFfcmVzdiBsZXZlbCwgc28gdGhhdAo+ID4gICAgd2UgY2FuIGRvIHNvbWV0aGluZyBs aWtlIHRoaXM6Cj4gPgo+ID4gc3RydWN0IGRtYV9yZXN2X3RpY2tldCB7Cj4gPiAgICAgICBzdHJ1 Y3Qgd3dfYWNxdWlyZV9jdHggYmFzZTsKPiA+Cj4gPiAgICAgICAvKiBjYW4gYmUgc2V0IGJ5IGFu eW9uZSAoaW5jbHVkaW5nIG90aGVyIGRyaXZlcnMpIHRoYXQgZ290IGhvbGQgb2YKPiA+ICAgICAg ICAqIHRoaXMgdGlja2V0IGFuZCBoYWQgdG8gYWNxdWlyZSBzb21lIG5ldyBsb2NrLiBUaGlzIGxv Y2sgbWlnaHQKPiA+ICAgICAgICAqIHByb3RlY3QgYW55dGhpbmcsIGluY2x1ZGluZyBkcml2ZXIt aW50ZXJuYWwgc3R1ZmYsIGFuZCBpc24ndAo+ID4gICAgICAgICogcmVxdWlyZWQgdG8gYmUgYSBk bWFfYnVmIG9yIGV2ZW4ganVzdCBhIGRtYV9yZXN2LiAqLwo+ID4gICAgICAgc3RydWN0IHd3X211 dGV4ICpjb250ZW5kZWRfbG9jazsKPiA+Cj4gPiAgICAgICAvKiBjYWxsYmFjayB3aGljaCB0aGUg ZHJpdmVyICh3aGljaCBtaWdodCBiZSBhIGRtYS1idWYgZXhwb3J0ZXIKPiA+ICAgICAgICAqIGFu ZCBub3QgbWF0Y2hpbmcgdGhlIGRyaXZlciB0aGF0IHN0YXJ0ZWQgdGhpcyBsb2NraW5nIHRpY2tl dCkKPiA+ICAgICAgICAqIHNldHMgdG9nZXRoZXIgd2l0aCBAY29udGVuZGVkX2xvY2ssIGZvciB0 aGUgbWFpbiBkcml2ZXIgdG8gZHJvcAo+ID4gICAgICAgICogd2hlbiBpdCBjYWxscyBkbWFfcmVz dl91bmxvY2sgb24gdGhlIGNvbnRlbmRlZF9sb2NrLiAqLwo+ID4gICAgICAgdm9pZCAoZHJvcF9y ZWYqKShzdHJ1Y3Qgd3dfbXV0ZXggKmNvbnRlbmRlZF9sb2NrKTsKPiA+IH07Cj4KPiBNeSBpbml0 aWFsIHRoaW5raW5nIHdhcyB0byBtYWtlIGFsbCBvZiB0aGlzIHBhcnQgb2YgdGhlIGNvcmUgd3df bXV0ZXgKPiBpbXBsZW1lbnRhdGlvbiwgYnV0IHRoZW4gSSBxdWlja2x5IGZvdW5kIHRoYXQgdGhp cyB3b24ndCB3b3JrLgo+Cj4gPiBUaGlzIGlzIGFsbCBzdXByZW1lbHkgbmFzdHkgKGFsc28gdHRt X2JvX3ZhbGlkYXRlIHdvdWxkIG5lZWQgdG8gYmUKPiA+IGltcHJvdmVkIHRvIGhhbmRsZSB0aGVz ZSBzdWJsb2NrcyBhbmQgcmFuZG9tIG5ldyBvYmplY3RzIHRoYXQgY291bGQgZm9yY2UKPiA+IGEg d3dfbXV0ZXhfbG9ja19zbG93KS4KPgo+IFRoZSBuZXh0IGlkZWEgd2FzIHRvIGhhdmUgaXQgYmFz ZWQgb24gZG1hX3Jlc3Ygb2JqZWN0cywgYnV0IGFzIHlvdSBhbHNvCj4gZmlndXJlZCBvdXQgeW91 IHRoZW4gbmVlZCB0byBkcm9wIHRoZSByZWZlcmVuY2UgdG8gdGhlIGNvbnRlbmRlZCBsb2NrCj4g c29tZWhvdy4uLgo+Cj4gU28gbXkgY3VycmVudCB3b3JraW5nIHBsYW4gd2FzIHRvIHVzZSBHRU0g b2JqZWN0IHRvIGF2b2lkIHRoZSBjYWxsYmFjay4uLgoKSSd2ZSBoZWFyZCBub2lzZSB0aGF0IHNv bWVvbmUgaXMgbG9va2luZyBpbnRvIGFkZGluZyBkeW5hbWljIGRtYS1idWYKc3VwcG9ydCB0byBz dHVmZiBsaWtlIHJkbWEgZHJpdmVycy4gQmVjYXVzZSBpbnRlcmNvbm5lY3RzIGFuZCBiaWcKbWFj aGluZXMuIFBsdXMgZmVlbHMgYSBiaXQgYXdrd2FyZCB0byBtYW5kYXRlIGEgZ2VtIGxpYnJhcnkg aWYgeW91CndhbnQgdG8gdXNlIGR5bmFtaWMgZG1hLWJ1ZiBzdXBwb3J0IGluIHlvdXIgZHJpdmVy LiBIZW5jZSB3aHkgSSB0aGluawpzb21ldGhpbmcgYXJvdW5kIGRtYV9yZXN2IChidXQgd2l0aCBl bm91Z2ggZmxleGliaWxpdHkgdGhhdCBpdCBkb2Vzbid0Cmluc2lzdCB0aGF0IHRoZSBjb250ZW5k aW5nIGxvY2sgbXVzdCBiZSBhIGRtYV9yZXN2IGl0c2VsZikuCgo+ID4gUGxhbiBCIHdvdWxkIGJl IHRvIHRocm93IG91ciBoYW5kcyBpbnRvIGFuZCBkZWNsYXJlIHRoYXQgIm1vdmVfbm90aWZ5IGlz Cj4gPiBiZXN0IGVmZm9ydCBvbmx5IGFuZCBjYW4gZmFpbCBmb3IgYW55IHJlYXNvbiIuIEV4YWN0 bHkgbGlrZSB0dG0gZXZpY3Rpb24KPiA+IGN1cnJlbnRseSBkb2VzLCBldmVuIHdpdGggYWxsIHlv dXIgaGFja3MgdG8gZG8gYXQgbGVhc3Qgc29tZSBkbWFfcmVzdl9sb2NrCj4gPiAoYnV0IG5vdCB0 aGUgZnVsbCBzbG93cGF0aCkuCj4KPiBJIHdvdWxkIHNlcmlvdXNseSBOQUsgdGhhdC4gV2UgaGF2 ZSB0cmllZCB0aGF0IHdpdGggVFRNIGFuZCB0aGUgd2hvbGUKPiBpZGVhIGlzIGp1c3QgYnJhaW5k ZWFkLgo+Cj4gWW91IGNhbiB1c2UgdHJ5bG9jayBiYXNlZCBldmljdGlvbiBmb3IgdGhpbmdzIGxp a2UgYmVzdCBlZmZvcnQgc2hyaW5rZXIKPiBjYWxsYmFja3MuIEJ1dCB0aGF0J3MgcHJldHR5IG11 Y2ggaXQuCgpZZWFoIHRyeWxvY2sgd29ya3MgcHJldHR5IHdlbGwgZm9yIGJhbGFuY2luZyBjYWNo ZXMsIHJpZ2h0IHVwIHRvIHRoZQpwb2ludCB3aGVyZSB5b3UgYWN0dWFsbHkgaGF2ZSB0byBzaHJp bmsgc3R1ZmYuIFRoZW4gc3VkZGVubHkgYWxsIHRoZQpsb2NrcyBhcmUgY29udGVuZGVkIGJlY2F1 c2UgZXZlcnlvbmUgaXMgcnVubmluZyBsb3cgb24gbWVtb3J5IDotLyBXZQpoYXZlIGdsb3Jpb3Vz IGFtb3VudHMgb2YgZXhwZXJpZW5jZSB3aXRoIG91ciBiZXN0IGVmZm9ydCBzeXN0ZW0gbWVtb3J5 CnNocmlua2VyIGluIGk5MTUgLi4uCgo+ID4gR2l2ZW4gaG93IG11Y2ggImZ1biIgeW91IGhhdmUg d2l0aCBhbGwgdGhlIGxvdyBtZW1vcnkgaGFuZGxpbmcgYW5kIHR0bQo+ID4gZnVuZGFtZW50YWxs eSBiZWluZyBiZXN0LWVmZm9ydCBvbmx5IChkZXNwaXRlIHRoYXQgZG1hX3Jlc3Ygd291bGQgYWxs b3cgdXMKPiA+IHRvIGRvIHRoaXMgcmlnaHQsIHdpdGggc29tZSB3b3JrKSBJJ20gbm90IHN1cmUg dGhhdCdzIGEgZ29vZCBpZGVhIHRvCj4gPiBleHRlbmQgdG8gYSBjcm9zcy1kcml2ZXIgaW50ZXJm YWNlLiBQZXJzb25hbGx5IEknZCBsZWFuIHRvd2FyZHMgZml4aW5nCj4gPiB0aGlzIGZpcnN0IGZ1 bGx5IChpbiB0dG0vYW1kZ3B1KSwgYW5kIHRoZW4gdXNpbmcgdGhhdCB0byBpbXBsZW1lbnQKPiA+ IG1vdmVfbm90aWZ5IGNvcnJlY3RseS4KPgo+IFdlbGwgaGF2ZSB5b3Ugc2VlbiB0aGlzOiBodHRw czovL2Zvc2RlbS5vcmcvMjAyMC9zY2hlZHVsZS9ldmVudC90dG0vIDopCgpPaCBjb29sLCBJIHdh cyB3YWl0aW5nIGZvciB0aGUgdXBsb2FkLiBXaWxsIHdhdGNoIGFzYXAuIGJ0dyBzbGlkZXMgc29t ZXdoZXJlPwoKPiA+IE9yIGp1c3QgYWRkIGFuIGludCByZXR1cm4gdmFsdWUgaGVyZSBhbmQgbWFu ZGF0ZSB0aGF0IGltcG9ydGVycyBtdXN0Cj4gPiBoYW5kbGUgZXZpY3Rpb24gZmFpbHVyZXMuIEV4 YWN0bHkgbGlrZSB0dG1fbWVtX2V2aWN0X2ZpcnN0IGNhbiBjdXJyZW50bHkKPiA+IHN0aWxsIGZh aWwgZm9yIHZhcmlvdXMgcmVhc29ucy4KPiA+Cj4gPiAoU29ycnkgdGhpcyBpc24ndCBleGFjdGx5 IHRoZSBtYWlsIHlvdSBob3BlZCBmb3IpCj4KPiBXZWxsIGl0J3MgYWN0dWFsbHkgdGhlIG1haWwg SSBleHBlY3RlZC4gSSdtIHRoaW5raW5nIGFib3V0IGV4YWN0bHkgdGhvc2UKPiBwcm9ibGVtcyBm b3Igb3ZlciBhIHllYXIgbm93IGFzIHdlbGwuCj4KPiBGb3IgdGhlIHJhdGhlciBzcGVjaWZpYyBh bWRncHUgY2FzZSBJIGNvdWxkIHdvcmsgYXJvdW5kIHRoYXQgYnkKPiB1dGlsaXppbmcgdGhlIEhN TSB3b3JrIHRvIGludmFsaWRhdGUgcGFnZSB0YWJsZXMgb24gdGhlIGZseSwgYnV0IHRoYXQKPiBk b2Vzbid0IHJlYWxseSBoZWxwIHdpdGggbWVtb3J5IG1hbmFnZW1lbnQgaW4gZ2VuZXJhbC4KClll YWgsIHNvIG1vdmVfbm90aWZ5IGlzIG1heWJlIHNvbHZlYWJsZSB3aXRoIGJldHRlciBodyBhbmQg aG1tLCBidXQKdGhlcmUncyBvdGhlciBzY2VuYXJpb3Mgd2hlcmUgSSB0aGluayB0aGUgY3Jvc3Mt ZHJpdmVyIHd3X211dGV4CmxvY2tpbmcgd2lsbCBiZSBuZWVkZWQsIGZvciBmdW5kYW1lbnRhbCBy ZWFzb25zLiBTY2VuYXJpbzoKLSBhIGJ1bmNoIG9mIGdwdXMgaW4gcGNpZSBzbG90cywgYWxsIGlu IHRoZSBzYW1lIG1hY2hpbmUKLSBiZWNhdXNlIHBjaWUgaXMgc2xvdCBhIG5pY2UgaW50ZXJjb25u ZWN0IChpaXJjIHlvdSBndXlzIGNhbGwgeW91cnMKeGdtaSBvciBzb21ldGhpbmcgbGlrZSB0aGF0 KQotIHdvcmtpbmcgc2V0cyB0aGF0IGFyZSBiaWdnZXIgdGhhbiB2cmFtIG9mIGEgc2luZ2xlIGdw dQotIGxvdHMgb2YgYnVmZmVyIHNoYXJpbmcgb2ZjCgoxLiBTbyBkcml2ZXIgaGFzIGFuIGltcG9y dGVkIGRtYS1idWYsIGN1cnJlbnRseSBub3QgbWFwcGVkIGFueXdoZXJlCmJlY2F1c2UgdGkgZ290 IHRocm93biBvdXQgKG9yIGZpcnN0IHVzZSkuCjIuIEltcG9ydGVyIGNhbGxzIGRtYV9idWZfbWFw X2F0dGFjaGVtZW50CjMuIEV4cG9ydGVyIHJlYWxpemVzIHRoZXJlJ3MgYSBuaWNlIHhnbWkgbGlu ayBhbmQgcDJwIHdvdWxkIGJlIG11Y2gKYmV0dGVyIGlmIHRoYXQgb2JqZWN0IGlzIGluIHZyYW0u CjQuIEV4cG9ydGVyIGRvZXMgdHRtX2JvX3ZhbGlkYXRlIG9yIGVxdWl2YWxlbnQgdG8gZ2V0IHRo ZSBibyBpbnRvCnZyYW0sIGluY2x1ZGluZyBldmljdGlvbiBhbmQgbG90cyBvZiBsb2NraW5nCjUu IEluIHR1cm4gdGhpcyBtaWdodCBiaXRlIGJhY2sgdG8gdGhlIGltcG9ydGVyIHRocm91Z2ggc29t ZQptb3ZlX25vdGlmeSBvZiBvYmplY3RzIHN0aWxsIG1hcHBlZCwgYnV0IGF0IHRoZSBlbmQgb2Yg dGhlIGxydS4KClNvIC0+bW92ZV9ub3RpZnkgbWlnaHQgbm90IGJlIHRoZSB3b3JzdCwgZXZlbnR1 YWxseSBJIHRoaW5rIHdlJ2xsIG5lZWQKdGhlIGZ1bGwgbG9ja2luZyBkYW5jZSBhY3Jvc3MgZHJp dmVycyAob3IgYXQgbGVhc3QgYWNyb3NzIGRybV9kZXZpY2UKaW5zdGFuY2VzLCB0aGVyZSBtaWdo dCBiZSBpbnRlcm5hbCB1cGNhc3RpbmcgZ29pbmcgb24gc28geW91IGdldCB5b3VyCmJ1ZmZlcnMg cGxhY2VkIGluIHRoZSByaWdodCB2cmFtIGFuZCBhbGwgdGhhdCBkaXJlY3RseSkuCgo+IFNvIFlF UywgSSB0b3RhbGx5IGFncmVlIHRoYXQgd2UgbmVlZCBzb21lIHNvcnQgb2YgR0VNIGV4ZWN1dGlv biBjb250ZXh0Cj4gb3Igc29tZXRoaW5nIGxpa2UgdGhpcyB0byBsb2NrIGJ1ZmZlcnMgb24gdGhl IGZseSBhcyB3ZSB0cnkgdG8gbWFrZSByb29tCj4gZm9yIG90aGVycy4KClNvIHdoYXQncyB0aGUg cGxhbj8gTWVyZ2UgY3VycmVudCBzZXJpZXMgKHdpdGggdGhlIGJpa2VzaGVkcyBhZGRyZXNzKQp1 bmRlciB0aGlzIENPTkZJR19FWFBFUklNRU5UQUxfRFlOX0RNQUJVRiBhbmQgdGhlbiBzZWUgd2hl cmUgd2UgbGFuZApmcm9tIHRoZXJlPyBUcnlpbmcgdG8gZ2V0IGFsbCB0aGUgcGllY2VzIGxpbmVk IHVwIG91dCBvZiB0cmVlIGZlZWxzCmxpa2UgaXQncyBnb2luZyB0byBiZSB0b28gbXVjaCA6LS8K LURhbmllbAoKPgo+IFJlZ2FyZHMsCj4gQ2hyaXN0aWFuLgo+Cj4gPgo+ID4gQ2hlZXJzLCBEYW5p ZWwKPiA+Cj4gPj4gKyAgICAgICAgICAgICAgICAgICAgLyogV2hlbiB3ZSBnZXQgYW4gZXJyb3Ig aGVyZSBpdCBtZWFucyB0aGF0IHNvbWVib2R5Cj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICog ZWxzZSBpcyBob2xkaW5nIHRoZSBWTSBsb2NrIGFuZCB1cGRhdGluZyBwYWdlIHRhYmxlcwo+ID4+ ICsgICAgICAgICAgICAgICAgICAgICAqIFNvIHdlIGNhbiBqdXN0IGNvbnRpbnVlIGhlcmUuCj4g Pj4gKyAgICAgICAgICAgICAgICAgICAgICovCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgciA9 IGRtYV9yZXN2X2xvY2socmVzdiwgdGlja2V0KTsKPiA+PiArICAgICAgICAgICAgICAgICAgICBp ZiAocikKPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ID4+ICsK PiA+PiArICAgICAgICAgICAgfSBlbHNlIHsKPiA+PiArICAgICAgICAgICAgICAgICAgICAvKiBU T0RPOiBUaGlzIGlzIG1vcmUgcHJvYmxlbWF0aWMgYW5kIHdlIGFjdHVhbGx5IG5lZWQKPiA+PiAr ICAgICAgICAgICAgICAgICAgICAgKiB0byBhbGxvdyBwYWdlIHRhYmxlcyB1cGRhdGVzIHdpdGhv dXQgaG9sZGluZyB0aGUKPiA+PiArICAgICAgICAgICAgICAgICAgICAgKiBsb2NrLgo+ID4+ICsg ICAgICAgICAgICAgICAgICAgICAqLwo+ID4+ICsgICAgICAgICAgICAgICAgICAgIGlmICghZG1h X3Jlc3ZfdHJ5bG9jayhyZXN2KSkKPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnRpbnVlOwo+ID4+ICsgICAgICAgICAgICB9Cj4gPj4gKwo+ID4+ICsgICAgICAgICAgICByID0g YW1kZ3B1X3ZtX2NsZWFyX2ZyZWVkKGFkZXYsIHZtLCBOVUxMKTsKPiA+PiArICAgICAgICAgICAg aWYgKCFyKQo+ID4+ICsgICAgICAgICAgICAgICAgICAgIHIgPSBhbWRncHVfdm1faGFuZGxlX21v dmVkKGFkZXYsIHZtKTsKPiA+PiArCj4gPj4gKyAgICAgICAgICAgIGlmIChyICYmIHIgIT0gLUVC VVNZKQo+ID4+ICsgICAgICAgICAgICAgICAgICAgIERSTV9FUlJPUigiRmFpbGVkIHRvIGludmFs aWRhdGUgVk0gcGFnZSB0YWJsZXMgKCVkKSlcbiIsCj4gPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHIpOwo+ID4+ICsKPiA+PiArICAgICAgICAgICAgZG1hX3Jlc3ZfdW5sb2NrKHJl c3YpOwo+ID4+ICsgICAgfQo+ID4+ICt9Cj4gPj4gKwo+ID4+ICAgc3RhdGljIGNvbnN0IHN0cnVj dCBkbWFfYnVmX2F0dGFjaF9vcHMgYW1kZ3B1X2RtYV9idWZfYXR0YWNoX29wcyA9IHsKPiA+PiAr ICAgIC5tb3ZlX25vdGlmeSA9IGFtZGdwdV9kbWFfYnVmX21vdmVfbm90aWZ5Cj4gPj4gICB9Owo+ ID4+Cj4gPj4gICAvKioKPiA+PiBAQCAtNDg5LDcgKzU1Myw3IEBAIHN0cnVjdCBkcm1fZ2VtX29i amVjdCAqYW1kZ3B1X2dlbV9wcmltZV9pbXBvcnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ PiAgICAgICAgICAgICAgcmV0dXJuIG9iajsKPiA+Pgo+ID4+ICAgICAgYXR0YWNoID0gZG1hX2J1 Zl9keW5hbWljX2F0dGFjaChkbWFfYnVmLCBkZXYtPmRldiwKPiA+PiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJmFtZGdwdV9kbWFfYnVmX2F0dGFjaF9vcHMsIE5VTEwpOwo+ ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYW1kZ3B1X2RtYV9idWZf YXR0YWNoX29wcywgb2JqKTsKPiA+PiAgICAgIGlmIChJU19FUlIoYXR0YWNoKSkgewo+ID4+ICAg ICAgICAgICAgICBkcm1fZ2VtX29iamVjdF9wdXQob2JqKTsKPiA+PiAgICAgICAgICAgICAgcmV0 dXJuIEVSUl9DQVNUKGF0dGFjaCk7Cj4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9vYmplY3QuYwo+ID4+IGluZGV4IDhhZTI2MDgyMjkwOC4uOGM0ODBjODk4YjBkIDEwMDY0 NAo+ID4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuYwo+ ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuYwo+ID4+ IEBAIC05MjYsNiArOTI2LDkgQEAgaW50IGFtZGdwdV9ib19waW5fcmVzdHJpY3RlZChzdHJ1Y3Qg YW1kZ3B1X2JvICpibywgdTMyIGRvbWFpbiwKPiA+PiAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4g Pj4gICAgICB9Cj4gPj4KPiA+PiArICAgIGlmIChiby0+dGJvLmJhc2UuaW1wb3J0X2F0dGFjaCkK PiA+PiArICAgICAgICAgICAgZG1hX2J1Zl9waW4oYm8tPnRiby5iYXNlLmltcG9ydF9hdHRhY2gp Owo+ID4+ICsKPiA+PiAgICAgIGJvLT5mbGFncyB8PSBBTURHUFVfR0VNX0NSRUFURV9WUkFNX0NP TlRJR1VPVVM7Cj4gPj4gICAgICAvKiBmb3JjZSB0byBwaW4gaW50byB2aXNpYmxlIHZpZGVvIHJh bSAqLwo+ID4+ICAgICAgaWYgKCEoYm8tPmZsYWdzICYgQU1ER1BVX0dFTV9DUkVBVEVfTk9fQ1BV X0FDQ0VTUykpCj4gPj4gQEAgLTEwMDksNiArMTAxMiw5IEBAIGludCBhbWRncHVfYm9fdW5waW4o c3RydWN0IGFtZGdwdV9ibyAqYm8pCj4gPj4KPiA+PiAgICAgIGFtZGdwdV9ib19zdWJ0cmFjdF9w aW5fc2l6ZShibyk7Cj4gPj4KPiA+PiArICAgIGlmIChiby0+dGJvLmJhc2UuaW1wb3J0X2F0dGFj aCkKPiA+PiArICAgICAgICAgICAgZG1hX2J1Zl91bnBpbihiby0+dGJvLmJhc2UuaW1wb3J0X2F0 dGFjaCk7Cj4gPj4gKwo+ID4+ICAgICAgZm9yIChpID0gMDsgaSA8IGJvLT5wbGFjZW1lbnQubnVt X3BsYWNlbWVudDsgaSsrKSB7Cj4gPj4gICAgICAgICAgICAgIGJvLT5wbGFjZW1lbnRzW2ldLmxw Zm4gPSAwOwo+ID4+ICAgICAgICAgICAgICBiby0+cGxhY2VtZW50c1tpXS5mbGFncyAmPSB+VFRN X1BMX0ZMQUdfTk9fRVZJQ1Q7Cj4gPj4gLS0KPiA+PiAyLjE3LjEKPiA+Pgo+CgoKLS0gCkRhbmll bCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCis0MSAoMCkgNzkg MzY1IDU3IDQ4IC0gaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vZHJpLWRldmVsCg==