From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tomas Elf Subject: Re: [PATCH 55/59] drm/i915: Remove fallback poll for ring buffer space Date: Tue, 31 Mar 2015 19:13:40 +0100 Message-ID: <551AE3D4.5000407@intel.com> References: <1426768264-16996-1-git-send-email-John.C.Harrison@Intel.com> <1426768264-16996-56-git-send-email-John.C.Harrison@Intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 55E40720D6 for ; Tue, 31 Mar 2015 11:13:56 -0700 (PDT) In-Reply-To: <1426768264-16996-56-git-send-email-John.C.Harrison@Intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "John.C.Harrison@Intel.com" , "Intel-GFX@Lists.FreeDesktop.Org" List-Id: intel-gfx@lists.freedesktop.org T24gMTkvMDMvMjAxNSAxMjozMSwgSm9obi5DLkhhcnJpc29uQEludGVsLmNvbSB3cm90ZToKPiBG cm9tOiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwuY29tPgo+Cj4gV2hlbiB0 aGUgcmluZyBidWZmZXIgaXMgZnVsbCwgdGhlIGRyaXZlciBmaW5kcyBhbiBvdXRzdGFuZGluZyBy ZXF1ZXN0IHRoYXQgd2lsbAo+IGZyZWUgdXAgc3VmZmljaWVudCBzcGFjZSBmb3IgdGhlIGN1cnJl bnQgb3BlcmF0aW9uIGFuZCB3YWl0cyBmb3IgaXQgdG8gY29tcGxldGUuCj4gSWYgbm8gc3VjaCBy ZXF1ZXN0IGNhbiBiZSBmb3VuZCwgdGhlcmUgaXMgYSBmYWxsIGJhY2sgcGF0aCBvZiBqdXN0IHBv bGxpbmcgdW50aWwKPiBzdWZmaWNpZW50IHNwYWNlIGlzIGF2YWlsYWJsZS4KPgo+IFRoaXMgcGF0 aCBzaG91bGQgbm90IGJlIHJlcXVpcmVkIGFueSBtb3JlLiBJdCBpcyBhIGhhbmdvdmVyIGZyb20g dGhlIGJhZCBkYXlzIG9mCj4gT0xSIHN1Y2ggdGhhdCBpdCB3YXMgcG9zc2libGUgZm9yIHRoZSBy aW5nIHRvIGJlIGNvbXBsZXRlbHkgZmlsbGVkIHdpdGhvdXQgZXZlcgo+IGhhdmluZyBzdWJtaXR0 ZWQgYSByZXF1ZXN0LiBUaGlzIGNhbiBubyBsb25nZXIgaGFwcGVuIGFzIHJlcXVlc3RzIGFyZSBu b3cKPiBzdWJtaXR0ZWQgaW4gYSB0aW1lbHkgbWFubmVyLiBIZW5jZSB0aGUgZW50aXJlIHBvbGxp bmcgcGF0aCBpcyBvYnNvbGV0ZS4gQXMgaXQKPiBhbHNvIGNhdXNlcyBoZWFkYWNoZXMgaW4gTFJD IGxhbmQgZHVlIHRvIG5lc3RpbmcgZmFrZWQgcmVxdWVzdHMsIGl0IGlzIGJlaW5nCj4gcmVtb3Zl ZCBlbnRpcmVseS4KPgo+IEZvcjogVklaLTUxMTUKPiBTaWduZWQtb2ZmLWJ5OiBKb2huIEhhcnJp c29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwuY29tPgo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfbHJjLmMgICAgICAgIHwgICA2NSArKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgfCAgIDYy ICsrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gICAyIGZpbGVzIGNoYW5nZWQsIDEzIGlu c2VydGlvbnMoKyksIDExNCBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5j Cj4gaW5kZXggNjBiY2Y5YS4uZjIxZjQ0OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9scmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5j Cj4gQEAgLTYyMiw4ICs2MjIsOSBAQCBpbnQgaW50ZWxfbG9naWNhbF9yaW5nX2FsbG9jX3JlcXVl c3RfZXh0cmFzKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdAo+ICAgCXJldHVy biAwOwo+ICAgfQo+Cj4gLXN0YXRpYyBpbnQgbG9naWNhbF9yaW5nX3dhaXRfcmVxdWVzdChzdHJ1 Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiwKPiAtCQkJCSAgICAgaW50IGJ5dGVzKQo+ICtz dGF0aWMgaW50IGxvZ2ljYWxfcmluZ193YWl0X2Zvcl9zcGFjZShzdHJ1Y3QgaW50ZWxfcmluZ2J1 ZmZlciAqcmluZ2J1ZiwKPiArCQkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4LAo+ ICsJCQkJICAgICAgIGludCBieXRlcykKPiAgIHsKPiAgIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICpyaW5nID0gcmluZ2J1Zi0+cmluZzsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcXVlc3Q7Cj4gQEAgLTY1Miw4ICs2NTMsMTEgQEAgc3RhdGljIGludCBsb2dpY2FsX3Jpbmdf d2FpdF9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmLAo+ICAgCQkJYnJl YWs7Cj4gICAJfQo+Cj4gLQlpZiAoJnJlcXVlc3QtPmxpc3QgPT0gJnJpbmctPnJlcXVlc3RfbGlz dCkKPiArCS8qIEl0IHNob3VsZCBhbHdheXMgYmUgcG9zc2libGUgdG8gZmluZCBhIHN1aXRhYmxl IHJlcXVlc3QhICovCj4gKwlpZiAoJnJlcXVlc3QtPmxpc3QgPT0gJnJpbmctPnJlcXVlc3RfbGlz dCkgewo+ICsJCVdBUk5fT04odHJ1ZSk7CgpJIGFncmVlIHdpdGggVGhvbWFzIERhbmllbCdzIGVh cmxpZXIgcmV2aWV3IGNvbW1lbnQgdGhhdCBXQVJOX09OKHRydWUpIAppcyBub3QgdmVyeSBoZWxw ZnVsLiBZb3UgY291bGQgZG8gc29tZXRoaW5nIGxpa2U6CgkKCVdBUk5fT04ocmV0ID0gPGV4cHJl c3Npb24+KTsKCWlmIChyZXQpCgkJcmV0dXJuIC1FTk9TUEM7CgpUaGF0IHdheSB5b3UgZG9uJ3Qg aGF2ZSB0aGUgcmVkdW5kYW5jeSBvZiBkb2luZwoKCVdBUk5fT04oZXhwcmVzc2lvbik7CglpZiAo ZXhwcmVzc2lvbikKCQlyZXR1cm4gLUVOT1NQQzsKCgphbmQgeW91IGRvbid0IGhhdmUgdG8gZG8g aWYgKFdBUk5fT04oZXhwcmVzc2lvbikpIGlmIHlvdSBkb24ndCBsaWtlIGl0LgkKClRoYW5rcywK VG9tYXMKCgo+ICAgCQlyZXR1cm4gLUVOT1NQQzsKPiArCX0KPgo+ICAgCXJldCA9IGk5MTVfd2Fp dF9yZXF1ZXN0KHJlcXVlc3QpOwo+ICAgCWlmIChyZXQpCj4gQEAgLTY2Myw3ICs2NjcsNyBAQCBz dGF0aWMgaW50IGxvZ2ljYWxfcmluZ193YWl0X3JlcXVlc3Qoc3RydWN0IGludGVsX3JpbmdidWZm ZXIgKnJpbmdidWYsCj4KPiAgIAlXQVJOX09OKGludGVsX3Jpbmdfc3BhY2UocmluZ2J1ZikgPCBu ZXdfc3BhY2UpOwo+Cj4gLQlyZXR1cm4gaW50ZWxfcmluZ19zcGFjZShyaW5nYnVmKSA+PSBieXRl cyA/IDAgOiAtRU5PU1BDOwo+ICsJcmV0dXJuIDA7Cj4gICB9Cj4KPiAgIC8qCj4gQEAgLTY5MCw1 OSArNjk0LDYgQEAgaW50ZWxfbG9naWNhbF9yaW5nX2FkdmFuY2VfYW5kX3N1Ym1pdChzdHJ1Y3Qg aW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiwKPiAgIAlleGVjbGlzdHNfY29udGV4dF9xdWV1ZShy aW5nLCBjdHgsIHJpbmdidWYtPnRhaWwsIHJlcXVlc3QpOwo+ICAgfQo+Cj4gLXN0YXRpYyBpbnQg bG9naWNhbF9yaW5nX3dhaXRfZm9yX3NwYWNlKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5n YnVmLAo+IC0JCQkJICAgICAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgsCj4gLQkJCQkgICAg ICAgaW50IGJ5dGVzKQo+IC17Cj4gLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nID0gcmlu Z2J1Zi0+cmluZzsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSByaW5nLT5kZXY7Cj4gLQlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IC0J dW5zaWduZWQgbG9uZyBlbmQ7Cj4gLQlpbnQgcmV0Owo+IC0KPiAtCS8qIFRoZSB3aG9sZSBwb2lu dCBvZiByZXNlcnZpbmcgc3BhY2UgaXMgdG8gbm90IHdhaXQhICovCj4gLQlXQVJOX09OKHJpbmdi dWYtPnJlc2VydmVkX2luX3VzZSk7Cj4gLQo+IC0JcmV0ID0gbG9naWNhbF9yaW5nX3dhaXRfcmVx dWVzdChyaW5nYnVmLCBieXRlcyk7Cj4gLQlpZiAocmV0ICE9IC1FTk9TUEMpCj4gLQkJcmV0dXJu IHJldDsKPiAtCj4gLQkvKiBGb3JjZSB0aGUgY29udGV4dCBzdWJtaXNzaW9uIGluIGNhc2Ugd2Ug aGF2ZSBiZWVuIHNraXBwaW5nIGl0ICovCj4gLQlpbnRlbF9sb2dpY2FsX3JpbmdfYWR2YW5jZV9h bmRfc3VibWl0KHJpbmdidWYsIGN0eCwgTlVMTCk7Cj4gLQo+IC0JLyogV2l0aCBHRU0gdGhlIGhh bmdjaGVjayB0aW1lciBzaG91bGQga2ljayB1cyBvdXQgb2YgdGhlIGxvb3AsCj4gLQkgKiBsZWF2 aW5nIGl0IGVhcmx5IHJ1bnMgdGhlIHJpc2sgb2YgY29ycnVwdGluZyBHRU0gc3RhdGUgKGR1ZQo+ IC0JICogdG8gcnVubmluZyBvbiBhbG1vc3QgdW50ZXN0ZWQgY29kZXBhdGhzKS4gQnV0IG9uIHJl c3VtZQo+IC0JICogdGltZXJzIGRvbid0IHdvcmsgeWV0LCBzbyBwcmV2ZW50IGEgY29tcGxldGUg aGFuZyBpbiB0aGF0Cj4gLQkgKiBjYXNlIGJ5IGNob29zaW5nIGFuIGluc2FuZWx5IGxhcmdlIHRp bWVvdXQuICovCj4gLQllbmQgPSBqaWZmaWVzICsgNjAgKiBIWjsKPiAtCj4gLQlyZXQgPSAwOwo+ IC0JZG8gewo+IC0JCWlmIChpbnRlbF9yaW5nX3NwYWNlKHJpbmdidWYpID49IGJ5dGVzKQo+IC0J CQlicmVhazsKPiAtCj4gLQkJbXNsZWVwKDEpOwo+IC0KPiAtCQlpZiAoZGV2X3ByaXYtPm1tLmlu dGVycnVwdGlibGUgJiYgc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpIHsKPiAtCQkJcmV0ID0gLUVS RVNUQVJUU1lTOwo+IC0JCQlicmVhazsKPiAtCQl9Cj4gLQo+IC0JCXJldCA9IGk5MTVfZ2VtX2No ZWNrX3dlZGdlKCZkZXZfcHJpdi0+Z3B1X2Vycm9yLAo+IC0JCQkJCSAgIGRldl9wcml2LT5tbS5p bnRlcnJ1cHRpYmxlKTsKPiAtCQlpZiAocmV0KQo+IC0JCQlicmVhazsKPiAtCj4gLQkJaWYgKHRp bWVfYWZ0ZXIoamlmZmllcywgZW5kKSkgewo+IC0JCQlyZXQgPSAtRUJVU1k7Cj4gLQkJCWJyZWFr Owo+IC0JCX0KPiAtCX0gd2hpbGUgKDEpOwo+IC0KPiAtCXJldHVybiByZXQ7Cj4gLX0KPiAtCj4g ICBzdGF0aWMgaW50IGxvZ2ljYWxfcmluZ193cmFwX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfcmluZ2J1 ZmZlciAqcmluZ2J1ZiwKPiAgIAkJCQkgICAgc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCkKPiAg IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gaW5kZXggYzU3NTJj NC4uNjA5OWZjZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5n YnVmZmVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMK PiBAQCAtMjA2Myw3ICsyMDYzLDcgQEAgdm9pZCBpbnRlbF9jbGVhbnVwX3JpbmdfYnVmZmVyKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCj4gICAJcmluZy0+YnVmZmVyID0gTlVMTDsKPiAg IH0KPgo+IC1zdGF0aWMgaW50IGludGVsX3Jpbmdfd2FpdF9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKnJpbmcsIGludCBuKQo+ICtzdGF0aWMgaW50IHJpbmdfd2FpdF9mb3Jfc3BhY2Uo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywgaW50IG4pCj4gICB7Cj4gICAJc3RydWN0IGlu dGVsX3JpbmdidWZmZXIgKnJpbmdidWYgPSByaW5nLT5idWZmZXI7Cj4gICAJc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0Owo+IEBAIC0yMDgyLDggKzIwODIsMTEgQEAgc3RhdGlj IGludCBpbnRlbF9yaW5nX3dhaXRfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5n LCBpbnQgbikKPiAgIAkJCWJyZWFrOwo+ICAgCX0KPgo+IC0JaWYgKCZyZXF1ZXN0LT5saXN0ID09 ICZyaW5nLT5yZXF1ZXN0X2xpc3QpCj4gKwkvKiBJdCBzaG91bGQgYWx3YXlzIGJlIHBvc3NpYmxl IHRvIGZpbmQgYSBzdWl0YWJsZSByZXF1ZXN0ISAqLwo+ICsJaWYgKCZyZXF1ZXN0LT5saXN0ID09 ICZyaW5nLT5yZXF1ZXN0X2xpc3QpIHsKPiArCQlXQVJOX09OKHRydWUpOwo+ICAgCQlyZXR1cm4g LUVOT1NQQzsKPiArCX0KPgo+ICAgCXJldCA9IGk5MTVfd2FpdF9yZXF1ZXN0KHJlcXVlc3QpOwo+ ICAgCWlmIChyZXQpCj4gQEAgLTIwOTYsNjEgKzIwOTksNiBAQCBzdGF0aWMgaW50IGludGVsX3Jp bmdfd2FpdF9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsIGludCBuKQo+ICAg CXJldHVybiAwOwo+ICAgfQo+Cj4gLXN0YXRpYyBpbnQgcmluZ193YWl0X2Zvcl9zcGFjZShzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLCBpbnQgbikKPiAtewo+IC0Jc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IHJpbmctPmRldjsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gLQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1 ZiA9IHJpbmctPmJ1ZmZlcjsKPiAtCXVuc2lnbmVkIGxvbmcgZW5kOwo+IC0JaW50IHJldDsKPiAt Cj4gLQkvKiBUaGUgd2hvbGUgcG9pbnQgb2YgcmVzZXJ2aW5nIHNwYWNlIGlzIHRvIG5vdCB3YWl0 ISAqLwo+IC0JV0FSTl9PTihyaW5nYnVmLT5yZXNlcnZlZF9pbl91c2UpOwo+IC0KPiAtCXJldCA9 IGludGVsX3Jpbmdfd2FpdF9yZXF1ZXN0KHJpbmcsIG4pOwo+IC0JaWYgKHJldCAhPSAtRU5PU1BD KQo+IC0JCXJldHVybiByZXQ7Cj4gLQo+IC0JLyogZm9yY2UgdGhlIHRhaWwgd3JpdGUgaW4gY2Fz ZSB3ZSBoYXZlIGJlZW4gc2tpcHBpbmcgdGhlbSAqLwo+IC0JX19pbnRlbF9yaW5nX2FkdmFuY2Uo cmluZyk7Cj4gLQo+IC0JLyogV2l0aCBHRU0gdGhlIGhhbmdjaGVjayB0aW1lciBzaG91bGQga2lj ayB1cyBvdXQgb2YgdGhlIGxvb3AsCj4gLQkgKiBsZWF2aW5nIGl0IGVhcmx5IHJ1bnMgdGhlIHJp c2sgb2YgY29ycnVwdGluZyBHRU0gc3RhdGUgKGR1ZQo+IC0JICogdG8gcnVubmluZyBvbiBhbG1v c3QgdW50ZXN0ZWQgY29kZXBhdGhzKS4gQnV0IG9uIHJlc3VtZQo+IC0JICogdGltZXJzIGRvbid0 IHdvcmsgeWV0LCBzbyBwcmV2ZW50IGEgY29tcGxldGUgaGFuZyBpbiB0aGF0Cj4gLQkgKiBjYXNl IGJ5IGNob29zaW5nIGFuIGluc2FuZWx5IGxhcmdlIHRpbWVvdXQuICovCj4gLQllbmQgPSBqaWZm aWVzICsgNjAgKiBIWjsKPiAtCj4gLQlyZXQgPSAwOwo+IC0JdHJhY2VfaTkxNV9yaW5nX3dhaXRf YmVnaW4ocmluZyk7Cj4gLQlkbyB7Cj4gLQkJaWYgKGludGVsX3Jpbmdfc3BhY2UocmluZ2J1Zikg Pj0gbikKPiAtCQkJYnJlYWs7Cj4gLQkJcmluZ2J1Zi0+aGVhZCA9IEk5MTVfUkVBRF9IRUFEKHJp bmcpOwo+IC0JCWlmIChpbnRlbF9yaW5nX3NwYWNlKHJpbmdidWYpID49IG4pCj4gLQkJCWJyZWFr Owo+IC0KPiAtCQltc2xlZXAoMSk7Cj4gLQo+IC0JCWlmIChkZXZfcHJpdi0+bW0uaW50ZXJydXB0 aWJsZSAmJiBzaWduYWxfcGVuZGluZyhjdXJyZW50KSkgewo+IC0JCQlyZXQgPSAtRVJFU1RBUlRT WVM7Cj4gLQkJCWJyZWFrOwo+IC0JCX0KPiAtCj4gLQkJcmV0ID0gaTkxNV9nZW1fY2hlY2tfd2Vk Z2UoJmRldl9wcml2LT5ncHVfZXJyb3IsCj4gLQkJCQkJICAgZGV2X3ByaXYtPm1tLmludGVycnVw dGlibGUpOwo+IC0JCWlmIChyZXQpCj4gLQkJCWJyZWFrOwo+IC0KPiAtCQlpZiAodGltZV9hZnRl cihqaWZmaWVzLCBlbmQpKSB7Cj4gLQkJCXJldCA9IC1FQlVTWTsKPiAtCQkJYnJlYWs7Cj4gLQkJ fQo+IC0JfSB3aGlsZSAoMSk7Cj4gLQl0cmFjZV9pOTE1X3Jpbmdfd2FpdF9lbmQocmluZyk7Cj4g LQlyZXR1cm4gcmV0Owo+IC19Cj4gLQo+ICAgc3RhdGljIGludCBpbnRlbF93cmFwX3JpbmdfYnVm ZmVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCj4gICB7Cj4gICAJdWludDMyX3QgX19p b21lbSAqdmlydDsKPgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngK