From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 1/8] drm/i915: Consolidate bxt/cnl/icl cdclk readout Date: Tue, 10 Sep 2019 15:27:49 +0300 Message-ID: <20190910122749.GH7482@intel.com> References: <20190907002143.22591-1-matthew.d.roper@intel.com> <20190907002143.22591-2-matthew.d.roper@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 709896E084 for ; Tue, 10 Sep 2019 12:27:54 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190907002143.22591-2-matthew.d.roper@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matt Roper Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBTZXAgMDYsIDIwMTkgYXQgMDU6MjE6MzZQTSAtMDcwMCwgTWF0dCBSb3BlciB3cm90 ZToKPiBBc2lkZSBmcm9tIGEgZmV3IG1pbm9yIHJlZ2lzdGVyIGNoYW5nZXMgYW5kIHNvbWUgZGlm ZmVyZW50IGNsb2NrIHZhbHVlcywKPiBjZGNsayBkZXNpZ24gaGFzbid0IGNoYW5nZWQgbXVjaCBz aW5jZSBnZW45bHAuICBMZXQncyBjb25zb2xpZGF0ZSB0aGUKPiBoYW5kbGVycyBmb3IgYnh0LCBj bmwsIGFuZCBpY2wgdG8ga2VlcCB0aGUgY29kZWZsb3cgY29uc2lzdGVudC4KPiAKPiBBbHNvLCB3 aGlsZSB3ZSdyZSBhdCBpdCwgcy9ieHRfZGVfcGxsX3VwZGF0ZS9ieHRfZGVfcGxsX3JlYWRvdXQv IHNpbmNlCj4gInVwZGF0ZSIgbWFrZXMgbWUgdGhpbmsgd2Ugc2hvdWxkIGJlIHdyaXRpbmcgdG8g aGFyZHdhcmUgcmF0aGVyIHRoYW4KPiByZWFkaW5nIGZyb20gaXQuCj4gCj4gQ2M6IFZpbGxlIFN5 cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gU3VnZ2VzdGVkLWJ5OiBW aWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+IFNpZ25lZC1v ZmYtYnk6IE1hdHQgUm9wZXIgPG1hdHRoZXcuZC5yb3BlckBpbnRlbC5jb20+Cj4gLS0tCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY2RjbGsuYyB8IDMyNSArKysrKysrKyst LS0tLS0tLS0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDEzOCBpbnNlcnRpb25zKCspLCAxODcgZGVs ZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfY2RjbGsuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY2RjbGsu Ywo+IGluZGV4IGQzZTU2NjI4YWY3MC4uZTA3ZGUzYjg0Y2VjIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY2RjbGsuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY2RjbGsuYwo+IEBAIC0xMTkwLDYgKzExOTAsMzYgQEAg c3RhdGljIHU4IGJ4dF9jYWxjX3ZvbHRhZ2VfbGV2ZWwoaW50IGNkY2xrKQo+ICAJcmV0dXJuIERJ Vl9ST1VORF9VUChjZGNsaywgMjUwMDApOwo+ICB9Cj4gIAo+ICtzdGF0aWMgdTggY25sX2NhbGNf dm9sdGFnZV9sZXZlbChpbnQgY2RjbGspCj4gK3sKPiArCWlmIChjZGNsayA+IDMzNjAwMCkKPiAr CQlyZXR1cm4gMjsKPiArCWVsc2UgaWYgKGNkY2xrID4gMTY4MDAwKQo+ICsJCXJldHVybiAxOwo+ ICsJZWxzZQo+ICsJCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdTggaWNsX2NhbGNfdm9s dGFnZV9sZXZlbChpbnQgY2RjbGspCj4gK3sKPiArCWlmIChjZGNsayA+IDU1NjgwMCkKPiArCQly ZXR1cm4gMjsKPiArCWVsc2UgaWYgKGNkY2xrID4gMzI2NDAwKQoKTm90IHRoZSBzYW1lIG51bWJl cnMgYXMgdGhlIG9sZCBmdW5jdGlvbi4KCj4gKwkJcmV0dXJuIDE7Cj4gKwllbHNlCj4gKwkJcmV0 dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyB1OCBlaGxfY2FsY192b2x0YWdlX2xldmVsKGludCBj ZGNsaykKPiArewo+ICsJaWYgKGNkY2xrID4gMzI2NDAwKQo+ICsJCXJldHVybiAyOwo+ICsJZWxz ZSBpZiAoY2RjbGsgPiAxODAwMDApCj4gKwkJcmV0dXJuIDE7Cj4gKwllbHNlCj4gKwkJcmV0dXJu IDA7Cj4gK30KPiArCj4gIHN0YXRpYyBpbnQgYnh0X2RlX3BsbF92Y28oc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgY2RjbGspCj4gIHsKPiAgCWludCByYXRpbzsKPiBAQCAt MTIzNiwyMyArMTI2Niw2OSBAQCBzdGF0aWMgaW50IGdsa19kZV9wbGxfdmNvKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IGNkY2xrKQo+ICAJcmV0dXJuIGRldl9wcml2LT5j ZGNsay5ody5yZWYgKiByYXRpbzsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgYnh0X2RlX3BsbF91 cGRhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IC0JCQkgICAgICBzdHJ1 Y3QgaW50ZWxfY2RjbGtfc3RhdGUgKmNkY2xrX3N0YXRlKQo+ICtzdGF0aWMgdm9pZCBjbmxfcmVh ZG91dF9yZWZjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkgICAg ICAgc3RydWN0IGludGVsX2NkY2xrX3N0YXRlICpjZGNsa19zdGF0ZSkKPiAgewo+IC0JdTMyIHZh bDsKPiArCWlmIChJOTE1X1JFQUQoU0tMX0RTU00pICYgQ05MX0RTU01fQ0RDTEtfUExMX1JFRkNM S18yNE1IeikKPiArCQljZGNsa19zdGF0ZS0+cmVmID0gMjQwMDA7Cj4gKwllbHNlCj4gKwkJY2Rj bGtfc3RhdGUtPnJlZiA9IDE5MjAwOwo+ICt9Cj4gIAo+IC0JY2RjbGtfc3RhdGUtPnJlZiA9IDE5 MjAwOwo+IC0JY2RjbGtfc3RhdGUtPnZjbyA9IDA7Cj4gK3N0YXRpYyB2b2lkIGljbF9yZWFkb3V0 X3JlZmNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCSAgICAgICBz dHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUgKmNkY2xrX3N0YXRlKQo+ICt7Cj4gKwl1MzIgZHNzbSA9 IEk5MTVfUkVBRChTS0xfRFNTTSkgJiBJQ0xfRFNTTV9DRENMS19QTExfUkVGQ0xLX01BU0s7Cj4g Kwo+ICsJc3dpdGNoIChkc3NtKSB7Cj4gKwlkZWZhdWx0Ogo+ICsJCU1JU1NJTkdfQ0FTRShkc3Nt KTsKPiArCQkvKiBmYWxsIHRocm91Z2ggKi8KPiArCWNhc2UgSUNMX0RTU01fQ0RDTEtfUExMX1JF RkNMS18yNE1IejoKPiArCQljZGNsa19zdGF0ZS0+cmVmID0gMjQwMDA7Cj4gKwkJYnJlYWs7Cj4g KwljYXNlIElDTF9EU1NNX0NEQ0xLX1BMTF9SRUZDTEtfMTlfMk1IejoKPiArCQljZGNsa19zdGF0 ZS0+cmVmID0gMTkyMDA7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIElDTF9EU1NNX0NEQ0xLX1BMTF9S RUZDTEtfMzhfNE1IejoKPiArCQljZGNsa19zdGF0ZS0+cmVmID0gMzg0MDA7Cj4gKwkJYnJlYWs7 Cj4gKwl9Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGJ4dF9kZV9wbGxfcmVhZG91dChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfY2Rj bGtfc3RhdGUgKmNkY2xrX3N0YXRlKQo+ICt7Cj4gKwl1MzIgdmFsLCByYXRpbzsKPiArCj4gKwlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSkKPiArCQlpY2xfcmVhZG91dF9yZWZjbGsoZGV2 X3ByaXYsIGNkY2xrX3N0YXRlKTsKPiArCWVsc2UgaWYgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYp KQo+ICsJCWNubF9yZWFkb3V0X3JlZmNsayhkZXZfcHJpdiwgY2RjbGtfc3RhdGUpOwo+ICsJZWxz ZQo+ICsJCWNkY2xrX3N0YXRlLT5yZWYgPSAxOTIwMDsKPiAgCj4gIAl2YWwgPSBJOTE1X1JFQUQo QlhUX0RFX1BMTF9FTkFCTEUpOwo+IC0JaWYgKCh2YWwgJiBCWFRfREVfUExMX1BMTF9FTkFCTEUp ID09IDApCj4gKwlpZiAoKHZhbCAmIEJYVF9ERV9QTExfUExMX0VOQUJMRSkgPT0gMCB8fAo+ICsJ ICAgICh2YWwgJiBCWFRfREVfUExMX0xPQ0spID09IDApIHsKPiArCQkvKgo+ICsJCSAqIENEQ0xL IFBMTCBpcyBkaXNhYmxlZCwgdGhlIFZDTy9yYXRpbyBkb2Vzbid0IG1hdHRlciwgYnV0Cj4gKwkJ ICogc2V0dGluZyBpdCB0byB6ZXJvIGlzIGEgd2F5IHRvIHNpZ25hbCB0aGF0Lgo+ICsJCSAqLwo+ ICsJCWNkY2xrX3N0YXRlLT52Y28gPSAwOwo+ICAJCXJldHVybjsKPiArCX0KPiAgCj4gLQlpZiAo V0FSTl9PTigodmFsICYgQlhUX0RFX1BMTF9MT0NLKSA9PSAwKSkKPiAtCQlyZXR1cm47Cj4gKwkv Kgo+ICsJICogQ05MKyBoYXZlIHRoZSByYXRpbyBkaXJlY3RseSBpbiB0aGUgUExMIGVuYWJsZSBy ZWdpc3RlciwgZ2VuOWxwIGhhZAo+ICsJICogaXQgaW4gYSBzZXBhcmF0ZSBQTEwgY29udHJvbCBy ZWdpc3Rlci4KPiArCSAqLwo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTApCj4gKwkJ cmF0aW8gPSB2YWwgJiBCWFRfREVfUExMX1JBVElPX01BU0s7YQoKQ05MX0NEQ0xLX1BMTF9SQVRJ T19NQVNLIHdvdWxkIGJlIG1vcmUgY29ycmVjdC4gU2FtZSBiaXRzLCBidXQgbWF5YmUKYSBiaXQg bGVzcyBjb25mdXNpbmcgaWYgd2UgZG9uJ3Qgc2hhcmUgdGhlIGRlZmluZSBhY3Jvc3MgcmVnaXN0 ZXJzLgoKV2l0aCB0aGUgd3JvbmcgbnVtYmVycyBpbiBjYWxjX3ZvbHRhZ2VfbGV2ZWwoKSBmaXhl ZDoKUmV2aWV3ZWQtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRl bC5jb20+Cgo+ICsJZWxzZQo+ICsJCXJhdGlvID0gSTkxNV9SRUFEKEJYVF9ERV9QTExfQ1RMKSAm IEJYVF9ERV9QTExfUkFUSU9fTUFTSzsKPiAgCj4gLQl2YWwgPSBJOTE1X1JFQUQoQlhUX0RFX1BM TF9DVEwpOwo+IC0JY2RjbGtfc3RhdGUtPnZjbyA9ICh2YWwgJiBCWFRfREVfUExMX1JBVElPX01B U0spICogY2RjbGtfc3RhdGUtPnJlZjsKPiArCWNkY2xrX3N0YXRlLT52Y28gPSByYXRpbyAqIGNk Y2xrX3N0YXRlLT5yZWY7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGJ4dF9nZXRfY2RjbGsoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IEBAIC0xMjYxLDEyICsxMzM3LDE4IEBA IHN0YXRpYyB2b2lkIGJ4dF9nZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+ICAJdTMyIGRpdmlkZXI7Cj4gIAlpbnQgZGl2Owo+ICAKPiAtCWJ4dF9kZV9wbGxfdXBk YXRlKGRldl9wcml2LCBjZGNsa19zdGF0ZSk7Cj4gLQo+IC0JY2RjbGtfc3RhdGUtPmNkY2xrID0g Y2RjbGtfc3RhdGUtPmJ5cGFzcyA9IGNkY2xrX3N0YXRlLT5yZWY7Cj4gKwlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+PSAxMikKPiArCQljZGNsa19zdGF0ZS0+YnlwYXNzID0gY2RjbGtfc3RhdGUt PnJlZiAvIDI7Cj4gKwllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExKQo+ICsJCWNk Y2xrX3N0YXRlLT5ieXBhc3MgPSA1MDAwMDsKPiArCWVsc2UKPiArCQljZGNsa19zdGF0ZS0+Ynlw YXNzID0gY2RjbGtfc3RhdGUtPnJlZjsKPiAgCj4gLQlpZiAoY2RjbGtfc3RhdGUtPnZjbyA9PSAw KQo+ICsJYnh0X2RlX3BsbF9yZWFkb3V0KGRldl9wcml2LCBjZGNsa19zdGF0ZSk7Cj4gKwlpZiAo Y2RjbGtfc3RhdGUtPnZjbyA9PSAwKSB7Cj4gKwkJY2RjbGtfc3RhdGUtPmNkY2xrID0gY2RjbGtf c3RhdGUtPmJ5cGFzczsKPiAgCQlnb3RvIG91dDsKPiArCX0KPiAgCj4gIAlkaXZpZGVyID0gSTkx NV9SRUFEKENEQ0xLX0NUTCkgJiBCWFRfQ0RDTEtfQ0QyWF9ESVZfU0VMX01BU0s7Cj4gIAo+IEBA IC0xMjc1LDEzICsxMzU3LDE1IEBAIHN0YXRpYyB2b2lkIGJ4dF9nZXRfY2RjbGsoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCWRpdiA9IDI7Cj4gIAkJYnJlYWs7Cj4gIAlj YXNlIEJYVF9DRENMS19DRDJYX0RJVl9TRUxfMV81Ogo+IC0JCVdBUk4oSVNfR0VNSU5JTEFLRShk ZXZfcHJpdiksICJVbnN1cHBvcnRlZCBkaXZpZGVyXG4iKTsKPiArCQlXQVJOKElTX0dFTUlOSUxB S0UoZGV2X3ByaXYpIHx8IElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTAsCj4gKwkJICAgICAiVW5z dXBwb3J0ZWQgZGl2aWRlclxuIik7Cj4gIAkJZGl2ID0gMzsKPiAgCQlicmVhazsKPiAgCWNhc2Ug QlhUX0NEQ0xLX0NEMlhfRElWX1NFTF8yOgo+ICAJCWRpdiA9IDQ7Cj4gIAkJYnJlYWs7Cj4gIAlj YXNlIEJYVF9DRENMS19DRDJYX0RJVl9TRUxfNDoKPiArCQlXQVJOKElOVEVMX0dFTihkZXZfcHJp dikgPj0gMTAsICJVbnN1cHBvcnRlZCBkaXZpZGVyXG4iKTsKPiAgCQlkaXYgPSA4Owo+ICAJCWJy ZWFrOwo+ICAJZGVmYXVsdDoKPiBAQCAtMTI5Niw4ICsxMzgwLDE4IEBAIHN0YXRpYyB2b2lkIGJ4 dF9nZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJICogQ2Fu J3QgcmVhZCB0aGlzIG91dCA6KCBMZXQncyBhc3N1bWUgaXQncwo+ICAJICogYXQgbGVhc3Qgd2hh dCB0aGUgQ0RDTEsgZnJlcXVlbmN5IHJlcXVpcmVzLgo+ICAJICovCj4gLQljZGNsa19zdGF0ZS0+ dm9sdGFnZV9sZXZlbCA9Cj4gLQkJYnh0X2NhbGNfdm9sdGFnZV9sZXZlbChjZGNsa19zdGF0ZS0+ Y2RjbGspOwo+ICsJaWYgKElTX0VMS0hBUlRMQUtFKGRldl9wcml2KSkKPiArCQljZGNsa19zdGF0 ZS0+dm9sdGFnZV9sZXZlbCA9Cj4gKwkJCWVobF9jYWxjX3ZvbHRhZ2VfbGV2ZWwoY2RjbGtfc3Rh dGUtPmNkY2xrKTsKPiArCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTEpCj4gKwkJ Y2RjbGtfc3RhdGUtPnZvbHRhZ2VfbGV2ZWwgPQo+ICsJCQlpY2xfY2FsY192b2x0YWdlX2xldmVs KGNkY2xrX3N0YXRlLT5jZGNsayk7Cj4gKwllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDEwKQo+ICsJCWNkY2xrX3N0YXRlLT52b2x0YWdlX2xldmVsID0KPiArCQkJY25sX2NhbGNfdm9s dGFnZV9sZXZlbChjZGNsa19zdGF0ZS0+Y2RjbGspOwo+ICsJZWxzZQo+ICsJCWNkY2xrX3N0YXRl LT52b2x0YWdlX2xldmVsID0KPiArCQkJYnh0X2NhbGNfdm9sdGFnZV9sZXZlbChjZGNsa19zdGF0 ZS0+Y2RjbGspOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBieHRfZGVfcGxsX2Rpc2FibGUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IEBAIC0xNTE1LDc2ICsxNjA5LDYgQEAg c3RhdGljIGludCBjbmxfY2FsY19jZGNsayhpbnQgbWluX2NkY2xrKQo+ICAJCXJldHVybiAxNjgw MDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyB1OCBjbmxfY2FsY192b2x0YWdlX2xldmVsKGludCBjZGNs aykKPiAtewo+IC0JaWYgKGNkY2xrID4gMzM2MDAwKQo+IC0JCXJldHVybiAyOwo+IC0JZWxzZSBp ZiAoY2RjbGsgPiAxNjgwMDApCj4gLQkJcmV0dXJuIDE7Cj4gLQllbHNlCj4gLQkJcmV0dXJuIDA7 Cj4gLX0KPiAtCj4gLXN0YXRpYyB2b2lkIGNubF9jZGNsa19wbGxfdXBkYXRlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAtCQkJCSBzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUg KmNkY2xrX3N0YXRlKQo+IC17Cj4gLQl1MzIgdmFsOwo+IC0KPiAtCWlmIChJOTE1X1JFQUQoU0tM X0RTU00pICYgQ05MX0RTU01fQ0RDTEtfUExMX1JFRkNMS18yNE1IeikKPiAtCQljZGNsa19zdGF0 ZS0+cmVmID0gMjQwMDA7Cj4gLQllbHNlCj4gLQkJY2RjbGtfc3RhdGUtPnJlZiA9IDE5MjAwOwo+ IC0KPiAtCWNkY2xrX3N0YXRlLT52Y28gPSAwOwo+IC0KPiAtCXZhbCA9IEk5MTVfUkVBRChCWFRf REVfUExMX0VOQUJMRSk7Cj4gLQlpZiAoKHZhbCAmIEJYVF9ERV9QTExfUExMX0VOQUJMRSkgPT0g MCkKPiAtCQlyZXR1cm47Cj4gLQo+IC0JaWYgKFdBUk5fT04oKHZhbCAmIEJYVF9ERV9QTExfTE9D SykgPT0gMCkpCj4gLQkJcmV0dXJuOwo+IC0KPiAtCWNkY2xrX3N0YXRlLT52Y28gPSAodmFsICYg Q05MX0NEQ0xLX1BMTF9SQVRJT19NQVNLKSAqIGNkY2xrX3N0YXRlLT5yZWY7Cj4gLX0KPiAtCj4g LXN0YXRpYyB2b2lkIGNubF9nZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+IC0JCQkgc3RydWN0IGludGVsX2NkY2xrX3N0YXRlICpjZGNsa19zdGF0ZSkKPiAtewo+ IC0JdTMyIGRpdmlkZXI7Cj4gLQlpbnQgZGl2Owo+IC0KPiAtCWNubF9jZGNsa19wbGxfdXBkYXRl KGRldl9wcml2LCBjZGNsa19zdGF0ZSk7Cj4gLQo+IC0JY2RjbGtfc3RhdGUtPmNkY2xrID0gY2Rj bGtfc3RhdGUtPmJ5cGFzcyA9IGNkY2xrX3N0YXRlLT5yZWY7Cj4gLQo+IC0JaWYgKGNkY2xrX3N0 YXRlLT52Y28gPT0gMCkKPiAtCQlnb3RvIG91dDsKPiAtCj4gLQlkaXZpZGVyID0gSTkxNV9SRUFE KENEQ0xLX0NUTCkgJiBCWFRfQ0RDTEtfQ0QyWF9ESVZfU0VMX01BU0s7Cj4gLQo+IC0Jc3dpdGNo IChkaXZpZGVyKSB7Cj4gLQljYXNlIEJYVF9DRENMS19DRDJYX0RJVl9TRUxfMToKPiAtCQlkaXYg PSAyOwo+IC0JCWJyZWFrOwo+IC0JY2FzZSBCWFRfQ0RDTEtfQ0QyWF9ESVZfU0VMXzI6Cj4gLQkJ ZGl2ID0gNDsKPiAtCQlicmVhazsKPiAtCWRlZmF1bHQ6Cj4gLQkJTUlTU0lOR19DQVNFKGRpdmlk ZXIpOwo+IC0JCXJldHVybjsKPiAtCX0KPiAtCj4gLQljZGNsa19zdGF0ZS0+Y2RjbGsgPSBESVZf Uk9VTkRfQ0xPU0VTVChjZGNsa19zdGF0ZS0+dmNvLCBkaXYpOwo+IC0KPiAtIG91dDoKPiAtCS8q Cj4gLQkgKiBDYW4ndCByZWFkIHRoaXMgb3V0IDooIExldCdzIGFzc3VtZSBpdCdzCj4gLQkgKiBh dCBsZWFzdCB3aGF0IHRoZSBDRENMSyBmcmVxdWVuY3kgcmVxdWlyZXMuCj4gLQkgKi8KPiAtCWNk Y2xrX3N0YXRlLT52b2x0YWdlX2xldmVsID0KPiAtCQljbmxfY2FsY192b2x0YWdlX2xldmVsKGNk Y2xrX3N0YXRlLT5jZGNsayk7Cj4gLX0KPiAtCj4gIHN0YXRpYyB2b2lkIGNubF9jZGNsa19wbGxf ZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAgCXUzMiB2 YWw7Cj4gQEAgLTE4MzAsOTEgKzE4NTQsNiBAQCBzdGF0aWMgaW50IGljbF9jYWxjX2NkY2xrX3Bs bF92Y28oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgY2RjbGspCj4gIAly ZXR1cm4gZGV2X3ByaXYtPmNkY2xrLmh3LnJlZiAqIHJhdGlvOwo+ICB9Cj4gIAo+IC1zdGF0aWMg dTggaWNsX2NhbGNfdm9sdGFnZV9sZXZlbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsIGludCBjZGNsaykKPiAtewo+IC0JaWYgKElTX0VMS0hBUlRMQUtFKGRldl9wcml2KSkgewo+ IC0JCWlmIChjZGNsayA+IDMxMjAwMCkKPiAtCQkJcmV0dXJuIDI7Cj4gLQkJZWxzZSBpZiAoY2Rj bGsgPiAxODAwMDApCj4gLQkJCXJldHVybiAxOwo+IC0JCWVsc2UKPiAtCQkJcmV0dXJuIDA7Cj4g LQl9IGVsc2Ugewo+IC0JCWlmIChjZGNsayA+IDU1NjgwMCkKPiAtCQkJcmV0dXJuIDI7Cj4gLQkJ ZWxzZSBpZiAoY2RjbGsgPiAzMTIwMDApCj4gLQkJCXJldHVybiAxOwo+IC0JCWVsc2UKPiAtCQkJ cmV0dXJuIDA7Cj4gLQl9Cj4gLX0KPiAtCj4gLXN0YXRpYyB2b2lkIGljbF9nZXRfY2RjbGsoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IC0JCQkgIHN0cnVjdCBpbnRlbF9jZGNs a19zdGF0ZSAqY2RjbGtfc3RhdGUpCj4gLXsKPiAtCXUzMiB2YWw7Cj4gLQlpbnQgZGl2Owo+IC0K PiAtCXZhbCA9IEk5MTVfUkVBRChTS0xfRFNTTSk7Cj4gLQlzd2l0Y2ggKHZhbCAmIElDTF9EU1NN X0NEQ0xLX1BMTF9SRUZDTEtfTUFTSykgewo+IC0JZGVmYXVsdDoKPiAtCQlNSVNTSU5HX0NBU0Uo dmFsKTsKPiAtCQkvKiBmYWxsIHRocm91Z2ggKi8KPiAtCWNhc2UgSUNMX0RTU01fQ0RDTEtfUExM X1JFRkNMS18yNE1IejoKPiAtCQljZGNsa19zdGF0ZS0+cmVmID0gMjQwMDA7Cj4gLQkJYnJlYWs7 Cj4gLQljYXNlIElDTF9EU1NNX0NEQ0xLX1BMTF9SRUZDTEtfMTlfMk1IejoKPiAtCQljZGNsa19z dGF0ZS0+cmVmID0gMTkyMDA7Cj4gLQkJYnJlYWs7Cj4gLQljYXNlIElDTF9EU1NNX0NEQ0xLX1BM TF9SRUZDTEtfMzhfNE1IejoKPiAtCQljZGNsa19zdGF0ZS0+cmVmID0gMzg0MDA7Cj4gLQkJYnJl YWs7Cj4gLQl9Cj4gLQo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTIpCj4gLQkJY2Rj bGtfc3RhdGUtPmJ5cGFzcyA9IGNkY2xrX3N0YXRlLT5yZWYgLyAyOwo+IC0JZWxzZQo+IC0JCWNk Y2xrX3N0YXRlLT5ieXBhc3MgPSA1MDAwMDsKPiAtCj4gLQl2YWwgPSBJOTE1X1JFQUQoQlhUX0RF X1BMTF9FTkFCTEUpOwo+IC0JaWYgKCh2YWwgJiBCWFRfREVfUExMX1BMTF9FTkFCTEUpID09IDAg fHwKPiAtCSAgICAodmFsICYgQlhUX0RFX1BMTF9MT0NLKSA9PSAwKSB7Cj4gLQkJLyoKPiAtCQkg KiBDRENMSyBQTEwgaXMgZGlzYWJsZWQsIHRoZSBWQ08vcmF0aW8gZG9lc24ndCBtYXR0ZXIsIGJ1 dAo+IC0JCSAqIHNldHRpbmcgaXQgdG8gemVybyBpcyBhIHdheSB0byBzaWduYWwgdGhhdC4KPiAt CQkgKi8KPiAtCQljZGNsa19zdGF0ZS0+dmNvID0gMDsKPiAtCQljZGNsa19zdGF0ZS0+Y2RjbGsg PSBjZGNsa19zdGF0ZS0+YnlwYXNzOwo+IC0JCWdvdG8gb3V0Owo+IC0JfQo+IC0KPiAtCWNkY2xr X3N0YXRlLT52Y28gPSAodmFsICYgQlhUX0RFX1BMTF9SQVRJT19NQVNLKSAqIGNkY2xrX3N0YXRl LT5yZWY7Cj4gLQo+IC0JdmFsID0gSTkxNV9SRUFEKENEQ0xLX0NUTCkgJiBCWFRfQ0RDTEtfQ0Qy WF9ESVZfU0VMX01BU0s7Cj4gLQlzd2l0Y2ggKHZhbCkgewo+IC0JY2FzZSBCWFRfQ0RDTEtfQ0Qy WF9ESVZfU0VMXzE6Cj4gLQkJZGl2ID0gMjsKPiAtCQlicmVhazsKPiAtCWNhc2UgQlhUX0NEQ0xL X0NEMlhfRElWX1NFTF8yOgo+IC0JCWRpdiA9IDQ7Cj4gLQkJYnJlYWs7Cj4gLQlkZWZhdWx0Ogo+ IC0JCU1JU1NJTkdfQ0FTRSh2YWwpOwo+IC0JCWRpdiA9IDI7Cj4gLQkJYnJlYWs7Cj4gLQl9Cj4g LQo+IC0JY2RjbGtfc3RhdGUtPmNkY2xrID0gRElWX1JPVU5EX0NMT1NFU1QoY2RjbGtfc3RhdGUt PnZjbywgZGl2KTsKPiAtCj4gLW91dDoKPiAtCS8qCj4gLQkgKiBDYW4ndCByZWFkIHRoaXMgb3V0 IDooIExldCdzIGFzc3VtZSBpdCdzCj4gLQkgKiBhdCBsZWFzdCB3aGF0IHRoZSBDRENMSyBmcmVx dWVuY3kgcmVxdWlyZXMuCj4gLQkgKi8KPiAtCWNkY2xrX3N0YXRlLT52b2x0YWdlX2xldmVsID0K PiAtCQlpY2xfY2FsY192b2x0YWdlX2xldmVsKGRldl9wcml2LCBjZGNsa19zdGF0ZS0+Y2RjbGsp Owo+IC19Cj4gLQo+ICBzdGF0aWMgdm9pZCBpY2xfaW5pdF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSBzYW5p dGl6ZWRfc3RhdGU7Cj4gQEAgLTE5NDYsOSArMTg4NSwxMiBAQCBzdGF0aWMgdm9pZCBpY2xfaW5p dF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlzYW5pdGl6ZWRf c3RhdGUuY2RjbGsgPSBpY2xfY2FsY19jZGNsaygwLCBzYW5pdGl6ZWRfc3RhdGUucmVmKTsKPiAg CXNhbml0aXplZF9zdGF0ZS52Y28gPSBpY2xfY2FsY19jZGNsa19wbGxfdmNvKGRldl9wcml2LAo+ ICAJCQkJCQkgICAgIHNhbml0aXplZF9zdGF0ZS5jZGNsayk7Cj4gLQlzYW5pdGl6ZWRfc3RhdGUu dm9sdGFnZV9sZXZlbCA9Cj4gLQkJCQlpY2xfY2FsY192b2x0YWdlX2xldmVsKGRldl9wcml2LAo+ IC0JCQkJCQkgICAgICAgc2FuaXRpemVkX3N0YXRlLmNkY2xrKTsKPiArCWlmIChJU19FTEtIQVJU TEFLRShkZXZfcHJpdikpCj4gKwkJc2FuaXRpemVkX3N0YXRlLnZvbHRhZ2VfbGV2ZWwgPQo+ICsJ CQllaGxfY2FsY192b2x0YWdlX2xldmVsKHNhbml0aXplZF9zdGF0ZS5jZGNsayk7Cj4gKwllbHNl Cj4gKwkJc2FuaXRpemVkX3N0YXRlLnZvbHRhZ2VfbGV2ZWwgPQo+ICsJCQlpY2xfY2FsY192b2x0 YWdlX2xldmVsKHNhbml0aXplZF9zdGF0ZS5jZGNsayk7Cj4gIAo+ICAJY25sX3NldF9jZGNsayhk ZXZfcHJpdiwgJnNhbml0aXplZF9zdGF0ZSwgSU5WQUxJRF9QSVBFKTsKPiAgfQo+IEBAIC0xOTU5 LDggKzE5MDEsMTIgQEAgc3RhdGljIHZvaWQgaWNsX3VuaW5pdF9jZGNsayhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAo+ICAJY2RjbGtfc3RhdGUuY2RjbGsgPSBjZGNsa19z dGF0ZS5ieXBhc3M7Cj4gIAljZGNsa19zdGF0ZS52Y28gPSAwOwo+IC0JY2RjbGtfc3RhdGUudm9s dGFnZV9sZXZlbCA9IGljbF9jYWxjX3ZvbHRhZ2VfbGV2ZWwoZGV2X3ByaXYsCj4gLQkJCQkJCQkg ICBjZGNsa19zdGF0ZS5jZGNsayk7Cj4gKwlpZiAoSVNfRUxLSEFSVExBS0UoZGV2X3ByaXYpKQo+ ICsJCWNkY2xrX3N0YXRlLnZvbHRhZ2VfbGV2ZWwgPQo+ICsJCQllaGxfY2FsY192b2x0YWdlX2xl dmVsKGNkY2xrX3N0YXRlLmNkY2xrKTsKPiArCWVsc2UKPiArCQljZGNsa19zdGF0ZS52b2x0YWdl X2xldmVsID0KPiArCQkJaWNsX2NhbGNfdm9sdGFnZV9sZXZlbChjZGNsa19zdGF0ZS5jZGNsayk7 Cj4gIAo+ICAJY25sX3NldF9jZGNsayhkZXZfcHJpdiwgJmNkY2xrX3N0YXRlLCBJTlZBTElEX1BJ UEUpOwo+ICB9Cj4gQEAgLTI1NjEsOSArMjUwNywxNCBAQCBzdGF0aWMgaW50IGljbF9tb2Rlc2V0 X2NhbGNfY2RjbGsoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIAo+ICAJc3Rh dGUtPmNkY2xrLmxvZ2ljYWwudmNvID0gdmNvOwo+ICAJc3RhdGUtPmNkY2xrLmxvZ2ljYWwuY2Rj bGsgPSBjZGNsazsKPiAtCXN0YXRlLT5jZGNsay5sb2dpY2FsLnZvbHRhZ2VfbGV2ZWwgPQo+IC0J CW1heChpY2xfY2FsY192b2x0YWdlX2xldmVsKGRldl9wcml2LCBjZGNsayksCj4gLQkJICAgIGNu bF9jb21wdXRlX21pbl92b2x0YWdlX2xldmVsKHN0YXRlKSk7Cj4gKwlpZiAoSVNfRUxLSEFSVExB S0UoZGV2X3ByaXYpKQo+ICsJCXN0YXRlLT5jZGNsay5sb2dpY2FsLnZvbHRhZ2VfbGV2ZWwgPQo+ ICsJCQltYXgoZWhsX2NhbGNfdm9sdGFnZV9sZXZlbChjZGNsayksCj4gKwkJCSAgICBjbmxfY29t cHV0ZV9taW5fdm9sdGFnZV9sZXZlbChzdGF0ZSkpOwo+ICsJZWxzZQo+ICsJCXN0YXRlLT5jZGNs ay5sb2dpY2FsLnZvbHRhZ2VfbGV2ZWwgPQo+ICsJCQltYXgoaWNsX2NhbGNfdm9sdGFnZV9sZXZl bChjZGNsayksCj4gKwkJCSAgICBjbmxfY29tcHV0ZV9taW5fdm9sdGFnZV9sZXZlbChzdGF0ZSkp Owo+ICAKPiAgCWlmICghc3RhdGUtPmFjdGl2ZV9waXBlcykgewo+ICAJCWNkY2xrID0gaWNsX2Nh bGNfY2RjbGsoc3RhdGUtPmNkY2xrLmZvcmNlX21pbl9jZGNsaywgcmVmKTsKPiBAQCAtMjU3MSw4 ICsyNTIyLDEyIEBAIHN0YXRpYyBpbnQgaWNsX21vZGVzZXRfY2FsY19jZGNsayhzdHJ1Y3QgaW50 ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgCj4gIAkJc3RhdGUtPmNkY2xrLmFjdHVhbC52Y28g PSB2Y287Cj4gIAkJc3RhdGUtPmNkY2xrLmFjdHVhbC5jZGNsayA9IGNkY2xrOwo+IC0JCXN0YXRl LT5jZGNsay5hY3R1YWwudm9sdGFnZV9sZXZlbCA9Cj4gLQkJCWljbF9jYWxjX3ZvbHRhZ2VfbGV2 ZWwoZGV2X3ByaXYsIGNkY2xrKTsKPiArCQlpZiAoSVNfRUxLSEFSVExBS0UoZGV2X3ByaXYpKQo+ ICsJCQlzdGF0ZS0+Y2RjbGsuYWN0dWFsLnZvbHRhZ2VfbGV2ZWwgPQo+ICsJCQkJZWhsX2NhbGNf dm9sdGFnZV9sZXZlbChjZGNsayk7Cj4gKwkJZWxzZQo+ICsJCQlzdGF0ZS0+Y2RjbGsuYWN0dWFs LnZvbHRhZ2VfbGV2ZWwgPQo+ICsJCQkJaWNsX2NhbGNfdm9sdGFnZV9sZXZlbChjZGNsayk7Cj4g IAl9IGVsc2Ugewo+ICAJCXN0YXRlLT5jZGNsay5hY3R1YWwgPSBzdGF0ZS0+Y2RjbGsubG9naWNh bDsKPiAgCX0KPiBAQCAtMjgxOSwxMSArMjc3NCw3IEBAIHZvaWQgaW50ZWxfaW5pdF9jZGNsa19o b29rcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJZGV2X3ByaXYtPmRp c3BsYXkubW9kZXNldF9jYWxjX2NkY2xrID0gdmx2X21vZGVzZXRfY2FsY19jZGNsazsKPiAgCX0K PiAgCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSkKPiAtCQlkZXZfcHJpdi0+ZGlz cGxheS5nZXRfY2RjbGsgPSBpY2xfZ2V0X2NkY2xrOwo+IC0JZWxzZSBpZiAoSVNfQ0FOTk9OTEFL RShkZXZfcHJpdikpCj4gLQkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2NkY2xrID0gY25sX2dldF9j ZGNsazsKPiAtCWVsc2UgaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKQo+ICsJZWxzZSBpZiAoSVNf R0VOOV9MUChkZXZfcHJpdikgfHwgSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCkKPiAgCQlkZXZf cHJpdi0+ZGlzcGxheS5nZXRfY2RjbGsgPSBieHRfZ2V0X2NkY2xrOwo+ICAJZWxzZSBpZiAoSVNf R0VOOV9CQyhkZXZfcHJpdikpCj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2NkY2xrID0gc2ts X2dldF9jZGNsazsKPiAtLSAKPiAyLjIwLjEKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4