From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Michael S. Tsirkin" Subject: Re: [RFC] virtio-mmio: Update the device to OASIS spec version Date: Thu, 15 Jan 2015 20:17:43 +0200 Message-ID: <20150115181743.GA30911@redhat.com> References: <1419014284-18500-1-git-send-email-pawel.moll@arm.com> <20150115165101.GA29808@redhat.com> <1421343158.4601.7.camel@arm.com> <20150115175132.GA30453@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20150115175132.GA30453@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: virtualization-bounces@lists.linux-foundation.org Errors-To: virtualization-bounces@lists.linux-foundation.org To: Pawel Moll Cc: "virtualization@lists.linux-foundation.org" List-Id: virtualization@lists.linuxfoundation.org T24gVGh1LCBKYW4gMTUsIDIwMTUgYXQgMDc6NTE6MzJQTSArMDIwMCwgTWljaGFlbCBTLiBUc2ly a2luIHdyb3RlOgo+IE9uIFRodSwgSmFuIDE1LCAyMDE1IGF0IDA1OjMyOjM4UE0gKzAwMDAsIFBh d2VsIE1vbGwgd3JvdGU6Cj4gPiBPbiBUaHUsIDIwMTUtMDEtMTUgYXQgMTY6NTEgKzAwMDAsIE1p Y2hhZWwgUy4gVHNpcmtpbiB3cm90ZToKPiA+ID4gPiArICAgICAgICAgICAgIHVpbnQ2NF90IGFk ZHIgPSB2aXJ0X3RvX3BoeXMoaW5mby0+cXVldWUpOwo+ID4gPiAKPiA+ID4gS2VybmVsIG5vcm1h bGx5IHVzZXMgdTY0IGZvciB0aGlzIHR5cGUuCj4gPiAKPiA+IFN1cmUsIHdlbGwgc3BvdHRlZC4K PiA+IAo+ID4gPiA+ICsKPiA+ID4gPiArICAgICAgICAgICAgIHdyaXRlbChhZGRyICYgMHhmZmZm ZmZmZiwKPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bV9kZXYtPmJhc2Ug KyBWSVJUSU9fTU1JT19RVUVVRV9ERVNDX0xPVyk7Cj4gPiA+ID4gKyAgICAgICAgICAgICB3cml0 ZWwoKGFkZHIgPj4gMzIpICYgMHhmZmZmZmZmZiwKPiA+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB2bV9kZXYtPmJhc2UgKyBWSVJUSU9fTU1JT19RVUVVRV9ERVNDX0hJR0gpOwo+ ID4gPiA+ICsKPiA+ID4gPiArICAgICAgICAgICAgIGFkZHIgKz0gaW5mby0+bnVtICogc2l6ZW9m KHN0cnVjdCB2cmluZ19kZXNjKTsKPiA+ID4gPiArICAgICAgICAgICAgIHdyaXRlbChhZGRyICYg MHhmZmZmZmZmZiwKPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bV9kZXYt PmJhc2UgKyBWSVJUSU9fTU1JT19RVUVVRV9BVkFJTF9MT1cpOwo+ID4gPiA+ICsgICAgICAgICAg ICAgd3JpdGVsKChhZGRyID4+IDMyKSAmIDB4ZmZmZmZmZmYsCj4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdm1fZGV2LT5iYXNlICsgVklSVElPX01NSU9fUVVFVUVfQVZBSUxf SElHSCk7Cj4gPiA+IAo+ID4gPiAweGZmZmZmZmZmIGlzbid0IHJlYWxseSBuZWVkZWQsIGlzIGl0 Pwo+ID4gCj4gPiBJIGFkbWl0IEknbSBuZXZlciBzdXJlIHdoYXQgYXJlIHRoZSBuYXJyb3dpbmcg c2lkZSBlZmZlY3RzLiBZb3UgYXJlCj4gPiBwcm9iYWJseSByaWdodCB0aGF0IHU2NCA+PiAzMiB3 aWxsIGJlIGFsd2F5cyAzMiBiaXQuCj4gPiAKPiA+ID4gPiArCj4gPiA+ID4gKyAgICAgICAgICAg ICBhZGRyICs9IHNpemVvZihzdHJ1Y3QgdnJpbmdfYXZhaWwpICsgaW5mby0+bnVtICogc2l6ZW9m KF9fdTE2KTsKPiA+ID4gPiArICAgICAgICAgICAgIGFkZHIgKz0gVklSVElPX01NSU9fVlJJTkdf QUxJR04gLSAxOwo+ID4gPiA+ICsgICAgICAgICAgICAgYWRkciAmPSB+KFZJUlRJT19NTUlPX1ZS SU5HX0FMSUdOIC0gMSk7Cj4gPiA+IAo+ID4gPiAKPiA+ID4gSG9zdCBubyBsb25nZXIga25vd3Mg dGhlIGFsaWdubWVudCwgc28gd2h5IGlzIGl0IG5lZWRlZD8KPiA+IAo+ID4gW3NraXBwZWQgdGhl IHNwZWMgcmVmZXJlbmNlLCBpdCdzIGEgc2VwYXJhdGUgZGlzY3Vzc2lvbl0KPiA+IAo+ID4gPiBJ IHRoaW5rIHlvdSBzaG91bGRuJ3QgdXNlIFZJUlRJT19NTUlPX1ZSSU5HX0FMSUdOIGluIG5vbi1s ZWdhY3kgY29kZToKPiA+ID4gaXQncyBhIGxlZ2FjeSB0aGluZy4KPiA+IAo+ID4gQnV0IEkgc3Rp bGwgbmVlZCB0byBwYXNzIHNvbWV0aGluZyB0byB2cmluZ19uZXdfdmlydHF1ZXVlKCkgYmVsb3cs IGRvbid0Cj4gPiBJPyBBbmQgaXQgd2lsbCBhbGxvY2F0ZSB0aGUgcXVldWUgYmFzZWQgb24gc29t ZSBhbGlnbm1lbnQgdmFsdWUuIEkgY2FuJ3QKPiA+IHNlZSBhbnl0aGluZyB0aGF0IHdvdWxkIGNy ZWF0ZSB0aGUgbGF5b3V0IGZvciBtZSwgbmVpdGhlciBpbiBtYWlubGluZQo+ID4gbm9yIGluIG5l eHQuIEhhdmUgSSBtaXNzZWQgc29tZXRoaW5nPyAod291bGRuJ3QgYmUgc3VycHJpc2VkIGlmIEkg aGF2ZSkKPiAKPiBObywgYnV0IGl0J3Mgbm8gbG9uZ2VyIGEgdmlydGlvIHRoaW5nIC0ganVzdCBh biBvcHRpbWl6YXRpb24KPiBjaG9pY2UgYnkgYSBzcGVjaWZpYyBkcml2ZXIuIFNvIHBsZWFzZSBq dXN0IHN0aWNrIGUuZy4gUEFHRV9TSVpFIHRoZXJlLgo+IEFuZCBtYXliZSBhZGQgYSBUT0RPIGl0 ZW0gLSB3ZSBjYW4gb3B0aW1pemUgYnkgYWxsb2NhdGluZyBjaHVua3MKPiBzZXBhcmF0ZWx5Lgo+ IAo+ID4gPiA+ICsgICAgICAgICAgICAgd3JpdGVsKGFkZHIgJiAweGZmZmZmZmZmLAo+ID4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZtX2Rldi0+YmFzZSArIFZJUlRJT19NTUlP X1FVRVVFX1VTRURfTE9XKTsKPiA+ID4gPiArICAgICAgICAgICAgIHdyaXRlbCgoYWRkciA+PiAz MikgJiAweGZmZmZmZmZmLAo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZt X2Rldi0+YmFzZSArIFZJUlRJT19NTUlPX1FVRVVFX1VTRURfSElHSCk7Cj4gPiA+ID4gKwo+ID4g PiA+ICsgICAgICAgICAgICAgd3JpdGVsKDEsIHZtX2Rldi0+YmFzZSArIFZJUlRJT19NTUlPX1FV RVVFX1JFQURZKTsKPiA+ID4gPiArICAgICB9Cj4gPiA+ID4KPiA+ID4gPiAgICAgICAvKiBDcmVh dGUgdGhlIHZyaW5nICovCj4gPiA+ID4gICAgICAgdnEgPSB2cmluZ19uZXdfdmlydHF1ZXVlKGlu ZGV4LCBpbmZvLT5udW0sIFZJUlRJT19NTUlPX1ZSSU5HX0FMSUdOLCB2ZGV2LAo+ID4gCj4gPiBb Li4uXQo+ID4gCj4gPiA+ID4gK3N0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSB2bV9kZXZf YXR0cl92ZXJzaW9uID0KPiA+ID4gPiArICAgICAgICAgICAgIF9fQVRUUih2ZXJzaW9uLCBTX0lS VUdPLCB2bV9kZXZfYXR0cl92ZXJzaW9uX3Nob3csIE5VTEwpOwo+ID4gPiA+ICsKPiA+ID4gPiAg c3RhdGljIGludCB2aXJ0aW9fbW1pb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2 KQo+ID4gPiA+ICB7Cj4gPiA+ID4gICAgICAgc3RydWN0IHZpcnRpb19tbWlvX2RldmljZSAqdm1f ZGV2Owo+ID4gPiAKPiA+ID4gV2UgYWxyZWFkeSBleHBvc2UgZmVhdHVyZSBiaXRzIC0gdGhpcyBv bmUgcmVhbGx5IG5lY2Vzc2FyeT8KPiA+IAo+ID4gTmVjZXNzYXJ5PyBPZiBjb3Vyc2Ugbm90LCBq dXN0IGEgZGVidWdnaW5nIGZlYXR1cmUsIHJlYWxseSwgdG8gc2VlIHdoYXQKPiA+IHZlcnNpb24g b2YgY29udHJvbCByZWdpc3RlcnMgYXJlIGF2YWlsYWJsZS4gVXNlZnVsIC0gSSBzdHJvbmdseSBi ZWxpZXZlCj4gPiBzby4KPiAKPiBZZXMgYnV0IHRoZSBwb2ludCBpcyB0aGUgc2FtZSBpbmZvIGlz IGFscmVhZHkgYXZhaWxhYmxlCj4gaW4gY29yZToganVzdCBsb29rIGF0IGZlYXR1cmUgYml0IDMx Lgo+IElmIHlvdSB0aGluayBpdCdzIGltcG9ydGFudCBlbm91Z2ggdG8gZXhwb3NlIGluIGEgZGVj b2RlZAo+IHdheSwgbGV0J3MgYWRkIHRoaXMgaW4gY29yZT8KPiAKPiA+ID4gPiBAQCAtNDc2LDE2 ICs1MDEsMjYgQEAgc3RhdGljIGludCB2aXJ0aW9fbW1pb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpwZGV2KQo+ID4gPiA+Cj4gPiA+ID4gICAgICAgLyogQ2hlY2sgZGV2aWNlIHZlcnNp b24gKi8KPiA+ID4gPiAgICAgICB2bV9kZXYtPnZlcnNpb24gPSByZWFkbCh2bV9kZXYtPmJhc2Ug KyBWSVJUSU9fTU1JT19WRVJTSU9OKTsKPiA+ID4gPiAtICAgICBpZiAodm1fZGV2LT52ZXJzaW9u ICE9IDEpIHsKPiA+ID4gPiArICAgICBpZiAodm1fZGV2LT52ZXJzaW9uIDwgMSB8fCB2bV9kZXYt PnZlcnNpb24gPiAyKSB7Cj4gPiA+ID4gICAgICAgICAgICAgICBkZXZfZXJyKCZwZGV2LT5kZXYs ICJWZXJzaW9uICVsZCBub3Qgc3VwcG9ydGVkIVxuIiwKPiA+ID4gPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB2bV9kZXYtPnZlcnNpb24pOwo+ID4gPiA+ICAgICAgICAgICAgICAgcmV0 dXJuIC1FTlhJTzsKPiA+ID4gPiAgICAgICB9Cj4gPiA+ID4KPiA+ID4gPiAgICAgICB2bV9kZXYt PnZkZXYuaWQuZGV2aWNlID0gcmVhZGwodm1fZGV2LT5iYXNlICsgVklSVElPX01NSU9fREVWSUNF X0lEKTsKPiA+ID4gPiArICAgICBpZiAodm1fZGV2LT52ZGV2LmlkLmRldmljZSA9PSAwKSB7Cj4g PiA+ID4gKyAgICAgICAgICAgICAvKgo+ID4gPiA+ICsgICAgICAgICAgICAgICogSUQgMCBtZWFu cyBhIGR1bW15IChwbGFjZWhvbGRlcikgZGV2aWNlLCBza2lwIHF1aWV0bHkKPiA+ID4gPiArICAg ICAgICAgICAgICAqIChhcyBpbjogbm8gZXJyb3IpIHdpdGggbm8gZnVydGhlciBhY3Rpb25zCj4g PiA+ID4gKyAgICAgICAgICAgICAgKi8KPiA+ID4gPiArICAgICAgICAgICAgIHJldHVybiAwOwo+ ID4gPiAKPiA+ID4gTmVjZXNzYXJ5Pwo+ID4gPiBXZSBkb24ndCBoYXZlIGRyaXZlcnMgZm9yIHRo aXMgaWQgYW55d2F5Lgo+ID4gCj4gPiBJJ20gbm90IHN1cmUgaWYgeW91IGFyZSBqb2tpbmcgb3Ig bm90LCBhZnRlciB0aGUgYmF0dGxlIHdlIGZvdWdodCBvdmVyCj4gPiBpdC4KPiAKPiBTb3JyeSwg SSBkb24ndCByZW1lbWJlciBhbnltb3JlLiBKdXN0IGFza2luZy4KPiAKPiA+IFRoZSBzaG9ydCBh bnN3ZXIgaXM6IHllcy4gTmVjZXNzYXJ5Lgo+ID4gCj4gPiAiNC4yLjIgTU1JTyBEZXZpY2UgUmVn aXN0ZXIgTGF5b3V0Cj4gPiAKPiA+IFsuLi5dCj4gPiAKPiA+IFZpcnRpbyBTdWJzeXN0ZW0gRGV2 aWNlIElECj4gPiBTZWUgNSBEZXZpY2UgVHlwZXMgZm9yIHBvc3NpYmxlIHZhbHVlcy4gVmFsdWUg emVybyAoMHgwKSBpcyB1c2VkIHRvIGRlLQo+ID4gZmluZSBhIHN5c3RlbSBtZW1vcnkgbWFwIHdp dGggcGxhY2Vob2xkZXIgZGV2aWNlcyBhdCBzdGF0aWMsIHdlbGwga25vd24KPiA+IGFkZHJlc3Nl cywgYXNzaWduaW5nIGZ1bmN0aW9ucyB0byB0aGVtIGRlcGVuZGluZyBvbiB1c2Vy4oCZcyBuZWVk cy4KPiA+IAo+ID4gWy4uLl0KPiA+IAo+ID4gNC4yLjIuMiBEcml2ZXIgUmVxdWlyZW1lbnRzOiBN TUlPIERldmljZSBSZWdpc3RlciBMYXlvdXQKPiA+IAo+ID4gVGhlIGRyaXZlciBNVVNUIGlnbm9y ZSBhIGRldmljZSB3aXRoIERldmljZUlEIDB4MCwgYnV0IE1VU1QgTk9UIHJlcG9ydAo+ID4gYW55 IGVycm9yLiIKPiAKPiAKPiBBYnNvbHV0ZWx5LiBTbyB3aGF0IGhhcHBlbnMgaWYgeW91IGRyb3Ag dGhlc2UgY29kZSBsaW5lcz8KPiBUaGVyZSdzIG5vIGRyaXZlciByZWdpc3RlcmVkIGZvciB0aGlz IElELCBzbyBpdCdzIGp1c3QgaWdub3JlZC4KPiBTZWVtcyBsaWtlIHdoYXQgc3BlYyBpcyBhc2tp bmcgZm9yLCBubz8KPiAKPiA+ID4gPiArICAgICB9Cj4gPiA+IAo+ID4gPiBOZWVkIHRvIGFsc28K PiA+ID4gICAgICAgICAxLiB2YWxpZGF0ZSB0aGF0IGZlYXR1cmUgYml0IFZJUlRJT18xIGlzIHNl dAo+ID4gPiAgICAgICAgIDIuIHZhbGlkYXRlIHRoYXQgSUQgaXMgbm90IGZvciBhIGxlZ2FjeSBk ZXZpY2UKPiA+ID4gCj4gPiA+IG90aGVyd2lzZSBkZXZpY2Ugc3BlY2lmaWMgZHJpdmVycyBtaWdo dCBnZXQgaW52b2tlZAo+ID4gPiBvbiBmdXR1cmUgZGV2aWNlcyAoZS5nLiB3aGVuIHdlIHVwZGF0 ZSBiYWxsb29uIGZvciAxLjApCj4gPiA+IGFuZCB0aGV5IG5vdCBkbyB0aGUgcmlnaHQgdGhpbmcu Cj4gPiAKPiA+IEknbSBub3QgZm9sbG93aW5nIHlvdSwgYnV0IEkgYWRtaXQgSSBoYXZlbid0IHRo b3VnaCB0aGlzIHByb2JsZW0KPiA+IHRob3JvdWdobHkuIElmIHlvdSBjYW4gdm9sdW50ZWVyIGFu IGV4YW1wbGUgb2YgdGhpbmdzIGdvaW5nIG9uLCBpdCB3b3VsZAo+ID4gYmUgdXNlZnVsLiBFaXRo ZXIgd2F5LCBJJ2xsIHRoaW5rIGFib3V0IGl0IGFnYWluLgo+IAo+IDEuIHlvdSBuZWVkIHRvIGNo ZWNrIElEIDAsIGFuZCBhc3N1bWUgcmV2IDAuIElmIGRldmljZSBhbHNvCj4gICAgc2F5cyBpdCBu ZWVkcyByZXYgMSwgZmFpbC4gRS5nLiBzZWUgbXkgcGF0Y2ggZm9yIHZpcnRpb19wY2lfbW9kZXJu Ogo+ICAgICAgICAgaWYgKHZpcnRpb19kZXZpY2VfaXNfbGVnYWN5X29ubHkodnBfZGV2LT52ZGV2 LmlkKSkKPiAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9ERVY7Cj4gCj4gICAgeW91IGNhbiBm aW5kIHRoZSBjb2RlIGluIG15IHRyZWUsIHNlZSBiZWxvdy4KPiAKPiAKPiAyLiBpdCdzIGVhc3kg LSBqdXN0IGdldCBmZWF0dXJlcyBvbiBwcm9iZSBhbmQgdmFsaWRhdGUgVklSVElPXzEKPiAgICBi aXQgaXMgc2V0Lgo+IAo+ICAgIHMzOTAgZG9lcyBpdCBkaWZmZXJlbnRseSBzaW5jZSBzYW1lIGRl dmljZSBzdXBwb3J0cyB2ZXJzaW9uIDEgYW5kIDAuCj4gICAgTm8gZXhhbXBsZSB5ZXQgLSBJIGZv cmdvdCB0byBjb2RlIHRoaXMgdXAgZm9yIHZpcnRpbyBwY2kuICBJJ2xsIGNvcHkgeW91Cj4gICAg b24gcGF0Y2guCgpJIGZvcmdvdDogczM5MCBkb2VzIGhhdmUgdGhpcyBjb2RlIGFjdHVhbGx5OgoK ICAgICAgICBpZiAodmNkZXYtPnJldmlzaW9uID49IDEgJiYKICAgICAgICAgICAgIV9fdmlydGlv X3Rlc3RfYml0KHZkZXYsIFZJUlRJT19GX1ZFUlNJT05fMSkpIHsKICAgICAgICAgICAgICAgIGRl dl9lcnIoJnZkZXYtPmRldiwgInZpcnRpbzogZGV2aWNlIHVzZXMgcmV2aXNpb24gMSAiCiAgICAg ICAgICAgICAgICAgICAgICAgICJidXQgZG9lcyBub3QgaGF2ZSBWSVJUSU9fRl9WRVJTSU9OXzFc biIpOwogICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAgICAgICAgfQoKSSB0aGluayB0 aGF0J3MgYW4gZWFzaWVyIHdheSB0byBkbyBpdCBmb3IgUENJIGFzIHdlbGwsCndpbGwgc2VuZCBw YXRjaC4KCgo+IAo+IAo+IAo+ID4gPiBAQCAtNDk2LDcgKzUzMSw4IEBAIHN0YXRpYyBpbnQgdmly dGlvX21taW9fcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gPiA+ID4gIHsK PiA+ID4gPiAgICAgICBzdHJ1Y3QgdmlydGlvX21taW9fZGV2aWNlICp2bV9kZXYgPSBwbGF0Zm9y bV9nZXRfZHJ2ZGF0YShwZGV2KTsKPiA+ID4gPgo+ID4gPiA+IC0gICAgIHVucmVnaXN0ZXJfdmly dGlvX2RldmljZSgmdm1fZGV2LT52ZGV2KTsKPiA+ID4gPiArICAgICBpZiAodm1fZGV2KQo+ID4g PiA+ICsgICAgICAgICAgICAgdW5yZWdpc3Rlcl92aXJ0aW9fZGV2aWNlKCZ2bV9kZXYtPnZkZXYp Owo+ID4gPiA+Cj4gPiA+IAo+ID4gPiBXaWxsIHJlbW92ZSBldmVyIGJlIGNhbGxlZCBpZiBwcm9i ZSBmYWlscz8KPiA+IAo+ID4gTm8uCj4gCj4gVGhlbiB0aGlzIGlmIGlzbid0IG5lY2Vzc2FyeTog dm1fZGV2IGlzIGFsd2F5cyBzZXQuCj4gCj4gPiA+ID4gLS8qIEd1ZXN0J3MgbWVtb3J5IHBhZ2Ug c2l6ZSBpbiBieXRlcyAtIFdyaXRlIE9ubHkgKi8KPiA+ID4gPiArLyogR3Vlc3QncyBtZW1vcnkg cGFnZSBzaXplIGluIGJ5dGVzIC0gV3JpdGUgT25seQo+ID4gPiA+ICsgKiBMRUdBQ1kgREVWSUNF UyBPTkxZISAqLwo+ID4gPiAKPiA+ID4gVGhpcyBpcyBub3QgdGhlIHByZWZlcnJlZCBzdHlsZSBm b3IgbXVsdGktbGluZSBjb21tZW50cyA6KQo+ID4gCj4gPiBGYWN0LiBXaWxsIGZpeC4KPiA+IAo+ ID4gPiBBbHNvIC0gbWF5YmUgYWRkIGEgZmxhZyB0byBzZWxlY3RpdmVseSBkaXNhYmxlIGxlZ2Fj eQo+ID4gPiBvciBtb2Rlcm4gbWFjcm9zPwo+ID4gPiBNaWdodCBiZSBjbGVhcmVyIHRoYW4gY29t bWVudHMgdGhhdCwgYWZ0ZXIgYWxsLCBuZXZlciBjb21waWxlLgo+ID4gCj4gPiBBcyBpbiwgYSBi dW5jaCBvZiAjaWZkZWZzIGRpc2FibGluZyB0aGUgbGVnYWN5IGxpbmVzIG9mIGNvZGU/IERvYWJs ZSwKPiA+IGFsdGhvdWdoIEknbSBub3Qgc3VyZSBob3cgYmVhdXRpZnVsIHdvdWxkIHRoYXQgYmUu IFdpbGwgaGF2ZSBhIGxvb2ssIGJ1dAo+ID4gaXQgcHJvYmFibHkgd291bGQgb25seSBtYWtlIHNl bnNlIHdpdGggQ09ORklHX1ZJUlRJT19NTUlPX0xFR0FDWSBvcHRpb24uCj4gPiAKPiA+IFBhd2XF ggo+IAo+IE5vdCBuZWNlc3NhcmlseSAtIHRoZSBwb2ludCBpcyBmb3IgdXNlcnNwYWNlIHRvIGJl IGFibGUgdG8KPiBhdm9pZCBnZXR0aW5nIHVzZWxlc3MgbGVnYWN5IG1hY3JvcyBieSBtZWFucyBv ZiBhIHNpbXBsZSAjZGVmaW5lLgo+IEFnYWluLCB0YWtlIGEgbG9vayBhdCBteSB0cmVlOgo+IAo+ IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9tc3Qvdmhvc3Qu Z2l0IHZob3N0LW5leHQKPiAKPiAtLSAKPiBNU1QKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KVmlydHVhbGl6YXRpb24gbWFpbGluZyBsaXN0ClZpcnR1YWxp emF0aW9uQGxpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnCmh0dHBzOi8vbGlzdHMubGludXhmb3Vu ZGF0aW9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3ZpcnR1YWxpemF0aW9u