From mboxrd@z Thu Jan 1 00:00:00 1970 From: Steve Longerbeam Subject: [PATCH 09/72] gpu: ipu-v3: Add support for dynamic DC interface pixel maps Date: Fri, 31 Oct 2014 15:53:52 -0700 Message-ID: <1414796095-10107-10-git-send-email-steve_longerbeam@mentor.com> References: <1414796095-10107-1-git-send-email-steve_longerbeam@mentor.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pa0-f41.google.com (mail-pa0-f41.google.com [209.85.220.41]) by gabe.freedesktop.org (Postfix) with ESMTP id A2E236E84E for ; Fri, 31 Oct 2014 15:56:55 -0700 (PDT) Received: by mail-pa0-f41.google.com with SMTP id rd3so8605718pab.28 for ; Fri, 31 Oct 2014 15:56:55 -0700 (PDT) In-Reply-To: <1414796095-10107-1-git-send-email-steve_longerbeam@mentor.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org QWRkcyBzdXBwb3J0IHRvIGlwdS1kYyB0byBkeW5hbWljYWxseSBjcmVhdGUgbmV3IGRpc3BsYXkg aW50ZXJmYWNlCnBpeGVsIG1hcHBpbmdzLgoKVGhlIG1hcHBpbmdzIGFyZSBmb3JtYWxseSBkZWZp bmVkIGJ5IGEgc3RydWN0IGlwdV9kY19pZl9tYXAsIHdoaWNoIGlzCnBhc3NlZCB0byBpcHVfZGNf aW5pdF9zeW5jKCkuCgpUaGUgaXB1LWRjIG1haW50YWlucyBhIGxpc3Qgb2YgdGhlIGN1cnJlbnRs eSBwcm9ncmFtbWVkIG1hcHBpbmdzLgpTb21lIG1hcHBpbmdzIGFyZSBwcmUtbG9hZGVkIGF0IHBy b2JlIHRpbWUgKFJHQjI0LCBCR1IyNCwgR0JSMjQsClJHQjU2NSwgQkdSNjY2LCBhbmQgIkxWRFM2 NjYiKS4KCklmIHRoZSBtYXAgcG9pbnRlciB0byBpcHVfZGNfaW5pdF9zeW5jKCkgaXMgbm90IE5V TEwsIGEgbmV3IG1hcHBpbmcKaXMgY3JlYXRlZCwgb3RoZXJ3aXNlIHByZXZpb3VzbHkgbG9hZGVk IG1hcHBpbmdzIHdpbGwgYmUgc2VhcmNoZWQgYmFzZWQKb24gdGhlIHBhc3NlZCBwaXhlbF9mbXQu CgpTaWduZWQtb2ZmLWJ5OiBTdGV2ZSBMb25nZXJiZWFtIDxzdGV2ZV9sb25nZXJiZWFtQG1lbnRv ci5jb20+Ci0tLQogZHJpdmVycy9ncHUvaXB1LXYzL2lwdS1kYy5jICAgICAgICAgIHwgIDI0OCAr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCiBkcml2ZXJzL3N0YWdpbmcvaW14LWRy bS9pcHV2My1jcnRjLmMgfCAgICAyICstCiBpbmNsdWRlL3ZpZGVvL2lteC1pcHUtdjMuaCAgICAg ICAgICAgfCAgIDIzICsrKy0KIDMgZmlsZXMgY2hhbmdlZCwgMTg0IGluc2VydGlvbnMoKyksIDg5 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2lwdS12My9pcHUtZGMuYyBi L2RyaXZlcnMvZ3B1L2lwdS12My9pcHUtZGMuYwppbmRleCAyMzI2Yzc1Li4zNmM3YzU3IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9pcHUtdjMvaXB1LWRjLmMKKysrIGIvZHJpdmVycy9ncHUvaXB1 LXYzL2lwdS1kYy5jCkBAIC0yNiw2ICsyNiw3IEBACiAKICNkZWZpbmUgRENfTUFQX0NPTkZfUFRS KG4pCSgweDEwOCArICgobikgJiB+MHgxKSAqIDIpCiAjZGVmaW5lIERDX01BUF9DT05GX1ZBTChu KQkoMHgxNDQgKyAoKG4pICYgfjB4MSkgKiAyKQorI2RlZmluZSBEQ19NQVhfTUFQUwkJMjQKIAog I2RlZmluZSBEQ19FVlRfTkYJCTAKICNkZWZpbmUgRENfRVZUX05MCQkxCkBAIC04NiwxMyArODcs NDAgQEAKIAogc3RydWN0IGlwdV9kY19wcml2OwogCi1lbnVtIGlwdV9kY19tYXAgewotCUlQVV9E Q19NQVBfUkdCMjQsCi0JSVBVX0RDX01BUF9SR0I1NjUsCi0JSVBVX0RDX01BUF9HQlIyNCwgLyog VFZFdjIgKi8KLQlJUFVfRENfTUFQX0JHUjY2NiwKLQlJUFVfRENfTUFQX0xWRFM2NjYsCi0JSVBV X0RDX01BUF9CR1IyNCwKKy8qIHNvbWUgcHJlLWRlZmluZWQgbWFwcyAqLworc3RhdGljIHN0cnVj dCBpcHVfZGNfaWZfbWFwIHByZWRlZl9tYXBzW10gPSB7CisJeworCQkuc3JjX21hc2sgPSB7MHhm ZiwgMHhmZiwgMHhmZn0sCisJCS5kZXN0X21zYiA9IHs3LCAxNSwgMjN9LAorCQkudjRsMl9mbXQg PSBWNEwyX1BJWF9GTVRfUkdCMjQsCisJfSwgeworCQkuc3JjX21hc2sgPSB7MHhmOCwgMHhmYywg MHhmOH0sCisJCS5kZXN0X21zYiA9IHs0LCAxMCwgMTV9LAorCQkudjRsMl9mbXQgPSBWNEwyX1BJ WF9GTVRfUkdCNTY1LAorCX0sIHsKKwkJLyogVjRMMl9QSVhfRk1UX0dCUjI0LCBmb3IgVFZFdjIg Ki8KKwkJLnNyY19tYXNrID0gezB4ZmYsIDB4ZmYsIDB4ZmZ9LAorCQkuZGVzdF9tc2IgPSB7MjMs IDcsIDE1fSwKKwkJLnY0bDJfZm10ID0gdjRsMl9mb3VyY2MoJ0cnLCAnQicsICdSJywgJzMnKSwK Kwl9LCB7CisJCS5zcmNfbWFzayA9IHsweGZjLCAweGZjLCAweGZjfSwKKwkJLmRlc3RfbXNiID0g ezE3LCAxMSwgNX0sCisJCS52NGwyX2ZtdCA9IFY0TDJfUElYX0ZNVF9CR1I2NjYsCisJfSwgewor CQkuc3JjX21hc2sgPSB7MHhmYywgMHhmYywgMHhmY30sCisJCS5kZXN0X21zYiA9IHsyMSwgMTMs IDV9LAorCQkudjRsMl9mbXQgPSB2NGwyX2ZvdXJjYygnTCcsICdWJywgJ0QnLCAnNicpLAorCX0s IHsKKwkJLnNyY19tYXNrID0gezB4ZmYsIDB4ZmYsIDB4ZmZ9LAorCQkuZGVzdF9tc2IgPSB7MjMs IDE1LCA3fSwKKwkJLnY0bDJfZm10ID0gVjRMMl9QSVhfRk1UX0JHUjI0LAorCX0sCit9OworCitz dHJ1Y3QgZGNfaWZfbWFwX3ByaXYgeworCXN0cnVjdCBpcHVfZGNfaWZfbWFwIG1hcDsKKwlpbnQg bWFwbnI7CisJc3RydWN0IGxpc3RfaGVhZCBsaXN0OwogfTsKIAogc3RydWN0IGlwdV9kYyB7CkBA IC0xMTAsMTIgKzEzOCwyMCBAQCBzdHJ1Y3QgaXB1X2RjX3ByaXYgewogCXN0cnVjdCBpcHVfc29j CQkqaXB1OwogCXN0cnVjdCBkZXZpY2UJCSpkZXY7CiAJc3RydWN0IGlwdV9kYwkJY2hhbm5lbHNb SVBVX0RDX05VTV9DSEFOTkVMU107CisJc3RydWN0IGxpc3RfaGVhZAltYXBfbGlzdDsKKwlpbnQJ CQluZXh0X21hcDsKIAlzdHJ1Y3QgbXV0ZXgJCW11dGV4OwogCXN0cnVjdCBjb21wbGV0aW9uCWNv bXA7CiAJaW50CQkJZGNfaXJxOwogCWludAkJCWRwX2lycTsKIH07CiAKKy8qIGZvcndhcmQgcmVm ZXJlbmNlcyAqLworc3RhdGljIHZvaWQgaXB1X2RjX21hcF9jb25maWcoc3RydWN0IGlwdV9kY19w cml2ICpwcml2LAorCQkJICAgICAgc3RydWN0IGRjX2lmX21hcF9wcml2ICptYXApOworc3RhdGlj IHZvaWQgaXB1X2RjX21hcF9jbGVhcihzdHJ1Y3QgaXB1X2RjX3ByaXYgKnByaXYsCisJCQkgICAg IHN0cnVjdCBkY19pZl9tYXBfcHJpdiAqbWFwKTsKKwogc3RhdGljIHZvaWQgZGNfbGlua19ldmVu dChzdHJ1Y3QgaXB1X2RjICpkYywgaW50IGV2ZW50LCBpbnQgYWRkciwgaW50IHByaW9yaXR5KQog ewogCXUzMiByZWc7CkBAIC0xNDYsMzkgKzE4Miw5MSBAQCBzdGF0aWMgdm9pZCBkY193cml0ZV90 bXBsKHN0cnVjdCBpcHVfZGMgKmRjLCBpbnQgd29yZCwgdTMyIG9wY29kZSwgdTMyIG9wZXJhbmQs CiAJd3JpdGVsKHJlZzIsIHByaXYtPmRjX3RtcGxfcmVnICsgd29yZCAqIDggKyA0KTsKIH0KIAot c3RhdGljIGludCBpcHVfcGl4Zm10X3RvX21hcCh1MzIgZm10KQorc3RhdGljIGlubGluZSBib29s IGlkZW50aWNhbF9tYXBwaW5nKHN0cnVjdCBpcHVfZGNfaWZfbWFwICptYXAxLAorCQkJCSAgICAg c3RydWN0IGlwdV9kY19pZl9tYXAgKm1hcDIpCiB7Ci0Jc3dpdGNoIChmbXQpIHsKLQljYXNlIFY0 TDJfUElYX0ZNVF9SR0IyNDoKLQkJcmV0dXJuIElQVV9EQ19NQVBfUkdCMjQ7Ci0JY2FzZSBWNEwy X1BJWF9GTVRfUkdCNTY1OgotCQlyZXR1cm4gSVBVX0RDX01BUF9SR0I1NjU7Ci0JY2FzZSBJUFVf UElYX0ZNVF9HQlIyNDoKLQkJcmV0dXJuIElQVV9EQ19NQVBfR0JSMjQ7Ci0JY2FzZSBWNEwyX1BJ WF9GTVRfQkdSNjY2OgotCQlyZXR1cm4gSVBVX0RDX01BUF9CR1I2NjY7Ci0JY2FzZSB2NGwyX2Zv dXJjYygnTCcsICdWJywgJ0QnLCAnNicpOgotCQlyZXR1cm4gSVBVX0RDX01BUF9MVkRTNjY2Owot CWNhc2UgVjRMMl9QSVhfRk1UX0JHUjI0OgotCQlyZXR1cm4gSVBVX0RDX01BUF9CR1IyNDsKLQlk ZWZhdWx0OgotCQlyZXR1cm4gLUVJTlZBTDsKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCAz OyBpKyspIHsKKwkJaWYgKG1hcDEtPnNyY19tYXNrW2ldICE9IG1hcDItPnNyY19tYXNrW2ldIHx8 CisJCSAgICBtYXAxLT5kZXN0X21zYltpXSAhPSBtYXAyLT5kZXN0X21zYltpXSkKKwkJCXJldHVy biBmYWxzZTsKKwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworLyogcHJpdi0+bXV0ZXggaGVsZCB3 aGVuIGNhbGxpbmcgKi8KK3N0YXRpYyBzdHJ1Y3QgZGNfaWZfbWFwX3ByaXYgKmlwdV9kY19uZXdf bWFwKHN0cnVjdCBpcHVfZGNfcHJpdiAqcHJpdiwKKwkJCQkJICAgICBzdHJ1Y3QgaXB1X2RjX2lm X21hcCAqbmV3X21hcCkKK3sKKwlzdHJ1Y3QgZGNfaWZfbWFwX3ByaXYgKmVudHJ5OworCisJLyog Zmlyc3Qgc2VhcmNoIGZvciBhbiBleGlzdGluZyBtYXAgdGhhdCBtYXRjaGVzICovCisJbGlzdF9m b3JfZWFjaF9lbnRyeShlbnRyeSwgJnByaXYtPm1hcF9saXN0LCBsaXN0KSB7CisJCWlmIChpZGVu dGljYWxfbWFwcGluZygmZW50cnktPm1hcCwgbmV3X21hcCkpCisJCQlyZXR1cm4gZW50cnk7CisJ fQorCisJaWYgKHByaXYtPm5leHRfbWFwID49IERDX01BWF9NQVBTKSB7CisJCWRldl9lcnIocHJp di0+ZGV2LCAiSVBVX0RJU1A6IE5vIG1hcCBzcGFjZSBsZWZ0XG4iKTsKKwkJcmV0dXJuIEVSUl9Q VFIoLUVOT1NQQyk7CisJfQorCisJZW50cnkgPSBkZXZtX2t6YWxsb2MocHJpdi0+ZGV2LCBzaXpl b2YoKmVudHJ5KSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFlbnRyeSkKKwkJcmV0dXJuIEVSUl9QVFIo LUVOT01FTSk7CisKKwkvKiBDb3B5IG5ldyBtYXAgKi8KKwllbnRyeS0+bWFwID0gKm5ld19tYXA7 CisJZW50cnktPm1hcG5yID0gcHJpdi0+bmV4dF9tYXArKzsKKwlsaXN0X2FkZF90YWlsKCZlbnRy eS0+bGlzdCwgJnByaXYtPm1hcF9saXN0KTsKKworCWlwdV9kY19tYXBfY2xlYXIocHJpdiwgZW50 cnkpOworCWlwdV9kY19tYXBfY29uZmlnKHByaXYsIGVudHJ5KTsKKworCXJldHVybiBlbnRyeTsK K30KKworc3RhdGljIHN0cnVjdCBkY19pZl9tYXBfcHJpdiAqaXB1X2RjX2dldF9tYXAoc3RydWN0 IGlwdV9kY19wcml2ICpwcml2LAorCQkJCQkgICAgIHN0cnVjdCBpcHVfZGNfaWZfbWFwICpuZXdf bWFwLAorCQkJCQkgICAgIHUzMiB2NGwyX2ZtdCkKK3sKKwlzdHJ1Y3QgZGNfaWZfbWFwX3ByaXYg KmVudHJ5ID0gRVJSX1BUUigtRUlOVkFMKTsKKworCW11dGV4X2xvY2soJnByaXYtPm11dGV4KTsK KworCWlmIChuZXdfbWFwKSB7CisJCS8qIGNyZWF0ZSBhIG5ldyBtYXAgKi8KKwkJZW50cnkgPSBp cHVfZGNfbmV3X21hcChwcml2LCBuZXdfbWFwKTsKKwl9IGVsc2UgaWYgKHY0bDJfZm10KSB7CisJ CS8qIG90aGVyd2lzZSBzZWFyY2ggZm9yIGFuIGV4aXN0aW5nIG1hcCAqLworCQlsaXN0X2Zvcl9l YWNoX2VudHJ5KGVudHJ5LCAmcHJpdi0+bWFwX2xpc3QsIGxpc3QpIHsKKwkJCWlmIChlbnRyeS0+ bWFwLnY0bDJfZm10ID09IHY0bDJfZm10KQorCQkJCWdvdG8gdW5sb2NrOworCQl9CisKKwkJZW50 cnkgPSBFUlJfUFRSKC1FSU5WQUwpOwogCX0KKwordW5sb2NrOgorCW11dGV4X3VubG9jaygmcHJp di0+bXV0ZXgpOworCXJldHVybiBlbnRyeTsKIH0KIAogaW50IGlwdV9kY19pbml0X3N5bmMoc3Ry dWN0IGlwdV9kYyAqZGMsIHN0cnVjdCBpcHVfZGkgKmRpLCBib29sIGludGVybGFjZWQsCi0JCXUz MiBwaXhlbF9mbXQsIHUzMiB3aWR0aCkKKwkJICAgICB1MzIgcGl4ZWxfZm10LCBzdHJ1Y3QgaXB1 X2RjX2lmX21hcCAqbmV3X21hcCwgdTMyIHdpZHRoKQogewogCXN0cnVjdCBpcHVfZGNfcHJpdiAq cHJpdiA9IGRjLT5wcml2OworCXN0cnVjdCBkY19pZl9tYXBfcHJpdiAqbWFwOwogCXUzMiByZWcg PSAwOwotCWludCBtYXA7CiAKIAlkYy0+ZGkgPSBpcHVfZGlfZ2V0X251bShkaSk7CiAKLQltYXAg PSBpcHVfcGl4Zm10X3RvX21hcChwaXhlbF9mbXQpOwotCWlmIChtYXAgPCAwKSB7CisJbWFwID0g aXB1X2RjX2dldF9tYXAocHJpdiwgbmV3X21hcCwgcGl4ZWxfZm10KTsKKwlpZiAoSVNfRVJSKG1h cCkpIHsKIAkJZGV2X2RiZyhwcml2LT5kZXYsICJJUFVfRElTUDogTm8gTUFQXG4iKTsKLQkJcmV0 dXJuIG1hcDsKKwkJcmV0dXJuIFBUUl9FUlIobWFwKTsKIAl9CiAKIAlpZiAoaW50ZXJsYWNlZCkg ewpAQCAtMTg3LDI2ICsyNzUsMzUgQEAgaW50IGlwdV9kY19pbml0X3N5bmMoc3RydWN0IGlwdV9k YyAqZGMsIHN0cnVjdCBpcHVfZGkgKmRpLCBib29sIGludGVybGFjZWQsCiAJCWRjX2xpbmtfZXZl bnQoZGMsIERDX0VWVF9ORVdfREFUQSwgMCwgMSk7CiAKIAkJLyogSW5pdCB0ZW1wbGF0ZSBtaWNy b2NvZGUgKi8KLQkJZGNfd3JpdGVfdG1wbChkYywgMCwgV1JPRCgwKSwgMCwgbWFwLCBTWU5DX1dB VkUsIDAsIDgsIDEpOworCQlkY193cml0ZV90bXBsKGRjLCAwLCBXUk9EKDApLCAwLCBtYXAtPm1h cG5yLAorCQkJICAgICAgU1lOQ19XQVZFLCAwLCA4LCAxKTsKIAl9IGVsc2UgewogCQlpZiAoZGMt PmRpKSB7CiAJCQlkY19saW5rX2V2ZW50KGRjLCBEQ19FVlRfTkwsIDIsIDMpOwogCQkJZGNfbGlu a19ldmVudChkYywgRENfRVZUX0VPTCwgMywgMik7CiAJCQlkY19saW5rX2V2ZW50KGRjLCBEQ19F VlRfTkVXX0RBVEEsIDEsIDEpOwogCQkJLyogSW5pdCB0ZW1wbGF0ZSBtaWNyb2NvZGUgKi8KLQkJ CWRjX3dyaXRlX3RtcGwoZGMsIDIsIFdST0QoMCksIDAsIG1hcCwgU1lOQ19XQVZFLCA4LCA1LCAx KTsKLQkJCWRjX3dyaXRlX3RtcGwoZGMsIDMsIFdST0QoMCksIDAsIG1hcCwgU1lOQ19XQVZFLCA0 LCA1LCAwKTsKLQkJCWRjX3dyaXRlX3RtcGwoZGMsIDQsIFdSRywgMCwgbWFwLCBOVUxMX1dBVkUs IDAsIDAsIDEpOwotCQkJZGNfd3JpdGVfdG1wbChkYywgMSwgV1JPRCgwKSwgMCwgbWFwLCBTWU5D X1dBVkUsIDAsIDUsIDEpOworCQkJZGNfd3JpdGVfdG1wbChkYywgMiwgV1JPRCgwKSwgMCwgbWFw LT5tYXBuciwKKwkJCQkgICAgICBTWU5DX1dBVkUsIDgsIDUsIDEpOworCQkJZGNfd3JpdGVfdG1w bChkYywgMywgV1JPRCgwKSwgMCwgbWFwLT5tYXBuciwKKwkJCQkgICAgICBTWU5DX1dBVkUsIDQs IDUsIDApOworCQkJZGNfd3JpdGVfdG1wbChkYywgNCwgV1JHLCAwLCBtYXAtPm1hcG5yLAorCQkJ CSAgICAgIE5VTExfV0FWRSwgMCwgMCwgMSk7CisJCQlkY193cml0ZV90bXBsKGRjLCAxLCBXUk9E KDApLCAwLCBtYXAtPm1hcG5yLAorCQkJCSAgICAgIFNZTkNfV0FWRSwgMCwgNSwgMSk7CiAJCX0g ZWxzZSB7CiAJCQlkY19saW5rX2V2ZW50KGRjLCBEQ19FVlRfTkwsIDUsIDMpOwogCQkJZGNfbGlu a19ldmVudChkYywgRENfRVZUX0VPTCwgNiwgMik7CiAJCQlkY19saW5rX2V2ZW50KGRjLCBEQ19F VlRfTkVXX0RBVEEsIDgsIDEpOwogCQkJLyogSW5pdCB0ZW1wbGF0ZSBtaWNyb2NvZGUgKi8KLQkJ CWRjX3dyaXRlX3RtcGwoZGMsIDUsIFdST0QoMCksIDAsIG1hcCwgU1lOQ19XQVZFLCA4LCA1LCAx KTsKLQkJCWRjX3dyaXRlX3RtcGwoZGMsIDYsIFdST0QoMCksIDAsIG1hcCwgU1lOQ19XQVZFLCA0 LCA1LCAwKTsKLQkJCWRjX3dyaXRlX3RtcGwoZGMsIDcsIFdSRywgMCwgbWFwLCBOVUxMX1dBVkUs IDAsIDAsIDEpOwotCQkJZGNfd3JpdGVfdG1wbChkYywgOCwgV1JPRCgwKSwgMCwgbWFwLCBTWU5D X1dBVkUsIDAsIDUsIDEpOworCQkJZGNfd3JpdGVfdG1wbChkYywgNSwgV1JPRCgwKSwgMCwgbWFw LT5tYXBuciwKKwkJCQkgICAgICBTWU5DX1dBVkUsIDgsIDUsIDEpOworCQkJZGNfd3JpdGVfdG1w bChkYywgNiwgV1JPRCgwKSwgMCwgbWFwLT5tYXBuciwKKwkJCQkgICAgICBTWU5DX1dBVkUsIDQs IDUsIDApOworCQkJZGNfd3JpdGVfdG1wbChkYywgNywgV1JHLCAwLCBtYXAtPm1hcG5yLAorCQkJ CSAgICAgIE5VTExfV0FWRSwgMCwgMCwgMSk7CisJCQlkY193cml0ZV90bXBsKGRjLCA4LCBXUk9E KDApLCAwLCBtYXAtPm1hcG5yLAorCQkJCSAgICAgIFNZTkNfV0FWRSwgMCwgNSwgMSk7CiAJCX0K IAl9CiAJZGNfbGlua19ldmVudChkYywgRENfRVZUX05GLCAwLCAwKTsKQEAgLTI5OCwyOSArMzk1 LDM1IEBAIHZvaWQgaXB1X2RjX2Rpc2FibGUoc3RydWN0IGlwdV9zb2MgKmlwdSkKIH0KIEVYUE9S VF9TWU1CT0xfR1BMKGlwdV9kY19kaXNhYmxlKTsKIAotc3RhdGljIHZvaWQgaXB1X2RjX21hcF9j b25maWcoc3RydWN0IGlwdV9kY19wcml2ICpwcml2LCBlbnVtIGlwdV9kY19tYXAgbWFwLAotCQlp bnQgYnl0ZV9udW0sIGludCBvZmZzZXQsIGludCBtYXNrKQorc3RhdGljIHZvaWQgaXB1X2RjX21h cF9jb25maWcoc3RydWN0IGlwdV9kY19wcml2ICpwcml2LAorCQkJICAgICAgc3RydWN0IGRjX2lm X21hcF9wcml2ICptYXApCiB7Ci0JaW50IHB0ciA9IG1hcCAqIDMgKyBieXRlX251bTsKKwlpbnQg aSwgcHRyOwogCXUzMiByZWc7CiAKLQlyZWcgPSByZWFkbChwcml2LT5kY19yZWcgKyBEQ19NQVBf Q09ORl9WQUwocHRyKSk7Ci0JcmVnICY9IH4oMHhmZmZmIDw8ICgxNiAqIChwdHIgJiAweDEpKSk7 Ci0JcmVnIHw9ICgob2Zmc2V0IDw8IDgpIHwgbWFzaykgPDwgKDE2ICogKHB0ciAmIDB4MSkpOwot CXdyaXRlbChyZWcsIHByaXYtPmRjX3JlZyArIERDX01BUF9DT05GX1ZBTChwdHIpKTsKKwlmb3Ig KGkgPSAwOyBpIDwgMzsgaSsrKSB7CisJCXB0ciA9IG1hcC0+bWFwbnIgKiAzICsgaTsKIAotCXJl ZyA9IHJlYWRsKHByaXYtPmRjX3JlZyArIERDX01BUF9DT05GX1BUUihtYXApKTsKLQlyZWcgJj0g figweDFmIDw8ICgoMTYgKiAobWFwICYgMHgxKSkgKyAoNSAqIGJ5dGVfbnVtKSkpOwotCXJlZyB8 PSBwdHIgPDwgKCgxNiAqIChtYXAgJiAweDEpKSArICg1ICogYnl0ZV9udW0pKTsKLQl3cml0ZWwo cmVnLCBwcml2LT5kY19yZWcgKyBEQ19NQVBfQ09ORl9QVFIobWFwKSk7CisJCXJlZyA9IHJlYWRs KHByaXYtPmRjX3JlZyArIERDX01BUF9DT05GX1ZBTChwdHIpKTsKKwkJcmVnICY9IH4oMHhmZmZm IDw8ICgxNiAqIChwdHIgJiAweDEpKSk7CisJCXJlZyB8PSAoKChtYXAtPm1hcC5kZXN0X21zYltp XSA8PCA4KSB8CisJCQkgbWFwLT5tYXAuc3JjX21hc2tbaV0pIDw8ICgxNiAqIChwdHIgJiAweDEp KSk7CisJCXdyaXRlbChyZWcsIHByaXYtPmRjX3JlZyArIERDX01BUF9DT05GX1ZBTChwdHIpKTsK KworCQlyZWcgPSByZWFkbChwcml2LT5kY19yZWcgKyBEQ19NQVBfQ09ORl9QVFIobWFwLT5tYXBu cikpOworCQlyZWcgJj0gfigweDFmIDw8ICgoMTYgKiAobWFwLT5tYXBuciAmIDB4MSkpICsgKDUg KiBpKSkpOworCQlyZWcgfD0gKHB0ciA8PCAoKDE2ICogKG1hcC0+bWFwbnIgJiAweDEpKSArICg1 ICogaSkpKTsKKwkJd3JpdGVsKHJlZywgcHJpdi0+ZGNfcmVnICsgRENfTUFQX0NPTkZfUFRSKG1h cC0+bWFwbnIpKTsKKwl9CiB9CiAKLXN0YXRpYyB2b2lkIGlwdV9kY19tYXBfY2xlYXIoc3RydWN0 IGlwdV9kY19wcml2ICpwcml2LCBpbnQgbWFwKQorc3RhdGljIHZvaWQgaXB1X2RjX21hcF9jbGVh cihzdHJ1Y3QgaXB1X2RjX3ByaXYgKnByaXYsCisJCQkgICAgIHN0cnVjdCBkY19pZl9tYXBfcHJp diAqbWFwKQogewotCXUzMiByZWcgPSByZWFkbChwcml2LT5kY19yZWcgKyBEQ19NQVBfQ09ORl9Q VFIobWFwKSk7CisJdTMyIHJlZyA9IHJlYWRsKHByaXYtPmRjX3JlZyArIERDX01BUF9DT05GX1BU UihtYXAtPm1hcG5yKSk7CiAKLQl3cml0ZWwocmVnICYgfigweGZmZmYgPDwgKDE2ICogKG1hcCAm IDB4MSkpKSwKLQkJICAgICBwcml2LT5kY19yZWcgKyBEQ19NQVBfQ09ORl9QVFIobWFwKSk7CisJ d3JpdGVsKHJlZyAmIH4oMHhmZmZmIDw8ICgxNiAqIChtYXAtPm1hcG5yICYgMHgxKSkpLAorCQkg ICAgIHByaXYtPmRjX3JlZyArIERDX01BUF9DT05GX1BUUihtYXAtPm1hcG5yKSk7CiB9CiAKIHN0 cnVjdCBpcHVfZGMgKmlwdV9kY19nZXQoc3RydWN0IGlwdV9zb2MgKmlwdSwgaW50IGNoYW5uZWwp CkBAIC00MTYsNDEgKzUxOSwxMiBAQCBpbnQgaXB1X2RjX2luaXQoc3RydWN0IGlwdV9zb2MgKmlw dSwgc3RydWN0IGRldmljZSAqZGV2LAogCWRldl9kYmcoZGV2LCAiREMgYmFzZTogMHglMDhseCB0 ZW1wbGF0ZSBiYXNlOiAweCUwOGx4XG4iLAogCQkJYmFzZSwgdGVtcGxhdGVfYmFzZSk7CiAKLQkv KiByZ2IyNCAqLwotCWlwdV9kY19tYXBfY2xlYXIocHJpdiwgSVBVX0RDX01BUF9SR0IyNCk7Ci0J aXB1X2RjX21hcF9jb25maWcocHJpdiwgSVBVX0RDX01BUF9SR0IyNCwgMCwgNywgMHhmZik7IC8q IGJsdWUgKi8KLQlpcHVfZGNfbWFwX2NvbmZpZyhwcml2LCBJUFVfRENfTUFQX1JHQjI0LCAxLCAx NSwgMHhmZik7IC8qIGdyZWVuICovCi0JaXB1X2RjX21hcF9jb25maWcocHJpdiwgSVBVX0RDX01B UF9SR0IyNCwgMiwgMjMsIDB4ZmYpOyAvKiByZWQgKi8KLQotCS8qIHJnYjU2NSAqLwotCWlwdV9k Y19tYXBfY2xlYXIocHJpdiwgSVBVX0RDX01BUF9SR0I1NjUpOwotCWlwdV9kY19tYXBfY29uZmln KHByaXYsIElQVV9EQ19NQVBfUkdCNTY1LCAwLCA0LCAweGY4KTsgLyogYmx1ZSAqLwotCWlwdV9k Y19tYXBfY29uZmlnKHByaXYsIElQVV9EQ19NQVBfUkdCNTY1LCAxLCAxMCwgMHhmYyk7IC8qIGdy ZWVuICovCi0JaXB1X2RjX21hcF9jb25maWcocHJpdiwgSVBVX0RDX01BUF9SR0I1NjUsIDIsIDE1 LCAweGY4KTsgLyogcmVkICovCi0KLQkvKiBnYnIyNCAqLwotCWlwdV9kY19tYXBfY2xlYXIocHJp diwgSVBVX0RDX01BUF9HQlIyNCk7Ci0JaXB1X2RjX21hcF9jb25maWcocHJpdiwgSVBVX0RDX01B UF9HQlIyNCwgMiwgMTUsIDB4ZmYpOyAvKiBncmVlbiAqLwotCWlwdV9kY19tYXBfY29uZmlnKHBy aXYsIElQVV9EQ19NQVBfR0JSMjQsIDEsIDcsIDB4ZmYpOyAvKiBibHVlICovCi0JaXB1X2RjX21h cF9jb25maWcocHJpdiwgSVBVX0RDX01BUF9HQlIyNCwgMCwgMjMsIDB4ZmYpOyAvKiByZWQgKi8K LQotCS8qIGJncjY2NiAqLwotCWlwdV9kY19tYXBfY2xlYXIocHJpdiwgSVBVX0RDX01BUF9CR1I2 NjYpOwotCWlwdV9kY19tYXBfY29uZmlnKHByaXYsIElQVV9EQ19NQVBfQkdSNjY2LCAwLCA1LCAw eGZjKTsgLyogYmx1ZSAqLwotCWlwdV9kY19tYXBfY29uZmlnKHByaXYsIElQVV9EQ19NQVBfQkdS NjY2LCAxLCAxMSwgMHhmYyk7IC8qIGdyZWVuICovCi0JaXB1X2RjX21hcF9jb25maWcocHJpdiwg SVBVX0RDX01BUF9CR1I2NjYsIDIsIDE3LCAweGZjKTsgLyogcmVkICovCi0KLQkvKiBsdmRzNjY2 ICovCi0JaXB1X2RjX21hcF9jbGVhcihwcml2LCBJUFVfRENfTUFQX0xWRFM2NjYpOwotCWlwdV9k Y19tYXBfY29uZmlnKHByaXYsIElQVV9EQ19NQVBfTFZEUzY2NiwgMCwgNSwgMHhmYyk7IC8qIGJs dWUgKi8KLQlpcHVfZGNfbWFwX2NvbmZpZyhwcml2LCBJUFVfRENfTUFQX0xWRFM2NjYsIDEsIDEz LCAweGZjKTsgLyogZ3JlZW4gKi8KLQlpcHVfZGNfbWFwX2NvbmZpZyhwcml2LCBJUFVfRENfTUFQ X0xWRFM2NjYsIDIsIDIxLCAweGZjKTsgLyogcmVkICovCi0KLQkvKiBiZ3IyNCAqLwotCWlwdV9k Y19tYXBfY2xlYXIocHJpdiwgSVBVX0RDX01BUF9CR1IyNCk7Ci0JaXB1X2RjX21hcF9jb25maWco cHJpdiwgSVBVX0RDX01BUF9CR1IyNCwgMiwgNywgMHhmZik7IC8qIHJlZCAqLwotCWlwdV9kY19t YXBfY29uZmlnKHByaXYsIElQVV9EQ19NQVBfQkdSMjQsIDEsIDE1LCAweGZmKTsgLyogZ3JlZW4g Ki8KLQlpcHVfZGNfbWFwX2NvbmZpZyhwcml2LCBJUFVfRENfTUFQX0JHUjI0LCAwLCAyMywgMHhm Zik7IC8qIGJsdWUgKi8KKwkvKiBhZGQgdGhlIHByZS1kZWZpbmVkIG1hcHMgKi8KKwltdXRleF9s b2NrKCZwcml2LT5tdXRleCk7CisJSU5JVF9MSVNUX0hFQUQoJnByaXYtPm1hcF9saXN0KTsKKwlm b3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShwcmVkZWZfbWFwcyk7IGkrKykKKwkJaXB1X2RjX25l d19tYXAocHJpdiwgJnByZWRlZl9tYXBzW2ldKTsKKwltdXRleF91bmxvY2soJnByaXYtPm11dGV4 KTsKIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2lteC1kcm0v aXB1djMtY3J0Yy5jIGIvZHJpdmVycy9zdGFnaW5nL2lteC1kcm0vaXB1djMtY3J0Yy5jCmluZGV4 IDExZTg0YTIuLjI1YzAyMzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9pbXgtZHJtL2lw dXYzLWNydGMuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvaW14LWRybS9pcHV2My1jcnRjLmMKQEAg LTE4Niw3ICsxODYsNyBAQCBzdGF0aWMgaW50IGlwdV9jcnRjX21vZGVfc2V0KHN0cnVjdCBkcm1f Y3J0YyAqY3J0YywKIAlzaWdfY2ZnLnZzeW5jX3BpbiA9IGlwdV9jcnRjLT5kaV92c3luY19waW47 CiAKIAlyZXQgPSBpcHVfZGNfaW5pdF9zeW5jKGlwdV9jcnRjLT5kYywgaXB1X2NydGMtPmRpLCBz aWdfY2ZnLmludGVybGFjZWQsCi0JCQlvdXRfcGl4ZWxfZm10LCBtb2RlLT5oZGlzcGxheSk7CisJ CQlvdXRfcGl4ZWxfZm10LCBOVUxMLCBtb2RlLT5oZGlzcGxheSk7CiAJaWYgKHJldCkgewogCQlk ZXZfZXJyKGlwdV9jcnRjLT5kZXYsCiAJCQkJImluaXRpYWxpemluZyBkaXNwbGF5IGNvbnRyb2xs ZXIgZmFpbGVkIHdpdGggJWRcbiIsCmRpZmYgLS1naXQgYS9pbmNsdWRlL3ZpZGVvL2lteC1pcHUt djMuaCBiL2luY2x1ZGUvdmlkZW8vaW14LWlwdS12My5oCmluZGV4IDZmYTg2YzcuLjAzMjk0OGI1 IDEwMDY0NAotLS0gYS9pbmNsdWRlL3ZpZGVvL2lteC1pcHUtdjMuaAorKysgYi9pbmNsdWRlL3Zp ZGVvL2lteC1pcHUtdjMuaApAQCAtMjE4LDEyICsyMTgsMzMgQEAgdm9pZCBpcHVfY3BtZW1fZHVt cChzdHJ1Y3QgaXB1djNfY2hhbm5lbCAqY2gpOwogLyoKICAqIElQVSBEaXNwbGF5IENvbnRyb2xs ZXIgKGRjKSBmdW5jdGlvbnMKICAqLworCisvKgorICogVGhpcyBzdHJ1Y3R1cmUgZGVmaW5lcyBo b3cgdG8gbWFwIGVhY2ggY29sb3IgY29tcG9uZW50IG9mIHRoZSBpbmNvbWluZworICogUkdCMjQg b3IgWVVWNDQ0IHBpeGVscyBhcnJpdmluZyBhdCB0aGUgREMgb250byB0aGUgREkgYnVzOgorICoK KyAqIHNyY19tYXNrW10gZGVmaW5lcyB3aGljaCBiaXRzIG9mIGVhY2ggaW5jb21pbmcgOC1iaXQg UkdCMjQvWVVWNDQ0CisgKiAgICAgICAgICAgIGNvbXBvbmVudCBhcmUgdG8gYmUgc2VsZWN0ZWQg YW5kIGZvcndhcmRlZCB0byB0aGUgREkgYnVzCisgKiAgICAgICAgICAgIChhcyBhIGJpdCBtYXNr KS4KKyAqCisgKiBkZXN0X21zYltdIGRlZmluZXMgd2hlcmUgdG8gcGxhY2UgdGhlIHNlbGVjdGVk IGJpdHMgb2YgZWFjaCBjb21wb25lbnQKKyAqICAgICAgICAgICAgb24gdGhlIERJIGJ1cyAoYXMg dGhlIG1vc3Qtc2lnbmlmaWNhbnQtYml0IHBvc2l0aW9uKS4KKyAqCisgKiB2NGwyX2ZtdCAgIG5v bi16ZXJvIGlmIHRoaXMgbWFwcGluZyBjb3JyZXNwb25kcyB0byBhIHN0YW5kYXJkCisgKiAgICAg ICAgICAgIFY0TDIgcGl4ZWwgZm9ybWF0LgorICovCitzdHJ1Y3QgaXB1X2RjX2lmX21hcCB7CisJ dTMyIHNyY19tYXNrWzNdOworCXUzMiBkZXN0X21zYlszXTsKKwl1MzIgdjRsMl9mbXQ7Cit9Owor CiBzdHJ1Y3QgaXB1X2RjOwogc3RydWN0IGlwdV9kaTsKIHN0cnVjdCBpcHVfZGMgKmlwdV9kY19n ZXQoc3RydWN0IGlwdV9zb2MgKmlwdSwgaW50IGNoYW5uZWwpOwogdm9pZCBpcHVfZGNfcHV0KHN0 cnVjdCBpcHVfZGMgKmRjKTsKIGludCBpcHVfZGNfaW5pdF9zeW5jKHN0cnVjdCBpcHVfZGMgKmRj LCBzdHJ1Y3QgaXB1X2RpICpkaSwgYm9vbCBpbnRlcmxhY2VkLAotCQl1MzIgcGl4ZWxfZm10LCB1 MzIgd2lkdGgpOworCQkgICAgIHUzMiBwaXhlbF9mbXQsIHN0cnVjdCBpcHVfZGNfaWZfbWFwICpu ZXdfbWFwLCB1MzIgd2lkdGgpOwogdm9pZCBpcHVfZGNfZW5hYmxlKHN0cnVjdCBpcHVfc29jICpp cHUpOwogdm9pZCBpcHVfZGNfZW5hYmxlX2NoYW5uZWwoc3RydWN0IGlwdV9kYyAqZGMpOwogdm9p ZCBpcHVfZGNfZGlzYWJsZV9jaGFubmVsKHN0cnVjdCBpcHVfZGMgKmRjKTsKLS0gCjEuNy45LjUK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZl bCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==