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=-10.5 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham 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 558E8C12002 for ; Fri, 16 Jul 2021 18:45:29 +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 DFFEF613F8 for ; Fri, 16 Jul 2021 18:45:26 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DFFEF613F8 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 7F9F26E9CC; Fri, 16 Jul 2021 18:45:26 +0000 (UTC) Received: from mail-qt1-x830.google.com (mail-qt1-x830.google.com [IPv6:2607:f8b0:4864:20::830]) by gabe.freedesktop.org (Postfix) with ESMTPS id CEEE46E9CC; Fri, 16 Jul 2021 18:45:25 +0000 (UTC) Received: by mail-qt1-x830.google.com with SMTP id z12so7831118qtj.3; Fri, 16 Jul 2021 11:45:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=hdAetSsj+mXNeCALKxIX/QxUu8l+/9bBqxTHRGIfaiE=; b=LM1nxvqLIClMOsGqQbVLezpHTcQfpkbqykygAWXOLoe0r9XScWmEhTJBg7rfu8gkZc C02vylXkNrqtAqayWqeKkqYKPostmRiuwL0zyb/XK6nGx7qtBmWEBF1nnNW6lPO99II5 T/iHbrtmhNchyaRmobthtCGngSiVvL/HePz56TbrT34W23ORv1/ap3WUMK9/FYfwafaU Fd10LgA8LUCvltMev+LV2HLTkwsU4zlYk2Ej+2eXubx6GIXOoJi2zJLfaJzEN0a8c+xv YH8j55vYD5IQGLYWe9M9Ul1WfdITkMtrTxIN+KtnQvzGhOdZh+bv+04NsmGwi7CcsGXK G48w== 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=hdAetSsj+mXNeCALKxIX/QxUu8l+/9bBqxTHRGIfaiE=; b=Ojg8EcHh8LbG/WuKefuaMXG0LZxG6sN9HJvPlOYI4webng2ZFhWkkA0Dy1WTGGUJcp /9xwXTYxxY9BA/FuLMv0dwpWgOwWW56TtbdK1CyQDIINKRiYbQwv+vFgCKqS/4zp22UB jaVWLIS+VnnX9PrPJIHgSxPFA2SJK6ZRUDEJW7L9Ro9OY6jGHQf5wdON6w1ubqrl64qr O4onQNGeo2yz3q2Xpg8v1Q+v7gIf5XHpjoRoTA9FOAiVmSk01rJrUb5xlHxQ61dTV54d JIrqQEn2mQeJ/G1KGtJz8pl+rhIcDqe3Bnv5sGnjING1lFa1vQjZG6xOT6B4eP9RNn/s 1k3A== X-Gm-Message-State: AOAM5313U+UM5g9bqaEFZcR5j2PTARHjaBNEyzbwN+SABP/QXQbV1YfQ kVJAxAmSrggpMbW3MXqJlrBgrGK/pFKGkDT1iYA= X-Google-Smtp-Source: ABdhPJzJ/m0y2dTwz7Y0jERFu3HVdben8ugbGRr6RRJITjB/GmouXx0FwWUNZyBB7ygi18yurL6pzHaYnSLzHBVY1lg= X-Received: by 2002:a05:622a:448:: with SMTP id o8mr10500252qtx.341.1626461124861; Fri, 16 Jul 2021 11:45:24 -0700 (PDT) MIME-Version: 1.0 References: <20210715223900.1840576-1-jason@jlekstrand.net> <20210715223900.1840576-6-jason@jlekstrand.net> In-Reply-To: From: Matthew Auld Date: Fri, 16 Jul 2021 19:44:58 +0100 Message-ID: To: Jason Ekstrand Subject: Re: [Intel-gfx] [PATCH 5/7] drm/i915/gem/ttm: Respect the objection region in placement_from_obj X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?Q?Thomas_Hellstr=C3=B6m?= , Intel Graphics Development , Matthew Auld , ML dri-devel Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" T24gRnJpLCAxNiBKdWwgMjAyMSBhdCAxODozOSwgSmFzb24gRWtzdHJhbmQgPGphc29uQGpsZWtz dHJhbmQubmV0PiB3cm90ZToKPgo+IE9uIEZyaSwgSnVsIDE2LCAyMDIxIGF0IDExOjAwIEFNIE1h dHRoZXcgQXVsZAo+IDxtYXR0aGV3LndpbGxpYW0uYXVsZEBnbWFpbC5jb20+IHdyb3RlOgo+ID4K PiA+IE9uIEZyaSwgMTYgSnVsIDIwMjEgYXQgMTY6NTIsIE1hdHRoZXcgQXVsZAo+ID4gPG1hdHRo ZXcud2lsbGlhbS5hdWxkQGdtYWlsLmNvbT4gd3JvdGU6Cj4gPiA+Cj4gPiA+IE9uIEZyaSwgMTYg SnVsIDIwMjEgYXQgMTU6MTAsIEphc29uIEVrc3RyYW5kIDxqYXNvbkBqbGVrc3RyYW5kLm5ldD4g d3JvdGU6Cj4gPiA+ID4KPiA+ID4gPiBPbiBGcmksIEp1bCAxNiwgMjAyMSBhdCA4OjU0IEFNIE1h dHRoZXcgQXVsZAo+ID4gPiA+IDxtYXR0aGV3LndpbGxpYW0uYXVsZEBnbWFpbC5jb20+IHdyb3Rl Ogo+ID4gPiA+ID4KPiA+ID4gPiA+IE9uIFRodSwgMTUgSnVsIDIwMjEgYXQgMjM6MzksIEphc29u IEVrc3RyYW5kIDxqYXNvbkBqbGVrc3RyYW5kLm5ldD4gd3JvdGU6Cj4gPiA+ID4gPiA+Cj4gPiA+ ID4gPiA+IFdoZW5ldmVyIHdlIGhhZCBhIHVzZXIgb2JqZWN0IChuX3BsYWNlbWVudHMgPiAwKSwg d2Ugd2VyZSBpZ25vcmluZwo+ID4gPiA+ID4gPiBvYmotPm1tLnJlZ2lvbiBhbmQgYWx3YXlzIHB1 dHRpbmcgb2JqLT5wbGFjZW1lbnRzWzBdIGFzIHRoZSByZXF1ZXN0ZWQKPiA+ID4gPiA+ID4gcmVn aW9uLiAgRm9yIExNRU0rU01FTSBvYmplY3RzLCB0aGlzIHdhcyBjYXVzaW5nIHRoZW0gdG8gZ2V0 IHNob3ZlZCBpbnRvCj4gPiA+ID4gPiA+IExNRU0gb24gZXZlcnkgaTkxNV90dG1fZ2V0X3BhZ2Vz KCkgZXZlbiB3aGVuIFNNRU0gd2FzIHJlcXVlc3RlZCBieSwgc2F5LAo+ID4gPiA+ID4gPiBpOTE1 X2dlbV9vYmplY3RfbWlncmF0ZSgpLgo+ID4gPiA+ID4KPiA+ID4gPiA+IGk5MTVfdHRtX21pZ3Jh dGUgY2FsbHMgaTkxNV90dG1fcGxhY2VfZnJvbV9yZWdpb24oKSBkaXJlY3RseSB3aXRoIHRoZQo+ ID4gPiA+ID4gcmVxdWVzdGVkIHJlZ2lvbiwgc28gdGhlcmUgc2hvdWxkbid0IGJlIGFuIGlzc3Vl IHdpdGggbWlncmF0aW9uIHJpZ2h0Pwo+ID4gPiA+ID4gRG8geW91IGhhdmUgc29tZSBtb3JlIGRl dGFpbHM/Cj4gPiA+ID4KPiA+ID4gPiBXaXRoIGk5MTVfdHRtX21pZ3JhdGUgZGlyZWN0bHksIG5v LiAgQnV0LCBpbiB0aGUgbGFzdCBwYXRjaCBpbiB0aGUKPiA+ID4gPiBzZXJpZXMsIHdlJ3JlIHRy eWluZyB0byBtaWdyYXRlIExNRU0rU01FTSBidWZmZXJzIGludG8gU01FTSBvbgo+ID4gPiA+IGF0 dGFjaCgpIGFuZCBwaW4gaXQgdGhlcmUuICBUaGlzIGJsb3dzIHVwIGluIGEgdmVyeSB1bmV4cGVj dGVkIChJTU8pCj4gPiA+ID4gd2F5LiAgVGhlIGZsb3cgZ29lcyBzb21ldGhpbmcgbGlrZSB0aGlz Ogo+ID4gPiA+Cj4gPiA+ID4gIC0gQ2xpZW50IGF0dGVtcHRzIGEgZG1hLWJ1ZiBpbXBvcnQgZnJv bSBhbm90aGVyIGRldmljZQo+ID4gPiA+ICAtIEluIGF0dGFjaCgpIHdlIGNhbGwgaTkxNV9nZW1f b2JqZWN0X21pZ3JhdGUoKSB3aGljaCBjYWxscwo+ID4gPiA+IGk5MTVfdHRtX21pZ3JhdGUoKSB3 aGljaCBtaWdyYXRlcyBhcyByZXF1ZXN0ZWQuCj4gPiA+ID4gIC0gT25jZSB0aGUgbWlncmF0aW9u IGlzIGNvbXBsZXRlLCB3ZSBjYWxsIGk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMoKQo+ID4gPiA+ IHdoaWNoIGNhbGxzIGk5MTVfdHRtX2dldF9wYWdlcygpIHdoaWNoIGRlcGVuZHMgb24KPiA+ID4g PiBpOTE1X3R0bV9wbGFjZW1lbnRfZnJvbV9vYmooKSBhbmQgc28gbWlncmF0ZXMgaXQgcmlnaHQg YmFjayB0byBMTUVNLgo+ID4gPgo+ID4gPiBUaGUgbW0ucGFnZXMgbXVzdCBiZSBOVUxMIGhlcmUs IG90aGVyd2lzZSBpdCB3b3VsZCBqdXN0IGluY3JlbWVudCB0aGUKPiA+ID4gcGFnZXNfcGluX2Nv dW50Pwo+Cj4gR2l2ZW4gdGhhdCB0aGUgdGVzdCBpcyB1c2luZyB0aGUgX19fX2ZvdXJfdW5kZXJz Y29yZXMgdmVyc2lvbiwgaXQKPiBkb2Vzbid0IGhhdmUgdGhhdCBjaGVjay4gIEhvd2V2ZXIsIHRo aXMgZXhlY3V0ZXMgYWZ0ZXIgd2UndmUgZG9uZSB0aGUKPiBkbWEtYnVmIGltcG9ydCB3aGljaCBw aW5uZWQgcGFnZXMuICBTbyB3ZSBzaG91bGQgZGVmaW5pdGVseSBoYXZlCj4gcGFnZXMuCgpXZSBz aG91bGRuJ3QgY2FsbCBfX19fZm91cl91bmRlcnNjb3JlcygpIGlmIHdlIG1pZ2h0IGFscmVhZHkg aGF2ZQpwYWdlcyB0aG91Z2guIFVuZGVyIG5vbi1UVE0gdGhhdCB3b3VsZCBsZWFrIHRoZSBwYWdl cywgYW5kIGluIFRUTSB3ZQptaWdodCBoaXQgdGhlIFdBUk5fT04obW0tPnBhZ2VzKSBpbiBfX2k5 MTVfdHRtX2dldF9wYWdlcygpLCBpZiBmb3IKZXhhbXBsZSBub3RoaW5nIHdhcyBtb3ZlZC4gSSB0 YWtlIGl0IHdlIGNhbid0IGp1c3QgY2FsbCBwaW5fcGFnZXMoKT8KRm91ciBzY2FyeSB1bmRlcnNj b3JlcyB1c3VhbGx5IG1lYW5zICJkb24ndCBjYWxsIHRoaXMgaW4gbm9ybWFsIGNvZGUiLgoKPgo+ ID4gPiA+Cj4gPiA+ID4gTWF5YmUgdGhlIHByb2JsZW0gaGVyZSBpcyBhY3R1YWxseSB0aGF0IG91 ciBUVE0gY29kZSBpc24ndCByZXNwZWN0aW5nCj4gPiA+ID4gb2JqLT5tbS5wYWdlc19waW5fY291 bnQ/Cj4gPiA+Cj4gPiA+IEkgdGhpbmsgaWYgdGhlIHJlc291cmNlIGlzIG1vdmVkLCB3ZSBhbHdh eXMgbnVrZSB0aGUgbW0ucGFnZXMgYWZ0ZXIKPiA+ID4gYmVpbmcgbm90aWZpZWQgb2YgdGhlIG1v dmUuIEFsc28gVFRNIGlzIGFsc28gbm90IGFsbG93ZWQgdG8gbW92ZQo+ID4gPiBwaW5uZWQgYnVm ZmVycy4KPiA+ID4KPiA+ID4gSSBndWVzcyBpZiB3ZSBhcmUgZXZpY3RlZC9zd2FwcGVkLCBzbyBh c3N1bWluZyB3ZSBhcmUgbm90IGhvbGRpbmcgdGhlCj4gPiA+IG9iamVjdCBsb2NrLCBhbmQgaXQn cyBub3QgcGlubmVkLCB0aGUgZnV0dXJlIGNhbGwgdG8gZ2V0X3BhZ2VzKCkgd2lsbAo+ID4gPiBz ZWUgbW0ucGFnZXMgPSBOVUxMLCBldmVuIHRob3VnaCB0aGUgdHRtX3Jlc291cmNlIGlzIHN0aWxs IHRoZXJlLCBhbmQKPiA+ID4gYmVjYXVzZSB3ZSBwcmlvcml0aXNlIHRoZSBwbGFjZW1lbnRzWzBd LCBpbnN0ZWFkIG9mIG1tLnJlZ2lvbiB3ZSBlbmQKPiA+ID4gdXAgbW92aW5nIGl0IGZvciBubyBn b29kIHJlYXNvbi4gQnV0IGluIHlvdXIgY2FzZSB5b3UgYXJlIGhvbGRpbmcgdGhlCj4gPiA+IGxv Y2ssIG9yIGl0J3MgcGlubmVkPyBBbHNvIGlzIHRoaXMganVzdCB3aXRoIHRoZSBzZWxmdGVzdCwg b3IKPiA+ID4gc29tZXRoaW5nIHJlYWw/Cj4gPgo+ID4gT3IgYXQgbGVhc3QgaW4gdGhlIHNlbGZ0 ZXN0IEkgc2VlIF9fX19pOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzKCkKPiA+IHdoaWNoIGRvZXNu J3QgZXZlbiBjb25zaWRlciB0aGUgbW0ucGFnZXMgQUZBSUsuCj4KPiBUaGUgYm9ndXMgbWlncmF0 aW9uIGlzIGhhcHBlbmluZyBhcyBwYXJ0IG9mIHRoZQo+IF9faTkxNV9nZW1fb2JqZWN0X2dldF9w YWdlcygpICgyIF9fdW5kZXJzY29yZXMpIGNhbGwgaW4KPiBpOTE1X2dlbV9kbWFidWZfYXR0YWNo IChzZWUgbGFzdCBwYXRjaCkuICBUaGF0IGNvZGUgaXMgYXR0ZW1wdGluZyB0bwo+IG1pZ3JhdGUg dGhlIEJPIHRvIFNNRU0gYW5kIHRoZW4gcGluIGl0IHRoZXJlIHVzaW5nIHRoZSBvYnZpb3VzIGNh bGxzCj4gdG8gZG8gc28uICBIb3dldmVyLCBpbiB0aGUgcGluX3BhZ2VzIGNhbGwsIGl0IGdldHMg aW1wbGljaXRseSBtaWdyYXRlZAo+IGJhY2sgdG8gTE1FTSB0aGFua3MgdG8gaTkxNV90dG1fZ2V0 X3BhZ2VzKCkuICBXaHkgaXMgX2dldF9wYWdlcygpCj4gbWlncmF0aW5nIHRoaW5ncyBhdCBhbGw/ CgpOb3Qgc3VyZSB5ZXQsIGJ1dCBfX3R3b191bmRlcnNjb3JlcygpIGNoZWNrcyBpZgppOTE1X2dl bV9vYmplY3RfaGFzX3BhZ2VzKCkgYmVmb3JlIGFjdHVhbGx5IGNhbGxpbmcgaW50bwppOTE1X3R0 bV9nZXRfcGFnZXMoKSwgc28gdGhlIG1tLnBhZ2VzIHdvdWxkIGhhdmUgdG8gYmUgTlVMTCBoZXJl IGZvcgpzb21lIHJlYXNvbiwgc28gYmVzdCBndWVzcyBpcyBzb21ldGhpbmcgdG8gZG8gd2l0aCBt b3ZlX25vdGlmeSgpLgoKPgo+IC0tSmFzb24KPgo+ID4gPgo+ID4gPiA+Cj4gPiA+ID4gSW4gY2Fz ZSB5b3UgY2FuJ3QgdGVsbCwgSSByZWFsbHkgaGF2ZSBubyBjbHVlIHdoYXQgSSdtIGRvaW5nIGhl cmUuCj4gPiA+ID4gSSdtIHJlYWxseSBzdHVtYmxpbmcgYXJvdW5kIGluIHRoZSBkYXJrIGZpbmRp bmcgdGhpbmdzIHRoYXQgbWFrZSBteQo+ID4gPiA+IGJ1ZyBnbyBhd2F5LiAgSSdtIGhhcHB5IGZv ciB0aGUgZmVlZGJhY2suCj4gPiA+ID4KPiA+ID4gPiAtLUphc29uCj4gPiA+ID4KPiA+ID4gPiA+ Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IEphc29uIEVrc3RyYW5kIDxq YXNvbkBqbGVrc3RyYW5kLm5ldD4KPiA+ID4gPiA+ID4gQ2M6IFRob21hcyBIZWxsc3Ryw7ZtIDx0 aG9tYXMuaGVsbHN0cm9tQGxpbnV4LmludGVsLmNvbT4KPiA+ID4gPiA+ID4gQ2M6IE1hdHRoZXcg QXVsZCA8bWF0dGhldy5hdWxkQGludGVsLmNvbT4KPiA+ID4gPiA+ID4gQ2M6IE1hYXJ0ZW4gTGFu a2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4gPiA+ID4gPiA+IC0t LQo+ID4gPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bS5jIHwg MyArLS0KPiA+ID4gPiA+ID4gIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMiBkZWxl dGlvbnMoLSkKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2dlbS9pOTE1X2dlbV90dG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9p OTE1X2dlbV90dG0uYwo+ID4gPiA+ID4gPiBpbmRleCBkMzBmMjc0YzMyOWM3Li41OTg1ZTk5NGQ1 NmNmIDEwMDY0NAo+ID4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkx NV9nZW1fdHRtLmMKPiA+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5 MTVfZ2VtX3R0bS5jCj4gPiA+ID4gPiA+IEBAIC0xNTAsOCArMTUwLDcgQEAgaTkxNV90dG1fcGxh Y2VtZW50X2Zyb21fb2JqKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4g PiA+ID4gPiA+ICAgICAgICAgdW5zaWduZWQgaW50IGk7Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ ICAgICAgICAgcGxhY2VtZW50LT5udW1fcGxhY2VtZW50ID0gMTsKPiA+ID4gPiA+ID4gLSAgICAg ICBpOTE1X3R0bV9wbGFjZV9mcm9tX3JlZ2lvbihudW1fYWxsb3dlZCA/IG9iai0+bW0ucGxhY2Vt ZW50c1swXSA6Cj4gPiA+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg b2JqLT5tbS5yZWdpb24sIHJlcXVlc3RlZCwgZmxhZ3MpOwo+ID4gPiA+ID4gPiArICAgICAgIGk5 MTVfdHRtX3BsYWNlX2Zyb21fcmVnaW9uKG9iai0+bW0ucmVnaW9uLCByZXF1ZXN0ZWQsIGZsYWdz KTsKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gICAgICAgICAvKiBDYWNoZSB0aGlzIG9uIG9iamVj dD8gKi8KPiA+ID4gPiA+ID4gICAgICAgICBwbGFjZW1lbnQtPm51bV9idXN5X3BsYWNlbWVudCA9 IG51bV9hbGxvd2VkOwo+ID4gPiA+ID4gPiAtLQo+ID4gPiA+ID4gPiAyLjMxLjEKPiA+ID4gPiA+ ID4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==