From mboxrd@z Thu Jan 1 00:00:00 1970 From: Subject: [v3, 4/9] fsl/fman: Add FMan MURAM support Date: Wed, 22 Jul 2015 14:22:09 +0300 Message-ID: <1437564129-16558-1-git-send-email-igal.liberman@freescale.com> Reply-To: igal.liberman@freescale.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: pebolle@tiscali.nl, linux-kernel@vger.kernel.org, ppc@mindchasers.com, Igal Liberman , scottwood@freescale.com, linuxppc-dev@lists.ozlabs.org, madalin.bucur@freescale.com To: Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: linuxppc-dev-bounces+glppe-linuxppc-embedded-2=m.gmane.org@lists.ozlabs.org Sender: "Linuxppc-dev" List-Id: netdev.vger.kernel.org RnJvbTogSWdhbCBMaWJlcm1hbiA8SWdhbC5MaWJlcm1hbkBmcmVlc2NhbGUuY29tPgoKQWRkIEZy YW1lIE1hbmFnZXIgTXVsdGktVXNlciBSQU0gc3VwcG9ydC4KClNpZ25lZC1vZmYtYnk6IElnYWwg TGliZXJtYW4gPElnYWwuTGliZXJtYW5AZnJlZXNjYWxlLmNvbT4KLS0tCiBkcml2ZXJzL25ldC9l dGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9LY29uZmlnICAgICAgICB8ICAgIDEgKwogZHJpdmVycy9u ZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vTWFrZWZpbGUgICAgICAgfCAgICA2ICstCiBkcml2 ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbV9tdXJhbS5jICAgICB8ICAxMTUgKysr KysrKysrKysrKysrKysrKysKIC4uLi9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vaW5jL2Zt X211cmFtX2V4dC5oIHwgIDEwMiArKysrKysrKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAy MjIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbV9tdXJhbS5jCiBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vaW5jL2ZtX211cmFtX2V4 dC5oCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vS2Nv bmZpZyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL0tjb25maWcKaW5kZXgg YWY0MmMzYS4uODI1YTBkNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNj YWxlL2ZtYW4vS2NvbmZpZworKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1h bi9LY29uZmlnCkBAIC0xLDYgKzEsNyBAQAogY29uZmlnIEZTTF9GTUFOCiAJYm9vbCAiRk1hbiBz dXBwb3J0IgogCWRlcGVuZHMgb24gRlNMX1NPQyB8fCBDT01QSUxFX1RFU1QKKwlzZWxlY3QgR0VO RVJJQ19BTExPQ0FUT1IKIAlkZWZhdWx0IG4KIAloZWxwCiAJCUZyZWVzY2FsZSBEYXRhLVBhdGgg QWNjZWxlcmF0aW9uIEFyY2hpdGVjdHVyZSBGcmFtZSBNYW5hZ2VyCmRpZmYgLS1naXQgYS9kcml2 ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9NYWtlZmlsZSBiL2RyaXZlcnMvbmV0L2V0 aGVybmV0L2ZyZWVzY2FsZS9mbWFuL01ha2VmaWxlCmluZGV4IDE4NDFiMDMuLjU1YzkxYmQgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL01ha2VmaWxlCisr KyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL01ha2VmaWxlCkBAIC0xLDgg KzEsMTAgQEAKLXN1YmRpci1jY2ZsYWdzLXkgKz0gLUkkKHNyY3RyZWUpL2RyaXZlcnMvbmV0L2V0 aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZsaWIKK3N1YmRpci1jY2ZsYWdzLXkgKz0gLUkkKHNyY3Ry ZWUpL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZsaWIgXAorCQkJCSAgICAg LUkkKHNyY3RyZWUpL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2luYyBcCisJ CQkJICAgICAtSSQoc3JjdHJlZSkvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4K IAogb2JqLXkJCSs9IGZzbF9mbWFuLm8KIAotZnNsX2ZtYW4tb2Jqcwk6PSBmbWFuLm8KK2ZzbF9m bWFuLW9ianMJOj0gZm1hbi5vIGZtX211cmFtLm8KIAogb2JqLXkJKz0gcG9ydC8KIG9iai15CSs9 IG1hYy8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2Zt X211cmFtLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbV9tdXJhbS5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkNzRiZDkKLS0tIC9kZXYvbnVs bAorKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbV9tdXJhbS5jCkBA IC0wLDAgKzEsMTE1IEBACisvKgorICogQ29weXJpZ2h0IDIwMDgtMjAxNSBGcmVlc2NhbGUgU2Vt aWNvbmR1Y3RvciBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoK KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg YWJvdmUgY29weXJpZ2h0CisgKiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj bGFpbWVyIGluIHRoZQorICogICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl IG5hbWUgb2YgRnJlZXNjYWxlIFNlbWljb25kdWN0b3Igbm9yIHRoZQorICogICAgICAgbmFtZXMg b2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv ZHVjdHMKKyAqICAgICAgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqCisgKiBBTFRFUk5BVElWRUxZLCB0 aGlzIHNvZnR3YXJlIG1heSBiZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlCisg KiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoIkdQTCIpIGFzIHB1Ymxpc2hlZCBieSB0aGUg RnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGF0IExp Y2Vuc2Ugb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkKKyAqIGxhdGVyIHZlcnNpb24uCisgKgorICog VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciBgYEFT IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IgQkUg TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G IFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImZtX211cmFtX2V4dC5o IgorCisjaW5jbHVkZSA8bGludXgvaW8uaD4KKyNpbmNsdWRlIDxsaW51eC9zdHJpbmcuaD4KKyNp bmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSA8bGludXgvZ2VuYWxsb2MuaD4KKworc3Ry dWN0IG11cmFtX2luZm8geworCXN0cnVjdCBnZW5fcG9vbCAqcG9vbDsKKwl2b2lkIF9faW9tZW0g KnZiYXNlOworCXNpemVfdCBzaXplOworCXBoeXNfYWRkcl90IHBiYXNlOworfTsKKworc3RydWN0 IG11cmFtX2luZm8gKmZtX211cmFtX2luaXQocGh5c19hZGRyX3QgYmFzZSwgc2l6ZV90IHNpemUp Cit7CisJc3RydWN0IG11cmFtX2luZm8gKm11cmFtOworCXZvaWQgX19pb21lbSAqdmFkZHI7CisJ aW50IHJldDsKKworCW11cmFtID0ga3phbGxvYyhzaXplb2YoKm11cmFtKSwgR0ZQX0tFUk5FTCk7 CisJaWYgKCFtdXJhbSkKKwkJcmV0dXJuIE5VTEw7CisKKwltdXJhbS0+cG9vbCA9IGdlbl9wb29s X2NyZWF0ZShpbG9nMig2NCksIC0xKTsKKwlpZiAoIW11cmFtLT5wb29sKSB7CisJCXByX2Vycigi JXMoKTogTVVSQU0gcG9vbCBjcmVhdGUgZmFpbGVkXG4iLCBfX2Z1bmNfXyk7CisJCXJldHVybiBO VUxMOworCX0KKworCXZhZGRyID0gaW9yZW1hcChiYXNlLCBzaXplKTsKKwlpZiAoIXZhZGRyKSB7 CisJCXByX2VycigiJXMoKTogTVVSQU0gaW9yZW1hcCBmYWlsZWRcbiIsIF9fZnVuY19fKTsKKwkJ cmV0dXJuIE5VTEw7CisJfQorCisJcmV0ID0gZ2VuX3Bvb2xfYWRkX3ZpcnQobXVyYW0tPnBvb2ws ICh1bnNpZ25lZCBsb25nKXZhZGRyLAorCQkJCWJhc2UsIHNpemUsIC0xKTsKKwlpZiAocmV0IDwg MCkgeworCQlwcl9lcnIoIiVzKCk6IE1VUkFNIHBvb2wgYWRkIGZhaWxlZFxuIiwgX19mdW5jX18p OworCQlpb3VubWFwKHZhZGRyKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJbWVtc2V0X2lvKHZh ZGRyLCAwLCAoaW50KXNpemUpOworCisJbXVyYW0tPnZiYXNlID0gdmFkZHI7CisJbXVyYW0tPnBi YXNlID0gYmFzZTsKKwlyZXR1cm4gbXVyYW07Cit9CisKK3Vuc2lnbmVkIGxvbmcgZm1fbXVyYW1f dmJhc2VfdG9fb2Zmc2V0KHN0cnVjdCBtdXJhbV9pbmZvICptdXJhbSwKKwkJCQkgICAgICAgdW5z aWduZWQgbG9uZyB2YWRkcikKK3sKKwlyZXR1cm4gdmFkZHIgLSAodW5zaWduZWQgbG9uZyltdXJh bS0+dmJhc2U7Cit9CisKK3Vuc2lnbmVkIGxvbmcgZm1fbXVyYW1fb2Zmc2V0X3RvX3ZiYXNlKHN0 cnVjdCBtdXJhbV9pbmZvICptdXJhbSwKKwkJCQkgICAgICAgdW5zaWduZWQgbG9uZyBvZmZzZXQp Cit7CisJcmV0dXJuIG9mZnNldCArICh1bnNpZ25lZCBsb25nKW11cmFtLT52YmFzZTsKK30KKwor aW50IGZtX211cmFtX2FsbG9jKHN0cnVjdCBtdXJhbV9pbmZvICptdXJhbSwgc2l6ZV90IHNpemUp Cit7CisJdW5zaWduZWQgbG9uZyB2YWRkcjsKKworCXZhZGRyID0gZ2VuX3Bvb2xfYWxsb2MobXVy YW0tPnBvb2wsIHNpemUpOworCWlmICghdmFkZHIpCisJCXJldHVybiAtRU5PTUVNOworCisJbWVt c2V0X2lvKCh2b2lkIF9faW9tZW0gKil2YWRkciwgMCwgc2l6ZSk7CisKKwlyZXR1cm4gZm1fbXVy YW1fdmJhc2VfdG9fb2Zmc2V0KG11cmFtLCB2YWRkcik7Cit9CisKK3ZvaWQgZm1fbXVyYW1fZnJl ZV9tZW0oc3RydWN0IG11cmFtX2luZm8gKm11cmFtLCB1MzIgb2Zmc2V0LCBzaXplX3Qgc2l6ZSkK K3sKKwl1bnNpZ25lZCBsb25nIGFkZHIgPSBmbV9tdXJhbV9vZmZzZXRfdG9fdmJhc2UobXVyYW0s IG9mZnNldCk7CisKKwlnZW5fcG9vbF9mcmVlKG11cmFtLT5wb29sLCBhZGRyLCBzaXplKTsKK30K KwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vaW5jL2Zt X211cmFtX2V4dC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vaW5jL2Zt X211cmFtX2V4dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwMjdiMTYK LS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9p bmMvZm1fbXVyYW1fZXh0LmgKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAw OC0yMDE1IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg Y29uZGl0aW9ucyBhcmUgbWV0OgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICAgIG5vdGljZSwgdGhp cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv dmUgY29weXJpZ2h0CisgKiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgICBkb2N1bWVudGF0aW9u IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciBub3Ig dGhlCisgKiAgICAgICBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cworICogICAgICAgZGVyaXZlZCBmcm9tIHRoaXMgc29m dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICoK KyAqIEFMVEVSTkFUSVZFTFksIHRoaXMgc29mdHdhcmUgbWF5IGJlIGRpc3RyaWJ1dGVkIHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICgiR1BMIikg YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBlaXRoZXIg dmVyc2lvbiAyIG9mIHRoYXQgTGljZW5zZSBvciAoYXQgeW91ciBvcHRpb24pIGFueQorICogbGF0 ZXIgdmVyc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEZyZWVzY2Fs ZSBTZW1pY29uZHVjdG9yIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBGcmVlc2Nh bGUgU2VtaWNvbmR1Y3RvciBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2lmbmRl ZiBfX0ZNX01VUkFNX0VYVAorI2RlZmluZSBfX0ZNX01VUkFNX0VYVAorCisjaW5jbHVkZSAibGlu dXgvdHlwZXMuaCIKKworI2RlZmluZSBGTV9NVVJBTV9JTlZBTElEX0FMTE9DQVRJT04JLTEKKwor LyogU3RydWN0dXJlIGZvciBGTSBNVVJBTSBpbmZvcm1hdGlvbiAqLworc3RydWN0IG11cmFtX2lu Zm87CisKKy8qKgorICogZm1fbXVyYW1faW5pdAorICogQGJhc2U6CVBvaW50ZXIgdG8gYmFzZSBv ZiBtZW1vcnkgbWFwcGVkIEZNLU1VUkFNLgorICogQHNpemU6CVNpemUgb2YgdGhlIEZNLU1VUkFN IHBhcnRpdGlvbi4KKyAqCisgKiBDcmVhdGVzIHBhcnRpdGlvbiBpbiB0aGUgTVVSQU0uCisgKiBU aGUgcm91dGluZSByZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgTVVSQU0gcGFydGl0aW9uLgorICog VGhpcyBwb2ludGVyIG11c3QgYmUgcGFzc2VkIGFzIHRvIGFsbCBvdGhlciBGTS1NVVJBTSBmdW5j dGlvbiBjYWxscy4KKyAqIE5vIGFjdHVhbCBpbml0aWFsaXphdGlvbiBvciBjb25maWd1cmF0aW9u IG9mIEZNX01VUkFNIGhhcmR3YXJlIGlzIGRvbmUgYnkKKyAqIHRoaXMgcm91dGluZS4KKyAqCisg KiBSZXR1cm46IHBvaW50ZXIgdG8gRk0tTVVSQU0gb2JqZWN0LCBvciBOVUxMIGZvciBGYWlsdXJl LgorICovCitzdHJ1Y3QgbXVyYW1faW5mbyAqZm1fbXVyYW1faW5pdChwaHlzX2FkZHJfdCBiYXNl LCBzaXplX3Qgc2l6ZSk7CisKKy8qKgorICogZm1fbXVyYW1fdmJhc2VfdG9fb2Zmc2V0CisgKiBA bXVyYW06CUZNLU1VUkFNIG1vZHVsZSBwb2ludGVyLgorICogQHZhZGRyOglUaGUgdmlydHVhbCBh ZGRyZXNzIG9mIHRoZSBtZW1vcnkgYmxvY2sKKyAqCisgKiBHaXZlcyB0aGUgb2Zmc2V0IG9mIHRo ZSBtZW1vcnkgcmVnaW9uIGluIHRoZSBNVVJBTQorICoKKyAqIFJldHVybjogVGhlIG9mZnNldCBv ZiB0aGUgbWVtb3J5IGJsb2NrCisgKi8KK3Vuc2lnbmVkIGxvbmcgZm1fbXVyYW1fdmJhc2VfdG9f b2Zmc2V0KHN0cnVjdCBtdXJhbV9pbmZvICptdXJhbSwKKwkJCQkgICAgICAgdW5zaWduZWQgbG9u ZyB2YWRkcik7CisKKy8qKgorICogZm1fbXVyYW1fdmJhc2VfdG9fb2Zmc2V0CisgKiBAbXVyYW06 CUZNLU1VUkFNIG1vZHVsZSBwb2ludGVyLgorICogQG9mZnNldDoJdGhlIG9mZnNldCBvZiB0aGUg bWVtb3J5IGJsb2NrCisgKgorICogR2l2ZXMgdGhlIGFkZHJlc3Mgb2YgdGhlIG1lbW9yeSByZWdp b24gZnJvbSBzcGVjaWZpYyBvZGRzZXQKKyAqCisgKiBSZXR1cm46IFRoZSBhZGRyZXNzIG9mIHRo ZSBtZW1vcnkgYmxvY2wKKyAqLwordW5zaWduZWQgbG9uZyBmbV9tdXJhbV9vZmZzZXRfdG9fdmJh c2Uoc3RydWN0IG11cmFtX2luZm8gKm11cmFtLAorCQkJCSAgICAgICB1bnNpZ25lZCBsb25nIG9m ZnNldCk7CisKKy8qKgorICogZm1fbXVyYW1fYWxsb2MKKyAqIEBtdXJhbToJRk0tTVVSQU0gbW9k dWxlIHBvaW50ZXIuCisgKiBAc2l6ZToJU2l6ZSBvZiB0aGUgbWVtb3J5IHRvIGJlIGFsbG9jYXRl ZC4KKyAqCisgKiBBbGxvY2F0ZSBzb21lIG1lbW9yeSBmcm9tIEZNLU1VUkFNIHBhcnRpdGlvbi4K KyAqCisgKiBSZXR1cm46IGFkZHJlc3Mgb2YgdGhlIGFsbG9jYXRlZCBtZW1vcnk7IE5VTEwgb3Ro ZXJ3aXNlLgorICovCitpbnQgZm1fbXVyYW1fYWxsb2Moc3RydWN0IG11cmFtX2luZm8gKm11cmFt LCBzaXplX3Qgc2l6ZSk7CisKKy8qKgorICogZm1fbXVyYW1fZnJlZV9tZW0KKyAqIG11cmFtOglG TS1NVVJBTSBtb2R1bGUgcG9pbnRlci4KKyAqIG9mZnNldDoJb2Zmc2V0IG9mIHRoZSBtZW1vcnkg cmVnaW9uIHRvIGJlIGZyZWVkLgorICogc2l6ZToJc2l6ZSBvZiB0aGUgbWVtb3J5IHRvIGJlIGZy ZWVkLgorICoKKyAqIEZyZWUgYW4gYWxsb2NhdGVkIG1lbW9yeSBmcm9tIEZNLU1VUkFNIHBhcnRp dGlvbi4KKyAqLwordm9pZCBmbV9tdXJhbV9mcmVlX21lbShzdHJ1Y3QgbXVyYW1faW5mbyAqbXVy YW0sIHUzMiBvZmZzZXQsIHNpemVfdCBzaXplKTsKKworI2VuZGlmIC8qIF9fRk1fTVVSQU1fRVhU ICovCi0tIAoxLjcuOS41CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpMaW51eHBwYy1kZXYgbWFpbGluZyBsaXN0CkxpbnV4cHBjLWRldkBsaXN0cy5vemxh YnMub3JnCmh0dHBzOi8vbGlzdHMub3psYWJzLm9yZy9saXN0aW5mby9saW51eHBwYy1kZXY=