From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Williamson Subject: Re: [PATCH V3 4/7] mdev: introduce device specific ops Date: Wed, 16 Oct 2019 10:53:03 -0600 Message-ID: <20191016105303.6e01936f__18181.0594325484$1571244807$gmane$org@x1.home> References: <20191011081557.28302-1-jasowang@redhat.com> <20191011081557.28302-5-jasowang@redhat.com> <20191015124137.4f948bd2.cohuck@redhat.com> <20191015112646.3776dc29@x1.home> <20191016105232.663dd3c9.cohuck@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: 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: Parav Pandit Cc: "christophe.de.dinechin@gmail.com" , "kvm@vger.kernel.org" , "mst@redhat.com" , "airlied@linux.ie" , "joonas.lahtinen@linux.intel.com" , "heiko.carstens@de.ibm.com" , "dri-devel@lists.freedesktop.org" , "virtualization@lists.linux-foundation.org" , "kwankhede@nvidia.com" , "rob.miller@broadcom.com" , "linux-s390@vger.kernel.org" , "sebott@linux.ibm.com" , "lulu@redhat.com" , "eperezma@redhat.com" , "pasic@linux.ibm.com" , "borntraeger@de.ibm.com" , haotian.wang@sifive.c List-Id: virtualization@lists.linuxfoundation.org T24gV2VkLCAxNiBPY3QgMjAxOSAxNTozMToyNSArMDAwMApQYXJhdiBQYW5kaXQgPHBhcmF2QG1l bGxhbm94LmNvbT4gd3JvdGU6Cgo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPiA+IEZy b206IENvcm5lbGlhIEh1Y2sgPGNvaHVja0ByZWRoYXQuY29tPgo+ID4gU2VudDogV2VkbmVzZGF5 LCBPY3RvYmVyIDE2LCAyMDE5IDM6NTMgQU0KPiA+IFRvOiBQYXJhdiBQYW5kaXQgPHBhcmF2QG1l bGxhbm94LmNvbT4KPiA+IENjOiBBbGV4IFdpbGxpYW1zb24gPGFsZXgud2lsbGlhbXNvbkByZWRo YXQuY29tPjsgSmFzb24gV2FuZwo+ID4gPGphc293YW5nQHJlZGhhdC5jb20+OyBrdm1Admdlci5r ZXJuZWwub3JnOyBsaW51eC1zMzkwQHZnZXIua2VybmVsLm9yZzsKPiA+IGxpbnV4LWtlcm5lbEB2 Z2VyLmtlcm5lbC5vcmc7IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7IGludGVsLQo+ ID4gZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZzsgaW50ZWwtZ3Z0LWRldkBsaXN0cy5mcmVlZGVz a3RvcC5vcmc7Cj4gPiBrd2Fua2hlZGVAbnZpZGlhLmNvbTsgbXN0QHJlZGhhdC5jb207IHRpd2Vp LmJpZUBpbnRlbC5jb207Cj4gPiB2aXJ0dWFsaXphdGlvbkBsaXN0cy5saW51eC1mb3VuZGF0aW9u Lm9yZzsgbmV0ZGV2QHZnZXIua2VybmVsLm9yZzsKPiA+IG1heGltZS5jb3F1ZWxpbkByZWRoYXQu Y29tOyBjdW5taW5nLmxpYW5nQGludGVsLmNvbTsKPiA+IHpoaWhvbmcud2FuZ0BpbnRlbC5jb207 IHJvYi5taWxsZXJAYnJvYWRjb20uY29tOyB4aWFvLncud2FuZ0BpbnRlbC5jb207Cj4gPiBoYW90 aWFuLndhbmdAc2lmaXZlLmNvbTsgemhlbnl1d0BsaW51eC5pbnRlbC5jb207IHpoaS5hLndhbmdA aW50ZWwuY29tOwo+ID4gamFuaS5uaWt1bGFAbGludXguaW50ZWwuY29tOyBqb29uYXMubGFodGlu ZW5AbGludXguaW50ZWwuY29tOwo+ID4gcm9kcmlnby52aXZpQGludGVsLmNvbTsgYWlybGllZEBs aW51eC5pZTsgZGFuaWVsQGZmd2xsLmNoOwo+ID4gZmFybWFuQGxpbnV4LmlibS5jb207IHBhc2lj QGxpbnV4LmlibS5jb207IHNlYm90dEBsaW51eC5pYm0uY29tOwo+ID4gb2JlcnBhckBsaW51eC5p Ym0uY29tOyBoZWlrby5jYXJzdGVuc0BkZS5pYm0uY29tOyBnb3JAbGludXguaWJtLmNvbTsKPiA+ IGJvcm50cmFlZ2VyQGRlLmlibS5jb207IGFrcm93aWFrQGxpbnV4LmlibS5jb207IGZyZXVkZUBs aW51eC5pYm0uY29tOwo+ID4gbGluZ3NoYW4uemh1QGludGVsLmNvbTsgSWRvIFNoYW1heSA8aWRv c0BtZWxsYW5veC5jb20+Owo+ID4gZXBlcmV6bWFAcmVkaGF0LmNvbTsgbHVsdUByZWRoYXQuY29t OyBjaHJpc3RvcGhlLmRlLmRpbmVjaGluQGdtYWlsLmNvbTsKPiA+IGtldmluLnRpYW5AaW50ZWwu Y29tCj4gPiBTdWJqZWN0OiBSZTogW1BBVENIIFYzIDQvN10gbWRldjogaW50cm9kdWNlIGRldmlj ZSBzcGVjaWZpYyBvcHMKPiA+IAo+ID4gT24gV2VkLCAxNiBPY3QgMjAxOSAwNTo1MDowOCArMDAw MAo+ID4gUGFyYXYgUGFuZGl0IDxwYXJhdkBtZWxsYW5veC5jb20+IHdyb3RlOgo+ID4gICAKPiA+ ID4gSGkgQWxleCwKPiA+ID4gIAo+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4g PiA+ID4gRnJvbTogQWxleCBXaWxsaWFtc29uIDxhbGV4LndpbGxpYW1zb25AcmVkaGF0LmNvbT4K PiA+ID4gPiBTZW50OiBUdWVzZGF5LCBPY3RvYmVyIDE1LCAyMDE5IDEyOjI3IFBNCj4gPiA+ID4g VG86IEphc29uIFdhbmcgPGphc293YW5nQHJlZGhhdC5jb20+Cj4gPiA+ID4gQ2M6IENvcm5lbGlh IEh1Y2sgPGNvaHVja0ByZWRoYXQuY29tPjsga3ZtQHZnZXIua2VybmVsLm9yZzsgbGludXgtCj4g PiA+ID4gczM5MEB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7 IGRyaS0KPiA+ID4gPiBkZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7IGludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmc7Cj4gPiA+ID4gaW50ZWwtZ3Z0LSBkZXZAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnOyBrd2Fua2hlZGVAbnZpZGlhLmNvbTsKPiA+ID4gPiBtc3RAcmVkaGF0LmNvbTsgdGl3 ZWkuYmllQGludGVsLmNvbTsKPiA+ID4gPiB2aXJ0dWFsaXphdGlvbkBsaXN0cy5saW51eC1mb3Vu ZGF0aW9uLm9yZzsKPiA+ID4gPiBuZXRkZXZAdmdlci5rZXJuZWwub3JnOyBtYXhpbWUuY29xdWVs aW5AcmVkaGF0LmNvbTsKPiA+ID4gPiBjdW5taW5nLmxpYW5nQGludGVsLmNvbTsgemhpaG9uZy53 YW5nQGludGVsLmNvbTsKPiA+ID4gPiByb2IubWlsbGVyQGJyb2FkY29tLmNvbTsgeGlhby53Lndh bmdAaW50ZWwuY29tOwo+ID4gPiA+IGhhb3RpYW4ud2FuZ0BzaWZpdmUuY29tOyB6aGVueXV3QGxp bnV4LmludGVsLmNvbTsKPiA+ID4gPiB6aGkuYS53YW5nQGludGVsLmNvbTsgamFuaS5uaWt1bGFA bGludXguaW50ZWwuY29tOwo+ID4gPiA+IGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb207 IHJvZHJpZ28udml2aUBpbnRlbC5jb207Cj4gPiA+ID4gYWlybGllZEBsaW51eC5pZTsgZGFuaWVs QGZmd2xsLmNoOyBmYXJtYW5AbGludXguaWJtLmNvbTsKPiA+ID4gPiBwYXNpY0BsaW51eC5pYm0u Y29tOyBzZWJvdHRAbGludXguaWJtLmNvbTsgb2JlcnBhckBsaW51eC5pYm0uY29tOwo+ID4gPiA+ IGhlaWtvLmNhcnN0ZW5zQGRlLmlibS5jb207IGdvckBsaW51eC5pYm0uY29tOwo+ID4gPiA+IGJv cm50cmFlZ2VyQGRlLmlibS5jb207IGFrcm93aWFrQGxpbnV4LmlibS5jb207Cj4gPiA+ID4gZnJl dWRlQGxpbnV4LmlibS5jb207IGxpbmdzaGFuLnpodUBpbnRlbC5jb207IElkbyBTaGFtYXkKPiA+ ID4gPiA8aWRvc0BtZWxsYW5veC5jb20+OyBlcGVyZXptYUByZWRoYXQuY29tOyBsdWx1QHJlZGhh dC5jb207IFBhcmF2Cj4gPiA+ID4gUGFuZGl0IDxwYXJhdkBtZWxsYW5veC5jb20+OyBjaHJpc3Rv cGhlLmRlLmRpbmVjaGluQGdtYWlsLmNvbTsKPiA+ID4gPiBrZXZpbi50aWFuQGludGVsLmNvbQo+ ID4gPiA+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggVjMgNC83XSBtZGV2OiBpbnRyb2R1Y2UgZGV2aWNl IHNwZWNpZmljIG9wcwo+ID4gPiA+Cj4gPiA+ID4gT24gVHVlLCAxNSBPY3QgMjAxOSAyMDoxNzow MSArMDgwMAo+ID4gPiA+IEphc29uIFdhbmcgPGphc293YW5nQHJlZGhhdC5jb20+IHdyb3RlOgo+ ID4gPiA+ICAKPiA+ID4gPiA+IE9uIDIwMTkvMTAvMTUg5LiL5Y2INjo0MSwgQ29ybmVsaWEgSHVj ayB3cm90ZTogIAo+ID4gPiA+ID4gPiBPbiBGcmksIDExIE9jdCAyMDE5IDE2OjE1OjU0ICswODAw IEphc29uIFdhbmcKPiA+ID4gPiA+ID4gPGphc293YW5nQHJlZGhhdC5jb20+IHdyb3RlOiAgCj4g PiAgIAo+ID4gPiA+ID4gPj4gQEAgLTE2Nyw5ICsxNzYsMTAgQEAgcmVnaXN0ZXIgaXRzZWxmIHdp dGggdGhlIG1kZXYgY29yZSBkcml2ZXI6Ogo+ID4gPiA+ID4gPj4gICAJZXh0ZXJuIGludCAgbWRl dl9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2LAo+ID4gPiA+ID4gPj4gICAJICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0Cj4gPiA+ID4gPiA+PiBt ZGV2X3BhcmVudF9vcHMgKm9wcyk7Cj4gPiA+ID4gPiA+Pgo+ID4gPiA+ID4gPj4gLUl0IGlzIGFs c28gcmVxdWlyZWQgdG8gc3BlY2lmeSB0aGUgY2xhc3NfaWQgdGhyb3VnaDo6Cj4gPiA+ID4gPiA+ PiArSXQgaXMgYWxzbyByZXF1aXJlZCB0byBzcGVjaWZ5IHRoZSBjbGFzc19pZCBhbmQgZGV2aWNl Cj4gPiA+ID4gPiA+PiArc3BlY2lmaWMgb3BzICAKPiA+ID4gPiB0aHJvdWdoOjogIAo+ID4gPiA+ ID4gPj4KPiA+ID4gPiA+ID4+IC0JZXh0ZXJuIGludCBtZGV2X3NldF9jbGFzcyhzdHJ1Y3QgZGV2 aWNlICpkZXYsIHUxNiBpZCk7Cj4gPiA+ID4gPiA+PiArCWV4dGVybiBpbnQgbWRldl9zZXRfY2xh c3Moc3RydWN0IGRldmljZSAqZGV2LCB1MTYgaWQsCj4gPiA+ID4gPiA+PiArCSAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqb3BzKTsgIAo+ID4gPiA+ID4gPiBBcG9sb2dpZXMg aWYgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGRpc2N1c3NlZCwgYnV0IGRvIHdlIHdhbnQgYQo+ID4g PiA+ID4gPiAxOjEgcmVsYXRpb25zaGlwIGJldHdlZW4gaWQgYW5kIG9wcywgb3IgY2FuIGRpZmZl cmVudCBkZXZpY2VzCj4gPiA+ID4gPiA+IHdpdGggdGhlIHNhbWUgaWQgcmVnaXN0ZXIgZGlmZmVy ZW50IG9wcz8gIAo+ID4gPiA+ID4KPiA+ID4gPiA+Cj4gPiA+ID4gPiBJIHRoaW5rIHdlIGhhdmUg YSBOOjEgbWFwcGluZyBiZXR3ZWVuIGlkIGFuZCBvcHMsIGUuZyB3ZSB3YW50IGJvdGgKPiA+ID4g PiA+IHZpcnRpby1tZGV2IGFuZCB2aG9zdC1tZGV2IHVzZSBhIHNpbmdsZSBzZXQgb2YgZGV2aWNl IG9wcy4gIAo+ID4gPiA+Cj4gPiA+ID4gVGhlIGNvbnRlbnRzIG9mIHRoZSBvcHMgc3RydWN0dXJl IGlzIGVzc2VudGlhbGx5IGRlZmluZWQgYnkgdGhlIGlkLAo+ID4gPiA+IHdoaWNoIGlzIHdoeSBJ IHdhcyBsZWFuaW5nIHRvd2FyZHMgdGhlbSBiZWluZyBkZWZpbmVkIHRvZ2V0aGVyLgo+ID4gPiA+ IFRoZXkgYXJlIGVmZmVjdGl2ZWx5IGludGVybG9ja2VkLCB0aGUgaWQgZGVmaW5lcyB3aGljaCBt ZGV2ICJlbmRwb2ludCIKPiA+ID4gPiBkcml2ZXIgaXMgbG9hZGVkIGFuZCB0aGF0IGRyaXZlciBy ZXF1aXJlcyBtZGV2X2dldF9kZXZfb3BzKCkgdG8KPiA+ID4gPiByZXR1cm4gdGhlIHN0cnVjdHVy ZSByZXF1aXJlZCBieSB0aGUgZHJpdmVyLiAgSSB3aXNoIHRoZXJlIHdhcyBhIHdheQo+ID4gPiA+ IHdlIGNvdWxkIGluY29ycG9yYXRlIHR5cGUgY2hlY2tpbmcgaGVyZS4gIFdlIHRveWVkIHdpdGgg dGhlIGlkZWEgb2YKPiA+ID4gPiBoYXZpbmcgdGhlIGNsYXNzIGluIHRoZSBzYW1lIHN0cnVjdHVy ZSBhcyB0aGUgb3BzLCBidXQgSSB0aGluayB0aGlzCj4gPiA+ID4gYXBwcm9hY2ggd2FzIGNob3Nl biBmb3Igc2ltcGxpY2l0eS4gIFdlIGNvdWxkIHN0aWxsIGRvIHNvbWV0aGluZyBsaWtlOgo+ID4g PiA+Cj4gPiA+ID4gaW50IG1kZXZfc2V0X2NsYXNzX3N0cnVjdChzdHJ1Y3QgZGV2aWNlICpkZXYs IGNvbnN0IHN0cnVjdAo+ID4gPiA+IG1kZXZfY2xhc3Nfc3RydWN0ICpjbGFzcyk7Cj4gPiA+ID4K PiA+ID4gPiBzdHJ1Y3QgbWRldl9jbGFzc19zdHJ1Y3Qgewo+ID4gPiA+IAl1MTYJaWQ7Cj4gPiA+ ID4gCXVuaW9uIHsKPiA+ID4gPiAJCXN0cnVjdCB2ZmlvX21kZXZfb3BzIHZmaW9fb3BzOwo+ID4g PiA+IAkJc3RydWN0IHZpcnRpb19tZGV2X29wcyB2aXJ0aW9fb3BzOwo+ID4gPiA+IAl9Owo+ID4g PiA+IH07Cj4gPiA+ID4KPiA+ID4gPiBNYXliZSBldmVuOgo+ID4gPiA+Cj4gPiA+ID4gc3RydWN0 IHZmaW9fbWRldl9vcHMgKm1kZXZfZ2V0X3ZmaW9fb3BzKHN0cnVjdCBtZGV2X2RldmljZSAqbWRl dikgewo+ID4gPiA+IAlCVUdfT04obWRldi0+Y2xhc3MuaWQgIT0gTURFVl9JRF9WRklPKTsKPiA+ ID4gPiAJcmV0dXJuICZtZGV2LT5jbGFzcy52ZmlvX29wczsKPiA+ID4gPiB9Cj4gPiA+ID4KPiA+ ID4gPiBUaGUgbWF0Y2ggY2FsbGJhY2sgd291bGQgb2YgY291cnNlIGp1c3QgdXNlIHRoZSBtZGV2 LT5jbGFzcy5pZCB2YWx1ZS4KPiA+ID4gPiBGdW5jdGlvbmFsbHkgZXF1aXZhbGVudCwgYnV0IG1h eWJlIGJldHRlciB0eXBlIGNoYXJhY3RlcmlzdGljcy4KPiA+ID4gPiBUaGFua3MsCj4gPiA+ID4K PiA+ID4gPiBBbGV4ICAKPiA+ID4KPiA+ID4gV2UgaGF2ZSAzIHVzZSBjYXNlcyBvZiBtZGV2Lgo+ ID4gPiAxLiBjdXJyZW50IG1kZXYgYmluZGluZyB0byB2ZmlvX21kZXYKPiA+ID4gMi4gbWRldiBi aW5kaW5nIHRvIHZpcnRpbwo+ID4gPiAzLiBtZGV2IGJpbmRpbmcgdG8gbWx4NV9jb3JlIHdpdGhv dXQgZGV2X29wcwo+ID4gPgo+ID4gPiBBbHNvCj4gPiA+IChhKSBhIGdpdmVuIHBhcmVudCBtYXkg c2VydmUgbXVsdGlwbGUgdHlwZXMgb2YgY2xhc3NlcyBpbiBmdXR1cmUuCj4gPiA+IChiKSBudW1i ZXIgb2YgY2xhc3NlcyBtYXkgbm90IGxpa2VseSBleHBsb2RlLCB0aGV5IHdpbGwgYmUgaGFuZGZ1 bCBvZgo+ID4gPiB0aGVtLiAodmZpb19tZGV2LCB2aXJ0aW8pCj4gPiA+Cj4gPiA+IFNvLCBpbnN0 ZWFkIG9mIG1ha2luZyBjb3BpZXMgb2YgdGhpcyBkZXZfb3BzIHBvaW50ZXIgaW4gZWFjaCBtZGV2 LCBpdCBpcyBiZXR0ZXIgIAo+ID4gdG8ga2VlcCBjb25zdCBtdWx0aXBsZSBvcHMgaW4gdGhlaXIg cGFyZW50IGRldmljZS4gIAo+ID4gPiBTb21ldGhpbmcgbGlrZSBiZWxvdywKPiA+ID4KPiA+ID4g c3RydWN0IG1kZXZfcGFyZW50IHsKPiA+ID4gCVsuLl0KPiA+ID4gCXN0cnVjdCBtZGV2X3BhcmVu dF9vcHMgKnBhcmVudF9vcHM7IC8qIGNyZWF0ZSwgcmVtb3ZlICovCj4gPiA+IAlzdHJ1Y3QgdmZp b19tZGV2X29wcyAqdmZpb19vcHM7IC8qIHJlYWQsd3JpdGUsIGlvY3RsIGV0YyAqLwo+ID4gPiAJ c3RydWN0IHZpcnRpb19tZGV2X29wcyAqdmlydGlvX29wczsgLyogdmlydGlvIG9wcyAqLyB9OyAg Cj4gPiAKPiA+IFRoYXQgZmVlbHMgYSBiaXQgb2RkLiBXaHkgc2hvdWxkIHRoZSBwYXJlbnQgY2Fy cnkgcG9pbnRlcnMgdG8gZXZlcnkgcG9zc2libGUKPiA+IHZlcnNpb24gb2Ygb3BzPwo+ID4gICAK PiBIb3cgbWFueSBhcmUgd2UgZXhwZWN0aW5nPyBJIGVudmlzaW9uZWQgaGFuZGZ1bCBvZiB0aGVt Lgo+IEl0IGNhcnJpZXMgYmVjYXVzZSBwYXJlbnQgaXMgZmV3LCBtZGV2cyBhcmUgc2V2ZXJhbCBo dW5kcmVkcy4KPiBJdCBtYWtlcyBzZW5zZSB0byBrZWVwIGZldyBjb3BpZXMsIGluc3RlYWQgb2Yg c2V2ZXJhbCBodW5kcmVkIGNvcGllcwo+IGFuZCBpdCBkb2Vzbid0IG5lZWQgdG8gc2V0dXAgb24g ZXZlcnkgbWRldiBjcmVhdGlvbi4KCkl0IGRvZXMgbmVlZCBzZXR1cCBvbiBldmVyeSBtZGV2IGNy ZWF0aW9uLCBpdCdzIGp1c3QgYSBtYXR0ZXIgb2YgdGhlCnNjb3BlLCAnaWQgYW5kIG9wcycgdnMg J2lkIG9ubHknIHZzICdvcHMgd2l0aCBpbXBsaWNpdCBpZCcuICBUaGUgb3RoZXIKYXJndW1lbnQg aXMgYXNzdW1pbmcgYSBzcGFjZSB2cyB0aW1lIHRyYWRlLW9mZiB0aGF0IEknbSBoYXZpbmcgYSBo YXJkCnRpbWUganVkZ2luZyBpcyBuZWNlc3NhcmlseSB0aGUgY29ycmVjdCBhcHByb2FjaC4gIFdl IHBvdGVudGlhbGx5IGhhdmUKYmV0dGVyIGRhdGEgbG9jYWxpdHkgaW4gdGhlIG1kZXYgZGV2aWNl IHN0cnVjdHVyZSB2cyB0aGUgcGFyZW50LiAgVGhlCmNhY2hpbmcgb2YgdGhlIG9wcyBzdHJ1Y3R1 cmUgaXRzZWxmIGlzIHNlcGFyYXRlIGZyb20gaG93IHdlIGdldCB0byBpdC4KV2UgbWlnaHQgaGF2 ZSBodW5kcmVkcyBvZiBwb2ludGVycyB0byB0aG9zZSBvcHMgc3RydWN0dXJlLCBidXQgdGhlCnNw YWNlIHRyYWRlLW9mZiBtaWdodCB3ZSB3b3J0aCBpdCBpZiB0aGV5J3JlIG9uIHRoZSBzYW1lIGNh Y2hlbGluZSBhcwp0aGUgbWRldiBkZXZpY2UgaXRzZWxmIHZzIHRoZSBpbmRpcmVjdGlvbiB2aWEg dGhlIHBhcmVudC4KCkkgc2VlIGEgY291cGxlIG90aGVyIGRyYXdiYWNrcyB0byB0aGUgcGFyZW50 IGhvc3RlZCBvcHMgcG9pbnRlcnMgYXMKd2VsbC4gIEZpcnN0LCBpdCBpbXBvc2VzIHRoYXQgcGVy IHBhcmVudCB0aGVyZSBjYW4gb25seSBiZSBvbmUgZGV2aWNlCm9wcyBzdHJ1Y3R1cmUgcGVyIGNs YXNzIGlkLCBidXQgd2hvJ3MgdG8gc2F5IHRoYXQgZGlmZmVyZW50IHR5cGVzIG9mCm1kZXYgZGV2 aWNlcyBmb3IgYSBnaXZlbiBwYXJlbnQgYWxsIG1ha2UgdGhlIHNhbWUgY2FsbGJhY2tzIGludG8g dGhlCnBhcmVudC4gIEZvciBpbnN0YW5jZSwgZm9yIGEgdmZpby1tZGV2IHdlIGFscmVhZHkgc3Vw cG9ydCB0aGUgY29uY2VwdApvZiBhbiBpb21tdSBiYWNraW5nIGRldmljZSB3aGljaCBtYWtlcyB0 aGUgdHlwZTEgaW9tbXUgY29kZSBiZWhhdmUgYQpsaXR0bGUgZGlmZmVyZW50bHkuICBUaG9zZSBk aWZmZXJlbmNlcyBtaWdodCBiZSBzdWZmaWNpZW50IHRoYXQgdGhlCnBhcmVudCBkcml2ZXIgd291 bGQgcmVnaXN0ZXIgYSBkaWZmZXJlbnQgZGV2aWNlIG9wcyBzdHJ1Y3R1cmUgZm9yIGFuCmlvbW11 IGJhY2tlZCBtZGV2IHZzIGEgbm9uLWlvbW11IGJhY2tlZCBkZXZpY2UuICBUaGUgb3RoZXIgZHJh d2JhY2sgaXMKdGhhdCBpdCBpbXBsaWVzIGEgYmluYXJ5IGRpZmZlcmVuY2UgaW4gYWxsIG1kZXYg cGFyZW50IGRyaXZlcnMgdG8gYWRkCmFueSBuZXcgZGV2aWNlIGlkcy4gIEkga25vdyB3ZSBkb24n dCBndWFyYW50ZWUgYmluYXJ5IGNvbXBhdGliaWxpdHksCmJ1dCBpdCdzIHJhdGhlciB1Z2x5LgoK T3ZlcmFsbCwgSSBndWVzcyBJIHRlbmQgdG8gcHJlZmVyIENvbm5pZSdzIHByb3Bvc2FsLCB0aGUg Y2xhc3MgaWQgYW5kCnN0cnVjdHVyZSBhcmUgdGllZCB0b2dldGhlciBhbmQgdGhlIHBhcmVudCBk cml2ZXIgaXMgb25seSByZXNwb25zaWJsZQpmb3Igb25lIG9mIHRoZW0sIHRoZSBjbGFzcyBpZCBp cyBoaWRkZW4gYXdheSBpbiBtZGV2LWNvcmUgYW5kIHRoZSBtZGV2CmRyaXZlciBpdHNlbGYuCgo+ ID4gPiBjb25zdCBzdHJ1Y3QgdmZpb19tZGV2X29wcyAqbWRldl9nZXRfdmZpb19vcHMoc3RydWN0 IG1kZXZfcGFyZW50Cj4gPiA+ICpwYXJlbnQpOyBjb25zdCBzdHJ1Y3QgdmlydGlvX21kZXZfb3Bz ICptZGV2X2dldF92aXJ0aW9fb3BzKHN0cnVjdAo+ID4gPiBtZGV2X3BhcmVudCAqcGFyZW50KTsK PiA+ID4KPiA+ID4gVGhpcyB3YXksCj4gPiA+IChhKSB3ZSBoYXZlIHN0cm9uZyB0eXBlIGNoZWNr IHN1cHBvcnQKPiA+ID4gKGIpIG9wcyBwb2ludGVyIGlzIG5vdCBkdXBsaWNhdGVkIGFjcm9zcyBz ZXZlcmFsIGh1bmRyZWQgbWRldgo+ID4gPiBkZXZpY2VzLCBhbmQgZG9uJ3QgaGF2ZSB0byBzZXQg b24gZXZlcnkgbWRldiBjcmVhdGlvbgo+ID4gPiAoYykgYWxsIDMgY2xhc3NlcyBvZiBtZGV2IGFy ZSBzdXBwb3J0ZWQKPiA+ID4gKGQpIG9uZSBleHRyYSBzeW1ib2wgdGFibGUgZW50cnkgdXNlZCBw ZXIgb3BzIHR5cGUsIGJ1dCB0aGVyZSBhcmUKPiA+ID4gbm90ICAKPiA+IGV4cGVjdGVkIHRvIGdy b3cgYSBsb3QuICAKPiA+ID4gKGUpIG11bHRpcGxlIGNsYXNzZXMgcGVyIHNpbmdsZSBwYXJlbnQg aXMgc3RpbGwgc3VwcG9ydGVkCj4gPiA+IChmKSBzdGlsbCBleHRlbmRpYmxlIGZvciBtdWx0aXBs ZSBjbGFzc2VzICh3ZWxsIGRlZmluZWQgY2xhc3NlcyA9Cj4gPiA+IHZmaW8sIHZpcnRpbywgYW5k IHZlbmRvciBjbGFzcykgIAo+ID4gCj4gPiBZZXQgYW5vdGhlciBzdWdnZXN0aW9uOiBoYXZlIHRo ZSBjbGFzcyBpZCBkZXJpdmUgZnJvbSB0aGUgZnVuY3Rpb24KPiA+IHlvdSB1c2UgdG8gc2V0IHVw IHRoZSBvcHMuCj4gPiAKPiA+IHZvaWQgbWRldl9zZXRfdmZpb19vcHMoc3RydWN0IG1kZXZfZGV2 aWNlICptZGV2LCBjb25zdCBzdHJ1Y3QKPiA+IHZmaW9fbWRldl9vcHMgKnZmaW9fb3BzKSB7Cj4g PiAJbWRldi0+ZGV2aWNlX29wcyA9IHZmaW9fb3BzOwo+ID4gCW1kZXYtPmNsYXNzX2lkID0gTURF Vl9JRF9WRklPOwo+ID4gfQo+ID4gCj4gPiB2b2lkIG1kZXZfc2V0X3ZpcnRpb19vcHMoc3RydWN0 IG1kZXZfZGV2aWNlICptZGV2LCBjb25zdCBzdHJ1Y3QKPiA+IHZpcnRpb19tZGV2X29wcyAqdmly dGlvX29wcykgewo+ID4gCW1kZXYtPmRldmljZV9vcHMgPSB2aXJ0aW9fb3BzOwo+ID4gCW1kZXYt PmNsYXNzX2lkID0gTURFVl9JRF9WSVJUSU87Cj4gPiB9Cj4gPiAKPiA+IHZvaWQgbWRldl9zZXRf dmhvc3Rfb3BzKHN0cnVjdCBtZGV2X2RldmljZSAqbWRldiwgY29uc3Qgc3RydWN0Cj4gPiB2aXJ0 aW9fbWRldl9vcHMgKnZpcnRpb19vcHMpIHsKPiA+IAltZGV2LT5kZXZpY2Vfb3BzID0gdmlydGlv X29wczsKPiA+IAltZGV2LT5jbGFzc19pZCA9IE1ERVZfSURfVkhPU1Q7Cj4gPiB9Cj4gPiAKPiA+ IHZvaWQgbWRldl9zZXRfdmVuZG9yX29wcyhzdHJ1Y3QgbWRldl9kZXZpY2UgKm1kZXYpIC8qIG5v IG9wcyAqLyB7Cj4gPiAJbWRldi0+Y2xhc3NfaWQgPSBNREVWX0lEX1ZFTkRPUjsKPiA+IH0gIAoK T25lIGZ1cnRoZXIgc3RlcCB0b3dhcmRzIG1ha2luZyB0aGlzIGhhcmQgdG8gdXNlIGluY29ycmVj dGx5IG1pZ2h0IGJlCnRvIHJldHVybiBhbiBlcnJvciBpZiBjbGFzc19pZCBpcyBhbHJlYWR5IHNl dC4gIFRoYW5rcywKCkFsZXgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KVmlydHVhbGl6YXRpb24gbWFpbGluZyBsaXN0ClZpcnR1YWxpemF0aW9uQGxpc3Rz LmxpbnV4LWZvdW5kYXRpb24ub3JnCmh0dHBzOi8vbGlzdHMubGludXhmb3VuZGF0aW9uLm9yZy9t YWlsbWFuL2xpc3RpbmZvL3ZpcnR1YWxpemF0aW9u