From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: [PATCH v9 04/11] pci: split code to size BARs from pci_add_device Date: Wed, 14 Mar 2018 14:04:01 +0000 Message-ID: <20180314140408.40947-5-roger.pau@citrix.com> References: <20180314140408.40947-1-roger.pau@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ew79m-0003nR-53 for xen-devel@lists.xenproject.org; Wed, 14 Mar 2018 14:13:30 +0000 In-Reply-To: <20180314140408.40947-1-roger.pau@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Stefano Stabellini , Wei Liu , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Julien Grall , Jan Beulich , Boris Ostrovsky , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org U28gdGhhdCBpdCBjYW4gYmUgY2FsbGVkIGZyb20gb3V0c2lkZSBpbiBvcmRlciB0byBnZXQgdGhl IHNpemUgb2YgcmVndWxhciBQQ0kKQkFScy4gVGhpcyB3aWxsIGJlIHJlcXVpcmVkIGluIG9yZGVy IHRvIG1hcCB0aGUgQkFScyBmcm9tIFBDSSBkZXZpY2VzIGludG8gUFZICkRvbTAgcDJtLgoKU2ln bmVkLW9mZi1ieTogUm9nZXIgUGF1IE1vbm7DqSA8cm9nZXIucGF1QGNpdHJpeC5jb20+ClJldmll d2VkLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+Ci0tLQpDYzogSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPgpDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNA Y2l0cml4LmNvbT4KQ2M6IEdlb3JnZSBEdW5sYXAgPEdlb3JnZS5EdW5sYXBAZXUuY2l0cml4LmNv bT4KQ2M6IElhbiBKYWNrc29uIDxpYW4uamFja3NvbkBldS5jaXRyaXguY29tPgpDYzogSnVsaWVu IEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4KQ2M6IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8 a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxp bmlAa2VybmVsLm9yZz4KQ2M6IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3JnPgpDYzogV2VpIExpdSA8 d2VpLmxpdTJAY2l0cml4LmNvbT4KLS0tCkNoYW5nZXMgc2luY2Ugdjc6CiAtIERvIG5vdCByZXR1 cm4gZXJyb3IgZnJvbSBwY2lfc2l6ZV9tZW1fYmFyIGluIG9yZGVyIHRvIGtlZXAgcHJldmlvdXMK ICAgYmVoYXZpb3IuCgpDaGFuZ2VzIHNpbmNlIHY2OgogLSBSZW1vdmUgdGhlIHZmIGFuZCBhZGRy IGxvY2FsIHZhcmlhYmxlcy4KIC0gQ2hhbmdlIHRoZSB3YXkgZmxhZ3MgYXJlIGRlY2xhcmVkLgog LSBNb3ZlIHRoZSBsYXN0IGJvb2wgcGFyYW1ldGVyIHRvIHRoZSBmbGFncyBmaWVsZC4KCkNoYW5n ZXMgc2luY2UgdjU6CiAtIEludHJvZHVjZSBhIGZsYWdzIGZpZWxkIGZvciBwY2lfc2l6ZV9tZW1f YmFyLgogLSBVc2UgcGNpX3NiZGZfdC4KCkNoYW5nZXMgc2luY2UgdjQ6CiAtIFJlc3RvcmUgcHJp bnRpbmcgd2hldGhlciB0aGUgQkFSIGlzIGZyb20gYSB2Zi4KIC0gTWFrZSB0aGUgcHNpemUgcG9p bnRlciBwYXJhbWV0ZXIgbm90IG9wdGlvbmFsLgogLSBzL3U2NC91aW50NjRfdC4KIC0gUmVtb3Zl IHNvbWUgdW5uZWVkZWQgcGFyZW50aGVzZXMuCiAtIEFzc2VydCB0aGUgcmV0dXJuIHZhbHVlIGlz IG5ldmVyIDAuCiAtIFVzZSB0aGUgbmV3bHkgaW50cm9kdWNlZCBwY2lfc2JkZl90IHR5cGUuCgpD aGFuZ2VzIHNpbmNlIHYzOgogLSBSZW5hbWUgZnVuY3Rpb24gdG8gc2l6ZSBCQVJzIHRvIHBjaV9z aXplX21lbV9iYXIuCiAtIENoYW5nZSB0aGUgcGFyYW1ldGVycyBwYXNzZWQgdG8gdGhlIGZ1bmN0 aW9uLiBQYXNzIHRoZSBwb3NpdGlvbiBhbmQKICAgd2hldGhlciB0aGUgQkFSIGlzIHRoZSBsYXN0 IG9uZSwgaW5zdGVhZCBvZiB0aGUgKGJhc2UsIG1heF9iYXJzLAogICAqaW5kZXgpIHR1cGxlLgog LSBNYWtlIHRoZSBmdW5jdGlvbiByZXR1cm4gdGhlIG51bWJlciBvZiBCQVJzIGNvbnN1bWVkICgx IGZvciAzMmIsIDIKICAgZm9yIDY0YiBCQVJzKS4KIC0gQ2hhbmdlIHRoZSBkcHJpbnRrIGJhY2sg dG8gcHJpbnRrLgogLSBEbyBub3QgbG9nIGFub3RoZXIgZXJyb3IgbWVzc2FnZSBpbiBwY2lfYWRk X2RldmljZSBpbiBjYXNlCiAgIHBjaV9zaXplX21lbV9iYXIgZmFpbHMuCi0tLQogeGVuL2RyaXZl cnMvcGFzc3Rocm91Z2gvcGNpLmMgfCA5NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0tLS0tCiB4ZW4vaW5jbHVkZS94ZW4vcGNpLmggICAgICAgICB8ICA1ICsrKwogMiBm aWxlcyBjaGFuZ2VkLCA2OCBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9wY2kuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJv dWdoL3BjaS5jCmluZGV4IGU2NWM3ZmFhNmYuLjE5MDUxNWIzYzYgMTAwNjQ0Ci0tLSBhL3hlbi9k cml2ZXJzL3Bhc3N0aHJvdWdoL3BjaS5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Bj aS5jCkBAIC02MDMsNiArNjAzLDU2IEBAIHN0YXRpYyBpbnQgaW9tbXVfYWRkX2RldmljZShzdHJ1 Y3QgcGNpX2RldiAqcGRldik7CiBzdGF0aWMgaW50IGlvbW11X2VuYWJsZV9kZXZpY2Uoc3RydWN0 IHBjaV9kZXYgKnBkZXYpOwogc3RhdGljIGludCBpb21tdV9yZW1vdmVfZGV2aWNlKHN0cnVjdCBw Y2lfZGV2ICpwZGV2KTsKIAordW5zaWduZWQgaW50IHBjaV9zaXplX21lbV9iYXIocGNpX3NiZGZf dCBzYmRmLCB1bnNpZ25lZCBpbnQgcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dWludDY0X3QgKnBhZGRyLCB1aW50NjRfdCAqcHNpemUsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpCit7CisgICAgdWludDMyX3QgaGkgPSAwLCBiYXIg PSBwY2lfY29uZl9yZWFkMzIoc2JkZi5zZWcsIHNiZGYuYnVzLCBzYmRmLmRldiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYmRmLmZ1bmMsIHBvcyk7CisgICAg dWludDY0X3Qgc2l6ZTsKKworICAgIEFTU0VSVCgoYmFyICYgUENJX0JBU0VfQUREUkVTU19TUEFD RSkgPT0gUENJX0JBU0VfQUREUkVTU19TUEFDRV9NRU1PUlkpOworICAgIHBjaV9jb25mX3dyaXRl MzIoc2JkZi5zZWcsIHNiZGYuYnVzLCBzYmRmLmRldiwgc2JkZi5mdW5jLCBwb3MsIH4wKTsKKyAg ICBpZiAoIChiYXIgJiBQQ0lfQkFTRV9BRERSRVNTX01FTV9UWVBFX01BU0spID09CisgICAgICAg ICBQQ0lfQkFTRV9BRERSRVNTX01FTV9UWVBFXzY0ICkKKyAgICB7CisgICAgICAgIGlmICggZmxh Z3MgJiBQQ0lfQkFSX0xBU1QgKQorICAgICAgICB7CisgICAgICAgICAgICBwcmludGsoWEVOTE9H X1dBUk5JTkcKKyAgICAgICAgICAgICAgICAgICAiJXNkZXZpY2UgJTA0eDolMDJ4OiUwMnguJXUg d2l0aCA2NC1iaXQgJXNCQVIgaW4gbGFzdCBzbG90XG4iLAorICAgICAgICAgICAgICAgICAgIChm bGFncyAmIFBDSV9CQVJfVkYpID8gIlNSLUlPViAiIDogIiIsIHNiZGYuc2VnLCBzYmRmLmJ1cywK KyAgICAgICAgICAgICAgICAgICBzYmRmLmRldiwgc2JkZi5mdW5jLCAoZmxhZ3MgJiBQQ0lfQkFS X1ZGKSA/ICJ2ZiAiIDogIiIpOworICAgICAgICAgICAgKnBzaXplID0gMDsKKyAgICAgICAgICAg IHJldHVybiAxOworICAgICAgICB9CisgICAgICAgIGhpID0gcGNpX2NvbmZfcmVhZDMyKHNiZGYu c2VnLCBzYmRmLmJ1cywgc2JkZi5kZXYsIHNiZGYuZnVuYywgcG9zICsgNCk7CisgICAgICAgIHBj aV9jb25mX3dyaXRlMzIoc2JkZi5zZWcsIHNiZGYuYnVzLCBzYmRmLmRldiwgc2JkZi5mdW5jLCBw b3MgKyA0LCB+MCk7CisgICAgfQorICAgIHNpemUgPSBwY2lfY29uZl9yZWFkMzIoc2JkZi5zZWcs IHNiZGYuYnVzLCBzYmRmLmRldiwgc2JkZi5mdW5jLCBwb3MpICYKKyAgICAgICAgICAgUENJX0JB U0VfQUREUkVTU19NRU1fTUFTSzsKKyAgICBpZiAoIChiYXIgJiBQQ0lfQkFTRV9BRERSRVNTX01F TV9UWVBFX01BU0spID09CisgICAgICAgICBQQ0lfQkFTRV9BRERSRVNTX01FTV9UWVBFXzY0ICkK KyAgICB7CisgICAgICAgIHNpemUgfD0gKHVpbnQ2NF90KXBjaV9jb25mX3JlYWQzMihzYmRmLnNl Zywgc2JkZi5idXMsIHNiZGYuZGV2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2JkZi5mdW5jLCBwb3MgKyA0KSA8PCAzMjsKKyAgICAgICAgcGNpX2NvbmZfd3Jp dGUzMihzYmRmLnNlZywgc2JkZi5idXMsIHNiZGYuZGV2LCBzYmRmLmZ1bmMsIHBvcyArIDQsIGhp KTsKKyAgICB9CisgICAgZWxzZSBpZiAoIHNpemUgKQorICAgICAgICBzaXplIHw9ICh1aW50NjRf dCl+MCA8PCAzMjsKKyAgICBwY2lfY29uZl93cml0ZTMyKHNiZGYuc2VnLCBzYmRmLmJ1cywgc2Jk Zi5kZXYsIHNiZGYuZnVuYywgcG9zLCBiYXIpOworICAgIHNpemUgPSAtc2l6ZTsKKworICAgIGlm ICggcGFkZHIgKQorICAgICAgICAqcGFkZHIgPSAoYmFyICYgUENJX0JBU0VfQUREUkVTU19NRU1f TUFTSykgfCAoKHVpbnQ2NF90KWhpIDw8IDMyKTsKKyAgICAqcHNpemUgPSBzaXplOworCisgICAg aWYgKCAoYmFyICYgUENJX0JBU0VfQUREUkVTU19NRU1fVFlQRV9NQVNLKSA9PQorICAgICAgICAg UENJX0JBU0VfQUREUkVTU19NRU1fVFlQRV82NCApCisgICAgICAgIHJldHVybiAyOworCisgICAg cmV0dXJuIDE7Cit9CisKIGludCBwY2lfYWRkX2RldmljZSh1MTYgc2VnLCB1OCBidXMsIHU4IGRl dmZuLAogICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2X2luZm8gKmluZm8s IG5vZGVpZF90IG5vZGUpCiB7CkBAIC02NzIsMTEgKzcyMiwxNiBAQCBpbnQgcGNpX2FkZF9kZXZp Y2UodTE2IHNlZywgdTggYnVzLCB1OCBkZXZmbiwKICAgICAgICAgICAgIHVuc2lnbmVkIGludCBp OwogCiAgICAgICAgICAgICBCVUlMRF9CVUdfT04oQVJSQVlfU0laRShwZGV2LT52Zl9ybGVuKSAh PSBQQ0lfU1JJT1ZfTlVNX0JBUlMpOwotICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBQQ0lf U1JJT1ZfTlVNX0JBUlM7ICsraSApCisgICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IFBDSV9T UklPVl9OVU1fQkFSUzsgKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCBpZHggPSBwb3MgKyBQQ0lfU1JJT1ZfQkFSICsgaSAqIDQ7CiAgICAgICAgICAgICAgICAg dTMyIGJhciA9IHBjaV9jb25mX3JlYWQzMihzZWcsIGJ1cywgc2xvdCwgZnVuYywgaWR4KTsKLSAg ICAgICAgICAgICAgICB1MzIgaGkgPSAwOworICAgICAgICAgICAgICAgIHBjaV9zYmRmX3Qgc2Jk ZiA9IHsKKyAgICAgICAgICAgICAgICAgICAgLnNlZyA9IHNlZywKKyAgICAgICAgICAgICAgICAg ICAgLmJ1cyA9IGJ1cywKKyAgICAgICAgICAgICAgICAgICAgLmRldiA9IHNsb3QsCisgICAgICAg ICAgICAgICAgICAgIC5mdW5jID0gZnVuYywKKyAgICAgICAgICAgICAgICB9OwogCiAgICAgICAg ICAgICAgICAgaWYgKCAoYmFyICYgUENJX0JBU0VfQUREUkVTU19TUEFDRSkgPT0KICAgICAgICAg ICAgICAgICAgICAgIFBDSV9CQVNFX0FERFJFU1NfU1BBQ0VfSU8gKQpAQCAtNjg3LDM4ICs3NDIs MTIgQEAgaW50IHBjaV9hZGRfZGV2aWNlKHUxNiBzZWcsIHU4IGJ1cywgdTggZGV2Zm4sCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzZWcsIGJ1cywgc2xvdCwgZnVuYywgaSk7CiAgICAgICAg ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg ICBwY2lfY29uZl93cml0ZTMyKHNlZywgYnVzLCBzbG90LCBmdW5jLCBpZHgsIH4wKTsKLSAgICAg ICAgICAgICAgICBpZiAoIChiYXIgJiBQQ0lfQkFTRV9BRERSRVNTX01FTV9UWVBFX01BU0spID09 Ci0gICAgICAgICAgICAgICAgICAgICBQQ0lfQkFTRV9BRERSRVNTX01FTV9UWVBFXzY0ICkKLSAg ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICggaSA+PSBQQ0lfU1JJT1Zf TlVNX0JBUlMgKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAg ICBwcmludGsoWEVOTE9HX1dBUk5JTkcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi U1ItSU9WIGRldmljZSAlMDR4OiUwMng6JTAyeC4ldSB3aXRoIDY0LWJpdCIKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiIHZmIEJBUiBpbiBsYXN0IHNsb3RcbiIsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2VnLCBidXMsIHNsb3QsIGZ1bmMpOwotICAgICAgICAgICAg ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg ICAgICAgaGkgPSBwY2lfY29uZl9yZWFkMzIoc2VnLCBidXMsIHNsb3QsIGZ1bmMsIGlkeCArIDQp OwotICAgICAgICAgICAgICAgICAgICBwY2lfY29uZl93cml0ZTMyKHNlZywgYnVzLCBzbG90LCBm dW5jLCBpZHggKyA0LCB+MCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHBk ZXYtPnZmX3JsZW5baV0gPSBwY2lfY29uZl9yZWFkMzIoc2VnLCBidXMsIHNsb3QsIGZ1bmMsIGlk eCkgJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lfQkFTRV9BRERSRVNT X01FTV9NQVNLOwotICAgICAgICAgICAgICAgIGlmICggKGJhciAmIFBDSV9CQVNFX0FERFJFU1Nf TUVNX1RZUEVfTUFTSykgPT0KLSAgICAgICAgICAgICAgICAgICAgIFBDSV9CQVNFX0FERFJFU1Nf TUVNX1RZUEVfNjQgKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcGRl di0+dmZfcmxlbltpXSB8PSAodTY0KXBjaV9jb25mX3JlYWQzMihzZWcsIGJ1cywKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG90 LCBmdW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGlkeCArIDQpIDw8IDMyOwotICAgICAgICAgICAgICAgICAgICBwY2lfY29u Zl93cml0ZTMyKHNlZywgYnVzLCBzbG90LCBmdW5jLCBpZHggKyA0LCBoaSk7Ci0gICAgICAgICAg ICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKCBwZGV2LT52Zl9ybGVuW2ldICkKLSAg ICAgICAgICAgICAgICAgICAgcGRldi0+dmZfcmxlbltpXSB8PSAodTY0KX4wIDw8IDMyOwotICAg ICAgICAgICAgICAgIHBjaV9jb25mX3dyaXRlMzIoc2VnLCBidXMsIHNsb3QsIGZ1bmMsIGlkeCwg YmFyKTsKLSAgICAgICAgICAgICAgICBwZGV2LT52Zl9ybGVuW2ldID0gLXBkZXYtPnZmX3JsZW5b aV07Ci0gICAgICAgICAgICAgICAgaWYgKCAoYmFyICYgUENJX0JBU0VfQUREUkVTU19NRU1fVFlQ RV9NQVNLKSA9PQotICAgICAgICAgICAgICAgICAgICAgUENJX0JBU0VfQUREUkVTU19NRU1fVFlQ RV82NCApCi0gICAgICAgICAgICAgICAgICAgICsraTsKKyAgICAgICAgICAgICAgICByZXQgPSBw Y2lfc2l6ZV9tZW1fYmFyKHNiZGYsIGlkeCwgTlVMTCwgJnBkZXYtPnZmX3JsZW5baV0sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lfQkFSX1ZGIHwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoaSA9PSBQQ0lfU1JJT1ZfTlVNX0JBUlMg LSAxKSA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJX0JBUl9M QVNUIDogMCkpOworICAgICAgICAgICAgICAgIEFTU0VSVChyZXQpOworICAgICAgICAgICAgICAg IGkgKz0gcmV0OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVsc2UKZGlmZiAt LWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9wY2kuaCBiL3hlbi9pbmNsdWRlL3hlbi9wY2kuaAppbmRl eCBiN2E2YWJmYzUzLi4yZjE3MWE4ZGNjIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4vcGNp LmgKKysrIGIveGVuL2luY2x1ZGUveGVuL3BjaS5oCkBAIC0xODksNiArMTg5LDExIEBAIGNvbnN0 IGNoYXIgKnBhcnNlX3BjaShjb25zdCBjaGFyICosIHVuc2lnbmVkIGludCAqc2VnLCB1bnNpZ25l ZCBpbnQgKmJ1cywKIGNvbnN0IGNoYXIgKnBhcnNlX3BjaV9zZWcoY29uc3QgY2hhciAqLCB1bnNp Z25lZCBpbnQgKnNlZywgdW5zaWduZWQgaW50ICpidXMsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGludCAqZGV2LCB1bnNpZ25lZCBpbnQgKmZ1bmMsIGJvb2wgKmRlZl9zZWcp OwogCisjZGVmaW5lIFBDSV9CQVJfVkYgICAgICAoMXUgPDwgMCkKKyNkZWZpbmUgUENJX0JBUl9M QVNUICAgICgxdSA8PCAxKQordW5zaWduZWQgaW50IHBjaV9zaXplX21lbV9iYXIocGNpX3NiZGZf dCBzYmRmLCB1bnNpZ25lZCBpbnQgcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dWludDY0X3QgKnBhZGRyLCB1aW50NjRfdCAqcHNpemUsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpOwogCiBib29sX3QgcGNpZV9hZXJfZ2V0X2Zpcm13 YXJlX2ZpcnN0KGNvbnN0IHN0cnVjdCBwY2lfZGV2ICopOwogCi0tIAoyLjE2LjIKCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGlu ZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnBy b2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs