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=-3.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED autolearn=no 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 A628BC4361B for ; Thu, 17 Dec 2020 18:26:54 +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 5F862238E8 for ; Thu, 17 Dec 2020 18:26:54 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5F862238E8 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 E0E0F6E1AA; Thu, 17 Dec 2020 18:26:53 +0000 (UTC) Received: from mail-ot1-x329.google.com (mail-ot1-x329.google.com [IPv6:2607:f8b0:4864:20::329]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8F14D6E1AA for ; Thu, 17 Dec 2020 18:26:52 +0000 (UTC) Received: by mail-ot1-x329.google.com with SMTP id x13so28327697oto.8 for ; Thu, 17 Dec 2020 10:26:52 -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=wgBNONj3/FGoZLfpnnpZ90T/XUNL1y3ygubnCrOLUng=; b=eyLXmZYMrkLM5zF70ACKH9d+ecmM2zYKTaz5lQfffSIeAYNBV9p7OZLCWTFMPHJoX+ faLMSws1zPQNDIoaKNmK1N9NrrdmJjBgT1UYlb7Tb2nQr7NVmHuQ9magPotXdBRbihlC CXWTOnf6j1KZOFjJql6a1rfXyeTxtlWM5XRIk= 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=wgBNONj3/FGoZLfpnnpZ90T/XUNL1y3ygubnCrOLUng=; b=GdaGHBUo4LnR+l8080Zmhaa1sR+z90sE+xgEZ+2+NV7HRxH+bJ+dr4qYxu0ewW+TJj cycnhwBNLZExmU3m9kwSiqFAYoWg5xG2Cyqa54R2MkXFW5XjwHixdfNfEEmHBGdGoDRa 1VTOY+gXbp7DQz/mW8b8Elv/arjZadGPdXsmby5j6nyfdZqFqpjUkbeAyQmJ5WGEWhD4 4TWSM9ZZ7ZJAdXPze6ALuKfJWhFxBSm19hbK0yFwYhWOlMyKyglXe6stN56BojCVy7sQ +kijTcK7F/or7I33jucXR+oHhempMj74j4DC5aVkgWEXw9paYZQuU5331i82tJ+jY1i2 251g== X-Gm-Message-State: AOAM533lZLFzIEbHbykSSR/9gYBFVC9WXd+fsWgdpaTGeH/vgbNRINWk xImx7KIFoAld96kGiJVY8n/l9c/ltdXUpm6xm6DkKg== X-Google-Smtp-Source: ABdhPJyANGw4XAFPtFDYoNLB/OcWjWEPMz3Vy1vltzfOfOnL5FSIXcijrvvs2a/b7dKcLi4XQQmdrIXJsOheUXJDqCs= X-Received: by 2002:a05:6830:1bef:: with SMTP id k15mr109597otb.303.1608229611240; Thu, 17 Dec 2020 10:26:51 -0800 (PST) MIME-Version: 1.0 References: <20201216140427.1253-1-christian.koenig@amd.com> <2d702307-052c-f59d-a385-f373d1eae823@gmail.com> <0e50223b-d851-fdaa-d25e-5402d14444af@amd.com> <20201217180917.GA1277524@redhat.com> In-Reply-To: From: Daniel Vetter Date: Thu, 17 Dec 2020 19:26:39 +0100 Message-ID: Subject: Re: [PATCH 1/2] drm/ttm: rework ttm_tt page limit v2 To: Jerome Glisse 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: Ralph Campbell , Dave Airlie , John Hubbard , Roland Scheidegger , dri-devel , Huang Rui , VMware Graphics , Ben Skeggs , =?UTF-8?Q?Christian_K=C3=B6nig?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" T24gVGh1LCBEZWMgMTcsIDIwMjAgYXQgNzoxOSBQTSBEYW5pZWwgVmV0dGVyIDxkYW5pZWxAZmZ3 bGwuY2g+IHdyb3RlOgo+Cj4gT24gVGh1LCBEZWMgMTcsIDIwMjAgYXQgNzowOSBQTSBKZXJvbWUg R2xpc3NlIDxqZ2xpc3NlQHJlZGhhdC5jb20+IHdyb3RlOgo+ID4KPiA+IEFkZGluZyBmZXcgZm9s a3Mgb24gY2MganVzdCB0byByYWlzZSBhd2FyZW5lc3MgYW5kIHNvIHRoYXQgaQo+ID4gY291bGQg Z2V0IGNvcnJlY3RlZCBpZiBpIHNhaWQgYW55dGhpbmcgd3JvbmcuCj4gPgo+ID4gT24gVGh1LCBE ZWMgMTcsIDIwMjAgYXQgMDQ6NDU6NTVQTSArMDEwMCwgRGFuaWVsIFZldHRlciB3cm90ZToKPiA+ ID4gT24gVGh1LCBEZWMgMTcsIDIwMjAgYXQgNDozNiBQTSBDaHJpc3RpYW4gS8O2bmlnCj4gPiA+ IDxjaHJpc3RpYW4ua29lbmlnQGFtZC5jb20+IHdyb3RlOgo+ID4gPiA+IEFtIDE3LjEyLjIwIHVt IDE2OjI2IHNjaHJpZWIgRGFuaWVsIFZldHRlcjoKPiA+ID4gPiA+IE9uIFRodSwgRGVjIDE3LCAy MDIwIGF0IDQ6MTAgUE0gQ2hyaXN0aWFuIEvDtm5pZwo+ID4gPiA+ID4gPGNocmlzdGlhbi5rb2Vu aWdAYW1kLmNvbT4gd3JvdGU6Cj4gPiA+ID4gPj4gQW0gMTcuMTIuMjAgdW0gMTU6MzYgc2Nocmll YiBEYW5pZWwgVmV0dGVyOgo+ID4gPiA+ID4+PiBPbiBUaHUsIERlYyAxNywgMjAyMCBhdCAyOjQ2 IFBNIENocmlzdGlhbiBLw7ZuaWcKPiA+ID4gPiA+Pj4gPGNrb2VuaWcubGVpY2h0enVtZXJrZW5A Z21haWwuY29tPiB3cm90ZToKPiA+ID4gPiA+Pj4+IEFtIDE2LjEyLjIwIHVtIDE2OjA5IHNjaHJp ZWIgRGFuaWVsIFZldHRlcjoKPiA+ID4gPiA+Pj4+PiBPbiBXZWQsIERlYyAxNiwgMjAyMCBhdCAw MzowNDoyNlBNICswMTAwLCBDaHJpc3RpYW4gS8O2bmlnIHdyb3RlOgo+ID4gPiA+ID4+Pj4+IFtT TklQXQo+ID4gPiA+ID4+Pj4+PiArCj4gPiA+ID4gPj4+Pj4+ICsvKiBBcyBsb25nIGFzIHBhZ2Vz IGFyZSBhdmFpbGFibGUgbWFrZSBzdXJlIHRvIHJlbGVhc2UgYXQgbGVhc3Qgb25lICovCj4gPiA+ ID4gPj4+Pj4+ICtzdGF0aWMgdW5zaWduZWQgbG9uZyB0dG1fdHRfc2hyaW5rZXJfc2NhbihzdHJ1 Y3Qgc2hyaW5rZXIgKnNocmluaywKPiA+ID4gPiA+Pj4+Pj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IHNocmlua19jb250cm9sICpzYykKPiA+ID4gPiA+Pj4+ Pj4gK3sKPiA+ID4gPiA+Pj4+Pj4gKyAgICBzdHJ1Y3QgdHRtX29wZXJhdGlvbl9jdHggY3R4ID0g ewo+ID4gPiA+ID4+Pj4+PiArICAgICAgICAgICAgLm5vX3dhaXRfZ3B1ID0gdHJ1ZQo+ID4gPiA+ ID4+Pj4+IElpcmMgdGhlcmUncyBhbiBldmVudHVhbCBzaHJpbmtlciBsaW1pdCB3aGVyZSBpdCBn ZXRzIGRlc3BlcmF0ZS4gSSB0aGluawo+ID4gPiA+ID4+Pj4+IG9uY2Ugd2UgaGl0IHRoYXQsIHdl IHNob3VsZCBhbGxvdyBncHUgd2FpdHMuIEJ1dCBpdCdzIG5vdCBwYXNzZWQgdG8KPiA+ID4gPiA+ Pj4+PiBzaHJpbmtlcnMgZm9yIHJlYXNvbnMsIHNvIG1heWJlIHdlIHNob3VsZCBoYXZlIGEgc2Vj b25kIHJvdW5kIHRoYXQgdHJpZXMKPiA+ID4gPiA+Pj4+PiB0byBtb3JlIGFjdGl2ZWx5IHNocmlu ayBvYmplY3RzIGlmIHdlIGZlbGwgc3Vic3RhbnRpYWxseSBzaG9ydCBvZiB3aGF0Cj4gPiA+ID4g Pj4+Pj4gcmVjbGFpbSBleHBlY3RlZCB1cyB0byBkbz8KPiA+ID4gPiA+Pj4+IEkgdGhpbmsgd2Ug c2hvdWxkIHRyeSB0byBhdm9pZCB3YWl0aW5nIGZvciB0aGUgR1BVIGluIHRoZSBzaHJpbmtlciBj YWxsYmFjay4KPiA+ID4gPiA+Pj4+Cj4gPiA+ID4gPj4+PiBXaGVuIHdlIGdldCBITU0gd2Ugd2ls bCBoYXZlIGNhc2VzIHdoZXJlIHRoZSBzaHJpbmtlciBpcyBjYWxsZWQgZnJvbQo+ID4gPiA+ID4+ Pj4gdGhlcmUgYW5kIHdlIGNhbid0IHdhaXQgZm9yIHRoZSBHUFUgdGhlbiB3aXRob3V0IGNhdXNp bmcgZGVhZGxvY2tzLgo+ID4gPiA+ID4+PiBVaCB0aGF0IGRvZXNuJ3Qgd29yay4gQWxzbywgdGhl IGN1cnJlbnQgcnVsZXMgYXJlIHRoYXQgeW91IGFyZSBhbGxvd2VkCj4gPiA+ID4gPj4+IHRvIGNh bGwgZG1hX2ZlbmNlX3dhaXQgZnJvbSBzaHJpbmtlciBjYWxsYmFja3MsIHNvIHRoYXQgc2hpcHBl ZCBzYWlsZWQKPiA+ID4gPiA+Pj4gYWxyZWFkeS4gVGhpcyBpcyBiZWNhdXNlIHNocmlua2VycyBh cmUgYSBsZXNzIHJlc3RyaWN0aXZlIGNvbnRleHQgdGhhbgo+ID4gPiA+ID4+PiBtbXUgbm90aWZp ZXIgaW52YWxpZGF0aW9uLCBhbmQgd2Ugd2FpdCBpbiB0aGVyZSB0b28uCj4gPiA+ID4gPj4+Cj4g PiA+ID4gPj4+IFNvIGlmIHlvdSBjYW4ndCB3YWl0IGluIHNocmlua2VycywgeW91IGFsc28gY2Fu J3Qgd2FpdCBpbiBtbXUKPiA+ID4gPiA+Pj4gbm90aWZpZXJzIChhbmQgYWxzbyBub3QgaW4gSE1N LCB3xKVpY2ggaXMgdGhlIHNhbWUgdGhpbmcpLiBXaHkgZG8geW91Cj4gPiA+ID4gPj4+IG5lZWQg dGhpcz8KPiA+ID4gPiA+PiBUaGUgY29yZSBjb25jZXB0IG9mIEhNTSBpcyB0aGF0IHBhZ2VzIGFy ZSBmYXVsdGVkIGluIG9uIGRlbWFuZCBhbmQgaXQgaXMKPiA+ID4gPiA+PiBwZXJmZWN0bHkgdmFs aWQgZm9yIG9uZSBvZiB0aG9zZSBwYWdlcyB0byBiZSBvbiBkaXNrLgo+ID4gPiA+ID4+Cj4gPiA+ ID4gPj4gU28gd2hlbiBhIHBhZ2UgZmF1bHQgaGFwcGVucyB3ZSBtaWdodCBuZWVkIHRvIGJlIGFi bGUgdG8gYWxsb2NhdGUgbWVtb3J5Cj4gPiA+ID4gPj4gYW5kIGZldGNoIHNvbWV0aGluZyBmcm9t IGRpc2sgdG8gaGFuZGxlIHRoYXQuCj4gPiA+ID4gPj4KPiA+ID4gPiA+PiBXaGVuIHRoaXMgbWVt b3J5IGFsbG9jYXRpb24gdGhlbiBpbiB0dXJuIHdhaXRzIGZvciB0aGUgR1BVIHdoaWNoIGlzCj4g PiA+ID4gPj4gcnVubmluZyB0aGUgSE1NIHByb2Nlc3Mgd2UgYXJlIHByZXR0eSBtdWNoIGJ1c3Rl ZC4KPiA+ID4gPiA+IFllYWggeW91IGNhbid0IGRvIHRoYXQuIFRoYXQncyB0aGUgZW50aXJlIGlu ZmluaXRlIGZlbmNlcyBkaXNjdXNzaW9ucy4KPiA+ID4gPgo+ID4gPiA+IFllcywgZXhhY3RseS4K PiA+ID4gPgo+ID4gPiA+ID4gRm9yIEhNTSB0byB3b3JrLCB3ZSBuZWVkIHRvIHN0b3AgdXNpbmcg ZG1hX2ZlbmNlIGZvciB1c2Vyc3BhY2Ugc3luYywKPiA+ID4gPgo+ID4gPiA+IEkgd2FzIGNvbnNp ZGVyaW5nIG9mIHNlcGFyYXRpbmcgdGhhdCBpbnRvIGEgZG1hX2ZlbmNlIGFuZCBhIGhtbV9mZW5j ZS4KPiA+ID4gPiBPciBzb21ldGhpbmcgbGlrZSB0aGlzLgo+ID4gPgo+ID4gPiBUaGUgdHJvdWJs ZSBpcyB0aGF0IGRtYV9mZW5jZSBpdCBhbGwgaXRzIGZvcm1zIGlzIHVhcGkuIEFuZCBvbiBncHVz Cj4gPiA+IHdpdGhvdXQgcGFnZSBmYXVsdCBzdXBwb3J0IGRtYV9mZW5jZV93YWl0IGlzIHN0aWxs IHJlcXVpcmVkIGluCj4gPiA+IGFsbG9jYXRpb24gY29udGV4dHMuIFNvIGNyZWF0aW5nIGEgbmV3 IGtlcm5lbCBzdHJ1Y3R1cmUgZG9lc24ndCByZWFsbHkKPiA+ID4gc29sdmUgYW55dGhpbmcgSSB0 aGluaywgaXQgbmVlZHMgZW50aXJlIG5ldyB1YXBpIGNvbXBsZXRlbHkgZGVjb3VwbGVkCj4gPiA+ IGZyb20gbWVtb3J5IG1hbmFnZW1lbnQuIExhc3QgdGltZSB3ZSd2ZSBkb25lIG5ldyB1YXBpIHdh cyBwcm9iYWJseQo+ID4gPiBtb2RpZmllcnMsIGFuZCB0aGF0J3Mgc3RpbGwgbm90IHJvbGxlZCBv dXQgeWVhcnMgbGF0ZXIuCj4gPgo+ID4gV2l0aCBobW0gdGhlcmUgc2hvdWxkIG5vdCBiZSBhbnkg ZmVuY2UgISBZb3UgZG8gbm90IG5lZWQgdGhlbS4KPiA+IElmIHlvdSBmZWVsIHlvdSBuZWVkIHRo ZW0gdGhhbiB5b3UgYXJlIGRvaW5nIHNvbWV0aGluZyBob3JyaWJseQo+ID4gd3JvbmcuIFNlZSBi ZWxvdyBvbiB3aGF0IEhNTSBuZWVkcyBhbmQgd2hhdCBpdCBtZWFucy4KPiA+Cj4gPgo+ID4gPiA+ ID4gYW5kIHlvdSBjYW4gb25seSB1c2UgdGhlIGFtZGtmZCBzdHlsZSBwcmVlbXB0IGZlbmNlcy4g QW5kIHByZWVtcHRpbmcKPiA+ID4gPiA+IHdoaWxlIHRoZSBwYWdlZmF1bHQgaXMgcGVuZGluZyBp cyBJIHRob3VnaHQgc29tZXRoaW5nIHdlIHJlcXVpcmUuCj4gPiA+ID4KPiA+ID4gPiBZZWFoLCBw cm9ibGVtIGlzIHRoYXQgbW9zdCBoYXJkd2FyZSBjYW4ndCBkbyB0aGF0IDopCj4gPiA+ID4KPiA+ ID4gPiBHZXR0aW5nIHBhZ2UgZmF1bHRzIHRvIHdvcmsgaXMgaGFyZCBlbm91Z2gsIHByZWVtcHRp bmcgd2hpbGUgd2FpdGluZyBmb3IKPiA+ID4gPiBhIGZhdWx0IHRvIHJldHVybiBpcyBub3Qgc29t ZXRoaW5nIHdoaWNoIHdhcyBhbnRpY2lwYXRlZCA6KQo+ID4gPgo+ID4gPiBIbSBsYXN0IHN1bW1l ciBpbiBhIHRocmVhZCB5b3Ugc2FpZCB5b3UndmUgYmxvY2tlZCB0aGF0IGJlY2F1c2UgaXQKPiA+ ID4gZG9lc24ndCB3b3JrLiBJIGFncmVlZCwgcGFnZSBmYXVsdCB3aXRob3V0IHByZWVtcHQgaXMg cmF0aGVyIHRvdWdoIHRvCj4gPiA+IG1ha2Ugd29yay4KPiA+ID4KPiA+ID4gPiA+IElvdywgdGhl IEhNTSBwYWdlIGZhdWx0IGhhbmRsZXIgbXVzdCBub3QgYmUgYSBkbWEtZmVuY2UgY3JpdGljYWwK PiA+ID4gPiA+IHNlY3Rpb24sIGkuZS4gaXQncyBub3QgYWxsb3dlZCB0byBob2xkIHVwIGFueSBk bWFfZmVuY2UsIGV2ZXIuCj4gPiA+ID4KPiA+ID4gPiBXaGF0IGRvIHlvdSBtZWFuIHdpdGggdGhh dD8KPiA+ID4KPiA+ID4gZG1hX2ZlbmNlX3NpZ25hbGxpbmdfYmVnaW4vZW5kKCkgYW5ub3RhdGlv bnMgZXNzZW50aWFsbHksIGkuZS4KPiA+ID4gY3Jvc3MtcmVsZWFzZSBkZXBlbmRlbmNpZXMuIE9y IHRoZSBvdGhlciB3YXkgcm91bmQsIGlmIHlvdSB3YW50IHRvIGJlCj4gPiA+IGFibGUgdG8gYWxs b2NhdGUgbWVtb3J5IHlvdSBoYXZlIHRvIGd1YXJhbnRlZSB0aGF0IHlvdSdyZSBuZXZlcgo+ID4g PiBob2xkaW5nIHVwIGEgZG1hX2ZlbmNlLgo+ID4KPiA+IENvcnJlY3Qgbm90aGluZyByZWdhcmRp bmcgZG1hL3R0bS9nZW0gc2hvdWxkIGNyZWVwIGludG8gSE1NIGNvZGUKPiA+IHBhdGguCj4gPgo+ ID4KPiA+IEZvciBITU0gd2hhdCB5b3Ugd2FudCB3aGVuIGhhbmRsaW5nIEdQVSBmYXVsdCBpcyBk b2luZyBpdCB3aXRob3V0Cj4gPiBob2xkaW5nIGFueSBHUFUgZHJpdmVyIGxvY2tzIHNvIHRoYXQg dGhlIHJlZ3VsYXIgcGFnZSBmYXVsdCBoYW5kbGVyCj4gPiBjb2RlIHBhdGggY2FuIGdvIGJhY2sg aW50byB0aGUgR1BVIGRyaXZlciAodGhyb3VnaCBzaHJpbmtlcikgd2l0aG91dAo+ID4gd29ycnlp bmcgYWJvdXQgaXQuCj4gPgo+ID4gVGhpcyBpcyBob3cgbm91dmVhdSBkb2VzIGl0Ogo+ID4gICAg IC0gZ2V0IGV2ZW50IGFib3V0IHBhZ2UgZmF1bHQgKG1pZ2h0IGhvbGQgc29tZSBHUFUgbG9jaykK PiA+ICAgICAtIHdhbGsgdGhlIGV2ZW50IGJ1ZmZlciB0byBnZXQgYWxsIGZhdWx0aW5nIGFkZHJl c3Nlcwo+ID4gICAgICAgKG1pZ2h0IGhvbGQgc29tZSBHUFUgbG9jaykKPiA+Cj4gPiAgICAgISBE Uk9QIEFMTCBHUFUvRFJJVkVSIExPQ0sgIQo+ID4KPiA+ICAgICAtIHRyeSB0byBjb2FsbGVzY2Ug ZmF1bHQgdG9nZXRoZXIgKGFkamFjZW50IGFkZHJlc3MKPiA+ICAgICAgIHRyaWdnZXIgYSBmYXVs dCBmb3IgYSBzaW5nbGUgcmFuZ2UpCj4gPiAgICAgLSBjYWxsIGluIEhNTS9tbXUgbm90aWZpZXIg aGVscGVycyB0byBoYW5kbGUgdGhlIGZhdWx0Cj4gPiAgICAgLSB0YWtlIEdQVSBsb2NrIChzdm1t LT5tdXRleCBmb3Igbm91dmVhdSkKPiA+ICAgICAtIGZyb20gdGhlIGZhdWx0IHJlc3VsdCB1cGRh dGUgR1BVIHBhZ2UgdGFibGUKPiA+Cj4gPiAgICAgLSBUZWxsIEdQVSBpdCBjYW4gcmVzdW1lICh0 aGlzIGNhbiBiZSBkb25lIGFmdGVyIHJlbGVhc2luZwo+ID4gICAgICAgdGhlIGxvY2sgYmVsb3cs IGl0IGlzIGp1c3QgdXAgdG8gdGhlIGRldmljZSBkcml2ZXIgZm9sa3MKPiA+ICAgICAgIHRvIGRl Y2lkZSB3aGVuIHRvIGRvIHRoYXQpLgo+ID4KPiA+ICAgICAtIHVubG9jayBHUFUgKHN2bW0tPm11 dGV4IGZvciBub3V2ZWF1KQo+ID4KPiA+IChzZWUgbm91dmVhdV9zdm0uYyBsb29rIGZvciByYW5n ZV9mYXVsdCkKPiA+Cj4gPiBHUFUgcGFnZSBmYXVsdCBzaG91bGQgbmV2ZXIgbmVlZCB0byByZWx5 IG9uIHNocmlua2VyIHRvIHN1Y2NlZWQKPiA+IGludG8gcmVjbGFpbWluZyBtZW1vcnkuIFRoZSBy YXRpb25hbCBoZXJlIGlzIHRoYXQgcmVndWxhciBtZW1vcnkKPiA+IHJlY2xhaW0gKHdoaWNoIGlu Y2x1ZGVzIHJlZ3VsYXIgYW5vbnltb3VzIG9yIG1tYXAgZmlsZSBiYWNrCj4gPiBtZW1vcnkpIHdp bGwgYmUgYWJsZSB0byBtYWtlIGZvcndhcmQgcHJvZ3Jlc3MgZXZlbiBkdXJpbmcgR1BVCj4gPiBw YWdlIGZhdWx0LiBUaGlzIG9mIGNvdXJzZSBtZWFucyB0aGF0IHdoaWxlIHNlcnZpY2luZyBhIEdQ VSBwYWdlCj4gPiBmYXVsdCB5b3UgbWlnaHQgZnJlZXVwIG1lbW9yeSB0aGF0IHdhcyBhbHNvIHVz ZSBieSB0aGUgR1BVIGFuZAo+ID4gd2hpY2ggd2lsbCByZS1mYXVsdCBhZ2FpbiBidXQgdGhlIGxy dSBsaXN0IHNob3VsZCBtYWtlIHRoYXQgdmVyeQo+ID4gdW5saWtlbHkuCj4gPgo+ID4KPiA+IE5v dGUgdGhhdCBmb3IgcmVndWxhciBtZW1vcnkgcmVjbGFpbSB0byBtYWtlIGZvcndhcmQgcHJvZ3Jl c3MKPiA+IG1lYW5zIHRoYXQgdGhlIEdQVSBfbXVzdF8gc3VwcG9ydCBhc3luY2hyb25vdXMgR1BV IHBhZ2UgdGFibGUKPiA+IHVwZGF0ZSBpZSBiZWluZyBhYmxlIHRvIHVubWFwIHRoaW5ncyBmcm9t IEdQVSBwYWdlIHRhYmxlIGFuZAo+ID4gZmx1c2ggR1BVIFRMQiB3aXRob3V0IGhhdmluZyB0byB3 YWl0IGZvciBhbnl0aGluZyBydW5uaW5nIG9uCj4gPiB0aGUgR1BVLiBUaGlzIGlzIHdoZXJlIG5v dCBhbGwgaGFyZHdhcmUgbWlnaHQgd29yay4gT25seSB0aGluZ3MKPiA+IHBvcHVsYXRlZCB0aHJv dWdoIEhNTSBuZWVkIHRvIGJlIHVubWFwcGVkIChkbWEvdHRtL2dlbSBzaG91bGQKPiA+IG5vdCBi ZSBjb25zaWRlcmVkIHVubGVzcyB0aGV5IHRvbyBjYW4gYmUgdW5tYXBwZWQgd2l0aG91dAo+ID4g ZGVhZGxvY2spLgo+ID4KPiA+IEZvciBub3V2ZWF1IHRoaXMgaXMgZG9uZSB0aHJvdWdoIHJlZ2lz dGVyIHdyaXRlIChzZWUKPiA+IGdmMTAwX3ZtbV9pbnZhbGlkYXRlIGFuZCBncDEwMF92bW1faW52 YWxpZGF0ZV9wZGIgYW5kIHRoZQo+ID4gR1BVIHBhZ2UgdGFibGUgaXRzZWxmIGlzIHVwZGF0ZWQg dGhyb3VnaCB0aGUgQ1BVKS4KPiA+Cj4gPiBJIHRoaW5rIGlzc3VlIGZvciBBTUQgaGVyZSBpcyB0 aGF0IHlvdSByZWx5IG9uIHVwZGF0aW5nIHRoZQo+ID4gR1BVIHBhZ2UgdGFibGUgdGhyb3VnaCB0 aGUgR1BVIGNvbW1hbmQgcHJvY2Vzc29yIGFuZCB0aGlzCj4gPiB3aWxsIG5vdCB3b3JrIHdpdGgg SE1NLiBVbmxlc3MgeW91IGhhdmUgYSBDUCBjaGFubmVsIHRoYXQKPiA+IGNhbiBhbHdheXMgbWFr ZSBmb3J3YXJkIHByb2dyZXNzIG5vIG1hdHRlciB3aGF0LiBPciB1cGRhdGUKPiA+IHRoZSBHUFUg cGFnZSB0YWJsZSB3aXRoIHRoZSBDUFUgYW5kIGZsdXNoIEdQVSBUTEIgdGhyb3VnaAo+ID4gc29t ZSByZWdpc3RlciB3cml0ZSAoaWlyYyB0aGlzIHNob3VsZCBiZSBkb2FibGUgb24gQU1EIGJ1dAo+ ID4gaSBmb3JnZXR0aW5nIHRoaW5ncyBub3cpLgo+ID4KPiA+Cj4gPiBUaGVyZSBpcyBubyBuZWVk IGZvciBwcmVlbXB0aW9uIGV2ZW4gaWYgaXQgaXMgYSBuaWNlIHRvIGhhdmUKPiA+IGZlYXR1cmUg KGxhenkgR1BVIGRlc2lnbiBhcmNoaXRlY3QgYW5kIGhhcmR3YXJlIGRlc2lnbmVyICEgOykpLgo+ ID4KPiA+Cj4gPiBOb3cgaWYgZG1hL3R0bS9nZW0gR1BVIG1lbW9yeSBhbGxvY2F0aW9uIHVzZSBh bGwgdGhlIHN5c3RlbQo+ID4gbWVtb3J5IHRoZW4gd2UgYXJlIGluIHRyb3VibGUuIFRoaXMgd2Fz IHRoZSB3aG9sZSByZWFzb24gZm9yCj4gPiBsaW1pdGluZyBvdXJzZWxmLCBvbmNlIHVwb24gYSB0 aW1lLCB0byBub3QgdXNlIG92ZXIgNTAlIG9mCj4gPiBtZW1vcnkgd2l0aCBkbWEvdHRtL2dlbS4g SSBkbyBub3QgaGF2ZSBhbnkgZ29vZCB3YXkgdG8gc29sdmUKPiA+IHRoYXQuIElmIHRvIG1ha2Ug Zm9yd2FyZCBwcm9ncmVzcyB0aGUgR1BVIG5lZWRzIHRvIGFsbG9jYXRlCj4gPiBtb3JlIG1lbW9y eSBidXQgaXQgYWxyZWFkeSBoYXMgZXhoYXVzdGVkIGFsbCBtZW1vcnkgdGhyb3VnaAo+ID4gZG1h L3R0bS9nZW0gdGhlbiB0aGVyZSBpcyBqdXN0IG5vdGhpbmcgd2UgY2FuIGRvLgo+ID4KPiA+IEkg c3RpbGwgYmVsaWV2ZSB3ZSBzaG91bGQgbGltaXQgZG1hL3R0bS9nZW0gbWVtb3J5IHVzYWdlIHNv Cj4gPiB0aGF0IHdlIG5ldmVyIGVuZHVwIHBpbm5pbmcgYWxsIHN5c3RlbSBtZW1vcnkgaW4gR1BV IHJlYWxtcy4KPgo+IFdlbGwgdGhpcyBpcyBleGFjdGx5IHdoYXQgd2UncmUgdHJ5aW5nIHRvIGRv IGhlcmUuIEFuZCB0byBiZSBhYmxlIHRvCj4gc2hyaW5rIGRtYS90dG0vZ2VtIG1lbW9yeSB5b3Ug ZXZlbnR1YWxseSBoYXZlIHRvIGNhbGwgZG1hX2ZlbmNlX3dhaXQsCj4gd2hpY2ggaXMgd2hlcmUg dGhlIGVudGlyZSB0cm91YmxlIGNvbWVzIGluLgo+Cj4gVGhlIG90aGVyIHNvdXJjZSBvZiB0cm91 YmxlIGlzIGJ1ZmZlciBiYXNlZCB1c2VycHRyLCB3aGVyZSB3ZSBhbHNvCj4gY2FsbCBkbWFfZmVu Y2Vfd2FpdC4KPgo+IEFuZCBvZiBjb3Vyc2UgdGhyb3VnaCBkZXBkZW5jaWVzIChldmVuIGFjcm9z cyBncHVzKSB0aGlzCj4gZG1hX2ZlbmNlX3dhaXQgY291bGQgZW5kIHVwIGJlaW5nIGJsb2NrZWQg b24gcnVubmluZyBzb21lIChub24taG1tKQo+IGNvbnRleHQgb24gdGhlIHNhbWUgZ3B1IGVuZ2lu ZSB3aGljaCBpcyBjdXJyZW50bHkgcnVubmluZyB5b3VyIGhtbQo+IGNvbnRleHQgYW5kIHN0dWNr IG9uIHNvbWUga2luZCBvZiBmYXVsdC4KPgo+IEFsc28sIHdpdGggdGhlIHJlY2VudCBkbWEtZmVu Y2UgYW5ub3RhdGlvbiBwYXRjaCB3ZSBhbHJlYWR5IGxvY2tlZAo+IGRvd24gdGhlIHJ1bGUgdGhh dCBkbWFfZmVuY2Vfd2FpdCBmcm9tIG1lbW9yeSByZWNsYWltIHBhdGhzIGlzIG9rCj4gKGk5MTUg YWxyZWFkeSBoYXMgbm8gbGltaXQgb24gc3lzdGVtIG1lbW9yeSB1c2FnZSwgYW5kIENocmlzdGlh bgo+IHJlYWxseSB3YW50cyB0byBkcm9wIGl0IGZvciB0dG0gZHJpdmVycyB0b28pLgo+Cj4gPiBI b3BlcyB0aGlzIGhlbHAgY2xhcmlmeSByZXF1aXJlbWVudCBhbmQgZXhwZWN0YXRpb24uCj4KPiBT byAuLi4gd2hhdCBub3c/Cj4KPiBJIHNlZSBhIGZldyBvcHRpb25zOgo+IC0gcmVxdWlyZSBwcmVl bXB0LiBUb3VnaCBvbiB0aGUgaGFyZHdhcmUuCj4gLSByZXdvcmsgdGhlIGVudGlyZSBtZW1vcnkg aGFuZGxpbmcuIE5vdCBzdXJlIHRoYXQncyBwb3NzaWJsZSwgc2luY2UKPiBpdCB3b3VsZCBtZWFu IHRoYXQgSE1NIGdwdXMgYW5kIGJ1ZmZlciBiYXNlZCBtZW1vcnkgbWFuZ2VtZW50IGdwdXMKPiBj YW5ub3QgY28tZXhpc3Qgb24gdGhlIHNhbWUgc3lzdGVtLiBGbGFnIGRheXMgbGlrZSB0aGF0IGFj cm9zcyBhbgo+IGVudGlyZSBzdWJzeXN0ZW0gZG9udCB3b3JrLgo+IC0gZ2FuZyBzY2hlZHVsaW5n LCBpLmUuIHdoZW4gYSBncHUgaXMgcnVubmluZyBhbiBITU0gY29udGV4dCBpcyBtdXN0Cj4gZ3Vh cmFudGVlIHRoYXQgdGhlcmUncyBub3QgYSBzaW5nbGUgYnVmZmVyIGJhc2VkIGRtYS1idWYvdHRt L2dlbQo+IGNvbnRleHQgcGVuZGluZyAoYW5kIGJsb2NrIGFueSBleGVjYnVmL2NzIGlvY3RsIGJl Zm9yZSB3ZSBzdWJtaXQgYSBuZXcKPiBvbmUpCgpUaGlzIGhlcmUgd291bGRuJ3QgYmUgdGhlIHdv cnN0IHNvbHV0aW9uLCBldmVuIG9uIGRlc2t0b3BzOgotIHdlIGFscmVhZHkgc3RhbGwgYXQgZXhl Y2J1ZiBmb3IgdGltZWxpbmUgc2VtYXBob3Jlcywgc28gdGhpcyBpc24ndCBldmVuIG5ldwotIHdo ZW4gdGhlIGdwdSBpcyBvY2N1cGllZCBieSBhbiBobW0gdGFzaywgdGhlbiBleGVjYnVmL2NzIGlv Y3RsIGNhbgppc3N1ZSBhIGxvdy1wcmlvcml0eSBwcmVlbXB0IHJlcXVlc3QgdG8gbWFrZSBzdXJl IHRoZSBkZXNrdG9wIGRvZXNuJ3QKZnJlZXplIGZvcmV2ZXIuIEFzIGxvbmcgYXMgdGhhdCBoYXBw ZW5zIGJlZm9yZSB3ZSBoYXZlIGEgZG1hX2ZlbmNlIGZvcgp0aGF0IGNzIGNyZWF0ZWQsIGl0J3Mg YWxsIGZpbmUgdG8gcHJlZW1wdCBITU0gY29udGV4dC4KLSBwcmVlbXB0ZWQgSE1NIHRhc2tzIHdv dWxkIGltbWVkaWF0ZWx5IHRyeSB0byByZS1ydW4sIHRvIG1ha2Ugc3VyZQp0aGF0IHRoZXkgZ2V0 IGZhaXIgc2NoZWR1bGluZyBiZXR3ZWVuIHRoZSBleGVjYnVmIHRhc2tzCgpJdCdzIG5vdCBnb2lu ZyB0byBiZSBncmVhdCBzaW5jZSB0aGUgcGlwZWxpbmUgaXMgZG93biB0aGUgZ3V0dGVycywgYnV0 Cm5vIGZyb3plbiBkZXNrdG9wIHdoaWxlIHJ1bm5pbmcgSE1NIGpvYnMuIEFuZCBhcyBsb25nIGFz IHlvdSBkbwptYWpvcml0eSB0aW1lIG9ubHkgb25lIG9yIHRoZSBvdGhlciB0aGUgZ3B1IHJ1bnMg YXQgZnVsbCBzcGVlZCB3aXRoCmFsbCB0aGUgcGlwZWxpbmluZy4gU28gbm8gcGVyZiBpbXBhY3Qg b24gZ2FtaW5nIG9yIG9uIG92ZXJuaWdodApjb21wdXRlIGpvYnMuCi1EYW5pZWwKCj4gLSAuLiBz b21ldGhpbmcgZWxzZT8KPgo+IENoZWVycywgRGFuaWVsCj4gLS0KPiBEYW5pZWwgVmV0dGVyCj4g U29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCj4gaHR0cDovL2Jsb2cuZmZ3bGwu Y2gKCgoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0 aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2RyaS1kZXZlbAo=