From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Zhang, Jerry (Junwei)" Subject: Re: [PATCH] drm/amdgpu: skip huge page for PRT mapping Date: Tue, 5 Jun 2018 13:29:06 +0800 Message-ID: <5B161FA2.3050802@amd.com> References: <1528077815-32053-1-git-send-email-Jerry.Zhang@amd.com> <648c1eb2-0729-7091-6df5-4795e720f25c@gmail.com> <5B14E41E.8030004@amd.com> <5B14F609.7020105@amd.com> <5d5211d6-440b-59a7-1eec-7e6f5d556ecf@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: =?UTF-8?B?Q2hyaXN0aWFuIEvDtm5pZw==?= , "Zhou, David(ChunMing)" , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" T24gMDYvMDQvMjAxOCAwNzowMSBQTSwgQ2hyaXN0aWFuIEvDtm5pZyB3cm90ZToKPiBJJ3ZlIGZp Z3VyZWQgb3V0IHdoYXQncyBnb2luZyB3cm9uZyBoZXJlLgo+Cj4gWW91ciBhbmFseXNpcyBvZiB0 aGUgcHJvYmxlbSBpcyBjb3JyZWN0LCBidXQgdGhlIHByb3Bvc2VkIGZpeCBqdXN0IGRvZXNuJ3QK PiBoYW5kbGUgZXZlcnl0aGluZy4KPgo+IFRoZSBpc3N1ZSBpcyB0aGF0IEkgYXNzdW1lZCBpbiB0 aGUgcmVwbGFjZSBvcGVyYXRpb24gdGhhdCB0aGUgZXhpc3RpbmcgbG9zZSBlbmQKPiBvZiB0aGUg bWFwcGluZyBjYW4gc3RheSBhcyB0aGV5IGFyZSwgYnV0IHRoYXQgYXNzdW1wdGlvbiBpcyBhY3R1 YWxseSBub3QgY29ycmVjdAo+IGJlY2F1c2Ugb2YgaHVnZSBwYWdlIGhhbmRsaW5nLgo+Cj4gVGhp cyBub3Qgb25seSBhZmZlY3RzIFBSVHMsIGJ1dCBhbGwgbWFwcGluZ3MgaW4gZ2VuZXJhbCwgc28g dGhhdCdzIGEgcmF0aGVyCj4gc2V2ZXJlIGJ1ZyB3ZSBuZWVkIHRvIGZpeC4KPgo+IEp1c3Qgc2Vu ZCBhIG9ubHkgY29tcGlsZSB0ZXN0ZWQgcGF0Y2ggd2l0aCBzdWJqZWN0ICJkcm0vYW1kZ3B1OiBm aXggY2xlYXJfYWxsCj4gYW5kIHJlcGxhY2UgaGFuZGxpbmcgaW4gdGhlIFZNIiB0byB0aGUgbGlz dCwgcGxlYXNlIGdpdmUgdGhhdCBvbmUgYSB0cnkgYW5kIHdpdGgKPiB5b3VyIGNoYW5nZS4KClNv cnJ5LCBJIGRpZG4ndCBmaW5kIHRoZSBwYXRjaCBpbiBhbWRnZnggb3IgaW50ZXJuYWwgZ3JvdXAu CklmIEkgbWlzc2VkIGFueSwgcGxlYXNlIHNlbmQgdGhlIHBhdGNoIHRvIG1lIGFnYWluLgoKSSBt YXkgZ2V0IHlvdXIgbWVhbmluZyB0byBoYW5kbGUgdGhlIGh1Z2UgcGFnZSBpbiBhbWRncHVfdm1f Ym9fY2xlYXJfbWFwcGluZ3MoKS4KSWYgdGhlIHJlcGxhY2VkIG1hcHBpbmcgaXMgaHVnZSBwYWdl LCB0aGVuIGl0IGhhcyB0byBkbyBtYXBwaW5nIGZvciBlbHNlIHBhcnQuCnJhdGhlciB0aGFuIG1h cCB0aGUgdGFyZ2V0IG9uZSBvbmx5LgooaW4gdGhpcyBjYXNlLCB0aGUgImFmdGVyIiBwYXJ0IGhh cyB0byBkbyBtYXBwaW5nLCBpbmhlcml0aW5nIHRoZSBmbGFncyBmcm9tIHRoZSAKcmVwbGFjZWQg b25lIHdobyBoYXMgUFJUIGZsYWcpCgpUcnkgdG8gYWNoaWV2ZSB0aGF0IGxvY2FsbHksIGZvdW5k IGl0J3MgYSBiaXQgdHJpY2t5IHRvIGRvIG1hcHBpbmcgZm9yIGVsc2UgCnBhcnQsIHNpbmNlIHRo ZSBlbHNlIHBhcnQocmVzZXJ2ZWQgUFJUIHJhbmdlKSBib192YSBpcyBkaWZmZXJlbnQgZnJvbSB0 aGUgdGFyZ2V0IApvbmUodGlsZWQgYm8pLiBzbyBoYXMgdG8gZG8gYm8gdXBkYXRlIGZvciBlbHNl IGJvX3ZhLgoodW5kZXIgZGVidWdnaW5nLi4uKQoKPgo+IFRoYW5rcywKPiBDaHJpc3RpYW4uCj4K PiBBbSAwNC4wNi4yMDE4IHVtIDExOjUxIHNjaHJpZWIgQ2hyaXN0aWFuIEvDtm5pZzoKPj4gQW0g MDQuMDYuMjAxOCB1bSAxMDoxOSBzY2hyaWViIFpoYW5nLCBKZXJyeSAoSnVud2VpKToKPj4+IE9u IDA2LzA0LzIwMTggMDM6NDggUE0sIENocmlzdGlhbiBLw7ZuaWcgd3JvdGU6Cj4+Pj4gQW0gMDQu MDYuMjAxOCB1bSAwOTowMiBzY2hyaWViIFpoYW5nLCBKZXJyeSAoSnVud2VpKToKPj4+Pj4gT24g MDYvMDQvMjAxOCAwMjo0MyBQTSwgQ2hyaXN0aWFuIEvDtm5pZyB3cm90ZToKPj4+Pj4+IEFjdHVh bGx5IHRoYXQgaXMgbm90IGNvcnJlY3QuIEFjY29yZGluZyB0byB0aGUgZG9jdW1lbnRhdGlvbiB0 aGUgUFJUIGZsYWcKPj4+Pj4+IHNob3VsZAo+Pj4+Pj4gd29yayBmb3IgaHVnZSBwYWdlcyBhcyB3 ZWxsLgo+Pj4+Pgo+Pj4+PiBNbW0sIEkgY2hlY2tlZCB0aGUgZG9jIGVhcmxpZXIsIGRpZG4ndCBm aW5kIHRoZSBQUlQgZmxhZyBmb3IgUERFLgo+Pj4+Cj4+Pj4gVGhlIFBERSBpbmRlZWQgZG9lc24n dCBoYXZlIHRoZSBQUlQgZmxhZywgYnV0IGl0IGFsc28gZG9lc24ndCBoYXZlIHRoZSBmcmFnbWVu dAo+Pj4+IGFuZCBNVFlQRSBmaWVsZHMgYW5kIHRob3NlIHN0aWxsIHdvcmsgbm9ybWFsbHkgd2hl biB5b3UgZW5hYmxlIGh1Z2UgcGFnZQo+Pj4+IGhhbmRsaW5nLgo+Pj4+Cj4+Pj4gVGhlIHRyaWNr IGlzIHRoYXQgd2hlbiB5b3Ugc2V0IHRoZSBodWdlIHBhZ2UgZmxhZyB0aGVuIHRoZSBQREUgaXMg aGFuZGxlZAo+Pj4+IGxpa2UgYQo+Pj4+IFBURSBhbmQgc28gYWxsIHRoZSBleHRyYSBmaWVsZHMg KFBSVCwgZnJhZ21lbnQgc2l6ZSwgTVRZUEUgZXRjLi4uKSBzaG91bGQKPj4+PiBub3cgYmUKPj4+ PiBoYW5kbGVkIGNvcnJlY3RseS4KPj4+Pgo+Pj4+IENvdWxkIGJlIHRoYXQgdGhlcmUgaXMgYSBo YXJkd2FyZSBidWcgcmVsYXRlZCB0byBQUlQgaGFuZGxpbmcgYW5kIHRoZSBodWdlIHBhZ2UKPj4+ PiBmbGFnLCBidXQgYXQgbGVhc3QgaW4gdGhlb3J5IGl0IHNob3VsZCB3b3JrIGZpbmUuCj4+Pgo+ Pj4gVGhlIGRvYyBqdXN0IHNraXBzIHRoZXNlIGZpZWxkcyBpbiBQREUsIGlmIHRob3NlIGZpZWxk cyByZWFsbHkgd29ya3MKPj4+IGV4cGVjdGVkbHksIGV2ZW4gaWYgaXQgZG9lc24ndCBkZXNjcmli ZSB0aGUgZGV0YWlscyhidXQgd2UgY291bGQgcmVmZXIgdG8gUFRFCj4+PiBmaWVsZHMpLCB3ZSBt YXkgaGF2ZSB0byBjb25maXJtIHRoYXQgd2l0aCBIVyBndXlzLgo+Pgo+PiBJJ3ZlIGp1c3QgY29u ZmlybWVkIHRoYXQgaHVnZSBwYWdlcyBhbmQgUFJUcyBzaG91bGQgd29yayB0b2dldGhlci4gV2Ug ZXZlbgo+PiBoYXZlIGFuIHVuaXQgdGVzdCBmb3IgdGhhdC4KPj4KPj4gSSBtZWFuIHdlIGNvdWxk IHBpbmcgV2FkZSBhcyB3ZWxsLCBidXQgSSdtIHByZXR0eSBzdXJlIHRoYXQgaGUgd2lsbCB0ZWxs IHlvdQo+PiBqdXN0IHRoZSBzYW1lLgo+Pgo+PiBJIHRoaW5rIGJ5IGRpc2FibGluZyBodWdlIHBh Z2VzIGZvciBQUlRzIHdlIGFjdHVhbGx5IGhpZGUgdGhlIHJlYWwgaXNzdWUKPj4gc29tZWhvdywg cHJvYmFibHkgc29tZSBwcm9ibGVtIHdpdGggdXBkYXRpbmcgUFJUcyBhZnRlciB0aGV5IGFyZSBz cGxpdCB1cC4KPj4KPj4gQ2FuIHlvdSBjaGVjayBpZiB0aGUgcHJvYmxlbSBhbHNvIHZhbmlzaGVz IHdoZW4geW91IGRpc2FibGUgdGhlIGZvbGxvd2luZwo+PiBvcHRpbWl6YXRpb24gaW4gYW1kZ3B1 X3ZtX3VwZGF0ZV9wdGVzPwo+Pj4gICAgICAgICAgICAgICAgIC8qIFdlIGRvbid0IG5lZWQgdG8g dXBkYXRlIFBURXMgZm9yIGh1Z2UgcGFnZXMgKi8KPj4+ICAgICAgICAgICAgICAgICBpZiAoZW50 cnktPmh1Z2UpCj4+PiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPj4gSnVzdCBj b21tZW50IHRoaXMgb3V0IGZvciBhIHRlc3QuCj4+Cj4+Pgo+Pj4gSW4gbXkgdmlldyBpbiBjdXJy ZW50IHN0YWdlLCBQREUgZG9lc24ndCBzdXBwb3J0IFBSVCBhbmQgaXQgbWF5IG5vdCBtYWtlIG11 Y2gKPj4+IHNlbnNlIHRvIHN1cHBvcnQgUFJUIGVpdGhlci4KPj4+IFRoZSBodWdlIHBhZ2UgYWx3 YXlzIGhhcHBlbnMgd2hlbiByZXNlcnZpbmcgUFJUIHJhbmdlLCBidXQgbGF0ZXIgVU1EIGlzCj4+ PiBsaWtlbHkgdG8gYmluZCBhL3NvbWUgdGlsZWQgYm8ocykgaW5zaWRlIHRoaXMgcmFuZ2UsIHRo YXQgd2lsbCBicmVhayB0aGUgaHVnZQo+Pj4gcGFnZSBtYXBwaW5nIGFuZCBzcGxpdCBpbnRvIHNl dmVyYWwgcGllY2VzIG1hcHBpbmdzLCByZXByZXNlbnRpbmcgaW4gUFRFCj4+PiBpbnN0ZWFkIG9m IGh1Z2UgcGFnZS4KPj4+IEluIHRoaXMgY2FzZSwganVzdCBza2lwcGluZyB0aGUgaHVnZSBwYWdl IGZvciBQUlQgbWF5IGJlIGFuIGFjY2VwdGFibGUgd2F5Lgo+Pgo+PiBXZWxsIGRpc2FibGluZyBo dWdlIHBhZ2VzIGZvciBQUlRzIGNhbiBkZWZpbml0ZWx5IGNhdXNlIGEgaHVnZSBwZXJmb3JtYW5j ZQo+PiBwcm9ibGVtIGJlY2F1c2UgaXQgaW5jcmVhc2VzIHRoZSBUTEIgbWlzc2VzIGZvciBQUlRz IGJ5IGEgZmFjdG9yIG9mIDUxMi4KPj4KPj4gQW5kIHNpbmNlIFBSVHMgYXJlIHVzdWFsbHkgdXNl ZCBmb3IgbGFyZ2Ugb25seSBzcGFyc2UgYWxsb2NhdGVkIHRleHR1cmVzIHRoYXQKPj4gaXMgcmVh bGx5IHJlYWxseSBpbXBvcnRhbnQgaGVyZS4KPj4KPj4+Cj4+Pj4KPj4+Pj4KPj4+Pj4gSW4gQ1RT IFBSVCB0ZXN0LCB0aGUgcmVzZXJ2ZWQgUFJUIG1hcHBpbmcgaW50cm9kdWNlcyBodWdlIHBhZ2Ug bWFwcGluZywgc28KPj4+Pj4gbGF0ZXIgdGlsZWQgYm8gbWFwcGluZyBjYW5ub3QgbWFrZSBzdXJl IHRoZSBjb3JyZXNwb25kaW5nIFBURSBpcyBzZXQgYXMgUFJULgo+Pj4+PiBUaGVuIGZvbGxvd2lu ZyBhY2Nlc3MgdHJpZ2dlcnMgVk0gZmF1bHQuCj4+Pj4KPj4+PiBJbnRlcmVzdGluZywgYnV0IHRo YXQgcmF0aGVyIHNvdW5kcyBsaWtlIGEgYnVnIGluIHRoZSBoYW5kbGluZyBpbnN0ZWFkIG9mIGEK Pj4+PiBoYXJkd2FyZSBwcm9ibGVtLgo+Pj4KPj4+IE9uIHRoZSAybmQgdGhpbmtpbmcsIHdlIG1h eSBoYW5kbGUgdGhhdCBmb3IgaHVnZSBwYWdlLgo+Pj4gZS5nLndoZW4gYmluZGluZyB0aWxlZCBi byBpbiBQUlQgcmFuZ2UsIHdlIGNvdWxkIHNwbGl0IHRoZSBodWdlIHBhZ2UgaW50bwo+Pj4gcGll Y2VzIFBURSBtYXBwaW5ncy4KPj4+IEhvd2V2ZXIsIGl0IG1heSBqdXN0IG1ha2UgdGhlIGNvZGUg bW9yZSBjb21wbGV4IGFuZCBnZXQgdGhlIHNhbWUgcmVzdWx0cyBhcwo+Pj4gY3VycmVudCBmaXgu Cj4+Cj4+IFRoYXQgc2hvdWxkIGFscmVhZHkgYmUgdGhlIGNhc2Ugd2hlbiBldmVyeXRoaW5nIHdv cmtzIGFzIGV4cGVjdGVkLgo+Pgo+Pj4KPj4+Pgo+Pj4+IENhbiB5b3UgbmFycm93IGRvd24gdGhl IENUUyB0ZXN0IGZ1cnRoZXIgaW50byBhIGxpYmRybSB1bml0IHRlc3Q/IE9yIGluIG90aGVyCj4+ Pj4gd29yZHMgd2hhdCBleGFjdGx5IGRvZXMgdGhlIENUUyB0ZXN0IGRvPwo+Pj4KPj4+IFRoZSBp c3N1ZSBjb3VsZCBiZSByZXByb2R1Y2VkIGJ5IGJlbG93IGNvbW1hbmQ6Cj4+PiB7e3sKPj4+IGRl cXAtdmsgLW4KPj4+IGRFUVAtVksuc3BhcnNlX3Jlc291cmNlcy5idWZmZXIuc3Niby5zcGFyc2Vf cmVzaWRlbmN5LmJ1ZmZlcl9zaXplXzJfMjQKPj4+IH19fQo+Pj4KPj4+IEluIEtNRCB2aWV3LCB0 aGUgbWFpbiBwcm9jZXNzKHdpdGggYW1kZ3B1IG1haW5saW5lIGRyaXZlcikgaXMgbGlrZSBiZWxv dzoKPj4+IDEpIHJlc2VydmUgUFJUIHJhbmdlIFsweDMwMDQwMDAwMCwgMHgzMDA0MDAwMDAgKyAw eDEwMDAwMDApCj4+PiAyKSBiaW5kIHRpbGVkIGJvcyBlYWNoIG90aGVyIHBhZ2UKPj4+ICAgIDB4 MzAwNDAwMDAwIH4gMHgzMDA0MDEwMDAsCj4+PiAgICAweDMwMDQwMjAwMCB+IDB4MzAwNDAzMDAw LAo+Pj4gICAgMHgzMDA0MDQwMDAgfiAweDMwMDQwNTAwMCwKPj4+ICAgIC4uLgo+Pj4gMykgYWNj ZXNzIHRoZW0gYWxsLCBWTSBmYXVsdCBhdCAweDMwMDQwMTAwMAo+Pgo+PiBUaGF0IHNvdW5kcyBs aWtlIHNvbWV0aGluZyBJIHNob3VsZCBiZSBhYmxlIHRvIHJlcHJvZHVjZSB3aGVuIHlvdXIgcXVp Y2sgdGVzdAo+PiBkb2Vzbid0IGJyaW5nIHRoZSBkZXNpcmVkIHJlc3VsdC4KPj4KPj4gQ2hyaXN0 aWFuLgo+Pgo+Pj4KPj4+IEplcnJ5Cj4+Pgo+Pj4+Cj4+Pj4gQ2hyaXN0aWFuLgo+Pj4+Cj4+Pj4+ Cj4+Pj4+IEplcnJ5Cj4+Pj4+Cj4+Pj4+Pgo+Pj4+Pj4gQ2hyaXN0aWFuLgo+Pj4+Pj4KPj4+Pj4+ IEFtIDA0LjA2LjIwMTggdW0gMDc6NTkgc2NocmllYiBaaG91LCBEYXZpZChDaHVuTWluZyk6Cj4+ Pj4+Pj4gR29vZCBjYXRjaCwgUmV2aWV3ZWQtYnk6IENodW5taW5nIFpob3UgPGRhdmlkMS56aG91 QGFtZC5jb20+Cj4+Pj4+Pj4KPj4+Pj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+Pj4+ Pj4+IEZyb206IGFtZC1nZnggW21haWx0bzphbWQtZ2Z4LWJvdW5jZXNAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnXSBPbiBCZWhhbGYgT2YKPj4+Pj4+PiBKdW53ZWkgWmhhbmcKPj4+Pj4+PiBTZW50OiBN b25kYXksIEp1bmUgMDQsIDIwMTggMTA6MDQgQU0KPj4+Pj4+PiBUbzogYW1kLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKPj4+Pj4+PiBDYzogWmhhbmcsIEplcnJ5IDxKZXJyeS5aaGFuZ0BhbWQu Y29tPgo+Pj4+Pj4+IFN1YmplY3Q6IFtQQVRDSF0gZHJtL2FtZGdwdTogc2tpcCBodWdlIHBhZ2Ug Zm9yIFBSVCBtYXBwaW5nCj4+Pj4+Pj4KPj4+Pj4+PiBQUlQgbWFwcGluZyBkb2Vzbid0IHN1cHBv cnQgaHVnZSBwYWdlLCBzaW5jZSBpdCdzIHBlciBQVEUgYmFzaXMuCj4+Pj4+Pj4KPj4+Pj4+PiBT aWduZWQtb2ZmLWJ5OiBKdW53ZWkgWmhhbmcgPEplcnJ5LlpoYW5nQGFtZC5jb20+Cj4+Pj4+Pj4g LS0tCj4+Pj4+Pj4gICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYyB8IDMg KystCj4+Pj4+Pj4gICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9u KC0pCj4+Pj4+Pj4KPj4+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X3ZtLmMKPj4+Pj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV92bS5jCj4+Pj4+Pj4gaW5kZXggODUwY2Q2Ni4uNGNlOGJiMCAxMDA2NDQKPj4+Pj4+PiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYwo+Pj4+Pj4+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5jCj4+Pj4+Pj4gQEAgLTExMTEsNyAr MTExMSw4IEBAIHN0YXRpYyB2b2lkIGFtZGdwdV92bV9oYW5kbGVfaHVnZV9wYWdlcyhzdHJ1Y3QK Pj4+Pj4+PiBhbWRncHVfcHRlX3VwZGF0ZV9wYXJhbXMgKnAsCj4+Pj4+Pj4gICAgICAgLyogSW4g dGhlIGNhc2Ugb2YgYSBtaXhlZCBQVCB0aGUgUERFIG11c3QgcG9pbnQgdG8gaXQqLwo+Pj4+Pj4+ ICAgICAgIGlmIChwLT5hZGV2LT5hc2ljX3R5cGUgPj0gQ0hJUF9WRUdBMTAgJiYgIXAtPnNyYyAm Jgo+Pj4+Pj4+IC0gICAgICAgIG5wdGVzID09IEFNREdQVV9WTV9QVEVfQ09VTlQocC0+YWRldikp IHsKPj4+Pj4+PiArICAgICAgICBucHRlcyA9PSBBTURHUFVfVk1fUFRFX0NPVU5UKHAtPmFkZXYp ICYmCj4+Pj4+Pj4gKyAgICAgICAgIShmbGFncyAmIEFNREdQVV9QVEVfUFJUKSkgewo+Pj4+Pj4+ ICAgICAgICAgICAvKiBTZXQgdGhlIGh1Z2UgcGFnZSBmbGFnIHRvIHN0b3Agc2Nhbm5pbmcgYXQg dGhpcyBQREUgKi8KPj4+Pj4+PiAgICAgICAgICAgZmxhZ3MgfD0gQU1ER1BVX1BERV9QVEU7Cj4+ Pj4+Pj4gICAgICAgfQo+Pj4+Pj4KPj4+Pgo+Pgo+Cl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vYW1kLWdmeAo=