From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: [PATCH RFC 12/12] xen/x86: route legacy PCI interrupts to Dom0 Date: Fri, 29 Jul 2016 18:29:07 +0200 Message-ID: <1469809747-11176-13-git-send-email-roger.pau@citrix.com> References: <1469809747-11176-1-git-send-email-roger.pau@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bTAfU-0003my-NG for xen-devel@lists.xenproject.org; Fri, 29 Jul 2016 16:29:48 +0000 In-Reply-To: <1469809747-11176-1-git-send-email-roger.pau@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Andrew Cooper , Paul Durrant , Jan Beulich , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org VGhpcyBpcyBkb25lIGFkZGluZyBzb21lIERvbTAgc3BlY2lmaWMgbG9naWMgdG8gdGhlIElPIEFQ SUMgZW11bGF0aW9uIGluc2lkZQpvZiBYZW4sIHNvIHRoYXQgd3JpdGVzIHRvIHRoZSBJTyBBUElD IHJlZ2lzdGVycyB0aGF0IHNob3VsZCB1bm1hc2sgYW4KaW50ZXJydXB0IHdpbGwgdGFrZSBjYXJl IG9mIHNldHRpbmcgdXAgdGhpcyBpbnRlcnJ1cHQgd2l0aCBYZW4uIEEgRG9tMApzcGVjaWZpYyBF SU8gaGFuZGxlciBhbHNvIGhhcyB0byBiZSB1c2VkLCBzaW5jZSBYZW4gZG9lc24ndCBrbm93IHRo ZQp0b3BvbG9neSBvZiB0aGUgUENJIGRldmljZXMgYW5kIGl0IGp1c3QgaGFzIHRvIHBhc3N0aHJv dWdoIHdoYXQgRG9tMCBkb2VzLgoKU2lnbmVkLW9mZi1ieTogUm9nZXIgUGF1IE1vbm7DqSA8cm9n ZXIucGF1QGNpdHJpeC5jb20+Ci0tLQpDYzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29t PgpDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQ2M6IFBhdWwg RHVycmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+Ci0tLQogeGVuL2FyY2gveDg2L2h2bS9p cnEuYyAgICAgICB8ICAgOSArKysKIHhlbi9hcmNoL3g4Ni9odm0vdmlvYXBpYy5jICAgfCAgMjgg KysrKysrKystCiB4ZW4vYXJjaC94ODYvcGh5c2Rldi5jICAgICAgIHwgICA2ICstCiB4ZW4vZHJp dmVycy9wYXNzdGhyb3VnaC9pby5jIHwgMTQ0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrLS0tLS0KIHhlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2lvLmggfCAgIDIgKwogeGVu L2luY2x1ZGUvYXNtLXg4Ni9pcnEuaCAgICB8ICAgNSArKwogeGVuL2luY2x1ZGUveGVuL2h2bS9p cnEuaCAgICB8ICAgMyArCiB4ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaCAgICAgIHwgICAxICsKIDgg ZmlsZXMgY2hhbmdlZCwgMTc4IGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vaXJxLmMgYi94ZW4vYXJjaC94ODYvaHZtL2lycS5jCmlu ZGV4IDUzMjNkN2MuLmJlOWI2NDggMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vaXJxLmMK KysrIGIveGVuL2FyY2gveDg2L2h2bS9pcnEuYwpAQCAtODgsNiArODgsMTUgQEAgdm9pZCBodm1f cGNpX2ludHhfYXNzZXJ0KAogICAgIHNwaW5fdW5sb2NrKCZkLT5hcmNoLmh2bV9kb21haW4uaXJx X2xvY2spOwogfQogCit2b2lkIGh2bV9od19nc2lfYXNzZXJ0KHN0cnVjdCBkb21haW4gKmQsIHVu c2lnbmVkIGludCBnc2kpCit7CisKKyAgICBBU1NFUlQoaXNfaGFyZHdhcmVfZG9tYWluKGQpKTsK KyAgICBzcGluX2xvY2soJmQtPmFyY2guaHZtX2RvbWFpbi5pcnFfbG9jayk7CisgICAgYXNzZXJ0 X2dzaShkLCBnc2kpOworICAgIHNwaW5fdW5sb2NrKCZkLT5hcmNoLmh2bV9kb21haW4uaXJxX2xv Y2spOworfQorCiBzdGF0aWMgdm9pZCBfX2h2bV9wY2lfaW50eF9kZWFzc2VydCgKICAgICBzdHJ1 Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgZGV2aWNlLCB1bnNpZ25lZCBpbnQgaW50eCkKIHsK ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vdmlvYXBpYy5jIGIveGVuL2FyY2gveDg2L2h2 bS92aW9hcGljLmMKaW5kZXggNjExYmU4Ny4uMTgzMDViZSAxMDA2NDQKLS0tIGEveGVuL2FyY2gv eDg2L2h2bS92aW9hcGljLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS92aW9hcGljLmMKQEAgLTE0 OCw2ICsxNDgsMjkgQEAgc3RhdGljIHZvaWQgdmlvYXBpY193cml0ZV9yZWRpcmVudCgKICAgICAg ICAgdW5tYXNrZWQgPSB1bm1hc2tlZCAmJiAhZW50LmZpZWxkcy5tYXNrOwogICAgIH0KIAorICAg IGlmICggaXNfaGFyZHdhcmVfZG9tYWluKGQpICYmIHVubWFza2VkICkKKyAgICB7CisgICAgICAg IGludCByZXQsIGdzaTsKKworICAgICAgICAvKiBJbnRlcnJ1cHQgaGFzIGJlZW4gdW5tYXNrZWQg Ki8KKyAgICAgICAgZ3NpID0gaWR4OworICAgICAgICByZXQgPSBtcF9yZWdpc3Rlcl9nc2koZ3Np LCBlbnQuZmllbGRzLnRyaWdfbW9kZSwgZW50LmZpZWxkcy5wb2xhcml0eSk7CisgICAgICAgIGlm ICggcmV0ICYmIHJldCAhPSAtRUVYSVNUICkKKyAgICAgICAgeworICAgICAgICAgICAgZ2Rwcmlu dGsoWEVOTE9HX1dBUk5JTkcsCisgICAgICAgICAgICAgICAgICAgICAiJXM6IGVycm9yIHJlZ2lz dGVyaW5nIEdTSSAlZFxuIiwgX19mdW5jX18sIHJldCk7CisgICAgICAgIH0KKyAgICAgICAgaWYg KCAhcmV0ICkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0ID0gcGh5c2Rldl9tYXBfcGlycShE T01JRF9TRUxGLCBNQVBfUElSUV9UWVBFX0dTSSwgJmdzaSwgJmdzaSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgICAgICAgICBCVUdfT04ocmV0KTsKKwor ICAgICAgICAgICAgcmV0ID0gcHRfaXJxX2JpbmRfaHdfZG9tYWluKGdzaSk7CisgICAgICAgICAg ICBCVUdfT04ocmV0KTsKKyAgICAgICAgfQorICAgIH0KKwogICAgICpwZW50ID0gZW50OwogCiAg ICAgaWYgKCBpZHggPT0gMCApCkBAIC00MDksNyArNDMyLDEwIEBAIHZvaWQgdmlvYXBpY191cGRh dGVfRU9JKHN0cnVjdCBkb21haW4gKmQsIHU4IHZlY3RvcikKICAgICAgICAgaWYgKCBpb21tdV9l bmFibGVkICkKICAgICAgICAgewogICAgICAgICAgICAgc3Bpbl91bmxvY2soJmQtPmFyY2guaHZt X2RvbWFpbi5pcnFfbG9jayk7Ci0gICAgICAgICAgICBodm1fZHBjaV9lb2koZCwgZ3NpLCBlbnQp OworICAgICAgICAgICAgaWYgKCBpc19oYXJkd2FyZV9kb21haW4oZCkgKQorICAgICAgICAgICAg ICAgIGh2bV9od19kcGNpX2VvaShkLCBnc2ksIGVudCk7CisgICAgICAgICAgICBlbHNlCisgICAg ICAgICAgICAgICAgaHZtX2RwY2lfZW9pKGQsIGdzaSwgZW50KTsKICAgICAgICAgICAgIHNwaW5f bG9jaygmZC0+YXJjaC5odm1fZG9tYWluLmlycV9sb2NrKTsKICAgICAgICAgfQogCmRpZmYgLS1n aXQgYS94ZW4vYXJjaC94ODYvcGh5c2Rldi5jIGIveGVuL2FyY2gveDg2L3BoeXNkZXYuYwppbmRl eCA1YTQ5Nzk2Li44YjEzYTM2IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvcGh5c2Rldi5jCisr KyBiL3hlbi9hcmNoL3g4Ni9waHlzZGV2LmMKQEAgLTE5LDEwICsxOSw2IEBACiAjaW5jbHVkZSA8 eHNtL3hzbS5oPgogI2luY2x1ZGUgPGFzbS9wMm0uaD4KIAotaW50IHBoeXNkZXZfbWFwX3BpcnEo ZG9taWRfdCwgaW50IHR5cGUsIGludCAqaW5kZXgsIGludCAqcGlycV9wLAotICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IG1zaV9pbmZvICopOwotaW50IHBoeXNkZXZfdW5tYXBfcGlycShkb21p ZF90LCBpbnQgcGlycSk7Ci0KICNpbmNsdWRlICJ4ODZfNjQvbW1jb25maWcuaCIKIAogI2lmbmRl ZiBDT01QQVQKQEAgLTk0LDcgKzkwLDcgQEAgaW50IHBoeXNkZXZfbWFwX3BpcnEoZG9taWRfdCBk b21pZCwgaW50IHR5cGUsIGludCAqaW5kZXgsIGludCAqcGlycV9wLAogICAgIGludCBwaXJxLCBp cnEsIHJldCA9IDA7CiAgICAgdm9pZCAqbWFwX2RhdGEgPSBOVUxMOwogCi0gICAgaWYgKCBkb21p ZCA9PSBET01JRF9TRUxGICYmIGlzX2h2bV9kb21haW4oZCkgKQorICAgIGlmICggZG9taWQgPT0g RE9NSURfU0VMRiAmJiAhaXNfaGFyZHdhcmVfZG9tYWluKGQpICYmIGlzX2h2bV9kb21haW4oZCkg KQogICAgIHsKICAgICAgICAgLyoKICAgICAgICAgICogT25seSBtYWtlcyBzZW5zZSBmb3IgdmVj dG9yLWJhc2VkIGNhbGxiYWNrLCBlbHNlIEhWTS1JUlEgbG9naWMKZGlmZiAtLWdpdCBhL3hlbi9k cml2ZXJzL3Bhc3N0aHJvdWdoL2lvLmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pby5jCmlu ZGV4IDllNmI0NmMuLjU2YWY5OGMgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdo L2lvLmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW8uYwpAQCAtMTU5LDI2ICsxNTks MjkgQEAgc3RhdGljIGludCBwdF9pcnFfZ3Vlc3RfZW9pKHN0cnVjdCBkb21haW4gKmQsIHN0cnVj dCBodm1fcGlycV9kcGNpICpwaXJxX2RwY2ksCiBzdGF0aWMgdm9pZCBwdF9pcnFfdGltZV9vdXQo dm9pZCAqZGF0YSkKIHsKICAgICBzdHJ1Y3QgaHZtX3BpcnFfZHBjaSAqaXJxX21hcCA9IGRhdGE7 Ci0gICAgY29uc3Qgc3RydWN0IGh2bV9pcnFfZHBjaSAqZHBjaTsKICAgICBjb25zdCBzdHJ1Y3Qg ZGV2X2ludHhfZ3NpX2xpbmsgKmRpZ2w7CiAKICAgICBzcGluX2xvY2soJmlycV9tYXAtPmRvbS0+ ZXZlbnRfbG9jayk7CiAKLSAgICBkcGNpID0gZG9tYWluX2dldF9pcnFfZHBjaShpcnFfbWFwLT5k b20pOwotICAgIEFTU0VSVChkcGNpKTsKLSAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggZGlnbCwg JmlycV9tYXAtPmRpZ2xfbGlzdCwgbGlzdCApCisgICAgaWYgKCAhaXNfaGFyZHdhcmVfZG9tYWlu KGlycV9tYXAtPmRvbSkgKQogICAgIHsKLSAgICAgICAgdW5zaWduZWQgaW50IGd1ZXN0X2dzaSA9 IGh2bV9wY2lfaW50eF9nc2koZGlnbC0+ZGV2aWNlLCBkaWdsLT5pbnR4KTsKLSAgICAgICAgY29u c3Qgc3RydWN0IGh2bV9naXJxX2RwY2lfbWFwcGluZyAqZ2lycTsKLQotICAgICAgICBsaXN0X2Zv cl9lYWNoX2VudHJ5ICggZ2lycSwgJmRwY2ktPmdpcnFbZ3Vlc3RfZ3NpXSwgbGlzdCApCisgICAg ICAgIGNvbnN0IHN0cnVjdCBodm1faXJxX2RwY2kgKmRwY2kgPSBkb21haW5fZ2V0X2lycV9kcGNp KGlycV9tYXAtPmRvbSk7CisgICAgICAgIEFTU0VSVChkcGNpKTsKKyAgICAgICAgbGlzdF9mb3Jf ZWFjaF9lbnRyeSAoIGRpZ2wsICZpcnFfbWFwLT5kaWdsX2xpc3QsIGxpc3QgKQogICAgICAgICB7 Ci0gICAgICAgICAgICBzdHJ1Y3QgcGlycSAqcGlycSA9IHBpcnFfaW5mbyhpcnFfbWFwLT5kb20s IGdpcnEtPm1hY2hpbmVfZ3NpKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBndWVzdF9nc2kg PSBodm1fcGNpX2ludHhfZ3NpKGRpZ2wtPmRldmljZSwgZGlnbC0+aW50eCk7CisgICAgICAgICAg ICBjb25zdCBzdHJ1Y3QgaHZtX2dpcnFfZHBjaV9tYXBwaW5nICpnaXJxOworCisgICAgICAgICAg ICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggZ2lycSwgJmRwY2ktPmdpcnFbZ3Vlc3RfZ3NpXSwgbGlz dCApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3RydWN0IHBpcnEgKnBpcnEgPSBw aXJxX2luZm8oaXJxX21hcC0+ZG9tLCBnaXJxLT5tYWNoaW5lX2dzaSk7CiAKLSAgICAgICAgICAg IHBpcnFfZHBjaShwaXJxKS0+ZmxhZ3MgfD0gSFZNX0lSUV9EUENJX0VPSV9MQVRDSDsKKyAgICAg ICAgICAgICAgICBwaXJxX2RwY2kocGlycSktPmZsYWdzIHw9IEhWTV9JUlFfRFBDSV9FT0lfTEFU Q0g7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBodm1fcGNpX2ludHhfZGVhc3NlcnQoaXJx X21hcC0+ZG9tLCBkaWdsLT5kZXZpY2UsIGRpZ2wtPmludHgpOwogICAgICAgICB9Ci0gICAgICAg IGh2bV9wY2lfaW50eF9kZWFzc2VydChpcnFfbWFwLT5kb20sIGRpZ2wtPmRldmljZSwgZGlnbC0+ aW50eCk7Ci0gICAgfQorICAgIH0gZWxzZQorICAgICAgICBpcnFfbWFwLT5mbGFncyB8PSBIVk1f SVJRX0RQQ0lfRU9JX0xBVENIOwogCiAgICAgcHRfcGlycV9pdGVyYXRlKGlycV9tYXAtPmRvbSwg cHRfaXJxX2d1ZXN0X2VvaSwgTlVMTCk7CiAKQEAgLTU1Nyw2ICs1NjAsODUgQEAgaW50IHB0X2ly cV9jcmVhdGVfYmluZCgKICAgICByZXR1cm4gMDsKIH0KIAoraW50IHB0X2lycV9iaW5kX2h3X2Rv bWFpbihpbnQgZ3NpKQoreworICAgIHN0cnVjdCBkb21haW4gKmQgPSBoYXJkd2FyZV9kb21haW47 CisgICAgc3RydWN0IGh2bV9waXJxX2RwY2kgKnBpcnFfZHBjaTsKKyAgICBzdHJ1Y3QgaHZtX2ly cV9kcGNpICpodm1faXJxX2RwY2k7CisgICAgc3RydWN0IHBpcnEgKmluZm87CisgICAgaW50IHJj OworCisgICAgaWYgKCBnc2kgPCAwIHx8IGdzaSA+PSBkLT5ucl9waXJxcyApCisgICAgICAgIHJl dHVybiAtRUlOVkFMOworCityZXN0YXJ0OgorICAgIHNwaW5fbG9jaygmZC0+ZXZlbnRfbG9jayk7 CisKKyAgICBodm1faXJxX2RwY2kgPSBkb21haW5fZ2V0X2lycV9kcGNpKGQpOworICAgIGlmICgg aHZtX2lycV9kcGNpID09IE5VTEwgKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50IGk7CisK KyAgICAgICAgaHZtX2lycV9kcGNpID0geHphbGxvYyhzdHJ1Y3QgaHZtX2lycV9kcGNpKTsKKyAg ICAgICAgaWYgKCBodm1faXJxX2RwY2kgPT0gTlVMTCApCisgICAgICAgIHsKKyAgICAgICAgICAg IHNwaW5fdW5sb2NrKCZkLT5ldmVudF9sb2NrKTsKKyAgICAgICAgICAgIHJldHVybiAtRU5PTUVN OworICAgICAgICB9CisgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgTlJfSFZNX0lSUVM7IGkrKyAp CisgICAgICAgICAgICBJTklUX0xJU1RfSEVBRCgmaHZtX2lycV9kcGNpLT5naXJxW2ldKTsKKwor ICAgICAgICBkLT5hcmNoLmh2bV9kb21haW4uaXJxLmRwY2kgPSBodm1faXJxX2RwY2k7CisgICAg fQorCisgICAgaW5mbyA9IHBpcnFfZ2V0X2luZm8oZCwgZ3NpKTsKKyAgICBpZiAoICFpbmZvICkK KyAgICB7CisgICAgICAgIHNwaW5fdW5sb2NrKCZkLT5ldmVudF9sb2NrKTsKKyAgICAgICAgcmV0 dXJuIC1FTk9NRU07CisgICAgfQorICAgIHBpcnFfZHBjaSA9IHBpcnFfZHBjaShpbmZvKTsKKwor ICAgIC8qCisgICAgICogQSBjcnVkZSAnd2hpbGUnIGxvb3Agd2l0aCB1cyBkcm9wcGluZyB0aGUg c3BpbmxvY2sgYW5kIGdpdmluZworICAgICAqIHRoZSBzb2Z0aXJxX2RwY2kgYSBjaGFuY2UgdG8g cnVuLgorICAgICAqIFdlIE1VU1QgY2hlY2sgZm9yIHRoaXMgY29uZGl0aW9uIGFzIHRoZSBzb2Z0 aXJxIGNvdWxkIGJlIHNjaGVkdWxlZAorICAgICAqIGFuZCBoYXNuJ3QgcnVuIHlldC4gTm90ZSB0 aGF0IHRoaXMgY29kZSByZXBsYWNlZCB0YXNrbGV0X2tpbGwgd2hpY2gKKyAgICAgKiB3b3VsZCBo YXZlIHNwdW4gZm9yZXZlciBhbmQgd291bGQgZG8gdGhlIHNhbWUgdGhpbmcgKHdhaXQgdG8gZmx1 c2ggb3V0CisgICAgICogb3V0c3RhbmRpbmcgaHZtX2RpcnFfYXNzaXN0IGNhbGxzLgorICAgICAq LworICAgIGlmICggcHRfcGlycV9zb2Z0aXJxX2FjdGl2ZShwaXJxX2RwY2kpICkKKyAgICB7Cisg ICAgICAgIHNwaW5fdW5sb2NrKCZkLT5ldmVudF9sb2NrKTsKKyAgICAgICAgY3B1X3JlbGF4KCk7 CisgICAgICAgIGdvdG8gcmVzdGFydDsKKyAgICB9CisKKyAgICBwaXJxX2RwY2ktPmRvbSA9IGQ7 CisgICAgcGlycV9kcGNpLT5mbGFncyA9IEhWTV9JUlFfRFBDSV9NQVBQRUQgfAorICAgICAgICAg ICAgICAgICAgICAgICBIVk1fSVJRX0RQQ0lfTUFDSF9QQ0kgfAorICAgICAgICAgICAgICAgICAg ICAgICBIVk1fSVJRX0RQQ0lfR1VFU1RfUENJOworCisgICAgLyogSW5pdCB0aW1lciBiZWZvcmUg YmluZGluZyAqLworICAgIGlmICggcHRfaXJxX25lZWRfdGltZXIocGlycV9kcGNpLT5mbGFncykg KQorICAgICAgICBpbml0X3RpbWVyKCZwaXJxX2RwY2ktPnRpbWVyLCBwdF9pcnFfdGltZV9vdXQs IHBpcnFfZHBjaSwgMCk7CisKKyAgICByYyA9IHBpcnFfZ3Vlc3RfYmluZChkLT52Y3B1WzBdLCBp bmZvLCBnc2kgPiAxNSA/IEJJTkRfUElSUV9fV0lMTF9TSEFSRSA6CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKKyAgICBpZiAoIHVubGlr ZWx5KHJjKSApCisgICAgeworICAgICAgICBpZiAoIHB0X2lycV9uZWVkX3RpbWVyKHBpcnFfZHBj aS0+ZmxhZ3MpICkKKyAgICAgICAgICAgIGtpbGxfdGltZXIoJnBpcnFfZHBjaS0+dGltZXIpOwor ICAgICAgICBwaXJxX2RwY2ktPmRvbSA9IE5VTEw7CisgICAgICAgIHBpcnFfY2xlYW51cF9jaGVj ayhpbmZvLCBkKTsKKyAgICAgICAgc3Bpbl91bmxvY2soJmQtPmV2ZW50X2xvY2spOworICAgICAg ICByZXR1cm4gcmM7CisgICAgfQorCisgICAgc3Bpbl91bmxvY2soJmQtPmV2ZW50X2xvY2spOwor ICAgIHJldHVybiAwOworfQorCiBpbnQgcHRfaXJxX2Rlc3Ryb3lfYmluZCgKICAgICBzdHJ1Y3Qg ZG9tYWluICpkLCB4ZW5fZG9tY3RsX2JpbmRfcHRfaXJxX3QgKnB0X2lycV9iaW5kKQogewpAQCAt ODE5LDExICs5MDEsMTkgQEAgc3RhdGljIHZvaWQgaHZtX2RpcnFfYXNzaXN0KHN0cnVjdCBkb21h aW4gKmQsIHN0cnVjdCBodm1fcGlycV9kcGNpICpwaXJxX2RwY2kpCiAgICAgICAgICAgICByZXR1 cm47CiAgICAgICAgIH0KIAotICAgICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggZGlnbCwgJnBp cnFfZHBjaS0+ZGlnbF9saXN0LCBsaXN0ICkKKyAgICAgICAgaWYgKCBpc19oYXJkd2FyZV9kb21h aW4oZCkgKQogICAgICAgICB7Ci0gICAgICAgICAgICBodm1fcGNpX2ludHhfYXNzZXJ0KGQsIGRp Z2wtPmRldmljZSwgZGlnbC0+aW50eCk7CisgICAgICAgICAgICBodm1faHdfZ3NpX2Fzc2VydChk LCBwaXJxLT5waXJxKTsKICAgICAgICAgICAgIHBpcnFfZHBjaS0+cGVuZGluZysrOwogICAgICAg ICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgbGlzdF9mb3JfZWFjaF9l bnRyeSAoIGRpZ2wsICZwaXJxX2RwY2ktPmRpZ2xfbGlzdCwgbGlzdCApCisgICAgICAgICAgICB7 CisgICAgICAgICAgICAgICAgaHZtX3BjaV9pbnR4X2Fzc2VydChkLCBkaWdsLT5kZXZpY2UsIGRp Z2wtPmludHgpOworICAgICAgICAgICAgICAgIHBpcnFfZHBjaS0+cGVuZGluZysrOworICAgICAg ICAgICAgfQorICAgICAgICB9CiAKICAgICAgICAgaWYgKCBwaXJxX2RwY2ktPmZsYWdzICYgSFZN X0lSUV9EUENJX1RSQU5TTEFURSApCiAgICAgICAgIHsKQEAgLTg5OSw2ICs5ODksMzIgQEAgdW5s b2NrOgogICAgIHNwaW5fdW5sb2NrKCZkLT5ldmVudF9sb2NrKTsKIH0KIAordm9pZCBodm1faHdf ZHBjaV9lb2koc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IGdzaSwKKyAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IHVuaW9uIHZpb2FwaWNfcmVkaXJfZW50cnkgKmVudCkKK3sKKyAgICBz dHJ1Y3QgcGlycSAqcGlycSA9IHBpcnFfaW5mbyhkLCBnc2kpOworICAgIHN0cnVjdCBodm1fcGly cV9kcGNpICpwaXJxX2RwY2k7CisKKyAgICBBU1NFUlQoaXNfaGFyZHdhcmVfZG9tYWluKGQpICYm IGlvbW11X2VuYWJsZWQpOworCisgICAgaWYgKCBwaXJxID09IE5VTEwgKQorICAgICAgICByZXR1 cm47CisKKyAgICBwaXJxX2RwY2kgPSBwaXJxX2RwY2kocGlycSk7CisgICAgQVNTRVJUKHBpcnFf ZHBjaSAhPSBOVUxMKTsKKworICAgIHNwaW5fbG9jaygmZC0+ZXZlbnRfbG9jayk7CisgICAgaWYg KCAtLXBpcnFfZHBjaS0+cGVuZGluZyB8fCAoZW50ICYmIGVudC0+ZmllbGRzLm1hc2spIHx8Cisg ICAgICAgICAhcHRfaXJxX25lZWRfdGltZXIocGlycV9kcGNpLT5mbGFncykgKQorICAgICAgICBn b3RvIHVubG9jazsKKworICAgIHN0b3BfdGltZXIoJnBpcnFfZHBjaS0+dGltZXIpOworICAgIHBp cnFfZ3Vlc3RfZW9pKHBpcnEpOworCit1bmxvY2s6CisgICAgc3Bpbl91bmxvY2soJmQtPmV2ZW50 X2xvY2spOworfQorCiAvKgogICogTm90ZTogJ3B0X3BpcnFfc29mdGlycV9yZXNldCcgY2FuIGNs ZWFyIHRoZSBTVEFURV9TQ0hFRCBiZWZvcmUgd2UgZ2V0IHRvCiAgKiBkb2luZyBpdC4gSWYgdGhh dCBpcyB0aGUgY2FzZSB3ZSBsZXQgJ3B0X3BpcnFfc29mdGlycV9yZXNldCcgZG8gcmVmLWNvdW50 aW5nLgpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vaW8uaCBiL3hlbi9pbmNs dWRlL2FzbS14ODYvaHZtL2lvLmgKaW5kZXggZTliM2Y4My4uOGRlNGE4ZiAxMDA2NDQKLS0tIGEv eGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vaW8uaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2 bS9pby5oCkBAIC0xMjUsNiArMTI1LDggQEAgaW50IGhhbmRsZV9waW8odWludDE2X3QgcG9ydCwg dW5zaWduZWQgaW50IHNpemUsIGludCBkaXIpOwogdm9pZCBodm1faW50ZXJydXB0X3Bvc3Qoc3Ry dWN0IHZjcHUgKnYsIGludCB2ZWN0b3IsIGludCB0eXBlKTsKIHZvaWQgaHZtX2RwY2lfZW9pKHN0 cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBndWVzdF9pcnEsCiAgICAgICAgICAgICAgICAg ICBjb25zdCB1bmlvbiB2aW9hcGljX3JlZGlyX2VudHJ5ICplbnQpOwordm9pZCBodm1faHdfZHBj aV9lb2koc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IGdzaSwKKyAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHVuaW9uIHZpb2FwaWNfcmVkaXJfZW50cnkgKmVudCk7CiB2b2lkIG1zaXhf d3JpdGVfY29tcGxldGlvbihzdHJ1Y3QgdmNwdSAqKTsKIHZvaWQgbXNpeHRibF9pbml0KHN0cnVj dCBkb21haW4gKmQpOwogCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2lycS5oIGIv eGVuL2luY2x1ZGUvYXNtLXg4Ni9pcnEuaAppbmRleCA3ZWZkZDM3Li4wN2YyMWFiIDEwMDY0NAot LS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2lycS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYv aXJxLmgKQEAgLTIwMSw0ICsyMDEsOSBAQCBib29sX3QgY3B1X2hhc19wZW5kaW5nX2FwaWNfZW9p KHZvaWQpOwogCiBzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9tb3ZlX2lycXMoc3RydWN0IHZjcHUg KnYpIHsgfQogCitzdHJ1Y3QgbXNpX2luZm87CitpbnQgcGh5c2Rldl9tYXBfcGlycShkb21pZF90 LCBpbnQgdHlwZSwgaW50ICppbmRleCwgaW50ICpwaXJxX3AsCisgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgbXNpX2luZm8gKik7CitpbnQgcGh5c2Rldl91bm1hcF9waXJxKGRvbWlkX3QsIGlu dCBwaXJxKTsKKwogI2VuZGlmIC8qIF9BU01fSFdfSVJRX0ggKi8KZGlmZiAtLWdpdCBhL3hlbi9p bmNsdWRlL3hlbi9odm0vaXJxLmggYi94ZW4vaW5jbHVkZS94ZW4vaHZtL2lycS5oCmluZGV4IDRj OWNiMjAuLjJmZmFmMzUgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi9odm0vaXJxLmgKKysr IGIveGVuL2luY2x1ZGUveGVuL2h2bS9pcnEuaApAQCAtMTIyLDYgKzEyMiw5IEBAIHZvaWQgaHZt X2lzYV9pcnFfYXNzZXJ0KAogdm9pZCBodm1faXNhX2lycV9kZWFzc2VydCgKICAgICBzdHJ1Y3Qg ZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgaXNhX2lycSk7CiAKKy8qIE1vZGlmeSBzdGF0ZSBvZiBh IGhhcmR3YXJlIGRvbWFpbiBHU0kgKi8KK3ZvaWQgaHZtX2h3X2dzaV9hc3NlcnQoc3RydWN0IGRv bWFpbiAqZCwgdW5zaWduZWQgaW50IGdzaSk7CisKIHZvaWQgaHZtX3NldF9wY2lfbGlua19yb3V0 ZShzdHJ1Y3QgZG9tYWluICpkLCB1OCBsaW5rLCB1OCBpc2FfaXJxKTsKIAogaW50IGh2bV9pbmpl Y3RfbXNpKHN0cnVjdCBkb21haW4gKmQsIHVpbnQ2NF90IGFkZHIsIHVpbnQzMl90IGRhdGEpOwpk aWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL2lvbW11LmggYi94ZW4vaW5jbHVkZS94ZW4vaW9t bXUuaAppbmRleCA1ODAzZTNmLi4wN2M2YzQwIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4v aW9tbXUuaAorKysgYi94ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaApAQCAtMTE0LDYgKzExNCw3IEBA IHN0cnVjdCBwaXJxOwogaW50IGh2bV9kb19JUlFfZHBjaShzdHJ1Y3QgZG9tYWluICosIHN0cnVj dCBwaXJxICopOwogaW50IHB0X2lycV9jcmVhdGVfYmluZChzdHJ1Y3QgZG9tYWluICosIHhlbl9k b21jdGxfYmluZF9wdF9pcnFfdCAqKTsKIGludCBwdF9pcnFfZGVzdHJveV9iaW5kKHN0cnVjdCBk b21haW4gKiwgeGVuX2RvbWN0bF9iaW5kX3B0X2lycV90ICopOworaW50IHB0X2lycV9iaW5kX2h3 X2RvbWFpbihpbnQgZ3NpKTsKIAogdm9pZCBodm1fZHBjaV9pc2FpcnFfZW9pKHN0cnVjdCBkb21h aW4gKmQsIHVuc2lnbmVkIGludCBpc2FpcnEpOwogc3RydWN0IGh2bV9pcnFfZHBjaSAqZG9tYWlu X2dldF9pcnFfZHBjaShjb25zdCBzdHJ1Y3QgZG9tYWluICopOwotLSAKMi43LjQgKEFwcGxlIEdp dC02NikKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpY ZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlz dHMueGVuLm9yZy94ZW4tZGV2ZWwK