From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ben Widawsky Subject: Re: [PATCH 06/13] drm/i915/bdw: implement semaphore signal Date: Tue, 11 Feb 2014 15:01:31 -0800 Message-ID: <20140211230131.GA6449@bwidawsk.net> References: <1391025333-31587-1-git-send-email-benjamin.widawsky@intel.com> <1391025333-31587-7-git-send-email-benjamin.widawsky@intel.com> <20140130123817.GJ9454@intel.com> <20140211221104.GC2219@bwidawsk.net> <20140211222237.GD2219@bwidawsk.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail.bwidawsk.net (bwidawsk.net [166.78.191.112]) by gabe.freedesktop.org (Postfix) with ESMTP id AC1AEFABA2 for ; Tue, 11 Feb 2014 15:01:47 -0800 (PST) Content-Disposition: inline In-Reply-To: <20140211222237.GD2219@bwidawsk.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces@lists.freedesktop.org Errors-To: intel-gfx-bounces@lists.freedesktop.org To: Ville =?utf-8?B?U3lyasOkbMOk?= Cc: Intel GFX , Ben Widawsky List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBGZWIgMTEsIDIwMTQgYXQgMDI6MjI6MzdQTSAtMDgwMCwgQmVuIFdpZGF3c2t5IHdy b3RlOgo+IE9uIFR1ZSwgRmViIDExLCAyMDE0IGF0IDAyOjExOjA0UE0gLTA4MDAsIEJlbiBXaWRh d3NreSB3cm90ZToKPiA+IE9uIFRodSwgSmFuIDMwLCAyMDE0IGF0IDAyOjM4OjE3UE0gKzAyMDAs IFZpbGxlIFN5cmrDpGzDpCB3cm90ZToKPiA+ID4gT24gV2VkLCBKYW4gMjksIDIwMTQgYXQgMTE6 NTU6MjZBTSAtMDgwMCwgQmVuIFdpZGF3c2t5IHdyb3RlOgo+ID4gPiA+IFNlbWFwaG9yZSBzaWdu YWxsaW5nIHdvcmtzIHNpbWlsYXJseSB0byBwcmV2aW91cyBHRU5zIHdpdGggdGhlIGV4Y2VwdGlv bgo+ID4gPiA+IHRoYXQgdGhlIHBlciByaW5nIG1haWxib3hlcyBubyBsb25nZXIgZXhpc3QuIElu c3RlYWQgeW91IG11c3QgZGVmaW5lCj4gPiA+ID4geW91ciBvd24gc3BhY2UsIHNvbWV3aGVyZSBp biB0aGUgR1RULgo+ID4gPiA+IAo+ID4gPiA+IFRoZSBjb21tZW50cyBpbiB0aGUgY29kZSBkZWZp bmUgdGhlIGxheW91dCBJJ3ZlIG9wdGVkIGZvciwgd2hpY2ggc2hvdWxkCj4gPiA+ID4gYmUgZmFp cmx5IGZ1dHVyZSBwcm9vZi4gSWUuIEkgdHJpZWQgdG8gZGVmaW5lIG9mZnNldHMgaW4gYWJzdHJh Y3QgdGVybXMKPiA+ID4gPiAoTlVNX1JJTkdTLCBzZXFubyBzaXplLCBldGMpLgo+ID4gPiA+IAo+ ID4gPiA+IE5PVEU6IElmIG9uZSB3YW50ZWQgdG8gbW92ZSB0aGlzIHRvIHRoZSBIV1NQIHRoZXkg Y291bGQuIEkndmUgZGVjaWRlZAo+ID4gPiA+IG9uZSA0ayBvYmplY3Qgd291bGQgYmUgZWFzaWVy IHRvIGRlYWwgd2l0aCwgYW5kIHByb3ZpZGUgcG90ZW50aWFsIHdpbnMKPiA+ID4gPiB3aXRoIGNh Y2hlIGxvY2FsaXR5LCBidXQgdGhhdCdzIGFsbCBzcGVjdWxhdGl2ZS4KPiA+ID4gPiAKPiA+ID4g PiB2MjogVXBkYXRlIHRoZSBtYWNybyB0byBub3QgbmVlZCB0aGUgb3RoZXIgcmluZydzIHJpbmct PmlkIChDaHJpcykKPiA+ID4gPiBVcGRhdGUgdGhlIGNvbW1lbnQgdG8gdXNlIHRoZSBjb3JyZWN0 IGZvcm11bGEgKENocmlzKQo+ID4gPiA+IAo+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IEJlbiBXaWRh d3NreSA8YmVuQGJ3aWRhd3NrLm5ldD4KPiA+ID4gPiAtLS0KPiA+ID4gPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgIHwgICAxICsKPiA+ID4gPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9yZWcuaCAgICAgICAgIHwgICA1ICstCj4gPiA+ID4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyB8IDE5OSArKysrKysrKysrKysrKysrKysrKysr KysrLS0tLS0tLQo+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmggfCAgMzggKysrKystCj4gPiA+ID4gIDQgZmlsZXMgY2hhbmdlZCwgMTk3IGluc2VydGlvbnMo KyksIDQ2IGRlbGV0aW9ucygtKQo+ID4gPiA+IAo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAo+ID4gPiA+IGluZGV4IDM2NzNiYTEuLmY1MjEwNTkgMTAwNjQ0Cj4gPiA+ID4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmgKPiA+ID4gPiBAQCAtMTM4MCw2ICsxMzgwLDcgQEAgdHlwZWRlZiBz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7Cj4gPiA+ID4gIAo+ID4gPiA+ICAJc3RydWN0IHBjaV9k ZXYgKmJyaWRnZV9kZXY7Cj4gPiA+ID4gIAlzdHJ1Y3QgaW50ZWxfcmluZ19idWZmZXIgcmluZ1tJ OTE1X05VTV9SSU5HU107Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqc2Vt YXBob3JlX29iajsKPiA+ID4gPiAgCXVpbnQzMl90IGxhc3Rfc2Vxbm8sIG5leHRfc2Vxbm87Cj4g PiA+ID4gIAo+ID4gPiA+ICAJZHJtX2RtYV9oYW5kbGVfdCAqc3RhdHVzX3BhZ2VfZG1haDsKPiA+ ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+ID4gPiBpbmRleCBjYmJhZjI2Li44Yjc0NWRj IDEwMDY0NAo+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+ ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gPiA+ID4gQEAgLTIx Niw3ICsyMTYsNyBAQAo+ID4gPiA+ICAjZGVmaW5lICAgTUlfRElTUExBWV9GTElQX0lWQl9TUFJJ VEVfQiAoMyA8PCAxOSkKPiA+ID4gPiAgI2RlZmluZSAgIE1JX0RJU1BMQVlfRkxJUF9JVkJfUExB TkVfQyAgKDQgPDwgMTkpCj4gPiA+ID4gICNkZWZpbmUgICBNSV9ESVNQTEFZX0ZMSVBfSVZCX1NQ UklURV9DICg1IDw8IDE5KQo+ID4gPiA+IC0jZGVmaW5lIE1JX1NFTUFQSE9SRV9NQk9YCU1JX0lO U1RSKDB4MTYsIDEpIC8qIGdlbjYrICovCj4gPiA+ID4gKyNkZWZpbmUgTUlfU0VNQVBIT1JFX01C T1gJTUlfSU5TVFIoMHgxNiwgMSkgLyogZ2VuNiwgZ2VuNyAqLwo+ID4gPiA+ICAjZGVmaW5lICAg TUlfU0VNQVBIT1JFX0dMT0JBTF9HVFQgICAgKDE8PDIyKQo+ID4gPiA+ICAjZGVmaW5lICAgTUlf U0VNQVBIT1JFX1VQREFURQkgICAgKDE8PDIxKQo+ID4gPiA+ICAjZGVmaW5lICAgTUlfU0VNQVBI T1JFX0NPTVBBUkUJICAgICgxPDwyMCkKPiA+ID4gPiBAQCAtMjQxLDYgKzI0MSw4IEBACj4gPiA+ ID4gICNkZWZpbmUgICBNSV9SRVNUT1JFX0VYVF9TVEFURV9FTgkoMTw8MikKPiA+ID4gPiAgI2Rl ZmluZSAgIE1JX0ZPUkNFX1JFU1RPUkUJCSgxPDwxKQo+ID4gPiA+ICAjZGVmaW5lICAgTUlfUkVT VE9SRV9JTkhJQklUCQkoMTw8MCkKPiA+ID4gPiArI2RlZmluZSBNSV9TRU1BUEhPUkVfU0lHTkFM CU1JX0lOU1RSKDB4MWIsIDApIC8qIEdFTjgrICovCj4gPiA+ID4gKyNkZWZpbmUgICBNSV9TRU1B UEhPUkVfVEFSR0VUKGVuZ2luZSkJKChlbmdpbmUpPDwxNSkKPiA+ID4gPiAgI2RlZmluZSBNSV9T VE9SRV9EV09SRF9JTU0JTUlfSU5TVFIoMHgyMCwgMSkKPiA+ID4gPiAgI2RlZmluZSAgIE1JX01F TV9WSVJUVUFMCSgxIDw8IDIyKSAvKiA5NjUrIG9ubHkgKi8KPiA+ID4gPiAgI2RlZmluZSBNSV9T VE9SRV9EV09SRF9JTkRFWAlNSV9JTlNUUigweDIxLCAxKQo+ID4gPiA+IEBAIC0zMjksNiArMzMx LDcgQEAKPiA+ID4gPiAgI2RlZmluZSAgIFBJUEVfQ09OVFJPTF9URVhUVVJFX0NBQ0hFX0lOVkFM SURBVEUJCSgxPDwxMCkgLyogR000NSsgb25seSAqLwo+ID4gPiA+ICAjZGVmaW5lICAgUElQRV9D T05UUk9MX0lORElSRUNUX1NUQVRFX0RJU0FCTEUJCSgxPDw5KQo+ID4gPiA+ICAjZGVmaW5lICAg UElQRV9DT05UUk9MX05PVElGWQkJCQkoMTw8OCkKPiA+ID4gPiArI2RlZmluZSAgIFBJUEVfQ09O VFJPTF9GTFVTSF9FTkFCTEUJCQkoMTw8NykgLyogZ2VuNysgKi8KPiA+ID4gPiAgI2RlZmluZSAg IFBJUEVfQ09OVFJPTF9WRl9DQUNIRV9JTlZBTElEQVRFCQkoMTw8NCkKPiA+ID4gPiAgI2RlZmlu ZSAgIFBJUEVfQ09OVFJPTF9DT05TVF9DQUNIRV9JTlZBTElEQVRFCQkoMTw8MykKPiA+ID4gPiAg I2RlZmluZSAgIFBJUEVfQ09OVFJPTF9TVEFURV9DQUNIRV9JTlZBTElEQVRFCQkoMTw8MikKPiA+ ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gPiA+ID4gaW5kZXgg MzdhZTJiMS4uYjc1MDgzNSAxMDA2NDQKPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9yaW5nYnVmZmVyLmMKPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9yaW5nYnVmZmVyLmMKPiA+ID4gPiBAQCAtNjE5LDYgKzYxOSwxMyBAQCBzdGF0aWMgaW50 IGluaXRfcmVuZGVyX3Jpbmcoc3RydWN0IGludGVsX3JpbmdfYnVmZmVyICpyaW5nKQo+ID4gPiA+ ICBzdGF0aWMgdm9pZCByZW5kZXJfcmluZ19jbGVhbnVwKHN0cnVjdCBpbnRlbF9yaW5nX2J1ZmZl ciAqcmluZykKPiA+ID4gPiAgewo+ID4gPiA+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHJp bmctPmRldjsKPiA+ID4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRl di0+ZGV2X3ByaXZhdGU7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJaWYgKGRldl9wcml2LT5zZW1hcGhv cmVfb2JqKSB7Cj4gPiA+ID4gKwkJaTkxNV9nZW1fb2JqZWN0X2dndHRfdW5waW4oZGV2X3ByaXYt PnNlbWFwaG9yZV9vYmopOwo+ID4gPiA+ICsJCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKCZk ZXZfcHJpdi0+c2VtYXBob3JlX29iai0+YmFzZSk7Cj4gPiA+ID4gKwkJZGV2X3ByaXYtPnNlbWFw aG9yZV9vYmogPSBOVUxMOwo+ID4gPiA+ICsJfQo+ID4gPiA+ICAKPiA+ID4gPiAgCWlmIChyaW5n LT5zY3JhdGNoLm9iaiA9PSBOVUxMKQo+ID4gPiA+ICAJCXJldHVybjsKPiA+ID4gPiBAQCAtNjMy LDYgKzYzOSw4NiBAQCBzdGF0aWMgdm9pZCByZW5kZXJfcmluZ19jbGVhbnVwKHN0cnVjdCBpbnRl bF9yaW5nX2J1ZmZlciAqcmluZykKPiA+ID4gPiAgCXJpbmctPnNjcmF0Y2gub2JqID0gTlVMTDsK PiA+ID4gPiAgfQo+ID4gPiA+ICAKPiA+ID4gPiArc3RhdGljIGludCBnZW44X3Jjc19zaWduYWwo c3RydWN0IGludGVsX3JpbmdfYnVmZmVyICpzaWduYWxsZXIsCj4gPiA+ID4gKwkJCSAgIHVuc2ln bmVkIGludCBudW1fZHdvcmRzKQo+ID4gPiA+ICt7Cj4gPiA+ID4gKyNkZWZpbmUgTUJPWF9VUERB VEVfRFdPUkRTIDgKPiA+ID4gPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBzaWduYWxsZXIt PmRldjsKPiA+ID4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7Cj4gPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfcmluZ19idWZmZXIgKndhaXRlcjsK PiA+ID4gPiArCWludCBpLCByZXQsIG51bV9yaW5nczsKPiA+ID4gPiArCj4gPiA+ID4gKwludW1f cmluZ3MgPSBod2VpZ2h0X2xvbmcoSU5URUxfSU5GTyhkZXYpLT5yaW5nX21hc2spOwo+ID4gPiA+ ICsJbnVtX2R3b3JkcyA9IChudW1fcmluZ3MtMSkgKiBNQk9YX1VQREFURV9EV09SRFM7Cj4gPiA+ IAo+ID4gPiBBZ2FpbiBudW1fZHdvcmRzICs9Cj4gPiA+IAo+ID4gPiA+ICsjdW5kZWYgTUJPWF9V UERBVEVfRFdPUkRTCj4gPiA+ID4gKwo+ID4gPiA+ICsJLyogWFhYOiArIDQgZm9yIHRoZSBjYWxs ZXIgKi8KPiA+ID4gPiArCXJldCA9IGludGVsX3JpbmdfYmVnaW4oc2lnbmFsbGVyLCBudW1fZHdv cmRzICsgNCk7Cj4gPiA+IAo+ID4gPiBhbmQgdGhlICs0IGdvZXMgYXdheS4KPiA+ID4gCj4gPiA+ ID4gKwlpZiAocmV0KQo+ID4gPiA+ICsJCXJldHVybiByZXQ7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJ Zm9yX2VhY2hfcmluZyh3YWl0ZXIsIGRldl9wcml2LCBpKSB7Cj4gPiA+ID4gKwkJdTY0IGd0dF9v ZmZzZXQgPSBzaWduYWxsZXItPnNlbWFwaG9yZS5zaWduYWxfZ2d0dFtpXTsKPiA+ID4gPiArCQlp ZiAoZ3R0X29mZnNldCA9PSBNSV9TRU1BUEhPUkVfU1lOQ19JTlZBTElEKQo+ID4gPiA+ICsJCQlj b250aW51ZTsKPiA+ID4gPiArCj4gPiA+ID4gKwkJaW50ZWxfcmluZ19lbWl0KHNpZ25hbGxlciwg R0ZYX09QX1BJUEVfQ09OVFJPTCg2KSk7Cj4gPiA+ID4gKwkJaW50ZWxfcmluZ19lbWl0KHNpZ25h bGxlciwgUElQRV9DT05UUk9MX0dMT0JBTF9HVFRfSVZCIHwKPiA+ID4gPiArCQkJCQkgICBQSVBF X0NPTlRST0xfUVdfV1JJVEUgfAo+ID4gPiA+ICsJCQkJCSAgIFBJUEVfQ09OVFJPTF9GTFVTSF9F TkFCTEUpOwo+ID4gPiA+ICsJCWludGVsX3JpbmdfZW1pdChzaWduYWxsZXIsIGxvd2VyXzMyX2Jp dHMoZ3R0X29mZnNldCkpOwo+ID4gPiA+ICsJCWludGVsX3JpbmdfZW1pdChzaWduYWxsZXIsIHVw cGVyXzMyX2JpdHMoZ3R0X29mZnNldCkpOwo+ID4gPiA+ICsJCWludGVsX3JpbmdfZW1pdChzaWdu YWxsZXIsIHNpZ25hbGxlci0+b3V0c3RhbmRpbmdfbGF6eV9zZXFubyk7Cj4gPiA+ID4gKwkJaW50 ZWxfcmluZ19lbWl0KHNpZ25hbGxlciwgMCk7Cj4gPiA+ID4gKwkJaW50ZWxfcmluZ19lbWl0KHNp Z25hbGxlciwgTUlfU0VNQVBIT1JFX1NJR05BTCB8Cj4gPiA+ID4gKwkJCQkJICAgTUlfU0VNQVBI T1JFX1RBUkdFVCh3YWl0ZXItPmlkKSk7Cj4gPiA+ID4gKwkJaW50ZWxfcmluZ19lbWl0KHNpZ25h bGxlciwgMCk7Cj4gPiA+ID4gKwl9Cj4gPiA+ID4gKwo+ID4gPiA+ICsJV0FSTl9PTihpICE9IG51 bV9yaW5ncyk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJcmV0dXJuIDA7Cj4gPiA+ID4gK30KPiA+ID4g Cj4gPiA+IDxzbmlwPgo+ID4gCj4gPiBHb3QgdGhvc2UsIHRoYW5rcy4KPiA+IAo+ID4gPiAKPiA+ ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4gPiA+ID4gaW5kZXgg YzY5YWUxMC4uZjFlN2E2NiAxMDA2NDQKPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9yaW5nYnVmZmVyLmgKPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9yaW5nYnVmZmVyLmgKPiA+ID4gPiBAQCAtMTExLDYgKzExMSwzOSBAQCBzdHJ1Y3QgIGlu dGVsX3JpbmdfYnVmZmVyIHsKPiA+ID4gPiAgI2RlZmluZSBJOTE1X0RJU1BBVENIX1BJTk5FRCAw eDIKPiA+ID4gPiAgCXZvaWQJCSgqY2xlYW51cCkoc3RydWN0IGludGVsX3JpbmdfYnVmZmVyICpy aW5nKTsKPiA+ID4gPiAgCj4gPiA+ID4gKwkvKiBHRU44IHNpZ25hbC93YWl0IHRhYmxlCj4gPiA+ ID4gKwkgKgkgIHNpZ25hbCB0byAgc2lnbmFsIHRvICAgIHNpZ25hbCB0byAgIHNpZ25hbCB0bwo+ ID4gPiA+ICsJICoJICAgIFJDUyAgICAgICAgIFZDUyAgICAgICAgICBCQ1MgICAgICAgIFZFQ1MK PiA+ID4gPiArCSAqICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCj4gPiA+ID4gKwkgKiAgUkNTIHwgTk9QICgweDAwKSB8IEJDUyAoMHgw OCkgfCBWQ1MgKDB4MTApIHwgVkVDUyAoMHgxOCkgfAo+ID4gPiA+ICsJICoJfC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gPiA+ID4gKwkgKiAg VkNTIHwgUkNTICgweDIwKSB8IE5PUCAoMHgyOCkgfCBCQ1MgKDB4MzApIHwgVkVDUyAoMHgzOCkg fAo+ID4gPiA+ICsJICoJfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCj4gPiA+ID4gKwkgKiAgQkNTIHwgUkNTICgweDQwKSB8IFZDUyAoMHg0OCkg fCBOT1AgKDB4NTApIHwgVkVDUyAoMHg1OCkgfAo+ID4gPiA+ICsJICoJfC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gPiA+ID4gKwkgKiBWRUNT IHwgUkNTICgweDYwKSB8IFZDUyAoMHg2OCkgfCBCQ1MgKDB4NzApIHwgIE5PUCAoMHg3OCkgfAo+ ID4gPiA+ICsJICoJfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCj4gPiA+ID4gKwkgKgo+ID4gPiA+ICsJICogR2VuZXJhbGl6YXRpb246Cj4gPiA+ ID4gKwkgKiAgZih4LCB5KSA6PSAoeC0+aWQgKiBOVU1fUklOR1MgKiBzZXFub19zaXplKSArIChz ZXFub19zaXplICogeS0+aWQpCj4gPiA+ID4gKwkgKiAgaWUuIHRyYW5zcG9zZSBvZiBnKHgsIHkp Cj4gPiA+ID4gKwkgKgo+ID4gPiA+ICsJICoJIHN5bmMgZnJvbSAgIHN5bmMgZnJvbSAgICBzeW5j IGZyb20gICAgc3luYyBmcm9tCj4gPiA+ID4gKwkgKgkgICAgUkNTICAgICAgICAgVkNTICAgICAg ICAgIEJDUyAgICAgICAgVkVDUwo+ID4gPiA+ICsJICogICAgICAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+ID4gPiArCSAqICBSQ1MgfCBO T1AgKDB4MDApIHwgQkNTICgweDIwKSB8IFZDUyAoMHg0MCkgfCBWRUNTICgweDYwKSB8Cj4gPiA+ ID4gKwkgKgl8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KPiA+ID4gPiArCSAqICBWQ1MgfCBSQ1MgKDB4MDgpIHwgTk9QICgweDI4KSB8IEJDUyAo MHg0OCkgfCBWRUNTICgweDY4KSB8Cj4gPiA+ID4gKwkgKgl8LS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+ID4gPiArCSAqICBCQ1MgfCBSQ1Mg KDB4MTApIHwgVkNTICgweDMwKSB8IE5PUCAoMHg1MCkgfCBWRUNTICgweDYwKSB8Cj4gPiA+ID4g KwkgKgl8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KPiA+ID4gPiArCSAqIFZFQ1MgfCBSQ1MgKDB4MTgpIHwgVkNTICgweDM4KSB8IEJDUyAoMHg1 OCkgfCAgTk9QICgweDc4KSB8Cj4gPiA+ID4gKwkgKgl8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+ID4gPiArCSAqCj4gPiA+ID4gKwkgKiBH ZW5lcmFsaXphdGlvbjoKPiA+ID4gPiArCSAqICBnKHgsIHkpIDo9ICh5LT5pZCAqIE5VTV9SSU5H UyAqIHNlcW5vX3NpemUpICsgKHNlcW5vX3NpemUgKiB4LT5pZCkKPiA+ID4gPiArCSAqICBpZS4g dHJhbnNwb3NlIG9mIGYoeCwgeSkKPiA+ID4gPiArCSAqLwo+ID4gPiA+ICAJc3RydWN0IHsKPiA+ ID4gPiAgCQl1MzIJc3luY19zZXFub1tJOTE1X05VTV9SSU5HUy0xXTsKPiA+ID4gPiAgCQkvKiBB S0Egd2FpdCgpICovCj4gPiA+ID4gQEAgLTEyMCw3ICsxNTMsMTAgQEAgc3RydWN0ICBpbnRlbF9y aW5nX2J1ZmZlciB7Cj4gPiA+ID4gIAkJLyogb3VyIG1ib3ggd3JpdHRlbiBieSBvdGhlcnMgKi8K PiA+ID4gPiAgCQl1MzIJCW1ib3hbSTkxNV9OVU1fUklOR1NdOwo+ID4gPiAKPiA+ID4gbWJveCBz aG91bGQgYWxzbyBnZXQgYSB1NjQgZnJpZW5kLCByaWdodD8KPiA+IAo+ID4gbWJveCBzaG91bGQg YmUgZ2VuNiBvbmx5LCBnaXZlbiB0aGUgY2hhbmdlIHRvIHVzaW5nIHRoZSBndHQgb24gZ2VuOC4g SW4KPiA+IHRoaXMgcG9pbnQgaW4gdGhlIHNlcmllcywgc2VtYXBob3JlcyBzaG91bGQgYmUgZm9y Y2libHkgZGlzYWJsZWQgb24KPiA+IGdlbjgsIHNvIHRoZSBjb2RlIGxvb2tzIHdyb25nLCBidXQg dGhlIHBhdGggY2Fubm90IFtzaG91bGQgbm90XSBiZQo+ID4gdGFrZW4uCj4gPiAKPiA+IEkgc3Vw cG9zZSBJIHNob3VsZCBraWxsIHRoZSBpbml0aWFsaXphdGlvbiBvZiBtYm94IGZvciBnZW44LCBv ciBzb21laG93Cj4gPiBjb25zb2xpZGF0ZSB3aXRoIGEgdW5pb24gdG8gcHJldmVudCBjb25mdXNp b24uCj4gPiAKPiAKPiBKdXN0IHRvIGNsYXJpZnkgaXQgc2hvdWxkIGJlCj4gCj4gZ2VuNjoKPiBz aWduYWwgdXNlcyBzaWduYWxfbWJveCBmb3Igc2lnbmFsCj4gd2FpdCB1c2VzIG1ib3gKPiAKPiBn ZW44Ogo+IHNpZ25hbCB1c2VzIHNpZ25hbF9nZ3R0IGZvciBzaWduYWwKPiB3YWl0IHVzZXMgYXJp dGhtZXRpYyB0byBmaWd1cmUgb3V0IHRoZSBvZmZzZXQKPiAKCk9rLCBJJ3ZlIGZpeGVkIHRoaXMg dXAgdG8gbWFrZSB0aGluZ3MgY2xlYXJlciwgYnV0IGl0IGVuZHMgdXAgaW4gdGhlCm5leHQgcGF0 Y2guIFNvIGxvb2sgdGhlcmUgd2hlbiBJIHJlcG9zdC4KCj4gPiA+IAo+ID4gPiA+ICAJCS8qIG1i b3hlcyB0aGlzIHJpbmcgc2lnbmFscyB0byAqLwo+ID4gPiA+IC0JCXUzMgkJc2lnbmFsX21ib3hb STkxNV9OVU1fUklOR1NdOwo+ID4gPiA+ICsJCXVuaW9uIHsKPiA+ID4gPiArCQkJdTMyCQlzaWdu YWxfbWJveFtJOTE1X05VTV9SSU5HU107Cj4gPiA+ID4gKwkJCXU2NAkJc2lnbmFsX2dndHRbSTkx NV9OVU1fUklOR1NdOwo+ID4gPiA+ICsJCX07Cj4gPiA+ID4gIAo+ID4gPiA+ICAJCS8qIG51bV9k d29yZHMgaXMgc3BhY2UgdGhlIGNhbGxlciB3aWxsIG5lZWQgZm9yIGF0b21pYyB1cGRhdGUgKi8K PiA+ID4gPiAgCQlpbnQJCSgqc2lnbmFsKShzdHJ1Y3QgaW50ZWxfcmluZ19idWZmZXIgKnNpZ25h bGxlciwKPiA+ID4gPiAtLSAKPiA+ID4gPiAxLjguNS4zCj4gPiA+ID4gCj4gPiA+ID4gX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+ID4gPiBJbnRlbC1n ZnggbWFpbGluZyBsaXN0Cj4gPiA+ID4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ ID4gPiA+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngKPiA+ID4gCj4gPiA+IC0tIAo+ID4gPiBWaWxsZSBTeXJqw6Rsw6QKPiA+ID4gSW50ZWwg T1RDCj4gPiAKPiA+IC0tIAo+ID4gQmVuIFdpZGF3c2t5LCBJbnRlbCBPcGVuIFNvdXJjZSBUZWNo bm9sb2d5IENlbnRlcgo+IAo+IC0tIAo+IEJlbiBXaWRhd3NreSwgSW50ZWwgT3BlbiBTb3VyY2Ug VGVjaG5vbG9neSBDZW50ZXIKCi0tIApCZW4gV2lkYXdza3ksIEludGVsIE9wZW4gU291cmNlIFRl Y2hub2xvZ3kgQ2VudGVyCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4Cg==