From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 45/46] drm/i915/execlists: Virtual engine bonding Date: Wed, 6 Feb 2019 13:03:55 +0000 Message-ID: <20190206130356.18771-46-chris@chris-wilson.co.uk> References: <20190206130356.18771-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 351AE89DCF for ; Wed, 6 Feb 2019 13:04:12 +0000 (UTC) In-Reply-To: <20190206130356.18771-1-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org U29tZSB1c2VycyByZXF1aXJlIHRoYXQgd2hlbiBhIG1hc3RlciBiYXRjaCBpcyBleGVjdXRlZCBv biBvbmUgcGFydGljdWxhcgplbmdpbmUsIGEgY29tcGFuaW9uIGJhdGNoIGlzIHJ1biBzaW11bHRh bmVvdXNseSBvbiBhIHNwZWNpZmljIHNsYXZlCmVuZ2luZS4gRm9yIHRoaXMgcHVycG9zZSwgd2Ug aW50cm9kdWNlIHZpcnR1YWwgZW5naW5lIGJvbmRpbmcsIGFsbG93aW5nCm1hcHMgb2YgbWFzdGVy OnNsYXZlcyB0byBiZSBjb25zdHJ1Y3RlZCB0byBjb25zdHJhaW4gd2hpY2ggcGh5c2ljYWwKZW5n aW5lcyBhIHZpcnR1YWwgZW5naW5lIG1heSBzZWxlY3QgZ2l2ZW4gYSBmZW5jZSBvbiBhIG1hc3Rl ciBlbmdpbmUuCgpGb3IgdGhlIG1vbWVudCwgd2UgY29udGludWUgdG8gaWdub3JlIHRoZSBpc3N1 ZSBvZiBwcmVlbXB0aW9uIGRlZmVycmluZwp0aGUgbWFzdGVyIHJlcXVlc3QgZm9yIGxhdGVyLiBJ ZGVhbGx5LCB3ZSB3b3VsZCBsaWtlIHRvIHRoZW4gYWxzbyByZW1vdmUKdGhlIHNsYXZlIGFuZCBy dW4gc29tZXRoaW5nIGVsc2UgcmF0aGVyIHRoYW4gaGF2ZSBpdCBzdGFsbCB0aGUgcGlwZWxpbmUu CldpdGggbG9hZCBiYWxhbmNpbmcsIHdlIHNob3VsZCBiZSBhYmxlIHRvIG1vdmUgd29ya2xvYWQg YXJvdW5kIGl0LCBidXQKdGhlcmUgaXMgYSBzaW1pbGFyIHN0YWxsIG9uIHRoZSBtYXN0ZXIgcGlw ZWxpbmUgd2hpbGUgaXQgbWF5IHdhaXQgZm9yCnRoZSBzbGF2ZSB0byBiZSBleGVjdXRlZC4gQXQg dGhlIGNvc3Qgb2YgbW9yZSBsYXRlbmN5IGZvciB0aGUgYm9uZGVkCnJlcXVlc3QsIGl0IG1heSBi ZSBpbnRlcmVzdGluZyB0byBsYXVuY2ggYm90aCBvbiB0aGVpciBlbmdpbmVzIGluCmxvY2tzdGVw LiAoQnViYmxlcyBhYm91bmQuKQoKT3BlbnM6IEFsc28gd2hhdCBhYm91dCBib25kaW5nIGFuIGVu Z2luZSBhcyBpdHMgb3duIG1hc3Rlcj8gSXQgZG9lc24ndApicmVhayBhbnl0aGluZyBpbnRlcm5h bGx5LCBzbyBhbGxvdyB0aGUgc2lsbGluZXNzLgoKU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29u IDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fY29udGV4dC5jICAgIHwgIDQ1ICsrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9yZXF1ZXN0LmMgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVx dWVzdC5oICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVf dHlwZXMuaCAgfCAgIDcgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAg ICAgIHwgIDk3ICsrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmgg ICAgICAgICAgIHwgICAzICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9s cmMuYyB8IDE2NyArKysrKysrKysrKysrKysrKysrKysKIGluY2x1ZGUvdWFwaS9kcm0vaTkxNV9k cm0uaCAgICAgICAgICAgICAgICB8ICAxOCArKysKIDggZmlsZXMgY2hhbmdlZCwgMzM5IGluc2Vy dGlvbnMoKykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250 ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKaW5kZXggMmI0 NzRlNzJmOWUyLi5mNDI3OWM4OGNkNjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2NvbnRleHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9j b250ZXh0LmMKQEAgLTEzNDIsNiArMTM0MiwxNiBAQCBzdGF0aWMgaW50IHNldF9zc2V1KHN0cnVj dCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCiAJcmV0dXJuIDA7CiB9OwogCitzdGF0aWMgaW50IGNo ZWNrX3VzZXJfbWJ6MzIodTMyIF9fdXNlciAqdXNlcikKK3sKKwl1MzIgbWJ6OworCisJaWYgKGdl dF91c2VyKG1ieiwgdXNlcikpCisJCXJldHVybiAtRUZBVUxUOworCisJcmV0dXJuIG1ieiA/IC1F SU5WQUwgOiAwOworfQorCiBzdGF0aWMgaW50IGNoZWNrX3VzZXJfbWJ6NjQodTY0IF9fdXNlciAq dXNlcikKIHsKIAl1NjQgbWJ6OwpAQCAtMTQyNSw4ICsxNDM1LDQzIEBAIHNldF9lbmdpbmVzX19s b2FkX2JhbGFuY2Uoc3RydWN0IGk5MTVfdXNlcl9leHRlbnNpb24gX191c2VyICpiYXNlLCB2b2lk ICpkYXRhKQogCXJldHVybiAwOwogfQogCitzdGF0aWMgaW50CitzZXRfZW5naW5lc19fYm9uZChz dHJ1Y3QgaTkxNV91c2VyX2V4dGVuc2lvbiBfX3VzZXIgKmJhc2UsIHZvaWQgKmRhdGEpCit7CisJ c3RydWN0IGk5MTVfY29udGV4dF9lbmdpbmVzX2JvbmQgX191c2VyICpleHQgPQorCQljb250YWlu ZXJfb2ZfdXNlcihiYXNlLCB0eXBlb2YoKmV4dCksIGJhc2UpOworCWNvbnN0IHN0cnVjdCBzZXRf ZW5naW5lcyAqc2V0ID0gZGF0YTsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICptYXN0ZXI7CisJ dTMyIGNsYXNzLCBpbnN0YW5jZSwgc2libGluZ3M7CisJaW50IGVycjsKKworCWlmICghc2V0LT5l bmdpbmVzWzBdKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWVyciA9IGNoZWNrX3VzZXJfbWJ6MzIo JmV4dC0+ZmxhZ3MpOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CisKKwlpZiAoZ2V0X3VzZXIo Y2xhc3MsICZleHQtPm1hc3Rlcl9jbGFzcykpCisJCXJldHVybiAtRUZBVUxUOworCisJaWYgKGdl dF91c2VyKGluc3RhbmNlLCAmZXh0LT5tYXN0ZXJfaW5zdGFuY2UpKQorCQlyZXR1cm4gLUVGQVVM VDsKKworCW1hc3RlciA9IGludGVsX2VuZ2luZV9sb29rdXBfdXNlcihzZXQtPmN0eC0+aTkxNSwg Y2xhc3MsIGluc3RhbmNlKTsKKwlpZiAoIW1hc3RlcikKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlp ZiAoZ2V0X3VzZXIoc2libGluZ3MsICZleHQtPnNpYmxpbmdfbWFzaykpCisJCXJldHVybiAtRUZB VUxUOworCisJcmV0dXJuIGludGVsX3ZpcnR1YWxfZW5naW5lX2F0dGFjaF9ib25kKHNldC0+ZW5n aW5lc1swXSwKKwkJCQkJCW1hc3Rlciwgc2libGluZ3MpOworfQorCiBzdGF0aWMgY29uc3QgaTkx NV91c2VyX2V4dGVuc2lvbl9mbiBzZXRfZW5naW5lc19fZXh0ZW5zaW9uc1tdID0gewogCVtJOTE1 X0NPTlRFWFRfRU5HSU5FU19FWFRfTE9BRF9CQUxBTkNFXSA9IHNldF9lbmdpbmVzX19sb2FkX2Jh bGFuY2UsCisJW0k5MTVfQ09OVEVYVF9FTkdJTkVTX0VYVF9CT05EXSA9IHNldF9lbmdpbmVzX19i b25kLAogfTsKIAogc3RhdGljIGludApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9yZXF1ZXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwppbmRl eCBhY2U0ZmQ3NjNjYWMuLjIyNTY0MGQwZWQzMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9yZXF1ZXN0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1 ZXN0LmMKQEAgLTczNCw2ICs3MzQsNyBAQCBpOTE1X3JlcXVlc3RfYWxsb2Moc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lLCBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQogCXJxLT5i YXRjaCA9IE5VTEw7CiAJcnEtPmNhcHR1cmVfbGlzdCA9IE5VTEw7CiAJcnEtPndhaXRib29zdCA9 IGZhbHNlOworCXJxLT5leGVjdXRpb25fbWFzayA9IH4wdTsKIAogCS8qCiAJICogUmVzZXJ2ZSBz cGFjZSBpbiB0aGUgcmluZyBidWZmZXIgZm9yIGFsbCB0aGUgY29tbWFuZHMgcmVxdWlyZWQgdG8K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmgKaW5kZXggYjA0NTk0OGRhMTJkLi5iOWFhZTc5 OWZiZDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oCkBAIC0xNDQsNiArMTQ0LDcg QEAgc3RydWN0IGk5MTVfcmVxdWVzdCB7CiAJICovCiAJc3RydWN0IGk5MTVfc2NoZWRfbm9kZSBz Y2hlZDsKIAlzdHJ1Y3QgaTkxNV9kZXBlbmRlbmN5IGRlcDsKKwl1bnNpZ25lZCBpbnQgZXhlY3V0 aW9uX21hc2s7CiAKIAkvKgogCSAqIEEgY29udmVuaWVuY2UgcG9pbnRlciB0byB0aGUgY3VycmVu dCBicmVhZGNydW1iIHZhbHVlIHN0b3JlZCBpbgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZW5naW5lX3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9l bmdpbmVfdHlwZXMuaAppbmRleCAxY2YyNzQwY2E2MGUuLmFiMWU5ZTkyN2Q3ZCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX3R5cGVzLmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX3R5cGVzLmgKQEAgLTM4NCw2ICszODQsMTMgQEAg c3RydWN0IGludGVsX2VuZ2luZV9jcyB7CiAJICovCiAJdm9pZAkJKCpzdWJtaXRfcmVxdWVzdCko c3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpOwogCisJLyoKKwkgKiBDYWxsZWQgb24gc2lnbmFsaW5n IG9mIGEgU1VCTUlUX0ZFTkNFLCBwYXNzaW5nIGFsb25nIHRoZSBzaWduYWxpbmcKKwkgKiByZXF1 ZXN0IGRvd24gdG8gdGhlIGJvbmRlZCBwYWlycy4KKwkgKi8KKwl2b2lkICAgICAgICAgICAgKCpi b25kX2V4ZWN1dGUpKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAorCQkJCQlzdHJ1Y3QgZG1hX2Zl bmNlICpzaWduYWwpOworCiAJLyoKIAkgKiBDYWxsIHdoZW4gdGhlIHByaW9yaXR5IG9uIGEgcmVx dWVzdCBoYXMgY2hhbmdlZCBhbmQgaXQgYW5kIGl0cwogCSAqIGRlcGVuZGVuY2llcyBtYXkgbmVl ZCByZXNjaGVkdWxpbmcuIE5vdGUgdGhlIHJlcXVlc3QgaXRzZWxmIG1heQpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9scmMuYwppbmRleCAwYjI1ZmZmZGI4YmMuLmJhMzYwNTAwMWNmMCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfbHJjLmMKQEAgLTE3OCw2ICsxNzgsMTIgQEAgc3RydWN0IHZpcnR1YWxfZW5naW5l IHsKIAkJaW50IHByaW87CiAJfSBub2Rlc1tJOTE1X05VTV9FTkdJTkVTXTsKIAorCXN0cnVjdCB2 ZV9ib25kIHsKKwkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqbWFzdGVyOworCQl1bnNpZ25lZCBp bnQgc2libGluZ19tYXNrOworCX0gKmJvbmRzOworCXVuc2lnbmVkIGludCBuYm9uZDsKKwogCXVu c2lnbmVkIGludCBjb3VudDsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpzaWJsaW5nc1swXTsK IH07CkBAIC0zMTk2LDYgKzMyMDIsNyBAQCB2aXJ0dWFsX2NvbnRleHRfcGluKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSwKIHN0YXRpYyB2b2lkIHZpcnR1YWxfc3VibWlzc2lvbl90YXNr bGV0KHVuc2lnbmVkIGxvbmcgZGF0YSkKIHsKIAlzdHJ1Y3QgdmlydHVhbF9lbmdpbmUgKiBjb25z dCB2ZSA9IChzdHJ1Y3QgdmlydHVhbF9lbmdpbmUgKilkYXRhOworCXVuc2lnbmVkIGludCBtYXNr OwogCXVuc2lnbmVkIGludCBuOwogCWludCBwcmlvOwogCkBAIC0zMjA0LDEyICszMjExLDMwIEBA IHN0YXRpYyB2b2lkIHZpcnR1YWxfc3VibWlzc2lvbl90YXNrbGV0KHVuc2lnbmVkIGxvbmcgZGF0 YSkKIAkJcmV0dXJuOwogCiAJbG9jYWxfaXJxX2Rpc2FibGUoKTsKKworCW1hc2sgPSAwOworCXNw aW5fbG9jaygmdmUtPmJhc2UudGltZWxpbmUubG9jayk7CisJaWYgKHZlLT5yZXF1ZXN0KQorCQlt YXNrID0gdmUtPnJlcXVlc3QtPmV4ZWN1dGlvbl9tYXNrOworCXNwaW5fdW5sb2NrKCZ2ZS0+YmFz ZS50aW1lbGluZS5sb2NrKTsKKwogCWZvciAobiA9IDA7IFJFQURfT05DRSh2ZS0+cmVxdWVzdCkg JiYgbiA8IHZlLT5jb3VudDsgbisrKSB7CiAJCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnNpYmxp bmcgPSB2ZS0+c2libGluZ3Nbbl07CiAJCXN0cnVjdCB2ZV9ub2RlICogY29uc3Qgbm9kZSA9ICZ2 ZS0+bm9kZXNbc2libGluZy0+aWRdOwogCQlzdHJ1Y3QgcmJfbm9kZSAqKnBhcmVudCwgKnJiOwog CQlib29sIGZpcnN0OwogCisJCWlmICh1bmxpa2VseSghKG1hc2sgJiBzaWJsaW5nLT5tYXNrKSkp IHsKKwkJCWlmICghUkJfRU1QVFlfTk9ERSgmbm9kZS0+cmIpKSB7CisJCQkJc3Bpbl9sb2NrKCZz aWJsaW5nLT50aW1lbGluZS5sb2NrKTsKKwkJCQlyYl9lcmFzZV9jYWNoZWQoJm5vZGUtPnJiLAor CQkJCQkJJnNpYmxpbmctPmV4ZWNsaXN0cy52aXJ0dWFsKTsKKwkJCQlSQl9DTEVBUl9OT0RFKCZu b2RlLT5yYik7CisJCQkJc3Bpbl91bmxvY2soJnNpYmxpbmctPnRpbWVsaW5lLmxvY2spOworCQkJ fQorCQkJY29udGludWU7CisJCX0KKwogCQlzcGluX2xvY2soJnNpYmxpbmctPnRpbWVsaW5lLmxv Y2spOwogCiAJCWlmICghUkJfRU1QVFlfTk9ERSgmbm9kZS0+cmIpKSB7CkBAIC0zMjY3LDYgKzMy OTIsMzAgQEAgc3RhdGljIHZvaWQgdmlydHVhbF9zdWJtaXRfcmVxdWVzdChzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICpyZXF1ZXN0KQogCXRhc2tsZXRfc2NoZWR1bGUoJnZlLT5iYXNlLmV4ZWNsaXN0cy50 YXNrbGV0KTsKIH0KIAorc3RhdGljIHN0cnVjdCB2ZV9ib25kICoKK3ZpcnR1YWxfZmluZF9ib25k KHN0cnVjdCB2aXJ0dWFsX2VuZ2luZSAqdmUsIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKm1hc3Rl cikKK3sKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCB2ZS0+bmJvbmQ7IGkrKykgeworCQlp ZiAodmUtPmJvbmRzW2ldLm1hc3RlciA9PSBtYXN0ZXIpCisJCQlyZXR1cm4gJnZlLT5ib25kc1tp XTsKKwl9CisKKwlyZXR1cm4gTlVMTDsKK30KKworc3RhdGljIHZvaWQKK3ZpcnR1YWxfYm9uZF9l eGVjdXRlKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCBzdHJ1Y3QgZG1hX2ZlbmNlICpzaWduYWwp Cit7CisJc3RydWN0IHZpcnR1YWxfZW5naW5lICp2ZSA9IHRvX3ZpcnR1YWxfZW5naW5lKHJxLT5l bmdpbmUpOworCXN0cnVjdCB2ZV9ib25kICpib25kOworCisJYm9uZCA9IHZpcnR1YWxfZmluZF9i b25kKHZlLCB0b19yZXF1ZXN0KHNpZ25hbCktPmVuZ2luZSk7CisJaWYgKGJvbmQpIC8qIFhYWCBz ZXJpYWxpc2Ugd2l0aCBycS0+bG9jaz8gKi8KKwkJcnEtPmV4ZWN1dGlvbl9tYXNrICY9IGJvbmQt PnNpYmxpbmdfbWFzazsKK30KKwogc3RydWN0IGludGVsX2VuZ2luZV9jcyAqCiBpbnRlbF9leGVj bGlzdHNfY3JlYXRlX3ZpcnR1YWwoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKIAkJCSAg ICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICoqc2libGluZ3MsCkBAIC0zMzA4LDYgKzMzNTcs NyBAQCBpbnRlbF9leGVjbGlzdHNfY3JlYXRlX3ZpcnR1YWwoc3RydWN0IGk5MTVfZ2VtX2NvbnRl eHQgKmN0eCwKIAogCXZlLT5iYXNlLnNjaGVkdWxlID0gaTkxNV9zY2hlZHVsZTsKIAl2ZS0+YmFz ZS5zdWJtaXRfcmVxdWVzdCA9IHZpcnR1YWxfc3VibWl0X3JlcXVlc3Q7CisJdmUtPmJhc2UuYm9u ZF9leGVjdXRlID0gdmlydHVhbF9ib25kX2V4ZWN1dGU7CiAKIAl2ZS0+YmFzZS5leGVjbGlzdHMu cXVldWVfcHJpb3JpdHlfaGludCA9IElOVF9NSU47CiAJdGFza2xldF9pbml0KCZ2ZS0+YmFzZS5l eGVjbGlzdHMudGFza2xldCwKQEAgLTMzNjgsNiArMzQxOCw1MyBAQCBpbnRlbF9leGVjbGlzdHNf Y3JlYXRlX3ZpcnR1YWwoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKIAlyZXR1cm4gRVJS X1BUUihlcnIpOwogfQogCitzdGF0aWMgdW5zaWduZWQgbG9uZwordmlydHVhbF9leGVjdXRpb25f bWFzayhzdHJ1Y3QgdmlydHVhbF9lbmdpbmUgKnZlLCB1bnNpZ25lZCBsb25nIG1hc2spCit7CisJ dW5zaWduZWQgbG9uZyBlbWFzayA9IDA7CisJaW50IGJpdDsKKworCWZvcl9lYWNoX3NldF9iaXQo Yml0LCAmbWFzaywgdmUtPmNvdW50KQorCQllbWFzayB8PSB2ZS0+c2libGluZ3NbYml0XS0+bWFz azsKKworCXJldHVybiBlbWFzazsKK30KKworaW50IGludGVsX3ZpcnR1YWxfZW5naW5lX2F0dGFj aF9ib25kKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKKwkJCQkgICAgIHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKm1hc3RlciwKKwkJCQkgICAgIHVuc2lnbmVkIGxvbmcgbWFzaykKK3sK KwlzdHJ1Y3QgdmlydHVhbF9lbmdpbmUgKnZlID0gdG9fdmlydHVhbF9lbmdpbmUoZW5naW5lKTsK KwlzdHJ1Y3QgdmVfYm9uZCAqYm9uZDsKKworCWlmIChtYXNrID4+IHZlLT5jb3VudCkKKwkJcmV0 dXJuIC1FSU5WQUw7CisKKwltYXNrID0gdmlydHVhbF9leGVjdXRpb25fbWFzayh2ZSwgbWFzayk7 CisJaWYgKCFtYXNrKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWJvbmQgPSB2aXJ0dWFsX2ZpbmRf Ym9uZCh2ZSwgbWFzdGVyKTsKKwlpZiAoYm9uZCkgeworCQlib25kLT5zaWJsaW5nX21hc2sgfD0g bWFzazsKKwkJcmV0dXJuIDA7CisJfQorCisJYm9uZCA9IGtyZWFsbG9jKHZlLT5ib25kcywKKwkJ CXNpemVvZigqYm9uZCkgKiAodmUtPm5ib25kICsgMSksCisJCQlHRlBfS0VSTkVMKTsKKwlpZiAo IWJvbmQpCisJCXJldHVybiAtRU5PTUVNOworCisJYm9uZFt2ZS0+bmJvbmRdLm1hc3RlciA9IG1h c3RlcjsKKwlib25kW3ZlLT5uYm9uZF0uc2libGluZ19tYXNrID0gbWFzazsKKworCXZlLT5ib25k cyA9IGJvbmQ7CisJdmUtPm5ib25kKys7CisKKwlyZXR1cm4gMDsKK30KKwogdm9pZCBpbnRlbF92 aXJ0dWFsX2VuZ2luZV9kZXN0cm95KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsK IAlzdHJ1Y3QgdmlydHVhbF9lbmdpbmUgKnZlID0gdG9fdmlydHVhbF9lbmdpbmUoZW5naW5lKTsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHJjLmgKaW5kZXggYzZmNDQxMTM3ZTNmLi44NjIyZGJmZDhjNWMg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oCkBAIC0xMTYsNiArMTE2LDkgQEAgc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqCiBpbnRlbF9leGVjbGlzdHNfY3JlYXRlX3ZpcnR1YWwoc3RydWN0IGk5 MTVfZ2VtX2NvbnRleHQgKmN0eCwKIAkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICoq c2libGluZ3MsCiAJCQkgICAgICAgdW5zaWduZWQgaW50IGNvdW50KTsKK2ludCBpbnRlbF92aXJ0 dWFsX2VuZ2luZV9hdHRhY2hfYm9uZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJ CQkJICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICptYXN0ZXIsCisJCQkJICAgICB1bnNpZ25l ZCBsb25nIHNpYmxpbmdzKTsKIHZvaWQgaW50ZWxfdmlydHVhbF9lbmdpbmVfZGVzdHJveShzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwogCiB1MzIgZ2VuOF9tYWtlX3JwY3Moc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHN0cnVjdCBpbnRlbF9zc2V1ICpjdHhfc3NldSk7CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfbHJjLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfbHJjLmMKaW5kZXggZTg1MTg0ZTA4 NGU0Li5mNWI2OWQ2YjQ1ODUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0 ZXN0cy9pbnRlbF9scmMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50 ZWxfbHJjLmMKQEAgLTEzLDYgKzEzLDcgQEAKICNpbmNsdWRlICJpZ3RfbGl2ZV90ZXN0LmgiCiAj aW5jbHVkZSAiaWd0X3NwaW5uZXIuaCIKICNpbmNsdWRlICJpOTE1X3JhbmRvbS5oIgorI2luY2x1 ZGUgImxpYl9zd19mZW5jZS5oIgogCiAjaW5jbHVkZSAibW9ja19jb250ZXh0LmgiCiAKQEAgLTEy MDQsNiArMTIwNSwxNzEgQEAgc3RhdGljIGludCBsaXZlX3ZpcnR1YWxfZW5naW5lKHZvaWQgKmFy ZykKIAlyZXR1cm4gZXJyOwogfQogCitzdGF0aWMgaW50IGJvbmRfdmlydHVhbF9lbmdpbmUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCisJCQkgICAgICAgdW5zaWduZWQgaW50IGNsYXNz LAorCQkJICAgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKipzaWJsaW5ncywKKwkJCSAgICAg ICB1bnNpZ25lZCBpbnQgbnNpYmxpbmcsCisJCQkgICAgICAgdW5zaWduZWQgaW50IGZsYWdzKQor I2RlZmluZSBCT05EX1NDSEVEVUxFIEJJVCgwKQoreworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg Km1hc3RlcjsKKwlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4OworCXN0cnVjdCBpOTE1X3Jl cXVlc3QgKnJxWzE2XTsKKwllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKKwl1bnNpZ25lZCBsb25n IG47CisJaW50IGVycjsKKworCUdFTV9CVUdfT04obnNpYmxpbmcgPj0gQVJSQVlfU0laRShycSkg LSAxKTsKKworCWN0eCA9IGtlcm5lbF9jb250ZXh0KGk5MTUpOworCWlmICghY3R4KQorCQlyZXR1 cm4gLUVOT01FTTsKKworCWVyciA9IDA7CisJcnFbMF0gPSBFUlJfUFRSKC1FTk9NRU0pOworCWZv cl9lYWNoX2VuZ2luZShtYXN0ZXIsIGk5MTUsIGlkKSB7CisJCXN0cnVjdCBpOTE1X3N3X2ZlbmNl IGZlbmNlOworCisJCWlmIChtYXN0ZXItPmNsYXNzID09IGNsYXNzKQorCQkJY29udGludWU7CisK KwkJcnFbMF0gPSBpOTE1X3JlcXVlc3RfYWxsb2MobWFzdGVyLCBjdHgpOworCQlpZiAoSVNfRVJS KHJxWzBdKSkgeworCQkJZXJyID0gUFRSX0VSUihycVswXSk7CisJCQlnb3RvIG91dDsKKwkJfQor CisJCWlmIChmbGFncyAmIEJPTkRfU0NIRURVTEUpCisJCQlvbnN0YWNrX2ZlbmNlX2luaXQoJmZl bmNlKTsKKworCQlpOTE1X3JlcXVlc3RfZ2V0KHJxWzBdKTsKKwkJaTkxNV9yZXF1ZXN0X2FkZChy cVswXSk7CisKKwkJZm9yIChuID0gMDsgbiA8IG5zaWJsaW5nOyBuKyspIHsKKwkJCXN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKKworCQkJZW5naW5lID0gaW50ZWxfZXhlY2xpc3RzX2Ny ZWF0ZV92aXJ0dWFsKGN0eCwKKwkJCQkJCQkJc2libGluZ3MsCisJCQkJCQkJCW5zaWJsaW5nKTsK KwkJCWlmIChJU19FUlIoZW5naW5lKSkgeworCQkJCWVyciA9IFBUUl9FUlIoZW5naW5lKTsKKwkJ CQlnb3RvIG91dDsKKwkJCX0KKworCQkJZXJyID0gaW50ZWxfdmlydHVhbF9lbmdpbmVfYXR0YWNo X2JvbmQoZW5naW5lLAorCQkJCQkJCSAgICAgICBtYXN0ZXIsCisJCQkJCQkJICAgICAgIEJJVChu KSk7CisJCQlpZiAoZXJyKSB7CisJCQkJaW50ZWxfdmlydHVhbF9lbmdpbmVfZGVzdHJveShlbmdp bmUpOworCQkJCWdvdG8gb3V0OworCQkJfQorCisJCQlycVtuICsgMV0gPSBpOTE1X3JlcXVlc3Rf YWxsb2MoZW5naW5lLCBjdHgpOworCQkJaWYgKElTX0VSUihycVtuICsgMV0pKSB7CisJCQkJZXJy ID0gUFRSX0VSUihycVtuICsgMV0pOworCQkJCWludGVsX3ZpcnR1YWxfZW5naW5lX2Rlc3Ryb3ko ZW5naW5lKTsKKwkJCQlnb3RvIG91dDsKKwkJCX0KKwkJCWk5MTVfcmVxdWVzdF9nZXQocnFbbiAr IDFdKTsKKworCQkJZXJyID0gaTkxNV9yZXF1ZXN0X2F3YWl0X2V4ZWN1dGlvbihycVtuICsgMV0s CisJCQkJCQkJICAgJnJxWzBdLT5mZW5jZSwKKwkJCQkJCQkgICBlbmdpbmUtPmJvbmRfZXhlY3V0 ZSk7CisJCQlpOTE1X3JlcXVlc3RfYWRkKHJxW24gKyAxXSk7CisJCQlpbnRlbF92aXJ0dWFsX2Vu Z2luZV9kZXN0cm95KGVuZ2luZSk7CisJCQlpZiAoZXJyIDwgMCkKKwkJCQlnb3RvIG91dDsKKwkJ fQorCQlycVtuICsgMV0gPSBFUlJfUFRSKC1FSU5WQUwpOworCisJCWlmIChmbGFncyAmIEJPTkRf U0NIRURVTEUpCisJCQlvbnN0YWNrX2ZlbmNlX2ZpbmkoJmZlbmNlKTsKKworCQlmb3IgKG4gPSAw OyBuIDwgbnNpYmxpbmc7IG4rKykgeworCQkJaWYgKGk5MTVfcmVxdWVzdF93YWl0KHJxW24gKyAx XSwKKwkJCQkJICAgICAgSTkxNV9XQUlUX0xPQ0tFRCwKKwkJCQkJICAgICAgTUFYX1NDSEVEVUxF X1RJTUVPVVQpIDwgMCkgeworCQkJCWVyciA9IC1FSU87CisJCQkJZ290byBvdXQ7CisJCQl9CisK KwkJCWlmIChycVtuICsgMV0tPmVuZ2luZSAhPSBzaWJsaW5nc1tuXSkgeworCQkJCXByX2Vycigi Qm9uZGVkIHJlcXVlc3QgZGlkIG5vdCBleGVjdXRlIG9uIHRhcmdldCBlbmdpbmU6IGV4cGVjdGVk ICVzLCB1c2VkICVzOyBtYXN0ZXIgd2FzICVzXG4iLAorCQkJCSAgICAgICBzaWJsaW5nc1tuXS0+ bmFtZSwKKwkJCQkgICAgICAgcnFbbiArIDFdLT5lbmdpbmUtPm5hbWUsCisJCQkJICAgICAgIHJx WzBdLT5lbmdpbmUtPm5hbWUpOworCQkJCWVyciA9IC1FSU5WQUw7CisJCQkJZ290byBvdXQ7CisJ CQl9CisJCX0KKworCQlmb3IgKG4gPSAwOyAhSVNfRVJSKHJxW25dKTsgbisrKQorCQkJaTkxNV9y ZXF1ZXN0X3B1dChycVtuXSk7CisJCXJxWzBdID0gRVJSX1BUUigtRU5PTUVNKTsKKwl9CisKK291 dDoKKwlmb3IgKG4gPSAwOyAhSVNfRVJSKHJxW25dKTsgbisrKQorCQlpOTE1X3JlcXVlc3RfcHV0 KHJxW25dKTsKKwlpZiAoaWd0X2ZsdXNoX3Rlc3QoaTkxNSwgSTkxNV9XQUlUX0xPQ0tFRCkpCisJ CWVyciA9IC1FSU87CisKKwlrZXJuZWxfY29udGV4dF9jbG9zZShjdHgpOworCXJldHVybiBlcnI7 Cit9CisKK3N0YXRpYyBpbnQgbGl2ZV92aXJ0dWFsX2JvbmQodm9pZCAqYXJnKQoreworCXN0YXRp YyBjb25zdCBzdHJ1Y3QgcGhhc2UgeworCQljb25zdCBjaGFyICpuYW1lOworCQl1bnNpZ25lZCBp bnQgZmxhZ3M7CisJfSBwaGFzZXNbXSA9IHsKKwkJeyAiIiwgMCB9LAorCQl7ICJzY2hlZHVsZSIs IEJPTkRfU0NIRURVTEUgfSwKKwkJeyB9LAorCX07CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUgPSBhcmc7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqc2libGluZ3NbTUFYX0VOR0lO RV9JTlNUQU5DRSArIDFdOworCXVuc2lnbmVkIGludCBjbGFzcywgaW5zdDsKKwlpbnQgZXJyID0g MDsKKworCWlmIChVU0VTX0dVQ19TVUJNSVNTSU9OKGk5MTUpKQorCQlyZXR1cm4gMDsKKworCW11 dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCisJZm9yIChjbGFzcyA9IDA7IGNs YXNzIDw9IE1BWF9FTkdJTkVfQ0xBU1M7IGNsYXNzKyspIHsKKwkJY29uc3Qgc3RydWN0IHBoYXNl ICpwOworCQlpbnQgbnNpYmxpbmc7CisKKwkJbnNpYmxpbmcgPSAwOworCQlmb3IgKGluc3QgPSAw OyBpbnN0IDw9IE1BWF9FTkdJTkVfSU5TVEFOQ0U7IGluc3QrKykgeworCQkJaWYgKCFpOTE1LT5l bmdpbmVfY2xhc3NbY2xhc3NdW2luc3RdKQorCQkJCWJyZWFrOworCisJCQlHRU1fQlVHX09OKG5z aWJsaW5nID09IEFSUkFZX1NJWkUoc2libGluZ3MpKTsKKwkJCXNpYmxpbmdzW25zaWJsaW5nKytd ID0gaTkxNS0+ZW5naW5lX2NsYXNzW2NsYXNzXVtpbnN0XTsKKwkJfQorCQlpZiAobnNpYmxpbmcg PCAyKQorCQkJY29udGludWU7CisKKwkJZm9yIChwID0gcGhhc2VzOyBwLT5uYW1lOyBwKyspIHsK KwkJCWVyciA9IGJvbmRfdmlydHVhbF9lbmdpbmUoaTkxNSwKKwkJCQkJCSAgY2xhc3MsIHNpYmxp bmdzLCBuc2libGluZywKKwkJCQkJCSAgcC0+ZmxhZ3MpOworCQkJaWYgKGVycikgeworCQkJCXBy X2VycigiJXMoJXMpOiBmYWlsZWQgY2xhc3M9JWQsIG5zaWJsaW5nPSVkLCBlcnI9JWRcbiIsCisJ CQkJICAgICAgIF9fZnVuY19fLCBwLT5uYW1lLCBjbGFzcywgbnNpYmxpbmcsIGVycik7CisJCQkJ Z290byBvdXRfdW5sb2NrOworCQkJfQorCQl9CisJfQorCitvdXRfdW5sb2NrOgorCW11dGV4X3Vu bG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisJcmV0dXJuIGVycjsKK30KKwogaW50IGlu dGVsX2V4ZWNsaXN0c19saXZlX3NlbGZ0ZXN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSkKIHsKIAlzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfc3VidGVzdCB0ZXN0c1tdID0gewpAQCAt MTIxNiw2ICsxMzgyLDcgQEAgaW50IGludGVsX2V4ZWNsaXN0c19saXZlX3NlbGZ0ZXN0cyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAkJU1VCVEVTVChsaXZlX3ByZWVtcHRfaGFuZyks CiAJCVNVQlRFU1QobGl2ZV9wcmVlbXB0X3Ntb2tlKSwKIAkJU1VCVEVTVChsaXZlX3ZpcnR1YWxf ZW5naW5lKSwKKwkJU1VCVEVTVChsaXZlX3ZpcnR1YWxfYm9uZCksCiAJfTsKIAogCWlmICghSEFT X0VYRUNMSVNUUyhpOTE1KSkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0u aCBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAppbmRleCA0N2QyZjU2YjZkOTAuLjRlZjA2 YTllNjc5MSAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCisrKyBiL2lu Y2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaApAQCAtMTUwMiw2ICsxNTAyLDEwIEBAIHN0cnVjdCBk cm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSB7CiAgKiBzaXplZCBhcmd1bWVudCwgd2lsbCByZXZl cnQgYmFjayB0byBkZWZhdWx0IHNldHRpbmdzLgogICoKICAqIFNlZSBzdHJ1Y3QgaTkxNV9jb250 ZXh0X3BhcmFtX2VuZ2luZXMuCisgKgorICogRXh0ZW5zaW9uczoKKyAqICAgaTkxNV9jb250ZXh0 X2VuZ2luZXNfbG9hZF9iYWxhbmNlIChJOTE1X0NPTlRFWFRfRU5HSU5FU19FWFRfTE9BRF9CQUxB TkNFKQorICogICBpOTE1X2NvbnRleHRfZW5naW5lc19ib25kIChJOTE1X0NPTlRFWFRfRU5HSU5F U19FWFRfQk9ORCkKICAqLwogI2RlZmluZSBJOTE1X0NPTlRFWFRfUEFSQU1fRU5HSU5FUwkweDkK IApAQCAtMTU5Myw5ICsxNTk3LDIzIEBAIHN0cnVjdCBpOTE1X2NvbnRleHRfZW5naW5lc19sb2Fk X2JhbGFuY2UgewogCV9fdTY0IG1iels0XTsgLyogcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2U7IG11 c3QgYmUgemVybyAqLwogfTsKIAorLyoKKyAqIGk5MTVfY29udGV4dF9lbmdpbmVzX2JvbmQ6Cisg KgorICovCitzdHJ1Y3QgaTkxNV9jb250ZXh0X2VuZ2luZXNfYm9uZCB7CisJc3RydWN0IGk5MTVf dXNlcl9leHRlbnNpb24gYmFzZTsKKworCV9fdTE2IG1hc3Rlcl9jbGFzczsKKwlfX3UxNiBtYXN0 ZXJfaW5zdGFuY2U7CisJX191MzIgZmxhZ3M7IC8qIGFsbCB1bmRlZmluZWQgZmxhZ3MgbXVzdCBi ZSB6ZXJvICovCisJX191NjQgc2libGluZ19tYXNrOworfTsKKwogc3RydWN0IGk5MTVfY29udGV4 dF9wYXJhbV9lbmdpbmVzIHsKIAlfX3U2NCBleHRlbnNpb25zOyAvKiBsaW5rZWQgY2hhaW4gb2Yg ZXh0ZW5zaW9uIGJsb2NrcywgMCB0ZXJtaW5hdGVzICovCiAjZGVmaW5lIEk5MTVfQ09OVEVYVF9F TkdJTkVTX0VYVF9MT0FEX0JBTEFOQ0UgMAorI2RlZmluZSBJOTE1X0NPTlRFWFRfRU5HSU5FU19F WFRfQk9ORCAxCiAKIAlzdHJ1Y3QgewogCQlfX3UxNiBlbmdpbmVfY2xhc3M7IC8qIHNlZSBlbnVt IGRybV9pOTE1X2dlbV9lbmdpbmVfY2xhc3MgKi8KLS0gCjIuMjAuMQoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==