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 00C52C4361B for ; Thu, 17 Dec 2020 18:40: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 98293238E8 for ; Thu, 17 Dec 2020 18:40:53 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 98293238E8 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com 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 AF3BD894D4; Thu, 17 Dec 2020 18:40:52 +0000 (UTC) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [63.128.21.124]) by gabe.freedesktop.org (Postfix) with ESMTPS id D43C7894D4 for ; Thu, 17 Dec 2020 18:40:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1608230449; 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: in-reply-to:in-reply-to:references:references; bh=wS46oFCY0KkZ+z9rhmWgAxylbJDNcNhytQKbyl3LIn4=; b=WAgq6sC8C5U7NH+2Z4aXESy+rrhzRfSSLbuwczRf8pH7qbMsV9L3DZsnnICmBFGGYhh1FU JgWzVDTLK6D4Kz6UcZFx9/7yPiy6e4GtiU5QF/uA7k79nFzIMTycv4NWR4l/rE+vtnkOxK oyBzn94jPaNHNo3qWQh4aV8Oht7/xbU= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-166-B372kKs-OcGDwloETjAmOQ-1; Thu, 17 Dec 2020 13:40:47 -0500 X-MC-Unique: B372kKs-OcGDwloETjAmOQ-1 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 517CE8015F8; Thu, 17 Dec 2020 18:40:45 +0000 (UTC) Received: from redhat.com (ovpn-118-247.rdu2.redhat.com [10.10.118.247]) by smtp.corp.redhat.com (Postfix) with ESMTPS id D46B418222; Thu, 17 Dec 2020 18:40:43 +0000 (UTC) Date: Thu, 17 Dec 2020 13:40:41 -0500 From: Jerome Glisse To: Daniel Vetter Subject: Re: [PATCH 1/2] drm/ttm: rework ttm_tt page limit v2 Message-ID: <20201217184041.GB1277524@redhat.com> 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> MIME-Version: 1.0 In-Reply-To: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jglisse@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Disposition: inline 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 , Christian =?iso-8859-1?Q?K=F6nig?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" T24gVGh1LCBEZWMgMTcsIDIwMjAgYXQgMDc6MTk6MDdQTSArMDEwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBUaHUsIERlYyAxNywgMjAyMCBhdCA3OjA5IFBNIEplcm9tZSBHbGlzc2UgPGpn bGlzc2VAcmVkaGF0LmNvbT4gd3JvdGU6Cj4gPgo+ID4gQWRkaW5nIGZldyBmb2xrcyBvbiBjYyBq dXN0IHRvIHJhaXNlIGF3YXJlbmVzcyBhbmQgc28gdGhhdCBpCj4gPiBjb3VsZCBnZXQgY29ycmVj dGVkIGlmIGkgc2FpZCBhbnl0aGluZyB3cm9uZy4KPiA+Cj4gPiBPbiBUaHUsIERlYyAxNywgMjAy MCBhdCAwNDo0NTo1NVBNICswMTAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4gPiBPbiBUaHUs IERlYyAxNywgMjAyMCBhdCA0OjM2IFBNIENocmlzdGlhbiBLw7ZuaWcKPiA+ID4gPGNocmlzdGlh bi5rb2VuaWdAYW1kLmNvbT4gd3JvdGU6Cj4gPiA+ID4gQW0gMTcuMTIuMjAgdW0gMTY6MjYgc2No cmllYiBEYW5pZWwgVmV0dGVyOgo+ID4gPiA+ID4gT24gVGh1LCBEZWMgMTcsIDIwMjAgYXQgNDox MCBQTSBDaHJpc3RpYW4gS8O2bmlnCj4gPiA+ID4gPiA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29t PiB3cm90ZToKPiA+ID4gPiA+PiBBbSAxNy4xMi4yMCB1bSAxNTozNiBzY2hyaWViIERhbmllbCBW ZXR0ZXI6Cj4gPiA+ID4gPj4+IE9uIFRodSwgRGVjIDE3LCAyMDIwIGF0IDI6NDYgUE0gQ2hyaXN0 aWFuIEvDtm5pZwo+ID4gPiA+ID4+PiA8Y2tvZW5pZy5sZWljaHR6dW1lcmtlbkBnbWFpbC5jb20+ IHdyb3RlOgo+ID4gPiA+ID4+Pj4gQW0gMTYuMTIuMjAgdW0gMTY6MDkgc2NocmllYiBEYW5pZWwg VmV0dGVyOgo+ID4gPiA+ID4+Pj4+IE9uIFdlZCwgRGVjIDE2LCAyMDIwIGF0IDAzOjA0OjI2UE0g KzAxMDAsIENocmlzdGlhbiBLw7ZuaWcgd3JvdGU6Cj4gPiA+ID4gPj4+Pj4gW1NOSVBdCj4gPiA+ ID4gPj4+Pj4+ICsKPiA+ID4gPiA+Pj4+Pj4gKy8qIEFzIGxvbmcgYXMgcGFnZXMgYXJlIGF2YWls YWJsZSBtYWtlIHN1cmUgdG8gcmVsZWFzZSBhdCBsZWFzdCBvbmUgKi8KPiA+ID4gPiA+Pj4+Pj4g K3N0YXRpYyB1bnNpZ25lZCBsb25nIHR0bV90dF9zaHJpbmtlcl9zY2FuKHN0cnVjdCBzaHJpbmtl ciAqc2hyaW5rLAo+ID4gPiA+ID4+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3Qgc2hyaW5rX2NvbnRyb2wgKnNjKQo+ID4gPiA+ID4+Pj4+PiArewo+ID4g PiA+ID4+Pj4+PiArICAgIHN0cnVjdCB0dG1fb3BlcmF0aW9uX2N0eCBjdHggPSB7Cj4gPiA+ID4g Pj4+Pj4+ICsgICAgICAgICAgICAubm9fd2FpdF9ncHUgPSB0cnVlCj4gPiA+ID4gPj4+Pj4gSWly YyB0aGVyZSdzIGFuIGV2ZW50dWFsIHNocmlua2VyIGxpbWl0IHdoZXJlIGl0IGdldHMgZGVzcGVy YXRlLiBJIHRoaW5rCj4gPiA+ID4gPj4+Pj4gb25jZSB3ZSBoaXQgdGhhdCwgd2Ugc2hvdWxkIGFs bG93IGdwdSB3YWl0cy4gQnV0IGl0J3Mgbm90IHBhc3NlZCB0bwo+ID4gPiA+ID4+Pj4+IHNocmlu a2VycyBmb3IgcmVhc29ucywgc28gbWF5YmUgd2Ugc2hvdWxkIGhhdmUgYSBzZWNvbmQgcm91bmQg dGhhdCB0cmllcwo+ID4gPiA+ID4+Pj4+IHRvIG1vcmUgYWN0aXZlbHkgc2hyaW5rIG9iamVjdHMg aWYgd2UgZmVsbCBzdWJzdGFudGlhbGx5IHNob3J0IG9mIHdoYXQKPiA+ID4gPiA+Pj4+PiByZWNs YWltIGV4cGVjdGVkIHVzIHRvIGRvPwo+ID4gPiA+ID4+Pj4gSSB0aGluayB3ZSBzaG91bGQgdHJ5 IHRvIGF2b2lkIHdhaXRpbmcgZm9yIHRoZSBHUFUgaW4gdGhlIHNocmlua2VyIGNhbGxiYWNrLgo+ ID4gPiA+ID4+Pj4KPiA+ID4gPiA+Pj4+IFdoZW4gd2UgZ2V0IEhNTSB3ZSB3aWxsIGhhdmUgY2Fz ZXMgd2hlcmUgdGhlIHNocmlua2VyIGlzIGNhbGxlZCBmcm9tCj4gPiA+ID4gPj4+PiB0aGVyZSBh bmQgd2UgY2FuJ3Qgd2FpdCBmb3IgdGhlIEdQVSB0aGVuIHdpdGhvdXQgY2F1c2luZyBkZWFkbG9j a3MuCj4gPiA+ID4gPj4+IFVoIHRoYXQgZG9lc24ndCB3b3JrLiBBbHNvLCB0aGUgY3VycmVudCBy dWxlcyBhcmUgdGhhdCB5b3UgYXJlIGFsbG93ZWQKPiA+ID4gPiA+Pj4gdG8gY2FsbCBkbWFfZmVu Y2Vfd2FpdCBmcm9tIHNocmlua2VyIGNhbGxiYWNrcywgc28gdGhhdCBzaGlwcGVkIHNhaWxlZAo+ ID4gPiA+ID4+PiBhbHJlYWR5LiBUaGlzIGlzIGJlY2F1c2Ugc2hyaW5rZXJzIGFyZSBhIGxlc3Mg cmVzdHJpY3RpdmUgY29udGV4dCB0aGFuCj4gPiA+ID4gPj4+IG1tdSBub3RpZmllciBpbnZhbGlk YXRpb24sIGFuZCB3ZSB3YWl0IGluIHRoZXJlIHRvby4KPiA+ID4gPiA+Pj4KPiA+ID4gPiA+Pj4g U28gaWYgeW91IGNhbid0IHdhaXQgaW4gc2hyaW5rZXJzLCB5b3UgYWxzbyBjYW4ndCB3YWl0IGlu IG1tdQo+ID4gPiA+ID4+PiBub3RpZmllcnMgKGFuZCBhbHNvIG5vdCBpbiBITU0sIHfEpWljaCBp cyB0aGUgc2FtZSB0aGluZykuIFdoeSBkbyB5b3UKPiA+ID4gPiA+Pj4gbmVlZCB0aGlzPwo+ID4g PiA+ID4+IFRoZSBjb3JlIGNvbmNlcHQgb2YgSE1NIGlzIHRoYXQgcGFnZXMgYXJlIGZhdWx0ZWQg aW4gb24gZGVtYW5kIGFuZCBpdCBpcwo+ID4gPiA+ID4+IHBlcmZlY3RseSB2YWxpZCBmb3Igb25l IG9mIHRob3NlIHBhZ2VzIHRvIGJlIG9uIGRpc2suCj4gPiA+ID4gPj4KPiA+ID4gPiA+PiBTbyB3 aGVuIGEgcGFnZSBmYXVsdCBoYXBwZW5zIHdlIG1pZ2h0IG5lZWQgdG8gYmUgYWJsZSB0byBhbGxv Y2F0ZSBtZW1vcnkKPiA+ID4gPiA+PiBhbmQgZmV0Y2ggc29tZXRoaW5nIGZyb20gZGlzayB0byBo YW5kbGUgdGhhdC4KPiA+ID4gPiA+Pgo+ID4gPiA+ID4+IFdoZW4gdGhpcyBtZW1vcnkgYWxsb2Nh dGlvbiB0aGVuIGluIHR1cm4gd2FpdHMgZm9yIHRoZSBHUFUgd2hpY2ggaXMKPiA+ID4gPiA+PiBy dW5uaW5nIHRoZSBITU0gcHJvY2VzcyB3ZSBhcmUgcHJldHR5IG11Y2ggYnVzdGVkLgo+ID4gPiA+ ID4gWWVhaCB5b3UgY2FuJ3QgZG8gdGhhdC4gVGhhdCdzIHRoZSBlbnRpcmUgaW5maW5pdGUgZmVu Y2VzIGRpc2N1c3Npb25zLgo+ID4gPiA+Cj4gPiA+ID4gWWVzLCBleGFjdGx5Lgo+ID4gPiA+Cj4g PiA+ID4gPiBGb3IgSE1NIHRvIHdvcmssIHdlIG5lZWQgdG8gc3RvcCB1c2luZyBkbWFfZmVuY2Ug Zm9yIHVzZXJzcGFjZSBzeW5jLAo+ID4gPiA+Cj4gPiA+ID4gSSB3YXMgY29uc2lkZXJpbmcgb2Yg c2VwYXJhdGluZyB0aGF0IGludG8gYSBkbWFfZmVuY2UgYW5kIGEgaG1tX2ZlbmNlLgo+ID4gPiA+ IE9yIHNvbWV0aGluZyBsaWtlIHRoaXMuCj4gPiA+Cj4gPiA+IFRoZSB0cm91YmxlIGlzIHRoYXQg ZG1hX2ZlbmNlIGl0IGFsbCBpdHMgZm9ybXMgaXMgdWFwaS4gQW5kIG9uIGdwdXMKPiA+ID4gd2l0 aG91dCBwYWdlIGZhdWx0IHN1cHBvcnQgZG1hX2ZlbmNlX3dhaXQgaXMgc3RpbGwgcmVxdWlyZWQg aW4KPiA+ID4gYWxsb2NhdGlvbiBjb250ZXh0cy4gU28gY3JlYXRpbmcgYSBuZXcga2VybmVsIHN0 cnVjdHVyZSBkb2Vzbid0IHJlYWxseQo+ID4gPiBzb2x2ZSBhbnl0aGluZyBJIHRoaW5rLCBpdCBu ZWVkcyBlbnRpcmUgbmV3IHVhcGkgY29tcGxldGVseSBkZWNvdXBsZWQKPiA+ID4gZnJvbSBtZW1v cnkgbWFuYWdlbWVudC4gTGFzdCB0aW1lIHdlJ3ZlIGRvbmUgbmV3IHVhcGkgd2FzIHByb2JhYmx5 Cj4gPiA+IG1vZGlmaWVycywgYW5kIHRoYXQncyBzdGlsbCBub3Qgcm9sbGVkIG91dCB5ZWFycyBs YXRlci4KPiA+Cj4gPiBXaXRoIGhtbSB0aGVyZSBzaG91bGQgbm90IGJlIGFueSBmZW5jZSAhIFlv dSBkbyBub3QgbmVlZCB0aGVtLgo+ID4gSWYgeW91IGZlZWwgeW91IG5lZWQgdGhlbSB0aGFuIHlv dSBhcmUgZG9pbmcgc29tZXRoaW5nIGhvcnJpYmx5Cj4gPiB3cm9uZy4gU2VlIGJlbG93IG9uIHdo YXQgSE1NIG5lZWRzIGFuZCB3aGF0IGl0IG1lYW5zLgo+ID4KPiA+Cj4gPiA+ID4gPiBhbmQgeW91 IGNhbiBvbmx5IHVzZSB0aGUgYW1ka2ZkIHN0eWxlIHByZWVtcHQgZmVuY2VzLiBBbmQgcHJlZW1w dGluZwo+ID4gPiA+ID4gd2hpbGUgdGhlIHBhZ2VmYXVsdCBpcyBwZW5kaW5nIGlzIEkgdGhvdWdo dCBzb21ldGhpbmcgd2UgcmVxdWlyZS4KPiA+ID4gPgo+ID4gPiA+IFllYWgsIHByb2JsZW0gaXMg dGhhdCBtb3N0IGhhcmR3YXJlIGNhbid0IGRvIHRoYXQgOikKPiA+ID4gPgo+ID4gPiA+IEdldHRp bmcgcGFnZSBmYXVsdHMgdG8gd29yayBpcyBoYXJkIGVub3VnaCwgcHJlZW1wdGluZyB3aGlsZSB3 YWl0aW5nIGZvcgo+ID4gPiA+IGEgZmF1bHQgdG8gcmV0dXJuIGlzIG5vdCBzb21ldGhpbmcgd2hp Y2ggd2FzIGFudGljaXBhdGVkIDopCj4gPiA+Cj4gPiA+IEhtIGxhc3Qgc3VtbWVyIGluIGEgdGhy ZWFkIHlvdSBzYWlkIHlvdSd2ZSBibG9ja2VkIHRoYXQgYmVjYXVzZSBpdAo+ID4gPiBkb2Vzbid0 IHdvcmsuIEkgYWdyZWVkLCBwYWdlIGZhdWx0IHdpdGhvdXQgcHJlZW1wdCBpcyByYXRoZXIgdG91 Z2ggdG8KPiA+ID4gbWFrZSB3b3JrLgo+ID4gPgo+ID4gPiA+ID4gSW93LCB0aGUgSE1NIHBhZ2Ug ZmF1bHQgaGFuZGxlciBtdXN0IG5vdCBiZSBhIGRtYS1mZW5jZSBjcml0aWNhbAo+ID4gPiA+ID4g c2VjdGlvbiwgaS5lLiBpdCdzIG5vdCBhbGxvd2VkIHRvIGhvbGQgdXAgYW55IGRtYV9mZW5jZSwg ZXZlci4KPiA+ID4gPgo+ID4gPiA+IFdoYXQgZG8geW91IG1lYW4gd2l0aCB0aGF0Pwo+ID4gPgo+ ID4gPiBkbWFfZmVuY2Vfc2lnbmFsbGluZ19iZWdpbi9lbmQoKSBhbm5vdGF0aW9ucyBlc3NlbnRp YWxseSwgaS5lLgo+ID4gPiBjcm9zcy1yZWxlYXNlIGRlcGVuZGVuY2llcy4gT3IgdGhlIG90aGVy IHdheSByb3VuZCwgaWYgeW91IHdhbnQgdG8gYmUKPiA+ID4gYWJsZSB0byBhbGxvY2F0ZSBtZW1v cnkgeW91IGhhdmUgdG8gZ3VhcmFudGVlIHRoYXQgeW91J3JlIG5ldmVyCj4gPiA+IGhvbGRpbmcg dXAgYSBkbWFfZmVuY2UuCj4gPgo+ID4gQ29ycmVjdCBub3RoaW5nIHJlZ2FyZGluZyBkbWEvdHRt L2dlbSBzaG91bGQgY3JlZXAgaW50byBITU0gY29kZQo+ID4gcGF0aC4KPiA+Cj4gPgo+ID4gRm9y IEhNTSB3aGF0IHlvdSB3YW50IHdoZW4gaGFuZGxpbmcgR1BVIGZhdWx0IGlzIGRvaW5nIGl0IHdp dGhvdXQKPiA+IGhvbGRpbmcgYW55IEdQVSBkcml2ZXIgbG9ja3Mgc28gdGhhdCB0aGUgcmVndWxh ciBwYWdlIGZhdWx0IGhhbmRsZXIKPiA+IGNvZGUgcGF0aCBjYW4gZ28gYmFjayBpbnRvIHRoZSBH UFUgZHJpdmVyICh0aHJvdWdoIHNocmlua2VyKSB3aXRob3V0Cj4gPiB3b3JyeWluZyBhYm91dCBp dC4KPiA+Cj4gPiBUaGlzIGlzIGhvdyBub3V2ZWF1IGRvZXMgaXQ6Cj4gPiAgICAgLSBnZXQgZXZl bnQgYWJvdXQgcGFnZSBmYXVsdCAobWlnaHQgaG9sZCBzb21lIEdQVSBsb2NrKQo+ID4gICAgIC0g d2FsayB0aGUgZXZlbnQgYnVmZmVyIHRvIGdldCBhbGwgZmF1bHRpbmcgYWRkcmVzc2VzCj4gPiAg ICAgICAobWlnaHQgaG9sZCBzb21lIEdQVSBsb2NrKQo+ID4KPiA+ICAgICAhIERST1AgQUxMIEdQ VS9EUklWRVIgTE9DSyAhCj4gPgo+ID4gICAgIC0gdHJ5IHRvIGNvYWxsZXNjZSBmYXVsdCB0b2dl dGhlciAoYWRqYWNlbnQgYWRkcmVzcwo+ID4gICAgICAgdHJpZ2dlciBhIGZhdWx0IGZvciBhIHNp bmdsZSByYW5nZSkKPiA+ICAgICAtIGNhbGwgaW4gSE1NL21tdSBub3RpZmllciBoZWxwZXJzIHRv IGhhbmRsZSB0aGUgZmF1bHQKPiA+ICAgICAtIHRha2UgR1BVIGxvY2sgKHN2bW0tPm11dGV4IGZv ciBub3V2ZWF1KQo+ID4gICAgIC0gZnJvbSB0aGUgZmF1bHQgcmVzdWx0IHVwZGF0ZSBHUFUgcGFn ZSB0YWJsZQo+ID4KPiA+ICAgICAtIFRlbGwgR1BVIGl0IGNhbiByZXN1bWUgKHRoaXMgY2FuIGJl IGRvbmUgYWZ0ZXIgcmVsZWFzaW5nCj4gPiAgICAgICB0aGUgbG9jayBiZWxvdywgaXQgaXMganVz dCB1cCB0byB0aGUgZGV2aWNlIGRyaXZlciBmb2xrcwo+ID4gICAgICAgdG8gZGVjaWRlIHdoZW4g dG8gZG8gdGhhdCkuCj4gPgo+ID4gICAgIC0gdW5sb2NrIEdQVSAoc3ZtbS0+bXV0ZXggZm9yIG5v dXZlYXUpCj4gPgo+ID4gKHNlZSBub3V2ZWF1X3N2bS5jIGxvb2sgZm9yIHJhbmdlX2ZhdWx0KQo+ ID4KPiA+IEdQVSBwYWdlIGZhdWx0IHNob3VsZCBuZXZlciBuZWVkIHRvIHJlbHkgb24gc2hyaW5r ZXIgdG8gc3VjY2VlZAo+ID4gaW50byByZWNsYWltaW5nIG1lbW9yeS4gVGhlIHJhdGlvbmFsIGhl cmUgaXMgdGhhdCByZWd1bGFyIG1lbW9yeQo+ID4gcmVjbGFpbSAod2hpY2ggaW5jbHVkZXMgcmVn dWxhciBhbm9ueW1vdXMgb3IgbW1hcCBmaWxlIGJhY2sKPiA+IG1lbW9yeSkgd2lsbCBiZSBhYmxl IHRvIG1ha2UgZm9yd2FyZCBwcm9ncmVzcyBldmVuIGR1cmluZyBHUFUKPiA+IHBhZ2UgZmF1bHQu IFRoaXMgb2YgY291cnNlIG1lYW5zIHRoYXQgd2hpbGUgc2VydmljaW5nIGEgR1BVIHBhZ2UKPiA+ IGZhdWx0IHlvdSBtaWdodCBmcmVldXAgbWVtb3J5IHRoYXQgd2FzIGFsc28gdXNlIGJ5IHRoZSBH UFUgYW5kCj4gPiB3aGljaCB3aWxsIHJlLWZhdWx0IGFnYWluIGJ1dCB0aGUgbHJ1IGxpc3Qgc2hv dWxkIG1ha2UgdGhhdCB2ZXJ5Cj4gPiB1bmxpa2VseS4KPiA+Cj4gPgo+ID4gTm90ZSB0aGF0IGZv ciByZWd1bGFyIG1lbW9yeSByZWNsYWltIHRvIG1ha2UgZm9yd2FyZCBwcm9ncmVzcwo+ID4gbWVh bnMgdGhhdCB0aGUgR1BVIF9tdXN0XyBzdXBwb3J0IGFzeW5jaHJvbm91cyBHUFUgcGFnZSB0YWJs ZQo+ID4gdXBkYXRlIGllIGJlaW5nIGFibGUgdG8gdW5tYXAgdGhpbmdzIGZyb20gR1BVIHBhZ2Ug dGFibGUgYW5kCj4gPiBmbHVzaCBHUFUgVExCIHdpdGhvdXQgaGF2aW5nIHRvIHdhaXQgZm9yIGFu eXRoaW5nIHJ1bm5pbmcgb24KPiA+IHRoZSBHUFUuIFRoaXMgaXMgd2hlcmUgbm90IGFsbCBoYXJk d2FyZSBtaWdodCB3b3JrLiBPbmx5IHRoaW5ncwo+ID4gcG9wdWxhdGVkIHRocm91Z2ggSE1NIG5l ZWQgdG8gYmUgdW5tYXBwZWQgKGRtYS90dG0vZ2VtIHNob3VsZAo+ID4gbm90IGJlIGNvbnNpZGVy ZWQgdW5sZXNzIHRoZXkgdG9vIGNhbiBiZSB1bm1hcHBlZCB3aXRob3V0Cj4gPiBkZWFkbG9jayku Cj4gPgo+ID4gRm9yIG5vdXZlYXUgdGhpcyBpcyBkb25lIHRocm91Z2ggcmVnaXN0ZXIgd3JpdGUg KHNlZQo+ID4gZ2YxMDBfdm1tX2ludmFsaWRhdGUgYW5kIGdwMTAwX3ZtbV9pbnZhbGlkYXRlX3Bk YiBhbmQgdGhlCj4gPiBHUFUgcGFnZSB0YWJsZSBpdHNlbGYgaXMgdXBkYXRlZCB0aHJvdWdoIHRo ZSBDUFUpLgo+ID4KPiA+IEkgdGhpbmsgaXNzdWUgZm9yIEFNRCBoZXJlIGlzIHRoYXQgeW91IHJl bHkgb24gdXBkYXRpbmcgdGhlCj4gPiBHUFUgcGFnZSB0YWJsZSB0aHJvdWdoIHRoZSBHUFUgY29t bWFuZCBwcm9jZXNzb3IgYW5kIHRoaXMKPiA+IHdpbGwgbm90IHdvcmsgd2l0aCBITU0uIFVubGVz cyB5b3UgaGF2ZSBhIENQIGNoYW5uZWwgdGhhdAo+ID4gY2FuIGFsd2F5cyBtYWtlIGZvcndhcmQg cHJvZ3Jlc3Mgbm8gbWF0dGVyIHdoYXQuIE9yIHVwZGF0ZQo+ID4gdGhlIEdQVSBwYWdlIHRhYmxl IHdpdGggdGhlIENQVSBhbmQgZmx1c2ggR1BVIFRMQiB0aHJvdWdoCj4gPiBzb21lIHJlZ2lzdGVy IHdyaXRlIChpaXJjIHRoaXMgc2hvdWxkIGJlIGRvYWJsZSBvbiBBTUQgYnV0Cj4gPiBpIGZvcmdl dHRpbmcgdGhpbmdzIG5vdykuCj4gPgo+ID4KPiA+IFRoZXJlIGlzIG5vIG5lZWQgZm9yIHByZWVt cHRpb24gZXZlbiBpZiBpdCBpcyBhIG5pY2UgdG8gaGF2ZQo+ID4gZmVhdHVyZSAobGF6eSBHUFUg ZGVzaWduIGFyY2hpdGVjdCBhbmQgaGFyZHdhcmUgZGVzaWduZXIgISA7KSkuCj4gPgo+ID4KPiA+ IE5vdyBpZiBkbWEvdHRtL2dlbSBHUFUgbWVtb3J5IGFsbG9jYXRpb24gdXNlIGFsbCB0aGUgc3lz dGVtCj4gPiBtZW1vcnkgdGhlbiB3ZSBhcmUgaW4gdHJvdWJsZS4gVGhpcyB3YXMgdGhlIHdob2xl IHJlYXNvbiBmb3IKPiA+IGxpbWl0aW5nIG91cnNlbGYsIG9uY2UgdXBvbiBhIHRpbWUsIHRvIG5v dCB1c2Ugb3ZlciA1MCUgb2YKPiA+IG1lbW9yeSB3aXRoIGRtYS90dG0vZ2VtLiBJIGRvIG5vdCBo YXZlIGFueSBnb29kIHdheSB0byBzb2x2ZQo+ID4gdGhhdC4gSWYgdG8gbWFrZSBmb3J3YXJkIHBy b2dyZXNzIHRoZSBHUFUgbmVlZHMgdG8gYWxsb2NhdGUKPiA+IG1vcmUgbWVtb3J5IGJ1dCBpdCBh bHJlYWR5IGhhcyBleGhhdXN0ZWQgYWxsIG1lbW9yeSB0aHJvdWdoCj4gPiBkbWEvdHRtL2dlbSB0 aGVuIHRoZXJlIGlzIGp1c3Qgbm90aGluZyB3ZSBjYW4gZG8uCj4gPgo+ID4gSSBzdGlsbCBiZWxp ZXZlIHdlIHNob3VsZCBsaW1pdCBkbWEvdHRtL2dlbSBtZW1vcnkgdXNhZ2Ugc28KPiA+IHRoYXQg d2UgbmV2ZXIgZW5kdXAgcGlubmluZyBhbGwgc3lzdGVtIG1lbW9yeSBpbiBHUFUgcmVhbG1zLgo+ IAo+IFdlbGwgdGhpcyBpcyBleGFjdGx5IHdoYXQgd2UncmUgdHJ5aW5nIHRvIGRvIGhlcmUuIEFu ZCB0byBiZSBhYmxlIHRvCj4gc2hyaW5rIGRtYS90dG0vZ2VtIG1lbW9yeSB5b3UgZXZlbnR1YWxs eSBoYXZlIHRvIGNhbGwgZG1hX2ZlbmNlX3dhaXQsCj4gd2hpY2ggaXMgd2hlcmUgdGhlIGVudGly ZSB0cm91YmxlIGNvbWVzIGluLgo+IAo+IFRoZSBvdGhlciBzb3VyY2Ugb2YgdHJvdWJsZSBpcyBi dWZmZXIgYmFzZWQgdXNlcnB0ciwgd2hlcmUgd2UgYWxzbwo+IGNhbGwgZG1hX2ZlbmNlX3dhaXQu Cj4gCj4gQW5kIG9mIGNvdXJzZSB0aHJvdWdoIGRlcGRlbmNpZXMgKGV2ZW4gYWNyb3NzIGdwdXMp IHRoaXMKPiBkbWFfZmVuY2Vfd2FpdCBjb3VsZCBlbmQgdXAgYmVpbmcgYmxvY2tlZCBvbiBydW5u aW5nIHNvbWUgKG5vbi1obW0pCj4gY29udGV4dCBvbiB0aGUgc2FtZSBncHUgZW5naW5lIHdoaWNo IGlzIGN1cnJlbnRseSBydW5uaW5nIHlvdXIgaG1tCj4gY29udGV4dCBhbmQgc3R1Y2sgb24gc29t ZSBraW5kIG9mIGZhdWx0Lgo+IAo+IEFsc28sIHdpdGggdGhlIHJlY2VudCBkbWEtZmVuY2UgYW5u b3RhdGlvbiBwYXRjaCB3ZSBhbHJlYWR5IGxvY2tlZAo+IGRvd24gdGhlIHJ1bGUgdGhhdCBkbWFf ZmVuY2Vfd2FpdCBmcm9tIG1lbW9yeSByZWNsYWltIHBhdGhzIGlzIG9rCj4gKGk5MTUgYWxyZWFk eSBoYXMgbm8gbGltaXQgb24gc3lzdGVtIG1lbW9yeSB1c2FnZSwgYW5kIENocmlzdGlhbgo+IHJl YWxseSB3YW50cyB0byBkcm9wIGl0IGZvciB0dG0gZHJpdmVycyB0b28pLgo+IAo+ID4gSG9wZXMg dGhpcyBoZWxwIGNsYXJpZnkgcmVxdWlyZW1lbnQgYW5kIGV4cGVjdGF0aW9uLgo+IAo+IFNvIC4u LiB3aGF0IG5vdz8KPiAKPiBJIHNlZSBhIGZldyBvcHRpb25zOgo+IC0gcmVxdWlyZSBwcmVlbXB0 LiBUb3VnaCBvbiB0aGUgaGFyZHdhcmUuCj4gLSByZXdvcmsgdGhlIGVudGlyZSBtZW1vcnkgaGFu ZGxpbmcuIE5vdCBzdXJlIHRoYXQncyBwb3NzaWJsZSwgc2luY2UKPiBpdCB3b3VsZCBtZWFuIHRo YXQgSE1NIGdwdXMgYW5kIGJ1ZmZlciBiYXNlZCBtZW1vcnkgbWFuZ2VtZW50IGdwdXMKPiBjYW5u b3QgY28tZXhpc3Qgb24gdGhlIHNhbWUgc3lzdGVtLiBGbGFnIGRheXMgbGlrZSB0aGF0IGFjcm9z cyBhbgo+IGVudGlyZSBzdWJzeXN0ZW0gZG9udCB3b3JrLgo+IC0gZ2FuZyBzY2hlZHVsaW5nLCBp LmUuIHdoZW4gYSBncHUgaXMgcnVubmluZyBhbiBITU0gY29udGV4dCBpcyBtdXN0Cj4gZ3VhcmFu dGVlIHRoYXQgdGhlcmUncyBub3QgYSBzaW5nbGUgYnVmZmVyIGJhc2VkIGRtYS1idWYvdHRtL2dl bQo+IGNvbnRleHQgcGVuZGluZyAoYW5kIGJsb2NrIGFueSBleGVjYnVmL2NzIGlvY3RsIGJlZm9y ZSB3ZSBzdWJtaXQgYSBuZXcKPiBvbmUpCgpITU0gc2hvdWxkIG5vdCBwbGF5IGhlcmUsIEhNTSBz aG91bGQgYmUgdGhlIHBvbGl0ZSB1c2VyIGFzc3VtaW5nCnlvdSBmb2xsb3cgd2hhdCBpIGV4cG9z ZSBhYm92ZSBpZSBITU0gbmV2ZXIgcGlucyBtZW1vcnkgYW5kIGFsd2F5cwphbGxvdyBtZW1vcnkg cmVjbGFpbSB0byBtYWtlIGZvcndhcmQgcHJvZ3Jlc3Mgd2l0aG91dCBoYXZpbmcgdG8KdXNlIGFu eSBraW5kIG9mIGZlbmNlLgoKVGhlIGlzc3VlIGlzIGFsbCBhYm91dCBkbWEvdHRtL2dlbSBhbmQg c2hyaW5rZXIgbmVlZGluZyB0byB3YWl0IGZvcgpmZW5jZXMgZm9yIHRob3NlLgoKCj4gLSAuLiBz b21ldGhpbmcgZWxzZT8KPiAKCk9uZSBvZiB0aGUgbmV3IGlkZWEgaSBoYWQgb24gdGhlIHRvcGlj IGlzIHRvIGhhdmUgdGhlIEdQVSBkcml2ZXIKc2NoZWR1bGVyICh0aGUgdGhpbmcgdGhhdCBhY3R1 YWx5IHNjaGVkdWxlIHVzZXJzcGFjZSBjb21tYW5kIGJ1ZmZlcgppbiB0aGUga2VybmVsKSBrZWVw IHRyYWNrcyBvZiBob3cgbXVjaCBtZW1vcnkgaXQgaGFzIHBpbiB0aHJvdWdoIGlzCmNvbW1hbmQg cXVldWUgYW5kIGZvciBpdCB0byByZWZ1c2UgdG8gc2NoZWR1bGUgYW55dGhpbmcgbW9yZSBhYm92 ZQpzb21lIHRocmVzaG9sZCAoaXQgd291bGQgd2FpdCB1bnRpbCBwZW5kaW5nIEdQVSBhY3Rpdml0 aWVzIGZpbmlzaHVwCmFuZCB3aGljaCBtYWtlcyB0aGUgbWVtb3J5IHVzZSBnYXVnZSBnbyBkb3du IGJlbG93IHRoZSB0aHJlc2hvbGQpLgoKVGhlIGJpZyBpc3N1ZSBpcyB3aXRoIHVzZXIgc3BhY2Ug bWFuYWdlZCBjb21tYW5kIHJpbmcuIEkgYW0gbm90IHN1cmUKd2hhdCBhcmUgYWxsIHRoZSBoYXJk d2FyZSBjYXBhYmlsaXRpZXMgdGhlcmUgYnV0IG1heWJlIGlmIHdlIGNhbgp1bmJpbmQgKGZyb20g dGhlIGtlcm5lbCkgdGhlIHVzZXIgc3BhY2UgcmluZyBhbnkgdGltZSB3ZSBzZWUgc29tZQp0aHJl c2hvbGQgdGhlbiB3ZSBjYW4gY2lyY2xlIGJhY2sgb24gdGhhdCBpZGVhLgoKQW5vdGhlciBkcmF3 YmFjayBpcyB0aGF0IHlvdSBjYW4gbm90IHNjaGVkdWxlIGEgc2luZ2xlIGpvYiB0aGF0IHVzZQpt b3JlIG1lbW9yeSB0aGFuIHRoZSB0aHJlc2hvbGQuCgoKQWxzbyBvbmUgd2F5IHRvIG1pbmltaXpl IHRoZSBpc3N1ZSBtaWdodCBiZSB0byBzd2Fwb3V0IGRtYS90dG0vZ2VtCnNtYWxsIGNodW5rIGJ5 IHNtYWxsIGNodW5rIGluc3RlYWQgb2YgaGF2aW5nIHRvIGZpcnN0IGFsbG9jYXRlCnRoZSB3aG9s ZSBvYmplY3Qgc2l6ZSBvZiBzeXN0ZW0gbWVtb3J5IGJlZm9yZSBzd2FwcGluZyBpdCBvdXQuCgpK w6lyw7RtZQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K ZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==