From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 95C2DA04C7; Tue, 15 Sep 2020 10:18:55 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id BC5751BE8E; Tue, 15 Sep 2020 10:18:54 +0200 (CEST) Received: from out0-148.mail.aliyun.com (out0-148.mail.aliyun.com [140.205.0.148]) by dpdk.org (Postfix) with ESMTP id 8C8C9DE0 for ; Tue, 15 Sep 2020 10:18:49 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=alibaba-inc.com; s=default; t=1600157925; h=Date:From:To:Message-ID:Subject:MIME-Version:Content-Type; bh=16bLqgUcX0wWctsjkqB6QzP6YwuM04tAScB82HoA4A4=; b=K7AT2tAt383CQ9olgK6Fg7Cr6rVfTQsjevQsXkoNXSO7M8FT5nBxIXTx1zKvUoow+w5VaAFEAy7zSzAoz562UlcDXspgJIYovAgfvJUJQJ837RFgcffBHMusem544TkjFgBTTzM/Ibx+cE31pc9QBEG0dcQ0Q5lf1KDZK6jA7IY= X-Alimail-AntiSpam: AC=PASS; BC=-1|-1; BR=01201311R521e4; CH=green; DM=||false|; DS=||; FP=0|-1|-1|-1|0|-1|-1|-1; HT=e01a16378; MF=huawei.xhw@alibaba-inc.com; NM=1; PH=DW; RN=4; SR=0; TI=W4_5948689_v5ForDing_0A930F0C_1600157869590_o7001c14316; Received: from WS-web (huawei.xhw@alibaba-inc.com[W4_5948689_v5ForDing_0A930F0C_1600157869590_o7001c14316]) by ay29a011140100240.et135 at Tue, 15 Sep 2020 16:18:43 +0800 Date: Tue, 15 Sep 2020 16:18:43 +0800 From: "=?UTF-8?B?6LCi5Y2O5LyfKOatpOaXtuatpOWIu++8iQ==?=" To: "dev" Cc: "ferruh.yigit" , "=?UTF-8?B?V2FuZywgWmhpaG9uZw==?=" , "=?UTF-8?B?WGlhLCBDaGVuYm8=?=" Message-ID: <19840b6a-b08f-4877-a530-15ced259bedf.huawei.xhw@alibaba-inc.com> X-Mailer: [Alimail-Mailagent][W4_5948689][v5ForDing][Chrome] MIME-Version: 1.0 x-aliyun-mail-creator: W4_5948689_v5ForDing_BkaTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV09XNjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS84My4wLjQxMDMuOTcgU2FmYXJpLzUzNy4zNiBkaW5ndGFsay13aW4vMS4wLjAgbncoMC4xNC43KSBEaW5nVGFsayg1LjMuNi1SZWxlYXNlLjM4MzgpIE1vam8vMS4wLjAgTmF0aXZlIEFwcFR5cGUocmVsZWFzZSkgQ2hhbm5lbC8yMDEyMDA=zN Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 Subject: [dpdk-dev] =?utf-8?q?=5BPATCH=5D_pci=3A__support_both_PIO_and_MMI?= =?utf-8?q?O_BAR_for_legacy_virtio_on_x86?= X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: =?UTF-8?B?6LCi5Y2O5LyfKOatpOaXtuatpOWIu++8iQ==?= List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" RnJvbSBkMDEzOGYyNDAzN2Q4ZGYxNGNhYzA0YzJjMjQ4MzFlNGI1ZDI3YjhjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaHVhd2VpLnhodyIgPGh1YXdlaS54aHdAYWxpYmFiYS1pbmMu Y29tPgpEYXRlOiBNb24sIDE0IFNlcCAyMDIwIDIzOjQ0OjU2ICswODAwClN1YmplY3Q6IFtQQVRD SF0gcGNpOiAgc3VwcG9ydCBib3RoIFBJTyBhbmQgTU1JTyBCQVIgZm9yIGxlZ2FjeSB2aXJ0aW8g b24geDg2CgpJbiBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbiwgd2l0aCBpZ2JfdWlvIHdlIGdldCBQ SU8gYWRkcmVzcyBmcm9tIGlnYl91aW8Kc3lzZnMgZW50cnk7IHdpdGggdWlvX3BjaV9nZW5lcmlj LCB3ZSBnZXQgUElPIGFkZHJlc3MgZnJvbQovcHJvYy9pb3BvcnRzLgpGb3IgUElPL01NSU8gUlcs IHRoZXJlIGlzIGRpZmZlcmVudCBwYXRoIGZvciBkaWZmZXJlbnQgZHJpdmVycyBhbmQgYXJjaC4K Rm9yIFZGSU8sIFBJTy9NTUlPIFJXIGlzIHRocm91Z2ggc3lzY2FsbCwgd2hpY2ggaGFzIGJpZyBw ZXJmb3JtYW5jZQppc3N1ZS4KT24gWDg2LCBpdCBhc3N1bWVzIG9ubHkgUElPIGlzIHN1cHBvcnRl ZC4KClRoaXMgaXMgdG9vIG11Y2ggdHdpc3RlZC4KVGhpcyBwYXRjaCB1bmlmaWVzIHRoZSB3YXkg dG8gZ2V0IGJvdGggUElPIGFuZCBNTUlPIGFkZHJlc3MgZm9yIGRpZmZlcmVudCBkcml2ZXIKYW5k IGFyY2gsIGFsbCBmcm9tIHN0YW5kYXJkIHJlc291cmNlIGF0dHIgdW5kZXIgcGNpIHN5c2ZzLgoK V2UgZGlzdGluZ3Vpc2ggUElPIGFuZCBNTUlPIGJ5IHRoZWlyIGFkZHJlc3MuIEl0IGlzIHVnbHkg YnV0IHdvcmtzLgoKU2lnbmVkLW9mZi1ieTogaHVhd2VpLnhodyA8aHVhd2VpLnhod0BhbGliYWJh LWluYy5jb20+Ci0tLQogZHJpdmVycy9idXMvcGNpL2xpbnV4L3BjaS5jICAgICB8ICA4OSArLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2J1cy9wY2kvbGludXgvcGNpX3Vpby5jIHwgMTYz ICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdl ZCwgMTE2IGluc2VydGlvbnMoKyksIDEzNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2J1cy9wY2kvbGludXgvcGNpLmMgYi9kcml2ZXJzL2J1cy9wY2kvbGludXgvcGNpLmMKaW5k ZXggYTIxOThhYi4uMTFjYzdkZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9idXMvcGNpL2xpbnV4L3Bj aS5jCisrKyBiL2RyaXZlcnMvYnVzL3BjaS9saW51eC9wY2kuYwpAQCAtNjg3LDcxICs2ODcsNiBA QCBpbnQgcnRlX3BjaV93cml0ZV9jb25maWcoY29uc3Qgc3RydWN0IHJ0ZV9wY2lfZGV2aWNlICpk ZXZpY2UsCiAJfQogfQogCi0jaWYgZGVmaW5lZChSVEVfQVJDSF9YODYpCi1zdGF0aWMgaW50Ci1w Y2lfaW9wb3J0X21hcChzdHJ1Y3QgcnRlX3BjaV9kZXZpY2UgKmRldiwgaW50IGJhciBfX3J0ZV91 bnVzZWQsCi0JCXN0cnVjdCBydGVfcGNpX2lvcG9ydCAqcCkKLXsKLQl1aW50MTZfdCBzdGFydCwg ZW5kOwotCUZJTEUgKmZwOwotCWNoYXIgKmxpbmUgPSBOVUxMOwotCWNoYXIgcGNpX2lkWzE2XTsK LQlpbnQgZm91bmQgPSAwOwotCXNpemVfdCBsaW5lc3o7Ci0KLQlpZiAocnRlX2VhbF9pb3BsX2lu aXQoKSAhPSAwKSB7Ci0JCVJURV9MT0coRVJSLCBFQUwsICIlcygpOiBpbnN1ZmZpY2llbnQgaW9w b3J0IHBlcm1pc3Npb25zIGZvciBQQ0kgZGV2aWNlICVzXG4iLAotCQkJX19mdW5jX18sIGRldi0+ bmFtZSk7Ci0JCXJldHVybiAtMTsKLQl9Ci0KLQlzbnByaW50ZihwY2lfaWQsIHNpemVvZihwY2lf aWQpLCBQQ0lfUFJJX0ZNVCwKLQkJIGRldi0+YWRkci5kb21haW4sIGRldi0+YWRkci5idXMsCi0J CSBkZXYtPmFkZHIuZGV2aWQsIGRldi0+YWRkci5mdW5jdGlvbik7Ci0KLQlmcCA9IGZvcGVuKCIv cHJvYy9pb3BvcnRzIiwgInIiKTsKLQlpZiAoZnAgPT0gTlVMTCkgewotCQlSVEVfTE9HKEVSUiwg RUFMLCAiJXMoKTogY2FuJ3Qgb3BlbiBpb3BvcnRzXG4iLCBfX2Z1bmNfXyk7Ci0JCXJldHVybiAt MTsKLQl9Ci0KLQl3aGlsZSAoZ2V0ZGVsaW0oJmxpbmUsICZsaW5lc3osICdcbicsIGZwKSA+IDAp IHsKLQkJY2hhciAqcHRyID0gbGluZTsKLQkJY2hhciAqbGVmdDsKLQkJaW50IG47Ci0KLQkJbiA9 IHN0cmNzcG4ocHRyLCAiOiIpOwotCQlwdHJbbl0gPSAwOwotCQlsZWZ0ID0gJnB0cltuICsgMV07 Ci0KLQkJd2hpbGUgKCpsZWZ0ICYmIGlzc3BhY2UoKmxlZnQpKQotCQkJbGVmdCsrOwotCi0JCWlm ICghc3RybmNtcChsZWZ0LCBwY2lfaWQsIHN0cmxlbihwY2lfaWQpKSkgewotCQkJZm91bmQgPSAx OwotCi0JCQl3aGlsZSAoKnB0ciAmJiBpc3NwYWNlKCpwdHIpKQotCQkJCXB0cisrOwotCi0JCQlz c2NhbmYocHRyLCAiJTA0aHgtJTA0aHgiLCAmc3RhcnQsICZlbmQpOwotCi0JCQlicmVhazsKLQkJ fQotCX0KLQotCWZyZWUobGluZSk7Ci0JZmNsb3NlKGZwKTsKLQotCWlmICghZm91bmQpCi0JCXJl dHVybiAtMTsKLQotCXAtPmJhc2UgPSBzdGFydDsKLQlSVEVfTE9HKERFQlVHLCBFQUwsICJQQ0kg UG9ydCBJTyBmb3VuZCBzdGFydD0weCV4XG4iLCBzdGFydCk7Ci0KLQlyZXR1cm4gMDsKLX0KLSNl bmRpZgotCiBpbnQKIHJ0ZV9wY2lfaW9wb3J0X21hcChzdHJ1Y3QgcnRlX3BjaV9kZXZpY2UgKmRl diwgaW50IGJhciwKIAkJc3RydWN0IHJ0ZV9wY2lfaW9wb3J0ICpwKQpAQCAtNzYyLDE4ICs2OTcs MTIgQEAgaW50IHJ0ZV9wY2lfd3JpdGVfY29uZmlnKGNvbnN0IHN0cnVjdCBydGVfcGNpX2Rldmlj ZSAqZGV2aWNlLAogI2lmZGVmIFZGSU9fUFJFU0VOVAogCWNhc2UgUlRFX0tEUlZfVkZJTzoKIAkJ aWYgKHBjaV92ZmlvX2lzX2VuYWJsZWQoKSkKLQkJCXJldCA9IHBjaV92ZmlvX2lvcG9ydF9tYXAo ZGV2LCBiYXIsIHApOworCQkJcmV0ID0gcGNpX3Vpb19pb3BvcnRfbWFwKGRldiwgYmFyLCBwKTsK IAkJYnJlYWs7CiAjZW5kaWYKIAljYXNlIFJURV9LRFJWX0lHQl9VSU86Ci0JCXJldCA9IHBjaV91 aW9faW9wb3J0X21hcChkZXYsIGJhciwgcCk7Ci0JCWJyZWFrOwogCWNhc2UgUlRFX0tEUlZfVUlP X0dFTkVSSUM6Ci0jaWYgZGVmaW5lZChSVEVfQVJDSF9YODYpCi0JCXJldCA9IHBjaV9pb3BvcnRf bWFwKGRldiwgYmFyLCBwKTsKLSNlbHNlCiAJCXJldCA9IHBjaV91aW9faW9wb3J0X21hcChkZXYs IGJhciwgcCk7Ci0jZW5kaWYKIAkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJYnJlYWs7CkBAIC03OTIs MTIgKzcyMSwxMCBAQCBpbnQgcnRlX3BjaV93cml0ZV9jb25maWcoY29uc3Qgc3RydWN0IHJ0ZV9w Y2lfZGV2aWNlICpkZXZpY2UsCiAJc3dpdGNoIChwLT5kZXYtPmtkcnYpIHsKICNpZmRlZiBWRklP X1BSRVNFTlQKIAljYXNlIFJURV9LRFJWX1ZGSU86Ci0JCXBjaV92ZmlvX2lvcG9ydF9yZWFkKHAs IGRhdGEsIGxlbiwgb2Zmc2V0KTsKKwkJcGNpX3Vpb19pb3BvcnRfcmVhZChwLCBkYXRhLCBsZW4s IG9mZnNldCk7CiAJCWJyZWFrOwogI2VuZGlmCiAJY2FzZSBSVEVfS0RSVl9JR0JfVUlPOgotCQlw Y2lfdWlvX2lvcG9ydF9yZWFkKHAsIGRhdGEsIGxlbiwgb2Zmc2V0KTsKLQkJYnJlYWs7CiAJY2Fz ZSBSVEVfS0RSVl9VSU9fR0VORVJJQzoKIAkJcGNpX3Vpb19pb3BvcnRfcmVhZChwLCBkYXRhLCBs ZW4sIG9mZnNldCk7CiAJCWJyZWFrOwpAQCAtODEzLDEyICs3NDAsMTAgQEAgaW50IHJ0ZV9wY2lf d3JpdGVfY29uZmlnKGNvbnN0IHN0cnVjdCBydGVfcGNpX2RldmljZSAqZGV2aWNlLAogCXN3aXRj aCAocC0+ZGV2LT5rZHJ2KSB7CiAjaWZkZWYgVkZJT19QUkVTRU5UCiAJY2FzZSBSVEVfS0RSVl9W RklPOgotCQlwY2lfdmZpb19pb3BvcnRfd3JpdGUocCwgZGF0YSwgbGVuLCBvZmZzZXQpOworCQlw Y2lfdWlvX2lvcG9ydF93cml0ZShwLCBkYXRhLCBsZW4sIG9mZnNldCk7CiAJCWJyZWFrOwogI2Vu ZGlmCiAJY2FzZSBSVEVfS0RSVl9JR0JfVUlPOgotCQlwY2lfdWlvX2lvcG9ydF93cml0ZShwLCBk YXRhLCBsZW4sIG9mZnNldCk7Ci0JCWJyZWFrOwogCWNhc2UgUlRFX0tEUlZfVUlPX0dFTkVSSUM6 CiAJCXBjaV91aW9faW9wb3J0X3dyaXRlKHAsIGRhdGEsIGxlbiwgb2Zmc2V0KTsKIAkJYnJlYWs7 CkBAIC04MzYsMTggKzc2MSwxMiBAQCBpbnQgcnRlX3BjaV93cml0ZV9jb25maWcoY29uc3Qgc3Ry dWN0IHJ0ZV9wY2lfZGV2aWNlICpkZXZpY2UsCiAjaWZkZWYgVkZJT19QUkVTRU5UCiAJY2FzZSBS VEVfS0RSVl9WRklPOgogCQlpZiAocGNpX3ZmaW9faXNfZW5hYmxlZCgpKQotCQkJcmV0ID0gcGNp X3ZmaW9faW9wb3J0X3VubWFwKHApOworCQkJcmV0ID0gcGNpX3Vpb19pb3BvcnRfdW5tYXAocCk7 CiAJCWJyZWFrOwogI2VuZGlmCiAJY2FzZSBSVEVfS0RSVl9JR0JfVUlPOgotCQlyZXQgPSBwY2lf dWlvX2lvcG9ydF91bm1hcChwKTsKLQkJYnJlYWs7CiAJY2FzZSBSVEVfS0RSVl9VSU9fR0VORVJJ QzoKLSNpZiBkZWZpbmVkKFJURV9BUkNIX1g4NikKLQkJcmV0ID0gMDsKLSNlbHNlCiAJCXJldCA9 IHBjaV91aW9faW9wb3J0X3VubWFwKHApOwotI2VuZGlmCiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJ CWJyZWFrOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9idXMvcGNpL2xpbnV4L3BjaV91aW8uYyBiL2Ry aXZlcnMvYnVzL3BjaS9saW51eC9wY2lfdWlvLmMKaW5kZXggMDk3ZGMxOS4uODMzNzRlOCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9idXMvcGNpL2xpbnV4L3BjaV91aW8uYworKysgYi9kcml2ZXJzL2J1 cy9wY2kvbGludXgvcGNpX3Vpby5jCkBAIC0zNzIsNTIgKzM3Miw4MiBAQAogcGNpX3Vpb19pb3Bv cnRfbWFwKHN0cnVjdCBydGVfcGNpX2RldmljZSAqZGV2LCBpbnQgYmFyLAogCQkgICBzdHJ1Y3Qg cnRlX3BjaV9pb3BvcnQgKnApCiB7CisJRklMRSAqZiA9IE5VTEw7CiAJY2hhciBkaXJuYW1lW1BB VEhfTUFYXTsKIAljaGFyIGZpbGVuYW1lW1BBVEhfTUFYXTsKKwljaGFyIGJ1ZltCVUZTSVpdOwor CWludDY0X3QgcGh5c19hZGRyLCBlbmRfYWRkciwgZmxhZ3M7CiAJaW50IHVpb19udW07Ci0JdW5z aWduZWQgbG9uZyBzdGFydDsKKwl1bnNpZ25lZCBsb25nIGJhc2U7CisJYm9vbCBpb2JhcjsKKwlp bnQgaTsKIAotCWlmIChydGVfZWFsX2lvcGxfaW5pdCgpICE9IDApIHsKLQkJUlRFX0xPRyhFUlIs IEVBTCwgIiVzKCk6IGluc3VmZmljaWVudCBpb3BvcnQgcGVybWlzc2lvbnMgZm9yIFBDSSBkZXZp Y2UgJXNcbiIsCi0JCQlfX2Z1bmNfXywgZGV2LT5uYW1lKTsKKwkvKiBvcGVuIGFuZCByZWFkIGFk ZHJlc3NlcyBvZiB0aGUgY29ycmVzcG9uZGluZyByZXNvdXJjZSBpbiBzeXNmcyAqLworCXNucHJp bnRmKGZpbGVuYW1lLCBzaXplb2YoZmlsZW5hbWUpLCAiJXMvIiBQQ0lfUFJJX0ZNVCAiL3Jlc291 cmNlIiwKKwkJcnRlX3BjaV9nZXRfc3lzZnNfcGF0aCgpLCBkZXYtPmFkZHIuZG9tYWluLCBkZXYt PmFkZHIuYnVzLAorCQlkZXYtPmFkZHIuZGV2aWQsIGRldi0+YWRkci5mdW5jdGlvbik7CisJZiA9 IGZvcGVuKGZpbGVuYW1lLCAiciIpOworCWlmIChmID09IE5VTEwpIHsKKwkJUlRFX0xPRyhFUlIs IEVBTCwgIkNhbm5vdCBvcGVuIHN5c2ZzIHJlc291cmNlOiAlc1xuIiwKKwkJCXN0cmVycm9yKGVy cm5vKSk7CiAJCXJldHVybiAtMTsKIAl9CiAKLQl1aW9fbnVtID0gcGNpX2dldF91aW9fZGV2KGRl diwgZGlybmFtZSwgc2l6ZW9mKGRpcm5hbWUpLCAwKTsKLQlpZiAodWlvX251bSA8IDApCi0JCXJl dHVybiAtMTsKKwlmb3IgKGkgPSAwOyBpIDwgYmFyICsgMTsgaSsrKSB7CisJCWlmIChmZ2V0cyhi dWYsIHNpemVvZihidWYpLCBmKSA9PSBOVUxMKSB7CisJCQlSVEVfTE9HKEVSUiwgRUFMLCAiQ2Fu bm90IHJlYWQgc3lzZnMgcmVzb3VyY2VcbiIpOworCQkJZ290byBlcnJvcjsKKwkJfQorCX0KKwlp ZiAocGNpX3BhcnNlX29uZV9zeXNmc19yZXNvdXJjZShidWYsIHNpemVvZihidWYpLCAmcGh5c19h ZGRyLAorCQkmZW5kX2FkZHIsICZmbGFncykgPCAwKQorCQlnb3RvIGVycm9yOwogCi0JLyogZ2V0 IHBvcnRpbyBzdGFydCAqLwotCXNucHJpbnRmKGZpbGVuYW1lLCBzaXplb2YoZmlsZW5hbWUpLAot CQkgIiVzL3BvcnRpby9wb3J0JWQvc3RhcnQiLCBkaXJuYW1lLCBiYXIpOwotCWlmIChlYWxfcGFy c2Vfc3lzZnNfdmFsdWUoZmlsZW5hbWUsICZzdGFydCkgPCAwKSB7Ci0JCVJURV9MT0coRVJSLCBF QUwsICIlcygpOiBjYW5ub3QgcGFyc2UgcG9ydGlvIHN0YXJ0XG4iLAotCQkJX19mdW5jX18pOwot CQlyZXR1cm4gLTE7CisJaWYgKGZsYWdzICYgSU9SRVNPVVJDRV9JTykgeworCQlpb2JhciA9IDE7 CisJCWJhc2UgPSAodW5zaWduZWQgbG9uZylwaHlzX2FkZHI7CisJCVJURV9MT0coSU5GTywgRUFM LCAiJXMoKTogUElPIEJBUiAlMDhseCBkZXRlY3RlZFxuIiwgX19mdW5jX18sIGJhc2UpOworCX0g ZWxzZSBpZiAoZmxhZ3MgJiBJT1JFU09VUkNFX01FTSkgeworCQlpb2JhciA9IDA7CisJCWJhc2Ug PSAodW5zaWduZWQgbG9uZylkZXYtPm1lbV9yZXNvdXJjZVtiYXJdLmFkZHI7CisJCVJURV9MT0co SU5GTywgRUFMLCAiJXMoKTogTU1JTyBCQVIgJTA4bHggZGV0ZWN0ZWRcbiIsIF9fZnVuY19fLCBi YXNlKTsKKwl9IGVsc2UgeworCQlSVEVfTE9HKEVSUiwgRUFMLCAiJXMoKTogdW5rbm93biBCQVIg dHlwZVxuIiwgX19mdW5jX18pOworCQlnb3RvIGVycm9yOworCX0KKworCWlmIChpb2JhciAmJiBy dGVfZWFsX2lvcGxfaW5pdCgpICE9IDApIHsKKwkJUlRFX0xPRyhFUlIsIEVBTCwgIiVzKCk6IGlu c3VmZmljaWVudCBpb3BvcnQgcGVybWlzc2lvbnMgZm9yIFBDSSBkZXZpY2UgJXNcbiIsCisJCQlf X2Z1bmNfXywgZGV2LT5uYW1lKTsKKwkJZ290byBlcnJvcjsKIAl9Ci0JLyogZW5zdXJlIHdlIGRv bid0IGdldCBhbnl0aGluZyBmdW5ueSBoZXJlLCByZWFkL3dyaXRlIHdpbGwgY2FzdCB0bwotCSAq IHVpbjE2X3QgKi8KLQlpZiAoc3RhcnQgPiBVSU5UMTZfTUFYKQotCQlyZXR1cm4gLTE7CiAKIAkv KiBGSVhNRSBvbmx5IGZvciBwcmltYXJ5IHByb2Nlc3MgPyAqLwogCWlmIChkZXYtPmludHJfaGFu ZGxlLnR5cGUgPT0gUlRFX0lOVFJfSEFORExFX1VOS05PV04pIHsKKwkJdWlvX251bSA9IHBjaV9n ZXRfdWlvX2RldihkZXYsIGRpcm5hbWUsIHNpemVvZihkaXJuYW1lKSwgMCk7CisJCWlmICh1aW9f bnVtIDwgMCkKKwkJCWdvdG8gZXJyb3I7CiAKIAkJc25wcmludGYoZmlsZW5hbWUsIHNpemVvZihm aWxlbmFtZSksICIvZGV2L3VpbyV1IiwgdWlvX251bSk7CiAJCWRldi0+aW50cl9oYW5kbGUuZmQg PSBvcGVuKGZpbGVuYW1lLCBPX1JEV1IpOwogCQlpZiAoZGV2LT5pbnRyX2hhbmRsZS5mZCA8IDAp IHsKIAkJCVJURV9MT0coRVJSLCBFQUwsICJDYW5ub3Qgb3BlbiAlczogJXNcbiIsCiAJCQkJZmls ZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7Ci0JCQlyZXR1cm4gLTE7CisJCQlnb3RvIGVycm9yOwog CQl9CiAJCWRldi0+aW50cl9oYW5kbGUudHlwZSA9IFJURV9JTlRSX0hBTkRMRV9VSU87CiAJfQog Ci0JUlRFX0xPRyhERUJVRywgRUFMLCAiUENJIFBvcnQgSU8gZm91bmQgc3RhcnQ9MHglbHhcbiIs IHN0YXJ0KTsKKwlSVEVfTE9HKERFQlVHLCBFQUwsICJQQ0kgSU8gcG9ydCBmb3VuZCBzdGFydD0w eCVseFxuIiwgYmFzZSk7CiAKLQlwLT5iYXNlID0gc3RhcnQ7CisJcC0+YmFzZSA9IGJhc2U7CiAJ cC0+bGVuID0gMDsKKwlmY2xvc2UoZik7CiAJcmV0dXJuIDA7CitlcnJvcjoKKwlpZiAoZikKKwkJ ZmNsb3NlKGYpOworCXJldHVybiAtMTsKIH0KICNlbHNlCiBpbnQKQEAgLTQ4OCw2ICs1MTgsNjEg QEAKIH0KICNlbmRpZgogCisjZGVmaW5lIFBJT19NQVggMHgxMDAwMAorc3RhdGljIGlubGluZSB1 aW50OF90IGlvcmVhZDgodm9pZCAqYWRkcikKK3sKKwl1aW50OF90IHZhbDsKKworCXZhbCA9ICh1 aW50NjRfdCkodWludHB0cl90KWFkZHIgPj0gUElPX01BWCA/CisJCSoodm9sYXRpbGUgdWludDhf dCAqKWFkZHIgOgorCQlpbmIoKHVuc2lnbmVkIGxvbmcpYWRkcik7CisKKwlyZXR1cm4gdmFsOwor fQorCitzdGF0aWMgaW5saW5lIHVpbnQxNl90IGlvcmVhZDE2KHZvaWQgKmFkZHIpCit7CisJdWlu dDE2X3QgdmFsOworCisJdmFsID0gKHVpbnQ2NF90KSh1aW50cHRyX3QpYWRkciA+PSBQSU9fTUFY ID8KKwkJKih2b2xhdGlsZSB1aW50MTZfdCAqKWFkZHIgOgorCQlpbncoKHVuc2lnbmVkIGxvbmcp YWRkcik7CisKKwlyZXR1cm4gdmFsOworfQorCitzdGF0aWMgaW5saW5lIHVpbnQzMl90IGlvcmVh ZDMyKHZvaWQgKmFkZHIpCit7CisJdWludDMyX3QgdmFsOworCisJdmFsID0gKHVpbnQ2NF90KSh1 aW50cHRyX3QpYWRkciA+PSBQSU9fTUFYID8KKwkJKih2b2xhdGlsZSB1aW50MzJfdCAqKWFkZHIg OgorCWlubCgodW5zaWduZWQgbG9uZylhZGRyKTsKKworCXJldHVybiB2YWw7Cit9CisKK3N0YXRp YyBpbmxpbmUgdm9pZCBpb3dyaXRlOCh1aW50OF90IHZhbCwgdm9pZCAqYWRkcikKK3sKKwkodWlu dDY0X3QpKHVpbnRwdHJfdClhZGRyID49IFBJT19NQVggPworCQkqKHZvbGF0aWxlIHVpbnQ4X3Qg KilhZGRyID0gdmFsIDoKKwkJb3V0Yih2YWwsICh1bnNpZ25lZCBsb25nKWFkZHIpOworfQorCitz dGF0aWMgaW5saW5lIHZvaWQgaW93cml0ZTE2KHVpbnQxNl90IHZhbCwgdm9pZCAqYWRkcikKK3sK KwkodWludDY0X3QpKHVpbnRwdHJfdClhZGRyID49IFBJT19NQVggPworCQkqKHZvbGF0aWxlIHVp bnQxNl90ICopYWRkciA9IHZhbCA6CisJCW91dHcodmFsLCAodW5zaWduZWQgbG9uZylhZGRyKTsK K30KKworc3RhdGljIGlubGluZSB2b2lkIGlvd3JpdGUzMih1aW50MzJfdCB2YWwsIHZvaWQgKmFk ZHIpCit7CisJKHVpbnQ2NF90KSh1aW50cHRyX3QpYWRkciA+PSBQSU9fTUFYID8KKwkJKih2b2xh dGlsZSB1aW50MzJfdCAqKWFkZHIgPSB2YWwgOgorCQlvdXRsKHZhbCwgKHVuc2lnbmVkIGxvbmcp YWRkcik7Cit9CisKIHZvaWQKIHBjaV91aW9faW9wb3J0X3JlYWQoc3RydWN0IHJ0ZV9wY2lfaW9w b3J0ICpwLAogCQkgICAgdm9pZCAqZGF0YSwgc2l6ZV90IGxlbiwgb2ZmX3Qgb2Zmc2V0KQpAQCAt NDk5LDI1ICs1ODQsMTMgQEAKIAlmb3IgKGQgPSBkYXRhOyBsZW4gPiAwOyBkICs9IHNpemUsIHJl ZyArPSBzaXplLCBsZW4gLT0gc2l6ZSkgewogCQlpZiAobGVuID49IDQpIHsKIAkJCXNpemUgPSA0 OwotI2lmIGRlZmluZWQoUlRFX0FSQ0hfWDg2KQotCQkJKih1aW50MzJfdCAqKWQgPSBpbmwocmVn KTsKLSNlbHNlCi0JCQkqKHVpbnQzMl90ICopZCA9ICoodm9sYXRpbGUgdWludDMyX3QgKilyZWc7 Ci0jZW5kaWYKKwkJCSoodWludDMyX3QgKilkID0gaW9yZWFkMzIoKHZvaWQgKilyZWcpOwogCQl9 IGVsc2UgaWYgKGxlbiA+PSAyKSB7CiAJCQlzaXplID0gMjsKLSNpZiBkZWZpbmVkKFJURV9BUkNI X1g4NikKLQkJCSoodWludDE2X3QgKilkID0gaW53KHJlZyk7Ci0jZWxzZQotCQkJKih1aW50MTZf dCAqKWQgPSAqKHZvbGF0aWxlIHVpbnQxNl90ICopcmVnOwotI2VuZGlmCisJCQkqKHVpbnQxNl90 ICopZCA9IGlvcmVhZDE2KCh2b2lkICopcmVnKTsKIAkJfSBlbHNlIHsKIAkJCXNpemUgPSAxOwot I2lmIGRlZmluZWQoUlRFX0FSQ0hfWDg2KQotCQkJKmQgPSBpbmIocmVnKTsKLSNlbHNlCi0JCQkq ZCA9ICoodm9sYXRpbGUgdWludDhfdCAqKXJlZzsKLSNlbmRpZgorCQkJKmQgPSBpb3JlYWQ4KCh2 b2lkICopcmVnKTsKIAkJfQogCX0KIH0KQEAgLTUzMywyNSArNjA2LDEzIEBACiAJZm9yIChzID0g ZGF0YTsgbGVuID4gMDsgcyArPSBzaXplLCByZWcgKz0gc2l6ZSwgbGVuIC09IHNpemUpIHsKIAkJ aWYgKGxlbiA+PSA0KSB7CiAJCQlzaXplID0gNDsKLSNpZiBkZWZpbmVkKFJURV9BUkNIX1g4NikK LQkJCW91dGxfcCgqKGNvbnN0IHVpbnQzMl90ICopcywgcmVnKTsKLSNlbHNlCi0JCQkqKHZvbGF0 aWxlIHVpbnQzMl90ICopcmVnID0gKihjb25zdCB1aW50MzJfdCAqKXM7Ci0jZW5kaWYKKwkJCWlv d3JpdGUzMigqKGNvbnN0IHVpbnQzMl90ICopcywgKHZvaWQgKilyZWcpOwogCQl9IGVsc2UgaWYg KGxlbiA+PSAyKSB7CiAJCQlzaXplID0gMjsKLSNpZiBkZWZpbmVkKFJURV9BUkNIX1g4NikKLQkJ CW91dHdfcCgqKGNvbnN0IHVpbnQxNl90ICopcywgcmVnKTsKLSNlbHNlCi0JCQkqKHZvbGF0aWxl IHVpbnQxNl90ICopcmVnID0gKihjb25zdCB1aW50MTZfdCAqKXM7Ci0jZW5kaWYKKwkJCWlvd3Jp dGUxNigqKGNvbnN0IHVpbnQxNl90ICopcywgKHZvaWQgKilyZWcpOwogCQl9IGVsc2UgewogCQkJ c2l6ZSA9IDE7Ci0jaWYgZGVmaW5lZChSVEVfQVJDSF9YODYpCi0JCQlvdXRiX3AoKnMsIHJlZyk7 Ci0jZWxzZQotCQkJKih2b2xhdGlsZSB1aW50OF90ICopcmVnID0gKnM7Ci0jZW5kaWYKKwkJCWlv d3JpdGU4KCpzLCAodm9pZCAqKXJlZyk7CiAJCX0KIAl9CiB9Ci0tIAoxLjguMy4xCgoKCg==