From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v2 19/30] xen/dcpi: add a dpci passthrough handler for hardware domain Date: Mon, 3 Oct 2016 09:02:27 +0000 Message-ID: References: <1474991845-27962-1-git-send-email-roger.pau@citrix.com> <1474991845-27962-20-git-send-email-roger.pau@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bqz9X-0006Yq-2L for xen-devel@lists.xenproject.org; Mon, 03 Oct 2016 09:03:15 +0000 In-Reply-To: <1474991845-27962-20-git-send-email-roger.pau@citrix.com> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , "boris.ostrovsky@oracle.com" , Roger Pau Monne , Jan Beulich List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBSb2dlciBQYXUgTW9ubmUgW21h aWx0bzpyb2dlci5wYXVAY2l0cml4LmNvbV0NCj4gU2VudDogMjcgU2VwdGVtYmVyIDIwMTYgMTY6 NTcNCj4gVG86IHhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzoga29ucmFkLndp bGtAb3JhY2xlLmNvbTsgYm9yaXMub3N0cm92c2t5QG9yYWNsZS5jb207IFJvZ2VyIFBhdSBNb25u ZQ0KPiA8cm9nZXIucGF1QGNpdHJpeC5jb20+OyBQYXVsIER1cnJhbnQgPFBhdWwuRHVycmFudEBj aXRyaXguY29tPjsgSmFuDQo+IEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPjsgQW5kcmV3IENv b3Blcg0KPiA8QW5kcmV3LkNvb3BlcjNAY2l0cml4LmNvbT4NCj4gU3ViamVjdDogW1BBVENIIHYy IDE5LzMwXSB4ZW4vZGNwaTogYWRkIGEgZHBjaSBwYXNzdGhyb3VnaCBoYW5kbGVyIGZvcg0KPiBo YXJkd2FyZSBkb21haW4NCj4gDQo+IFRoaXMgaXMgdmVyeSBzaW1pbGFyIHRvIHRoZSBQQ0kgdHJh cCB1c2VkIGZvciB0aGUgdHJhZGl0aW9uYWwgUFYoSCkgRG9tMC4NCj4gDQo+IFNpZ25lZC1vZmYt Ynk6IFJvZ2VyIFBhdSBNb25uw6kgPHJvZ2VyLnBhdUBjaXRyaXguY29tPg0KPiAtLS0NCj4gQ2M6 IFBhdWwgRHVycmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+DQo+IENjOiBKYW4gQmV1bGlj aCA8amJldWxpY2hAc3VzZS5jb20+DQo+IENjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVy M0BjaXRyaXguY29tPg0KPiAtLS0NCj4gIHhlbi9hcmNoL3g4Ni9odm0vaW8uYyAgICAgICAgIHwg NzINCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQ0KPiAgeGVu L2FyY2gveDg2L3RyYXBzLmMgICAgICAgICAgfCAzOSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K PiAgeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvcGNpLmMgfCAzOSArKysrKysrKysrKysrKysrKysr KysrKw0KPiAgeGVuL2luY2x1ZGUveGVuL3BjaS5oICAgICAgICAgfCAgMiArKw0KPiAgNCBmaWxl cyBjaGFuZ2VkLCAxMTIgaW5zZXJ0aW9ucygrKSwgNDAgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9pby5jIGIveGVuL2FyY2gveDg2L2h2bS9pby5jIGlu ZGV4DQo+IDFlN2E1ZjkuLjMxZDU0ZGMgMTAwNjQ0DQo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0v aW8uYw0KPiArKysgYi94ZW4vYXJjaC94ODYvaHZtL2lvLmMNCj4gQEAgLTI0NywxMiArMjQ3LDc5 IEBAIHN0YXRpYyBpbnQgZHBjaV9wb3J0aW9fd3JpdGUoY29uc3Qgc3RydWN0DQo+IGh2bV9pb19o YW5kbGVyICpoYW5kbGVyLA0KPiAgICAgIHJldHVybiBYODZFTVVMX09LQVk7DQo+ICB9DQo+IA0K PiArc3RhdGljIGJvb2xfdCBod19kcGNpX3BvcnRpb19hY2NlcHQoY29uc3Qgc3RydWN0IGh2bV9p b19oYW5kbGVyDQo+ICpoYW5kbGVyLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgaW9yZXFfdCAqcCkgew0KPiArICAgIGlmICggKHAtPmFkZHIgPT0gMHhjZjgg JiYgcC0+c2l6ZSA9PSA0KSB8fCAocC0+YWRkciAmIDB4ZmZmYykgPT0gMHhjZmMpDQo+ICsgICAg ew0KPiArICAgICAgICByZXR1cm4gMTsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICByZXR1cm4gMDsN Cg0KV2h5IG5vdCBqdXN0IHJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGJvb2xlYW4gZXhwcmVzc2lv bj8NCg0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IGh3X2RwY2lfcG9ydGlvX3JlYWQoY29uc3Qg c3RydWN0IGh2bV9pb19oYW5kbGVyICpoYW5kbGVyLA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVpbnQ2NF90IGFkZHIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu dDMyX3Qgc2l6ZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCAqZGF0 YSkgew0KPiArICAgIHN0cnVjdCBkb21haW4gKmN1cnJkID0gY3VycmVudC0+ZG9tYWluOw0KPiAr DQo+ICsgICAgaWYgKCBhZGRyID09IDB4Y2Y4ICkNCj4gKyAgICB7DQo+ICsgICAgICAgIEFTU0VS VChzaXplID09IDQpOw0KPiArICAgICAgICAqZGF0YSA9IGN1cnJkLT5hcmNoLnBjaV9jZjg7DQo+ ICsgICAgICAgIHJldHVybiBYODZFTVVMX09LQVk7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgQVNT RVJUKChhZGRyICYgMHhmZmZjKSA9PSAweGNmYyk7DQoNCllvdSBjb3VsZCBkbyAnYWRkciAmPSAz JyBhbmQgc2ltcGxpZnkgdGhlIGV4cHJlc3Npb25zIGJlbG93Lg0KDQo+ICsgICAgc2l6ZSA9IG1p bihzaXplLCA0IC0gKCh1aW50MzJfdClhZGRyICYgMykpOw0KPiArICAgIGlmICggc2l6ZSA9PSAz ICkNCj4gKyAgICAgICAgc2l6ZSA9IDI7DQo+ICsgICAgaWYgKCBwY2lfY2ZnX29rKGN1cnJkLCBh ZGRyICYgMywgc2l6ZSwgTlVMTCkgKQ0KDQpJcyB0aGlzIHRoZSByaWdodCBwbGFjZSB0byBkbyB0 aGUgY2hlY2suIENhbiB0aGlzIG5vdCBiZSBkb25lIGluIHRoZSBhY2NlcHQgb3A/DQoNCj4gKyAg ICAgICAgKmRhdGEgPSBwY2lfY29uZl9yZWFkKGN1cnJkLT5hcmNoLnBjaV9jZjgsIGFkZHIgJiAz LCBzaXplKTsNCj4gKw0KPiArICAgIHJldHVybiBYODZFTVVMX09LQVk7DQo+ICt9DQo+ICsNCj4g K3N0YXRpYyBpbnQgaHdfZHBjaV9wb3J0aW9fd3JpdGUoY29uc3Qgc3RydWN0IGh2bV9pb19oYW5k bGVyICpoYW5kbGVyLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRf dCBhZGRyLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBzaXpl LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBkYXRhKSB7DQo+ ICsgICAgc3RydWN0IGRvbWFpbiAqY3VycmQgPSBjdXJyZW50LT5kb21haW47DQo+ICsgICAgdWlu dDMyX3QgZGF0YTMyOw0KPiArDQo+ICsgICAgaWYgKCBhZGRyID09IDB4Y2Y4ICkNCj4gKyAgICB7 DQo+ICsgICAgICAgICAgICBBU1NFUlQoc2l6ZSA9PSA0KTsNCj4gKyAgICAgICAgICAgIGN1cnJk LT5hcmNoLnBjaV9jZjggPSBkYXRhOw0KPiArICAgICAgICAgICAgcmV0dXJuIFg4NkVNVUxfT0tB WTsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICBBU1NFUlQoKGFkZHIgJiAweGZmZmMpID09IDB4Y2Zj KTsNCg0KJ2FkZHIgJj0gMycgYWdhaW4gaGVyZS4NCg0KICBQYXVsDQoNCj4gKyAgICBzaXplID0g bWluKHNpemUsIDQgLSAoKHVpbnQzMl90KWFkZHIgJiAzKSk7DQo+ICsgICAgaWYgKCBzaXplID09 IDMgKQ0KPiArICAgICAgICBzaXplID0gMjsNCj4gKyAgICBkYXRhMzIgPSBkYXRhOw0KPiArICAg IGlmICggcGNpX2NmZ19vayhjdXJyZCwgYWRkciAmIDMsIHNpemUsICZkYXRhMzIpICkNCj4gKyAg ICAgICAgcGNpX2NvbmZfd3JpdGUoY3VycmQtPmFyY2gucGNpX2NmOCwgYWRkciAmIDMsIHNpemUs IGRhdGEpOw0KPiArDQo+ICsgICAgcmV0dXJuIFg4NkVNVUxfT0tBWTsNCj4gK30NCj4gKw0KPiAg c3RhdGljIGNvbnN0IHN0cnVjdCBodm1faW9fb3BzIGRwY2lfcG9ydGlvX29wcyA9IHsNCj4gICAg ICAuYWNjZXB0ID0gZHBjaV9wb3J0aW9fYWNjZXB0LA0KPiAgICAgIC5yZWFkID0gZHBjaV9wb3J0 aW9fcmVhZCwNCj4gICAgICAud3JpdGUgPSBkcGNpX3BvcnRpb193cml0ZQ0KPiAgfTsNCj4gDQo+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IGh2bV9pb19vcHMgaHdfZHBjaV9wb3J0aW9fb3BzID0gew0K PiArICAgIC5hY2NlcHQgPSBod19kcGNpX3BvcnRpb19hY2NlcHQsDQo+ICsgICAgLnJlYWQgPSBo d19kcGNpX3BvcnRpb19yZWFkLA0KPiArICAgIC53cml0ZSA9IGh3X2RwY2lfcG9ydGlvX3dyaXRl DQo+ICt9Ow0KPiArDQo+ICB2b2lkIHJlZ2lzdGVyX2RwY2lfcG9ydGlvX2hhbmRsZXIoc3RydWN0 IGRvbWFpbiAqZCkgIHsNCj4gICAgICBzdHJ1Y3QgaHZtX2lvX2hhbmRsZXIgKmhhbmRsZXIgPSBo dm1fbmV4dF9pb19oYW5kbGVyKGQpOyBAQCAtMjYxLDcNCj4gKzMyOCwxMCBAQCB2b2lkIHJlZ2lz dGVyX2RwY2lfcG9ydGlvX2hhbmRsZXIoc3RydWN0IGRvbWFpbiAqZCkNCj4gICAgICAgICAgcmV0 dXJuOw0KPiANCj4gICAgICBoYW5kbGVyLT50eXBlID0gSU9SRVFfVFlQRV9QSU87DQo+IC0gICAg aGFuZGxlci0+b3BzID0gJmRwY2lfcG9ydGlvX29wczsNCj4gKyAgICBpZiAoIGlzX2hhcmR3YXJl X2RvbWFpbihkKSApDQo+ICsgICAgICAgIGhhbmRsZXItPm9wcyA9ICZod19kcGNpX3BvcnRpb19v cHM7DQo+ICsgICAgZWxzZQ0KPiArICAgICAgICBoYW5kbGVyLT5vcHMgPSAmZHBjaV9wb3J0aW9f b3BzOw0KPiAgfQ0KPiANCj4gIC8qDQo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvdHJhcHMu YyBiL3hlbi9hcmNoL3g4Ni90cmFwcy5jIGluZGV4DQo+IDI0ZDE3M2YuLmYzYzVjOWUgMTAwNjQ0 DQo+IC0tLSBhL3hlbi9hcmNoL3g4Ni90cmFwcy5jDQo+ICsrKyBiL3hlbi9hcmNoL3g4Ni90cmFw cy5jDQo+IEBAIC0yMDc2LDQ1ICsyMDc2LDYgQEAgc3RhdGljIGJvb2xfdCBhZG1pbl9pb19va2F5 KHVuc2lnbmVkIGludCBwb3J0LA0KPiB1bnNpZ25lZCBpbnQgYnl0ZXMsDQo+ICAgICAgcmV0dXJu IGlvcG9ydHNfYWNjZXNzX3Blcm1pdHRlZChkLCBwb3J0LCBwb3J0ICsgYnl0ZXMgLSAxKTsgIH0N Cj4gDQo+IC1zdGF0aWMgYm9vbF90IHBjaV9jZmdfb2soc3RydWN0IGRvbWFpbiAqY3VycmQsIHVu c2lnbmVkIGludCBzdGFydCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp bnQgc2l6ZSwgdWludDMyX3QgKndyaXRlKQ0KPiAtew0KPiAtICAgIHVpbnQzMl90IG1hY2hpbmVf YmRmOw0KPiAtDQo+IC0gICAgaWYgKCAhaXNfaGFyZHdhcmVfZG9tYWluKGN1cnJkKSApDQo+IC0g ICAgICAgIHJldHVybiAwOw0KPiAtDQo+IC0gICAgaWYgKCAhQ0Y4X0VOQUJMRUQoY3VycmQtPmFy Y2gucGNpX2NmOCkgKQ0KPiAtICAgICAgICByZXR1cm4gMTsNCj4gLQ0KPiAtICAgIG1hY2hpbmVf YmRmID0gQ0Y4X0JERihjdXJyZC0+YXJjaC5wY2lfY2Y4KTsNCj4gLSAgICBpZiAoIHdyaXRlICkN Cj4gLSAgICB7DQo+IC0gICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgKnJvX21hcCA9IHBjaV9n ZXRfcm9fbWFwKDApOw0KPiAtDQo+IC0gICAgICAgIGlmICggcm9fbWFwICYmIHRlc3RfYml0KG1h Y2hpbmVfYmRmLCByb19tYXApICkNCj4gLSAgICAgICAgICAgIHJldHVybiAwOw0KPiAtICAgIH0N Cj4gLSAgICBzdGFydCB8PSBDRjhfQUREUl9MTyhjdXJyZC0+YXJjaC5wY2lfY2Y4KTsNCj4gLSAg ICAvKiBBTUQgZXh0ZW5kZWQgY29uZmlndXJhdGlvbiBzcGFjZSBhY2Nlc3M/ICovDQo+IC0gICAg aWYgKCBDRjhfQUREUl9ISShjdXJyZC0+YXJjaC5wY2lfY2Y4KSAmJg0KPiAtICAgICAgICAgYm9v dF9jcHVfZGF0YS54ODZfdmVuZG9yID09IFg4Nl9WRU5ET1JfQU1EICYmDQo+IC0gICAgICAgICBi b290X2NwdV9kYXRhLng4NiA+PSAweDEwICYmIGJvb3RfY3B1X2RhdGEueDg2IDw9IDB4MTcgKQ0K PiAtICAgIHsNCj4gLSAgICAgICAgdWludDY0X3QgbXNyX3ZhbDsNCj4gLQ0KPiAtICAgICAgICBp ZiAoIHJkbXNyX3NhZmUoTVNSX0FNRDY0X05CX0NGRywgbXNyX3ZhbCkgKQ0KPiAtICAgICAgICAg ICAgcmV0dXJuIDA7DQo+IC0gICAgICAgIGlmICggbXNyX3ZhbCAmICgxVUxMIDw8IEFNRDY0X05C X0NGR19DRjhfRVhUX0VOQUJMRV9CSVQpICkNCj4gLSAgICAgICAgICAgIHN0YXJ0IHw9IENGOF9B RERSX0hJKGN1cnJkLT5hcmNoLnBjaV9jZjgpOw0KPiAtICAgIH0NCj4gLQ0KPiAtICAgIHJldHVy biAhd3JpdGUgPw0KPiAtICAgICAgICAgICB4c21fcGNpX2NvbmZpZ19wZXJtaXNzaW9uKFhTTV9I T09LLCBjdXJyZCwgbWFjaGluZV9iZGYsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RhcnQsIHN0YXJ0ICsgc2l6ZSAtIDEsIDApID09IDAgOg0KPiAtICAgICAgICAg ICBwY2lfY29uZl93cml0ZV9pbnRlcmNlcHQoMCwgbWFjaGluZV9iZGYsIHN0YXJ0LCBzaXplLCB3 cml0ZSkgPj0gMDsNCj4gLX0NCj4gLQ0KPiAgdWludDMyX3QgZ3Vlc3RfaW9fcmVhZCh1bnNpZ25l ZCBpbnQgcG9ydCwgdW5zaWduZWQgaW50IGJ5dGVzLA0KPiAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgZG9tYWluICpjdXJyZCkgIHsgZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0 aHJvdWdoL3BjaS5jDQo+IGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvcGNpLmMgaW5kZXggZGQy OTFhMi4uYTUzYjRjOCAxMDA2NDQNCj4gLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvcGNp LmMNCj4gKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvcGNpLmMNCj4gQEAgLTk2Niw2ICs5 NjYsNDUgQEAgdm9pZCBwY2lfY2hlY2tfZGlzYWJsZV9kZXZpY2UodTE2IHNlZywgdTggYnVzLCB1 OA0KPiBkZXZmbikNCj4gICAgICAgICAgICAgICAgICAgICAgIFBDSV9DT01NQU5ELCBjd29yZCAm IH5QQ0lfQ09NTUFORF9NQVNURVIpOyAgfQ0KPiANCj4gK2Jvb2xfdCBwY2lfY2ZnX29rKHN0cnVj dCBkb21haW4gKmN1cnJkLCB1bnNpZ25lZCBpbnQgc3RhcnQsDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgaW50IHNpemUsIHVpbnQzMl90ICp3cml0ZSkgew0KPiArICAgIHVp bnQzMl90IG1hY2hpbmVfYmRmOw0KPiArDQo+ICsgICAgaWYgKCAhaXNfaGFyZHdhcmVfZG9tYWlu KGN1cnJkKSApDQo+ICsgICAgICAgIHJldHVybiAwOw0KPiArDQo+ICsgICAgaWYgKCAhQ0Y4X0VO QUJMRUQoY3VycmQtPmFyY2gucGNpX2NmOCkgKQ0KPiArICAgICAgICByZXR1cm4gMTsNCj4gKw0K PiArICAgIG1hY2hpbmVfYmRmID0gQ0Y4X0JERihjdXJyZC0+YXJjaC5wY2lfY2Y4KTsNCj4gKyAg ICBpZiAoIHdyaXRlICkNCj4gKyAgICB7DQo+ICsgICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcg KnJvX21hcCA9IHBjaV9nZXRfcm9fbWFwKDApOw0KPiArDQo+ICsgICAgICAgIGlmICggcm9fbWFw ICYmIHRlc3RfYml0KG1hY2hpbmVfYmRmLCByb19tYXApICkNCj4gKyAgICAgICAgICAgIHJldHVy biAwOw0KPiArICAgIH0NCj4gKyAgICBzdGFydCB8PSBDRjhfQUREUl9MTyhjdXJyZC0+YXJjaC5w Y2lfY2Y4KTsNCj4gKyAgICAvKiBBTUQgZXh0ZW5kZWQgY29uZmlndXJhdGlvbiBzcGFjZSBhY2Nl c3M/ICovDQo+ICsgICAgaWYgKCBDRjhfQUREUl9ISShjdXJyZC0+YXJjaC5wY2lfY2Y4KSAmJg0K PiArICAgICAgICAgYm9vdF9jcHVfZGF0YS54ODZfdmVuZG9yID09IFg4Nl9WRU5ET1JfQU1EICYm DQo+ICsgICAgICAgICBib290X2NwdV9kYXRhLng4NiA+PSAweDEwICYmIGJvb3RfY3B1X2RhdGEu eDg2IDw9IDB4MTcgKQ0KPiArICAgIHsNCj4gKyAgICAgICAgdWludDY0X3QgbXNyX3ZhbDsNCj4g Kw0KPiArICAgICAgICBpZiAoIHJkbXNyX3NhZmUoTVNSX0FNRDY0X05CX0NGRywgbXNyX3ZhbCkg KQ0KPiArICAgICAgICAgICAgcmV0dXJuIDA7DQo+ICsgICAgICAgIGlmICggbXNyX3ZhbCAmICgx VUxMIDw8IEFNRDY0X05CX0NGR19DRjhfRVhUX0VOQUJMRV9CSVQpICkNCj4gKyAgICAgICAgICAg IHN0YXJ0IHw9IENGOF9BRERSX0hJKGN1cnJkLT5hcmNoLnBjaV9jZjgpOw0KPiArICAgIH0NCj4g Kw0KPiArICAgIHJldHVybiAhd3JpdGUgPw0KPiArICAgICAgICAgICB4c21fcGNpX2NvbmZpZ19w ZXJtaXNzaW9uKFhTTV9IT09LLCBjdXJyZCwgbWFjaGluZV9iZGYsDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsIHN0YXJ0ICsgc2l6ZSAtIDEsIDApID09IDAg Og0KPiArICAgICAgICAgICBwY2lfY29uZl93cml0ZV9pbnRlcmNlcHQoMCwgbWFjaGluZV9iZGYs IHN0YXJ0LCBzaXplLCB3cml0ZSkNCj4gKz49IDA7IH0NCj4gKw0KPiAgLyoNCj4gICAqIHNjYW4g cGNpIGRldmljZXMgdG8gYWRkIGFsbCBleGlzdGVkIFBDSSBkZXZpY2VzIHRvIGFsbGRldnNfbGlz dCwNCj4gICAqIGFuZCBzZXR1cCBwY2kgaGllcmFyY2h5IGluIGFycmF5IGJ1czJicmlkZ2UuDQo+ IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vcGNpLmggYi94ZW4vaW5jbHVkZS94ZW4vcGNp LmggaW5kZXgNCj4gMDg3MjQwMS4uZjE5MTc3MyAxMDA2NDQNCj4gLS0tIGEveGVuL2luY2x1ZGUv eGVuL3BjaS5oDQo+ICsrKyBiL3hlbi9pbmNsdWRlL3hlbi9wY2kuaA0KPiBAQCAtMTYyLDYgKzE2 Miw4IEBAIGNvbnN0IGNoYXIgKnBhcnNlX3BjaShjb25zdCBjaGFyICosIHVuc2lnbmVkIGludCAq c2VnLA0KPiB1bnNpZ25lZCBpbnQgKmJ1cywNCj4gDQo+ICBib29sX3QgcGNpZV9hZXJfZ2V0X2Zp cm13YXJlX2ZpcnN0KGNvbnN0IHN0cnVjdCBwY2lfZGV2ICopOw0KPiANCj4gK2Jvb2xfdCBwY2lf Y2ZnX29rKHN0cnVjdCBkb21haW4gKiwgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQsIHVpbnQz Ml90DQo+ICsqKTsNCj4gKw0KPiAgc3RydWN0IHBpcnE7DQo+ICBpbnQgbXNpeHRibF9wdF9yZWdp c3RlcihzdHJ1Y3QgZG9tYWluICosIHN0cnVjdCBwaXJxICosIHVpbnQ2NF90IGd0YWJsZSk7ICB2 b2lkDQo+IG1zaXh0YmxfcHRfdW5yZWdpc3RlcihzdHJ1Y3QgZG9tYWluICosIHN0cnVjdCBwaXJx ICopOw0KPiAtLQ0KPiAyLjcuNCAoQXBwbGUgR2l0LTY2KQ0KDQpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK