From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 2/4] drm/vmwgfx: Defer fence irq processing to a tasklet Date: Fri, 30 Oct 2015 11:23:24 +0100 Message-ID: <20151030102324.GS16848@phenom.ffwll.local> References: <1446198166-3068-1-git-send-email-thellstrom@vmware.com> <1446198166-3068-2-git-send-email-thellstrom@vmware.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f173.google.com (mail-wi0-f173.google.com [209.85.212.173]) by gabe.freedesktop.org (Postfix) with ESMTPS id 88CED6E07F for ; Fri, 30 Oct 2015 03:23:28 -0700 (PDT) Received: by wicfv8 with SMTP id fv8so7512143wic.0 for ; Fri, 30 Oct 2015 03:23:27 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1446198166-3068-2-git-send-email-thellstrom@vmware.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Thomas Hellstrom Cc: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBPY3QgMzAsIDIwMTUgYXQgMDI6NDI6NDRBTSAtMDcwMCwgVGhvbWFzIEhlbGxzdHJv bSB3cm90ZToKPiBSZWR1Y2UgdGhlIHRpbWUgaW4gaGFyZHdhcmUgaXJxIGNvbnRleHQgYW5kIGhh cmR3YXJlIGlycSBsYXRlbmN5Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IFRob21hcyBIZWxsc3Ryb20g PHRoZWxsc3Ryb21Adm13YXJlLmNvbT4KPiBSZXZpZXdlZC1ieTogU2luY2xhaXIgWWVoIDxzeWVo QHZtd2FyZS5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2ZlbmNl LmMgfCAxMDggKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dw dS9kcm0vdm13Z2Z4L3Ztd2dmeF9mZW5jZS5oIHwgICAyICsKPiAgZHJpdmVycy9ncHUvZHJtL3Zt d2dmeC92bXdnZnhfaXJxLmMgICB8ICAgNiArLQo+ICAzIGZpbGVzIGNoYW5nZWQsIDY4IGluc2Vy dGlvbnMoKyksIDQ4IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vdm13Z2Z4L3Ztd2dmeF9mZW5jZS5jIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhf ZmVuY2UuYwo+IGluZGV4IDhlNjg5YjQuLmY0MGMzNmUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL3Ztd2dmeC92bXdnZnhfZmVuY2UuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92bXdn Zngvdm13Z2Z4X2ZlbmNlLmMKPiBAQCAtNDcsNiArNDcsNyBAQCBzdHJ1Y3Qgdm13X2ZlbmNlX21h bmFnZXIgewo+ICAJYm9vbCBzZXFub192YWxpZDsgLyogUHJvdGVjdGVkIGJ5IEBsb2NrLCBhbmQg bWF5IG5vdCBiZSBzZXQgdG8gdHJ1ZQo+ICAJCQkgICAgIHdpdGhvdXQgdGhlIEBnb2FsX2lycV9t dXRleCBoZWxkLiAqLwo+ICAJdW5zaWduZWQgY3R4Owo+ICsJc3RydWN0IHRhc2tsZXRfc3RydWN0 IHRhc2tsZXQ7CgpCb3R0b20gaGFsdmVzIGFyZSBzdXBlci1kZXByZWNhdGVkIGV4Y2VwdCBmb3Ig Z2lhbnQgZXhpc3RpbmcgdXNlcnMgbGlrZQpuZXR3b3JraW5nLiBJIHRoaW5rIHRoZSByZWNvbW1l bmRlZCB3YXkgdG8gZG8gdGhpcyBpcyB0byBlaXRoZXIgdXNlCnRocmVhZGVkIGludGVycnVwdHMg b3Igd29yay1xdWV1ZXMuIFRoZSByZWFzb24gZm9yIHRoYXQgc2VlbXMgdG8gYmUgdGhhdApsb2Nr aW5nIGlzIGZ1bmt5IGFyb3VuZCB0aGVtLCB3aGljaCBpcyBhIG1ham9yIHBhaW4gZm9yIFJULiBB bmQgUlQgaXMKZ29pbmcgbWFpbmxpbmUgbm93IGZvciByZWFsLgotRGFuaWVsCgo+ICB9Owo+ICAK PiAgc3RydWN0IHZtd191c2VyX2ZlbmNlIHsKPiBAQCAtODEsNiArODIsOCBAQCBzdHJ1Y3Qgdm13 X2V2ZW50X2ZlbmNlX2FjdGlvbiB7Cj4gIAl1aW50MzJfdCAqdHZfdXNlYzsKPiAgfTsKPiAgCj4g K3N0YXRpYyB2b2lkIHZtd19mZW5jZV90YXNrbGV0KHVuc2lnbmVkIGxvbmcgZGF0YSk7Cj4gKwo+ ICBzdGF0aWMgc3RydWN0IHZtd19mZW5jZV9tYW5hZ2VyICoKPiAgZm1hbl9mcm9tX2ZlbmNlKHN0 cnVjdCB2bXdfZmVuY2Vfb2JqICpmZW5jZSkKPiAgewo+IEBAIC0xMTUsMTIgKzExOCwxMSBAQCBz dGF0aWMgdm9pZCB2bXdfZmVuY2Vfb2JqX2Rlc3Ryb3koc3RydWN0IGZlbmNlICpmKQo+ICAJCWNv bnRhaW5lcl9vZihmLCBzdHJ1Y3Qgdm13X2ZlbmNlX29iaiwgYmFzZSk7Cj4gIAo+ICAJc3RydWN0 IHZtd19mZW5jZV9tYW5hZ2VyICpmbWFuID0gZm1hbl9mcm9tX2ZlbmNlKGZlbmNlKTsKPiAtCXVu c2lnbmVkIGxvbmcgaXJxX2ZsYWdzOwo+ICAKPiAtCXNwaW5fbG9ja19pcnFzYXZlKCZmbWFuLT5s b2NrLCBpcnFfZmxhZ3MpOwo+ICsJc3Bpbl9sb2NrX2JoKCZmbWFuLT5sb2NrKTsKPiAgCWxpc3Rf ZGVsX2luaXQoJmZlbmNlLT5oZWFkKTsKPiAgCS0tZm1hbi0+bnVtX2ZlbmNlX29iamVjdHM7Cj4g LQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZmbWFuLT5sb2NrLCBpcnFfZmxhZ3MpOwo+ICsJc3Bp bl91bmxvY2tfYmgoJmZtYW4tPmxvY2spOwo+ICAJZmVuY2UtPmRlc3Ryb3koZmVuY2UpOwo+ICB9 Cj4gIAo+IEBAIC0xNzcsNyArMTc5LDYgQEAgc3RhdGljIGxvbmcgdm13X2ZlbmNlX3dhaXQoc3Ry dWN0IGZlbmNlICpmLCBib29sIGludHIsIHNpZ25lZCBsb25nIHRpbWVvdXQpCj4gIAlzdHJ1Y3Qg dm13X3ByaXZhdGUgKmRldl9wcml2ID0gZm1hbi0+ZGV2X3ByaXY7Cj4gIAlzdHJ1Y3Qgdm13Z2Z4 X3dhaXRfY2IgY2I7Cj4gIAlsb25nIHJldCA9IHRpbWVvdXQ7Cj4gLQl1bnNpZ25lZCBsb25nIGly cV9mbGFnczsKPiAgCj4gIAlpZiAobGlrZWx5KHZtd19mZW5jZV9vYmpfc2lnbmFsZWQoZmVuY2Up KSkKPiAgCQlyZXR1cm4gdGltZW91dDsKPiBAQCAtMTg1LDcgKzE4Niw3IEBAIHN0YXRpYyBsb25n IHZtd19mZW5jZV93YWl0KHN0cnVjdCBmZW5jZSAqZiwgYm9vbCBpbnRyLCBzaWduZWQgbG9uZyB0 aW1lb3V0KQo+ICAJdm13X2ZpZm9fcGluZ19ob3N0KGRldl9wcml2LCBTVkdBX1NZTkNfR0VORVJJ Qyk7Cj4gIAl2bXdfc2Vxbm9fd2FpdGVyX2FkZChkZXZfcHJpdik7Cj4gIAo+IC0Jc3Bpbl9sb2Nr X2lycXNhdmUoZi0+bG9jaywgaXJxX2ZsYWdzKTsKPiArCXNwaW5fbG9ja19iaChmLT5sb2NrKTsK PiAgCj4gIAlpZiAoaW50ciAmJiBzaWduYWxfcGVuZGluZyhjdXJyZW50KSkgewo+ICAJCXJldCA9 IC1FUkVTVEFSVFNZUzsKPiBAQCAtMjA1LDExICsyMDYsMTEgQEAgc3RhdGljIGxvbmcgdm13X2Zl bmNlX3dhaXQoc3RydWN0IGZlbmNlICpmLCBib29sIGludHIsIHNpZ25lZCBsb25nIHRpbWVvdXQp Cj4gIAkJCV9fc2V0X2N1cnJlbnRfc3RhdGUoVEFTS19JTlRFUlJVUFRJQkxFKTsKPiAgCQllbHNl Cj4gIAkJCV9fc2V0X2N1cnJlbnRfc3RhdGUoVEFTS19VTklOVEVSUlVQVElCTEUpOwo+IC0JCXNw aW5fdW5sb2NrX2lycXJlc3RvcmUoZi0+bG9jaywgaXJxX2ZsYWdzKTsKPiArCQlzcGluX3VubG9j a19iaChmLT5sb2NrKTsKPiAgCj4gIAkJcmV0ID0gc2NoZWR1bGVfdGltZW91dChyZXQpOwo+ICAK PiAtCQlzcGluX2xvY2tfaXJxc2F2ZShmLT5sb2NrLCBpcnFfZmxhZ3MpOwo+ICsJCXNwaW5fbG9j a19iaChmLT5sb2NrKTsKPiAgCQlpZiAocmV0ID4gMCAmJiBpbnRyICYmIHNpZ25hbF9wZW5kaW5n KGN1cnJlbnQpKQo+ICAJCQlyZXQgPSAtRVJFU1RBUlRTWVM7Cj4gIAl9Cj4gQEAgLTIxOSw3ICsy MjAsNyBAQCBzdGF0aWMgbG9uZyB2bXdfZmVuY2Vfd2FpdChzdHJ1Y3QgZmVuY2UgKmYsIGJvb2wg aW50ciwgc2lnbmVkIGxvbmcgdGltZW91dCkKPiAgCV9fc2V0X2N1cnJlbnRfc3RhdGUoVEFTS19S VU5OSU5HKTsKPiAgCj4gIG91dDoKPiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoZi0+bG9jaywg aXJxX2ZsYWdzKTsKPiArCXNwaW5fdW5sb2NrX2JoKGYtPmxvY2spOwo+ICAKPiAgCXZtd19zZXFu b193YWl0ZXJfcmVtb3ZlKGRldl9wcml2KTsKPiAgCj4gQEAgLTMwMCwyMSArMzAxLDIyIEBAIHN0 cnVjdCB2bXdfZmVuY2VfbWFuYWdlciAqdm13X2ZlbmNlX21hbmFnZXJfaW5pdChzdHJ1Y3Qgdm13 X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCXR0bV9yb3VuZF9wb3Qoc2l6ZW9mKHN0cnVjdCB2bXdf ZXZlbnRfZmVuY2VfYWN0aW9uKSk7Cj4gIAltdXRleF9pbml0KCZmbWFuLT5nb2FsX2lycV9tdXRl eCk7Cj4gIAlmbWFuLT5jdHggPSBmZW5jZV9jb250ZXh0X2FsbG9jKDEpOwo+ICsJdGFza2xldF9p bml0KCZmbWFuLT50YXNrbGV0LCB2bXdfZmVuY2VfdGFza2xldCwKPiArCQkgICAgICh1bnNpZ25l ZCBsb25nKSBmbWFuKTsKPiAgCj4gIAlyZXR1cm4gZm1hbjsKPiAgfQo+ICAKPiAgdm9pZCB2bXdf ZmVuY2VfbWFuYWdlcl90YWtlZG93bihzdHJ1Y3Qgdm13X2ZlbmNlX21hbmFnZXIgKmZtYW4pCj4g IHsKPiAtCXVuc2lnbmVkIGxvbmcgaXJxX2ZsYWdzOwo+ICAJYm9vbCBsaXN0c19lbXB0eTsKPiAg Cj4gIAkodm9pZCkgY2FuY2VsX3dvcmtfc3luYygmZm1hbi0+d29yayk7Cj4gIAo+IC0Jc3Bpbl9s b2NrX2lycXNhdmUoJmZtYW4tPmxvY2ssIGlycV9mbGFncyk7Cj4gKwlzcGluX2xvY2tfYmgoJmZt YW4tPmxvY2spOwo+ICAJbGlzdHNfZW1wdHkgPSBsaXN0X2VtcHR5KCZmbWFuLT5mZW5jZV9saXN0 KSAmJgo+ICAJCWxpc3RfZW1wdHkoJmZtYW4tPmNsZWFudXBfbGlzdCk7Cj4gLQlzcGluX3VubG9j a19pcnFyZXN0b3JlKCZmbWFuLT5sb2NrLCBpcnFfZmxhZ3MpOwo+ICsJc3Bpbl91bmxvY2tfYmgo JmZtYW4tPmxvY2spOwo+ICAKPiAgCUJVR19PTighbGlzdHNfZW1wdHkpOwo+ICAJa2ZyZWUoZm1h bik7Cj4gQEAgLTMyNCw3ICszMjYsNiBAQCBzdGF0aWMgaW50IHZtd19mZW5jZV9vYmpfaW5pdChz dHJ1Y3Qgdm13X2ZlbmNlX21hbmFnZXIgKmZtYW4sCj4gIAkJCSAgICAgIHN0cnVjdCB2bXdfZmVu Y2Vfb2JqICpmZW5jZSwgdTMyIHNlcW5vLAo+ICAJCQkgICAgICB2b2lkICgqZGVzdHJveSkgKHN0 cnVjdCB2bXdfZmVuY2Vfb2JqICpmZW5jZSkpCj4gIHsKPiAtCXVuc2lnbmVkIGxvbmcgaXJxX2Zs YWdzOwo+ICAJaW50IHJldCA9IDA7Cj4gIAo+ICAJZmVuY2VfaW5pdCgmZmVuY2UtPmJhc2UsICZ2 bXdfZmVuY2Vfb3BzLCAmZm1hbi0+bG9jaywKPiBAQCAtMzMyLDcgKzMzMyw3IEBAIHN0YXRpYyBp bnQgdm13X2ZlbmNlX29ial9pbml0KHN0cnVjdCB2bXdfZmVuY2VfbWFuYWdlciAqZm1hbiwKPiAg CUlOSVRfTElTVF9IRUFEKCZmZW5jZS0+c2VxX3Bhc3NlZF9hY3Rpb25zKTsKPiAgCWZlbmNlLT5k ZXN0cm95ID0gZGVzdHJveTsKPiAgCj4gLQlzcGluX2xvY2tfaXJxc2F2ZSgmZm1hbi0+bG9jaywg aXJxX2ZsYWdzKTsKPiArCXNwaW5fbG9ja19iaCgmZm1hbi0+bG9jayk7Cj4gIAlpZiAodW5saWtl bHkoZm1hbi0+Zmlmb19kb3duKSkgewo+ICAJCXJldCA9IC1FQlVTWTsKPiAgCQlnb3RvIG91dF91 bmxvY2s7Cj4gQEAgLTM0MSw3ICszNDIsNyBAQCBzdGF0aWMgaW50IHZtd19mZW5jZV9vYmpfaW5p dChzdHJ1Y3Qgdm13X2ZlbmNlX21hbmFnZXIgKmZtYW4sCj4gIAkrK2ZtYW4tPm51bV9mZW5jZV9v YmplY3RzOwo+ICAKPiAgb3V0X3VubG9jazoKPiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmZt YW4tPmxvY2ssIGlycV9mbGFncyk7Cj4gKwlzcGluX3VubG9ja19iaCgmZm1hbi0+bG9jayk7Cj4g IAlyZXR1cm4gcmV0Owo+ICAKPiAgfQo+IEBAIC00OTAsMTEgKzQ5MSw5IEBAIHJlcnVuOgo+ICAK PiAgdm9pZCB2bXdfZmVuY2VzX3VwZGF0ZShzdHJ1Y3Qgdm13X2ZlbmNlX21hbmFnZXIgKmZtYW4p Cj4gIHsKPiAtCXVuc2lnbmVkIGxvbmcgaXJxX2ZsYWdzOwo+IC0KPiAtCXNwaW5fbG9ja19pcnFz YXZlKCZmbWFuLT5sb2NrLCBpcnFfZmxhZ3MpOwo+ICsJc3Bpbl9sb2NrX2JoKCZmbWFuLT5sb2Nr KTsKPiAgCV9fdm13X2ZlbmNlc191cGRhdGUoZm1hbik7Cj4gLQlzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZmbWFuLT5sb2NrLCBpcnFfZmxhZ3MpOwo+ICsJc3Bpbl91bmxvY2tfYmgoJmZtYW4tPmxv Y2spOwo+ICB9Cj4gIAo+ICBib29sIHZtd19mZW5jZV9vYmpfc2lnbmFsZWQoc3RydWN0IHZtd19m ZW5jZV9vYmogKmZlbmNlKQo+IEBAIC02OTQsMTEgKzY5Myw5IEBAIHZvaWQgdm13X2ZlbmNlX2Zp Zm9fZG93bihzdHJ1Y3Qgdm13X2ZlbmNlX21hbmFnZXIgKmZtYW4pCj4gIAo+ICB2b2lkIHZtd19m ZW5jZV9maWZvX3VwKHN0cnVjdCB2bXdfZmVuY2VfbWFuYWdlciAqZm1hbikKPiAgewo+IC0JdW5z aWduZWQgbG9uZyBpcnFfZmxhZ3M7Cj4gLQo+IC0Jc3Bpbl9sb2NrX2lycXNhdmUoJmZtYW4tPmxv Y2ssIGlycV9mbGFncyk7Cj4gKwlzcGluX2xvY2tfYmgoJmZtYW4tPmxvY2spOwo+ICAJZm1hbi0+ Zmlmb19kb3duID0gZmFsc2U7Cj4gLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZmbWFuLT5sb2Nr LCBpcnFfZmxhZ3MpOwo+ICsJc3Bpbl91bmxvY2tfYmgoJmZtYW4tPmxvY2spOwo+ICB9Cj4gIAo+ ICAKPiBAQCAtODI1LDEwICs4MjIsOSBAQCB2b2lkIHZtd19ldmVudF9mZW5jZV9mcHJpdl9nb25l KHN0cnVjdCB2bXdfZmVuY2VfbWFuYWdlciAqZm1hbiwKPiAgewo+ICAJc3RydWN0IHZtd19ldmVu dF9mZW5jZV9hY3Rpb24gKmVhY3Rpb247Cj4gIAlzdHJ1Y3QgZHJtX3BlbmRpbmdfZXZlbnQgKmV2 ZW50Owo+IC0JdW5zaWduZWQgbG9uZyBpcnFfZmxhZ3M7Cj4gIAo+ICAJd2hpbGUgKDEpIHsKPiAt CQlzcGluX2xvY2tfaXJxc2F2ZSgmZm1hbi0+bG9jaywgaXJxX2ZsYWdzKTsKPiArCQlzcGluX2xv Y2tfYmgoJmZtYW4tPmxvY2spOwo+ICAJCWlmIChsaXN0X2VtcHR5KGV2ZW50X2xpc3QpKQo+ICAJ CQlnb3RvIG91dF91bmxvY2s7Cj4gIAkJZWFjdGlvbiA9IGxpc3RfZmlyc3RfZW50cnkoZXZlbnRf bGlzdCwKPiBAQCAtODM3LDExICs4MzMsMTEgQEAgdm9pZCB2bXdfZXZlbnRfZmVuY2VfZnByaXZf Z29uZShzdHJ1Y3Qgdm13X2ZlbmNlX21hbmFnZXIgKmZtYW4sCj4gIAkJbGlzdF9kZWxfaW5pdCgm ZWFjdGlvbi0+ZnByaXZfaGVhZCk7Cj4gIAkJZXZlbnQgPSBlYWN0aW9uLT5ldmVudDsKPiAgCQll YWN0aW9uLT5ldmVudCA9IE5VTEw7Cj4gLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZm1hbi0+ bG9jaywgaXJxX2ZsYWdzKTsKPiArCQlzcGluX3VubG9ja19iaCgmZm1hbi0+bG9jayk7Cj4gIAkJ ZXZlbnQtPmRlc3Ryb3koZXZlbnQpOwo+ICAJfQo+ICBvdXRfdW5sb2NrOgo+IC0Jc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmZm1hbi0+bG9jaywgaXJxX2ZsYWdzKTsKPiArCXNwaW5fdW5sb2NrX2Jo KCZmbWFuLT5sb2NrKTsKPiAgfQo+ICAKPiAgCj4gQEAgLTg1NCw3ICs4NTAsNyBAQCBvdXRfdW5s b2NrOgo+ICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHRoZSBzZXFubyBvZiB0aGUg ZmVuY2Ugd2hlcmUgQGFjdGlvbiBpcwo+ICAgKiBhdHRhY2hlZCBoYXMgcGFzc2VkLiBJdCBxdWV1 ZXMgdGhlIGV2ZW50IG9uIHRoZSBzdWJtaXR0ZXIncyBldmVudCBsaXN0Lgo+ICAgKiBUaGlzIGZ1 bmN0aW9uIGlzIGFsd2F5cyBjYWxsZWQgZnJvbSBhdG9taWMgY29udGV4dCwgYW5kIG1heSBiZSBj YWxsZWQKPiAtICogZnJvbSBpcnEgY29udGV4dC4KPiArICogZnJvbSB0YXNrbGV0IGNvbnRleHQu Cj4gICAqLwo+ICBzdGF0aWMgdm9pZCB2bXdfZXZlbnRfZmVuY2VfYWN0aW9uX3NlcV9wYXNzZWQo c3RydWN0IHZtd19mZW5jZV9hY3Rpb24gKmFjdGlvbikKPiAgewo+IEBAIC04NjMsMTMgKzg1OSwx MiBAQCBzdGF0aWMgdm9pZCB2bXdfZXZlbnRfZmVuY2VfYWN0aW9uX3NlcV9wYXNzZWQoc3RydWN0 IHZtd19mZW5jZV9hY3Rpb24gKmFjdGlvbikKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBl YWN0aW9uLT5kZXY7Cj4gIAlzdHJ1Y3QgZHJtX3BlbmRpbmdfZXZlbnQgKmV2ZW50ID0gZWFjdGlv bi0+ZXZlbnQ7Cj4gIAlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdjsKPiAtCXVuc2lnbmVkIGxv bmcgaXJxX2ZsYWdzOwo+ICAKPiAgCWlmICh1bmxpa2VseShldmVudCA9PSBOVUxMKSkKPiAgCQly ZXR1cm47Cj4gIAo+ICAJZmlsZV9wcml2ID0gZXZlbnQtPmZpbGVfcHJpdjsKPiAtCXNwaW5fbG9j a19pcnFzYXZlKCZkZXYtPmV2ZW50X2xvY2ssIGlycV9mbGFncyk7Cj4gKwlzcGluX2xvY2tfYmgo JmRldi0+ZXZlbnRfbG9jayk7Cj4gIAo+ICAJaWYgKGxpa2VseShlYWN0aW9uLT50dl9zZWMgIT0g TlVMTCkpIHsKPiAgCQlzdHJ1Y3QgdGltZXZhbCB0djsKPiBAQCAtODgzLDcgKzg3OCw3IEBAIHN0 YXRpYyB2b2lkIHZtd19ldmVudF9mZW5jZV9hY3Rpb25fc2VxX3Bhc3NlZChzdHJ1Y3Qgdm13X2Zl bmNlX2FjdGlvbiAqYWN0aW9uKQo+ICAJbGlzdF9hZGRfdGFpbCgmZWFjdGlvbi0+ZXZlbnQtPmxp bmssICZmaWxlX3ByaXYtPmV2ZW50X2xpc3QpOwo+ICAJZWFjdGlvbi0+ZXZlbnQgPSBOVUxMOwo+ ICAJd2FrZV91cF9hbGwoJmZpbGVfcHJpdi0+ZXZlbnRfd2FpdCk7Cj4gLQlzcGluX3VubG9ja19p cnFyZXN0b3JlKCZkZXYtPmV2ZW50X2xvY2ssIGlycV9mbGFncyk7Cj4gKwlzcGluX3VubG9ja19i aCgmZGV2LT5ldmVudF9sb2NrKTsKPiAgfQo+ICAKPiAgLyoqCj4gQEAgLTkwMCwxMSArODk1LDEw IEBAIHN0YXRpYyB2b2lkIHZtd19ldmVudF9mZW5jZV9hY3Rpb25fY2xlYW51cChzdHJ1Y3Qgdm13 X2ZlbmNlX2FjdGlvbiAqYWN0aW9uKQo+ICAJc3RydWN0IHZtd19ldmVudF9mZW5jZV9hY3Rpb24g KmVhY3Rpb24gPQo+ICAJCWNvbnRhaW5lcl9vZihhY3Rpb24sIHN0cnVjdCB2bXdfZXZlbnRfZmVu Y2VfYWN0aW9uLCBhY3Rpb24pOwo+ICAJc3RydWN0IHZtd19mZW5jZV9tYW5hZ2VyICpmbWFuID0g Zm1hbl9mcm9tX2ZlbmNlKGVhY3Rpb24tPmZlbmNlKTsKPiAtCXVuc2lnbmVkIGxvbmcgaXJxX2Zs YWdzOwo+ICAKPiAtCXNwaW5fbG9ja19pcnFzYXZlKCZmbWFuLT5sb2NrLCBpcnFfZmxhZ3MpOwo+ ICsJc3Bpbl9sb2NrX2JoKCZmbWFuLT5sb2NrKTsKPiAgCWxpc3RfZGVsKCZlYWN0aW9uLT5mcHJp dl9oZWFkKTsKPiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmZtYW4tPmxvY2ssIGlycV9mbGFn cyk7Cj4gKwlzcGluX3VubG9ja19iaCgmZm1hbi0+bG9jayk7Cj4gIAo+ICAJdm13X2ZlbmNlX29i al91bnJlZmVyZW5jZSgmZWFjdGlvbi0+ZmVuY2UpOwo+ICAJa2ZyZWUoZWFjdGlvbik7Cj4gQEAg LTkyNCwxMSArOTE4LDEwIEBAIHN0YXRpYyB2b2lkIHZtd19mZW5jZV9vYmpfYWRkX2FjdGlvbihz dHJ1Y3Qgdm13X2ZlbmNlX29iaiAqZmVuY2UsCj4gIAkJCSAgICAgIHN0cnVjdCB2bXdfZmVuY2Vf YWN0aW9uICphY3Rpb24pCj4gIHsKPiAgCXN0cnVjdCB2bXdfZmVuY2VfbWFuYWdlciAqZm1hbiA9 IGZtYW5fZnJvbV9mZW5jZShmZW5jZSk7Cj4gLQl1bnNpZ25lZCBsb25nIGlycV9mbGFnczsKPiAg CWJvb2wgcnVuX3VwZGF0ZSA9IGZhbHNlOwo+ICAKPiAgCW11dGV4X2xvY2soJmZtYW4tPmdvYWxf aXJxX211dGV4KTsKPiAtCXNwaW5fbG9ja19pcnFzYXZlKCZmbWFuLT5sb2NrLCBpcnFfZmxhZ3Mp Owo+ICsJc3Bpbl9sb2NrX2JoKCZmbWFuLT5sb2NrKTsKPiAgCj4gIAlmbWFuLT5wZW5kaW5nX2Fj dGlvbnNbYWN0aW9uLT50eXBlXSsrOwo+ICAJaWYgKGZlbmNlX2lzX3NpZ25hbGVkX2xvY2tlZCgm ZmVuY2UtPmJhc2UpKSB7Cj4gQEAgLTk0Nyw3ICs5NDAsNyBAQCBzdGF0aWMgdm9pZCB2bXdfZmVu Y2Vfb2JqX2FkZF9hY3Rpb24oc3RydWN0IHZtd19mZW5jZV9vYmogKmZlbmNlLAo+ICAJCXJ1bl91 cGRhdGUgPSB2bXdfZmVuY2VfZ29hbF9jaGVja19sb2NrZWQoZmVuY2UpOwo+ICAJfQo+ICAKPiAt CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmZtYW4tPmxvY2ssIGlycV9mbGFncyk7Cj4gKwlzcGlu X3VubG9ja19iaCgmZm1hbi0+bG9jayk7Cj4gIAo+ICAJaWYgKHJ1bl91cGRhdGUpIHsKPiAgCQlp ZiAoIWZtYW4tPmdvYWxfaXJxX29uKSB7Cj4gQEAgLTk4NSw3ICs5NzgsNiBAQCBpbnQgdm13X2V2 ZW50X2ZlbmNlX2FjdGlvbl9xdWV1ZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwKPiAgCXN0 cnVjdCB2bXdfZXZlbnRfZmVuY2VfYWN0aW9uICplYWN0aW9uOwo+ICAJc3RydWN0IHZtd19mZW5j ZV9tYW5hZ2VyICpmbWFuID0gZm1hbl9mcm9tX2ZlbmNlKGZlbmNlKTsKPiAgCXN0cnVjdCB2bXdf ZnByaXYgKnZtd19mcCA9IHZtd19mcHJpdihmaWxlX3ByaXYpOwo+IC0JdW5zaWduZWQgbG9uZyBp cnFfZmxhZ3M7Cj4gIAo+ICAJZWFjdGlvbiA9IGt6YWxsb2Moc2l6ZW9mKCplYWN0aW9uKSwgR0ZQ X0tFUk5FTCk7Cj4gIAlpZiAodW5saWtlbHkoZWFjdGlvbiA9PSBOVUxMKSkKPiBAQCAtMTAwMiw5 ICs5OTQsOSBAQCBpbnQgdm13X2V2ZW50X2ZlbmNlX2FjdGlvbl9xdWV1ZShzdHJ1Y3QgZHJtX2Zp bGUgKmZpbGVfcHJpdiwKPiAgCWVhY3Rpb24tPnR2X3NlYyA9IHR2X3NlYzsKPiAgCWVhY3Rpb24t PnR2X3VzZWMgPSB0dl91c2VjOwo+ICAKPiAtCXNwaW5fbG9ja19pcnFzYXZlKCZmbWFuLT5sb2Nr LCBpcnFfZmxhZ3MpOwo+ICsJc3Bpbl9sb2NrX2JoKCZmbWFuLT5sb2NrKTsKPiAgCWxpc3RfYWRk X3RhaWwoJmVhY3Rpb24tPmZwcml2X2hlYWQsICZ2bXdfZnAtPmZlbmNlX2V2ZW50cyk7Cj4gLQlz cGluX3VubG9ja19pcnFyZXN0b3JlKCZmbWFuLT5sb2NrLCBpcnFfZmxhZ3MpOwo+ICsJc3Bpbl91 bmxvY2tfYmgoJmZtYW4tPmxvY2spOwo+ICAKPiAgCXZtd19mZW5jZV9vYmpfYWRkX2FjdGlvbihm ZW5jZSwgJmVhY3Rpb24tPmFjdGlvbik7Cj4gIAo+IEBAIC0xMDI1LDE2ICsxMDE3LDE1IEBAIHN0 YXRpYyBpbnQgdm13X2V2ZW50X2ZlbmNlX2FjdGlvbl9jcmVhdGUoc3RydWN0IGRybV9maWxlICpm aWxlX3ByaXYsCj4gIAlzdHJ1Y3Qgdm13X2V2ZW50X2ZlbmNlX3BlbmRpbmcgKmV2ZW50Owo+ICAJ c3RydWN0IHZtd19mZW5jZV9tYW5hZ2VyICpmbWFuID0gZm1hbl9mcm9tX2ZlbmNlKGZlbmNlKTsK PiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBmbWFuLT5kZXZfcHJpdi0+ZGV2Owo+IC0JdW5z aWduZWQgbG9uZyBpcnFfZmxhZ3M7Cj4gIAlpbnQgcmV0Owo+ICAKPiAtCXNwaW5fbG9ja19pcnFz YXZlKCZkZXYtPmV2ZW50X2xvY2ssIGlycV9mbGFncyk7Cj4gKwlzcGluX2xvY2tfYmgoJmRldi0+ ZXZlbnRfbG9jayk7Cj4gIAo+ICAJcmV0ID0gKGZpbGVfcHJpdi0+ZXZlbnRfc3BhY2UgPCBzaXpl b2YoZXZlbnQtPmV2ZW50KSkgPyAtRUJVU1kgOiAwOwo+ICAJaWYgKGxpa2VseShyZXQgPT0gMCkp Cj4gIAkJZmlsZV9wcml2LT5ldmVudF9zcGFjZSAtPSBzaXplb2YoZXZlbnQtPmV2ZW50KTsKPiAg Cj4gLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPmV2ZW50X2xvY2ssIGlycV9mbGFncyk7 Cj4gKwlzcGluX3VubG9ja19iaCgmZGV2LT5ldmVudF9sb2NrKTsKPiAgCj4gIAlpZiAodW5saWtl bHkocmV0ICE9IDApKSB7Cj4gIAkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gYWxsb2NhdGUgZXZlbnQg c3BhY2UgZm9yIHRoaXMgZmlsZS5cbiIpOwo+IEBAIC0xMDc4LDkgKzEwNjksOSBAQCBzdGF0aWMg aW50IHZtd19ldmVudF9mZW5jZV9hY3Rpb25fY3JlYXRlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9w cml2LAo+ICBvdXRfbm9fcXVldWU6Cj4gIAlldmVudC0+YmFzZS5kZXN0cm95KCZldmVudC0+YmFz ZSk7Cj4gIG91dF9ub19ldmVudDoKPiAtCXNwaW5fbG9ja19pcnFzYXZlKCZkZXYtPmV2ZW50X2xv Y2ssIGlycV9mbGFncyk7Cj4gKwlzcGluX2xvY2tfYmgoJmRldi0+ZXZlbnRfbG9jayk7Cj4gIAlm aWxlX3ByaXYtPmV2ZW50X3NwYWNlICs9IHNpemVvZigqZXZlbnQpOwo+IC0Jc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmZGV2LT5ldmVudF9sb2NrLCBpcnFfZmxhZ3MpOwo+ICsJc3Bpbl91bmxvY2tf YmgoJmRldi0+ZXZlbnRfbG9jayk7Cj4gIG91dF9ub19zcGFjZToKPiAgCXJldHVybiByZXQ7Cj4g IH0KPiBAQCAtMTE3MiwzICsxMTYzLDMyIEBAIG91dF9ub19yZWZfb2JqOgo+ICAJdm13X2ZlbmNl X29ial91bnJlZmVyZW5jZSgmZmVuY2UpOwo+ICAJcmV0dXJuIHJldDsKPiAgfQo+ICsKPiArLyoq Cj4gKyAqIHZtd19mZW5jZV90YXNrbGV0IC0gRmVuY2UgbWFuYWdlciB0YXNrbGV0IGVudHJ5IHBv aW50Cj4gKyAqCj4gKyAqIEBkYXRhOiBUaGUgdGFza2xldCBjbG9zdXJlIC0gQSBwb2ludGVyIHRv IHRoZSBmZW5jZSBtYW5hZ2VyIGNhc3QgdG8gYW4KPiArICogdW5zaWduZWQgbG9uZy4KPiArICov Cj4gK3N0YXRpYyB2b2lkIHZtd19mZW5jZV90YXNrbGV0KHVuc2lnbmVkIGxvbmcgZGF0YSkKPiAr ewo+ICsJc3RydWN0IHZtd19mZW5jZV9tYW5hZ2VyICpmbWFuID0gKHN0cnVjdCB2bXdfZmVuY2Vf bWFuYWdlciAqKSBkYXRhOwo+ICsKPiArCXNwaW5fbG9jaygmZm1hbi0+bG9jayk7Cj4gKwlfX3Zt d19mZW5jZXNfdXBkYXRlKGZtYW4pOwo+ICsJc3Bpbl91bmxvY2soJmZtYW4tPmxvY2spOwo+ICsJ d2FrZV91cF9hbGwoJmZtYW4tPmRldl9wcml2LT5mZW5jZV9xdWV1ZSk7Cj4gK30KPiArCj4gKy8q Kgo+ICsgKiB2bXdfZmVuY2VfdGFza2xldF9zY2hlZHVsZSAtIFNjaGVkdWxlIGEgZmVuY2UgbWFu YWdlciB0YXNrbGV0IHJ1bgo+ICsgKgo+ICsgKiBAZm1hbjogUG9pbnRlciB0byBhIGZlbmNlIG1h bmFnZXIKPiArICovCj4gK3ZvaWQgdm13X2ZlbmNlX3Rhc2tsZXRfc2NoZWR1bGUoc3RydWN0IHZt d19mZW5jZV9tYW5hZ2VyICpmbWFuKQo+ICt7Cj4gKwlpZiAoIWZtYW4pCj4gKwkJcmV0dXJuOwo+ ICsKPiArCXRhc2tsZXRfc2NoZWR1bGUoJmZtYW4tPnRhc2tsZXQpOwo+ICt9Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2ZlbmNlLmggYi9kcml2ZXJzL2dwdS9k cm0vdm13Z2Z4L3Ztd2dmeF9mZW5jZS5oCj4gaW5kZXggOGJlNmMyOS4uZTU1YjJjOSAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9mZW5jZS5oCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZmVuY2UuaAo+IEBAIC0xMjQsNCArMTI0LDYgQEAg ZXh0ZXJuIGludCB2bXdfZXZlbnRfZmVuY2VfYWN0aW9uX3F1ZXVlKHN0cnVjdCBkcm1fZmlsZSAq ZmlsZWVfcHJpdiwKPiAgCQkJCQl1aW50MzJfdCAqdHZfc2VjLAo+ICAJCQkJCXVpbnQzMl90ICp0 dl91c2VjLAo+ICAJCQkJCWJvb2wgaW50ZXJydXB0aWJsZSk7Cj4gK2V4dGVybiB2b2lkIHZtd19m ZW5jZV90YXNrbGV0X3NjaGVkdWxlKHN0cnVjdCB2bXdfZmVuY2VfbWFuYWdlciAqZm1hbik7Cj4g Kwo+ICAjZW5kaWYgLyogX1ZNV0dGWF9GRU5DRV9IXyAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9pcnEuYyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13 Z2Z4X2lycS5jCj4gaW5kZXggYWMzZWNjZC4uYjBhNmU2NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9pcnEuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92bXdn Zngvdm13Z2Z4X2lycS5jCj4gQEAgLTQ4LDEwICs0OCw4IEBAIGlycXJldHVybl90IHZtd19pcnFf aGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcpCj4gIAkJcmV0dXJuIElSUV9OT05FOwo+ICAKPiAg CWlmIChtYXNrZWRfc3RhdHVzICYgKFNWR0FfSVJRRkxBR19BTllfRkVOQ0UgfAo+IC0JCQkgICAg IFNWR0FfSVJRRkxBR19GRU5DRV9HT0FMKSkgewo+IC0JCXZtd19mZW5jZXNfdXBkYXRlKGRldl9w cml2LT5mbWFuKTsKPiAtCQl3YWtlX3VwX2FsbCgmZGV2X3ByaXYtPmZlbmNlX3F1ZXVlKTsKPiAt CX0KPiArCQkJICAgICBTVkdBX0lSUUZMQUdfRkVOQ0VfR09BTCkpCj4gKwkJdm13X2ZlbmNlX3Rh c2tsZXRfc2NoZWR1bGUoZGV2X3ByaXYtPmZtYW4pOwo+ICAKPiAgCWlmIChtYXNrZWRfc3RhdHVz ICYgU1ZHQV9JUlFGTEFHX0ZJRk9fUFJPR1JFU1MpCj4gIAkJd2FrZV91cF9hbGwoJmRldl9wcml2 LT5maWZvX3F1ZXVlKTsKPiAtLSAKPiAyLjQuMwo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCj4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+IGRyaS1k ZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBF bmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcg bGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK